Single Photo displayed on LPC4088
Dependencies: DMBasicGUI DMSupport
Revision 0:9140ec6aa604, committed 2017-07-28
- Comitter:
- jmitc91516
- Date:
- Fri Jul 28 14:19:12 2017 +0000
- Commit message:
- Simple application that displays a single photograph on the LPC4088 display.
Changed in this revision
diff -r 000000000000 -r 9140ec6aa604 DMBasicGUI.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DMBasicGUI.lib Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/Embedded-Artists/code/DMBasicGUI/#1a7c743600e6
diff -r 000000000000 -r 9140ec6aa604 DMSupport.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DMSupport.lib Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/Embedded-Artists/code/DMSupport/#e1cb4dd9bfeb
diff -r 000000000000 -r 9140ec6aa604 dm_board_config.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dm_board_config.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,37 @@ +/* + * Copyright 2014 Embedded Artists AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef DM_BOARD_CONFIG_H +#define DM_BOARD_CONFIG_H + +// Template to use for the project-specific settings. Copy this file to your project, +// rename it to dm_board_config.h and uncomment the wanted features below: + +// #define DM_BOARD_USE_USB_DEVICE +// #define DM_BOARD_USE_USB_HOST +// #define DM_BOARD_USE_MCI_FS +// #define DM_BOARD_USE_QSPI_FS +// #define DM_BOARD_USE_QSPI +#define DM_BOARD_USE_DISPLAY +#define DM_BOARD_USE_TOUCH +// #define DM_BOARD_USE_ETHERNET +#define DM_BOARD_USE_FAST_UART +// #define DM_BOARD_USE_USBSERIAL_IN_RTOSLOG +// #define DM_BOARD_DISABLE_STANDARD_PRINTF +// #define DM_BOARD_ENABLE_MEASSURING_PINS +#define DM_BOARD_USE_REGISTRY + +#endif
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiComponents.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiComponents.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,4250 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* v6.0.9.005 */ +/* */ +/* GuiLib.c include file - do NOT reference it in your linker setup */ +/* */ +/* ************************************************************************ */ + +//------------------------------------------------------------------------------ +void GuiLib_ClearPositionCallbacks(void) +{ + GuiConst_INT16U I; + + for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++) + sgl.PosCallbacks[I].InUse = 0; +} + +//------------------------------------------------------------------------------ +void GuiLib_SetPositionCallbackFunc( + GuiConst_INT16U IndexNo, + void (*PosCallbackFunc) (GuiConst_INT16U IndexNo, + GuiConst_INT16S X, + GuiConst_INT16S Y)) +{ + GuiConst_INT32S I, J; + + J = -1; + for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++) + if (sgl.PosCallbacks[I].IndexNo == IndexNo) + { + J = I; + break; + } + if (J == -1) + for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++) + if (!sgl.PosCallbacks[I].InUse) + { + J = I; + break; + } + + if (J >= 0) + { + sgl.PosCallbacks[J].InUse = 1; + sgl.PosCallbacks[J].PosCallbackFunc = PosCallbackFunc; + sgl.PosCallbacks[J].IndexNo = IndexNo; + } +} + +#ifdef GuiConst_CURSOR_SUPPORT_ON +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +static void DrawCursorItem( + GuiConst_INT8U CursorVisible) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + GuiConst_INT16S RemCursorFieldNo, I; + PrefixLocate ItemMemory RemMemory; + PrefixLocate ItemMemory *PrefixLocate CursorMemory; + PrefixLocate GuiLib_ItemRec *CursorItem; + + if (sgl.CursorInUse && (GuiLib_ActiveCursorFieldNo >= 0)) + { + I = -1; + memcpy(&RemMemory, &sgl.Memory, sizeof(ItemMemory)); + while ((I = AutoRedraw_GetCursor(GuiLib_ActiveCursorFieldNo, I)) != -1) + { + CursorItem = AutoRedraw_GetItem(I); + CursorMemory = AutoRedraw_GetItemMemory(I); + + if ((CursorItem == NULL) || (CursorMemory == NULL)) + return; + + memcpy(&sgl.CurItem, CursorItem, sizeof(GuiLib_ItemRec)); + memcpy(&sgl.Memory, CursorMemory, sizeof(ItemMemory)); + + + #ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_FIELDSCROLLBOX) && + (sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].ScrollLineDataFunc != 0)) + sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].ScrollLineDataFunc( + sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].MarkerStartLine[0]); + #endif // GuiConst_ITEM_SCROLLBOX_INUSE + + if (!CursorVisible) + { + RemCursorFieldNo = GuiLib_ActiveCursorFieldNo; + GuiLib_ActiveCursorFieldNo = -1; + } + else + RemCursorFieldNo = 0; + + sgl.SwapColors = 0; + #ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_FIELDSCROLLBOX) + ScrollBox_DrawScrollLine(sgl.CurItem.CursorScrollBoxIndex, + sgl.ScrollBoxesAry[sgl.CurItem.CursorScrollBoxIndex].MarkerStartLine[0]); + else + #endif // GuiConst_ITEM_SCROLLBOX_INUSE + { + #ifdef GuiConst_BITMAP_SUPPORT_ON + UpdateBackgroundBitmap(); + #endif + + DrawItem(GuiLib_COL_INVERT_IF_CURSOR); + } + + if (!CursorVisible) + GuiLib_ActiveCursorFieldNo = RemCursorFieldNo; + } + memcpy(&sgl.Memory, &RemMemory, sizeof(ItemMemory)); + } + #else // GuiConst_CURSOR_FIELDS_OFF + CursorVisible = 0; + #endif // GuiConst_CURSOR_FIELDS_OFF +} + +//------------------------------------------------------------------------------ +void GuiLib_Cursor_Hide(void) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + GuiDisplay_Lock(); + DrawCursorItem(0); + GuiDisplay_Unlock(); + GuiLib_ActiveCursorFieldNo = -1; +#endif // GuiConst_CURSOR_FIELDS_OFF +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_IsCursorFieldInUse( + GuiConst_INT16S AskCursorFieldNo) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + if (AskCursorFieldNo >= 0) + { + if (AutoRedraw_GetCursor(AskCursorFieldNo, -1) != -1) + return 1; + } + + return 0; +#else // GuiConst_CURSOR_FIELDS_OFF + return 0; +#endif // GuiConst_CURSOR_FIELDS_OFF +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Cursor_Select( + GuiConst_INT16S NewCursorFieldNo) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + if (NewCursorFieldNo == -1) + { + GuiLib_Cursor_Hide(); + return 0; + } + else if (NewCursorFieldNo >= 0) + { + if (AutoRedraw_GetCursor(NewCursorFieldNo, -1) != -1) + { + GuiDisplay_Lock(); + + DrawCursorItem(0); + GuiLib_ActiveCursorFieldNo = NewCursorFieldNo; + DrawCursorItem(1); + + GuiDisplay_Unlock(); + + return 1; + } + } + + return 0; +#else + NewCursorFieldNo = 0; + return 0; +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Cursor_Down(void) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + GuiConst_INT16S NewCursorFieldNo, Index; + + Index = AutoRedraw_GetNextCursor(GuiLib_ActiveCursorFieldNo); + + NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index); + +#ifdef GuiConst_CURSOR_MODE_WRAP_AROUND + if ((NewCursorFieldNo == GuiLib_ActiveCursorFieldNo) + || (Index == -1)) + return GuiLib_Cursor_Home(); +#else + if (Index == -1) + return 0; +#endif + + GuiLib_Cursor_Select(NewCursorFieldNo); + + return 1; +#else + return 0; +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Cursor_Up(void) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + GuiConst_INT16S NewCursorFieldNo, Index; + + Index = AutoRedraw_GetPrevCursor(GuiLib_ActiveCursorFieldNo); + + NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index); + +#ifdef GuiConst_CURSOR_MODE_WRAP_AROUND + if ((NewCursorFieldNo == GuiLib_ActiveCursorFieldNo) + || (Index == -1)) + return GuiLib_Cursor_End(); +#else + if (Index == -1) + return 0; +#endif + + GuiLib_Cursor_Select(NewCursorFieldNo); + + return 1; +#else + return 0; +#endif + +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Cursor_Home(void) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + GuiConst_INT16S NewCursorFieldNo, Index; + + Index = AutoRedraw_GetFirstCursor(); + + NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index); + + if (NewCursorFieldNo == GuiLib_ActiveCursorFieldNo) + return 0; + + GuiLib_Cursor_Select(NewCursorFieldNo); + + return 1; +#else + return 0; +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Cursor_End(void) +{ +#ifndef GuiConst_CURSOR_FIELDS_OFF + GuiConst_INT16S NewCursorFieldNo, Index; + + Index = AutoRedraw_GetLastCursor(); + + NewCursorFieldNo = AutoRedraw_GetCursorNumber(Index); + + if (NewCursorFieldNo == GuiLib_ActiveCursorFieldNo) + return 0; + + GuiLib_Cursor_Select(NewCursorFieldNo); + + return 1; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#endif // GuiConst_CURSOR_SUPPORT_ON + +#ifdef GuiConst_BLINK_SUPPORT_ON +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +static void BlinkBox(void) +{ + if ((sgl.BlinkBoxRate) && (sgl.DisplayWriting)) + GuiLib_InvertBox(sgl.BlinkBoxX1, sgl.BlinkBoxY1, sgl.BlinkBoxX2, sgl.BlinkBoxY2); + sgl.BlinkBoxInverted = !sgl.BlinkBoxInverted; +} + +//------------------------------------------------------------------------------ +void GuiLib_BlinkBoxStart( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INT16S Rate) +{ + GuiLib_BlinkBoxStop(); + sgl.BlinkBoxX1 = X1; + sgl.BlinkBoxY1 = Y1; + sgl.BlinkBoxX2 = X2; + sgl.BlinkBoxY2 = Y2; + if (Rate < 1) + sgl.BlinkBoxRate = 1; + else + sgl.BlinkBoxRate = Rate; + sgl.BlinkBoxState = sgl.BlinkBoxRate; + sgl.BlinkBoxInverted = 0; + BlinkBox(); +} + +//------------------------------------------------------------------------------ +void GuiLib_BlinkBoxStop(void) +{ +#ifndef GuiConst_BLINK_FIELDS_OFF + GuiConst_INT16U I; +#endif + + if (sgl.BlinkBoxRate && sgl.BlinkBoxInverted) + BlinkBox(); + sgl.BlinkBoxRate = 0; + +#ifndef GuiConst_BLINK_FIELDS_OFF + for (I = 0; I < GuiConst_BLINK_FIELDS_MAX; I++) + if (sgl.BlinkTextItems[I].InUse && sgl.BlinkTextItems[I].Active) + GuiLib_BlinkBoxMarkedItemStop(I); +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_BlinkBoxMarkedItem( + GuiConst_INT16U BlinkFieldNo, + GuiConst_INT16U CharNo, + GuiConst_INT16S Rate) +{ +#ifndef GuiConst_BLINK_FIELDS_OFF + GuiConst_INT16S TextXOfs[GuiConst_MAX_TEXT_LEN + 2]; + TextParRec TempTextPar; + GuiConst_INT8U TempPs; + GuiConst_INT16U CharCnt; + GuiConst_INT16U TempTextLength; + GuiConst_INT8U TempFormatFieldWidth; + GuiConst_INT8U TempFormatDecimals; + GuiConst_INT8U TempFormatAlignment; + GuiConst_INT8U TempFormatFormat; + #ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32U PrefixRom TempOfs; + GuiConst_INT8U CharHeader[GuiLib_CHR_LINECTRL_OFS]; + #else // GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U PrefixRom * TempPtr; + #endif // GuiConst_REMOTE_FONT_DATA + #ifdef GuiConst_ITEM_TEXTBLOCK_INUSE + GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS]; + GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS]; + GuiConst_INT16S TextCharLineStart[GuiConst_MAX_PARAGRAPH_LINE_CNT]; + GuiConst_INT16S TextCharLineEnd[GuiConst_MAX_PARAGRAPH_LINE_CNT]; + GuiConst_INT16S M; + GuiConst_INT16S LineCnt; + GuiConst_INT16S LineCnt2; + GuiConst_INT16S LineLen; + GuiConst_INT16S XStart, XEnd; + GuiConst_INT16S P2; + #endif // GuiConst_ITEM_TEXTBLOCK_INUSE + GuiConst_INT16S N; +#ifndef GuiConst_CHARMODE_ANSI + GuiConst_INT16S P1; +#endif + GuiConst_TEXT PrefixGeneric *CharPtr; + GuiConst_INT32S VarValue; + GuiConst_INT16S TextPixelLen; + + if ((BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) || + !sgl.BlinkTextItems[BlinkFieldNo].InUse) + return; + + if (sgl.BlinkTextItems[BlinkFieldNo].Active && + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate && + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted) + { + if (sgl.DisplayWriting) + { + GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2); + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted = + !sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + } + } + + sgl.BlinkTextItems[BlinkFieldNo].Active = 0; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = 0; + + if ((BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX) && + sgl.BlinkTextItems[BlinkFieldNo].InUse) + { + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = sgl.BlinkTextItems[BlinkFieldNo].X1; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = sgl.BlinkTextItems[BlinkFieldNo].X2; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 = sgl.BlinkTextItems[BlinkFieldNo].Y1; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2 = sgl.BlinkTextItems[BlinkFieldNo].Y2; + + if (sgl.BlinkTextItems[BlinkFieldNo].InUse) + { + TempTextPar = sgl.CurItem.TextPar[0]; + TempTextLength = sgl.CurItem.TextLength[0]; + TempFormatFieldWidth = sgl.CurItem.FormatFieldWidth; + TempFormatDecimals = sgl.CurItem.FormatDecimals; + TempFormatAlignment = sgl.CurItem.FormatAlignment; + TempFormatFormat = sgl.CurItem.FormatFormat; + + sgl.CurItem.FormatFieldWidth = sgl.BlinkTextItems[BlinkFieldNo].FormatFieldWidth; + sgl.CurItem.FormatDecimals = sgl.BlinkTextItems[BlinkFieldNo].FormatDecimals; + sgl.CurItem.FormatAlignment = sgl.BlinkTextItems[BlinkFieldNo].FormatAlignment; + sgl.CurItem.FormatFormat = sgl.BlinkTextItems[BlinkFieldNo].FormatFormat; + sgl.CurItem.TextPar[0] = sgl.BlinkTextItems[BlinkFieldNo].TextPar; + CharCnt = sgl.BlinkTextItems[BlinkFieldNo].CharCnt; + sgl.CurItem.TextLength[0] = CharCnt; + + SetCurFont(sgl.BlinkTextItems[BlinkFieldNo].TextPar.FontIndex); + + if ((sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_TEXT) || + (sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_TEXTBLOCK)) + { +#ifdef GuiConst_CHARMODE_UNICODE + ExtractUnicodeString( + (GuiConst_INT8U PrefixRom *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr, + sgl.CurItem.TextLength[0]); + #ifdef GuiConst_ARAB_CHARS_INUSE + if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) + { + CharCnt = ArabicCorrection( + sgl.UnicodeTextBuf, CharCnt, + (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) > 0); + } + #endif // GuiConst_ARAB_CHARS_INUSE +#endif // GuiConst_CHARMODE_UNICODE + +#ifdef GuiConst_CHARMODE_UNICODE + CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.UnicodeTextBuf; +#else // GuiConst_CHARMODE_UNICODE + CharPtr = (GuiConst_TEXT PrefixRom *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr; +#endif // GuiConst_CHARMODE_UNICODE + PrepareText(CharPtr,CharCnt,0); + } + else + { +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 1; +#endif + if (sgl.BlinkTextItems[BlinkFieldNo].VarType == GuiLib_VAR_STRING) + { + CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr; +#ifdef GuiConst_CHARMODE_ANSI + CharCnt = strlen(CharPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + CharCnt = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr); +#else // GuiConst_CODEVISION_COMPILER + CharCnt = GuiLib_UnicodeStrLen(CharPtr); +#endif // GuiConst_CODEVISION_COMPILER +#endif // GuiConst_CHARMODE_ANSI + } + else + { + VarValue = ReadVar(sgl.BlinkTextItems[BlinkFieldNo].TextPtr, + sgl.BlinkTextItems[BlinkFieldNo].VarType); + + CharCnt = + DataNumStr(VarValue, sgl.BlinkTextItems[BlinkFieldNo].VarType, 0); + +#ifdef GuiConst_CHARMODE_ANSI + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr; +#else // GuiConst_CHARMODE_ANSI + for (P1=0; P1<=CharCnt; P1++) + sgl.VarNumUnicodeTextStr[P1] = sgl.VarNumTextStr[P1]; + CharPtr = (GuiConst_TEXT *) sgl.VarNumUnicodeTextStr; +#endif // GuiConst_CHARMODE_ANSI + } +#ifdef GuiConst_CHARMODE_ANSI + strcpy(sgl.AnsiTextBuf, CharPtr); +#else // GuiConst_CHARMODE_ANSI + GuiLib_UnicodeStrCpy(sgl.UnicodeTextBuf, CharPtr); +#endif // GuiConst_CHARMODE_ANSI +#ifdef GuiConst_ARAB_CHARS_INUSE + if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) + { + CharCnt = ArabicCorrection( + sgl.UnicodeTextBuf, CharCnt, + (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) > 0); + } +#endif // GuiConst_ARAB_CHARS_INUSE +#ifdef GuiConst_CHARMODE_ANSI + CharPtr = sgl.AnsiTextBuf; +#else // GuiConst_CHARMODE_ANSI + CharPtr = sgl.UnicodeTextBuf; +#endif // GuiConst_CHARMODE_ANSI + PrepareText(CharPtr, CharCnt,0); + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 0; +#endif + } + + if (CharNo > CharCnt) + { + SetCurFont(sgl.CurItem.TextPar[0].FontIndex); + sgl.CurItem.TextPar[0] = TempTextPar; + sgl.CurItem.TextLength[0] = TempTextLength; + sgl.CurItem.FormatFieldWidth = TempFormatFieldWidth; + sgl.CurItem.FormatDecimals = TempFormatDecimals; + sgl.CurItem.FormatAlignment = TempFormatAlignment; + sgl.CurItem.FormatFormat = TempFormatFormat; + return; + } + + if(CharNo > 0) + { +#ifdef GuiConst_BLINK_LF_COUNTS + if (*(CharPtr + (CharNo - 1)) != GuiLib_LINEFEED) +#endif + { + sgl.BlinkTextItems[BlinkFieldNo].Active = 0; + sgl.BlinkTextItems[BlinkFieldNo].CharNo = CharNo; + } + } + +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE + if ((sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_TEXTBLOCK)|| + (sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_VARBLOCK)) + { + if(CharNo > 0) + { + TextPixelLength(sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps, + CharCnt, TextXOfs); + + TextCharLineStart[0] = 0; + TextCharLineEnd[0] = -1; + + LineCnt = 1 - sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop; + if (LineCnt >= 1) + LineCnt = 1; + LineCnt2 = 1; + P2 = 0; + + +#ifdef GuiConst_REMOTE_FONT_DATA + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[ + sgl.TextCharNdx[TextCharLineStart[LineCnt2 - 1]]], + GuiLib_CHR_LINECTRL_OFS, + CharHeader2); +#endif // GuiConst_REMOTE_FONT_DATA + + while (P2 < CharCnt) + { + while ((P2 < CharCnt - 1) && + !((ReadBytePtr(CharPtr + P2) == GuiLib_LINEFEED) || + ((ReadBytePtr(CharPtr + P2) != ' ') && (ReadBytePtr(CharPtr + P2 + 1) == ' ')) || + ((ReadBytePtr(CharPtr + P2) == '-') && (ReadBytePtr(CharPtr + P2 + 1) != ' ')))) + P2++; + + if (CalcCharsWidth(TextCharLineStart[LineCnt2 - 1], P2, + TextXOfs, &XStart, &XEnd) > + (sgl.BlinkTextItems[BlinkFieldNo].X2 - + sgl.BlinkTextItems[BlinkFieldNo].X1 + 1)) + { + if (TextCharLineEnd[LineCnt2 - 1] == -1) + { + TextCharLineEnd[LineCnt2 - 1] = P2; + TextCharLineStart[LineCnt2] = P2 + 1; + TextCharLineEnd[LineCnt2] = -1; + } + else + { + TextCharLineStart[LineCnt2] = TextCharLineEnd[LineCnt2 - 1] + 1; + while ((TextCharLineStart[LineCnt2] < P2) && + (ReadBytePtr(CharPtr + TextCharLineStart[LineCnt2]) == + ' ')) + TextCharLineStart[LineCnt2]++; + TextCharLineEnd[LineCnt2] = P2; + } + if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT) + { + P2 = CharCnt; + break; + } + LineCnt++; + if (LineCnt > 1) + LineCnt2 = LineCnt; + else + TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2]; + } + else + TextCharLineEnd[LineCnt2 - 1] = P2; + if (ReadBytePtr(CharPtr + P2) == GuiLib_LINEFEED) + { + TextCharLineEnd[LineCnt2 - 1] = P2 - 1; + TextCharLineStart[LineCnt2] = P2 + 1; + TextCharLineEnd[LineCnt2] = -1; + if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT) + { + P2 = CharCnt; + break; + } + LineCnt++; + if (LineCnt > 1) + LineCnt2 = LineCnt; + else + TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2]; + } + P2++; + } + + if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) + { + for (M = 0; M < LineCnt2 ; M++) + { + for (P2 = TextCharLineStart[M]; P2 <= (TextCharLineStart[M] + + ((TextCharLineEnd[M] - TextCharLineStart[M] + 1) / 2) - 1); + P2++) + { +#ifdef GuiConst_REMOTE_FONT_DATA + TempOfs = sgl.TextCharNdx[P2]; + sgl.TextCharNdx[P2] = + sgl.TextCharNdx[TextCharLineEnd[M] - (P2 - TextCharLineStart[M])]; + sgl.TextCharNdx[TextCharLineEnd[M] - (P2 - TextCharLineStart[M])] = + TempOfs; +#else // GuiConst_REMOTE_FONT_DATA + TempPtr = sgl.TextCharPtrAry[P2]; + sgl.TextCharPtrAry[P2] = + (GuiConst_INT8U PrefixRom *)sgl.TextCharPtrAry[ + TextCharLineEnd[M] - (P2 - TextCharLineStart[M])]; + sgl.TextCharPtrAry[TextCharLineEnd[M] - (P2 - TextCharLineStart[M])] = + (GuiConst_INT8U PrefixRom *)TempPtr; +#endif // GuiConst_REMOTE_FONT_DATA + } + } + TextPixelLength(sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps, + CharCnt, TextXOfs); + } + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + if (sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop < 0) + sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop = 0; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 -= + sgl.BlinkTextItems[BlinkFieldNo].TextBoxScrollPos - + (sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist * + sgl.BlinkTextItems[BlinkFieldNo].BlindLinesAtTop); +#endif // GuiConst_TEXTBOX_FIELDS_ON + + switch (sgl.BlinkTextItems[BlinkFieldNo].TextBoxVertAlignment) + { + case GuiLib_ALIGN_CENTER: + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 += + (sgl.BlinkTextItems[BlinkFieldNo].Y2 - + sgl.BlinkTextItems[BlinkFieldNo].Y1 + 1 - + (sgl.BlinkTextItems[BlinkFieldNo].YSize + + (LineCnt2 - 1) * + sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist)) / 2; + break; + + case GuiLib_ALIGN_RIGHT: + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 += + sgl.BlinkTextItems[BlinkFieldNo].Y2 - + sgl.BlinkTextItems[BlinkFieldNo].Y1 + 1 - + (sgl.BlinkTextItems[BlinkFieldNo].YSize + + (LineCnt2 - 1) * + sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist); + break; + } + + for (N = 0; N < LineCnt2; N++) + { + if (((CharNo - 1) <= TextCharLineEnd[N]) + && ((CharNo - 1) >= TextCharLineStart[N])) + { + if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) + CharNo = TextCharLineStart[N] + TextCharLineEnd[N] + 2 - CharNo; + + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = + sgl.BlinkTextItems[BlinkFieldNo].X1; + + LineLen = CalcCharsWidth(TextCharLineStart[N], + TextCharLineEnd[N], + TextXOfs, + &XStart, + &XEnd); + switch (sgl.BlinkTextItems[BlinkFieldNo].TextBoxHorzAlignment) + { + case GuiLib_ALIGN_CENTER: + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 += + (sgl.BlinkTextItems[BlinkFieldNo].X2 - + sgl.BlinkTextItems[BlinkFieldNo].X1 + LineLen - 1) / 2; + break; + + case GuiLib_ALIGN_RIGHT: + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 += + sgl.BlinkTextItems[BlinkFieldNo].X2 - + sgl.BlinkTextItems[BlinkFieldNo].X1 + LineLen - 1; + break; + } + + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 -= XStart; + LineLen = CalcCharsWidth(CharNo - 1, + CharNo - 1, + TextXOfs, + &XStart, + &XEnd); + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + XEnd; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 += XStart; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 + + sgl.BlinkTextItems[BlinkFieldNo].YSize - 1; + + sgl.BlinkTextItems[BlinkFieldNo].Active = 1; + break; + } + +#ifndef GuiConst_BLINK_LF_COUNTS + if ((N+1) < LineCnt2) + if ((TextCharLineEnd[N]+1) != TextCharLineStart[N+1]) + CharNo++; +#endif + + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1 += + sgl.BlinkTextItems[BlinkFieldNo].TextBoxLineDist; + } + } + else + { + sgl.BlinkTextItems[BlinkFieldNo].Active = 1; + sgl.BlinkTextItems[BlinkFieldNo].CharNo = CharNo; + } + } + else +#endif // GuiConst_ITEM_TEXTBLOCK_INUSE + { + if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) + { + for (N = 0; N < CharCnt / 2; N++) + { +#ifdef GuiConst_REMOTE_FONT_DATA + TempOfs = sgl.TextCharNdx[N]; + sgl.TextCharNdx[N] = + sgl.TextCharNdx[CharCnt - 1 - N]; + sgl.TextCharNdx[CharCnt - 1 - N] = + TempOfs; +#else + TempPtr = sgl.TextCharPtrAry[N]; + sgl.TextCharPtrAry[N] = (GuiConst_INT8U PrefixRom *) + sgl.TextCharPtrAry[CharCnt - 1 - N]; + sgl.TextCharPtrAry[CharCnt - 1 - N] = + (GuiConst_INT8U PrefixRom *)TempPtr; +#endif + } + CharNo = CharCnt + 1 - CharNo; + } + + TextPixelLen = TextPixelLength(sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps, + CharCnt, TextXOfs); + + switch (sgl.BlinkTextItems[BlinkFieldNo].TextPar.Alignment) + { + case GuiLib_ALIGN_CENTER: + if (CharCnt > 0) + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 -= TextPixelLen / 2; + break; + case GuiLib_ALIGN_RIGHT: + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 -= TextPixelLen - 1; + break; + } + + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + + TextPixelLen - 1; + + if (CharNo) + { + if (sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps == GuiLib_PS_OFF) + { + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + TextXOfs[CharNo-1] - 1; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + + sgl.BlinkTextItems[BlinkFieldNo].XSize; + } + else if ((sgl.BlinkTextItems[BlinkFieldNo].TextPar.Ps == GuiLib_PS_NUM) && + (sgl.TextPsMode[CharNo - 1] == 0)) + { + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + TextXOfs[CharNo - 1] - 1; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + + sgl.BlinkTextItems[BlinkFieldNo].PsNumWidth + + sgl.BlinkTextItems[BlinkFieldNo].PsSpace; + } + else + { +#ifdef GuiConst_REMOTE_FONT_DATA + GuiLib_RemoteDataReadBlock((GuiConst_INT32U PrefixRom) + GuiFont_ChPtrList[sgl.TextCharNdx[CharNo - 1]], + GuiLib_CHR_LINECTRL_OFS, CharHeader); + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + + TextXOfs[CharNo-1] + CharHeader[GuiLib_CHR_XLEFT_OFS] - 1; +#else + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + TextXOfs[CharNo - 1] + + ReadBytePtr(sgl.TextCharPtrAry[CharNo - 1] + + GuiLib_CHR_XLEFT_OFS) - 1; +#endif +#ifdef GuiConst_REMOTE_FONT_DATA + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + + CharHeader[GuiLib_CHR_XWIDTH_OFS] + 1; +#else + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2 = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1 + + ReadBytePtr(sgl.TextCharPtrAry[CharNo - 1] + + GuiLib_CHR_XWIDTH_OFS) + 1; +#endif + } + sgl.BlinkTextItems[BlinkFieldNo].Active = 1; + } + else + { + sgl.BlinkTextItems[BlinkFieldNo].Active = 1; + sgl.BlinkTextItems[BlinkFieldNo].CharNo = CharNo; + } + } + SetCurFont(sgl.CurItem.TextPar[0].FontIndex); + sgl.CurItem.TextPar[0] = TempTextPar; + sgl.CurItem.TextLength[0] = TempTextLength; + sgl.CurItem.FormatFieldWidth = TempFormatFieldWidth; + sgl.CurItem.FormatDecimals = TempFormatDecimals; + sgl.CurItem.FormatAlignment = TempFormatAlignment; + sgl.CurItem.FormatFormat = TempFormatFormat; + + } + + if (sgl.BlinkTextItems[BlinkFieldNo].Active) + { + if (Rate < 1) + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = 1; + else + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = Rate; + if (sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate < 255) + { + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxState = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate - + (sgl.RefreshClock % sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate); + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted = + ((sgl.RefreshClock / sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate) % 2) == + 0; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + if (sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted && sgl.DisplayWriting) + GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2); + } + else + { + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxState = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate; + if (sgl.DisplayWriting) + GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2); + + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted = + !sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + } + } + } +#else // GuiConst_BLINK_FIELDS_OFF + gl.Dummy1_16U = BlinkFieldNo; // To avoid compiler warning + gl.Dummy2_16U = CharNo; // To avoid compiler warning + gl.Dummy1_16S = Rate; // To avoid compiler warning +#endif // GuiConst_BLINK_FIELDS_OFF +} + +//------------------------------------------------------------------------------ +void GuiLib_BlinkBoxMarkedItemStop( + GuiConst_INT16U BlinkFieldNo) +{ +#ifndef GuiConst_BLINK_FIELDS_OFF + if ((BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) || + !sgl.BlinkTextItems[BlinkFieldNo].InUse) + return; + + if (sgl.BlinkTextItems[BlinkFieldNo].Active && + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate && + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted) + { + if (sgl.DisplayWriting) + { + GuiLib_InvertBox(sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY1, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxX2, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxY2); + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted = + !sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxLast = + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxInverted; + } + } + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate = 0; + sgl.BlinkTextItems[BlinkFieldNo].Active = 0; +#else // GuiConst_BLINK_FIELDS_OFF + gl.Dummy1_16U = BlinkFieldNo; // To avoid compiler warning +#endif // GuiConst_BLINK_FIELDS_OFF +} + +//------------------------------------------------------------------------------ +void GuiLib_BlinkBoxMarkedItemUpdate( + GuiConst_INT16U BlinkFieldNo) +{ +#ifndef GuiConst_BLINK_FIELDS_OFF + if ((BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) || + !sgl.BlinkTextItems[BlinkFieldNo].InUse) + return; + + if (sgl.BlinkTextItems[BlinkFieldNo].Active && + ((sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_VAR) || + (sgl.BlinkTextItems[BlinkFieldNo].ItemType == GuiLib_ITEM_VARBLOCK))) + GuiLib_BlinkBoxMarkedItem( + BlinkFieldNo, + sgl.BlinkTextItems[BlinkFieldNo].CharNo, + sgl.BlinkTextItems[BlinkFieldNo].BlinkBoxRate); +#else // GuiConst_BLINK_FIELDS_OFF + gl.Dummy1_16U = BlinkFieldNo; // To avoid compiler warning +#endif // GuiConst_BLINK_FIELDS_OFF +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#endif // GuiConst_BLINK_SUPPORT_ON + +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_TouchCheck( + GuiConst_INT16S X, + GuiConst_INT16S Y) +{ + GuiConst_INT32S TouchSearch; + GuiConst_INT32S XX, YY; + GuiConst_INT32S XL, XR, YT, YB; + GuiConst_INT32S TouchArea; + + if (sgl.TouchAdjustActive) + { + XX = 10 * (GuiConst_INT32S)X; + YY = 10 * (GuiConst_INT32S)Y; + XL = sgl.TouchAdjustXTL + + (YY - sgl.TouchAdjustYTL) * (sgl.TouchAdjustXBL - sgl.TouchAdjustXTL) / + (sgl.TouchAdjustYBL - sgl.TouchAdjustYTL); + XR = sgl.TouchAdjustXTR + + (YY - sgl.TouchAdjustYTR) * (sgl.TouchAdjustXBR - sgl.TouchAdjustXTR) / + (sgl.TouchAdjustYBR - sgl.TouchAdjustYTR); + YT = sgl.TouchAdjustYTL + + (XX - sgl.TouchAdjustXTL) * (sgl.TouchAdjustYTR - sgl.TouchAdjustYTL) / + (sgl.TouchAdjustXTR - sgl.TouchAdjustXTL); + YB = sgl.TouchAdjustYBL + + (XX - sgl.TouchAdjustXBL) * (sgl.TouchAdjustYBR - sgl.TouchAdjustYBL) / + (sgl.TouchAdjustXBR - sgl.TouchAdjustXBL); + sgl.TouchConvertX = GuiConst_DISPLAY_WIDTH * (XX - XL) / (XR - XL); + sgl.TouchConvertY = GuiConst_DISPLAY_HEIGHT * (YY - YT) / (YB - YT); + } + else + { + sgl.TouchConvertX = X; + sgl.TouchConvertY = Y; + } + + TouchArea = -1; + if ((sgl.TouchConvertX >= 0) && (sgl.TouchConvertX < GuiConst_DISPLAY_WIDTH) && + (sgl.TouchConvertY >= 0) && (sgl.TouchConvertY < GuiConst_DISPLAY_HEIGHT)) + for (TouchSearch = 0; TouchSearch < sgl.TouchAreaCnt; TouchSearch++) + if ((sgl.TouchConvertX >= sgl.TouchAreas[TouchSearch].X1) && + (sgl.TouchConvertX <= sgl.TouchAreas[TouchSearch].X2) && + (sgl.TouchConvertY >= sgl.TouchAreas[TouchSearch].Y1) && + (sgl.TouchConvertY <= sgl.TouchAreas[TouchSearch].Y2)) + { + if (TouchArea == -1) + TouchArea = sgl.TouchAreas[TouchSearch].IndexNo; + else if (sgl.TouchAreas[TouchSearch].IndexNo < TouchArea) + TouchArea = sgl.TouchAreas[TouchSearch].IndexNo; + } + return TouchArea; +} + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_TouchGet( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S* TouchX, + GuiConst_INT16S* TouchY) +{ + GuiConst_INT32S Result; + + Result = GuiLib_TouchCheck(X, Y); + + *TouchX = sgl.TouchConvertX; + *TouchY = sgl.TouchConvertY; + + return (Result); +} + +//------------------------------------------------------------------------------ +void GuiLib_TouchAdjustReset(void) +{ + sgl.TouchAdjustActive = 0; + sgl.TouchAdjustInUse[0] = 0; + sgl.TouchAdjustInUse[1] = 0; + sgl.TouchAdjustInUse[2] = 0; + sgl.TouchAdjustInUse[3] = 0; +} + +//------------------------------------------------------------------------------ +void GuiLib_TouchAdjustSet( + GuiConst_INT16S XTrue, + GuiConst_INT16S YTrue, + GuiConst_INT16S XMeasured, + GuiConst_INT16S YMeasured) +{ + GuiConst_INT8U I; + GuiConst_INT32S XTL, YTL, XTR, YTR, XBL, YBL, XBR, YBR, XL, XR, YT, YB; + + if (YTrue < GuiConst_DISPLAY_HEIGHT / 2) + { + if (XTrue < GuiConst_DISPLAY_WIDTH / 2) + I = 0; + else + I = 1; + } + else + { + if (XTrue < GuiConst_DISPLAY_WIDTH / 2) + I = 2; + else + I = 3; + } + + sgl.TouchAdjustInUse[I] = 1; + + sgl.TouchAdjustXTrue[I] = XTrue; + sgl.TouchAdjustYTrue[I] = YTrue; + sgl.TouchAdjustXMeasured[I] = XMeasured; + sgl.TouchAdjustYMeasured[I] = YMeasured; + + if (sgl.TouchAdjustInUse[0] && sgl.TouchAdjustInUse[3]) + { + sgl.TouchAdjustActive = 1; + if (!sgl.TouchAdjustInUse[1]) + { + sgl.TouchAdjustInUse[1] = 1; + sgl.TouchAdjustXTrue[1] = sgl.TouchAdjustXTrue[3]; + sgl.TouchAdjustYTrue[1] = sgl.TouchAdjustYTrue[0]; + sgl.TouchAdjustXMeasured[1] = sgl.TouchAdjustXMeasured[3]; + sgl.TouchAdjustYMeasured[1] = sgl.TouchAdjustYMeasured[0]; + } + if (!sgl.TouchAdjustInUse[2]) + { + sgl.TouchAdjustInUse[2] = 1; + sgl.TouchAdjustXTrue[2] = sgl.TouchAdjustXTrue[0]; + sgl.TouchAdjustYTrue[2] = sgl.TouchAdjustYTrue[3]; + sgl.TouchAdjustXMeasured[2] = sgl.TouchAdjustXMeasured[0]; + sgl.TouchAdjustYMeasured[2] = sgl.TouchAdjustYMeasured[3]; + } + } + else if (sgl.TouchAdjustInUse[1] && sgl.TouchAdjustInUse[2]) + { + sgl.TouchAdjustActive = 1; + if (!sgl.TouchAdjustInUse[0]) + { + sgl.TouchAdjustInUse[0] = 1; + sgl.TouchAdjustXTrue[0] = sgl.TouchAdjustXTrue[2]; + sgl.TouchAdjustYTrue[0] = sgl.TouchAdjustYTrue[1]; + sgl.TouchAdjustXMeasured[0] = sgl.TouchAdjustXMeasured[2]; + sgl.TouchAdjustYMeasured[0] = sgl.TouchAdjustYMeasured[1]; + } + if (!sgl.TouchAdjustInUse[3]) + { + sgl.TouchAdjustInUse[3] = 1; + sgl.TouchAdjustXTrue[3] = sgl.TouchAdjustXTrue[1]; + sgl.TouchAdjustYTrue[3] = sgl.TouchAdjustYTrue[2]; + sgl.TouchAdjustXMeasured[3] = sgl.TouchAdjustXMeasured[1]; + sgl.TouchAdjustYMeasured[3] = sgl.TouchAdjustYMeasured[2]; + } + } + + if (sgl.TouchAdjustActive) + { + XTL = (10 * sgl.TouchAdjustXMeasured[1]) - ((10 * sgl.TouchAdjustXTrue[1] * + (sgl.TouchAdjustXMeasured[1] - sgl.TouchAdjustXMeasured[0])) / + (sgl.TouchAdjustXTrue[1] - sgl.TouchAdjustXTrue[0])); + XTR = (10 * sgl.TouchAdjustXMeasured[0]) + + ((10 * (GuiConst_DISPLAY_WIDTH - sgl.TouchAdjustXTrue[0]) * + (sgl.TouchAdjustXMeasured[1] - sgl.TouchAdjustXMeasured[0])) / + (sgl.TouchAdjustXTrue[1] - sgl.TouchAdjustXTrue[0])); + XBL = (10 * sgl.TouchAdjustXMeasured[3]) - ((10 * sgl.TouchAdjustXTrue[3] * + (sgl.TouchAdjustXMeasured[3] - sgl.TouchAdjustXMeasured[2])) / + (sgl.TouchAdjustXTrue[3] - sgl.TouchAdjustXTrue[2])); + XBR = (10 * sgl.TouchAdjustXMeasured[2]) + + ((10 * (GuiConst_DISPLAY_WIDTH - sgl.TouchAdjustXTrue[2]) * + (sgl.TouchAdjustXMeasured[3] - sgl.TouchAdjustXMeasured[2])) / + (sgl.TouchAdjustXTrue[3] - sgl.TouchAdjustXTrue[2])); + + YT = 5 * (sgl.TouchAdjustYTrue[0] + sgl.TouchAdjustYTrue[1]); + YB = 5 * (sgl.TouchAdjustYTrue[2] + sgl.TouchAdjustYTrue[3]); + + sgl.TouchAdjustXTL = XBL - (YB * (XBL - XTL) / (YB - YT)); + sgl.TouchAdjustXBL = + XTL + (((10 * GuiConst_DISPLAY_HEIGHT) - YT) * (XBL - XTL) / (YB - YT)); + sgl.TouchAdjustXTR = XBR - (YB * (XBR - XTR) / (YB - YT)); + sgl.TouchAdjustXBR = + XTR + (((10 * GuiConst_DISPLAY_HEIGHT) - YT) * (XBR - XTR) / (YB - YT)); + + YTL = (10 * sgl.TouchAdjustYMeasured[2]) - ((10 * sgl.TouchAdjustYTrue[2] * + (sgl.TouchAdjustYMeasured[2] - sgl.TouchAdjustYMeasured[0])) / + (sgl.TouchAdjustYTrue[2] - sgl.TouchAdjustYTrue[0])); + YBL = (10 * sgl.TouchAdjustYMeasured[0]) + + ((10 * (GuiConst_DISPLAY_HEIGHT - sgl.TouchAdjustYTrue[0]) * + (sgl.TouchAdjustYMeasured[2] - sgl.TouchAdjustYMeasured[0])) / + (sgl.TouchAdjustYTrue[2] - sgl.TouchAdjustYTrue[0])); + YTR = (10 * sgl.TouchAdjustYMeasured[3]) - ((10 * sgl.TouchAdjustYTrue[3] * + (sgl.TouchAdjustYMeasured[3] - sgl.TouchAdjustYMeasured[1])) / + (sgl.TouchAdjustYTrue[3] - sgl.TouchAdjustYTrue[1])); + YBR = (10 * sgl.TouchAdjustYMeasured[1]) + + ((10 * (GuiConst_DISPLAY_HEIGHT - sgl.TouchAdjustYTrue[1]) * + (sgl.TouchAdjustYMeasured[3] - sgl.TouchAdjustYMeasured[1])) / + (sgl.TouchAdjustYTrue[3] - sgl.TouchAdjustYTrue[1])); + + XL = 5 * (sgl.TouchAdjustXTrue[0] + sgl.TouchAdjustXTrue[2]); + XR = 5 * (sgl.TouchAdjustXTrue[1] + sgl.TouchAdjustXTrue[3]); + + sgl.TouchAdjustYTL = YTR - (XR * (YTR - YTL) / (XR - XL)); + sgl.TouchAdjustYTR = + YTL + (((10 * GuiConst_DISPLAY_WIDTH) - XL) * (YTR - YTL) / (XR - XL)); + sgl.TouchAdjustYBL = YBR - (XR * (YBR - YBL) / (XR - XL)); + sgl.TouchAdjustYBR = + YBL + (((10 * GuiConst_DISPLAY_WIDTH) - XL) * (YBR - YBL) / (XR - XL)); + } +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#endif // GuiConst_ITEM_TOUCHAREA_INUSE + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +static void ScrollBox_ShowLineStruct( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U StructToCallIndex, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT8U ColorInvert) +{ + GuiLib_StructPtr StructToCall; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2; +#endif //GuiConst_CLIPPING_SUPPORT_ON + + if (StructToCallIndex != 0xFFFF) + { + sgl.DisplayLevel++; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + RemClippingX1 = sgl.CurItem.ClipRectX1; + RemClippingY1 = sgl.CurItem.ClipRectY1; + RemClippingX2 = sgl.CurItem.ClipRectX2; + RemClippingY2 = sgl.CurItem.ClipRectY2; +#endif // GuiConst_CLIPPING_SUPPORT_ON + memcpy(&sgl.CurItem, &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem, + sizeof(GuiLib_ItemRec)); + sgl.CurItem.RX = X; + sgl.CurItem.RY = Y; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = RemClippingX1; + sgl.CurItem.ClipRectY1 = RemClippingY1; + sgl.CurItem.ClipRectX2 = RemClippingX2; + sgl.CurItem.ClipRectY2 = RemClippingY2; +#endif // GuiConst_CLIPPING_SUPPORT_ON + StructToCall = (GuiLib_StructPtr) +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructToCallIndex); +#else // GuiConst_REMOTE_STRUCT_DATA + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]); +#endif // GuiConst_REMOTE_STRUCT_DATA + + if (ColorInvert == GuiLib_COL_INVERT_ON) + { +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ContainsCursorFields) + ColorInvert = GuiLib_COL_INVERT_IF_CURSOR; +#endif // GuiConst_CURSOR_SUPPORT_ON + } + else + { +#ifdef GuiConst_BITMAP_SUPPORT_ON + UpdateBackgroundBitmap(); +#endif + } + + DrawStructure(StructToCall, ColorInvert); + ResetLayerBufPtr(); + sgl.DisplayLevel--; + } +} + +//------------------------------------------------------------------------------ +static void ScrollBox_ShowLineBlock( + GuiConst_INTCOLOR Color, + GuiConst_INT8U Transparent, + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + if (!Transparent) + GuiLib_FillBox(X1, Y1, X2, Y2, Color); +} + +//------------------------------------------------------------------------------ +static void ScrollBox_ShowBarBlock( + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor, + GuiConst_INT8U Thickness, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S SizeX, + GuiConst_INT16S SizeY) +{ + GuiConst_INT8U T; + GuiConst_INT16S BX1, BY1, BX2, BY2; + + if (Thickness > 0) + for (T = 0; T < Thickness; T++) + { + BX1 = X + T; + BY1 = Y + T; + BX2 = X + SizeX - 1 - T; + BY2 = Y + SizeY - 1 - T; + GuiLib_Box(BX1, BY1, BX2, BY2, ForeColor); + } + BX1 = X + Thickness; + BY1 = Y + Thickness; + BX2 = X + SizeX - 1 - Thickness; + BY2 = Y + SizeY - 1 - Thickness; + GuiLib_FillBox(BX1, BY1, BX2, BY2, BackColor); +} + +//------------------------------------------------------------------------------ +static void ScrollBox_SetTopLine( + GuiConst_INT8U ScrollBoxIndex) +{ + GuiConst_INT16U LowerLimtA=0; + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + GuiLib_LIMIT_MINMAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, + LowerLimtA, sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines); + } + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; +} + +//------------------------------------------------------------------------------ +static void ScrollBox_DrawScrollLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S LineNdx) +{ + GuiConst_INT16U N; + GuiConst_INT16S SX1, SY1; + GuiConst_INT16S X1, Y1, X2, Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2; +#endif // GuiConst_CLIPPING_SUPPORT_ON + + if ((LineNdx < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) || + (LineNdx >= sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines)) + return; + + X1 = sgl.ScrollBoxesAry[ScrollBoxIndex].X1 + + sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetX; + Y1 = sgl.ScrollBoxesAry[ScrollBoxIndex].Y1 + + sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetY + + (LineNdx - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) * + sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset; + X2 = X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeX - 1; + Y2 = Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY - 1; + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + RemClippingX1 = sgl.CurItem.ClipRectX1; + RemClippingY1 = sgl.CurItem.ClipRectY1; + RemClippingX2 = sgl.CurItem.ClipRectX2; + RemClippingY2 = sgl.CurItem.ClipRectY2; + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, X1, X2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, Y1, Y2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, X1, X2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, Y1, Y2); + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + if ((LineNdx >= 0) && + (LineNdx < sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines)) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc(LineNdx); + + SX1 = X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetX; + SY1 = Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetY; + for (N = 0; N <= GuiConst_SCROLLITEM_MARKERS_MAX; N++) + { + if (N < GuiConst_SCROLLITEM_MARKERS_MAX) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[N] >= 0) && + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[N] >= 1)) + { + if ((LineNdx >= sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[N]) && + (LineNdx <= (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[N] + + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[N] - 1))) + { + ScrollBox_ShowLineBlock( + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[N], + sgl.ScrollBoxesAry[ScrollBoxIndex]. + MarkerColorTransparent[N], X1, Y1, X2, Y2); + switch (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerDrawingOrder[N]) + { + case 0: + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1, + GuiLib_COL_INVERT_ON); + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N] != + 0xFFFF) + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N], + SX1, SY1, GuiLib_COL_INVERT_ON); + break; + + case 1: + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N] != + 0xFFFF) + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N], + SX1, SY1, GuiLib_COL_INVERT_ON); + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1, + GuiLib_COL_INVERT_ON); + break; + + case 2: + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1, + GuiLib_COL_INVERT_ON); + break; + + case 3: + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N] != + 0xFFFF) + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[N], + SX1, SY1, GuiLib_COL_INVERT_ON); + break; + } + + break; + } + } + } + else + { + ScrollBox_ShowLineBlock( + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent, + X1, Y1, X2, Y2); + ScrollBox_ShowLineStruct(ScrollBoxIndex, + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex, SX1, SY1, + GuiLib_COL_INVERT_OFF); + } + } + } + else + ScrollBox_ShowLineBlock(sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent, + X1, Y1, X2, Y2); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = RemClippingX1; + sgl.CurItem.ClipRectY1 = RemClippingY1; + sgl.CurItem.ClipRectX2 = RemClippingX2; + sgl.CurItem.ClipRectY2 = RemClippingY2; + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_Init( + GuiConst_INT8U ScrollBoxIndex, + void (*DataFuncPtr) (GuiConst_INT16S LineIndex), + GuiConst_INT16S NoOfLines, + GuiConst_INT16S ActiveLine) +{ + GuiConst_INT16U StructToCallIndex; + GuiLib_StructPtr StructToCall; + GuiLib_ItemRec RemCurItem; +#ifdef GuiConst_CURSOR_SUPPORT_ON + GuiConst_INT8U RemCursorInUse; +#endif // GuiConst_CURSOR_SUPPORT_ON + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_READ) || + (ActiveLine >= NoOfLines)) + return (0); + + memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec)); + + sgl.GlobalScrollBoxIndex = ScrollBoxIndex; + + memcpy(&sgl.CurItem, &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem, + sizeof(GuiLib_ItemRec)); + StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex; + if (StructToCallIndex != 0xFFFF) + { + sgl.DisplayLevel++; + StructToCall = (GuiLib_StructPtr) +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructToCallIndex); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]); +#endif + sgl.NextScrollLineReading = 1; + sgl.InitialDrawing = 1; +#ifdef GuiConst_CURSOR_SUPPORT_ON + RemCursorInUse = sgl.CursorInUse; + sgl.ScrollBoxesAry[ScrollBoxIndex].ContainsCursorFields = 0; + sgl.CursorInUse = (GuiLib_ActiveCursorFieldNo >= 0); + sgl.CursorFieldFound = -1; + sgl.CursorActiveFieldFound = 0; +#endif // GuiConst_CURSOR_SUPPORT_ON + DrawStructure(StructToCall, GuiLib_COL_INVERT_OFF); + ResetLayerBufPtr(); +#ifdef GuiConst_CURSOR_SUPPORT_ON + sgl.InitialDrawing = 0; + if (sgl.CursorFieldFound == -1) + { + sgl.CursorInUse = 0; + GuiLib_ActiveCursorFieldNo = -1; + } + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ContainsCursorFields = 1; + if (sgl.CursorActiveFieldFound == 0) + { + GuiLib_ActiveCursorFieldNo = sgl.CursorFieldFound; + + DrawCursorItem(1); + } + } + sgl.CursorInUse = sgl.CursorInUse | RemCursorInUse; +#endif // GuiConst_CURSOR_SUPPORT_ON + sgl.NextScrollLineReading = 0; + sgl.DisplayLevel--; + } + + SetCurFont(sgl.CurItem.TextPar[0].FontIndex); + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY == 0) && + (sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY2 == 0)) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY = sgl.CurFont->BaseLine; + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY2 = + sgl.CurFont->YSize - sgl.CurFont->BaseLine - 1; + } + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiLib_SetClipping(sgl.CurItem.ClipRectX1,sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2,sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].MakeUpStructIndex; + if (StructToCallIndex != 0xFFFF) + { + sgl.DisplayLevel++; + memcpy(&sgl.CurItem, &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem, + sizeof(GuiLib_ItemRec)); + sgl.CurItem.RX = sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].X1; + sgl.CurItem.RY = sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].Y1; + StructToCall = (GuiLib_StructPtr) +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructToCallIndex); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]); +#endif + DrawStructure(StructToCall,GuiLib_COL_INVERT_OFF); + ResetLayerBufPtr(); + sgl.DisplayLevel--; + } + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc = DataFuncPtr; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = ActiveLine; + sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine = ActiveLine; + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines = NoOfLines; + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) && + (NoOfLines < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines)) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines = NoOfLines; + sgl.ScrollBoxesAry[ScrollBoxIndex].InUse = GuiLib_SCROLL_STRUCTURE_USED; + ScrollBox_SetTopLine(ScrollBoxIndex); + GuiLib_ScrollBox_Redraw(ScrollBoxIndex); + sgl.ScrollBoxesAry[ScrollBoxIndex].LastScrollTopLine = 0xFFFF; + + memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec)); + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_Redraw( + GuiConst_INT8U ScrollBoxIndex) +{ + GuiConst_INT16S N, ScrollStartLine, ScrollStopLine; + GuiLib_ItemRec RemCurItem; +#ifndef GuiConst_SCROLLITEM_BAR_NONE +#define GuiLib_SCROLL_REDRAW_VAR +#else +#ifndef GuiConst_SCROLLITEM_INDICATOR_NONE +#define GuiLib_SCROLL_REDRAW_VAR +#endif +#endif +#ifdef GuiLib_SCROLL_REDRAW_VAR + GuiLib_StructPtr StructToCall; + GuiConst_INT16U StructToCallIndex; + GuiConst_INT16S SX1, SY1; + GuiConst_INT16S X1, Y1; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S SX2, SY2; + GuiConst_INT16S X2, Y2; + GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2; +#endif // GuiConst_CLIPPING_SUPPORT_ON +#endif // GuiLib_SCROLL_REDRAW_VAR +#ifndef GuiConst_SCROLLITEM_BAR_NONE + GuiConst_INT16S BarMarkerY; + GuiConst_INT16S BarMarkerHeight; + GuiConst_INT16S BarMarkerMovementDY; + GuiConst_INT32S N1, N2; +#endif // GuiConst_SCROLLITEM_BAR_NONE + GuiConst_INT32S BackColor; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (0); + + memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec)); + + sgl.GlobalScrollBoxIndex = ScrollBoxIndex; + + ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1; + if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastScrollTopLine == + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine == -1) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == -1)) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine != + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine == -1) + { + ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + } + else + { + ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine; + ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine; + } + } + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine < + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]) + { + ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine; + if (ScrollStartLine < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) + ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine > + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]) + { + ScrollStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + ScrollStopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine; + GuiLib_LIMIT_MAX(ScrollStartLine, + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1); + } + } + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc != 0) + for (N = ScrollStartLine; N <= ScrollStopLine; N++) + ScrollBox_DrawScrollLine(ScrollBoxIndex, N); + + sgl.ScrollBoxesAry[ScrollBoxIndex].LastScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + sgl.ScrollBoxesAry[ScrollBoxIndex].LastMarkerLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + +#ifndef GuiConst_SCROLLITEM_BAR_NONE + if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType != GuiLib_MARKER_NONE) + { + SX1 = sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionX; + SY1 = sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionY; + X1 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset; + Y1 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTopOffset; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + SX2 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX - 1; + SY2 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY - 1; + X2 = SX2 - sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset; + Y2 = SY2 - sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBottomOffset; + RemClippingX1 = sgl.CurItem.ClipRectX1; + RemClippingY1 = sgl.CurItem.ClipRectY1; + RemClippingX2 = sgl.CurItem.ClipRectX2; + RemClippingY2 = sgl.CurItem.ClipRectY2; + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, SX1, SX2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, SY1, SY2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, SX1, SX2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, SY1, SY2); + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].BarStructIndex; + if (StructToCallIndex != 0xFFFF) + { + ScrollBox_ShowBarBlock( + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor, + 0, + SX1, + SY1, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY); + + sgl.DisplayLevel++; + memcpy(&sgl.CurItem, + &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem, + sizeof(GuiLib_ItemRec)); + sgl.CurItem.RX = SX1; + sgl.CurItem.RY = SY1; + StructToCall = (GuiLib_StructPtr) +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructToCallIndex); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]); +#endif + DrawStructure(StructToCall, GuiLib_COL_INVERT_OFF); + ResetLayerBufPtr(); + sgl.DisplayLevel--; + } + else + ScrollBox_ShowBarBlock( + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarThickness, + SX1, + SY1, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = RemClippingX1; + sgl.CurItem.ClipRectY1 = RemClippingY1; + sgl.CurItem.ClipRectX2 = RemClippingX2; + sgl.CurItem.ClipRectY2 = RemClippingY2; + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines > + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines) + { +#ifdef GuiConst_CLIPPING_SUPPORT_ON + RemClippingX1 = sgl.CurItem.ClipRectX1; + RemClippingY1 = sgl.CurItem.ClipRectY1; + RemClippingX2 = sgl.CurItem.ClipRectX2; + RemClippingY2 = sgl.CurItem.ClipRectY2; + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, X1, X2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, Y1, Y2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, X1, X2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, Y1, Y2); + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + BarMarkerHeight = 0; + BarMarkerMovementDY = sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBottomOffset - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTopOffset; + + switch (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType) + { + case GuiLib_MARKER_ICON: + sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[ + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconFont]); + BarMarkerHeight = sgl.CurFont->YSize; + break; + + case GuiLib_MARKER_BITMAP: + BarMarkerHeight = + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapHeight; + break; + + case GuiLib_MARKER_FIXED_BLOCK: + BarMarkerHeight = + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset; + break; + + case GuiLib_MARKER_VARIABLE_BLOCK: + BarMarkerHeight = + (((10 * BarMarkerMovementDY * + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines) + 5) / + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines) / 10; + GuiLib_LIMIT_MIN(BarMarkerHeight, 4); + break; + } + + N1 = sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines; + N2 = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + GuiLib_LIMIT_MINMAX(N2, 0, N1); + BarMarkerY = (((10 * (BarMarkerMovementDY - BarMarkerHeight) * + N2) + 5) / N1) / 10; + + switch (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType) + { + case GuiLib_MARKER_ICON: + sgl.CurItem.X1 = X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetX; + sgl.CurItem.Y1 = Y1 + BarMarkerY + + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetY + + sgl.CurFont->BaseLine; + sgl.CurItem.TextPar[0].FontIndex = + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconFont; + sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[0].BitFlags = 0; + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + DrawText(sgl.ScrollBoxesAry[ScrollBoxIndex].BarIconPtr, 1, 0, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent); + break; + + case GuiLib_MARKER_BITMAP: + if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent) + BackColor = + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapTranspColor; + else + BackColor = -1; + GuiLib_ShowBitmap(sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex, + X1, Y1 + BarMarkerY, BackColor); + break; + + case GuiLib_MARKER_FIXED_BLOCK: + case GuiLib_MARKER_VARIABLE_BLOCK: + if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent) + GuiLib_Box(X1, Y1 + BarMarkerY, + X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset - 1, + Y1 + BarMarkerY + BarMarkerHeight - 1, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor); + else + GuiLib_BorderBox(X1, Y1 + BarMarkerY, + X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset - + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset - 1, + Y1 + BarMarkerY + BarMarkerHeight - 1, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor); + break; + } + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = RemClippingX1; + sgl.CurItem.ClipRectY1 = RemClippingY1; + sgl.CurItem.ClipRectX2 = RemClippingX2; + sgl.CurItem.ClipRectY2 = RemClippingY2; + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + } + } +#endif + +#ifndef GuiConst_SCROLLITEM_INDICATOR_NONE + if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType != GuiLib_INDICATOR_NONE) + { + SX1 = sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionX; + SY1 = sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionY; + X1 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerLeftOffset; + Y1 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTopOffset; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + SX2 = SX1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX - 1; + SY2 = SY1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY - 1; + X2 = SX2 - sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerRightOffset; + Y2 = SY2 - sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBottomOffset; + RemClippingX1 = sgl.CurItem.ClipRectX1; + RemClippingY1 = sgl.CurItem.ClipRectY1; + RemClippingX2 = sgl.CurItem.ClipRectX2; + RemClippingY2 = sgl.CurItem.ClipRectY2; + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, SX1, SX2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, SY1, SY2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, SX1, SX2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, SY1, SY2); + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + StructToCallIndex = sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorStructIndex; + if (StructToCallIndex != 0xFFFF) + { + ScrollBox_ShowBarBlock( + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor, + 0, + SX1, + SY1, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY); + + sgl.DisplayLevel++; + memcpy(&sgl.CurItem, + &sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxItem, + sizeof(GuiLib_ItemRec)); + sgl.CurItem.RX = SX1; + sgl.CurItem.RY = SY1; + StructToCall = (GuiLib_StructPtr) +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructToCallIndex); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructToCallIndex]); +#endif + DrawStructure(StructToCall, GuiLib_COL_INVERT_OFF); + ResetLayerBufPtr(); + sgl.DisplayLevel--; + } + else + ScrollBox_ShowBarBlock( + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorThickness, + SX1, + SY1, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = RemClippingX1; + sgl.CurItem.ClipRectY1 = RemClippingY1; + sgl.CurItem.ClipRectX2 = RemClippingX2; + sgl.CurItem.ClipRectY2 = RemClippingY2; + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine >= 0) && + (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine >= + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) && + (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine < + (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines))) + { +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX1, X1, X2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY1, Y1, Y2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectX2, X1, X2); + GuiLib_LIMIT_MINMAX(sgl.CurItem.ClipRectY2, Y1, Y2); + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + switch (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType) + { + case GuiLib_MARKER_ICON: + sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[ + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconFont]); + sgl.CurItem.X1 = + X1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetX; + sgl.CurItem.Y1 = + Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetY + + sgl.CurFont->BaseLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset * + (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine); + sgl.CurItem.TextPar[0].FontIndex = + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconFont; + sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[0].BitFlags = 0; + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + DrawText(sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorIconPtr, 1, 0, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor, + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTransparent); + break; + + case GuiLib_MARKER_BITMAP: + if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent) + BackColor = + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapTranspColor; + else + BackColor = -1; + GuiLib_ShowBitmap( + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIndex, + X1, Y1 + sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset * + (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine), BackColor); + break; + } + } + } +#endif // GuiConst_SCROLLITEM_INDICATOR_NONE + + memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec)); + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_RedrawLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLine) +{ + GuiLib_ItemRec RemCurItem; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (ScrollLine > (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1)) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollLineDataFunc == 0)) + return (0); + + memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec)); + sgl.GlobalScrollBoxIndex = ScrollBoxIndex; + + ScrollBox_DrawScrollLine(ScrollBoxIndex, ScrollLine); + + memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec)); + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_Close( + GuiConst_INT8U ScrollBoxIndex) +{ + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (0); + + sgl.ScrollBoxesAry[ScrollBoxIndex].InUse = GuiLib_SCROLL_STRUCTURE_READ; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_Down( + GuiConst_INT8U ScrollBoxIndex) +{ + GuiConst_INT16U ScrollBottomLine; + GuiConst_INT16S RemScrollTopLine; + GuiConst_INT16S RemMarkerStartLine; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (0); + + RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + + ScrollBottomLine = (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1); + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType) + { + if (ScrollBottomLine >= (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1)) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1) +#ifdef GuiConst_SCROLL_MODE_WRAP_AROUND + || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2) +#endif + ) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0; + } + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine++; + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == + (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1)) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1) +#ifdef GuiConst_SCROLL_MODE_WRAP_AROUND + || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2) +#endif + ) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = 0; + } + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] < + ScrollBottomLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs) + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]++; + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine++; + GuiLib_LIMIT_MAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines); + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]++; + } + } + else + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == + (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1)) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1) +#ifdef GuiConst_SCROLL_MODE_WRAP_AROUND + || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2) +#endif + ) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + -sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = 0; + } + } + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine++; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]++; + } + } + } + + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine)) + { + GuiLib_ScrollBox_Redraw(ScrollBoxIndex); + return (1); + } + else + return (0); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_Up( + GuiConst_INT8U ScrollBoxIndex) +{ + GuiConst_INT16S RemScrollTopLine; + GuiConst_INT16S RemMarkerStartLine; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (0); + + RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine == 0) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1) +#ifdef GuiConst_SCROLL_MODE_WRAP_AROUND + || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2) +#endif + ) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines; + GuiLib_LIMIT_MIN(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, 0); + } + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine--; + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == 0) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1) +#ifdef GuiConst_SCROLL_MODE_WRAP_AROUND + || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2) +#endif + ) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines; + GuiLib_LIMIT_MIN(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, 0); + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1; + } + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] > + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs) + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]--; + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine--; + GuiLib_LIMIT_MIN(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, 0); + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]--; + } + } + else + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] == 0) + { + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 1) +#ifdef GuiConst_SCROLL_MODE_WRAP_AROUND + || (sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode == 2) +#endif + ) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1 - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1; + } + } + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine--; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]--; + } + } + } + + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine)) + { + GuiLib_ScrollBox_Redraw(ScrollBoxIndex); + return (1); + } + else + return (0); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_Home( + GuiConst_INT8U ScrollBoxIndex) +{ + GuiConst_INT16S RemScrollTopLine; + GuiConst_INT16S RemMarkerStartLine; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (0); + + RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0; + else + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = 0; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + -sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = 0; + } + + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine)) + { + GuiLib_ScrollBox_Redraw(ScrollBoxIndex); + return (1); + } + else + return (0); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_End( + GuiConst_INT8U ScrollBoxIndex) +{ + GuiConst_INT16S RemScrollTopLine; + GuiConst_INT16S RemMarkerStartLine; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (0); + + RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = GuiLib_GET_MAX( + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines, 0); + else + { + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = GuiLib_GET_MAX( + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines, 0); + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1 - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + if (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] >= 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1; + } + + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine)) + { + GuiLib_ScrollBox_Redraw(ScrollBoxIndex); + return (1); + } + else + return (0); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_To_Line( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S NewLine) +{ + GuiConst_INT16S RemScrollTopLine; + GuiConst_INT16S RemMarkerStartLine; + GuiConst_INT16S TopLine; + GuiConst_INT16S LowerLimtA = 0; + + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (NewLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines)) + return(0); + + RemScrollTopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine; + RemMarkerStartLine = sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0]; + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType) + { + TopLine = sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines; + GuiLib_LIMIT_MIN(TopLine, 0); + if (NewLine > TopLine) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = TopLine; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = NewLine; + } + else if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + { + if ((NewLine != -1) && + ((NewLine < sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine) || + (NewLine >= (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines)))) + { + if (NewLine > (sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines + + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs)) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + NewLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + + GuiLib_LIMIT_MINMAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, + NewLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines + 1, + NewLine + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines - 1); + GuiLib_LIMIT_MINMAX(sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine, LowerLimtA, + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines); + } + } + else + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + NewLine - sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] = NewLine; + + if ((sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine != RemScrollTopLine) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[0] != RemMarkerStartLine)) + { + GuiLib_ScrollBox_Redraw(ScrollBoxIndex); + return (1); + } + else + return (0); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_SetLineMarker( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLineMarkerIndex, + GuiConst_INT16S StartLine, + GuiConst_INT16U Size) +{ + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (ScrollLineMarkerIndex >= GuiConst_SCROLLITEM_MARKERS_MAX) || + (StartLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines)) + return (0); + + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[ScrollLineMarkerIndex] = + GuiLib_GET_MINMAX(StartLine, -1, + (GuiConst_INT16S)sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1); + if ((ScrollLineMarkerIndex == 0) && (Size > 1)) + Size = 1; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[ScrollLineMarkerIndex] = Size; + if (ScrollLineMarkerIndex == 0) + ScrollBox_SetTopLine(ScrollBoxIndex); + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16S GuiLib_ScrollBox_GetActiveLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLineMarkerIndex) +{ + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (ScrollLineMarkerIndex >= GuiConst_SCROLLITEM_MARKERS_MAX)) + return (-1); + + return (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[ScrollLineMarkerIndex]); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16S GuiLib_ScrollBox_GetActiveLineCount( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLineMarkerIndex) +{ + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (ScrollLineMarkerIndex >= GuiConst_SCROLLITEM_MARKERS_MAX)) + return (-1); + + return (sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[ScrollLineMarkerIndex]); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_SetIndicator( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S StartLine) +{ +#ifdef GuiConst_SCROLLITEM_INDICATOR_NONE + gl.Dummy1_8U = ScrollBoxIndex; // To avoid compiler warning + gl.Dummy1_16S = StartLine; // To avoid compiler warning + return (0); +#else + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (StartLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines)) + return (0); + + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine = GuiLib_GET_MINMAX( + StartLine, -1, + (GuiConst_INT16S)sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - 1); + + return (1); +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_ScrollBox_SetTopLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S TopLine) +{ + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED) || + (TopLine >= sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines)) + return (0); + + if (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine = + GuiLib_GET_MINMAX(TopLine, 0, + sgl.ScrollBoxesAry[ScrollBoxIndex].NumberOfLines - + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines); + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16S GuiLib_ScrollBox_GetTopLine( + GuiConst_INT8U ScrollBoxIndex) +{ + if ((ScrollBoxIndex >= GuiConst_SCROLLITEM_BOXES_MAX) || + (sgl.ScrollBoxesAry[ScrollBoxIndex].InUse != GuiLib_SCROLL_STRUCTURE_USED)) + return (-1); + + return (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollTopLine); +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#endif // GuiConst_ITEM_SCROLLBOX_INUSE + +#ifdef GuiConst_ITEM_GRAPH_INUSE +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#ifdef GuiConst_CLIPPING_SUPPORT_ON +//------------------------------------------------------------------------------ +static void Graph_SetClipping( + GuiConst_INT8U GraphIndex) +{ + GuiLib_SetClipping(sgl.GraphAry[GraphIndex].GraphItem.ClipRectX1, + sgl.GraphAry[GraphIndex].GraphItem.ClipRectY1, + sgl.GraphAry[GraphIndex].GraphItem.ClipRectX2, + sgl.GraphAry[GraphIndex].GraphItem.ClipRectY2); +} + +//------------------------------------------------------------------------------ +static void Graph_ResetClipping(void) +{ + GuiLib_ResetClipping(); +} +#endif // GuiConst_CLIPPING_SUPPORT_ON + +//------------------------------------------------------------------------------ +static void Graph_CalcScaleX( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + GuiConst_INT32S D1,D2; + + D1 = (sgl.GraphAry[GraphIndex].GraphItem.X2 - + sgl.GraphAry[GraphIndex].GraphItem.X1 - + sgl.GraphAry[GraphIndex].OriginOffsetX); + D1 = D1 * 10000; + D2 = (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].NumbersMaxValue - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].NumbersMinValue); + D1 = D1/D2; + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale = D1; +} + +//------------------------------------------------------------------------------ +static void Graph_CalcScaleY( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + GuiConst_INT32S D1,D2; + + D1 = (sgl.GraphAry[GraphIndex].GraphItem.Y2 - + sgl.GraphAry[GraphIndex].GraphItem.Y1- + sgl.GraphAry[GraphIndex].OriginOffsetY); + D1 = D1 * 10000; + D2 = (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].NumbersMaxValue - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].NumbersMinValue); + D1 = D1/D2; + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale= D1; +} + +//------------------------------------------------------------------------------ +static GuiConst_INT32S Graph_CalcNumbersMaxValue( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex, + GuiConst_INT8U AxisType) +{ + GuiConst_INT32S MV; + + MV = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersMaxValue; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].TicksMinor) + MV -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersAtEnd * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersStepMinor; + else if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].TicksMajor) + MV -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersAtEnd * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][AxisType].NumbersStepMajor; + return(MV); +} + +//------------------------------------------------------------------------------ +static void Graph_DrawXAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + GuiConst_INT16S X, Y; + GuiConst_INT16S DX, DY; + GuiConst_INT32S TX, TY; + #ifdef GuiConst_FLOAT_SUPPORT_ON + double TDX; + #endif + GuiConst_INT32S F; + GuiConst_INT16S HW; + GuiConst_INT32S MV; + GuiConst_INT16U StrLen; + GuiConst_INT16U I; + GuiConst_INT8U Align; + + Y = sgl.GraphAry[GraphIndex].OrigoY + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Offset; + + MV = Graph_CalcNumbersMaxValue(GraphIndex, AxisIndex, GuiLib_GRAPHAXIS_X); + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Line) + { + X = sgl.GraphAry[GraphIndex].GraphItem.X2 - + sgl.GraphAry[GraphIndex].GraphItem.X1 + 1; + for (I = 0; I < sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y]; I++) + if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].Offset < X) + X = sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].Offset; + X += sgl.GraphAry[GraphIndex].OriginOffsetX; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + LineNegative) + GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1, + Y, + sgl.GraphAry[GraphIndex].GraphItem.X1 + X - 1, + Y, + sgl.GraphAry[GraphIndex].ForeColor); + if ((sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] > 1) && + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + LineBetweenAxes) + GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1 + X - 1, + Y, + sgl.GraphAry[GraphIndex].GraphItem.X1 + + sgl.GraphAry[GraphIndex].OriginOffsetX, + Y, + sgl.GraphAry[GraphIndex].ForeColor); + GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1 + + sgl.GraphAry[GraphIndex].OriginOffsetX, + Y, + sgl.GraphAry[GraphIndex].GraphItem.X2, + Y, + sgl.GraphAry[GraphIndex].ForeColor); + } + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Arrow) + { + DX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + ArrowLength; + HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + ArrowWidth / 2; + for (DY = -HW; DY <= HW; DY++) + GuiLib_Line(sgl.GraphAry[GraphIndex].GraphItem.X2 - DX, + Y + DY, + sgl.GraphAry[GraphIndex].GraphItem.X2, + Y, + sgl.GraphAry[GraphIndex].ForeColor); + } + + Graph_CalcScaleX(GraphIndex, AxisIndex); + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].TicksMajor) + { + HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMajorWidth / 2; + TX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue; + F = TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor; + if (F != 0) + { + TX -= F; + if (TX < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue) + TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor; + } + while (TX <= MV) + { + DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale) / + 10000; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersAtOrigo || + (TX != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue)) + GuiLib_FillBox( + DX - HW, + Y, + DX - HW + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMajorWidth - 1, + Y + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMajorLength - 1, + sgl.GraphAry[GraphIndex].ForeColor); + TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor; + } + } + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].TicksMinor) + { + HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMinorWidth / 2; + TX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue; + F = TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMinor; + if (F != 0) + { + TX -= F; + if (TX < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue) + TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMinor; + } + while (TX <= MV) + { + DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale) / + 10000; + if ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersAtOrigo || + (TX != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue)) && + ((!sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMajor) || + (TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor != 0))) + GuiLib_FillBox( + DX - HW, + Y, + DX - HW + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMinorWidth - 1, + Y + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMinorLength - 1, + sgl.GraphAry[GraphIndex].ForeColor); + TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMinor; + } + } + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Numbers) + { + memcpy(&sgl.CurItem, &sgl.GraphAry[GraphIndex].GraphItem, sizeof(GuiLib_ItemRec)); + + DY = Y; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMajor) + DY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + TicksMajorLength; + SetCurFont(sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex); + DY += ReadByte(sgl.CurFont->BaseLine); + DY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersOffset; + + TX = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue; + F = TX % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor; + if (F != 0) + { + TX -= F; + if (TX < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue) + TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor; + } + switch (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatAlignment) + { + case GuiLib_FORMAT_ALIGNMENT_LEFT: + Align = GuiLib_ALIGN_LEFT; + break; + case GuiLib_FORMAT_ALIGNMENT_CENTER: + Align = GuiLib_ALIGN_CENTER; + break; + case GuiLib_FORMAT_ALIGNMENT_RIGHT: + Align = GuiLib_ALIGN_RIGHT; + break; + } + while (TX <= MV) + { + DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Scale) / + 10000; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersAtOrigo || + (TX != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue)) + { + #ifdef GuiConst_FLOAT_SUPPORT_ON + TDX = TX; + #endif + GuiLib_DrawVar( + DX, + DY, + sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex, + #ifdef GuiConst_FLOAT_SUPPORT_ON + &TDX, + GuiLib_VAR_DOUBLE, + #else + &TX, + GuiLib_VAR_SIGNED_LONG, + #endif + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatFormat, + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatFieldWidth, + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatAlignment, + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].FormatDecimals, + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + BitFlags & GuiLib_BITFLAG_FORMATSHOWSIGN) > 0), + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + BitFlags & GuiLib_BITFLAG_FORMATZEROPADDING) > 0), + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + BitFlags & GuiLib_BITFLAG_FORMATTRAILINGZEROS) > 0), + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + BitFlags & GuiLib_BITFLAG_FORMATTHOUSANDSSEP) > 0), + Align, + sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].Ps, + 1, // Transparent + ((sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].BitFlags & + GuiLib_BITFLAG_UNDERLINE) > 0), + 0, + 0, + 0, + 0, + sgl.GraphAry[GraphIndex].GraphItem.ForeColor, + sgl.GraphAry[GraphIndex].GraphItem.BackColor); + } + TX += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersStepMajor; + } + } +} + +//------------------------------------------------------------------------------ +static void Graph_DrawYAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + GuiConst_INT16S X, Y; + GuiConst_INT16S DX, DY; + GuiConst_INT32S TX, TY; + #ifdef GuiConst_FLOAT_SUPPORT_ON + double TDY; + #endif + GuiConst_INT32S F; + GuiConst_INT16S HW; + GuiConst_INT32S MV; + GuiConst_INT16U StrLen; + GuiConst_INT16U I; + GuiConst_INT8U Align; + + X = sgl.GraphAry[GraphIndex].OrigoX + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Offset; + + MV = Graph_CalcNumbersMaxValue(GraphIndex, AxisIndex, GuiLib_GRAPHAXIS_Y); + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Line) + { + Y = 0; + for (I = 0; I < sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X]; I++) + if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].Offset > Y) + Y = sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].Offset; + Y = sgl.GraphAry[GraphIndex].OriginOffsetY - Y; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + LineNegative) + GuiLib_FillBox(X, + sgl.GraphAry[GraphIndex].GraphItem.Y2 - Y, + X, + sgl.GraphAry[GraphIndex].GraphItem.Y2, + sgl.GraphAry[GraphIndex].ForeColor); + if ((sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] > 1) && + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + LineBetweenAxes) + GuiLib_FillBox(X, + sgl.GraphAry[GraphIndex].GraphItem.Y2 - + sgl.GraphAry[GraphIndex].OriginOffsetY, + X, + sgl.GraphAry[GraphIndex].GraphItem.Y2 - Y, + sgl.GraphAry[GraphIndex].ForeColor); + GuiLib_FillBox(X, + sgl.GraphAry[GraphIndex].GraphItem.Y1, + X, + sgl.GraphAry[GraphIndex].GraphItem.Y2 - + sgl.GraphAry[GraphIndex].OriginOffsetY, + sgl.GraphAry[GraphIndex].ForeColor); + } + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Arrow) + { + DY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + ArrowLength; + HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + ArrowWidth / 2; + for (DX = -HW; DX <= HW; DX++) + GuiLib_Line(X - DX, + sgl.GraphAry[GraphIndex].GraphItem.Y1 + DY, + X, + sgl.GraphAry[GraphIndex].GraphItem.Y1, + sgl.GraphAry[GraphIndex].ForeColor); + } + + Graph_CalcScaleY(GraphIndex, AxisIndex); + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].TicksMajor) + { + HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMajorWidth / 2; + TY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue; + F = TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor; + if (F != 0) + { + TY -= F; + if (TY < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue) + TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor; + } + while (TY <= MV) + { + DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale) / + 10000; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersAtOrigo || + (TY != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue)) + GuiLib_FillBox( + X - sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMajorLength + 1, + DY - HW, + X, + DY - HW + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMajorWidth - 1, + sgl.GraphAry[GraphIndex].ForeColor); + TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor; + } + } + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].TicksMinor) + { + HW = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMinorWidth / 2; + TY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue; + F = TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMinor; + if (F != 0) + { + TY -= F; + if (TY < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue) + TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMinor; + } + while (TY <= MV) + { + DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale) / + 10000; + if ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersAtOrigo || + (TY != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue)) && + ((!sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMajor) || + (TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor != 0))) + GuiLib_FillBox( + X - sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMinorLength + 1, + DY - HW, + X, + DY - HW + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMinorWidth - 1, + sgl.GraphAry[GraphIndex].ForeColor); + TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMinor; + } + } + + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Numbers) + { + memcpy(&sgl.CurItem, &sgl.GraphAry[GraphIndex].GraphItem, sizeof(GuiLib_ItemRec)); + + SetCurFont(sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex); + + sgl.CurItem.TextPar[0].BitFlags = + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].BitFlags; + sgl.CurItem.FormatFieldWidth = + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFieldWidth; + sgl.CurItem.FormatDecimals = + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatDecimals; + sgl.CurItem.FormatAlignment = + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatAlignment; + sgl.CurItem.FormatFormat = + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFormat; + + DX = X; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMajor) + DX -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + TicksMajorLength; + DX -= sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersOffset; + + TY = sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue; + F = TY % sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor; + if (F != 0) + { + TY -= F; + if (TY < sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue) + TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor; + } + switch (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatAlignment) + { + case GuiLib_FORMAT_ALIGNMENT_LEFT: + Align = GuiLib_ALIGN_LEFT; + break; + case GuiLib_FORMAT_ALIGNMENT_CENTER: + Align = GuiLib_ALIGN_CENTER; + break; + case GuiLib_FORMAT_ALIGNMENT_RIGHT: + Align = GuiLib_ALIGN_RIGHT; + break; + } + while (TY <= MV) + { + DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY - + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Scale) / + 10000; + if (sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersAtOrigo || + (TY != sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue)) + { + #ifdef GuiConst_FLOAT_SUPPORT_ON + TDY = TY; + #endif + GuiLib_DrawVar( + DX, + DY + GuiLib_FONT_MID_Y(ReadByte(sgl.CurFont->BaseLine), + ReadByte(sgl.CurFont->TopLine)), + sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].FontIndex, + #ifdef GuiConst_FLOAT_SUPPORT_ON + &TDY, + GuiLib_VAR_DOUBLE, + #else + &TY, + GuiLib_VAR_SIGNED_LONG, + #endif + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFormat, + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatFieldWidth, + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatAlignment, + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].FormatDecimals, + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + BitFlags & GuiLib_BITFLAG_FORMATSHOWSIGN) > 0), + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + BitFlags & GuiLib_BITFLAG_FORMATZEROPADDING) > 0), + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + BitFlags & GuiLib_BITFLAG_FORMATTRAILINGZEROS) > 0), + ((sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + BitFlags & GuiLib_BITFLAG_FORMATTHOUSANDSSEP) > 0), + Align, + sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].Ps, + 1, // Transparent + ((sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].BitFlags & + GuiLib_BITFLAG_UNDERLINE) > 0), + 0, + 0, + 0, + 0, + sgl.GraphAry[GraphIndex].GraphItem.ForeColor, + sgl.GraphAry[GraphIndex].GraphItem.BackColor); + } + TY += sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersStepMajor; + } + } +} + +//------------------------------------------------------------------------------ +static void Graph_DrawDataPoint( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT16U DataIndex, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S LastX, + GuiConst_INT16S LastY) +{ + GuiConst_INT16S DX1, DY1; + GuiConst_INT16S DX2, DY2; + GuiConst_INT16S HW; + GuiConst_INT16S AY; + + switch (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Representation) + { + case GuiLib_GRAPH_DATATYPE_DOT: + if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness == 0) + GuiLib_Circle( + X, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor); + else if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex]. + Thickness == 1) + GuiLib_Circle( + X, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor); + else + { + GuiLib_Circle( + X, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + GuiLib_Circle( + X, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width- + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor); + } + break; + + case GuiLib_GRAPH_DATATYPE_LINE: + if (DataIndex == + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst) + GuiLib_Dot( + X, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + else + GuiLib_Line( + LastX, LastY, + X, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + break; + + case GuiLib_GRAPH_DATATYPE_BAR: + AY = sgl.GraphAry[GraphIndex].OrigoY + + sgl.GraphAry[GraphIndex].GraphAxes[0][GuiLib_GRAPHAXIS_X].Offset; + DX2 = X + (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width / 2); + DX1 = DX2 - sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width + 1; + if (DX1 > DX2) + DX1 = DX2; + DY1 = AY; + DY2 = Y; + if (Y < AY) + DY1--; + if (Y != AY) + { + if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness == 0) + { + if (!sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex]. + BackColorTransparent) + GuiLib_FillBox( + DX1, DY1, + DX2, DY2, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor); + } + else + { + OrderCoord(&DX1, &DX2); + OrderCoord(&DY1, &DY2); + DrawBorderBox( + DX1, DY1, + DX2, DY2, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].BackColor, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex]. + BackColorTransparent, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Thickness); + } + } + break; + + case GuiLib_GRAPH_DATATYPE_CROSS: + HW = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width; + DX1 = X - HW; + DY1 = Y - HW; + DX2 = X + HW; + DY2 = Y + HW; + GuiLib_Line( + DX1, Y, + DX2, Y, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + GuiLib_Line( + X, DY1, + X, DY2, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + break; + + case GuiLib_GRAPH_DATATYPE_X: + HW = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Width; + DX1 = X - HW; + DY1 = Y - HW; + DX2 = X + HW; + DY2 = Y + HW; + GuiLib_Line( + DX1, DY1, + DX2, DY2, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + GuiLib_Line( + DX1, DY2, + DX2, DY1, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].ForeColor); + break; + } +} + +//------------------------------------------------------------------------------ +static void Graph_DrawDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex) +{ + GuiConst_INT16S DX = 0, DY = 0; + GuiConst_INT16S LastDX, LastDY; + GuiConst_INT32S TX, TY; + GuiConst_INT16U DataIndex; + GuiConst_INT16U DataCount; + + Graph_CalcScaleX(GraphIndex, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX); + Graph_CalcScaleY(GraphIndex, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY); + + DataIndex = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst; + for (DataCount = 1; + DataCount <= sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount; + DataCount++) + { + TX = + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].X; + TY = + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].Y; + + LastDX = DX; + LastDY = DY; + DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX - + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX] + [GuiLib_GRAPHAXIS_X].NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX] + [GuiLib_GRAPHAXIS_X].Scale) / 10000; + DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY - + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY] + [GuiLib_GRAPHAXIS_Y].NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY] + [GuiLib_GRAPHAXIS_Y].Scale) / 10000; + + Graph_DrawDataPoint( + GraphIndex, + DataSetIndex, + DataIndex, + DX, DY, + LastDX, LastDY); + + if (DataIndex >= sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount) + DataIndex = 0; + else + DataIndex++; + } +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_Close( + GuiConst_INT8U GraphIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + + sgl.GraphAry[GraphIndex].InUse = GuiLib_GRAPH_STRUCTURE_UNDEF; + sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] = 0; + sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] = 0; + sgl.GraphAry[GraphIndex].GraphDataSetCnt = 0; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_AddDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT8U XAxisIndex, + GuiConst_INT8U YAxisIndex, + GuiLib_GraphDataPoint *DataPtr, + GuiConst_INT16U DataSize, + GuiConst_INT16U DataCount, + GuiConst_INT16U DataFirst) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + if (DataCount > DataSize) + return (0); + if (DataFirst >= DataSize) + return (0); + + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr = DataPtr; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize = DataSize; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst = DataFirst; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount = DataCount; + if ((XAxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (XAxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X])) + XAxisIndex = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX = XAxisIndex; + if ((YAxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (YAxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y])) + YAxisIndex = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY = YAxisIndex; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_RemoveDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize = 0; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_AddDataPoint( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT32S X, + GuiConst_INT32S Y) +{ + GuiConst_INT16U I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount >= + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize) + return (0); + + I = (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataFirst + + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount) % + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount++; + + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[I].X = X; + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[I].Y = Y; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_ShowDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible = 1; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_HideDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible = 0; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_ShowXAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X])) + return (0); + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Visible = 1; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_HideXAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X])) + return (0); + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X].Visible = 0; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_ShowYAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y])) + return (0); + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Visible = 1; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_HideYAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y])) + return (0); + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y].Visible = 0; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_SetXAxisRange( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex, + GuiConst_INT32S MinValue, + GuiConst_INT32S MaxValue) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X])) + return (0); + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMinValue = MinValue; + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_X]. + NumbersMaxValue = MaxValue; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_SetYAxisRange( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex, + GuiConst_INT32S MinValue, + GuiConst_INT32S MaxValue) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y])) + return (0); + + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMinValue = MinValue; + sgl.GraphAry[GraphIndex].GraphAxes[AxisIndex][GuiLib_GRAPHAXIS_Y]. + NumbersMaxValue = MaxValue; + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_ResetXAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex) +{ + GuiConst_INT8U AxisIndex1,AxisIndex2; + GuiConst_INT8U I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if (AxisIndex == -1) + { + AxisIndex1 = 0; + AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] - 1; + } + else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X])) + return (0); + else + { + AxisIndex1 = AxisIndex; + AxisIndex2 = AxisIndex; + } + + for (I = AxisIndex1; I <= AxisIndex2; I++) + { + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMinValue = + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMinValueOrg; + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMaxValue = + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMaxValueOrg; + } + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_OffsetXAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex, + GuiConst_INT32S Offset) +{ + GuiConst_INT8U AxisIndex1,AxisIndex2; + GuiConst_INT8U I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if (AxisIndex == -1) + { + AxisIndex1 = 0; + AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] - 1; + } + else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X])) + return (0); + else + { + AxisIndex1 = AxisIndex; + AxisIndex2 = AxisIndex; + } + + for (I = AxisIndex1; I <= AxisIndex2; I++) + { + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMinValue += Offset; + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].NumbersMaxValue += Offset; + } + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_ResetYAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex) +{ + GuiConst_INT8U AxisIndex1,AxisIndex2; + GuiConst_INT8U I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if (AxisIndex == -1) + { + AxisIndex1 = 0; + AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] - 1; + } + else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y])) + return (0); + else + { + AxisIndex1 = AxisIndex; + AxisIndex2 = AxisIndex; + } + + for (I = AxisIndex1; I <= AxisIndex2; I++) + { + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMinValue = + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMinValueOrg; + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMaxValue = + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMaxValueOrg; + } + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_OffsetYAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex, + GuiConst_INT32S Offset) +{ + GuiConst_INT8U AxisIndex1,AxisIndex2; + GuiConst_INT8U I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if (AxisIndex == -1) + { + AxisIndex1 = 0; + AxisIndex2 = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] - 1; + } + else if ((AxisIndex >= GuiConst_GRAPH_AXES_MAX) || + (AxisIndex >= sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y])) + return (0); + else + { + AxisIndex1 = AxisIndex; + AxisIndex2 = AxisIndex; + } + + for (I = AxisIndex1; I <= AxisIndex2; I++) + { + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMinValue += Offset; + sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].NumbersMaxValue += Offset; + } + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_Redraw( + GuiConst_INT8U GraphIndex) +{ + GuiConst_INT16S I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_SetClipping(GraphIndex); +#endif + + GuiLib_Graph_DrawAxes(GraphIndex); + + for (I = sgl.GraphAry[GraphIndex].GraphDataSetCnt - 1; I >= 0; I--) + GuiLib_Graph_DrawDataSet(GraphIndex, I); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_ResetClipping(); +#endif + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_DrawAxes( + GuiConst_INT8U GraphIndex) +{ + GuiConst_INT16S I; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_SetClipping(GraphIndex); +#endif + + if (!(sgl.GraphAry[GraphIndex].GraphItem.TextPar[0].BitFlags & + GuiLib_BITFLAG_TRANSPARENT)) + GuiLib_FillBox(sgl.GraphAry[GraphIndex].GraphItem.X1, + sgl.GraphAry[GraphIndex].GraphItem.Y1, + sgl.GraphAry[GraphIndex].GraphItem.X2, + sgl.GraphAry[GraphIndex].GraphItem.Y2, + sgl.GraphAry[GraphIndex].GraphItem.BackColor); + + for (I = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_X] - 1; + I >= 0; I--) + if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_X].Visible) + Graph_DrawXAxis(GraphIndex, I); + + for (I = sgl.GraphAry[GraphIndex].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] - 1; + I >= 0; I--) + if (sgl.GraphAry[GraphIndex].GraphAxes[I][GuiLib_GRAPHAXIS_Y].Visible) + Graph_DrawYAxis(GraphIndex, I); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_ResetClipping(); +#endif + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_DrawDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex) +{ + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + if (!sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible) + return (0); + if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize == 0) + return (0); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_SetClipping(GraphIndex); +#endif + + Graph_DrawDataSet(GraphIndex, DataSetIndex); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_ResetClipping(); +#endif + + return (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Graph_DrawDataPoint( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT16U DataIndex) +{ + GuiConst_INT16S Y; + GuiConst_INT16S DX, DY; + GuiConst_INT16S LastDX, LastDY; + GuiConst_INT32S TX, TY; + + if ((GraphIndex >= GuiConst_GRAPH_MAX) || + (sgl.GraphAry[GraphIndex].InUse != GuiLib_GRAPH_STRUCTURE_USED)) + return (0); + if ((DataSetIndex >= GuiConst_GRAPH_DATASETS_MAX) || + (DataSetIndex >= sgl.GraphAry[GraphIndex].GraphDataSetCnt)) + return (0); + if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataSize == 0) + return (0); + if (!sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Visible) + return (0); + if (DataIndex >= sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount) + return (0); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_SetClipping(GraphIndex); +#endif + + Graph_CalcScaleX(GraphIndex, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX); + Graph_CalcScaleY(GraphIndex, + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY); + + TX = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].X; + TY = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].Y; + DX = sgl.GraphAry[GraphIndex].OrigoX + ((TX - + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX] + [GuiLib_GRAPHAXIS_X].NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX] + [GuiLib_GRAPHAXIS_X].Scale) / 10000; + DY = sgl.GraphAry[GraphIndex].OrigoY - ((TY - + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY] + [GuiLib_GRAPHAXIS_Y].NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY] + [GuiLib_GRAPHAXIS_Y].Scale) / 10000; + if (sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].Representation == + GuiLib_GRAPH_DATATYPE_LINE) + { + if (DataIndex == 0) + DataIndex = sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataCount - 1; + else + DataIndex--; + + TX = + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].X; + TY = + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].DataPtr[DataIndex].Y; + LastDX = sgl.GraphAry[GraphIndex].OrigoX + ((TX - + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX] + [GuiLib_GRAPHAXIS_X].NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexX] + [GuiLib_GRAPHAXIS_X].Scale) / 10000; + LastDY = sgl.GraphAry[GraphIndex].OrigoY - ((TY - + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY] + [GuiLib_GRAPHAXIS_Y].NumbersMinValue) * + sgl.GraphAry[GraphIndex].GraphAxes[ + sgl.GraphAry[GraphIndex].GraphDataSets[DataSetIndex].AxisIndexY] + [GuiLib_GRAPHAXIS_Y].Scale) / 10000; + } + else + { + LastDX = DX; + LastDY = DY; + } + + Graph_DrawDataPoint( + GraphIndex, + DataSetIndex, + DataIndex, + DX, DY, + LastDX, LastDY); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + Graph_ResetClipping(); +#endif + + return (1); +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#endif // GuiConst_ITEM_GRAPH_INUSE + +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +static GuiConst_INT16S IndexOfGraphicsLayer( + GuiConst_INT16S GraphicsLayerIndex) +{ + GuiConst_INT16S I; + + if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_BASE) + return(GuiLib_GRAPHICS_LAYER_BASE); + else if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_PREVIOUS) + { + if (sgl.GraphicsLayerLifoCnt <= 1) + return(GuiLib_GRAPHICS_LAYER_BASE); + else + return(sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 2]); + } + else if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_CURRENT) + { + if (sgl.GraphicsLayerLifoCnt > 0) + return(sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]); + else + return(GuiLib_GRAPHICS_LAYER_BASE); + } + else if (GraphicsLayerIndex < 0) + return(GuiLib_GRAPHICS_LAYER_BASE); + else if (sgl.GraphicsLayerLifoCnt <= 1) + return(GuiLib_GRAPHICS_LAYER_BASE); + for (I = 0; I < sgl.GraphicsLayerLifoCnt; I++) + if (sgl.GraphicsLayerLifo[I] == GraphicsLayerIndex) + return(GraphicsLayerIndex); + return(GuiLib_GRAPHICS_LAYER_BASE); +} + +//------------------------------------------------------------------------------ +static GuiConst_INT8U GraphicsLayer_Push( + GuiConst_INT8U GraphicsLayerIndex) +{ + GuiConst_INT16S I; + + if (GraphicsLayerIndex >= GuiConst_GRAPHICS_LAYER_MAX) + return(0); + if (sgl.GraphicsLayerList[GraphicsLayerIndex].InUse != GuiLib_GRAPHICS_LAYER_USED) + return(0); + if (sgl.GraphicsLayerLifoCnt == GuiConst_GRAPHICS_LAYER_MAX) + return(0); + for (I = 0; I < sgl.GraphicsLayerLifoCnt; I++) + if (sgl.GraphicsLayerLifo[I] == GraphicsLayerIndex) + return(0); + + sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt] = GraphicsLayerIndex; + sgl.GraphicsLayerLifoCnt++; + sgl.GraphicsLayerList[GraphicsLayerIndex].BaseAddress = + &sgl.LayerBuf[(GuiConst_INT32U)ReadWord( + GuiStruct_GraphicsLayerOfs[GraphicsLayerIndex])]; + + sgl.CurLayerBufPtr = sgl.GraphicsLayerList[GraphicsLayerIndex].BaseAddress; + sgl.CurLayerLineSize = sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize; + sgl.CurLayerWidth = sgl.GraphicsLayerList[GraphicsLayerIndex].Width; + sgl.CurLayerHeight = sgl.GraphicsLayerList[GraphicsLayerIndex].Height; + sgl.CurLayerBytes = + sgl.GraphicsLayerList[GraphicsLayerIndex].Height * + sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize; + sgl.BaseLayerDrawing = 0; + + return(1); +} + +//------------------------------------------------------------------------------ +static GuiConst_INT8U GraphicsLayer_Pop( + GuiConst_INT16S GraphicsLayerIndex) +{ + GuiConst_INT16S I; + + if (GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_BASE) + sgl.GraphicsLayerLifoCnt = 0; + else if ((GraphicsLayerIndex == GuiLib_GRAPHICS_LAYER_PREVIOUS) && + (sgl.GraphicsLayerLifoCnt > 0)) + { + sgl.GraphicsLayerLifoCnt--; + GraphicsLayerIndex = sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]; + } + else if (GraphicsLayerIndex < 0) + return(0); + else if (sgl.GraphicsLayerLifoCnt <= 1) + return(0); + else + { + for (I = sgl.GraphicsLayerLifoCnt - 2; I >= 0; I--) + if (sgl.GraphicsLayerLifo[I] == GraphicsLayerIndex) + { + sgl.GraphicsLayerLifoCnt = I + 1; + break; + } + if (I == -1) + return(0); + } + + if (sgl.GraphicsLayerLifoCnt == 0) + ResetLayerBufPtr(); + else + { + sgl.CurLayerBufPtr = sgl.GraphicsLayerList[GraphicsLayerIndex].BaseAddress; + sgl.CurLayerLineSize = sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize; + sgl.CurLayerWidth = sgl.GraphicsLayerList[GraphicsLayerIndex].Width; + sgl.CurLayerHeight = sgl.GraphicsLayerList[GraphicsLayerIndex].Height; + sgl.CurLayerBytes = + sgl.GraphicsLayerList[GraphicsLayerIndex].Height * + sgl.GraphicsLayerList[GraphicsLayerIndex].LineSize; + sgl.BaseLayerDrawing = 0; + } + + return(1); +} + +//------------------------------------------------------------------------------ +static void GraphicsLayer_Copy( + GuiConst_INT8U *DestAddress, + GuiConst_INT16U DestLineSize, + GuiConst_INT16S DestX, + GuiConst_INT16S DestY, + GuiConst_INT8U *SourceAddress, + GuiConst_INT16U SourceLineSize, + GuiConst_INT16S SourceX, + GuiConst_INT16S SourceY, + GuiConst_INT16U Width, + GuiConst_INT16U Height) +{ + GuiConst_INT16S LineSize; + + SourceAddress += + SourceY * SourceLineSize + GuiConst_PIXEL_BYTE_SIZE * SourceX; + DestAddress += DestY * DestLineSize + GuiConst_PIXEL_BYTE_SIZE * DestX; + LineSize = GuiConst_PIXEL_BYTE_SIZE * Width; + while (Height > 0) + { + memcpy(DestAddress, SourceAddress, LineSize); + SourceAddress += SourceLineSize; + DestAddress += DestLineSize; + Height--; + } +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_GraphicsFilter_Init( + GuiConst_INT8U GraphicsFilterIndex, + void (*FilterFuncPtr) + (GuiConst_INT8U *DestAddress, + GuiConst_INT16U DestLineSize, + GuiConst_INT8U *SourceAddress, + GuiConst_INT16U SourceLineSize, + GuiConst_INT16U Width, + GuiConst_INT16U Height, + GuiConst_INT32S FilterPars[10])) +{ + if (GraphicsFilterIndex >= GuiConst_GRAPHICS_FILTER_MAX) + return (0); + + sgl.GraphicsFilterList[GraphicsFilterIndex].GraphicsFilterFunc = FilterFuncPtr; + + return (1); +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +#endif // GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + +#ifdef GuiConst_TEXTBOX_FIELDS_ON +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +GuiConst_INT16S *TextBox_Scroll_GetPosRec(GuiConst_INT8U TextBoxIndex) +{ + GuiConst_INT16S I; + GuiConst_INT16S *result = NULL; + + for (I=0;I<GuiConst_TEXTBOX_FIELDS_MAX;I++) + { + if (sgl.TextBoxScrollPositions[I].index == TextBoxIndex) + { + result = &sgl.TextBoxScrollPositions[I].pos; + break; + } + } + + return result; +} +//------------------------------------------------------------------------------ +static GuiConst_INT16S TextBox_Scroll_CalcEndPos( + GuiLib_ItemRec PrefixLocate *TextBoxItem, + GuiConst_INT8U PerLine) +{ + GuiConst_INT16S H; + + H = TextBoxItem->Y2 - + TextBoxItem->Y1 + 1; + if (PerLine) + return (TextBoxItem->CompPars.CompTextBox.LineDist * + (TextBoxItem->CompPars.CompTextBox.Lines - + (H / TextBoxItem->CompPars.CompTextBox.LineDist))); + else + return (TextBoxItem->CompPars.CompTextBox.Lines * + TextBoxItem->CompPars.CompTextBox.LineDist - H); +} +#endif // GuiConst_TEXTBOX_FIELDS_ON + +//------------------------------------------------------------------------------ +static GuiConst_INT8U TextBox_Scroll_To( + GuiConst_INT8U TextBoxIndex, + GuiConst_INT16S NewPos, + GuiConst_INT8U PerLine, + GuiConst_INT8U AbsoluteMove) +{ +#ifdef GuiConst_TEXTBOX_FIELDS_ON + GuiLib_ItemRec PrefixLocate *TextBoxItem; + GuiConst_INT16S TextBox; + GuiConst_INT16S PrefixLocate *ScrollPos; + + TextBox = AutoRedraw_GetTextBox(TextBoxIndex, -1); + + if (TextBox == -1) + return (0); + + TextBoxItem = AutoRedraw_GetItem(TextBox); + + if (TextBoxItem == NULL) + return (0); + else + { + ScrollPos = TextBox_Scroll_GetPosRec(TextBoxIndex); + + if (ScrollPos == NULL) + return (0); + + if (PerLine) + NewPos *= TextBoxItem->CompPars.CompTextBox.LineDist; + + switch (AbsoluteMove) + { + case 0: + *ScrollPos += NewPos; + break; + + case 1: + *ScrollPos = NewPos; + break; + + case 2: + *ScrollPos = TextBox_Scroll_CalcEndPos(TextBoxItem, PerLine); + break; + } + + TextBoxItem->CompPars.CompTextBox.ScrollPos = *ScrollPos; + + memcpy(&sgl.CurItem, TextBoxItem, sizeof(GuiLib_ItemRec)); + + GuiDisplay_Lock(); + + sgl.DisplayLevel = 0; + sgl.SwapColors = 0; + DrawItem(GuiLib_COL_INVERT_OFF); + + GuiDisplay_Unlock(); + return (1); + } +#else + gl.Dummy1_8U = TextBoxIndex; // To avoid compiler warning + gl.Dummy1_16S = NewPos; // To avoid compiler warning + gl.Dummy2_8U = PerLine; // To avoid compiler warning + gl.Dummy3_8U = AbsoluteMove; // To avoid compiler warning + return (0); +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Up( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, -1, 1, 0)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Down( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, 1, 1, 0)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Home( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, 0, 1, 1)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_End( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, 0, 1, 2)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_To_Line( + GuiConst_INT8U TextBoxIndex, + GuiConst_INT16S NewLine) +{ + return (TextBox_Scroll_To(TextBoxIndex, NewLine, 1, 1)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Up_Pixel( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, -1, 0, 0)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Down_Pixel( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, 1, 0, 0)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Home_Pixel( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, 0, 0, 1)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_End_Pixel( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_To(TextBoxIndex, 0, 0, 2)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_To_PixelLine( + GuiConst_INT8U TextBoxIndex, + GuiConst_INT16S NewPixelLine) +{ + return (TextBox_Scroll_To(TextBoxIndex, NewPixelLine, 0, 1)); +} + +//------------------------------------------------------------------------------ +static GuiConst_INT8U TextBox_Scroll_Get_Pos( + GuiConst_INT8U TextBoxIndex, + GuiConst_INT8U PerLine) +{ +#ifdef GuiConst_TEXTBOX_FIELDS_ON + GuiConst_INT16S P; + GuiLib_ItemRec PrefixLocate*TextBoxItem; + GuiConst_INT16S TextBox; + GuiConst_INT16S PrefixLocate *ScrollPos; + + TextBox = AutoRedraw_GetTextBox(TextBoxIndex, -1); + + if (TextBox == -1) + return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX); + + TextBoxItem = AutoRedraw_GetItem(TextBox); + + if (TextBoxItem == NULL) + return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX); + + ScrollPos = TextBox_Scroll_GetPosRec(TextBoxIndex); + + if (ScrollPos == NULL) + return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX); + + P = TextBox_Scroll_CalcEndPos(TextBoxItem, PerLine); + if (*ScrollPos == 0) + return (GuiLib_TEXTBOX_SCROLL_AT_HOME); + else if (*ScrollPos == P) + return (GuiLib_TEXTBOX_SCROLL_AT_END); + else if (*ScrollPos < 0) + return (GuiLib_TEXTBOX_SCROLL_ABOVE_HOME); + else if (*ScrollPos > P) + return (GuiLib_TEXTBOX_SCROLL_BELOW_END); + else + return (GuiLib_TEXTBOX_SCROLL_INSIDE_BLOCK); + +#else + gl.Dummy1_8U = TextBoxIndex; // To avoid compiler warning + gl.Dummy2_8U = PerLine; // To avoid compiler warning + return (GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX); +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Get_Pos( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_Get_Pos(TextBoxIndex, 1)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_Get_Pos_Pixel( + GuiConst_INT8U TextBoxIndex) +{ + return (TextBox_Scroll_Get_Pos(TextBoxIndex, 0)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_TextBox_Scroll_FitsInside( + GuiConst_INT8U TextBoxIndex) +{ +#ifdef GuiConst_TEXTBOX_FIELDS_ON + GuiLib_ItemRec PrefixLocate *TextBoxItem; + GuiConst_INT16S TextBox; + GuiConst_INT16S PrefixLocate *ScrollPos; + + TextBox = AutoRedraw_GetTextBox(TextBoxIndex, -1); + + if (TextBox == -1) + return (0); + + TextBoxItem = AutoRedraw_GetItem(TextBox); + + if (TextBoxItem == NULL) + return (0); + + return (TextBox_Scroll_CalcEndPos(TextBoxItem, 0) < 0); +#else + gl.Dummy1_8U = TextBoxIndex; // To avoid compiler warning + return (0); +#endif +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_SetButtonDisabledColor(GuiConst_INTCOLOR PixelColor) +{ +#ifdef GuiConst_ITEM_BUTTON_INUSE + sgl.ButtonColorOverride = GuiLib_TRUE; + sgl.DisabledButtonColor = PixelColor; +#endif + + return PixelColor; +} +//------------------------------------------------------------------------------ +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiDisplay.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiDisplay.c Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,742 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2014 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* easyGUI display driver unit */ +/* v6.0.23.002 */ +/* */ +/* ************************************************************************ */ + +#include "GuiConst.h" +#include "GuiDisplay.h" +#include "GuiLib.h" +#include <stdlib.h> + +#define WANT_DOUBLE_BUFFERING // Also in GuiGraph16.h, GuiLib.c - *** all three must match *** + +#define USE_WAIT_MS +#ifdef USE_WAIT_MS +extern void EasyGUIWaitMs(GuiConst_INT32U msec); // in main.cpp +#endif + +extern void SetupQSPIBitmapArray(int stageNumber); // In main.cpp + +// Make FRAME_ADDRESS able to be set at runtime, not hardcoded +static unsigned long frameAddress = 0L; +// Global function (actually called from the main function, in main.cpp) +// to set the frame address at startup +void GuiDisplay_SetFrameAddress(void *newFrameAddress) +{ + // C/C++ is not happy copying a pointer value direct to an unsigned long + union { + void *ptrValue; + unsigned long ulValue; + } frameAddressUnion; + + frameAddressUnion.ptrValue = newFrameAddress; + + frameAddress = frameAddressUnion.ulValue; +} + +// Select LCD controller type by removing double slashes +// +// Many of the drivers listed here supports more than one display controller. +// To find your driver simply make a text search in this file. Omit eventual +// letters after the display controller type number. Example: For an NJU6450A +// display controller make a search for "NJU6450" - make sure it is a plain +// text search, not a word search. +// +// If your display controller is not found you can contact support at +// sales@ibissolutions.com. We will then quickly supply a driver for it. +// +// You only need to use the relevant display driver, all others may be deleted. +// Make a copy of this file before modifying it. +// +// ----------------------------------------------------------------------------- +// #define LCD_CONTROLLER_TYPE_AT32AP7000 +// #define LCD_CONTROLLER_TYPE_AT91RM9200_ST7565 +// #define LCD_CONTROLLER_TYPE_AT91SAM9263 +// #define LCD_CONTROLLER_TYPE_BVGP +// #define LCD_CONTROLLER_TYPE_D51E5TA7601 +// #define LCD_CONTROLLER_TYPE_F5529 +// #define LCD_CONTROLLER_TYPE_FLEVIPER +// #define LCD_CONTROLLER_TYPE_FSA506 +// #define LCD_CONTROLLER_TYPE_H8S2378 +// #define LCD_CONTROLLER_TYPE_HD61202_2H +// #define LCD_CONTROLLER_TYPE_HD61202_4H +// #define LCD_CONTROLLER_TYPE_HD61202_2H2V +// #define LCD_CONTROLLER_TYPE_HX8238_AT32AP7000 +// #define LCD_CONTROLLER_TYPE_HX8238_TMP92CH21 +// #define LCD_CONTROLLER_TYPE_HX8312 +// #define LCD_CONTROLLER_TYPE_HX8345 +// #define LCD_CONTROLLER_TYPE_HX8346 +// #define LCD_CONTROLLER_TYPE_HX8347 +// #define LCD_CONTROLLER_TYPE_HX8347G +// #define LCD_CONTROLLER_TYPE_HX8352A +// #define LCD_CONTROLLER_TYPE_ILI9341 +// #define LCD_CONTROLLER_TYPE_K70 +// #define LCD_CONTROLLER_TYPE_LC7981 +// #define LCD_CONTROLLER_TYPE_LS027 +// #define LCD_CONTROLLER_TYPE_LS044 +// #define LCD_CONTROLLER_TYPE_LH155BA +// #define LCD_CONTROLLER_TYPE_LH75401 +// #define LCD_CONTROLLER_TYPE_LH7A400 +// #define LCD_CONTROLLER_TYPE_LPC1788 +// #define LCD_CONTROLLER_TYPE_LPC1850 +// #define LCD_CONTROLLER_TYPE_LPC2478 +// #define LCD_CONTROLLER_TYPE_LPC3230 +#define LCD_CONTROLLER_TYPE_LPC408X +// #define LCD_CONTROLLER_TYPE_MPC5606S +// #define LCD_CONTROLLER_TYPE_MX257 +// #define LCD_CONTROLLER_TYPE_NJU6450A +// #define LCD_CONTROLLER_TYPE_NT39016D +// #define LCD_CONTROLLER_TYPE_NT75451 +// #define LCD_CONTROLLER_TYPE_OTM2201A +// #define LCD_CONTROLLER_TYPE_PCF8548 +// #define LCD_CONTROLLER_TYPE_PCF8813 +// #define LCD_CONTROLLER_TYPE_PIC24FJ256 +// #define LCD_CONTROLLER_TYPE_PXA320 +// #define LCD_CONTROLLER_TYPE_R61509 +// #define LCD_CONTROLLER_TYPE_R61526 +// #define LCD_CONTROLLER_TYPE_R61580 +// #define LCD_CONTROLLER_TYPE_RA8822 +// #define LCD_CONTROLLER_TYPE_RA8875 +// #define LCD_CONTROLLER_TYPE_S1D13505 +// #define LCD_CONTROLLER_TYPE_S1D13506 +// #define LCD_CONTROLLER_TYPE_S1D13700 +// #define LCD_CONTROLLER_TYPE_S1D13705 +// #define LCD_CONTROLLER_TYPE_S1D13706 +// #define LCD_CONTROLLER_TYPE_S1D13715 +// #define LCD_CONTROLLER_TYPE_S1D13743 +// #define LCD_CONTROLLER_TYPE_S1D13748 +// #define LCD_CONTROLLER_TYPE_S1D13781 +// #define LCD_CONTROLLER_TYPE_S1D13781_DIRECT +// #define LCD_CONTROLLER_TYPE_S1D13A04 +// #define LCD_CONTROLLER_TYPE_S1D13A05 +// #define LCD_CONTROLLER_TYPE_S1D15721 +// #define LCD_CONTROLLER_TYPE_S6B0741 +// #define LCD_CONTROLLER_TYPE_S6B33BL +// #define LCD_CONTROLLER_TYPE_S6D0139 +// #define LCD_CONTROLLER_TYPE_S6E63D6 +// #define LCD_CONTROLLER_TYPE_SBN1661_2H_SBN0080 +// #define LCD_CONTROLLER_TYPE_SED1335 +// #define LCD_CONTROLLER_TYPE_SEPS525 +// #define LCD_CONTROLLER_TYPE_SH1101A +// #define LCD_CONTROLLER_TYPE_SH1123 +// #define LCD_CONTROLLER_TYPE_SPFD5408 +// #define LCD_CONTROLLER_TYPE_SPLC502 +// #define LCD_CONTROLLER_TYPE_SSD0323 +// #define LCD_CONTROLLER_TYPE_SSD1289 +// #define LCD_CONTROLLER_TYPE_SSD1305 +// #define LCD_CONTROLLER_TYPE_SSD1322 +// #define LCD_CONTROLLER_TYPE_SSD1339 +// #define LCD_CONTROLLER_TYPE_SSD1815 +// #define LCD_CONTROLLER_TYPE_SSD1815_2H +// #define LCD_CONTROLLER_TYPE_SSD1848 +// #define LCD_CONTROLLER_TYPE_SSD1858 +// #define LCD_CONTROLLER_TYPE_SSD1926 +// #define LCD_CONTROLLER_TYPE_SSD1963 +// #define LCD_CONTROLLER_TYPE_SSD2119 +// #define LCD_CONTROLLER_TYPE_ST7529 +// #define LCD_CONTROLLER_TYPE_ST7541 +// #define LCD_CONTROLLER_TYPE_ST7561 +// #define LCD_CONTROLLER_TYPE_ST7565 +// #define LCD_CONTROLLER_TYPE_ST7586 +// #define LCD_CONTROLLER_TYPE_ST7637 +// #define LCD_CONTROLLER_TYPE_ST7715 +// #define LCD_CONTROLLER_TYPE_ST7920 +// #define LCD_CONTROLLER_TYPE_STM32F429 +// #define LCD_CONTROLLER_TYPE_T6963 +// #define LCD_CONTROLLER_TYPE_TLS8201 +// #define LCD_CONTROLLER_TYPE_TMPA900 +// #define LCD_CONTROLLER_TYPE_TS7390 +// #define LCD_CONTROLLER_TYPE_UC1608 +// #define LCD_CONTROLLER_TYPE_UC1610 +// #define LCD_CONTROLLER_TYPE_UC1611 +// #define LCD_CONTROLLER_TYPE_UC1617 +// #define LCD_CONTROLLER_TYPE_UC1698 +// #define LCD_CONTROLLER_TYPE_UPD161607 +// #define LCD_CONTROLLER_TYPE_UC1701 + +// ============================================================================ +// +// COMMON PART - NOT DEPENDENT ON DISPLAY CONTROLLER TYPE +// +// Do not delete this part of the GuiDisplay.c file. +// +// If your operating system uses pre-emptive execution, i.e. it interrupts tasks +// at random instances, and transfers control to other tasks, display writing +// must be protected from this, by writing code for the two protection +// functions: +// +// o GuiDisplay_Lock Prevent the OS from switching tasks +// o GuiDisplay_Unlock Open up normal task execution again +// +// If your operating system does not use pre-emptive execution, i.e. if you +// must specifically release control in one tasks in order for other tasks to +// be serviced, or if you don't employ an operating system at all, you can just +// leave the two protection functions empty. Failing to write proper code for +// the protection functions will result in a system with unpredictable +// behavior. +// +// ============================================================================ + +void GuiDisplay_Lock (void) +{ +} + +void GuiDisplay_Unlock (void) +{ +} + +// ============================================================================ +// +// DISPLAY DRIVER PART +// +// You only need to use the relevant display driver, all others may be deleted. +// Modify the driver so that it fits your specific hardware. +// Make a copy of this file before modifying it. +// +// ============================================================================ + +#ifdef LCD_CONTROLLER_TYPE_LPC408X + +// ============================================================================ +// +// LPC408x MICROCONTROLLER WITH BUILT-IN DISPLAY CONTROLLER +// +// This driver uses internal LCD controller of LPC408x microcontroller. +// LCD driver of LPC408x in 24 bit RGB parallel interface for TFT type +// display or 4bit parallel interface for STN type display. +// Graphic modes up to 1024x768 pixels. +// +// Compatible display controllers: +// None +// +// easyGUI setup should be (Parameters window, Display controller tab page): +// Horizontal bytes +// Bit 0 at right +// Number of color planes: 1 +// Color mode: Grayscale, palette or RGB +// Color depth: 1 bit (B/W), 8 bits, 16 bits, 24 bits +// Display orientation: Normal, Upside down, 90 degrees left, 90 degrees right +// Display words with reversed bytes: Off +// Number of display controllers, horizontally: 1 +// Number of display controllers, vertically: 1 +// +// Port addresses (Px.x) must be altered to correspond to your microcontroller +// hardware and compiler syntax. +// +// ============================================================================ + +// Hardware connection for TFT display +// LPC408x generic TFT display +// LCD_FP - VSYNC +// LCD_LP - HSYNC +// LCD_LE - Line End +// LCD_DCLK - Pixel CLK +// LCD_ENAB_M - DATA_ENABLE +// LCD_VD[0-7] - R0-R7 (for 16bit RGB mode connect R0,R1,R2 to 0) +// LCD_VD[8-15] - G0-G7 (for 16bit RGB mode connect G0,G1 to 0) +// LCD_VD[16-23] - B0-B7 (for 16bit RGB mode connect B0,B1,B2 to 0) + +// Hardware connection for STN display +// LCD_PWR - DISP +// LCD_DCLK - CL2 +// LCD_FP - Frame Pulse +// LCD_LP - Line Sync Pulse +// LCD_LE - Line End +// LCD_VD[3:0] - UD[3:0] + +// Power Control registers +#define PCONP (*(volatile unsigned long *)0x400FC0C4) +// LCD controller power control bit +#define PCLCD 0 + +// Pin setup registers (IOCON) +#define IOCON_P0_4 (*(volatile unsigned long *)0x4002C010) +#define IOCON_P0_5 (*(volatile unsigned long *)0x4002C014) +#define IOCON_P0_6 (*(volatile unsigned long *)0x4002C018) +#define IOCON_P0_7 (*(volatile unsigned long *)0x4002C01C) +#define IOCON_P0_8 (*(volatile unsigned long *)0x4002C020) +#define IOCON_P0_9 (*(volatile unsigned long *)0x4002C024) +#define IOCON_P1_20 (*(volatile unsigned long *)0x4002C0D0) +#define IOCON_P1_21 (*(volatile unsigned long *)0x4002C0D4) +#define IOCON_P1_22 (*(volatile unsigned long *)0x4002C0D8) +#define IOCON_P1_23 (*(volatile unsigned long *)0x4002C0DC) +#define IOCON_P1_24 (*(volatile unsigned long *)0x4002C0E0) +#define IOCON_P1_25 (*(volatile unsigned long *)0x4002C0E4) +#define IOCON_P1_26 (*(volatile unsigned long *)0x4002C0E8) +#define IOCON_P1_27 (*(volatile unsigned long *)0x4002C0EC) +#define IOCON_P1_28 (*(volatile unsigned long *)0x4002C0F0) +#define IOCON_P1_29 (*(volatile unsigned long *)0x4002C0F4) +#define IOCON_P2_0 (*(volatile unsigned long *)0x4002C100) +#define IOCON_P2_1 (*(volatile unsigned long *)0x4002C104) +#define IOCON_P2_2 (*(volatile unsigned long *)0x4002C108) +#define IOCON_P2_3 (*(volatile unsigned long *)0x4002C10C) +#define IOCON_P2_4 (*(volatile unsigned long *)0x4002C110) +#define IOCON_P2_5 (*(volatile unsigned long *)0x4002C114) +#define IOCON_P2_6 (*(volatile unsigned long *)0x4002C118) +#define IOCON_P2_7 (*(volatile unsigned long *)0x4002C11C) +#define IOCON_P2_8 (*(volatile unsigned long *)0x4002C120) +#define IOCON_P2_9 (*(volatile unsigned long *)0x4002C124) +#define IOCON_P2_11 (*(volatile unsigned long *)0x4002C12C) +#define IOCON_P2_12 (*(volatile unsigned long *)0x4002C130) +#define IOCON_P2_13 (*(volatile unsigned long *)0x4002C134) +#define IOCON_P4_28 (*(volatile unsigned long *)0x4002C270) +#define IOCON_P4_29 (*(volatile unsigned long *)0x4002C274) + +// LCD Port Enable +#define LCDPE 1 + +// LCD controller registers +// LCD configuration register +#define LCD_CFG (*(volatile unsigned long *)0x400FC1B8) + +// LCD Controller Base Address +#define LCD_BASE 0x20088000 + +// Horizontal Timing Control +#define LCD_TIMH (*(volatile unsigned long *)(LCD_BASE+0x000)) +// Vertical Timing Control +#define LCD_TIMV (*(volatile unsigned long *)(LCD_BASE+0x004)) +// Clock and Signal Polarity Control register +#define LCD_POL (*(volatile unsigned long *)(LCD_BASE+0x008)) +// Line End Control register +#define LCD_LE (*(volatile unsigned long *)(LCD_BASE+0x00C)) +// Upper Panel Frame Base Address register +#define LCD_UPBASE (*(volatile unsigned long *)(LCD_BASE+0x010)) +// Lower Panel Frame Base Address register +#define LCD_LPBASE (*(volatile unsigned long *)(LCD_BASE+0x014)) +// LCD Control register +#define LCD_CTRL (*(volatile unsigned long *)(LCD_BASE+0x018)) +// Interrupt Mask register +#define LCD_INTMSK (*(volatile unsigned long *)(LCD_BASE+0x01C)) +// Raw Interrupt Status register +#define LCD_INTRAW (*(volatile unsigned long *)(LCD_BASE+0x020)) +// Masked Interrupt Status register +#define LCD_INTSTAT (*(volatile unsigned long *)(LCD_BASE+0x024)) +// Interrupt Clear register +#define LCD_INTCLR (*(volatile unsigned long *)(LCD_BASE+0x028)) +// Upper Panel Current Address Value register +#define LCD_UPCURR (*(volatile unsigned long *)(LCD_BASE+0x02C)) +// Lower Panel Current Address Value register +#define LCD_LPCURR (*(volatile unsigned long *)(LCD_BASE+0x030)) +// 256x16-bit Color Palette registers +#define LCD_PAL (*(volatile unsigned long *)(LCD_BASE+0x200)) +// Cursor Image registers +#define CRSR_IMG (*(volatile unsigned long *)(LCD_BASE+0x800)) +// Cursor Control register +#define CRSR_CTRL (*(volatile unsigned long *)(LCD_BASE+0xC00)) + +// LCD controller enable bit +#define LCDEN 0 +// LCD controller power bit +#define LCDPWR 11 +// Bypass pixel clock divider - for TFT display must be 1 +#ifdef GuiConst_COLOR_DEPTH_1 +#define BCD 0 +#else +#define BCD 1 +#endif +// Adjust these values according your display +// PLL clock prescaler selection - only odd numbers 0,1,3,5,..255 +// 0 - PLL/1, 1 - PLL/2, 3 - PLL/4 +#define PLLDIV 0 +// LCD panel clock prescaler selection, range 0 - 31 +// LCD freq = MCU freq /(CLKDIV+1) +#define CLKDIV 7 +// Horizontal back porch in pixels, range 3 - 256 +#ifdef GuiConst_COLOR_DEPTH_1 +#define HBP 5 +#else +#define HBP 40 +#endif +// Horizontal front porch in pixels, range 3 - 256 +#ifdef GuiConst_COLOR_DEPTH_1 +#define HFP 5 +#else +#define HFP 79 +#endif +// Horizontal synchronization pulse width in pixels, range 3 - 256 +#ifdef GuiConst_COLOR_DEPTH_1 +#define HSW 3 +#else +#define HSW 48 +#endif +// Pixels-per-line in pixels, must be multiple of 16 +#define PPL GuiConst_DISPLAY_WIDTH_HW +// Vertical back porch in lines, range 1 - 256 +#ifdef GuiConst_COLOR_DEPTH_1 +#define VBP 2 +#else +#define VBP 29 +#endif +// Vertical front porch in lines, range 1 - 256 +#ifdef GuiConst_COLOR_DEPTH_1 +#define VFP 2 +#else +#define VFP 40 +#endif +// Vertical synchronization pulse width in lines, range 1 - 31 +#ifdef GuiConst_COLOR_DEPTH_1 +#define VSW 1 +#else +#define VSW 3 +#endif +// Lines per panel +#define LPP GuiConst_BYTE_LINES +// Clocks per line +#ifdef GuiConst_COLOR_DEPTH_1 +#define CPL GuiConst_DISPLAY_WIDTH_HW/4 +#else +#define CPL GuiConst_DISPLAY_WIDTH_HW +#endif +// Invert output enable +// 0 = LCDENAB output pin is active HIGH in TFT mode +// 1 = LCDENAB output pin is active LOW in TFT mode +#define IOE 0 +// Invert panel clock +// 0 = Data is driven on the LCD data lines on the rising edge of LCDDCLK +// 1 = Data is driven on the LCD data lines on the falling edge of LCDDCLK +#define IPC 0 +// Invert horizontal synchronization +// 0 = LCDLP pin is active HIGH and inactive LOW +// 1 = LCDLP pin is active LOW and inactive HIGH +#ifdef GuiConst_COLOR_DEPTH_1 +#define IHS 0 +#else +#define IHS 1 +#endif +// IVS Invert vertical synchronization +// 0 = LCDFP pin is active HIGH and inactive LOW +// 1 = LCDFP pin is active LOW and inactive HIGH +#ifdef GuiConst_COLOR_DEPTH_1 +#define IVS 0 +#else +#define IVS 1 +#endif +// Lower five bits of panel clock divisor +#define PCD_LO 2 +// CLKSEL Clock Select +// 0 = the clock source for the LCD block is CCLK +// 1 = the clock source for the LCD block is LCD_DCLK +#define CLKSEL 0 + +/****************************************************************************/ +/* IMPORTANT!!! */ +/****************************************************************************/ +// Set start address of frame buffer in RAM memory +// 0x4000 0000 - 0x4000 FFFF RAM (64 kB) +// 0x8000 0000 - 0x80FF FFFF Static memory bank 0 (16 MB) +// 0x8100 0000 - 0x81FF FFFF Static memory bank 1 (16 MB) +// 0xA000 0000 - 0xAFFF FFFF Dynamic memory bank 0 (256 MB) +// 0xB000 0000 - 0xBFFF FFFF Dynamic memory bank 1 (256 MB) +//#define FRAME_ADDRESS 0xA0000008 +//#define FRAME_ADDRESS 0xA00017D8 // As of 26 Oct 2016 +#define FRAME_ADDRESS (frameAddress) // Use the static variable set at the top of this file +/****************************************************************************/ + +// Address of pallete registers +#define PALETTE_RAM_ADDR LCD_PAL + +// Delay routine +// This constant must be adjusted according to speed of microcontroller +#define ONE_MS 100 +// Param msec is delay in miliseconds +void millisecond_delay(GuiConst_INT32U msec) +{ +#ifdef USE_WAIT_MS + EasyGUIWaitMs(msec); +#else + GuiConst_INT32U j; + + for (j = 0; j < (ONE_MS * msec) ; j++); +#endif +} + +// Initialises the module and the display +void GuiDisplay_Init (void) +{ +// return; // Test - do we need any display initialisation here? Let the BIOS do it? + // No flickering - but red and blue reversed (again) +// So - can we reinstate some of the code in this function, and get the red and blue +// the correct way round without flickering? +//#define ALLOW_LPC4088_INIT +// Now allowing initialisation of the LCD control register even with ALLOW_LPC4088_INIT not #defined. +// This appears to have eliminated the flickering while keeping the red and blue components +// the correct way round. + + GuiConst_INT32U i; +#ifdef GuiConst_COLOR_DEPTH_24 + GuiConst_INT32U *framePtr; +#else +#ifdef GuiConst_COLOR_DEPTH_16 + GuiConst_INT16U *framePtr; +#else + GuiConst_INT32U PaletteData; + GuiConst_INT8U *framePtr; + GuiConst_INT32U * pDst; +#endif +#endif + +// SetupQSPIBitmapArray(1); + +/**************************************************/ +/* Carefully adjust the IO pins for your system */ +/* Following settings for TFT panel 16/24 bit */ +/**************************************************/ + +/* *** DEBUG *** COMMENT OUT THIS BLOCK OF CODE - WHAT HAPPENS? +// PI SETTING RGB888 RGB565 + IOCON_P1_29 |= 7; // BLUE7 BLUE4 + IOCON_P1_28 |= 7; // BLUE6 BLUE3 + IOCON_P1_27 |= 7; // BLUE5 BLUE2 + IOCON_P1_26 |= 7; // BLUE4 BLUE1 + IOCON_P2_13 |= 7; // BLUE3 BLUE0 + //IOCON_P2_12 |= 7; // BLUE2 - !! Comment out for RGB565 + //IOCON_P0_9 |= 7; // BLUE1 - !! Comment out for RGB565 + //IOCON_P0_8 |= 7; // BLUE0 - !! Comment out for RGB565 + IOCON_P1_25 |= 7; // GREEN7 GREEN5 + IOCON_P1_24 |= 7; // GREEN6 GREEN4 + IOCON_P1_23 |= 7; // GREEN5 GREEN3 + IOCON_P1_22 |= 7; // GREEN4 GREEN2 + IOCON_P1_21 |= 7; // GREEN3 GREEN1 + IOCON_P1_20 |= 7; // GREEN2 GREEN0 + //IOCON_P0_7 |= 7; // GREEN1 - !! Comment out for RGB565 + //IOCON_P0_6 |= 7; // GREEN0 - !! Comment out for RGB565 + IOCON_P2_9 |= 7; // RED7 RED4 + IOCON_P2_8 |= 7; // RED6 RED3 + IOCON_P2_7 |= 7; // RED5 RED2 + IOCON_P2_6 |= 7; // RED4 RED1 + //IOCON_P4_29 |= 7; // RED3 - !! Comment out for RGB565 + IOCON_P2_12 |= 5; // - RED0 !! Comment out for RGB888 !! + //IOCON_P4_28 |= 7; // RED2 - !! Comment out for RGB565 + //IOCON_P0_5 |= 7; // RED1 - !! Comment out for RGB565 + //IOCON_P0_4 |= 7; // RED0 - !! Comment out for RGB565 + IOCON_P2_5 |= 7; // LCD_LP LCD_LP + IOCON_P2_4 |= 7; // LCD_ENAB_M LCD_ENAB_M + IOCON_P2_3 |= 7; // LCD_FP LCD_FP + IOCON_P2_2 |= 7; // LCD_DCLK LCD_DCLK + IOCON_P2_1 |= 7; // LCD_LE LCD_LE + IOCON_P2_0 |= 7; // LCD_PWR LCD_PWR + IOCON_P2_11 |= 7; // LCD_CLKIN LCD_CLKIN +*/ // DEBUG - ANSWER - *** EVERYTHING STILL APPEARS TO WORK *** + +/**************************************************/ + +// SetupQSPIBitmapArray(2); + +#ifdef ALLOW_LPC4088_INIT + // Disable power + LCD_CTRL &= ~(1 << LCDEN); + millisecond_delay(100); + LCD_CTRL &= ~(1 << LCDPWR); + + // ==================================== + // Initialize Clock(PLL),EMC and SDRAM! + // ==================================== + + // Enable LCD controller + PCONP |= 1<<PCLCD; + + // LCD Configuration init pixel clock + LCD_CFG |= (CLKDIV); + + // Horizontal Timing register + LCD_TIMH |= ((HBP-1) << 24)|((HFP-1) << 16)|((HSW-1) << 8)|((PPL/16-1) << 2); + + // Vertical Timing register + LCD_TIMV |= (VBP << 24)|(VFP << 16)|((VSW-1) << 10)|(LPP-1); + + // Clock and Signal Polarity register + LCD_POL |= (BCD << 26)|((CPL-1) << 16)|(IOE << 14)|(IPC << 13)| + (IHS << 12)|(IVS << 11)|(CLKSEL << 5)| PCD_LO; + + LCD_LE = 0; + LCD_INTMSK = 0; + +#endif // ALLOW_LPC4088_INIT +// If we include the initialisation of the LCD control register, +// does this get red and blue the correct way round without flickering? + + // LCD Control register +#ifdef GuiConst_COLOR_DEPTH_24 + // TFT single panel,24bit, normal output + LCD_CTRL = 0x0000002A; +#else +#ifdef GuiConst_COLOR_DEPTH_16 + // TFT single panel,16bit, normal output (BGR) + LCD_CTRL = 0x0000102C; +#else +#ifdef GuiConst_COLOR_DEPTH_8 + // TFT single panel,8bit, normal output + LCD_CTRL = 0x00000026; +#else + // STN single panel, monochrome, 4bit bus, normal output + LCD_CTRL = 0x00000010; +#endif +#endif +#endif + + +#ifdef GuiConst_COLOR_DEPTH_24 + framePtr = (GuiConst_INT32U *)FRAME_ADDRESS; +#else +#ifdef GuiConst_COLOR_DEPTH_16 + framePtr = (GuiConst_INT16U *)FRAME_ADDRESS; +#else + framePtr = (GuiConst_INT8U *)FRAME_ADDRESS; + pDst = (GuiConst_INT32U *)PALETTE_RAM_ADDR; + for (i = 0; i < 128; i++) + { +#ifdef GuiConst_COLOR_DEPTH_1 + PaletteData = 0xFFFF0000; +#else + PaletteData = GuiStruct_Palette[2*i][0]; + PaletteData |= (GuiConst_INT32U)GuiStruct_Palette[2*i][1]<<8; + PaletteData |= (GuiConst_INT32U)GuiStruct_Palette[2*i+1][0]<<16; + PaletteData |= (GuiConst_INT32U)GuiStruct_Palette[2*i+1][1]<<24; +#endif + *pDst++ = PaletteData; + } +#endif +#endif + + // Clear frame buffer by copying the data into frame buffer +#ifdef GuiConst_COLOR_DEPTH_24 + for (i = 0; i < GuiConst_DISPLAY_BYTES/3; i++) + *framePtr++ = 0x00000000; // Color +#else +#ifdef GuiConst_COLOR_DEPTH_16 + for (i = 0; i < GuiConst_DISPLAY_BYTES/2; i++) + *framePtr++ = 0x0000; // Color +#else + for (i = 0; i < GuiConst_DISPLAY_BYTES; i++) + *framePtr++ = 0x00; // Color +#endif +#endif + +// LCD_CFG = 0; + + millisecond_delay(100); + // Power-up sequence + LCD_CTRL |= 1<<LCDEN; + // Apply contrast voltage to LCD panel + // (not controlled or supplied by the LCD controller) + millisecond_delay(100); + LCD_CTRL |= 1<<LCDPWR; + + // Set start address of frame buffer in RAM memory + LCD_LPBASE = FRAME_ADDRESS; + LCD_UPBASE = FRAME_ADDRESS; +} + +#ifdef WANT_DOUBLE_BUFFERING +// *** Need complete GuiDisplay_Refresh *** + +// Refreshes display buffer to display +void GuiDisplay_Refresh (void) +{ + GuiConst_INT32U Pixel, X, Y, LastByte; +#ifdef GuiConst_COLOR_DEPTH_24 + GuiConst_INT32U *framePtr; +#else +#ifdef GuiConst_COLOR_DEPTH_16 + GuiConst_INT16U *framePtr; +#else + // Valid also for monochrome STN display + GuiConst_INT8U *framePtr; +#endif +#endif + + GuiDisplay_Lock (); + + // Walk through all lines + for (Y = 0; Y < GuiConst_BYTE_LINES; Y++) + { + if (GuiLib_DisplayRepaint[Y].ByteEnd >= 0) + // Something to redraw in this line + { +#ifdef GuiConst_COLOR_DEPTH_24 + // Set video ram base address + framePtr = (GuiConst_INT32U *)FRAME_ADDRESS; + // Pointer offset calculation + framePtr += Y * GuiConst_BYTES_PR_LINE/3 + + GuiLib_DisplayRepaint[Y].ByteBegin; + // Set amount of data to be changed + LastByte = GuiConst_BYTES_PR_LINE/3 - 1; +#else +#ifdef GuiConst_COLOR_DEPTH_16 + // Set video ram base address + framePtr = (GuiConst_INT16U *)FRAME_ADDRESS; + // Pointer offset calculation + framePtr += Y * GuiConst_BYTES_PR_LINE/2 + + GuiLib_DisplayRepaint[Y].ByteBegin; + // Set amount of data to be changed + LastByte = GuiConst_BYTES_PR_LINE/2 - 1; +#else + // Valid also for monochrome STN display + // Set video ram base address + framePtr = (GuiConst_INT8U *)FRAME_ADDRESS; + // Pointer offset calculation + framePtr += Y * GuiConst_BYTES_PR_LINE + + GuiLib_DisplayRepaint[Y].ByteBegin; + // Set amount of data to be changed + LastByte = GuiConst_BYTES_PR_LINE - 1; +#endif +#endif + if (GuiLib_DisplayRepaint[Y].ByteEnd < LastByte) + LastByte = GuiLib_DisplayRepaint[Y].ByteEnd; + + // Write data for one line to framebuffer from GuiLib_DisplayBuf +#ifdef GuiConst_COLOR_DEPTH_24 + for (X = GuiLib_DisplayRepaint[Y].ByteBegin * 3; + X <= (LastByte * 3 + 2); + X = X + 3) + { + Pixel = GuiLib_DisplayBuf[Y][X]; + Pixel |= (GuiConst_INT32U)GuiLib_DisplayBuf[Y][X+1]<<8; + Pixel |= (GuiConst_INT32U)GuiLib_DisplayBuf[Y][X+2]<<16; + *framePtr++ = Pixel; + } +#else +#ifdef GuiConst_COLOR_DEPTH_16 + for (X = GuiLib_DisplayRepaint[Y].ByteBegin; X <= LastByte; X++) + { + *framePtr++ = GuiLib_DisplayBuf.Words[Y][X]; + } +#else + // Valid also for monochrome STN display + for (X = GuiLib_DisplayRepaint[Y].ByteBegin; X <= LastByte; X++) + *framePtr++ = GuiLib_DisplayBuf[Y][X]; +#endif +#endif + // Reset repaint parameters + GuiLib_DisplayRepaint[Y].ByteEnd = -1; + } + } + GuiDisplay_Unlock (); +} + +#else // WANT_DOUBLE_BUFFERING + +// We are already writing direct to the display - +// GuiDisplay_Refresh does not need to do anything +// (but other code still expects it to exist) +void GuiDisplay_Refresh (void) +{ +} + +#endif // WANT_DOUBLE_BUFFERING + +#endif // LCD_CONTROLLER_TYPE_LPC408X + +// ============================================================================ +// +// DISPLAY DRIVER PART ENDS +// +// ============================================================================ +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiDisplay.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiDisplay.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,33 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2014 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* easyGUI display driver unit */ +/* v6.0.23.002 */ +/* */ +/* ************************************************************************ */ + +#ifndef __GUIDISPLAY_H +#define __GUIDISPLAY_H + +#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */ +extern "C" { +#endif + +#include "GuiConst.h" +#ifndef GuiConst_CODEVISION_COMPILER +#include "GuiLib.h" +#endif + +extern void GuiDisplay_Lock (void); +extern void GuiDisplay_Unlock (void); +extern void GuiDisplay_Init (void); +extern void GuiDisplay_Refresh (void); + +#ifdef __cplusplus /* If this is a C++ compiler, end C linkage */ +} +#endif + +#endif
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiGraph.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiGraph.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,1750 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* Graphics include library */ +/* v6.0.9.005 */ +/* */ +/* GuiLib.c include file - do NOT reference it in your linker setup */ +/* */ +/* ************************************************************************ */ + +//============================================================================== +#define GuiLib_DEG 10 +#define GuiLib_DEG360 360 * GuiLib_DEG + +#define GuiLib_RAD 4096 +#define GuiLib_RAD_QUARTER_PI 3217 +#define GuiLib_RAD_HALF_PI 6434 +#define GuiLib_RAD_PI 12868 +#define GuiLib_RAD_2_PI 25736 +#define GuiLib_RAD_TO_DEG 573 + +//============================================================================== + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_DegToRad( + GuiConst_INT32S Angle) +{ + return ((GuiLib_RAD * Angle) / GuiLib_RAD_TO_DEG); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_RadToDeg( + GuiConst_INT32S Angle) +{ + return ((GuiLib_RAD_TO_DEG * Angle) / GuiLib_RAD); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_SinRad( + GuiConst_INT32S Angle) +{ + GuiConst_INT32S A, B, X2; + + Angle %= GuiLib_RAD_2_PI; + + if (Angle > GuiLib_RAD_PI) + X2 = GuiLib_RAD_2_PI - Angle; + else + X2 = Angle; + if (X2 > GuiLib_RAD_HALF_PI) + X2 = GuiLib_RAD_PI - X2; + + A = ((((X2 * X2) >> 12) * X2) / 6) >> 12; + B = ((((A * X2) >> 12) * X2) / 20) >> 12; + B = X2 - A + B - ((((B * X2) / 42) * X2) >> 24); + + if (Angle > GuiLib_RAD_PI) + return (-B); + else + return (B); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_SinDeg( + GuiConst_INT32S Angle) +{ + return (GuiLib_SinRad(GuiLib_DegToRad(Angle))); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_CosRad( + GuiConst_INT32S Angle) +{ + GuiConst_INT32S A, B, C, X2; + + Angle %= GuiLib_RAD_2_PI; + + if (Angle > GuiLib_RAD_PI) + Angle = GuiLib_RAD_2_PI - Angle; + if (Angle > GuiLib_RAD_HALF_PI) + X2 = GuiLib_RAD_PI - Angle; + else + X2 = Angle; + + A = (X2 * X2) >> 13; + B = ((((A * X2) >> 12) * X2) / 12) >> 12; + C = (((B * X2) / 30) * X2) >> 24; + C = GuiLib_RAD - A + B - C + (((((C * X2) / 8) * X2) / 7) >> 24); + if (Angle > GuiLib_RAD_HALF_PI) + return (-C); + else + return (C); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32S GuiLib_CosDeg( + GuiConst_INT32S Angle) +{ + return (GuiLib_CosRad(GuiLib_DegToRad(Angle))); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_Sqrt( + GuiConst_INT32U X) +{ + GuiConst_INT32U X1, X2; + + if (X == 0) + return (0); + + X1 = (X / 2) + 1; + X2 = (X1 + (X / X1)) / 2; + while (X2 < X1) + { + X1 = X2; + X2 = (X1 + (X / X1)) / 2; + } + return (X1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_GetRedRgbColor( + GuiConst_INT32U RgbColor) +{ + return (RgbColor & 0x000000FF); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_SetRedRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT8U RedColor) +{ + return ((RgbColor & 0x00FFFF00) | RedColor); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_GetGreenRgbColor( + GuiConst_INT32U RgbColor) +{ + return (GuiConst_INT8U)((RgbColor & 0x0000FF00) >> 8); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_SetGreenRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT8U GreenColor) +{ + return ((RgbColor & 0x00FF00FF) | ((GuiConst_INT32U)GreenColor << 8)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_GetBlueRgbColor( + GuiConst_INT32U RgbColor) +{ + return (GuiConst_INT8U)((RgbColor & 0x00FF0000) >> 16); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_SetBlueRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT8U BlueColor) +{ + return ((RgbColor & 0xFF00FFFF) | ((GuiConst_INT32U)BlueColor << 16)); +} + +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_RgbToPixelColor( + GuiConst_INT32U RgbColor) +{ +#ifdef GuiConst_COLOR_MODE_GRAY + return ((GuiConst_COLOR_MAX * + (GuiConst_INT16U)GuiLib_RgbColorToGrayScale(RgbColor)) / 255); +#else +#ifdef GuiConst_COLOR_MODE_PALETTE + GuiConst_INT16U ColorR, ColorG, ColorB; + GuiConst_INT16U I, I2, byte, shift; + GuiConst_INT16U Rating, NewRating; + GuiConst_INT32U PColor; + + ColorR = RgbColor & 0x000000FF; + ColorG = (RgbColor & 0x0000FF00) >> 8; + ColorB = (RgbColor & 0x00FF0000) >> 16; +#ifndef GuiConst_COLOR_RGB_STANDARD + ColorR = (GuiConst_COLORCODING_R_MAX * ColorR) / 255; + ColorG = (GuiConst_COLORCODING_G_MAX * ColorG) / 255; + ColorB = (GuiConst_COLORCODING_B_MAX * ColorB) / 255; +#endif + Rating = 0xFFFF; + for (I = 0; I < GuiConst_PALETTE_SIZE; I++) + { + PColor = 0; + for (byte=0,shift=0;byte < GuiConst_COLOR_BYTE_SIZE; byte++, shift +=8) + PColor |= ((GuiConst_INT32U)GuiStruct_Palette[I][byte] << shift); + + NewRating = + abs(ColorR - ((PColor & GuiConst_COLORCODING_R_MASK) >> + GuiConst_COLORCODING_R_START)) + + abs(ColorG - ((PColor & GuiConst_COLORCODING_G_MASK) >> + GuiConst_COLORCODING_G_START)) + + abs(ColorB - ((PColor & GuiConst_COLORCODING_B_MASK) >> + GuiConst_COLORCODING_B_START)); + if (NewRating < Rating) + { + Rating = NewRating; + I2 = I; + } + } + return (I2); +#else +#ifdef GuiConst_COLOR_RGB_STANDARD + return (RgbColor); +#else + return ((((GuiConst_COLORCODING_R_MAX * + (RgbColor & 0x000000FF)) / 255) << GuiConst_COLORCODING_R_START) | + (((GuiConst_COLORCODING_G_MAX * + ((RgbColor & 0x0000FF00) >> 8)) / 255) << GuiConst_COLORCODING_G_START) | + (((GuiConst_COLORCODING_B_MAX * + ((RgbColor & 0x00FF0000) >> 16)) / 255) << GuiConst_COLORCODING_B_START)); +#endif +#endif +#endif +} +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_Rgb888ToPixelColor( + GuiConst_INT8U Red, GuiConst_INT8U Green, GuiConst_INT8U Blue) +{ +#ifdef GuiConst_COLOR_MODE_GRAY + return ((GuiConst_COLOR_MAX * + (GuiConst_INT16U)GuiLib_Rgb888ColorToGrayScale(Red, Green, Blue)) / 255); +#else +#ifdef GuiConst_COLOR_MODE_PALETTE + GuiConst_INT16U ColorR, ColorG, ColorB; + GuiConst_INT16U I, I2, byte, shift; + GuiConst_INT16U Rating, NewRating; + GuiConst_INT32U PColor; + + ColorR = Red; + ColorG = Green; + ColorB = Blue; +#ifndef GuiConst_COLOR_RGB_STANDARD + ColorR = (GuiConst_COLORCODING_R_MAX * ColorR) / 255; + ColorG = (GuiConst_COLORCODING_G_MAX * ColorG) / 255; + ColorB = (GuiConst_COLORCODING_B_MAX * ColorB) / 255; +#endif + Rating = 0xFFFF; + for (I = 0; I < GuiConst_PALETTE_SIZE; I++) + { + PColor = 0; + for (byte=0,shift=0;byte < GuiConst_COLOR_BYTE_SIZE; byte++, shift +=8) + PColor |= ((GuiConst_INT32U)GuiStruct_Palette[I][byte] << shift); + + NewRating = + abs(ColorR - ((PColor & GuiConst_COLORCODING_R_MASK) >> + GuiConst_COLORCODING_R_START)) + + abs(ColorG - ((PColor & GuiConst_COLORCODING_G_MASK) >> + GuiConst_COLORCODING_G_START)) + + abs(ColorB - ((PColor & GuiConst_COLORCODING_B_MASK) >> + GuiConst_COLORCODING_B_START)); + if (NewRating < Rating) + { + Rating = NewRating; + I2 = I; + } + } + return (I2); +#else +#ifdef GuiConst_COLOR_RGB_STANDARD + return (Red | (Green << 8) | (Blue << 16)); +#else + return ((((GuiConst_COLORCODING_R_MAX * Red) / 255) + << GuiConst_COLORCODING_R_START) | + (((GuiConst_COLORCODING_G_MAX * Green) / 255) + << GuiConst_COLORCODING_G_START) | + (((GuiConst_COLORCODING_B_MAX * Blue) / 255) + << GuiConst_COLORCODING_B_START)); +#endif +#endif +#endif +} +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_PixelToRgbColor( + GuiConst_INTCOLOR PixelColor) +{ +#ifdef GuiConst_COLOR_MODE_GRAY + GuiConst_INT16U GrayValue; + + GrayValue = (255 * PixelColor) / GuiConst_COLOR_MAX; + return (GuiLib_GrayScaleToRgbColor((GuiConst_INT8U)GrayValue)); +#else + GuiConst_INT32U PColor; +#ifdef GuiConst_COLOR_MODE_PALETTE + GuiConst_INT16U byte, shift; +#endif +#ifndef GuiConst_COLOR_RGB_STANDARD + GuiConst_INT32U ColorR, ColorG, ColorB; +#endif + +#ifdef GuiConst_COLOR_MODE_PALETTE + PColor = 0; + for (byte=0,shift=0;byte < GuiConst_COLOR_BYTE_SIZE; byte++, shift +=8) + PColor |= ((GuiConst_INT32U)GuiStruct_Palette[PixelColor][byte] << shift); +#else + PColor = PixelColor; +#endif + +#ifdef GuiConst_COLOR_RGB_STANDARD + return (PColor); +#else + ColorR = + (PColor & GuiConst_COLORCODING_R_MASK) >> GuiConst_COLORCODING_R_START; + ColorG = + (PColor & GuiConst_COLORCODING_G_MASK) >> GuiConst_COLORCODING_G_START; + ColorB = + (PColor & GuiConst_COLORCODING_B_MASK) >> GuiConst_COLORCODING_B_START; + ColorR = (255 * ColorR) / GuiConst_COLORCODING_R_MAX; + ColorG = (255 * ColorG) / GuiConst_COLORCODING_G_MAX; + ColorB = (255 * ColorB) / GuiConst_COLORCODING_B_MAX; + return (ColorR | (ColorG << 8) | (ColorB << 16)); +#endif +#endif +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_RgbColorToGrayScale( + GuiConst_INT32U RgbColor) +{ + return (((RgbColor & 0x000000FF) + + ((RgbColor & 0x0000FF00) >> 8) + + ((RgbColor & 0x00FF0000) >> 16)) / 3); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_Rgb888ColorToGrayScale( + GuiConst_INT8U Red, GuiConst_INT8U Green, GuiConst_INT8U Blue) +{ + return ((Red + Green + Blue) / 3); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_GrayScaleToRgbColor( + GuiConst_INT8U GrayValue) +{ + return ((GuiConst_INT32U)GrayValue | + ((GuiConst_INT32U)GrayValue << 8) | + ((GuiConst_INT32U)GrayValue << 16)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_PixelColorToGrayScale( + GuiConst_INTCOLOR PixelColor) +{ + return (GuiLib_RgbColorToGrayScale(GuiLib_PixelToRgbColor(PixelColor))); +} + +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_GrayScaleToPixelColor( + GuiConst_INT8U GrayValue) +{ + return (GuiLib_RgbToPixelColor(GuiLib_GrayScaleToRgbColor(GrayValue))); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_BrightenRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount) +{ + GuiConst_INT32U ColorR, ColorG, ColorB; + + if (Amount == 0) + return (RgbColor); + else + { + ColorR = 255 - ((GuiConst_INT32U)(255 - GuiLib_GetRedRgbColor(RgbColor)) * + (1000 - Amount) / 1000); + ColorG = 255 - ((GuiConst_INT32U)(255 - GuiLib_GetGreenRgbColor(RgbColor)) * + (1000 - Amount) / 1000); + ColorB = 255 - ((GuiConst_INT32U)(255 - GuiLib_GetBlueRgbColor(RgbColor)) * + (1000 - Amount) / 1000); + return (ColorR | (ColorG << 8) | (ColorB << 16)); + } +} + +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_BrightenPixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount) +{ + return (GuiLib_RgbToPixelColor( + GuiLib_BrightenRgbColor(GuiLib_PixelToRgbColor(PixelColor), Amount))); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_DarkenRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount) +{ + GuiConst_INT32U ColorR, ColorG, ColorB; + + if (Amount == 0) + return (RgbColor); + else + { + ColorR = (GuiConst_INT32U)GuiLib_GetRedRgbColor(RgbColor) * + (1000 - Amount) / 1000; + ColorG = (GuiConst_INT32U)GuiLib_GetGreenRgbColor(RgbColor) * + (1000 - Amount) / 1000; + ColorB = (GuiConst_INT32U)GuiLib_GetBlueRgbColor(RgbColor) * + (1000 - Amount) / 1000; + return (ColorR | (ColorG << 8) | (ColorB << 16)); + } +} + +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_DarkenPixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount) +{ + return (GuiLib_RgbToPixelColor( + GuiLib_DarkenRgbColor(GuiLib_PixelToRgbColor(PixelColor), Amount))); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_MiddleRgbColor( + GuiConst_INT32U RgbColor1, + GuiConst_INT32U RgbColor2, + GuiConst_INT16U Amount) +{ + GuiConst_INT32S ColorR, ColorG, ColorB; + + if (Amount == 0) + return (RgbColor1); + else if (Amount >= 1000) + return (RgbColor2); + else + { + ColorR = (GuiConst_INT32U)GuiLib_GetRedRgbColor(RgbColor1); + ColorR = ColorR + (((GuiConst_INT32S)Amount * + ((GuiConst_INT32S)GuiLib_GetRedRgbColor(RgbColor2) - ColorR)) / 1000); + ColorG = (GuiConst_INT32U)GuiLib_GetGreenRgbColor(RgbColor1); + ColorG = ColorG + (((GuiConst_INT32S)Amount * + ((GuiConst_INT32S)GuiLib_GetGreenRgbColor(RgbColor2) - ColorG)) / 1000); + ColorB = (GuiConst_INT32U)GuiLib_GetBlueRgbColor(RgbColor1); + ColorB = ColorB + (((GuiConst_INT32S)Amount * + ((GuiConst_INT32S)GuiLib_GetBlueRgbColor(RgbColor2) - ColorB)) / 1000); + return (ColorR | (ColorG << 8) | (ColorB << 16)); + } +} + +// ----------------------------------------------------------------------------- +GuiConst_INTCOLOR GuiLib_MiddlePixelColor( + GuiConst_INTCOLOR PixelColor1, + GuiConst_INTCOLOR PixelColor2, + GuiConst_INT16U Amount) +{ + return (GuiLib_RgbToPixelColor( + GuiLib_MiddleRgbColor(GuiLib_PixelToRgbColor(PixelColor1), + GuiLib_PixelToRgbColor(PixelColor2), + Amount))); +} + +// ----------------------------------------------------------------------------- +GuiConst_INT32U GuiLib_DesaturateRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount) +{ + GuiConst_INT32U GrayValue; + GuiConst_INT32U ColorDesat; + + GrayValue = (GuiConst_INT32U)GuiLib_RgbColorToGrayScale(RgbColor); + ColorDesat = GrayValue | (GrayValue << 8) | (GrayValue << 16); + return (GuiLib_MiddleRgbColor(RgbColor, ColorDesat, Amount)); +} + +// ----------------------------------------------------------------------------- +GuiConst_INTCOLOR GuiLib_DesaturatePixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount) +{ + return (GuiLib_RgbToPixelColor( + GuiLib_DesaturateRgbColor(GuiLib_PixelToRgbColor(PixelColor), Amount))); +} + +//------------------------------------------------------------------------------ +GuiConst_INT32U GuiLib_AccentuateRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount) +{ + if (Amount == 0) + return (RgbColor); + else if (GuiLib_RgbColorToGrayScale(RgbColor) <= 127) + return (GuiLib_BrightenRgbColor(RgbColor, Amount)); + else + return (GuiLib_DarkenRgbColor(RgbColor, Amount)); +} + +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_AccentuatePixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount) +{ + return (GuiLib_RgbToPixelColor( + GuiLib_AccentuateRgbColor(GuiLib_PixelToRgbColor(PixelColor), Amount))); +} + +//------------------------------------------------------------------------------ +void Ellipse( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius1, + GuiConst_INT16U Radius2, + GuiConst_INT32S BorderColor, + GuiConst_INT32S FillColor, + GuiConst_INT8U Q1, + GuiConst_INT8U Q2, + GuiConst_INT8U Q3, + GuiConst_INT8U Q4) +{ + GuiConst_INT16S PX, PY; + GuiConst_INT16S L1, L2, LP1, LP2, LX, LY; + GuiConst_INT16S PX2, PY2; + GuiConst_INTCOLOR BColor; + GuiConst_INT8U Filling, LFilling, First; + GuiConst_INT16S R1, R2; + GuiConst_INT32S R22; + GuiConst_INT8U Q12, Q34, Q14, Q23, Qfull; + + Filling = (FillColor != GuiLib_NO_COLOR); + if (BorderColor == GuiLib_NO_COLOR) + { + if (!Filling) + return; + else + BColor = (GuiConst_INTCOLOR)FillColor; + } + else + BColor = (GuiConst_INTCOLOR)BorderColor; + + Q12 = (Q1 || Q2); + Q34 = (Q3 || Q4); + Q14 = (Q1 || Q4); + Q23 = (Q2 || Q3); + Qfull = Q1 & Q2 & Q3 & Q4; + if (!(Q12 || Q34)) + return; + + if (Radius1 == 0) + { + if (Qfull) + GuiLib_VLine(X, Y - Radius2, Y + Radius2, BColor); + else if (Q12) + GuiLib_VLine(X, Y, Y + Radius2, BColor); + else + GuiLib_VLine(X, Y - Radius2, Y, BColor); + } + else if (Radius2 == 0) + { + if (Qfull) + GuiLib_HLine(X - Radius1, X + Radius1, Y, BColor); + else if (Q14) + GuiLib_HLine(X, X + Radius1, Y, BColor); + else + GuiLib_HLine(X - Radius1, X, Y, BColor); + } + else if (Radius1 == 1) + { + PY = Radius2 / 2; + if (Q23) + { + if (Q2 && Q3) + GuiLib_VLine(X - 1, Y - PY, Y + PY, BColor); + else if (Q2) + GuiLib_VLine(X - 1, Y, Y + PY, BColor); + else + GuiLib_VLine(X - 1, Y - PY, Y, BColor); + } + if (Q34) + GuiLib_VLine(X, Y - Radius2, Y - PY - 1, BColor); + if (Filling) + { + if (Q12 && Q34) + GuiLib_VLine(X, Y - PY, Y + PY, (GuiConst_INTCOLOR)FillColor); + else if (Q12) + GuiLib_VLine(X, Y, Y + PY, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_VLine(X, Y - PY, Y, (GuiConst_INTCOLOR)FillColor); + } + if (Q12) + GuiLib_VLine(X, Y + PY + 1, Y + Radius2, BColor); + if (Q14) + { + if (Q1 && Q4) + GuiLib_VLine(X + 1, Y - PY, Y + PY, BColor); + else if (Q1) + GuiLib_VLine(X + 1, Y, Y + PY, BColor); + else + GuiLib_VLine(X + 1, Y - PY, Y, BColor); + } + } + else if (Radius2 == 1) + { + PX = Radius1 / 2; + if (Q34) + { + if (Q3 && Q4) + GuiLib_HLine(X - PX, X + PX, Y - 1, BColor); + else if (Q4) + GuiLib_HLine(X, X + PX, Y - 1, BColor); + else + GuiLib_HLine(X - PX, X, Y - 1, BColor); + } + if (Q23) + GuiLib_HLine(X - Radius1, X - PX - 1, Y, BColor); + if (Filling) + { + if (Q14 && Q23) + GuiLib_HLine(X - PX, X + PX, Y, (GuiConst_INTCOLOR)FillColor); + else if (Q14) + GuiLib_HLine(X, X + PX, Y, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_HLine(X - PX, X, Y, (GuiConst_INTCOLOR)FillColor); + } + if (Q14) + GuiLib_HLine(X + PX + 1, X + Radius1, Y, BColor); + if (Q12) + { + if (Q1 && Q2) + GuiLib_HLine(X - PX, X + PX, Y + 1, BColor); + else if (Q1) + GuiLib_HLine(X, X + PX, Y + 1, BColor); + else + GuiLib_HLine(X - PX, X, Y + 1, BColor); + } + } + else + { + R1 = Radius1 << 3; + R2 = Radius2 << 3; + + if (Radius1 >= Radius2) + { + R22 = (GuiConst_INT32S)R2 * R2; + + PX = 0; + First = 1; + for (PY = R2 - 4; PY >= 4; PY -= 8) + { + PX2 = PX + 8; + PX = (GuiConst_INT16S)((R1 * GuiLib_Sqrt((0x00000400 - + ((((GuiConst_INT32S)PY * (PY + 3)) << 10) / R22)) << 8)) >> 9) + 1; + LY = (PY + 4) >> 3; + if (First) + { + L1 = X - (PX >> 3); + L2 = X + (PX >> 3); + if (Q12) + { + if (Q1 && Q2) + GuiLib_HLine(L1, L2, Y + LY, BColor); + else if (Q1) + GuiLib_HLine(X, L2, Y + LY, BColor); + else + GuiLib_HLine(L1, X, Y + LY, BColor); + } + if (Q34) + { + if (Q3 && Q4) + GuiLib_HLine(L1, L2, Y - LY, BColor); + else if (Q4) + GuiLib_HLine(X, L2, Y - LY, BColor); + else + GuiLib_HLine(L1, X, Y - LY, BColor); + } + First = 0; + } + else + { + LP1 = X - (PX2 >> 3); + LP2 = X + (PX2 >> 3); + L1 = X - (PX >> 3); + L2 = X + (PX >> 3); + if (LP1 < L1) + { + LP1 = L1; + LP2 = L2; + } + LFilling = Filling & (LP2 - LP1 >= 2); + + if (Q12) + { + if (Q2) + GuiLib_HLine(L1, LP1, Y + LY, BColor); + if (LFilling) + { + if (Q1 && Q2) + GuiLib_HLine(LP1 + 1, LP2 - 1, Y + LY, + (GuiConst_INTCOLOR)FillColor); + else if (Q1) + GuiLib_HLine(X, LP2 - 1, Y + LY, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_HLine(LP1 + 1, X, Y + LY, (GuiConst_INTCOLOR)FillColor); + } + if (Q1) + GuiLib_HLine(LP2, L2, Y + LY, BColor); + } + if (Q34) + { + if (Q3) + GuiLib_HLine(L1, LP1, Y - LY, BColor); + if (LFilling) + { + if (Q3 && Q4) + GuiLib_HLine(LP1 + 1, LP2 - 1, Y - LY, + (GuiConst_INTCOLOR)FillColor); + else if (Q4) + GuiLib_HLine(X, LP2 - 1, Y - LY, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_HLine(LP1 + 1, X, Y - LY, (GuiConst_INTCOLOR)FillColor); + } + if (Q4) + GuiLib_HLine(LP2, L2, Y - LY, BColor); + } + } + } + L1 = (PX + 8) >> 3; + if (L1 > Radius1) + L1 = Radius1; + + if (Q23) + GuiLib_HLine(X - Radius1, X - L1, Y, BColor); + if (Filling & (L1 >= 1)) + { + if (Q14 && Q23) + GuiLib_HLine(X - L1 + 1, X + L1 - 1, Y, (GuiConst_INTCOLOR)FillColor); + else if (Q14) + GuiLib_HLine(X, X + L1 - 1, Y, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_HLine(X - L1 + 1, X, Y, (GuiConst_INTCOLOR)FillColor); + } + if (Q14) + GuiLib_HLine(X + L1, X + Radius1, Y, BColor); + } + else + { + R22 = (GuiConst_INT32S)R1 * R1; + + PY = 0; + First = 1; + for (PX = R1 - 4; PX >= 4; PX -= 8) + { + PY2 = PY + 8; + PY = (GuiConst_INT16S)((R2 * GuiLib_Sqrt((0x00000400 - + ((((GuiConst_INT32S)PX * (PX + 3)) << 10) / R22)) << 8)) >> 9) + 1; + LX = (PX + 4) >> 3; + if (First) + { + L1 = Y - (PY >> 3); + L2 = Y + (PY >> 3); + if (Q14) + { + if (Q1 && Q4) + GuiLib_VLine(X + LX, L1, L2, BColor); + else if (Q1) + GuiLib_VLine(X + LX, Y, L2, BColor); + else + GuiLib_VLine(X + LX, L1, Y, BColor); + } + if (Q23) + { + if (Q2 && Q3) + GuiLib_VLine(X - LX, L1, L2, BColor); + else if (Q2) + GuiLib_VLine(X - LX, Y, L2, BColor); + else + GuiLib_VLine(X - LX, L1, Y, BColor); + } + First = 0; + } + else + { + LP1 = Y - (PY2 >> 3); + LP2 = Y + (PY2 >> 3); + L1 = Y - (PY >> 3); + L2 = Y + (PY >> 3); + if (LP1 < L1) + { + LP1 = L1; + LP2 = L2; + } + LFilling = Filling & (LP2 - LP1 >= 2); + + if (Q14) + { + if (Q4) + GuiLib_VLine(X + LX, L1, LP1, BColor); + if (LFilling) + { + if (Q1 && Q4) + GuiLib_VLine(X + LX, LP1 + 1, LP2 - 1, + (GuiConst_INTCOLOR)FillColor); + else if (Q1) + GuiLib_VLine(X + LX, Y, LP2 - 1, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_VLine(X + LX, LP1 + 1, Y, (GuiConst_INTCOLOR)FillColor); + } + if (Q1) + GuiLib_VLine(X + LX, LP2, L2, BColor); + } + if (Q23) + { + if (Q3) + GuiLib_VLine(X - LX, L1, LP1, BColor); + if (LFilling) + { + if (Q2 && Q3) + GuiLib_VLine(X - LX, LP1 + 1, LP2 - 1, + (GuiConst_INTCOLOR)FillColor); + else if (Q2) + GuiLib_VLine(X - LX, Y, LP2 - 1, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_VLine(X - LX, LP1 + 1, Y, (GuiConst_INTCOLOR)FillColor); + } + if (Q2) + GuiLib_VLine(X - LX, LP2, L2, BColor); + } + } + } + L1 = (PY + 8) >> 3; + if (L1 > Radius2) + L1 = Radius2; + + if (Q34) + GuiLib_VLine(X, Y - Radius2, Y - L1, BColor); + if (Filling & (L1 >= 1)) + { + if (Q12 && Q34) + GuiLib_VLine(X, Y - L1 + 1, Y + L1 - 1, (GuiConst_INTCOLOR)FillColor); + else if (Q12) + GuiLib_VLine(X, Y, Y + L1 - 1, (GuiConst_INTCOLOR)FillColor); + else + GuiLib_VLine(X, Y - L1 + 1, Y, (GuiConst_INTCOLOR)FillColor); + } + if (Q12) + GuiLib_VLine(X, Y + L1, Y + Radius2, BColor); + } + } +} + +//------------------------------------------------------------------------------ +void Circle( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius, + GuiConst_INTCOLOR Color, + GuiConst_INT8U S0, + GuiConst_INT8U S1, + GuiConst_INT8U S2, + GuiConst_INT8U S3, + GuiConst_INT8U S4, + GuiConst_INT8U S5, + GuiConst_INT8U S6, + GuiConst_INT8U S7, + GuiConst_INT8U IF) +{ + GuiConst_INT16S PX, PY, PX2; + GuiConst_INT16S L1, L2, LP1, LP2, LX, LY, LX2; + GuiConst_INT8U First; + GuiConst_INT16S R; + GuiConst_INT32S R2; + + if (!(S0 || S1 || S2 || S3 || S4 || S5 || S6 || S7)) + return; + if (Radius == 0) + return; + + if (Radius == 1) + { + if (S7 || S0) + GuiLib_Dot(X + 1, Y, Color); + if (S1 || S2) + GuiLib_Dot(X, Y + 1, Color); + if (S3 || S4) + GuiLib_Dot(X - 1, Y, Color); + if (S5 || S6) + GuiLib_Dot(X, Y - 1, Color); + } + else + { + R = Radius << 3; + R2 = (GuiConst_INT32S)R * R; + First = 1; + PX = 0; + + for (PY = R - 4; PY >= R / 2; PY -= 8) + { + PX2 = PX + 8; + PX = (GuiConst_INT16S)((R * GuiLib_Sqrt((0x00000400 - + ((((GuiConst_INT32S)PY * (PY + 3)) << 10) / R2)) << 8)) >> 9) + 1; + LX2 = (PX2 + 4) >> 3; + LX = (PX + 4) >> 3; + LY = (PY + 4) >> 3; + if (First) + { + if (S1 || S2) + { + if (S1) + L2 = X + LX; + else + L2 = X; + if (S2) + L1 = X - LX; + else + L1 = X; + GuiLib_HLine(L1, L2, Y + LY, Color); + if (IF) + GuiLib_HLine(L1, L2, Y + LY - 1, Color); + } + if (S5 || S6) + { + if (S5) + L1 = X - LX; + else + L1 = X; + if (S6) + L2 = X + LX; + else + L2 = X; + GuiLib_HLine(L1, L2, Y - LY, Color); + if (IF) + GuiLib_HLine(L1, L2, Y - LY +1, Color); + } + + if (S3 || S4) + { + if (S3) + L2 = Y + LX; + else + L2 = Y; + if (S4) + L1 = Y - LX; + else + L1 = Y; + GuiLib_VLine(X - LY, L1, L2, Color); + if (IF) + GuiLib_VLine(X - LY + 1, L1, L2, Color); + } + if (S7 || S0) + { + if (S7) + L1 = Y - LX; + else + L1 = Y; + if (S0) + L2 = Y + LX; + else + L2 = Y; + GuiLib_VLine(X + LY, L1, L2, Color); + if (IF) + GuiLib_VLine(X + LY - 1, L1, L2, Color); + } + + First = 0; + } + else if (LX < LY) + { + LP1 = X - LX2; + LP2 = X + LX2; + L1 = X - LX; + L2 = X + LX; + + if (S1) + { + GuiLib_HLine(LP2, L2, Y + LY, Color); + if (IF) + GuiLib_HLine(LP2, L2, Y + LY - 1, Color); + } + if (S2) + { + GuiLib_HLine(L1, LP1, Y + LY, Color); + if (IF) + GuiLib_HLine(L1, LP1, Y + LY - 1, Color); + } + + if (S5) + { + GuiLib_HLine(L1, LP1, Y - LY, Color); + if (IF) + GuiLib_HLine(L1, LP1, Y - LY + 1, Color); + } + if (S6) + { + GuiLib_HLine(LP2, L2, Y - LY, Color); + if (IF) + GuiLib_HLine(LP2, L2, Y - LY + 1, Color); + } + + LP1 = Y - LX2; + LP2 = Y + LX2; + L1 = Y - LX; + L2 = Y + LX; + + if (S7) + { + GuiLib_VLine(X + LY, L1, LP1, Color); + if (IF) + GuiLib_VLine(X + LY - 1, L1, LP1, Color); + } + if (S0) + { + GuiLib_VLine(X + LY, LP2, L2, Color); + if (IF) + GuiLib_VLine(X + LY - 1, LP2, L2, Color); + } + + if (S3) + { + GuiLib_VLine(X - LY, LP2, L2, Color); + if (IF) + GuiLib_VLine(X - LY + 1, LP2, L2, Color); + } + if (S4) + { + GuiLib_VLine(X - LY, L1, LP1, Color); + if (IF) + GuiLib_VLine(X - LY + 1, L1, LP1, Color); + } + } + else + { + if (S0) + { + GuiLib_Dot(X + LY, Y + LX2, Color); + if (IF) + GuiLib_Dot(X + LY - 1, Y + LX2, Color); + } + if (S1) + { + GuiLib_Dot(X + LX2, Y + LY, Color); + if (IF) + GuiLib_Dot(X + LX2, Y + LY - 1, Color); + } + if (S2) + { + GuiLib_Dot(X - LX2, Y + LY, Color); + if (IF) + GuiLib_Dot(X - LX2, Y + LY - 1, Color); + } + if (S3) + { + GuiLib_Dot(X - LY, Y + LX2, Color); + if (IF) + GuiLib_Dot(X - LY + 1, Y + LX2, Color); + } + if (S4) + { + GuiLib_Dot(X - LY, Y - LX2, Color); + if (IF) + GuiLib_Dot(X - LY + 1, Y - LX2, Color); + } + if (S5) + { + GuiLib_Dot(X - LX2, Y - LY, Color); + if (IF) + GuiLib_Dot(X - LX2, Y - LY + 1, Color); + } + if (S6) + { + GuiLib_Dot(X + LX2, Y - LY, Color); + if (IF) + GuiLib_Dot(X + LX2, Y - LY + 1, Color); + } + if (S7) + { + GuiLib_Dot(X + LY, Y - LX2, Color); + if (IF) + GuiLib_Dot(X + LY - 1, Y - LX2, Color); + } + + break; + } + } + + if (S7 || S0) + GuiLib_Dot(X + Radius, Y, Color); + if (S3 || S4) + GuiLib_Dot(X - Radius, Y, Color); + } +} + +//------------------------------------------------------------------------------ +void FilledCircle( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius, + GuiConst_INTCOLOR Color) +{ + GuiConst_INT16S PX, PY, PX2; + GuiConst_INT16S LX, LY, LXY, LX2; + GuiConst_INT16S R; + GuiConst_INT32S R2; + + if (Radius == 0) + return; + + if (Radius == 1) + { + GuiLib_Dot(X, Y - 1, Color); + GuiLib_HLine(X - 1, X + 1, Y, Color); + GuiLib_Dot(X, Y + 1, Color); + } + else + { + R = Radius << 3; + R2 = (GuiConst_INT32S)R * R; + LXY = (707 * (GuiConst_INT32S)Radius) / 1000; + PX = 0; + LY = 0; + + for (PY = R - 4; PY >= R / 2; PY -= 8) + { + PX2 = PX + 8; + PX = (GuiConst_INT16S)((R * GuiLib_Sqrt((0x00000400 - + ((((GuiConst_INT32S)PY * (PY + 3)) << 10) / R2)) << 8)) >> 9) + 1; + LX2 = (PX2 + 4) >> 3; + LX = (PX + 4) >> 3; + LY = (PY + 4) >> 3; + + if (LX < LY) + { + GuiLib_HLine(X - LX, X + LX, Y + LY, Color); + GuiLib_HLine(X - LX, X + LX, Y - LY, Color); + + if (LX > LXY) + LX = LXY; + GuiLib_VLine(X - LY, Y - LX, Y + LX, Color); + GuiLib_VLine(X + LY, Y - LX, Y + LX, Color); + } + else + { + GuiLib_HLine(X - LX2, X + LX2, Y - LY, Color); + GuiLib_HLine(X - LX2, X + LX2, Y + LY, Color); + GuiLib_VLine(X - LY, Y - LX2, Y + LX2, Color); + GuiLib_VLine(X + LY, Y - LX2, Y + LX2, Color); + + break; + } + } + GuiLib_FillBox(X - LY + 1, Y - LY + 1, X + LY - 1, Y + LY - 1, Color); + } +} + +//------------------------------------------------------------------------------ +void GuiLib_Circle( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius, + GuiConst_INT32S BorderColor, + GuiConst_INT32S FillColor) +{ + Ellipse(X, Y, Radius, Radius, BorderColor, FillColor, 1, 1, 1, 1); +} + +//------------------------------------------------------------------------------ +void GuiLib_Ellipse( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius1, + GuiConst_INT16U Radius2, + GuiConst_INT32S BorderColor, + GuiConst_INT32S FillColor) +{ + Ellipse(X, Y, Radius1, Radius2, BorderColor, FillColor, 1, 1, 1, 1); +} + +//============================================================================== + +#ifdef GuiConst_CLIPPING_SUPPORT_ON +//------------------------------------------------------------------------------ +void GuiLib_ResetClipping(void) +{ + sgl.ClippingTotal = 0; + SetClipping( + 0, 0, GuiConst_DISPLAY_WIDTH_HW - 1, GuiConst_DISPLAY_HEIGHT_HW - 1); +} + +//------------------------------------------------------------------------------ +void GuiLib_SetClipping( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + sgl.ClippingTotal = ((X1 > X2) || (Y1 > Y2)); + + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + + SetClipping(X1, Y1, X2, Y2); +} +#endif + +//------------------------------------------------------------------------------ +void GuiLib_ResetDisplayRepaint(void) +{ + GuiConst_INT16S LineNo; + + if (!sgl.BaseLayerDrawing) + return; + + for (LineNo = 0; LineNo < GuiConst_BYTE_LINES; LineNo++) + { + GuiLib_DisplayRepaint[LineNo].ByteEnd = -1; + #ifdef GuiConst_VNC_REMOTE_SUPPORT_ON + GuiLib_VncRepaint[LineNo].ByteEnd = -1; + #endif + } +} + +//------------------------------------------------------------------------------ +void GuiLib_MarkDisplayBoxRepaint( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + if (!sgl.BaseLayerDrawing) + return; + + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&X1, &Y1, &X2, &Y2)) +#endif + MarkDisplayBoxRepaint(X1, Y1, X2, Y2); +} + +//------------------------------------------------------------------------------ +void GuiLib_ClearDisplay(void) +{ + ClearDisplay(); + MarkDisplayBoxRepaint( + 0, 0, GuiConst_DISPLAY_WIDTH_HW - 1, GuiConst_DISPLAY_HEIGHT_HW - 1); +} + +//------------------------------------------------------------------------------ +void GuiLib_Dot( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INTCOLOR Color) +{ + GuiLib_COORD_ADJUST(X, Y); + GuiLib_COLOR_ADJUST(Color); + + MakeDot(X, Y, Color); +} + +//------------------------------------------------------------------------------ +GuiConst_INTCOLOR GuiLib_GetDot( + GuiConst_INT16S X, + GuiConst_INT16S Y) +{ + GuiLib_COORD_ADJUST(X, Y); + + return (ReadDot(X, Y)); +} + +//------------------------------------------------------------------------------ +void GuiLib_Line( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color) +{ + GuiConst_INT16S X, Y; + GuiConst_INT16S PX1, PY1, PX2, PY2; + GuiConst_INT16S RemCoord; + GuiConst_INT32S Slope; + GuiConst_INT16S Offset, NewOffset; + GuiConst_INT16U OffsetCnt; + GuiConst_INT16S OffsetDir; + + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + GuiLib_COLOR_ADJUST(Color); + + if (X1 == X2) + { + OrderCoord(&Y1, &Y2); +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&X1, &Y1, &X2, &Y2)) +#endif + { + VertLine(X1, Y1, Y2, Color); + MarkDisplayBoxRepaint(X1, Y1, X1, Y2); + } + } + else if (Y1 == Y2) + { + OrderCoord(&X1, &X2); +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&X1, &Y1, &X2, &Y2)) +#endif + { + HorzLine(X1, X2, Y1, Color); + MarkDisplayBoxRepaint(X1, Y1, X2, Y1); + } + } + else + { + Slope = labs ((10000 * (GuiConst_INT32S) (Y2 - Y1))) / + labs ((GuiConst_INT32S) (X2 - X1)); + + if (Slope <= 10000) + { + if (OrderCoord(&X1, &X2)) + SwapCoord(&Y1, &Y2); + + X = 0; + Offset = 0; + RemCoord = 0; + OffsetCnt = 0; + if (Y1 < Y2) + OffsetDir = 1; + else + OffsetDir = -1; + do + { + NewOffset = (((GuiConst_INT32S) X * Slope) + 5000) / 10000; + if (((X > 0) && (NewOffset != Offset)) || (X > X2 - X1)) + { + PX1 = X1 + RemCoord; + PY1 = Y1 + OffsetDir * Offset; + PX2 = PX1 + OffsetCnt - 1; + if (OffsetCnt == 1) + MakeDot(PX1, PY1, Color); + else +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&PX1, &PY1, &PX2, &PY1)) +#endif + { + HorzLine(PX1, PX2, PY1, Color); + MarkDisplayBoxRepaint(PX1, PY1, PX2, PY1); + } + OffsetCnt = 1; + RemCoord = X; + + if (X > X2 - X1) + return; + } + else + OffsetCnt++; + + Offset = NewOffset; + X++; + } + while (1); + } + else + { + if (OrderCoord(&Y1, &Y2)) + SwapCoord(&X1, &X2); + + Y = 0; + Offset = 0; + RemCoord = 0; + OffsetCnt = 0; + if (X1 < X2) + OffsetDir = 1; + else + OffsetDir = -1; + do + { + NewOffset = (((GuiConst_INT32S) Y * 10000) + (Slope / 2)) / Slope; + if (((Y > 0) && (NewOffset != Offset)) || (Y > Y2 - Y1)) + { + PX1 = X1 + OffsetDir * Offset; + PY1 = Y1 + RemCoord; + PY2 = PY1 + OffsetCnt - 1; + if (OffsetCnt == 1) + MakeDot(PX1, PY1, Color); + else +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&PX1, &PY1, &PX1, &PY2)) +#endif + { + VertLine(PX1, PY1, PY2, Color); + MarkDisplayBoxRepaint(PX1, PY1, PX1, PY2); + } + OffsetCnt = 1; + RemCoord = Y; + + if (Y > Y2 - Y1) + return; + } + else + OffsetCnt++; + + Offset = NewOffset; + Y++; + } + while (1); + } + } +} + +//------------------------------------------------------------------------------ +void GuiLib_LinePattern( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INT8U LinePattern, + GuiConst_INTCOLOR Color) +{ + GuiConst_INT16S X,Y; + GuiConst_INT32S Slope; + GuiConst_INT16S Offset; + GuiConst_INT8U MaskTemp; + GuiConst_INT8U MaskCtr = 0; + GuiConst_INT8U Vertical; + + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + GuiLib_COLOR_ADJUST(Color); + + Vertical = (X1 == X2); + if (Vertical) + Offset = 0; + else + Slope = labs ((10000 * (GuiConst_INT32S)(Y2 - Y1))) / + labs ((GuiConst_INT32S)(X2 - X1)); + + if (Vertical || (Slope > 10000)) + { + if (OrderCoord(&Y1, &Y2)) + SwapCoord(&X1, &X2); + + for (Y = 0; Y <= Y2 - Y1; Y++) + { + if (MaskCtr == 0 ) + { + MaskCtr = 8; + MaskTemp = LinePattern; + } + if (MaskTemp & 0x01) + { + if (!Vertical) + Offset = (((GuiConst_INT32S) Y * 10000) + (Slope / 2)) / Slope; + if (X1 < X2) + MakeDot(X1 + Offset, Y1 + Y, Color); + else + MakeDot(X1 - Offset, Y1 + Y, Color); + } + MaskTemp >>= 1; + MaskCtr--; + } + } + else + { + if (OrderCoord(&X1, &X2)) + SwapCoord(&Y1, &Y2); + + for (X = 0; X <= X2 - X1; X++) + { + if (MaskCtr == 0 ) + { + MaskCtr = 8; + MaskTemp = LinePattern; + } + + if (MaskTemp & 0x01) + { + Offset = (((GuiConst_INT32S) X * Slope) + 5000) / 10000; + if (Y1 < Y2) + MakeDot(X1 + X, Y1 + Offset, Color); + else + MakeDot(X1 + X, Y1 - Offset, Color); + } + MaskTemp >>= 1; + MaskCtr--; + } + } +} + +//------------------------------------------------------------------------------ +void GuiLib_HLine( + GuiConst_INT16S X1, + GuiConst_INT16S X2, + GuiConst_INT16S Y, + GuiConst_INTCOLOR Color) +{ + GuiLib_Line(X1, Y, X2, Y, Color); +} + +//------------------------------------------------------------------------------ +void GuiLib_VLine( + GuiConst_INT16S X, + GuiConst_INT16S Y1, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color) +{ + GuiLib_Line(X, Y1, X, Y2, Color); +} + +//------------------------------------------------------------------------------ +void GuiLib_Box( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color) +{ + GuiConst_INT16S X1C; + GuiConst_INT16S Y1C; + GuiConst_INT16S X2C; + GuiConst_INT16S Y2C; + + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + GuiLib_COLOR_ADJUST(Color); + + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + + X1C = X1; + Y1C = Y1; + X2C = X2; + Y2C = Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect(&X1C, &Y1C, &X2C, &Y2C)) +#endif + { + MarkDisplayBoxRepaint(X1C, Y1C, X2C, Y2C); + X1C = X1; + Y1C = Y1; + X2C = X1; + Y2C = Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect(&X1C, &Y1C, &X1C, &Y2C)) +#endif + VertLine(X1C, Y1C, Y2C, Color); + X1C = X2; + Y1C = Y1; + X2C = X2; + Y2C = Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect(&X2C, &Y1C, &X2C, &Y2C)) +#endif + VertLine(X2C, Y1C, Y2C, Color); + if (X2 - X1 > 1) + { + X1C = X1 + 1; + Y1C = Y1; + X2C = X2 - 1; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect(&X1C, &Y1C, &X2C, &Y1C)) +#endif + HorzLine(X1C, X2C, Y1C, Color); + X1C = X1 + 1; + Y1C = Y2; + X2C = X2 - 1; + Y2C = Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect(&X1C, &Y2C, &X2C, &Y2C)) +#endif + HorzLine(X1C, X2C, Y2C, Color); + } + } +} + +//------------------------------------------------------------------------------ +void GuiLib_FillBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color) +{ + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + GuiLib_COLOR_ADJUST(Color); + + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&X1, &Y1, &X2, &Y2)) +#endif + { + MarkDisplayBoxRepaint(X1, Y1, X2, Y2); +#ifdef GuiConst_BYTE_HORIZONTAL + while (Y1 <= Y2) + { + HorzLine(X1, X2, Y1, Color); + Y1++; + } +#else + while (X1 <= X2) + { + VertLine(X1, Y1, Y2, Color); + X1++; + } +#endif + } +} + +//------------------------------------------------------------------------------ +void GuiLib_BorderBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR BorderColor, + GuiConst_INTCOLOR FillColor) +{ + GuiLib_Box(X1, Y1, X2, Y2, BorderColor); + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + if (((X2 - X1) >= 2) && ((Y2 - Y1) >= 2)) + GuiLib_FillBox(X1+1, Y1+1, X2-1, Y2-1, FillColor); +} + +#ifdef GuiConst_BITMAP_SUPPORT_ON +//------------------------------------------------------------------------------ +static void ReadBitmapSizes( + GuiConst_INT16U BitmapIndex) +{ +#ifndef GuiConst_REMOTE_BITMAP_DATA + GuiConst_INT8U PrefixRom * PixelDataPtr; +#endif + +#ifdef GuiConst_REMOTE_BITMAP_DATA + if (BitmapIndex != sgl.CurRemoteBitmap) + { + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex], + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex + 1] - + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex], + sgl.GuiLib_RemoteBitmapBuffer); + sgl.CurRemoteBitmap = BitmapIndex; + } + sgl.BitmapSizeX = (GuiConst_INT16S)sgl.GuiLib_RemoteBitmapBuffer[0] + + 256*(GuiConst_INT16S)sgl.GuiLib_RemoteBitmapBuffer[1]; + sgl.BitmapSizeY = (GuiConst_INT16S)sgl.GuiLib_RemoteBitmapBuffer[2] + + 256*(GuiConst_INT16S)sgl.GuiLib_RemoteBitmapBuffer[3]; +#else + PixelDataPtr = + (GuiConst_INT8U PrefixRom *)ReadWord(GuiStruct_BitmapPtrList[BitmapIndex]); + + sgl.BitmapSizeX = (GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + sgl.BitmapSizeX += 256*(GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + sgl.BitmapSizeY = (GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + sgl.BitmapSizeY += 256*(GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_ShowBitmap( + GuiConst_INT16U BitmapIndex, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT32S TranspColor) +{ +#ifdef GuiConst_REMOTE_BITMAP_DATA + if (BitmapIndex != sgl.CurRemoteBitmap) + { + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex], + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex + 1] - + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex], + sgl.GuiLib_RemoteBitmapBuffer); + sgl.CurRemoteBitmap = BitmapIndex; + } + ShowBitmapArea(&sgl.GuiLib_RemoteBitmapBuffer[0], + X, Y, 0, 0, 0, 0, TranspColor, GuiLib_FULL_BITMAP); +#else + ShowBitmapArea( + (GuiConst_INT8U PrefixRom *)ReadWord(GuiStruct_BitmapPtrList[BitmapIndex]), + X, Y, 0, 0, 0, 0, TranspColor, GuiLib_FULL_BITMAP); +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_ShowBitmapAt( + GuiConst_INT8U * BitmapPtr, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT32S TranspColor) +{ + ShowBitmapArea( + BitmapPtr, X, Y, 0, 0, 0, 0, TranspColor, GuiLib_FULL_BITMAP); +} + +//------------------------------------------------------------------------------ +void GuiLib_ShowBitmapArea( + GuiConst_INT16U BitmapIndex, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S AX1, + GuiConst_INT16S AY1, + GuiConst_INT16S AX2, + GuiConst_INT16S AY2, + GuiConst_INT32S TranspColor) +{ +#ifdef GuiConst_REMOTE_BITMAP_DATA + if (BitmapIndex != sgl.CurRemoteBitmap) + { + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex], + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex + 1] - + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[BitmapIndex], + sgl.GuiLib_RemoteBitmapBuffer); + sgl.CurRemoteBitmap = BitmapIndex; + } + ShowBitmapArea(&sgl.GuiLib_RemoteBitmapBuffer[0], + X, Y, AX1, AY1, AX2, AY2, TranspColor, GuiLib_AREA_BITMAP); +#else + ShowBitmapArea( + (GuiConst_INT8U PrefixRom *)ReadWord(GuiStruct_BitmapPtrList[BitmapIndex]), + X, Y, AX1, AY1, AX2, AY2, TranspColor, GuiLib_AREA_BITMAP); +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_ShowBitmapAreaAt( + GuiConst_INT8U * BitmapPtr, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S AX1, + GuiConst_INT16S AY1, + GuiConst_INT16S AX2, + GuiConst_INT16S AY2, + GuiConst_INT32S TranspColor) +{ + ShowBitmapArea( + BitmapPtr, X, Y, AX1, AY1, AX2, AY2, TranspColor, GuiLib_AREA_BITMAP); +} +#endif +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiGraph16.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiGraph16.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,972 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* 12/15/16 bit (4096/32K/64K color) graphics primitives library */ +/* v6.0.9.005 */ +/* */ +/* GuiLib.c include file - do NOT reference it in your linker setup */ +/* */ +/* ************************************************************************ */ + +//------------------------------------------------------------------------------ +#define WANT_DOUBLE_BUFFERING // Also in GuiDisplay.c, GuiLib.c - *** all three must match *** +#ifdef WANT_DOUBLE_BUFFERING +//DisplayBufUnion GuiLib_DisplayBuf; +// Experiment - what if we put GuiLib_DisplayBuf at a specific location - but not the display? +//DisplayBufUnion GuiLib_DisplayBuf __attribute__((at(0xA00BB810))); // Result of second DMBoard->display->allocateFramebuffer() call +DisplayBufUnion GuiLib_DisplayBuf __attribute__((at(0xA00BCFE0))); // Result of second DMBoard->display->allocateFramebuffer() call (as of 26 Oct 2016) +#else // Want to write direct to the display +//DisplayBufUnion GuiLib_DisplayBuf __attribute__((at(0xA0000008))); // Result of first DMBoard->display->allocateFramebuffer() call +DisplayBufUnion GuiLib_DisplayBuf __attribute__((at(0xA00017D8))); // Result of first DMBoard->display->allocateFramebuffer() call (as of 26 Oct 2016) + // Must be same as FRAME_ADDRESS in GuiDisplay.h +#endif + +//============================================================================== + +#ifdef GuiConst_CLIPPING_SUPPORT_ON +//------------------------------------------------------------------------------ +static void SetClipping( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + if (X1 < 0) + X1 = 0; + if (Y1 < 0) + Y1 = 0; + if (X2 > (GuiConst_INT16S)sgl.CurLayerWidth - 1) + X2 = (GuiConst_INT16S)sgl.CurLayerWidth - 1; + if (Y2 > (GuiConst_INT16S)sgl.CurLayerHeight - 1) + Y2 = (GuiConst_INT16S)sgl.CurLayerHeight - 1; + + sgl.ClippingX1 = X1; + sgl.ClippingY1 = Y1; + sgl.ClippingX2 = X2; + sgl.ClippingY2 = Y2; +} +#endif + +//------------------------------------------------------------------------------ +static void MarkDisplayBoxRepaint( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + if (!sgl.BaseLayerDrawing) + return; + + while (Y1 <= Y2) + { + if ((GuiLib_DisplayRepaint[Y1].ByteEnd == -1) || + (X1 < GuiLib_DisplayRepaint[Y1].ByteBegin)) + GuiLib_DisplayRepaint[Y1].ByteBegin = X1; + if (X2 > GuiLib_DisplayRepaint[Y1].ByteEnd) + GuiLib_DisplayRepaint[Y1].ByteEnd = X2; + #ifdef GuiConst_VNC_REMOTE_SUPPORT_ON + if ((GuiLib_VncRepaint[Y1].ByteEnd == -1) || + (X1 < GuiLib_VncRepaint[Y1].ByteBegin)) + GuiLib_VncRepaint[Y1].ByteBegin = X1; + if (X2 > GuiLib_VncRepaint[Y1].ByteEnd) + GuiLib_VncRepaint[Y1].ByteEnd = X2; + #endif + + Y1++; + } +} + +//------------------------------------------------------------------------------ +static void ClearDisplay(void) +{ + int X,Y; + GuiConst_INT16U *PixelPtr; + + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr; + for (Y = 0; Y < (GuiConst_INT16S)sgl.CurLayerHeight; Y++) + for (X = 0; X < (GuiConst_INT16S)sgl.CurLayerWidth; X++) + { + *PixelPtr = GuiConst_PIXEL_OFF; + PixelPtr++; + } +} + +//------------------------------------------------------------------------------ +static void MakeDot( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INTCOLOR Color) +{ +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&X, &Y, &X, &Y)) +#endif + { +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + *((GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y * sgl.CurLayerWidth + (GuiConst_INT32U)X) = + (Color << 8 ) | (Color >> 8); +#else + *((GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y * sgl.CurLayerWidth + (GuiConst_INT32U)X) = Color; +#endif + MarkDisplayBoxRepaint(X, Y, X, Y); + } +} + +//------------------------------------------------------------------------------ +static GuiConst_INTCOLOR ReadDot( + GuiConst_INT16S X, + GuiConst_INT16S Y) +{ + GuiConst_INT16U *PixelPtr; + + if ((X < 0) || (X >= (GuiConst_INT16S)sgl.CurLayerWidth) || + (Y < 0) || (Y >= (GuiConst_INT16S)sgl.CurLayerHeight)) + return (0); + else + { + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y * sgl.CurLayerWidth + (GuiConst_INT32U)X; +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + return ((*PixelPtr << 8) | (*PixelPtr >> 8)); +#else + return (*PixelPtr); +#endif + } +} + +//------------------------------------------------------------------------------ +static void HorzLine( + GuiConst_INT16S X1, + GuiConst_INT16S X2, + GuiConst_INT16S Y, + GuiConst_INTCOLOR Color) +{ + GuiConst_INT16U *PixelPtr; + + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y * sgl.CurLayerWidth + (GuiConst_INT32U)X1; + while (X1 <= X2) + { +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + *PixelPtr = (Color << 8) | (Color >> 8); +#else + *PixelPtr = Color; +#endif + PixelPtr++; + X1++; + } +} + +//------------------------------------------------------------------------------ +static void VertLine( + GuiConst_INT16S X, + GuiConst_INT16S Y1, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color) +{ + GuiConst_INT16U *PixelPtr; + + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y1 * sgl.CurLayerWidth + (GuiConst_INT32U)X; + while (Y1 <= Y2) + { +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + *PixelPtr = (Color << 8) | (Color >> 8); +#else + *PixelPtr = Color; +#endif + Y1++; + PixelPtr += sgl.CurLayerWidth; + } +} + +//------------------------------------------------------------------------------ +static void DrawChar( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiLib_FontRecPtr Font, +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32S CharNdx, +#else + GuiConst_INT8U PrefixRom * CharPtr, +#endif + GuiConst_INTCOLOR Color, + GuiConst_INT8U FullPixelFill) +{ +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U *PixelData; + GuiConst_INT8U * CharPtr; +#else + GuiConst_INT8U PrefixRom *PixelData; +#endif + GuiConst_INT8U PixelPattern; + GuiConst_INT16S N; + GuiConst_INT8U YHeight; + GuiConst_INT8U PixN; + GuiConst_INT16S Bx; + GuiConst_INT16S PY, Y2; + GuiConst_INT8U PixelLineSize; +#ifndef GuiConst_FONT_UNCOMPRESSED +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U *LineCtrl; +#else + GuiConst_INT8U PrefixRom *LineCtrl; +#endif + GuiConst_INT8U LineCtrlByte; + GuiConst_INT16S LineRepeat; + GuiConst_INT16S M; + GuiConst_INT8U Finished; + GuiConst_INT16U *PixelPtr; +#endif +#ifdef GuiConst_ADV_FONTS_ON + GuiConst_INT8U PixelShade, PixelShadeInv; + GuiConst_INTCOLOR PixelColor; + GuiConst_INT8U PixelR, PixelG, PixelB; + GuiConst_INT8U ColorR, ColorG, ColorB; +#endif + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (sgl.ClippingTotal) + return; +#endif + +#ifdef GuiConst_REMOTE_FONT_DATA + if (CharNdx != sgl.CurRemoteFont) + { + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[CharNdx], + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[CharNdx + 1] - + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[CharNdx], + sgl.GuiLib_RemoteFontBuffer); + sgl.CurRemoteFont = CharNdx; + } + CharPtr = &sgl.GuiLib_RemoteFontBuffer[0]; +#endif + + if ((*(CharPtr + GuiLib_CHR_XWIDTH_OFS) == 0) || + (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) == 0)) + return; + + GuiLib_COORD_ADJUST(X, Y); + GuiLib_COLOR_ADJUST(Color); + + gl.Dummy1_8U = Font->LineSize; // To avoid compiler warning +#ifdef GuiConst_FONT_UNCOMPRESSED + PixelLineSize = Font->LineSize; + #ifdef GuiConst_ROTATED_90DEGREE + YHeight = Font->XSize; + #else + YHeight = Font->YSize; + #endif + PixelData = CharPtr + GuiLib_CHR_LINECTRL_OFS + 1; +#else + #ifdef GuiConst_ROTATED_90DEGREE + PixelLineSize = *(CharPtr + GuiLib_CHR_YHEIGHT_OFS); + YHeight = *(CharPtr + GuiLib_CHR_XWIDTH_OFS); + #else + PixelLineSize = *(CharPtr + GuiLib_CHR_XWIDTH_OFS); + YHeight = *(CharPtr + GuiLib_CHR_YHEIGHT_OFS); + #endif + LineCtrl = CharPtr + GuiLib_CHR_LINECTRL_OFS; + N = (YHeight + 7) / 8; + if (N == 0) + N++; + PixelData = LineCtrl + N; +#ifdef GuiConst_ADV_FONTS_ON + if (Font->ColorDepth == 4) + PixelLineSize = (PixelLineSize + 1) / 2; + else +#endif + PixelLineSize = (PixelLineSize + 7) / 8; +#endif + +#ifdef GuiConst_FONT_UNCOMPRESSED + +#ifdef GuiConst_ROTATED_OFF + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= Font->XSize - 1; + Y -= Font->YSize - 1; + #else + X -= Font->XSize - 1; + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + Y -= Font->YSize - 1; + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_90DEGREE_RIGHT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= Font->YSize - 1; + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= Font->YSize - 1; + Y -= Font->XSize - 1; + #else + Y -= Font->XSize - 1; + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_UPSIDEDOWN + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifndef GuiConst_MIRRORED_VERTICALLY + Y -= Font->YSize - 1; + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= Font->XSize - 1; + #else + X -= Font->XSize - 1; + Y -= Font->YSize - 1; + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_90DEGREE_LEFT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + Y -= Font->XSize - 1; + #else + X -= Font->YSize - 1; + Y -= Font->XSize - 1; + #endif + #else + #ifndef GuiConst_MIRRORED_VERTICALLY + X -= Font->YSize - 1; + #endif + #endif +#endif + +#else + +#ifdef GuiConst_ROTATED_OFF + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + Y -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + #else + X -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + Y += *(CharPtr + GuiLib_CHR_YTOP_OFS); + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + Y -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + #else + X += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + Y += *(CharPtr + GuiLib_CHR_YTOP_OFS); + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_90DEGREE_RIGHT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + Y += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + #else + X += *(CharPtr + GuiLib_CHR_YTOP_OFS); + Y += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + Y -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + #else + X += *(CharPtr + GuiLib_CHR_YTOP_OFS); + Y -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_UPSIDEDOWN + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + Y += *(CharPtr + GuiLib_CHR_YTOP_OFS); + #else + X += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + Y -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + Y += *(CharPtr + GuiLib_CHR_YTOP_OFS); + #else + X -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + Y -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_90DEGREE_LEFT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X += *(CharPtr + GuiLib_CHR_YTOP_OFS); + Y -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + #else + X -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + Y -= (*(CharPtr + GuiLib_CHR_XWIDTH_OFS) + + *(CharPtr + GuiLib_CHR_XLEFT_OFS) - 1); + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X += *(CharPtr + GuiLib_CHR_YTOP_OFS); + Y += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + #else + X -= (*(CharPtr + GuiLib_CHR_YHEIGHT_OFS) + + *(CharPtr + GuiLib_CHR_YTOP_OFS) - 1); + Y += *(CharPtr + GuiLib_CHR_XLEFT_OFS); + #endif + #endif +#endif + +#endif + +#ifdef GuiConst_ADV_FONTS_ON + ColorR = (Color & GuiConst_COLORCODING_R_MASK) >> + GuiConst_COLORCODING_R_START; + ColorG = (Color & GuiConst_COLORCODING_G_MASK) >> + GuiConst_COLORCODING_G_START; + ColorB = (Color & GuiConst_COLORCODING_B_MASK) >> + GuiConst_COLORCODING_B_START; +#endif + + PY = 0; +#ifndef GuiConst_FONT_UNCOMPRESSED + LineCtrlByte = *LineCtrl; + LineCtrlByte >>= 1; + LineCtrl++; +#endif + while (PY < YHeight) + { +#ifndef GuiConst_FONT_UNCOMPRESSED + LineRepeat = 0; + do + { + LineRepeat++; + Finished = (((LineCtrlByte & 0x01) == 0) || (PY >= YHeight - 1)); + + PY++; + if (PY % 8 == 7) + { + LineCtrlByte = *LineCtrl; + LineCtrl++; + } + else + LineCtrlByte >>= 1; + } + while (!Finished); +#endif + +#ifdef GuiConst_ADV_FONTS_ON + if (Font->ColorDepth == 4) + Bx = X; + else +#endif + Bx = X; + + for (N = 0; N < PixelLineSize; N++) + { + PixelPattern = *PixelData; + + if (PixelPattern != 0) + { +#ifdef GuiConst_ADV_FONTS_ON + if (Font->ColorDepth == 4) + { + for (PixN = 0; PixN < 2; PixN++) + { + if (PixN == 0) + PixelShade = PixelPattern & 0x0F; + else + PixelShade = (PixelPattern & 0xF0) >> 4; + if (FullPixelFill && (PixelShade > 0)) + PixelShade = 0x0F; + if ( +#ifdef GuiConst_CLIPPING_SUPPORT_ON + (Bx + PixN >= sgl.ClippingX1) && (Bx + PixN <= sgl.ClippingX2) && +#endif + (PixelShade > 0)) + { + PixelShadeInv = 15 - PixelShade; + Y2 = Y; + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y2 * sgl.CurLayerWidth + + (GuiConst_INT32U)(Bx + PixN); +#ifndef GuiConst_FONT_UNCOMPRESSED + for (M = 0; M < LineRepeat; M++) +#endif + { +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if ((Y2 >= sgl.ClippingY1) && (Y2 <= sgl.ClippingY2)) +#endif + { + if (PixelShade == 0x0F) + { +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + *PixelPtr = (Color << 8) | (Color >> 8); +#else + *PixelPtr = Color; +#endif + } + else + { + PixelColor = *PixelPtr; + PixelR = (PixelColor & GuiConst_COLORCODING_R_MASK) >> + GuiConst_COLORCODING_R_START; + PixelG = (PixelColor & GuiConst_COLORCODING_G_MASK) >> + GuiConst_COLORCODING_G_START; + PixelB = (PixelColor & GuiConst_COLORCODING_B_MASK) >> + GuiConst_COLORCODING_B_START; + PixelR = (PixelShade * ColorR + PixelShadeInv * PixelR) / 15; + PixelG = (PixelShade * ColorG + PixelShadeInv * PixelG) / 15; + PixelB = (PixelShade * ColorB + PixelShadeInv * PixelB) / 15; + PixelColor = (PixelR << GuiConst_COLORCODING_R_START) | + (PixelG << GuiConst_COLORCODING_G_START) | + (PixelB << GuiConst_COLORCODING_B_START); +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + *PixelPtr = ((PixelColor>>8)&0xFF) | ((PixelColor<<8)&0xFF00); +#else + *PixelPtr = PixelColor; +#endif + } + } + Y2++; + PixelPtr += sgl.CurLayerWidth; + } + } + } + } + else + #endif + { + for (PixN = 0; PixN < 8; PixN++) + { + if ( +#ifdef GuiConst_CLIPPING_SUPPORT_ON + (Bx + PixN >= sgl.ClippingX1) && (Bx + PixN <= sgl.ClippingX2) && +#endif + ((PixelPattern >> (7-PixN)) & 0x01)) + { + Y2 = Y; + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y2 * sgl.CurLayerWidth + + (GuiConst_INT32U)(Bx + PixN); +#ifndef GuiConst_FONT_UNCOMPRESSED + for (M = 0; M < LineRepeat; M++) +#endif + { +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if ((Y2 >= sgl.ClippingY1) && (Y2 <= sgl.ClippingY2)) +#endif + { +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + *PixelPtr = (Color << 8) | (Color >> 8); +#else + *PixelPtr = Color; +#endif + } + Y2++; + PixelPtr += sgl.CurLayerWidth; + } + } + } + } + } + + PixelData++; +#ifdef GuiConst_ADV_FONTS_ON + if (Font->ColorDepth == 4) + Bx+=2; + else +#endif + Bx+=8; + } + +#ifdef GuiConst_FONT_UNCOMPRESSED + PY++; + Y++; +#else + Y += LineRepeat; +#endif + } +} + +#ifdef GuiConst_BITMAP_SUPPORT_ON + +#define RenderPix \ +{ \ + *PixelPtr2 = *PixelDataPtr2; \ + PixelPtr2++; \ + *PixelPtr2 = *(PixelDataPtr2 + 1); \ + PixelPtr2++; \ +} + +//------------------------------------------------------------------------------ +static void ShowBitmapArea( +#ifdef GuiConst_REMOTE_BITMAP_DATA + GuiConst_INT8U * PixelDataPtr, +#else + GuiConst_INT8U PrefixRom * PixelDataPtr, +#endif + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INT32S TranspColor, + GuiConst_INT8U BitmapType) +{ +#ifdef GuiConst_REMOTE_BITMAP_DATA + GuiConst_INT8U * PixelDataPtr2; +#else + GuiConst_INT8U PrefixRom * PixelDataPtr2; +#endif + GuiConst_INT16S SizeX; + GuiConst_INT16S SizeY; + GuiConst_INT8U *PixelPtr1, *PixelPtr2; + GuiConst_INT16S I; + GuiConst_INT16U Cnt, CntPix; + GuiConst_INT8U Diff; +#ifdef GuiConst_BITMAP_COMPRESSED + GuiConst_INT16U Offset; + GuiConst_INT16S DX; +#ifdef GuiConst_REMOTE_BITMAP_DATA + GuiConst_INT8U * RemPixelDataPtr; + GuiConst_INT8U * LinePixelDataPtr; +#else + GuiConst_INT8U PrefixRom * RemPixelDataPtr; + GuiConst_INT8U PrefixRom * LinePixelDataPtr; +#endif +#endif + +#ifdef GuiConst_DISPLAY_BIG_ENDIAN + TranspColor = ((TranspColor&0xFF)<<8)|((TranspColor&0xFF00)>>8); +#endif + + SizeX = (GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + SizeX += 256*(GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + SizeY = (GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + SizeY += 256*(GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + +#ifdef GuiConst_ROTATED_90DEGREE + sgl.BitmapWriteX2 = X + SizeY - 1; + sgl.BitmapWriteY2 = Y + SizeX - 1; +#else + sgl.BitmapWriteX2 = X + SizeX - 1; + sgl.BitmapWriteY2 = Y + SizeY - 1; +#endif + + GuiLib_COORD_ADJUST(X, Y); + GuiLib_COLOR_ADJUST_TRANSP(TranspColor); + + if (BitmapType == GuiLib_AREA_BITMAP) + { + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + } + +#ifdef GuiConst_ROTATED_OFF + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= SizeX - 1; + Y -= SizeY - 1; + #else + X -= SizeX - 1; + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + Y -= SizeY - 1; + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_90DEGREE_RIGHT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= SizeX - 1; + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= SizeX - 1; + Y -= SizeY - 1; + #else + Y -= SizeY - 1; + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_UPSIDEDOWN + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifndef GuiConst_MIRRORED_VERTICALLY + Y -= SizeY - 1; + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + X -= SizeX - 1; + #else + X -= SizeX - 1; + Y -= SizeY - 1; + #endif + #endif +#endif +#ifdef GuiConst_ROTATED_90DEGREE_LEFT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + Y -= SizeY - 1; + #else + X -= SizeX - 1; + Y -= SizeY - 1; + #endif + #else + #ifndef GuiConst_MIRRORED_VERTICALLY + X -= SizeX - 1; + #endif + #endif +#endif + + if (BitmapType == GuiLib_AREA_BITMAP) + { + if ((X1 > X + SizeX - 1) || (X2 < X) || (Y1 > Y + SizeY - 1) || (Y2 < Y)) + return; + if (X1 < X) + X1 = X; + if (X2 > X + SizeX - 1) + X2 = X + SizeX - 1; + if (Y1 < Y) + Y1 = Y; + if (Y2 > Y + SizeY - 1) + Y2 = Y + SizeY - 1; + } + else + { + X2 = X + SizeX - 1; + Y2 = Y + SizeY - 1; + + OrderCoord(&X, &X2); + OrderCoord(&Y, &Y2); + + X1 = X; + Y1 = Y; + } + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (!CheckRect(&X1, &Y1, &X2, &Y2)) + return; +#endif + + MarkDisplayBoxRepaint(X1, Y1, X2, Y2); // Before changing Y1 + +#ifdef GuiConst_BITMAP_COMPRESSED + while (Y < Y1) + { + Offset = (GuiConst_INT16U)*PixelDataPtr; + PixelDataPtr++; + Offset += 256 * (GuiConst_INT16U)*PixelDataPtr; + PixelDataPtr++; + if (Offset != 0) + { + LinePixelDataPtr = PixelDataPtr; + PixelDataPtr += Offset - 2; + } + + Y++; + } + DX = X1 - X; +#else + PixelDataPtr += 2 * (SizeX * (Y1 - Y) + (X1 - X)); + Diff = 1; +#endif + PixelPtr1 = sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y1 * sgl.CurLayerLineSize + (GuiConst_INT32U)(2 * X1); + while (Y1 <= Y2) + { + PixelPtr2 = PixelPtr1; + +#ifdef GuiConst_BITMAP_COMPRESSED + Offset = (GuiConst_INT16U)*PixelDataPtr; + PixelDataPtr++; + Offset += 256 * (GuiConst_INT16U)*PixelDataPtr; + PixelDataPtr++; + if (Offset == 0) + { + RemPixelDataPtr = PixelDataPtr; + PixelDataPtr = LinePixelDataPtr; + } + else + LinePixelDataPtr = PixelDataPtr; + + Cnt = 0; + X = DX; + while (X > 0) + { + Diff = *PixelDataPtr; + Cnt = Diff & 0x7F; + Diff >>= 7; + PixelDataPtr++; + + if (X >= Cnt) + { + if (Diff) + PixelDataPtr += 2 * Cnt; + else + PixelDataPtr += 2; + X -= Cnt; + Cnt = 0; + } + else + { + if (Diff) + PixelDataPtr += 2 * X; + Cnt -= X; + X = 0; + } + } +#endif + + PixelDataPtr2 = PixelDataPtr; + for (X = X1; X <= X2; X++) + { +#ifdef GuiConst_BITMAP_COMPRESSED + if (Cnt == 0) + { + Diff = *PixelDataPtr2; + Cnt = Diff & 0x7F; + Diff >>= 7; + PixelDataPtr2++; + } + CntPix = GuiLib_GET_MIN(Cnt, X2 - X + 1); + Cnt -= CntPix; +#else + CntPix = X2 - X + 1; +#endif + X += CntPix - 1; + + if (Diff) + { + if (TranspColor == -1) + { + CopyBytes(PixelPtr2, PixelDataPtr2, 2 * CntPix); + PixelPtr2 += 2 * CntPix; + PixelDataPtr2 += 2 * CntPix; + } + else + { + while (CntPix > 0) + { + if (*(GuiConst_INT16U*)PixelDataPtr2 == + (GuiConst_INT16U)TranspColor) + PixelPtr2 += 2; + else + { + RenderPix; + } + + CntPix--; + PixelDataPtr2 += 2; + } + } + } +#ifdef GuiConst_BITMAP_COMPRESSED + else + { + if ((TranspColor == -1) || + (*(GuiConst_INT16U*)PixelDataPtr2 != (GuiConst_INT16U)TranspColor)) + { + while (CntPix > 0) + { + RenderPix; + CntPix--; + } + } + else + PixelPtr2 += 2 * CntPix; + + PixelDataPtr2 += 2; + } + + if ((X > X2) && Diff) + PixelDataPtr2 += 2 * (X - X2); + Cnt = 0; +#endif + } + +#ifdef GuiConst_BITMAP_COMPRESSED + if (Offset == 0) + PixelDataPtr = RemPixelDataPtr; + else + PixelDataPtr = LinePixelDataPtr + Offset - 2; +#else + PixelDataPtr += 2 * SizeX; +#endif + + Y1++; + PixelPtr1 += sgl.CurLayerLineSize; + } +} +#endif + +//============================================================================== + +//------------------------------------------------------------------------------ +void GuiLib_InvertBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + GuiConst_INT16S X; + GuiConst_INT16U *PixelPtr; + GuiConst_INT32U DeltaLineSize; + + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (CheckRect (&X1, &Y1, &X2, &Y2)) +#endif + { + MarkDisplayBoxRepaint(X1, Y1, X2, Y2); + + PixelPtr = (GuiConst_INT16U*)sgl.CurLayerBufPtr + + (GuiConst_INT32U)Y1 * sgl.CurLayerWidth + (GuiConst_INT32U)X1; + DeltaLineSize = sgl.CurLayerWidth - (GuiConst_INT32U)(X2 - X1 + 1); + while (Y1 <= Y2) + { + for (X = X1; X <= X2; X++) + { + *PixelPtr = ~*PixelPtr; + PixelPtr++; + } + Y1++; + PixelPtr += DeltaLineSize; + } + } +} +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiItems.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiItems.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,5704 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* v6.0.9.005 */ +/* */ +/* GuiLib.c include file - do NOT reference it in your linker setup */ +/* */ +/* ************************************************************************ */ + +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +static GuiConst_INT8U GetItemByte( + GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) +{ + GuiConst_INT8U D; +#ifdef GuiConst_AVRGCC_COMPILER + D = ReadBytePtr(*ItemDataPtrPtr); +#else +#ifdef GuiConst_AVR_COMPILER_FLASH_RAM + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; +#else +#ifdef GuiConst_ICC_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; +#else +#ifdef GuiConst_CODEVISION_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr; + ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; +#else + D = **ItemDataPtrPtr; +#endif +#endif +#endif +#endif + (*ItemDataPtrPtr)++; + return (D); +} +//------------------------------------------------------------------------------ +static GuiConst_INT16S GetItemWord( + GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) +{ + GuiConst_INT16U D; + +#ifdef GuiConst_AVRGCC_COMPILER + D = ReadBytePtr(*ItemDataPtrPtr); + (*ItemDataPtrPtr)++; + D += 0x0100 * (GuiConst_INT16U)ReadBytePtr(*ItemDataPtrPtr); +#else +#ifdef GuiConst_AVR_COMPILER_FLASH_RAM + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x0100 * (*ItemFlashPtr); +#else +#ifdef GuiConst_ICC_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x0100 * (*ItemFlashPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr; + ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x0100 * (*ItemFlashPtr); +#else + D = **ItemDataPtrPtr; + (*ItemDataPtrPtr)++; + D += 0x0100 * (GuiConst_INT16U)**ItemDataPtrPtr; +#endif +#endif +#endif +#endif + (*ItemDataPtrPtr)++; + return ((GuiConst_INT16S) D); +} +//------------------------------------------------------------------------------ +#ifdef GuiLib_COLOR_BYTESIZE_3 +static GuiConst_INT32S GetItemTriple( + GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) +{ + GuiConst_INT32U D; + +#ifdef GuiConst_AVRGCC_COMPILER + D = ReadBytePtr(*ItemDataPtrPtr); + (*ItemDataPtrPtr)++; + D += 0x00000100 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); + (*ItemDataPtrPtr)++; + D += 0x00010000 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); +#else +#ifdef GuiConst_AVR_COMPILER_FLASH_RAM + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00000100 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00010000 * (*ItemFlashPtr); +#else +#ifdef GuiConst_ICC_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00000100 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00010000 * (*ItemFlashPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr; + ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00000100 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00010000 * (*ItemFlashPtr); +#else + D = **ItemDataPtrPtr; + (*ItemDataPtrPtr)++; + D += 0x00000100 * (GuiConst_INT32U)**ItemDataPtrPtr; + (*ItemDataPtrPtr)++; + D += 0x00010000 * (GuiConst_INT32U)**ItemDataPtrPtr; +#endif +#endif +#endif +#endif + (*ItemDataPtrPtr)++; + return ((GuiConst_INT32S) D); +} +#endif + +#ifdef GuiLib_GETITEMLONG +//------------------------------------------------------------------------------ +static GuiConst_INT32S GetItemLong( + GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr) +{ + GuiConst_INT32U D; + +#ifdef GuiConst_AVRGCC_COMPILER + D = ReadBytePtr(*ItemDataPtrPtr); + (*ItemDataPtrPtr)++; + D += 0x00000100 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); + (*ItemDataPtrPtr)++; + D += 0x00010000 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); + (*ItemDataPtrPtr)++; + D += 0x01000000 * (GuiConst_INT32U)ReadBytePtr(*ItemDataPtrPtr); +#else +#ifdef GuiConst_AVR_COMPILER_FLASH_RAM + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00000100 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00010000 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x01000000 * (*ItemFlashPtr); +#else +#ifdef GuiConst_ICC_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr = + (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00000100 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00010000 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x01000000 * (*ItemFlashPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + GuiConst_INT8U PrefixRom * ItemFlashPtr; + ItemFlashPtr = (GuiConst_INT8U PrefixRom *)*ItemDataPtrPtr; + D = *ItemFlashPtr; + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00000100 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x00010000 * (*ItemFlashPtr); + (*ItemDataPtrPtr)++; + ItemFlashPtr++; + D += 0x01000000 * (*ItemFlashPtr); +#else + D = **ItemDataPtrPtr; + (*ItemDataPtrPtr)++; + D += 0x00000100 * (GuiConst_INT32U)**ItemDataPtrPtr; + (*ItemDataPtrPtr)++; + D += 0x00010000 * (GuiConst_INT32U)**ItemDataPtrPtr; + (*ItemDataPtrPtr)++; + D += 0x01000000 * (GuiConst_INT32U)**ItemDataPtrPtr; +#endif +#endif +#endif +#endif + (*ItemDataPtrPtr)++; + return ((GuiConst_INT32S) D); +} +#endif + +//------------------------------------------------------------------------------ +#ifdef GuiLib_COLOR_BYTESIZE_1 +#define GetItemColor GetItemByte +#endif +#ifdef GuiLib_COLOR_BYTESIZE_2 +#define GetItemColor GetItemWord +#endif +#ifdef GuiLib_COLOR_BYTESIZE_3 +#define GetItemColor GetItemTriple +#endif + +//------------------------------------------------------------------------------ +GuiConst_TEXT PrefixGeneric *GetItemTextPtr(GuiConst_INT8U index) +{ +#ifndef GuiConst_REMOTE_TEXT_DATA +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT16U TxtReadSize; +#endif +#endif + + if (index > 2) + return NULL; + +#ifdef GuiConst_REMOTE_TEXT_DATA + sgl.CurItem.TextLength[index] = GetRemoteText(sgl.CurItem.TextIndex[index]); + sgl.CurItem.TextPtr[index] = &sgl.GuiLib_RemoteTextBuffer[0]; + +#else +#ifdef GuiConst_REMOTE_STRUCT_DATA + + TxtReadSize = sgl.CurItem.TextLength[index] + 1; +#ifndef GuiConst_CHARMODE_ANSI + TxtReadSize *= 2; +#endif + + GuiLib_RemoteDataReadBlock(sgl.CurItem.TextOffset[index], + TxtReadSize, + (GuiConst_INT8U PrefixGeneric*)&sgl.GuiLib_RemoteStructText); + sgl.CurItem.TextPtr[index] = (GuiConst_TEXT PrefixGeneric*)&sgl.GuiLib_RemoteStructText; +#endif +#endif // GuiConst_REMOTE_TEXT_DATA + + return sgl.CurItem.TextPtr[index]; + + +} + +//------------------------------------------------------------------------------ +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE +#define GuiItem_TEMP_PTR_NEEDED +#endif +#ifdef GuiConst_ITEM_BUTTON_INUSE +#ifndef GuiItem_TEMP_PTR_NEEDED +#define GuiItem_TEMP_PTR_NEEDED +#endif +#endif +#ifdef GuiConst_ITEM_CHECKBOX_INUSE +#ifndef GuiItem_TEMP_PTR_NEEDED +#define GuiItem_TEMP_PTR_NEEDED +#endif +#endif + +static void DrawItem( + GuiConst_INT8U ColorInvert) +{ + GuiConst_INT16U StructToCallIndex; + GuiConst_INT32S VarValue; + GuiConst_INT16S I, N; +#ifdef GuiConst_ITEM_CHECKBOX_INUSE + GuiConst_INT8U CheckmarkMode; +#endif +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + GuiConst_INT16S RemYMemory; +#endif +#ifdef GuiConst_ITEM_BUTTON_INUSE + GuiConst_INT8U DisabledGlyphColorInUse; + GuiConst_INT8U DisabledTextColorInUse; + GuiConst_INT16S CX, CY; + GuiConst_INT16S RemX1, RemY1; + GuiConst_INT16S GX1, GX2, GY1, GY2; + GuiConst_INTCOLOR ButtonColor; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S RemClippingX1, RemClippingY1, RemClippingX2, RemClippingY2; +#endif // GuiConst_CLIPPING_SUPPORT_ON +#endif + GuiConst_INT16U StrLen; +#ifdef GuiItem_TEMP_PTR_NEEDED + TextParRec TempTextPar; +#endif +#ifdef GuiConst_CURSOR_SUPPORT_ON + GuiConst_INT8U IsCursorField; + GuiConst_INT8U FoundActiveCursorField; +#endif + GuiConst_INTCOLOR ForeColor; + GuiConst_INTCOLOR BackColor; + GuiConst_INT8U BackColorTransp; + GuiConst_INT32S BackColor2; +#ifndef GuiConst_CHARMODE_ANSI + GuiConst_INT16U P; +#endif + GuiConst_TEXT PrefixGeneric *CharPtr; + GuiConst_INT16S X1, X2, Y1, Y2; +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GuiConst_INT16S CX1, CX2, CY1, CY2; + GuiConst_INT16S Y; + GuiConst_INT16S SourceLayerIndexNo; + GuiConst_INT16S DestLayerIndexNo; + GuiConst_INT8U PrefixLocate *DestAddress; + GuiConst_INT16U DestLineSize; + GuiConst_INT16S DestX; + GuiConst_INT16S DestY; + GuiConst_INT16U DestWidth; + GuiConst_INT16U DestHeight; + GuiConst_INT8U PrefixLocate *SourceAddress; + GuiConst_INT16U SourceLineSize; + GuiConst_INT16S SourceX; + GuiConst_INT16S SourceY; + GuiConst_INT16U SourceWidth; + GuiConst_INT16U SourceHeight; + GuiConst_INT32S FilterPars[10]; +#endif +#ifdef GuiConst_ITEM_STRUCTCOND_INUSE + GuiConst_INT8U FirstRound; +#endif +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + GuiConst_INT32S TouchSearch; + GuiConst_INT32S TouchIndex; +#endif +#ifdef GuiConst_TEXTBOX_FIELDS_ON + GuiConst_INT16S found; + GuiConst_INT16S PrefixLocate *ScrollPos; +#endif + +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + if (!sgl.InitialDrawing) + { + sgl.CoordOrigoX = sgl.CurItem.CoordOrigoX; + sgl.CoordOrigoY = sgl.CurItem.CoordOrigoY; + } +#endif +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (!sgl.InitialDrawing && sgl.DisplayWriting) + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif + + SetCurFont(sgl.CurItem.TextPar[0].FontIndex); + +#ifdef GuiConst_CURSOR_SUPPORT_ON + IsCursorField = (sgl.CursorInUse && (sgl.CurItem.CursorFieldNo >= 0)); + FoundActiveCursorField = + (IsCursorField && (GuiLib_ActiveCursorFieldNo == sgl.CurItem.CursorFieldNo)); + if (FoundActiveCursorField) + sgl.CursorActiveFieldFound = 1; +#endif + + sgl.AutoRedrawSaveIndex = -1; + + if ((sgl.InitialDrawing) || (sgl.AutoRedrawUpdate == GuiLib_TRUE)) + { +#ifdef GuiConst_CURSOR_SUPPORT_ON + if ((sgl.CurItem.CursorFieldNo >= 0) && (sgl.CursorFieldFound == -1)) + sgl.CursorFieldFound = sgl.CurItem.CursorFieldNo; + + if (IsCursorField) + { + sgl.CurItem.CursorFieldLevel++; + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.NextScrollLineReading) + { + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FIELDSCROLLBOX; + sgl.CurItem.CursorScrollBoxIndex = sgl.GlobalScrollBoxIndex; + } + else +#endif + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FIELDSCROLLBOX; + +#ifndef GuiConst_CURSOR_FIELDS_OFF + if (!(sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_AUTOREDRAWFIELD)) + sgl.AutoRedrawSaveIndex = AutoRedraw_InsertCursor(&sgl.CurItem, 0, sgl.DisplayLevel); +#endif + } +#endif // GuiConst_CURSOR_SUPPORT_ON + + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_AUTOREDRAWFIELD) + { + sgl.AutoRedrawSaveIndex = AutoRedraw_Insert(&sgl.CurItem, 0, sgl.DisplayLevel); + +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (IsCursorField) + AutoRedraw_SetAsCursor(sgl.AutoRedrawSaveIndex); +#endif // GuiConst_CURSOR_SUPPORT_ON + } + } + + switch (ColorInvert) + { + case GuiLib_COL_INVERT_OFF: + sgl.SwapColors = 0; + break; + + case GuiLib_COL_INVERT_ON: + sgl.SwapColors = 1; + break; + + case GuiLib_COL_INVERT_IF_CURSOR: +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (FoundActiveCursorField) + sgl.SwapColors = 1; +#else + sgl.SwapColors = 0; +#endif + break; + } + if (sgl.SwapColors) + { + ForeColor = sgl.CurItem.BarForeColor; + BackColor = sgl.CurItem.BarBackColor; + BackColorTransp = + ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_BARTRANSPARENT) > 0); + } + else + { + ForeColor = sgl.CurItem.ForeColor; + BackColor = sgl.CurItem.BackColor; + BackColorTransp = + ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_TRANSPARENT) > 0); + } + + sgl.CurItem.Drawn = 0; + switch (sgl.CurItem.ItemType) + { + case GuiLib_ITEM_CLEARAREA: + if (sgl.DisplayWriting) + { + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + if (!BackColorTransp) + GuiLib_FillBox(X1, Y1, X2, Y2, BackColor); + UpdateDrawLimits(X1, Y1, X2, Y2); + } + + break; + + case GuiLib_ITEM_TEXT: + if (sgl.DisplayWriting) + { + if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0) + { + DrawBackBox(BackColor, BackColorTransp, 0); + UpdateDrawLimits(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2); + } + + DRAW_ROM_TEXT(GetItemTextPtr(0), + sgl.CurItem.TextLength[0], + 0, + ForeColor, + BackColor, + BackColorTransp); + + UpdateDrawLimits(sgl.FontWriteX1, sgl.FontWriteY1, sgl.FontWriteX2, sgl.FontWriteY2); + } + + break; + + case GuiLib_ITEM_TEXTBLOCK: + if (sgl.DisplayWriting) + { +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE +#ifdef GuiConst_TEXTBOX_FIELDS_ON + ScrollPos = TextBox_Scroll_GetPosRec( + sgl.CurItem.CompPars.CompTextBox.ScrollIndex); + + if (ScrollPos != NULL) + sgl.CurItem.CompPars.CompTextBox.ScrollPos = *ScrollPos; +#endif + DRAW_ROM_TEXTBLOCK(GetItemTextPtr(0), + sgl.CurItem.TextLength[0], + 0, + ForeColor, + BackColor, + BackColorTransp); + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + if (ScrollPos != NULL) + *ScrollPos = sgl.CurItem.CompPars.CompTextBox.ScrollPos; +#endif + + UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X2, sgl.CurItem.Y2); +#endif + } + + break; + + case GuiLib_ITEM_VAR: + if (sgl.DisplayWriting) + { +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 1; +#endif + + if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0) + { + DrawBackBox(BackColor, BackColorTransp, 0); + UpdateDrawLimits(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2); + } + + if (sgl.CurItem.VarPtr != 0) + { + if (sgl.CurItem.VarType == GuiLib_VAR_STRING) + { + CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.CurItem.VarPtr; +#ifdef GuiConst_CHARMODE_ANSI + StrLen = strlen(CharPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr); +#else + StrLen = GuiLib_UnicodeStrLen(CharPtr); +#endif +#endif + } + else + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + StrLen = DataNumStr(VarValue, sgl.CurItem.VarType, 0); +#ifdef GuiConst_CHARMODE_ANSI + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr; +#else + for (P = 0; P <= StrLen; P++) + sgl.VarNumUnicodeTextStr[P] = sgl.VarNumTextStr[P]; + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumUnicodeTextStr; +#endif + } + +#ifdef GuiConst_CHARMODE_ANSI + strcpy(sgl.AnsiTextBuf, CharPtr); + DrawText(sgl.AnsiTextBuf, + StrLen, + 0, + ForeColor, + BackColor, + BackColorTransp); +#else + GuiLib_UnicodeStrCpy(sgl.UnicodeTextBuf, CharPtr); + DrawText(sgl.UnicodeTextBuf, + StrLen, + 0, + ForeColor, + BackColor, + BackColorTransp); +#endif + } + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 0; +#endif + + UpdateDrawLimits(sgl.FontWriteX1, sgl.FontWriteY1, sgl.FontWriteX2, sgl.FontWriteY2); + } + + break; + + case GuiLib_ITEM_VARBLOCK: + if (sgl.DisplayWriting) + { +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 1; +#endif + + if (sgl.CurItem.VarPtr != 0) + { + if (sgl.CurItem.VarType == GuiLib_VAR_STRING) + { + CharPtr = (GuiConst_TEXT PrefixGeneric *)sgl.CurItem.VarPtr; +#ifdef GuiConst_CHARMODE_ANSI + StrLen = strlen(CharPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr); +#else + StrLen = GuiLib_UnicodeStrLen(CharPtr); +#endif +#endif + } + else + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + StrLen = DataNumStr(VarValue, sgl.CurItem.VarType, 0); +#ifdef GuiConst_CHARMODE_ANSI + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr; +#else + for (P = 0; P <= StrLen; P++) + sgl.VarNumUnicodeTextStr[P] = sgl.VarNumTextStr[P]; + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumUnicodeTextStr; +#endif + } +#ifdef GuiConst_TEXTBOX_FIELDS_ON + ScrollPos = TextBox_Scroll_GetPosRec( + sgl.CurItem.CompPars.CompTextBox.ScrollIndex); + + if (ScrollPos != NULL) + sgl.CurItem.CompPars.CompTextBox.ScrollPos = *ScrollPos; +#endif + +#ifdef GuiConst_CHARMODE_ANSI + strcpy(sgl.AnsiTextBuf, CharPtr); + DrawTextBlock(sgl.AnsiTextBuf, + StrLen, + 0, + ForeColor, + BackColor, + BackColorTransp); +#else + GuiLib_UnicodeStrCpy(sgl.UnicodeTextBuf, CharPtr); + DrawTextBlock(sgl.UnicodeTextBuf, + StrLen, + 0, + ForeColor, + BackColor, + BackColorTransp); +#endif + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + if (ScrollPos != NULL) + *ScrollPos = sgl.CurItem.CompPars.CompTextBox.ScrollPos; +#endif + + } + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 0; +#endif + + UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X2, sgl.CurItem.Y2); +#endif + } + + break; + + case GuiLib_ITEM_DOT: + if (sgl.DisplayWriting) + { + GuiLib_Dot(sgl.CurItem.X1, sgl.CurItem.Y1, ForeColor); + UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, sgl.CurItem.X1, sgl.CurItem.Y1); + } + + break; + + case GuiLib_ITEM_LINE: + if (sgl.DisplayWriting) + { + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_PATTERNEDLINE) + GuiLib_LinePattern(X1, Y1, X2, Y2, sgl.CurItem.LinePattern, ForeColor); + else + GuiLib_Line(X1, Y1, X2, Y2, ForeColor); + UpdateDrawLimits(X1, Y1, X2, Y2); + } + break; + + case GuiLib_ITEM_FRAME: + if (sgl.DisplayWriting) + { + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + if (sgl.CurItem.FrameThickness == 0) + N = sgl.ThicknessMemory; + else + N = sgl.CurItem.FrameThickness; + DrawBorderBox(X1, Y1, X2, Y2, ForeColor, BackColor, BackColorTransp, N); + UpdateDrawLimits(X1, Y1, X2, Y2); + } + + break; + + case GuiLib_ITEM_ROUNDEDFRAME: + if (sgl.DisplayWriting) + { + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + + if (BackColorTransp) + BackColor2 = GuiLib_NO_COLOR; + else + BackColor2 = BackColor; + + if (sgl.CurItem.R1 <= 0) + DrawBorderBox( + X1, Y1, X2, Y2, + ForeColor, BackColor, BackColorTransp, 1); + else + { + Ellipse( + X1 + sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, BackColor2, 0, 0, 1, 0); + if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) + { + GuiLib_HLine(X1 + sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y1, ForeColor); + if (!BackColorTransp) + GuiLib_FillBox( + X1 + sgl.CurItem.R1, Y1 + 1, X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, + BackColor); + } + Ellipse( + X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, BackColor2, 0, 0, 0, 1); + if (Y2 - Y1 + 1 - 2 * sgl.CurItem.R1 > 0) + { + GuiLib_VLine(X1, Y1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, ForeColor); + if (!BackColorTransp) + GuiLib_FillBox( + X1 + 1, Y1 + sgl.CurItem.R1, X2 - 1, Y2 - sgl.CurItem.R1, BackColor); + GuiLib_VLine(X2 , Y1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, ForeColor); + } + Ellipse( + X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, BackColor2, 0, 1, 0, 0); + if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) + { + if (!BackColorTransp) + GuiLib_FillBox( + X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y2 - 1, + BackColor); + GuiLib_HLine(X1 + sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y2, ForeColor); + } + Ellipse( + X2 - sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, BackColor2, 1, 0, 0, 0); + } + } + break; + + case GuiLib_ITEM_BLOCK: + if (sgl.DisplayWriting) + { + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + GuiLib_FillBox(X1, Y1, X2, Y2, ForeColor); + UpdateDrawLimits(X1, Y1, X2, Y2); + } + + break; + + case GuiLib_ITEM_ROUNDEDBLOCK: + if (sgl.DisplayWriting) + { + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + + if (sgl.CurItem.R1 <= 0) + GuiLib_FillBox(X1, Y1, X2, Y2, ForeColor); + else + { + Ellipse( + X1 + sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, ForeColor, 0, 0, 1, 0); + if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) + GuiLib_FillBox( + X1 + sgl.CurItem.R1, Y1, X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, + ForeColor); + Ellipse( + X2 - sgl.CurItem.R1, Y1 + sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, ForeColor, 0, 0, 0, 1); + if (Y2 - Y1 + 1 - 2 * sgl.CurItem.R1 > 0) + GuiLib_FillBox(X1, Y1 + sgl.CurItem.R1, X2, Y2 - sgl.CurItem.R1, ForeColor); + Ellipse( + X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, ForeColor, 0, 1, 0, 0); + if (X2 - X1 + 1 - 2 * sgl.CurItem.R1 > 0) + GuiLib_FillBox( + X1 + sgl.CurItem.R1, Y2 - sgl.CurItem.R1, X2 - sgl.CurItem.R1, Y2, + ForeColor); + Ellipse( + X2 - sgl.CurItem.R1, Y2 - sgl.CurItem.R1, sgl.CurItem.R1, sgl.CurItem.R1, + ForeColor, ForeColor, 1, 0, 0, 0); + } + } + break; + + case GuiLib_ITEM_CIRCLE: + if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0)) + { + if (BackColorTransp) + BackColor2 = GuiLib_NO_COLOR; + else + BackColor2 = BackColor; + if ((sgl.CurItem.FrameThickness == 0xFF) && + !(sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CIRCLE_IF)) + { + Ellipse(sgl.CurItem.X1 + sgl.CurItem.R1, + sgl.CurItem.Y1, + sgl.CurItem.R1, + sgl.CurItem.R1, + ForeColor, BackColor2, + 1, 1, 1, 1); + UpdateDrawLimits(sgl.CurItem.X1, + sgl.CurItem.Y1 - sgl.CurItem.R1, + sgl.CurItem.X1 + 2 * sgl.CurItem.R1, + sgl.CurItem.Y1 + sgl.CurItem.R1); + } + else + { + Circle(sgl.CurItem.X1 + sgl.CurItem.R1, + sgl.CurItem.Y1, + sgl.CurItem.R1, + ForeColor, + sgl.CurItem.FrameThickness & 0x01, + sgl.CurItem.FrameThickness & 0x02, + sgl.CurItem.FrameThickness & 0x04, + sgl.CurItem.FrameThickness & 0x08, + sgl.CurItem.FrameThickness & 0x10, + sgl.CurItem.FrameThickness & 0x20, + sgl.CurItem.FrameThickness & 0x40, + sgl.CurItem.FrameThickness & 0x80, + sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CIRCLE_IF); + X1 = sgl.CurItem.X1 + sgl.CurItem.R1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X1 + sgl.CurItem.R1; + Y2 = sgl.CurItem.Y1; + if (sgl.CurItem.FrameThickness & 0xC3) + X2 += sgl.CurItem.R1; + if (sgl.CurItem.FrameThickness & 0x3C) + X1 -= sgl.CurItem.R1; + if (sgl.CurItem.FrameThickness & 0xF0) + Y1 -= sgl.CurItem.R1; + if (sgl.CurItem.FrameThickness & 0x0F) + Y2 += sgl.CurItem.R1; + UpdateDrawLimits(X1, Y1, X2, Y2); + } + } + break; + + case GuiLib_ITEM_QUARTERCIRCLE: + if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0)) + { + if (BackColorTransp) + BackColor2 = GuiLib_NO_COLOR; + else + BackColor2 = BackColor; + + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + Ellipse(X1 + sgl.CurItem.R1, + Y1, + sgl.CurItem.R1, + sgl.CurItem.R1, + ForeColor, BackColor2, + (sgl.CurItem.FrameThickness == 0), + (sgl.CurItem.FrameThickness == 1), + (sgl.CurItem.FrameThickness == 2), + (sgl.CurItem.FrameThickness == 3)); + + switch (sgl.CurItem.FrameThickness) + { + case 1: + X1 += sgl.CurItem.R1; + break; + case 2: + X1 += sgl.CurItem.R1; + Y1 += sgl.CurItem.R1; + break; + case 3: + Y1 += sgl.CurItem.R1; + break; + } + UpdateDrawLimits(sgl.CurItem.X1, + sgl.CurItem.Y1, + sgl.CurItem.X1 + sgl.CurItem.R1, + sgl.CurItem.Y1 + sgl.CurItem.R1); + } + break; + + case GuiLib_ITEM_ELLIPSE: + if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0) && (sgl.CurItem.R2 >= 0)) + { + if (BackColorTransp) + BackColor2 = GuiLib_NO_COLOR; + else + BackColor2 = BackColor; + Ellipse(sgl.CurItem.X1 + sgl.CurItem.R1, + sgl.CurItem.Y1, + sgl.CurItem.R1, + sgl.CurItem.R2, + ForeColor, BackColor2, 1, 1, 1, 1); + + UpdateDrawLimits(sgl.CurItem.X1, + sgl.CurItem.Y1 - sgl.CurItem.R2, + sgl.CurItem.X1 + 2 * sgl.CurItem.R1, + sgl.CurItem.Y1 + sgl.CurItem.R2); + } + break; + + case GuiLib_ITEM_QUARTERELLIPSE: + if (sgl.DisplayWriting && (sgl.CurItem.R1 >= 0) && (sgl.CurItem.R2 >= 0)) + { + if (BackColorTransp) + BackColor2 = GuiLib_NO_COLOR; + else + BackColor2 = BackColor; + + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + Ellipse(X1 + sgl.CurItem.R1, + Y1, + sgl.CurItem.R1, + sgl.CurItem.R2, + ForeColor, BackColor2, + (sgl.CurItem.FrameThickness == 0), + (sgl.CurItem.FrameThickness == 1), + (sgl.CurItem.FrameThickness == 2), + (sgl.CurItem.FrameThickness == 3)); + + switch (sgl.CurItem.FrameThickness) + { + case 1: + X1 += sgl.CurItem.R1; + break; + case 2: + X1 += sgl.CurItem.R1; + Y1 += sgl.CurItem.R2; + break; + case 3: + Y1 += sgl.CurItem.R2; + break; + } + UpdateDrawLimits(sgl.CurItem.X1, + sgl.CurItem.Y1, + sgl.CurItem.X1 + sgl.CurItem.R1, + sgl.CurItem.Y1 + sgl.CurItem.R2); + } + break; + + case GuiLib_ITEM_BITMAP: + case GuiLib_ITEM_BACKGROUND: +#ifdef GuiConst_BITMAP_SUPPORT_ON + if (sgl.DisplayWriting) + { + if (sgl.CommonByte6 & 0x02) + BackColor2 = sgl.CurItem.CompPars.CompBitmap.TranspColor; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.StructToCallIndex, + sgl.CurItem.X1, + sgl.CurItem.Y1, + BackColor2); + UpdateDrawLimits(sgl.CurItem.X1, sgl.CurItem.Y1, + sgl.BitmapWriteX2, sgl.BitmapWriteY2); + } + + if (sgl.CurItem.ItemType == GuiLib_ITEM_BACKGROUND) + { + sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].InUse = 1; + sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].Index = + sgl.CurItem.StructToCallIndex; + sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].X = sgl.CurItem.X1; + sgl.BackgrBitmapAry[sgl.GlobalBackgrBitmapIndex].Y = sgl.CurItem.Y1; + if (sgl.GlobalBackgrBitmapIndex < GuiConst_MAX_BACKGROUND_BITMAPS - 1) + sgl.GlobalBackgrBitmapIndex++; + } +#endif + + break; + + case GuiLib_ITEM_ACTIVEAREA: + if (sgl.DisplayWriting) + { +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CLIPPING) + { + sgl.CurItem.ClipRectX1 = sgl.CurItem.X1; + sgl.CurItem.ClipRectY1 = sgl.CurItem.Y1; + sgl.CurItem.ClipRectX2 = sgl.CurItem.X2; + sgl.CurItem.ClipRectY2 = sgl.CurItem.Y2; + sgl.ActiveAreaX1 = sgl.CurItem.X1; + sgl.ActiveAreaY1 = sgl.CurItem.Y1; + sgl.ActiveAreaX2 = sgl.CurItem.X2; + sgl.ActiveAreaY2 = sgl.CurItem.Y2; + OrderCoord(&sgl.ActiveAreaX1, &sgl.ActiveAreaX2); + OrderCoord(&sgl.ActiveAreaY1, &sgl.ActiveAreaY2); +#ifdef GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING + if (sgl.ActiveAreaX1 < sgl.DisplayActiveAreaX1) + sgl.ActiveAreaX1 = sgl.DisplayActiveAreaX1; + if (sgl.ActiveAreaY1 < sgl.DisplayActiveAreaY1) + sgl.ActiveAreaY1 = sgl.DisplayActiveAreaY1; + if (sgl.ActiveAreaX2 > sgl.DisplayActiveAreaX2) + sgl.ActiveAreaX2 = sgl.DisplayActiveAreaX2; + if (sgl.ActiveAreaY2 > sgl.DisplayActiveAreaY2) + sgl.ActiveAreaY2 = sgl.DisplayActiveAreaY2; +#endif + GuiLib_SetClipping(sgl.ActiveAreaX1, sgl.ActiveAreaY1, + sgl.ActiveAreaX2, sgl.ActiveAreaY2); + } +#endif + +#ifdef GuiConst_CLIPPING_SUPPORT_ON +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_ACTIVEAREARELCOORD) + { + sgl.CurItem.ClipRectX1 += sgl.CoordOrigoX; + sgl.CurItem.ClipRectY1 += sgl.CoordOrigoY; + sgl.CurItem.ClipRectX2 += sgl.CoordOrigoX; + sgl.CurItem.ClipRectY2 += sgl.CoordOrigoY; + } +#endif +#endif + + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_ACTIVEAREARELCOORD) + { + sgl.CoordOrigoX += sgl.CurItem.X1; + sgl.CoordOrigoY += sgl.CurItem.Y1; + } +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + sgl.CurItem.CoordOrigoX = sgl.CoordOrigoX; + sgl.CurItem.CoordOrigoY = sgl.CoordOrigoY; +#endif + +#ifdef GuiConst_CLIPPING_SUPPORT_ON +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + sgl.CurItem.ClipRectX1 -= sgl.CoordOrigoX; + sgl.CurItem.ClipRectY1 -= sgl.CoordOrigoY; + sgl.CurItem.ClipRectX2 -= sgl.CoordOrigoX; + sgl.CurItem.ClipRectY2 -= sgl.CoordOrigoY; +#endif +#endif + } + break; + + case GuiLib_ITEM_CLIPRECT: +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (sgl.DisplayWriting) + { + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CLIPPING) + { + sgl.CurItem.ClipRectX1 = sgl.CurItem.X1; + sgl.CurItem.ClipRectY1 = sgl.CurItem.Y1; + sgl.CurItem.ClipRectX2 = sgl.CurItem.X2; + sgl.CurItem.ClipRectY2 = sgl.CurItem.Y2; + } + StartClipping( + (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_CLIPPING) != 0); + } +#endif + break; + + case GuiLib_ITEM_STRUCTURE: + case GuiLib_ITEM_STRUCTARRAY: + case GuiLib_ITEM_STRUCTCOND: + if (sgl.DisplayWriting && (sgl.CurItem.TextPar[0].BackBoxSizeX > 0)) + { + DrawBackBox(BackColor, BackColorTransp, 0); + UpdateDrawLimits(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2); + } + + StructToCallIndex = sgl.CurItem.StructToCallIndex; + if (sgl.CurItem.ItemType == GuiLib_ITEM_STRUCTARRAY) + { + if (StructToCallIndex != 0xFFFF) + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + + I = sgl.CurItem.CompPars.StructCall.IndexCount; + while (I > 0) + { + if (ReadWord(GuiStruct_StructNdxList[StructToCallIndex]) == + VarValue) + break; + + StructToCallIndex++; + I--; + } + if (I == 0) + { + if (ReadWord(GuiStruct_StructNdxList[sgl.CurItem.StructToCallIndex]) == 0xFFFF) + StructToCallIndex = sgl.CurItem.StructToCallIndex; + else + StructToCallIndex = 0xFFFF; + } + } + } +#ifdef GuiConst_ITEM_STRUCTCOND_INUSE + else if (sgl.CurItem.ItemType == GuiLib_ITEM_STRUCTCOND) + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + + I = sgl.CurItem.CompPars.StructCall.IndexCount - 1; + FirstRound = 1; + while (I >= 0) + { + if ((VarValue >= sgl.CurItem.CompPars.StructCall.IndexFirst[I]) && + (VarValue <= sgl.CurItem.CompPars.StructCall.IndexLast[I]) && + ((sgl.CurItem.CompPars.StructCall.IndexFirst[I] == + sgl.CurItem.CompPars.StructCall.IndexLast[I]) || + !FirstRound)) + { + StructToCallIndex = sgl.CurItem.CompPars.StructCall.CallIndex[I]; + break; + } + + I--; + + if ((I == -1) && FirstRound) + { + FirstRound = 0; + I = sgl.CurItem.CompPars.StructCall.IndexCount - 1; + } + } + } +#endif + DrawSubStruct(StructToCallIndex, ColorInvert, 0); + break; + +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + case GuiLib_ITEM_TOUCHAREA: + TouchIndex = -1; + for (TouchSearch = 0; TouchSearch < sgl.TouchAreaCnt; TouchSearch++) + if (sgl.TouchAreas[TouchSearch].IndexNo == + sgl.CurItem.CompPars.CompTouch.AreaNo) + { + TouchIndex = TouchSearch; + break; + } + if (TouchIndex == -1) + { + TouchIndex = sgl.TouchAreaCnt; + sgl.TouchAreaCnt++; + } + sgl.TouchAreas[TouchIndex].IndexNo = sgl.CurItem.CompPars.CompTouch.AreaNo; + sgl.TouchAreas[TouchIndex].X1 = sgl.CurItem.X1; + sgl.TouchAreas[TouchIndex].Y1 = sgl.CurItem.Y1; + sgl.TouchAreas[TouchIndex].X2 = sgl.CurItem.X2; + sgl.TouchAreas[TouchIndex].Y2 = sgl.CurItem.Y2; + OrderCoord(&sgl.TouchAreas[TouchIndex].X1, &sgl.TouchAreas[TouchIndex].X2); + OrderCoord(&sgl.TouchAreas[TouchIndex].Y1, &sgl.TouchAreas[TouchIndex].Y2); + + break; +#endif + + case GuiLib_ITEM_POSCALLBACK: + for (I = 0; I < GuiConst_POSCALLBACK_CNT; I++) + if (sgl.PosCallbacks[I].InUse && + (sgl.PosCallbacks[I].IndexNo == sgl.CurItem.PosCallbackNo) && + (sgl.PosCallbacks[I].PosCallbackFunc != 0)) + { + (*sgl.PosCallbacks[I].PosCallbackFunc)(sgl.CurItem.PosCallbackNo, + sgl.CurItem.X1, + sgl.CurItem.Y1); + break; + } + break; + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + case GuiLib_ITEM_SCROLLBOX: + break; +#endif + +#ifdef GuiConst_ITEM_CHECKBOX_INUSE + case GuiLib_ITEM_CHECKBOX: + PrepareInternalStruct(); + + GuiVarCompInt1 = sgl.CurItem.CompPars.CompCheckBox.Size; + sgl.Memory.C[0] = ForeColor; + + Y2 = sgl.CurItem.Y1 + sgl.CurItem.CompPars.CompCheckBox.Size - 1; + switch (sgl.CurItem.CompPars.CompCheckBox.Style) + { + case GuiLib_CHECKBOX_FLAT: + if (BackColorTransp) + DrawSubStruct(GuiStructCOMP_CBFLATTRANSP, 0, 1); + else + DrawSubStruct(GuiStructCOMP_CBFLAT, 0, 1); + break; + case GuiLib_CHECKBOX_3D: + DrawSubStruct(GuiStructCOMP_CB3D, 0, 1); + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_CB3DINNER, 0, 1); + break; + case GuiLib_CHECKBOX_ICON: + TempTextPar = sgl.CurItem.TextPar[0]; + SetCurFont(sgl.CurItem.CompPars.CompCheckBox.IconFont); + sgl.CurItem.X1 = sgl.CurItem.X1 + sgl.CurItem.CompPars.CompCheckBox.IconOffsetX; + sgl.CurItem.Y1 = sgl.CurItem.Y1 + sgl.CurItem.CompPars.CompCheckBox.IconOffsetY; + sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[0].BitFlags = 0; + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + DrawText(sgl.CurItem.CompPars.CompCheckBox.IconPtr, + 1, + 0, + ForeColor, + BackColor, + BackColorTransp); + Y2 = sgl.FontWriteY2; + sgl.CurItem.TextPar[0] = TempTextPar; + break; + case GuiLib_CHECKBOX_BITMAP: + if (sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent) + BackColor2 = sgl.CurItem.CompPars.CompCheckBox.BitmapTranspColor; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompCheckBox.BitmapIndex, + sgl.CurItem.X1, sgl.CurItem.Y1, + BackColor2); + break; + } + + if ((sgl.CurItem.VarPtr != 0) && (sgl.CurItem.VarType != GuiLib_VAR_STRING)) + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + + if (VarValue != 0) + CheckmarkMode = 1; + else if ((sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_NONE) && + (!BackColorTransp)) + CheckmarkMode = 2; + else + CheckmarkMode = 0; + + if (CheckmarkMode > 0) + { + GuiVarCompInt1 = sgl.CurItem.CompPars.CompCheckBox.Size; + if (CheckmarkMode == 1) + sgl.Memory.C[0] = sgl.CurItem.CompPars.CompCheckBox.MarkColor; + else + sgl.Memory.C[0] = BackColor; + + switch (sgl.CurItem.CompPars.CompCheckBox.MarkStyle) + { + case GuiLib_CHECKBOX_MARK_CHECKED: + GuiVarCompInt1 = + (sgl.CurItem.CompPars.CompCheckBox.Size / 2) - + ((sgl.CurItem.CompPars.CompCheckBox.Size - 6) / 6); + GuiVarCompInt2 = + (sgl.CurItem.CompPars.CompCheckBox.Size / + 2) + + ((sgl.CurItem.CompPars.CompCheckBox.Size - 8) / 6); + GuiVarCompInt3 = GuiVarCompInt2 - + ((sgl.CurItem.CompPars.CompCheckBox.Size - 1) / 5); + GuiVarCompInt4 = -GuiVarCompInt3; + GuiVarCompInt5 = -((GuiVarCompInt3 - 1) / 2); + if (((sgl.CurItem.CompPars.CompCheckBox.Style == + GuiLib_CHECKBOX_FLAT) || + (sgl.CurItem.CompPars.CompCheckBox.Style == + GuiLib_CHECKBOX_3D) || + (sgl.CurItem.CompPars.CompCheckBox.Style == + GuiLib_CHECKBOX_NONE)) && + (sgl.CurItem.CompPars.CompCheckBox.Size <= 10)) + DrawSubStruct(GuiStructCOMP_CBMCHSMALL, 0, 1); + else + DrawSubStruct(GuiStructCOMP_CBMCHBIG, 0, 1); + break; + case GuiLib_CHECKBOX_MARK_CROSSED: + if ((sgl.CurItem.CompPars.CompCheckBox.Style == + GuiLib_CHECKBOX_FLAT) && + (sgl.CurItem.CompPars.CompCheckBox.Size <= 8)) + DrawSubStruct(GuiStructCOMP_CBMCRFLSMALL, 0, 1); + else if (((sgl.CurItem.CompPars.CompCheckBox.Style == + GuiLib_CHECKBOX_3D) || + (sgl.CurItem.CompPars.CompCheckBox.Style == + GuiLib_CHECKBOX_NONE)) && + (sgl.CurItem.CompPars.CompCheckBox.Size <= 8)) + DrawSubStruct(GuiStructCOMP_CBMCR3DSMALL, 0, 1); + else + DrawSubStruct(GuiStructCOMP_CBMCRBIG, 0, 1); + break; + case GuiLib_CHECKBOX_MARK_FILLED: + if (sgl.CurItem.CompPars.CompCheckBox.Style == GuiLib_CHECKBOX_FLAT) + DrawSubStruct(GuiStructCOMP_CBMFIFLAT, 0, 1); + else + DrawSubStruct(GuiStructCOMP_CBMFI3D, 0, 1); + break; + case GuiLib_CHECKBOX_MARK_ICON: + TempTextPar = sgl.CurItem.TextPar[0]; + SetCurFont(sgl.CurItem.CompPars.CompCheckBox.MarkIconFont); + sgl.CurItem.X1 = sgl.CurItem.X1 + + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX; + sgl.CurItem.Y1 = Y2 + + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY; + sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[0].BitFlags = 0; + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + if (CheckmarkMode == 1) + DrawText(sgl.CurItem.CompPars.CompCheckBox.MarkIconPtr, + 1, + 0, + sgl.CurItem.CompPars.CompCheckBox.MarkColor, + 0, + 1); + else + DrawText(sgl.CurItem.CompPars.CompCheckBox.MarkIconPtr, + 1, + 0, + BackColor, + 0, + 2); + sgl.CurItem.TextPar[0] = TempTextPar; + break; + case GuiLib_CHECKBOX_MARK_BITMAP: + if (CheckmarkMode == 1) + { + if (sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent) + BackColor2 = sgl.CurItem.CompPars.CompCheckBox.MarkBitmapTranspColor; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIndex, + sgl.CurItem.X1 + + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX, + sgl.CurItem.Y1 + + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY, + BackColor2); + } + else + { + ReadBitmapSizes(sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIndex); + GuiLib_FillBox(sgl.CurItem.X1, sgl.CurItem.Y1, + sgl.CurItem.X1 + sgl.BitmapSizeX -1, sgl.CurItem.Y1 + sgl.BitmapSizeY - 1, + BackColor); + } + break; + } + } + } + break; +#endif + +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + case GuiLib_ITEM_RADIOBUTTON: + PrepareInternalStruct(); + + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + RemYMemory = sgl.Memory.Y[GuiLib_MEMORY_CNT]; + + if ((sgl.CurItem.VarPtr != 0) && + (sgl.CurItem.VarType != GuiLib_VAR_STRING)) + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + else + VarValue = -1; + + for (N = 0; N < sgl.CurItem.CompPars.CompRadioButton.Count; N++) + { + GuiVarCompInt1 = sgl.CurItem.CompPars.CompRadioButton.Size; + sgl.Memory.C[0] = ForeColor; + switch (sgl.CurItem.CompPars.CompRadioButton.Style) + { + case GuiLib_RADIOBUTTON_FLAT: + if (BackColorTransp) + DrawSubStruct(GuiStructCOMP_RBFLATTRANSP, 0, 1); + else + DrawSubStruct(GuiStructCOMP_RBFLAT, 0, 1); + break; + case GuiLib_RADIOBUTTON_3D: + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_RB3DINNER, 0, 1); + DrawSubStruct(GuiStructCOMP_RB3D, 0, 1); + break; + case GuiLib_RADIOBUTTON_ICON: + TempTextPar = sgl.CurItem.TextPar[0]; + SetCurFont(sgl.CurItem.CompPars.CompRadioButton.IconFont); + sgl.CurItem.X1 = X1 + sgl.CurItem.CompPars.CompRadioButton.IconOffsetX; + sgl.CurItem.Y1 = Y1 + sgl.CurItem.CompPars.CompRadioButton.IconOffsetY + + sgl.CurFont->BaseLine; + sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[0].BitFlags = 0; + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + DrawText(sgl.CurItem.CompPars.CompRadioButton.IconPtr, + 1, + 0, + ForeColor, + BackColor, + BackColorTransp); + sgl.CurItem.TextPar[0] = TempTextPar; + break; + case GuiLib_RADIOBUTTON_BITMAP: + if (sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent) + BackColor2 = sgl.CurItem.CompPars.CompRadioButton.BitmapTranspColor; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompRadioButton.BitmapIndex, + X1, Y1, + BackColor2); + break; + } + + if (VarValue == N) + { + GuiVarCompInt1 = sgl.CurItem.CompPars.CompRadioButton.Size; + GuiVarCompInt2 = sgl.CurItem.CompPars.CompRadioButton.Size - 3; + if (sgl.CurItem.CompPars.CompRadioButton.Style == + GuiLib_RADIOBUTTON_FLAT) + GuiVarCompInt2++; + sgl.Memory.C[0] = sgl.CurItem.CompPars.CompRadioButton.MarkColor; + switch (sgl.CurItem.CompPars.CompRadioButton.MarkStyle) + { + case GuiLib_RADIOBUTTON_MARK_STANDARD: + if (GuiVarCompInt1 <= 1) + DrawSubStruct(GuiStructCOMP_RBMSQUA, 0, 1); + else if (sgl.CurItem.CompPars.CompRadioButton.Style == + GuiLib_RADIOBUTTON_FLAT) + DrawSubStruct(GuiStructCOMP_RBMFLAT, 0, 1); + else + DrawSubStruct(GuiStructCOMP_RBM3D, 0, 1); + break; + case GuiLib_RADIOBUTTON_MARK_ICON: + TempTextPar = sgl.CurItem.TextPar[0]; + SetCurFont(sgl.CurItem.CompPars.CompRadioButton.MarkIconFont); + sgl.CurItem.X1 = X1 + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX; + sgl.CurItem.Y1 = Y1 + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY + + sgl.CurFont->BaseLine; + sgl.CurItem.TextPar[0].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[0].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[0].BitFlags = 0; + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + DrawText(sgl.CurItem.CompPars.CompRadioButton.MarkIconPtr, + 1, + 0, + ForeColor, + BackColor, + BackColorTransp); + sgl.CurItem.TextPar[0] = TempTextPar; + break; + case GuiLib_RADIOBUTTON_MARK_BITMAP: + if (sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent) + BackColor2 = sgl.CurItem.CompPars.CompRadioButton.MarkBitmapTranspColor; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIndex, + X1 + + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX, + Y1 + + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY, + BackColor2); + break; + } + } + + Y1 += sgl.CurItem.CompPars.CompRadioButton.InterDistance; + sgl.Memory.Y[GuiLib_MEMORY_CNT] += + sgl.CurItem.CompPars.CompRadioButton.InterDistance; + } + + sgl.Memory.Y[GuiLib_MEMORY_CNT] = RemYMemory; + break; +#endif + +#ifdef GuiConst_ITEM_BUTTON_INUSE + case GuiLib_ITEM_BUTTON: + PrepareInternalStruct(); + + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + RemX1 = sgl.CurItem.X1; + RemY1 = sgl.CurItem.Y1; + + GuiVarCompInt1 = X2 - X1 + 1; + GuiVarCompInt2 = Y2 - Y1 + 1; + GuiVarCompInt3 = sgl.CurItem.R1; + GuiVarCompInt4 = GuiVarCompInt1 - sgl.CurItem.R1; + GuiVarCompInt5 = GuiVarCompInt2 - sgl.CurItem.R1; + + sgl.Memory.C[0] = ForeColor; + sgl.Memory.C[1] = BackColor; + + if (sgl.ButtonColorOverride == GuiLib_TRUE) + sgl.Memory.C[2] = sgl.DisabledButtonColor; + else + sgl.Memory.C[2] = GuiLib_DesaturatePixelColor(BackColor,800); + + if ((sgl.CurItem.VarPtr != 0) && + (sgl.CurItem.VarType != GuiLib_VAR_STRING)) + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + if ((VarValue < GuiLib_BUTTON_STATE_UP) || + (VarValue > GuiLib_BUTTON_STATE_DISABLED)) + VarValue = GuiLib_BUTTON_STATE_UP; + } + else + VarValue = GuiLib_BUTTON_STATE_UP; + + DisabledGlyphColorInUse = 0; + DisabledTextColorInUse = 0; + switch (sgl.CurItem.CompPars.CompButton.BodyStyle) + { + case GuiLib_BUTTON_BODY_FLAT: + switch (VarValue) + { + case 0 : + if (sgl.CurItem.R1 == 0) + DrawSubStruct(GuiStructCOMP_BUFLAT0, 0, 1); + else + DrawSubStruct(GuiStructCOMP_BUFLATR0, 0, 1); + break; + case 1 : + if (sgl.CurItem.R1 == 0) + DrawSubStruct(GuiStructCOMP_BUFLAT1, 0, 1); + else + DrawSubStruct(GuiStructCOMP_BUFLATR1, 0, 1); + break; + case 2 : + if (sgl.CurItem.R1 == 0) + DrawSubStruct(GuiStructCOMP_BUFLAT2, 0, 1); + else + DrawSubStruct(GuiStructCOMP_BUFLATR2, 0, 1); + DisabledGlyphColorInUse = + (sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x02); + DisabledTextColorInUse = + (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x08); + break; + } + break; + case GuiLib_BUTTON_BODY_3D: + switch (VarValue) + { + case 0 : + if (sgl.CurItem.R1 == 0) + DrawSubStruct(GuiStructCOMP_BU3D0, 0, 1); + else + DrawSubStruct(GuiStructCOMP_BU3DR0, 0, 1); + break; + case 1 : + if (sgl.CurItem.R1 == 0) + DrawSubStruct(GuiStructCOMP_BU3D1, 0, 1); + else + DrawSubStruct(GuiStructCOMP_BU3DR1, 0, 1); + break; + case 2 : + if (sgl.CurItem.R1 == 0) + DrawSubStruct(GuiStructCOMP_BU3D2, 0, 1); + else + DrawSubStruct(GuiStructCOMP_BU3DR2, 0, 1); + DisabledGlyphColorInUse = + !(sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x02); + DisabledTextColorInUse = + !(sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x08); + break; + } + break; + case GuiLib_BUTTON_BODY_ICON: + TempTextPar = sgl.CurItem.TextPar[VarValue]; + SetCurFont(sgl.CurItem.CompPars.CompButton.BodyIconFont[VarValue]); + sgl.CurItem.X1 = + X1 + + sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[VarValue]; + sgl.CurItem.Y1 = + Y1 + + sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[VarValue] + + sgl.CurFont->BaseLine; + sgl.CurItem.TextPar[VarValue].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[VarValue].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[VarValue].BitFlags = 0; + sgl.CurItem.TextPar[VarValue].BackBoxSizeX = 0; + sgl.CurItem.TextPar[VarValue].BackBorderPixels = 0; + DrawText(sgl.CurItem.CompPars.CompButton.BodyIconPtr[VarValue], + 1, + VarValue, + ForeColor, + BackColor, + BackColorTransp); + sgl.CurItem.TextPar[VarValue] = TempTextPar; + X1 = sgl.FontWriteX1; + Y1 = sgl.FontWriteY1; + X2 = sgl.FontWriteX2; + Y2 = sgl.FontWriteY2; + break; + case GuiLib_BUTTON_BODY_BITMAP: + if (sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[VarValue]) + BackColor2 = + sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[VarValue]; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[VarValue], + X1, Y1, + BackColor2); + X2 = sgl.BitmapWriteX2; + Y2 = sgl.BitmapWriteY2; + break; + } + + CX = (X1 + X2) / 2; + CY = (Y1 + Y2) / 2; + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + RemClippingX1 = sgl.CurItem.ClipRectX1; + RemClippingY1 = sgl.CurItem.ClipRectY1; + RemClippingX2 = sgl.CurItem.ClipRectX2; + RemClippingY2 = sgl.CurItem.ClipRectY2; + sgl.CurItem.ClipRectX1 = GuiLib_GET_MAX(sgl.CurItem.ClipRectX1, X1); + sgl.CurItem.ClipRectY1 = GuiLib_GET_MAX(sgl.CurItem.ClipRectY1, Y1); + sgl.CurItem.ClipRectX2 = GuiLib_GET_MIN(sgl.CurItem.ClipRectX2, X2); + sgl.CurItem.ClipRectY2 = GuiLib_GET_MIN(sgl.CurItem.ClipRectY2, Y2); + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_TEXT) + { + switch (sgl.CurItem.CompPars.CompButton.Layout) + { + case GuiLib_BUTTON_LAYOUT_GLYPH: + GX1 = CX; + GY1 = CY; + break; + case GuiLib_BUTTON_LAYOUT_GLYPHLEFT: + GX1 = X1 + GuiLib_GET_MIN((Y2 - Y1) / 2, (X2 - X1) / 4); + GY1 = CY; + break; + case GuiLib_BUTTON_LAYOUT_GLYPHRIGHT: + GX1 = X2 - GuiLib_GET_MIN((Y2 - Y1) / 2, (X2 - X1) / 4); + GY1 = CY; + break; + case GuiLib_BUTTON_LAYOUT_GLYPHTOP: + GX1 = CX; + GY1 = Y1 + ((Y2 - Y1) / 4); + break; + case GuiLib_BUTTON_LAYOUT_GLYPHBOTTOM: + GX1 = CX; + GY1 = Y2 - ((Y2 - Y1) / 4); + break; + } + switch (sgl.CurItem.CompPars.CompButton.GlyphStyle) + { + case GuiLib_BUTTON_GLYPH_ICON: + TempTextPar = sgl.CurItem.TextPar[VarValue]; + SetCurFont(sgl.CurItem.CompPars.CompButton.GlyphIconFont[VarValue]); + sgl.CurItem.X1 = + GX1 + + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[VarValue]; + sgl.CurItem.Y1 = + GY1 + + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[VarValue] + + GuiLib_FONT_MID_Y(sgl.CurFont->BaseLine, sgl.CurFont->TopLine); + sgl.CurItem.TextPar[VarValue].Alignment = GuiLib_ALIGN_CENTER; + sgl.CurItem.TextPar[VarValue].Ps = GuiLib_PS_OFF; + sgl.CurItem.TextPar[VarValue].BitFlags = 0; + sgl.CurItem.TextPar[VarValue].BackBoxSizeX = 0; + sgl.CurItem.TextPar[VarValue].BackBorderPixels = 0; + if (DisabledGlyphColorInUse) + ButtonColor = GuiLib_MiddlePixelColor( + sgl.CurItem.CompPars.CompButton.GlyphIconColor[VarValue], + sgl.Memory.C[2], + 800); + else + ButtonColor = sgl.CurItem.CompPars.CompButton.GlyphIconColor[VarValue]; + DrawText(sgl.CurItem.CompPars.CompButton.GlyphIconPtr[VarValue], + 1, + VarValue, + ButtonColor, + 0, + GuiLib_TRUE); + sgl.CurItem.TextPar[VarValue] = TempTextPar; + GX1 = sgl.FontWriteX1; + GY1 = sgl.FontWriteY1; + GX2 = sgl.FontWriteX2; + GY2 = sgl.FontWriteY2; + break; + case GuiLib_BUTTON_GLYPH_BITMAP: + ReadBitmapSizes(sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[VarValue]); + GX1 -= sgl.BitmapSizeX / 2; + GY1 -= sgl.BitmapSizeY / 2; + + GX1 += sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[VarValue]; + GY1 += sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[VarValue]; + if (sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[VarValue]) + BackColor2 = sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[VarValue]; + else + BackColor2 = -1; + GuiLib_ShowBitmap(sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[VarValue], + GX1, GY1, + BackColor2); + GX2 = sgl.BitmapWriteX2; + GY2 = sgl.BitmapWriteY2; + break; + } + } + + if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_GLYPH) + { + TempTextPar = sgl.CurItem.TextPar[VarValue]; + SetCurFont(sgl.CurItem.TextPar[VarValue].FontIndex); + switch (sgl.CurItem.CompPars.CompButton.Layout) + { + case GuiLib_BUTTON_LAYOUT_TEXT: + sgl.CurItem.X1 = CX; + sgl.CurItem.Y1 = CY; + break; + case GuiLib_BUTTON_LAYOUT_GLYPHLEFT: + sgl.CurItem.X1 = X2 - ((X2 - GX2 + 1) / 2); + sgl.CurItem.Y1 = CY; + break; + case GuiLib_BUTTON_LAYOUT_GLYPHRIGHT: + sgl.CurItem.X1 = X1 + ((GX1 - X1 + 1) / 2); + sgl.CurItem.Y1 = CY; + break; + case GuiLib_BUTTON_LAYOUT_GLYPHTOP: + sgl.CurItem.X1 = CX; + sgl.CurItem.Y1 = Y2 - ((Y2 - GY2 + 1) / 2); + break; + case GuiLib_BUTTON_LAYOUT_GLYPHBOTTOM: + sgl.CurItem.X1 = CX; + sgl.CurItem.Y1 = Y1 + ((GY1 - Y1 + 1) / 2); + break; + } + sgl.CurItem.Y1 += + GuiLib_FONT_MID_Y(sgl.CurFont->BaseLine, sgl.CurFont->TopLine); + sgl.CurItem.TextPar[VarValue].Alignment = GuiLib_ALIGN_CENTER; + sgl.CurItem.TextPar[VarValue].BitFlags = 0; + sgl.CurItem.TextPar[VarValue].BackBoxSizeX = 0; + sgl.CurItem.TextPar[VarValue].BackBorderPixels = 0; + if (DisabledTextColorInUse) + ButtonColor = GuiLib_MiddlePixelColor( + sgl.CurItem.CompPars.CompButton.TextColor[VarValue], + sgl.Memory.C[2], + 800); + else + ButtonColor = sgl.CurItem.CompPars.CompButton.TextColor[VarValue]; + DRAW_ROM_TEXT(GetItemTextPtr(VarValue), + sgl.CurItem.TextLength[VarValue], + VarValue, + ButtonColor, + 0, + GuiLib_TRUE); + sgl.CurItem.TextPar[VarValue] = TempTextPar; + } + + sgl.CurItem.X1 = RemX1; + sgl.CurItem.Y1 = RemY1; + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = RemClippingX1; + sgl.CurItem.ClipRectY1 = RemClippingY1; + sgl.CurItem.ClipRectX2 = RemClippingX2; + sgl.CurItem.ClipRectY2 = RemClippingY2; + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +#endif // GuiConst_CLIPPING_SUPPORT_ON + + break; +#endif + +#ifdef GuiConst_ITEM_PANEL_INUSE + case GuiLib_ITEM_PANEL: + PrepareInternalStruct(); + + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + + GuiVarCompInt1 = X2 - X1 + 1; + GuiVarCompInt2 = Y2 - Y1 + 1; + GuiVarCompInt3 = sgl.CurItem.R1; + GuiVarCompInt4 = GuiVarCompInt1 - sgl.CurItem.R1; + GuiVarCompInt5 = GuiVarCompInt2 - sgl.CurItem.R1; + + sgl.Memory.C[0] = ForeColor; + switch (sgl.CurItem.CompPars.CompPanel.Style) + { + case GuiLib_PANEL_FLAT: + if (sgl.CurItem.R1 == 0) + { + if (BackColorTransp) + DrawSubStruct(GuiStructCOMP_PAFLATTRANSP, 0, 1); + else + DrawSubStruct(GuiStructCOMP_PAFLAT, 0, 1); + } + else + { + if (BackColorTransp) + DrawSubStruct(GuiStructCOMP_PAFLATTRANSPR, 0, 1); + else + DrawSubStruct(GuiStructCOMP_PAFLATR, 0, 1); + } + break; + + case GuiLib_PANEL_3D_RAISED: + if (sgl.CurItem.R1 == 0) + { + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); + DrawSubStruct(GuiStructCOMP_PA3DRAIS, 0, 1); + } + else + { + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_PA3DINNERR, 0, 1); + DrawSubStruct(GuiStructCOMP_PA3DRAISR, 0, 1); + } + break; + + case GuiLib_PANEL_3D_LOWERED: + if (sgl.CurItem.R1 == 0) + { + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); + DrawSubStruct(GuiStructCOMP_PA3DLOW, 0, 1); + } + else + { + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_PA3DINNERR, 0, 1); + DrawSubStruct(GuiStructCOMP_PA3DLOWR, 0, 1); + } + break; + + case GuiLib_PANEL_EMBOSSED_RAISED: + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); + DrawSubStruct(GuiStructCOMP_PAEMBRAIS, 0, 1); + break; + + case GuiLib_PANEL_EMBOSSED_LOWERED: + if (!BackColorTransp) + DrawSubStruct(GuiStructCOMP_PA3DINNER, 0, 1); + DrawSubStruct(GuiStructCOMP_PAEMBLOW, 0, 1); + break; + } + break; +#endif + +#ifdef GuiConst_ITEM_GRAPH_INUSE + case GuiLib_ITEM_GRAPH: + break; +#endif + +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + case GuiLib_ITEM_GRAPHICSLAYER: +#ifdef GuiLib_LAYERS_SUPPORTED + if (sgl.DisplayWriting) + { + sgl.LayerOrigoX = 0; + sgl.LayerOrigoY = 0; + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + + X1 = sgl.CurItem.X1; + X2 = sgl.CurItem.X2; + Y1 = sgl.CurItem.Y1; + Y2 = sgl.CurItem.Y2; + GuiLib_COORD_ADJUST(X1, Y1); + GuiLib_COORD_ADJUST(X2, Y2); + OrderCoord(&X1, &X2); + OrderCoord(&Y1, &Y2); + + switch (sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].SizeMode) + { + case GuiLib_GRAPHICS_LAYER_SIZE_COORD: + X1 = GuiLib_GET_MINMAX(X1, 0, GuiConst_DISPLAY_WIDTH_HW - 1); + Y1 = GuiLib_GET_MINMAX(Y1, 0, GuiConst_DISPLAY_HEIGHT_HW - 1); + X2 = GuiLib_GET_MINMAX(X2, 0, GuiConst_DISPLAY_WIDTH_HW - 1); + Y2 = GuiLib_GET_MINMAX(Y2, 0, GuiConst_DISPLAY_HEIGHT_HW - 1); + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X = GuiLib_GET_MINMAX( + X1, 0, GuiConst_DISPLAY_WIDTH_HW); + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y = GuiLib_GET_MINMAX( + Y1, 0, GuiConst_DISPLAY_HEIGHT_HW); + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width = X2 - X1 + 1; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height = Y2 - Y1 + 1; + break; + + case GuiLib_GRAPHICS_LAYER_SIZE_SCREEN: + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X = 0; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y = 0; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width = + GuiConst_DISPLAY_WIDTH_HW; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height = + GuiConst_DISPLAY_HEIGHT_HW; + break; + + case GuiLib_GRAPHICS_LAYER_SIZE_CLIP: + CX1 = sgl.CurItem.ClipRectX1; + CX2 = sgl.CurItem.ClipRectX2; + CY1 = sgl.CurItem.ClipRectY1; + CY2 = sgl.CurItem.ClipRectY2; + GuiLib_COORD_ADJUST(CX1, CY1); + GuiLib_COORD_ADJUST(CX2, CY2); + OrderCoord(&CX1, &CX2); + OrderCoord(&CY1, &CY2); + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X = CX1; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y = CY1; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width = CX2 - CX1 + 1; + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height = CY2 - CY1 + 1; + break; + } + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].LineSize = + GuiConst_PIXEL_BYTE_SIZE * + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width; + sgl.CurItem.ClipRectX1 = 0; + sgl.CurItem.ClipRectY1 = 0; + sgl.CurItem.ClipRectX2 = + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width - 1; + sgl.CurItem.ClipRectY2 = + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height - 1; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + StartClipping(1); +#endif + sgl.LayerOrigoX = -sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X; + sgl.LayerOrigoY = -sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y; + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + + if (GraphicsLayer_Push(sgl.GlobalGraphicsLayerIndex)) + { + switch (sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].InitMode) + { + case GuiLib_GRAPHICS_LAYER_INIT_NONE: + break; + + case GuiLib_GRAPHICS_LAYER_INIT_COL: + GuiLib_FillBox( + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X + + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width - 1, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y + + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height - 1, + BackColor); + break; + + case GuiLib_GRAPHICS_LAYER_INIT_COPY: + GraphicsLayer_Copy( + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].BaseAddress, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].LineSize, + 0, + 0, +#ifdef GuiConst_DISPLAY_BUFFER_EASYGUI +#ifdef GuiLib_COLOR_UNIT_16 + (GuiConst_INT8U*)GuiLib_DisplayBuf.Bytes, +#else + (GuiConst_INT8U*)GuiLib_DisplayBuf, +#endif +#else // GuiConst_DISPLAY_BUFFER_EASYGUI + 0, +#endif // GuiConst_DISPLAY_BUFFER_EASYGUI + GuiConst_BYTES_PR_LINE, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].X, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Y, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Width, + sgl.GraphicsLayerList[sgl.GlobalGraphicsLayerIndex].Height); + break; + } + } + } +#endif + break; + + case GuiLib_ITEM_GRAPHICSFILTER: +#ifdef GuiLib_LAYERS_SUPPORTED + if (sgl.DisplayWriting) + { + sgl.LayerOrigoX = 0; + sgl.LayerOrigoY = 0; + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + + SourceLayerIndexNo = IndexOfGraphicsLayer( + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].SourceLayerIndexNo); + DestLayerIndexNo = IndexOfGraphicsLayer( + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].DestLayerIndexNo); + if (SourceLayerIndexNo != DestLayerIndexNo) + { + if (SourceLayerIndexNo == GuiLib_GRAPHICS_LAYER_BASE) + { +#ifdef GuiConst_DISPLAY_BUFFER_EASYGUI +#ifdef GuiLib_COLOR_UNIT_16 + SourceAddress = &(GuiLib_DisplayBuf.Bytes[0][0]); +#else + #ifdef GuiConst_COLOR_DEPTH_2 + #ifdef GuiConst_BYTE_HORIZONTAL + #ifdef GuiConst_COLOR_PLANES_2 + SourceAddress = &(GuiLib_DisplayBuf[0][0][0]); + #else + SourceAddress = &(GuiLib_DisplayBuf[0][0]); + #endif + #else + #ifdef GuiConst_COLOR_PLANES_2 + SourceAddress = &(GuiLib_DisplayBuf[0][0][0]); + #else + SourceAddress = &(GuiLib_DisplayBuf[0][0]); + #endif + #endif + #else + SourceAddress = &(GuiLib_DisplayBuf[0][0]); + #endif +#endif // GuiLib_COLOR_UNIT_16 +#else // GuiConst_DISPLAY_BUFFER_EASYGUI + SourceAddress = 0; +#endif // GuiConst_DISPLAY_BUFFER_EASYGUI + SourceLineSize = GuiConst_BYTES_PR_LINE; + SourceX = 0; + SourceY = 0; + SourceWidth = GuiConst_DISPLAY_WIDTH_HW; + SourceHeight = GuiConst_DISPLAY_HEIGHT_HW; + } + else + { + SourceAddress = sgl.GraphicsLayerList[SourceLayerIndexNo].BaseAddress; + SourceLineSize = sgl.GraphicsLayerList[SourceLayerIndexNo].LineSize; + SourceX = sgl.GraphicsLayerList[SourceLayerIndexNo].X; + SourceY = sgl.GraphicsLayerList[SourceLayerIndexNo].Y; + SourceWidth = sgl.GraphicsLayerList[SourceLayerIndexNo].Width; + SourceHeight = sgl.GraphicsLayerList[SourceLayerIndexNo].Height; + } + if (DestLayerIndexNo == GuiLib_GRAPHICS_LAYER_BASE) + { +#ifdef GuiConst_DISPLAY_BUFFER_EASYGUI +#ifdef GuiLib_COLOR_UNIT_16 + DestAddress = &(GuiLib_DisplayBuf.Bytes[0][0]); +#else + #ifdef GuiConst_COLOR_DEPTH_2 + #ifdef GuiConst_BYTE_HORIZONTAL + #ifdef GuiConst_COLOR_PLANES_2 + DestAddress = &(GuiLib_DisplayBuf[0][0][0]); + #else + DestAddress = &(GuiLib_DisplayBuf[0][0]); + #endif + #else + #ifdef GuiConst_COLOR_PLANES_2 + DestAddress = &(GuiLib_DisplayBuf[0][0][0]); + #else + DestAddress = &(GuiLib_DisplayBuf[0][0]); + #endif + #endif + #else + DestAddress = &(GuiLib_DisplayBuf[0][0]); + #endif +#endif +#else // GuiConst_DISPLAY_BUFFER_EASYGUI + DestAddress = 0; +#endif // GuiConst_DISPLAY_BUFFER_EASYGUI + DestLineSize = GuiConst_BYTES_PR_LINE; + DestX = SourceX; + DestY = SourceY; + DestWidth = SourceWidth; + DestHeight = SourceHeight; + } + else + { + DestAddress = sgl.GraphicsLayerList[DestLayerIndexNo].BaseAddress; + DestLineSize = sgl.GraphicsLayerList[DestLayerIndexNo].LineSize; + DestX = sgl.GraphicsLayerList[DestLayerIndexNo].X; + DestY = sgl.GraphicsLayerList[DestLayerIndexNo].Y; + DestWidth = sgl.GraphicsLayerList[DestLayerIndexNo].Width; + DestHeight = sgl.GraphicsLayerList[DestLayerIndexNo].Height; + } + + if ((DestX <= SourceX) && (DestY <= SourceY) && + (DestX + DestWidth >= SourceX + SourceWidth) && + (DestY + DestHeight >= SourceY + SourceHeight) && + (sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex]. + GraphicsFilterFunc != 0)) + { + if (DestLayerIndexNo != GuiLib_GRAPHICS_LAYER_BASE) + { + DestX = SourceX - DestX; + DestY = SourceY - DestY; + } + if (SourceLayerIndexNo != GuiLib_GRAPHICS_LAYER_BASE) + { + SourceX = 0; + SourceY = 0; + } + + for (I = 0; I <= 9; I++) + { + if (sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParVarType[I] == + GuiLib_VAR_NONE) + FilterPars[I] = + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParValueNum[I]; + else + FilterPars[I] = ReadVar( + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParVarPtr[I], + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ParVarType[I]); + } + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].GraphicsFilterFunc( + DestAddress + DestY * DestLineSize + + DestX * GuiConst_PIXEL_BYTE_SIZE, + DestLineSize, + SourceAddress + SourceY * SourceLineSize + + SourceX * GuiConst_PIXEL_BYTE_SIZE, + SourceLineSize, + sgl.GraphicsLayerList[SourceLayerIndexNo].Width, + sgl.GraphicsLayerList[SourceLayerIndexNo].Height, + FilterPars); + } + + GraphicsLayer_Pop( + sgl.GraphicsFilterList[sgl.GlobalGraphicsFilterIndex].ContAtLayerIndexNo); + MarkDisplayBoxRepaint( + DestX, + DestY, + DestX + sgl.GraphicsLayerList[SourceLayerIndexNo].Width - 1, + DestY + sgl.GraphicsLayerList[SourceLayerIndexNo].Height - 1); + } + else + GraphicsLayer_Pop(GuiLib_GRAPHICS_LAYER_BASE); + + if (sgl.BaseLayerDrawing) + { + sgl.LayerOrigoX = 0; + sgl.LayerOrigoY = 0; + } + else + { + I = sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]; + sgl.LayerOrigoX = -sgl.GraphicsLayerList[I].X; + sgl.LayerOrigoY = -sgl.GraphicsLayerList[I].Y; + } + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + + if (sgl.BaseLayerDrawing) + { +#ifdef GuiConst_CLIPPING_SUPPORT_ON + StartClipping(0); +#endif + } + else + { + I = sgl.GraphicsLayerLifo[sgl.GraphicsLayerLifoCnt - 1]; + sgl.CurItem.ClipRectX1 = 0; + sgl.CurItem.ClipRectY1 = 0; + sgl.CurItem.ClipRectX2 = sgl.GraphicsLayerList[I].Width - 1; + sgl.CurItem.ClipRectY2 = sgl.GraphicsLayerList[I].Height - 1; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + StartClipping(1); +#endif + } + } +#endif + break; +#endif + } + + if (sgl.CurItem.UpdateType == GuiLib_UPDATE_ON_CHANGE) + if ((sgl.InitialDrawing) || (sgl.AutoRedrawUpdate == GuiLib_TRUE)) + AutoRedraw_UpdateOnChange(sgl.AutoRedrawSaveIndex); + + if (sgl.AutoRedrawSaveIndex >= 0) + AutoRedraw_UpdateDrawn(sgl.AutoRedrawSaveIndex, &sgl.CurItem); + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + if (((sgl.CurItem.ItemType == GuiLib_ITEM_TEXTBLOCK) || + (sgl.CurItem.ItemType == GuiLib_ITEM_VARBLOCK)) && + (sgl.CurItem.CompPars.CompTextBox.ScrollIndex != 0xFF)) + { + found = AutoRedraw_GetTextBox( + sgl.CurItem.CompPars.CompTextBox.ScrollIndex, -1); + if (found == -1) + { + if (sgl.AutoRedrawSaveIndex >= 0) + AutoRedraw_SetAsTextBox(sgl.AutoRedrawSaveIndex); + else + AutoRedraw_InsertTextBox(&sgl.CurItem, 0, sgl.DisplayLevel); + } + + found = 0; + + for (N = 0; N < GuiConst_TEXTBOX_FIELDS_MAX; N++) + { + if (sgl.TextBoxScrollPositions[N].index == + sgl.CurItem.CompPars.CompTextBox.ScrollIndex) + { + found = 1; + break; + } + } + + if (found == 0) + { + for (N = 0; N < GuiConst_TEXTBOX_FIELDS_MAX; N++) + { + if (sgl.TextBoxScrollPositions[N].index == -1) + { + sgl.TextBoxScrollPositions[N].index = + sgl.CurItem.CompPars.CompTextBox.ScrollIndex; + sgl.TextBoxScrollPositions[N].pos = + sgl.CurItem.CompPars.CompTextBox.ScrollPos; + break; + } + } + } + } +#endif + +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (sgl.InitialDrawing && IsCursorField) + sgl.CurItem.CursorFieldLevel--; + + if ((ColorInvert == GuiLib_COL_INVERT_IF_CURSOR) && FoundActiveCursorField) + sgl.SwapColors = 0; +#endif + +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + if (!sgl.InitialDrawing) + { + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + } +#endif +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (!sgl.InitialDrawing && sgl.DisplayWriting) + GuiLib_ResetClipping(); +#endif +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +static void ReadItem(GuiConst_INT16S LanguageIndex) +{ + GuiConst_INT16S X; + GuiConst_INT16S N; + GuiConst_INT16S I,J; + GuiConst_INTCOLOR TmpForeColor, TmpBackColor; + GuiConst_INTCOLOR PrefixLocate *ColVarPtr; + GuiConst_INT16U ColVarPtrIdx, PtrIdx; + GuiConst_INT16U TmpColIdx; + GuiConst_INT16U TmpForeColIdx; +#ifdef GuiConst_ADV_CONTROLS + GuiConst_INT16U TmpBackColIdx; +#endif + GuiConst_INT8U B1; + GuiConst_INT16U W1; +#ifdef GuiConst_REMOTE_TEXT_DATA + GuiConst_INT16U Ti; +#endif + GuiConst_INT16U TxtSize; +#ifndef GuiConst_REMOTE_TEXT_DATA + GuiConst_INT16U TxtSum1, TxtSum2; +#endif +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT16U TxtReadSize; +#endif +#ifdef GuiConst_BLINK_SUPPORT_ON + GuiConst_INT8S BS2; +#endif +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + GuiConst_INT8U ScrollBoxIndex; +#ifndef GuiConst_SCROLLITEM_BAR_NONE +#ifdef GuiConst_REMOTE_BITMAP_DATA + GuiConst_INT8U * PixelDataPtr; + GuiConst_INT8U BitmapHeader[4]; +#else + GuiConst_INT8U PrefixRom * PixelDataPtr; +#endif // GuiConst_REMOTE_BITMAP_DATA +#endif // GuiConst_SCROLLITEM_BAR_NONE +#endif // GuiConst_ITEM_SCROLLBOX_INUSE +#ifdef GuiConst_ADV_COMPONENTS + GuiConst_INT8U L; +#endif +#ifdef GuiConst_ITEM_GRAPH_INUSE + GuiConst_INT8U GraphIndex; + GuiConst_INT8U Axis; + GuiConst_INT8U B; +#endif +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GuiConst_INT8U GraphicsLayerIndex; + GuiConst_INT8U GraphicsFilterIndex; +#endif +#ifdef GuiConst_ITEM_STRUCTCOND_INUSE + GuiConst_INT16U CondI; +#endif + GuiConst_INT8U ColMemoryFore; + GuiConst_INT8U ColMemoryBack; + + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_INUSE; + +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + if (sgl.DisplayLevel == 0) + { + sgl.CurItem.CoordOrigoX = sgl.CoordOrigoX; + sgl.CurItem.CoordOrigoY = sgl.CoordOrigoY; + } +#endif + + sgl.CommonByte0 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte1 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte2 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte3 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte4 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte5 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte6 = GetItemByte(&sgl.ItemDataPtr); + sgl.CommonByte7 = GetItemByte(&sgl.ItemDataPtr); + + sgl.CurItem.ItemType = sgl.CommonByte0 & 0x3F; + if (sgl.CurItem.ItemType < 32) + sgl.ItemTypeBit1 = (GuiConst_INT32U)0x00000001 << (sgl.CurItem.ItemType & 0x1F); + else + sgl.ItemTypeBit1 = 0; + if (sgl.CurItem.ItemType >= 32) + sgl.ItemTypeBit2 = (GuiConst_INT32U)0x00000001 << (sgl.CurItem.ItemType - 32); + else + sgl.ItemTypeBit2 = 0; + + if (sgl.CommonByte7 & 0x20) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + if (B1 & 0x01) + sgl.CurItem.ForeColorEnhance = GetItemWord(&sgl.ItemDataPtr); + if (B1 & 0x02) + sgl.CurItem.BackColorEnhance = GetItemWord(&sgl.ItemDataPtr); + if (B1 & 0x04) + sgl.CurItem.BarForeColorEnhance = GetItemWord(&sgl.ItemDataPtr); + if (B1 & 0x08) + sgl.CurItem.BarBackColorEnhance = GetItemWord(&sgl.ItemDataPtr); + } + else + { + sgl.CurItem.ForeColorEnhance = 0; + sgl.CurItem.BackColorEnhance = 0; + sgl.CurItem.BarForeColorEnhance = 0; + sgl.CurItem.BarBackColorEnhance = 0; + } + if (sgl.CommonByte7 & 0x40) + { + ColMemoryFore = GetItemByte(&sgl.ItemDataPtr); + ColMemoryBack = GetItemByte(&sgl.ItemDataPtr); + } + else + { + ColMemoryFore = 0; + ColMemoryBack = 0; + } + + TmpForeColor = sgl.CurItem.ForeColor; + TmpForeColIdx = sgl.CurItem.ForeColorIndex; + + TmpBackColor = sgl.CurItem.BackColor; +#ifdef GuiConst_ADV_CONTROLS + TmpBackColIdx = sgl.CurItem.BackColorIndex; +#endif + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_DOT + + GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_BLOCK + + GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_SCROLLBOX + + GuiLib_ITEMBIT_GRAPH)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE + + GuiLib_ITEMBIT_CHECKBOX + + GuiLib_ITEMBIT_RADIOBUTTON + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_PANEL + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_SCROLLAREA + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND))) + { + B1 = ColMemoryFore & 0x03; + if (B1) + { + sgl.CurItem.ForeColor = sgl.Memory.C[B1-1]; + sgl.CurItem.ForeColorIndex = sgl.ColMemoryIndex[B1-1]; + } + else + { + TmpColIdx = sgl.CurItem.ForeColorIndex; + sgl.CurItem.ForeColorIndex = 0xFFFF; + switch (sgl.CommonByte3 & 0x07) + { + case GuiLib_COLOR_FORE: + sgl.CurItem.ForeColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.ForeColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.ForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.ForeColor = TmpBackColor; + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.ForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.ForeColor = GuiConst_PIXEL_ON; + } + else + { + sgl.CurItem.ForeColor = *ColVarPtr; + sgl.CurItem.ForeColorIndex = ColVarPtrIdx; + } + break; + default: + sgl.CurItem.ForeColorIndex = TmpColIdx; + break; + } + } + if (sgl.CurItem.ForeColorEnhance > 0) + sgl.CurItem.ForeColor = GuiLib_BrightenPixelColor( + sgl.CurItem.ForeColor, sgl.CurItem.ForeColorEnhance); + else if (sgl.CurItem.ForeColorEnhance < 0) + sgl.CurItem.ForeColor = GuiLib_DarkenPixelColor( + sgl.CurItem.ForeColor, -sgl.CurItem.ForeColorEnhance); + + B1 = ColMemoryFore & 0x30; + if (B1) + { + sgl.CurItem.BarForeColor = sgl.Memory.C[B1-1]; + sgl.CurItem.BarForeColorIndex = sgl.ColMemoryIndex[B1-1]; + } + else + { + TmpColIdx = sgl.CurItem.BarForeColorIndex; + sgl.CurItem.BarForeColorIndex = 0xFFFF; + switch ((sgl.CommonByte5 >> 1) & 0x07) + { + case GuiLib_COLOR_FORE: + sgl.CurItem.BarForeColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.BarForeColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.BarForeColor = (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.BarForeColor = sgl.CurItem.BackColor; + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.BarForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.BarForeColor = GuiConst_PIXEL_ON; + } + else + { + sgl.CurItem.BarForeColor = *ColVarPtr; + sgl.CurItem.BarForeColorIndex = ColVarPtrIdx; + } + break; + default: + sgl.CurItem.BarForeColorIndex = TmpColIdx; + break; + } + } + if (sgl.CurItem.BarForeColorEnhance > 0) + sgl.CurItem.BarForeColor = GuiLib_BrightenPixelColor( + sgl.CurItem.BarForeColor, sgl.CurItem.BarForeColorEnhance); + else if (sgl.CurItem.BarForeColorEnhance < 0) + sgl.CurItem.BarForeColor = GuiLib_DarkenPixelColor( + sgl.CurItem.BarForeColor, -sgl.CurItem.BarForeColorEnhance); + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + + GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_SCROLLBOX + + GuiLib_ITEMBIT_GRAPH + + GuiLib_ITEMBIT_GRAPHICSLAYER)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE + + GuiLib_ITEMBIT_CHECKBOX + + GuiLib_ITEMBIT_RADIOBUTTON + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_PANEL + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_SCROLLAREA + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND))) + { + B1 = ColMemoryBack & 0x03; + if (B1) + { + sgl.CurItem.BackColor = sgl.Memory.C[B1-1]; + sgl.CurItem.BackColorIndex = sgl.ColMemoryIndex[B1-1]; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + } + else + { + TmpColIdx = sgl.CurItem.BackColorIndex; + sgl.CurItem.BackColorIndex = 0xFFFF; + switch ((sgl.CommonByte3 >> 3) & 0x07) + { + case GuiLib_COLOR_FORE: + sgl.CurItem.BackColor = GuiConst_PIXEL_ON; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.BackColor = GuiConst_PIXEL_OFF; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.BackColor = GetItemColor(&sgl.ItemDataPtr); + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.BackColor = TmpForeColor; + sgl.CurItem.BackColorIndex = TmpForeColIdx; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + break; + case GuiLib_COLOR_TRANSP: + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_TRANSPARENT; + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.BackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.BackColor = GuiConst_PIXEL_ON; + } + else + { + sgl.CurItem.BackColor = *ColVarPtr; + sgl.CurItem.BackColorIndex = ColVarPtrIdx; + } + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSPARENT; + break; + default: + sgl.CurItem.BackColorIndex = TmpColIdx; + break; + } + } + if (sgl.CurItem.BackColorEnhance > 0) + sgl.CurItem.BackColor = GuiLib_BrightenPixelColor( + sgl.CurItem.BackColor, sgl.CurItem.BackColorEnhance); + else if (sgl.CurItem.BackColorEnhance < 0) + sgl.CurItem.BackColor = GuiLib_DarkenPixelColor( + sgl.CurItem.BackColor, -sgl.CurItem.BackColorEnhance); + + B1 = ColMemoryBack & 0x30; + if (B1) + { + sgl.CurItem.BarBackColor = sgl.Memory.C[B1-1]; + sgl.CurItem.BarBackColorIndex = sgl.ColMemoryIndex[B1-1]; + } + else + { + TmpColIdx = sgl.CurItem.BarBackColorIndex; + sgl.CurItem.BarBackColorIndex = 0xFFFF; + switch ((sgl.CommonByte5 >> 4) & 0x07) + { + case GuiLib_COLOR_FORE: + sgl.CurItem.BarBackColor = GuiConst_PIXEL_ON; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.BarBackColor = GuiConst_PIXEL_OFF; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.BarBackColor = GetItemColor(&sgl.ItemDataPtr); + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; + sgl.CurItem.BarBackColor = sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_TRANSP: + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_BARTRANSPARENT; + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.BarBackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.BarBackColor = GuiConst_PIXEL_ON; + } + else + { + sgl.CurItem.BarBackColor = *ColVarPtr; + sgl.CurItem.BarBackColorIndex = ColVarPtrIdx; + } + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BARTRANSPARENT; + break; + default: + sgl.CurItem.BarBackColorIndex = TmpColIdx; + break; + } + } + if (sgl.CurItem.BarBackColorEnhance > 0) + sgl.CurItem.BarBackColor = GuiLib_BrightenPixelColor( + sgl.CurItem.BarBackColor, sgl.CurItem.BarBackColorEnhance); + else if (sgl.CurItem.BarBackColorEnhance < 0) + sgl.CurItem.BarBackColor = GuiLib_DarkenPixelColor( + sgl.CurItem.BarBackColor, -sgl.CurItem.BarBackColorEnhance); + } + +#ifdef GuiConst_COLOR_DEPTH_1 + #ifdef GuiConst_BITMAP_SUPPORT_ON + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND)) && + (sgl.CommonByte6 & 0x02)) + sgl.CurItem.CompPars.CompBitmap.TranspColor = (sgl.CommonByte6 >> 2) & 0x01; + #endif +#else + #ifdef GuiConst_BITMAP_SUPPORT_ON + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND)) && + (sgl.CommonByte6 & 0x02)) + { + sgl.CurItem.CompPars.CompBitmap.TranspColor = GetItemColor(&sgl.ItemDataPtr); + } + #endif +#endif + + B1 = ColMemoryFore & 0x0C; + if (B1) + { + sgl.Memory.C[B1 - 1] = sgl.CurItem.ForeColor; + sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.ForeColorIndex; + } + B1 = ColMemoryFore & 0xC0; + if (B1) + { + sgl.Memory.C[B1 - 1] = sgl.CurItem.BarForeColor; + sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.BarForeColorIndex; + } + B1 = ColMemoryBack & 0x0C; + if (B1) + { + sgl.Memory.C[B1 - 1] = sgl.CurItem.BackColor; + sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.BackColorIndex; + } + B1 = ColMemoryBack & 0xC0; + if (B1) + { + sgl.Memory.C[B1 - 1] = sgl.CurItem.BarBackColor; + sgl.ColMemoryIndex[B1 - 1] = sgl.CurItem.BarBackColorIndex; + } + + if (sgl.CommonByte0 & 0x40) + B1 = GetItemByte(&sgl.ItemDataPtr); + else + B1 = 0; + sgl.X1MemoryRead = B1 & 0x03; + sgl.X1MemoryWrite = (B1 >> 2) & 0x03; + sgl.Y1MemoryRead = (B1 >> 4) & 0x03; + sgl.Y1MemoryWrite = (B1 >> 6) & 0x03; + if (sgl.CommonByte0 & 0x80) + B1 = GetItemByte(&sgl.ItemDataPtr); + else + B1 = 0; + sgl.X2MemoryRead = B1 & 0x03; + sgl.X2MemoryWrite = (B1 >> 2) & 0x03; + sgl.Y2MemoryRead = (B1 >> 4) & 0x03; + sgl.Y2MemoryWrite = (B1 >> 6) & 0x03; + if (sgl.CommonByte7 & 0x01) + B1 = GetItemByte(&sgl.ItemDataPtr); + else + B1 = 0; + sgl.R1MemoryRead = B1 & 0x03; + sgl.R1MemoryWrite = (B1 >> 2) & 0x03; + sgl.R2MemoryRead = (B1 >> 4) & 0x03; + sgl.R2MemoryWrite = (B1 >> 6) & 0x03; + if (sgl.CommonByte7 & 0x80) + { + if (sgl.X1MemoryRead) + sgl.X1MemoryRead += GuiLib_MEMORY_CNT; + if (sgl.X1MemoryWrite) + sgl.X1MemoryWrite += GuiLib_MEMORY_CNT; + if (sgl.Y1MemoryRead) + sgl.Y1MemoryRead += GuiLib_MEMORY_CNT; + if (sgl.Y1MemoryWrite) + sgl.Y1MemoryWrite += GuiLib_MEMORY_CNT; + if (sgl.X2MemoryRead) + sgl.X2MemoryRead += GuiLib_MEMORY_CNT; + if (sgl.X2MemoryWrite) + sgl.X2MemoryWrite += GuiLib_MEMORY_CNT; + if (sgl.Y2MemoryRead) + sgl.Y2MemoryRead += GuiLib_MEMORY_CNT; + if (sgl.Y2MemoryWrite) + sgl.Y2MemoryWrite += GuiLib_MEMORY_CNT; + if (sgl.R1MemoryRead) + sgl.R1MemoryRead += GuiLib_MEMORY_CNT; + if (sgl.R1MemoryWrite) + sgl.R1MemoryWrite += GuiLib_MEMORY_CNT; + if (sgl.R2MemoryRead) + sgl.R2MemoryRead += GuiLib_MEMORY_CNT; + if (sgl.R2MemoryWrite) + sgl.R2MemoryWrite += GuiLib_MEMORY_CNT; + } + + if (sgl.CommonByte6 & 0x01) + B1 = GetItemByte(&sgl.ItemDataPtr); + else + B1 = 0; + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) + sgl.CurItem.TextPar[0].BackBorderPixels = B1; + else + sgl.CurItem.TextPar[0].BackBorderPixels = 0; + + if (sgl.CommonByte6 & 0x08) + { + N = GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.TextPar[0].BackBoxSizeY1 = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.TextPar[0].BackBoxSizeY2 = GetItemByte(&sgl.ItemDataPtr); + } + else + N = 0; + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) + sgl.CurItem.TextPar[0].BackBoxSizeX = N; + else + sgl.CurItem.TextPar[0].BackBoxSizeX = 0; +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX) + { + if (sgl.NextScrollLineReading) + if (sgl.CommonByte6 & 0x08) + { + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].LineSizeX = + sgl.CurItem.TextPar[0].BackBoxSizeX; + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].LineSizeY = + sgl.CurItem.TextPar[0].BackBoxSizeY1; + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].LineSizeY2 = + sgl.CurItem.TextPar[0].BackBoxSizeY2; + } + } +#endif + + sgl.X1Mode = sgl.CommonByte1 & 0x03; + sgl.Y1Mode = (sgl.CommonByte1 >> 2) & 0x03; + sgl.X2Mode = (sgl.CommonByte1 >> 4) & 0x03; + sgl.Y2Mode = (sgl.CommonByte1 >> 6) & 0x03; + sgl.R1Mode = (sgl.CommonByte7 >> 1) & 0x03; + sgl.R2Mode = (sgl.CommonByte7 >> 3) & 0x03; + + if (sgl.CommonByte2 & 0x01) + sgl.ItemX1 = GetItemWord(&sgl.ItemDataPtr); + else + sgl.ItemX1 = 0; + if (sgl.CommonByte2 & 0x02) + sgl.ItemY1 = GetItemWord(&sgl.ItemDataPtr); + else + sgl.ItemY1 = 0; + if (sgl.CommonByte2 & 0x04) + sgl.ItemX2 = GetItemWord(&sgl.ItemDataPtr); + else + sgl.ItemX2 = 0; + if (sgl.CommonByte2 & 0x08) + sgl.ItemY2 = GetItemWord(&sgl.ItemDataPtr); + else + sgl.ItemY2 = 0; + if (sgl.CommonByte6 & 0x10) + sgl.ItemR1 = GetItemWord(&sgl.ItemDataPtr); + else + sgl.ItemR1 = 0; + if (sgl.CommonByte6 & 0x20) + sgl.ItemR2 = GetItemWord(&sgl.ItemDataPtr); + else + sgl.ItemR2 = 0; + + if (sgl.CommonByte2 & 0x10) + { + sgl.X1VarIdx = GetItemWord(&sgl.ItemDataPtr); + if (sgl.X1VarIdx >= GuiStruct_VarPtrCnt) + sgl.X1VarIdx = 0; + } + if (sgl.CommonByte2 & 0x20) + { + sgl.Y1VarIdx = GetItemWord(&sgl.ItemDataPtr); + if (sgl.Y1VarIdx >= GuiStruct_VarPtrCnt) + sgl.Y1VarIdx = 0; + } + if (sgl.CommonByte2 & 0x40) + { + sgl.X2VarIdx = GetItemWord(&sgl.ItemDataPtr); + if (sgl.X2VarIdx >= GuiStruct_VarPtrCnt) + sgl.X2VarIdx = 0; + } + if (sgl.CommonByte2 & 0x80) + { + sgl.Y2VarIdx = GetItemWord(&sgl.ItemDataPtr); + if (sgl.Y2VarIdx >= GuiStruct_VarPtrCnt) + sgl.Y2VarIdx = 0; + } + if (sgl.CommonByte6 & 0x40) + { + sgl.R1VarIdx = GetItemWord(&sgl.ItemDataPtr); + if (sgl.R1VarIdx >= GuiStruct_VarPtrCnt) + sgl.R1VarIdx = 0; + } + if (sgl.CommonByte6 & 0x80) + { + sgl.R2VarIdx = GetItemWord(&sgl.ItemDataPtr); + if (sgl.R2VarIdx >= GuiStruct_VarPtrCnt) + sgl.R2VarIdx = 0; + } + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + + GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_BLOCK + + GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE + + GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_ACTIVEAREA + + GuiLib_ITEMBIT_CLIPRECT + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_TOUCHAREA + + GuiLib_ITEMBIT_SCROLLBOX + + GuiLib_ITEMBIT_GRAPH + + GuiLib_ITEMBIT_GRAPHICSLAYER)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE + + GuiLib_ITEMBIT_CHECKBOX + + GuiLib_ITEMBIT_RADIOBUTTON + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_PANEL + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_SCROLLAREA + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND))) + { + B1 = (sgl.CommonByte3 >> 6) & 0x03; + if (B1 != GuiLib_ALIGN_NOCHANGE) + sgl.CurItem.TextPar[0].Alignment = B1; + } + + B1 = sgl.CommonByte4 & 0x03; + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND))) + { + if (B1 != GuiLib_PS_NOCHANGE) + sgl.CurItem.TextPar[0].Ps = B1; + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND))) + { + if (sgl.CommonByte4 & 0x10) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_UNDERLINE; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_UNDERLINE; + } + else if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_CIRCLE)) + { + if (sgl.CommonByte4 & 0x10) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_PATTERNEDLINE; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_PATTERNEDLINE; + } + + if (sgl.CommonByte4 & 0x20) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_AUTOREDRAWFIELD; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_AUTOREDRAWFIELD; + +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (sgl.CommonByte4 & 0x40) + sgl.CurItem.CursorFieldNo = GetItemByte(&sgl.ItemDataPtr); + else + sgl.CurItem.CursorFieldNo = -1; +#endif + +#ifdef GuiConst_BLINK_SUPPORT_ON + if (sgl.CommonByte5 & 0x01) + BS2 = GetItemByte(&sgl.ItemDataPtr); + else + BS2 = -1; + if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) + sgl.CurItem.BlinkFieldNo = BS2; + else + sgl.CurItem.BlinkFieldNo = -1; +#endif + + if (sgl.CommonByte4 & 0x80) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_TRANSLATION; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_TRANSLATION; + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON))) + { + if (sgl.CommonByte5 & 0x80) + B1 = GetItemByte(&sgl.ItemDataPtr); + else + { + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) || + (sgl.CommonByte4 & 0x80)) + I = LanguageIndex; + else + I = 0; + B1 = ReadByte(GuiFont_LanguageTextDir[I]); + } + } + else + B1 = 0; + if (B1) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_REVERSEWRITING; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_REVERSEWRITING; + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_LINE)) && + (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_PATTERNEDLINE)) + sgl.CurItem.LinePattern = GetItemByte(&sgl.ItemDataPtr); + +#ifdef GuiConst_BLINK_SUPPORT_ON + if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) + { + if (sgl.CommonByte5 & 0x01) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_BLINKTEXTFIELD; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_BLINKTEXTFIELD; + } +#endif + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON))) + sgl.CurItem.TextCnt = GetItemByte(&sgl.ItemDataPtr); + else + sgl.CurItem.TextCnt = 1; + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_SCROLLBOX + + GuiLib_ITEMBIT_GRAPH)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND))) + { + if (sgl.CurItem.ItemType == GuiLib_ITEM_BUTTON) + J = 3; + else + J = 1; + for (I = 0; I < J; I++) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + if (B1 != 0xFF) + sgl.CurItem.TextPar[I].FontIndex = B1 + 1; + } + } + + if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VARBLOCK)) + { +#ifdef GuiConst_TEXTBOX_FIELDS_ON + sgl.CurItem.CompPars.CompTextBox.ScrollPos = 0; + sgl.CurItem.CompPars.CompTextBox.ScrollIndex = GetItemByte(&sgl.ItemDataPtr); +#else + B1 = GetItemByte(&sgl.ItemDataPtr); +#endif + } + + sgl.CurItem.UpdateType = GuiLib_AUTOREDRAW_MODE; + + if (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_CHECKBOX + + GuiLib_ITEMBIT_RADIOBUTTON + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_PROGRESSBAR)) + { + PtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (PtrIdx >= GuiStruct_VarPtrCnt) + PtrIdx = 0; + + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_AUTOREDRAWFIELD; + sgl.CurItem.UpdateType = GuiLib_UPDATE_ON_CHANGE; + sgl.CurItem.VarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[PtrIdx]); + sgl.CurItem.VarType = ReadByte(GuiStruct_VarTypeList[PtrIdx]); + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK)) || + (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_STRUCTCOND)) + { + PtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (PtrIdx >= GuiStruct_VarPtrCnt) + PtrIdx = 0; + + sgl.CurItem.UpdateType = GuiLib_AUTOREDRAW_MODE; + sgl.CurItem.VarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[PtrIdx]); + sgl.CurItem.VarType = ReadByte(GuiStruct_VarTypeList[PtrIdx]); + + } + +#ifdef GuiConst_AUTOREDRAW_ON_CHANGE + if ((sgl.CommonByte4 & 0x20) && + ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_DOT + + GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_BLOCK + + GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE + + GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND + + GuiLib_ITEMBIT_STRUCTURE)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE)))) + { + PtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (PtrIdx >= GuiStruct_VarPtrCnt) + PtrIdx = 0; + + sgl.CurItem.UpdateType = GuiLib_AUTOREDRAW_MODE; + sgl.CurItem.VarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[PtrIdx]); + sgl.CurItem.VarType = ReadByte(GuiStruct_VarTypeList[PtrIdx]); + } +#endif + + if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE)) + { + sgl.CurItem.FrameThickness = GetItemByte(&sgl.ItemDataPtr); + } + + if (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE)) + { + sgl.CurItem.FrameThickness = GetItemByte(&sgl.ItemDataPtr) % 4; + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_STRUCTARRAY)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) + sgl.CurItem.CompPars.StructCall.IndexCount = GetItemWord(&sgl.ItemDataPtr); + +#ifdef GuiConst_ITEM_STRUCTCOND_INUSE + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_STRUCTCOND) + { + for (CondI = 0; CondI < sgl.CurItem.CompPars.StructCall.IndexCount; CondI++) + { + sgl.CurItem.CompPars.StructCall.IndexFirst[CondI] = GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.StructCall.IndexLast[CondI] = GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.StructCall.CallIndex[CondI] = GetItemWord(&sgl.ItemDataPtr); + } + } +#endif + + if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_ACTIVEAREA + + GuiLib_ITEMBIT_CLIPRECT)) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + if (B1 & 0x01) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_CLIPPING; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_CLIPPING; + if (B1 & 0x02) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_ACTIVEAREARELCOORD; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_ACTIVEAREARELCOORD; + } + + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_FORMATTER) + { + sgl.CurItem.FormatFormat = GetItemByte(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + if (B1 & 0x01) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATSHOWSIGN; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATSHOWSIGN; + if (B1 & 0x02) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATZEROPADDING; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATZEROPADDING; + sgl.CurItem.FormatAlignment = (B1 >> 2) & 0x03; + if (B1 & 0x10) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTRAILINGZEROS; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATTRAILINGZEROS; + if (B1 & 0x20) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTHOUSANDSSEP; + else + sgl.CurItem.TextPar[0].BitFlags &= ~GuiLib_BITFLAG_FORMATTHOUSANDSSEP; + sgl.CurItem.FormatFieldWidth = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.FormatDecimals = GetItemByte(&sgl.ItemDataPtr); + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_STRUCTCOND))) + sgl.CurItem.StructToCallIndex = GetItemWord(&sgl.ItemDataPtr); + +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE + if (sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VARBLOCK)) + { + sgl.CurItem.CompPars.CompTextBox.HorzAlignment = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompTextBox.VertAlignment = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompTextBox.LineDist = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompTextBox.LineDistRelToFont = GetItemByte(&sgl.ItemDataPtr); + } +#endif + +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_TOUCHAREA) + sgl.CurItem.CompPars.CompTouch.AreaNo = GetItemWord(&sgl.ItemDataPtr); +#endif + + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_POSCALLBACK) + sgl.CurItem.PosCallbackNo = GetItemWord(&sgl.ItemDataPtr); + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX) + { + ScrollBoxIndex = GetItemByte(&sgl.ItemDataPtr); + sgl.GlobalScrollBoxIndex = ScrollBoxIndex; + sgl.ScrollBoxesAry[ScrollBoxIndex].InUse = GuiLib_SCROLL_STRUCTURE_READ; + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].MakeUpStructIndex = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollVisibleLines = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineVerticalOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetX = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineOffsetY = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeX = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineSizeY = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructIndex = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineStructOffsetY = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent = 0; + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = 0xFFFF; + + switch (B1) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = sgl.CurItem.ForeColor; + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = sgl.CurItem.ForeColorIndex; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = TmpForeColor; + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = TmpForeColIdx; + break; + case GuiLib_COLOR_TRANSP: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorTransparent = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = GuiConst_PIXEL_ON; + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColor = *ColVarPtr; + sgl.ScrollBoxesAry[ScrollBoxIndex].LineColorIndex = ColVarPtrIdx; + } + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].WrapMode = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollStartOfs = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollMode = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].LineMarkerCount = GetItemByte(&sgl.ItemDataPtr); + for (L = 0; L < sgl.ScrollBoxesAry[ScrollBoxIndex].LineMarkerCount; L++) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = 0xFFFF; + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = sgl.CurItem.BackColor; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = sgl.CurItem.BackColorIndex; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiConst_PIXEL_ON; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiConst_PIXEL_OFF; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = TmpForeColor; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = TmpForeColIdx; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; + break; + case GuiLib_COLOR_TRANSP: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = GuiConst_PIXEL_ON; + else + { + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColor[L] = *ColVarPtr; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorIndex[L] = ColVarPtrIdx; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerColorTransparent[L] = 0; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStructIndex[L] = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerDrawingOrder[L] = + GetItemByte(&sgl.ItemDataPtr); + if (L || (sgl.ScrollBoxesAry[ScrollBoxIndex].ScrollBoxType)) + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[L] = 0; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerSize[L] = 1; + sgl.ScrollBoxesAry[ScrollBoxIndex].MarkerStartLine[L] = 0; + } + + sgl.ScrollBoxesAry[ScrollBoxIndex].BarType = GetItemByte(&sgl.ItemDataPtr); +#ifndef GuiConst_SCROLLITEM_BAR_NONE + if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType != GuiLib_MARKER_NONE) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMode = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionX = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarPositionY = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeX = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarSizeY = GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarStructIndex = GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = TmpBackColor; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].BarForeColor = *ColVarPtr; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].BarTransparent = 0; + switch ((B1 & 0x38) >> 3) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = TmpForeColor; + break; + case GuiLib_COLOR_TRANSP: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarTransparent = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].BarBackColor = *ColVarPtr; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].BarThickness = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerLeftOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerRightOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTopOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBottomOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarIconPtr = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; +#ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; +#else + sgl.ItemDataPtr += 2; +#endif + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconFont = + GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerIconOffsetY = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = + GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = TmpBackColor; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerForeColor = *ColVarPtr; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent = 0; + switch ((B1 & 0x38) >> 3) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = sgl.CurItem.BackColor; + break; + + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = GuiConst_PIXEL_ON; + break; + + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = + GuiConst_PIXEL_OFF; + break; + + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = TmpForeColor; + break; + + case GuiLib_COLOR_TRANSP: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerTransparent = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBackColor = *ColVarPtr; + break; + } + if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarType == GuiLib_MARKER_BITMAP) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex = + GetItemWord(&sgl.ItemDataPtr); +#ifdef GuiConst_REMOTE_BITMAP_DATA + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiStruct_BitmapPtrList[ + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex], 4, + BitmapHeader); + PixelDataPtr = &BitmapHeader[0] + 2; +#else + PixelDataPtr = (GuiConst_INT8U PrefixRom *)ReadWord(GuiStruct_BitmapPtrList[ + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIndex]) + 2; +#endif + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapHeight = + (GuiConst_INT16S)*PixelDataPtr; + PixelDataPtr++; + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapHeight += + 256*(GuiConst_INT16S)*PixelDataPtr; + B1 = GetItemByte(&sgl.ItemDataPtr); +#ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent = + (B1 & 0x01); + if (sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent) +#ifdef GuiConst_COLOR_DEPTH_1 + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapTranspColor = + (B1 >> 1) & 0x01; +#else + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapTranspColor = + GetItemColor(&sgl.ItemDataPtr); +#endif +#else + sgl.ScrollBoxesAry[ScrollBoxIndex].BarMarkerBitmapIsTransparent = 0; +#endif + } + } +#endif + + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType = GetItemByte(&sgl.ItemDataPtr); +#ifndef GuiConst_SCROLLITEM_INDICATOR_NONE + if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType != GuiLib_INDICATOR_NONE) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMode = GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionX = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorPositionY = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeX = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorSizeY = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorStructIndex = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = + GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = TmpBackColor; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorForeColor = *ColVarPtr; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorTransparent = 0; + switch ((B1 & 0x38) >> 3) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = sgl.CurItem.BackColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = + GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = TmpForeColor; + break; + case GuiLib_COLOR_TRANSP: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorTransparent = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorBackColor = *ColVarPtr; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorThickness = + GetItemByte(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerLeftOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerRightOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTopOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBottomOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorIconPtr = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; +#ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; +#else + sgl.ItemDataPtr += 2; +#endif + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconFont = + GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerIconOffsetY = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = + sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = + GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = + GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = + TmpBackColor; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerForeColor = *ColVarPtr; + break; + } + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTransparent = 0; + switch ((B1 & 0x38) >> 3) + { + case GuiLib_COLOR_NOCHANGE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = + sgl.CurItem.BackColor; + break; + case GuiLib_COLOR_FORE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = + GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = + GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = + TmpForeColor; + break; + case GuiLib_COLOR_TRANSP: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerTransparent = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = GuiConst_PIXEL_ON; + else + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBackColor = *ColVarPtr; + break; + } + if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorType == GuiLib_MARKER_BITMAP) + { + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIndex = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); +#ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent = + (B1 & 0x01); + if (sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent) +#ifdef GuiConst_COLOR_DEPTH_1 + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapTranspColor = + (B1 >> 1) & 0x01; +#else + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapTranspColor = + GetItemColor(&sgl.ItemDataPtr); +#endif +#else + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorMarkerBitmapIsTransparent = 0; +#endif + } + sgl.ScrollBoxesAry[ScrollBoxIndex].IndicatorLine = -1; + } +#endif + } +#endif + +#ifdef GuiConst_ITEM_GRAPH_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPH) + { + GraphIndex = GetItemByte(&sgl.ItemDataPtr); + sgl.GlobalGraphIndex = GraphIndex; + + sgl.GraphAry[GraphIndex].InUse = GuiLib_GRAPH_STRUCTURE_USED; + sgl.GraphAry[GraphIndex].OriginOffsetX = GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].OriginOffsetY = GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].ForeColor = sgl.CurItem.ForeColor; + sgl.GraphAry[GraphIndex].BackColor = sgl.CurItem.BackColor; + + for (Axis = GuiLib_GRAPHAXIS_X; Axis <= GuiLib_GRAPHAXIS_Y; Axis++) + { + sgl.GraphAry[GraphIndex].GraphAxesCnt[Axis] = GetItemByte(&sgl.ItemDataPtr); + for (L = 0; L < sgl.GraphAry[GraphIndex].GraphAxesCnt[Axis]; L++) + { + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags = 0; + B = GetItemByte(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Visible = 1; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Line = B & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].LineBetweenAxes = (B >> 7) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].LineNegative = (B >> 1) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Arrow = (B >> 2) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMajor = (B >> 3) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMinor = (B >> 4) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Numbers = (B >> 5) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersAtOrigo = (B >> 6) & 0x01; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Offset = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].ArrowLength = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].ArrowWidth = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMajorLength = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMajorWidth = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMinorLength = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].TicksMinorWidth = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMinValue = + GetItemLong(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMinValueOrg = + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMinValue; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMaxValue = + GetItemLong(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMaxValueOrg = + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersMaxValue; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersStepMajor = + GetItemLong(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersStepMinor = + GetItemLong(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersOffset = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].NumbersAtEnd = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatFieldWidth = + GetItemByte(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatDecimals = + GetItemByte(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatAlignment = + GetItemByte(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].FormatFormat = + GetItemByte(&sgl.ItemDataPtr); + B = GetItemByte(&sgl.ItemDataPtr); + if (B & 0x01) + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATSHOWSIGN; + else + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATSHOWSIGN; + if (B & 0x02) + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATZEROPADDING; + else + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATZEROPADDING; + if (B & 0x04) + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATTRAILINGZEROS; + else + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATTRAILINGZEROS; + if (B & 0x08) + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags |= GuiLib_BITFLAG_FORMATTHOUSANDSSEP; + else + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].BitFlags &= ~GuiLib_BITFLAG_FORMATTHOUSANDSSEP; + sgl.GraphAry[GraphIndex].GraphAxes[L][Axis].Scale = 10000; + } + } + + sgl.GraphAry[GraphIndex].GraphDataSetCnt = GetItemByte(&sgl.ItemDataPtr); + for (L = 0; L < sgl.GraphAry[GraphIndex].GraphDataSetCnt; L++) + { + sgl.GraphAry[GraphIndex].GraphDataSets[L].DataSize = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[L].DataFirst = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[L].DataCount = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[L].AxisIndexX = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[L].AxisIndexY = 0; + sgl.GraphAry[GraphIndex].GraphDataSets[L].Visible = 1; + sgl.GraphAry[GraphIndex].GraphDataSets[L].Representation = + GetItemByte(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphDataSets[L].Width = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphAry[GraphIndex].GraphDataSets[L].Thickness = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = sgl.CurItem.ForeColor; + break; + case GuiLib_COLOR_FORE: + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = TmpBackColor; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = GuiConst_PIXEL_ON; + else + sgl.GraphAry[GraphIndex].GraphDataSets[L].ForeColor = *ColVarPtr; + break; + } + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColorTransparent = 0; + switch ((B1 & 0x38) >> 3) + { + case GuiLib_COLOR_NOCHANGE: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = sgl.CurItem.BackColor; + break; + case GuiLib_COLOR_FORE: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiConst_PIXEL_ON; + break; + case GuiLib_COLOR_BACK: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiConst_PIXEL_OFF; + break; + case GuiLib_COLOR_OTHER: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + break; + case GuiLib_COLOR_INVERT: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = TmpForeColor; + break; + case GuiLib_COLOR_TRANSP: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColorTransparent = 1; + break; + case GuiLib_COLOR_TABLE: + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = GuiConst_PIXEL_ON; + else + sgl.GraphAry[GraphIndex].GraphDataSets[L].BackColor = *ColVarPtr; + break; + } + } + } +#endif + +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPHICSLAYER) + { + GraphicsLayerIndex = GetItemByte(&sgl.ItemDataPtr); + sgl.GlobalGraphicsLayerIndex = GraphicsLayerIndex; + + sgl.GraphicsLayerList[GraphicsLayerIndex].InUse = GuiLib_GRAPHICS_LAYER_USED; + sgl.GraphicsLayerList[GraphicsLayerIndex].SizeMode = GetItemByte(&sgl.ItemDataPtr); + sgl.GraphicsLayerList[GraphicsLayerIndex].InitMode = GetItemByte(&sgl.ItemDataPtr); + } + + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPHICSFILTER) + { + GraphicsFilterIndex = GetItemByte(&sgl.ItemDataPtr); + sgl.GlobalGraphicsFilterIndex = GraphicsFilterIndex; + + sgl.GraphicsFilterList[GraphicsFilterIndex].InUse = GuiLib_GRAPHICS_FILTER_USED; + sgl.GraphicsFilterList[GraphicsFilterIndex].SourceLayerIndexNo = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphicsFilterList[GraphicsFilterIndex].DestLayerIndexNo = + GetItemWord(&sgl.ItemDataPtr); + sgl.GraphicsFilterList[GraphicsFilterIndex].ContAtLayerIndexNo = + GetItemWord(&sgl.ItemDataPtr); + for (I = 0; I <= 9; I++) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + if (B1 == 0) + { + sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarType[I] = GuiLib_VAR_NONE; + sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarPtr[I] = 0; + sgl.GraphicsFilterList[GraphicsFilterIndex].ParValueNum[I] = + GetItemLong(&sgl.ItemDataPtr); + } + else + { + PtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (PtrIdx >= GuiStruct_VarPtrCnt) + PtrIdx = 0; + + sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarType[I] = + ReadByte(GuiStruct_VarTypeList[PtrIdx]); + sgl.GraphicsFilterList[GraphicsFilterIndex].ParVarPtr[I] = + (void*)ReadWord(GuiStruct_VarPtrList[PtrIdx]); + sgl.GraphicsFilterList[GraphicsFilterIndex].ParValueNum[I] = 0; + } + } + } +#endif + +#ifdef GuiConst_ITEM_CHECKBOX_INUSE + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_CHECKBOX) + { + sgl.CurItem.CompPars.CompCheckBox.Style = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompCheckBox.Size = GetItemByte(&sgl.ItemDataPtr); + switch (sgl.CurItem.CompPars.CompCheckBox.Style) + { + case GuiLib_CHECKBOX_ICON: + sgl.CurItem.CompPars.CompCheckBox.IconPtr = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; + #ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; + #else + sgl.ItemDataPtr += 2; + #endif + sgl.CurItem.CompPars.CompCheckBox.IconFont = GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.CurItem.CompPars.CompCheckBox.IconOffsetX = GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompCheckBox.IconOffsetY = GetItemWord(&sgl.ItemDataPtr); + break; + case GuiLib_CHECKBOX_BITMAP: + sgl.CurItem.CompPars.CompCheckBox.BitmapIndex = GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + #ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent = (B1 & 0x01); + if (sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent) + #ifdef GuiConst_COLOR_DEPTH_1 + sgl.CurItem.CompPars.CompCheckBox.BitmapTranspColor = (B1 >> 1) & 0x01; + #else + sgl.CurItem.CompPars.CompCheckBox.BitmapTranspColor = + GetItemColor(&sgl.ItemDataPtr); + #endif + #else + sgl.CurItem.CompPars.CompCheckBox.BitmapIsTransparent = 0; + #endif + break; + } + + sgl.CurItem.CompPars.CompCheckBox.MarkStyle = GetItemByte(&sgl.ItemDataPtr); + if (sgl.CurItem.CompPars.CompCheckBox.MarkStyle != GuiLib_CHECKBOX_MARK_BITMAP) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.CurItem.CompPars.CompCheckBox.MarkColor = sgl.CurItem.ForeColor; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = sgl.CurItem.ForeColorIndex; + break; + case GuiLib_COLOR_FORE: + sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiConst_PIXEL_OFF; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.CompPars.CompCheckBox.MarkColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.CompPars.CompCheckBox.MarkColor = TmpBackColor; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = TmpBackColIdx; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.CompPars.CompCheckBox.MarkColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.CompPars.CompCheckBox.MarkColor = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = 0xFFFF; + } + else + { + sgl.CurItem.CompPars.CompCheckBox.MarkColor = *ColVarPtr; + sgl.CurItem.CompPars.CompCheckBox.MarkColorIndex = ColVarPtrIdx; + } + break; + } + } + switch (sgl.CurItem.CompPars.CompCheckBox.MarkStyle) + { + case GuiLib_CHECKBOX_MARK_ICON: + sgl.CurItem.CompPars.CompCheckBox.MarkIconPtr = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; + #ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; + #else + sgl.ItemDataPtr += 2; + #endif + sgl.CurItem.CompPars.CompCheckBox.MarkIconFont = + GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY = + GetItemWord(&sgl.ItemDataPtr); + break; + case GuiLib_CHECKBOX_MARK_BITMAP: + sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIndex = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + #ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent = (B1 & 0x01); + if (sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent) + #ifdef GuiConst_COLOR_DEPTH_1 + sgl.CurItem.CompPars.CompCheckBox.MarkBitmapTranspColor = + (B1 >> 1) & 0x01; + #else + sgl.CurItem.CompPars.CompCheckBox.MarkBitmapTranspColor = + GetItemColor(&sgl.ItemDataPtr); + #endif + #else + sgl.CurItem.CompPars.CompCheckBox.MarkBitmapIsTransparent = 0; + #endif + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompCheckBox.MarkOffsetY = + GetItemWord(&sgl.ItemDataPtr); + break; + } + } +#endif + +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_RADIOBUTTON) + { + sgl.CurItem.CompPars.CompRadioButton.Style = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.Size = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.Count = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.InterDistance = GetItemWord(&sgl.ItemDataPtr); + switch (sgl.CurItem.CompPars.CompRadioButton.Style) + { + case GuiLib_RADIOBUTTON_ICON: + sgl.CurItem.CompPars.CompRadioButton.IconPtr = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; + #ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; + #else + sgl.ItemDataPtr += 2; + #endif + sgl.CurItem.CompPars.CompRadioButton.IconFont = GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.CurItem.CompPars.CompRadioButton.IconOffsetX = GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.IconOffsetY = GetItemWord(&sgl.ItemDataPtr); + break; + case GuiLib_RADIOBUTTON_BITMAP: + sgl.CurItem.CompPars.CompRadioButton.BitmapIndex = GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + #ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent = (B1 & 0x01); + if (sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent) + #ifdef GuiConst_COLOR_DEPTH_1 + sgl.CurItem.CompPars.CompRadioButton.BitmapTranspColor = (B1 >> 1) & 0x01; + #else + sgl.CurItem.CompPars.CompRadioButton.BitmapTranspColor = + GetItemColor(&sgl.ItemDataPtr); + #endif + #else + sgl.CurItem.CompPars.CompRadioButton.BitmapIsTransparent = 0; + #endif + break; + } + + sgl.CurItem.CompPars.CompRadioButton.MarkStyle = GetItemByte(&sgl.ItemDataPtr); + if (sgl.CurItem.CompPars.CompRadioButton.MarkStyle != GuiLib_RADIOBUTTON_MARK_BITMAP) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.CurItem.CompPars.CompRadioButton.MarkColor = sgl.CurItem.ForeColor; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = sgl.CurItem.ForeColorIndex; + break; + case GuiLib_COLOR_FORE: + sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiConst_PIXEL_OFF; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.CompPars.CompRadioButton.MarkColor = (GuiConst_INTCOLOR) + GetItemColor(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.CompPars.CompRadioButton.MarkColor = TmpBackColor; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = TmpBackColIdx; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.CompPars.CompRadioButton.MarkColor = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.CompPars.CompRadioButton.MarkColor = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = 0xFFFF; + } + else + { + sgl.CurItem.CompPars.CompRadioButton.MarkColor = *ColVarPtr; + sgl.CurItem.CompPars.CompRadioButton.MarkColorIndex = ColVarPtrIdx; + } + break; + } + } + switch (sgl.CurItem.CompPars.CompRadioButton.MarkStyle) + { + case GuiLib_RADIOBUTTON_MARK_ICON: + sgl.CurItem.CompPars.CompRadioButton.MarkIconPtr = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; + #ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; + #else + sgl.ItemDataPtr += 2; + #endif + sgl.CurItem.CompPars.CompRadioButton.MarkIconFont = + GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY = + GetItemWord(&sgl.ItemDataPtr); + break; + case GuiLib_RADIOBUTTON_MARK_BITMAP: + sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIndex = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + #ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent = (B1 & 0x01); + if (sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent) + #ifdef GuiConst_COLOR_DEPTH_1 + sgl.CurItem.CompPars.CompRadioButton.MarkBitmapTranspColor = + (B1 >> 1) & 0x01; + #else + sgl.CurItem.CompPars.CompRadioButton.MarkBitmapTranspColor = + GetItemColor(&sgl.ItemDataPtr); + #endif + #else + sgl.CurItem.CompPars.CompRadioButton.MarkBitmapIsTransparent = 0; + #endif + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetX = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompRadioButton.MarkOffsetY = + GetItemWord(&sgl.ItemDataPtr); + break; + } + } +#endif + +#ifdef GuiConst_ITEM_BUTTON_INUSE + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) + { + sgl.CurItem.CompPars.CompButton.Layout = GetItemByte(&sgl.ItemDataPtr); + + sgl.CurItem.CompPars.CompButton.BodyStyle = GetItemByte(&sgl.ItemDataPtr); + if ((sgl.CurItem.CompPars.CompButton.BodyStyle == GuiLib_BUTTON_BODY_ICON) || + (sgl.CurItem.CompPars.CompButton.BodyStyle == GuiLib_BUTTON_BODY_BITMAP)) + { + sgl.CurItem.CompPars.CompButton.BodyLikeUp = GetItemByte(&sgl.ItemDataPtr); + for (I = 0; I < 3; I++) + if ((I == 0) || + ((I == 1) && !(sgl.CurItem.CompPars.CompButton.BodyLikeUp & 0x01)) || + ((I == 2) && !(sgl.CurItem.CompPars.CompButton.BodyLikeUp & 0x02))) + { + switch (sgl.CurItem.CompPars.CompButton.BodyStyle) + { + case GuiLib_BUTTON_BODY_ICON: + sgl.CurItem.CompPars.CompButton.BodyIconPtr[I] = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; + #ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; + #else + sgl.ItemDataPtr += 2; + #endif + sgl.CurItem.CompPars.CompButton.BodyIconFont[I] = + GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[I] = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[I] = + GetItemWord(&sgl.ItemDataPtr); + break; + case GuiLib_BUTTON_BODY_BITMAP: + sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[I] = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + #ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I] = + (B1 & 0x01); + if (sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I]) + #ifdef GuiConst_COLOR_DEPTH_1 + sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[I] = + (B1 >> 1) & 0x01; + #else + sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[I] = + GetItemColor(&sgl.ItemDataPtr); + #endif + #else + sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I] = 0; + #endif + break; + } + } + else + { + switch (sgl.CurItem.CompPars.CompButton.BodyStyle) + { + case GuiLib_BUTTON_BODY_ICON: + sgl.CurItem.CompPars.CompButton.BodyIconPtr[I] = + sgl.CurItem.CompPars.CompButton.BodyIconPtr[0]; + sgl.CurItem.CompPars.CompButton.BodyIconFont[I] = + sgl.CurItem.CompPars.CompButton.BodyIconFont[0]; + sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[I] = + sgl.CurItem.CompPars.CompButton.BodyIconOffsetX[0]; + sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[I] = + sgl.CurItem.CompPars.CompButton.BodyIconOffsetY[0]; + break; + case GuiLib_BUTTON_BODY_BITMAP: + sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[I] = + sgl.CurItem.CompPars.CompButton.BodyBitmapIndex[0]; + sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[I] = + sgl.CurItem.CompPars.CompButton.BodyBitmapIsTransparent[0]; + sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[I] = + sgl.CurItem.CompPars.CompButton.BodyBitmapTranspColor[0]; + break; + } + } + } + + if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_GLYPH) + { + sgl.CurItem.CompPars.CompButton.TextLikeUp = GetItemByte(&sgl.ItemDataPtr); + for (I = 0; I < 3; I++) + { + if ((I == 0) || + ((I == 1) && !(sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x04)) || + ((I == 2) && !(sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x08))) + { + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.CurItem.CompPars.CompButton.TextColor[I] = sgl.CurItem.ForeColor; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = sgl.CurItem.ForeColorIndex; + break; + case GuiLib_COLOR_FORE: + sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiConst_PIXEL_OFF; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.CompPars.CompButton.TextColor[I] = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.CompPars.CompButton.TextColor[I] = TmpBackColor; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = TmpBackColIdx; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.CompPars.CompButton.TextColor[I] = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.CompPars.CompButton.TextColor[I] = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = 0xFFFF; + } + else + { + sgl.CurItem.CompPars.CompButton.TextColor[I] = *ColVarPtr; + sgl.CurItem.CompPars.CompButton.TextColorIndex[I] = ColVarPtrIdx; + } + break; + } + + B1 = GetItemByte(&sgl.ItemDataPtr); + if (B1 & 0x04) + sgl.CurItem.TextPar[I].BitFlags |= GuiLib_BITFLAG_UNDERLINE; + else + sgl.CurItem.TextPar[I].BitFlags &= ~GuiLib_BITFLAG_UNDERLINE; + B1 = B1 & 0x03; + if (B1 != GuiLib_PS_NOCHANGE) + sgl.CurItem.TextPar[I].Ps = B1; + } + else + { + sgl.CurItem.CompPars.CompButton.TextColor[I] = + sgl.CurItem.CompPars.CompButton.TextColor[0]; + sgl.CurItem.TextPar[I] = sgl.CurItem.TextPar[0]; + } + } + } + + if (sgl.CurItem.CompPars.CompButton.Layout != GuiLib_BUTTON_LAYOUT_TEXT) + { + sgl.CurItem.CompPars.CompButton.GlyphStyle = GetItemByte(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompButton.GlyphLikeUp = GetItemByte(&sgl.ItemDataPtr); + for (I = 0; I < 3; I++) + if ((I == 0) || + ((I == 1) && !(sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x01)) || + ((I == 2) && !(sgl.CurItem.CompPars.CompButton.GlyphLikeUp & 0x02))) + { + switch (sgl.CurItem.CompPars.CompButton.GlyphStyle) + { + case GuiLib_BUTTON_GLYPH_ICON: + B1 = GetItemByte(&sgl.ItemDataPtr); + switch (B1 & 0x07) + { + case GuiLib_COLOR_NOCHANGE: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = sgl.CurItem.ForeColor; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = sgl.CurItem.ForeColorIndex; + break; + case GuiLib_COLOR_FORE: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_BACK: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiConst_PIXEL_OFF; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_OTHER: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = + (GuiConst_INTCOLOR)GetItemColor(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_INVERT: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = TmpBackColor; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = TmpBackColIdx; + break; + case GuiLib_COLOR_TRANSP: + break; + case GuiLib_COLOR_TABLE: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = + GuiStruct_ColorTable[GetItemByte(&sgl.ItemDataPtr)]; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; + break; + case GuiLib_COLOR_VAR: + ColVarPtrIdx = GetItemWord(&sgl.ItemDataPtr); + if (ColVarPtrIdx >= GuiStruct_VarPtrCnt) + ColVarPtrIdx = 0; + ColVarPtr = (GuiConst_INTCOLOR*)ReadWord(GuiStruct_VarPtrList[ColVarPtrIdx]); + if (ColVarPtr == 0) + { + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = GuiConst_PIXEL_ON; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = 0xFFFF; + } + else + { + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = *ColVarPtr; + sgl.CurItem.CompPars.CompButton.GlyphIconColorIndex[I] = ColVarPtrIdx; + } + break; + } + + sgl.CurItem.CompPars.CompButton.GlyphIconPtr[I] = + (GuiConst_TEXT PrefixRom *)sgl.ItemDataPtr; + #ifdef GuiConst_CHARMODE_ANSI + sgl.ItemDataPtr++; + #else + sgl.ItemDataPtr += 2; + #endif + sgl.CurItem.CompPars.CompButton.GlyphIconFont[I] = + GetItemByte(&sgl.ItemDataPtr) + 1; + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[I] = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[I] = + GetItemWord(&sgl.ItemDataPtr); + break; + case GuiLib_BUTTON_GLYPH_BITMAP: + sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[I] = + GetItemWord(&sgl.ItemDataPtr); + B1 = GetItemByte(&sgl.ItemDataPtr); + #ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I] = + (B1 & 0x01); + if (sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I]) + #ifdef GuiConst_COLOR_DEPTH_1 + sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[I] = + (B1 >> 1) & 0x01; + #else + sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[I] = + GetItemColor(&sgl.ItemDataPtr); + #endif + #else + sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I] = 0; + #endif + sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[I] = + GetItemWord(&sgl.ItemDataPtr); + sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[I] = + GetItemWord(&sgl.ItemDataPtr); + break; + } + } + else + { + switch (sgl.CurItem.CompPars.CompButton.GlyphStyle) + { + case GuiLib_BUTTON_GLYPH_ICON: + sgl.CurItem.CompPars.CompButton.GlyphIconColor[I] = + sgl.CurItem.CompPars.CompButton.GlyphIconColor[0]; + sgl.CurItem.CompPars.CompButton.GlyphIconPtr[I] = + sgl.CurItem.CompPars.CompButton.GlyphIconPtr[0]; + sgl.CurItem.CompPars.CompButton.GlyphIconFont[I] = + sgl.CurItem.CompPars.CompButton.GlyphIconFont[0]; + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[I] = + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetX[0]; + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[I] = + sgl.CurItem.CompPars.CompButton.GlyphIconOffsetY[0]; + break; + case GuiLib_BUTTON_GLYPH_BITMAP: + sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[I] = + sgl.CurItem.CompPars.CompButton.GlyphBitmapIndex[0]; + sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[I] = + sgl.CurItem.CompPars.CompButton.GlyphBitmapIsTransparent[0]; + sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[I] = + sgl.CurItem.CompPars.CompButton.GlyphBitmapTranspColor[0]; + sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[I] = + sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetX[0]; + sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[I] = + sgl.CurItem.CompPars.CompButton.GlyphBitmapOffsetY[0]; + break; + } + } + } + } +#endif + +#ifdef GuiConst_ITEM_PANEL_INUSE + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_PANEL) + { + sgl.CurItem.CompPars.CompPanel.Style = GetItemByte(&sgl.ItemDataPtr); + } +#endif + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_BUTTON))) + { + if (sgl.CommonByte4 & 0x80) + { +#ifdef GuiConst_LANGUAGE_ALL_ACTIVE + N = GuiConst_LANGUAGE_CNT; + W1 = LanguageIndex; +#else + N = GuiConst_LANGUAGE_ACTIVE_CNT; + W1 = ReadWord(GuiFont_LanguageIndex[LanguageIndex]); +#endif + } + else + { + N = 1; + W1 = 0; + } + + J = 0; + for (I = 0; I < sgl.CurItem.TextCnt; I++) + { +#ifndef GuiConst_REMOTE_TEXT_DATA + TxtSum1 = 0; + TxtSum2 = 0; +#endif + for (X = 0; X < N; X++) + { +#ifdef GuiConst_REMOTE_TEXT_DATA + Ti = GetItemWord(&sgl.ItemDataPtr); + if (X == W1) + { + sgl.CurItem.TextLength[J] = GetRemoteText(Ti); + sgl.CurItem.TextIndex[J] = Ti; + sgl.CurItem.TextPtr[J] = &sgl.GuiLib_RemoteTextBuffer[0]; + } +#else + TxtSize = GetItemByte(&sgl.ItemDataPtr); + if (TxtSize == 0xFF) + TxtSize = GetItemWord(&sgl.ItemDataPtr); + + if (X == W1) + { + sgl.CurItem.TextLength[J] = GuiLib_GET_MIN(TxtSize, GuiConst_MAX_TEXT_LEN); +#ifdef GuiConst_REMOTE_STRUCT_DATA + TxtReadSize = sgl.CurItem.TextLength[J] + 1; +#ifndef GuiConst_CHARMODE_ANSI + TxtReadSize *= 2; +#endif +#endif + } + + TxtSize++; +#ifndef GuiConst_CHARMODE_ANSI + TxtSize *= 2; +#endif + +#ifndef GuiConst_REMOTE_TEXT_DATA + if (X < W1) + TxtSum1 += TxtSize; + else + TxtSum2 += TxtSize; +#endif +#endif // GuiConst_REMOTE_TEXT_DATA + } + +#ifndef GuiConst_REMOTE_TEXT_DATA +#ifdef GuiConst_REMOTE_STRUCT_DATA + sgl.RemoteStructOffset += TxtSum1; + GuiLib_RemoteDataReadBlock( + sgl.RemoteStructOffset, + TxtReadSize, + (GuiConst_INT8U*)&sgl.GuiLib_RemoteStructText); + sgl.CurItem.TextOffset[J] = sgl.RemoteStructOffset; + sgl.CurItem.TextPtr[J] = (GuiConst_TEXT PrefixGeneric *)&sgl.GuiLib_RemoteStructText; + sgl.RemoteStructOffset += TxtSum2; +#else + sgl.ItemDataPtr += TxtSum1; + sgl.CurItem.TextPtr[J] = (GuiConst_TEXT PrefixGeneric *)(sgl.ItemDataPtr); + sgl.ItemDataPtr += TxtSum2; +#endif +#endif // GuiConst_REMOTE_TEXT_DATA + +#ifdef GuiConst_ITEM_BUTTON_INUSE + if ((sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) && + (((I == 0) && (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x01)) || + ((I == 1) && (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x02)))) + J++; +#endif + J++; + } + +#ifdef GuiConst_ITEM_BUTTON_INUSE + if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) + { + if (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x01) + { + sgl.CurItem.TextLength[1] = sgl.CurItem.TextLength[0]; + sgl.CurItem.TextPtr[1] = sgl.CurItem.TextPtr[0]; + +#ifdef GuiConst_REMOTE_TEXT_DATA + sgl.CurItem.TextIndex[1] = sgl.CurItem.TextIndex[0]; +#else +#ifdef GuiConst_REMOTE_STRUCT_DATA + sgl.CurItem.TextOffset[1] = sgl.CurItem.TextOffset[0]; +#endif +#endif + + } + if (sgl.CurItem.CompPars.CompButton.TextLikeUp & 0x02) + { + sgl.CurItem.TextLength[2] = sgl.CurItem.TextLength[0]; + sgl.CurItem.TextPtr[2] = sgl.CurItem.TextPtr[0]; + +#ifdef GuiConst_REMOTE_TEXT_DATA + sgl.CurItem.TextIndex[2] = sgl.CurItem.TextIndex[0]; +#else +#ifdef GuiConst_REMOTE_STRUCT_DATA + sgl.CurItem.TextOffset[2] = sgl.CurItem.TextOffset[0]; +#endif +#endif + } + } +#endif + } +} +//------------------------------------------------------------------------------ +static GuiConst_INT16S VarStrCmp( + GuiConst_INT8U PrefixLocate *S1, + GuiConst_INT8U PrefixLocate *S2) +{ + GuiConst_INT16S len = 0; + +#ifdef GuiConst_CHARMODE_ANSI + do + { + if ((*S1 == 0) && (*S2 == 0)) + return (0); + + else if (*S1 == 0) + return (-1); + else if (*S2 == 0) + return (1); + else if (*S1 < *S2) + return (-1); + else if (*S1 > *S2) + return (1); + S1++; + S2++; + } + while ((len++) < GuiConst_AUTOREDRAW_MAX_VAR_SIZE); +#else + GuiConst_INT16U T1, T2, T3; + + do + { + T1 = *S1++; + T3 = *S1++; + T1 |= T3 << 8; + + T2 = *S2++; + T3 = *S2++; + T2 |= T3 << 8; + + if (T1 < T2) + return (-1); + else if (T1 > T2) + return (1); + else if (T1 == 0) + return (0); + } + while ((len++) < GuiConst_AUTOREDRAW_MAX_VAR_SIZE); +#endif + return (1); +} +//------------------------------------------------------------------------------ +void AutoRedraw_Init(void) +{ + GuiConst_INT16S I; + + for (I=0;I<GuiConst_MAX_DYNAMIC_ITEMS;I++) + { + sgl.AutoRedraw[I].Next = -1; + sgl.AutoRedraw[I].Prev = -1; + sgl.AutoRedraw[I].Valid = ITEM_NONE; + } + + sgl.AutoRedrawCount = 0; + sgl.AutoRedrawFirst = -1; + sgl.AutoRedrawLast = -1; + sgl.AutoRedrawCount = 0; + sgl.AutoRedrawParent = -1; + sgl.AutoRedrawUpdate = GuiLib_FALSE; + sgl.AutoRedrawInsertPoint = GuiConst_MAX_DYNAMIC_ITEMS; + sgl.AutoRedrawLatest = -1; + + return; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_Reset(void) +{ + sgl.AutoRedrawNext = sgl.AutoRedrawFirst; + + return sgl.AutoRedrawNext; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetNext(GuiConst_INT16S I) +{ + GuiConst_INT16S N, result; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + result = -1; + + N = sgl.AutoRedraw[I].Next; + while ((N >= 0) && (N < GuiConst_MAX_DYNAMIC_ITEMS)) + { + if ((sgl.AutoRedraw[N].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + { + result = N; + break; + } + else if (sgl.AutoRedraw[N].Valid == ITEM_NONE) + break; + else + { + N = sgl.AutoRedraw[N].Next; + if ((N < 0) || (N >= GuiConst_MAX_DYNAMIC_ITEMS)) + break; + } + } + + return result; +} +//------------------------------------------------------------------------------ +GuiConst_INT8S AutoRedraw_ItemIsStruct(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return GuiLib_FALSE; + + if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + { + if ((sgl.AutoRedraw[I].Item.ItemType == GuiLib_ITEM_STRUCTARRAY) || + (sgl.AutoRedraw[I].Item.ItemType == GuiLib_ITEM_STRUCTCOND)) + return GuiLib_TRUE; + else + return GuiLib_FALSE; + } + else + return GuiLib_FALSE; +} +//------------------------------------------------------------------------------ +GuiConst_INT8S AutoRedraw_GetLevel(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + return sgl.AutoRedraw[I].Level; + else + return 0; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_Add(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level) +{ + GuiConst_INT16S I, N; + + I = -1; + + if (sgl.AutoRedrawCount < GuiConst_MAX_DYNAMIC_ITEMS) + { + + if (sgl.AutoRedrawFirst == -1) + { + I = 0; + sgl.AutoRedrawFirst = 0; + sgl.AutoRedrawLast = -1; + sgl.AutoRedrawNext = 0; + } + else + { + for (N=0;N<GuiConst_MAX_DYNAMIC_ITEMS;N++) + { + if (sgl.AutoRedraw[N].Valid == ITEM_NONE) + { + I = N; + break; + } + } + } + + if (I >= 0) + { + sgl.AutoRedraw[I].Next = -1; + sgl.AutoRedraw[I].Prev = sgl.AutoRedrawLast; + sgl.AutoRedraw[I].Valid = ITEM_AUTOREDRAW; + sgl.AutoRedraw[I].Parent = sgl.AutoRedrawParent; + sgl.AutoRedraw[I].Level = Level; + memcpy(&sgl.AutoRedraw[I].Item, Item, sizeof(GuiLib_ItemRec)); + memcpy(&sgl.AutoRedraw[I].Memory, &sgl.Memory, sizeof(ItemMemory)); + + if ((sgl.AutoRedrawLast >= 0) + && (sgl.AutoRedrawLast < GuiConst_MAX_DYNAMIC_ITEMS)) + sgl.AutoRedraw[sgl.AutoRedrawLast].Next = I; + + sgl.AutoRedrawCount++; + sgl.AutoRedrawLast = I; + sgl.AutoRedrawLatest = I; + } + + } + + return I; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_Insert(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, + GuiConst_INT16S Struct, + GuiConst_INT8U Level) +{ + GuiConst_INT16S I, N; + + if ((sgl.AutoRedrawFirst == -1) || + (sgl.AutoRedrawInsertPoint >= GuiConst_MAX_DYNAMIC_ITEMS)) + { + return AutoRedraw_Add(Item, Struct, Level); + } + + if (sgl.AutoRedrawCount < GuiConst_MAX_DYNAMIC_ITEMS) + { + I = -1; + + for (N=0;N<GuiConst_MAX_DYNAMIC_ITEMS;N++) + { + if (sgl.AutoRedraw[N].Valid == ITEM_NONE) + { + I = N; + break; + } + } + } + else + return -1; + + if (I >= 0) + { + if (sgl.AutoRedrawInsertPoint < 0) + { + sgl.AutoRedraw[I].Next = sgl.AutoRedrawFirst; + sgl.AutoRedraw[I].Prev = -1; + } + else + { + sgl.AutoRedraw[I].Next = sgl.AutoRedraw[sgl.AutoRedrawInsertPoint].Next; + sgl.AutoRedraw[I].Prev = sgl.AutoRedrawInsertPoint; + sgl.AutoRedraw[sgl.AutoRedraw[I].Prev].Next = I; + } + + if (sgl.AutoRedraw[I].Next != -1) + sgl.AutoRedraw[sgl.AutoRedraw[I].Next].Prev = I; + + sgl.AutoRedraw[I].Valid = ITEM_AUTOREDRAW; + sgl.AutoRedraw[I].Parent = sgl.AutoRedrawParent; + sgl.AutoRedraw[I].Level = Level; + + memcpy(&sgl.AutoRedraw[I].Item, Item, sizeof(GuiLib_ItemRec)); + memcpy(&sgl.AutoRedraw[I].Memory, &sgl.Memory, sizeof(ItemMemory)); + + if (sgl.AutoRedraw[I].Next == -1) + sgl.AutoRedrawLast = I; + + if (sgl.AutoRedraw[I].Prev == -1) + sgl.AutoRedrawFirst = I; + + sgl.AutoRedrawInsertPoint = I; + sgl.AutoRedrawLatest = I; + sgl.AutoRedrawCount++; + } + + return I; +} +//------------------------------------------------------------------------------ +void AutoRedraw_UpdateDrawn(GuiConst_INT16S I, PrefixLocate GuiLib_ItemRec * PrefixLocate Item) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + sgl.AutoRedraw[I].Item.Drawn = Item->Drawn; + sgl.AutoRedraw[I].Item.DrawnX1 = Item->DrawnX1; + sgl.AutoRedraw[I].Item.DrawnY1 = Item->DrawnY1; + sgl.AutoRedraw[I].Item.DrawnX2 = Item->DrawnX2; + sgl.AutoRedraw[I].Item.DrawnY2 = Item->DrawnY2; + } + + return; +} +//------------------------------------------------------------------------------ +void AutoRedraw_Delete(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if (sgl.AutoRedrawLast == I) + sgl.AutoRedrawLast = sgl.AutoRedraw[I].Prev; + + if (sgl.AutoRedrawFirst == I) + sgl.AutoRedrawFirst = sgl.AutoRedraw[I].Next; + + if (sgl.AutoRedraw[I].Prev != -1) + sgl.AutoRedraw[sgl.AutoRedraw[I].Prev].Next = sgl.AutoRedraw[I].Next; + + if (sgl.AutoRedraw[I].Next != -1) + sgl.AutoRedraw[sgl.AutoRedraw[I].Next].Prev = sgl.AutoRedraw[I].Prev; + + sgl.AutoRedraw[I].Next = -1; + sgl.AutoRedraw[I].Prev = -1; + sgl.AutoRedraw[I].Valid = ITEM_NONE; + + sgl.AutoRedrawCount--; + } + + return; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_DeleteStruct(GuiConst_INT16S Struct_id) +{ + GuiConst_INT16S I, N, X; + + I = sgl.AutoRedrawFirst; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if ((Struct_id < 0) || (Struct_id >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if (sgl.AutoRedraw[Struct_id].Valid == ITEM_NONE) + return -1; + + while (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + N = sgl.AutoRedraw[I].Next; + if (sgl.AutoRedraw[I].Parent == Struct_id) + { + X = AutoRedraw_DeleteStruct(I); + if ((X >= 0) && (X < GuiConst_MAX_DYNAMIC_ITEMS)) + N = sgl.AutoRedraw[X].Next; + } + + I = N; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + break; + } + + sgl.AutoRedrawInsertPoint = sgl.AutoRedraw[Struct_id].Prev; + + AutoRedraw_Delete(Struct_id); + + if (sgl.AutoRedrawInsertPoint >= 0) + return sgl.AutoRedrawInsertPoint; + else + return sgl.AutoRedrawFirst; +} +//------------------------------------------------------------------------------ +void AutoRedraw_Destroy(void) +{ + GuiConst_INT16S I; + + for (I=0;I<GuiConst_MAX_DYNAMIC_ITEMS;I++) + { + sgl.AutoRedraw[I].Next = -1; + sgl.AutoRedraw[I].Prev = -1; + sgl.AutoRedraw[I].Valid = ITEM_NONE; + } + + sgl.AutoRedrawCount = 0; + sgl.AutoRedrawFirst = -1; + sgl.AutoRedrawLast = -1; + sgl.AutoRedrawCount = 0; + sgl.AutoRedrawParent = -1; + sgl.AutoRedrawUpdate = GuiLib_FALSE; + sgl.AutoRedrawInsertPoint = GuiConst_MAX_DYNAMIC_ITEMS; + sgl.AutoRedrawLatest = -1; + + return; +} +//------------------------------------------------------------------------------ +PrefixLocate GuiLib_ItemRec *AutoRedraw_GetItem(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return NULL; + else + return &sgl.AutoRedraw[I].Item; +} +//------------------------------------------------------------------------------ +PrefixLocate ItemMemory *AutoRedraw_GetItemMemory(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return NULL; + else + return &sgl.AutoRedraw[I].Memory; +} +//------------------------------------------------------------------------------ +void AutoRedraw_UpdateOnChange(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + { + sgl.AutoRedraw[I].ValueSize = 0; + + if (sgl.AutoRedraw[I].Item.UpdateType == GuiLib_UPDATE_ON_CHANGE) + { + if (sgl.AutoRedraw[I].Item.VarPtr != 0) + { + switch (sgl.AutoRedraw[I].Item.VarType) + { + case GuiLib_VAR_BOOL: + case GuiLib_VAR_UNSIGNED_CHAR: + case GuiLib_VAR_SIGNED_CHAR: + sgl.AutoRedraw[I].ValueSize = 1; + break; + + case GuiLib_VAR_UNSIGNED_INT: + case GuiLib_VAR_SIGNED_INT: + sgl.AutoRedraw[I].ValueSize = 2; + break; + + case GuiLib_VAR_UNSIGNED_LONG: + case GuiLib_VAR_SIGNED_LONG: + case GuiLib_VAR_FLOAT: + sgl.AutoRedraw[I].ValueSize = 4; + break; + + case GuiLib_VAR_DOUBLE: + sgl.AutoRedraw[I].ValueSize = 8; + break; + + case GuiLib_VAR_COLOR: + sgl.AutoRedraw[I].ValueSize = + GuiConst_PIXEL_BYTE_SIZE; + break; + + case GuiLib_VAR_STRING: + sgl.AutoRedraw[I].ValueSize = + GuiLib_AUTOREDRAW_MAX_VAR_SIZE; + break; + + default: + sgl.AutoRedraw[I].ValueSize = 0; + } + if (sgl.AutoRedraw[I].ValueSize > 0) + { + memcpy(&sgl.AutoRedraw[I].Value[0], + sgl.AutoRedraw[I].Item.VarPtr, + sgl.AutoRedraw[I].ValueSize); + } + } + } + } + + return; +} +//------------------------------------------------------------------------------ +GuiConst_INT8S RefreshColorVariable(GuiConst_INTCOLOR PrefixLocate *comp, GuiConst_INT16U idx) +{ + GuiConst_INTCOLOR PrefixLocate *ColVarPtr; + GuiConst_INTCOLOR ColVal; + GuiConst_INT8S changed = GuiLib_FALSE; + + if (idx != 0xFFFF) + { + if (idx < GuiStruct_VarPtrCnt) + { + ColVarPtr = (GuiConst_INTCOLOR PrefixLocate *)ReadWord(GuiStruct_VarPtrList[idx]); + if (ColVarPtr != 0) + { + ColVal = *ColVarPtr; + if (*comp != ColVal) + { + *comp = ColVal; + changed = GuiLib_TRUE; + } + } + } + } + + return changed; +} +//------------------------------------------------------------------------------ +GuiConst_INT8S AutoRedraw_VarChanged(GuiConst_INT16S I) +{ + GuiLib_ItemRecPtr Item; + GuiConst_INT16S VarChange; + GuiConst_INT8S changed; + + changed = GuiLib_FALSE; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return changed; + + if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + { + Item = &sgl.AutoRedraw[I].Item; + if (Item->UpdateType == GuiLib_UPDATE_ON_CHANGE) + { + if ((Item->TextPar[0].BitFlags & GuiLib_BITFLAG_INUSE) && + (Item->VarPtr != 0)) + { + VarChange = 0; + if (sgl.AutoRedraw[I].ValueSize > 0) + { + if (Item->VarType == GuiLib_VAR_STRING) + VarChange = VarStrCmp(&sgl.AutoRedraw[I].Value[0], + (GuiConst_INT8U PrefixLocate *)Item->VarPtr); + else + VarChange = + memcmp(&sgl.AutoRedraw[I].Value[0], + Item->VarPtr, + sgl.AutoRedraw[I].ValueSize); + } + if ((sgl.AutoRedraw[I].ValueSize == 0) || (VarChange != 0)) + changed = GuiLib_TRUE; + } + } + else + changed = GuiLib_TRUE; + + changed |= RefreshColorVariable(&Item->ForeColor, Item->ForeColorIndex); + changed |= RefreshColorVariable(&Item->BackColor, Item->BackColorIndex); + changed |= RefreshColorVariable(&Item->BarForeColor, Item->BarForeColorIndex); + changed |= RefreshColorVariable(&Item->BarBackColor, Item->BarBackColorIndex); + +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + if (Item->ItemType == GuiLib_ITEM_RADIOBUTTON) + changed |= RefreshColorVariable(&Item->CompPars.CompRadioButton.MarkColor, + Item->CompPars.CompRadioButton.MarkColorIndex); +#endif +#ifdef GuiConst_ITEM_CHECKBOX_INUSE + if (Item->ItemType == GuiLib_ITEM_CHECKBOX) + changed |= RefreshColorVariable(&Item->CompPars.CompCheckBox.MarkColor, + Item->CompPars.CompCheckBox.MarkColorIndex); +#endif +#ifdef GuiConst_ITEM_BUTTON_INUSE + if (Item->ItemType == GuiLib_ITEM_BUTTON) + { + GuiConst_INT32S state; + + if ((sgl.CurItem.VarPtr != 0) && + (sgl.CurItem.VarType != GuiLib_VAR_STRING)) + { + state = ReadVar(Item->VarPtr, Item->VarType); + if ((state < GuiLib_BUTTON_STATE_UP) || + (state > GuiLib_BUTTON_STATE_DISABLED)) + state = GuiLib_BUTTON_STATE_UP; + } + else + state = GuiLib_BUTTON_STATE_UP; + + + changed |= RefreshColorVariable(&Item->CompPars.CompButton.TextColor[state], + Item->CompPars.CompButton.TextColorIndex[state]); + + changed |= RefreshColorVariable(&Item->CompPars.CompButton.GlyphIconColor[state], + Item->CompPars.CompButton.GlyphIconColorIndex[state]); + } +#endif + } + + return changed; +} +//------------------------------------------------------------------------------ +void AutoRedraw_UpdateVar(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + if ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + { + if (sgl.AutoRedraw[I].Item.UpdateType == GuiLib_UPDATE_ON_CHANGE) + { + if ((sgl.AutoRedraw[I].Item.TextPar[0].BitFlags & GuiLib_BITFLAG_INUSE) && + (sgl.AutoRedraw[I].Item.VarPtr != 0)) + { + if (sgl.AutoRedraw[I].ValueSize > 0) + { + memcpy(&sgl.AutoRedraw[I].Value[0], + sgl.AutoRedraw[I].Item.VarPtr, + sgl.AutoRedraw[I].ValueSize); + } + } + } + } + + return; +} + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_InsertTextBox(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, + GuiConst_INT16S Struct, + GuiConst_INT8U Level) +{ + GuiConst_INT16S I; + + I = AutoRedraw_Insert(Item, Struct, Level); + + if (I != -1) + sgl.AutoRedraw[I].Valid = ITEM_TEXTBOX; + + return I; +}//------------------------------------------------------------------------------ +void AutoRedraw_SetAsTextBox(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + sgl.AutoRedraw[I].Valid |= ITEM_TEXTBOX; + + return; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetTextBox(GuiConst_INT8S T, GuiConst_INT16S I) +{ + if (I == -1) + { + I = sgl.AutoRedrawFirst; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + } + else + { + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if (sgl.AutoRedraw[I].Valid == ITEM_NONE) + return -1; + + I = sgl.AutoRedraw[I].Next; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + } + + while (I != -1) + { + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_TEXTBOX) == ITEM_TEXTBOX) + { + if (sgl.AutoRedraw[I].Item.CompPars.CompTextBox.ScrollIndex == T) + break; + } + I = sgl.AutoRedraw[I].Next; + } + else + return -1; + } + + return I; +} + +#endif // GuiConst_TEXTBOX_FIELDS_ON +#ifdef GuiConst_CURSOR_SUPPORT_ON +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_InsertCursor(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, + GuiConst_INT16S Struct, + GuiConst_INT8U Level) +{ + GuiConst_INT16S I; + + I = AutoRedraw_Insert(Item, Struct, Level); + + if (I != -1) + sgl.AutoRedraw[I].Valid = ITEM_CURSOR; + + return I; +} +//------------------------------------------------------------------------------ +void AutoRedraw_SetAsCursor(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + sgl.AutoRedraw[I].Valid |= ITEM_CURSOR; + + return; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_IsOnlyCursor(GuiConst_INT16S I) +{ + GuiConst_INT16S ret = GuiLib_FALSE; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return ret; + + if (sgl.AutoRedraw[I].Valid == ITEM_CURSOR) + ret = GuiLib_TRUE; + + return ret; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetCursor(GuiConst_INT8S C, GuiConst_INT16S I) +{ + if (I == -1) + { + I = sgl.AutoRedrawFirst; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + } + else + { + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if (sgl.AutoRedraw[I].Valid == ITEM_NONE) + return -1; + + I = sgl.AutoRedraw[I].Next; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + } + + while (I != -1) + { + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) + { + if (sgl.AutoRedraw[I].Item.CursorFieldNo == C) + break; + } + I = sgl.AutoRedraw[I].Next; + } + else + return -1; + } + + return I; +} +//------------------------------------------------------------------------------ +GuiConst_INT8S AutoRedraw_GetCursorNumber(GuiConst_INT16S I) +{ + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if (sgl.AutoRedraw[I].Valid & ITEM_CURSOR) + return sgl.AutoRedraw[I].Item.CursorFieldNo; + + return -1; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetFirstCursor(void) +{ + GuiConst_INT16S I, result; + GuiConst_INT8S C; + + I = sgl.AutoRedrawFirst; + C = 0x7F; + + result = -1; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return result; + + while (I != -1) + { + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) + { + if (sgl.AutoRedraw[I].Item.CursorFieldNo < C) + { + C = sgl.AutoRedraw[I].Item.CursorFieldNo; + result = I; + } + } + I = sgl.AutoRedraw[I].Next; + } + else + return -1; + } + + return result; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetLastCursor(void) +{ + GuiConst_INT16S I, result; + GuiConst_INT8S C; + + I = sgl.AutoRedrawFirst; + C = 0; + + result = -1; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return result; + + while (I != -1) + { + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) + { + if (sgl.AutoRedraw[I].Item.CursorFieldNo > C) + { + C = sgl.AutoRedraw[I].Item.CursorFieldNo; + result = I; + } + } + I = sgl.AutoRedraw[I].Next; + } + else + return -1; + } + + return result; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetNextCursor(GuiConst_INT8S C) +{ + GuiConst_INT16S I, result; + GuiConst_INT8S closest; + + I = sgl.AutoRedrawFirst; + closest = 0x7f; + + result = -1; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return result; + + while (I != -1) + { + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) + { + if ((sgl.AutoRedraw[I].Item.CursorFieldNo > C) + && (sgl.AutoRedraw[I].Item.CursorFieldNo <= closest)) + { + closest = sgl.AutoRedraw[I].Item.CursorFieldNo; + result = I; + } + } + I = sgl.AutoRedraw[I].Next; + } + else + return -1; + } + + return result; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_GetPrevCursor(GuiConst_INT8S C) +{ + GuiConst_INT16S I, result; + GuiConst_INT8S closest; + + I = sgl.AutoRedrawFirst; + closest = 0; + + result = -1; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return result; + + while (I != -1) + { + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) + { + if ((sgl.AutoRedraw[I].Item.CursorFieldNo < C) + && (sgl.AutoRedraw[I].Item.CursorFieldNo >= closest)) + { + closest = sgl.AutoRedraw[I].Item.CursorFieldNo; + result = I; + } + } + I = sgl.AutoRedraw[I].Next; + } + else + return -1; + } + + return result; +} +//------------------------------------------------------------------------------ +GuiConst_INT16S AutoRedraw_CheckCursorInheritance(GuiConst_INT16S N) +{ + GuiConst_INT16S I, J, result; + GuiConst_INT16S cursor_id; + + if (GuiLib_ActiveCursorFieldNo < 0) + return -1; + + if ((N < 0) || (N >= GuiConst_MAX_DYNAMIC_ITEMS)) + return -1; + + if (sgl.AutoRedraw[N].Valid == ITEM_NONE) + return -1; + + I = sgl.AutoRedraw[N].Parent; + result = 1; + + while (result == 1) + { + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + { + result = -1; + break; + } + + if (sgl.AutoRedraw[I].Valid != ITEM_NONE) + { + if ((sgl.AutoRedraw[I].Valid & ITEM_CURSOR) == ITEM_CURSOR) + { + cursor_id = sgl.AutoRedraw[I].Item.CursorFieldNo; + + if (cursor_id == GuiLib_ActiveCursorFieldNo) + { + result = 0; + break; + } + } + J = sgl.AutoRedraw[I].Parent; + if (J == I) + result = -1; + I = J; + } + else + { + result = -1; + break; + } + + } + + return result; +} +//------------------------------------------------------------------------------ +void AutoRedraw_ResetCursor(void) +{ + GuiConst_INT16S I; + + I = sgl.AutoRedrawFirst; + + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + return; + + while ((sgl.AutoRedraw[I].Valid & ITEM_AUTOREDRAW) == ITEM_AUTOREDRAW) + { + sgl.AutoRedraw[I].Item.CursorFieldNo = GuiLib_NO_CURSOR; + + I = sgl.AutoRedraw[I].Next; + if ((I < 0) || (I >= GuiConst_MAX_DYNAMIC_ITEMS)) + break; + } + + return; +} +#endif // GuiConst_CURSOR_SUPPORT_ON +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiLib.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiLib.c Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,4965 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* v6.0.9.005 */ +/* */ +/* ************************************************************************ */ + + + +//------------------------------------------------------------------------------ + +#include "GuiConst.h" +#include "GuiLib.h" +#include "GuiLibStruct.h" +#ifdef GuiConst_VNC_REMOTE_SUPPORT_ON +#include "GuiVnc.h" +#endif +#include <string.h> +#include <stdlib.h> + +#ifndef GuiConst_PC_V6_0_9 +If your compiler sees this text you are using a wrong version of the easyGUI +library. Version numbers of the easyGUI PC application and c library must match. +Only exception is GuiDisplay.c/h (your display driver), which can be kept from +version to version. +#endif + +#define WANT_DOUBLE_BUFFERING // Also in GuiGraph16.h, GuiDisplay.c - *** all three must match *** + + +#define GuiLib_CHR_PSLEFT_OFS 0 +#define GuiLib_CHR_PSRIGHT_OFS 5 +#define GuiLib_CHR_XLEFT_OFS 10 +#define GuiLib_CHR_XWIDTH_OFS 11 +#define GuiLib_CHR_YTOP_OFS 12 +#define GuiLib_CHR_YHEIGHT_OFS 13 +#define GuiLib_CHR_LINECTRL_OFS 14 +#define GuiLib_CHR_PS_TOP_OFS 0 +#define GuiLib_CHR_PS_MID_OFS 1 +#define GuiLib_CHR_PS_MIDBASE_OFS 2 +#define GuiLib_CHR_PS_BASE_OFS 3 +#define GuiLib_CHR_PS_BOTTOM_OFS 4 + + + +#ifdef GuiConst_ARAB_CHARS_INUSE +#define GuiLib_ARAB_LIGATURES_CNT 4 +const GuiConst_INT16U GuiLib_ARAB_LIGATURES[GuiLib_ARAB_LIGATURES_CNT][3] = + {{0x0644, 0x0622, 0xFEF5}, + {0x0644, 0x0623, 0xFEF7}, + {0x0644, 0x0625, 0xFEF9}, + {0x0644, 0x0627, 0xFEFB}}; + +#define GuiLib_ARAB_CHAR_PRI_MIN 0x0622 +#define GuiLib_ARAB_CHAR_PRI_MAX 0x06D6 +#define GuiLib_ARAB_CHAR_SEC_MIN 0xFB50 +#define GuiLib_ARAB_CHAR_SEC_MAX 0xFEF4 +#define GuiLib_ARAB_CHAR_TYPE_ISO 0 +#define GuiLib_ARAB_CHAR_TYPE_FIN 1 +#define GuiLib_ARAB_CHAR_TYPE_INI 2 +#define GuiLib_ARAB_CHAR_TYPE_MED 3 +#define GuiLib_ARAB_CHAR_ISOFIN 0x02 +#define GuiLib_ARAB_CHAR_ISOFININIMED 0x04 +#define GuiLib_ARAB_CHAR_DIACRITIC 0x0A +#define GuiLib_ARAB_CHAR_CONVERT_CNT 83 + +const GuiConst_INT16U GuiLib_ARAB_CHAR_CONVERT[GuiLib_ARAB_CHAR_CONVERT_CNT][3] = + {{0x0622, 0xFE81, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0623, 0xFE83, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0624, 0xFE85, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0625, 0xFE87, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0626, 0xFE89, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0627, 0xFE8D, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0628, 0xFE8F, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0629, 0xFE93, GuiLib_ARAB_CHAR_ISOFIN}, + {0x062A, 0xFE95, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x062B, 0xFE99, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x062C, 0xFE9D, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x062D, 0xFEA1, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x062E, 0xFEA5, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x062F, 0xFEA9, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0630, 0xFEAB, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0631, 0xFEAD, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0632, 0xFEAF, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0633, 0xFEB1, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0634, 0xFEB5, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0635, 0xFEB9, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0636, 0xFEBD, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0637, 0xFEC1, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0638, 0xFEC5, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0639, 0xFEC9, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x063A, 0xFECD, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0641, 0xFED1, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0642, 0xFED5, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0643, 0xFED9, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0644, 0xFEDD, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0645, 0xFEE1, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0646, 0xFEE5, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0647, 0xFEE9, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0648, 0xFEED, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0649, 0xFEEF, GuiLib_ARAB_CHAR_ISOFIN}, + {0x064A, 0xFEF1, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x064E, 0xFE76, GuiLib_ARAB_CHAR_DIACRITIC}, + {0x064F, 0xFE78, GuiLib_ARAB_CHAR_DIACRITIC}, + {0x0650, 0xFE7A, GuiLib_ARAB_CHAR_DIACRITIC}, + {0x0651, 0xFE7C, GuiLib_ARAB_CHAR_DIACRITIC}, + {0x0652, 0xFE7E, GuiLib_ARAB_CHAR_DIACRITIC}, + {0x0671, 0xFB50, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0679, 0xFB66, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x067A, 0xFB5E, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x067B, 0xFB52, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x067E, 0xFB56, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x067F, 0xFB62, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0680, 0xFB5A, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0683, 0xFB76, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0684, 0xFB72, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0686, 0xFB7A, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0687, 0xFB7E, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x0688, 0xFB88, GuiLib_ARAB_CHAR_ISOFIN}, + {0x068C, 0xFB84, GuiLib_ARAB_CHAR_ISOFIN}, + {0x068D, 0xFB82, GuiLib_ARAB_CHAR_ISOFIN}, + {0x068E, 0xFB86, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0691, 0xFB8C, GuiLib_ARAB_CHAR_ISOFIN}, + {0x0698, 0xFB8A, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06A4, 0xFB6A, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06A6, 0xFB6E, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06A9, 0xFB8E, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06AD, 0xFBD3, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06AF, 0xFB92, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06B1, 0xFB9A, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06B3, 0xFB96, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06BA, 0xFB9E, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06BB, 0xFBA0, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06BE, 0xFBAA, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06C0, 0xFBA4, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06C1, 0xFBA6, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06C5, 0xFBE0, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06C6, 0xFBD9, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06C7, 0xFBD7, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06C8, 0xFBDB, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06C9, 0xFBE2, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06CB, 0xFBDE, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06CC, 0xFBFC, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06D0, 0xFBE4, GuiLib_ARAB_CHAR_ISOFININIMED}, + {0x06D2, 0xFBAE, GuiLib_ARAB_CHAR_ISOFIN}, + {0x06D3, 0xFBB0, GuiLib_ARAB_CHAR_ISOFIN}, + { 0, 0xFEF5, GuiLib_ARAB_CHAR_ISOFIN}, + { 0, 0xFEF7, GuiLib_ARAB_CHAR_ISOFIN}, + { 0, 0xFEF9, GuiLib_ARAB_CHAR_ISOFIN}, + { 0, 0xFEFB, GuiLib_ARAB_CHAR_ISOFIN}}; +#endif + +//------------------------------------------------------------------------------ +//----------------------X----------------------- + +GuiLib_DisplayLineRec GuiLib_DisplayRepaint[GuiConst_BYTE_LINES]; +#ifdef GuiConst_VNC_REMOTE_SUPPORT_ON +GuiLib_DisplayLineRec GuiLib_VncRepaint[GuiConst_BYTE_LINES]; +#endif // GuiConst_VNC_REMOTE_SUPPORT_ON + +#ifdef GuiConst_REMOTE_DATA +void (*GuiLib_RemoteDataReadBlock) ( + GuiConst_INT32U SourceOffset, + GuiConst_INT32U SourceSize, + GuiConst_INT8U * TargetAddr); +#endif // GuiConst_REMOTE_DATA +#ifdef GuiConst_REMOTE_TEXT_DATA +void (*GuiLib_RemoteTextReadBlock) ( + GuiConst_INT32U SourceOffset, + GuiConst_INT32U SourceSize, + void * TargetAddr); +#endif // GuiConst_REMOTE_TEXT_DATA + +#ifdef GuiConst_CURSOR_SUPPORT_ON +GuiConst_INT16S GuiLib_ActiveCursorFieldNo; +#endif +#ifdef GuiConst_ALLOW_UPSIDEDOWN_AT_RUNTIME +GuiConst_INT8U GuiLib_DisplayUpsideDown; +#endif + +GuiConst_INT16S GuiLib_CurStructureNdx; +GuiConst_INT16S GuiLib_LanguageIndex; + +PrefixLocate GuiLib_GLOBAL gl; +static PrefixLocate GuiLib_STATIC sgl; + + +//============================================================================== +#ifdef GuiConst_ALLOW_UPSIDEDOWN_AT_RUNTIME + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + if (GuiLib_DisplayUpsideDown) \ + { \ + X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \ + Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \ + } \ + else \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = sgl.CoordOrigoY + Y; \ + } \ + } + + #define GuiLib_MIRROR_BITS(B) \ + { \ + B = (((B & 0x80) >> 7) | ((B & 0x40) >> 5) | \ + ((B & 0x20) >> 3) | ((B & 0x10) >> 1) | \ + ((B & 0x08) << 1) | ((B & 0x04) << 3) | \ + ((B & 0x02) << 5) | ((B & 0x01) << 7)); \ + } +#else + #ifdef GuiConst_ROTATED_OFF + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \ + Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \ + Y = sgl.CoordOrigoY + Y; \ + } + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = sgl.CoordOrigoY + Y; \ + } + #endif + #endif + #endif + #ifdef GuiConst_ROTATED_90DEGREE_RIGHT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \ + SwapCoord(&X, &Y); \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = sgl.CoordOrigoY + Y; \ + SwapCoord(&X, &Y); \ + } + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \ + Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \ + SwapCoord(&X, &Y); \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \ + Y = sgl.CoordOrigoY + Y; \ + SwapCoord(&X, &Y); \ + } + #endif + #endif + #endif + #ifdef GuiConst_ROTATED_UPSIDEDOWN + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = sgl.CoordOrigoY + Y; \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \ + } + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \ + Y = sgl.CoordOrigoY + Y; \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoX - X; \ + Y = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoY - Y; \ + } + #endif + #endif + #endif + #ifdef GuiConst_ROTATED_90DEGREE_LEFT + #ifdef GuiConst_MIRRORED_HORIZONTALLY + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \ + Y = sgl.CoordOrigoY + Y; \ + SwapCoord(&X, &Y); \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = GuiConst_DISPLAY_HEIGHT_HW - 1 - sgl.CoordOrigoX - X; \ + Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \ + SwapCoord(&X, &Y); \ + } + #endif + #else + #ifdef GuiConst_MIRRORED_VERTICALLY + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = sgl.CoordOrigoY + Y; \ + SwapCoord(&X, &Y); \ + } + #else + #define GuiLib_COORD_ADJUST(X, Y) \ + { \ + X = sgl.CoordOrigoX + X; \ + Y = GuiConst_DISPLAY_WIDTH_HW - 1 - sgl.CoordOrigoY - Y; \ + SwapCoord(&X, &Y); \ + } + #endif + #endif + #endif +#endif + +#define GuiLib_FONT_MID_Y(BaseLine, TopLine) ((BaseLine - TopLine + 1) / 2) + +#ifdef GuiConst_COLOR_DEPTH_1 +#define GuiLib_COLOR_ADJUST(C) C &= 0x01; +#endif +#ifdef GuiConst_COLOR_DEPTH_2 +#define GuiLib_COLOR_ADJUST(C) C &= 0x03; +#endif +#ifdef GuiConst_COLOR_DEPTH_4 +#define GuiLib_COLOR_ADJUST(C) C &= 0x0F; +#endif +#ifdef GuiConst_COLOR_DEPTH_5 +#define GuiLib_COLOR_ADJUST(C) C = (C & 0x1F) << 3; +#endif +#ifndef GuiLib_COLOR_ADJUST +#define GuiLib_COLOR_ADJUST_TRANSP(C) +#define GuiLib_COLOR_ADJUST(C) +#else +#define GuiLib_COLOR_ADJUST_TRANSP(C) if (C != -1) GuiLib_COLOR_ADJUST(C) +#endif +//----------------------X----------------------- +#define GuiLib_GET_MIN(A, B) ((A) > (B) ? (B) : (A)) +#define GuiLib_GET_MAX(A, B) ((A) > (B) ? (A) : (B)) +#define GuiLib_GET_MINMAX(X, A, B) ((X) > (A) ? (GuiLib_GET_MIN(X,B)) : (A)) +#define GuiLib_LIMIT_MIN(X, A) if (X < A) X = A +#define GuiLib_LIMIT_MAX(X, B) if (X > B) X = B +#define GuiLib_LIMIT_MINMAX(X, A, B) \ +{ \ + if (X < A) \ + X = A; \ + else if ((B < A) && (X > A)) \ + X = A; \ + else if ((B >= A) && (X > B)) \ + X = B; \ +} + +//============================================================================== + +//------------------------------------------------------------------------------ +static GuiConst_INT16S CopyBytes(GuiConst_INT8U *dst, GuiConst_INT8U *src, GuiConst_INT32S size) +{ + GuiConst_INT32S i; + GuiConst_INT8U *d, *s; + + if (size < 0) + return -1; + + if (size > GuiConst_DISPLAY_BYTES) + return -1; + + d = (GuiConst_INT8U *)dst; + s = (GuiConst_INT8U *)src; + + for (i=0;i<size;i++) + *d++ = *s++; + + return 0; +} +//------------------------------------------------------------------------------ +static void SwapCoord( + GuiConst_INT16S * X1, + GuiConst_INT16S * X2) +{ + GuiConst_INT16S Tmp; + + Tmp = *X1; + *X1 = *X2; + *X2 = Tmp; +} + +//------------------------------------------------------------------------------ +static GuiConst_INT8U OrderCoord( + GuiConst_INT16S * X1, + GuiConst_INT16S * X2) +{ + if (*X1 > *X2) + { + SwapCoord (X1, X2); + return (1); + } + else + return (0); +} + +#ifdef GuiConst_CLIPPING_SUPPORT_ON +//------------------------------------------------------------------------------ +static GuiConst_INT8U CheckRect( + GuiConst_INT16S * X1, + GuiConst_INT16S * Y1, + GuiConst_INT16S * X2, + GuiConst_INT16S * Y2) +{ + if (sgl.ClippingTotal || + (*X1 > sgl.ClippingX2) || (*X2 < sgl.ClippingX1) || + (*Y1 > sgl.ClippingY2) || (*Y2 < sgl.ClippingY1)) + return (0); + else + { + if (*X1 < sgl.ClippingX1) + *X1 = sgl.ClippingX1; + if (*X2 > sgl.ClippingX2) + *X2 = sgl.ClippingX2; + if (*Y1 < sgl.ClippingY1) + *Y1 = sgl.ClippingY1; + if (*Y2 > sgl.ClippingY2) + *Y2 = sgl.ClippingY2; + return (1); + } +} +#endif + +//============================================================================== + +#ifdef GuiConst_COLOR_DEPTH_1 + #ifdef GuiConst_BYTE_HORIZONTAL + #include "GuiGraph1H.c" + #else + #include "GuiGraph1V.c" + #endif +#endif +#ifdef GuiConst_COLOR_DEPTH_2 + #ifdef GuiConst_BYTE_HORIZONTAL + #ifdef GuiConst_COLOR_PLANES_2 + #include "GuiGraph2H2P.c" + #else + #include "GuiGraph2H.c" + #endif + #else + #ifdef GuiConst_COLOR_PLANES_2 + #include "GuiGraph2V2P.c" + #else + #include "GuiGraph2V.c" + #endif + #endif +#endif +#ifdef GuiConst_COLOR_DEPTH_4 + #ifdef GuiConst_BYTE_HORIZONTAL + #include "GuiGraph4H.c" + #else + #include "GuiGraph4V.c" + #endif +#endif +#ifdef GuiConst_COLOR_DEPTH_5 + #include "GuiGraph5.c" +#endif +#ifdef GuiConst_COLOR_DEPTH_8 + #include "GuiGraph8.c" +#endif +#ifdef GuiConst_COLOR_DEPTH_12 + #include "GuiGraph16.c" +#endif +#ifdef GuiConst_COLOR_DEPTH_15 + #include "GuiGraph16.c" +#endif +#ifdef GuiConst_COLOR_DEPTH_16 + #include "GuiGraph16.h" +#endif +#ifdef GuiConst_COLOR_DEPTH_18 + #include "GuiGraph24.c" +#endif +#ifdef GuiConst_COLOR_DEPTH_24 + #include "GuiGraph24.h" +#endif +#ifdef GuiConst_COLOR_DEPTH_32 + #include "GuiGraph32.c" +#endif + +#include "GuiGraph.h" +#ifdef GuiConst_ADV_GRAPHICS_ON +//#include "GuiGraphAdv.c" +#endif + +//============================================================================== +static void DrawStructure(GuiLib_StructPtr Structure, GuiConst_INT8U ColorInvert) PrefixReentrant; + +#ifdef GuiConst_CURSOR_SUPPORT_ON +static void DrawCursorItem(GuiConst_INT8U CursorVisible); +#endif + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE +static void ScrollBox_DrawScrollLine(GuiConst_INT8U ScrollBoxIndex, GuiConst_INT16S LineNdx); +#endif + +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE +static GuiConst_INT16S IndexOfGraphicsLayer(GuiConst_INT16S GraphicsLayerIndex); +static GuiConst_INT8U GraphicsLayer_Push(GuiConst_INT8U GraphicsLayerIndex); +static GuiConst_INT8U GraphicsLayer_Pop(GuiConst_INT16S GraphicsLayerIndex); +static void GraphicsLayer_Copy( + GuiConst_INT8U *DestAddress, + GuiConst_INT16U DestLineSize, + GuiConst_INT16S DestX, + GuiConst_INT16S DestY, + GuiConst_INT8U *SourceAddress, + GuiConst_INT16U SourceLineSize, + GuiConst_INT16S SourceX, + GuiConst_INT16S SourceY, + GuiConst_INT16U Width, + GuiConst_INT16U Height); +#endif + +//============================================================================== + +//------------------------------------------------------------------------------ +static void ResetLayerBufPtr(void) +{ +#ifdef GuiConst_DISPLAY_BUFFER_EASYGUI +#ifdef GuiLib_COLOR_UNIT_16 + sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf.Bytes[0][0]); +#else + #ifdef GuiConst_COLOR_DEPTH_2 + #ifdef GuiConst_BYTE_HORIZONTAL + #ifdef GuiConst_COLOR_PLANES_2 + sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0][0]); + #else + sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0]); + #endif + #else // GuiConst_BYTE_HORIZONTAL + #ifdef GuiConst_COLOR_PLANES_2 + sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0][0]); + #else + sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0]); + #endif + #endif // GuiConst_BYTE_HORIZONTAL + #else // GuiConst_COLOR_DEPTH_2 + sgl.CurLayerBufPtr = &(GuiLib_DisplayBuf[0][0]); + #endif // GuiConst_COLOR_DEPTH_2 +#endif // GuiLib_COLOR_UNIT_16 +#else // GuiConst_DISPLAY_BUFFER_EASYGUI + sgl.CurLayerBufPtr = 0; +#endif // GuiConst_DISPLAY_BUFFER_EASYGUI + + sgl.CurLayerLineSize = GuiConst_BYTES_PR_LINE; + sgl.CurLayerWidth = GuiConst_DISPLAY_WIDTH_HW; + sgl.CurLayerHeight = GuiConst_DISPLAY_HEIGHT_HW; + sgl.CurLayerBytes = GuiConst_DISPLAY_BYTES; + sgl.BaseLayerDrawing = 1; +} + +//------------------------------------------------------------------------------ +void GuiLib_Init(void) +{ + sgl.RefreshClock = 0; + + ResetLayerBufPtr(); + + AutoRedraw_Init(); + +#ifdef GuiConst_DISPLAY_ACTIVE_AREA +#ifdef GuiConst_DISPLAY_ACTIVE_AREA_COO_REL + sgl.DisplayOrigoX = GuiConst_DISPLAY_ACTIVE_AREA_X1; + sgl.DisplayOrigoY = GuiConst_DISPLAY_ACTIVE_AREA_Y1; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.DisplayActiveAreaX1 = 0; + sgl.DisplayActiveAreaY1 = 0; +#endif // GuiConst_CLIPPING_SUPPORT_ON +#ifdef GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING + sgl.DisplayActiveAreaX2 = + GuiConst_DISPLAY_ACTIVE_AREA_X2 - GuiConst_DISPLAY_ACTIVE_AREA_X1; + sgl.DisplayActiveAreaY2 = + GuiConst_DISPLAY_ACTIVE_AREA_Y2 - GuiConst_DISPLAY_ACTIVE_AREA_Y1; +#else // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING + sgl.DisplayActiveAreaX2 = + GuiConst_DISPLAY_WIDTH - GuiConst_DISPLAY_ACTIVE_AREA_X1 - 1; + sgl.DisplayActiveAreaY2 = + GuiConst_DISPLAY_HEIGHT - GuiConst_DISPLAY_ACTIVE_AREA_Y1 - 1; +#endif // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING +#else // GuiConst_DISPLAY_ACTIVE_AREA_COO_REL + sgl.DisplayOrigoX = 0; + sgl.DisplayOrigoY = 0; +#ifdef GuiConst_CLIPPING_SUPPORT_ON +#ifdef GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING + sgl.DisplayActiveAreaX1 = GuiConst_DISPLAY_ACTIVE_AREA_X1; + sgl.DisplayActiveAreaY1 = GuiConst_DISPLAY_ACTIVE_AREA_Y1; + sgl.DisplayActiveAreaX2 = GuiConst_DISPLAY_ACTIVE_AREA_X2; + sgl.DisplayActiveAreaY2 = GuiConst_DISPLAY_ACTIVE_AREA_Y2; +#else // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING + sgl.DisplayActiveAreaX1 = 0; + sgl.DisplayActiveAreaY1 = 0; + sgl.DisplayActiveAreaX2 = GuiConst_DISPLAY_WIDTH - 1; + sgl.DisplayActiveAreaY2 = GuiConst_DISPLAY_HEIGHT - 1; +#endif // GuiConst_DISPLAY_ACTIVE_AREA_CLIPPING +#endif // GuiConst_CLIPPING_SUPPORT_ON +#endif // GuiConst_DISPLAY_ACTIVE_AREA_COO_REL +#else // GuiConst_DISPLAY_ACTIVE_AREA + sgl.DisplayOrigoX = 0; + sgl.DisplayOrigoY = 0; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.DisplayActiveAreaX1 = 0; + sgl.DisplayActiveAreaY1 = 0; + sgl.DisplayActiveAreaX2 = GuiConst_DISPLAY_WIDTH - 1; + sgl.DisplayActiveAreaY2 = GuiConst_DISPLAY_HEIGHT - 1; +#endif // GuiConst_CLIPPING_SUPPORT_ON +#endif // GuiConst_DISPLAY_ACTIVE_AREA + +#ifdef GuiConst_ADV_GRAPHICS_ON +// GuiLib_AG_Init(); +#endif + + GuiDisplay_Init(); + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiLib_ResetClipping(); +#endif + GuiLib_ResetDisplayRepaint(); + GuiLib_Clear(); + + sgl.DisplayWriting = 1; + sgl.InitialDrawing = 0; + sgl.TopLevelStructure = 0; + sgl.SwapColors = 0; + GuiLib_SetLanguage(0); +#ifdef GuiConst_BLINK_SUPPORT_ON + sgl.BlinkBoxRate = 0; +#endif + sgl.InvertBoxOn = 0; + sgl.DrawingLevel = 0; + GuiLib_CurStructureNdx = -1; +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + GuiLib_TouchAdjustReset(); +#endif +#ifdef GuiConst_ITEM_BUTTON_INUSE + sgl.ButtonColorOverride = GuiLib_FALSE; + sgl.DisabledButtonColor = 0; +#endif +#ifdef GuiConst_REMOTE_DATA + GuiLib_RemoteDataReadBlock = 0; + #ifdef GuiConst_REMOTE_TEXT_DATA + GuiLib_RemoteTextReadBlock = 0; + sgl.CurRemoteText = -1; + sgl.RemoteTextTableOfs = -1; + #endif + #ifdef GuiConst_REMOTE_FONT_DATA + sgl.CurRemoteFont = -1; + #endif + #ifdef GuiConst_REMOTE_BITMAP_DATA + sgl.CurRemoteBitmap = -1; + #endif +#endif + +#ifdef GuiConst_VNC_REMOTE_SUPPORT_ON + GuiVnc_Init(); +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_Clear(void) +{ + GuiConst_INT16S I; +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GuiConst_INT16S N; +#endif + + GuiLib_ClearDisplay(); + + GuiLib_CurStructureNdx = -1; + + AutoRedraw_Destroy(); + +#ifdef GuiConst_CURSOR_SUPPORT_ON + sgl.CursorInUse = 0; + GuiLib_ActiveCursorFieldNo = -1; +#endif +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + for (I = 0; I < GuiConst_BLINK_FIELDS_MAX; I++) + { + sgl.BlinkTextItems[I].InUse = 0; + sgl.BlinkTextItems[I].Active = 0; + } +#endif +#endif +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + sgl.TouchAreaCnt = 0; +#endif + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + for (I = 0; I < GuiConst_TEXTBOX_FIELDS_MAX; I++) + sgl.TextBoxScrollPositions[I].index = -1; +#endif + + sgl.LayerOrigoX = 0; + sgl.LayerOrigoY = 0; + + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + sgl.NextScrollLineReading = 0; + sgl.GlobalScrollBoxIndex = 0; + for (I = 0; I < GuiConst_SCROLLITEM_BOXES_MAX; I++) + { + sgl.ScrollBoxesAry[I].X1 = 0; + sgl.ScrollBoxesAry[I].Y1 = 0; + sgl.ScrollBoxesAry[I].InUse = GuiLib_SCROLL_STRUCTURE_UNDEF; + sgl.ScrollBoxesAry[I].ScrollTopLine = 0; + sgl.ScrollBoxesAry[I].LastScrollTopLine = 0; + sgl.ScrollBoxesAry[I].LastMarkerLine = 0; + sgl.ScrollBoxesAry[I].ScrollActiveLine = 0; + sgl.ScrollBoxesAry[I].NumberOfLines = 0; + } +#endif + +#ifdef GuiConst_ITEM_GRAPH_INUSE + sgl.GlobalGraphIndex = 0; + for (I = 0; I < GuiConst_GRAPH_MAX; I++) + { + sgl.GraphAry[I].InUse = GuiLib_GRAPH_STRUCTURE_UNDEF; + sgl.GraphAry[I].GraphAxesCnt[GuiLib_GRAPHAXIS_X] = 0; + sgl.GraphAry[I].GraphAxesCnt[GuiLib_GRAPHAXIS_Y] = 0; + sgl.GraphAry[I].GraphDataSetCnt = 0; + } +#endif + +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GraphicsLayer_Pop(GuiLib_GRAPHICS_LAYER_BASE); + for (I = 0; I < GuiConst_GRAPHICS_LAYER_MAX; I++) + sgl.GraphicsLayerLifo[I] = -1; + sgl.GraphicsLayerLifoCnt = 0; + sgl.GlobalGraphicsLayerIndex = 0; + for (I = 0; I < GuiConst_GRAPHICS_LAYER_MAX; I++) + { + sgl.GraphicsLayerList[I].InUse = GuiLib_GRAPHICS_LAYER_UNDEF; + sgl.GraphicsLayerList[I].SizeMode = 0; + sgl.GraphicsLayerList[I].InitMode = 0; + } + sgl.GlobalGraphicsFilterIndex = 0; + for (I = 0; I < GuiConst_GRAPHICS_FILTER_MAX; I++) + { + sgl.GraphicsFilterList[I].InUse = GuiLib_GRAPHICS_FILTER_UNDEF; + sgl.GraphicsFilterList[I].GraphicsFilterFunc = 0; + sgl.GraphicsFilterList[I].SourceLayerIndexNo = GuiLib_GRAPHICS_LAYER_BASE; + sgl.GraphicsFilterList[I].DestLayerIndexNo = GuiLib_GRAPHICS_LAYER_BASE; + sgl.GraphicsFilterList[I].ContAtLayerIndexNo = GuiLib_GRAPHICS_LAYER_BASE; + for (N = 0; N <= 9; N++) + { + sgl.GraphicsFilterList[I].ParVarType[N] = 0; + sgl.GraphicsFilterList[I].ParVarPtr[N] = 0; + sgl.GraphicsFilterList[I].ParValueNum[N] = 0; + } + } +#endif + +#ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.GlobalBackgrBitmapIndex = 0; + for (I = 0; I < GuiConst_MAX_BACKGROUND_BITMAPS; I++) + { + sgl.BackgrBitmapAry[I].InUse = 0; + sgl.BackgrBitmapAry[I].Index = 0; + sgl.BackgrBitmapAry[I].X = 0; + sgl.BackgrBitmapAry[I].Y = 0; + } +#endif + + GuiLib_ClearPositionCallbacks(); +} + +// Groupstart CHARS + +#ifdef GuiConst_CHARMODE_UNICODE +//------------------------------------------------------------------------------ +GuiConst_INT16U GuiLib_UnicodeStrLen( + GuiConst_TEXT PrefixLocate *S) +{ + GuiConst_INT16U StrLen; + + StrLen = 0; + while (*S != 0) + { + StrLen++; + S++; + } + return (StrLen); +} + +//------------------------------------------------------------------------------ +void GuiLib_StrAnsiToUnicode( + GuiConst_TEXT PrefixLocate *S2, + GuiConst_CHAR PrefixLocate *S1) +{ + do + { + *S2 = (GuiConst_TEXT)(*S1); + *S2 &= 0x00ff; + if (*S1 == 0) + return; + S1++; + S2++; + } + while (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16S GuiLib_UnicodeStrCmp( + GuiConst_TEXT PrefixLocate *S1, + GuiConst_TEXT PrefixLocate *S2) +{ + do + { + if ((*S1 == 0) && (*S2 == 0)) + return (0); + + else if (*S1 == 0) + return (-1); + else if (*S2 == 0) + return (1); + else if (*S1 < *S2) + return (-1); + else if (*S1 > *S2) + return (1); + S1++; + S2++; + } + while (1); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16S GuiLib_UnicodeStrNCmp( + GuiConst_TEXT PrefixLocate *S1, + GuiConst_TEXT PrefixLocate *S2, + GuiConst_INT16U StrLen) +{ + while (StrLen > 0) + { + if ((*S1 == 0) && (*S2 == 0)) + return (0); + else if (*S1 == 0) + return (-1); + else if (*S2 == 0) + return (1); + else if (*S1 < *S2) + return (-1); + else if (*S1 > *S2) + return (1); + S1++; + S2++; + StrLen--; + } + return (0); +} + +//------------------------------------------------------------------------------ +void GuiLib_UnicodeStrCpy( + GuiConst_TEXT PrefixLocate *S2, + GuiConst_TEXT PrefixLocate *S1) +{ + do + { + *S2 = *S1; + if (*S1 == 0) + return; + S1++; + S2++; + } + while (1); +} + +//------------------------------------------------------------------------------ +void GuiLib_UnicodeStrNCpy( + GuiConst_TEXT PrefixLocate *S2, + GuiConst_TEXT PrefixLocate *S1, + GuiConst_INT16U StrLen) +{ + while (StrLen > 0) + { + *S2 = *S1; + if (*S1 != 0) + S1++; + S2++; + StrLen--; + } +} +#endif // GuiConst_CHARMODE_UNICODE + +//------------------------------------------------------------------------------ +static void ConvertIntToStr( + GuiConst_INT32U num, + GuiConst_CHAR PrefixLocate *string, + GuiConst_INT32U base) +{ + #define BUFFER_SIZE 11 + + GuiConst_INT8U digits[16] = + { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70 }; + GuiConst_CHAR buffer[BUFFER_SIZE]; + GuiConst_INT8U bufferLen; + GuiConst_INT8U i; + + bufferLen = 0; + do + { + i = num % base; + buffer[bufferLen++] = digits[i]; + num /= base; + } + while ((num != 0) && (bufferLen < BUFFER_SIZE)); + + if (bufferLen <= GuiConst_MAX_VARNUM_TEXT_LEN) + while (bufferLen-- > 0) + *string++ = buffer[bufferLen]; + + *string = '\0'; +} + +//------------------------------------------------------------------------------ +static GuiConst_INT16S CharDist( + GuiConst_INT16U ChPos1, + GuiConst_INT16U ChPos2, + GuiConst_INT8U Ps) +{ + GuiConst_INT16S Result, D; +#ifndef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U PrefixRom *Ps1; + GuiConst_INT8U PrefixRom *Ps2; +#endif +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS]; + GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS]; +#endif + +#ifdef GuiConst_REMOTE_FONT_DATA + if (Ps == GuiLib_PS_OFF) + return (sgl.CurFont->XSize); + else if ((Ps == GuiLib_PS_ON) || (Ps == GuiLib_PS_NUM)) + { + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[ChPos1]], + GuiLib_CHR_LINECTRL_OFS, CharHeader1); + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[ChPos2]], + GuiLib_CHR_LINECTRL_OFS, CharHeader2); + if ((Ps == GuiLib_PS_ON) || (sgl.TextPsMode[ChPos1] && sgl.TextPsMode[ChPos2])) + { + Result = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_TOP_OFS] - + CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_TOP_OFS]; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MID_OFS] - + CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MID_OFS]; + if (D > Result) + Result = D; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MIDBASE_OFS] - + CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MIDBASE_OFS]; + if (D > Result) + Result = D; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BASE_OFS] - + CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BASE_OFS]; + if (D > Result) + Result = D; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BOTTOM_OFS] - + CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BOTTOM_OFS]; + if (D > Result) + Result = D; + return (Result + sgl.CurFont->PsSpace + 1); + } + else if (sgl.TextPsMode[ChPos1]) + { + Result = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_TOP_OFS]; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MID_OFS]; + if (D > Result) + Result = D; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_MIDBASE_OFS]; + if (D > Result) + Result = D; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BASE_OFS]; + if (D > Result) + Result = D; + D = CharHeader1[GuiLib_CHR_PSRIGHT_OFS + GuiLib_CHR_PS_BOTTOM_OFS]; + if (D > Result) + Result = D; + return (Result + sgl.CurFont->PsSpace + 1); + } + else if (sgl.TextPsMode[ChPos2]) + { + Result = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_TOP_OFS]; + D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MID_OFS]; + if (D < Result) + Result = D; + D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_MIDBASE_OFS]; + if (D < Result) + Result = D; + D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BASE_OFS]; + if (D < Result) + Result = D; + D = CharHeader2[GuiLib_CHR_PSLEFT_OFS + GuiLib_CHR_PS_BOTTOM_OFS]; + if (D < Result) + Result = D; + return (sgl.CurFont->PsNumWidth - Result + sgl.CurFont->PsSpace); + } + else + return (sgl.CurFont->PsNumWidth + sgl.CurFont->PsSpace); + } + else + return (0); +#else + if (Ps == GuiLib_PS_OFF) + return (ReadByte(sgl.CurFont->XSize)); + else if ((Ps == GuiLib_PS_ON) || (Ps == GuiLib_PS_NUM)) + { + if ((Ps == GuiLib_PS_ON) || (sgl.TextPsMode[ChPos1] && sgl.TextPsMode[ChPos2])) + { + Ps1 = sgl.TextCharPtrAry[ChPos1] + GuiLib_CHR_PSRIGHT_OFS; + Ps2 = sgl.TextCharPtrAry[ChPos2] + GuiLib_CHR_PSLEFT_OFS; + Result = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_TOP_OFS)) - + (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_TOP_OFS)); + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MID_OFS)) - + (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MID_OFS)); + if (D > Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MIDBASE_OFS)) - + (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MIDBASE_OFS)); + if (D > Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BASE_OFS)) - + (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BASE_OFS)); + if (D > Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BOTTOM_OFS)) - + (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BOTTOM_OFS)); + if (D > Result) + Result = D; + return (Result + ReadByte(sgl.CurFont->PsSpace) + 1); + } + else if (sgl.TextPsMode[ChPos1]) + { + Ps1 = sgl.TextCharPtrAry[ChPos1] + GuiLib_CHR_PSRIGHT_OFS; + Result = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_TOP_OFS)); + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MID_OFS)); + if (D > Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_MIDBASE_OFS)); + if (D > Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BASE_OFS)); + if (D > Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps1 + GuiLib_CHR_PS_BOTTOM_OFS)); + if (D > Result) + Result = D; + return (Result + ReadByte(sgl.CurFont->PsSpace) + 1); + } + else if (sgl.TextPsMode[ChPos2]) + { + Ps2 = sgl.TextCharPtrAry[ChPos2] + GuiLib_CHR_PSLEFT_OFS; + Result = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_TOP_OFS)); + D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MID_OFS)); + if (D < Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_MIDBASE_OFS)); + if (D < Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BASE_OFS)); + if (D < Result) + Result = D; + D = (GuiConst_INT16S)(ReadBytePtr(Ps2 + GuiLib_CHR_PS_BOTTOM_OFS)); + if (D < Result) + Result = D; + return (ReadByte(sgl.CurFont->PsNumWidth) - Result + + ReadByte(sgl.CurFont->PsSpace)); + } + else + return (ReadByte(sgl.CurFont->PsNumWidth) + + ReadByte(sgl.CurFont->PsSpace)); + } + else + return (0); +#endif +} + +//------------------------------------------------------------------------------ +static GuiConst_INT16S TextPixelLength( + GuiConst_INT8U Ps, + GuiConst_INT16U CharCnt, + GuiConst_INT16S *TextXOfs) +{ + GuiConst_INT16U P; + GuiConst_INT16S L; +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS + 1]; + GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS + 1]; +#endif + + if (CharCnt == 0) + return (0); + else + { +#ifdef GuiConst_REMOTE_FONT_DATA + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[0]], + GuiLib_CHR_LINECTRL_OFS + 1, CharHeader1); + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[CharCnt - 1]], + GuiLib_CHR_LINECTRL_OFS + 1, CharHeader2); +#endif + + if (sgl.TextPsMode[0]) + { +#ifdef GuiConst_REMOTE_FONT_DATA + if (CharHeader1[GuiLib_CHR_LINECTRL_OFS] & 0x01) + L = -(GuiConst_INT16S)CharHeader1[GuiLib_CHR_PSLEFT_OFS]; + else + L = -(GuiConst_INT16S)CharHeader1[GuiLib_CHR_XLEFT_OFS]; +#else + if (ReadBytePtr(sgl.TextCharPtrAry[0] + GuiLib_CHR_LINECTRL_OFS) & 0x01) + L = -(GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[0] + + GuiLib_CHR_PSLEFT_OFS)); + else + L = -(GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[0] + + GuiLib_CHR_XLEFT_OFS)); +#endif + } + else + L = 0; + + if (TextXOfs != NULL) + TextXOfs[0] = L; + + for (P = 0; P < CharCnt - 1; P++) + { + L += CharDist (P, P + 1, Ps); + if (TextXOfs != NULL) + TextXOfs[P + 1] = L; + } + +#ifdef GuiConst_REMOTE_FONT_DATA + if (sgl.TextPsMode[CharCnt - 1]) + { + if (CharHeader2[GuiLib_CHR_LINECTRL_OFS] & 0x01) + L += (GuiConst_INT16S)CharHeader2[GuiLib_CHR_PSRIGHT_OFS] + 1; + else + L += (GuiConst_INT16S)CharHeader2[GuiLib_CHR_XLEFT_OFS] + + (GuiConst_INT16S)CharHeader2[GuiLib_CHR_XWIDTH_OFS]; + } + else if (Ps == GuiLib_PS_NUM) + { + if (CharHeader2[GuiLib_CHR_LINECTRL_OFS] & 0x01) + L += (GuiConst_INT16S)CharHeader2[GuiLib_CHR_PSRIGHT_OFS] + 1; + else + L += sgl.CurFont->PsNumWidth + sgl.CurFont->PsSpace; + } + else + L += sgl.CurFont->XSize; +#else + if (sgl.TextPsMode[CharCnt - 1]) + { + if (ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + GuiLib_CHR_LINECTRL_OFS) & 0x01) + L += (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + + GuiLib_CHR_PSRIGHT_OFS)) + 1; + else + L += ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + GuiLib_CHR_XLEFT_OFS) + + ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + GuiLib_CHR_XWIDTH_OFS); + } + else if (Ps == GuiLib_PS_NUM) + { + if (ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + + GuiLib_CHR_LINECTRL_OFS) & 0x01) + L += (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharCnt - 1] + + GuiLib_CHR_PSRIGHT_OFS)) + 1; + else + L += ReadByte(sgl.CurFont->PsNumWidth) + + ReadByte(sgl.CurFont->PsSpace); + } + else + L += ReadByte(sgl.CurFont->XSize); +#endif + if (TextXOfs != NULL) + TextXOfs[CharCnt] = L; + return (L); + } +} + +//------------------------------------------------------------------------------ +static GuiConst_INT16U CalcCharsWidth( + GuiConst_INT16U CharPos1, + GuiConst_INT16U CharPos2, + GuiConst_INT16S *TextXOfs, + GuiConst_INT16S *pXStart, + GuiConst_INT16S *pXEnd) +{ + GuiConst_INT16S X1; + GuiConst_INT16S X2; + +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS+1]; + GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS+1]; + + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[CharPos1]], + GuiLib_CHR_LINECTRL_OFS+1, CharHeader1); + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[CharPos2]], + GuiLib_CHR_LINECTRL_OFS+1, CharHeader2); + + if (sgl.TextPsMode[CharPos1]) + { + if (CharHeader1[GuiLib_CHR_LINECTRL_OFS] & 0x01) + X1 = TextXOfs[CharPos1] + + (GuiConst_INT16S)CharHeader1[GuiLib_CHR_PSLEFT_OFS]; + else + X1 = TextXOfs[CharPos1] + + (GuiConst_INT16S)CharHeader1[GuiLib_CHR_XLEFT_OFS]; + } + else + X1 = TextXOfs[CharPos1]; + if (sgl.TextPsMode[CharPos2]) + { + if (CharHeader2[GuiLib_CHR_LINECTRL_OFS] & 0x01) + X2 = TextXOfs[CharPos2] + + (GuiConst_INT16S)CharHeader2[GuiLib_CHR_PSRIGHT_OFS]; + else + X2 = TextXOfs[CharPos2] + + (GuiConst_INT16S)CharHeader1[GuiLib_CHR_XLEFT_OFS] + + (GuiConst_INT16S)CharHeader2[GuiLib_CHR_XWIDTH_OFS] - 1; + } + else + X2 = TextXOfs[CharPos2] + sgl.CurFont->XSize - 1; +#else + if (sgl.TextPsMode[CharPos1]) + { + if (ReadBytePtr(sgl.TextCharPtrAry[CharPos1] + + GuiLib_CHR_LINECTRL_OFS) & 0x01) + X1 = TextXOfs[CharPos1] + + (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos1] + + GuiLib_CHR_PSLEFT_OFS)); + else + X1 = TextXOfs[CharPos1] + + (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos1] + + GuiLib_CHR_XLEFT_OFS)); + } + else + X1 = TextXOfs[CharPos1]; + if (sgl.TextPsMode[CharPos2]) + { + if (ReadBytePtr(sgl.TextCharPtrAry[CharPos2] + + GuiLib_CHR_LINECTRL_OFS) & 0x01) + X2 = TextXOfs[CharPos2] + + (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos2] + + GuiLib_CHR_PSRIGHT_OFS)); + else + X2 = TextXOfs[CharPos2] + + (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos2] + + GuiLib_CHR_XLEFT_OFS)) + + (GuiConst_INT16S)(ReadBytePtr(sgl.TextCharPtrAry[CharPos2] + + GuiLib_CHR_XWIDTH_OFS)) - 1; + } + else + X2 = TextXOfs[CharPos2] + sgl.CurFont->XSize - 1; +#endif + + *pXStart = X1; + *pXEnd = X2; + return(X2 - X1 + 1); +} + +#ifdef GuiConst_CHARMODE_UNICODE +//------------------------------------------------------------------------------ +static GuiConst_INT32U GetCharNdx( + GuiLib_FontRecPtr Font, + GuiConst_INT16U CharCode) +{ + GuiConst_INT32U CharNdx,CharNdx1,CharNdx2; + GuiConst_INT32U ReturnValue; + + CharNdx1 = ReadWord(Font->FirstCharNdx) + 1; + CharNdx2 = CharNdx1 + ReadWord(Font->CharCount) - 1; + + ReturnValue = 0; + + do + { + CharNdx = CharNdx1 + ((CharNdx2 - CharNdx1) >> 1); + + if (ReadWord(GuiFont_ChUnicodeList[CharNdx]) == CharCode) + { + ReturnValue = CharNdx; + break; + } + + if (CharNdx1 == CharNdx2) + { + ReturnValue = ReadWord(Font->FirstCharNdx); + break; + } + + if (ReadWord(GuiFont_ChUnicodeList[CharNdx]) > CharCode) + CharNdx2 = CharNdx - 1; + else + CharNdx1 = CharNdx + 1; + + if (CharNdx1 > CharNdx2) + { + ReturnValue = ReadWord(Font->FirstCharNdx); + break; + } + } + while (1); + + return ReturnValue; +} +#endif + +//------------------------------------------------------------------------------ +static void PrepareText( + GuiConst_TEXT PrefixGeneric *CharPtr, + GuiConst_INT16U CharCnt, + GuiConst_INT8U TextNdx) +{ + GuiConst_INT16S P; +#ifdef GuiConst_CHARMODE_ANSI + GuiConst_INT8U CharCode; +#else + GuiConst_INT16U CharCode; + GuiConst_INT16U CharNdx; +#endif + + if (CharCnt > GuiConst_MAX_TEXT_LEN) + CharCnt = GuiConst_MAX_TEXT_LEN; + + for (P = 0; P < CharCnt; P++) + { +#ifdef GuiConst_CHARMODE_ANSI + +#ifdef GuiConst_AVRGCC_COMPILER + if (displayVarNow) + CharCode = (unsigned GuiConst_CHAR) *CharPtr; + else + CharCode = (unsigned GuiConst_CHAR) ReadBytePtr(CharPtr); +#else +#ifdef GuiConst_ICC_COMPILER + if (displayVarNow) + CharCode = (unsigned GuiConst_CHAR) *CharPtr; + else + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + if (displayVarNow) + CharCode = (unsigned GuiConst_CHAR) *CharPtr; + else + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); +#else +#ifdef GuiConst_RENESAS_COMPILER_FAR + if (displayVarNow) + CharCode = (unsigned GuiConst_CHAR) *CharPtr; + else + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); +#else + CharCode = (unsigned GuiConst_TEXT) *CharPtr; +#endif // GuiConst_RENESAS_COMPILER_FAR +#endif // GuiConst_CODEVISION_COMPILER +#endif // GuiConst_ICC_COMPILER +#endif // GuiConst_AVRGCC_COMPILER + +#ifdef GuiConst_REMOTE_FONT_DATA + if ((CharCode < sgl.CurFont->FirstChar) || + (CharCode > sgl.CurFont->LastChar)) + sgl.TextCharNdx[P] = sgl.CurFont->IllegalCharNdx; + else + { + sgl.TextCharNdx[P] = + sgl.CurFont->FirstCharNdx + (GuiConst_INT16U)CharCode - + (GuiConst_INT16U)sgl.CurFont->FirstChar; + + if ((GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[P] + 1] - + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[sgl.TextCharNdx[P]] == 0) + sgl.TextCharNdx[P] = sgl.CurFont->IllegalCharNdx; + } +#else // GuiConst_REMOTE_FONT_DATA + if ((CharCode < ReadByte(sgl.CurFont->FirstChar)) || + (CharCode > ReadByte(sgl.CurFont->LastChar))) + sgl.TextCharPtrAry[P] = (GuiConst_INT8U*)ReadWord( + GuiFont_ChPtrList[ReadWord(sgl.CurFont->IllegalCharNdx)]); + else + sgl.TextCharPtrAry[P] = (GuiConst_INT8U*)ReadWord( + GuiFont_ChPtrList[ReadWord(sgl.CurFont->FirstCharNdx) + + (GuiConst_INT16U)CharCode - + (GuiConst_INT16U)ReadByte(sgl.CurFont->FirstChar)]); +#endif // GuiConst_REMOTE_FONT_DATA + + if (sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_ON) + sgl.TextPsMode[P] = 1; + else if (sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_NUM) + { + if (((CharCode >= '0') && (CharCode <= '9')) || + (CharCode == ' ') || (CharCode == '+') || (CharCode == '-') || + (CharCode == '*') || (CharCode == '/') || (CharCode == '=')) + sgl.TextPsMode[P] = 0; + else + sgl.TextPsMode[P] = 1; + } + else + sgl.TextPsMode[P] = 0; + +#else // GuiConst_CHARMODE_ANSI + CharCode = *((PrefixLocate GuiConst_INT16U*)CharPtr); + CharNdx = GetCharNdx(sgl.CurFont, CharCode); + +#ifdef GuiConst_REMOTE_FONT_DATA + sgl.TextCharNdx[P] = CharNdx; +#else + sgl.TextCharPtrAry[P] = + (GuiConst_INT8U PrefixRom *)ReadWord(GuiFont_ChPtrList[CharNdx]); +#endif + + if (sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_ON) + sgl.TextPsMode[P] = 1; + else if ((sgl.CurItem.TextPar[TextNdx].Ps == GuiLib_PS_NUM) && (CharNdx > 0)) + { + if (((CharCode >= '0') && (CharCode <= '9')) || + (CharCode == ' ') || (CharCode == '+') || (CharCode == '-') || + (CharCode == '*') || (CharCode == '/') || (CharCode == '=')) + sgl.TextPsMode[P] = 0; + else + sgl.TextPsMode[P] = 1; + } + else + sgl.TextPsMode[P] = 0; +#endif // GuiConst_CHARMODE_ANSI + CharPtr++; + } +} + +#ifdef GuiConst_ARAB_CHARS_INUSE +//------------------------------------------------------------------------------ +static GuiConst_INT16U ArabicCorrection( + GuiConst_TEXT PrefixGeneric *CharPtr, + GuiConst_INT16U CharCnt, + GuiConst_INT8U RightToLeftWriting) +{ + GuiConst_INT16S I, J, P; + GuiConst_INT16U CharCode; + GuiConst_INT16U CharCode2; + GuiConst_TEXT PrefixLocate *CharPtr2; + GuiConst_TEXT PrefixLocate *CharPtrA; + GuiConst_TEXT PrefixLocate *CharPtrB; + + if (!RightToLeftWriting) + return CharCnt; + + CharPtr2 = CharPtr; + + for (P = 0; P < CharCnt; P++) + { + CharCode = *((GuiConst_INT16U*)CharPtr); + switch (CharCode) + { + case 40: + *((GuiConst_INT16U*)CharPtr) = 41; + break; + case 41: + *((GuiConst_INT16U*)CharPtr) = 40; + break; + + case 91: + *((GuiConst_INT16U*)CharPtr) = 93; + break; + case 93: + *((GuiConst_INT16U*)CharPtr) = 91; + break; + + case 123: + *((GuiConst_INT16U*)CharPtr) = 125; + break; + case 125: + *((GuiConst_INT16U*)CharPtr) = 123; + break; + } + + CharPtr++; + } + + P = 0; + CharPtr = CharPtr2; + do + { + CharCode = *((GuiConst_INT16U*)CharPtr); + CharPtrA = CharPtr; + CharPtr++; + CharCode2 = *((GuiConst_INT16U*)CharPtr); + + for (I = 0; I < GuiLib_ARAB_LIGATURES_CNT; I++) + if ((CharCode == GuiLib_ARAB_LIGATURES[I][0]) && + (CharCode2 == GuiLib_ARAB_LIGATURES[I][1])) + { + *((GuiConst_INT16U*)CharPtrA) = GuiLib_ARAB_LIGATURES[I][2]; + CharPtrA = CharPtr; + CharPtrB = CharPtrA; + CharPtrB++; + CharCnt--; + for (J = P + 1; J < CharCnt; J++) + { + *((GuiConst_INT16U*)CharPtrA) = *((GuiConst_INT16U*)CharPtrB); + CharPtrA++; + CharPtrB++; + } + *((GuiConst_INT16U*)CharPtrA) = 0; + break; + } + + P++; + } + while (P < CharCnt - 1); + + CharPtr = CharPtr2; + for (P = 0; P < CharCnt; P++) + { + CharCode = *((GuiConst_INT16U*)CharPtr); + + for (I = 0; I < GuiLib_ARAB_CHAR_CONVERT_CNT; I++) + if ((CharCode == GuiLib_ARAB_CHAR_CONVERT[I][0]) && (CharCode > 0)) + { + *((GuiConst_INT16U*)CharPtr) = GuiLib_ARAB_CHAR_CONVERT[I][1]; + break; + } + + CharPtr++; + } + + gl.ArabicCharJoiningModeIndex[0] = -1; + CharPtr = CharPtr2; + for (P = 0; P < CharCnt; P++) + { + CharCode = *((GuiConst_INT16U*)CharPtr); + + gl.ArabicCharJoiningModeIndex[P + 1] = -1; + for (I = 0; I < GuiLib_ARAB_CHAR_CONVERT_CNT; I++) + if ((CharCode >= GuiLib_ARAB_CHAR_CONVERT[I][1]) && + (CharCode <= GuiLib_ARAB_CHAR_CONVERT[I][1] + + (GuiLib_ARAB_CHAR_CONVERT[I][2] & 7) - 1)) + { + gl.ArabicCharJoiningModeIndex[P + 1] = I; + break; + } + + CharPtr++; + } + gl.ArabicCharJoiningModeIndex[CharCnt + 1] = -1; + + for (P = 0; P < CharCnt + 2; P++) + { + if (gl.ArabicCharJoiningModeIndex[P] == -1) + gl.ArabicCharJoiningMode[P] = GuiLib_ARAB_CHAR_TYPE_ISO; + else + gl.ArabicCharJoiningMode[P] = + GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P]][2]; + } + + CharPtr = CharPtr2; + for (P = 0; P < CharCnt; P++) + { + CharCode = *((GuiConst_INT16U*)CharPtr); + + I = P; + while (gl.ArabicCharJoiningMode[I] == GuiLib_ARAB_CHAR_DIACRITIC) + I--; + gl.ArabicCharJoiningModeBefore = gl.ArabicCharJoiningMode[I]; + I = P + 2; + while (gl.ArabicCharJoiningMode[I] == GuiLib_ARAB_CHAR_DIACRITIC) + I++; + gl.ArabicCharJoiningModeAfter = gl.ArabicCharJoiningMode[I]; + + switch (gl.ArabicCharJoiningMode[P + 1]) + { + case GuiLib_ARAB_CHAR_ISOFIN: + if (gl.ArabicCharJoiningModeBefore == GuiLib_ARAB_CHAR_ISOFININIMED) + *((GuiConst_INT16U*)CharPtr) = + GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] + + GuiLib_ARAB_CHAR_TYPE_FIN; + break; + + case GuiLib_ARAB_CHAR_ISOFININIMED: + if ((gl.ArabicCharJoiningModeAfter == GuiLib_ARAB_CHAR_ISOFIN) || + (gl.ArabicCharJoiningModeAfter == GuiLib_ARAB_CHAR_ISOFININIMED)) + { + if (gl.ArabicCharJoiningModeBefore == GuiLib_ARAB_CHAR_ISOFININIMED) + *((GuiConst_INT16U*)CharPtr) = + GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] + + GuiLib_ARAB_CHAR_TYPE_MED; + else + *((GuiConst_INT16U*)CharPtr) = + GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] + + GuiLib_ARAB_CHAR_TYPE_INI; + } + else if (gl.ArabicCharJoiningModeBefore == GuiLib_ARAB_CHAR_ISOFININIMED) + *((GuiConst_INT16U*)CharPtr) = + GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] + + GuiLib_ARAB_CHAR_TYPE_FIN; + break; + + case GuiLib_ARAB_CHAR_DIACRITIC: + if (((gl.ArabicCharJoiningMode[P + 2] == GuiLib_ARAB_CHAR_ISOFIN) || + (gl.ArabicCharJoiningMode[P + 2] == GuiLib_ARAB_CHAR_ISOFININIMED)) && + (gl.ArabicCharJoiningMode[P] == GuiLib_ARAB_CHAR_ISOFININIMED)) + *((GuiConst_INT16U*)CharPtr) = + GuiLib_ARAB_CHAR_CONVERT[gl.ArabicCharJoiningModeIndex[P + 1]][1] + 1; + break; + } + + CharPtr++; + } + + return (CharCnt); +} +#endif + +// Groupend CHARS +// Groupstart DRAW + +//------------------------------------------------------------------------------ +static void ResetDrawLimits(void) +{ + gl.Drawn = 0; + gl.DrawnX1 = 0x7FFF; + gl.DrawnY1 = 0x7FFF; + gl.DrawnX2 = 0x8000; + gl.DrawnY2 = 0x8000; +} + +//------------------------------------------------------------------------------ +static void UpdateDrawLimits( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + sgl.CurItem.Drawn = 1; + sgl.CurItem.DrawnX1 = X1; + sgl.CurItem.DrawnY1 = Y1; + sgl.CurItem.DrawnX2 = X2; + sgl.CurItem.DrawnY2 = Y2; + + gl.Drawn = 1; + gl.DrawnX1 = GuiLib_GET_MIN(gl.DrawnX1, X1); + gl.DrawnY1 = GuiLib_GET_MIN(gl.DrawnY1, Y1); + gl.DrawnX2 = GuiLib_GET_MAX(gl.DrawnX2, X2); + gl.DrawnY2 = GuiLib_GET_MAX(gl.DrawnY2, Y2); +} + +//------------------------------------------------------------------------------ +static void DrawBorderBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR BorderColor, + GuiConst_INTCOLOR FillColor, + GuiConst_INT8U FillTransparent, + GuiConst_INT16U BorderThickness) +{ + if (BorderThickness == 1) + GuiLib_Box(X1, Y1, X2, Y2, BorderColor); + else + { + GuiLib_FillBox(X1, Y1, X1 + BorderThickness - 1, Y2, BorderColor); + GuiLib_FillBox(X2 - BorderThickness + 1, Y1, X2, Y2, BorderColor); + GuiLib_FillBox(X1, Y1, X2, Y1 + BorderThickness - 1, BorderColor); + GuiLib_FillBox(X1, Y2 - BorderThickness + 1, X2, Y2, BorderColor); + } + if ((!FillTransparent) && + (X2 - X1 >= 2 * BorderThickness) && + (Y2 - Y1 >= 2 * BorderThickness)) + GuiLib_FillBox(X1 + BorderThickness, + Y1 + BorderThickness, + X2 - BorderThickness, + Y2 - BorderThickness, + FillColor); +} + +//------------------------------------------------------------------------------ +static void SetBackColorBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INT8U TextNdx) +{ + sgl.BbX1 = X1; + sgl.BbY1 = Y1; + sgl.BbX2 = X2; + sgl.BbY2 = Y2; + + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_LEFT) != 0) + sgl.BbX1--; + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_RIGHT) != 0) + sgl.BbX2++; + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_TOP) != 0) + sgl.BbY1--; + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_BOTTOM) != 0) + sgl.BbY2++; +} + +//------------------------------------------------------------------------------ +static void SetBackBox( + GuiConst_INT8U TextNdx) +{ + GuiConst_INT16S L; + + L = sgl.CurItem.TextPar[TextNdx].BackBoxSizeX; + sgl.BbX1 = sgl.CurItem.X1; + sgl.BbX2 = sgl.CurItem.X1 + L - 1; + + if (sgl.CurItem.TextPar[TextNdx].Alignment == GuiLib_ALIGN_CENTER) + { + sgl.BbX1 -= L / 2; + sgl.BbX2 -= L / 2; + } + else if (sgl.CurItem.TextPar[TextNdx].Alignment == GuiLib_ALIGN_RIGHT) + { + sgl.BbX1 -= L - 1; + sgl.BbX2 -= L - 1; + } + + if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1 > 0) + sgl.BbY1 = sgl.CurItem.Y1 - sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1; + else + sgl.BbY1 = sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine); + if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY2 > 0) + sgl.BbY2 = sgl.CurItem.Y1 + sgl.CurItem.TextPar[TextNdx].BackBoxSizeY2; + else + sgl.BbY2 = sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine) + + ReadByte(sgl.CurFont->YSize) - 1; + + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_LEFT) != 0) + sgl.BbX1--; + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_RIGHT) != 0) + sgl.BbX2++; + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_TOP) != 0) + sgl.BbY1--; + if ((sgl.CurItem.TextPar[TextNdx].BackBorderPixels & GuiLib_BBP_BOTTOM) != 0) + sgl.BbY2++; +} + +//------------------------------------------------------------------------------ +static void DrawBackBox( + GuiConst_INTCOLOR BoxColor, + GuiConst_INT8U Transparent, + GuiConst_INT8U TextNdx) +{ + SetBackBox(TextNdx); + + if (!Transparent) + GuiLib_FillBox(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2, BoxColor); +} + +//------------------------------------------------------------------------------ +#ifdef GuiConst_CHARMODE_ANSI + #ifdef GuiConst_ICC_COMPILER +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawText((GuiConst_TEXT *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_CODEVISION_COMPILER +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawText((GuiConst_TEXT *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_RENESAS_COMPILER_FAR +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawText((GuiConst_TEXT PrefixLocate *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawText((GuiConst_TEXT PrefixRom *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #endif + #endif + #endif +#else + #ifdef GuiConst_ICC_COMPILER +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \ + DrawText((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_CODEVISION_COMPILER +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \ + DrawText((GuiConst_TEXT *)sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_RENESAS_COMPILER_FAR +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U PrefixLocate *)ChPtr, ChCnt); \ + DrawText((GuiConst_TEXT PrefixLocate *)sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else +#define DRAW_ROM_TEXT(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U PrefixRom *)ChPtr, ChCnt); \ + DrawText((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #endif + #endif +#endif +#endif + +//------------------------------------------------------------------------------ +static void DrawText( + GuiConst_TEXT PrefixGeneric *CharPtr, + GuiConst_INT16U CharCount, + GuiConst_INT8U TextNdx, + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor, + GuiConst_INT8U Transparent) +{ + GuiConst_INT16S P, N; + GuiConst_INT16U CharCnt; +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32U PrefixRom TempOfs; +#else + GuiConst_INT8U PrefixRom * TempPtr; +#endif + GuiConst_INT8U TempPsMode; + GuiConst_INT16S TextPixelLen; + GuiConst_INT16S X1, Y1, X2, Y2; + GuiConst_INT16S TextXOfs[GuiConst_MAX_TEXT_LEN + 2]; + +#ifdef GuiConst_ARAB_CHARS_INUSE + CharCnt = ArabicCorrection(CharPtr, + CharCount, + (sgl.CurItem.TextPar[TextNdx].BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) > 0); +#else + CharCnt = CharCount; +#endif + PrepareText(CharPtr, CharCnt, TextNdx); + + if (sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_REVERSEWRITING) + { + for (N = 0; N < CharCnt / 2; N++) + { +#ifdef GuiConst_REMOTE_FONT_DATA + TempOfs = sgl.TextCharNdx[N]; + sgl.TextCharNdx[N] = sgl.TextCharNdx[CharCnt - 1 - N]; + sgl.TextCharNdx[CharCnt - 1 - N] = TempOfs; +#else + TempPtr = sgl.TextCharPtrAry[N]; + sgl.TextCharPtrAry[N] = + (GuiConst_INT8U PrefixRom *)sgl.TextCharPtrAry[CharCnt - 1 - N]; + sgl.TextCharPtrAry[CharCnt - 1 - N] = (GuiConst_INT8U PrefixRom *)TempPtr; +#endif + TempPsMode = sgl.TextPsMode[N]; + sgl.TextPsMode[N] = sgl.TextPsMode[CharCnt - 1 - N]; + sgl.TextPsMode[CharCnt - 1 - N] = TempPsMode; + } + } + + TextPixelLen = TextPixelLength(sgl.CurItem.TextPar[TextNdx].Ps, + CharCnt, + TextXOfs); + + X1 = sgl.CurItem.X1; + switch (sgl.CurItem.TextPar[TextNdx].Alignment) + { + case GuiLib_ALIGN_CENTER: + if (CharCnt > 0) + X1 -= TextPixelLen / 2; + break; + + case GuiLib_ALIGN_RIGHT: + X1 -= TextPixelLen - 1; + break; + } + Y1 = sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine); + X2 = X1 + TextPixelLen - 1; + Y2 = Y1 + ReadByte(sgl.CurFont->YSize) - 1; + + sgl.FontWriteX1 = X1; + sgl.FontWriteY1 = Y1; + sgl.FontWriteX2 = X2; + sgl.FontWriteY2 = Y2; + + if (sgl.DisplayWriting) + { + if (CharCnt > 0) + { + if ((Transparent == 0) && (sgl.CurItem.TextPar[TextNdx].BackBoxSizeX == 0)) + { + SetBackColorBox(X1, Y1, X2, Y2, TextNdx); + GuiLib_FillBox(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2, BackColor); + } + + for (P = 0; P < CharCnt; P++) +#ifdef GuiConst_REMOTE_FONT_DATA + DrawChar(X1 + TextXOfs[P], Y1, sgl.CurFont, sgl.TextCharNdx[P], ForeColor, (Transparent == 2)); +#else + DrawChar(X1 + TextXOfs[P], Y1, sgl.CurFont, sgl.TextCharPtrAry[P], ForeColor, (Transparent == 2)); +#endif + } + + if ((sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_UNDERLINE) && + (CharCnt > 0)) + GuiLib_FillBox(X1, Y1 + ReadByte(sgl.CurFont->Underline1), X2, + Y1 + ReadByte(sgl.CurFont->Underline2), ForeColor); + + GuiLib_MarkDisplayBoxRepaint(X1, Y1, X2, Y2); + +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + if ((sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_BLINKTEXTFIELD) && + (sgl.CurItem.BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX)) + { + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].InUse = 1; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxInverted = 0; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].ItemType = sgl.CurItem.ItemType; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].CharCnt = CharCnt; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].TextPar = sgl.CurItem.TextPar[TextNdx]; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatFieldWidth = + sgl.CurItem.FormatFieldWidth; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatDecimals = + sgl.CurItem.FormatDecimals; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatAlignment = + sgl.CurItem.FormatAlignment; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].FormatFormat = sgl.CurItem.FormatFormat; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].VarType = sgl.CurItem.VarType; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].XSize = + ReadByte(sgl.CurFont->XSize); + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].PsNumWidth = + ReadByte(sgl.CurFont->PsNumWidth); + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].PsSpace = + ReadByte(sgl.CurFont->PsSpace); + if (sgl.CurItem.ItemType == GuiLib_ITEM_TEXT) + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].TextPtr = + sgl.CurItem.TextPtr[TextNdx]; + else + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].TextPtr = + (GuiConst_TEXT*)sgl.CurItem.VarPtr; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].X1 = sgl.CurItem.X1; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].X2 = sgl.CurItem.X2; + if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeX > 0) + { + if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1 > 0) + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y1 = + sgl.CurItem.Y1 - sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1; + else + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y1 = + sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine); + if (sgl.CurItem.TextPar[TextNdx].BackBoxSizeY1 > 0) + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y2 = + sgl.CurItem.Y1 + sgl.CurItem.TextPar[TextNdx].BackBoxSizeY2; + else + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y2 = + sgl.CurItem.Y1 - ReadByte(sgl.CurFont->BaseLine) + + ReadByte(sgl.CurFont->YSize) - 1; + } + else + { + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y1 = Y1; + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Y2 = Y2; + } + } +#endif +#endif + } +} + +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE + +//------------------------------------------------------------------------------ +#ifdef GuiConst_CHARMODE_ANSI + #ifdef GuiConst_ICC_COMPILER +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawTextBlock((GuiConst_TEXT *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_CODEVISION_COMPILER +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawTextBlock((GuiConst_TEXT *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_RENESAS_COMPILER_FAR +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawTextBlock((GuiConst_TEXT PrefixLocate *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + DrawTextBlock((GuiConst_TEXT PrefixRom *)ChPtr, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #endif + #endif + #endif +#else + #ifdef GuiConst_ICC_COMPILER +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \ + DrawTextBlock((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_CODEVISION_COMPILER +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U *)ChPtr, ChCnt); \ + DrawTextBlock((GuiConst_TEXT *)sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else + #ifdef GuiConst_RENESAS_COMPILER_FAR +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U PrefixLocate *)ChPtr, ChCnt); \ + DrawTextBlock((GuiConst_TEXT PrefixLocate *)sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #else +#define DRAW_ROM_TEXTBLOCK(ChPtr, ChCnt, TxtNdx, FColor, BColor, Transparent) \ + ExtractUnicodeString((GuiConst_INT8U PrefixRom *)ChPtr, ChCnt); \ + DrawTextBlock((GuiConst_TEXT *)&sgl.UnicodeTextBuf, \ + ChCnt, \ + TxtNdx, \ + FColor, \ + BColor, \ + Transparent); + #endif + #endif +#endif +#endif + +//------------------------------------------------------------------------------ +static void DrawTextBlock( + GuiConst_TEXT PrefixGeneric *CharPtr, + GuiConst_INT16U CharCnt, + GuiConst_INT8U TextNdx, + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor, + GuiConst_INT8U Transparent) +{ + GuiConst_INT16S X1, Y1, X2, Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S CX1, CX2; +#endif + GuiConst_INT16S CY1, CY2; + GuiConst_INT16S TextXOfs[GuiConst_MAX_TEXT_LEN + 2]; + GuiConst_INT16S TextCharLineStart[GuiConst_MAX_PARAGRAPH_LINE_CNT + 1]; + GuiConst_INT16S TextCharLineEnd[GuiConst_MAX_PARAGRAPH_LINE_CNT + 1]; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S RemClipX1, RemClipY1, RemClipX2, RemClipY2; +#endif +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + GuiConst_INT16S BlinkNo; +#endif +#endif + GuiConst_INT16S PixWidth; + GuiConst_INT16S N, P, M, F; + GuiConst_INT16S LineLen; + GuiConst_INT16S LineCnt; + GuiConst_INT16S LineCnt2; + GuiConst_INT16S BlindLinesAtTop; + GuiConst_INT16S XPos, YPos; + GuiConst_INT16S XStart, XEnd; + GuiConst_INT8U TempPsMode; +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32U PrefixRom TempOfs; + GuiConst_INT8U CharHeader1[GuiLib_CHR_LINECTRL_OFS]; + GuiConst_INT8U CharHeader2[GuiLib_CHR_LINECTRL_OFS]; +#else + GuiConst_INT8U PrefixRom * TempPtr; +#endif + + X1 = sgl.CurItem.X1; + Y1 = sgl.CurItem.Y1; + X2 = sgl.CurItem.X2; + Y2 = sgl.CurItem.Y2; + sgl.FontWriteX1 = X1; + sgl.FontWriteY1 = Y1; + sgl.FontWriteX2 = X2; + sgl.FontWriteY2 = Y2; + + PixWidth = 0; + + if (sgl.DisplayWriting) + { + if (!Transparent && (sgl.CurItem.TextPar[TextNdx].BackBoxSizeX == 0)) + { + SetBackColorBox(X1, Y1, X2, Y2, TextNdx); + GuiLib_FillBox(sgl.BbX1, sgl.BbY1, sgl.BbX2, sgl.BbY2, BackColor); + } + + if (sgl.CurItem.CompPars.CompTextBox.LineDistRelToFont) + { + sgl.CurItem.CompPars.CompTextBox.LineDist +=sgl.CurFont->YSize; + sgl.CurItem.CompPars.CompTextBox.LineDistRelToFont = 0; + } + + LineCnt = 0; +#ifdef GuiConst_TEXTBOX_FIELDS_ON + sgl.CurItem.CompPars.CompTextBox.Lines = 1; +#endif + if (CharCnt > 0) + { + PixWidth = X2 - X1 + 1; + +#ifdef GuiConst_ARAB_CHARS_INUSE + CharCnt = + ArabicCorrection(CharPtr, + CharCnt, + (sgl.CurItem.TextPar[TextNdx].BitFlags & + GuiLib_BITFLAG_REVERSEWRITING) > 0); +#endif + PrepareText(CharPtr, CharCnt, TextNdx); + TextPixelLength(sgl.CurItem.TextPar[TextNdx].Ps, + CharCnt, + TextXOfs); + + TextCharLineStart[0] = 0; + TextCharLineEnd[0] = -1; +#ifdef GuiConst_TEXTBOX_FIELDS_ON + if (sgl.CurItem.CompPars.CompTextBox.ScrollIndex == 0xFF) + BlindLinesAtTop = 0; + else + BlindLinesAtTop = sgl.CurItem.CompPars.CompTextBox.ScrollPos / + sgl.CurItem.CompPars.CompTextBox.LineDist; +#else + BlindLinesAtTop = 0; +#endif + LineCnt = 1 - BlindLinesAtTop; + if (LineCnt >= 1) + LineCnt = 1; + LineCnt2 = 1; + P = 0; +#ifdef GuiConst_REMOTE_FONT_DATA + GuiLib_RemoteDataReadBlock( + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[ + sgl.TextCharNdx[TextCharLineStart[LineCnt2 - 1]]], + GuiLib_CHR_LINECTRL_OFS, + CharHeader2); +#endif + while (P < CharCnt) + { + while ((P < CharCnt - 1) && + !((ReadBytePtr(CharPtr + P) == GuiLib_LINEFEED) || + ((ReadBytePtr(CharPtr + P) != ' ') && + (ReadBytePtr(CharPtr + P + 1) == ' ')) || + ((ReadBytePtr(CharPtr + P) == '-') && + (ReadBytePtr(CharPtr + P + 1) != ' ')))) + P++; + + F = 0; + + if (CalcCharsWidth(TextCharLineStart[LineCnt2 - 1], P, + TextXOfs, &XStart, &XEnd) > PixWidth) + { + if (TextCharLineEnd[LineCnt2 - 1] == -1) + { + if (ReadBytePtr(CharPtr + P) == GuiLib_LINEFEED) + { + TextCharLineEnd[LineCnt2 - 1] = P - 1; + F = 1; + } + else + TextCharLineEnd[LineCnt2 - 1] = P; + + TextCharLineStart[LineCnt2] = P + 1; + TextCharLineEnd[LineCnt2] = -1; + } + else + { + TextCharLineStart[LineCnt2] = TextCharLineEnd[LineCnt2 - 1] + 1; + while ((TextCharLineStart[LineCnt2] < P) && + (ReadBytePtr(CharPtr + TextCharLineStart[LineCnt2]) == ' ')) + TextCharLineStart[LineCnt2]++; + TextCharLineEnd[LineCnt2] = P; + } + if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT) + { + P = CharCnt; + break; + } + LineCnt++; + if (LineCnt > 1) + LineCnt2 = LineCnt; + else + { + TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2]; + TextCharLineEnd[LineCnt2 - 1] = TextCharLineEnd[LineCnt2]; + } +#ifdef GuiConst_TEXTBOX_FIELDS_ON + sgl.CurItem.CompPars.CompTextBox.Lines++; +#endif + } + else + TextCharLineEnd[LineCnt2 - 1] = P; + + if ((ReadBytePtr(CharPtr + P) == GuiLib_LINEFEED) && + (F == 0)) + { + TextCharLineEnd[LineCnt2 - 1] = P - 1; + TextCharLineStart[LineCnt2] = P + 1; + TextCharLineEnd[LineCnt2] = -1; + + if (LineCnt >= GuiConst_MAX_PARAGRAPH_LINE_CNT) + { + P = CharCnt; + break; + } + LineCnt++; + if (LineCnt > 1) + LineCnt2 = LineCnt; + else + { + TextCharLineStart[LineCnt2 - 1] = TextCharLineStart[LineCnt2]; + TextCharLineEnd[LineCnt2 - 1] = TextCharLineEnd[LineCnt2]; + } +#ifdef GuiConst_TEXTBOX_FIELDS_ON + sgl.CurItem.CompPars.CompTextBox.Lines++; +#endif + } + + P++; + } + } + + if (LineCnt >= 1) + { + if (sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_REVERSEWRITING) + { + for (M = 0; M < LineCnt ; M++) + { + for (P = TextCharLineStart[M]; P <= (TextCharLineStart[M] + + ((TextCharLineEnd[M] - TextCharLineStart[M] + 1) / 2) - 1); P++) + { +#ifdef GuiConst_REMOTE_FONT_DATA + TempOfs = sgl.TextCharNdx[P]; + sgl.TextCharNdx[P] = + sgl.TextCharNdx[TextCharLineEnd[M] - (P - TextCharLineStart[M])]; + sgl.TextCharNdx[TextCharLineEnd[M] - (P - TextCharLineStart[M])] = + TempOfs; +#else +#ifdef GuiConst_CODEVISION_COMPILER + TempPtr = &sgl.TextCharPtrAry[P]; +#else + TempPtr = sgl.TextCharPtrAry[P]; +#endif + sgl.TextCharPtrAry[P] = (GuiConst_INT8U PrefixRom *) + sgl.TextCharPtrAry[TextCharLineEnd[M] - (P - TextCharLineStart[M])]; + sgl.TextCharPtrAry[TextCharLineEnd[M] - (P - TextCharLineStart[M])] = + (GuiConst_INT8U PrefixRom *)TempPtr; +#endif + TempPsMode = sgl.TextPsMode[P]; + sgl.TextPsMode[P] = + sgl.TextPsMode[TextCharLineEnd[M] - (P - TextCharLineStart[M])]; + sgl.TextPsMode[TextCharLineEnd[M] - (P - TextCharLineStart[M])] = + TempPsMode; + } + } + TextPixelLength(sgl.CurItem.TextPar[TextNdx].Ps, + CharCnt, + TextXOfs); + } + + CY1 = Y1; + CY2 = Y2; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + CX1 = X1; + CX2 = X2; + RemClipX1 = sgl.CurItem.ClipRectX1; + RemClipY1 = sgl.CurItem.ClipRectY1; + RemClipX2 = sgl.CurItem.ClipRectX2; + RemClipY2 = sgl.CurItem.ClipRectY2; + if (RemClipX1 > CX1) + CX1 = RemClipX1; + if (RemClipY1 > CY1) + CY1 = RemClipY1; + if (RemClipX2 < CX2) + CX2 = RemClipX2; + if (RemClipY2 < CY2) + CY2 = RemClipY2; + GuiLib_SetClipping(CX1, CY1, CX2, CY2); +#endif + +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + if ((sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_BLINKTEXTFIELD) && + (sgl.CurItem.BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX)) + { + BlinkNo = sgl.CurItem.BlinkFieldNo; + sgl.BlinkTextItems[BlinkNo].InUse = 1; + sgl.BlinkTextItems[BlinkNo].ItemType = sgl.CurItem.ItemType; + sgl.BlinkTextItems[BlinkNo].VarType = sgl.CurItem.VarType; + sgl.BlinkTextItems[BlinkNo].CharCnt = CharCnt; + sgl.BlinkTextItems[BlinkNo].TextPar = sgl.CurItem.TextPar[TextNdx]; + sgl.BlinkTextItems[BlinkNo].XSize = sgl.CurFont->XSize; + sgl.BlinkTextItems[BlinkNo].YSize = sgl.CurFont->YSize; + sgl.BlinkTextItems[BlinkNo].PsNumWidth = sgl.CurFont->PsNumWidth; + sgl.BlinkTextItems[BlinkNo].PsSpace = sgl.CurFont->PsSpace; + if (sgl.CurItem.ItemType == GuiLib_ITEM_TEXTBLOCK) + sgl.BlinkTextItems[BlinkNo].TextPtr = sgl.CurItem.TextPtr[TextNdx]; + else + sgl.BlinkTextItems[BlinkNo].TextPtr = (GuiConst_TEXT*)sgl.CurItem.VarPtr; + sgl.BlinkTextItems[BlinkNo].X1 = X1; + sgl.BlinkTextItems[BlinkNo].X2 = X2; + sgl.BlinkTextItems[BlinkNo].Y1 = Y1; + sgl.BlinkTextItems[BlinkNo].Y2 = Y2; + sgl.BlinkTextItems[BlinkNo].LineCnt = LineCnt; + sgl.BlinkTextItems[BlinkNo].TextBoxLineDist = + sgl.CurItem.CompPars.CompTextBox.LineDist; + sgl.BlinkTextItems[BlinkNo].BlindLinesAtTop = BlindLinesAtTop; + sgl.BlinkTextItems[BlinkNo].FormatFieldWidth = sgl.CurItem.FormatFieldWidth; + sgl.BlinkTextItems[BlinkNo].FormatDecimals = sgl.CurItem.FormatDecimals; + sgl.BlinkTextItems[BlinkNo].FormatAlignment = sgl.CurItem.FormatAlignment; + sgl.BlinkTextItems[BlinkNo].FormatFormat = sgl.CurItem.FormatFormat; + sgl.BlinkTextItems[BlinkNo].TextBoxHorzAlignment = + sgl.CurItem.CompPars.CompTextBox.HorzAlignment; + sgl.BlinkTextItems[BlinkNo].TextBoxVertAlignment = + sgl.CurItem.CompPars.CompTextBox.VertAlignment; +#ifdef GuiConst_TEXTBOX_FIELDS_ON + sgl.BlinkTextItems[BlinkNo].TextBoxScrollPos = + sgl.CurItem.CompPars.CompTextBox.ScrollPos; +#endif + } + else + BlinkNo = -1; +#endif +#endif + + YPos = Y1; +#ifdef GuiConst_TEXTBOX_FIELDS_ON + if (BlindLinesAtTop < 0) + BlindLinesAtTop = 0; + YPos -= sgl.CurItem.CompPars.CompTextBox.ScrollPos - + (sgl.CurItem.CompPars.CompTextBox.LineDist * BlindLinesAtTop); +#endif + + N = ReadByte(sgl.CurFont->YSize) + + (LineCnt - 1) * sgl.CurItem.CompPars.CompTextBox.LineDist; + switch (sgl.CurItem.CompPars.CompTextBox.VertAlignment) + { + case GuiLib_ALIGN_CENTER: + YPos += (Y2 - Y1 + 1 - N) / 2; + break; + + case GuiLib_ALIGN_RIGHT: + YPos += Y2 - Y1 + 1 - N; + break; + } + + for (N = 0; N < LineCnt; N++) + { + if (TextCharLineEnd[N] >= TextCharLineStart[N]) + { + XPos = X1; + + LineLen = CalcCharsWidth(TextCharLineStart[N], + TextCharLineEnd[N], + TextXOfs, + &XStart, + &XEnd); + switch (sgl.CurItem.CompPars.CompTextBox.HorzAlignment) + { + case GuiLib_ALIGN_CENTER: + XPos += (PixWidth - LineLen) / 2; + break; + + case GuiLib_ALIGN_RIGHT: + XPos += PixWidth - LineLen; + break; + } + + if (sgl.CurItem.TextPar[TextNdx].BitFlags & GuiLib_BITFLAG_UNDERLINE) + GuiLib_FillBox(XPos, YPos + ReadByte(sgl.CurFont->Underline1), + XPos + LineLen - 1, YPos + ReadByte(sgl.CurFont->Underline2), + ForeColor); + + XPos -= XStart; + if ((YPos + sgl.CurFont->YSize >= CY1) && (YPos <= CY2)) + for (P = TextCharLineStart[N]; P <= TextCharLineEnd[N]; P++) +#ifdef GuiConst_REMOTE_FONT_DATA + DrawChar( + XPos + TextXOfs[P], YPos, sgl.CurFont, sgl.TextCharNdx[P], ForeColor, 0); +#else + DrawChar(XPos + TextXOfs[P], YPos, sgl.CurFont, sgl.TextCharPtrAry[P], + ForeColor, 0); +#endif + } + YPos += sgl.CurItem.CompPars.CompTextBox.LineDist; + } + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiLib_SetClipping(RemClipX1, RemClipY1, RemClipX2, RemClipY2); +#endif + } + GuiLib_MarkDisplayBoxRepaint(X1, Y1, X2, Y2); + } +} +#endif +// Groupend DRAW + +#ifdef GuiConst_FLOAT_SUPPORT_ON +static float Floor(float X) +{ + GuiConst_INT32S I; + + I = X - 2; + while(++I <= X - 1); + return I; +} +#endif + +//------------------------------------------------------------------------------ +static GuiConst_INT32S ReadVar( + void PrefixLocate *VarPtr, + GuiConst_INT8U VarType) +{ +#ifdef GuiConst_FLOAT_SUPPORT_ON + GuiConst_INT32S tmp; + GuiConst_INT8U i; + double dfactor; + double dx; + float ffactor; + float fx; +#endif + + if (VarPtr == 0) + return (0); + else + { + if (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP) + { +#ifdef GuiConst_FLOAT_SUPPORT_ON + if ((VarType == GuiLib_VAR_FLOAT) || (VarType == GuiLib_VAR_DOUBLE)) + sgl.VarExponent = 0; + else +#endif + sgl.CurItem.FormatFormat = GuiLib_FORMAT_DEC; + } + switch (VarType) + { + case GuiLib_VAR_BOOL: + if (*(GuiConst_INT8U PrefixLocate *) VarPtr == 0) + return (0); + else + return (1); + + case GuiLib_VAR_UNSIGNED_CHAR: + return (*(GuiConst_INT8U PrefixLocate *) VarPtr); + + case GuiLib_VAR_SIGNED_CHAR: + return (*(GuiConst_INT8S PrefixLocate *) VarPtr); + + case GuiLib_VAR_UNSIGNED_INT: + return (*(GuiConst_INT16U PrefixLocate *) VarPtr); + + case GuiLib_VAR_SIGNED_INT: + return (*(GuiConst_INT16S PrefixLocate *) VarPtr); + + case GuiLib_VAR_UNSIGNED_LONG: + return (*(GuiConst_INT32U PrefixLocate *) VarPtr); + + case GuiLib_VAR_SIGNED_LONG: + return (*(GuiConst_INT32S PrefixLocate *) VarPtr); + + case GuiLib_VAR_COLOR: + return (*(GuiConst_INTCOLOR PrefixLocate *) VarPtr); + + case GuiLib_VAR_FLOAT: +#ifdef GuiConst_FLOAT_SUPPORT_ON + fx = *(float PrefixLocate *) VarPtr; + if (fx < 0) + fx = -fx; + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP) && (fx != 0)) + { + while (Floor(fx + 0.5) > 10) + { + fx /= 10; + sgl.VarExponent++; + } + while (Floor(fx) < 1) + { + fx *= 10; + sgl.VarExponent--; + } + } + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)) + { + ffactor=1.0; + for (i = 0; i < sgl.CurItem.FormatDecimals ; i++) + ffactor *= 10.0; + tmp = (GuiConst_INT32S) (fx * ffactor); + ffactor *= 100.0; + if (((GuiConst_INT32S) (fx * ffactor) - (tmp * 100)) >= 45) + tmp++; + if (*(float PrefixLocate *) VarPtr < 0) + tmp = -tmp; + } + else + tmp = (GuiConst_INT32S) *(float PrefixLocate *) VarPtr; + return (tmp); +#else + return (0); +#endif + + case GuiLib_VAR_DOUBLE: +#ifdef GuiConst_FLOAT_SUPPORT_ON + dx = *(double PrefixLocate *) VarPtr; + if (dx < 0) + dx = -dx; + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP) && (dx != 0)) + { + while (dx > 10) + { + dx /= 10; + sgl.VarExponent++; + } + while (dx < 1) + { + dx *= 10; + sgl.VarExponent--; + } + } + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)) + { + dfactor=1.0; + for (i = 0; i < sgl.CurItem.FormatDecimals ; i++) + dfactor *= 10.0; + tmp = (GuiConst_INT32S) (dx * dfactor); + dfactor *= 100.0; + if (((GuiConst_INT32S) (dx * dfactor) - (tmp * 100)) >= 45) + tmp++; + if (*(double PrefixLocate *) VarPtr < 0) + tmp = -tmp; + } + else + tmp = (GuiConst_INT32S) dx; + return (tmp); +#else + return (0); +#endif + + default: + return (0); + } + } +} + +//------------------------------------------------------------------------------ +static GuiConst_INT8U DataNumStr( + GuiConst_INT32S DataValue, + GuiConst_INT8U VarType, + GuiConst_INT8U TextNdx) +{ + GuiConst_CHAR *S1; + GuiConst_INT8U StrLen, L; + GuiConst_INT16S I, N, P; + GuiConst_INT8U Offset; + GuiConst_INT8U Sign; + GuiConst_INT8U ShowSign; + GuiConst_INT8U ZeroPadding; + GuiConst_INT8U TrailingZeros; + GuiConst_INT8U ThousandsSeparator; + GuiConst_INT8U Time; + GuiConst_INT16S TT1, TT2, TT3; + GuiConst_INT8U am; + GuiConst_INT8U DecimalsPos; +#ifdef GuiConst_FLOAT_SUPPORT_ON + GuiConst_CHAR ExponentStr[5]; +#endif + + sgl.VarNumTextStr[0] = 0; + am = 0; + + Sign = 0; + switch (VarType) + { + case GuiLib_VAR_BOOL: + case GuiLib_VAR_UNSIGNED_CHAR: + if (DataValue > 255) + DataValue = 255; + else if (DataValue < 0) + DataValue = 0; + break; + + case GuiLib_VAR_SIGNED_CHAR: + if (DataValue > 127) + DataValue = 127; + else if (DataValue < -128) + DataValue = -128; + if (DataValue < 0) + Sign = 1; + break; + + case GuiLib_VAR_UNSIGNED_INT: + if (DataValue > 65535) + DataValue = 65535; + else if (DataValue < 0) + DataValue = 0; + break; + + case GuiLib_VAR_SIGNED_INT: + if (DataValue > 32767) + DataValue = 32767; + else if (DataValue < -32768) + DataValue = -32768; + if (DataValue < 0) + Sign = 1; + break; + + case GuiLib_VAR_SIGNED_LONG: + case GuiLib_VAR_FLOAT: + case GuiLib_VAR_DOUBLE: + if (DataValue < 0) + Sign = 1; + break; + + case GuiLib_VAR_COLOR: + if (DataValue < 0) + DataValue = 0; +#if GuiConst_PIXEL_BYTE_SIZE == 1 + if (DataValue > 255) + DataValue = 255; +#elif GuiConst_PIXEL_BYTE_SIZE == 2 + if (DataValue > 65535) + DataValue = 65535; +#elif GuiConst_PIXEL_BYTE_SIZE == 3 + if (DataValue > 16777215) + DataValue = 16777215; +#endif + break; + } + + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)) + DecimalsPos = sgl.CurItem.FormatDecimals; + else + DecimalsPos = 0; + Time = ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_MMSS) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_24) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_24) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_ampm) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_AMPM) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM)); + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)) + ShowSign = ((sgl.CurItem.TextPar[TextNdx].BitFlags & + GuiLib_BITFLAG_FORMATSHOWSIGN) > 0); + else + { + Sign = 0; + ShowSign = 0; + } + if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_RIGHT) + ZeroPadding = ((sgl.CurItem.TextPar[TextNdx].BitFlags & + GuiLib_BITFLAG_FORMATZEROPADDING) > 0); + else + ZeroPadding = 0; + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)) + TrailingZeros = ((sgl.CurItem.TextPar[TextNdx].BitFlags & + GuiLib_BITFLAG_FORMATTRAILINGZEROS) > 0); + else + TrailingZeros = 0; + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_POSTFIX_H) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_PREFIX_0X) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_CLEAN)) + ThousandsSeparator = ((sgl.CurItem.TextPar[TextNdx].BitFlags & + GuiLib_BITFLAG_FORMATTHOUSANDSSEP) > 0); + else + ThousandsSeparator = 0; + + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_DEC) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP)) + { + if (Sign) + ConvertIntToStr(-DataValue, sgl.VarNumTextStr, 10); + else + ConvertIntToStr(DataValue, sgl.VarNumTextStr, 10); + } + + else if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_POSTFIX_H) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_PREFIX_0X) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_HEX_CLEAN)) + { + ConvertIntToStr(DataValue, sgl.VarNumTextStr, 16); + S1 = sgl.VarNumTextStr; + StrLen = 0; + while (*S1 != 0) + { + if ((*S1 >= 'a') && (*S1 <= 'f')) + *S1 -= 32; + S1++; + StrLen++; + } + if (DataValue < 0) + { + while ((StrLen > 1) && (StrLen >= sgl.CurItem.FormatFieldWidth)) + { + if (sgl.VarNumTextStr[0] == 'F') + { + for (N = 0; N < StrLen; N++) + sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N + 1]; + sgl.VarNumTextStr[StrLen] = 0; + StrLen--; + } + else + break; + } + + } + if (StrLen >= GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); + + switch (sgl.CurItem.FormatFormat) + { + case GuiLib_FORMAT_HEX_POSTFIX_H: + if (StrLen < GuiConst_MAX_VARNUM_TEXT_LEN - 1) + { + #ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "h"); + #else + strcat(sgl.VarNumTextStr, "h"); + #endif + } + break; + case GuiLib_FORMAT_HEX_PREFIX_0X: + if (StrLen < GuiConst_MAX_VARNUM_TEXT_LEN - 2) + { + for (N = StrLen - 1; N >= 0; N--) + sgl.VarNumTextStr[N + 2] = sgl.VarNumTextStr[N]; + sgl.VarNumTextStr[0] = '0'; + sgl.VarNumTextStr[1] = 'x'; + } + break; + } + } + + else if (Time) + { + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_24) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM)) + { + DataValue %= 360000; + TT1 = DataValue / 3600; + TT2 = (DataValue % 3600) / 60; + TT3 = DataValue % 60; + } + else + { + DataValue %= 6000; + TT1 = DataValue / 60; + TT2 = DataValue % 60; + TT3 = -1; + } + + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_ampm) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_AMPM) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM)) + { + am = ((TT1%24) < 12); + TT1 %= 12; + if (TT1 == 0) + TT1 = 12; + } + else + am = 0; // To avoid compiler warning + + if (ZeroPadding && (TT1 < 10)) +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "0"); +#else + strcat(sgl.VarNumTextStr, "0"); +#endif + ConvertIntToStr(TT1, sgl.VarNumTextStr + strlen(sgl.VarNumTextStr), 10); + +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, ":"); +#else + strcat(sgl.VarNumTextStr, ":"); +#endif + + if (TT2 < 10) +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "0"); +#else + strcat(sgl.VarNumTextStr, "0"); +#endif + ConvertIntToStr(TT2, sgl.VarNumTextStr + strlen(sgl.VarNumTextStr), 10); + + if (TT3 >= 0) + { +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, ":"); +#else + strcat(sgl.VarNumTextStr, ":"); +#endif + + if (TT3 < 10) +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "0"); +#else + strcat(sgl.VarNumTextStr, "0"); +#endif + ConvertIntToStr(TT3, sgl.VarNumTextStr + strlen(sgl.VarNumTextStr), 10); + } + + if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_ampm) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_ampm)) + { + if (am) +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "am"); +#else + strcat(sgl.VarNumTextStr, "am"); +#endif + else +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "pm"); +#else + strcat(sgl.VarNumTextStr, "pm"); +#endif + } + else if ((sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMM_12_AMPM) || + (sgl.CurItem.FormatFormat == GuiLib_FORMAT_TIME_HHMMSS_12_AMPM)) + { + if (am) +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "AM"); +#else + strcat(sgl.VarNumTextStr, "AM"); +#endif + else +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "PM"); +#else + strcat(sgl.VarNumTextStr, "PM"); +#endif + } + } + else + return (0); + + StrLen = 0; + S1 = sgl.VarNumTextStr; + while (*S1 != 0) + { + StrLen++; + S1++; + } + + if (DecimalsPos > 0) + { + L = DecimalsPos + 1; + if (StrLen < L) + { + if (L > GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); + for (N = 1; N <= StrLen; N++) + sgl.VarNumTextStr[L - N] = sgl.VarNumTextStr[StrLen - N]; + for (N = 0; N < L - StrLen; N++) + sgl.VarNumTextStr[N] = '0'; + + StrLen = L; + } + + if ((!TrailingZeros) && (!Time) && (VarType != GuiLib_VAR_BOOL)) + { + L = StrLen; + for (N = L - 1; N > L - sgl.CurItem.FormatDecimals; N--) + if (sgl.VarNumTextStr[N] == '0') + { + DecimalsPos--; + StrLen--; + } + else + break; + } + + if (StrLen >= GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); + P = StrLen - DecimalsPos; + for (N = StrLen; N > P; N--) + sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N - 1]; + if (ReadByte(GuiFont_DecimalChar[GuiLib_LanguageIndex]) == GuiLib_DECIMAL_PERIOD) + sgl.VarNumTextStr[P] = '.'; + else + sgl.VarNumTextStr[P] = ','; + StrLen++; + sgl.VarNumTextStr[StrLen] = 0; + } + else + P = StrLen; + + if (ThousandsSeparator) + { + I = 0; + while (P > 0) + { + if ((I > 0) && (I % 3 ==0 )) + { + for (N = StrLen; N > P; N--) + sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N - 1]; + if (ReadByte(GuiFont_DecimalChar[GuiLib_LanguageIndex]) == GuiLib_DECIMAL_PERIOD) + sgl.VarNumTextStr[P] = ','; + else + sgl.VarNumTextStr[P] = '.'; + StrLen++; + if (StrLen >= GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); + sgl.VarNumTextStr[StrLen] = 0; + } + I++; + P--; + } + } + + if (Sign || ShowSign) + { + if (StrLen > GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); + for (N = StrLen; N >= 1; N--) + sgl.VarNumTextStr[N] = sgl.VarNumTextStr[N - 1]; + if (Sign) + sgl.VarNumTextStr[0] = '-'; + else + sgl.VarNumTextStr[0] = '+'; + StrLen++; + sgl.VarNumTextStr[StrLen] = 0; + } + +#ifdef GuiConst_FLOAT_SUPPORT_ON + if (sgl.CurItem.FormatFormat == GuiLib_FORMAT_EXP) + { + N = sgl.VarExponent; + if (N < 0) + N = -N; + ConvertIntToStr(N, ExponentStr, 10); + S1 = ExponentStr; + N = 0; + while (*S1 != 0) + { + S1++; + N++; + } + if (N == 1) + I = 2; + else + I = N; + if (StrLen + 2 + I >= GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "E"); +#else + strcat(sgl.VarNumTextStr, "E"); +#endif + StrLen++; + if (sgl.VarExponent >= 0) +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "+"); +#else + strcat(sgl.VarNumTextStr, "+"); +#endif + else +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "-"); +#else + strcat(sgl.VarNumTextStr, "-"); +#endif + StrLen++; + if (N == 1) + { +#ifdef GuiConst_CODEVISION_COMPILER + strcatf(sgl.VarNumTextStr, "0"); +#else + strcat(sgl.VarNumTextStr, "0"); +#endif + StrLen++; + } + strcat(sgl.VarNumTextStr, ExponentStr); + StrLen += N; + } +#endif + + if (sgl.CurItem.FormatFieldWidth > 0) + { + if (StrLen > sgl.CurItem.FormatFieldWidth) + { + for (N = 0; N < sgl.CurItem.FormatFieldWidth; N++) + sgl.VarNumTextStr[N] = '-'; + } + else + { + if (sgl.CurItem.FormatFieldWidth > GuiConst_MAX_VARNUM_TEXT_LEN) + return (0); + if (ZeroPadding && (!Time)) + { + if ((sgl.VarNumTextStr[0] == '-') || (sgl.VarNumTextStr[0] == '+')) + Offset = 1; + else + Offset = 0; + for (N = 1; N <= StrLen - Offset; N++) + sgl.VarNumTextStr[sgl.CurItem.FormatFieldWidth - N] = + sgl.VarNumTextStr[StrLen - N]; + for (N = 0; N < sgl.CurItem.FormatFieldWidth - StrLen; N++) + sgl.VarNumTextStr[N + Offset] = '0'; + } + else if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_LEFT) + { + for (N = StrLen; N < sgl.CurItem.FormatFieldWidth; N++) + sgl.VarNumTextStr[N] = ' '; + } + else if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_CENTER) + { + Offset = (sgl.CurItem.FormatFieldWidth - StrLen) / 2; + if (Offset > 0) + { + for (N = StrLen - 1; N >= 0; N--) + sgl.VarNumTextStr[N + Offset] = sgl.VarNumTextStr[N]; + for (N = 0; N < Offset; N++) + sgl.VarNumTextStr[N] = ' '; + } + Offset = sgl.CurItem.FormatFieldWidth - StrLen - Offset; + if (Offset > 0) + for (N = sgl.CurItem.FormatFieldWidth - Offset; + N < sgl.CurItem.FormatFieldWidth; N++) + sgl.VarNumTextStr[N] = ' '; + } + else if (sgl.CurItem.FormatAlignment == GuiLib_FORMAT_ALIGNMENT_RIGHT) + { + for (N = 1; N <= StrLen; N++) + sgl.VarNumTextStr[sgl.CurItem.FormatFieldWidth - N] = + sgl.VarNumTextStr[StrLen - N]; + for (N = 0; N < sgl.CurItem.FormatFieldWidth - StrLen; N++) + sgl.VarNumTextStr[N] = ' '; + } + } + sgl.VarNumTextStr[sgl.CurItem.FormatFieldWidth] = 0; + return (sgl.CurItem.FormatFieldWidth); + } + else + { + sgl.VarNumTextStr[StrLen] = 0; + return (StrLen); + } +} + +#ifdef GuiConst_REMOTE_STRUCT_DATA +//------------------------------------------------------------------------------ +static GuiLib_StructPtr GetRemoteStructData( + GuiConst_INT32S StructIndex) +{ + sgl.RemoteStructOffset = + (GuiConst_INT32U PrefixRom)GuiStruct_StructPtrList[StructIndex]; + GuiLib_RemoteDataReadBlock( + sgl.RemoteStructOffset, + 1, + sgl.GuiLib_RemoteStructBuffer); + sgl.RemoteStructOffset++; + return((GuiLib_StructPtr)&sgl.GuiLib_RemoteStructBuffer[0]); +} + +#ifdef GuiConst_REMOTE_TEXT_DATA +//------------------------------------------------------------------------------ +static GuiConst_INT16U GetRemoteText( + GuiConst_INT16U TextIndex) +{ + GuiConst_INT32S TextOfs; + + if (TextIndex != sgl.CurRemoteText) + { + if (sgl.RemoteTextTableOfs == -1) + GuiLib_RemoteTextReadBlock(4, 4, &sgl.RemoteTextTableOfs); + + GuiLib_RemoteTextReadBlock(sgl.RemoteTextTableOfs + 6 * TextIndex, 4, &TextOfs); + GuiLib_RemoteTextReadBlock( + sgl.RemoteTextTableOfs + 6 * TextIndex + 4, 2, &sgl.RemoteTextLen); + +#ifdef GuiConst_CHARMODE_ANSI + GuiLib_RemoteTextReadBlock(TextOfs, sgl.RemoteTextLen, sgl.GuiLib_RemoteTextBuffer); +#else + GuiLib_RemoteTextReadBlock(TextOfs, 2 * sgl.RemoteTextLen, sgl.GuiLib_RemoteTextBuffer); +#endif + sgl.CurRemoteText = TextIndex; + } + return(sgl.RemoteTextLen); +} +#endif + +#endif + +#ifdef GuiConst_CHARMODE_UNICODE +//------------------------------------------------------------------------------ +static void ExtractUnicodeString( + GuiConst_INT8U PrefixLocate *ItemTextPtr, + GuiConst_INT16U TextLength) +{ + GuiConst_INT16U P; + + for (P = 0; P < TextLength; P++) + sgl.UnicodeTextBuf[P] = GetItemWord(&ItemTextPtr); + sgl.UnicodeTextBuf[TextLength] = 0; +} +#endif + +//------------------------------------------------------------------------------ +static void SetCurFont( + GuiConst_INT8U FontIndex) +{ + if (FontIndex >= GuiFont_FontCnt) + sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[0]); + else + sgl.CurFont = (GuiLib_FontRecPtr)ReadWord(GuiFont_FontList[FontIndex]); +} + +#ifdef GuiConst_BITMAP_SUPPORT_ON +//------------------------------------------------------------------------------ +static void UpdateBackgroundBitmap(void) +{ + GuiConst_INT8U BackgroundOn; + GuiConst_INT16U BackgroundX1, BackgroundY1, BackgroundX2, BackgroundY2; + GuiConst_INT16S N; + + for (N = 0; N < GuiConst_MAX_BACKGROUND_BITMAPS; N++) + if (sgl.BackgrBitmapAry[N].InUse) + { + BackgroundOn = 0; + switch (sgl.CurItem.ItemType) + { + case GuiLib_ITEM_TEXT: + case GuiLib_ITEM_VAR: + BackgroundOn = 1; + if (sgl.CurItem.TextPar[0].BackBoxSizeX == 0) + { + BackgroundX1 = sgl.CurItem.DrawnX1; + BackgroundY1 = sgl.CurItem.DrawnY1; + BackgroundX2 = sgl.CurItem.DrawnX2; + BackgroundY2 = sgl.CurItem.DrawnY2; + } + else + { + SetCurFont(sgl.CurItem.TextPar[0].FontIndex); + SetBackBox(0); + BackgroundX1 = sgl.BbX1; + BackgroundY1 = sgl.BbY1; + BackgroundX2 = sgl.BbX2; + BackgroundY2 = sgl.BbY2; + } + break; + + case GuiLib_ITEM_STRUCTURE: + case GuiLib_ITEM_STRUCTARRAY: + case GuiLib_ITEM_STRUCTCOND: + if (sgl.CurItem.Drawn) + { + BackgroundOn = 1; + BackgroundX1 = sgl.CurItem.DrawnX1; + BackgroundY1 = sgl.CurItem.DrawnY1; + BackgroundX2 = sgl.CurItem.DrawnX2; + BackgroundY2 = sgl.CurItem.DrawnY2; + } + break; + + case GuiLib_ITEM_TEXTBLOCK: + case GuiLib_ITEM_VARBLOCK: + case GuiLib_ITEM_CHECKBOX: + case GuiLib_ITEM_BUTTON: + case GuiLib_ITEM_EDITBOX: + case GuiLib_ITEM_PANEL: + case GuiLib_ITEM_MEMO: + case GuiLib_ITEM_LISTBOX: + case GuiLib_ITEM_COMBOBOX: + case GuiLib_ITEM_SCROLLBOX: + case GuiLib_ITEM_SCROLLAREA: + case GuiLib_ITEM_PROGRESSBAR: + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_TRANSPARENT) + { + BackgroundOn = 1; + SetBackColorBox(sgl.CurItem.X1, sgl.CurItem.Y1, + sgl.CurItem.X2, sgl.CurItem.Y2, + 0); + BackgroundX1 = sgl.BbX1; + BackgroundY1 = sgl.BbY1; + BackgroundX2 = sgl.BbX2; + BackgroundY2 = sgl.BbY2; + } + break; +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + case GuiLib_ITEM_RADIOBUTTON: + if (sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_TRANSPARENT) + { + BackgroundOn = 1; + SetBackColorBox(sgl.CurItem.X1, + sgl.CurItem.Y1, + sgl.CurItem.X2, + sgl.CurItem.Y2 + + (sgl.CurItem.CompPars.CompRadioButton.Count - 1) * + sgl.CurItem.CompPars.CompRadioButton.InterDistance, + 0); + BackgroundX1 = sgl.BbX1; + BackgroundY1 = sgl.BbY1; + BackgroundX2 = sgl.BbX2; + BackgroundY2 = sgl.BbY2; + } + break; +#endif + } + if (BackgroundOn) + GuiLib_ShowBitmapArea(sgl.BackgrBitmapAry[N].Index, + sgl.BackgrBitmapAry[N].X, sgl.BackgrBitmapAry[N].Y, + BackgroundX1, BackgroundY1, BackgroundX2, BackgroundY2, -1); + } +} +#endif + +#ifdef GuiConst_CLIPPING_SUPPORT_ON +//------------------------------------------------------------------------------ +static void StartClipping( + GuiConst_INT8U Clipping) +{ +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + sgl.CurItem.ClipRectX1 += sgl.CoordOrigoX; + sgl.CurItem.ClipRectY1 += sgl.CoordOrigoY; + sgl.CurItem.ClipRectX2 += sgl.CoordOrigoX; + sgl.CurItem.ClipRectY2 += sgl.CoordOrigoY; +#endif + if (Clipping) + { + OrderCoord(&sgl.CurItem.ClipRectX1, &sgl.CurItem.ClipRectX2); + OrderCoord(&sgl.CurItem.ClipRectY1, &sgl.CurItem.ClipRectY2); + if (sgl.CurItem.ClipRectX1 < sgl.ActiveAreaX1) + sgl.CurItem.ClipRectX1 = sgl.ActiveAreaX1; + if (sgl.CurItem.ClipRectY1 < sgl.ActiveAreaY1) + sgl.CurItem.ClipRectY1 = sgl.ActiveAreaY1; + if (sgl.CurItem.ClipRectX2 > sgl.ActiveAreaX2) + sgl.CurItem.ClipRectX2 = sgl.ActiveAreaX2; + if (sgl.CurItem.ClipRectY2 > sgl.ActiveAreaY2) + sgl.CurItem.ClipRectY2 = sgl.ActiveAreaY2; + } + else + { + sgl.CurItem.ClipRectX1 = sgl.ActiveAreaX1; + sgl.CurItem.ClipRectY1 = sgl.ActiveAreaY1; + sgl.CurItem.ClipRectX2 = sgl.ActiveAreaX2; + sgl.CurItem.ClipRectY2 = sgl.ActiveAreaY2; + } +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + sgl.CurItem.ClipRectX1 -= sgl.CoordOrigoX; + sgl.CurItem.ClipRectY1 -= sgl.CoordOrigoY; + sgl.CurItem.ClipRectX2 -= sgl.CoordOrigoX; + sgl.CurItem.ClipRectY2 -= sgl.CoordOrigoY; +#endif + GuiLib_SetClipping(sgl.CurItem.ClipRectX1, sgl.CurItem.ClipRectY1, + sgl.CurItem.ClipRectX2, sgl.CurItem.ClipRectY2); +} +#endif + +//------------------------------------------------------------------------------ +static void PrepareInternalStruct(void) +{ + sgl.Memory.X[GuiLib_MEMORY_CNT] = sgl.CurItem.X1; + sgl.Memory.Y[GuiLib_MEMORY_CNT] = sgl.CurItem.Y1; +} + +//------------------------------------------------------------------------------ +static void DrawSubStruct( + GuiConst_INT16U SubStructIndex, + GuiConst_INT8U ColorInvert, + GuiConst_INT8U SubInt) +{ + GuiLib_ItemRec RemCurItem; + GuiLib_StructPtr StructToCall; + GuiConst_INT8U RemBackBox; + GuiConst_INT16S RemBbX1, RemBbX2; + GuiConst_INT16S RemBbY1, RemBbY2; + GuiConst_INT8U RemDrawn; + GuiConst_INT16S RemDrawnX1, RemDrawnY1, RemDrawnX2, RemDrawnY2; + GuiConst_INT16S RemAutoRedrawSaveIndex; + GuiConst_INT16S RemAutoRedrawParent; + GuiConst_INT16S RemAutoRedrawLatest; +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT32U RemRemoteStructOffset; +#endif + + if (SubStructIndex != 0xFFFF) + { + RemAutoRedrawParent = sgl.AutoRedrawParent; + RemAutoRedrawLatest = sgl.AutoRedrawLatest; + + sgl.AutoRedrawParent = sgl.AutoRedrawLatest; + + if (SubInt) + memcpy(&RemCurItem, &sgl.CurItem, sizeof(GuiLib_ItemRec)); + +#ifdef GuiConst_REMOTE_STRUCT_DATA + RemRemoteStructOffset = sgl.RemoteStructOffset; +#endif + RemBackBox = (sgl.CurItem.TextPar[0].BackBoxSizeX); + RemBbX1 = sgl.BbX1; + RemBbX2 = sgl.BbX2; + RemBbY1 = sgl.BbY1; + RemBbY2 = sgl.BbY2; + RemDrawn = gl.Drawn; + RemDrawnX1 = gl.DrawnX1; + RemDrawnY1 = gl.DrawnY1; + RemDrawnX2 = gl.DrawnX2; + RemDrawnY2 = gl.DrawnY2; + ResetDrawLimits(); + RemAutoRedrawSaveIndex = sgl.AutoRedrawSaveIndex; + + sgl.DisplayLevel++; + StructToCall = +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(SubStructIndex); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[SubStructIndex]); +#endif + DrawStructure(StructToCall, ColorInvert); + sgl.DisplayLevel--; + + if (RemBackBox) + { + sgl.CurItem.Drawn = 1; + sgl.CurItem.DrawnX1 = RemBbX1; + sgl.CurItem.DrawnY1 = RemBbY1; + sgl.CurItem.DrawnX2 = RemBbX2; + sgl.CurItem.DrawnY2 = RemBbY2; + + gl.DrawnX1 = GuiLib_GET_MIN(sgl.BbX1, RemDrawnX1); + gl.DrawnY1 = GuiLib_GET_MIN(sgl.BbY1, RemDrawnY1); + gl.DrawnX2 = GuiLib_GET_MAX(sgl.BbX2, RemDrawnX2); + gl.DrawnY2 = GuiLib_GET_MAX(sgl.BbY2, RemDrawnY2); + } + else if (gl.Drawn) + { + sgl.CurItem.Drawn = 1; + sgl.CurItem.DrawnX1 = gl.DrawnX1; + sgl.CurItem.DrawnY1 = gl.DrawnY1; + sgl.CurItem.DrawnX2 = gl.DrawnX2; + sgl.CurItem.DrawnY2 = gl.DrawnY2; + + gl.DrawnX1 = GuiLib_GET_MIN(gl.DrawnX1, RemDrawnX1); + gl.DrawnY1 = GuiLib_GET_MIN(gl.DrawnY1, RemDrawnY1); + gl.DrawnX2 = GuiLib_GET_MAX(gl.DrawnX2, RemDrawnX2); + gl.DrawnY2 = GuiLib_GET_MAX(gl.DrawnY2, RemDrawnY2); + } + else + { + gl.Drawn = RemDrawn; + gl.DrawnX1 = RemDrawnX1; + gl.DrawnY1 = RemDrawnY1; + gl.DrawnX2 = RemDrawnX2; + gl.DrawnY2 = RemDrawnY2; + } + sgl.AutoRedrawSaveIndex = RemAutoRedrawSaveIndex; + +#ifdef GuiConst_REMOTE_STRUCT_DATA + sgl.RemoteStructOffset = RemRemoteStructOffset; +#endif + + if (SubInt) + memcpy(&sgl.CurItem, &RemCurItem, sizeof(GuiLib_ItemRec)); + + sgl.AutoRedrawLatest = RemAutoRedrawLatest; + sgl.AutoRedrawParent = RemAutoRedrawParent; + } +} + +#include "GuiItems.h" + +//------------------------------------------------------------------------------ +static void DrawStructure( + GuiLib_StructPtr Structure, + GuiConst_INT8U ColorInvert) PrefixReentrant +{ + GuiConst_INT16S ItemNdx; + GuiConst_INT16S X, RemAutoRedrawLatest; + void PrefixLocate *XVarPtr; + void PrefixLocate *YVarPtr; + GuiConst_INT8U ItemCnt; + GuiConst_INT8U PrefixLocate *LocalItemDataPtr; +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GuiConst_INT16S I; +#endif +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT8U ItemSizeBuf[2]; + GuiConst_INT16U ItemSize; +#endif + +#ifdef GuiConst_REMOTE_STRUCT_DATA + LocalItemDataPtr = sgl.GuiLib_RemoteStructBuffer; +#else + LocalItemDataPtr = (GuiConst_INT8U PrefixLocate *)Structure; +#endif + ItemCnt = GetItemByte(&LocalItemDataPtr); + + for (ItemNdx = 0; ItemNdx < ItemCnt; ItemNdx++) + { + RemAutoRedrawLatest = sgl.AutoRedrawLatest; + +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiLib_RemoteDataReadBlock( + sgl.RemoteStructOffset, + 2, + (GuiConst_INT8U*)&ItemSizeBuf); + ItemSize = (256 * (GuiConst_INT16U)ItemSizeBuf[1]) + ItemSizeBuf[0]; + sgl.RemoteStructOffset += 2; + GuiLib_RemoteDataReadBlock( + sgl.RemoteStructOffset, + ItemSize, + sgl.GuiLib_RemoteItemBuffer); + sgl.RemoteStructOffset += ItemSize; + LocalItemDataPtr = &sgl.GuiLib_RemoteItemBuffer[0]; +#endif + + sgl.ItemDataPtr = LocalItemDataPtr; + ReadItem(GuiLib_LanguageIndex); + LocalItemDataPtr = sgl.ItemDataPtr; + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + + GuiLib_ITEMBIT_TEXT + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_DOT + + GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_BLOCK + + GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE + + GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND + + GuiLib_ITEMBIT_STRUCTURE + + GuiLib_ITEMBIT_STRUCTARRAY + + GuiLib_ITEMBIT_ACTIVEAREA + + GuiLib_ITEMBIT_CLIPRECT + + GuiLib_ITEMBIT_VAR + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_TOUCHAREA + + GuiLib_ITEMBIT_SCROLLBOX + + GuiLib_ITEMBIT_GRAPH + + GuiLib_ITEMBIT_GRAPHICSLAYER)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE + + GuiLib_ITEMBIT_CHECKBOX + + GuiLib_ITEMBIT_RADIOBUTTON + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_PANEL + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_SCROLLAREA + + GuiLib_ITEMBIT_PROGRESSBAR + + GuiLib_ITEMBIT_STRUCTCOND + + GuiLib_ITEMBIT_POSCALLBACK))) + { + if (sgl.CommonByte2 & 0x10) + { + XVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.X1VarIdx]); + sgl.X1VarType = ReadByte(GuiStruct_VarTypeList[sgl.X1VarIdx]); + } + else + XVarPtr = 0; + if (XVarPtr != 0) + sgl.ItemX1 += ReadVar(XVarPtr, sgl.X1VarType); + if (sgl.X1MemoryRead > 0) + sgl.ItemX1 += sgl.Memory.X[sgl.X1MemoryRead - 1]; + if (sgl.X1Mode == GuiLib_COOR_REL) + sgl.ItemX1 += sgl.CurItem.RX; + else if (sgl.X1Mode == GuiLib_COOR_REL_1) + sgl.ItemX1 += sgl.CurItem.RX1; + else if (sgl.X1Mode == GuiLib_COOR_REL_2) + sgl.ItemX1 += sgl.CurItem.RX2; + if (sgl.X1MemoryWrite > 0) + sgl.Memory.X[sgl.X1MemoryWrite - 1] = sgl.ItemX1; + sgl.CurItem.X1 = sgl.ItemX1; + + if (sgl.CommonByte2 & 0x20) + { + YVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.Y1VarIdx]); + sgl.Y1VarType = ReadByte(GuiStruct_VarTypeList[sgl.Y1VarIdx]); + } + else + YVarPtr = 0; + if (YVarPtr != 0) + sgl.ItemY1 += ReadVar(YVarPtr, sgl.Y1VarType); + if (sgl.Y1MemoryRead > 0) + sgl.ItemY1 += sgl.Memory.Y[sgl.Y1MemoryRead - 1]; + if (sgl.Y1Mode == GuiLib_COOR_REL) + sgl.ItemY1 += sgl.CurItem.RY; + else if (sgl.Y1Mode == GuiLib_COOR_REL_1) + sgl.ItemY1 += sgl.CurItem.RY1; + else if (sgl.Y1Mode == GuiLib_COOR_REL_2) + sgl.ItemY1 += sgl.CurItem.RY2; + if (sgl.Y1MemoryWrite > 0) + sgl.Memory.Y[sgl.Y1MemoryWrite - 1] = sgl.ItemY1; + sgl.CurItem.Y1 = sgl.ItemY1; + + sgl.CurItem.RX = sgl.CurItem.X1; + sgl.CurItem.RY = sgl.CurItem.Y1; + } + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX) + { + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].X1 = sgl.CurItem.X1; + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].Y1 = sgl.CurItem.Y1; + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BackColor = sgl.CurItem.BackColor; + +#ifndef GuiConst_SCROLLITEM_BAR_NONE + if ((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarMode & 0x03) == + GuiLib_COOR_REL) + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarPositionX += sgl.CurItem.X1; + if (((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarMode >> 2) & 0x03) == + GuiLib_COOR_REL) + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].BarPositionY += sgl.CurItem.Y1; +#endif +#ifndef GuiConst_SCROLLITEM_INDICATOR_NONE + if ((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorMode & 0x03) == + GuiLib_COOR_REL) + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorPositionX += sgl.CurItem.X1; + if (((sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorMode >> 2) & 0x03) == + GuiLib_COOR_REL) + sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].IndicatorPositionY += sgl.CurItem.Y1; +#endif + } +#endif + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_BLOCK + + GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND + + GuiLib_ITEMBIT_ACTIVEAREA + + GuiLib_ITEMBIT_CLIPRECT + + GuiLib_ITEMBIT_TOUCHAREA + + GuiLib_ITEMBIT_GRAPH + + GuiLib_ITEMBIT_GRAPHICSLAYER)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_PANEL + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_SCROLLAREA + + GuiLib_ITEMBIT_PROGRESSBAR))) + { + if (sgl.CommonByte2 & 0x40) + { + XVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.X2VarIdx]); + sgl.X2VarType = ReadByte(GuiStruct_VarTypeList[sgl.X2VarIdx]); + } + else + XVarPtr = 0; + if (XVarPtr != 0) + sgl.ItemX2 += ReadVar(XVarPtr, sgl.X2VarType); + if (sgl.X2MemoryRead > 0) + sgl.ItemX2 += sgl.Memory.X[sgl.X2MemoryRead - 1]; + if (sgl.X2Mode == GuiLib_COOR_REL) + sgl.ItemX2 += sgl.CurItem.X1; + else if (sgl.X2Mode == GuiLib_COOR_REL_1) + sgl.ItemX2 += sgl.CurItem.RX1; + else if (sgl.X2Mode == GuiLib_COOR_REL_2) + sgl.ItemX2 += sgl.CurItem.RX2; + if (sgl.X2MemoryWrite > 0) + sgl.Memory.X[sgl.X2MemoryWrite - 1] = sgl.ItemX2; + sgl.CurItem.X2 = sgl.ItemX2; + + if (sgl.CommonByte2 & 0x80) + { + YVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.Y2VarIdx]); + sgl.Y2VarType = ReadByte(GuiStruct_VarTypeList[sgl.Y2VarIdx]); + } + else + YVarPtr = 0; + if (YVarPtr != 0) + sgl.ItemY2 += ReadVar(YVarPtr, sgl.Y2VarType); + if (sgl.Y2MemoryRead > 0) + sgl.ItemY2 += sgl.Memory.Y[sgl.Y2MemoryRead - 1]; + if (sgl.Y2Mode == GuiLib_COOR_REL) + sgl.ItemY2 += sgl.CurItem.Y1; + else if (sgl.Y2Mode == GuiLib_COOR_REL_1) + sgl.ItemY2 += sgl.CurItem.RY1; + else if (sgl.Y2Mode == GuiLib_COOR_REL_2) + sgl.ItemY2 += sgl.CurItem.RY2; + if (sgl.Y2MemoryWrite > 0) + sgl.Memory.Y[sgl.Y2MemoryWrite - 1] = sgl.ItemY2; + sgl.CurItem.Y2 = sgl.ItemY2; + } +#ifdef GuiConst_ITEM_CHECKBOX_INUSE + else if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_CHECKBOX) + { + switch (sgl.CurItem.CompPars.CompCheckBox.Style) + { + case GuiLib_CHECKBOX_FLAT: + case GuiLib_CHECKBOX_3D: + case GuiLib_CHECKBOX_NONE: + sgl.CurItem.X2 = sgl.CurItem.X1 + + sgl.CurItem.CompPars.CompCheckBox.Size - 1; + sgl.CurItem.Y2 = sgl.CurItem.Y1 + + sgl.CurItem.CompPars.CompCheckBox.Size - 1; + break; + case GuiLib_CHECKBOX_ICON: + sgl.CurItem.X2 = sgl.CurItem.X1; + sgl.CurItem.Y2 = sgl.CurItem.Y1; + break; + case GuiLib_CHECKBOX_BITMAP: + sgl.CurItem.X2 = sgl.CurItem.X1; + sgl.CurItem.Y2 = sgl.CurItem.Y1; + break; + } + } +#endif +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + else if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_RADIOBUTTON) + { + switch (sgl.CurItem.CompPars.CompRadioButton.Style) + { + case GuiLib_RADIOBUTTON_FLAT: + case GuiLib_RADIOBUTTON_3D: + sgl.CurItem.X2 = sgl.CurItem.X1 + + 2 * sgl.CurItem.CompPars.CompRadioButton.Size; + sgl.CurItem.Y2 = sgl.CurItem.Y1 + + 2 * sgl.CurItem.CompPars.CompRadioButton.Size; + break; + case GuiLib_RADIOBUTTON_ICON: + sgl.CurItem.X2 = sgl.CurItem.X1; + sgl.CurItem.Y2 = sgl.CurItem.Y1; + break; + case GuiLib_RADIOBUTTON_BITMAP: + sgl.CurItem.X2 = sgl.CurItem.X1; + sgl.CurItem.Y2 = sgl.CurItem.Y1; + break; + } + } +#endif +#ifdef GuiConst_ITEM_BUTTON_INUSE + else if (sgl.ItemTypeBit2 & GuiLib_ITEMBIT_BUTTON) + { + sgl.CurItem.X2 = sgl.CurItem.X1; + sgl.CurItem.Y2 = sgl.CurItem.Y1; + } +#endif + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_PANEL))) + { + if (sgl.CommonByte6 & 0x40) + { + XVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.R1VarIdx]); + sgl.R1VarType = ReadByte(GuiStruct_VarTypeList[sgl.R1VarIdx]); + } + else + XVarPtr = 0; + if (XVarPtr != 0) + sgl.ItemR1 += ReadVar(XVarPtr, sgl.R1VarType); + if (sgl.R1MemoryRead > 0) + sgl.ItemR1 += sgl.Memory.X[sgl.R1MemoryRead - 1]; + if (sgl.R1Mode == GuiLib_COOR_REL) + sgl.ItemR1 += sgl.CurItem.X1; + else if (sgl.R1Mode == GuiLib_COOR_REL_1) + sgl.ItemR1 += sgl.CurItem.RX1; + else if (sgl.R1Mode == GuiLib_COOR_REL_2) + sgl.ItemR1 += sgl.CurItem.RX2; + if (sgl.R1MemoryWrite > 0) + sgl.Memory.X[sgl.R1MemoryWrite - 1] = sgl.ItemR1; + sgl.CurItem.R1 = sgl.ItemR1; + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_ELLIPSE)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_QUARTERELLIPSE))) + { + if (sgl.CommonByte6 & 0x80) + { + YVarPtr = (void PrefixLocate *)ReadWord(GuiStruct_VarPtrList[sgl.R2VarIdx]); + sgl.R2VarType = ReadByte(GuiStruct_VarTypeList[sgl.R2VarIdx]); + } + else + YVarPtr = 0; + if (YVarPtr != 0) + sgl.ItemR2 += ReadVar(YVarPtr, sgl.R2VarType); + if (sgl.R2MemoryRead > 0) + sgl.ItemR2 += sgl.Memory.Y[sgl.R2MemoryRead - 1]; + if (sgl.R2Mode == GuiLib_COOR_REL) + sgl.ItemR2 += sgl.CurItem.Y1; + else if (sgl.R2Mode == GuiLib_COOR_REL_1) + sgl.ItemR2 += sgl.CurItem.RY1; + else if (sgl.R2Mode == GuiLib_COOR_REL_2) + sgl.ItemR2 += sgl.CurItem.RY2; + if (sgl.R2MemoryWrite > 0) + sgl.Memory.Y[sgl.R2MemoryWrite - 1] = sgl.ItemR2; + sgl.CurItem.R2 = sgl.ItemR2; + } + + if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CLEARAREA + + GuiLib_ITEMBIT_TEXTBLOCK + + GuiLib_ITEMBIT_VARBLOCK + + GuiLib_ITEMBIT_LINE + + GuiLib_ITEMBIT_FRAME + + GuiLib_ITEMBIT_BLOCK + + GuiLib_ITEMBIT_BITMAP + + GuiLib_ITEMBIT_BACKGROUND + + GuiLib_ITEMBIT_ACTIVEAREA + + GuiLib_ITEMBIT_CLIPRECT + + GuiLib_ITEMBIT_TOUCHAREA + + GuiLib_ITEMBIT_GRAPH + + GuiLib_ITEMBIT_GRAPHICSLAYER)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_ROUNDEDFRAME + + GuiLib_ITEMBIT_ROUNDEDBLOCK + + GuiLib_ITEMBIT_CHECKBOX + + GuiLib_ITEMBIT_RADIOBUTTON + + GuiLib_ITEMBIT_BUTTON + + GuiLib_ITEMBIT_EDITBOX + + GuiLib_ITEMBIT_PANEL + + GuiLib_ITEMBIT_MEMO + + GuiLib_ITEMBIT_LISTBOX + + GuiLib_ITEMBIT_COMBOBOX + + GuiLib_ITEMBIT_SCROLLAREA + + GuiLib_ITEMBIT_PROGRESSBAR))) + { + X = sgl.CurItem.X2 - sgl.CurItem.X1; + if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_CENTER) + { + sgl.CurItem.X1 -= X / 2; + sgl.CurItem.X2 -= X / 2; + } + else if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_RIGHT) + { + sgl.CurItem.X1 -= X; + sgl.CurItem.X2 -= X; + } + } + else if ((sgl.ItemTypeBit1 & (GuiLib_ITEMBIT_CIRCLE + + GuiLib_ITEMBIT_ELLIPSE)) || + (sgl.ItemTypeBit2 & (GuiLib_ITEMBIT_QUARTERCIRCLE + + GuiLib_ITEMBIT_QUARTERELLIPSE))) + { + if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_CENTER) + sgl.CurItem.X1 -= sgl.CurItem.R1; + else if (sgl.CurItem.TextPar[0].Alignment == GuiLib_ALIGN_RIGHT) + sgl.CurItem.X1 -= 2 * sgl.CurItem.R1; + } + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_SCROLLBOX) + memcpy(&sgl.ScrollBoxesAry[sgl.GlobalScrollBoxIndex].ScrollBoxItem, &sgl.CurItem, + sizeof(GuiLib_ItemRec)); +#endif + +#ifdef GuiConst_ITEM_GRAPH_INUSE + if (sgl.ItemTypeBit1 & GuiLib_ITEMBIT_GRAPH) + { + memcpy(&sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem, &sgl.CurItem, + sizeof(GuiLib_ItemRec)); + OrderCoord(&sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.X1, + &sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.X2); + OrderCoord(&sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.Y1, + &sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.Y2); + sgl.GraphAry[sgl.GlobalGraphIndex].OrigoX = + sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.X1 + + sgl.GraphAry[sgl.GlobalGraphIndex].OriginOffsetX; + sgl.GraphAry[sgl.GlobalGraphIndex].OrigoY = + sgl.GraphAry[sgl.GlobalGraphIndex].GraphItem.Y2 - + sgl.GraphAry[sgl.GlobalGraphIndex].OriginOffsetY; + } +#endif + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + if (sgl.NextScrollLineReading) + sgl.DisplayWriting = 0; + else +#endif + sgl.DisplayWriting = 1; + DrawItem(ColorInvert); + + sgl.DisplayWriting = 1; + + switch (sgl.CurItem.ItemType) + { + case GuiLib_ITEM_TEXT: + case GuiLib_ITEM_VAR: + sgl.CurItem.RX1 = sgl.FontWriteX1; + sgl.CurItem.RY1 = sgl.FontWriteY1; + sgl.CurItem.RX2 = sgl.FontWriteX2 + 1; + sgl.CurItem.RY2 = sgl.FontWriteY2; + break; + case GuiLib_ITEM_DOT: + sgl.CurItem.RX1 = sgl.CurItem.X1; + sgl.CurItem.RY1 = sgl.CurItem.Y1; + sgl.CurItem.RX2 = sgl.CurItem.X1 + 1; + sgl.CurItem.RY2 = sgl.CurItem.Y1; + break; + case GuiLib_ITEM_CIRCLE: + case GuiLib_ITEM_QUARTERCIRCLE: + sgl.CurItem.RX1 = sgl.CurItem.X1; + sgl.CurItem.RY1 = sgl.CurItem.Y1 - sgl.CurItem.R1; + sgl.CurItem.RX2 = sgl.CurItem.X1 + (2 * sgl.CurItem.R1) + 1; + sgl.CurItem.RY2 = sgl.CurItem.Y1 + sgl.CurItem.R1; + break; + case GuiLib_ITEM_ELLIPSE: + case GuiLib_ITEM_QUARTERELLIPSE: + sgl.CurItem.RX1 = sgl.CurItem.X1; + sgl.CurItem.RY1 = sgl.CurItem.Y1 - sgl.CurItem.R2; + sgl.CurItem.RX2 = sgl.CurItem.X1 + (2 * sgl.CurItem.R1) + 1; + sgl.CurItem.RY2 = sgl.CurItem.Y1 + sgl.CurItem.R2; + break; + case GuiLib_ITEM_CLEARAREA: + case GuiLib_ITEM_LINE: + case GuiLib_ITEM_FRAME: + case GuiLib_ITEM_ROUNDEDFRAME: + case GuiLib_ITEM_BLOCK: + case GuiLib_ITEM_ROUNDEDBLOCK: + case GuiLib_ITEM_BITMAP: + case GuiLib_ITEM_BACKGROUND: + case GuiLib_ITEM_ACTIVEAREA: + case GuiLib_ITEM_CLIPRECT: + case GuiLib_ITEM_TEXTBLOCK: + case GuiLib_ITEM_VARBLOCK: + case GuiLib_ITEM_CHECKBOX: + case GuiLib_ITEM_BUTTON: + case GuiLib_ITEM_EDITBOX: + case GuiLib_ITEM_PANEL: + case GuiLib_ITEM_MEMO: + case GuiLib_ITEM_LISTBOX: + case GuiLib_ITEM_COMBOBOX: + case GuiLib_ITEM_SCROLLAREA: + case GuiLib_ITEM_PROGRESSBAR: + case GuiLib_ITEM_TOUCHAREA: + case GuiLib_ITEM_SCROLLBOX: + case GuiLib_ITEM_GRAPH: + case GuiLib_ITEM_GRAPHICSLAYER: + sgl.CurItem.RX1 = sgl.CurItem.X1; + sgl.CurItem.RY1 = sgl.CurItem.Y1; + sgl.CurItem.RX2 = sgl.CurItem.X2 + 1; + sgl.CurItem.RY2 = sgl.CurItem.Y2; + break; + case GuiLib_ITEM_POSCALLBACK: + sgl.CurItem.RX1 = sgl.CurItem.X1; + sgl.CurItem.RY1 = sgl.CurItem.Y1; + sgl.CurItem.RX2 = sgl.CurItem.X1; + sgl.CurItem.RY2 = sgl.CurItem.Y1; + break; +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + case GuiLib_ITEM_RADIOBUTTON: + sgl.CurItem.RX1 = sgl.CurItem.X1; + sgl.CurItem.RY1 = sgl.CurItem.Y1; + sgl.CurItem.RX2 = sgl.CurItem.X2 + 1; + sgl.CurItem.RY2 = sgl.CurItem.Y2 + + (sgl.CurItem.CompPars.CompRadioButton.Count - 1) * + sgl.CurItem.CompPars.CompRadioButton.InterDistance; + break; +#endif + } + + sgl.AutoRedrawLatest = RemAutoRedrawLatest; + } +} + +//------------------------------------------------------------------------------ +void GuiLib_ShowScreen( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16S CursorFieldToShow, + GuiConst_INT8U ResetAutoRedraw) +{ +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + GuiConst_INT16S M; +#endif + GuiConst_INT16S N; + GuiLib_StructPtr StructureToCall; + + GuiDisplay_Lock(); + + GuiLib_CurStructureNdx = StructureNdx; + StructureToCall = +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructureNdx); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructureNdx]); +#endif + +#ifdef GuiConst_CURSOR_SUPPORT_ON + sgl.CursorFieldFound = -1; + sgl.CursorActiveFieldFound = 0; + GuiLib_ActiveCursorFieldNo = CursorFieldToShow; + sgl.CursorInUse = (GuiLib_ActiveCursorFieldNo >= 0); +#else + gl.Dummy1_16S = CursorFieldToShow; // To avoid compiler warning +#endif + + if ((GuiLib_StructPtr)StructureToCall != 0) + { + sgl.CurItem.X1 = 0; + sgl.CurItem.Y1 = 0; + sgl.CurItem.X2 = 0; + sgl.CurItem.Y2 = 0; + sgl.CurItem.R1 = 0; + sgl.CurItem.R2 = 0; + + sgl.CurItem.RX = 0; + sgl.CurItem.RY = 0; + sgl.CurItem.RX1 = 0; + sgl.CurItem.RY1 = 0; + sgl.CurItem.RX2 = 0; + sgl.CurItem.RY2 = 0; + + for (N = 0; N < 2 * GuiLib_MEMORY_CNT; N++) + { + sgl.Memory.X[N] = 0; + sgl.Memory.Y[N] = 0; + } + for (N = 0; N < GuiLib_MEMORY_CNT; N++) + sgl.Memory.C[N] = 0; + sgl.ThicknessMemory = 1; + + sgl.CurItem.ForeColor = GuiConst_PIXEL_ON; + sgl.CurItem.BackColor = GuiConst_PIXEL_OFF; + sgl.CurItem.BarForeColor = GuiConst_PIXEL_OFF; + sgl.CurItem.BarBackColor = GuiConst_PIXEL_ON; + sgl.CurItem.ForeColorIndex = 0xFFFF; + sgl.CurItem.BackColorIndex = 0xFFFF; + sgl.CurItem.BarForeColorIndex = 0xFFFF; + sgl.CurItem.BarBackColorIndex = 0xFFFF; + + + for (N = 0; N < 3; N++) + { + sgl.CurItem.TextPar[N].BitFlags = GuiLib_BITFLAG_TRANSPARENT; + sgl.CurItem.TextPar[N].Alignment = GuiLib_ALIGN_LEFT; + sgl.CurItem.TextPar[N].BackBoxSizeX = 0; + sgl.CurItem.TextPar[N].FontIndex = 0; + sgl.CurItem.TextPar[N].Ps = GuiLib_PS_ON; + } + + sgl.CurItem.FormatFieldWidth = 10; + sgl.CurItem.FormatDecimals = 0; + sgl.CurItem.FormatAlignment = GuiLib_FORMAT_ALIGNMENT_RIGHT; + sgl.CurItem.FormatFormat = GuiLib_FORMAT_DEC; + +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + for (N = 0; N < GuiConst_BLINK_FIELDS_MAX; N++) + { + sgl.BlinkTextItems[N].InUse = 0; + sgl.BlinkTextItems[N].Active = 0; + } +#endif +#endif + +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + sgl.TouchAreaCnt = 0; +#endif + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + for (M = 0; M < GuiConst_SCROLLITEM_BOXES_MAX; M++) + { + sgl.ScrollBoxesAry[M].InUse = GuiLib_SCROLL_STRUCTURE_UNDEF; + for (N = 0; N < GuiConst_SCROLLITEM_MARKERS_MAX; N++) + { + sgl.ScrollBoxesAry[M].MarkerColor[N] = GuiConst_PIXEL_ON; + sgl.ScrollBoxesAry[M].MarkerColorTransparent[N] = 1; + } + } +#endif + +#ifdef GuiConst_ITEM_GRAPH_INUSE + for (N = 0; N < GuiConst_GRAPH_MAX; N++) + sgl.GraphAry[N].InUse = GuiLib_GRAPH_STRUCTURE_UNDEF; +#endif + + sgl.BaseLayerDrawing = 1; +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GraphicsLayer_Pop(GuiLib_GRAPHICS_LAYER_BASE); + for (N = 0; N < GuiConst_GRAPHICS_LAYER_MAX; N++) + { + sgl.GraphicsLayerList[N].InUse = GuiLib_GRAPHICS_LAYER_UNDEF; + sgl.GraphicsFilterList[N].InUse = GuiLib_GRAPHICS_FILTER_UNDEF; + } +#endif + +#ifdef GuiConst_BITMAP_SUPPORT_ON + sgl.GlobalBackgrBitmapIndex = 0; + for (N = 0; N < GuiConst_MAX_BACKGROUND_BITMAPS; N++) + sgl.BackgrBitmapAry[N].InUse = 0; +#endif + + if (ResetAutoRedraw) + AutoRedraw_Destroy(); +#ifdef GuiConst_CURSOR_SUPPORT_ON + else + AutoRedraw_ResetCursor(); +#endif + + sgl.DrawingLevel = 0; + sgl.TopLevelStructure = 0; + +#ifdef GuiConst_TEXTBOX_FIELDS_ON + sgl.CurItem.CompPars.CompTextBox.ScrollIndex = 0; + sgl.CurItem.CompPars.CompTextBox.ScrollPos = 0; + for (N = 0; N < GuiConst_TEXTBOX_FIELDS_MAX; N++) + sgl.TextBoxScrollPositions[N].index = -1; +#endif + + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; +#ifdef GuiConst_CLIPPING_SUPPORT_ON + sgl.CurItem.ClipRectX1 = sgl.DisplayActiveAreaX1; + sgl.CurItem.ClipRectY1 = sgl.DisplayActiveAreaY1; + sgl.CurItem.ClipRectX2 = sgl.DisplayActiveAreaX2; + sgl.CurItem.ClipRectY2 = sgl.DisplayActiveAreaY2; + sgl.ActiveAreaX1 = sgl.DisplayActiveAreaX1; + sgl.ActiveAreaY1 = sgl.DisplayActiveAreaY1; + sgl.ActiveAreaX2 = sgl.DisplayActiveAreaX2; + sgl.ActiveAreaY2 = sgl.DisplayActiveAreaY2; + if (sgl.DisplayWriting) + { + if ((sgl.DisplayActiveAreaX1 != 0) || (sgl.DisplayActiveAreaY1 != 0) || + (sgl.DisplayActiveAreaX2 != GuiConst_DISPLAY_WIDTH - 1) || + (sgl.DisplayActiveAreaY2 != GuiConst_DISPLAY_HEIGHT - 1)) + GuiLib_SetClipping(sgl.DisplayActiveAreaX1, sgl.DisplayActiveAreaY1, + sgl.DisplayActiveAreaX2, sgl.DisplayActiveAreaY2); + else + GuiLib_ResetClipping(); + } +#endif +#ifdef GuiConst_CURSOR_SUPPORT_ON + sgl.CurItem.CursorFieldLevel = 0; +#endif + sgl.DisplayLevel = 0; + sgl.InitialDrawing = 1; + sgl.SwapColors = 0; + DrawStructure((GuiLib_StructPtr) StructureToCall, + GuiLib_COL_INVERT_IF_CURSOR); + ResetLayerBufPtr(); + sgl.InitialDrawing = 0; + sgl.CoordOrigoX = sgl.DisplayOrigoX + sgl.LayerOrigoX; + sgl.CoordOrigoY = sgl.DisplayOrigoY + sgl.LayerOrigoY; + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + if (sgl.DisplayWriting) + GuiLib_ResetClipping(); +#endif + } + +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (sgl.CursorFieldFound == -1) + { + sgl.CursorInUse = 0; + GuiLib_ActiveCursorFieldNo = -1; + } + else if (sgl.CursorInUse) + { + if (sgl.CursorActiveFieldFound == 0) + { + GuiLib_ActiveCursorFieldNo = sgl.CursorFieldFound; + + DrawCursorItem(1); + } + } +#endif + +#ifdef GuiConst_BLINK_SUPPORT_ON + sgl.BlinkBoxInverted = 0; +#endif + + GuiDisplay_Unlock(); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16S CheckLanguageIndex( + GuiConst_INT16S LanguageIndex) +{ + if ((LanguageIndex < 0) || (LanguageIndex > GuiConst_LANGUAGE_CNT - 1)) + LanguageIndex = 0; + +#ifdef GuiConst_LANGUAGE_SOME_ACTIVE + if (!ReadByte(GuiFont_LanguageActive[LanguageIndex])) + LanguageIndex = GuiConst_LANGUAGE_FIRST; +#endif + + return(LanguageIndex); +} + +//------------------------------------------------------------------------------ +GuiConst_TEXT PrefixLocate *GuiLib_GetTextLanguagePtr( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16U TextNo, + GuiConst_INT16S LanguageIndex) +{ + GuiConst_INT16U I; + GuiConst_INT16S ItemNdx; + GuiConst_INT8U ItemCnt; + GuiLib_StructPtr StructureToCall; +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT8U ItemSizeBuf[2]; + GuiConst_INT16U ItemSize; +#endif + + StructureToCall = +#ifdef GuiConst_REMOTE_STRUCT_DATA + GetRemoteStructData(StructureNdx); +#else + (GuiLib_StructPtr)ReadWord(GuiStruct_StructPtrList[StructureNdx]); +#endif + + if (StructureToCall != 0) + { + LanguageIndex = CheckLanguageIndex(LanguageIndex); + + sgl.ItemDataPtr = (GuiConst_INT8U PrefixLocate *)StructureToCall; + ItemCnt = GetItemByte(&sgl.ItemDataPtr); + + I = 0; + for (ItemNdx = 0; ItemNdx < ItemCnt; ItemNdx++) + { +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiLib_RemoteDataReadBlock( + sgl.RemoteStructOffset, + 2, + (GuiConst_INT8U*)&ItemSizeBuf); + ItemSize = (256 * (GuiConst_INT16U)ItemSizeBuf[1]) + ItemSizeBuf[0]; + sgl.RemoteStructOffset += 2; + GuiLib_RemoteDataReadBlock( + sgl.RemoteStructOffset, + ItemSize, + sgl.GuiLib_RemoteItemBuffer); + sgl.RemoteStructOffset += ItemSize; + sgl.ItemDataPtr = &sgl.GuiLib_RemoteItemBuffer[0]; +#endif + + ReadItem(LanguageIndex); + + if ((sgl.CurItem.ItemType == GuiLib_ITEM_TEXT) || + (sgl.CurItem.ItemType == GuiLib_ITEM_TEXTBLOCK)) + { + if (I == TextNo) + { +#ifdef GuiConst_CHARMODE_ANSI + return (GuiConst_TEXT PrefixLocate *) sgl.CurItem.TextPtr[0]; +#else + #ifdef GuiConst_ICC_COMPILER + ExtractUnicodeString((GuiConst_INT8U *)sgl.CurItem.TextPtr[0], + sgl.CurItem.TextLength[0]); + #else + #ifdef GuiConst_CODEVISION_COMPILER + ExtractUnicodeString((GuiConst_INT8U *)sgl.CurItem.TextPtr[0], + sgl.CurItem.TextLength[0]); + #else + ExtractUnicodeString((GuiConst_INT8U PrefixRom *)sgl.CurItem.TextPtr[0], + sgl.CurItem.TextLength[0]); + #endif + #endif + + return (sgl.UnicodeTextBuf); +#endif + } + I++; + } + } + } + + return (0); +} + +//------------------------------------------------------------------------------ +GuiConst_TEXT PrefixLocate *GuiLib_GetTextPtr( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16U TextNo) +{ + return (GuiLib_GetTextLanguagePtr(StructureNdx, TextNo, GuiLib_LanguageIndex)); +} + +//------------------------------------------------------------------------------ +GuiConst_INT16U GuiLib_GetTextWidth( + GuiConst_TEXT PrefixLocate *String, + GuiLib_FontRecConstPtr Font, + GuiConst_INT8U PsWriting) +{ + GuiLib_ItemRec TextData; + GuiConst_INT16U CharCnt; + + if ((String[0] != 0) && (Font != 0)) + { + TextData.TextPar[0].Ps = PsWriting; + sgl.CurItem.TextPar[0].Ps = TextData.TextPar[0].Ps; +#ifdef GuiConst_CHARMODE_ANSI + CharCnt = strlen(String); +#else + CharCnt = GuiLib_UnicodeStrLen(String); +#endif + sgl.CurFont = (GuiLib_FontRecPtr)Font; +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 1; +#endif + +#ifdef GuiConst_CODEVISION_COMPILER + PrepareText((GuiConst_TEXT *)String, CharCnt, 0); +#else +#ifdef GuiConst_RENESAS_COMPILER_FAR + PrepareText((GuiConst_TEXT PrefixGeneric *)String, CharCnt, 0); +#else + PrepareText(String, CharCnt, 0); +#endif +#endif +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 0; +#endif + + return (TextPixelLength(TextData.TextPar[0].Ps, CharCnt, 0)); + } + + return (0); +} + +//--------------------------------------------------------------- +static GuiConst_TEXT GetCharCode( + GuiConst_TEXT PrefixRom * CharPtr, + GuiConst_INT16U CharCnt, + GuiConst_INT16U CharNo, + GuiConst_INT16U OmitCtrlCode) +{ + GuiConst_INT16U P; + GuiConst_TEXT CharCode, PreviousCharCode; + + if (CharCnt > GuiConst_MAX_TEXT_LEN) + CharCnt = GuiConst_MAX_TEXT_LEN; + + if (CharNo > CharCnt) + return 0; + + if (CharCnt > GuiConst_MAX_TEXT_LEN) + CharCnt = GuiConst_MAX_TEXT_LEN; + + if (OmitCtrlCode) + { + for (P = 0; P < CharNo + 1; P++) + { +#ifdef GuiConst_CHARMODE_ANSI + #ifdef GuiConst_AVRGCC_COMPILER + CharCode = (unsigned GuiConst_CHAR) ReadBytePtr(CharPtr); + #else + #ifdef GuiConst_ICC_COMPILER + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); + #else + #ifdef GuiConst_CODEVISION_COMPILER + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); + #else + CharCode = (unsigned GuiConst_TEXT) *CharPtr; + #endif + #endif + #endif +#else + CharCode = *((GuiConst_INT16U PrefixLocate *)CharPtr); +#endif + + if (P) + { + if ((CharCode == GuiLib_LINEFEED) || + ((CharCode == ' ') && (PreviousCharCode == ' ')) || + ((CharCode == ' ') && (PreviousCharCode == '-'))) + CharNo++; + } + PreviousCharCode = CharCode; + + CharPtr++; + } + } + else + { + CharPtr += CharNo; + +#ifdef GuiConst_CHARMODE_ANSI + #ifdef GuiConst_AVRGCC_COMPILER + CharCode = (unsigned GuiConst_CHAR) ReadBytePtr(CharPtr); + #else + #ifdef GuiConst_ICC_COMPILER + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); + #else + #ifdef GuiConst_CODEVISION_COMPILER + CharCode = *((GuiConst_INT8U PrefixRom *)CharPtr); + #else + CharCode = (unsigned GuiConst_TEXT) *CharPtr; + #endif + #endif + #endif +#else + CharCode = *((GuiConst_INT16U PrefixLocate *)CharPtr); +#endif + } + + return (GuiConst_TEXT)CharCode; +} + +//------------------------------------------------------------------------------ +GuiConst_TEXT GuiLib_GetCharCode( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16U TextNo, + GuiConst_INT16U CharNo, + GuiConst_INT16U OmitCtrlCode) +{ + GuiConst_TEXT PrefixRom * CharPtr; + + CharPtr = GuiLib_GetTextPtr(StructureNdx, TextNo); + + if (CharPtr == 0) return 0; + +#ifdef GuiConst_CHARMODE_ANSI + return GetCharCode(CharPtr, + strlen(CharPtr), + CharNo, + OmitCtrlCode); +#else + return GetCharCode(CharPtr, + GuiLib_UnicodeStrLen(CharPtr), + CharNo, + OmitCtrlCode); +#endif +} + +//------------------------------------------------------------------------------ +#ifdef GuiConst_BLINK_SUPPORT_ON +GuiConst_TEXT GuiLib_GetBlinkingCharCode( + GuiConst_INT16U BlinkFieldNo, + GuiConst_INT16U CharNo, + GuiConst_INT16U OmitCtrlCode) +{ +#ifndef GuiConst_BLINK_FIELDS_OFF + GuiConst_INT16U StrLen; + + if (BlinkFieldNo >= GuiConst_BLINK_FIELDS_MAX) + return 0; + + if (sgl.BlinkTextItems[BlinkFieldNo].InUse) + { + #ifdef GuiConst_CHARMODE_ANSI + StrLen = strlen((GuiConst_TEXT*)sgl.BlinkTextItems[BlinkFieldNo].TextPtr); + #else + #ifdef GuiConst_CODEVISION_COMPILER + StrLen = GuiLib_UnicodeStrLen( + (GuiConst_TEXT*)sgl.BlinkTextItems[BlinkFieldNo].TextPtr); + #else + StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)sgl.BlinkTextItems[BlinkFieldNo].TextPtr); + #endif + #endif + + return GetCharCode((GuiConst_TEXT PrefixRom *)sgl.BlinkTextItems[BlinkFieldNo].TextPtr, + StrLen, + CharNo, + OmitCtrlCode); + } + else +#endif + return 0; +} +#endif + +//------------------------------------------------------------------------------ +void GuiLib_SetLanguage( + GuiConst_INT16S NewLanguage) +{ + GuiLib_LanguageIndex = CheckLanguageIndex(NewLanguage); +} + +//------------------------------------------------------------------------------ +static void InvertBox(void) +{ + if (sgl.DisplayWriting) + GuiLib_InvertBox(sgl.InvertBoxX1, sgl.InvertBoxY1, sgl.InvertBoxX2, sgl.InvertBoxY2); + sgl.InvertBoxOn = !sgl.InvertBoxOn; +} + +//------------------------------------------------------------------------------ +void GuiLib_InvertBoxStart( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2) +{ + GuiLib_InvertBoxStop(); + sgl.InvertBoxX1 = X1; + sgl.InvertBoxY1 = Y1; + sgl.InvertBoxX2 = X2; + sgl.InvertBoxY2 = Y2; + InvertBox(); +} + +//------------------------------------------------------------------------------ +void GuiLib_InvertBoxStop(void) +{ + if (sgl.InvertBoxOn) + InvertBox(); +} + +//------------------------------------------------------------------------------ +void GuiLib_Refresh(void) +{ +#ifdef WANT_DOUBLE_BUFFERING // Otherwise we are writing direct to the display - no need for this code + GuiConst_INT16S N, L; + GuiConst_INT8U RedrawBottomLevel; + ItemMemory RemMemory; + GuiConst_INT8U ColorInvert; + + GuiDisplay_Lock(); + + sgl.RefreshClock++; + + RedrawBottomLevel = 0; + + N = AutoRedraw_Reset(); + + memcpy(&RemMemory, &sgl.Memory, sizeof(ItemMemory)); + + while (N != -1) + { +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (!AutoRedraw_IsOnlyCursor(N)) +#endif + { + if (AutoRedraw_VarChanged(N) != 0) + { + memcpy(&sgl.CurItem, AutoRedraw_GetItem(N), sizeof(GuiLib_ItemRec)); + memcpy(&sgl.Memory, AutoRedraw_GetItemMemory(N), sizeof(ItemMemory)); + + AutoRedraw_UpdateVar(N); + + ColorInvert = GuiLib_COL_INVERT_IF_CURSOR; + +#ifdef GuiConst_CURSOR_SUPPORT_ON + if (AutoRedraw_CheckCursorInheritance(N) == 0) + ColorInvert = GuiLib_COL_INVERT_ON; +#endif + + L = AutoRedraw_GetLevel(N); + + if (AutoRedraw_ItemIsStruct(N)) + { + N = AutoRedraw_DeleteStruct(N); + sgl.AutoRedrawUpdate = GuiLib_TRUE; + if (sgl.AutoRedrawInsertPoint >= 0) + N = AutoRedraw_GetNext(N); + } + else + { + sgl.AutoRedrawUpdate = GuiLib_FALSE; + N = AutoRedraw_GetNext(N); + } + +#ifdef GuiConst_BITMAP_SUPPORT_ON + UpdateBackgroundBitmap(); +#endif + + sgl.DisplayLevel = 0; + sgl.SwapColors = 0; + +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + if ((sgl.CurItem.TextPar[0].BitFlags & GuiLib_BITFLAG_BLINKTEXTFIELD) && + (sgl.CurItem.BlinkFieldNo < GuiConst_BLINK_FIELDS_MAX) && + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].InUse && + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].Active && + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxInverted) + GuiLib_InvertBox(sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxX1, + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxY1, + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxX2, + sgl.BlinkTextItems[sgl.CurItem.BlinkFieldNo].BlinkBoxY2); +#endif +#endif + + DrawItem(ColorInvert); + + if (L == 0) + RedrawBottomLevel = 1; + + sgl.AutoRedrawUpdate = GuiLib_FALSE; + } + else + N = AutoRedraw_GetNext(N); + } +#ifdef GuiConst_CURSOR_SUPPORT_ON + else + N = AutoRedraw_GetNext(N); +#endif + } + + memcpy(&sgl.Memory, &RemMemory, sizeof(ItemMemory)); + + + if ((sgl.DrawingLevel > 0) && RedrawBottomLevel && (sgl.TopLevelStructure != 0)) + { + sgl.DisplayLevel = 0; + sgl.SwapColors = 0; + DrawStructure(sgl.TopLevelStructure, GuiLib_COL_INVERT_IF_CURSOR); + ResetLayerBufPtr(); + } + +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF + for (N = 0; N < GuiConst_BLINK_FIELDS_MAX; N++) + if (sgl.BlinkTextItems[N].InUse && + sgl.BlinkTextItems[N].Active) + { + if (sgl.BlinkTextItems[N].BlinkBoxInverted != + sgl.BlinkTextItems[N].BlinkBoxLast) + { + GuiLib_InvertBox(sgl.BlinkTextItems[N].BlinkBoxX1, + sgl.BlinkTextItems[N].BlinkBoxY1, + sgl.BlinkTextItems[N].BlinkBoxX2, + sgl.BlinkTextItems[N].BlinkBoxY2); + sgl.BlinkTextItems[N].BlinkBoxInverted = + sgl.BlinkTextItems[N].BlinkBoxLast; + } + if (sgl.BlinkTextItems[N].BlinkBoxState < 255) + { + sgl.BlinkTextItems[N].BlinkBoxState--; + if (sgl.BlinkTextItems[N].BlinkBoxState == 0) + { + sgl.BlinkTextItems[N].BlinkBoxState = sgl.BlinkTextItems[N].BlinkBoxRate; + if (sgl.DisplayWriting) + { + GuiLib_InvertBox(sgl.BlinkTextItems[N].BlinkBoxX1, + sgl.BlinkTextItems[N].BlinkBoxY1, + sgl.BlinkTextItems[N].BlinkBoxX2, + sgl.BlinkTextItems[N].BlinkBoxY2); + sgl.BlinkTextItems[N].BlinkBoxInverted = + !sgl.BlinkTextItems[N].BlinkBoxInverted; + sgl.BlinkTextItems[N].BlinkBoxLast = + sgl.BlinkTextItems[N].BlinkBoxInverted; + } + } + } + } + if (sgl.BlinkBoxRate) + { + if (sgl.BlinkBoxState < 255) + sgl.BlinkBoxState--; + if (sgl.BlinkBoxState == 0) + { + sgl.BlinkBoxState = sgl.BlinkBoxRate; + BlinkBox(); + } + } +#endif +#endif + + GuiDisplay_Unlock(); + + GuiDisplay_Refresh(); +#endif // WANT_DOUBLE_BUFFERING +} + +//------------------------------------------------------------------------------ +void GuiLib_DrawChar( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U FontNo, + GuiConst_TEXT Character, + GuiConst_INTCOLOR Color) +{ + GuiLib_FontRecPtr Font; +#ifndef GuiConst_REMOTE_FONT_DATA + GuiConst_INT8U PrefixRom *CharPtr; +#endif + GuiConst_INT16S X1,Y1,X2,Y2; +#ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32U CharNdx; +#else +#ifdef GuiConst_CHARMODE_UNICODE + GuiConst_INT32U CharNdx; +#endif +#endif + + Font = (GuiLib_FontRecPtr) ReadWord(GuiFont_FontList[FontNo]); + + Y -= ReadByte(Font->BaseLine); + +#ifdef GuiConst_CHARMODE_ANSI + #ifdef GuiConst_REMOTE_FONT_DATA + if ((Character < Font->FirstChar) || (Character > Font->LastChar)) + CharNdx = + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[Font->IllegalCharNdx]; + else + CharNdx = + (GuiConst_INT32U PrefixRom)GuiFont_ChPtrList[Font->FirstCharNdx + + (GuiConst_INT16U)Character - (GuiConst_INT16U)Font->FirstChar]; + DrawChar(X, Y, Font, CharNdx, Color, 0); + #else + if ((Character < ReadByte(Font->FirstChar)) || + (Character > ReadByte(Font->LastChar))) + CharPtr = (GuiConst_INT8U PrefixRom *)ReadWord( + GuiFont_ChPtrList[ReadWord(Font->IllegalCharNdx)]); + else + CharPtr = (GuiConst_INT8U PrefixRom *)ReadWord( + GuiFont_ChPtrList[ReadWord(Font->FirstCharNdx) + + (GuiConst_INT16U)Character - + (GuiConst_INT16U)ReadByte(Font->FirstChar)]); + DrawChar(X, Y, Font, CharPtr, Color, 0); + #endif +#else + CharNdx = GetCharNdx(Font, Character); + #ifdef GuiConst_REMOTE_FONT_DATA + DrawChar(X, Y, Font, CharNdx, Color, 0); + #else + CharPtr = (GuiConst_INT8U PrefixRom *)ReadWord(GuiFont_ChPtrList[CharNdx]); + DrawChar(X, Y, Font, CharPtr, Color, 0); + #endif +#endif + +#ifdef GuiConst_REMOTE_FONT_DATA + X1 = X + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_XLEFT_OFS]; + X2 = X1 + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_XWIDTH_OFS] - 1; + Y1 = Y + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_YTOP_OFS]; + Y2 = Y1 + sgl.GuiLib_RemoteFontBuffer[GuiLib_CHR_YHEIGHT_OFS] - 1; +#else + X1 = X + ReadBytePtr(CharPtr + GuiLib_CHR_XLEFT_OFS); + X2 = X1 + ReadBytePtr(CharPtr + GuiLib_CHR_XWIDTH_OFS) - 1; + Y1 = Y + ReadBytePtr(CharPtr + GuiLib_CHR_YTOP_OFS); + Y2 = Y1 + ReadBytePtr(CharPtr + GuiLib_CHR_YHEIGHT_OFS) - 1; +#endif + + GuiLib_MarkDisplayBoxRepaint(X1,Y1,X2,Y2); +} + +//------------------------------------------------------------------------------ +void GuiLib_DrawStr( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U FontNo, + GuiConst_TEXT *String, + GuiConst_INT8U Alignment, + GuiConst_INT8U PsWriting, + GuiConst_INT8U Transparent, + GuiConst_INT8U Underlining, + GuiConst_INT16S BackBoxSizeX, + GuiConst_INT16S BackBoxSizeY1, + GuiConst_INT16S BackBoxSizeY2, + GuiConst_INT8U BackBorderPixels, + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor) +{ + if (FontNo >= GuiFont_FontCnt) + return; + if (*String == 0) + return; + + SetCurFont(FontNo); + +#ifdef GuiConst_AVRGCC_COMPILER + #ifdef GuiConst_CHARMODE_ANSI + sgl.CurItem.TextPtr[0] = (GuiConst_INT8U *)String; + #else + sgl.CurItem.TextPtr[0] = (GuiConst_INT16U *)String; + #endif +#else +#ifdef GuiConst_ICC_COMPILER + #ifdef GuiConst_CHARMODE_ANSI + sgl.CurItem.TextPtr[0] = (GuiConst_INT8U *)String; + #else + sgl.CurItem.TextPtr[0] = (GuiConst_INT16U *)String; + #endif +#else +#ifdef GuiConst_CODEVISION_COMPILER + #ifdef GuiConst_CHARMODE_ANSI + sgl.CurItem.TextPtr[0] = (GuiConst_INT8U *)String; + #else + sgl.CurItem.TextPtr[0] = (GuiConst_INT16U *)String; + #endif +#else +#ifdef GuiConst_RENESAS_COMPILER_FAR + #ifdef GuiConst_CHARMODE_ANSI + sgl.CurItem.TextPtr[0] = (GuiConst_INT8U PrefixLocate *)String; + #else + sgl.CurItem.TextPtr[0] = (GuiConst_INT16U PrefixLocate *)String; + #endif +#else + sgl.CurItem.TextPtr[0] = String; +#endif +#endif +#endif +#endif + + sgl.CurItem.TextLength[0] = 0; + while (*String != 0) + { + sgl.CurItem.TextLength[0]++; + String++; + } + sgl.CurItem.X1 = X; + sgl.CurItem.Y1 = Y; + sgl.CurItem.TextPar[0].FontIndex = FontNo; + sgl.CurItem.TextPar[0].Alignment = Alignment; + sgl.CurItem.TextPar[0].Ps = PsWriting; + sgl.CurItem.TextPar[0].BitFlags = 0; + if (Underlining) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_UNDERLINE; + sgl.CurItem.TextPar[0].BackBoxSizeX = BackBoxSizeX; + sgl.CurItem.TextPar[0].BackBoxSizeY1 = BackBoxSizeY1; + sgl.CurItem.TextPar[0].BackBoxSizeY2 = BackBoxSizeY2; + sgl.CurItem.TextPar[0].BackBorderPixels = BackBorderPixels; + if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0) + DrawBackBox(BackColor, Transparent, 0); + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 1; +#endif + + DrawText(sgl.CurItem.TextPtr[0], + sgl.CurItem.TextLength[0], + 0, + ForeColor, + BackColor, + Transparent); + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 0; +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_DrawVar( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U FontNo, + void PrefixLocate *VarPtr, + GuiConst_INT8U VarType, + GuiConst_INT8U FormatterFormat, + GuiConst_INT8U FormatterFieldWidth, + GuiConst_INT8U FormatterAlignment, + GuiConst_INT8U FormatterDecimals, + GuiConst_INT8U FormatterShowSign, + GuiConst_INT8U FormatterZeroPadding, + GuiConst_INT8U FormatterTrailingZeros, + GuiConst_INT8U FormatterThousandsSeparator, + GuiConst_INT8U Alignment, + GuiConst_INT8U PsWriting, + GuiConst_INT8U Transparent, + GuiConst_INT8U Underlining, + GuiConst_INT16S BackBoxSizeX, + GuiConst_INT16S BackBoxSizeY1, + GuiConst_INT16S BackBoxSizeY2, + GuiConst_INT8U BackBorderPixels, + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor) +{ + GuiConst_INT32S VarValue; + GuiConst_INT16U StrLen; +#ifndef GuiConst_CHARMODE_ANSI + GuiConst_INT16U P; +#endif + GuiConst_TEXT PrefixGeneric *CharPtr; + + if (FontNo >= GuiFont_FontCnt) + return; + + SetCurFont(FontNo); + + sgl.CurItem.VarPtr = VarPtr; + sgl.CurItem.VarType = VarType; + sgl.CurItem.FormatFormat = FormatterFormat; + sgl.CurItem.FormatFieldWidth = FormatterFieldWidth; + sgl.CurItem.FormatAlignment = FormatterAlignment; + sgl.CurItem.FormatDecimals = FormatterDecimals; + sgl.CurItem.TextPar[0].BitFlags = 0; + if (FormatterShowSign) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATSHOWSIGN; + if (FormatterZeroPadding) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATZEROPADDING; + if (FormatterTrailingZeros) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTRAILINGZEROS; + if (FormatterThousandsSeparator) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_FORMATTHOUSANDSSEP; + sgl.CurItem.X1 = X; + sgl.CurItem.Y1 = Y; + sgl.CurItem.TextPar[0].FontIndex = FontNo; + sgl.CurItem.TextPar[0].Alignment = Alignment; + sgl.CurItem.TextPar[0].Ps = PsWriting; + if (Underlining) + sgl.CurItem.TextPar[0].BitFlags |= GuiLib_BITFLAG_UNDERLINE; + sgl.CurItem.TextPar[0].BackBoxSizeX = BackBoxSizeX; + sgl.CurItem.TextPar[0].BackBoxSizeY1 = BackBoxSizeY1; + sgl.CurItem.TextPar[0].BackBoxSizeY2 = BackBoxSizeY2; + sgl.CurItem.TextPar[0].BackBorderPixels = BackBorderPixels; + if (sgl.CurItem.TextPar[0].BackBoxSizeX > 0) + DrawBackBox(BackColor, Transparent, 0); + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 1; +#endif + + if (sgl.CurItem.VarType == GuiLib_VAR_STRING) + { + CharPtr = (GuiConst_TEXT PrefixLocate *)sgl.CurItem.VarPtr; +#ifdef GuiConst_CHARMODE_ANSI + StrLen = strlen(CharPtr); +#else +#ifdef GuiConst_CODEVISION_COMPILER + StrLen = GuiLib_UnicodeStrLen((GuiConst_TEXT*)CharPtr); +#else + StrLen = GuiLib_UnicodeStrLen(CharPtr); +#endif +#endif + } + else + { + VarValue = ReadVar(sgl.CurItem.VarPtr, sgl.CurItem.VarType); + StrLen = DataNumStr(VarValue, sgl.CurItem.VarType, 0); +#ifdef GuiConst_CHARMODE_ANSI + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumTextStr; +#else + for (P = 0; P <= StrLen; P++) + sgl.VarNumUnicodeTextStr[P] = sgl.VarNumTextStr[P]; + CharPtr = (GuiConst_TEXT PrefixGeneric *) sgl.VarNumUnicodeTextStr; +#endif + } + + DrawText(CharPtr, + StrLen, + 0, + ForeColor, + BackColor, + Transparent); + +#ifdef GuiConst_DISP_VAR_NOW + displayVarNow = 0; +#endif +} + +//------------------------------------------------------------------------------ +void GuiLib_TestPattern(void) +{ + GuiLib_HLine(0, 31, 0, GuiConst_PIXEL_ON); + GuiLib_VLine(0, 1, 31, GuiConst_PIXEL_ON); + GuiLib_HLine(2, 8, 2, GuiConst_PIXEL_ON); + GuiLib_HLine(11, 16, 2, GuiConst_PIXEL_ON); + GuiLib_VLine(4, 4, 10, GuiConst_PIXEL_ON); + GuiLib_VLine(4, 13, 18, GuiConst_PIXEL_ON); +} + +#include "GuiComponents.h" + +#ifdef GuiConst_REMOTE_DATA +//------------------------------------------------------------------------------ +GuiConst_INT8U GuiLib_RemoteCheck(void) +{ + union + { + GuiConst_INT8U Bytes[4]; + GuiConst_INT32U IdInFile; + } RemoteIdUnion; + GuiConst_INT8U ok; + + GuiLib_RemoteDataReadBlock(0, 4, RemoteIdUnion.Bytes); + ok = (RemoteIdUnion.IdInFile == GuiConst_REMOTE_ID); + +#ifdef GuiConst_REMOTE_TEXT_DATA + GuiLib_RemoteTextReadBlock(0, 4, RemoteIdUnion.Bytes); + ok = ok && (RemoteIdUnion.IdInFile == GuiConst_REMOTE_ID); +#endif + + return (ok); +} +#endif + +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiLib.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiLib.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,3742 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* v6.0.9.005 */ +/* */ +/* ************************************************************************ */ + + +// ============================================================================= +#ifndef __GUILIB_H +#define __GUILIB_H +#include "GuiConst.h" +#include "GuiVar.h" +#include "GuiDisplay.h" + + +#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */ +extern "C" { +#endif + +// ============================================================================= +#ifdef GuiConst_CODEVISION_COMPILER +// Remove warnings about unused functions +#pragma used+ +#endif + + +// ============================================================================= +#ifdef GuiConst_COLOR_DEPTH_5 + #define GuiLib_COLOR_UNIT_8 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_8 + #define GuiLib_COLOR_UNIT_8 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_12 + #define GuiLib_COLOR_UNIT_16 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_15 + #define GuiLib_COLOR_UNIT_16 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_16 + #define GuiLib_COLOR_UNIT_16 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_18 + #define GuiLib_COLOR_UNIT_24 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_24 + #define GuiLib_COLOR_UNIT_24 + #define GuiLib_LAYERS_SUPPORTED +#endif +#ifdef GuiConst_COLOR_DEPTH_32 + #define GuiLib_COLOR_UNIT_32 + #define GuiLib_LAYERS_SUPPORTED +#endif + + +// ============================================================================= +#ifdef GuiConst_AVR_COMPILER_FLASH_RAM + #define PrefixRom __flash + #define PrefixGeneric __generic + #define PrefixReentrant + #define PrefixLocate +#else +#ifdef GuiConst_PICC_COMPILER_ROM + #define PrefixRom rom + #define PrefixGeneric + #define PrefixReentrant + #define PrefixLocate +#else +#ifdef GuiConst_KEIL_COMPILER_REENTRANT + #define PrefixRom + #define PrefixGeneric + #define PrefixReentrant reentrant + #define PrefixLocate +#else +#ifdef GuiConst_ICC_COMPILER + #define PrefixRom const + #define PrefixGeneric + #define PrefixReentrant + #define PrefixLocate +#else +#ifdef GuiConst_CODEVISION_COMPILER + #define PrefixRom flash + #define PrefixGeneric + #define PrefixReentrant + #define PrefixLocate +#else +#ifdef GuiConst_RENESAS_COMPILER_FAR + #define PrefixRom _far + #define PrefixGeneric _far + #define PrefixReentrant + #define PrefixLocate _far +#else + #define PrefixRom + #define PrefixGeneric + #define PrefixReentrant + #define PrefixLocate +#endif +#endif +#endif +#endif +#endif +#endif + + +// ============================================================================= +#ifdef GuiConst_COLOR_DEPTH_1 + #define GuiLib_COLOR_BYTESIZE_1 +#endif +#ifdef GuiConst_COLOR_DEPTH_2 + #define GuiLib_COLOR_BYTESIZE_1 +#endif +#ifdef GuiConst_COLOR_DEPTH_4 + #define GuiLib_COLOR_BYTESIZE_1 +#endif +#ifdef GuiConst_COLOR_DEPTH_5 + #define GuiLib_COLOR_BYTESIZE_1 +#endif +#ifdef GuiConst_COLOR_DEPTH_8 + #define GuiLib_COLOR_BYTESIZE_1 +#endif +#ifdef GuiConst_COLOR_DEPTH_12 + #define GuiLib_COLOR_BYTESIZE_2 +#endif +#ifdef GuiConst_COLOR_DEPTH_15 + #define GuiLib_COLOR_BYTESIZE_2 +#endif +#ifdef GuiConst_COLOR_DEPTH_16 + #define GuiLib_COLOR_BYTESIZE_2 +#endif +#ifdef GuiConst_COLOR_DEPTH_18 + #define GuiLib_COLOR_BYTESIZE_3 +#endif +#ifdef GuiConst_COLOR_DEPTH_24 + #define GuiLib_COLOR_BYTESIZE_3 +#endif +#ifdef GuiConst_COLOR_DEPTH_32 + #define GuiLib_COLOR_BYTESIZE_3 +#endif + +#define GuiLib_NO_CURSOR -1 + +#define GuiLib_NO_RESET_AUTO_REDRAW 0 +#define GuiLib_RESET_AUTO_REDRAW 1 + +#define GuiLib_ALIGN_NOCHANGE 0 +#define GuiLib_ALIGN_LEFT 1 +#define GuiLib_ALIGN_CENTER 2 +#define GuiLib_ALIGN_RIGHT 3 + +#define GuiLib_PS_NOCHANGE 0 +#define GuiLib_PS_OFF 1 +#define GuiLib_PS_ON 2 +#define GuiLib_PS_NUM 3 + +#define GuiLib_TRANSPARENT_OFF 0 +#define GuiLib_TRANSPARENT_ON 1 + +#define GuiLib_UNDERLINE_OFF 0 +#define GuiLib_UNDERLINE_ON 1 + +#define GuiLib_BBP_NONE 0 +#define GuiLib_BBP_LEFT 1 +#define GuiLib_BBP_RIGHT 2 +#define GuiLib_BBP_TOP 4 +#define GuiLib_BBP_BOTTOM 8 + +#define GuiLib_VAR_BOOL 0 +#define GuiLib_VAR_UNSIGNED_CHAR 1 +#define GuiLib_VAR_SIGNED_CHAR 2 +#define GuiLib_VAR_UNSIGNED_INT 3 +#define GuiLib_VAR_SIGNED_INT 4 +#define GuiLib_VAR_UNSIGNED_LONG 5 +#define GuiLib_VAR_SIGNED_LONG 6 +#define GuiLib_VAR_FLOAT 7 +#define GuiLib_VAR_DOUBLE 8 +#define GuiLib_VAR_STRING 9 +#define GuiLib_VAR_COLOR 10 +#define GuiLib_VAR_NONE 255 + +#define GuiLib_FORMAT_DEC 0 +#define GuiLib_FORMAT_EXP 1 +#define GuiLib_FORMAT_HEX_POSTFIX_H 2 +#define GuiLib_FORMAT_TIME_MMSS 3 +#define GuiLib_FORMAT_TIME_HHMM_24 4 +#define GuiLib_FORMAT_TIME_HHMMSS_24 5 +#define GuiLib_FORMAT_TIME_HHMM_12_ampm 6 +#define GuiLib_FORMAT_TIME_HHMMSS_12_ampm 7 +#define GuiLib_FORMAT_TIME_HHMM_12_AMPM 8 +#define GuiLib_FORMAT_TIME_HHMMSS_12_AMPM 9 +#define GuiLib_FORMAT_HEX_PREFIX_0X 10 +#define GuiLib_FORMAT_HEX_CLEAN 11 + +#define GuiLib_FORMAT_ALIGNMENT_LEFT 0 +#define GuiLib_FORMAT_ALIGNMENT_CENTER 1 +#define GuiLib_FORMAT_ALIGNMENT_RIGHT 2 + +#define GuiLib_DECIMAL_PERIOD 0 +#define GuiLib_DECIMAL_COMMA 1 + +#define GuiLib_LANGUAGE_TEXTDIR_LEFTTORIGHT 0 +#define GuiLib_LANGUAGE_TEXTDIR_RIGHTTOLEFT 1 + +#define GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX 0 +#define GuiLib_TEXTBOX_SCROLL_INSIDE_BLOCK 1 +#define GuiLib_TEXTBOX_SCROLL_AT_HOME 2 +#define GuiLib_TEXTBOX_SCROLL_AT_END 3 +#define GuiLib_TEXTBOX_SCROLL_ABOVE_HOME 4 +#define GuiLib_TEXTBOX_SCROLL_BELOW_END 5 + +#define GuiLib_BUTTON_STATE_UP 0 +#define GuiLib_BUTTON_STATE_DOWN 1 +#define GuiLib_BUTTON_STATE_DISABLED 2 + +#define GuiLib_CHECKBOX_OFF 0 +#define GuiLib_CHECKBOX_ON 1 + +#define GuiLib_RADIOBUTTON_OFF -1 + + +#define GuiLib_NO_COLOR 0x10000000 + + +// ============================================================================= +typedef struct +{ + GuiConst_INT16S ByteBegin; + GuiConst_INT16S ByteEnd; +} +GuiLib_DisplayLineRec; + +#ifdef GuiConst_CODEVISION_COMPILER +typedef flash struct +#else +typedef struct +#endif +{ +#ifdef GuiConst_CHARMODE_ANSI + GuiConst_INT8U FirstChar; + GuiConst_INT8U LastChar; + GuiConst_INT16U FirstCharNdx; + GuiConst_INT16U IllegalCharNdx; +#else + GuiConst_INT16U CharCount; + GuiConst_INT32U FirstCharNdx; +#endif + GuiConst_INT8U XSize, YSize; +#ifdef GuiConst_ADV_FONTS_ON + GuiConst_INT8U ColorDepth; +#endif + GuiConst_INT8U TopLine, MidLine, BaseLine; + GuiConst_INT8U Cursor1, Cursor2; + GuiConst_INT8U Underline1, Underline2; + GuiConst_INT8U BoxWidth; + GuiConst_INT8U PsNumWidth; + GuiConst_INT8U PsSpace; + GuiConst_INT8U LineSize; +} +GuiLib_FontRec; + +#ifdef GuiConst_ICC_COMPILER +typedef GuiLib_FontRec PrefixRom *GuiLib_FontRecPtr; +typedef const GuiLib_FontRec * GuiLib_FontRecConstPtr; +#else +#ifdef GuiConst_CODEVISION_COMPILER +typedef flash GuiLib_FontRec *GuiLib_FontRecPtr; +typedef flash GuiLib_FontRec *GuiLib_FontRecConstPtr; +#else +typedef GuiLib_FontRec PrefixRom *GuiLib_FontRecPtr; +typedef const GuiLib_FontRec PrefixRom *GuiLib_FontRecConstPtr; +#endif +#endif + +#ifdef GuiConst_ITEM_GRAPH_INUSE +typedef struct +{ + GuiConst_INT32S X; + GuiConst_INT32S Y; +} GuiLib_GraphDataPoint; +#endif + +// ============================================================================= +#ifdef GuiConst_DISPLAY_BUFFER_EASYGUI +#ifdef GuiConst_COLOR_DEPTH_1 +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#ifdef GuiConst_COLOR_DEPTH_2 +#ifdef GuiConst_COLOR_PLANES_2 +extern GuiConst_INT8U + GuiLib_DisplayBuf[2][GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#else +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#endif +#ifdef GuiConst_COLOR_DEPTH_4 +#ifdef GuiConst_COLOR_PLANES_4 +extern GuiConst_INT8U + GuiLib_DisplayBuf[4][GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#else +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#endif +#ifdef GuiConst_COLOR_DEPTH_5 +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#ifdef GuiConst_COLOR_DEPTH_8 +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#ifdef GuiConst_COLOR_DEPTH_12 +typedef union +{ + GuiConst_INT8U Bytes[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; + GuiConst_INT16U Words[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE / 2]; +} DisplayBufUnion; +extern DisplayBufUnion GuiLib_DisplayBuf; +#endif +#ifdef GuiConst_COLOR_DEPTH_15 +typedef union +{ + GuiConst_INT8U Bytes[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; + GuiConst_INT16U Words[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE / 2]; +} DisplayBufUnion; +extern DisplayBufUnion GuiLib_DisplayBuf; +#endif +#ifdef GuiConst_COLOR_DEPTH_16 +typedef union +{ + GuiConst_INT8U Bytes[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; + GuiConst_INT16U Words[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE / 2]; +} DisplayBufUnion; +extern DisplayBufUnion GuiLib_DisplayBuf; +#endif +#ifdef GuiConst_COLOR_DEPTH_18 +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#ifdef GuiConst_COLOR_DEPTH_24 +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#ifdef GuiConst_COLOR_DEPTH_32 +extern GuiConst_INT8U + GuiLib_DisplayBuf[GuiConst_BYTE_LINES][GuiConst_BYTES_PR_LINE]; +#endif +#endif + +extern GuiLib_DisplayLineRec GuiLib_DisplayRepaint[GuiConst_BYTE_LINES]; +#ifdef GuiConst_VNC_REMOTE_SUPPORT_ON +extern GuiLib_DisplayLineRec GuiLib_VncRepaint[GuiConst_BYTE_LINES]; +#endif // GuiConst_VNC_REMOTE_SUPPORT_ON +#ifdef GuiConst_CURSOR_SUPPORT_ON +extern GuiConst_INT16S GuiLib_ActiveCursorFieldNo; +#endif +extern GuiConst_INT16S GuiLib_LanguageIndex; +extern GuiConst_INT16S GuiLib_CurStructureNdx; +#ifdef GuiConst_ALLOW_UPSIDEDOWN_AT_RUNTIME +extern GuiConst_INT8U GuiLib_DisplayUpsideDown; +#endif + +#ifdef GuiConst_REMOTE_DATA +extern void (*GuiLib_RemoteDataReadBlock) ( + GuiConst_INT32U SourceOffset, + GuiConst_INT32U SourceSize, + GuiConst_INT8U * TargetAddr); +#ifdef GuiConst_REMOTE_TEXT_DATA +extern void (*GuiLib_RemoteTextReadBlock) ( + GuiConst_INT32U SourceOffset, + GuiConst_INT32U SourceSize, + void * TargetAddr); +#endif +#endif + + +// ============================================================================= +#include "GuiFont.h" +#include "GuiStruct.h" +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DegToRad +// =============== +// +// Converts angle from degrees to radians. +// +// Input: +// ------ +// Angle in degrees * 10 (1° = 10) +// +// Output: +// ------- +// Angle in radians * 4096 (1 rad = 4096) +// +extern GuiConst_INT32S GuiLib_DegToRad( + GuiConst_INT32S Angle); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_RadToDeg +// =============== +// +// Converts angle from radians to degrees. +// +// Input: +// ------ +// Angle in radians * 4096 (1 rad = 4096) +// +// Output: +// ------- +// Angle in degrees * 10 (1° = 10) +// +extern GuiConst_INT32S GuiLib_RadToDeg( + GuiConst_INT32S Angle); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_SinRad +// ============= +// +// Calculates Sin(angle), where angle is in radians (factored). +// +// Input: +// ------ +// Angle in radians * 4096 (1 rad = 4096) +// +// Output: +// ------- +// Sine of angle in 1/4096 units +// +extern GuiConst_INT32S GuiLib_SinRad( + GuiConst_INT32S Angle); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_SinDeg +// ============= +// +// Calculates Sin(angle), where angle is in degrees (factored). +// +// Input: +// ------ +// Angle in degrees * 10 (1° = 10) +// +// Output: +// ------- +// Sine of angle in 1/4096 units +// +extern GuiConst_INT32S GuiLib_SinDeg( + GuiConst_INT32S Angle); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_CosRad +// ============= +// +// Calculates Cos(angle), where angle is in radians (factored). +// +// Input: +// ------ +// Angle in radians * 4096 (1 rad = 4096) +// +// Output: +// ------- +// Cosine of angle in 1/4096 units +// +extern GuiConst_INT32S GuiLib_CosRad( + GuiConst_INT32S Angle); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_CosDeg +// ============= +// +// Calculates Cos(angle), where angle is in degrees (factored). +// +// Input: +// ------ +// Angle in degrees * 10 (1° = 10) +// +// Output: +// ------- +// Cosine of angle in 1/4096 units +// +extern GuiConst_INT32S GuiLib_CosDeg( + GuiConst_INT32S Angle); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Sqrt +// =========== +// +// Returns Square root of argument. +// +// Input: +// ------ +// Argument +// +// Output: +// ------- +// Square root of argument +// +extern GuiConst_INT32U GuiLib_Sqrt( + GuiConst_INT32U X); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetRedRgbColor +// ===================== +// +// Extracts red component from RGB color. +// +// Input: +// ------ +// 24 bit RGB color +// +// Output: +// ------- +// 8 bit red color component +// +extern GuiConst_INT8U GuiLib_GetRedRgbColor( + GuiConst_INT32U RgbColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_SetRedRgbColor +// ===================== +// +// Sets red component from RGB color. +// +// Input: +// ------ +// 24 bit RGB color +// 8 bit red color component +// +// Output: +// ------- +// 24 bit RGB color +// +extern GuiConst_INT32U GuiLib_SetRedRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT8U RedColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetGreenRgbColor +// ======================= +// +// Extracts green component from RGB color. +// +// Input: +// ------ +// 24 bit RGB color +// +// Output: +// ------- +// 8 bit green color component +// +extern GuiConst_INT8U GuiLib_GetGreenRgbColor( + GuiConst_INT32U RgbColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_SetGreenRgbColor +// ======================= +// +// Sets green component from RGB color. +// +// Input: +// ------ +// 24 bit RGB color +// 8 bit green color component +// +// Output: +// ------- +// 24 bit RGB color +// +extern GuiConst_INT32U GuiLib_SetGreenRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT8U GreenColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetBlueRgbColor +// ====================== +// +// Extracts blue component from RGB color. +// +// Input: +// ------ +// 24 bit RGB color +// +// Output: +// ------- +// 8 bit blue color component +// +extern GuiConst_INT8U GuiLib_GetBlueRgbColor( + GuiConst_INT32U RgbColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_SetBlueRgbColor +// ====================== +// +// Sets blue component from RGB color. +// +// Input: +// ------ +// 24 bit RGB color +// 8 bit blue color component +// +// Output: +// ------- +// 24 bit RGB color +// +extern GuiConst_INT32U GuiLib_SetBlueRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT8U BlueColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_RgbToPixelColor +// ====================== +// +// Translates from RGB color to proper pixel value for display controller +// color setup. +// +// Input: +// ------ +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_RgbToPixelColor( + GuiConst_INT32U RgbColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Rgb888ToPixelColor +// ========================= +// +// Translates from RGB color components to proper pixel value for display +// controller color setup. +// +// Input: +// ------ +// Red color value +// Green color value +// Blue color value +// +// Output: +// ------- +// Encoded pixel color value +// +GuiConst_INTCOLOR GuiLib_Rgb888ToPixelColor( + GuiConst_INT8U Red, GuiConst_INT8U Green, GuiConst_INT8U Blue); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_PixelToRgbColor +// ====================== +// +// Translates from pixel value for display controller color setup to RGB color. +// +// Input: +// ------ +// Encoded pixel color value +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_PixelToRgbColor( + GuiConst_INTCOLOR PixelColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_RgbColorToGrayScale +// ========================== +// +// Translates from RGB color to 0~255 gray scale value. +// +// Input: +// ------ +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +// Output: +// ------- +// Gray scale value, 0~255 +// +extern GuiConst_INT8U GuiLib_RgbColorToGrayScale( + GuiConst_INT32U RgbColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Rgb888ColorToGrayScale +// ============================= +// +// Translates from RGB color components to a 0~255 grayscale value. +// +// Input: +// ------ +// Red color value +// Green color value +// Blue color value +// +// Output: +// ------- +// Gray scale value, 0~255 +// +GuiConst_INT8U GuiLib_Rgb888ColorToGrayScale( + GuiConst_INT8U Red, GuiConst_INT8U Green, GuiConst_INT8U Blue); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GrayScaleToRgbColor +// ========================== +// +// Translates from 0~255 gray scale value to RGB color. +// +// Input: +// ------ +// Gray scale value, 0~255 +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_GrayScaleToRgbColor( + GuiConst_INT8U GrayValue); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_PixelColorToGrayScale +// ============================ +// +// Translates from pixel value for display controller color setup to 0~255 gray +// scale value. +// +// Input: +// ------ +// Encoded pixel color value +// +// Output: +// ------- +// Gray scale value, 0~255 +// +extern GuiConst_INT8U GuiLib_PixelColorToGrayScale( + GuiConst_INTCOLOR PixelColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GrayScaleToPixelColor +// ============================ +// +// Translates from gray scale value to display controller color setup. +// +// Input: +// ------ +// Gray scale value, 0~255 +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_GrayScaleToPixelColor( + GuiConst_INT8U GrayValue); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_BrightenRgbColor +// ======================= +// +// Brightens RGB color 0~1000‰, 1000‰ results in pure white. +// +// Input: +// ------ +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// Brighten value, 0 ~ 1000‰ +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_BrightenRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_BrightenPixelColor +// ========================= +// +// Brightens color in display controller color setup 0~1000‰, 1000‰ results in +// pure white. +// +// Input: +// ------ +// Encoded pixel color value +// Brighten value, 0 ~ 1000‰ +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_BrightenPixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DarkenRgbColor +// ===================== +// +// Darkens RGB color 0~1000‰, 1000‰ results in pure black. +// +// Input: +// ------ +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// Darken value, 0 ~ 1000‰ +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_DarkenRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DarkenPixelColor +// ======================= +// +// Darkens color in display controller color setup 0~1000‰, 1000‰ results in +// pure black. +// +// Input: +// ------ +// Encoded pixel color value +// Darken value, 0 ~ 1000‰ +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_DarkenPixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_MiddleRgbColor +// ===================== +// +// Gives middle color, between color 1 and color 2. +// Ratio in 0~1000‰, 0‰ gives color 1, 1000‰ gives color 2. +// +// Input: +// ------ +// RGB color 1 value +// RGB color 2 value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// Color ratio, 0 ~ 1000‰ +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_MiddleRgbColor( + GuiConst_INT32U RgbColor1, + GuiConst_INT32U RgbColor2, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_MiddlePixelColor +// ======================= +// +// Gives middle color in display controller color setup, +// between color 1 and color 2. +// Ratio in 0~1000‰, 0‰ gives color 1, 1000‰ gives color 2. +// +// Input: +// ------ +// Encoded pixel color 1 value +// Encoded pixel color 2 value +// Color ratio, 0 ~ 1000‰ +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_MiddlePixelColor( + GuiConst_INTCOLOR PixelColor1, + GuiConst_INTCOLOR PixelColor2, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DesaturateRgbColor +// ========================= +// +// Removes saturation from color, turning it towards gray color. +// Ratio in 0~1000‰, 0‰ gives color 1, 1000‰ gives gray. +// +// Input: +// ------ +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// Desaturation ratio, 0 ~ 1000‰ +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_DesaturateRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DesaturatePixelColor +// =========================== +// +// Removes saturation from color, turning it towards gray color. +// Ratio in 0~1000‰, 0‰ gives color 1, 1000‰ gives gray. +// +// Input: +// ------ +// Encoded pixel color value +// Color ratio, 0 ~ 1000‰ +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_DesaturatePixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_AccentuateRgbColor +// ========================= +// +// Accentuates RGB color. Colors with less than 50% mean gray are made darker, +// otherwise brighter. Amount in ‰, 0‰ gives no change, 1000‰ gives pure black +// or white. +// +// Input: +// ------ +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// Accentuate value, 0 ~ 1000‰ +// +// Output: +// ------- +// RGB color value +// (32 bit, 24 bits used, low byte = Red, middle byte = Green, high byte = Blue) +// +extern GuiConst_INT32U GuiLib_AccentuateRgbColor( + GuiConst_INT32U RgbColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_AccentuatePixelColor +// =========================== +// +// Accentuates color in display controller color setup. Colors with less than +// 50% mean gray are made darker, otherwise brighter. Amount in ‰, 0‰ gives no +// change, 1000‰ gives pure black or white. +// +// Input: +// ------ +// Encoded pixel color value +// Accentuate value, 0 ~ 1000‰ +// +// Output: +// ------- +// Encoded pixel color value +// +extern GuiConst_INTCOLOR GuiLib_AccentuatePixelColor( + GuiConst_INTCOLOR PixelColor, + GuiConst_INT16U Amount); +// ----------------------------------------------------------------------------- + +// ============================================================================= +// GuiLib_SetButtonDisabledColor +// ============================= +// +// Override automatic generation of button disabled color with the specified +// pixel color value. +// +// Input: +// ------ +// Encoded pixel color value +// +// Output: +// ------- +// Encoded pixel color value +// +GuiConst_INTCOLOR GuiLib_SetButtonDisabledColor(GuiConst_INTCOLOR PixelColor); +// ----------------------------------------------------------------------------- + +#ifdef GuiConst_CLIPPING_SUPPORT_ON + +// ============================================================================= +// GuiLib_ResetClipping +// ==================== +// +// Resets clipping. +// Drawing can be limited to a rectangular portion of the screen, +// this routine resets the clipping limits to the entire screen. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_ResetClipping(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_SetClipping +// ================== +// +// Sets clipping. +// Drawing can be limited to a rectangular portion of the screen, +// this routine sets the clipping limits expressed as two opposite +// corner coordinates. +// +// Input: +// ------ +// Rectangle coordinates +// +// Output: +// ------- +// None +// +extern void GuiLib_SetClipping( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2); +// ----------------------------------------------------------------------------- + +#endif + + +// ============================================================================= +// GuiLib_ResetDisplayRepaint +// ========================== +// +// Resets all repainting scan line markers. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_ResetDisplayRepaint(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_MarkDisplayBoxRepaint +// ============================ +// +// Sets the repainting scan line markers, indicating that all pixels inside the +// specified rectangle must be repainted. +// +// Input: +// ------ +// Rectangle coordinates +// +// Output: +// ------- +// None +// +extern void GuiLib_MarkDisplayBoxRepaint( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ClearDisplay +// =================== +// +// Clears the screen. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_ClearDisplay(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Dot +// ========== +// +// Draws a single pixel. +// +// Input: +// ------ +// Coordinates +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_Dot( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetDot +// ============= +// +// Returns the color of a single pixel. +// +// Input: +// ------ +// Coordinates +// +// Output: +// ------- +// Color +// +extern GuiConst_INTCOLOR GuiLib_GetDot( + GuiConst_INT16S X, + GuiConst_INT16S Y); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Line +// =========== +// +// Draws a line. +// +// Input: +// ------ +// Coordinates +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_Line( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_LinePattern +// ================== +// +// Draws a patterned line. +// +// Input: +// ------ +// Coordinates +// Line pattern (8 pixel pattern) +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_LinePattern( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INT8U LinePattern, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_HLine +// ============ +// +// Draws a horizontal line. +// +// Input: +// ------ +// Coordinates +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_HLine( + GuiConst_INT16S X1, + GuiConst_INT16S X2, + GuiConst_INT16S Y, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_VLine +// ============ +// +// Draws a vertical line. +// +// Input: +// ------ +// Coordinates +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_VLine( + GuiConst_INT16S X, + GuiConst_INT16S Y1, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Box +// ========== +// +// Draws a single pixel wide rectangle. +// +// Input: +// ------ +// Coordinates +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_Box( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_FillBox +// ============== +// +// Draws a filled rectangle. +// +// Input: +// ------ +// Coordinates +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_FillBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_BorderBox +// ================ +// +// Draws a filled rectangle with single pixel border. +// +// Input: +// ------ +// Coordinates +// Border and fill colors +// +// Output: +// ------- +// None +// +extern void GuiLib_BorderBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INTCOLOR BorderColor, + GuiConst_INTCOLOR FillColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_InvertBox +// ================ +// +// Inverts a block. +// +// Input: +// ------ +// Coordinates +// +// Output: +// ------- +// None +// +extern void GuiLib_InvertBox( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Circle +// ============= +// +// Draws a filled or framed circle with single pixel width border. +// +// Input: +// ------ +// Center coordinate +// Radius +// Border color, GuiLib_NO_COLOR means same color as fill color +// Fill color, GuiLib_NO_COLOR means no filling +// +// Output: +// ------- +// None +// +extern void GuiLib_Circle( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius, + GuiConst_INT32S BorderColor, + GuiConst_INT32S FillColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Ellipse +// ============== +// +// Draws a filled or framed ellipse with single pixel width border. +// +// Input: +// ------ +// Center coordinate +// Horizontal and vertical radii +// Border color, GuiLib_NO_COLOR means same color as fill color +// Fill color, GuiLib_NO_COLOR means no filling +// +// Output: +// ------- +// None +// +extern void GuiLib_Ellipse( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U Radius1, + GuiConst_INT16U Radius2, + GuiConst_INT32S BorderColor, + GuiConst_INT32S FillColor); +// ----------------------------------------------------------------------------- + + +#ifdef GuiConst_BITMAP_SUPPORT_ON + +// ============================================================================= +// GuiLib_ShowBitmap +// ================= +// +// Displays a stored bitmap. +// +// Input: +// ------ +// Bitmap index in GuiStruct_BitmapPtrList +// Coordinates for upper left corner +// Transparent background color, -1 means no transparency +// +// Output: +// ------- +// None +// +extern void GuiLib_ShowBitmap( + GuiConst_INT16U BitmapIndex, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT32S TranspColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ShowBitmapAt +// =================== +// +// Displays a bitmap at a specific address. +// The data in the memory area must conform to the format explained in the +// easyGUI user manual. +// +// Input: +// ------ +// Pointer to memory area +// Coordinates for upper left corner +// Transparent background color, -1 means no transparency +// +// Output: +// ------- +// None +// +extern void GuiLib_ShowBitmapAt( + GuiConst_INT8U * BitmapPtr, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT32S TranspColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================ +// GuiLib_ShowBitmapArea +// ===================== +// +// Displays part of a stored bitmap. +// +// Input: +// ------ +// Bitmap index in GuiStruct_BitmapPtrList +// Starting coordinates for upper left corner of bitmap +// Absolute coordinates for upper left and lower right corner of displayed area +// Transparent background color, -1 means no transparency +// +// Output: +// ------- +// None +// +extern void GuiLib_ShowBitmapArea( + GuiConst_INT16U BitmapIndex, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S AX1, + GuiConst_INT16S AY1, + GuiConst_INT16S AX2, + GuiConst_INT16S AY2, + GuiConst_INT32S TranspColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================ +// GuiLib_ShowBitmapAreaAt +// ======================= +// +// Displays part of a bitmap at a specific address. +// The data in the memory area must conform to the format explained in the +// easyGUI user manual. +// +// Input: +// ------ +// Pointer to memory area +// Starting coordinates for upper left corner of bitmap +// Absolute coordinates for upper left and lower right corner of displayed area +// Transparent background color, -1 means no transparency +// +// Output: +// ------- +// None +// +extern void GuiLib_ShowBitmapAreaAt( + GuiConst_INT8U * BitmapPtr, + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S AX1, + GuiConst_INT16S AY1, + GuiConst_INT16S AX2, + GuiConst_INT16S AY2, + GuiConst_INT32S TranspColor); +// ----------------------------------------------------------------------------- + +#endif + + +// ============================================================================= +// GuiLib_DrawChar +// =============== +// +// Draws a single character on the display. +// +// Input: +// ------ +// Coordinates +// Font index +// Character +// Color +// +// Output: +// ------- +// None +// +extern void GuiLib_DrawChar( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U FontNo, + GuiConst_TEXT Character, + GuiConst_INTCOLOR Color); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DrawStr +// ============== +// +// Draws a text string on the display. +// +// Input: +// ------ +// Coordinates +// Font index +// Text string +// Alignment +// Ps mode +// Transparent +// Underlining +// Back box size X (0 = none) +// Back box size Y1 (height above base line, 0 = default font box) +// Back box size Y2 (height below base line, 0 = default font box) +// Extra back box pixels +// Text color +// Background box color +// +// Output: +// ------- +// None +// +extern void GuiLib_DrawStr( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U FontNo, + GuiConst_TEXT PrefixLocate *String, + GuiConst_INT8U Alignment, + GuiConst_INT8U PsWriting, + GuiConst_INT8U Transparent, + GuiConst_INT8U Underlining, + GuiConst_INT16S BackBoxSizeX, + GuiConst_INT16S BackBoxSizeY1, + GuiConst_INT16S BackBoxSizeY2, + GuiConst_INT8U BackBorderPixels, + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_DrawVar +// ============== +// +// Draws a variable on the display. +// +// Input: +// ------ +// Coordinates +// Font index +// Variable pointer reference +// Variable type - can be: +// GuiLib_VAR_BOOL +// GuiLib_VAR_UNSIGNED_CHAR +// GuiLib_VAR_SIGNED_CHAR +// GuiLib_VAR_UNSIGNED_INT +// GuiLib_VAR_SIGNED_INT +// GuiLib_VAR_UNSIGNED_LONG +// GuiLib_VAR_SIGNED_LONG +// GuiLib_VAR_FLOAT +// GuiLib_VAR_DOUBLE +// GuiLib_VAR_STRING +// Variable format - can be: +// GuiLib_FORMAT_DEC +// GuiLib_FORMAT_EXP +// GuiLib_FORMAT_HEX +// GuiLib_FORMAT_TIME_MMSS +// GuiLib_FORMAT_TIME_HHMM_24 +// GuiLib_FORMAT_TIME_HHMMSS_24 +// GuiLib_FORMAT_TIME_HHMM_12_ampm +// GuiLib_FORMAT_TIME_HHMMSS_12_ampm +// GuiLib_FORMAT_TIME_HHMM_12_AMPM +// GuiLib_FORMAT_TIME_HHMMSS_12_AMPM +// Variable format field width +// Variable format alignment - can be: +// GuiLib_FORMAT_ALIGNMENT_LEFT +// GuiLib_FORMAT_ALIGNMENT_CENTER +// GuiLib_FORMAT_ALIGNMENT_RIGHT +// Variable format decimals +// Variable format show sign (true or false) +// Variable format zero padding (true or false) +// Variable format trailing zeros (true or false) +// Variable format thousands separator (true or false) +// Alignment +// Ps mode +// Transparent +// Underlining +// Back box size X (0 = none) +// Back box size Y1 (height above base line, 0 = default font box) +// Back box size Y2 (height below base line, 0 = default font box) +// Extra back box pixels +// Text color +// Background box color +// +// Output: +// ------- +// None +// +extern void GuiLib_DrawVar( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16U FontNo, + void PrefixLocate *VarPtr, + GuiConst_INT8U VarType, + GuiConst_INT8U FormatterFormat, + GuiConst_INT8U FormatterFieldWidth, + GuiConst_INT8U FormatterAlignment, + GuiConst_INT8U FormatterDecimals, + GuiConst_INT8U FormatterShowSign, + GuiConst_INT8U FormatterZeroPadding, + GuiConst_INT8U FormatterTrailingZeros, + GuiConst_INT8U FormatterThousandsSeparator, + GuiConst_INT8U Alignment, + GuiConst_INT8U PsWriting, + GuiConst_INT8U Transparent, + GuiConst_INT8U Underlining, + GuiConst_INT16S BackBoxSizeX, + GuiConst_INT16S BackBoxSizeY1, + GuiConst_INT16S BackBoxSizeY2, + GuiConst_INT8U BackBorderPixels, + GuiConst_INTCOLOR ForeColor, + GuiConst_INTCOLOR BackColor); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Init +// =========== +// +// Initialises the easyGUI library module. +// MUST be called at application startup, before using the easyGUI library. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_Init(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Clear +// ============ +// +// Clears the screen, and resets the easyGUI system. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_Clear(void); +// ----------------------------------------------------------------------------- + + +#ifdef GuiConst_CHARMODE_UNICODE + +// ============================================================================= +// GuiLib_UnicodeStrLen +// ==================== +// +// Calculates length of Unicode string. +// This function is equivalent to the ANSI character mode strlen function. +// +// Input: +// ------ +// Unicode string reference +// +// Output: +// ------- +// Length in characters, excluding zero termination +// +extern GuiConst_INT16U GuiLib_UnicodeStrLen( + GuiConst_TEXT PrefixLocate *S); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_StrAnsiToUnicode +// ======================= +// +// Converts ANSI string to Unicode string. +// +// Input: +// ------ +// ANSI and Unicode string references +// Unicode string must have sufficient space +// +// Output: +// ------- +// None +// +extern void GuiLib_StrAnsiToUnicode( + GuiConst_TEXT PrefixLocate *S2, + GuiConst_CHAR PrefixLocate *S1); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_UnicodeStrCmp +// ==================== +// +// Compares two Unicode strings. +// This function is equivalent to the ANSI character mode strcmp function. +// +// Input: +// ------ +// Unicode string references +// +// Output: +// ------- +// <0: S1 is less than S2 +// =0: S1 and S2 are equal +// >0: S1 is greater than S2 +// +GuiConst_INT16S GuiLib_UnicodeStrCmp( + GuiConst_TEXT PrefixLocate *S1, + GuiConst_TEXT PrefixLocate *S2); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_UnicodeStrNCmp +// ===================== +// +// Compares two Unicode strings, until the N'th character. +// This function is equivalent to the ANSI character mode strncmp function. +// +// Input: +// ------ +// Unicode string references +// Character count to compare +// +// Output: +// ------- +// <0: S1 is less than S2 inside the N characters +// =0: S1 and S2 are equal inside the N characters +// >0: S1 is greater than S2 inside the N characters +// +GuiConst_INT16S GuiLib_UnicodeStrNCmp( + GuiConst_TEXT PrefixLocate *S1, + GuiConst_TEXT PrefixLocate *S2, + GuiConst_INT16U StrLen); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_UnicodeStrCpy +// ==================== +// +// Copy from one Unicode string to another. +// This function is equivalent to the ANSI character mode strcpy function +// +// Input: +// ------ +// S1: Unicode source string reference +// S2: Unicode destination string reference +// Unicode destination string must have sufficient space +// +// Output: +// ------- +// None +// +void GuiLib_UnicodeStrCpy( + GuiConst_TEXT PrefixLocate *S2, + GuiConst_TEXT PrefixLocate *S1); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_UnicodeStrNCpy +// ===================== +// +// Copy from one Unicode string to another. No more than source StrLen bytes are +// copied. +// Bytes following a source null byte are not copied. +// If needed target is padded with null bytes until reaching StrLen. +// This function is equivalent to the ANSI character mode strncpy function. +// +// Input: +// ------ +// S1: Unicode source string reference +// S2: Unicode destination string reference +// StrLen: Number of characters to copy +// Unicode destination string must have sufficient space +// +// Output: +// ------- +// None +// +void GuiLib_UnicodeStrNCpy( + GuiConst_TEXT PrefixLocate *S2, + GuiConst_TEXT PrefixLocate *S1, + GuiConst_INT16U StrLen); +// ----------------------------------------------------------------------------- + +#endif + + +// ============================================================================= +// GuiLib_ShowScreen +// ================= +// +// Instructs structure drawing task to draw a complete structure. +// +// Input: +// ------ +// Structure ID +// Active cursor field No. - +// use GuiLib_NO_CURSOR if there is no cursor to show +// Maintain or erase old AutoReadraw fields - +// use GuiLib_NO_RESET_AUTO_REDRAW or GuiLib_RESET_AUTO_REDRAW +// +// Output: +// ------- +// None +// +extern void GuiLib_ShowScreen( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16S CursorFieldToShow, + GuiConst_INT8U ResetAutoRedraw); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetTextLanguagePtr +// ========================= +// +// Returns pointer to text in structure +// Language of selected text can be freely selected, no matter what language +// is active +// +// Input: +// ------ +// Structure ID +// Text No. - index 0 is first text in structure, Item types other than Texts +// and Paragraph are ignored +// +// Output: +// ------- +// Pointer to text based on structure, text No. and current language +// Returns Nil if no text was found +// +extern GuiConst_TEXT PrefixLocate *GuiLib_GetTextLanguagePtr( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16U TextNo, + GuiConst_INT16S LanguageIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetTextPtr +// ================= +// +// Returns pointer to text in structure +// +// Input: +// ------ +// Structure ID +// Text No. - index 0 is first text in the structure, item types other than +// Text and Paragraph are ignored +// +// Output: +// ------- +// Pointer to text based on structure, text No. and current language +// Returns Nil if no text was found +// +extern GuiConst_TEXT PrefixLocate *GuiLib_GetTextPtr( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16U TextNo); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetTextWidth +// =================== +// +// Returns width of text in pixels +// +// Input: +// ------ +// Pointer to text string +// Pointer to font +// PS writing mode - can be: +// GuiLib_PS_OFF No proportional writing +// GuiLib_PS_ON Normal proportional writing +// GuiLib_PS_NUM Numerical proportional writing +// +// Output: +// ------- +// Width of text in pixels, returns zero if an error is encountered +// +extern GuiConst_INT16U GuiLib_GetTextWidth( + GuiConst_TEXT PrefixLocate *String, + GuiLib_FontRecConstPtr Font, + GuiConst_INT8U PsWriting); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GetCharCode +// ================== +// +// Returns ANSI or Unicode code of specific character in string +// +// Input: +// ------ +// Structure ID +// Text No. - index 0 is first text in the structure, item types other than +// Text and Paragraph are ignored +// Character position +// Omit control codes, Control codes are soft and hard line breaks +// 0 - count all charactes +// 1 - omit control codes during counting +// +// Output: +// ------- +// ANSI or Unicode code of character, returns zero if an error is encountered +// +extern GuiConst_TEXT GuiLib_GetCharCode( + const GuiConst_INT16U StructureNdx, + GuiConst_INT16U TextNo, + GuiConst_INT16U CharNo, + GuiConst_INT16U OmitCtrlCode); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_GuiLib_ClearPositionCallbacks +// ==================================== +// +// Resets all position callback function references - no callbacks will then +// happen, until GuiLib_SetPositionCallbackFunc has been called +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_ClearPositionCallbacks(void); + + +// ============================================================================= +// GuiLib_SetPositionCallbackFunc +// ============================== +// +// Defines a callback function for a specific position callback item +// The callback function will be called each time a structure containing a +// position callback item with the same index number. The callback will contain +// the index number and the current X,Y display coordinates. +// +// Input: +// ------ +// Position callback index No. +// Position callback function - function style is F(IndexNo, X, Y) +// +// Output: +// ------- +// None +// +extern void GuiLib_SetPositionCallbackFunc( + GuiConst_INT16U IndexNo, + void (*PosCallbackFunc) (GuiConst_INT16U IndexNo, + GuiConst_INT16S X, + GuiConst_INT16S Y)); + + +#ifdef GuiConst_BLINK_SUPPORT_ON + +// ============================================================================= +// GuiLib_GetBlinkingCharCode +// ========================== +// +// Returns ANSI or Unicode code of character in string marked as blinking field +// +// Input: +// ------ +// Blinking item No. +// Character position +// Omit control codes, Control codes are soft and hard line breaks +// 0 - count all charactes +// 1 - omit control codes during counting +// +// Output: +// ------- +// ANSI or Unicode code of character, returns zero if an error is encountered +// +extern GuiConst_TEXT GuiLib_GetBlinkingCharCode( + GuiConst_INT16U BlinkFieldNo, + GuiConst_INT16U CharNo, + GuiConst_INT16U OmitCtrlCode); +// ----------------------------------------------------------------------------- + +#endif + + +// ============================================================================= +// GuiLib_SetLanguage +// ================== +// +// Selects current language. Index zero is the reference language. +// +// Input: +// ------ +// Language index +// +// Output: +// ------- +// None +// +extern void GuiLib_SetLanguage( + GuiConst_INT16S NewLanguage); +// ----------------------------------------------------------------------------- + + +#ifdef GuiConst_CURSOR_SUPPORT_ON + +// ============================================================================= +// GuiLib_Cursor_Hide +// ================== +// +// Hides cursor field. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_Cursor_Hide(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_IsCursorFieldInUse +// ========================= +// +// Reports if a cursor field is active. +// +// Input: +// ------ +// Query cursor field No. +// +// Output: +// ------- +// 0 = Cursor field not active +// 1 = Cursor field active +// +extern GuiConst_INT8U GuiLib_IsCursorFieldInUse( + GuiConst_INT16S AskCursorFieldNo); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Cursor_Select +// ==================== +// +// Makes requested cursor field active, redrawing both current and new cursor +// field. +// +// Input: +// ------ +// New cursor field No. +// -1 hides cursor. +// +// Output: +// ------- +// 0 = No change, requested cursor field is invalid +// 1 = Cursor moved // extern GuiConst_INT8U GuiLib_Cursor_Select( +// GuiConst_INT16S NewCursorFieldNo); +// +extern GuiConst_INT8U GuiLib_Cursor_Select( + GuiConst_INT16S NewCursorFieldNo); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Cursor_Down +// ================== +// +// Makes next cursor field active, redrawing both current and new cursor field. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// 0 = Cursor at end of range +// 1 = Cursor moved +// +extern GuiConst_INT8U GuiLib_Cursor_Down(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Cursor_Up +// ================ +// +// Makes previous cursor field active, redrawing both current and new cursor +// field. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// 0 = Cursor at end of range +// 1 = Cursor moved +// +extern GuiConst_INT8U GuiLib_Cursor_Up(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Cursor_Home +// ================== +// +// Makes first cursor field active, redrawing both current and new cursor +// field. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// 0 = No change, first cursor field already active +// 1 = Cursor moved +// +extern GuiConst_INT8U GuiLib_Cursor_Home(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_Cursor_End +// ================= +// +// Makes last cursor field active, redrawing both current and new cursor +// field. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// 0 = No change, last cursor field already active +// 1 = Cursor moved +// +extern GuiConst_INT8U GuiLib_Cursor_End(void); +// ----------------------------------------------------------------------------- + +#endif + + +#ifdef GuiConst_BLINK_SUPPORT_ON + +// ============================================================================= +// GuiLib_BlinkBoxStart +// ==================== +// +// Sets parameters for blinking box function +// +// Input: +// ------ +// X1, Y1, X2, Y2: Blinking rectangle +// Rate: Blinking rate, in multiples of refresh rate, valid range 0-255 +// Rate = 255 disables blinking, but makes an initial inverting of the +// rectangle +// +// Output: +// ------- +// None +// +extern void GuiLib_BlinkBoxStart( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2, + GuiConst_INT16S Rate); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_BlinkBoxStop +// =================== +// +// Stops blinking box function +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_BlinkBoxStop(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_BlinkBoxMarkedItem +// ========================= +// +// Sets parameters for blinking box function based on marked blink text field +// +// Input: +// ------ +// BlinkFieldNo: Index No. to marked blink text field in structure +// CharNo: Character number in text, first character is No. 1 +// CharNo = 0 means entire text +// Rate: Blinking rate, in multiples of refresh rate, valid range 0-255 +// Rate = 255 disables blinking, but makes an initial marking of the +// character/text +// +// Output: +// ------- +// None +// +extern void GuiLib_BlinkBoxMarkedItem( + GuiConst_INT16U BlinkFieldNo, + GuiConst_INT16U CharNo, + GuiConst_INT16S Rate); +// ----------------------------------------------------------------------------- + +// ============================================================================= +// GuiLib_BlinkBoxMarkedItemStop +// ============================= +// +// Stops blinking box function based on marked blink text field +// +// Input: +// ------ +// BlinkFieldNo: Index No. to marked blink text field in structure +// +// Output: +// ------- +// None +// +extern void GuiLib_BlinkBoxMarkedItemStop( + GuiConst_INT16U BlinkFieldNo); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_BlinkBoxMarkedItemUpdate +// =============================== +// +// Update parameters for blinking box function based on marked blink text field +// +// Input: +// ------ +// BlinkFieldNo: Index No. to marked blink text field in structure +// +// Output: +// ------- +// None +// +extern void GuiLib_BlinkBoxMarkedItemUpdate( + GuiConst_INT16U BlinkFieldNo); + +//------------------------------------------------------------------------------ + +#endif + + +// ============================================================================= +// GuiLib_InvertBoxStart +// ===================== +// +// Sets parameters for inverted box function +// +// Input: +// ------ +// X1, Y1, X2, Y2: Inverted box rectangle +// +// Output: +// ------- +// None +// +extern void GuiLib_InvertBoxStart( + GuiConst_INT16S X1, + GuiConst_INT16S Y1, + GuiConst_INT16S X2, + GuiConst_INT16S Y2); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_InvertBoxStop +// ==================== +// +// Stops inverted box function +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_InvertBoxStop(void); +// ----------------------------------------------------------------------------- + + +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + +// ============================================================================= +// GuiLib_TouchCheck +// ================= +// +// Returns touch area No. corresponding to the supplied coordinates. +// If no touch area is found at coordinates -1 is returned. +// Touch coordinates are converted to display coordinates, if conversion +// parameters have been set with the GuiLib_TouchAdjustSet function. +// +// Input: +// ------ +// X, Y: Touch position in touch interface coordinates +// +// Output: +// ------- +// -1 = No touch area found +// >=0 = Touch area No. +// +// +extern GuiConst_INT32S GuiLib_TouchCheck( + GuiConst_INT16S X, + GuiConst_INT16S Y); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TouchGet +// =============== +// +// Performs the same action as GuiLib_TouchCheck, and additionally returns +// touch coordinates in display coordinates: +// Returns touch area No. corresponding to the supplied coordinates. +// If no touch area is found at coordinates -1 is returned. +// Touch coordinates are converted to display coordinates, if conversion +// parameters have been set with the GuiLib_TouchAdjustSet function. +// OBS: If no conversion parameters have been set with the GuiLib_TouchAdjustSet +// function the calculated touch coordinates in display coordinates will be +// TouchX = X, and TouchY = Y. +// +// Input: +// ------ +// X, Y: Touch position in touch interface coordinates +// TouchX, TouchY: Addresses of the variables where touch coordinates +// converted to display coordinates will be stored +// +// Output: +// ------- +// -1 = No touch area found +// >=0 = Touch area No. +// +// +extern GuiConst_INT32S GuiLib_TouchGet( + GuiConst_INT16S X, + GuiConst_INT16S Y, + GuiConst_INT16S* TouchX, + GuiConst_INT16S* TouchY); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TouchAdjustReset +// ======================= +// +// Resets touch coordinate conversion. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_TouchAdjustReset(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TouchAdjustSet +// ===================== +// +// Sets one coordinate pair for touch coordinate conversion. +// Must be called two times, once for each of two diagonally opposed corners, +// or four times, once for each of the corners. +// The corner positions should be as close as possible to the physical display +// corners, as precision is lowered when going towards the display center. +// +// Input: +// ------ +// XTrue, YTrue : Position represented in display coordinates +// XMeasured, YMeasured: Position represented in touch interface coordinates +// +// Output: +// ------- +// None +// +extern void GuiLib_TouchAdjustSet( + GuiConst_INT16S XTrue, + GuiConst_INT16S YTrue, + GuiConst_INT16S XMeasured, + GuiConst_INT16S YMeasured); +// ----------------------------------------------------------------------------- + +#endif + + +// ============================================================================= +// GuiLib_Refresh +// ============== +// +// Refreshes variables and updates display. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_Refresh(void); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TestPattern +// ================== +// +// Makes test pattern for display control error diagnosis. See user manual for +// further info. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// None +// +extern void GuiLib_TestPattern(void); +// ----------------------------------------------------------------------------- + + +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + +// ============================================================================= +// GuiLib_ScrollBox_Init +// ===================== +// +// Initializes a scroll box (new item type style). +// +// Input: +// ------ +// Scroll box index +// DataFuncPtr: Address of scroll line call-back function of type +// "void F(GuiConst_INT16S LineIndex)" +// NoOfLines: Total No. of lines in scroll box +// ActiveLine: Active scroll line, -1 means no active scroll line +// +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_Init( + GuiConst_INT8U ScrollBoxIndex, + void (*DataFuncPtr) (GuiConst_INT16S LineIndex), + GuiConst_INT16S NoOfLines, + GuiConst_INT16S ActiveLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_Redraw +// ======================= +// +// Redraws dynamic parts of scroll box (new item type style). +// For complete redraw use GuiLib_ScrollBox_Init. +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_Redraw( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_RedrawLine +// =========================== +// +// Redraws single line of scroll box (new item type style). +// If line is not visible no action is performed. +// +// Input: +// ------ +// Scroll box index +// Scroll line to redraw, index zero is first line in scroll box list +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_RedrawLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_Close +// ====================== +// +// Closes a scroll box (new item type style). +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_Close( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_Down +// ===================== +// +// Makes next scroll line active, and scrolls list if needed (new item type +// style). +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// 0 = No change, list already at bottom +// 1 = Active scroll line changed +// +extern GuiConst_INT8U GuiLib_ScrollBox_Down( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_Up +// =================== +// +// Makes previous scroll line active, and scrolls list if needed (new item type +// style). +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// 0 = No change, list already at top +// 1 = Active scroll line changed +// +extern GuiConst_INT8U GuiLib_ScrollBox_Up( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_Home +// ===================== +// +// Makes first scroll line active, and scrolls list if needed (new item type +// style). +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// 0 = No change, list already at top +// 1 = Active scroll line changed +// +extern GuiConst_INT8U GuiLib_ScrollBox_Home( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_End +// ==================== +// +// Makes last scroll line active, and scrolls list if needed (new item type +// style). +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// 0 = No change, list already at bottom +// 1 = Active scroll line changed +// +extern GuiConst_INT8U GuiLib_ScrollBox_End( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_To_Line +// ======================== +// +// Makes specified scroll line active, and scrolls list if needed (new item type +// style). +// +// Input: +// ------ +// Scroll box index +// New scroll line, -1 means no active scroll line +// +// Output: +// ------- +// 0 = No change, list already at specified line +// 1 = Active scroll line changed +// +extern GuiConst_INT8U GuiLib_ScrollBox_To_Line( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S NewLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_SetLineMarker +// ============================== +// +// Sets scroll marker position and line count. +// Scroll marker index 0 (active scroll line) can only cover 1 scroll line. +// Display only changes after subsequent GuiLib_ScrollBox_Redraw call. +// +// Input: +// ------ +// Scroll box index +// Scroll marker index +// Marker start line, -1 means no marker +// Marker line count (clipped to a maximum of 1 for marker index 0) +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_SetLineMarker( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLineMarkerIndex, + GuiConst_INT16S StartLine, + GuiConst_INT16U Size); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_GetActiveLine +// ============================== +// +// Returns topmost scroll marker line of selected scroll box / marker. +// +// Input: +// ------ +// Scroll box index +// Scroll marker index (0 = active scroll line, >0 = secondary line markers) +// +// Output: +// ------- +// Index of topmost scroll marker line +// -1 = Error in parameters +// +extern GuiConst_INT16S GuiLib_ScrollBox_GetActiveLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLineMarkerIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_GetActiveLineCount +// =================================== +// +// Returns number of marked lines in selected scroll box / marker. +// +// Input: +// ------ +// Scroll box index +// Scroll marker index (0 = active scroll line, >0 = secondary line markers) +// +// Output: +// ------- +// Count of marked scroll lines +// -1 = Error in parameters +// Active scroll line (scroll marker index = 0) will always return 1 +// +extern GuiConst_INT16S GuiLib_ScrollBox_GetActiveLineCount( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16U ScrollLineMarkerIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_SetIndicator +// ============================= +// +// Sets scroll indicator position. +// Display only changes after subsequent GuiLib_ScrollBox_Redraw call. +// +// Input: +// ------ +// Scroll box index +// Indicator line, -1 means no indicator +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_SetIndicator( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S StartLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_SetTopLine +// =========================== +// +// Sets topmost visible scroll line of selected scroll box. +// Display only changes after subsequent GuiLib_ScrollBox_Redraw call. +// If simultaneously setting line marker position make sure top line setting is +// last action before GuiLib_ScrollBox_Redraw call. +// +// Input: +// ------ +// Scroll box index +// Index of topmost visible scroll line +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_ScrollBox_SetTopLine( + GuiConst_INT8U ScrollBoxIndex, + GuiConst_INT16S TopLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_ScrollBox_GetTopLine +// =========================== +// +// Returns topmost visible scroll line of selected scroll box. +// +// Input: +// ------ +// Scroll box index +// +// Output: +// ------- +// Index of topmost visible scroll line +// -1 = Error in parameters +// +extern GuiConst_INT16S GuiLib_ScrollBox_GetTopLine( + GuiConst_INT8U ScrollBoxIndex); +// ----------------------------------------------------------------------------- + +#endif + + +#ifdef GuiConst_ITEM_GRAPH_INUSE + +// ============================================================================= +// GuiLib_Graph_Close +// ================== +// +// Closes a graph, so that no futher actions can be accomplished with it. +// Memory assigned to datasets must be freed independently. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +GuiConst_INT8U GuiLib_Graph_Close( + GuiConst_INT8U GraphIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_AddDataSet +// ======================= +// +// Adds a data set to a graph. The data set must be created in the structure, +// but is not shown before this function is called. +// Memory must be assigned independently for the data set. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// XAxisIndex: Index of X-axis to use. +// YAxisIndex: Index of Y-axis to use. +// DataPtr: Pointer to an array of data points, where each data point is a 32 +// bit signed X,Y entity of type GuiLib_GraphDataPoint. +// DataSize: Maximum number of data points possible in the data set. +// DataCount: Number of active data points in the data set. +// DataFirst: Index of first active data point (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_AddDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT8U XAxisIndex, + GuiConst_INT8U YAxisIndex, + GuiLib_GraphDataPoint *DataPtr, + GuiConst_INT16U DataSize, + GuiConst_INT16U DataCount, + GuiConst_INT16U DataFirst); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_RemoveDataSet +// ========================== +// +// Removes a data set from a graph. +// Memory must be released independently for the data set. +// Nothing is drawn in this function. +// +//------------------------------------------------------------------------------ +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_RemoveDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_AddDataPoint +// ========================= +// +// Adds a data point to a data set. The data set must have sufficient space for +// the new data point. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// DataPointX, DataPointY: The data point. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_AddDataPoint( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT32S DataPointX, + GuiConst_INT32S DataPointY); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_ShowDataSet +// ======================== +// +// Marks a data set as visible. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_ShowDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_HideDataSet +// ======================== +// +// Marks a data set as invisible. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_HideDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_ShowXAxis +// ====================== +// +// Marks an X-axis as visible. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of X axis in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_ShowXAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_HideXAxis +// ====================== +// +// Marks an X-axis as invisible. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of X axis in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_HideXAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_ShowYAxis +// ====================== +// +// Marks an Y-axis as visible. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of Y axis in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_ShowYAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_HideYAxis +// ====================== +// +// Marks an Y-axis as invisible. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of Y axis in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_HideYAxis( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_SetXAxisRange +// ========================== +// +// Changes an X-axis range. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of X axis in the graph (index is zero based). +// MinValue, MaxValue: Limits of the X axis range. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_SetXAxisRange( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex, + GuiConst_INT32S MinValue, + GuiConst_INT32S MaxValue); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_SetYAxisRange +// ========================== +// +// Changes an Y-axis range. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of Y axis in the graph (index is zero based). +// MinValue, MaxValue: Limits of the Y axis range. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_SetYAxisRange( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U AxisIndex, + GuiConst_INT32S MinValue, + GuiConst_INT32S MaxValue); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_ResetXAxisOrigin +// ============================= +// +// Resets the X-axis origin to the original origin. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of X axis in the graph (index is zero based). Index -1 will +// reset all defined X axes. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_ResetXAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_OffsetXAxisOrigin +// ============================== +// +// Adjusts the X-axis origin. Useful for dynamic graphs with moving X-axis. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of X axis in the graph (index is zero based). Index -1 will +// offset all defined X axes. This only makes sense if all X axes +// have identical scaling. +// Offset: Amount of movement of the X axis origin. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_OffsetXAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex, + GuiConst_INT32S Offset); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_ResetYAxisOrigin +// ============================= +// +// Resets the Y-axis origin to the original origin. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of Y axis in the graph (index is zero based). Index -1 will +// reset all defined Y axes. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_ResetYAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_OffsetYAxisOrigin +// ============================== +// +// Adjusts the Y-axis origin. Useful for dynamic graphs with moving Y-axis. +// Nothing is drawn in this function. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// AxisIndex: Index of Y axis in the graph (index is zero based). Index -1 will +// offset all defined Y axes. This only makes sense if all Y axes +// have identical scaling. +// Offset: Amount of movement of the Y axis origin. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_OffsetYAxisOrigin( + GuiConst_INT8U GraphIndex, + GuiConst_INT8S AxisIndex, + GuiConst_INT32S Offset); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_Redraw +// =================== +// +// Redraws the complete graph, including background, axes, and data sets. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_Redraw( + GuiConst_INT8U GraphIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_DrawAxes +// ===================== +// +// Redraws the graph, including background and axes, but excluding data sets. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_DrawAxes( + GuiConst_INT8U GraphIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_DrawDataSet +// ======================== +// +// Redraws a data set. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_DrawDataSet( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex); +//------------------------------------------------------------------------------ + + +// ============================================================================= +// GuiLib_Graph_DrawDataPoint +// ========================== +// +// Draws a single data point in a data set. +// +// Input: +// ------ +// GraphIndex: Index of graph (index is zero based). +// DataSetIndex: Index of data set in the graph (index is zero based). +// DataIndex: Index of point in the data set (index is zero based). +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_Graph_DrawDataPoint( + GuiConst_INT8U GraphIndex, + GuiConst_INT8U DataSetIndex, + GuiConst_INT16U DataIndex); +// ----------------------------------------------------------------------------- + +#endif + + +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + +// ============================================================================= +// GuiLib_GraphicsFilter_Init +// ========================== +// +// Initializes a graphics filter call-back function. +// +// Input: +// ------ +// GraphicsFilterIndex: Index of graphics filter (index is zero based). +// FilterFuncPtr: Pointer to user-defined call-back filter function. +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +//------------------------------------------------------------------------------ +extern GuiConst_INT8U GuiLib_GraphicsFilter_Init( + GuiConst_INT8U GraphicsFilterIndex, + void (*FilterFuncPtr) + (GuiConst_INT8U *DestAddress, + GuiConst_INT16U DestLineSize, + GuiConst_INT8U *SourceAddress, + GuiConst_INT16U SourceLineSize, + GuiConst_INT16U Width, + GuiConst_INT16U Height, + GuiConst_INT32S FilterPars[10])); +#endif + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Up +// ======================== +// +// Scrolls text box contents one text line up. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Up( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Down +// ========================== +// +// Scrolls text box contents one text line down. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Down( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Home +// ========================== +// +// Scrolls text box contents to the top. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Home( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_End +// ========================= +// +// Scrolls text box contents to the bottom. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_End( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_To_Line +// ============================= +// +// Scrolls text box contents to a specific text line. +// +// Input: +// ------ +// Text box index +// Text line +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_To_Line( + GuiConst_INT8U TextBoxIndex, + GuiConst_INT16S NewLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Up_Pixel +// ============================== +// +// Scrolls text box contents one pixel position up. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Up_Pixel( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Down_Pixel +// ================================ +// +// Scrolls text box contents one pixel position down. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Down_Pixel( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Home_Pixel +// ================================ +// +// Scrolls text box contents to the top. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Home_Pixel( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_End_Pixel +// =============================== +// +// Scrolls text box contents to the bottom. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_End_Pixel( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_To_PixelLine +// ================================== +// +// Scrolls text box contents to a specific pixel position. +// +// Input: +// ------ +// Text box index +// Pixel line +// +// Output: +// ------- +// 0 = Error in parameters +// 1 = Ok +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_To_PixelLine( + GuiConst_INT8U TextBoxIndex, + GuiConst_INT16S NewPixelLine); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Get_Pos +// ============================= +// +// Returns status of topmost visible text line of text box. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX Illegal text box index +// GuiLib_TEXTBOX_SCROLL_INSIDE_BLOCK Text box scrolled mid way +// GuiLib_TEXTBOX_SCROLL_AT_HOME Text box scrolled to the top +// GuiLib_TEXTBOX_SCROLL_AT_END Text box scrolled to the bottom +// GuiLib_TEXTBOX_SCROLL_ABOVE_HOME Text box scrolled above the top +// GuiLib_TEXTBOX_SCROLL_BELOW_END Text box scrolled below the bottom +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Get_Pos( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_Get_Pos_Pixel +// =================================== +// +// Returns status of topmost visible pixel position of text box. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// GuiLib_TEXTBOX_SCROLL_ILLEGAL_NDX Illegal text box index +// GuiLib_TEXTBOX_SCROLL_INSIDE_BLOCK Text box scrolled mid way +// GuiLib_TEXTBOX_SCROLL_AT_HOME Text box scrolled to the top +// GuiLib_TEXTBOX_SCROLL_AT_END Text box scrolled to the bottom +// GuiLib_TEXTBOX_SCROLL_ABOVE_HOME Text box scrolled above the top +// GuiLib_TEXTBOX_SCROLL_BELOW_END Text box scrolled below the bottom +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_Get_Pos_Pixel( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +// ============================================================================= +// GuiLib_TextBox_Scroll_FitsInside +// ================================ +// +// Determines if a text fits completely inside a text box without scrolling. +// +// Input: +// ------ +// Text box index +// +// Output: +// ------- +// 0 = No +// 1 = Yes +// +extern GuiConst_INT8U GuiLib_TextBox_Scroll_FitsInside( + GuiConst_INT8U TextBoxIndex); +// ----------------------------------------------------------------------------- + + +#ifdef GuiConst_REMOTE_DATA +// ============================================================================= +// GuiLib_RemoteCheck +// ================== +// +// Checks if binary remote data file has correct ID. +// +// Input: +// ------ +// None +// +// Output: +// ------- +// 0 = Illegal ID +// 1 = ID accepted +// +extern GuiConst_INT8U GuiLib_RemoteCheck(void); +// ----------------------------------------------------------------------------- +#endif + + + +#ifdef GuiConst_CODEVISION_COMPILER +#pragma used- +#endif +// ----------------------------------------------------------------------------- + + +#ifdef __cplusplus /* If this is a C++ compiler, end C linkage */ +} + +#endif + +#endif +
diff -r 000000000000 -r 9140ec6aa604 easyGUIFixed/GuiLibStruct.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIFixed/GuiLibStruct.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,1139 @@ +/* ************************************************************************ */ +/* */ +/* (C)2004-2015 IBIS Solutions ApS */ +/* sales@easyGUI.com */ +/* www.easyGUI.com */ +/* */ +/* v6.0.9.005 */ +/* */ +/* ************************************************************************ */ + +#ifndef __GUILIBSTRUCT_H_ +#define __GUILIBSTRUCT_H_ + +#include "GuiConst.h" +#include "GuiLib.h" + + +#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */ +extern "C" { +#endif + +#define GuiLib_ITEM_TEXT 0 +#define GuiLib_ITEM_DOT 1 +#define GuiLib_ITEM_LINE 2 +#define GuiLib_ITEM_FRAME 3 +#define GuiLib_ITEM_BLOCK 4 +#define GuiLib_ITEM_STRUCTURE 5 +#define GuiLib_ITEM_STRUCTARRAY 6 +#define GuiLib_ITEM_CLIPRECT 7 +#define GuiLib_ITEM_VAR 8 +#define GuiLib_ITEM_FORMATTER 9 +#define GuiLib_ITEM_BITMAP 10 +#define GuiLib_ITEM_TEXTBLOCK 11 +#define GuiLib_ITEM_TOUCHAREA 12 +#define GuiLib_ITEM_VARBLOCK 13 +#define GuiLib_ITEM_ACTIVEAREA 14 +#define GuiLib_ITEM_SCROLLBOX 15 +#define GuiLib_ITEM_CIRCLE 16 +#define GuiLib_ITEM_ELLIPSE 17 +#define GuiLib_ITEM_BACKGROUND 18 +#define GuiLib_ITEM_CLEARAREA 19 +#define GuiLib_ITEM_ADVGRAPH_COORDSYST 20 +#define GuiLib_ITEM_ADVGRAPH_PIXEL 21 +#define GuiLib_ITEM_ADVGRAPH_LINE 22 +#define GuiLib_ITEM_ADVGRAPH_ARC 23 +#define GuiLib_ITEM_ADVGRAPH_RECT 24 +#define GuiLib_ITEM_ADVGRAPH_ELLIPSE 25 +#define GuiLib_ITEM_ADVGRAPH_SEGMENT 26 +#define GuiLib_ITEM_ADVGRAPH_TRIANGLE 27 +#define GuiLib_ITEM_ADVGRAPH_POLYGON 28 +#define GuiLib_ITEM_GRAPH 29 +#define GuiLib_ITEM_GRAPHICSLAYER 30 +#define GuiLib_ITEM_GRAPHICSFILTER 31 +#define GuiLib_ITEM_ROUNDEDFRAME 32 +#define GuiLib_ITEM_ROUNDEDBLOCK 33 +#define GuiLib_ITEM_QUARTERCIRCLE 34 +#define GuiLib_ITEM_QUARTERELLIPSE 35 +#define GuiLib_ITEM_CHECKBOX 36 +#define GuiLib_ITEM_RADIOBUTTON 37 +#define GuiLib_ITEM_BUTTON 38 +#define GuiLib_ITEM_EDITBOX 39 +#define GuiLib_ITEM_PANEL 40 +#define GuiLib_ITEM_MEMO 41 +#define GuiLib_ITEM_LISTBOX 42 +#define GuiLib_ITEM_COMBOBOX 43 +#define GuiLib_ITEM_SCROLLAREA 44 +#define GuiLib_ITEM_PROGRESSBAR 45 +#define GuiLib_ITEM_STRUCTCOND 46 +#define GuiLib_ITEM_POSCALLBACK 47 + +#define GuiLib_ITEMBIT_TEXT 0x00000001 +#define GuiLib_ITEMBIT_DOT 0x00000002 +#define GuiLib_ITEMBIT_LINE 0x00000004 +#define GuiLib_ITEMBIT_FRAME 0x00000008 +#define GuiLib_ITEMBIT_BLOCK 0x00000010 +#define GuiLib_ITEMBIT_STRUCTURE 0x00000020 +#define GuiLib_ITEMBIT_STRUCTARRAY 0x00000040 +#define GuiLib_ITEMBIT_CLIPRECT 0x00000080 +#define GuiLib_ITEMBIT_VAR 0x00000100 +#define GuiLib_ITEMBIT_FORMATTER 0x00000200 +#define GuiLib_ITEMBIT_BITMAP 0x00000400 +#define GuiLib_ITEMBIT_TEXTBLOCK 0x00000800 +#define GuiLib_ITEMBIT_TOUCHAREA 0x00001000 +#define GuiLib_ITEMBIT_VARBLOCK 0x00002000 +#define GuiLib_ITEMBIT_ACTIVEAREA 0x00004000 +#define GuiLib_ITEMBIT_SCROLLBOX 0x00008000 +#define GuiLib_ITEMBIT_CIRCLE 0x00010000 +#define GuiLib_ITEMBIT_ELLIPSE 0x00020000 +#define GuiLib_ITEMBIT_BACKGROUND 0x00040000 +#define GuiLib_ITEMBIT_CLEARAREA 0x00080000 +#define GuiLib_ITEMBIT_ADVGRAPH_COORDSYST 0x00100000 +#define GuiLib_ITEMBIT_ADVGRAPH_PIXEL 0x00200000 +#define GuiLib_ITEMBIT_ADVGRAPH_LINE 0x00400000 +#define GuiLib_ITEMBIT_ADVGRAPH_ARC 0x00800000 +#define GuiLib_ITEMBIT_ADVGRAPH_RECT 0x01000000 +#define GuiLib_ITEMBIT_ADVGRAPH_ELLIPSE 0x02000000 +#define GuiLib_ITEMBIT_ADVGRAPH_SEGMENT 0x04000000 +#define GuiLib_ITEMBIT_ADVGRAPH_TRIANGLE 0x08000000 +#define GuiLib_ITEMBIT_ADVGRAPH_POLYGON 0x10000000 +#define GuiLib_ITEMBIT_GRAPH 0x20000000 +#define GuiLib_ITEMBIT_GRAPHICSLAYER 0x40000000 +#define GuiLib_ITEMBIT_GRAPHICSFILTER 0x80000000 +#define GuiLib_ITEMBIT_ROUNDEDFRAME 0x00000001 +#define GuiLib_ITEMBIT_ROUNDEDBLOCK 0x00000002 +#define GuiLib_ITEMBIT_QUARTERCIRCLE 0x00000004 +#define GuiLib_ITEMBIT_QUARTERELLIPSE 0x00000008 +#define GuiLib_ITEMBIT_CHECKBOX 0x00000010 +#define GuiLib_ITEMBIT_RADIOBUTTON 0x00000020 +#define GuiLib_ITEMBIT_BUTTON 0x00000040 +#define GuiLib_ITEMBIT_EDITBOX 0x00000080 +#define GuiLib_ITEMBIT_PANEL 0x00000100 +#define GuiLib_ITEMBIT_MEMO 0x00000200 +#define GuiLib_ITEMBIT_LISTBOX 0x00000400 +#define GuiLib_ITEMBIT_COMBOBOX 0x00000800 +#define GuiLib_ITEMBIT_SCROLLAREA 0x00001000 +#define GuiLib_ITEMBIT_PROGRESSBAR 0x00002000 +#define GuiLib_ITEMBIT_STRUCTCOND 0x00004000 +#define GuiLib_ITEMBIT_POSCALLBACK 0x00008000 + +#ifdef GuiConst_ITEM_GRAPH_INUSE + #define GuiLib_GETITEMLONG +#else +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + #define GuiLib_GETITEMLONG +#endif +#endif + +#define GuiLib_TRUE 1 +#define GuiLib_FALSE 0 + +#define GuiLib_UPDATE_ALWAYS 0 +#define GuiLib_UPDATE_ON_CHANGE 1 + +#ifdef GuiConst_AUTOREDRAW_ON_CHANGE +#define GuiLib_AUTOREDRAW_MODE GuiLib_UPDATE_ON_CHANGE +#else +#define GuiLib_AUTOREDRAW_MODE GuiLib_UPDATE_ALWAYS +#endif + +#define GuiLib_COOR_ABS 0 +#define GuiLib_COOR_REL 1 +#define GuiLib_COOR_REL_1 2 +#define GuiLib_COOR_REL_2 3 + +#define GuiLib_COLOR_NOCHANGE 0 +#define GuiLib_COLOR_FORE 1 +#define GuiLib_COLOR_BACK 2 +#define GuiLib_COLOR_OTHER 3 +#define GuiLib_COLOR_INVERT 4 +#define GuiLib_COLOR_TRANSP 5 +#define GuiLib_COLOR_TABLE 6 +#define GuiLib_COLOR_VAR 7 + +#define GuiLib_MARKER_NONE 0 +#define GuiLib_MARKER_ICON 1 +#define GuiLib_MARKER_BITMAP 2 +#define GuiLib_MARKER_FIXED_BLOCK 3 +#define GuiLib_MARKER_VARIABLE_BLOCK 4 + +#define GuiLib_MEMORY_MIN 1 +#define GuiLib_MEMORY_MAX 3 +#define GuiLib_MEMORY_CNT GuiLib_MEMORY_MAX - GuiLib_MEMORY_MIN + 1 + +#define GuiLib_COL_INVERT_OFF 0 +#define GuiLib_COL_INVERT_ON 1 +#define GuiLib_COL_INVERT_IF_CURSOR 2 + +#define GuiLib_BITFLAG_INUSE 0x00000001 +#define GuiLib_BITFLAG_TRANSPARENT 0x00000002 +#define GuiLib_BITFLAG_UNDERLINE 0x00000004 +#define GuiLib_BITFLAG_PATTERNEDLINE 0x00000004 +#define GuiLib_BITFLAG_CIRCLE_IF 0x00000004 +#define GuiLib_BITFLAG_FORMATSHOWSIGN 0x00000008 +#define GuiLib_BITFLAG_FORMATZEROPADDING 0x00000010 +#define GuiLib_BITFLAG_AUTOREDRAWFIELD 0x00000020 +#define GuiLib_BITFLAG_NOTINUSE 0x00000040 +#define GuiLib_BITFLAG_TRANSLATION 0x00000080 +#define GuiLib_BITFLAG_BLINKTEXTFIELD 0x00000100 +#define GuiLib_BITFLAG_CLIPPING 0x00000200 +#define GuiLib_BITFLAG_ACTIVEAREARELCOORD 0x00000400 +#define GuiLib_BITFLAG_REVERSEWRITING 0x00000800 +#define GuiLib_BITFLAG_FORMATTRAILINGZEROS 0x00001000 +#define GuiLib_BITFLAG_FORMATTHOUSANDSSEP 0x00002000 +#define GuiLib_BITFLAG_FIELDSCROLLBOX 0x00004000 +#define GuiLib_BITFLAG_BARTRANSPARENT 0x00008000 + +#define GuiLib_SCROLL_STRUCTURE_UNDEF 0 +#define GuiLib_SCROLL_STRUCTURE_READ 1 +#define GuiLib_SCROLL_STRUCTURE_USED 2 + +#define GuiLib_GRAPH_STRUCTURE_UNDEF 0 +#define GuiLib_GRAPH_STRUCTURE_USED 1 + +#define GuiLib_GRAPH_DATATYPE_DOT 0 +#define GuiLib_GRAPH_DATATYPE_LINE 1 +#define GuiLib_GRAPH_DATATYPE_BAR 2 +#define GuiLib_GRAPH_DATATYPE_CROSS 3 +#define GuiLib_GRAPH_DATATYPE_X 4 + +#define GuiLib_GRAPHAXIS_X 0 +#define GuiLib_GRAPHAXIS_Y 1 + +#define GuiLib_GRAPHICS_LAYER_UNDEF 0 +#define GuiLib_GRAPHICS_LAYER_USED 1 + +#define GuiLib_GRAPHICS_LAYER_SIZE_COORD 0 +#define GuiLib_GRAPHICS_LAYER_SIZE_SCREEN 1 +#define GuiLib_GRAPHICS_LAYER_SIZE_CLIP 2 + +#define GuiLib_GRAPHICS_LAYER_INIT_NONE 0 +#define GuiLib_GRAPHICS_LAYER_INIT_COL 1 +#define GuiLib_GRAPHICS_LAYER_INIT_COPY 2 + +#define GuiLib_GRAPHICS_LAYER_CURRENT -3 +#define GuiLib_GRAPHICS_LAYER_PREVIOUS -2 +#define GuiLib_GRAPHICS_LAYER_BASE -1 + +#define GuiLib_GRAPHICS_FILTER_UNDEF 0 +#define GuiLib_GRAPHICS_FILTER_USED 1 + +#define GuiLib_MARKER_NONE 0 +#define GuiLib_INDICATOR_NONE 0 +#define GuiLib_MARKER_SIZE 8 + +#define GuiLib_FULL_BITMAP 0 +#define GuiLib_AREA_BITMAP 1 + +#define GuiLib_LANGUAGE_INACTIVE 9999 + +#define GuiLib_LINEFEED 0x0A + +#define GuiLib_CHECKBOX_FLAT 0 +#define GuiLib_CHECKBOX_3D 1 +#define GuiLib_CHECKBOX_ICON 2 +#define GuiLib_CHECKBOX_BITMAP 3 +#define GuiLib_CHECKBOX_NONE 4 +#define GuiLib_CHECKBOX_MARK_CHECKED 0 +#define GuiLib_CHECKBOX_MARK_CROSSED 1 +#define GuiLib_CHECKBOX_MARK_FILLED 2 +#define GuiLib_CHECKBOX_MARK_ICON 3 +#define GuiLib_CHECKBOX_MARK_BITMAP 4 + +#define GuiLib_RADIOBUTTON_FLAT 0 +#define GuiLib_RADIOBUTTON_3D 1 +#define GuiLib_RADIOBUTTON_ICON 2 +#define GuiLib_RADIOBUTTON_BITMAP 3 +#define GuiLib_RADIOBUTTON_MARK_STANDARD 0 +#define GuiLib_RADIOBUTTON_MARK_ICON 1 +#define GuiLib_RADIOBUTTON_MARK_BITMAP 2 + +#define GuiLib_BUTTON_LAYOUT_TEXT 0 +#define GuiLib_BUTTON_LAYOUT_GLYPH 1 +#define GuiLib_BUTTON_LAYOUT_GLYPHLEFT 2 +#define GuiLib_BUTTON_LAYOUT_GLYPHRIGHT 3 +#define GuiLib_BUTTON_LAYOUT_GLYPHBOTTOM 4 +#define GuiLib_BUTTON_LAYOUT_GLYPHTOP 5 + +#define GuiLib_BUTTON_BODY_FLAT 0 +#define GuiLib_BUTTON_BODY_3D 1 +#define GuiLib_BUTTON_BODY_ICON 2 +#define GuiLib_BUTTON_BODY_BITMAP 3 + +#define GuiLib_BUTTON_GLYPH_ICON 0 +#define GuiLib_BUTTON_GLYPH_BITMAP 1 + +#define GuiLib_PANEL_FLAT 0 +#define GuiLib_PANEL_3D_RAISED 1 +#define GuiLib_PANEL_3D_LOWERED 2 +#define GuiLib_PANEL_EMBOSSED_RAISED 3 +#define GuiLib_PANEL_EMBOSSED_LOWERED 4 + +#define GuiLib_AUTOREDRAW_MAX_VAR_SIZE GuiConst_AUTOREDRAW_MAX_VAR_SIZE + +//----------------------X----------------------- +#ifdef GuiConst_REMOTE_STRUCT_DATA + typedef GuiConst_PTR *GuiLib_StructPtr; +#else + #ifdef GuiConst_DISP_VAR_NOW + unsigned char displayVarNow; + #endif + #ifdef GuiConst_AVRGCC_COMPILER + typedef GuiConst_PTR *GuiLib_StructPtr; + #define ReadBytePtr(X) pgm_read_byte(X) + #define ReadByte(X) pgm_read_byte(&X) + #define ReadWordPtr(X) pgm_read_word(X) + #define ReadWord(X) pgm_read_word(&X) + #else + #if defined GuiConst_ICC_COMPILER + typedef void PrefixRom *GuiLib_StructPtr; + #elif defined GuiConst_CODEVISION_COMPILER + typedef void PrefixRom *GuiLib_StructPtr; + #elif defined GuiConst_RENESAS_COMPILER_FAR + typedef void PrefixRom *GuiLib_StructPtr; + #else + typedef GuiConst_PTR *GuiLib_StructPtr; + #endif + #endif +#endif +//----------------------X----------------------- +#ifndef ReadBytePtr +#define ReadBytePtr(X) *(X) +#endif +#ifndef ReadByte +#define ReadByte(X) X +#endif +#ifndef ReadWordPtr +#define ReadWordPtr(X) *(X) +#endif +#ifndef ReadWord +#define ReadWord(X) X +#endif + +//----------------------X----------------------- + + +//----------------------X----------------------- +typedef struct +{ + GuiConst_INT32U BitFlags; + GuiConst_INT16S BackBoxSizeX; + GuiConst_INT8U BackBoxSizeY1, BackBoxSizeY2; + GuiConst_INT8U FontIndex; + GuiConst_INT8U Alignment; + GuiConst_INT8U Ps; + GuiConst_INT8U BackBorderPixels; +} TextParRec; +//----------------------X----------------------- +#ifdef GuiConst_ITEM_STRUCTCOND_INUSE +typedef struct +{ + GuiConst_INT16U IndexCount; + GuiConst_INT16S IndexFirst[GuiConst_STRUCTCOND_MAX]; + GuiConst_INT16S IndexLast[GuiConst_STRUCTCOND_MAX]; + GuiConst_INT16U CallIndex[GuiConst_STRUCTCOND_MAX]; +} CompStructCallRec; +#else +typedef struct +{ + GuiConst_INT16U IndexCount; +} CompStructCallRec; +#endif // GuiConst_ITEM_STRUCTCOND_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE +typedef struct +{ +#ifdef GuiConst_TEXTBOX_FIELDS_ON + GuiConst_INT16S ScrollPos; + GuiConst_INT16U Lines; + GuiConst_INT8U ScrollIndex; +#endif // GuiConst_TEXTBOX_FIELDS_ON + GuiConst_INT8U HorzAlignment; + GuiConst_INT8U VertAlignment; + GuiConst_INT8S LineDist; + GuiConst_INT8U LineDistRelToFont; +} CompTextBoxRec; +#endif // GuiConst_ITEM_TEXTBLOCK_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE +typedef struct +{ + GuiConst_INT16U AreaNo; +} CompTouchRec; +#endif +//----------------------X----------------------- +#ifdef GuiConst_BITMAP_SUPPORT_ON +typedef struct +{ + GuiConst_INTCOLOR TranspColor; +} CompBitmapRec; +#endif +//----------------------X----------------------- +#ifdef GuiConst_ITEM_CHECKBOX_INUSE +typedef struct +{ + GuiConst_INT16U MarkOffsetX; + GuiConst_INT16U MarkOffsetY; + GuiConst_INT16U MarkBitmapIndex; + GuiConst_INT16U IconOffsetX; + GuiConst_INT16U IconOffsetY; + GuiConst_INT16U BitmapIndex; +#ifdef GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR BitmapTranspColor; + GuiConst_INTCOLOR MarkBitmapTranspColor; +#endif // GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR MarkColor; + GuiConst_INT16U MarkColorIndex; + GuiConst_TEXT PrefixLocate *IconPtr; + GuiConst_TEXT PrefixLocate *MarkIconPtr; + GuiConst_INT8U Style; + GuiConst_INT8U Size; + GuiConst_INT8U IconFont; + GuiConst_INT8U BitmapIsTransparent; + GuiConst_INT8U MarkStyle; + GuiConst_INT8U MarkIconFont; + GuiConst_INT8U MarkBitmapIsTransparent; +} CompCheckBoxRec; +#endif // GuiConst_ITEM_CHECKBOX_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE +typedef struct +{ + GuiConst_INT16U InterDistance; + GuiConst_INT16U MarkOffsetX; + GuiConst_INT16U MarkOffsetY; + GuiConst_INT16U MarkBitmapIndex; + GuiConst_INT16U IconOffsetX; + GuiConst_INT16U IconOffsetY; + GuiConst_INT16U BitmapIndex; +#ifdef GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR BitmapTranspColor; + GuiConst_INTCOLOR MarkBitmapTranspColor; +#endif // GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR MarkColor; + GuiConst_INT16U MarkColorIndex; + GuiConst_TEXT PrefixLocate *IconPtr; + GuiConst_TEXT PrefixLocate *MarkIconPtr; + GuiConst_INT8U Style; + GuiConst_INT8U Size; + GuiConst_INT8U Count; + GuiConst_INT8U IconFont; + GuiConst_INT8U BitmapIsTransparent; + GuiConst_INT8U MarkStyle; + GuiConst_INT8U MarkIconFont; + GuiConst_INT8U MarkBitmapIsTransparent; +} CompRadioButtonRec; +#endif // GuiConst_ITEM_RADIOBUTTON_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_BUTTON_INUSE +typedef struct +{ + GuiConst_INT8U Layout; + GuiConst_INT8U BodyStyle; + GuiConst_INT8U BodyLikeUp; + GuiConst_TEXT PrefixLocate *BodyIconPtr[3]; + GuiConst_INT8U BodyIconFont[3]; + GuiConst_INT16U BodyIconOffsetX[3]; + GuiConst_INT16U BodyIconOffsetY[3]; + GuiConst_INT16U BodyBitmapIndex[3]; +#ifdef GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR BodyBitmapTranspColor[3]; +#endif // GuiConst_BITMAP_SUPPORT_ON + GuiConst_INT8U BodyBitmapIsTransparent[3]; + GuiConst_INT8U TextLikeUp; + GuiConst_INTCOLOR TextColor[3]; + GuiConst_INT16U TextColorIndex[3]; + GuiConst_INT8U GlyphStyle; + GuiConst_INT8U GlyphLikeUp; + GuiConst_INTCOLOR GlyphIconColor[3]; + GuiConst_INT16U GlyphIconColorIndex[3]; + GuiConst_TEXT PrefixLocate *GlyphIconPtr[3]; + GuiConst_INT8U GlyphIconFont[3]; + GuiConst_INT16U GlyphIconOffsetX[3]; + GuiConst_INT16U GlyphIconOffsetY[3]; + GuiConst_INT16U GlyphBitmapIndex[3]; +#ifdef GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR GlyphBitmapTranspColor[3]; +#endif // GuiConst_BITMAP_SUPPORT_ON + GuiConst_INT8U GlyphBitmapIsTransparent[3]; + GuiConst_INT16U GlyphBitmapOffsetX[3]; + GuiConst_INT16U GlyphBitmapOffsetY[3]; +} CompButtonRec; +#endif // GuiConst_ITEM_BUTTON_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_PANEL_INUSE +typedef struct +{ + GuiConst_INT8U Style; +} CompPanelRec; +#endif +//----------------------X----------------------- +typedef union +{ + CompStructCallRec StructCall; +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE + CompTextBoxRec CompTextBox; +#endif +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE + CompTouchRec CompTouch; +#endif +#ifdef GuiConst_ITEM_CHECKBOX_INUSE + CompCheckBoxRec CompCheckBox; +#endif +#ifdef GuiConst_ITEM_RADIOBUTTON_INUSE + CompRadioButtonRec CompRadioButton; +#endif +#ifdef GuiConst_ITEM_BUTTON_INUSE + CompButtonRec CompButton; +#endif +#ifdef GuiConst_ITEM_PANEL_INUSE + CompPanelRec CompPanel; +#endif +#ifdef GuiConst_BITMAP_SUPPORT_ON + CompBitmapRec CompBitmap; +#endif +} CompUnion; +//----------------------X----------------------- +typedef struct +{ + TextParRec TextPar[3]; + void PrefixLocate *VarPtr; + GuiConst_INT16U StructToCallIndex; + GuiConst_INT16S X1, Y1, X2, Y2; + GuiConst_INT16S R1, R2; + GuiConst_INT16S RX, RY; + GuiConst_INT16S RX1, RY1, RX2, RY2; + GuiConst_INT16S DrawnX1, DrawnY1, DrawnX2, DrawnY2; + GuiConst_INT16U TextLength[3]; + GuiConst_INT16S ForeColorEnhance; + GuiConst_INT16S BackColorEnhance; + GuiConst_INT16S BarForeColorEnhance; + GuiConst_INT16S BarBackColorEnhance; +#ifdef GuiConst_REL_COORD_ORIGO_INUSE + GuiConst_INT16S CoordOrigoX, CoordOrigoY; +#endif +#ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S ClipRectX1, ClipRectY1, ClipRectX2, ClipRectY2; +#endif + GuiConst_INT16U PosCallbackNo; + GuiConst_INTCOLOR ForeColor, BackColor; + GuiConst_INTCOLOR BarForeColor, BarBackColor; + GuiConst_INT16U ForeColorIndex; + GuiConst_INT16U BackColorIndex; + GuiConst_INT16U BarForeColorIndex; + GuiConst_INT16U BarBackColorIndex; + GuiConst_TEXT PrefixGeneric *TextPtr[3]; +#ifdef GuiConst_REMOTE_TEXT_DATA + GuiConst_INT32U TextIndex[3]; +#endif +#ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT32U TextOffset[3]; +#endif + GuiConst_INT8U TextCnt; + GuiConst_INT8U Drawn; + GuiConst_INT8U ItemType; + GuiConst_INT8U FrameThickness; + GuiConst_INT8U FormatFieldWidth; + GuiConst_INT8U FormatDecimals; + GuiConst_INT8U FormatAlignment; + GuiConst_INT8U FormatFormat; +#ifdef GuiConst_CURSOR_SUPPORT_ON + GuiConst_INT8S CursorFieldNo; + GuiConst_INT8U CursorFieldLevel; +#endif +#ifdef GuiConst_BLINK_SUPPORT_ON + GuiConst_INT8S BlinkFieldNo; +#endif + GuiConst_INT8U UpdateType; + GuiConst_INT8U VarType; + GuiConst_INT8U LinePattern; +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + GuiConst_INT8U CursorScrollBoxIndex; +#endif + CompUnion CompPars; +} GuiLib_ItemRec; +typedef GuiLib_ItemRec PrefixLocate * GuiLib_ItemRecPtr; +//----------------------X----------------------- +#ifdef GuiConst_ITEM_TOUCHAREA_INUSE +typedef struct +{ + GuiConst_INT16S X1, Y1, X2, Y2; + GuiConst_INT16U IndexNo; +} GuiLib_TouchAreaRec; +#endif +//----------------------X----------------------- +typedef struct +{ + void (*PosCallbackFunc) (GuiConst_INT16U IndexNo, + GuiConst_INT16S X, + GuiConst_INT16S Y); + GuiConst_INT16U IndexNo; + GuiConst_INT8U InUse; +} GuiLib_PosCallbackRec; + +//----------------------X----------------------- +#ifdef GuiConst_BLINK_SUPPORT_ON +#ifndef GuiConst_BLINK_FIELDS_OFF +typedef struct +{ + TextParRec TextPar; + GuiConst_INT16U CharNo; + GuiConst_INT16U CharCnt; + GuiConst_INT16S X1, X2; + GuiConst_INT16S Y1, Y2; + GuiConst_INT16S BlinkBoxX1, BlinkBoxX2; + GuiConst_INT16S BlinkBoxY1, BlinkBoxY2; + GuiConst_INT16S LineCnt; + GuiConst_INT16S BlindLinesAtTop; +#ifdef GuiConst_TEXTBOX_FIELDS_ON + GuiConst_INT16S TextBoxScrollPos; +#endif + GuiConst_TEXT PrefixGeneric *TextPtr; + GuiConst_INT8U InUse; + GuiConst_INT8U Active; + GuiConst_INT8U XSize; + GuiConst_INT8U ItemType; + GuiConst_INT8U VarType; + GuiConst_INT8U FormatFieldWidth; + GuiConst_INT8U FormatDecimals; + GuiConst_INT8U FormatAlignment; + GuiConst_INT8U FormatFormat; + GuiConst_INT8U PsNumWidth; + GuiConst_INT8U PsSpace; + GuiConst_INT8U BlinkBoxRate; + GuiConst_INT8U BlinkBoxState; + GuiConst_INT8U BlinkBoxInverted; + GuiConst_INT8U BlinkBoxLast; +#ifdef GuiConst_ITEM_TEXTBLOCK_INUSE + GuiConst_INT8U YSize; + GuiConst_INT8S TextBoxLineDist; + GuiConst_INT8U TextBoxHorzAlignment; + GuiConst_INT8U TextBoxVertAlignment; +#endif +} GuiLib_BlinkTextItemRec; +#endif // GuiConst_BLINK_FIELDS_OFF +#endif // GuiConst_BLINK_SUPPORT_ON +//----------------------X----------------------- +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE +typedef struct +{ + void (*ScrollLineDataFunc) (GuiConst_INT16S LineIndex); + GuiLib_ItemRec ScrollBoxItem; + GuiConst_INT16S X1; + GuiConst_INT16S Y1; + GuiConst_INT16S ScrollTopLine; + GuiConst_INT16U LastScrollTopLine; + GuiConst_INT16S LastMarkerLine; + GuiConst_INT16U ScrollActiveLine; + GuiConst_INT16U NumberOfLines; + GuiConst_INT16U MakeUpStructIndex; + GuiConst_INT16U ScrollVisibleLines; + GuiConst_INT16S LineVerticalOffset; + GuiConst_INT16S LineOffsetX; + GuiConst_INT16S LineOffsetY; + GuiConst_INT16S LineSizeX; + GuiConst_INT16S LineSizeY; + GuiConst_INT16S LineSizeY2; + GuiConst_INT16U LineStructIndex; + GuiConst_INT16S LineStructOffsetX; + GuiConst_INT16S LineStructOffsetY; + GuiConst_INT16U MarkerStructIndex[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INT16S MarkerStartLine[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INT16S MarkerSize[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INTCOLOR LineColor; + GuiConst_INT16U LineColorIndex; + GuiConst_INTCOLOR BackColor; + GuiConst_INT16U BackColorIndex; + GuiConst_INTCOLOR MarkerColor[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INT16U MarkerColorIndex[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INT8U InUse; + GuiConst_INT8U ScrollBoxType; + GuiConst_INT8U LineColorTransparent; + GuiConst_INT8U WrapMode; + GuiConst_INT8U ScrollStartOfs; + GuiConst_INT8U ScrollMode; + GuiConst_INT8U LineMarkerCount; + GuiConst_INT8U MarkerColorTransparent[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INT8U MarkerDrawingOrder[GuiConst_SCROLLITEM_MARKERS_MAX]; + GuiConst_INT8U BarType; + GuiConst_INT8U IndicatorType; +#ifndef GuiConst_SCROLLITEM_BAR_NONE + GuiConst_INT16S BarPositionX; + GuiConst_INT16S BarPositionY; + GuiConst_INT16S BarSizeX; + GuiConst_INT16S BarSizeY; + GuiConst_INT16U BarStructIndex; + GuiConst_INT16S BarMarkerLeftOffset; + GuiConst_INT16S BarMarkerRightOffset; + GuiConst_INT16S BarMarkerTopOffset; + GuiConst_INT16S BarMarkerBottomOffset; + GuiConst_INT16U BarMarkerIconOffsetX; + GuiConst_INT16U BarMarkerIconOffsetY; + GuiConst_INT16U BarMarkerBitmapIndex; + GuiConst_INT16U BarMarkerBitmapHeight; + GuiConst_INTCOLOR BarForeColor; + GuiConst_INT16U BarForeColorIndex; + GuiConst_INTCOLOR BarBackColor; + GuiConst_INT16U BarBackColorIndex; + GuiConst_INTCOLOR BarMarkerForeColor; + GuiConst_INT16U BarMarkerForeColorIndex; + GuiConst_INTCOLOR BarMarkerBackColor; + GuiConst_INT16U BarMarkerBackColorIndex; + GuiConst_INT8U BarMarkerBitmapIsTransparent; + GuiConst_INT8U BarMode; + GuiConst_INT8U BarTransparent; + GuiConst_INT8U BarThickness; + GuiConst_INT8U BarMarkerIconFont; + GuiConst_INT8U BarMarkerTransparent; +#ifdef GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR BarMarkerBitmapTranspColor; +#endif // GuiConst_BITMAP_SUPPORT_ON + GuiConst_TEXT PrefixLocate *BarIconPtr; +#endif // GuiConst_SCROLLITEM_BAR_NONE +#ifndef GuiConst_SCROLLITEM_INDICATOR_NONE + GuiConst_INT16S IndicatorPositionX; + GuiConst_INT16S IndicatorPositionY; + GuiConst_INT16S IndicatorSizeX; + GuiConst_INT16S IndicatorSizeY; + GuiConst_INT16U IndicatorStructIndex; + GuiConst_INT16S IndicatorMarkerLeftOffset; + GuiConst_INT16S IndicatorMarkerRightOffset; + GuiConst_INT16S IndicatorMarkerTopOffset; + GuiConst_INT16S IndicatorMarkerBottomOffset; + GuiConst_INT16U IndicatorMarkerIconFont; + GuiConst_INT16U IndicatorMarkerIconOffsetX; + GuiConst_INT16U IndicatorMarkerIconOffsetY; + GuiConst_INT16U IndicatorMarkerBitmapIndex; + GuiConst_INT16S IndicatorLine; + GuiConst_INTCOLOR IndicatorForeColor; + GuiConst_INT16U IndicatorForeColorIndex; + GuiConst_INTCOLOR IndicatorBackColor; + GuiConst_INT16U IndicatorBackColorIndex; + GuiConst_INTCOLOR IndicatorMarkerForeColor; + GuiConst_INT16U IndicatorMarkerForeColorIndex; + GuiConst_INTCOLOR IndicatorMarkerBackColor; + GuiConst_INT16U IndicatorMarkerBackColorIndex; +#ifdef GuiConst_BITMAP_SUPPORT_ON + GuiConst_INTCOLOR IndicatorMarkerBitmapTranspColor; +#endif // GuiConst_BITMAP_SUPPORT_ON + GuiConst_TEXT PrefixLocate *IndicatorIconPtr; + GuiConst_INT8U IndicatorMode; + GuiConst_INT8U IndicatorTransparent; + GuiConst_INT8U IndicatorThickness; + GuiConst_INT8U IndicatorMarkerTransparent; + GuiConst_INT8U IndicatorMarkerBitmapIsTransparent; +#endif // GuiConst_SCROLLITEM_INDICATOR_NONE +#ifdef GuiConst_CURSOR_SUPPORT_ON + GuiConst_INT8U ContainsCursorFields; +#endif // GuiConst_CURSOR_SUPPORT_ON +} ScrollBoxRec; +#endif // GuiConst_ITEM_SCROLLBOX_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_GRAPH_INUSE +typedef struct +{ + GuiConst_INT32S NumbersMinValue; + GuiConst_INT32S NumbersMaxValue; + GuiConst_INT32S NumbersMinValueOrg; + GuiConst_INT32S NumbersMaxValueOrg; + GuiConst_INT32S NumbersStepMajor; + GuiConst_INT32S NumbersStepMinor; + GuiConst_INT32S Scale; + GuiConst_INT32U BitFlags; + GuiConst_INT16S Offset; + GuiConst_INT16S ArrowLength; + GuiConst_INT16S ArrowWidth; + GuiConst_INT16S TicksMajorLength; + GuiConst_INT16S TicksMajorWidth; + GuiConst_INT16S TicksMinorLength; + GuiConst_INT16S TicksMinorWidth; + GuiConst_INT16S NumbersAtEnd; + GuiConst_INT16S NumbersOffset; + GuiConst_INT8U Visible; + GuiConst_INT8U Line; + GuiConst_INT8U LineBetweenAxes; + GuiConst_INT8U LineNegative; + GuiConst_INT8U Arrow; + GuiConst_INT8U TicksMajor; + GuiConst_INT8U TicksMinor; + GuiConst_INT8U Numbers; + GuiConst_INT8U NumbersAtOrigo; + GuiConst_INT8U FormatFieldWidth; + GuiConst_INT8U FormatDecimals; + GuiConst_INT8U FormatAlignment; + GuiConst_INT8U FormatFormat; +} GraphAxisRec; +//----------------------X----------------------- +typedef struct +{ + GuiLib_GraphDataPoint *DataPtr; + GuiConst_INT16U DataSize; + GuiConst_INT16U DataFirst; + GuiConst_INT16U DataCount; + GuiConst_INT16S Width; + GuiConst_INT16S Height; + GuiConst_INT16S Thickness; + GuiConst_INTCOLOR ForeColor, BackColor; + GuiConst_INT16U ForeColorIndex; + GuiConst_INT16U BackColorIndex; + GuiConst_INT8U Visible; + GuiConst_INT8U Representation; + GuiConst_INT8U BackColorTransparent; + GuiConst_INT8U AxisIndexX, AxisIndexY; +} GraphDataSetRec; +//----------------------X----------------------- +typedef struct +{ + GuiLib_ItemRec GraphItem; + GraphAxisRec GraphAxes[GuiConst_GRAPH_AXES_MAX][2]; + GraphDataSetRec GraphDataSets[GuiConst_GRAPH_DATASETS_MAX]; + GuiConst_INT16S OrigoX, OrigoY; + GuiConst_INT16S OriginOffsetX, OriginOffsetY; + GuiConst_INTCOLOR ForeColor, BackColor; + GuiConst_INT16U ForeColorIndex; + GuiConst_INT16U BackColorIndex; + GuiConst_INT8U InUse; + GuiConst_INT8U GraphAxesCnt[2]; + GuiConst_INT8U GraphDataSetCnt; +} GraphItemRec; +#endif //GuiConst_ITEM_GRAPH_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE +typedef struct +{ + GuiConst_INT8U *BaseAddress; + GuiConst_INT16U X, Y; + GuiConst_INT16U LineSize; + GuiConst_INT16U Width, Height; + GuiConst_INT8U InUse; + GuiConst_INT8U SizeMode; + GuiConst_INT8U InitMode; +} GraphicsLayerRec; +typedef struct +{ + void (*GraphicsFilterFunc) + (GuiConst_INT8U *DestAddress, + GuiConst_INT16U DestLineSize, + GuiConst_INT8U *SourceAddress, + GuiConst_INT16U SourceLineSize, + GuiConst_INT16U Width, + GuiConst_INT16U Height, + GuiConst_INT32S FilterPars[10]); + void PrefixLocate *ParVarPtr[10]; + GuiConst_INT32S ParValueNum[10]; + GuiConst_INT16S SourceLayerIndexNo; + GuiConst_INT16S DestLayerIndexNo; + GuiConst_INT16S ContAtLayerIndexNo; + GuiConst_INT8U InUse; + GuiConst_INT8U ParVarType[10]; +} GraphicsFilterRec; +#endif // GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE +//----------------------X----------------------- +#ifdef GuiConst_BITMAP_SUPPORT_ON +typedef struct +{ + GuiConst_INT16S Index; + GuiConst_INT16S X; + GuiConst_INT16S Y; + GuiConst_INT8U InUse; +} BackgrBitmapRec; +#endif // GuiConst_BITMAP_SUPPORT_ON +#ifdef GuiConst_TEXTBOX_FIELDS_ON +typedef struct +{ + GuiConst_INT16S index; + GuiConst_INT16S pos; +} TextBoxRec; +#endif +//----------------------X----------------------- +typedef struct +{ + GuiConst_INT16S X[2 * GuiLib_MEMORY_CNT]; + GuiConst_INT16S Y[2 * GuiLib_MEMORY_CNT]; + GuiConst_INTCOLOR C[GuiLib_MEMORY_CNT]; +} ItemMemory; +//----------------------X----------------------- +#define ITEM_NONE 0 +#define ITEM_AUTOREDRAW 1 +#define ITEM_CURSOR 2 +#define ITEM_TEXTBOX 4 +typedef struct +{ + PrefixLocate GuiLib_ItemRec Item; + ItemMemory Memory; + GuiConst_INT16S Prev; + GuiConst_INT16S Next; + GuiConst_INT16S Parent; + GuiConst_INT16S Padding; + GuiConst_INT8U Valid; + GuiConst_INT8U Level; + GuiConst_INT16U ValueSize; + GuiConst_INT8U Value[GuiLib_AUTOREDRAW_MAX_VAR_SIZE]; +} AutoRedrawItems; +//----------------------X----------------------- +static GuiConst_INT8U GetItemByte(GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr); +static GuiConst_INT16S GetItemWord(GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr); +#ifdef GuiLib_COLOR_BYTESIZE_3 +static GuiConst_INT32S GetItemTriple(GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr); +#endif +#ifdef GuiLib_GETITEMLONG +static GuiConst_INT32S GetItemLong(GuiConst_INT8U *PrefixLocate*PrefixLocate ItemDataPtrPtr); +#endif +#ifdef GuiConst_BLINK_SUPPORT_ON +static void BlinkBox(void); +#endif +//----------------------X----------------------- +void AutoRedraw_Init(void); +void AutoRedraw_UpdateDrawn(GuiConst_INT16S I, PrefixLocate GuiLib_ItemRec * PrefixLocate Item); +void AutoRedraw_Delete(GuiConst_INT16S I); +void AutoRedraw_Destroy(void); +GuiConst_INT8S AutoRedraw_GetLevel(GuiConst_INT16S I); +GuiConst_INT8S AutoRedraw_ItemIsStruct(GuiConst_INT16S I); +GuiConst_INT16S AutoRedraw_DeleteStruct(GuiConst_INT16S Struct_id); +GuiConst_INT16S AutoRedraw_Reset(void); +GuiConst_INT16S AutoRedraw_GetNext(GuiConst_INT16S I); +GuiConst_INT16S AutoRedraw_Add(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level); +GuiConst_INT16S AutoRedraw_Insert(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, GuiConst_INT16S Struct, GuiConst_INT8U Level); +PrefixLocate GuiLib_ItemRec *AutoRedraw_GetItem(GuiConst_INT16S I); +PrefixLocate ItemMemory *AutoRedraw_GetItemMemory(GuiConst_INT16S I); +GuiConst_INT8S RefreshColorVariable(GuiConst_INTCOLOR *comp, GuiConst_INT16U idx); +void AutoRedraw_UpdateOnChange(GuiConst_INT16S I); +void AutoRedraw_UpdateVar(GuiConst_INT16S I); +GuiConst_INT8S AutoRedraw_VarChanged(GuiConst_INT16S I); +#ifdef GuiConst_TEXTBOX_FIELDS_ON +GuiConst_INT16S *TextBox_Scroll_GetPosRec(GuiConst_INT8U TextBoxIndex); +GuiConst_INT16S AutoRedraw_InsertTextBox(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, + GuiConst_INT16S Struct, + GuiConst_INT8U Level); +void AutoRedraw_SetAsTextBox(GuiConst_INT16S I); +GuiConst_INT16S AutoRedraw_GetTextBox(GuiConst_INT8S T, GuiConst_INT16S I); +#endif +#ifdef GuiConst_CURSOR_SUPPORT_ON +void AutoRedraw_ResetCursor(void); +GuiConst_INT16S AutoRedraw_InsertCursor(PrefixLocate GuiLib_ItemRec * PrefixLocate Item, + GuiConst_INT16S Struct, + GuiConst_INT8U Level); +void AutoRedraw_SetAsCursor(GuiConst_INT16S I); +GuiConst_INT16S AutoRedraw_IsOnlyCursor(GuiConst_INT16S I); +GuiConst_INT16S AutoRedraw_GetCursor(GuiConst_INT8S C, GuiConst_INT16S I); +GuiConst_INT8S AutoRedraw_GetCursorNumber(GuiConst_INT16S I); +GuiConst_INT16S AutoRedraw_GetFirstCursor(void); +GuiConst_INT16S AutoRedraw_GetLastCursor(void); +GuiConst_INT16S AutoRedraw_GetNextCursor(GuiConst_INT8S C); +GuiConst_INT16S AutoRedraw_GetPrevCursor(GuiConst_INT8S C); +GuiConst_INT16S AutoRedraw_CheckCursorInheritance(GuiConst_INT16S N); +#endif +//----------------------X----------------------- +typedef struct +{ + GuiConst_INT16S DrawnX1, DrawnY1, DrawnX2, DrawnY2; + GuiConst_INT16U Dummy1_16U; + GuiConst_INT16U Dummy2_16U; + GuiConst_INT16S Dummy1_16S; +#ifdef GuiConst_ARAB_CHARS_INUSE + GuiConst_INT16S ArabicCharJoiningModeIndex[GuiConst_MAX_TEXT_LEN + 2]; + GuiConst_INT8U ArabicCharJoiningMode[GuiConst_MAX_TEXT_LEN + 2]; + GuiConst_INT8U ArabicCharJoiningModeBefore; + GuiConst_INT8U ArabicCharJoiningModeAfter; +#endif + GuiConst_INT8U Drawn; + GuiConst_INT8U Dummy1_8U; + GuiConst_INT8U Dummy2_8U; + GuiConst_INT8U Dummy3_8U; +} GuiLib_GLOBAL; +typedef struct +{ + PrefixLocate GuiLib_ItemRec CurItem; + GuiLib_FontRecPtr CurFont; + GuiLib_StructPtr TopLevelStructure; + ItemMemory Memory; + PrefixLocate AutoRedrawItems AutoRedraw[GuiConst_MAX_DYNAMIC_ITEMS]; + GuiConst_INT8U PrefixLocate *ItemDataPtr; + GuiConst_INT8U *CurLayerBufPtr; + GuiConst_INT32U RefreshClock; + GuiConst_INT32U CurLayerBytes; + GuiConst_INT32U ItemTypeBit1, ItemTypeBit2; + GuiConst_INT16S AutoRedrawFirst; + GuiConst_INT16S AutoRedrawLast; + GuiConst_INT16S AutoRedrawLatest; + GuiConst_INT16S AutoRedrawNext; + GuiConst_INT16S AutoRedrawCount; + GuiConst_INT16S AutoRedrawParent; + GuiConst_INT16S AutoRedrawUpdate; + GuiConst_INT16S AutoRedrawInsertPoint; + GuiConst_INT32U CurLayerLineSize; + GuiConst_INT32U CurLayerWidth; + GuiConst_INT32U CurLayerHeight; + GuiConst_INT16S DisplayOrigoX, DisplayOrigoY; + GuiConst_INT16S LayerOrigoX, LayerOrigoY; + GuiConst_INT16S CoordOrigoX, CoordOrigoY; + GuiConst_INT16S InvertBoxX1, InvertBoxY1, InvertBoxX2, InvertBoxY2; + GuiConst_INT16S ItemX1, ItemY1; + GuiConst_INT16S ItemX2, ItemY2; + GuiConst_INT16S ItemR1, ItemR2; + GuiConst_INT16U X1VarIdx, Y1VarIdx, X2VarIdx, Y2VarIdx; + GuiConst_INT16U R1VarIdx, R2VarIdx; + GuiConst_INT16S BbX1, BbX2; + GuiConst_INT16S BbY1, BbY2; + GuiConst_INT16S DisplayLevel; + GuiConst_INT16S AutoRedrawSaveIndex; + GuiConst_INT16S ThicknessMemory; + GuiConst_INT16S FontWriteX1, FontWriteY1, FontWriteX2, FontWriteY2; + GuiConst_INT16U ColMemoryIndex[GuiLib_MEMORY_CNT]; + GuiConst_INT8U TextPsMode[GuiConst_MAX_TEXT_LEN + 1]; + GuiConst_CHAR VarNumTextStr[GuiConst_MAX_VARNUM_TEXT_LEN + 1]; + GuiConst_INT8U InvertBoxOn; + GuiConst_INT8U CommonByte0; + GuiConst_INT8U CommonByte1; + GuiConst_INT8U CommonByte2; + GuiConst_INT8U CommonByte3; + GuiConst_INT8U CommonByte4; + GuiConst_INT8U CommonByte5; + GuiConst_INT8U CommonByte6; + GuiConst_INT8U CommonByte7; + GuiConst_INT8U X1Mode, Y1Mode; + GuiConst_INT8U X2Mode, Y2Mode; + GuiConst_INT8U R1Mode, R2Mode; + GuiConst_INT8U X1MemoryRead, Y1MemoryRead; + GuiConst_INT8U X1MemoryWrite, Y1MemoryWrite; + GuiConst_INT8U X2MemoryRead, Y2MemoryRead; + GuiConst_INT8U X2MemoryWrite, Y2MemoryWrite; + GuiConst_INT8U R1MemoryRead, R2MemoryRead; + GuiConst_INT8U R1MemoryWrite, R2MemoryWrite; + GuiConst_INT8U X1VarType, Y1VarType, X2VarType, Y2VarType; + GuiConst_INT8U R1VarType, R2VarType; + GuiConst_INT8U DisplayWriting; + GuiConst_INT8U InitialDrawing; + GuiConst_INT8U DrawingLevel; + GuiConst_INT8U SwapColors; + GuiConst_INT8U BaseLayerDrawing; + GuiLib_PosCallbackRec PosCallbacks[GuiConst_POSCALLBACK_CNT]; +//----------------------X----------------------- + #ifdef GuiConst_TEXTBOX_FIELDS_ON + TextBoxRec TextBoxScrollPositions[GuiConst_TEXTBOX_FIELDS_MAX]; + #endif +//----------------------X----------------------- + #ifdef GuiConst_ITEM_TOUCHAREA_INUSE + GuiLib_TouchAreaRec TouchAreas[GuiConst_TOUCHAREA_CNT]; + GuiConst_INT32S TouchAreaCnt; + GuiConst_INT32S TouchAdjustXMeasured[4]; + GuiConst_INT32S TouchAdjustYMeasured[4]; + GuiConst_INT32S TouchAdjustXTL, TouchAdjustYTL; + GuiConst_INT32S TouchAdjustXTR, TouchAdjustYTR; + GuiConst_INT32S TouchAdjustXBL, TouchAdjustYBL; + GuiConst_INT32S TouchAdjustXBR, TouchAdjustYBR; + GuiConst_INT16S TouchAdjustXTrue[4]; + GuiConst_INT16S TouchAdjustYTrue[4]; + GuiConst_INT8U TouchAdjustInUse[4]; + GuiConst_INT8U TouchAdjustActive; + GuiConst_INT16S TouchConvertX, TouchConvertY; + #endif // GuiConst_ITEM_TOUCHAREA_INUSE +//----------------------X----------------------- + #ifdef GuiConst_FLOAT_SUPPORT_ON + GuiConst_INT16S VarExponent; + #endif +//----------------------X----------------------- + #ifdef GuiConst_CHARMODE_UNICODE + GuiConst_TEXT VarNumUnicodeTextStr[GuiConst_MAX_VARNUM_TEXT_LEN + 1]; + GuiConst_TEXT UnicodeTextBuf[GuiConst_MAX_TEXT_LEN + 1]; + #else + GuiConst_TEXT AnsiTextBuf[GuiConst_MAX_TEXT_LEN + 1]; + #endif // GuiConst_CHARMODE_UNICODE +//----------------------X----------------------- + #ifdef GuiConst_CURSOR_SUPPORT_ON + GuiConst_INT16S CursorFieldFound; + GuiConst_INT8U CursorInUse; + GuiConst_INT8U CursorActiveFieldFound; + #endif // GuiConst_CURSOR_SUPPORT_ON +//----------------------X----------------------- + #ifdef GuiConst_BLINK_SUPPORT_ON + #ifndef GuiConst_BLINK_FIELDS_OFF + GuiLib_BlinkTextItemRec BlinkTextItems[GuiConst_BLINK_FIELDS_MAX]; + #endif // GuiConst_BLINK_FIELDS_OFF + GuiConst_INT16S BlinkBoxX1, BlinkBoxY1, BlinkBoxX2, BlinkBoxY2; + GuiConst_INT16S BlinkBoxRate; + GuiConst_INT16S BlinkBoxState; + GuiConst_INT8U BlinkBoxInverted; + #endif // GuiConst_BLINK_SUPPORT_ON +//----------------------X----------------------- + #ifdef GuiConst_CLIPPING_SUPPORT_ON + GuiConst_INT16S DisplayActiveAreaX1, DisplayActiveAreaY1; + GuiConst_INT16S DisplayActiveAreaX2, DisplayActiveAreaY2; + GuiConst_INT16S ClippingX1, ClippingY1, ClippingX2, ClippingY2; + GuiConst_INT16S ActiveAreaX1, ActiveAreaY1, ActiveAreaX2, ActiveAreaY2; + GuiConst_INT8U ClippingTotal; + #endif // GuiConst_CLIPPING_SUPPORT_ON +//----------------------X----------------------- + #ifdef GuiConst_REMOTE_DATA + #ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32S CurRemoteFont; + GuiConst_INT8U GuiLib_RemoteFontBuffer[GuiConst_REMOTE_FONT_BUF_SIZE]; + #endif // GuiConst_REMOTE_FONT_DATA + #ifdef GuiConst_REMOTE_STRUCT_DATA + GuiConst_INT32U RemoteStructOffset; + GuiConst_TEXT GuiLib_RemoteStructText[GuiConst_MAX_TEXT_LEN + 1]; + GuiConst_INT8U GuiLib_RemoteStructBuffer[1]; + GuiConst_INT8U GuiLib_RemoteItemBuffer[GuiConst_REMOTE_STRUCT_BUF_SIZE]; + #endif // GuiConst_REMOTE_STRUCT_DATA + #ifdef GuiConst_REMOTE_BITMAP_DATA + GuiConst_INT32S CurRemoteBitmap; + GuiConst_INT8U GuiLib_RemoteBitmapBuffer[GuiConst_REMOTE_BITMAP_BUF_SIZE]; + #endif // GuiConst_REMOTE_BITMAP_DATA + #ifdef GuiConst_REMOTE_TEXT_DATA + GuiConst_INT32S CurRemoteText; + GuiConst_INT32S RemoteTextTableOfs; + GuiConst_INT16U RemoteTextLen; + GuiConst_TEXT GuiLib_RemoteTextBuffer[GuiConst_REMOTE_TEXT_BUF_SIZE]; + #endif // GuiConst_REMOTE_TEXT_DATA + #endif // GuiConst_REMOTE_DATA + #ifdef GuiConst_REMOTE_FONT_DATA + GuiConst_INT32U TextCharNdx[GuiConst_MAX_TEXT_LEN + 1]; + #else + GuiConst_INT8U PrefixRom *TextCharPtrAry[GuiConst_MAX_TEXT_LEN + 1]; + #endif // GuiConst_REMOTE_FONT_DATA +//----------------------X----------------------- +#ifdef GuiConst_ITEM_SCROLLBOX_INUSE + ScrollBoxRec ScrollBoxesAry[GuiConst_SCROLLITEM_BOXES_MAX]; + GuiConst_INT8U NextScrollLineReading; + GuiConst_INT8U GlobalScrollBoxIndex; +#endif // GuiConst_ITEM_SCROLLBOX_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_GRAPH_INUSE + GraphItemRec GraphAry[GuiConst_GRAPH_MAX]; + GuiConst_INT16U GlobalGraphIndex; +#endif +//----------------------X----------------------- +#ifdef GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE + GraphicsLayerRec GraphicsLayerList[GuiConst_GRAPHICS_LAYER_MAX]; + GraphicsFilterRec GraphicsFilterList[GuiConst_GRAPHICS_FILTER_MAX]; + GuiConst_INT16U GlobalGraphicsLayerIndex; + GuiConst_INT16U GlobalGraphicsFilterIndex; + GuiConst_INT16S GraphicsLayerLifo[GuiConst_GRAPHICS_LAYER_MAX]; + GuiConst_INT8U LayerBuf[GuiConst_GRAPHICS_LAYER_BUF_BYTES]; + GuiConst_INT8U GraphicsLayerLifoCnt; +#endif // GuiConst_ITEM_GRAPHICS_LAYER_FILTER_INUSE +//----------------------X----------------------- +#ifdef GuiConst_ITEM_BUTTON_INUSE + GuiConst_INTCOLOR DisabledButtonColor; + GuiConst_INT16S ButtonColorOverride; +#endif // GuiConst_ITEM_BUTTON_INUSE +//----------------------X----------------------- +#ifdef GuiConst_BITMAP_SUPPORT_ON + BackgrBitmapRec BackgrBitmapAry[GuiConst_MAX_BACKGROUND_BITMAPS]; + GuiConst_INT16U GlobalBackgrBitmapIndex; + GuiConst_INT16S BitmapWriteX2, BitmapWriteY2; + GuiConst_INT16S BitmapSizeX, BitmapSizeY; +#endif // GuiConst_BITMAP_SUPPORT_ON +} GuiLib_STATIC; + +#ifdef __cplusplus /* If this is a C++ compiler, end C linkage */ +} +#endif + +//----------------------X----------------------- +//----------------------X----------------------- + + +#endif + +/* End of File */
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiConst.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiConst.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,134 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// Ensure that this header file is only included once +#ifndef __GUICONST_H +#define __GUICONST_H + +// -------------------------- INCLUDE SECTION -------------------------- + + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + +#define GuiConst_PC_V6_0_9 + +#define GuiConst_MICRO_LITTLE_ENDIAN +#define GuiConst_CHAR char +#define GuiConst_INT8S signed char +#define GuiConst_INT8U unsigned char +#define GuiConst_INT16S signed short +#define GuiConst_INT16U unsigned short +#define GuiConst_INT32S signed int +#define GuiConst_INT32U unsigned int + +#define GuiConst_PTR void * +#define GuiConst_TEXT GuiConst_CHAR + +#define GuiConst_BITMAP_COMPRESSED + +#define GuiConst_DISPLAY_BUFFER_INTERMEDIATE +#define GuiConst_DISPLAY_BUFFER_EASYGUI +#define GuiConst_DISPLAY_LITTLE_ENDIAN +#define GuiConst_DISPLAY_WIDTH 800 +#define GuiConst_DISPLAY_HEIGHT 480 +#define GuiConst_DISPLAY_WIDTH_HW 800 +#define GuiConst_DISPLAY_HEIGHT_HW 480 +#define GuiConst_CONTROLLER_COUNT_HORZ 1 +#define GuiConst_CONTROLLER_COUNT_VERT 1 +#define GuiConst_BYTES_PR_LINE 1600 +#define GuiConst_BYTE_LINES 480 +#define GuiConst_BYTES_PR_SECTION 1600 +#define GuiConst_LINES_PR_SECTION 480 +#define GuiConst_DISPLAY_BYTES 768000 +#define GuiConst_PIXELS_PER_BYTE 1 + +#define GuiConst_BYTE_HORIZONTAL +#define GuiConst_ROTATED_OFF + +#define GuiConst_COLOR_MODE_RGB +#define GuiConst_COLOR_DEPTH_16 +#define GuiConst_COLOR_PLANES_1 +#define GuiConst_INTCOLOR GuiConst_INT16U +#define GuiConst_COLOR_SIZE 16 +#define GuiConst_COLOR_MAX 65535 +#define GuiConst_COLOR_BYTE_SIZE 2 +#define GuiConst_PIXEL_BYTE_SIZE 2 +#define GuiConst_COLORCODING_MASK 0xFFFF +#define GuiConst_COLORCODING_R_START 0 +#define GuiConst_COLORCODING_R_SIZE 5 +#define GuiConst_COLORCODING_R_MAX 31 +#define GuiConst_COLORCODING_R_MASK 0x001F +#define GuiConst_COLORCODING_G_START 5 +#define GuiConst_COLORCODING_G_SIZE 6 +#define GuiConst_COLORCODING_G_MAX 63 +#define GuiConst_COLORCODING_G_MASK 0x07E0 +#define GuiConst_COLORCODING_B_START 11 +#define GuiConst_COLORCODING_B_SIZE 5 +#define GuiConst_COLORCODING_B_MAX 31 +#define GuiConst_COLORCODING_B_MASK 0xF800 +#define GuiConst_PIXEL_OFF 65535 +#define GuiConst_PIXEL_ON 0 + + +#define GuiConst_CURSOR_SUPPORT_ON +#define GuiConst_BLINK_SUPPORT_ON +#define GuiConst_BITMAP_SUPPORT_ON +#define GuiConst_CLIPPING_SUPPORT_ON +#define GuiConst_FLOAT_SUPPORT_ON +#define GuiConst_ADV_FONTS_ON + +#define GuiConst_CHARMODE_ANSI +#define GuiConst_CURSOR_FIELDS_OFF +#define GuiConst_BLINK_FIELDS_MAX 0 +#define GuiConst_BLINK_FIELDS_OFF +#define GuiConst_BLINK_LF_COUNTS +#define GuiConst_MAX_TEXT_LEN 80 +#define GuiConst_MAX_VARNUM_TEXT_LEN 12 +#define GuiConst_MAX_PARAGRAPH_LINE_CNT 50 +#define GuiConst_MAX_DYNAMIC_ITEMS 10 +#define GuiConst_MAX_BACKGROUND_BITMAPS 10 +#define GuiConst_TOUCHAREA_CNT 0 +#define GuiConst_POSCALLBACK_CNT 5 +#define GuiConst_CURSOR_MODE_STOP_TOP +#define GuiConst_SCROLL_MODE_STOP_TOP + +#define GuiConst_DECIMAL_PERIOD + +#define GuiConst_AUTOREDRAW_MAX_VAR_SIZE 1 + +#define GuiConst_LANGUAGE_CNT 1 +#define GuiConst_LANGUAGE_ACTIVE_CNT 1 +#define GuiConst_LANGUAGE_FIRST 0 +#define GuiConst_LANGUAGE_ALL_ACTIVE +#define GuiConst_LANGUAGE_ENGLISH 0 + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +#endif + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiFont.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiFont.c Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,7593 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// -------------------------- INCLUDE SECTION -------------------------- + +#include "GuiConst.h" +#include "GuiLib.h" + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + +const GuiConst_INT8U Ch000000[16] = +{ + 0,0,0,0,0, 1,1,1,1,1, + 0,2, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000001[18] = +{ + 1,0,0,1,2, 3,4,4,3,2, + 0,5, + 3,5, + 0x12, + 0x20,0xF8,0x20 +}; +const GuiConst_INT8U Ch000002[17] = +{ + 2,2,2,1,1, 2,2,2,2,1, + 1,2, + 7,3, + 0x02, + 0x40,0x80 +}; +const GuiConst_INT8U Ch000003[16] = +{ + 2,0,0,2,2, 2,4,4,2,2, + 0,5, + 5,1, + 0x00, + 0xF8 +}; +const GuiConst_INT8U Ch000004[16] = +{ + 2,2,2,2,2, 2,2,2,2,2, + 2,1, + 8,1, + 0x00, + 0x80 +}; +const GuiConst_INT8U Ch000005[20] = +{ + 1,0,0,1,2, 3,4,4,3,2, + 0,5, + 2,7, + 0x18, + 0x20,0x50,0x88,0x50,0x20 +}; +const GuiConst_INT8U Ch000006[18] = +{ + 1,1,2,2,1, 2,2,2,2,2, + 1,2, + 2,7, + 0x78, + 0x40,0xC0,0x40 +}; +const GuiConst_INT8U Ch000007[22] = +{ + 0,0,0,0,2, 4,4,3,4,2, + 0,5, + 2,7, + 0x00, + 0x70,0x88,0x08,0x30,0x40,0x80,0xF8 +}; +const GuiConst_INT8U Ch000008[22] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 2,7, + 0x00, + 0x70,0x88,0x08,0x30,0x08,0x88,0x70 +}; +const GuiConst_INT8U Ch000009[21] = +{ + 1,0,0,1,2, 3,4,4,3,2, + 0,5, + 2,7, + 0x40, + 0x10,0x30,0x50,0x90,0xF8,0x10 +}; +const GuiConst_INT8U Ch000010[21] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 2,7, + 0x10, + 0xF8,0x80,0xF0,0x08,0x88,0x70 +}; +const GuiConst_INT8U Ch000011[21] = +{ + 1,0,0,0,2, 3,4,4,4,2, + 0,5, + 2,7, + 0x20, + 0x30,0x40,0x80,0xF0,0x88,0x70 +}; +const GuiConst_INT8U Ch000012[21] = +{ + 0,1,0,0,2, 4,4,3,1,2, + 0,5, + 2,7, + 0x04, + 0xF8,0x08,0x10,0x20,0x40,0x80 +}; +const GuiConst_INT8U Ch000013[20] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 2,7, + 0x24, + 0x70,0x88,0x70,0x88,0x70 +}; +const GuiConst_INT8U Ch000014[21] = +{ + 0,0,0,1,2, 4,4,4,3,2, + 0,5, + 2,7, + 0x04, + 0x70,0x88,0x78,0x08,0x10,0x60 +}; +const GuiConst_INT8U Ch000015[18] = +{ + 2,2,2,2,2, 2,2,2,2,2, + 2,1, + 4,5, + 0x0C, + 0x80,0x00,0x80 +}; +const GuiConst_INT8U Ch000016[20] = +{ + 1,0,0,0,2, 3,4,4,4,2, + 0,5, + 2,7, + 0x44, + 0x20,0x50,0x88,0xF8,0x88 +}; +const GuiConst_INT8U Ch000017[20] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 2,7, + 0x24, + 0xF0,0x88,0xF0,0x88,0xF0 +}; +const GuiConst_INT8U Ch000018[20] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 2,7, + 0x18, + 0x70,0x88,0x80,0x88,0x70 +}; +const GuiConst_INT8U Ch000019[18] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 2,7, + 0x3C, + 0xF0,0x88,0xF0 +}; +const GuiConst_INT8U Ch000020[20] = +{ + 0,0,0,0,2, 4,3,3,4,2, + 0,5, + 2,7, + 0x24, + 0xF8,0x80,0xF0,0x80,0xF8 +}; +const GuiConst_INT8U Ch000021[19] = +{ + 0,0,0,0,2, 4,3,3,2,2, + 0,5, + 2,7, + 0x64, + 0xF8,0x80,0xF0,0x80 +}; +const GuiConst_INT8U Ch000022[18] = +{ + 0,0,0,0,1, 0,3,3,3,2, + 0,4, + 2,7, + 0x72, + 0x80,0xE0,0x90 +}; +const GuiConst_INT8U Ch000023[17] = +{ + 0,0,0,0,0, 5,5,5,5,5, + 0,6, + 0,11, + 0xFE,0x07, + 0xFC +}; +const GuiConst_INT8U Ch000024[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000025[18] = +{ + 2,0,0,2,2, 3,5,5,3,3, + 0,6, + 3,5, + 0x12, + 0x30,0xFC,0x30 +}; +const GuiConst_INT8U Ch000026[17] = +{ + 2,2,2,1,1, 2,2,3,3,2, + 1,3, + 7,3, + 0x02, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000027[16] = +{ + 2,0,0,2,2, 3,5,5,3,3, + 0,6, + 5,1, + 0x00, + 0xFC +}; +const GuiConst_INT8U Ch000028[16] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 7,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000029[20] = +{ + 1,0,0,1,2, 4,5,5,4,3, + 0,6, + 2,7, + 0x18, + 0x30,0x78,0xCC,0x78,0x30 +}; +const GuiConst_INT8U Ch000030[19] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 2,7, + 0x70, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000031[22] = +{ + 0,0,0,0,2, 5,5,4,5,3, + 0,6, + 2,7, + 0x00, + 0x78,0xCC,0x0C,0x38,0x60,0xC0,0xFC +}; +const GuiConst_INT8U Ch000032[22] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 2,7, + 0x00, + 0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000033[20] = +{ + 1,0,0,3,2, 4,4,5,4,3, + 0,6, + 2,7, + 0x48, + 0x38,0x78,0xD8,0xFC,0x18 +}; +const GuiConst_INT8U Ch000034[21] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 2,7, + 0x10, + 0xFC,0xC0,0xF8,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000035[21] = +{ + 1,0,0,0,2, 4,4,5,5,3, + 0,6, + 2,7, + 0x20, + 0x38,0x60,0xC0,0xF8,0xCC,0x78 +}; +const GuiConst_INT8U Ch000036[20] = +{ + 0,1,2,1,2, 5,5,4,3,3, + 0,6, + 2,7, + 0x28, + 0xFC,0x0C,0x18,0x30,0x60 +}; +const GuiConst_INT8U Ch000037[20] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 2,7, + 0x24, + 0x78,0xCC,0x78,0xCC,0x78 +}; +const GuiConst_INT8U Ch000038[21] = +{ + 0,0,1,1,2, 5,5,5,4,3, + 0,6, + 2,7, + 0x04, + 0x78,0xCC,0x7C,0x0C,0x18,0x70 +}; +const GuiConst_INT8U Ch000039[18] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 3,6, + 0x2A, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000040[20] = +{ + 1,0,0,0,2, 4,5,5,5,3, + 0,6, + 2,7, + 0x48, + 0x30,0x78,0xCC,0xFC,0xCC +}; +const GuiConst_INT8U Ch000041[20] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 2,7, + 0x24, + 0xF8,0xCC,0xF8,0xCC,0xF8 +}; +const GuiConst_INT8U Ch000042[20] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 2,7, + 0x18, + 0x78,0xCC,0xC0,0xCC,0x78 +}; +const GuiConst_INT8U Ch000043[20] = +{ + 0,0,0,0,2, 4,5,5,4,3, + 0,6, + 2,7, + 0x18, + 0xF0,0xD8,0xCC,0xD8,0xF0 +}; +const GuiConst_INT8U Ch000044[20] = +{ + 0,0,0,0,2, 5,4,4,5,3, + 0,6, + 2,7, + 0x24, + 0xFC,0xC0,0xF8,0xC0,0xFC +}; +const GuiConst_INT8U Ch000045[19] = +{ + 0,0,0,0,2, 5,4,4,2,3, + 0,6, + 2,7, + 0x64, + 0xFC,0xC0,0xF8,0xC0 +}; +const GuiConst_INT8U Ch000046[18] = +{ + 0,0,0,0,2, 1,4,4,4,2, + 0,5, + 2,7, + 0x72, + 0xC0,0xF0,0xD8 +}; +const GuiConst_INT8U Ch000047[17] = +{ + 0,0,0,0,0, 6,6,6,6,6, + 0,7, + 0,11, + 0xFE,0x07, + 0xFE +}; +const GuiConst_INT8U Ch000048[16] = +{ + 0,0,0,0,0, 0,0,0,0,0, + 0,1, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000049[18] = +{ + 1,0,0,1,1, 1,2,2,1,1, + 0,3, + 4,3, + 0x00, + 0x40,0xE0,0x40 +}; +const GuiConst_INT8U Ch000050[17] = +{ + 1,1,1,0,0, 1,1,1,1,0, + 0,2, + 7,3, + 0x02, + 0x40,0x80 +}; +const GuiConst_INT8U Ch000051[16] = +{ + 1,0,0,1,1, 1,2,2,1,1, + 0,3, + 5,1, + 0x00, + 0xE0 +}; +const GuiConst_INT8U Ch000052[16] = +{ + 1,1,1,1,1, 1,1,1,1,1, + 1,1, + 8,1, + 0x00, + 0x80 +}; +const GuiConst_INT8U Ch000053[18] = +{ + 1,0,0,1,1, 1,2,2,1,1, + 0,3, + 2,7, + 0x3C, + 0x40,0xA0,0x40 +}; +const GuiConst_INT8U Ch000054[18] = +{ + 1,0,1,1,0, 1,1,1,1,1, + 0,2, + 2,7, + 0x78, + 0x40,0xC0,0x40 +}; +const GuiConst_INT8U Ch000055[21] = +{ + 1,0,0,0,1, 1,2,1,2,1, + 0,3, + 2,7, + 0x20, + 0x40,0xA0,0x20,0x40,0x80,0xE0 +}; +const GuiConst_INT8U Ch000056[22] = +{ + 1,0,0,1,1, 1,2,2,1,1, + 0,3, + 2,7, + 0x00, + 0x40,0xA0,0x20,0x40,0x20,0xA0,0x40 +}; +const GuiConst_INT8U Ch000057[20] = +{ + 1,0,0,1,1, 2,2,3,2,2, + 0,4, + 2,7, + 0x48, + 0x20,0x60,0xA0,0xF0,0x20 +}; +const GuiConst_INT8U Ch000058[21] = +{ + 0,0,0,1,1, 2,2,2,1,1, + 0,3, + 2,7, + 0x10, + 0xE0,0x80,0xC0,0x20,0xA0,0x40 +}; +const GuiConst_INT8U Ch000059[20] = +{ + 1,0,0,1,1, 2,2,2,1,1, + 0,3, + 2,7, + 0x30, + 0x60,0x80,0xC0,0xA0,0x40 +}; +const GuiConst_INT8U Ch000060[18] = +{ + 0,1,1,1,1, 2,2,1,1,1, + 0,3, + 2,7, + 0x74, + 0xE0,0x20,0x40 +}; +const GuiConst_INT8U Ch000061[20] = +{ + 1,0,0,1,1, 1,2,2,1,1, + 0,3, + 2,7, + 0x24, + 0x40,0xA0,0x40,0xA0,0x40 +}; +const GuiConst_INT8U Ch000062[20] = +{ + 1,0,0,0,1, 1,2,2,1,1, + 0,3, + 2,7, + 0x0C, + 0x40,0xA0,0x60,0x20,0xC0 +}; +const GuiConst_INT8U Ch000063[18] = +{ + 1,1,1,1,1, 1,1,1,1,1, + 1,1, + 4,5, + 0x0C, + 0x80,0x00,0x80 +}; +const GuiConst_INT8U Ch000064[19] = +{ + 1,0,0,0,1, 1,2,2,2,1, + 0,3, + 2,7, + 0x4C, + 0x40,0xA0,0xE0,0xA0 +}; +const GuiConst_INT8U Ch000065[20] = +{ + 0,0,0,0,0, 1,2,2,1,0, + 0,3, + 2,7, + 0x24, + 0xC0,0xA0,0xC0,0xA0,0xC0 +}; +const GuiConst_INT8U Ch000066[20] = +{ + 0,0,0,0,0, 1,2,2,1,0, + 0,3, + 2,7, + 0x18, + 0x40,0xA0,0x80,0xA0,0x40 +}; +const GuiConst_INT8U Ch000067[18] = +{ + 0,0,0,0,0, 1,2,2,1,0, + 0,3, + 2,7, + 0x3C, + 0xC0,0xA0,0xC0 +}; +const GuiConst_INT8U Ch000068[20] = +{ + 0,0,0,0,0, 2,1,1,2,0, + 0,3, + 2,7, + 0x24, + 0xE0,0x80,0xC0,0x80,0xE0 +}; +const GuiConst_INT8U Ch000069[19] = +{ + 0,0,0,0,0, 2,1,1,0,1, + 0,3, + 2,7, + 0x64, + 0xE0,0x80,0xC0,0x80 +}; +const GuiConst_INT8U Ch000070[18] = +{ + 0,0,0,0,1, 0,1,2,2,1, + 0,3, + 2,7, + 0x72, + 0x80,0xC0,0xA0 +}; +const GuiConst_INT8U Ch000071[17] = +{ + 0,0,0,0,0, 4,4,4,4,4, + 0,5, + 0,11, + 0xFE,0x07, + 0xF8 +}; +const GuiConst_INT8U Ch000072[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000073[18] = +{ + 2,1,0,2,2, 3,4,5,3,3, + 0,6, + 5,5, + 0x12, + 0x30,0xFC,0x30 +}; +const GuiConst_INT8U Ch000074[17] = +{ + 2,2,2,1,2, 2,2,2,3,2, + 1,3, + 10,3, + 0x02, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000075[16] = +{ + 2,1,0,2,2, 2,3,4,2,2, + 0,5, + 7,2, + 0x02, + 0xF8 +}; +const GuiConst_INT8U Ch000076[16] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 10,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000077[19] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 3,9, + 0xFC,0x00, + 0x78,0xCC,0x78 +}; +const GuiConst_INT8U Ch000078[20] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 3,9, + 0xF0,0x01, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000079[24] = +{ + 0,0,0,0,2, 5,5,3,5,3, + 0,6, + 3,9, + 0x80,0x00, + 0x78,0xCC,0x0C,0x18,0x30,0x60,0xC0,0xFC +}; +const GuiConst_INT8U Ch000080[24] = +{ + 0,0,1,0,2, 5,5,5,5,3, + 0,6, + 3,9, + 0x40,0x00, + 0x78,0xCC,0x04,0x0C,0x18,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000081[23] = +{ + 2,1,0,1,3, 5,5,6,5,3, + 0,7, + 3,9, + 0x20,0x01, + 0x0C,0x1C,0x3C,0x6C,0xCC,0xFE,0x0C +}; +const GuiConst_INT8U Ch000082[22] = +{ + 0,0,1,0,2, 5,4,5,5,3, + 0,6, + 3,9, + 0x64,0x00, + 0xFC,0xC0,0xF8,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000083[22] = +{ + 1,0,0,0,2, 4,4,5,5,3, + 0,6, + 3,9, + 0xE0,0x00, + 0x38,0x60,0xC0,0xF8,0xCC,0x78 +}; +const GuiConst_INT8U Ch000084[20] = +{ + 0,1,2,2,2, 5,5,4,3,3, + 0,6, + 3,9, + 0xB4,0x01, + 0xFC,0x0C,0x18,0x30 +}; +const GuiConst_INT8U Ch000085[21] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 3,9, + 0xCC,0x00, + 0x78,0xCC,0x78,0xCC,0x78 +}; +const GuiConst_INT8U Ch000086[22] = +{ + 0,0,0,1,2, 5,5,5,4,3, + 0,6, + 3,9, + 0x1C,0x00, + 0x78,0xCC,0x7C,0x0C,0x18,0x70 +}; +const GuiConst_INT8U Ch000087[18] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 5,7, + 0x5A, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000088[21] = +{ + 2,1,0,0,2, 3,4,5,5,3, + 0,6, + 3,9, + 0x2A,0x01, + 0x30,0x78,0xCC,0xFC,0xCC +}; +const GuiConst_INT8U Ch000089[21] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 3,9, + 0xCC,0x00, + 0xF8,0xCC,0xF8,0xCC,0xF8 +}; +const GuiConst_INT8U Ch000090[21] = +{ + 0,0,0,0,2, 5,5,4,5,3, + 0,6, + 3,9, + 0x78,0x00, + 0x78,0xCC,0xC0,0xCC,0x78 +}; +const GuiConst_INT8U Ch000091[21] = +{ + 0,0,0,0,2, 4,5,5,4,3, + 0,6, + 3,9, + 0x78,0x00, + 0xF0,0xD8,0xCC,0xD8,0xF0 +}; +const GuiConst_INT8U Ch000092[21] = +{ + 0,0,0,0,2, 4,3,3,4,2, + 0,5, + 3,9, + 0xCC,0x00, + 0xF8,0xC0,0xF0,0xC0,0xF8 +}; +const GuiConst_INT8U Ch000093[20] = +{ + 0,0,0,0,2, 4,3,3,1,2, + 0,5, + 3,9, + 0xCC,0x01, + 0xF8,0xC0,0xF0,0xC0 +}; +const GuiConst_INT8U Ch000094[19] = +{ + 0,0,0,0,2, 3,5,5,5,3, + 0,6, + 3,9, + 0xF2,0x01, + 0xC0,0xF8,0xCC +}; +const GuiConst_INT8U Ch000095[18] = +{ + 0,0,0,0,0, 8,8,8,8,8, + 0,9, + 0,14, + 0xFE,0x3F, + 0xFF,0x80 +}; +const GuiConst_INT8U Ch000096[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000097[18] = +{ + 3,1,0,3,3, 4,6,7,4,4, + 0,8, + 5,7, + 0x66, + 0x18,0xFF,0x18 +}; +const GuiConst_INT8U Ch000098[17] = +{ + 3,3,3,3,2, 3,3,3,4,4, + 2,3, + 12,4, + 0x06, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000099[16] = +{ + 3,1,0,3,3, 4,6,7,4,4, + 0,8, + 8,1, + 0x00, + 0xFF +}; +const GuiConst_INT8U Ch000100[16] = +{ + 3,3,3,3,3, 4,4,4,4,4, + 3,2, + 12,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000101[21] = +{ + 1,0,0,1,3, 6,7,7,6,4, + 0,8, + 3,11, + 0xF4,0x02, + 0x3C,0x66,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000102[20] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 3,11, + 0xF0,0x07, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000103[25] = +{ + 1,0,1,0,3, 6,7,6,7,4, + 0,8, + 3,11, + 0x08,0x02, + 0x3C,0x66,0xC3,0x03,0x0E,0x38,0x60,0xC0,0xFF +}; +const GuiConst_INT8U Ch000104[27] = +{ + 1,0,4,1,3, 6,7,7,6,4, + 0,8, + 3,11, + 0x00,0x00, + 0x3C,0x66,0xC3,0x03,0x06,0x0C,0x06,0x03,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000105[22] = +{ + 2,1,0,4,3, 5,5,7,5,4, + 0,8, + 3,11, + 0x54,0x06, + 0x1C,0x3C,0x6C,0xCC,0xFF,0x0C +}; +const GuiConst_INT8U Ch000106[24] = +{ + 0,0,1,1,3, 7,6,7,6,4, + 0,8, + 3,11, + 0xC4,0x00, + 0xFF,0xC0,0xFC,0xE6,0x03,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000107[25] = +{ + 2,0,0,1,3, 6,5,7,6,4, + 0,8, + 3,11, + 0x80,0x01, + 0x1E,0x30,0x60,0xC0,0xFC,0xE6,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000108[22] = +{ + 0,3,3,2,3, 7,7,5,4,4, + 0,8, + 3,11, + 0x54,0x05, + 0xFF,0x03,0x06,0x0C,0x18,0x30 +}; +const GuiConst_INT8U Ch000109[25] = +{ + 1,0,0,1,3, 6,7,7,6,4, + 0,8, + 3,11, + 0x08,0x01, + 0x3C,0x66,0xC3,0x66,0x3C,0x66,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000110[25] = +{ + 1,0,1,1,3, 6,7,7,5,4, + 0,8, + 3,11, + 0x18,0x00, + 0x3C,0x66,0xC3,0x67,0x3F,0x03,0x06,0x0C,0x78 +}; +const GuiConst_INT8U Ch000111[18] = +{ + 3,3,3,3,3, 4,4,4,4,4, + 3,2, + 6,8, + 0xBA, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000112[21] = +{ + 2,2,1,0,3, 5,5,6,7,4, + 0,8, + 3,11, + 0xDA,0x04, + 0x18,0x3C,0x66,0xFF,0xC3 +}; +const GuiConst_INT8U Ch000113[25] = +{ + 0,0,0,0,3, 6,7,7,6,4, + 0,8, + 3,11, + 0x08,0x01, + 0xFC,0xC6,0xC3,0xC6,0xFC,0xC6,0xC3,0xC6,0xFC +}; +const GuiConst_INT8U Ch000114[21] = +{ + 1,0,0,1,3, 7,6,6,7,4, + 0,8, + 3,11, + 0xF8,0x01, + 0x3E,0x63,0xC0,0x63,0x3E +}; +const GuiConst_INT8U Ch000115[21] = +{ + 0,0,0,0,3, 6,7,7,6,4, + 0,8, + 3,11, + 0xF8,0x01, + 0xFC,0xC6,0xC3,0xC6,0xFC +}; +const GuiConst_INT8U Ch000116[21] = +{ + 0,0,0,0,3, 7,5,5,7,4, + 0,8, + 3,11, + 0x9C,0x03, + 0xFF,0xC0,0xFC,0xC0,0xFF +}; +const GuiConst_INT8U Ch000117[20] = +{ + 0,0,0,0,3, 7,5,5,1,4, + 0,8, + 3,11, + 0x9C,0x07, + 0xFF,0xC0,0xFC,0xC0 +}; +const GuiConst_INT8U Ch000118[20] = +{ + 0,0,0,0,3, 1,5,6,6,3, + 0,7, + 3,11, + 0xC6,0x07, + 0xC0,0xF8,0xEC,0xC6 +}; +const GuiConst_INT8U Ch000119[19] = +{ + 0,0,0,0,0, 8,8,8,8,8, + 0,9, + 0,17, + 0xFE,0xFF,0x01, + 0xFF,0x80 +}; +const GuiConst_INT8U Ch000120[16] = +{ + 0,0,0,0,0, 1,1,1,1,1, + 0,2, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000121[18] = +{ + 2,0,0,2,2, 3,5,5,3,3, + 0,6, + 5,7, + 0x66, + 0x30,0xFC,0x30 +}; +const GuiConst_INT8U Ch000122[17] = +{ + 3,3,3,3,2, 3,3,3,4,4, + 2,3, + 12,4, + 0x06, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000123[16] = +{ + 3,1,0,3,3, 4,6,6,4,4, + 0,7, + 8,1, + 0x00, + 0xFE +}; +const GuiConst_INT8U Ch000124[16] = +{ + 3,3,3,3,3, 4,4,4,4,4, + 3,2, + 12,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000125[21] = +{ + 1,0,0,1,3, 5,6,6,5,3, + 0,7, + 3,11, + 0xF4,0x02, + 0x38,0x6C,0xC6,0x6C,0x38 +}; +const GuiConst_INT8U Ch000126[20] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 3,11, + 0xF0,0x07, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000127[25] = +{ + 1,0,1,0,2, 5,6,5,6,3, + 0,7, + 3,11, + 0x08,0x02, + 0x38,0x6C,0xC6,0x0C,0x18,0x30,0x60,0xC0,0xFE +}; +const GuiConst_INT8U Ch000128[27] = +{ + 1,0,3,1,2, 5,6,6,5,3, + 0,7, + 3,11, + 0x00,0x00, + 0x38,0x6C,0xC6,0x06,0x0C,0x18,0x0C,0x06,0xC6,0x6C,0x38 +}; +const GuiConst_INT8U Ch000129[22] = +{ + 3,1,0,4,3, 5,5,6,5,3, + 0,7, + 3,11, + 0xAA,0x04, + 0x1C,0x3C,0x6C,0xCC,0xFE,0x0C +}; +const GuiConst_INT8U Ch000130[24] = +{ + 0,0,1,1,3, 6,5,6,5,3, + 0,7, + 3,11, + 0xC4,0x00, + 0xFE,0xC0,0xF8,0xCC,0x06,0xC6,0x6C,0x38 +}; +const GuiConst_INT8U Ch000131[25] = +{ + 2,0,0,1,3, 5,4,6,5,3, + 0,7, + 3,11, + 0x80,0x01, + 0x1C,0x30,0x60,0xC0,0xF8,0xEC,0xC6,0x6C,0x38 +}; +const GuiConst_INT8U Ch000132[22] = +{ + 0,2,2,1,2, 6,6,4,3,3, + 0,7, + 3,11, + 0x54,0x05, + 0xFE,0x06,0x0C,0x18,0x30,0x60 +}; +const GuiConst_INT8U Ch000133[25] = +{ + 1,0,0,1,3, 5,6,6,5,3, + 0,7, + 3,11, + 0x08,0x01, + 0x38,0x6C,0xC6,0x6C,0x38,0x6C,0xC6,0x6C,0x38 +}; +const GuiConst_INT8U Ch000134[25] = +{ + 1,0,1,1,2, 5,6,6,4,3, + 0,7, + 3,11, + 0x18,0x00, + 0x38,0x6C,0xC6,0x6E,0x3E,0x06,0x0C,0x18,0x70 +}; +const GuiConst_INT8U Ch000135[18] = +{ + 3,3,3,3,3, 4,4,4,4,4, + 3,2, + 6,8, + 0xBA, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000136[22] = +{ + 2,1,0,0,3, 4,5,6,6,3, + 0,7, + 3,11, + 0xD2,0x04, + 0x38,0x7C,0x6C,0xC6,0xFE,0xC6 +}; +const GuiConst_INT8U Ch000137[25] = +{ + 0,0,0,0,2, 5,6,6,5,3, + 0,7, + 3,11, + 0x08,0x01, + 0xF8,0xCC,0xC6,0xCC,0xF8,0xCC,0xC6,0xCC,0xF8 +}; +const GuiConst_INT8U Ch000138[21] = +{ + 1,0,0,1,3, 6,5,5,6,3, + 0,7, + 3,11, + 0xF8,0x01, + 0x3C,0x66,0xC0,0x66,0x3C +}; +const GuiConst_INT8U Ch000139[21] = +{ + 0,0,0,0,2, 5,6,6,5,3, + 0,7, + 3,11, + 0xF8,0x01, + 0xF8,0xCC,0xC6,0xCC,0xF8 +}; +const GuiConst_INT8U Ch000140[21] = +{ + 0,0,0,0,3, 6,4,4,6,3, + 0,7, + 3,11, + 0x9C,0x03, + 0xFE,0xC0,0xF8,0xC0,0xFE +}; +const GuiConst_INT8U Ch000141[20] = +{ + 0,0,0,0,3, 6,4,4,1,3, + 0,7, + 3,11, + 0x9C,0x07, + 0xFE,0xC0,0xF8,0xC0 +}; +const GuiConst_INT8U Ch000142[19] = +{ + 0,0,0,0,2, 1,5,5,5,3, + 0,6, + 3,11, + 0xE6,0x07, + 0xC0,0xF8,0xCC +}; +const GuiConst_INT8U Ch000143[18] = +{ + 0,0,0,0,0, 7,7,7,7,7, + 0,8, + 0,17, + 0xFE,0xFF,0x01, + 0xFF +}; +const GuiConst_INT8U Ch000144[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000145[18] = +{ + 2,0,0,2,2, 2,4,4,2,2, + 0,5, + 5,7, + 0x66, + 0x20,0xF8,0x20 +}; +const GuiConst_INT8U Ch000146[17] = +{ + 1,1,1,1,1, 2,2,2,2,1, + 0,3, + 12,3, + 0x02, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000147[16] = +{ + 2,0,0,2,2, 2,4,4,2,2, + 0,5, + 8,1, + 0x00, + 0xF8 +}; +const GuiConst_INT8U Ch000148[16] = +{ + 1,1,1,1,1, 2,2,2,2,2, + 1,2, + 12,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000149[21] = +{ + 1,0,0,1,2, 3,4,4,3,2, + 0,5, + 3,11, + 0xF8,0x01, + 0x20,0x50,0x88,0x50,0x20 +}; +const GuiConst_INT8U Ch000150[19] = +{ + 1,2,2,2,1, 2,2,2,2,2, + 1,2, + 3,11, + 0xF8,0x07, + 0x40,0xC0,0x40 +}; +const GuiConst_INT8U Ch000151[24] = +{ + 0,1,0,0,2, 4,4,2,4,2, + 0,5, + 3,11, + 0x84,0x02, + 0x70,0x88,0x08,0x10,0x20,0x40,0x80,0xF8 +}; +const GuiConst_INT8U Ch000152[23] = +{ + 0,1,0,0,2, 4,4,4,4,2, + 0,5, + 3,11, + 0x94,0x02, + 0x70,0x88,0x08,0x30,0x08,0x88,0x70 +}; +const GuiConst_INT8U Ch000153[22] = +{ + 2,1,0,3,2, 3,3,4,3,2, + 0,5, + 3,11, + 0xB4,0x04, + 0x10,0x30,0x50,0x90,0xF8,0x10 +}; +const GuiConst_INT8U Ch000154[22] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 3,11, + 0xCC,0x02, + 0xF8,0x80,0xF0,0x08,0x88,0x70 +}; +const GuiConst_INT8U Ch000155[22] = +{ + 1,0,0,0,2, 3,3,4,4,2, + 0,5, + 3,11, + 0x94,0x03, + 0x30,0x40,0x80,0xF0,0x88,0x70 +}; +const GuiConst_INT8U Ch000156[22] = +{ + 0,2,1,0,2, 4,3,2,2,2, + 0,5, + 3,11, + 0x54,0x05, + 0xF8,0x08,0x10,0x20,0x40,0x80 +}; +const GuiConst_INT8U Ch000157[21] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 3,11, + 0x9C,0x03, + 0x70,0x88,0x70,0x88,0x70 +}; +const GuiConst_INT8U Ch000158[22] = +{ + 0,0,1,1,2, 4,4,4,3,2, + 0,5, + 3,11, + 0x9C,0x02, + 0x70,0x88,0x78,0x08,0x10,0x60 +}; +const GuiConst_INT8U Ch000159[18] = +{ + 1,1,1,1,1, 2,2,2,2,2, + 1,2, + 7,7, + 0x5A, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000160[21] = +{ + 2,0,0,0,2, 2,4,4,4,2, + 0,5, + 3,11, + 0x5A,0x06, + 0x20,0x50,0x88,0xF8,0x88 +}; +const GuiConst_INT8U Ch000161[21] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 3,11, + 0x9C,0x03, + 0xF0,0x88,0xF0,0x88,0xF0 +}; +const GuiConst_INT8U Ch000162[21] = +{ + 0,0,0,0,2, 4,3,4,4,2, + 0,5, + 3,11, + 0xF4,0x02, + 0x70,0x88,0x80,0x88,0x70 +}; +const GuiConst_INT8U Ch000163[19] = +{ + 0,0,0,0,2, 4,4,4,4,2, + 0,5, + 3,11, + 0xFC,0x03, + 0xF0,0x88,0xF0 +}; +const GuiConst_INT8U Ch000164[21] = +{ + 0,0,0,0,2, 4,3,3,4,2, + 0,5, + 3,11, + 0x9C,0x03, + 0xF8,0x80,0xF0,0x80,0xF8 +}; +const GuiConst_INT8U Ch000165[20] = +{ + 0,0,0,0,2, 4,3,3,2,2, + 0,5, + 3,11, + 0x9C,0x07, + 0xF8,0x80,0xF0,0x80 +}; +const GuiConst_INT8U Ch000166[19] = +{ + 0,0,0,0,1, 0,3,3,3,2, + 0,4, + 3,11, + 0xCE,0x07, + 0x80,0xE0,0x90 +}; +const GuiConst_INT8U Ch000167[18] = +{ + 0,0,0,0,0, 5,5,5,5,5, + 0,6, + 0,17, + 0xFE,0xFF,0x01, + 0xFC +}; +const GuiConst_INT8U Ch000168[17] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00,0x00 +}; +const GuiConst_INT8U Ch000169[27] = +{ + 3,3,1,3,3, 3,3,6,3,3, + 0,7, + 9,5, + 0x12, + 0x00,0xB0,0x01,0x00,0xF3,0xFF,0xFF,0x05,0x00,0xB0,0x01,0x00 +}; +const GuiConst_INT8U Ch000170[18] = +{ + 0,0,0,1,1, 1,1,1,1,1, + 0,2, + 15,3, + 0x00, + 0xA0,0x60,0x83 +}; +const GuiConst_INT8U Ch000171[17] = +{ + 3,3,2,3,3, 4,4,5,4,4, + 2,4, + 12,1, + 0x00, + 0xF8,0x8F +}; +const GuiConst_INT8U Ch000172[16] = +{ + 1,1,1,1,1, 1,1,1,1,1, + 1,1, + 15,1, + 0x00, + 0x0A +}; +const GuiConst_INT8U Ch000173[60] = +{ + 1,0,0,1,3, 5,5,6,5,3, + 0,7, + 5,11, + 0x00,0x00, + 0x00,0xFC,0x0C,0x00,0xA0,0x05,0x85,0x00,0xB1,0x00,0xB0,0x01, + 0xA3,0x00,0xA0,0x03,0x85,0x00,0x80,0x03,0x85,0x00,0x80,0x05, + 0x85,0x00,0x80,0x03,0xA3,0x00,0xA0,0x03,0xB1,0x00,0xB0,0x01, + 0xA0,0x05,0x85,0x00,0x00,0xFC,0x0C,0x00 +}; +const GuiConst_INT8U Ch000174[26] = +{ + 3,1,4,4,2, 4,4,4,4,3, + 1,4, + 5,11, + 0xE0,0x07, + 0x00,0x71,0x00,0x8A,0x80,0x86,0x17,0x83,0x00,0x83 +}; +const GuiConst_INT8U Ch000175[60] = +{ + 1,1,2,0,3, 5,6,5,6,3, + 0,7, + 5,11, + 0x00,0x00, + 0x00,0xFC,0x3F,0x00,0xA0,0x03,0xB1,0x00,0x81,0x00,0x80,0x03, + 0x00,0x00,0x80,0x05,0x00,0x00,0xC1,0x01,0x00,0x00,0x8A,0x00, + 0x00,0x80,0x0C,0x00,0x00,0xC5,0x00,0x00,0x50,0x1D,0x00,0x00, + 0xD1,0x03,0x00,0x00,0xF5,0xFF,0xFF,0x05 +}; +const GuiConst_INT8U Ch000176[60] = +{ + 1,1,2,1,3, 5,5,6,5,3, + 0,7, + 5,11, + 0x00,0x00, + 0x00,0xFC,0x0A,0x00,0xA0,0x03,0x85,0x00,0xB1,0x00,0xB1,0x00, + 0x00,0x00,0x81,0x00,0x00,0x00,0x38,0x00,0x00,0xD1,0x8F,0x00, + 0x00,0x00,0xD1,0x03,0x00,0x00,0x80,0x05,0xA3,0x00,0xA0,0x03, + 0xC0,0x03,0xC3,0x00,0x10,0xFD,0x0C,0x00 +}; +const GuiConst_INT8U Ch000177[52] = +{ + 4,3,1,5,4, 5,5,6,5,4, + 1,7, + 5,11, + 0x00,0x06, + 0x00,0x00,0x1B,0x00,0x00,0x50,0x1D,0x00,0x00,0xA1,0x1C,0x00, + 0x00,0x37,0x1B,0x00,0x30,0x08,0x1B,0x00,0x80,0x01,0x1B,0x00, + 0x55,0x00,0x1B,0x00,0xFA,0xFF,0xFF,0x03,0x00,0x00,0x1B,0x00 +}; +const GuiConst_INT8U Ch000178[60] = +{ + 1,1,1,1,3, 5,4,6,5,3, + 0,7, + 5,11, + 0x00,0x00, + 0x50,0xFF,0xCF,0x00,0x80,0x03,0x00,0x00,0x80,0x01,0x00,0x00, + 0xA0,0x00,0x00,0x00,0xC0,0xFF,0x1D,0x00,0xD1,0x03,0xC3,0x00, + 0x00,0x00,0xA0,0x03,0x00,0x00,0x80,0x05,0xA3,0x00,0xA0,0x03, + 0xC0,0x03,0xA5,0x00,0x10,0xFD,0x0C,0x00 +}; +const GuiConst_INT8U Ch000179[60] = +{ + 1,0,0,1,3, 5,5,6,5,3, + 0,7, + 5,11, + 0x00,0x00, + 0x00,0xFA,0x1D,0x00,0x80,0x05,0xA5,0x00,0x81,0x00,0xB0,0x01, + 0x83,0x00,0x00,0x00,0x65,0xFA,0x1D,0x00,0xF5,0x03,0xC3,0x00, + 0xA5,0x00,0xA0,0x03,0x83,0x00,0x80,0x05,0x81,0x00,0xA0,0x03, + 0xA0,0x05,0xC3,0x00,0x00,0xFA,0x1D,0x00 +}; +const GuiConst_INT8U Ch000180[60] = +{ + 0,3,2,2,3, 6,5,3,2,3, + 0,7, + 5,11, + 0x00,0x00, + 0xF5,0xFF,0xFF,0x05,0x00,0x00,0xD3,0x01,0x00,0x00,0x5A,0x00, + 0x00,0x30,0x0C,0x00,0x00,0xA0,0x05,0x00,0x00,0xB1,0x00,0x00, + 0x00,0x85,0x00,0x00,0x00,0x5A,0x00,0x00,0x00,0x1B,0x00,0x00, + 0x10,0x0B,0x00,0x00,0x10,0x08,0x00,0x00 +}; +const GuiConst_INT8U Ch000181[52] = +{ + 1,1,0,1,3, 5,5,5,5,3, + 0,7, + 5,11, + 0x08,0x01, + 0x00,0xFC,0x0C,0x00,0xA0,0x05,0x85,0x00,0xA0,0x00,0xB1,0x00, + 0xA0,0x05,0xA5,0x00,0x00,0xFA,0x0A,0x00,0xC1,0x01,0xC3,0x00, + 0x85,0x00,0x80,0x03,0xD1,0x03,0xD3,0x01,0x10,0xFD,0x1D,0x00 +}; +const GuiConst_INT8U Ch000182[60] = +{ + 1,0,1,1,3, 5,6,6,5,3, + 0,7, + 5,11, + 0x00,0x00, + 0x10,0xFD,0x0A,0x00,0xC0,0x05,0x83,0x00,0xA3,0x00,0x80,0x01, + 0x85,0x00,0x80,0x03,0xA3,0x00,0xA0,0x05,0xC0,0x03,0xF3,0x05, + 0x10,0xFD,0x88,0x03,0x00,0x00,0x80,0x03,0xB1,0x00,0xA0,0x00, + 0xC0,0x03,0x85,0x00,0x10,0xFD,0x0A,0x00 +}; +const GuiConst_INT8U Ch000183[18] = +{ + 1,1,1,1,1, 1,1,1,1,1, + 1,1, + 8,8, + 0x7C, + 0x0A,0x00,0x0A +}; +const GuiConst_INT8U Ch000184[60] = +{ + 4,3,2,1,3, 5,5,6,7,4, + 0,8, + 5,11, + 0x00,0x00, + 0x00,0x00,0x3A,0x00,0x00,0x10,0x8D,0x00,0x00,0x50,0x74,0x00, + 0x00,0x80,0x82,0x01,0x00,0x81,0x80,0x03,0x00,0x35,0x30,0x08, + 0x00,0x07,0x10,0x0B,0x10,0xFD,0xFF,0x1D,0x50,0x05,0x00,0x58, + 0x80,0x01,0x00,0x85,0x81,0x00,0x00,0xC3 +}; +const GuiConst_INT8U Ch000185[52] = +{ + 1,1,1,1,3, 6,6,6,6,4, + 0,8, + 5,11, + 0x08,0x01, + 0xD1,0xFF,0xCF,0x00,0xB1,0x00,0x50,0x0A,0xB1,0x00,0x00,0x0A, + 0xB1,0x00,0x50,0x08,0xD1,0xFF,0xAF,0x00,0xB1,0x00,0x30,0x0C, + 0xB1,0x00,0x00,0x3A,0xB1,0x00,0x10,0x0B,0xD1,0xFF,0xFF,0x03 +}; +const GuiConst_INT8U Ch000186[66] = +{ + 2,1,1,2,4, 7,7,7,7,4, + 0,9, + 5,11, + 0x20,0x00, + 0x00,0xC0,0xFF,0x08,0x00,0x10,0x1C,0x00,0x88,0x00,0xA0,0x03, + 0x00,0xB0,0x01,0xB1,0x00,0x00,0x00,0x00,0xA3,0x00,0x00,0x00, + 0x00,0x81,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x80,0x03,0x80, + 0x03,0x00,0xA0,0x00,0x10,0x1C,0x00,0x5A,0x00,0x00,0xD1,0xFF, + 0x05,0x00 +}; +const GuiConst_INT8U Ch000187[52] = +{ + 1,1,1,1,4, 6,7,7,6,5, + 1,8, + 5,11, + 0x60,0x00, + 0xFC,0xFF,0x3F,0x00,0x0A,0x00,0xC0,0x03,0x0A,0x00,0x30,0x0A, + 0x0A,0x00,0x00,0x1B,0x0A,0x00,0x00,0x3A,0x0A,0x00,0x00,0x1B, + 0x0A,0x00,0x30,0x0A,0x0A,0x00,0xC0,0x03,0xFC,0xFF,0x3F,0x00 +}; +const GuiConst_INT8U Ch000188[36] = +{ + 1,1,1,1,3, 6,5,6,7,4, + 0,8, + 5,11, + 0x9C,0x03, + 0xD1,0xFF,0xFF,0x3F,0xB1,0x00,0x00,0x00,0xD1,0xFF,0xFF,0x0C, + 0xB1,0x00,0x00,0x00,0xD1,0xFF,0xFF,0x5F +}; +const GuiConst_INT8U Ch000189[28] = +{ + 1,1,1,1,3, 6,4,5,1,4, + 1,6, + 5,11, + 0x9C,0x07, + 0xFC,0xFF,0xCF,0x1B,0x00,0x00,0xFC,0xFF,0x3F,0x1B,0x00,0x00 +}; +const GuiConst_INT8U Ch000190[31] = +{ + 1,1,1,1,2, 1,5,5,5,3, + 0,6, + 5,11, + 0x86,0x07, + 0xB1,0x00,0x00,0xB1,0xF4,0x3F,0xD1,0x3F,0xA3,0xD1,0x03,0xA0, + 0xB1,0x00,0xA0 +}; +const GuiConst_INT8U Ch000191[26] = +{ + 0,0,0,0,0, 17,17,17,17,17, + 0,18, + 0,20, + 0xFE,0xFF,0x0F, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF +}; +const GuiConst_INT8U Ch000192[16] = +{ + 0,0,0,0,0, 3,3,3,3,3, + 0,4, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000193[18] = +{ + 4,2,1,4,4, 5,7,8,5,5, + 1,8, + 7,8, + 0xD6, + 0x18,0xFF,0x18 +}; +const GuiConst_INT8U Ch000194[19] = +{ + 3,3,2,2,3, 4,4,5,4,4, + 2,4, + 13,5, + 0x04, + 0x60,0xF0,0x60,0xC0 +}; +const GuiConst_INT8U Ch000195[16] = +{ + 4,1,1,4,4, 5,8,8,5,5, + 1,8, + 10,2, + 0x02, + 0xFF +}; +const GuiConst_INT8U Ch000196[18] = +{ + 3,3,3,2,3, 4,4,4,5,4, + 2,4, + 13,4, + 0x04, + 0x60,0xF0,0x60 +}; +const GuiConst_INT8U Ch000197[34] = +{ + 2,0,0,2,4, 6,8,8,6,4, + 0,9, + 4,13, + 0xE0,0x01, + 0x3E,0x00,0x7F,0x00,0x63,0x00,0xE3,0x80,0xC1,0x80,0xE3,0x80, + 0x63,0x00,0x7F,0x00,0x3E,0x00 +}; +const GuiConst_INT8U Ch000198[22] = +{ + 3,1,4,4,3, 5,5,5,5,3, + 1,5, + 4,13, + 0xC0,0x1F, + 0x18,0x38,0x78,0xF8,0xD8,0x18 +}; +const GuiConst_INT8U Ch000199[38] = +{ + 1,0,1,0,4, 7,8,7,8,4, + 0,9, + 4,13, + 0x10,0x10, + 0x3E,0x00,0x7F,0x00,0xE3,0x80,0x01,0x80,0x03,0x80,0x0F,0x00, + 0x3E,0x00,0x78,0x00,0xE0,0x00,0xC0,0x00,0xFF,0x80 +}; +const GuiConst_INT8U Ch000200[40] = +{ + 1,0,1,1,4, 7,8,8,7,4, + 0,9, + 4,13, + 0x40,0x00, + 0x3E,0x00,0x7F,0x00,0xE3,0x80,0xC1,0x80,0x03,0x80,0x0F,0x00, + 0x03,0x80,0x01,0x80,0xC1,0x80,0xE3,0x80,0x7F,0x00,0x3E,0x00 +}; +const GuiConst_INT8U Ch000201[36] = +{ + 3,1,0,5,4, 6,6,8,6,4, + 0,9, + 4,13, + 0x00,0x1A, + 0x0E,0x00,0x1E,0x00,0x3E,0x00,0x36,0x00,0x76,0x00,0x66,0x00, + 0xE6,0x00,0xC6,0x00,0xFF,0x80,0x06,0x00 +}; +const GuiConst_INT8U Ch000202[36] = +{ + 0,0,0,1,4, 8,6,8,7,4, + 0,9, + 4,13, + 0x0A,0x01, + 0xFF,0x80,0xC0,0x00,0xDE,0x00,0xFF,0x00,0xE3,0x80,0x01,0x80, + 0xC1,0x80,0xE3,0x80,0x7F,0x00,0x3E,0x00 +}; +const GuiConst_INT8U Ch000203[38] = +{ + 2,0,0,1,4, 7,6,8,7,4, + 0,9, + 4,13, + 0x00,0x03, + 0x1F,0x00,0x3F,0x00,0x70,0x00,0xE0,0x00,0xDE,0x00,0xFF,0x00, + 0xE3,0x80,0xC1,0x80,0xE3,0x80,0x7F,0x00,0x3E,0x00 +}; +const GuiConst_INT8U Ch000204[40] = +{ + 0,4,4,2,4, 8,8,6,5,4, + 0,9, + 4,13, + 0x02,0x00, + 0xFF,0x80,0x01,0x80,0x03,0x80,0x03,0x00,0x07,0x00,0x06,0x00, + 0x0E,0x00,0x0C,0x00,0x1C,0x00,0x18,0x00,0x38,0x00,0x30,0x00 +}; +const GuiConst_INT8U Ch000205[42] = +{ + 1,0,0,1,4, 7,8,8,7,4, + 0,9, + 4,13, + 0x00,0x00, + 0x3E,0x00,0x7F,0x00,0xE3,0x80,0xC1,0x80,0xE3,0x80,0x7F,0x00, + 0x3E,0x00,0x7F,0x00,0xE3,0x80,0xC1,0x80,0xE3,0x80,0x7F,0x00, + 0x3E,0x00 +}; +const GuiConst_INT8U Ch000206[38] = +{ + 1,0,0,1,4, 7,8,8,6,4, + 0,9, + 4,13, + 0x30,0x00, + 0x3E,0x00,0x7F,0x00,0xE3,0x80,0xC1,0x80,0xE3,0x80,0x7F,0x80, + 0x3D,0x80,0x03,0x80,0x07,0x00,0x7E,0x00,0x7C,0x00 +}; +const GuiConst_INT8U Ch000207[23] = +{ + 3,2,3,2,3, 4,5,4,5,4, + 2,4, + 6,11, + 0x64,0x02, + 0x60,0xF0,0x60,0x00,0x60,0xF0,0x60 +}; +const GuiConst_INT8U Ch000208[32] = +{ + 2,2,1,0,4, 6,6,7,8,4, + 0,9, + 4,13, + 0x26,0x18, + 0x1C,0x00,0x3E,0x00,0x36,0x00,0x77,0x00,0x63,0x00,0x7F,0x00, + 0xFF,0x80,0xC1,0x80 +}; +const GuiConst_INT8U Ch000209[38] = +{ + 0,0,0,0,4, 7,8,8,7,4, + 0,9, + 4,13, + 0x40,0x02, + 0xFE,0x00,0xFF,0x00,0xC3,0x80,0xC1,0x80,0xC3,0x80,0xFF,0x00, + 0xC3,0x80,0xC1,0x80,0xC3,0x80,0xFF,0x00,0xFE,0x00 +}; +const GuiConst_INT8U Ch000210[34] = +{ + 1,0,0,1,4, 7,8,8,7,4, + 0,9, + 4,13, + 0xE0,0x01, + 0x3E,0x00,0x7F,0x00,0xE3,0x80,0xC1,0x80,0xC0,0x00,0xC1,0x80, + 0xE3,0x80,0x7F,0x00,0x3E,0x00 +}; +const GuiConst_INT8U Ch000211[30] = +{ + 0,0,0,0,4, 7,8,8,7,4, + 0,9, + 4,13, + 0xF0,0x03, + 0xFE,0x00,0xFF,0x00,0xC3,0x80,0xC1,0x80,0xC3,0x80,0xFF,0x00, + 0xFE,0x00 +}; +const GuiConst_INT8U Ch000212[26] = +{ + 0,0,0,0,4, 8,6,6,8,4, + 0,9, + 4,13, + 0x5A,0x17, + 0xFF,0x80,0xC0,0x00,0xFE,0x00,0xC0,0x00,0xFF,0x80 +}; +const GuiConst_INT8U Ch000213[24] = +{ + 0,0,0,0,4, 8,6,6,1,4, + 0,9, + 4,13, + 0x5A,0x1F, + 0xFF,0x80,0xC0,0x00,0xFE,0x00,0xC0,0x00 +}; +const GuiConst_INT8U Ch000214[21] = +{ + 0,0,0,0,3, 1,6,7,7,4, + 0,8, + 4,13, + 0x86,0x1F, + 0xC0,0xDC,0xFE,0xE7,0xC3 +}; +const GuiConst_INT8U Ch000215[19] = +{ + 0,0,0,0,0, 10,10,10,10,10, + 0,11, + 0,21, + 0xFE,0xFF,0x1F, + 0xFF,0xE0 +}; +const GuiConst_INT8U Ch000216[17] = +{ + 0,0,0,0,0, 3,3,3,3,3, + 0,4, + 0,0, + 0x00, + 0x00,0x00 +}; +const GuiConst_INT8U Ch000217[34] = +{ + 5,2,0,5,5, 6,9,11,6,6, + 0,12, + 10,10, + 0xAE,0x03, + 0x00,0x00,0xF0,0x0F,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x00,0x00,0xF0,0x0F,0x00,0x00 +}; +const GuiConst_INT8U Ch000218[23] = +{ + 1,1,1,1,1, 1,1,1,2,1, + 0,3, + 21,5, + 0x02, + 0xF0,0x0F,0x00,0x0F,0x50,0x09,0x93,0x00 +}; +const GuiConst_INT8U Ch000219[18] = +{ + 4,4,2,4,4, 4,4,6,4,4, + 2,5, + 16,2, + 0x02, + 0xFF,0xFF,0x0F +}; +const GuiConst_INT8U Ch000220[16] = +{ + 0,0,0,0,0, 1,1,1,1,1, + 0,2, + 21,2, + 0x02, + 0xFF +}; +const GuiConst_INT8U Ch000221[82] = +{ + 1,0,0,1,4, 7,8,8,7,4, + 0,9, + 6,17, + 0x80,0x07,0x00, + 0x00,0xB5,0xBF,0x05,0x00,0x50,0xFF,0xFF,0x5F,0x00,0xD0,0x5F, + 0x50,0xDF,0x00,0xF5,0x07,0x00,0xF7,0x05,0xF8,0x04,0x00,0xF4, + 0x08,0xF9,0x03,0x00,0xF3,0x09,0xFF,0x00,0x00,0xF0,0x0F,0xFA, + 0x03,0x00,0xF3,0x09,0xF8,0x04,0x00,0xF4,0x08,0xF5,0x07,0x00, + 0xF7,0x05,0xF3,0x5F,0x50,0xDF,0x00,0x50,0xFF,0xFF,0x5F,0x00, + 0x00,0xB4,0xBF,0x05,0x00 +}; +const GuiConst_INT8U Ch000222[38] = +{ + 5,2,5,5,4, 6,6,6,6,4, + 2,5, + 6,17, + 0x80,0xFF,0x01, + 0x00,0x60,0x0F,0x00,0xF3,0x0F,0x30,0xFD,0x0F,0xD4,0xFF,0x0F, + 0xFF,0xF5,0x0F,0x39,0xF0,0x0F,0x00,0xF0,0x0F +}; +const GuiConst_INT8U Ch000223[102] = +{ + 1,0,3,0,4, 7,8,6,8,4, + 0,9, + 6,17, + 0x00,0x00,0x00, + 0x00,0xB6,0xDF,0x07,0x00,0xA0,0xFF,0xFF,0xAF,0x00,0xF5,0x3A, + 0x30,0xFD,0x06,0xF9,0x04,0x00,0xF4,0x0B,0xFF,0x00,0x00,0xF0, + 0x0F,0x00,0x00,0x00,0xF0,0x0F,0x00,0x00,0x00,0xF5,0x08,0x00, + 0x00,0x00,0xFB,0x05,0x00,0x00,0x70,0x9F,0x00,0x00,0x00,0xF5, + 0x0A,0x00,0x00,0x50,0xDF,0x03,0x00,0x00,0xF4,0x3D,0x00,0x00, + 0x30,0xDD,0x03,0x00,0x00,0xA0,0x3D,0x00,0x00,0x00,0xF5,0x04, + 0x00,0x00,0x00,0xFA,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF, + 0x0F +}; +const GuiConst_INT8U Ch000224[102] = +{ + 1,1,1,1,4, 7,8,8,7,4, + 0,9, + 6,17, + 0x00,0x00,0x00, + 0x00,0xB6,0xDF,0x07,0x00,0xA0,0xFF,0xFF,0xAF,0x00,0xF6,0x3A, + 0x30,0xFA,0x07,0xFB,0x03,0x00,0xF3,0x0D,0x00,0x00,0x00,0xF0, + 0x0F,0x00,0x00,0x00,0xF3,0x0A,0x00,0x00,0x50,0xFD,0x04,0x00, + 0xF0,0xFF,0x4F,0x00,0x00,0xF0,0xFF,0xDF,0x00,0x00,0x30,0x40, + 0xFD,0x07,0x00,0x00,0x00,0xF4,0x0B,0x00,0x00,0x00,0xF0,0x0F, + 0xFF,0x00,0x00,0xF0,0x0F,0xF9,0x05,0x00,0xF5,0x09,0xF5,0x3D, + 0x30,0xFD,0x05,0x80,0xFF,0xFF,0x7F,0x00,0x00,0xD6,0xBF,0x06, + 0x00 +}; +const GuiConst_INT8U Ch000225[82] = +{ + 5,2,0,6,4, 7,7,9,7,5, + 0,10, + 6,17, + 0x00,0xD0,0x01, + 0x00,0x00,0x60,0xFF,0x00,0x00,0x00,0xD3,0xFF,0x00,0x00,0x00, + 0xF7,0xFF,0x00,0x00,0x30,0xBF,0xFF,0x00,0x00,0x70,0x5F,0xFF, + 0x00,0x00,0xF3,0x0B,0xFF,0x00,0x00,0xF7,0x05,0xFF,0x00,0x30, + 0xBF,0x00,0xFF,0x00,0x90,0x4F,0x00,0xFF,0x00,0xF3,0x09,0x00, + 0xFF,0x00,0xF9,0x03,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x00,0x00,0x00,0xFF,0x00 +}; +const GuiConst_INT8U Ch000226[92] = +{ + 1,0,1,1,4, 7,7,8,7,4, + 0,9, + 6,17, + 0x10,0x08,0x00, + 0xF0,0xFF,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFF,0x00,0xF3,0x09, + 0x00,0x00,0x00,0xF6,0x06,0x00,0x00,0x00,0xF8,0x87,0xDF,0x06, + 0x00,0xF9,0xFF,0xFF,0x8F,0x00,0xFD,0x3A,0x50,0xFD,0x05,0x64, + 0x00,0x00,0xF6,0x08,0x00,0x00,0x00,0xF3,0x0D,0x00,0x00,0x00, + 0xF0,0x0F,0xFF,0x00,0x00,0xF3,0x0A,0xF9,0x05,0x00,0xF6,0x06, + 0xF5,0x3D,0x50,0xFF,0x03,0x90,0xFF,0xFF,0x6F,0x00,0x00,0xD6, + 0xBF,0x05,0x00 +}; +const GuiConst_INT8U Ch000227[102] = +{ + 2,0,0,1,4, 7,7,8,7,4, + 0,9, + 6,17, + 0x00,0x00,0x00, + 0x00,0x83,0xFF,0x38,0x00,0x30,0xFD,0xFF,0xDF,0x03,0xB0,0x5F, + 0x30,0xFA,0x07,0xF4,0x07,0x00,0xF3,0x0D,0xF6,0x03,0x00,0x00, + 0x00,0xF9,0x00,0x00,0x00,0x00,0x9D,0x60,0xFD,0x07,0x00,0x9F, + 0xF9,0xFF,0xAF,0x00,0xFF,0x3D,0x30,0xFD,0x05,0xFF,0x05,0x00, + 0xF5,0x09,0xFF,0x00,0x00,0xF0,0x0F,0xFA,0x00,0x00,0xF0,0x0F, + 0xF8,0x03,0x00,0xF0,0x0D,0xF5,0x06,0x00,0xF5,0x08,0xD0,0x5F, + 0x30,0xFD,0x05,0x50,0xFF,0xFF,0x9F,0x00,0x00,0xA4,0xDF,0x06, + 0x00 +}; +const GuiConst_INT8U Ch000228[102] = +{ + 0,4,3,2,4, 8,6,5,3,4, + 0,9, + 6,17, + 0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x00, + 0x00,0xF4,0x05,0x00,0x00,0x00,0xBD,0x00,0x00,0x00,0x60,0x4F, + 0x00,0x00,0x00,0xD0,0x0B,0x00,0x00,0x00,0xF6,0x05,0x00,0x00, + 0x00,0xFB,0x00,0x00,0x00,0x40,0x8F,0x00,0x00,0x00,0x70,0x5F, + 0x00,0x00,0x00,0xD0,0x0F,0x00,0x00,0x00,0xF3,0x0A,0x00,0x00, + 0x00,0xF5,0x06,0x00,0x00,0x00,0xF7,0x05,0x00,0x00,0x00,0xF9, + 0x03,0x00,0x00,0x00,0xFD,0x03,0x00,0x00,0x00,0xFF,0x00,0x00, + 0x00 +}; +const GuiConst_INT8U Ch000229[97] = +{ + 1,0,0,1,4, 7,8,8,7,4, + 0,9, + 6,17, + 0x00,0x10,0x00, + 0x00,0xD7,0xDF,0x07,0x00,0xA0,0xFF,0xFF,0xAF,0x00,0xF7,0x3A, + 0x30,0xFA,0x07,0xFD,0x03,0x00,0xF3,0x0D,0xFF,0x00,0x00,0xF0, + 0x0F,0xFB,0x03,0x00,0xF3,0x0B,0xF6,0x3A,0x30,0xFA,0x06,0x60, + 0xFD,0xFF,0x6D,0x00,0x60,0xFF,0xFF,0x6F,0x00,0xF6,0x3D,0x30, + 0xFD,0x05,0xFA,0x04,0x00,0xF4,0x0A,0xFF,0x00,0x00,0xF0,0x0F, + 0xFA,0x04,0x00,0xF4,0x0B,0xF6,0x3D,0x30,0xFD,0x06,0xA0,0xFF, + 0xFF,0xAF,0x00,0x00,0xB6,0xBF,0x06,0x00 +}; +const GuiConst_INT8U Ch000230[102] = +{ + 1,0,1,1,4, 7,8,8,6,4, + 0,9, + 6,17, + 0x00,0x00,0x00, + 0x00,0xD6,0xAF,0x04,0x00,0x90,0xFF,0xFF,0x5F,0x00,0xF5,0x5F, + 0x30,0xDD,0x00,0xF9,0x06,0x00,0xF5,0x05,0xFF,0x03,0x00,0xF0, + 0x09,0xFF,0x00,0x00,0xF0,0x0B,0xFF,0x00,0x00,0xF0,0x0F,0xF9, + 0x05,0x00,0xF5,0x0F,0xF5,0x3D,0x30,0xDD,0x0F,0xA0,0xFF,0xFF, + 0x97,0x0F,0x00,0xF7,0x6D,0xB0,0x0D,0x00,0x00,0x00,0xF0,0x09, + 0x00,0x00,0x00,0xF4,0x06,0xFD,0x03,0x00,0xF9,0x04,0xF7,0x09, + 0x50,0xBF,0x00,0xD3,0xFF,0xFF,0x3D,0x00,0x30,0xF8,0x8F,0x03, + 0x00 +}; +const GuiConst_INT8U Ch000231[19] = +{ + 0,0,0,0,0, 1,1,1,1,1, + 0,2, + 11,12, + 0xFA,0x0B, + 0xFF,0x00,0xFF +}; +const GuiConst_INT8U Ch000232[136] = +{ + 4,3,1,0,6, 8,9,11,12,6, + 0,13, + 6,17, + 0x00,0x00,0x00, + 0x00,0x00,0xF3,0xFF,0x03,0x00,0x00,0x00,0x00,0xF5,0xFF,0x05, + 0x00,0x00,0x00,0x00,0xF8,0xF8,0x08,0x00,0x00,0x00,0x00,0xFF, + 0xF3,0x0F,0x00,0x00,0x00,0x40,0xBF,0x90,0x4F,0x00,0x00,0x00, + 0x70,0x6F,0x50,0x7F,0x00,0x00,0x00,0xB0,0x3F,0x30,0xBF,0x00, + 0x00,0x00,0xF3,0x0B,0x00,0xFB,0x03,0x00,0x00,0xF6,0x06,0x00, + 0xF6,0x06,0x00,0x00,0xFA,0x03,0x00,0xF3,0x0A,0x00,0x00,0xFF, + 0xFF,0xFF,0xFF,0x0F,0x00,0x50,0xFF,0xFF,0xFF,0xFF,0x5F,0x00, + 0x80,0x4F,0x00,0x00,0x40,0x8F,0x00,0xD0,0x0F,0x00,0x00,0x00, + 0xDF,0x00,0xF3,0x09,0x00,0x00,0x00,0xF9,0x03,0xF6,0x05,0x00, + 0x00,0x00,0xF5,0x06,0xFB,0x03,0x00,0x00,0x00,0xF3,0x0B +}; +const GuiConst_INT8U Ch000233[113] = +{ + 0,0,0,0,5, 8,9,10,9,5, + 0,11, + 6,17, + 0x00,0x10,0x00, + 0xFF,0xFF,0xFF,0x8D,0x03,0x00,0xFF,0xFF,0xFF,0xFF,0x3D,0x00, + 0xFF,0x00,0x00,0xA3,0x8F,0x00,0xFF,0x00,0x00,0x30,0xFF,0x00, + 0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x30,0x8F,0x00, + 0xFF,0x00,0x00,0xA3,0x3D,0x00,0xFF,0xFF,0xFF,0xFF,0x05,0x00, + 0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xFF,0x00,0x00,0x40,0xFD,0x05, + 0xFF,0x00,0x00,0x00,0xF4,0x0A,0xFF,0x00,0x00,0x00,0xF0,0x0F, + 0xFF,0x00,0x00,0x00,0xF4,0x0A,0xFF,0x00,0x00,0x40,0xFD,0x05, + 0xFF,0xFF,0xFF,0xFF,0x9F,0x00,0xFF,0xFF,0xFF,0xAF,0x06,0x00 +}; +const GuiConst_INT8U Ch000234[107] = +{ + 2,0,0,2,5, 9,11,10,9,6, + 0,12, + 6,17, + 0x00,0x03,0x00, + 0x00,0x30,0xD7,0xDF,0x37,0x00,0x00,0xF5,0xFF,0xFF,0xDF,0x03, + 0x50,0xDF,0x06,0x30,0xFA,0x0D,0xD0,0x4F,0x00,0x00,0xD0,0x6F, + 0xF5,0x09,0x00,0x00,0x50,0xBF,0xF8,0x04,0x00,0x00,0x30,0x39, + 0xFB,0x03,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, + 0xFB,0x03,0x00,0x00,0x00,0x00,0xF8,0x05,0x00,0x00,0x30,0x39, + 0xF5,0x08,0x00,0x00,0x50,0xBF,0xD0,0x3F,0x00,0x00,0xB0,0x6F, + 0x50,0xDF,0x05,0x30,0xFA,0x0D,0x00,0xF7,0xFF,0xFF,0xDF,0x03, + 0x00,0x50,0xF9,0xBF,0x37,0x00 +}; +const GuiConst_INT8U Ch000235[107] = +{ + 0,0,0,0,5, 9,11,11,9,6, + 0,12, + 6,17, + 0x00,0x03,0x00, + 0xFF,0xFF,0xFF,0x9F,0x05,0x00,0xFF,0xFF,0xFF,0xFF,0x9F,0x00, + 0xFF,0x00,0x00,0x50,0xFD,0x06,0xFF,0x00,0x00,0x00,0xF3,0x3F, + 0xFF,0x00,0x00,0x00,0x70,0x5F,0xFF,0x00,0x00,0x00,0x40,0x9F, + 0xFF,0x00,0x00,0x00,0x30,0xDF,0xFF,0x00,0x00,0x00,0x00,0xFF, + 0xFF,0x00,0x00,0x00,0x30,0xBF,0xFF,0x00,0x00,0x00,0x50,0x8F, + 0xFF,0x00,0x00,0x00,0x70,0x5F,0xFF,0x00,0x00,0x00,0xF3,0x0D, + 0xFF,0x00,0x00,0x53,0xFD,0x06,0xFF,0xFF,0xFF,0xFF,0x7F,0x00, + 0xFF,0xFF,0xFF,0x8D,0x05,0x00 +}; +const GuiConst_INT8U Ch000236[42] = +{ + 0,0,0,0,4, 9,7,7,9,5, + 0,10, + 6,17, + 0x7A,0x7D,0x01, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0x0F,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF +}; +const GuiConst_INT8U Ch000237[37] = +{ + 0,0,0,0,4, 9,7,7,1,5, + 0,10, + 6,17, + 0x7A,0xFD,0x01, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF, + 0xFF,0xFF,0x0F,0xFF,0x00,0x00,0x00,0x00 +}; +const GuiConst_INT8U Ch000238[47] = +{ + 0,0,0,0,4, 1,8,8,8,4, + 0,9, + 6,17, + 0x1E,0xFC,0x01, + 0xFF,0x00,0x00,0x00,0x00,0xFF,0x60,0xFD,0x5B,0x00,0xFF,0xF7, + 0xFF,0xFF,0x05,0xFF,0x5D,0x30,0xF9,0x09,0xFF,0x05,0x00,0xF3, + 0x0F,0xFF,0x00,0x00,0xF0,0x0F +}; +const GuiConst_INT8U Ch000239[30] = +{ + 0,0,0,0,0, 23,23,23,23,23, + 0,24, + 0,29, + 0xFE,0xFF,0xFF,0x1F, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF +}; +const GuiConst_INT8U Ch000240[16] = +{ + 0,0,0,0,0, 5,5,5,5,5, + 0,6, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000241[22] = +{ + 7,1,1,7,7, 7,13,13,7,7, + 1,13, + 8,13, + 0xDE,0x1E, + 0x07,0x00,0xFF,0xF8,0x07,0x00 +}; +const GuiConst_INT8U Ch000242[21] = +{ + 6,6,6,4,6, 6,6,6,8,6, + 4,5, + 20,7, + 0x04, + 0x70,0xF8,0x78,0x38,0x70,0x60 +}; +const GuiConst_INT8U Ch000243[17] = +{ + 6,1,1,6,6, 6,13,13,6,6, + 1,13, + 13,3, + 0x06, + 0xFF,0xF8 +}; +const GuiConst_INT8U Ch000244[18] = +{ + 6,6,6,4,6, 6,6,6,8,6, + 4,5, + 20,4, + 0x04, + 0x70,0xF8,0x70 +}; +const GuiConst_INT8U Ch000245[39] = +{ + 3,0,0,3,6, 10,13,13,10,7, + 0,14, + 5,19, + 0xA0,0x5F,0x00, + 0x0F,0xC0,0x1F,0xE0,0x3F,0xF0,0x78,0x78,0x70,0x38,0xE0,0x1C, + 0x70,0x38,0x78,0x78,0x3F,0xF0,0x1F,0xE0,0x0F,0xC0 +}; +const GuiConst_INT8U Ch000246[24] = +{ + 5,2,6,6,5, 8,8,8,8,5, + 2,7, + 5,19, + 0x80,0xFF,0x07, + 0x0E,0x1E,0x3E,0x7E,0xFE,0xEE,0x0E +}; +const GuiConst_INT8U Ch000247[49] = +{ + 2,0,1,0,6, 11,13,10,13,7, + 0,14, + 5,19, + 0x00,0x80,0x06, + 0x0F,0xC0,0x3F,0xF0,0x7F,0xF8,0x78,0x78,0xF0,0x3C,0xE0,0x1C, + 0x00,0x3C,0x00,0x7C,0x01,0xF8,0x07,0xE0,0x1F,0x80,0x3E,0x00, + 0x78,0x00,0xF0,0x00,0xE0,0x00,0xFF,0xFC +}; +const GuiConst_INT8U Ch000248[51] = +{ + 2,0,0,2,6, 11,13,13,11,7, + 0,14, + 5,19, + 0x20,0x40,0x00, + 0x0F,0xC0,0x3F,0xF0,0x7F,0xF8,0x70,0x38,0xE0,0x1C,0x00,0x1C, + 0x00,0x3C,0x01,0xF8,0x01,0xF0,0x01,0xF8,0x00,0x3C,0x00,0x1C, + 0xE0,0x1C,0x70,0x38,0x7F,0xF8,0x3F,0xF0,0x0F,0xC0 +}; +const GuiConst_INT8U Ch000249[41] = +{ + 6,3,0,8,6, 10,10,13,10,7, + 0,14, + 5,19, + 0x0A,0x60,0x07, + 0x03,0xE0,0x07,0xE0,0x0F,0xE0,0x0E,0xE0,0x1E,0xE0,0x1C,0xE0, + 0x3C,0xE0,0x38,0xE0,0x78,0xE0,0x70,0xE0,0xFF,0xFC,0x00,0xE0 +}; +const GuiConst_INT8U Ch000250[43] = +{ + 0,0,0,2,6, 12,11,13,11,7, + 0,14, + 5,19, + 0x16,0x58,0x00, + 0xFF,0xF8,0xE0,0x00,0xE7,0xC0,0xFF,0xF0,0xFF,0xF8,0xF8,0x38, + 0xE0,0x1C,0x00,0x1C,0xE0,0x1C,0x70,0x38,0x7F,0xF8,0x3F,0xF0, + 0x0F,0xC0 +}; +const GuiConst_INT8U Ch000251[49] = +{ + 4,0,0,2,6, 11,9,13,11,7, + 0,14, + 5,19, + 0x00,0x70,0x00, + 0x03,0xF0,0x0F,0xF0,0x1F,0xF0,0x3C,0x00,0x78,0x00,0x70,0x00, + 0xE0,0x00,0xEF,0xC0,0xFF,0xF0,0xFF,0xF8,0xF0,0x38,0xE0,0x1C, + 0x70,0x38,0x7F,0xF8,0x3F,0xF0,0x0F,0xC0 +}; +const GuiConst_INT8U Ch000252[51] = +{ + 0,9,6,3,6, 13,12,9,6,7, + 0,14, + 5,19, + 0x06,0x00,0x00, + 0xFF,0xFC,0x00,0x3C,0x00,0x38,0x00,0x78,0x00,0x70,0x00,0xF0, + 0x00,0xE0,0x01,0xE0,0x01,0xC0,0x03,0xC0,0x03,0x80,0x07,0x80, + 0x07,0x00,0x0F,0x00,0x0E,0x00,0x1E,0x00,0x1C,0x00 +}; +const GuiConst_INT8U Ch000253[47] = +{ + 2,0,0,2,6, 11,13,13,11,7, + 0,14, + 5,19, + 0x60,0x60,0x00, + 0x0F,0xC0,0x3F,0xF0,0x7F,0xF8,0x70,0x38,0xE0,0x1C,0x70,0x38, + 0x7F,0xF0,0x3F,0xF0,0x7F,0xF8,0x70,0x3C,0xE0,0x1C,0x70,0x38, + 0x7F,0xF8,0x3F,0xF0,0x0F,0xC0 +}; +const GuiConst_INT8U Ch000254[49] = +{ + 2,0,2,2,6, 11,13,13,9,7, + 0,14, + 5,19, + 0xE0,0x00,0x00, + 0x0F,0xC0,0x3F,0xF0,0x7F,0xF8,0x70,0x38,0xE0,0x1C,0x70,0x3C, + 0x7F,0xFC,0x3F,0xFC,0x0F,0xDC,0x00,0x1C,0x00,0x38,0x00,0x78, + 0x00,0xF0,0x3F,0xE0,0x3F,0xC0,0x3F,0x00 +}; +const GuiConst_INT8U Ch000255[23] = +{ + 6,4,6,4,6, 6,8,6,8,6, + 4,5, + 10,14, + 0xE4,0x13, + 0x70,0xF8,0x70,0x00,0x70,0xF8,0x70 +}; +const GuiConst_INT8U Ch000256[37] = +{ + 4,4,2,0,6, 9,9,11,13,7, + 0,14, + 5,19, + 0x6C,0xD2,0x04, + 0x03,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x1C,0xE0,0x3C,0xF0, + 0x38,0x70,0x7F,0xF8,0xF0,0x3C,0xE0,0x1C +}; +const GuiConst_INT8U Ch000257[53] = +{ + 0,0,0,0,6, 11,13,13,11,7, + 0,14, + 5,19, + 0x00,0x02,0x00, + 0xFF,0xC0,0xFF,0xF0,0xFF,0xF8,0xE0,0x78,0xE0,0x3C,0xE0,0x1C, + 0xE0,0x3C,0xE0,0x78,0xFF,0xF0,0xFF,0xF8,0xE0,0x78,0xE0,0x3C, + 0xE0,0x1C,0xE0,0x3C,0xE0,0x78,0xFF,0xF8,0xFF,0xF0,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000258[43] = +{ + 2,0,0,2,6, 11,13,13,11,7, + 0,14, + 5,19, + 0x80,0x1F,0x00, + 0x0F,0xC0,0x3F,0xF0,0x7F,0xF8,0x78,0x78,0xF0,0x3C,0xE0,0x1C, + 0xE0,0x00,0xE0,0x1C,0xF0,0x3C,0x78,0x78,0x7F,0xF8,0x3F,0xF0, + 0x0F,0xC0 +}; +const GuiConst_INT8U Ch000259[39] = +{ + 0,0,0,0,6, 11,13,13,11,7, + 0,14, + 5,19, + 0xC0,0x3F,0x00, + 0xFF,0xC0,0xFF,0xF0,0xFF,0xF8,0xE0,0x78,0xE0,0x3C,0xE0,0x1C, + 0xE0,0x3C,0xE0,0x78,0xFF,0xF8,0xFF,0xF0,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000260[27] = +{ + 0,0,0,0,6, 13,9,9,13,7, + 0,14, + 5,19, + 0xF6,0xF6,0x06, + 0xFF,0xFC,0xE0,0x00,0xFF,0xC0,0xE0,0x00,0xFF,0xFC +}; +const GuiConst_INT8U Ch000261[25] = +{ + 0,0,0,0,6, 13,9,9,2,7, + 0,14, + 5,19, + 0xF6,0xF6,0x07, + 0xFF,0xFC,0xE0,0x00,0xFF,0xC0,0xE0,0x00 +}; +const GuiConst_INT8U Ch000262[31] = +{ + 0,0,0,0,6, 2,10,12,12,6, + 0,13, + 5,19, + 0x1E,0xF8,0x07, + 0xE0,0x00,0xEF,0x80,0xFF,0xE0,0xFF,0xF0,0xF0,0xF0,0xE0,0x78, + 0xE0,0x38 +}; +const GuiConst_INT8U Ch000263[21] = +{ + 0,0,0,0,0, 16,16,16,16,16, + 0,17, + 0,31, + 0xFE,0xFF,0xFF,0x7F, + 0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000264[18] = +{ + 0,0,0,0,0, 4,4,4,4,4, + 0,5, + 0,0, + 0x00, + 0x00,0x00,0x00 +}; +const GuiConst_INT8U Ch000265[37] = +{ + 6,6,0,6,6, 7,7,13,7,7, + 0,14, + 14,12, + 0x5E,0x0F, + 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00 +}; +const GuiConst_INT8U Ch000266[25] = +{ + 1,1,1,1,1, 1,1,1,2,2, + 0,3, + 28,7, + 0x0A, + 0xF0,0x0F,0x00,0x0F,0x60,0x0D,0xF3,0x06,0x82,0x00 +}; +const GuiConst_INT8U Ch000267[19] = +{ + 5,5,2,5,5, 5,5,8,5,5, + 2,7, + 21,2, + 0x02, + 0xFF,0xFF,0xFF,0x0F +}; +const GuiConst_INT8U Ch000268[16] = +{ + 0,0,0,0,0, 1,1,1,1,1, + 0,2, + 28,2, + 0x02, + 0xFF +}; +const GuiConst_INT8U Ch000269[150] = +{ + 3,0,0,3,6, 9,12,12,9,6, + 0,13, + 7,23, + 0x00,0x3C,0x00, + 0x00,0x10,0xE8,0xEF,0x18,0x00,0x00,0x00,0xE4,0xFF,0xFF,0xFF, + 0x04,0x00,0x00,0xFE,0x08,0x00,0xF9,0x0E,0x00,0x80,0x8F,0x00, + 0x00,0x80,0x8F,0x00,0xF0,0x0E,0x00,0x00,0x00,0xFE,0x00,0xF4, + 0x08,0x00,0x00,0x00,0xF8,0x04,0xF7,0x04,0x00,0x00,0x00,0xF4, + 0x07,0xFA,0x02,0x00,0x00,0x00,0xF2,0x0A,0xFD,0x00,0x00,0x00, + 0x00,0xF0,0x0D,0xFF,0x00,0x00,0x00,0x00,0xF0,0x0F,0xFD,0x00, + 0x00,0x00,0x00,0xF0,0x0D,0xFA,0x02,0x00,0x00,0x00,0xF2,0x0A, + 0xF8,0x04,0x00,0x00,0x00,0xF4,0x07,0xF5,0x08,0x00,0x00,0x00, + 0xF8,0x04,0xF0,0x0E,0x00,0x00,0x00,0xFE,0x00,0xA0,0x8F,0x00, + 0x00,0x80,0x8F,0x00,0x10,0xFE,0x09,0x00,0xF9,0x0E,0x00,0x00, + 0xE4,0xFF,0xFF,0xFF,0x04,0x00,0x00,0x00,0xE8,0xEF,0x18,0x00, + 0x00 +}; +const GuiConst_INT8U Ch000270[53] = +{ + 7,2,7,7,5, 8,8,8,8,5, + 2,7, + 7,23, + 0x00,0xFE,0x7F, + 0x00,0x00,0x60,0x0F,0x00,0x00,0xE0,0x0F,0x00,0x00,0xFC,0x0F, + 0x00,0x90,0xFF,0x0F,0x00,0xFC,0xFF,0x0F,0xE3,0xFF,0xF4,0x0F, + 0xFF,0x1A,0xF0,0x0F,0x4C,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F +}; +const GuiConst_INT8U Ch000271[178] = +{ + 2,0,5,0,3, 10,12,9,12,9, + 0,13, + 7,23, + 0x00,0x00,0x00, + 0x00,0x20,0xE9,0xFF,0x5C,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF, + 0x0C,0x00,0x70,0xEF,0x06,0x00,0xD4,0xAF,0x00,0xF0,0x1E,0x00, + 0x00,0x00,0xFD,0x04,0xF7,0x06,0x00,0x00,0x00,0xF3,0x09,0xFA, + 0x00,0x00,0x00,0x00,0xF0,0x0F,0xFF,0x00,0x00,0x00,0x00,0xF0, + 0x0F,0x00,0x00,0x00,0x00,0x00,0xF1,0x0E,0x00,0x00,0x00,0x00, + 0x00,0xF6,0x09,0x00,0x00,0x00,0x00,0x00,0xFE,0x04,0x00,0x00, + 0x00,0x00,0x90,0xDF,0x00,0x00,0x00,0x00,0x00,0xF5,0x2F,0x00, + 0x00,0x00,0x00,0x40,0xFF,0x06,0x00,0x00,0x00,0x00,0xF4,0x8F, + 0x00,0x00,0x00,0x00,0x40,0xFF,0x0A,0x00,0x00,0x00,0x00,0xF4, + 0xCF,0x00,0x00,0x00,0x00,0x40,0xFF,0x0C,0x00,0x00,0x00,0x00, + 0xF4,0xCF,0x00,0x00,0x00,0x00,0x20,0xFF,0x0C,0x00,0x00,0x00, + 0x00,0xD0,0xDF,0x00,0x00,0x00,0x00,0x00,0xF4,0x2F,0x00,0x00, + 0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x0F +}; +const GuiConst_INT8U Ch000272[171] = +{ + 2,0,2,2,6, 9,11,12,10,6, + 0,13, + 7,23, + 0x00,0x00,0x01, + 0x00,0x40,0xFC,0xDF,0x06,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xEF, + 0x01,0x00,0xA0,0xDF,0x04,0x10,0xFA,0x0E,0x00,0xF2,0x0D,0x00, + 0x00,0xA0,0x7F,0x00,0xF8,0x04,0x00,0x00,0x10,0xDF,0x00,0xFE, + 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, + 0x00,0x00,0x00,0x00,0x00,0x30,0xCF,0x00,0x00,0x00,0x00,0x00, + 0xC0,0x4F,0x00,0x00,0x00,0x00,0x40,0xFD,0x0C,0x00,0x00,0x00, + 0xF0,0xFF,0xEF,0x03,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x7F,0x00, + 0x00,0x00,0x10,0x00,0xD3,0xFF,0x02,0x00,0x00,0x00,0x00,0x00, + 0xFD,0x08,0x00,0x00,0x00,0x00,0x00,0xF4,0x0D,0x00,0x00,0x00, + 0x00,0x00,0xF0,0x0F,0xFF,0x00,0x00,0x00,0x00,0xF0,0x0D,0xF9, + 0x06,0x00,0x00,0x00,0xF6,0x08,0xF4,0x1E,0x00,0x00,0x10,0xFE, + 0x00,0xA0,0xEF,0x04,0x00,0xF6,0x6F,0x00,0x00,0xFA,0xFF,0xFF, + 0xFF,0x06,0x00,0x00,0x40,0xFA,0xEF,0x28,0x00,0x00 +}; +const GuiConst_INT8U Ch000273[136] = +{ + 7,4,0,8,6, 9,9,12,9,6, + 0,13, + 7,23, + 0x00,0x00,0x7D, + 0x00,0x00,0x00,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x60,0xFF, + 0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00, + 0xF7,0xFF,0x00,0x00,0x00,0x00,0x00,0xEF,0xFF,0x00,0x00,0x00, + 0x00,0xA0,0x6F,0xFF,0x00,0x00,0x00,0x00,0xF2,0x0D,0xFF,0x00, + 0x00,0x00,0x00,0xFC,0x04,0xFF,0x00,0x00,0x00,0x40,0xAF,0x00, + 0xFF,0x00,0x00,0x00,0xD0,0x2F,0x00,0xFF,0x00,0x00,0x00,0xF6, + 0x09,0x00,0xFF,0x00,0x00,0x00,0xFE,0x00,0x00,0xFF,0x00,0x00, + 0x80,0x7F,0x00,0x00,0xFF,0x00,0x00,0xF0,0x0E,0x00,0x00,0xFF, + 0x00,0x00,0xFA,0x06,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xFF,0x00,0x00 +}; +const GuiConst_INT8U Ch000274[164] = +{ + 2,1,2,2,6, 11,9,12,9,6, + 0,13, + 7,23, + 0x00,0xC0,0x00, + 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x20,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x00,0x50,0x7F,0x00,0x00,0x00,0x00,0x00,0x80,0x5F,0x00, + 0x00,0x00,0x00,0x00,0xA0,0x2F,0x00,0x00,0x00,0x00,0x00,0xF0, + 0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0x0E,0x00,0x00,0x00,0x00, + 0x00,0xF2,0x4A,0xE9,0xEF,0x29,0x00,0x00,0xF6,0xFF,0xFF,0xFF, + 0xFF,0x06,0x00,0xF8,0xDF,0x04,0x10,0xF8,0x5F,0x00,0xFC,0x0D, + 0x00,0x00,0x40,0xFF,0x00,0xD9,0x02,0x00,0x00,0x00,0xFA,0x07, + 0x00,0x00,0x00,0x00,0x00,0xF3,0x0A,0x00,0x00,0x00,0x00,0x00, + 0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0xF1,0x0C,0xFF,0x00,0x00, + 0x00,0x00,0xF4,0x08,0xF9,0x04,0x00,0x00,0x00,0xFD,0x03,0xF4, + 0x0E,0x00,0x00,0x80,0xDF,0x00,0xC0,0xEF,0x04,0x10,0xF9,0x1F, + 0x00,0x00,0xFC,0xFF,0xFF,0xEF,0x04,0x00,0x00,0x40,0xFA,0xDF, + 0x08,0x00,0x00 +}; +const GuiConst_INT8U Ch000275[178] = +{ + 3,0,0,3,6, 10,12,12,10,6, + 0,13, + 7,23, + 0x00,0x00,0x00, + 0x00,0x00,0xA4,0xFF,0x7D,0x00,0x00,0x00,0xA0,0xFF,0xFF,0xFF, + 0x1E,0x00,0x00,0xFA,0x3C,0x00,0xD3,0xCF,0x00,0x50,0xAF,0x00, + 0x00,0x00,0xFE,0x04,0xD0,0x0E,0x00,0x00,0x00,0xF5,0x09,0xF2, + 0x07,0x00,0x00,0x00,0xF0,0x0E,0xF6,0x01,0x00,0x00,0x00,0x00, + 0x00,0xF9,0x00,0x00,0x00,0x00,0x00,0x00,0xCA,0x00,0xD8,0xFF, + 0x39,0x00,0x00,0xAF,0xE4,0xFF,0xFF,0xFF,0x08,0x00,0xDF,0xFF, + 0x06,0x00,0xF6,0x7F,0x00,0xFF,0x4F,0x00,0x00,0x10,0xFF,0x01, + 0xFF,0x08,0x00,0x00,0x00,0xF8,0x08,0xFF,0x01,0x00,0x00,0x00, + 0xF2,0x0C,0xFE,0x00,0x00,0x00,0x00,0xF0,0x0F,0xFA,0x00,0x00, + 0x00,0x00,0xF0,0x0F,0xF8,0x00,0x00,0x00,0x00,0xF0,0x0F,0xF5, + 0x04,0x00,0x00,0x00,0xF3,0x0A,0xF0,0x0A,0x00,0x00,0x00,0xF8, + 0x05,0x80,0x8F,0x00,0x00,0x40,0xFF,0x00,0x00,0xFE,0x19,0x00, + 0xF6,0x6F,0x00,0x00,0xE1,0xFF,0xFF,0xFF,0x08,0x00,0x00,0x00, + 0xD6,0xFF,0x4A,0x00,0x00 +}; +const GuiConst_INT8U Ch000276[164] = +{ + 0,7,4,3,6, 12,10,6,4,6, + 0,13, + 7,23, + 0x02,0x00,0x40, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00, + 0xF4,0x0A,0x00,0x00,0x00,0x00,0x10,0xEF,0x00,0x00,0x00,0x00, + 0x00,0xC0,0x2F,0x00,0x00,0x00,0x00,0x00,0xF6,0x09,0x00,0x00, + 0x00,0x00,0x00,0xEE,0x00,0x00,0x00,0x00,0x00,0x80,0x6F,0x00, + 0x00,0x00,0x00,0x00,0xF0,0x0E,0x00,0x00,0x00,0x00,0x00,0xF8, + 0x06,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00, + 0x50,0x9F,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00, + 0x00,0x00,0xF0,0x0E,0x00,0x00,0x00,0x00,0x00,0xF5,0x08,0x00, + 0x00,0x00,0x00,0x00,0xFA,0x03,0x00,0x00,0x00,0x00,0x00,0xFF, + 0x00,0x00,0x00,0x00,0x00,0x20,0xCF,0x00,0x00,0x00,0x00,0x00, + 0x60,0x7F,0x00,0x00,0x00,0x00,0x00,0x90,0x5F,0x00,0x00,0x00, + 0x00,0x00,0xA0,0x2F,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00, + 0x00,0x00,0x00 +}; +const GuiConst_INT8U Ch000277[164] = +{ + 3,1,0,2,6, 9,11,12,10,6, + 0,13, + 7,23, + 0x40,0x00,0x01, + 0x00,0x00,0xE8,0xEF,0x08,0x00,0x00,0x00,0xE1,0xFF,0xFF,0xEF, + 0x01,0x00,0x00,0xFE,0x09,0x00,0xF9,0x0E,0x00,0x70,0x9F,0x00, + 0x00,0xA0,0x6F,0x00,0xC0,0x1F,0x00,0x00,0x30,0xCF,0x00,0xF0, + 0x0F,0x00,0x00,0x00,0xFF,0x00,0xD0,0x2F,0x00,0x00,0x10,0xEF, + 0x00,0x80,0x9F,0x00,0x00,0x90,0x8F,0x00,0x00,0xFE,0x09,0x00, + 0xF9,0x0E,0x00,0x00,0xD1,0xFF,0xFF,0xEF,0x02,0x00,0x00,0xF8, + 0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xEF,0x04,0x00,0xE6,0xAF,0x00, + 0xF5,0x1E,0x00,0x00,0x10,0xFE,0x04,0xFA,0x04,0x00,0x00,0x00, + 0xF5,0x0A,0xFF,0x00,0x00,0x00,0x00,0xF0,0x0F,0xFE,0x00,0x00, + 0x00,0x00,0xF0,0x0F,0xF9,0x04,0x00,0x00,0x00,0xF4,0x09,0xF4, + 0x1E,0x00,0x00,0x10,0xFE,0x04,0xA0,0xEF,0x06,0x00,0xE4,0xAF, + 0x00,0x00,0xFA,0xFF,0xFF,0xFF,0x0A,0x00,0x00,0x40,0xF9,0xFF, + 0x49,0x00,0x00 +}; +const GuiConst_INT8U Ch000278[178] = +{ + 2,0,2,2,6, 9,12,12,9,6, + 0,13, + 7,23, + 0x00,0x00,0x00, + 0x00,0x30,0xF9,0xDF,0x06,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xEF, + 0x01,0x00,0x70,0xFF,0x19,0x00,0xF6,0x0E,0x00,0xF0,0x6F,0x00, + 0x00,0x40,0x8F,0x00,0xF7,0x0A,0x00,0x00,0x00,0xF8,0x00,0xFC, + 0x03,0x00,0x00,0x00,0xF2,0x05,0xFF,0x00,0x00,0x00,0x00,0xF0, + 0x09,0xFF,0x00,0x00,0x00,0x00,0xF0,0x0A,0xFF,0x00,0x00,0x00, + 0x00,0xF0,0x0F,0xFC,0x01,0x00,0x00,0x00,0xF2,0x0F,0xF8,0x08, + 0x00,0x00,0x00,0xF8,0x0F,0xF1,0x3F,0x00,0x00,0x10,0xFF,0x0F, + 0x70,0xFF,0x06,0x00,0xE6,0xDE,0x0F,0x00,0xF8,0xFF,0xFF,0xEF, + 0xA3,0x0F,0x00,0x30,0xF9,0xDF,0x07,0xD0,0x0A,0x00,0x00,0x00, + 0x00,0x00,0xF0,0x09,0x00,0x00,0x00,0x00,0x00,0xF3,0x06,0xFF, + 0x00,0x00,0x00,0x00,0xF8,0x01,0xFA,0x04,0x00,0x00,0x00,0xDF, + 0x00,0xF4,0x0D,0x00,0x00,0xC0,0x4F,0x00,0xD0,0xCF,0x02,0x30, + 0xFC,0x0A,0x00,0x10,0xFE,0xFF,0xFF,0xAF,0x00,0x00,0x00,0x70, + 0xFD,0xAF,0x04,0x00,0x00 +}; +const GuiConst_INT8U Ch000279[20] = +{ + 0,0,0,0,0, 1,1,1,1,1, + 0,2, + 13,17, + 0xFA,0x7F,0x01, + 0xFF,0x00,0xFF +}; +const GuiConst_INT8U Ch000280[224] = +{ + 7,5,2,0,3, 9,11,14,16,13, + 0,17, + 7,23, + 0x00,0x00,0x00, + 0x00,0x00,0x00,0xE0,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xF3,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF7,0xFF,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0xFD,0xF7,0x0D,0x00,0x00,0x00, + 0x00,0x00,0x10,0xFF,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x70, + 0xCF,0x80,0x6F,0x00,0x00,0x00,0x00,0x00,0xC0,0x5F,0x30,0xCF, + 0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0xFF,0x00,0x00,0x00, + 0x00,0x00,0xF5,0x0C,0x00,0xF9,0x05,0x00,0x00,0x00,0x00,0xFC, + 0x05,0x00,0xF4,0x0A,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xF0, + 0x0F,0x00,0x00,0x00,0x40,0xCF,0x00,0x00,0x90,0x4F,0x00,0x00, + 0x00,0x90,0x4F,0x00,0x00,0x40,0x9F,0x00,0x00,0x00,0xF0,0x0F, + 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xF4,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x03,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x08,0x00, + 0x00,0xFE,0x00,0x00,0x00,0x00,0xF0,0x0E,0x00,0x30,0xCF,0x00, + 0x00,0x00,0x00,0xC0,0x3F,0x00,0x80,0x5F,0x00,0x00,0x00,0x00, + 0x50,0x7F,0x00,0xD0,0x1F,0x00,0x00,0x00,0x00,0x00,0xDF,0x00, + 0xF1,0x0D,0x00,0x00,0x00,0x00,0x00,0xFD,0x01,0xF7,0x07,0x00, + 0x00,0x00,0x00,0x00,0xF7,0x07,0xFD,0x01,0x00,0x00,0x00,0x00, + 0x00,0xF1,0x0D +}; +const GuiConst_INT8U Ch000281[164] = +{ + 0,0,0,0,3, 10,12,13,11,7, + 0,14, + 7,23, + 0x40,0x00,0x01, + 0xFF,0xFF,0xFF,0xFF,0x8D,0x01,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x4F,0x00,0xFF,0x00,0x00,0x00,0x71,0xEF,0x00,0xFF,0x00,0x00, + 0x00,0x00,0xF9,0x08,0xFF,0x00,0x00,0x00,0x00,0xF1,0x0D,0xFF, + 0x00,0x00,0x00,0x00,0xF0,0x0F,0xFF,0x00,0x00,0x00,0x00,0xF1, + 0x0A,0xFF,0x00,0x00,0x00,0x00,0xF7,0x04,0xFF,0x00,0x00,0x00, + 0x71,0xCF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0x04,0xFF,0x00,0x00,0x00,0x40,0xFD,0x0E, + 0xFF,0x00,0x00,0x00,0x00,0xD0,0x7F,0xFF,0x00,0x00,0x00,0x00, + 0x40,0xCF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00, + 0x00,0x00,0x00,0xEF,0xFF,0x00,0x00,0x00,0x00,0x30,0x9F,0xFF, + 0x00,0x00,0x00,0x00,0xC0,0x4F,0xFF,0x00,0x00,0x00,0x30,0xFC, + 0x0C,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0x00,0xFF,0xFF,0xFF,0xFF, + 0xAF,0x05,0x00 +}; +const GuiConst_INT8U Ch000282[177] = +{ + 4,0,0,4,7, 12,15,14,12,8, + 0,16, + 7,23, + 0x00,0x1C,0x00, + 0x00,0x00,0x40,0xE9,0xFF,0x6C,0x00,0x00,0x00,0x10,0xFC,0xFF, + 0xFF,0xFF,0x3E,0x00,0x00,0xE1,0xCF,0x04,0x00,0xC3,0xFF,0x03, + 0x00,0xFD,0x08,0x00,0x00,0x00,0xFA,0x0E,0x60,0xAF,0x00,0x00, + 0x00,0x00,0xE0,0x6F,0xE0,0x0F,0x00,0x00,0x00,0x00,0x60,0xDF, + 0xF4,0x09,0x00,0x00,0x00,0x00,0x00,0x2A,0xF8,0x05,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFA,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFA,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0xF7,0x05,0x00,0x00,0x00,0x00,0x00,0x2A,0xF3,0x09,0x00,0x00, + 0x00,0x00,0x40,0xDF,0xE0,0x0F,0x00,0x00,0x00,0x00,0xA0,0x7F, + 0x60,0x9F,0x00,0x00,0x00,0x00,0xF2,0x1F,0x00,0xFE,0x07,0x00, + 0x00,0x10,0xFE,0x09,0x00,0xF3,0xAF,0x03,0x00,0xE6,0xCF,0x00, + 0x00,0x40,0xFE,0xFF,0xFF,0xFF,0x0C,0x00,0x00,0x00,0x60,0xFC, + 0xEF,0x49,0x00,0x00 +}; +const GuiConst_INT8U Ch000283[177] = +{ + 0,0,0,0,3, 11,14,14,11,6, + 0,15, + 7,23, + 0x00,0x1C,0x00, + 0xFF,0xFF,0xFF,0xFF,0x9D,0x02,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0xFF,0x8F,0x00,0x00,0xFF,0x00,0x00,0x00,0x62,0xFF,0x07,0x00, + 0xFF,0x00,0x00,0x00,0x00,0xF1,0x2F,0x00,0xFF,0x00,0x00,0x00, + 0x00,0x60,0xAF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFE,0x00, + 0xFF,0x00,0x00,0x00,0x00,0x00,0xF7,0x05,0xFF,0x00,0x00,0x00, + 0x00,0x00,0xF3,0x09,0xFF,0x00,0x00,0x00,0x00,0x00,0xF1,0x0C, + 0xFF,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0xFF,0x00,0x00,0x00, + 0x00,0x00,0xF0,0x0E,0xFF,0x00,0x00,0x00,0x00,0x00,0xF2,0x0A, + 0xFF,0x00,0x00,0x00,0x00,0x00,0xF4,0x08,0xFF,0x00,0x00,0x00, + 0x00,0x00,0xF8,0x04,0xFF,0x00,0x00,0x00,0x00,0x00,0xFE,0x00, + 0xFF,0x00,0x00,0x00,0x00,0x60,0x9F,0x00,0xFF,0x00,0x00,0x00, + 0x00,0xE1,0x1F,0x00,0xFF,0x00,0x00,0x00,0x72,0xFF,0x06,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0xFF,0xFF,0xFF,0xFF, + 0x8C,0x01,0x00,0x00 +}; +const GuiConst_INT8U Ch000284[52] = +{ + 0,0,0,0,3, 13,9,10,13,10, + 0,14, + 7,23, + 0xFA,0xEB,0x5F, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0x00,0x00, + 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF +}; +const GuiConst_INT8U Ch000285[45] = +{ + 0,0,0,0,6, 12,1,10,1,6, + 0,13, + 7,23, + 0xFA,0xD7,0x7F, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0x00,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00, + 0x00,0x00,0x00,0x00 +}; +const GuiConst_INT8U Ch000286[65] = +{ + 0,0,0,0,3, 1,9,10,10,7, + 0,11, + 7,23, + 0x3E,0xE0,0x7F, + 0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0xFA,0xDF,0x06,0x00, + 0xFF,0xF8,0xFF,0xFF,0xCF,0x00,0xFF,0xCF,0x03,0x50,0xFF,0x04, + 0xFF,0x0D,0x00,0x00,0xF6,0x09,0xFF,0x05,0x00,0x00,0xF0,0x0D, + 0xFF,0x01,0x00,0x00,0xF0,0x0F,0xFF,0x00,0x00,0x00,0xF0,0x0F +}; +const GuiConst_INT8U Ch000287[33] = +{ + 0,0,0,0,0, 27,27,27,27,27, + 0,28, + 0,37, + 0xFE,0xFF,0xFF,0xFF,0x1F, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF +}; +const GuiConst_INT8U Ch000288[17] = +{ + 0,0,0,0,0, 9,9,9,9,9, + 0,10, + 0,0, + 0x00, + 0x00,0x00 +}; +const GuiConst_INT8U Ch000289[23] = +{ + 7,6,0,7,7, 8,9,15,8,8, + 0,16, + 12,17, + 0x7E,0xFB,0x01, + 0x03,0xC0,0xFF,0xFF,0x03,0xC0 +}; +const GuiConst_INT8U Ch000290[22] = +{ + 7,7,7,5,7, 7,7,7,9,7, + 5,5, + 27,8, + 0x04, + 0x70,0xF8,0x78,0x38,0x70,0xE0,0xC0 +}; +const GuiConst_INT8U Ch000291[17] = +{ + 7,7,0,7,7, 8,8,15,8,8, + 0,16, + 19,3, + 0x06, + 0xFF,0xFF +}; +const GuiConst_INT8U Ch000292[18] = +{ + 7,7,7,5,7, 7,7,7,9,7, + 5,5, + 27,4, + 0x04, + 0x70,0xF8,0x70 +}; +const GuiConst_INT8U Ch000293[43] = +{ + 4,0,0,4,7, 11,15,15,11,8, + 0,16, + 7,24, + 0x40,0xFF,0x05, + 0x03,0xC0,0x0F,0xF0,0x1F,0xF8,0x3E,0x7C,0x3C,0x3C,0x78,0x1E, + 0xF0,0x0F,0x78,0x1E,0x3C,0x3C,0x3E,0x7C,0x1F,0xF8,0x0F,0xF0, + 0x03,0xC0 +}; +const GuiConst_INT8U Ch000294[35] = +{ + 6,3,7,7,6, 10,10,10,10,6, + 2,9, + 7,24, + 0x00,0xFE,0xFF, + 0x07,0x80,0x0F,0x80,0x1F,0x80,0x3F,0x80,0x7F,0x80,0xFF,0x80, + 0x77,0x80,0x27,0x80,0x07,0x80 +}; +const GuiConst_INT8U Ch000295[55] = +{ + 3,2,1,0,7, 12,15,10,15,8, + 0,16, + 7,24, + 0x00,0x01,0xD8, + 0x07,0xE0,0x1F,0xF8,0x3F,0xFC,0x7C,0x3E,0xF8,0x1F,0x70,0x0F, + 0x20,0x0F,0x00,0x0F,0x00,0x1F,0x00,0x3E,0x00,0x7C,0x01,0xF8, + 0x07,0xF0,0x1F,0xC0,0x3F,0x00,0x7C,0x00,0x78,0x00,0xF0,0x00, + 0xFF,0xFF +}; +const GuiConst_INT8U Ch000296[63] = +{ + 3,2,3,3,7, 12,15,15,12,8, + 0,16, + 7,24, + 0x00,0x10,0x00, + 0x07,0xE0,0x1F,0xF8,0x3F,0xFC,0x7C,0x3E,0xF8,0x1F,0x70,0x0F, + 0x20,0x0F,0x00,0x0F,0x00,0x1F,0x00,0x3E,0x00,0xFC,0x03,0xF8, + 0x00,0xFC,0x00,0x3E,0x00,0x1F,0x00,0x0F,0x20,0x0F,0x70,0x0F, + 0xF8,0x1F,0x7C,0x3E,0x3F,0xFC,0x1F,0xF8,0x07,0xE0 +}; +const GuiConst_INT8U Ch000297[39] = +{ + 8,4,0,3,7, 12,12,14,12,8, + 0,16, + 7,24, + 0xAA,0xAA,0xEC, + 0x00,0xF8,0x01,0xF8,0x03,0xF8,0x07,0xF8,0x0F,0x78,0x1E,0x78, + 0x3C,0x78,0x78,0x78,0xF0,0x78,0xFF,0xFF,0x00,0x78 +}; +const GuiConst_INT8U Ch000298[47] = +{ + 1,1,3,3,7, 15,11,15,12,8, + 0,16, + 7,24, + 0xF6,0x81,0x01, + 0x7F,0xFF,0x78,0x00,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x00,0x7E, + 0x00,0x1F,0x00,0x0F,0x20,0x0F,0x70,0x0F,0xF8,0x1F,0x7C,0x3E, + 0x3F,0xFC,0x1F,0xF8,0x07,0xE0 +}; +const GuiConst_INT8U Ch000299[55] = +{ + 6,1,0,3,7, 11,10,15,12,8, + 0,16, + 7,24, + 0x00,0x81,0x07, + 0x00,0x60,0x01,0xF0,0x03,0xF0,0x0F,0xE0,0x1F,0x80,0x3F,0x00, + 0x3C,0x00,0x78,0x00,0xF7,0xE0,0xFF,0xF8,0xFF,0xFC,0xFC,0x3E, + 0xF8,0x1F,0xF0,0x0F,0xF8,0x1F,0x7C,0x3E,0x3F,0xFC,0x1F,0xF8, + 0x07,0xE0 +}; +const GuiConst_INT8U Ch000300[61] = +{ + 0,9,5,2,7, 15,14,10,6,8, + 0,16, + 7,24, + 0x06,0x00,0x00, + 0xFF,0xFF,0x00,0x0F,0x00,0x1F,0x00,0x1E,0x00,0x3E,0x00,0x3C, + 0x00,0x7C,0x00,0x78,0x00,0xF8,0x00,0xF0,0x01,0xF0,0x01,0xE0, + 0x03,0xE0,0x03,0xC0,0x07,0xC0,0x07,0x80,0x0F,0x80,0x0F,0x00, + 0x1F,0x00,0x1E,0x00,0x3E,0x00,0x3C,0x00 +}; +const GuiConst_INT8U Ch000301[55] = +{ + 3,0,0,3,7, 12,15,15,12,8, + 0,16, + 7,24, + 0xC0,0x10,0x06, + 0x07,0xE0,0x1F,0xF8,0x3F,0xFC,0x7C,0x3E,0xF8,0x1F,0xF0,0x0F, + 0xF8,0x1F,0x7C,0x3E,0x3F,0xFC,0x1F,0xF8,0x3F,0xFC,0x7C,0x3E, + 0xF8,0x1F,0xF0,0x0F,0xF8,0x1F,0x7C,0x3E,0x3F,0xFC,0x1F,0xF8, + 0x07,0xE0 +}; +const GuiConst_INT8U Ch000302[55] = +{ + 3,0,4,4,7, 12,15,15,9,8, + 0,16, + 7,24, + 0xC0,0x03,0x01, + 0x07,0xE0,0x1F,0xF8,0x3F,0xFC,0x7C,0x3E,0xF8,0x1F,0xF0,0x0F, + 0xF8,0x1F,0x7C,0x3F,0x3F,0xFF,0x1F,0xFF,0x07,0xEF,0x00,0x1E, + 0x00,0x3C,0x00,0xFC,0x01,0xF8,0x07,0xF0,0x0F,0xC0,0x0F,0x80, + 0x06,0x00 +}; +const GuiConst_INT8U Ch000303[24] = +{ + 7,5,7,5,7, 7,9,7,9,7, + 5,5, + 14,17, + 0xE4,0x9F,0x00, + 0x70,0xF8,0x70,0x00,0x70,0xF8,0x70 +}; +const GuiConst_INT8U Ch000304[35] = +{ + 6,4,2,0,7, 9,11,13,15,8, + 0,16, + 7,24, + 0xDA,0xDD,0xD4, + 0x03,0xC0,0x07,0xE0,0x0F,0xF0,0x1E,0x78,0x3C,0x3C,0x3F,0xFC, + 0x7F,0xFE,0x78,0x1E,0xF0,0x0F +}; +const GuiConst_INT8U Ch000305[57] = +{ + 0,0,0,0,7, 12,15,15,12,8, + 0,16, + 7,24, + 0xC0,0x00,0x06, + 0xFF,0xC0,0xFF,0xF0,0xFF,0xFC,0xF0,0x7E,0xF0,0x1E,0xF0,0x0F, + 0xF0,0x1E,0xF0,0x7E,0xFF,0xF8,0xFF,0xF0,0xFF,0xF8,0xF0,0x7E, + 0xF0,0x1E,0xF0,0x1F,0xF0,0x0F,0xF0,0x1E,0xF0,0x7E,0xFF,0xFC, + 0xFF,0xF0,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000306[47] = +{ + 3,0,0,3,7, 12,15,14,12,8, + 0,16, + 7,24, + 0x00,0xFF,0x01, + 0x03,0xC0,0x0F,0xF0,0x3F,0xFC,0x7E,0x7E,0x78,0x1E,0xF8,0x1F, + 0xF0,0x0F,0xF0,0x00,0xF0,0x0F,0xF8,0x1F,0x78,0x1E,0x7E,0x7E, + 0x3F,0xFC,0x0F,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000307[39] = +{ + 0,0,0,0,7, 12,15,15,12,8, + 0,16, + 7,24, + 0xC0,0xFF,0x07, + 0xFF,0xC0,0xFF,0xF0,0xFF,0xFC,0xF0,0x7E,0xF0,0x1E,0xF0,0x0F, + 0xF0,0x1E,0xF0,0x7E,0xFF,0xFC,0xFF,0xF0,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000308[27] = +{ + 0,0,0,0,7, 15,11,11,15,8, + 0,16, + 7,24, + 0xF6,0xDB,0xDF, + 0xFF,0xFF,0xF0,0x00,0xFF,0xF0,0xF0,0x00,0xFF,0xFF +}; +const GuiConst_INT8U Ch000309[25] = +{ + 0,0,0,0,7, 15,11,9,3,8, + 0,16, + 7,24, + 0xF6,0xDB,0xFF, + 0xFF,0xFF,0xF0,0x00,0xFF,0xF0,0xF0,0x00 +}; +const GuiConst_INT8U Ch000310[31] = +{ + 0,0,0,0,7, 3,12,15,15,8, + 0,16, + 7,24, + 0x7E,0xD0,0xFF, + 0xF0,0x00,0xF3,0xC0,0xFF,0xF0,0xFF,0xFC,0xFC,0x3C,0xF0,0x1E, + 0xF0,0x0F +}; +const GuiConst_INT8U Ch000311[22] = +{ + 0,0,0,0,0, 18,18,18,18,18, + 0,19, + 0,39, + 0xFE,0xFF,0xFF,0xFF,0x7F, + 0xFF,0xFF,0xE0 +}; +const GuiConst_INT8U Ch000312[16] = +{ + 0,0,0,0,0, 7,7,7,7,7, + 0,8, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000313[27] = +{ + 6,5,7,6,8, 10,11,9,10,8, + 5,7, + 8,30, + 0xF4,0x7B,0xBF,0x19, + 0x38,0x7C,0xFE,0x7C,0x38,0x00,0x38,0x7C,0x38 +}; +const GuiConst_INT8U Ch000314[22] = +{ + 3,4,7,7,7, 12,11,8,8,8, + 3,10, + 8,9, + 0xBC,0x01, + 0x61,0x80,0xF3,0xC0,0x61,0x80 +}; +const GuiConst_INT8U Ch000315[32] = +{ + 8,0,0,8,8, 9,17,17,9,9, + 0,18, + 14,18, + 0x76,0x77,0x03, + 0x1E,0x1E,0x00,0xFF,0xFF,0xC0,0x1E,0x1E,0x00,0xFF,0xFF,0xC0, + 0x1E,0x1E,0x00 +}; +const GuiConst_INT8U Ch000316[82] = +{ + 4,0,2,1,8, 14,15,17,15,9, + 0,18, + 7,33, + 0x46,0x1C,0xE0,0x88,0x01, + 0x07,0x38,0x00,0x0F,0xFE,0x00,0x3F,0xFF,0x80,0x7F,0xFF,0xC0, + 0xFF,0x3F,0x80,0xF7,0x3B,0x00,0xF7,0x38,0x00,0xFF,0x38,0x00, + 0x7F,0xB8,0x00,0x7F,0xFC,0x00,0x3F,0xFF,0x00,0x0F,0xFF,0x80, + 0x07,0x7F,0x80,0x07,0x3F,0xC0,0x07,0x3B,0xC0,0x37,0x3B,0xC0, + 0x7F,0x3F,0xC0,0xFF,0xFF,0x80,0x7F,0xFF,0x00,0x1F,0xFC,0x00, + 0x07,0x38,0x00 +}; +const GuiConst_INT8U Ch000317[93] = +{ + 1,0,4,0,8, 17,13,17,16,9, + 0,19, + 8,30, + 0x00,0xA8,0x0A,0x00, + 0x3E,0x03,0xE0,0x7F,0x03,0xE0,0xFF,0x87,0xC0,0xF7,0x87,0xC0, + 0xE3,0x8F,0x80,0xF7,0x8F,0x80,0xFF,0x9F,0x00,0x7F,0x1F,0x00, + 0x3E,0x3E,0x00,0x00,0x3E,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00, + 0x01,0xF0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00, + 0x0F,0x8F,0x80,0x1F,0x1F,0xC0,0x1F,0x3F,0xE0,0x3E,0x3D,0xE0, + 0x3E,0x38,0xE0,0x7C,0x3D,0xE0,0x7C,0x3F,0xE0,0xF8,0x1F,0xC0, + 0xF8,0x0F,0x80 +}; +const GuiConst_INT8U Ch000318[80] = +{ + 5,1,0,2,9, 10,14,17,17,9, + 0,19, + 14,24, + 0x48,0x00,0x04, + 0x07,0xE0,0x00,0x1F,0xF8,0x00,0x3F,0xFC,0x00,0x7C,0x3E,0x00, + 0x78,0x1E,0x00,0x78,0x3E,0x00,0x7C,0x7C,0x00,0x3F,0xF8,0x00, + 0x3F,0xF0,0x00,0x1F,0xE0,0x00,0x1F,0xC1,0x00,0x3F,0xE3,0x80, + 0x7F,0xF7,0xC0,0xF9,0xFF,0xC0,0xF0,0xFF,0x80,0xF0,0x7F,0x00, + 0xF8,0xFF,0x80,0x7F,0xFF,0xC0,0x7F,0xF7,0xE0,0x3F,0xE3,0xC0, + 0x0F,0xC1,0x80 +}; +const GuiConst_INT8U Ch000319[19] = +{ + 5,6,6,6,6, 8,7,7,7,7, + 5,4, + 8,9, + 0xBC,0x01, + 0x60,0xF0,0x60 +}; +const GuiConst_INT8U Ch000320[31] = +{ + 11,8,8,11,11, 14,11,11,14,11, + 8,7, + 8,30, + 0x80,0xFF,0xFF,0x00, + 0x0C,0x1E,0x3E,0x7C,0x78,0xF8,0xF0,0xF8,0x78,0x7C,0x3E,0x1E, + 0x0C +}; +const GuiConst_INT8U Ch000321[31] = +{ + 2,5,5,2,5, 5,8,8,5,5, + 2,7, + 8,30, + 0x80,0xFF,0xFF,0x00, + 0x60,0xF0,0xF8,0x7C,0x3C,0x3E,0x1E,0x3E,0x3C,0x7C,0xF8,0xF0, + 0x60 +}; +const GuiConst_INT8U Ch000322[56] = +{ + 8,0,2,8,8, 8,16,14,8,8, + 0,17, + 14,17, + 0x04,0x83,0x00, + 0x1C,0x1C,0x00,0x3E,0x3E,0x00,0x1E,0x3C,0x00,0x0E,0x38,0x00, + 0x0F,0x78,0x00,0x67,0xF3,0x00,0xFF,0xFF,0x80,0x67,0xF3,0x00, + 0x0F,0x78,0x00,0x0E,0x38,0x00,0x1E,0x3C,0x00,0x3E,0x3E,0x00, + 0x1C,0x1C,0x00 +}; +const GuiConst_INT8U Ch000323[26] = +{ + 8,0,0,8,8, 9,17,17,9,9, + 0,18, + 14,18, + 0x7E,0xF7,0x03, + 0x01,0xE0,0x00,0xFF,0xFF,0xC0,0x01,0xE0,0x00 +}; +const GuiConst_INT8U Ch000324[23] = +{ + 6,6,6,4,6, 7,7,7,9,7, + 4,6, + 32,10, + 0x1C,0x00, + 0x78,0xFC,0x7C,0x3C,0x38,0x78,0x70 +}; +const GuiConst_INT8U Ch000325[18] = +{ + 8,0,0,8,8, 9,17,17,9,9, + 0,18, + 21,4, + 0x0E, + 0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000326[18] = +{ + 6,6,6,4,6, 7,7,7,9,7, + 4,6, + 32,6, + 0x1C, + 0x78,0xFC,0x78 +}; +const GuiConst_INT8U Ch000327[63] = +{ + 8,8,4,0,9, 18,14,10,10,9, + 0,19, + 8,30, + 0xAA,0xAA,0xAA,0x2A, + 0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00, + 0x00,0x3E,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00, + 0x03,0xE0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00, + 0x3E,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x00 +}; +const GuiConst_INT8U Ch000328[69] = +{ + 3,0,0,3,8, 14,17,17,14,9, + 0,18, + 8,30, + 0x80,0xFC,0x9F,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x1F,0xFE,0x00,0x3F,0xFF,0x00, + 0x3E,0x1F,0x00,0x7C,0x0F,0x80,0x78,0x07,0x80,0xF8,0x07,0xC0, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7C,0x0F,0x80, + 0x3E,0x1F,0x00,0x3F,0xFF,0x00,0x1F,0xFE,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000329[38] = +{ + 6,3,8,8,6, 11,11,11,11,7, + 2,10, + 8,30, + 0x00,0xFC,0xFF,0x3F, + 0x03,0xC0,0x07,0xC0,0x0F,0xC0,0x1F,0xC0,0x3F,0xC0,0x7F,0xC0, + 0xFF,0xC0,0x7B,0xC0,0x33,0xC0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000330[87] = +{ + 2,2,0,0,8, 15,17,12,16,9, + 0,18, + 8,30, + 0x08,0x00,0x80,0x3B, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0x70,0x03,0xC0,0x30,0x03,0xC0, + 0x00,0x03,0xC0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x1F,0x80, + 0x00,0x7F,0x00,0x01,0xFE,0x00,0x07,0xFC,0x00,0x0F,0xF0,0x00, + 0x1F,0xC0,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0x7C,0x00,0x00, + 0xF8,0x00,0x00,0xF0,0x00,0x00,0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000331[99] = +{ + 2,1,1,2,8, 15,17,17,15,9, + 0,18, + 8,30, + 0x08,0x80,0x00,0x08, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0x70,0x03,0xC0,0x30,0x03,0xC0, + 0x00,0x03,0xC0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x1F,0x80, + 0x00,0xFF,0x00,0x00,0xFE,0x00,0x00,0xFF,0x00,0x00,0x1F,0x80, + 0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x30,0x03,0xC0, + 0x70,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000332[72] = +{ + 9,4,0,10,8, 13,13,17,13,9, + 0,18, + 8,30, + 0xAA,0x02,0xC0,0x3D, + 0x00,0x3C,0x00,0x00,0x7C,0x00,0x00,0xFC,0x00,0x01,0xFC,0x00, + 0x03,0xFC,0x00,0x07,0xFC,0x00,0x07,0xBC,0x00,0x0F,0xBC,0x00, + 0x0F,0x3C,0x00,0x1F,0x3C,0x00,0x1E,0x3C,0x00,0x3E,0x3C,0x00, + 0x3C,0x3C,0x00,0x7C,0x3C,0x00,0x78,0x3C,0x00,0xF8,0x3C,0x00, + 0xFF,0xFF,0xC0,0x00,0x3C,0x00 +}; +const GuiConst_INT8U Ch000333[69] = +{ + 1,1,1,2,8, 16,15,17,15,9, + 0,18, + 8,30, + 0xEE,0x11,0x1E,0x08, + 0x7F,0xFF,0x80,0x78,0x00,0x00,0x7B,0xF0,0x00,0x7F,0xFC,0x00, + 0x7F,0xFF,0x00,0x7C,0x1F,0x80,0x70,0x07,0x80,0x00,0x07,0xC0, + 0x00,0x03,0xC0,0x30,0x03,0xC0,0x70,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000334[87] = +{ + 6,0,0,2,8, 14,15,17,15,9, + 0,18, + 8,30, + 0x00,0x20,0x7C,0x08, + 0x00,0x38,0x00,0x00,0xF8,0x00,0x03,0xFC,0x00,0x07,0xF8,0x00, + 0x0F,0xE0,0x00,0x1F,0x80,0x00,0x3F,0x00,0x00,0x3E,0x00,0x00, + 0x7C,0x00,0x00,0x78,0x00,0x00,0x7B,0xF0,0x00,0xFF,0xFC,0x00, + 0xFF,0xFF,0x00,0xFE,0x1F,0x80,0xF8,0x07,0x80,0xF8,0x07,0xC0, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000335[60] = +{ + 0,7,5,1,8, 17,15,11,9,9, + 0,18, + 8,30, + 0xAE,0xAA,0xAA,0x2A, + 0xFF,0xFF,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00, + 0x00,0x3E,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00, + 0x03,0xE0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00, + 0x3E,0x00,0x00,0x7C,0x00,0x00 +}; +const GuiConst_INT8U Ch000336[93] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 8,30, + 0x08,0x01,0x60,0x08, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x1F,0xFE,0x00, + 0x0F,0xFC,0x00,0x1F,0xFE,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000337[87] = +{ + 2,0,2,3,8, 15,17,17,11,9, + 0,18, + 8,30, + 0x08,0x1F,0x02,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0xC0,0x7E,0x1F,0xC0,0x3F,0xFF,0xC0,0x0F,0xFF,0xC0, + 0x03,0xF7,0x80,0x00,0x07,0x80,0x00,0x0F,0x80,0x00,0x1F,0x00, + 0x00,0x3F,0x00,0x00,0x7E,0x00,0x01,0xFC,0x00,0x07,0xF8,0x00, + 0x0F,0xF0,0x00,0x07,0xC0,0x00,0x07,0x00,0x00 +}; +const GuiConst_INT8U Ch000338[24] = +{ + 6,4,6,4,6, 7,9,7,9,7, + 4,6, + 15,23, + 0x9C,0xFF,0x39, + 0x78,0xFC,0x78,0x00,0x78,0xFC,0x78 +}; +const GuiConst_INT8U Ch000339[29] = +{ + 6,4,6,4,6, 7,9,7,9,7, + 4,6, + 15,27, + 0x9C,0xFF,0x39,0x00, + 0x78,0xFC,0x78,0x00,0x78,0xFC,0x7C,0x3C,0x38,0x78,0x70 +}; +const GuiConst_INT8U Ch000340[93] = +{ + 12,1,1,12,8, 16,10,10,16,8, + 0,17, + 10,26, + 0x00,0x20,0x00,0x00, + 0x00,0x0F,0x80,0x00,0x1F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00, + 0x00,0xFC,0x00,0x01,0xF8,0x00,0x03,0xF0,0x00,0x07,0xE0,0x00, + 0x0F,0xC0,0x00,0x1F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00, + 0xFC,0x00,0x00,0x7E,0x00,0x00,0x3F,0x00,0x00,0x1F,0x80,0x00, + 0x0F,0xC0,0x00,0x07,0xE0,0x00,0x03,0xF0,0x00,0x01,0xF8,0x00, + 0x00,0xFC,0x00,0x00,0x7E,0x00,0x00,0x3F,0x00,0x00,0x1F,0x80, + 0x00,0x0F,0x80 +}; +const GuiConst_INT8U Ch000341[25] = +{ + 8,0,0,8,8, 9,17,17,9,9, + 0,18, + 17,11, + 0x6E,0x07, + 0xFF,0xFF,0xC0,0x00,0x00,0x00,0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000342[93] = +{ + 0,6,6,0,8, 4,15,15,4,8, + 0,17, + 10,26, + 0x00,0x20,0x00,0x00, + 0xF8,0x00,0x00,0xFC,0x00,0x00,0x7E,0x00,0x00,0x3F,0x00,0x00, + 0x1F,0x80,0x00,0x0F,0xC0,0x00,0x07,0xE0,0x00,0x03,0xF0,0x00, + 0x01,0xF8,0x00,0x00,0xFC,0x00,0x00,0x7E,0x00,0x00,0x3F,0x00, + 0x00,0x1F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0xFC,0x00, + 0x01,0xF8,0x00,0x03,0xF0,0x00,0x07,0xE0,0x00,0x0F,0xC0,0x00, + 0x1F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0xFC,0x00,0x00, + 0xF8,0x00,0x00 +}; +const GuiConst_INT8U Ch000343[78] = +{ + 2,1,7,6,8, 15,17,10,11,9, + 0,18, + 8,30, + 0x08,0x00,0xDE,0x1C, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0x70,0x03,0xC0,0x30,0x03,0xC0, + 0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x1F,0x80,0x00,0x7F,0x00, + 0x00,0xFE,0x00,0x01,0xFC,0x00,0x01,0xF0,0x00,0x01,0xE0,0x00, + 0x00,0x00,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00,0x01,0xE0,0x00 +}; +const GuiConst_INT8U Ch000344[74] = +{ + 8,0,0,2,8, 8,16,16,15,8, + 0,17, + 15,23, + 0x08,0x42,0x10, + 0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7E,0x3F,0x00, + 0x78,0x0F,0x00,0xF9,0xCF,0x80,0xF3,0xE7,0x80,0xF7,0xF7,0x80, + 0xF7,0x77,0x80,0xF6,0x37,0x80,0xF7,0x77,0x80,0xF7,0xFF,0x80, + 0xF3,0xFF,0x00,0xF9,0xDE,0x00,0x78,0x00,0x00,0x7E,0x0F,0x00, + 0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000345[54] = +{ + 6,4,1,0,8, 11,13,16,17,9, + 0,18, + 8,30, + 0xDA,0x99,0xD9,0x39, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00,0x0F,0xFC,0x00, + 0x0F,0x3C,0x00,0x1F,0x3E,0x00,0x1E,0x1E,0x00,0x3E,0x1F,0x00, + 0x3C,0x0F,0x00,0x7F,0xFF,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000346[87] = +{ + 0,0,0,0,8, 15,17,17,15,9, + 0,18, + 8,30, + 0x08,0x83,0x60,0x08, + 0xFF,0xF0,0x00,0xFF,0xFC,0x00,0xFF,0xFF,0x00,0xF0,0x1F,0x80, + 0xF0,0x07,0x80,0xF0,0x07,0xC0,0xF0,0x03,0xC0,0xF0,0x07,0xC0, + 0xF0,0x07,0x80,0xF0,0x1F,0x80,0xFF,0xFF,0x00,0xFF,0xFE,0x00, + 0xFF,0xFF,0x00,0xF0,0x1F,0x80,0xF0,0x07,0x80,0xF0,0x07,0xC0, + 0xF0,0x03,0xC0,0xF0,0x07,0xC0,0xF0,0x07,0x80,0xF0,0x1F,0x80, + 0xFF,0xFF,0x00,0xFF,0xFC,0x00,0xFF,0xF0,0x00 +}; +const GuiConst_INT8U Ch000347[69] = +{ + 2,0,0,2,8, 15,16,16,15,9, + 0,18, + 8,30, + 0x08,0xFC,0x1F,0x08, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0x80,0xF0,0x03,0x00, + 0xF0,0x00,0x00,0xF0,0x03,0x00,0xF0,0x03,0x80,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000348[57] = +{ + 0,0,0,0,8, 15,17,17,15,9, + 0,18, + 8,30, + 0x08,0xFF,0x7F,0x08, + 0xFF,0xF0,0x00,0xFF,0xFC,0x00,0xFF,0xFF,0x00,0xF0,0x1F,0x80, + 0xF0,0x07,0x80,0xF0,0x07,0xC0,0xF0,0x03,0xC0,0xF0,0x07,0xC0, + 0xF0,0x07,0x80,0xF0,0x1F,0x80,0xFF,0xFF,0x00,0xFF,0xFC,0x00, + 0xFF,0xF0,0x00 +}; +const GuiConst_INT8U Ch000349[33] = +{ + 0,0,0,0,8, 17,11,11,17,9, + 0,18, + 8,30, + 0xEE,0xDF,0xFD,0x3B, + 0xFF,0xFF,0xC0,0xF0,0x00,0x00,0xFF,0xF0,0x00,0xF0,0x00,0x00, + 0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000350[30] = +{ + 0,0,0,0,8, 17,11,11,3,9, + 0,18, + 8,30, + 0xEE,0xDF,0xFD,0x3F, + 0xFF,0xFF,0xC0,0xF0,0x00,0x00,0xFF,0xF0,0x00,0xF0,0x00,0x00 +}; +const GuiConst_INT8U Ch000351[69] = +{ + 2,0,0,2,8, 15,16,17,17,9, + 0,18, + 8,30, + 0x08,0x7C,0x77,0x08, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0x80,0xF0,0x03,0x00, + 0xF0,0x00,0x00,0xF0,0x3F,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0xC0,0x7E,0x1F,0xC0,0x3F,0xFF,0xC0,0x0F,0xFD,0xC0, + 0x03,0xF1,0xC0 +}; +const GuiConst_INT8U Ch000352[27] = +{ + 0,0,0,0,8, 17,17,17,17,9, + 0,18, + 8,30, + 0xFE,0xDF,0xFD,0x3F, + 0xF0,0x03,0xC0,0xFF,0xFF,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000353[24] = +{ + 3,6,6,3,7, 12,9,9,12,8, + 3,10, + 8,30, + 0xEE,0xFF,0xFF,0x3B, + 0xFF,0xC0,0x1E,0x00,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000354[36] = +{ + 12,12,1,2,7, 15,15,15,13,8, + 0,16, + 8,30, + 0xFE,0xFF,0x1F,0x08, + 0x00,0x0F,0x30,0x0F,0x70,0x0F,0xF8,0x1F,0x78,0x1E,0x7E,0x7E, + 0x3F,0xFC,0x0F,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000355[102] = +{ + 0,0,0,0,8, 16,12,12,16,8, + 0,18, + 8,30, + 0x00,0x80,0x01,0x00, + 0xF0,0x07,0xC0,0xF0,0x07,0x80,0xF0,0x0F,0x80,0xF0,0x1F,0x00, + 0xF0,0x1E,0x00,0xF0,0x3E,0x00,0xF0,0x7C,0x00,0xF0,0x78,0x00, + 0xF0,0xF8,0x00,0xF1,0xF0,0x00,0xF1,0xE0,0x00,0xF3,0xE0,0x00, + 0xF7,0xC0,0x00,0xF7,0x80,0x00,0xFF,0x80,0x00,0xFF,0xC0,0x00, + 0xF3,0xE0,0x00,0xF1,0xE0,0x00,0xF1,0xF0,0x00,0xF0,0xF8,0x00, + 0xF0,0x78,0x00,0xF0,0x7C,0x00,0xF0,0x3E,0x00,0xF0,0x1E,0x00, + 0xF0,0x1F,0x00,0xF0,0x0F,0x80,0xF0,0x07,0x80,0xF0,0x07,0xC0 +}; +const GuiConst_INT8U Ch000356[24] = +{ + 0,0,0,0,8, 10,10,10,16,8, + 0,17, + 8,30, + 0xFE,0xFF,0xFF,0x3B, + 0xF0,0x00,0x00,0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000357[51] = +{ + 0,0,0,0,9, 18,18,18,18,9, + 0,19, + 8,30, + 0xAA,0xA2,0xFA,0x3F, + 0xF0,0x01,0xE0,0xF8,0x03,0xE0,0xFC,0x07,0xE0,0xFE,0x0F,0xE0, + 0xFF,0x1F,0xE0,0xF7,0xBD,0xE0,0xF7,0xFD,0xE0,0xF3,0xF9,0xE0, + 0xF1,0xF1,0xE0,0xF0,0xE1,0xE0,0xF0,0x01,0xE0 +}; +const GuiConst_INT8U Ch000358[81] = +{ + 0,0,0,0,8, 17,17,17,17,9, + 0,18, + 8,30, + 0x54,0x01,0xA0,0x2A, + 0xF0,0x03,0xC0,0xF8,0x03,0xC0,0xFC,0x03,0xC0,0xFE,0x03,0xC0, + 0xFF,0x03,0xC0,0xFF,0x83,0xC0,0xF7,0x83,0xC0,0xF7,0xC3,0xC0, + 0xF3,0xC3,0xC0,0xF3,0xE3,0xC0,0xF1,0xE3,0xC0,0xF1,0xF3,0xC0, + 0xF0,0xF3,0xC0,0xF0,0xFB,0xC0,0xF0,0x7B,0xC0,0xF0,0x7F,0xC0, + 0xF0,0x3F,0xC0,0xF0,0x1F,0xC0,0xF0,0x0F,0xC0,0xF0,0x07,0xC0, + 0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000359[57] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 8,30, + 0x08,0xFF,0x7F,0x08, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000360[60] = +{ + 0,0,0,0,8, 15,17,13,3,9, + 0,18, + 8,30, + 0x08,0x0F,0xF1,0x3F, + 0xFF,0xF0,0x00,0xFF,0xFC,0x00,0xFF,0xFF,0x00,0xF0,0x1F,0x80, + 0xF0,0x07,0x80,0xF0,0x07,0xC0,0xF0,0x03,0xC0,0xF0,0x07,0xC0, + 0xF0,0x07,0x80,0xF0,0x1F,0x80,0xFF,0xFF,0x00,0xFF,0xFC,0x00, + 0xFF,0xF0,0x00,0xF0,0x00,0x00 +}; +const GuiConst_INT8U Ch000361[76] = +{ + 2,0,0,2,9, 15,17,17,17,17, + 0,19, + 8,33, + 0x08,0xFF,0x0F,0x08,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF0,0x83,0xC0, + 0xF1,0xE3,0xC0,0xF1,0xF3,0xC0,0xF9,0xFF,0xC0,0x78,0x7F,0x80, + 0x7E,0x3F,0x80,0x3F,0xFF,0x00,0x0F,0xFF,0x80,0x03,0xF7,0xE0, + 0x00,0x03,0xE0,0x00,0x01,0xE0,0x00,0x00,0x40 +}; +const GuiConst_INT8U Ch000362[78] = +{ + 0,0,0,0,8, 15,17,14,17,9, + 0,18, + 8,30, + 0x08,0x0F,0x01,0x35, + 0xFF,0xF0,0x00,0xFF,0xFC,0x00,0xFF,0xFF,0x00,0xF0,0x1F,0x80, + 0xF0,0x07,0x80,0xF0,0x07,0xC0,0xF0,0x03,0xC0,0xF0,0x07,0xC0, + 0xF0,0x07,0x80,0xF0,0x1F,0x80,0xFF,0xFF,0x00,0xFF,0xFC,0x00, + 0xFF,0xF0,0x00,0xF0,0xF8,0x00,0xF0,0x7C,0x00,0xF0,0x3E,0x00, + 0xF0,0x1E,0x00,0xF0,0x0F,0x00,0xF0,0x07,0x80,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000363[102] = +{ + 2,0,1,2,8, 15,16,17,15,9, + 0,18, + 8,30, + 0x08,0x00,0x00,0x08, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0x80,0xF0,0x03,0x00, + 0xF8,0x00,0x00,0x78,0x00,0x00,0x7E,0x00,0x00,0x3F,0x80,0x00, + 0x3F,0xF0,0x00,0x0F,0xFC,0x00,0x03,0xFF,0x00,0x00,0xFF,0x00, + 0x00,0x1F,0x80,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0, + 0x30,0x03,0xC0,0x70,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80, + 0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000364[24] = +{ + 0,7,7,7,8, 17,10,10,10,9, + 0,18, + 8,30, + 0xEE,0xFF,0xFF,0x3F, + 0xFF,0xFF,0xC0,0x01,0xE0,0x00 +}; +const GuiConst_INT8U Ch000365[39] = +{ + 0,0,0,2,8, 17,17,17,15,9, + 0,18, + 8,30, + 0xFE,0xFF,0x7F,0x08, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000366[57] = +{ + 0,1,3,5,8, 17,16,14,12,9, + 0,18, + 8,30, + 0xCE,0xCC,0xCC,0x1D, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7C,0x0F,0x80, + 0x3C,0x0F,0x00,0x3E,0x1F,0x00,0x1E,0x1E,0x00,0x1F,0x3E,0x00, + 0x0F,0x3C,0x00,0x0F,0xFC,0x00,0x07,0xF8,0x00,0x03,0xF0,0x00, + 0x01,0xE0,0x00 +}; +const GuiConst_INT8U Ch000367[45] = +{ + 0,0,1,3,8, 17,17,16,14,9, + 0,18, + 8,30, + 0xFE,0xB4,0x7C,0x3D, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x78,0xC7,0x80, + 0x79,0xE7,0x80,0x7D,0xEF,0x80,0x3F,0xFF,0x00,0x3F,0x3F,0x00, + 0x1E,0x1E,0x00 +}; +const GuiConst_INT8U Ch000368[93] = +{ + 1,4,4,1,9, 18,15,15,18,10, + 0,20, + 8,30, + 0x00,0xD0,0x05,0x00, + 0xF8,0x01,0xF0,0x78,0x01,0xE0,0x7C,0x03,0xE0,0x3C,0x03,0xC0, + 0x3E,0x07,0xC0,0x1E,0x07,0x80,0x1F,0x0F,0x80,0x0F,0x0F,0x00, + 0x0F,0x9F,0x00,0x07,0x9E,0x00,0x07,0xFE,0x00,0x03,0xFC,0x00, + 0x01,0xF8,0x00,0x03,0xFC,0x00,0x07,0xFE,0x00,0x07,0x9E,0x00, + 0x0F,0x9F,0x00,0x0F,0x0F,0x00,0x1F,0x0F,0x80,0x1E,0x07,0x80, + 0x3E,0x07,0xC0,0x3C,0x03,0xC0,0x7C,0x03,0xE0,0x78,0x01,0xE0, + 0xF8,0x01,0xF0 +}; +const GuiConst_INT8U Ch000369[63] = +{ + 0,4,8,8,9, 19,15,11,11,10, + 0,20, + 8,30, + 0x00,0xA0,0xFE,0x3F, + 0xF0,0x00,0xF0,0xF8,0x01,0xF0,0x78,0x01,0xE0,0x7C,0x03,0xE0, + 0x3C,0x03,0xC0,0x3E,0x07,0xC0,0x1E,0x07,0x80,0x1F,0x0F,0x80, + 0x0F,0x0F,0x00,0x0F,0x9F,0x00,0x07,0x9E,0x00,0x07,0xFE,0x00, + 0x03,0xFC,0x00,0x01,0xF8,0x00,0x00,0xF0,0x00 +}; +const GuiConst_INT8U Ch000370[99] = +{ + 0,6,4,0,8, 17,14,11,17,9, + 0,19, + 8,30, + 0x04,0x00,0x00,0x28, + 0xFF,0xFF,0xE0,0xFF,0xFF,0xC0,0xFF,0xFF,0x80,0x00,0x0F,0x80, + 0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00, + 0x00,0x3C,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0xF8,0x00, + 0x00,0xF0,0x00,0x01,0xF0,0x00,0x01,0xE0,0x00,0x03,0xE0,0x00, + 0x03,0xC0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x0F,0x80,0x00, + 0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00,0x00, + 0x3C,0x00,0x00,0x7F,0xFF,0xC0,0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000371[21] = +{ + 8,8,8,8,11, 15,11,11,15,12, + 8,8, + 8,30, + 0xEE,0xFF,0xFF,0x3B, + 0xFF,0xF0,0xFF +}; +const GuiConst_INT8U Ch000372[63] = +{ + 0,4,8,8,9, 10,10,14,18,9, + 0,19, + 8,30, + 0xAA,0xAA,0xAA,0x2A, + 0xF8,0x00,0x00,0x7C,0x00,0x00,0x3E,0x00,0x00,0x1F,0x00,0x00, + 0x0F,0x80,0x00,0x07,0xC0,0x00,0x03,0xE0,0x00,0x01,0xF0,0x00, + 0x00,0xF8,0x00,0x00,0x7C,0x00,0x00,0x3E,0x00,0x00,0x1F,0x00, + 0x00,0x0F,0x80,0x00,0x07,0xC0,0x00,0x03,0xE0 +}; +const GuiConst_INT8U Ch000373[21] = +{ + 1,5,5,1,4, 8,8,8,8,5, + 1,8, + 8,30, + 0xEE,0xFF,0xFF,0x3B, + 0xFF,0x0F,0xFF +}; +const GuiConst_INT8U Ch000374[34] = +{ + 2,7,7,7,7, 13,8,8,8,8, + 1,14, + 6,9, + 0x00,0x00, + 0x03,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x3F,0xF0,0x7F,0xF8, + 0xFC,0xFC,0xF8,0x7C,0x70,0x38 +}; +const GuiConst_INT8U Ch000375[18] = +{ + 10,10,10,0,10, 10,10,10,20,10, + 0,21, + 34,4, + 0x0E, + 0xFF,0xFF,0xF8 +}; +const GuiConst_INT8U Ch000376[22] = +{ + 5,7,7,7,7, 8,10,8,8,8, + 5,6, + 8,8, + 0x04, + 0x60,0xF0,0xF8,0x78,0x3C,0x1C,0x0C +}; +const GuiConst_INT8U Ch000377[62] = +{ + 8,1,0,1,8, 8,14,16,16,8, + 0,17, + 18,20, + 0x08,0x64,0x02, + 0x0F,0xE0,0x00,0x3F,0xF8,0x00,0x7F,0xFE,0x00,0x38,0x3F,0x00, + 0x00,0x0F,0x00,0x00,0x0F,0x80,0x0F,0xE7,0x80,0x3F,0xFF,0x80, + 0x7F,0xFF,0x80,0xF8,0x3F,0x80,0xF0,0x0F,0x80,0xF8,0x3F,0x80, + 0x7F,0xFF,0x80,0x3F,0xFF,0x80,0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000378[60] = +{ + 0,0,0,0,8, 3,14,16,14,8, + 0,17, + 8,30, + 0xFE,0x23,0x7C,0x08, + 0xF0,0x00,0x00,0xF3,0xE0,0x00,0xFF,0xF8,0x00,0xFF,0xFE,0x00, + 0xFC,0x1F,0x00,0xF0,0x0F,0x00,0xF0,0x0F,0x80,0xF0,0x07,0x80, + 0xF0,0x0F,0x80,0xF0,0x0F,0x00,0xFC,0x1F,0x00,0xFF,0xFE,0x00, + 0xFF,0xF8,0x00,0xF3,0xE0,0x00 +}; +const GuiConst_INT8U Ch000379[62] = +{ + 8,2,0,2,8, 8,15,14,15,8, + 0,17, + 18,20, + 0x00,0x1F,0x00, + 0x03,0xF8,0x00,0x0F,0xFE,0x00,0x3F,0xFF,0x00,0x3F,0xFF,0x80, + 0x7C,0x0F,0x00,0x78,0x06,0x00,0xF8,0x00,0x00,0xF0,0x00,0x00, + 0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x0F,0x00,0x3F,0xFF,0x80, + 0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00 +}; +const GuiConst_INT8U Ch000380[60] = +{ + 13,2,0,2,8, 16,16,16,16,8, + 0,17, + 8,30, + 0xFE,0x23,0x7C,0x08, + 0x00,0x07,0x80,0x03,0xE7,0x80,0x0F,0xFF,0x80,0x3F,0xFF,0x80, + 0x7C,0x1F,0x80,0x78,0x07,0x80,0xF8,0x07,0x80,0xF0,0x07,0x80, + 0xF8,0x07,0x80,0x78,0x07,0x80,0x7C,0x1F,0x80,0x3F,0xFF,0x80, + 0x0F,0xFF,0x80,0x03,0xE7,0x80 +}; +const GuiConst_INT8U Ch000381[65] = +{ + 8,2,0,2,8, 8,14,16,15,8, + 0,17, + 18,20, + 0x08,0x0E,0x00, + 0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00, + 0x78,0x0F,0x00,0xF8,0x0F,0x80,0xF0,0x07,0x80,0xFF,0xFF,0x80, + 0xF0,0x00,0x00,0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x1F,0x00, + 0x3F,0xFF,0x80,0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00 +}; +const GuiConst_INT8U Ch000382[36] = +{ + 7,4,6,6,8, 16,12,9,9,8, + 3,15, + 8,30, + 0x80,0x77,0xFF,0x3F, + 0x03,0xE0,0x0F,0xF8,0x0F,0xFC,0x1F,0xFE,0x1F,0x3C,0x1E,0x18, + 0x1E,0x00,0xFF,0xC0,0x1E,0x00 +}; +const GuiConst_INT8U Ch000383[81] = +{ + 8,2,0,2,1, 8,16,16,16,16, + 0,17, + 18,29, + 0x08,0x1F,0x22,0x00, + 0x03,0xE7,0x80,0x0F,0xFF,0x80,0x3F,0xFF,0x80,0x7C,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0x80,0xF0,0x07,0x80,0xF8,0x07,0x80, + 0x78,0x07,0x80,0x7C,0x1F,0x80,0x3F,0xFF,0x80,0x0F,0xFF,0x80, + 0x03,0xE7,0x80,0x00,0x07,0x80,0x00,0x0F,0x80,0x30,0x0F,0x00, + 0x78,0x3F,0x00,0xFF,0xFE,0x00,0x7F,0xFE,0x00,0x3F,0xF8,0x00, + 0x0F,0xE0,0x00 +}; +const GuiConst_INT8U Ch000384[42] = +{ + 0,0,0,0,8, 3,14,16,16,8, + 0,17, + 8,30, + 0xFE,0x23,0xFC,0x3F, + 0xF0,0x00,0x00,0xF3,0xE0,0x00,0xFF,0xF8,0x00,0xFF,0xFE,0x00, + 0xFC,0x1F,0x00,0xF0,0x0F,0x00,0xF0,0x0F,0x80,0xF0,0x07,0x80 +}; +const GuiConst_INT8U Ch000385[23] = +{ + 6,6,6,6,7, 9,9,9,9,8, + 5,6, + 9,29, + 0x9C,0xFD,0xFF,0x1F, + 0x78,0xFC,0x78,0x00,0x78 +}; +const GuiConst_INT8U Ch000386[41] = +{ + 9,9,9,7,2, 12,12,12,12,12, + 1,13, + 9,38, + 0x9C,0xFD,0xFF,0xFF,0x00, + 0x00,0xF0,0x01,0xF8,0x00,0xF0,0x00,0x00,0x00,0xF0,0x30,0xF0, + 0x79,0xF0,0xFF,0xF0,0x7F,0xE0,0x3F,0xE0,0x0F,0x80 +}; +const GuiConst_INT8U Ch000387[78] = +{ + 0,0,0,0,8, 3,16,12,16,8, + 0,17, + 8,30, + 0xFE,0x03,0x10,0x00, + 0xF0,0x00,0x00,0xF0,0x0F,0x80,0xF0,0x1F,0x00,0xF0,0x3E,0x00, + 0xF0,0x7C,0x00,0xF0,0xF8,0x00,0xF1,0xF0,0x00,0xF3,0xE0,0x00, + 0xF7,0xC0,0x00,0xFF,0x80,0x00,0xFF,0x00,0x00,0xFF,0x80,0x00, + 0xFF,0xC0,0x00,0xF3,0xE0,0x00,0xF1,0xF0,0x00,0xF0,0xF8,0x00, + 0xF0,0x7C,0x00,0xF0,0x3E,0x00,0xF0,0x1F,0x00,0xF0,0x0F,0x80 +}; +const GuiConst_INT8U Ch000388[19] = +{ + 6,6,6,6,7, 9,9,9,9,8, + 6,4, + 8,30, + 0xFE,0xFF,0xFF,0x3F, + 0xF0 +}; +const GuiConst_INT8U Ch000389[35] = +{ + 8,0,0,0,8, 9,16,17,17,9, + 0,18, + 18,20, + 0xC0,0xFF,0x0F, + 0xF3,0x0E,0x00,0xF7,0x9F,0x00,0xFF,0xFF,0x80,0xFF,0xFF,0xC0, + 0xFB,0xF7,0xC0,0xF1,0xE3,0xC0 +}; +const GuiConst_INT8U Ch000390[38] = +{ + 8,0,0,0,8, 8,14,16,16,8, + 0,17, + 18,20, + 0x08,0xFF,0x0F, + 0xF3,0xE0,0x00,0xFF,0xF8,0x00,0xFF,0xFE,0x00,0xFC,0x1F,0x00, + 0xF0,0x0F,0x00,0xF0,0x0F,0x80,0xF0,0x07,0x80 +}; +const GuiConst_INT8U Ch000391[56] = +{ + 8,2,0,2,8, 8,14,16,14,8, + 0,17, + 18,20, + 0x08,0x1F,0x02, + 0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00, + 0x78,0x0F,0x00,0xF8,0x0F,0x80,0xF0,0x07,0x80,0xF8,0x0F,0x80, + 0x78,0x0F,0x00,0x7C,0x1F,0x00,0x3F,0xFE,0x00,0x0F,0xF8,0x00, + 0x07,0xE0,0x00 +}; +const GuiConst_INT8U Ch000392[60] = +{ + 8,0,0,0,0, 8,14,16,14,3, + 0,17, + 18,29, + 0x08,0x1F,0xE2,0x1F, + 0xF3,0xE0,0x00,0xFF,0xF8,0x00,0xFF,0xFE,0x00,0xFC,0x1F,0x00, + 0xF0,0x0F,0x00,0xF0,0x0F,0x80,0xF0,0x07,0x80,0xF0,0x0F,0x80, + 0xF0,0x0F,0x00,0xFC,0x1F,0x00,0xFF,0xFE,0x00,0xFF,0xF8,0x00, + 0xF3,0xE0,0x00,0xF0,0x00,0x00 +}; +const GuiConst_INT8U Ch000393[60] = +{ + 8,2,0,2,13, 8,16,16,16,16, + 0,17, + 18,29, + 0x08,0x1F,0xE2,0x1F, + 0x03,0xE7,0x80,0x0F,0xFF,0x80,0x3F,0xFF,0x80,0x7C,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0x80,0xF0,0x07,0x80,0xF8,0x07,0x80, + 0x78,0x07,0x80,0x7C,0x1F,0x80,0x3F,0xFF,0x80,0x0F,0xFF,0x80, + 0x03,0xE7,0x80,0x00,0x07,0x80 +}; +const GuiConst_INT8U Ch000394[31] = +{ + 9,4,4,4,6, 9,14,7,7,6, + 4,11, + 18,20, + 0x08,0xFF,0x0F, + 0xF1,0xE0,0xF7,0xE0,0xFF,0xE0,0xFF,0x00,0xFC,0x00,0xF8,0x00, + 0xF0,0x00 +}; +const GuiConst_INT8U Ch000395[65] = +{ + 8,1,1,1,8, 8,15,16,15,8, + 0,17, + 18,20, + 0x48,0x40,0x02, + 0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7F,0xFF,0x00,0xF8,0x0E,0x00, + 0xF0,0x00,0x00,0xF8,0x00,0x00,0x7F,0xF8,0x00,0x7F,0xFE,0x00, + 0x3F,0xFF,0x00,0x0F,0xFF,0x00,0x00,0x0F,0x80,0x00,0x07,0x80, + 0x38,0x0F,0x80,0x7F,0xFF,0x00,0x3F,0xFE,0x00,0x0F,0xF8,0x00 +}; +const GuiConst_INT8U Ch000396[36] = +{ + 4,2,4,5,8, 7,9,13,14,8, + 1,15, + 8,30, + 0xFE,0xDD,0xFF,0x00, + 0x1E,0x00,0xFF,0xC0,0x1E,0x00,0x1E,0x18,0x1F,0x3C,0x1F,0xFE, + 0x0F,0xFC,0x0F,0xF8,0x03,0xE0 +}; +const GuiConst_INT8U Ch000397[38] = +{ + 8,0,0,2,8, 8,16,16,16,8, + 0,17, + 18,20, + 0xFE,0x1F,0x02, + 0xF0,0x07,0x80,0xF8,0x07,0x80,0x78,0x07,0x80,0x7C,0x1F,0x80, + 0x3F,0xFF,0x80,0x0F,0xFF,0x80,0x03,0xE7,0x80 +}; +const GuiConst_INT8U Ch000398[50] = +{ + 8,0,2,6,8, 8,16,14,10,8, + 0,17, + 18,20, + 0x52,0x4A,0x0B, + 0xF0,0x07,0x80,0xF8,0x0F,0x80,0x78,0x0F,0x00,0x3C,0x1E,0x00, + 0x3E,0x3E,0x00,0x1E,0x3C,0x00,0x0F,0x78,0x00,0x0F,0xF8,0x00, + 0x07,0xF0,0x00,0x03,0xE0,0x00,0x01,0xC0,0x00 +}; +const GuiConst_INT8U Ch000399[47] = +{ + 8,0,1,3,8, 9,17,16,14,9, + 0,18, + 18,20, + 0x8E,0x70,0x0D, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x78,0xC7,0x80, + 0x79,0xE7,0x80,0x7D,0xEF,0x80,0x3D,0xEF,0x00,0x3F,0xFF,0x00, + 0x1F,0x3E,0x00,0x1E,0x1E,0x00 +}; +const GuiConst_INT8U Ch000400[68] = +{ + 8,0,3,0,8, 8,16,13,16,8, + 0,17, + 18,20, + 0x00,0x15,0x00, + 0xF8,0x0F,0x80,0x78,0x0F,0x00,0x7C,0x1F,0x00,0x3E,0x3E,0x00, + 0x1E,0x3C,0x00,0x1F,0x7C,0x00,0x0F,0xF8,0x00,0x07,0xF0,0x00, + 0x03,0xE0,0x00,0x07,0xF0,0x00,0x0F,0xF8,0x00,0x1F,0x7C,0x00, + 0x1E,0x3C,0x00,0x3E,0x3E,0x00,0x7C,0x1F,0x00,0x78,0x0F,0x00, + 0xF8,0x0F,0x80 +}; +const GuiConst_INT8U Ch000401[75] = +{ + 8,0,2,4,1, 8,16,14,10,7, + 0,17, + 18,29, + 0x52,0x4A,0x2B,0x00, + 0xF0,0x07,0x80,0xF8,0x0F,0x80,0x78,0x0F,0x00,0x3C,0x1E,0x00, + 0x3E,0x3E,0x00,0x1E,0x3C,0x00,0x0F,0x78,0x00,0x0F,0xF8,0x00, + 0x07,0xF0,0x00,0x03,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00, + 0x0F,0x00,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00,0x7C,0x00,0x00, + 0xF8,0x00,0x00,0xF0,0x00,0x00,0x60,0x00,0x00 +}; +const GuiConst_INT8U Ch000402[59] = +{ + 8,0,4,0,8, 8,16,12,16,8, + 0,17, + 18,20, + 0x04,0x49,0x0A, + 0xFF,0xFF,0x80,0xFF,0xFF,0x00,0xFF,0xFE,0x00,0x00,0x3C,0x00, + 0x00,0x7C,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00,0x03,0xE0,0x00, + 0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00, + 0x7F,0xFF,0x80,0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000403[52] = +{ + 9,6,6,9,10, 15,11,11,15,10, + 5,11, + 8,30, + 0x88,0x8F,0xF8,0x08, + 0x01,0xE0,0x07,0xE0,0x0F,0xE0,0x1F,0x80,0x1F,0x00,0x1E,0x00, + 0x3E,0x00,0x7C,0x00,0xF8,0x00,0x7C,0x00,0x3E,0x00,0x1E,0x00, + 0x1F,0x00,0x1F,0x80,0x0F,0xE0,0x07,0xE0,0x01,0xE0 +}; +const GuiConst_INT8U Ch000404[19] = +{ + 6,6,6,6,7, 9,9,9,9,8, + 6,4, + 8,30, + 0xFE,0xFF,0xFF,0x3F, + 0xF0 +}; +const GuiConst_INT8U Ch000405[52] = +{ + 1,5,5,1,6, 7,10,10,7,6, + 1,11, + 8,30, + 0x88,0x8F,0xF8,0x08, + 0xF0,0x00,0xFC,0x00,0xFE,0x00,0x3F,0x00,0x1F,0x00,0x0F,0x00, + 0x0F,0x80,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x0F,0x80,0x0F,0x00, + 0x1F,0x00,0x3F,0x00,0xFE,0x00,0xFC,0x00,0xF0,0x00 +}; +const GuiConst_INT8U Ch000406[30] = +{ + 8,2,0,8,8, 9,17,15,9,9, + 0,18, + 20,6, + 0x08, + 0x3F,0x01,0x80,0x7F,0xC3,0xC0,0xFF,0xFF,0xC0,0xF0,0xFF,0x80, + 0x60,0x3F,0x00 +}; +const GuiConst_INT8U Ch000407[68] = +{ + 8,0,0,0,8, 8,16,16,16,8, + 0,17, + 13,21, + 0x00,0x00,0x1D, + 0x00,0x01,0x80,0x00,0x0F,0x80,0x00,0x7F,0x80,0x03,0xFF,0x80, + 0x1F,0xFE,0x00,0xFF,0xF0,0x00,0xFF,0x80,0x00,0xFC,0x00,0x00, + 0xFF,0x80,0x00,0xFF,0xF0,0x00,0x1F,0xFE,0x00,0x03,0xFF,0x80, + 0x00,0x7F,0x80,0x00,0x0F,0x80,0x00,0x01,0x80,0x00,0x00,0x00, + 0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000408[68] = +{ + 8,0,0,0,8, 8,16,16,16,8, + 0,17, + 13,21, + 0x00,0x00,0x1D, + 0xC0,0x00,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,0xFF,0xE0,0x00, + 0x3F,0xFC,0x00,0x07,0xFF,0x80,0x00,0xFF,0x80,0x00,0x1F,0x80, + 0x00,0xFF,0x80,0x07,0xFF,0x80,0x3F,0xFC,0x00,0xFF,0xE0,0x00, + 0xFF,0x00,0x00,0xF8,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000409[49] = +{ + 9,0,0,9,9, 9,18,18,9,9, + 0,19, + 17,11, + 0x00,0x00, + 0x1E,0x0F,0x00,0x7F,0xBF,0xC0,0x7F,0xFF,0xC0,0xF3,0xF9,0xE0, + 0xE1,0xF0,0xE0,0xE0,0xE0,0xE0,0xE1,0xF0,0xE0,0xF3,0xF9,0xE0, + 0x7F,0xFF,0xC0,0x7F,0xBF,0xC0,0x1E,0x0F,0x00 +}; +const GuiConst_INT8U Ch000410[23] = +{ + 6,6,6,4,6, 7,7,7,9,7, + 4,6, + 32,10, + 0x1C,0x00, + 0x78,0xFC,0x7C,0x3C,0x38,0x78,0x70 +}; +const GuiConst_INT8U Ch000411[40] = +{ + 7,3,6,1,7, 14,12,9,8,8, + 1,14, + 8,30, + 0xC4,0xDD,0xFF,0x11, + 0x00,0xFC,0x03,0xFC,0x07,0xFC,0x07,0xC0,0x07,0x80,0x3F,0xF0, + 0x07,0x80,0x0F,0x80,0xFF,0x80,0xFF,0x00,0xFC,0x00 +}; +const GuiConst_INT8U Ch000412[30] = +{ + 7,7,7,1,2, 8,8,8,14,13, + 1,14, + 32,10, + 0x1C,0x00, + 0x78,0x78,0xFC,0xFC,0x7C,0x7C,0x3C,0x3C,0x38,0x38,0x78,0x78, + 0x70,0x70 +}; +const GuiConst_INT8U Ch000413[24] = +{ + 9,9,9,0,9, 9,9,9,18,9, + 0,19, + 32,6, + 0x1C, + 0x70,0xE1,0xC0,0xF9,0xF3,0xE0,0x70,0xE1,0xC0 +}; +const GuiConst_INT8U Ch000414[57] = +{ + 6,0,0,0,8, 11,17,17,17,9, + 0,18, + 12,26, + 0x08,0x3F,0xB4,0x03, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0x3F,0x00,0x0F,0x3C,0x00, + 0xFF,0x3F,0xC0 +}; +const GuiConst_INT8U Ch000415[49] = +{ + 8,0,0,8,8, 9,17,17,9,9, + 0,18, + 16,14, + 0x88,0x08, + 0x3F,0x01,0x80,0x7F,0xC3,0xC0,0xFF,0xFF,0xC0,0xF0,0xFF,0x80, + 0x60,0x3F,0x00,0x00,0x00,0x00,0x3F,0x01,0x80,0x7F,0xC3,0xC0, + 0xFF,0xFF,0xC0,0xF0,0xFF,0x80,0x60,0x3F,0x00 +}; +const GuiConst_INT8U Ch000416[31] = +{ + 5,3,7,7,7, 10,12,8,8,8, + 2,12, + 8,8, + 0x00, + 0x06,0x00,0x0F,0x00,0x1F,0x80,0x3F,0xC0,0x7F,0xE0,0xF9,0xF0, + 0x70,0xE0,0x20,0x40 +}; +const GuiConst_INT8U Ch000417[96] = +{ + 0,1,1,0,9, 12,10,18,19,10, + 0,20, + 8,30, + 0x00,0x90,0x04,0x01, + 0x38,0x78,0x00,0x7C,0x78,0x00,0xFE,0xF8,0x00,0xEE,0xF8,0x00, + 0xEE,0xF0,0x00,0xEF,0xF0,0x00,0xFF,0xF0,0x00,0xFF,0xE0,0x00, + 0x7F,0xE0,0x00,0x3B,0xE0,0x00,0x03,0xC0,0x00,0x07,0xC0,0x00, + 0x07,0x80,0x00,0x0F,0x80,0x00,0x0F,0x00,0x00,0x1F,0x00,0x00, + 0x1E,0x00,0x00,0x3E,0xE1,0xC0,0x3F,0xF3,0xE0,0x3F,0xFF,0xF0, + 0x7F,0xBF,0x70,0x7B,0xBF,0x70,0xFB,0xBF,0x70,0xFB,0xFF,0xF0, + 0xF1,0xF3,0xE0,0xF0,0xE1,0xC0 +}; +const GuiConst_INT8U Ch000418[127] = +{ + 2,0,1,2,8, 15,16,17,15,9, + 0,18, + 0,38, + 0x00,0x08,0x00,0x00,0x08, + 0x02,0x10,0x00,0x07,0x38,0x00,0x0F,0xFC,0x00,0x07,0xF8,0x00, + 0x03,0xF0,0x00,0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0x80,0xF0,0x03,0x00, + 0xF8,0x00,0x00,0x78,0x00,0x00,0x7E,0x00,0x00,0x3F,0x80,0x00, + 0x3F,0xF0,0x00,0x0F,0xFC,0x00,0x03,0xFF,0x00,0x00,0xFF,0x00, + 0x00,0x1F,0x80,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0, + 0x30,0x03,0xC0,0x70,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80, + 0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000419[26] = +{ + 7,7,4,8,7, 8,11,8,11,8, + 4,8, + 18,18, + 0xAA,0xAA,0x02, + 0x0F,0x1E,0x3C,0x78,0xF0,0x78,0x3C,0x1E,0x0F +}; +const GuiConst_INT8U Ch000420[63] = +{ + 2,0,0,2,9, 19,18,18,19,10, + 0,20, + 8,30, + 0x08,0xDF,0x7D,0x08, + 0x07,0x9F,0xF0,0x0F,0xDF,0xF0,0x3F,0xFF,0xF0,0x7C,0xFC,0x00, + 0x78,0x7C,0x00,0xF8,0x7C,0x00,0xF0,0x3C,0x00,0xF0,0x3F,0xE0, + 0xF0,0x3C,0x00,0xF8,0x7C,0x00,0x78,0x7C,0x00,0x7C,0xFC,0x00, + 0x3F,0xFF,0xF0,0x0F,0xDF,0xF0,0x07,0x9F,0xF0 +}; +const GuiConst_INT8U Ch000421[34] = +{ + 6,1,6,6,7, 9,14,9,9,8, + 1,14, + 8,30, + 0xAA,0xAA,0xFF,0x3F, + 0x03,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x3F,0xF0,0x7F,0xF8, + 0xFF,0xFC,0x07,0x80 +}; +const GuiConst_INT8U Ch000422[124] = +{ + 0,6,4,0,9, 17,14,11,17,9, + 0,19, + 0,38, + 0x00,0x04,0x00,0x00,0x28, + 0x02,0x10,0x00,0x07,0x38,0x00,0x0F,0xFC,0x00,0x07,0xF8,0x00, + 0x03,0xF0,0x00,0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xE0,0xFF,0xFF,0xC0,0xFF,0xFF,0x80,0x00,0x0F,0x80, + 0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00, + 0x00,0x3C,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0xF8,0x00, + 0x00,0xF0,0x00,0x01,0xF0,0x00,0x01,0xE0,0x00,0x03,0xE0,0x00, + 0x03,0xC0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x0F,0x80,0x00, + 0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00,0x00, + 0x3C,0x00,0x00,0x7F,0xFF,0xC0,0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000423[61] = +{ + 8,1,1,8,8, 9,7,7,9,9, + 0,18, + 15,16, + 0x00,0x01, + 0x01,0x00,0x00,0x03,0x00,0x00,0x07,0x00,0x00,0x0F,0x00,0x00, + 0x1F,0x00,0x00,0x3F,0x00,0x00,0x7F,0xFF,0xC0,0xFF,0xFF,0xC0, + 0x7F,0xFF,0xC0,0x3F,0x00,0x00,0x1F,0x00,0x00,0x0F,0x00,0x00, + 0x07,0x00,0x00,0x03,0x00,0x00,0x01,0x00,0x00 +}; +const GuiConst_INT8U Ch000424[61] = +{ + 8,10,10,8,8, 9,16,16,9,9, + 0,18, + 15,16, + 0x00,0x01, + 0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x38,0x00,0x00,0x3C,0x00, + 0x00,0x3E,0x00,0x00,0x3F,0x00,0xFF,0xFF,0x80,0xFF,0xFF,0xC0, + 0xFF,0xFF,0x80,0x00,0x3F,0x00,0x00,0x3E,0x00,0x00,0x3C,0x00, + 0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x20,0x00 +}; +const GuiConst_INT8U Ch000425[23] = +{ + 6,5,7,7,7, 9,10,8,8,8, + 5,6, + 8,10, + 0xC0,0x01, + 0x38,0x78,0x70,0xF0,0xF8,0xFC,0x78 +}; +const GuiConst_INT8U Ch000426[23] = +{ + 5,6,7,7,7, 10,9,8,8,8, + 5,6, + 8,10, + 0x1C,0x00, + 0x78,0xFC,0x7C,0x3C,0x38,0x78,0x70 +}; +const GuiConst_INT8U Ch000427[30] = +{ + 2,1,7,7,7, 13,14,8,8,8, + 1,14, + 8,10, + 0xC0,0x01, + 0x38,0x38,0x78,0x78,0x70,0x70,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC, + 0x78,0x78 +}; +const GuiConst_INT8U Ch000428[30] = +{ + 1,2,7,7,7, 14,13,8,8,8, + 1,14, + 8,10, + 0x1C,0x00, + 0x78,0x78,0xFC,0xFC,0x7C,0x7C,0x3C,0x3C,0x38,0x38,0x78,0x78, + 0x70,0x70 +}; +const GuiConst_INT8U Ch000429[34] = +{ + 8,1,2,8,8, 8,15,14,8,8, + 1,15, + 15,15, + 0xD0,0x0B, + 0x07,0xC0,0x1F,0xF0,0x3F,0xF8,0x7F,0xFC,0xFF,0xFE,0x7F,0xFC, + 0x3F,0xF8,0x1F,0xF0,0x07,0xC0 +}; +const GuiConst_INT8U Ch000430[17] = +{ + 7,7,0,7,7, 7,7,14,7,7, + 0,15, + 24,4, + 0x0E, + 0xFF,0xFE +}; +const GuiConst_INT8U Ch000431[18] = +{ + 10,10,0,10,10, 10,10,20,10,10, + 0,21, + 24,4, + 0x0E, + 0xFF,0xFF,0xF8 +}; +const GuiConst_INT8U Ch000432[30] = +{ + 0,8,8,8,8, 17,9,9,9,9, + 0,18, + 8,6, + 0x08, + 0x3F,0x01,0x80,0x7F,0xC3,0xC0,0xFF,0xFF,0xC0,0xF0,0xFF,0x80, + 0x60,0x3F,0x00 +}; +const GuiConst_INT8U Ch000433[37] = +{ + 0,3,8,8,8, 17,17,9,9,9, + 0,18, + 8,10, + 0x80,0x03, + 0xFF,0x60,0xC0,0xFF,0x71,0xC0,0x18,0x7B,0xC0,0x18,0x7F,0xC0, + 0x18,0x6E,0xC0,0x18,0x64,0xC0,0x18,0x60,0xC0 +}; +const GuiConst_INT8U Ch000434[93] = +{ + 4,1,1,1,8, 12,15,16,15,8, + 0,17, + 9,29, + 0x00,0x90,0x80,0x04, + 0x04,0x10,0x00,0x0E,0x38,0x00,0x1F,0x7C,0x00,0x0F,0xF8,0x00, + 0x07,0xF0,0x00,0x03,0xE0,0x00,0x01,0xC0,0x00,0x00,0x80,0x00, + 0x00,0x00,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7F,0xFF,0x00, + 0xF8,0x0E,0x00,0xF0,0x00,0x00,0xF8,0x00,0x00,0x7F,0xF8,0x00, + 0x7F,0xFE,0x00,0x3F,0xFF,0x00,0x0F,0xFF,0x00,0x00,0x0F,0x80, + 0x00,0x07,0x80,0x38,0x0F,0x80,0x7F,0xFF,0x00,0x3F,0xFE,0x00, + 0x0F,0xF8,0x00 +}; +const GuiConst_INT8U Ch000435[26] = +{ + 8,5,8,5,8, 9,9,12,8,9, + 5,8, + 18,18, + 0xAA,0xAA,0x02, + 0xF0,0x78,0x3C,0x1E,0x0F,0x1E,0x3C,0x78,0xF0 +}; +const GuiConst_INT8U Ch000436[56] = +{ + 9,1,0,1,9, 10,18,19,18,10, + 0,20, + 18,20, + 0xC8,0x2E,0x00, + 0x0F,0x0F,0x00,0x3F,0xFF,0xC0,0x7F,0xFF,0xE0,0xF9,0xF9,0xF0, + 0xF0,0xF0,0xF0,0xF0,0xFF,0xF0,0xF0,0xF0,0x00,0xF0,0xF0,0x40, + 0xF9,0xF8,0xE0,0x7F,0xFF,0xF0,0x7F,0xFF,0xE0,0x3F,0xFF,0xC0, + 0x0F,0x0F,0x00 +}; +const GuiConst_INT8U Ch000437[44] = +{ + 8,5,0,8,8, 8,11,16,8,8, + 0,17, + 14,17, + 0x54,0x55,0x01, + 0x00,0x80,0x00,0x01,0xC0,0x00,0x03,0xE0,0x00,0x07,0xF0,0x00, + 0x0F,0xF8,0x00,0x1F,0xFC,0x00,0x3F,0xFE,0x00,0x7F,0xFF,0x00, + 0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000438[84] = +{ + 4,0,4,0,8, 11,16,12,16,8, + 0,17, + 9,29, + 0x00,0x09,0x92,0x14, + 0x04,0x20,0x00,0x0E,0x70,0x00,0x1F,0xF8,0x00,0x0F,0xF0,0x00, + 0x07,0xE0,0x00,0x03,0xC0,0x00,0x01,0x80,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0x80,0xFF,0xFF,0x00,0xFF,0xFE,0x00,0x00,0x3C,0x00, + 0x00,0x7C,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00,0x03,0xE0,0x00, + 0x07,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00, + 0x7F,0xFF,0x80,0xFF,0xFF,0x80 +}; +const GuiConst_INT8U Ch000439[76] = +{ + 0,4,8,8,9, 19,15,11,11,10, + 0,20, + 0,38, + 0x9C,0x00,0xA0,0xFE,0x3F, + 0x1E,0x07,0x80,0x3F,0x0F,0xC0,0x1E,0x07,0x80,0x00,0x00,0x00, + 0xF0,0x00,0xF0,0xF8,0x01,0xF0,0x78,0x01,0xE0,0x7C,0x03,0xE0, + 0x3C,0x03,0xC0,0x3E,0x07,0xC0,0x1E,0x07,0x80,0x1F,0x0F,0x80, + 0x0F,0x0F,0x00,0x0F,0x9F,0x00,0x07,0x9E,0x00,0x07,0xFE,0x00, + 0x03,0xFC,0x00,0x01,0xF8,0x00,0x00,0xF0,0x00 +}; +const GuiConst_INT8U Ch000440[16] = +{ + 0,0,0,0,0, 4,4,4,4,4, + 0,5, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000441[27] = +{ + 6,7,5,6,8, 10,9,11,10,8, + 5,7, + 8,30, + 0xCC,0x7E,0xEF,0x17, + 0x38,0x7C,0x38,0x00,0x38,0x7C,0xFE,0x7C,0x38 +}; +const GuiConst_INT8U Ch000442[34] = +{ + 6,6,1,6,7, 9,9,14,9,8, + 1,14, + 8,30, + 0xFE,0xFF,0xAA,0x2A, + 0x07,0x80,0xFF,0xFC,0x7F,0xF8,0x3F,0xF0,0x1F,0xE0,0x0F,0xC0, + 0x07,0x80,0x03,0x00 +}; +const GuiConst_INT8U Ch000443[78] = +{ + 7,2,0,1,9, 17,13,14,18,9, + 0,19, + 8,30, + 0x80,0xBB,0x07,0x00, + 0x00,0x3E,0x00,0x00,0xFF,0x80,0x01,0xFF,0xC0,0x01,0xFF,0xE0, + 0x03,0xE3,0xC0,0x03,0xC1,0x80,0x03,0xC0,0x00,0x3F,0xFC,0x00, + 0x03,0xC0,0x00,0x1F,0xC0,0x00,0x7F,0xC0,0x00,0x7F,0xE0,0x00, + 0xFF,0xF0,0x00,0xF3,0xF8,0x00,0xF3,0xFC,0x00,0xF3,0xFF,0x00, + 0xFF,0xDF,0xE0,0x7F,0x8F,0xE0,0x7F,0x87,0xE0,0x3F,0x01,0xE0 +}; +const GuiConst_INT8U Ch000444[42] = +{ + 8,1,2,8,8, 8,15,14,8,8, + 1,15, + 15,15, + 0x80,0x01, + 0xC7,0xC6,0xFF,0xFE,0x7F,0xFC,0x7C,0x7C,0x70,0x1C,0xF0,0x1E, + 0xE0,0x0E,0xF0,0x1E,0x70,0x1C,0x7C,0x7C,0x7F,0xFC,0xFF,0xFE, + 0xC7,0xC6 +}; +const GuiConst_INT8U Ch000445[44] = +{ + 8,1,5,8,8, 8,15,11,8,8, + 0,17, + 14,17, + 0xAA,0xAA,0x00, + 0xFF,0xFF,0x80,0x7F,0xFF,0x00,0x3F,0xFE,0x00,0x1F,0xFC,0x00, + 0x0F,0xF8,0x00,0x07,0xF0,0x00,0x03,0xE0,0x00,0x01,0xC0,0x00, + 0x00,0x80,0x00 +}; +const GuiConst_INT8U Ch000446[21] = +{ + 6,6,6,6,7, 9,9,9,9,8, + 6,4, + 8,30, + 0xFE,0xDF,0xFD,0x3F, + 0xF0,0x00,0xF0 +}; +const GuiConst_INT8U Ch000447[87] = +{ + 2,2,3,2,8, 15,14,15,15,9, + 2,14, + 6,34, + 0x00,0x00,0x00,0x00,0x00, + 0x0F,0xC0,0x3F,0xF0,0x7F,0xF8,0x7F,0xFC,0xF8,0x7C,0xF0,0x38, + 0xF8,0x10,0x7C,0x00,0x7E,0x00,0x3F,0x00,0x3F,0x80,0x7F,0xC0, + 0x7F,0xE0,0xFB,0xF0,0xF1,0xF8,0xF0,0xF8,0xF0,0x7C,0xF8,0x3C, + 0x7C,0x3C,0x7E,0x3C,0x3F,0x7C,0x1F,0xF8,0x0F,0xF8,0x07,0xF0, + 0x03,0xF0,0x01,0xF8,0x00,0xF8,0x20,0x7C,0x70,0x3C,0xF8,0x7C, + 0xFF,0xF8,0x7F,0xF8,0x3F,0xF0,0x0F,0xC0 +}; +const GuiConst_INT8U Ch000448[21] = +{ + 1,8,8,8,8, 16,9,9,9,9, + 1,16, + 8,6, + 0x1C, + 0x78,0x1E,0xFC,0x3F,0x78,0x1E +}; +const GuiConst_INT8U Ch000449[74] = +{ + 10,3,0,4,10, 10,17,20,16,10, + 0,21, + 17,21, + 0x00,0x0C,0x00, + 0x01,0xFC,0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x1F,0x07,0xC0, + 0x3C,0x01,0xE0,0x78,0x78,0xF0,0x71,0xFC,0x70,0xF1,0xFE,0x78, + 0xE3,0xCC,0x38,0xE3,0x80,0x38,0xE3,0xCC,0x38,0xF1,0xFE,0x78, + 0x71,0xFC,0x70,0x78,0x78,0xF0,0x3C,0x01,0xE0,0x1F,0x07,0xC0, + 0x0F,0xFF,0x80,0x07,0xFE,0x00,0x01,0xFC,0x00 +}; +const GuiConst_INT8U Ch000450[44] = +{ + 0,0,4,4,4, 8,8,4,4,4, + 0,9, + 8,15, + 0x00,0x04, + 0x3E,0x00,0x7F,0x00,0xFF,0x80,0x63,0x80,0x03,0x80,0x3F,0x80, + 0x7F,0x80,0xFF,0x80,0xF3,0x80,0xE3,0x80,0xF7,0x80,0xFF,0x80, + 0x7F,0x80,0x3D,0x80 +}; +const GuiConst_INT8U Ch000451[55] = +{ + 8,1,1,8,8, 9,17,17,9,9, + 0,18, + 16,14, + 0x80,0x00, + 0x03,0xC3,0xC0,0x07,0xC7,0xC0,0x0F,0x8F,0x80,0x1F,0x1F,0x00, + 0x3E,0x3E,0x00,0x7C,0x7C,0x00,0xF8,0xF8,0x00,0x7C,0x7C,0x00, + 0x3E,0x3E,0x00,0x1F,0x1F,0x00,0x0F,0x8F,0x80,0x07,0xC7,0xC0, + 0x03,0xC3,0xC0 +}; +const GuiConst_INT8U Ch000452[22] = +{ + 8,0,7,8,8, 9,17,17,9,9, + 0,18, + 18,10, + 0xEE,0x03, + 0xFF,0xFF,0xC0,0x00,0x03,0xC0 +}; +const GuiConst_INT8U Ch000453[17] = +{ + 9,9,4,9,9, 9,9,14,9,9, + 4,11, + 22,4, + 0x0E, + 0xFF,0xE0 +}; +const GuiConst_INT8U Ch000454[77] = +{ + 10,3,0,4,10, 10,17,20,16,10, + 0,21, + 17,21, + 0x00,0x02,0x00, + 0x01,0xFC,0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x1F,0x07,0xC0, + 0x3C,0x01,0xE0,0x7B,0xF8,0xF0,0x73,0xFC,0x70,0xF3,0xFE,0x78, + 0xE3,0x8E,0x38,0xE3,0xFE,0x38,0xE3,0xFC,0x38,0xE3,0xF8,0x38, + 0xF3,0xBC,0x78,0x73,0x9E,0x70,0x7B,0x8E,0xF0,0x3C,0x01,0xE0, + 0x1F,0x07,0xC0,0x0F,0xFF,0x80,0x07,0xFE,0x00,0x01,0xFC,0x00 +}; +const GuiConst_INT8U Ch000455[18] = +{ + 0,8,8,8,8, 17,9,9,9,9, + 0,18, + 2,4, + 0x0E, + 0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000456[34] = +{ + 0,0,5,5,5, 12,12,7,7,7, + 0,13, + 6,13, + 0xC8,0x04, + 0x0F,0x80,0x3F,0xE0,0x7F,0xF0,0xF8,0xF8,0xF0,0x78,0xF8,0xF8, + 0x7F,0xF0,0x3F,0xE0,0x0F,0x80 +}; +const GuiConst_INT8U Ch000457[32] = +{ + 7,0,0,0,8, 10,17,17,17,9, + 0,18, + 11,24, + 0x7E,0xF7,0xEB, + 0x01,0xE0,0x00,0xFF,0xFF,0xC0,0x01,0xE0,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000458[40] = +{ + 0,0,4,4,4, 8,8,4,4,4, + 0,9, + 8,15, + 0x00,0x68, + 0x3E,0x00,0x7F,0x00,0xFF,0x80,0x63,0x80,0x03,0x80,0x07,0x80, + 0x1F,0x00,0x3E,0x00,0x78,0x00,0xF0,0x00,0xE0,0x00,0xFF,0x80 +}; +const GuiConst_INT8U Ch000459[42] = +{ + 0,0,4,4,4, 8,8,4,4,4, + 0,9, + 8,15, + 0x20,0x04, + 0x3E,0x00,0x7F,0x00,0xFF,0x80,0x63,0x80,0x03,0x80,0x0F,0x80, + 0x0F,0x00,0x0F,0x80,0x03,0x80,0x63,0x80,0xFF,0x80,0x7F,0x00, + 0x3E,0x00 +}; +const GuiConst_INT8U Ch000460[22] = +{ + 7,5,7,7,7, 10,8,8,8,8, + 5,6, + 8,8, + 0x04, + 0x18,0x3C,0x7C,0x78,0xF0,0xE0,0xC0 +}; +const GuiConst_INT8U Ch000461[42] = +{ + 8,0,0,0,0, 8,16,16,14,3, + 0,17, + 18,29, + 0xFE,0x1F,0xE2,0x1F, + 0xF0,0x07,0x80,0xF0,0x0F,0x80,0xF0,0x0F,0x00,0xFC,0x1F,0x00, + 0xFF,0xFE,0x00,0xFF,0xF8,0x00,0xF3,0xE0,0x00,0xF0,0x00,0x00 +}; +const GuiConst_INT8U Ch000462[48] = +{ + 1,0,7,7,9, 19,16,16,16,10, + 0,20, + 8,30, + 0xC8,0x89,0xFF,0x3F, + 0x0F,0xFF,0xF0,0x3F,0xFF,0xF0,0x7F,0xFF,0xF0,0xF9,0xE7,0x80, + 0xF1,0xE7,0x80,0xF9,0xE7,0x80,0x7F,0xE7,0x80,0x3F,0xE7,0x80, + 0x0F,0xE7,0x80,0x01,0xE7,0x80 +}; +const GuiConst_INT8U Ch000463[18] = +{ + 7,5,7,7,7, 8,10,8,8,8, + 5,6, + 19,6, + 0x1C, + 0x78,0xFC,0x78 +}; +const GuiConst_INT8U Ch000464[34] = +{ + 8,8,8,6,3, 8,8,8,12,13, + 3,11, + 38,9, + 0x00,0x00, + 0x1F,0x00,0x1F,0xC0,0x0F,0xE0,0x01,0xE0,0x00,0xE0,0x01,0xE0, + 0xFF,0xE0,0xFF,0xC0,0x7F,0x00 +}; +const GuiConst_INT8U Ch000465[23] = +{ + 1,4,3,3,3, 6,6,3,3,3, + 0,7, + 8,15, + 0x80,0x7F, + 0x1E,0x3E,0x7E,0xFE,0xEE,0x4E,0x0E +}; +const GuiConst_INT8U Ch000466[30] = +{ + 0,0,4,4,4, 8,8,4,4,4, + 0,9, + 8,15, + 0xF0,0x0F, + 0x3E,0x00,0x7F,0x00,0xFF,0x80,0xE3,0x80,0xFF,0x80,0x7F,0x00, + 0x3E,0x00 +}; +const GuiConst_INT8U Ch000467[55] = +{ + 8,0,0,8,8, 9,16,16,9,9, + 0,18, + 16,14, + 0x80,0x00, + 0xF0,0xF0,0x00,0xF8,0xF8,0x00,0x7C,0x7C,0x00,0x3E,0x3E,0x00, + 0x1F,0x1F,0x00,0x0F,0x8F,0x80,0x07,0xC7,0xC0,0x0F,0x8F,0x80, + 0x1F,0x1F,0x00,0x3E,0x3E,0x00,0x7C,0x7C,0x00,0xF8,0xF8,0x00, + 0xF0,0xF0,0x00 +}; +const GuiConst_INT8U Ch000468[90] = +{ + 1,4,5,1,9, 19,15,17,19,10, + 0,20, + 8,30, + 0x80,0x2A,0x00,0x28, + 0x1E,0x01,0xF0,0x3E,0x01,0xF0,0x7E,0x03,0xE0,0xFE,0x03,0xE0, + 0xEE,0x07,0xC0,0x4E,0x07,0xC0,0x0E,0x0F,0x80,0x0E,0x1F,0x00, + 0x0E,0x3E,0x00,0x0E,0x7C,0x00,0x0E,0xF8,0x00,0x00,0xFB,0xC0, + 0x01,0xF3,0xC0,0x01,0xF7,0xC0,0x03,0xE7,0xC0,0x03,0xEF,0xC0, + 0x07,0xCF,0xC0,0x07,0xDD,0xC0,0x0F,0x9D,0xC0,0x0F,0xBD,0xC0, + 0x1F,0x39,0xC0,0x1F,0x7F,0xF0,0x3E,0x7F,0xF0,0x7C,0x01,0xC0 +}; +const GuiConst_INT8U Ch000469[93] = +{ + 1,4,4,0,9, 18,14,19,19,10, + 0,20, + 8,30, + 0x80,0x2A,0x00,0x20, + 0x1E,0x03,0xE0,0x3E,0x03,0xE0,0x7E,0x07,0xC0,0xFE,0x07,0xC0, + 0xEE,0x0F,0x80,0x4E,0x0F,0x80,0x0E,0x1F,0x00,0x0E,0x3E,0x00, + 0x0E,0x7C,0x00,0x0E,0xF8,0x00,0x0F,0xF0,0x00,0x01,0xF7,0xC0, + 0x03,0xEF,0xE0,0x03,0xFF,0xF0,0x07,0xCC,0x70,0x07,0xC0,0x70, + 0x0F,0x80,0xF0,0x0F,0x83,0xE0,0x1F,0x07,0xC0,0x1F,0x0F,0x00, + 0x3E,0x1E,0x00,0x3E,0x1C,0x00,0x7C,0x1C,0x00,0x7C,0x1F,0xF0, + 0xF8,0x1F,0xF0 +}; +const GuiConst_INT8U Ch000470[99] = +{ + 0,0,5,1,9, 19,15,17,19,10, + 0,20, + 8,30, + 0x20,0x00,0x00,0x28, + 0x3E,0x01,0xF0,0x7F,0x01,0xF0,0xFF,0x83,0xE0,0x63,0x83,0xE0, + 0x03,0x87,0xC0,0x0F,0x8F,0x80,0x0F,0x0F,0x80,0x0F,0x9F,0x00, + 0x03,0x9F,0x00,0x03,0xBE,0x00,0x63,0xBE,0x00,0xFF,0xFC,0x00, + 0x7F,0x7C,0x00,0x3E,0xF8,0x00,0x00,0xFB,0xC0,0x01,0xF3,0xC0, + 0x01,0xF7,0xC0,0x03,0xE7,0xC0,0x03,0xEF,0xC0,0x07,0xCF,0xC0, + 0x07,0xDD,0xC0,0x0F,0x9D,0xC0,0x0F,0xBD,0xC0,0x1F,0x39,0xC0, + 0x1F,0x7F,0xF0,0x3E,0x7F,0xF0,0x7C,0x01,0xC0 +}; +const GuiConst_INT8U Ch000471[78] = +{ + 6,7,0,2,8, 11,10,16,15,9, + 0,18, + 8,30, + 0x9C,0x3D,0x00,0x08, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00, + 0x01,0xE0,0x00,0x03,0xE0,0x00,0x0F,0xE0,0x00,0x1F,0xC0,0x00, + 0x3F,0x80,0x00,0x7E,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00, + 0xF0,0x03,0x00,0xF0,0x03,0x80,0xF8,0x07,0xC0,0x78,0x07,0x80, + 0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000472[76] = +{ + 6,4,1,0,8, 11,13,16,17,9, + 0,18, + 0,38, + 0x04,0xDA,0x99,0xD9,0x39, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x01,0xE0,0x00, + 0x03,0xF0,0x00,0x07,0xF8,0x00,0x0F,0xFC,0x00,0x0F,0x3C,0x00, + 0x1F,0x3E,0x00,0x1E,0x1E,0x00,0x3E,0x1F,0x00,0x3C,0x0F,0x00, + 0x7F,0xFF,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000473[76] = +{ + 6,4,1,0,8, 11,13,16,17,9, + 0,18, + 0,38, + 0x04,0xDA,0x99,0xD9,0x39, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x01,0xE0,0x00, + 0x03,0xF0,0x00,0x07,0xF8,0x00,0x0F,0xFC,0x00,0x0F,0x3C,0x00, + 0x1F,0x3E,0x00,0x1E,0x1E,0x00,0x3E,0x1F,0x00,0x3C,0x0F,0x00, + 0x7F,0xFF,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000474[79] = +{ + 5,4,1,0,8, 12,13,16,17,9, + 0,18, + 0,38, + 0x00,0xDA,0x99,0xD9,0x39, + 0x00,0xC0,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00, + 0x0F,0xFC,0x00,0x07,0x38,0x00,0x02,0x10,0x00,0x00,0x00,0x00, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00,0x0F,0xFC,0x00, + 0x0F,0x3C,0x00,0x1F,0x3E,0x00,0x1E,0x1E,0x00,0x3E,0x1F,0x00, + 0x3C,0x0F,0x00,0x7F,0xFF,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000475[73] = +{ + 2,8,8,8,8, 15,9,9,9,9, + 0,18, + 1,37, + 0x40,0xED,0xCC,0xEC,0x1C, + 0x1F,0x03,0x00,0x3F,0xC7,0x80,0x7F,0xFF,0x80,0x78,0xFF,0x00, + 0x30,0x3E,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00, + 0x07,0xF8,0x00,0x0F,0xFC,0x00,0x0F,0x3C,0x00,0x1F,0x3E,0x00, + 0x1E,0x1E,0x00,0x3E,0x1F,0x00,0x3C,0x0F,0x00,0x7F,0xFF,0x80, + 0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000476[67] = +{ + 2,4,1,0,8, 15,13,16,17,9, + 0,18, + 0,38, + 0x9C,0xDA,0x99,0xD9,0x39, + 0x3C,0x0F,0x00,0x7E,0x1F,0x80,0x3C,0x0F,0x00,0x00,0x00,0x00, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00,0x0F,0xFC,0x00, + 0x0F,0x3C,0x00,0x1F,0x3E,0x00,0x1E,0x1E,0x00,0x3E,0x1F,0x00, + 0x3C,0x0F,0x00,0x7F,0xFF,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000477[79] = +{ + 6,4,1,0,8, 11,13,16,17,9, + 0,18, + 0,38, + 0x00,0xDA,0x99,0xD9,0x39, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0x38,0x00,0x06,0x18,0x00, + 0x07,0x38,0x00,0x03,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00,0x0F,0xFC,0x00, + 0x0F,0x3C,0x00,0x1F,0x3E,0x00,0x1E,0x1E,0x00,0x3E,0x1F,0x00, + 0x3C,0x0F,0x00,0x7F,0xFF,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000478[60] = +{ + 5,3,1,0,9, 19,18,18,19,10, + 0,20, + 8,30, + 0xCE,0x53,0x64,0x39, + 0x07,0xFF,0xF0,0x07,0xBC,0x00,0x0F,0x3C,0x00,0x1F,0x3C,0x00, + 0x1E,0x3C,0x00,0x1E,0x3F,0xE0,0x3E,0x3F,0xE0,0x3C,0x3F,0xE0, + 0x3C,0x3C,0x00,0x3F,0xFC,0x00,0x7F,0xFC,0x00,0x78,0x3C,0x00, + 0xF8,0x3C,0x00,0xF0,0x3F,0xF0 +}; +const GuiConst_INT8U Ch000479[97] = +{ + 2,0,0,2,3, 15,16,16,15,13, + 0,18, + 8,39, + 0x08,0xFC,0x1F,0x08,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0x80,0xF0,0x03,0x00, + 0xF0,0x00,0x00,0xF0,0x03,0x00,0xF0,0x03,0x80,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00,0x03,0xE0,0x00,0x03,0xF8,0x00,0x01,0xFC,0x00, + 0x00,0x3C,0x00,0x00,0x1C,0x00,0x00,0x3C,0x00,0x1F,0xFC,0x00, + 0x1F,0xF8,0x00,0x0F,0xE0,0x00 +}; +const GuiConst_INT8U Ch000480[55] = +{ + 0,0,0,0,0, 2,4,6,7,0, + 0,18, + 0,38, + 0x04,0xEE,0xDF,0xFD,0x3B, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xC0, + 0xF0,0x00,0x00,0xFF,0xF0,0x00,0xF0,0x00,0x00,0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000481[55] = +{ + 2,2,2,2,5, 9,11,13,14,6, + 0,18, + 0,38, + 0x04,0xEE,0xDF,0xFD,0x3B, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xC0, + 0xF0,0x00,0x00,0xFF,0xF0,0x00,0xF0,0x00,0x00,0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000482[58] = +{ + 2,0,1,2,8, 15,16,17,15,9, + 0,18, + 0,38, + 0x00,0xEE,0xDF,0xFD,0x3B, + 0x00,0xC0,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00, + 0x0F,0xFC,0x00,0x07,0x38,0x00,0x02,0x10,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xC0,0xF0,0x00,0x00,0xFF,0xF0,0x00,0xF0,0x00,0x00, + 0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000483[46] = +{ + 0,3,7,7,8, 18,14,10,10,9, + 0,18, + 0,38, + 0x9C,0xEE,0xDF,0xFD,0x3B, + 0x3C,0x0F,0x00,0x7E,0x1F,0x80,0x3C,0x0F,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xC0,0xF0,0x00,0x00,0xFF,0xF0,0x00,0xF0,0x00,0x00, + 0xFF,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000484[39] = +{ + 3,6,6,3,7, 12,9,9,12,8, + 3,10, + 0,38, + 0x04,0xEE,0xFF,0xFF,0x3B, + 0x30,0x00,0x78,0x00,0x7C,0x00,0x3C,0x00,0x1E,0x00,0x0C,0x00, + 0x00,0x00,0xFF,0xC0,0x1E,0x00,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000485[39] = +{ + 3,6,6,3,7, 12,9,9,12,8, + 3,10, + 0,38, + 0x04,0xEE,0xFF,0xFF,0x3B, + 0x03,0x00,0x07,0x80,0x0F,0x80,0x0F,0x00,0x1E,0x00,0x0C,0x00, + 0x00,0x00,0xFF,0xC0,0x1E,0x00,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000486[41] = +{ + 3,6,6,3,7, 12,9,9,12,8, + 3,10, + 0,38, + 0x00,0xEE,0xFF,0xFF,0x3B, + 0x0C,0x00,0x1E,0x00,0x3F,0x00,0x7F,0x80,0xFF,0xC0,0x73,0x80, + 0x21,0x00,0x00,0x00,0xFF,0xC0,0x1E,0x00,0xFF,0xC0 +}; +const GuiConst_INT8U Ch000487[33] = +{ + 1,6,6,3,7, 14,9,9,12,8, + 0,16, + 0,38, + 0x9C,0xEE,0xFF,0xFF,0x3B, + 0x78,0x1E,0xFC,0x3F,0x78,0x1E,0x00,0x00,0x1F,0xF8,0x03,0xC0, + 0x1F,0xF8 +}; +const GuiConst_INT8U Ch000488[63] = +{ + 3,0,3,3,9, 16,18,18,16,9, + 0,19, + 8,30, + 0x08,0xEF,0x7E,0x08, + 0x1F,0xF8,0x00,0x1F,0xFE,0x00,0x1F,0xFF,0x80,0x1E,0x0F,0xC0, + 0x1E,0x03,0xC0,0x1E,0x03,0xE0,0x1E,0x01,0xE0,0xFF,0xF1,0xE0, + 0x1E,0x01,0xE0,0x1E,0x03,0xE0,0x1E,0x03,0xC0,0x1E,0x0F,0xC0, + 0x1F,0xFF,0x80,0x1F,0xFE,0x00,0x1F,0xF8,0x00 +}; +const GuiConst_INT8U Ch000489[100] = +{ + 0,0,0,0,8, 17,17,17,17,9, + 0,18, + 1,37, + 0x40,0xAA,0x00,0x50,0x15, + 0x1F,0x03,0x00,0x3F,0xC7,0x80,0x7F,0xFF,0x80,0x78,0xFF,0x00, + 0x30,0x3E,0x00,0x00,0x00,0x00,0xF0,0x03,0xC0,0xF8,0x03,0xC0, + 0xFC,0x03,0xC0,0xFE,0x03,0xC0,0xFF,0x03,0xC0,0xFF,0x83,0xC0, + 0xF7,0x83,0xC0,0xF7,0xC3,0xC0,0xF3,0xC3,0xC0,0xF3,0xE3,0xC0, + 0xF1,0xE3,0xC0,0xF1,0xF3,0xC0,0xF0,0xF3,0xC0,0xF0,0xFB,0xC0, + 0xF0,0x7B,0xC0,0xF0,0x7F,0xC0,0xF0,0x3F,0xC0,0xF0,0x1F,0xC0, + 0xF0,0x0F,0xC0,0xF0,0x07,0xC0,0xF0,0x03,0xC0 +}; +const GuiConst_INT8U Ch000490[79] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 0,38, + 0x04,0x08,0xFF,0x7F,0x08, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x03,0xF0,0x00, + 0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80,0x78,0x07,0x80, + 0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80, + 0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000491[79] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 0,38, + 0x04,0x08,0xFF,0x7F,0x08, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x03,0xF0,0x00, + 0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80,0x78,0x07,0x80, + 0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80, + 0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000492[82] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 0,38, + 0x00,0x08,0xFF,0x7F,0x08, + 0x00,0xC0,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00, + 0x0F,0xFC,0x00,0x07,0x38,0x00,0x02,0x10,0x00,0x00,0x00,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000493[76] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 1,37, + 0x40,0x84,0xFF,0x3F,0x04, + 0x1F,0x03,0x00,0x3F,0xC7,0x80,0x7F,0xFF,0x80,0x78,0xFF,0x00, + 0x30,0x3E,0x00,0x00,0x00,0x00,0x03,0xF0,0x00,0x0F,0xFC,0x00, + 0x3F,0xFF,0x00,0x7E,0x1F,0x80,0x78,0x07,0x80,0xF8,0x07,0xC0, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000494[70] = +{ + 2,0,0,2,8, 15,17,17,15,9, + 0,18, + 0,38, + 0x9C,0x08,0xFF,0x7F,0x08, + 0x3C,0x0F,0x00,0x7E,0x1F,0x80,0x3C,0x0F,0x00,0x00,0x00,0x00, + 0x03,0xF0,0x00,0x0F,0xFC,0x00,0x3F,0xFF,0x00,0x7E,0x1F,0x80, + 0x78,0x07,0x80,0xF8,0x07,0xC0,0xF0,0x03,0xC0,0xF8,0x07,0xC0, + 0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00,0x0F,0xFC,0x00, + 0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000495[46] = +{ + 8,1,1,8,8, 9,16,16,9,9, + 1,16, + 15,16, + 0x00,0x01, + 0x10,0x08,0x38,0x1C,0x7C,0x3E,0xFE,0x7F,0x7F,0xFE,0x3F,0xFC, + 0x1F,0xF8,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0xFE,0x7F, + 0x7C,0x3E,0x38,0x1C,0x10,0x08 +}; +const GuiConst_INT8U Ch000496[90] = +{ + 3,1,1,1,9, 18,18,18,16,10, + 0,20, + 7,32, + 0x00,0xAA,0xAA,0x00, + 0x00,0x01,0xF0,0x01,0xF9,0xF0,0x07,0xFF,0xE0,0x1F,0xFF,0xE0, + 0x1F,0xFF,0xC0,0x3F,0x0F,0xC0,0x3C,0x0F,0xC0,0x7C,0x0F,0xE0, + 0x78,0x1F,0xE0,0x78,0x3F,0xE0,0x78,0x7D,0xE0,0x78,0xF9,0xE0, + 0x79,0xF1,0xE0,0x7B,0xE1,0xE0,0x7F,0xC1,0xE0,0x7F,0x81,0xE0, + 0x7F,0x03,0xE0,0x3F,0x03,0xC0,0x3F,0x0F,0xC0,0x3F,0xFF,0x80, + 0x7F,0xFF,0x80,0x7F,0xFE,0x00,0xF9,0xF8,0x00,0xF8,0x00,0x00 +}; +const GuiConst_INT8U Ch000497[61] = +{ + 0,0,0,2,8, 17,17,17,15,9, + 0,18, + 0,38, + 0x04,0xFE,0xFF,0x7F,0x08, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xF0,0x03,0xC0, + 0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00, + 0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000498[61] = +{ + 0,0,0,2,8, 17,17,17,15,9, + 0,18, + 0,38, + 0x04,0xFE,0xFF,0x7F,0x08, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xF0,0x03,0xC0, + 0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80,0x3F,0xFF,0x00, + 0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000499[64] = +{ + 0,0,0,2,8, 17,17,17,15,9, + 0,18, + 0,38, + 0x00,0xFE,0xFF,0x7F,0x08, + 0x00,0xC0,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00,0x07,0xF8,0x00, + 0x0F,0xFC,0x00,0x07,0x38,0x00,0x02,0x10,0x00,0x00,0x00,0x00, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000500[52] = +{ + 0,0,0,2,8, 17,17,17,15,9, + 0,18, + 0,38, + 0x9C,0xFE,0xFF,0x7F,0x08, + 0x3C,0x0F,0x00,0x7E,0x1F,0x80,0x3C,0x0F,0x00,0x00,0x00,0x00, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7E,0x1F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x03,0xF0,0x00 +}; +const GuiConst_INT8U Ch000501[85] = +{ + 0,4,8,8,9, 19,15,11,11,10, + 0,20, + 0,38, + 0x04,0x00,0xA0,0xFE,0x3F, + 0x00,0x18,0x00,0x00,0x3C,0x00,0x00,0x7C,0x00,0x00,0x78,0x00, + 0x00,0xF0,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0xF0,0x00,0xF0, + 0xF8,0x01,0xF0,0x78,0x01,0xE0,0x7C,0x03,0xE0,0x3C,0x03,0xC0, + 0x3E,0x07,0xC0,0x1E,0x07,0x80,0x1F,0x0F,0x80,0x0F,0x0F,0x00, + 0x0F,0x9F,0x00,0x07,0x9E,0x00,0x07,0xFE,0x00,0x03,0xFC,0x00, + 0x01,0xF8,0x00,0x00,0xF0,0x00 +}; +const GuiConst_INT8U Ch000502[63] = +{ + 0,0,0,0,8, 11,17,17,11,9, + 0,18, + 8,30, + 0x0E,0xF4,0x17,0x38, + 0xF0,0x00,0x00,0xF7,0xF8,0x00,0xFF,0xFE,0x00,0xFF,0xFF,0x00, + 0xFF,0xFF,0x80,0xFC,0x1F,0x80,0xF0,0x07,0xC0,0xF0,0x03,0xC0, + 0xF0,0x07,0xC0,0xFC,0x1F,0x80,0xFF,0xFF,0x80,0xFF,0xFF,0x00, + 0xFF,0xFE,0x00,0xF7,0xF8,0x00,0xF0,0x00,0x00 +}; +const GuiConst_INT8U Ch000503[87] = +{ + 2,0,0,0,8, 12,14,16,14,8, + 0,17, + 8,30, + 0x40,0x43,0x50,0x01, + 0x07,0xC0,0x00,0x1F,0xF0,0x00,0x3F,0xF8,0x00,0x7F,0xFC,0x00, + 0x7E,0xFC,0x00,0xF8,0x3E,0x00,0xF0,0x1E,0x00,0xF0,0x3E,0x00, + 0xF0,0x3C,0x00,0xF0,0x7C,0x00,0xF0,0xF8,0x00,0xF0,0xFC,0x00, + 0xF0,0x7E,0x00,0xF0,0x3F,0x00,0xF0,0x1F,0x00,0xF0,0x0F,0x80, + 0xF0,0x07,0x80,0xF0,0x0F,0x80,0xF0,0x3F,0x00,0xF3,0xFF,0x00, + 0xF3,0xFE,0x00,0xF3,0xFC,0x00,0xF3,0xF0,0x00 +}; +const GuiConst_INT8U Ch000504[84] = +{ + 5,1,0,1,8, 8,14,16,16,8, + 0,17, + 9,29, + 0x04,0x11,0xC8,0x04, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00, + 0x3F,0xF8,0x00,0x7F,0xFE,0x00,0x38,0x3F,0x00,0x00,0x0F,0x00, + 0x00,0x0F,0x80,0x0F,0xE7,0x80,0x3F,0xFF,0x80,0x7F,0xFF,0x80, + 0xF8,0x3F,0x80,0xF0,0x0F,0x80,0xF8,0x3F,0x80,0x7F,0xFF,0x80, + 0x3F,0xFF,0x80,0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000505[84] = +{ + 9,1,0,1,8, 12,14,16,16,8, + 0,17, + 9,29, + 0x04,0x11,0xC8,0x04, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00, + 0x3F,0xF8,0x00,0x7F,0xFE,0x00,0x38,0x3F,0x00,0x00,0x0F,0x00, + 0x00,0x0F,0x80,0x0F,0xE7,0x80,0x3F,0xFF,0x80,0x7F,0xFF,0x80, + 0xF8,0x3F,0x80,0xF0,0x0F,0x80,0xF8,0x3F,0x80,0x7F,0xFF,0x80, + 0x3F,0xFF,0x80,0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000506[87] = +{ + 6,1,0,1,8, 9,14,16,16,8, + 0,17, + 9,29, + 0x00,0x11,0xC8,0x04, + 0x01,0x80,0x00,0x03,0xC0,0x00,0x07,0xE0,0x00,0x0F,0xF0,0x00, + 0x1F,0xF8,0x00,0x0E,0x70,0x00,0x04,0x20,0x00,0x00,0x00,0x00, + 0x0F,0xE0,0x00,0x3F,0xF8,0x00,0x7F,0xFE,0x00,0x38,0x3F,0x00, + 0x00,0x0F,0x00,0x00,0x0F,0x80,0x0F,0xE7,0x80,0x3F,0xFF,0x80, + 0x7F,0xFF,0x80,0xF8,0x3F,0x80,0xF0,0x0F,0x80,0xF8,0x3F,0x80, + 0x7F,0xFF,0x80,0x3F,0xFF,0x80,0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000507[81] = +{ + 8,1,0,1,8, 8,14,16,16,8, + 0,17, + 11,27, + 0x40,0x04,0x32,0x01, + 0x0F,0x06,0x00,0x1F,0xCF,0x00,0x3F,0xFF,0x00,0x3C,0xFE,0x00, + 0x18,0x3C,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x3F,0xF8,0x00, + 0x7F,0xFE,0x00,0x38,0x3F,0x00,0x00,0x0F,0x00,0x00,0x0F,0x80, + 0x0F,0xE7,0x80,0x3F,0xFF,0x80,0x7F,0xFF,0x80,0xF8,0x3F,0x80, + 0xF0,0x0F,0x80,0xF8,0x3F,0x80,0x7F,0xFF,0x80,0x3F,0xFF,0x80, + 0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000508[75] = +{ + 3,1,0,1,8, 13,14,16,16,8, + 0,17, + 11,27, + 0x4C,0x04,0x32,0x01, + 0x1C,0x1C,0x00,0x3E,0x3E,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00, + 0x0F,0xE0,0x00,0x3F,0xF8,0x00,0x7F,0xFE,0x00,0x38,0x3F,0x00, + 0x00,0x0F,0x00,0x00,0x0F,0x80,0x0F,0xE7,0x80,0x3F,0xFF,0x80, + 0x7F,0xFF,0x80,0xF8,0x3F,0x80,0xF0,0x0F,0x80,0xF8,0x3F,0x80, + 0x7F,0xFF,0x80,0x3F,0xFF,0x80,0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000509[87] = +{ + 5,1,0,1,8, 10,14,16,16,8, + 0,17, + 9,29, + 0x00,0x11,0xC8,0x04, + 0x03,0xC0,0x00,0x07,0xE0,0x00,0x0E,0x70,0x00,0x0C,0x30,0x00, + 0x0E,0x70,0x00,0x07,0xE0,0x00,0x03,0xC0,0x00,0x00,0x00,0x00, + 0x0F,0xE0,0x00,0x3F,0xF8,0x00,0x7F,0xFE,0x00,0x38,0x3F,0x00, + 0x00,0x0F,0x00,0x00,0x0F,0x80,0x0F,0xE7,0x80,0x3F,0xFF,0x80, + 0x7F,0xFF,0x80,0xF8,0x3F,0x80,0xF0,0x0F,0x80,0xF8,0x3F,0x80, + 0x7F,0xFF,0x80,0x3F,0xFF,0x80,0x0F,0xE7,0x80 +}; +const GuiConst_INT8U Ch000510[68] = +{ + 9,1,0,1,9, 10,18,19,18,10, + 0,20, + 18,20, + 0x88,0x08,0x00, + 0x1F,0x0F,0x00,0x3F,0xFF,0xC0,0x7F,0xFF,0xE0,0x39,0xF9,0xF0, + 0x10,0xF0,0xF0,0x00,0xF0,0xF0,0x0F,0xFF,0xF0,0x3F,0xFF,0xF0, + 0x7F,0xFF,0xF0,0xF8,0xF0,0x00,0xF0,0xF0,0x00,0xF0,0xF0,0x40, + 0xF9,0xF8,0xE0,0x7F,0xFF,0xF0,0x7F,0xFF,0xE0,0x3F,0xFF,0xC0, + 0x0F,0x0F,0x00 +}; +const GuiConst_INT8U Ch000511[90] = +{ + 8,2,0,2,3, 8,15,14,15,13, + 0,17, + 18,29, + 0x00,0x1F,0x00,0x00, + 0x03,0xF8,0x00,0x0F,0xFE,0x00,0x3F,0xFF,0x00,0x3F,0xFF,0x80, + 0x7C,0x0F,0x00,0x78,0x06,0x00,0xF8,0x00,0x00,0xF0,0x00,0x00, + 0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x0F,0x00,0x3F,0xFF,0x80, + 0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00,0x03,0xE0,0x00, + 0x03,0xF8,0x00,0x01,0xFC,0x00,0x00,0x3C,0x00,0x00,0x1C,0x00, + 0x00,0x3C,0x00,0x1F,0xFC,0x00,0x1F,0xF8,0x00,0x0F,0xE0,0x00 +}; +const GuiConst_INT8U Ch000512[87] = +{ + 5,2,0,2,8, 8,14,16,15,8, + 0,17, + 9,29, + 0x04,0x11,0x1C,0x00, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x03,0xE0,0x00, + 0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00,0x78,0x0F,0x00, + 0xF8,0x0F,0x80,0xF0,0x07,0x80,0xFF,0xFF,0x80,0xF0,0x00,0x00, + 0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x1F,0x00,0x3F,0xFF,0x80, + 0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00 +}; +const GuiConst_INT8U Ch000513[87] = +{ + 9,2,0,2,8, 12,14,16,15,8, + 0,17, + 9,29, + 0x04,0x11,0x1C,0x00, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x03,0xE0,0x00, + 0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00,0x78,0x0F,0x00, + 0xF8,0x0F,0x80,0xF0,0x07,0x80,0xFF,0xFF,0x80,0xF0,0x00,0x00, + 0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x1F,0x00,0x3F,0xFF,0x80, + 0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00 +}; +const GuiConst_INT8U Ch000514[90] = +{ + 6,2,0,2,8, 9,14,16,15,8, + 0,17, + 9,29, + 0x00,0x11,0x1C,0x00, + 0x01,0x80,0x00,0x03,0xC0,0x00,0x07,0xE0,0x00,0x0F,0xF0,0x00, + 0x1F,0xF8,0x00,0x0E,0x70,0x00,0x04,0x20,0x00,0x00,0x00,0x00, + 0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00, + 0x78,0x0F,0x00,0xF8,0x0F,0x80,0xF0,0x07,0x80,0xFF,0xFF,0x80, + 0xF0,0x00,0x00,0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x1F,0x00, + 0x3F,0xFF,0x80,0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00 +}; +const GuiConst_INT8U Ch000515[78] = +{ + 3,2,0,2,8, 13,14,16,15,8, + 0,17, + 11,27, + 0x4C,0x04,0x07,0x00, + 0x1C,0x1C,0x00,0x3E,0x3E,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00, + 0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00, + 0x78,0x0F,0x00,0xF8,0x0F,0x80,0xF0,0x07,0x80,0xFF,0xFF,0x80, + 0xF0,0x00,0x00,0xF8,0x00,0x00,0x78,0x06,0x00,0x7C,0x1F,0x00, + 0x3F,0xFF,0x80,0x3F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00 +}; +const GuiConst_INT8U Ch000516[26] = +{ + 4,6,6,6,6, 7,9,9,9,7, + 4,6, + 9,29, + 0x04,0xFD,0xFF,0x1F, + 0x60,0xF0,0xF8,0x78,0x3C,0x18,0x00,0x3C +}; +const GuiConst_INT8U Ch000517[26] = +{ + 8,6,6,6,8, 11,9,9,9,9, + 6,6, + 9,29, + 0x04,0xFD,0xFF,0x1F, + 0x18,0x3C,0x7C,0x78,0xF0,0x60,0x00,0xF0 +}; +const GuiConst_INT8U Ch000518[36] = +{ + 6,6,6,6,7, 9,9,9,9,8, + 3,10, + 9,29, + 0x00,0xFD,0xFF,0x1F, + 0x0C,0x00,0x1E,0x00,0x3F,0x00,0x7F,0x80,0xFF,0xC0,0x73,0x80, + 0x21,0x00,0x00,0x00,0x1E,0x00 +}; +const GuiConst_INT8U Ch000519[28] = +{ + 3,3,6,6,7, 12,12,9,9,8, + 2,12, + 11,27, + 0x4C,0xFF,0xFF,0x07, + 0x70,0xE0,0xF9,0xF0,0x70,0xE0,0x00,0x00,0x0F,0x00 +}; +const GuiConst_INT8U Ch000520[87] = +{ + 5,5,0,2,8, 15,16,17,15,9, + 0,18, + 9,29, + 0x40,0x40,0x38,0x04, + 0x02,0x00,0x00,0x07,0x83,0x00,0x0F,0xEF,0x80,0x0F,0xFF,0x00, + 0x03,0xFC,0x00,0x01,0xFC,0x00,0x03,0xFE,0x00,0x07,0x9F,0x00, + 0x03,0x0F,0x00,0x00,0x0F,0x80,0x03,0xF7,0x80,0x0F,0xFF,0xC0, + 0x3F,0xFF,0xC0,0x7C,0x0F,0xC0,0x78,0x07,0xC0,0xF8,0x07,0xC0, + 0xF0,0x03,0xC0,0xF8,0x07,0xC0,0x78,0x07,0x80,0x7C,0x0F,0x80, + 0x3F,0xFF,0x00,0x0F,0xFC,0x00,0x07,0xF0,0x00 +}; +const GuiConst_INT8U Ch000521[57] = +{ + 8,0,0,0,8, 8,14,16,16,8, + 0,17, + 11,27, + 0x40,0x84,0xFF,0x07, + 0x0F,0x06,0x00,0x1F,0xCF,0x00,0x3F,0xFF,0x00,0x3C,0xFE,0x00, + 0x18,0x3C,0x00,0x00,0x00,0x00,0xF3,0xE0,0x00,0xFF,0xF8,0x00, + 0xFF,0xFE,0x00,0xFC,0x1F,0x00,0xF0,0x0F,0x00,0xF0,0x0F,0x80, + 0xF0,0x07,0x80 +}; +const GuiConst_INT8U Ch000522[78] = +{ + 5,2,0,2,8, 8,14,16,14,8, + 0,17, + 9,29, + 0x04,0x11,0x3E,0x04, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x03,0xE0,0x00, + 0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00,0x78,0x0F,0x00, + 0xF8,0x0F,0x80,0xF0,0x07,0x80,0xF8,0x0F,0x80,0x78,0x0F,0x00, + 0x7C,0x1F,0x00,0x3F,0xFE,0x00,0x0F,0xF8,0x00,0x07,0xE0,0x00 +}; +const GuiConst_INT8U Ch000523[78] = +{ + 9,2,0,2,8, 12,14,16,14,8, + 0,17, + 9,29, + 0x04,0x11,0x3E,0x04, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x03,0xE0,0x00, + 0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00,0x78,0x0F,0x00, + 0xF8,0x0F,0x80,0xF0,0x07,0x80,0xF8,0x0F,0x80,0x78,0x0F,0x00, + 0x7C,0x1F,0x00,0x3F,0xFE,0x00,0x0F,0xF8,0x00,0x07,0xE0,0x00 +}; +const GuiConst_INT8U Ch000524[84] = +{ + 6,2,0,2,8, 10,14,16,14,8, + 0,17, + 8,30, + 0x00,0x22,0x7C,0x08, + 0x00,0x80,0x00,0x01,0xC0,0x00,0x03,0xE0,0x00,0x07,0xF0,0x00, + 0x0F,0xF8,0x00,0x1F,0x7C,0x00,0x0E,0x38,0x00,0x04,0x10,0x00, + 0x00,0x00,0x00,0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00, + 0x7C,0x1F,0x00,0x78,0x0F,0x00,0xF8,0x0F,0x80,0xF0,0x07,0x80, + 0xF8,0x0F,0x80,0x78,0x0F,0x00,0x7C,0x1F,0x00,0x3F,0xFE,0x00, + 0x0F,0xF8,0x00,0x07,0xE0,0x00 +}; +const GuiConst_INT8U Ch000525[75] = +{ + 8,2,0,2,8, 8,14,16,14,8, + 0,17, + 11,27, + 0x40,0x84,0x0F,0x01, + 0x1E,0x06,0x00,0x3F,0xCF,0x00,0x7F,0xFF,0x00,0x79,0xFE,0x00, + 0x30,0x3C,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x0F,0xF8,0x00, + 0x3F,0xFE,0x00,0x7C,0x1F,0x00,0x78,0x0F,0x00,0xF8,0x0F,0x80, + 0xF0,0x07,0x80,0xF8,0x0F,0x80,0x78,0x0F,0x00,0x7C,0x1F,0x00, + 0x3F,0xFE,0x00,0x0F,0xF8,0x00,0x07,0xE0,0x00 +}; +const GuiConst_INT8U Ch000526[69] = +{ + 3,2,0,2,8, 13,14,16,14,8, + 0,17, + 11,27, + 0x4C,0x84,0x0F,0x01, + 0x1C,0x1C,0x00,0x3E,0x3E,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00, + 0x03,0xE0,0x00,0x0F,0xF8,0x00,0x3F,0xFE,0x00,0x7C,0x1F,0x00, + 0x78,0x0F,0x00,0xF8,0x0F,0x80,0xF0,0x07,0x80,0xF8,0x0F,0x80, + 0x78,0x0F,0x00,0x7C,0x1F,0x00,0x3F,0xFE,0x00,0x0F,0xF8,0x00, + 0x07,0xE0,0x00 +}; +const GuiConst_INT8U Ch000527[44] = +{ + 8,0,0,8,8, 9,17,17,9,9, + 0,18, + 13,20, + 0x9C,0x2E,0x07, + 0x01,0xE0,0x00,0x03,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xC0,0x00,0x00,0x00,0x01,0xE0,0x00,0x03,0xF0,0x00, + 0x01,0xE0,0x00 +}; +const GuiConst_INT8U Ch000528[71] = +{ + 8,2,0,1,8, 8,15,16,14,8, + 0,17, + 16,24, + 0x22,0x28,0x88, + 0x00,0x0F,0x00,0x03,0xFE,0x00,0x0F,0xFE,0x00,0x3F,0xFE,0x00, + 0x7C,0x7F,0x00,0x78,0x7F,0x00,0xF8,0xFF,0x80,0xF0,0xF7,0x80, + 0xF1,0xE7,0x80,0xF3,0xC7,0x80,0xF7,0x87,0x80,0xFF,0x8F,0x80, + 0x7F,0x0F,0x00,0x7F,0x1F,0x00,0x3F,0xFE,0x00,0x3F,0xF8,0x00, + 0x3F,0xE0,0x00,0x78,0x00,0x00 +}; +const GuiConst_INT8U Ch000529[60] = +{ + 5,0,0,2,8, 8,16,16,16,8, + 0,17, + 9,29, + 0x04,0xFD,0x3F,0x04, + 0x03,0x00,0x00,0x07,0x80,0x00,0x07,0xC0,0x00,0x03,0xC0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xF0,0x07,0x80, + 0xF8,0x07,0x80,0x78,0x07,0x80,0x7C,0x1F,0x80,0x3F,0xFF,0x80, + 0x0F,0xFF,0x80,0x03,0xE7,0x80 +}; +const GuiConst_INT8U Ch000530[60] = +{ + 9,0,0,2,8, 12,16,16,16,8, + 0,17, + 9,29, + 0x04,0xFD,0x3F,0x04, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xF0,0x07,0x80, + 0xF8,0x07,0x80,0x78,0x07,0x80,0x7C,0x1F,0x80,0x3F,0xFF,0x80, + 0x0F,0xFF,0x80,0x03,0xE7,0x80 +}; +const GuiConst_INT8U Ch000531[66] = +{ + 6,0,0,2,8, 10,16,16,16,8, + 0,17, + 8,30, + 0x00,0xFA,0x7F,0x08, + 0x00,0x80,0x00,0x01,0xC0,0x00,0x03,0xE0,0x00,0x07,0xF0,0x00, + 0x0F,0xF8,0x00,0x1F,0x7C,0x00,0x0E,0x38,0x00,0x04,0x10,0x00, + 0x00,0x00,0x00,0xF0,0x07,0x80,0xF8,0x07,0x80,0x78,0x07,0x80, + 0x7C,0x1F,0x80,0x3F,0xFF,0x80,0x0F,0xFF,0x80,0x03,0xE7,0x80 +}; +const GuiConst_INT8U Ch000532[51] = +{ + 3,0,0,2,8, 13,16,16,16,8, + 0,17, + 11,27, + 0x4C,0xFF,0x0F,0x01, + 0x1C,0x1C,0x00,0x3E,0x3E,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00, + 0xF0,0x07,0x80,0xF8,0x07,0x80,0x78,0x07,0x80,0x7C,0x1F,0x80, + 0x3F,0xFF,0x80,0x0F,0xFF,0x80,0x03,0xE7,0x80 +}; +const GuiConst_INT8U Ch000533[97] = +{ + 9,0,2,4,1, 12,16,14,10,7, + 0,17, + 9,38, + 0x04,0xA5,0x94,0x56,0x00, + 0x00,0x30,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00, + 0x01,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xF0,0x07,0x80, + 0xF8,0x0F,0x80,0x78,0x0F,0x00,0x3C,0x1E,0x00,0x3E,0x3E,0x00, + 0x1E,0x3C,0x00,0x0F,0x78,0x00,0x0F,0xF8,0x00,0x07,0xF0,0x00, + 0x03,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00, + 0x1F,0x00,0x00,0x3E,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x00, + 0xF0,0x00,0x00,0x60,0x00,0x00 +}; +const GuiConst_INT8U Ch000534[48] = +{ + 1,1,1,1,8, 10,16,16,10,9, + 1,16, + 8,30, + 0x3E,0xD0,0x05,0x3E, + 0xF0,0x00,0xF7,0xE0,0xFF,0xF8,0xFF,0xFC,0xFF,0xFE,0xFC,0x7E, + 0xF0,0x1F,0xF0,0x0F,0xF0,0x1F,0xFC,0x7E,0xFF,0xFE,0xFF,0xFC, + 0xFF,0xF8,0xF7,0xE0,0xF0,0x00 +}; +const GuiConst_INT8U Ch000535[88] = +{ + 3,0,2,4,1, 13,16,14,10,7, + 0,17, + 11,36, + 0x4C,0x29,0xA5,0x15,0x00, + 0x1C,0x1C,0x00,0x3E,0x3E,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00, + 0xF0,0x07,0x80,0xF8,0x0F,0x80,0x78,0x0F,0x00,0x3C,0x1E,0x00, + 0x3E,0x3E,0x00,0x1E,0x3C,0x00,0x0F,0x78,0x00,0x0F,0xF8,0x00, + 0x07,0xF0,0x00,0x03,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00, + 0x0F,0x00,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00,0x7C,0x00,0x00, + 0xF8,0x00,0x00,0xF0,0x00,0x00,0x60,0x00,0x00 +}; +const GuiConst_INT8U Ch000536[23] = +{ + 0,0,0,0,0, 20,20,20,20,20, + 0,21, + 0,47, + 0xFE,0xFF,0xFF,0xFF,0xFF,0x7F, + 0xFF,0xFF,0xF8 +}; +const GuiConst_INT8U Ch000537[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000538[18] = +{ + 2,0,0,2,2, 3,5,5,3,3, + 0,6, + 6,5, + 0x12, + 0x30,0xFC,0x30 +}; +const GuiConst_INT8U Ch000539[17] = +{ + 2,2,2,1,1, 2,2,3,3,2, + 1,3, + 10,3, + 0x02, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000540[16] = +{ + 2,0,0,2,2, 3,5,5,3,3, + 0,6, + 8,1, + 0x00, + 0xFC +}; +const GuiConst_INT8U Ch000541[16] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 10,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000542[20] = +{ + 1,0,0,1,2, 4,5,5,4,3, + 0,6, + 5,7, + 0x18, + 0x30,0x78,0xCC,0x78,0x30 +}; +const GuiConst_INT8U Ch000543[19] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 5,7, + 0x70, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000544[22] = +{ + 0,0,0,0,2, 5,5,4,5,3, + 0,6, + 5,7, + 0x00, + 0x78,0xCC,0x0C,0x38,0x60,0xC0,0xFC +}; +const GuiConst_INT8U Ch000545[22] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 5,7, + 0x00, + 0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000546[20] = +{ + 1,0,0,3,2, 4,4,5,4,3, + 0,6, + 5,7, + 0x48, + 0x38,0x78,0xD8,0xFC,0x18 +}; +const GuiConst_INT8U Ch000547[21] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 5,7, + 0x10, + 0xFC,0xC0,0xF8,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000548[21] = +{ + 1,0,0,0,2, 4,4,5,5,3, + 0,6, + 5,7, + 0x20, + 0x38,0x60,0xC0,0xF8,0xCC,0x78 +}; +const GuiConst_INT8U Ch000549[20] = +{ + 0,1,2,1,2, 5,5,4,3,3, + 0,6, + 5,7, + 0x28, + 0xFC,0x0C,0x18,0x30,0x60 +}; +const GuiConst_INT8U Ch000550[20] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 5,7, + 0x24, + 0x78,0xCC,0x78,0xCC,0x78 +}; +const GuiConst_INT8U Ch000551[21] = +{ + 0,0,1,1,2, 5,5,5,4,3, + 0,6, + 5,7, + 0x04, + 0x78,0xCC,0x7C,0x0C,0x18,0x70 +}; +const GuiConst_INT8U Ch000552[18] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 6,6, + 0x2A, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000553[20] = +{ + 1,0,0,0,2, 4,5,5,5,3, + 0,6, + 5,7, + 0x48, + 0x30,0x78,0xCC,0xFC,0xCC +}; +const GuiConst_INT8U Ch000554[20] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 5,7, + 0x24, + 0xF8,0xCC,0xF8,0xCC,0xF8 +}; +const GuiConst_INT8U Ch000555[20] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 5,7, + 0x18, + 0x78,0xCC,0xC0,0xCC,0x78 +}; +const GuiConst_INT8U Ch000556[20] = +{ + 0,0,0,0,2, 4,5,5,4,3, + 0,6, + 5,7, + 0x18, + 0xF0,0xD8,0xCC,0xD8,0xF0 +}; +const GuiConst_INT8U Ch000557[20] = +{ + 0,0,0,0,2, 5,4,4,5,3, + 0,6, + 5,7, + 0x24, + 0xFC,0xC0,0xF8,0xC0,0xFC +}; +const GuiConst_INT8U Ch000558[19] = +{ + 0,0,0,0,2, 5,4,4,2,3, + 0,6, + 5,7, + 0x64, + 0xFC,0xC0,0xF8,0xC0 +}; +const GuiConst_INT8U Ch000559[18] = +{ + 0,0,0,0,2, 1,4,4,4,2, + 0,5, + 5,7, + 0x72, + 0xC0,0xF0,0xD8 +}; +const GuiConst_INT8U Ch000560[18] = +{ + 0,0,0,0,0, 14,14,14,14,14, + 0,15, + 0,16, + 0xFE,0xFF, + 0xFF,0xFE +}; +const GuiConst_INT8U Ch000561[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000562[18] = +{ + 2,1,0,2,2, 3,4,5,3,3, + 0,6, + 6,5, + 0x12, + 0x30,0xFC,0x30 +}; +const GuiConst_INT8U Ch000563[17] = +{ + 2,2,2,1,2, 2,2,2,3,2, + 1,3, + 11,3, + 0x02, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000564[16] = +{ + 2,1,0,2,2, 2,3,4,2,2, + 0,5, + 8,2, + 0x02, + 0xF8 +}; +const GuiConst_INT8U Ch000565[16] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 11,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000566[19] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 4,9, + 0xFC,0x00, + 0x78,0xCC,0x78 +}; +const GuiConst_INT8U Ch000567[20] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 4,9, + 0xF0,0x01, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000568[24] = +{ + 0,0,0,0,2, 5,5,3,5,3, + 0,6, + 4,9, + 0x80,0x00, + 0x78,0xCC,0x0C,0x18,0x30,0x60,0xC0,0xFC +}; +const GuiConst_INT8U Ch000569[24] = +{ + 0,0,1,0,2, 5,5,5,5,3, + 0,6, + 4,9, + 0x40,0x00, + 0x78,0xCC,0x04,0x0C,0x18,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000570[23] = +{ + 2,1,0,1,3, 5,5,6,5,3, + 0,7, + 4,9, + 0x20,0x01, + 0x0C,0x1C,0x3C,0x6C,0xCC,0xFE,0x0C +}; +const GuiConst_INT8U Ch000571[22] = +{ + 0,0,1,0,2, 5,4,5,5,3, + 0,6, + 4,9, + 0x64,0x00, + 0xFC,0xC0,0xF8,0x0C,0xCC,0x78 +}; +const GuiConst_INT8U Ch000572[22] = +{ + 1,0,0,0,2, 4,4,5,5,3, + 0,6, + 4,9, + 0xE0,0x00, + 0x38,0x60,0xC0,0xF8,0xCC,0x78 +}; +const GuiConst_INT8U Ch000573[20] = +{ + 0,1,2,2,2, 5,5,4,3,3, + 0,6, + 4,9, + 0xB4,0x01, + 0xFC,0x0C,0x18,0x30 +}; +const GuiConst_INT8U Ch000574[21] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 4,9, + 0xCC,0x00, + 0x78,0xCC,0x78,0xCC,0x78 +}; +const GuiConst_INT8U Ch000575[22] = +{ + 0,0,0,1,2, 5,5,5,4,3, + 0,6, + 4,9, + 0x1C,0x00, + 0x78,0xCC,0x7C,0x0C,0x18,0x70 +}; +const GuiConst_INT8U Ch000576[18] = +{ + 2,2,2,2,2, 3,3,3,3,3, + 2,2, + 6,7, + 0x5A, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000577[21] = +{ + 2,1,0,0,2, 3,4,5,5,3, + 0,6, + 4,9, + 0x2A,0x01, + 0x30,0x78,0xCC,0xFC,0xCC +}; +const GuiConst_INT8U Ch000578[21] = +{ + 0,0,0,0,2, 5,5,5,5,3, + 0,6, + 4,9, + 0xCC,0x00, + 0xF8,0xCC,0xF8,0xCC,0xF8 +}; +const GuiConst_INT8U Ch000579[21] = +{ + 0,0,0,0,2, 5,5,4,5,3, + 0,6, + 4,9, + 0x78,0x00, + 0x78,0xCC,0xC0,0xCC,0x78 +}; +const GuiConst_INT8U Ch000580[21] = +{ + 0,0,0,0,2, 4,5,5,4,3, + 0,6, + 4,9, + 0x78,0x00, + 0xF0,0xD8,0xCC,0xD8,0xF0 +}; +const GuiConst_INT8U Ch000581[21] = +{ + 0,0,0,0,2, 4,3,3,4,2, + 0,5, + 4,9, + 0xCC,0x00, + 0xF8,0xC0,0xF0,0xC0,0xF8 +}; +const GuiConst_INT8U Ch000582[20] = +{ + 0,0,0,0,2, 4,3,3,1,2, + 0,5, + 4,9, + 0xCC,0x01, + 0xF8,0xC0,0xF0,0xC0 +}; +const GuiConst_INT8U Ch000583[19] = +{ + 0,0,0,0,2, 3,5,5,5,3, + 0,6, + 4,9, + 0xF2,0x01, + 0xC0,0xF8,0xCC +}; +const GuiConst_INT8U Ch000584[19] = +{ + 0,0,0,0,0, 15,15,15,15,15, + 0,16, + 0,17, + 0xFE,0xFF,0x01, + 0xFF,0xFF +}; +const GuiConst_INT8U Ch000585[16] = +{ + 0,0,0,0,0, 2,2,2,2,2, + 0,3, + 0,0, + 0x00, + 0x00 +}; +const GuiConst_INT8U Ch000586[18] = +{ + 3,1,0,3,3, 4,6,7,4,4, + 0,8, + 5,7, + 0x66, + 0x18,0xFF,0x18 +}; +const GuiConst_INT8U Ch000587[17] = +{ + 3,3,3,3,2, 3,3,3,4,4, + 2,3, + 12,4, + 0x06, + 0x60,0xC0 +}; +const GuiConst_INT8U Ch000588[16] = +{ + 3,1,0,3,3, 4,6,7,4,4, + 0,8, + 8,1, + 0x00, + 0xFF +}; +const GuiConst_INT8U Ch000589[16] = +{ + 3,3,3,3,3, 4,4,4,4,4, + 3,2, + 12,2, + 0x02, + 0xC0 +}; +const GuiConst_INT8U Ch000590[21] = +{ + 1,0,0,1,3, 6,7,7,6,4, + 0,8, + 3,11, + 0xF4,0x02, + 0x3C,0x66,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000591[20] = +{ + 2,1,3,3,2, 4,4,4,4,3, + 1,4, + 3,11, + 0xF0,0x07, + 0x30,0x70,0xF0,0x30 +}; +const GuiConst_INT8U Ch000592[25] = +{ + 1,0,1,0,3, 6,7,6,7,4, + 0,8, + 3,11, + 0x08,0x02, + 0x3C,0x66,0xC3,0x03,0x0E,0x38,0x60,0xC0,0xFF +}; +const GuiConst_INT8U Ch000593[27] = +{ + 1,0,4,1,3, 6,7,7,6,4, + 0,8, + 3,11, + 0x00,0x00, + 0x3C,0x66,0xC3,0x03,0x06,0x0C,0x06,0x03,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000594[22] = +{ + 2,1,0,4,3, 5,5,7,5,4, + 0,8, + 3,11, + 0x54,0x06, + 0x1C,0x3C,0x6C,0xCC,0xFF,0x0C +}; +const GuiConst_INT8U Ch000595[24] = +{ + 0,0,1,1,3, 7,6,7,6,4, + 0,8, + 3,11, + 0xC4,0x00, + 0xFF,0xC0,0xFC,0xE6,0x03,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000596[25] = +{ + 2,0,0,1,3, 6,5,7,6,4, + 0,8, + 3,11, + 0x80,0x01, + 0x1E,0x30,0x60,0xC0,0xFC,0xE6,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000597[22] = +{ + 0,3,3,2,3, 7,7,5,4,4, + 0,8, + 3,11, + 0x54,0x05, + 0xFF,0x03,0x06,0x0C,0x18,0x30 +}; +const GuiConst_INT8U Ch000598[25] = +{ + 1,0,0,1,3, 6,7,7,6,4, + 0,8, + 3,11, + 0x08,0x01, + 0x3C,0x66,0xC3,0x66,0x3C,0x66,0xC3,0x66,0x3C +}; +const GuiConst_INT8U Ch000599[25] = +{ + 1,0,1,1,3, 6,7,7,5,4, + 0,8, + 3,11, + 0x18,0x00, + 0x3C,0x66,0xC3,0x67,0x3F,0x03,0x06,0x0C,0x78 +}; +const GuiConst_INT8U Ch000600[18] = +{ + 3,3,3,3,3, 4,4,4,4,4, + 3,2, + 6,8, + 0xBA, + 0xC0,0x00,0xC0 +}; +const GuiConst_INT8U Ch000601[21] = +{ + 2,2,1,0,3, 5,5,6,7,4, + 0,8, + 3,11, + 0xDA,0x04, + 0x18,0x3C,0x66,0xFF,0xC3 +}; +const GuiConst_INT8U Ch000602[25] = +{ + 0,0,0,0,3, 6,7,7,6,4, + 0,8, + 3,11, + 0x08,0x01, + 0xFC,0xC6,0xC3,0xC6,0xFC,0xC6,0xC3,0xC6,0xFC +}; +const GuiConst_INT8U Ch000603[21] = +{ + 1,0,0,1,3, 7,6,6,7,4, + 0,8, + 3,11, + 0xF8,0x01, + 0x3E,0x63,0xC0,0x63,0x3E +}; +const GuiConst_INT8U Ch000604[21] = +{ + 0,0,0,0,3, 6,7,7,6,4, + 0,8, + 3,11, + 0xF8,0x01, + 0xFC,0xC6,0xC3,0xC6,0xFC +}; +const GuiConst_INT8U Ch000605[21] = +{ + 0,0,0,0,3, 7,5,5,7,4, + 0,8, + 3,11, + 0x9C,0x03, + 0xFF,0xC0,0xFC,0xC0,0xFF +}; +const GuiConst_INT8U Ch000606[20] = +{ + 0,0,0,0,3, 7,5,5,1,4, + 0,8, + 3,11, + 0x9C,0x07, + 0xFF,0xC0,0xFC,0xC0 +}; +const GuiConst_INT8U Ch000607[20] = +{ + 0,0,0,0,3, 1,5,6,6,3, + 0,7, + 3,11, + 0xC6,0x07, + 0xC0,0xF8,0xEC,0xC6 +}; +const GuiConst_INT8U Ch000608[20] = +{ + 0,0,0,0,0, 16,16,16,16,16, + 0,17, + 0,18, + 0xFE,0xFF,0x03, + 0xFF,0xFF,0x80 +}; +const GuiConst_PTR const GuiFont_ChPtrList[GuiFont_CharCnt] = +{ + (GuiConst_PTR)Ch000000, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000001, + (GuiConst_PTR)Ch000002, + (GuiConst_PTR)Ch000003, + (GuiConst_PTR)Ch000004, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000005, + (GuiConst_PTR)Ch000006, + (GuiConst_PTR)Ch000007, + (GuiConst_PTR)Ch000008, + (GuiConst_PTR)Ch000009, + (GuiConst_PTR)Ch000010, + (GuiConst_PTR)Ch000011, + (GuiConst_PTR)Ch000012, + (GuiConst_PTR)Ch000013, + (GuiConst_PTR)Ch000014, + (GuiConst_PTR)Ch000015, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000016, + (GuiConst_PTR)Ch000017, + (GuiConst_PTR)Ch000018, + (GuiConst_PTR)Ch000019, + (GuiConst_PTR)Ch000020, + (GuiConst_PTR)Ch000021, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000022, + (GuiConst_PTR)Ch000023, + (GuiConst_PTR)Ch000024, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000025, + (GuiConst_PTR)Ch000026, + (GuiConst_PTR)Ch000027, + (GuiConst_PTR)Ch000028, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000029, + (GuiConst_PTR)Ch000030, + (GuiConst_PTR)Ch000031, + (GuiConst_PTR)Ch000032, + (GuiConst_PTR)Ch000033, + (GuiConst_PTR)Ch000034, + (GuiConst_PTR)Ch000035, + (GuiConst_PTR)Ch000036, + (GuiConst_PTR)Ch000037, + (GuiConst_PTR)Ch000038, + (GuiConst_PTR)Ch000039, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000040, + (GuiConst_PTR)Ch000041, + (GuiConst_PTR)Ch000042, + (GuiConst_PTR)Ch000043, + (GuiConst_PTR)Ch000044, + (GuiConst_PTR)Ch000045, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000046, + (GuiConst_PTR)Ch000047, + (GuiConst_PTR)Ch000048, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000049, + (GuiConst_PTR)Ch000050, + (GuiConst_PTR)Ch000051, + (GuiConst_PTR)Ch000052, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000053, + (GuiConst_PTR)Ch000054, + (GuiConst_PTR)Ch000055, + (GuiConst_PTR)Ch000056, + (GuiConst_PTR)Ch000057, + (GuiConst_PTR)Ch000058, + (GuiConst_PTR)Ch000059, + (GuiConst_PTR)Ch000060, + (GuiConst_PTR)Ch000061, + (GuiConst_PTR)Ch000062, + (GuiConst_PTR)Ch000063, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000064, + (GuiConst_PTR)Ch000065, + (GuiConst_PTR)Ch000066, + (GuiConst_PTR)Ch000067, + (GuiConst_PTR)Ch000068, + (GuiConst_PTR)Ch000069, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000070, + (GuiConst_PTR)Ch000071, + (GuiConst_PTR)Ch000072, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000073, + (GuiConst_PTR)Ch000074, + (GuiConst_PTR)Ch000075, + (GuiConst_PTR)Ch000076, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000077, + (GuiConst_PTR)Ch000078, + (GuiConst_PTR)Ch000079, + (GuiConst_PTR)Ch000080, + (GuiConst_PTR)Ch000081, + (GuiConst_PTR)Ch000082, + (GuiConst_PTR)Ch000083, + (GuiConst_PTR)Ch000084, + (GuiConst_PTR)Ch000085, + (GuiConst_PTR)Ch000086, + (GuiConst_PTR)Ch000087, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000088, + (GuiConst_PTR)Ch000089, + (GuiConst_PTR)Ch000090, + (GuiConst_PTR)Ch000091, + (GuiConst_PTR)Ch000092, + (GuiConst_PTR)Ch000093, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000094, + (GuiConst_PTR)Ch000095, + (GuiConst_PTR)Ch000096, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000097, + (GuiConst_PTR)Ch000098, + (GuiConst_PTR)Ch000099, + (GuiConst_PTR)Ch000100, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000101, + (GuiConst_PTR)Ch000102, + (GuiConst_PTR)Ch000103, + (GuiConst_PTR)Ch000104, + (GuiConst_PTR)Ch000105, + (GuiConst_PTR)Ch000106, + (GuiConst_PTR)Ch000107, + (GuiConst_PTR)Ch000108, + (GuiConst_PTR)Ch000109, + (GuiConst_PTR)Ch000110, + (GuiConst_PTR)Ch000111, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000112, + (GuiConst_PTR)Ch000113, + (GuiConst_PTR)Ch000114, + (GuiConst_PTR)Ch000115, + (GuiConst_PTR)Ch000116, + (GuiConst_PTR)Ch000117, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000118, + (GuiConst_PTR)Ch000119, + (GuiConst_PTR)Ch000120, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000121, + (GuiConst_PTR)Ch000122, + (GuiConst_PTR)Ch000123, + (GuiConst_PTR)Ch000124, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000125, + (GuiConst_PTR)Ch000126, + (GuiConst_PTR)Ch000127, + (GuiConst_PTR)Ch000128, + (GuiConst_PTR)Ch000129, + (GuiConst_PTR)Ch000130, + (GuiConst_PTR)Ch000131, + (GuiConst_PTR)Ch000132, + (GuiConst_PTR)Ch000133, + (GuiConst_PTR)Ch000134, + (GuiConst_PTR)Ch000135, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000136, + (GuiConst_PTR)Ch000137, + (GuiConst_PTR)Ch000138, + (GuiConst_PTR)Ch000139, + (GuiConst_PTR)Ch000140, + (GuiConst_PTR)Ch000141, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000142, + (GuiConst_PTR)Ch000143, + (GuiConst_PTR)Ch000144, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000145, + (GuiConst_PTR)Ch000146, + (GuiConst_PTR)Ch000147, + (GuiConst_PTR)Ch000148, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000149, + (GuiConst_PTR)Ch000150, + (GuiConst_PTR)Ch000151, + (GuiConst_PTR)Ch000152, + (GuiConst_PTR)Ch000153, + (GuiConst_PTR)Ch000154, + (GuiConst_PTR)Ch000155, + (GuiConst_PTR)Ch000156, + (GuiConst_PTR)Ch000157, + (GuiConst_PTR)Ch000158, + (GuiConst_PTR)Ch000159, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000160, + (GuiConst_PTR)Ch000161, + (GuiConst_PTR)Ch000162, + (GuiConst_PTR)Ch000163, + (GuiConst_PTR)Ch000164, + (GuiConst_PTR)Ch000165, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000166, + (GuiConst_PTR)Ch000167, + (GuiConst_PTR)Ch000168, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000169, + (GuiConst_PTR)Ch000170, + (GuiConst_PTR)Ch000171, + (GuiConst_PTR)Ch000172, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000173, + (GuiConst_PTR)Ch000174, + (GuiConst_PTR)Ch000175, + (GuiConst_PTR)Ch000176, + (GuiConst_PTR)Ch000177, + (GuiConst_PTR)Ch000178, + (GuiConst_PTR)Ch000179, + (GuiConst_PTR)Ch000180, + (GuiConst_PTR)Ch000181, + (GuiConst_PTR)Ch000182, + (GuiConst_PTR)Ch000183, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000184, + (GuiConst_PTR)Ch000185, + (GuiConst_PTR)Ch000186, + (GuiConst_PTR)Ch000187, + (GuiConst_PTR)Ch000188, + (GuiConst_PTR)Ch000189, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000190, + (GuiConst_PTR)Ch000191, + (GuiConst_PTR)Ch000192, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000193, + (GuiConst_PTR)Ch000194, + (GuiConst_PTR)Ch000195, + (GuiConst_PTR)Ch000196, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000197, + (GuiConst_PTR)Ch000198, + (GuiConst_PTR)Ch000199, + (GuiConst_PTR)Ch000200, + (GuiConst_PTR)Ch000201, + (GuiConst_PTR)Ch000202, + (GuiConst_PTR)Ch000203, + (GuiConst_PTR)Ch000204, + (GuiConst_PTR)Ch000205, + (GuiConst_PTR)Ch000206, + (GuiConst_PTR)Ch000207, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000208, + (GuiConst_PTR)Ch000209, + (GuiConst_PTR)Ch000210, + (GuiConst_PTR)Ch000211, + (GuiConst_PTR)Ch000212, + (GuiConst_PTR)Ch000213, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000214, + (GuiConst_PTR)Ch000215, + (GuiConst_PTR)Ch000216, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000217, + (GuiConst_PTR)Ch000218, + (GuiConst_PTR)Ch000219, + (GuiConst_PTR)Ch000220, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000221, + (GuiConst_PTR)Ch000222, + (GuiConst_PTR)Ch000223, + (GuiConst_PTR)Ch000224, + (GuiConst_PTR)Ch000225, + (GuiConst_PTR)Ch000226, + (GuiConst_PTR)Ch000227, + (GuiConst_PTR)Ch000228, + (GuiConst_PTR)Ch000229, + (GuiConst_PTR)Ch000230, + (GuiConst_PTR)Ch000231, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000232, + (GuiConst_PTR)Ch000233, + (GuiConst_PTR)Ch000234, + (GuiConst_PTR)Ch000235, + (GuiConst_PTR)Ch000236, + (GuiConst_PTR)Ch000237, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000238, + (GuiConst_PTR)Ch000239, + (GuiConst_PTR)Ch000240, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000241, + (GuiConst_PTR)Ch000242, + (GuiConst_PTR)Ch000243, + (GuiConst_PTR)Ch000244, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000245, + (GuiConst_PTR)Ch000246, + (GuiConst_PTR)Ch000247, + (GuiConst_PTR)Ch000248, + (GuiConst_PTR)Ch000249, + (GuiConst_PTR)Ch000250, + (GuiConst_PTR)Ch000251, + (GuiConst_PTR)Ch000252, + (GuiConst_PTR)Ch000253, + (GuiConst_PTR)Ch000254, + (GuiConst_PTR)Ch000255, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000256, + (GuiConst_PTR)Ch000257, + (GuiConst_PTR)Ch000258, + (GuiConst_PTR)Ch000259, + (GuiConst_PTR)Ch000260, + (GuiConst_PTR)Ch000261, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000262, + (GuiConst_PTR)Ch000263, + (GuiConst_PTR)Ch000264, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000265, + (GuiConst_PTR)Ch000266, + (GuiConst_PTR)Ch000267, + (GuiConst_PTR)Ch000268, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000269, + (GuiConst_PTR)Ch000270, + (GuiConst_PTR)Ch000271, + (GuiConst_PTR)Ch000272, + (GuiConst_PTR)Ch000273, + (GuiConst_PTR)Ch000274, + (GuiConst_PTR)Ch000275, + (GuiConst_PTR)Ch000276, + (GuiConst_PTR)Ch000277, + (GuiConst_PTR)Ch000278, + (GuiConst_PTR)Ch000279, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000280, + (GuiConst_PTR)Ch000281, + (GuiConst_PTR)Ch000282, + (GuiConst_PTR)Ch000283, + (GuiConst_PTR)Ch000284, + (GuiConst_PTR)Ch000285, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000286, + (GuiConst_PTR)Ch000287, + (GuiConst_PTR)Ch000288, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000289, + (GuiConst_PTR)Ch000290, + (GuiConst_PTR)Ch000291, + (GuiConst_PTR)Ch000292, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000293, + (GuiConst_PTR)Ch000294, + (GuiConst_PTR)Ch000295, + (GuiConst_PTR)Ch000296, + (GuiConst_PTR)Ch000297, + (GuiConst_PTR)Ch000298, + (GuiConst_PTR)Ch000299, + (GuiConst_PTR)Ch000300, + (GuiConst_PTR)Ch000301, + (GuiConst_PTR)Ch000302, + (GuiConst_PTR)Ch000303, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000304, + (GuiConst_PTR)Ch000305, + (GuiConst_PTR)Ch000306, + (GuiConst_PTR)Ch000307, + (GuiConst_PTR)Ch000308, + (GuiConst_PTR)Ch000309, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000310, + (GuiConst_PTR)Ch000311, + (GuiConst_PTR)Ch000312, + (GuiConst_PTR)Ch000313, + (GuiConst_PTR)Ch000314, + (GuiConst_PTR)Ch000315, + (GuiConst_PTR)Ch000316, + (GuiConst_PTR)Ch000317, + (GuiConst_PTR)Ch000318, + (GuiConst_PTR)Ch000319, + (GuiConst_PTR)Ch000320, + (GuiConst_PTR)Ch000321, + (GuiConst_PTR)Ch000322, + (GuiConst_PTR)Ch000323, + (GuiConst_PTR)Ch000324, + (GuiConst_PTR)Ch000325, + (GuiConst_PTR)Ch000326, + (GuiConst_PTR)Ch000327, + (GuiConst_PTR)Ch000328, + (GuiConst_PTR)Ch000329, + (GuiConst_PTR)Ch000330, + (GuiConst_PTR)Ch000331, + (GuiConst_PTR)Ch000332, + (GuiConst_PTR)Ch000333, + (GuiConst_PTR)Ch000334, + (GuiConst_PTR)Ch000335, + (GuiConst_PTR)Ch000336, + (GuiConst_PTR)Ch000337, + (GuiConst_PTR)Ch000338, + (GuiConst_PTR)Ch000339, + (GuiConst_PTR)Ch000340, + (GuiConst_PTR)Ch000341, + (GuiConst_PTR)Ch000342, + (GuiConst_PTR)Ch000343, + (GuiConst_PTR)Ch000344, + (GuiConst_PTR)Ch000345, + (GuiConst_PTR)Ch000346, + (GuiConst_PTR)Ch000347, + (GuiConst_PTR)Ch000348, + (GuiConst_PTR)Ch000349, + (GuiConst_PTR)Ch000350, + (GuiConst_PTR)Ch000351, + (GuiConst_PTR)Ch000352, + (GuiConst_PTR)Ch000353, + (GuiConst_PTR)Ch000354, + (GuiConst_PTR)Ch000355, + (GuiConst_PTR)Ch000356, + (GuiConst_PTR)Ch000357, + (GuiConst_PTR)Ch000358, + (GuiConst_PTR)Ch000359, + (GuiConst_PTR)Ch000360, + (GuiConst_PTR)Ch000361, + (GuiConst_PTR)Ch000362, + (GuiConst_PTR)Ch000363, + (GuiConst_PTR)Ch000364, + (GuiConst_PTR)Ch000365, + (GuiConst_PTR)Ch000366, + (GuiConst_PTR)Ch000367, + (GuiConst_PTR)Ch000368, + (GuiConst_PTR)Ch000369, + (GuiConst_PTR)Ch000370, + (GuiConst_PTR)Ch000371, + (GuiConst_PTR)Ch000372, + (GuiConst_PTR)Ch000373, + (GuiConst_PTR)Ch000374, + (GuiConst_PTR)Ch000375, + (GuiConst_PTR)Ch000376, + (GuiConst_PTR)Ch000377, + (GuiConst_PTR)Ch000378, + (GuiConst_PTR)Ch000379, + (GuiConst_PTR)Ch000380, + (GuiConst_PTR)Ch000381, + (GuiConst_PTR)Ch000382, + (GuiConst_PTR)Ch000383, + (GuiConst_PTR)Ch000384, + (GuiConst_PTR)Ch000385, + (GuiConst_PTR)Ch000386, + (GuiConst_PTR)Ch000387, + (GuiConst_PTR)Ch000388, + (GuiConst_PTR)Ch000389, + (GuiConst_PTR)Ch000390, + (GuiConst_PTR)Ch000391, + (GuiConst_PTR)Ch000392, + (GuiConst_PTR)Ch000393, + (GuiConst_PTR)Ch000394, + (GuiConst_PTR)Ch000395, + (GuiConst_PTR)Ch000396, + (GuiConst_PTR)Ch000397, + (GuiConst_PTR)Ch000398, + (GuiConst_PTR)Ch000399, + (GuiConst_PTR)Ch000400, + (GuiConst_PTR)Ch000401, + (GuiConst_PTR)Ch000402, + (GuiConst_PTR)Ch000403, + (GuiConst_PTR)Ch000404, + (GuiConst_PTR)Ch000405, + (GuiConst_PTR)Ch000406, + (GuiConst_PTR)Ch000407, + (GuiConst_PTR)Ch000408, + (GuiConst_PTR)Ch000409, + (GuiConst_PTR)Ch000410, + (GuiConst_PTR)Ch000411, + (GuiConst_PTR)Ch000412, + (GuiConst_PTR)Ch000413, + (GuiConst_PTR)Ch000414, + (GuiConst_PTR)Ch000415, + (GuiConst_PTR)Ch000416, + (GuiConst_PTR)Ch000417, + (GuiConst_PTR)Ch000418, + (GuiConst_PTR)Ch000419, + (GuiConst_PTR)Ch000420, + (GuiConst_PTR)Ch000421, + (GuiConst_PTR)Ch000422, + (GuiConst_PTR)Ch000423, + (GuiConst_PTR)Ch000424, + (GuiConst_PTR)Ch000425, + (GuiConst_PTR)Ch000426, + (GuiConst_PTR)Ch000427, + (GuiConst_PTR)Ch000428, + (GuiConst_PTR)Ch000429, + (GuiConst_PTR)Ch000430, + (GuiConst_PTR)Ch000431, + (GuiConst_PTR)Ch000432, + (GuiConst_PTR)Ch000433, + (GuiConst_PTR)Ch000434, + (GuiConst_PTR)Ch000435, + (GuiConst_PTR)Ch000436, + (GuiConst_PTR)Ch000437, + (GuiConst_PTR)Ch000438, + (GuiConst_PTR)Ch000439, + (GuiConst_PTR)Ch000440, + (GuiConst_PTR)Ch000441, + (GuiConst_PTR)Ch000442, + (GuiConst_PTR)Ch000443, + (GuiConst_PTR)Ch000444, + (GuiConst_PTR)Ch000445, + (GuiConst_PTR)Ch000446, + (GuiConst_PTR)Ch000447, + (GuiConst_PTR)Ch000448, + (GuiConst_PTR)Ch000449, + (GuiConst_PTR)Ch000450, + (GuiConst_PTR)Ch000451, + (GuiConst_PTR)Ch000452, + (GuiConst_PTR)Ch000453, + (GuiConst_PTR)Ch000454, + (GuiConst_PTR)Ch000455, + (GuiConst_PTR)Ch000456, + (GuiConst_PTR)Ch000457, + (GuiConst_PTR)Ch000458, + (GuiConst_PTR)Ch000459, + (GuiConst_PTR)Ch000460, + (GuiConst_PTR)Ch000461, + (GuiConst_PTR)Ch000462, + (GuiConst_PTR)Ch000463, + (GuiConst_PTR)Ch000464, + (GuiConst_PTR)Ch000465, + (GuiConst_PTR)Ch000466, + (GuiConst_PTR)Ch000467, + (GuiConst_PTR)Ch000468, + (GuiConst_PTR)Ch000469, + (GuiConst_PTR)Ch000470, + (GuiConst_PTR)Ch000471, + (GuiConst_PTR)Ch000472, + (GuiConst_PTR)Ch000473, + (GuiConst_PTR)Ch000474, + (GuiConst_PTR)Ch000475, + (GuiConst_PTR)Ch000476, + (GuiConst_PTR)Ch000477, + (GuiConst_PTR)Ch000478, + (GuiConst_PTR)Ch000479, + (GuiConst_PTR)Ch000480, + (GuiConst_PTR)Ch000481, + (GuiConst_PTR)Ch000482, + (GuiConst_PTR)Ch000483, + (GuiConst_PTR)Ch000484, + (GuiConst_PTR)Ch000485, + (GuiConst_PTR)Ch000486, + (GuiConst_PTR)Ch000487, + (GuiConst_PTR)Ch000488, + (GuiConst_PTR)Ch000489, + (GuiConst_PTR)Ch000490, + (GuiConst_PTR)Ch000491, + (GuiConst_PTR)Ch000492, + (GuiConst_PTR)Ch000493, + (GuiConst_PTR)Ch000494, + (GuiConst_PTR)Ch000495, + (GuiConst_PTR)Ch000496, + (GuiConst_PTR)Ch000497, + (GuiConst_PTR)Ch000498, + (GuiConst_PTR)Ch000499, + (GuiConst_PTR)Ch000500, + (GuiConst_PTR)Ch000501, + (GuiConst_PTR)Ch000502, + (GuiConst_PTR)Ch000503, + (GuiConst_PTR)Ch000504, + (GuiConst_PTR)Ch000505, + (GuiConst_PTR)Ch000506, + (GuiConst_PTR)Ch000507, + (GuiConst_PTR)Ch000508, + (GuiConst_PTR)Ch000509, + (GuiConst_PTR)Ch000510, + (GuiConst_PTR)Ch000511, + (GuiConst_PTR)Ch000512, + (GuiConst_PTR)Ch000513, + (GuiConst_PTR)Ch000514, + (GuiConst_PTR)Ch000515, + (GuiConst_PTR)Ch000516, + (GuiConst_PTR)Ch000517, + (GuiConst_PTR)Ch000518, + (GuiConst_PTR)Ch000519, + (GuiConst_PTR)Ch000520, + (GuiConst_PTR)Ch000521, + (GuiConst_PTR)Ch000522, + (GuiConst_PTR)Ch000523, + (GuiConst_PTR)Ch000524, + (GuiConst_PTR)Ch000525, + (GuiConst_PTR)Ch000526, + (GuiConst_PTR)Ch000527, + (GuiConst_PTR)Ch000528, + (GuiConst_PTR)Ch000529, + (GuiConst_PTR)Ch000530, + (GuiConst_PTR)Ch000531, + (GuiConst_PTR)Ch000532, + (GuiConst_PTR)Ch000533, + (GuiConst_PTR)Ch000534, + (GuiConst_PTR)Ch000535, + (GuiConst_PTR)Ch000536, + (GuiConst_PTR)Ch000537, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000538, + (GuiConst_PTR)Ch000539, + (GuiConst_PTR)Ch000540, + (GuiConst_PTR)Ch000541, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000542, + (GuiConst_PTR)Ch000543, + (GuiConst_PTR)Ch000544, + (GuiConst_PTR)Ch000545, + (GuiConst_PTR)Ch000546, + (GuiConst_PTR)Ch000547, + (GuiConst_PTR)Ch000548, + (GuiConst_PTR)Ch000549, + (GuiConst_PTR)Ch000550, + (GuiConst_PTR)Ch000551, + (GuiConst_PTR)Ch000552, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000553, + (GuiConst_PTR)Ch000554, + (GuiConst_PTR)Ch000555, + (GuiConst_PTR)Ch000556, + (GuiConst_PTR)Ch000557, + (GuiConst_PTR)Ch000558, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000559, + (GuiConst_PTR)Ch000560, + (GuiConst_PTR)Ch000561, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000562, + (GuiConst_PTR)Ch000563, + (GuiConst_PTR)Ch000564, + (GuiConst_PTR)Ch000565, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000566, + (GuiConst_PTR)Ch000567, + (GuiConst_PTR)Ch000568, + (GuiConst_PTR)Ch000569, + (GuiConst_PTR)Ch000570, + (GuiConst_PTR)Ch000571, + (GuiConst_PTR)Ch000572, + (GuiConst_PTR)Ch000573, + (GuiConst_PTR)Ch000574, + (GuiConst_PTR)Ch000575, + (GuiConst_PTR)Ch000576, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000577, + (GuiConst_PTR)Ch000578, + (GuiConst_PTR)Ch000579, + (GuiConst_PTR)Ch000580, + (GuiConst_PTR)Ch000581, + (GuiConst_PTR)Ch000582, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000583, + (GuiConst_PTR)Ch000584, + (GuiConst_PTR)Ch000585, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000586, + (GuiConst_PTR)Ch000587, + (GuiConst_PTR)Ch000588, + (GuiConst_PTR)Ch000589, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000590, + (GuiConst_PTR)Ch000591, + (GuiConst_PTR)Ch000592, + (GuiConst_PTR)Ch000593, + (GuiConst_PTR)Ch000594, + (GuiConst_PTR)Ch000595, + (GuiConst_PTR)Ch000596, + (GuiConst_PTR)Ch000597, + (GuiConst_PTR)Ch000598, + (GuiConst_PTR)Ch000599, + (GuiConst_PTR)Ch000600, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000601, + (GuiConst_PTR)Ch000602, + (GuiConst_PTR)Ch000603, + (GuiConst_PTR)Ch000604, + (GuiConst_PTR)Ch000605, + (GuiConst_PTR)Ch000606, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000608, + (GuiConst_PTR)Ch000607, + (GuiConst_PTR)Ch000608 +}; +const GuiLib_FontRec Font_ANSI7 = +{ + 32, + 104, + 0, + 73, + 6,11, + 1, + 2,4,8, + 9,10, + 10,10, + 5, + 5, + 1, + 1 +}; +const GuiLib_FontRec Font_ANSI7Bold = +{ + 32, + 104, + 74, + 147, + 7,11, + 1, + 2,4,8, + 10,10, + 9,9, + 6, + 6, + 1, + 1 +}; +const GuiLib_FontRec Font_ANSI7Condensed = +{ + 32, + 104, + 148, + 221, + 5,11, + 1, + 2,4,8, + 9,10, + 10,10, + 4, + 4, + 1, + 1 +}; +const GuiLib_FontRec Font_ANSI9 = +{ + 32, + 104, + 222, + 295, + 9,14, + 1, + 3,5,11, + 14,14, + 14,14, + 6, + 7, + 2, + 2 +}; +const GuiLib_FontRec Font_ANSI11 = +{ + 32, + 104, + 296, + 369, + 9,17, + 1, + 3,6,13, + 15,16, + 15,15, + 8, + 7, + 2, + 2 +}; +const GuiLib_FontRec Font_ANSI11Condensed = +{ + 32, + 104, + 370, + 443, + 8,17, + 1, + 3,6,13, + 15,16, + 15,15, + 7, + 7, + 1, + 1 +}; +const GuiLib_FontRec Font_ANSI11Light = +{ + 32, + 104, + 444, + 517, + 6,17, + 1, + 3,7,13, + 15,16, + 15,15, + 5, + 5, + 1, + 1 +}; +const GuiLib_FontRec Font_ANSI11AA = +{ + 32, + 104, + 518, + 591, + 18,20, + 4, + 5,8,15, + 19,19, + 17,17, + 8, + 5, + 2, + 9 +}; +const GuiLib_FontRec Font_ANSI13 = +{ + 32, + 104, + 592, + 665, + 11,21, + 1, + 4,7,16, + 18,20, + 18,19, + 9, + 9, + 2, + 2 +}; +const GuiLib_FontRec Font_ANSI17AA = +{ + 32, + 104, + 666, + 739, + 24,29, + 4, + 6,11,22, + 28,28, + 25,26, + 10, + 7, + 3, + 12 +}; +const GuiLib_FontRec Font_ANSI19 = +{ + 32, + 104, + 740, + 813, + 17,31, + 1, + 5,10,23, + 25,28, + 25,26, + 14, + 14, + 3, + 3 +}; +const GuiLib_FontRec Font_ANSI23AA = +{ + 32, + 104, + 814, + 887, + 28,37, + 4, + 7,13,29, + 36,36, + 32,33, + 14, + 11, + 4, + 14 +}; +const GuiLib_FontRec Font_ANSI24 = +{ + 32, + 104, + 888, + 961, + 19,39, + 1, + 7,14,30, + 32,36, + 32,33, + 16, + 15, + 3, + 3 +}; +const GuiLib_FontRec Font_ANSI30 = +{ + 32, + 255, + 962, + 1186, + 21,47, + 1, + 8,18,37, + 40,44, + 39,41, + 18, + 17, + 4, + 3 +}; +const GuiLib_FontRec Font_Unicode7_14Bold = +{ + 32, + 104, + 1187, + 1260, + 15,16, + 1, + 5,7,11, + 14,15, + 14,15, + 14, + 6, + 2, + 2 +}; +const GuiLib_FontRec Font_Unicode9_15 = +{ + 32, + 104, + 1261, + 1334, + 16,17, + 1, + 4,6,12, + 15,16, + 15,16, + 15, + 7, + 2, + 2 +}; +const GuiLib_FontRec Font_Unicode11_16 = +{ + 32, + 104, + 1335, + 1408, + 17,18, + 1, + 3,6,13, + 16,17, + 15,16, + 16, + 7, + 2, + 3 +}; +const GuiLib_FontRecPtr GuiFont_FontList[GuiFont_FontCnt] = +{ + (GuiLib_FontRecPtr)&Font_ANSI7, + (GuiLib_FontRecPtr)&Font_ANSI7, + (GuiLib_FontRecPtr)&Font_ANSI7Bold, + (GuiLib_FontRecPtr)&Font_ANSI7Condensed, + (GuiLib_FontRecPtr)&Font_ANSI9, + (GuiLib_FontRecPtr)&Font_ANSI11, + (GuiLib_FontRecPtr)&Font_ANSI11Condensed, + (GuiLib_FontRecPtr)&Font_ANSI11Light, + (GuiLib_FontRecPtr)&Font_ANSI11AA, + (GuiLib_FontRecPtr)&Font_ANSI13, + (GuiLib_FontRecPtr)&Font_ANSI17AA, + (GuiLib_FontRecPtr)&Font_ANSI19, + (GuiLib_FontRecPtr)&Font_ANSI23AA, + (GuiLib_FontRecPtr)&Font_ANSI24, + (GuiLib_FontRecPtr)&Font_ANSI30, + (GuiLib_FontRecPtr)&Font_Unicode7_14Bold, + (GuiLib_FontRecPtr)&Font_Unicode9_15, + (GuiLib_FontRecPtr)&Font_Unicode11_16 +}; +const GuiConst_INT8U GuiFont_LanguageActive[GuiConst_LANGUAGE_CNT] = +{ + 1 +}; +const GuiConst_INT16U GuiFont_LanguageIndex[GuiConst_LANGUAGE_CNT] = +{ + 0 +}; +const GuiConst_INT8U GuiFont_LanguageTextDir[GuiConst_LANGUAGE_CNT] = +{ + GuiLib_LANGUAGE_TEXTDIR_LEFTTORIGHT +}; +const GuiConst_INT8U GuiFont_DecimalChar[GuiConst_LANGUAGE_CNT] = +{ + GuiLib_DECIMAL_PERIOD +}; + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiFont.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiFont.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,81 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// Ensure that this header file is only included once +#ifndef __GUIFONT_H +#define __GUIFONT_H + +// -------------------------- INCLUDE SECTION -------------------------- + +#include "GuiConst.h" +#include "GuiLib.h" + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + +#define GuiFont_CharCnt 1409 +extern const GuiConst_PTR const GuiFont_ChPtrList[GuiFont_CharCnt]; + +// Fonts +// ===== + +#define GuiFont_DEFAULT_TEXT_FONT 0 + +#define GuiFont_ANSI7 1 +#define GuiFont_ANSI7Bold 2 +#define GuiFont_ANSI7Condensed 3 +#define GuiFont_ANSI9 4 +#define GuiFont_ANSI11 5 +#define GuiFont_ANSI11Condensed 6 +#define GuiFont_ANSI11Light 7 +#define GuiFont_ANSI11AA 8 +#define GuiFont_ANSI13 9 +#define GuiFont_ANSI17AA 10 +#define GuiFont_ANSI19 11 +#define GuiFont_ANSI23AA 12 +#define GuiFont_ANSI24 13 +#define GuiFont_ANSI30 14 +#define GuiFont_Unicode7_14Bold 15 +#define GuiFont_Unicode9_15 16 +#define GuiFont_Unicode11_16 17 + +#define GuiFont_FontCnt 18 +extern const GuiLib_FontRecPtr GuiFont_FontList[GuiFont_FontCnt]; + +extern const GuiConst_INT8U GuiFont_LanguageActive[GuiConst_LANGUAGE_CNT]; + +extern const GuiConst_INT16U GuiFont_LanguageIndex[GuiConst_LANGUAGE_CNT]; + +extern const GuiConst_INT8U GuiFont_LanguageTextDir[GuiConst_LANGUAGE_CNT]; + +extern const GuiConst_INT8U GuiFont_DecimalChar[GuiConst_LANGUAGE_CNT]; + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +#endif + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiStruct.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiStruct.c Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,15540 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// -------------------------- INCLUDE SECTION -------------------------- + +#include "GuiConst.h" +#include "GuiLib.h" + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + +const GuiConst_INT8U GuiStruct_00000[47] = +{ + 2,10,80,12,0,0,0,0,0,27,2,103,1,0,0,0,80,3,131, + 0,0,0,0,31,0,144,1,200,0,1,13,14,83,111,109,101,32,116,101, + 120,116,32,104,101,114,101,0 +}; +const GuiConst_PTR const GuiStruct_StructPtrList[GuiStruct_StructCnt] = +{ + (GuiConst_PTR)GuiStruct_00000 +}; +const GuiConst_INT16U GuiStruct_StructNdxList[GuiStruct_StructCnt] = +{ + 0 +}; +const GuiConst_PTR const GuiStruct_VarPtrList[GuiStruct_VarPtrCnt] = +{ + 0 +}; + +const GuiConst_INT8U GuiStruct_VarTypeList[GuiStruct_VarPtrCnt] = +{ + 0 +}; + +const GuiConst_INT8U GuiBitmap_0[309340] = +{ + 28,2,104,1,10,3,132,171,82,203,90,203,82,171,82,6,203,82,133,203, + 90,203,90,203,82,203,90,203,90,3,203,82,129,235,82,4,203,82,130,203, + 90,204,90,4,203,90,4,235,90,129,203,90,6,235,90,130,236,90,203,90, + 3,235,90,132,203,82,235,90,203,90,203,90,3,235,90,130,236,90,235,90, + 3,236,90,3,235,90,132,235,82,236,90,236,90,203,82,3,236,90,144,235, + 82,235,90,235,82,235,90,235,90,203,82,236,90,203,82,235,82,236,82,235, + 82,203,82,236,82,203,82,235,82,204,82,8,203,82,132,203,74,203,82,203, + 74,203,82,4,171,82,137,171,74,171,82,171,82,171,74,170,74,170,74,139, + 74,138,74,139,74,4,106,74,138,138,74,106,74,106,74,138,74,106,74,106, + 74,41,58,135,41,197,16,100,0,3,101,0,129,133,0,3,134,0,4,166, + 0,3,199,0,140,231,0,231,0,231,8,8,1,7,9,8,1,8,1,8, + 9,40,9,8,9,40,9,40,17,5,40,9,151,8,9,39,9,39,9,39, + 17,72,17,104,25,169,33,201,41,234,49,42,58,107,66,139,74,204,82,237, + 90,13,91,45,91,45,91,46,91,46,99,78,91,46,91,78,99,78,91,15, + 78,99,130,78,91,78,91,3,78,99,137,110,99,78,99,78,99,110,99,110, + 99,111,99,110,99,143,99,110,99,3,111,99,133,143,99,111,99,143,99,143, + 99,111,99,14,143,99,129,143,107,5,143,99,146,143,107,143,107,143,99,143, + 99,175,99,175,107,143,99,176,99,176,99,175,107,175,107,176,107,176,99,175, + 99,176,99,207,107,176,107,208,107,5,176,107,130,208,107,176,107,7,208,107, + 135,241,107,208,107,209,107,240,107,208,107,240,107,241,107,4,240,107,138,241, + 107,241,107,17,108,241,107,17,108,17,108,241,107,241,115,17,116,17,108,13, + 17,116,133,49,116,49,116,17,116,49,116,17,116,4,49,116,129,50,116,6, + 49,116,131,50,116,50,116,81,116,3,50,116,138,49,116,49,116,81,116,49, + 116,81,116,50,116,50,116,82,116,50,116,50,116,9,82,116,132,82,124,82, + 124,114,124,82,124,5,114,124,143,82,124,114,124,82,116,50,108,241,99,144, + 83,111,83,79,75,202,17,134,0,134,0,135,0,135,0,103,0,103,0,4, + 135,0,129,103,0,3,136,0,134,135,0,134,0,133,0,100,0,68,0,68, + 0,3,100,0,135,68,0,68,0,100,0,100,0,100,8,99,8,66,0,5, + 66,8,141,67,8,67,0,67,8,67,8,99,8,99,0,100,8,67,0,99, + 0,68,0,100,8,68,0,100,0,3,100,8,135,99,0,99,8,100,0,100, + 0,68,0,100,8,100,0,7,100,8,129,99,8,6,100,8,3,132,8,132, + 133,8,133,8,132,8,133,8,4,132,8,3,133,8,131,132,8,133,8,133, + 8,9,132,8,130,164,8,165,16,3,197,16,3,230,24,131,6,25,7,25, + 7,25,3,39,33,138,40,33,72,33,72,33,40,33,105,33,40,33,137,41, + 170,41,105,41,72,33,3,40,33,130,72,33,73,33,10,72,33,137,104,33, + 105,41,105,41,104,41,105,41,104,41,137,41,137,41,104,41,4,137,41,132, + 105,41,104,41,105,41,137,41,3,104,41,153,136,41,137,49,169,57,233,65, + 42,74,42,74,107,82,171,90,204,98,236,106,12,107,45,115,45,115,77,123, + 110,123,110,123,142,123,142,131,142,131,174,131,175,131,175,139,207,139,207,139, + 207,147,11,3,131,171,82,203,90,170,82,6,203,82,129,203,90,3,203,82, + 141,203,90,203,82,235,90,203,90,203,82,203,90,203,90,203,82,203,90,203, + 82,203,90,235,90,203,90,3,235,90,131,203,90,235,90,203,90,4,235,90, + 129,203,90,4,235,90,129,203,90,9,235,90,6,236,90,156,235,90,236,90, + 235,90,203,90,236,90,235,90,235,90,236,90,236,90,235,82,236,90,236,82, + 236,82,235,90,203,82,236,90,235,82,203,82,236,90,204,82,204,82,203,82, + 235,82,203,82,236,90,204,82,203,82,235,82,3,203,82,129,203,90,8,203, + 82,6,171,82,4,171,74,158,138,74,138,74,106,74,106,66,106,66,106,74, + 138,74,106,74,138,74,106,74,106,74,139,74,41,66,103,41,197,16,101,0, + 101,0,133,0,133,0,134,0,134,0,166,0,167,0,166,0,198,0,199,0, + 231,0,231,0,8,9,8,1,6,8,9,153,40,9,8,9,40,9,40,9, + 72,17,72,17,72,9,72,17,104,17,104,25,136,25,137,33,201,41,10,50, + 74,58,139,66,172,82,237,82,237,90,13,91,46,99,46,99,78,99,78,99, + 46,99,18,78,99,130,110,99,110,99,5,78,99,3,110,99,131,111,99,111, + 99,110,99,4,111,99,135,143,99,110,99,143,99,142,99,143,99,143,99,111, + 99,5,143,99,132,143,107,143,107,143,99,143,99,3,143,107,3,143,99,130, + 143,107,143,107,4,143,99,130,175,99,143,107,3,175,107,140,176,107,175,107, + 175,107,175,99,175,99,176,107,175,107,175,107,176,107,176,107,207,107,176,107, + 3,208,107,3,176,107,130,208,107,176,107,6,208,107,145,240,107,240,107,209, + 107,241,107,208,107,241,115,240,107,240,115,208,107,241,115,241,115,241,107,241, + 115,241,107,17,108,241,115,17,108,12,17,116,135,49,116,49,116,17,116,17, + 116,49,116,17,116,17,116,6,49,116,139,50,116,50,116,49,116,49,116,50, + 116,49,116,50,116,49,116,49,116,50,116,81,116,6,50,116,8,82,116,129, + 50,116,3,82,116,3,82,124,4,82,116,133,114,116,114,124,82,124,114,124, + 82,124,5,114,124,144,114,116,82,116,50,116,241,107,176,83,144,83,79,75, + 202,25,167,0,102,0,102,0,135,0,135,0,103,0,135,0,135,0,5,136, + 0,135,168,0,136,0,135,0,134,0,100,0,68,0,68,0,3,100,0,134, + 68,0,68,0,100,0,100,0,100,8,99,8,6,66,8,5,67,8,140,99, + 8,100,8,67,8,100,0,67,0,67,8,67,8,100,8,67,8,100,8,67, + 8,100,8,3,99,8,131,100,8,100,8,99,8,7,100,8,133,132,8,132, + 8,100,8,132,8,100,8,3,132,8,138,133,8,132,8,165,8,133,8,133, + 8,132,8,132,0,132,8,132,8,133,8,7,132,8,142,165,8,165,8,165, + 16,197,16,229,16,230,16,230,24,6,25,7,25,39,33,39,33,40,33,72, + 33,40,33,5,72,33,141,105,33,105,33,72,33,73,33,105,33,72,33,73, + 33,72,33,72,33,105,33,137,41,105,33,40,33,3,72,33,129,73,33,3, + 72,33,133,105,33,104,33,105,33,105,41,105,41,5,137,41,129,105,41,4, + 137,41,3,105,41,135,136,49,137,41,201,57,233,65,9,66,75,82,139,90, + 3,172,98,135,204,98,236,106,45,115,77,115,110,123,110,123,142,123,3,142, + 131,130,174,131,174,131,3,207,139,132,239,139,239,139,16,148,240,147,6,16, + 148,62,3,132,203,82,203,90,203,82,203,90,4,203,82,132,203,90,203,82, + 203,82,203,90,4,203,82,135,203,90,203,82,203,90,203,90,203,82,203,90, + 203,90,3,203,82,155,235,90,235,90,203,90,203,90,235,90,203,90,203,90, + 235,90,235,82,203,82,203,90,235,90,235,90,203,82,236,90,235,82,236,90, + 235,90,235,90,236,90,235,90,235,90,203,90,236,90,235,90,203,82,236,90, + 3,235,90,129,236,90,3,235,90,3,236,90,137,235,90,235,90,236,90,235, + 90,236,90,236,90,203,90,235,90,235,82,5,236,90,136,203,82,236,90,203, + 82,203,82,203,90,236,82,204,82,235,82,7,203,82,129,171,82,4,203,82, + 130,171,82,203,82,3,171,82,136,171,74,171,74,171,82,171,74,171,74,139, + 74,139,74,138,74,7,106,74,137,139,74,106,74,106,74,233,57,71,33,165, + 8,101,0,133,0,133,0,3,166,0,132,199,8,198,0,231,0,7,1,5, + 8,9,130,8,1,40,1,5,40,9,143,72,17,72,17,137,25,137,25,169, + 33,233,41,10,50,42,58,75,58,139,66,172,74,237,82,13,91,45,99,77, + 99,5,78,99,129,46,99,21,78,99,147,110,99,110,99,78,99,78,99,110, + 99,111,99,111,99,110,99,110,99,111,99,111,99,110,99,111,99,143,107,111, + 99,143,99,142,99,143,107,143,107,4,143,99,129,143,107,7,143,99,132,143, + 107,143,107,143,99,143,107,3,143,99,3,143,107,141,143,99,175,99,143,107, + 143,107,175,107,175,99,176,107,175,107,175,99,175,107,176,107,176,107,176,99, + 3,176,107,130,175,107,176,107,7,208,107,131,176,107,208,107,176,107,3,208, + 107,137,240,107,240,107,208,107,208,107,240,107,208,107,240,107,241,107,240,107, + 3,241,107,133,241,115,16,116,241,107,241,115,241,107,3,17,116,129,17,108, + 5,17,116,134,50,116,18,116,18,116,49,116,49,116,17,116,3,49,116,138, + 50,116,49,116,50,116,49,116,50,116,49,116,49,116,50,116,50,116,49,116, + 3,50,116,148,82,116,50,116,50,116,81,116,50,116,50,116,82,116,49,116, + 50,116,82,116,82,116,50,116,82,116,50,116,82,116,82,116,50,116,82,116, + 82,116,50,116,3,82,116,131,82,124,82,116,82,116,3,82,124,129,82,116, + 3,82,124,129,114,116,6,114,124,142,115,124,114,124,114,124,82,124,82,124, + 50,116,17,100,176,83,144,83,79,75,235,25,167,0,102,0,102,0,3,103, + 0,3,135,0,5,136,0,134,168,0,135,0,134,0,100,0,68,0,68,0, + 3,100,0,3,68,0,132,100,0,101,0,68,0,66,0,4,66,8,132,67, + 8,98,8,99,8,99,8,4,67,8,131,99,8,99,8,100,8,3,99,8, + 133,67,8,99,8,100,8,99,8,68,8,4,99,8,5,100,8,134,132,8, + 133,8,101,8,133,8,165,8,133,8,4,132,8,136,100,8,100,8,132,8, + 132,8,132,0,132,8,132,8,100,0,3,132,8,134,165,8,165,8,165,16, + 197,16,197,16,230,16,3,6,25,138,39,33,71,33,71,33,72,33,72,33, + 40,33,72,33,72,33,72,41,104,33,3,72,33,129,104,41,3,72,33,134, + 105,33,104,33,72,33,104,33,73,33,40,33,4,72,33,129,105,33,3,73, + 33,131,105,33,105,41,137,41,3,105,41,8,137,41,143,105,41,105,41,104, + 33,105,41,137,49,136,49,201,65,42,74,107,82,171,90,204,98,13,107,78, + 115,110,123,142,131,3,175,131,129,174,131,3,142,123,136,142,131,174,131,175, + 131,175,131,207,131,207,139,207,139,240,139,3,16,148,130,48,148,16,148,6, + 48,148,132,48,140,16,140,48,140,16,140,15,3,133,203,82,171,82,203,90, + 203,82,203,90,4,203,82,140,203,90,203,82,203,82,203,90,203,82,235,82, + 203,82,203,90,203,90,203,82,203,82,235,82,5,203,90,129,203,82,5,235, + 90,130,203,90,236,90,9,235,90,131,236,90,235,90,235,90,3,236,90,132, + 235,90,236,90,236,90,235,90,3,236,90,161,235,90,235,90,236,90,236,90, + 235,90,236,90,235,90,235,82,236,90,236,90,235,90,236,90,235,90,204,82, + 236,90,236,90,235,82,203,82,236,90,203,82,235,90,236,90,204,82,203,82, + 236,90,203,82,235,82,203,82,203,82,236,82,203,82,203,82,204,82,4,203, + 82,131,171,82,203,82,171,82,3,203,82,3,171,82,3,171,74,137,171,82, + 171,82,138,74,139,74,139,74,138,74,106,74,106,66,106,66,3,138,74,144, + 106,74,106,74,138,74,106,74,232,57,70,33,164,0,133,0,165,0,166,0, + 198,8,198,0,231,8,231,0,231,0,8,1,3,8,9,146,40,9,40,9, + 73,17,72,17,105,25,72,17,104,25,104,25,169,33,233,41,42,58,107,66, + 139,74,172,74,204,82,237,90,13,91,46,91,14,78,99,129,78,91,8,78, + 99,131,78,91,78,99,78,99,4,110,99,5,111,99,132,110,99,111,99,110, + 99,111,99,8,143,99,129,143,107,5,143,99,129,143,107,5,143,99,144,175, + 99,143,99,143,99,143,107,175,107,143,99,175,99,176,99,176,107,175,99,175, + 99,175,107,143,107,176,99,176,99,175,99,3,175,107,139,176,107,176,107,175, + 107,176,107,176,107,175,107,176,107,175,107,176,107,208,107,176,107,3,208,107, + 129,176,107,9,208,107,131,241,107,208,107,240,107,4,241,107,139,241,115,241, + 107,241,115,241,115,241,107,17,108,17,116,241,115,17,116,17,116,241,115,6, + 17,116,130,49,116,17,116,3,49,116,130,50,116,50,116,5,49,116,3,50, + 116,130,49,116,49,116,4,50,116,136,82,116,50,116,81,116,82,116,82,116, + 50,116,82,116,81,116,9,82,116,146,82,124,82,116,82,116,82,124,82,116, + 82,124,82,116,82,116,82,124,82,116,82,124,82,124,82,116,114,124,82,124, + 82,116,114,124,82,116,11,114,124,3,115,124,139,114,124,82,124,82,116,17, + 108,176,91,144,83,111,75,43,34,167,0,102,0,102,0,6,135,0,3,103, + 0,141,135,0,136,0,136,0,135,0,134,0,101,0,68,0,68,0,101,0, + 101,0,100,8,68,0,68,0,3,100,0,129,100,8,4,66,8,132,98,8, + 98,8,99,16,99,16,4,99,8,130,67,8,67,8,3,99,8,136,100,8, + 67,8,100,8,100,8,99,8,100,8,100,8,99,8,6,100,8,130,132,8, + 100,8,3,132,8,130,100,8,132,8,5,100,8,4,132,8,139,165,8,197, + 16,230,24,6,25,6,25,38,25,38,25,39,33,39,33,71,33,71,33,3, + 72,33,136,104,33,72,33,72,33,104,33,104,41,104,41,105,33,105,33,3, + 72,33,133,104,33,72,33,72,33,105,33,104,41,3,104,33,135,72,33,105, + 41,73,33,73,33,105,33,105,41,73,33,3,105,33,12,137,41,144,137,49, + 137,49,169,49,201,57,234,65,10,66,42,74,75,82,139,90,172,98,236,106, + 13,107,77,115,110,123,174,131,207,139,3,239,139,5,207,131,138,207,139,207, + 139,239,139,240,139,16,140,16,148,48,148,48,148,81,148,48,148,4,81,148, + 133,48,140,48,140,48,148,48,148,49,140,8,48,140,226,2,131,203,82,203, + 90,203,90,3,203,82,131,203,90,203,82,203,82,3,203,90,3,203,82,3, + 203,90,140,203,82,203,90,203,90,203,82,203,90,203,82,203,82,235,90,203, + 82,235,90,235,90,203,82,14,235,90,134,236,90,235,90,236,90,235,90,235, + 90,236,90,3,235,90,6,236,90,133,235,90,235,90,236,90,235,90,236,82, + 3,236,90,145,235,90,235,90,236,82,235,90,236,90,236,82,235,90,235,90, + 236,82,236,90,235,82,236,82,236,82,236,90,235,82,204,82,203,82,3,236, + 82,6,203,82,129,204,82,5,203,82,4,171,82,4,171,74,3,138,74,130, + 170,74,138,74,3,106,74,130,138,74,138,74,4,106,74,157,74,66,200,49, + 6,25,165,8,165,0,198,0,198,0,231,8,231,8,231,0,231,0,7,9, + 40,9,72,9,104,17,104,25,105,25,169,33,201,33,233,33,9,50,42,58, + 74,58,139,66,172,74,204,82,13,91,13,91,46,91,28,78,99,6,110,99, + 130,111,99,111,99,3,143,99,133,142,99,111,99,143,99,143,107,143,107,6, + 143,99,131,143,107,143,99,143,99,4,175,99,131,143,99,175,107,143,107,3, + 175,99,3,175,107,140,176,107,176,107,208,107,175,107,175,107,176,99,175,107, + 175,107,176,107,175,99,176,99,175,99,4,176,107,135,175,107,176,107,208,107, + 176,107,208,107,176,107,176,107,13,208,107,138,209,107,208,107,208,107,209,107, + 209,107,241,107,240,107,241,107,241,107,17,108,4,241,115,133,240,115,241,115, + 17,108,241,107,241,115,9,17,116,6,49,116,135,50,116,49,116,82,116,49, + 116,49,116,50,116,82,116,4,50,116,131,81,116,82,124,50,116,3,82,116, + 131,81,116,82,116,82,116,3,82,124,131,82,116,82,124,82,116,3,82,124, + 131,82,116,82,124,82,116,4,82,124,129,114,124,3,82,116,138,114,124,82, + 124,114,124,82,124,82,116,114,124,82,124,82,116,114,124,114,116,13,114,124, + 143,115,124,114,124,82,116,82,116,18,108,176,91,144,83,112,83,44,34,199, + 0,134,0,102,0,135,0,135,0,103,0,3,135,0,151,103,0,103,0,136, + 0,135,0,136,0,136,0,135,0,134,0,101,0,100,0,100,0,101,0,101, + 0,100,0,100,0,68,0,68,0,100,0,100,0,100,8,67,8,66,8,66, + 8,3,98,8,6,99,8,132,67,8,67,8,99,8,67,8,6,99,8,12, + 100,8,6,132,8,142,164,8,165,16,165,16,197,16,197,16,230,16,6,25, + 6,25,39,33,71,33,103,33,103,41,103,41,136,41,8,104,41,133,104,33, + 104,33,105,33,105,33,73,33,4,72,33,141,105,33,105,41,104,41,105,41, + 105,33,105,41,105,33,105,41,105,41,104,41,105,33,105,41,105,41,4,137, + 41,152,105,41,105,33,105,33,105,41,105,41,137,41,137,41,169,49,169,49, + 202,57,234,57,10,66,42,74,42,74,139,82,172,90,204,98,237,106,13,107, + 45,115,77,115,77,123,110,123,110,123,3,142,123,130,174,131,174,131,3,207, + 131,133,207,139,239,139,239,139,240,139,16,148,3,48,148,5,81,148,136,48, + 148,16,140,15,140,239,131,207,131,207,123,175,123,207,131,3,16,140,133,49, + 140,49,148,48,148,48,140,48,140,4,16,140,45,3,136,203,82,203,82,203, + 90,203,82,203,90,203,90,203,82,203,82,6,203,90,130,203,82,203,82,5, + 203,90,135,203,82,235,90,203,90,203,82,235,90,203,82,203,82,3,235,90, + 131,236,90,235,90,203,90,7,235,90,134,236,90,235,82,236,90,235,90,204, + 90,236,90,4,235,90,3,236,90,3,235,90,6,236,90,130,235,90,235,90, + 3,236,90,147,235,90,236,90,235,90,235,82,235,82,236,90,235,82,235,82, + 236,90,235,90,235,90,236,82,236,90,235,82,203,82,236,82,203,82,203,82, + 235,90,8,203,82,136,171,82,203,82,203,82,171,82,203,82,203,82,171,82, + 203,82,4,171,82,169,171,74,170,74,139,74,171,82,138,74,138,74,106,74, + 106,74,138,74,138,74,139,74,106,74,138,74,138,74,106,74,42,66,135,41, + 230,16,165,0,198,8,230,0,231,0,7,9,7,9,8,9,40,17,104,17, + 136,33,201,41,10,50,74,50,74,58,107,66,171,74,204,82,236,82,13,91, + 45,91,77,99,78,99,110,99,4,78,99,131,110,99,78,99,110,99,22,78, + 99,3,110,99,3,111,99,130,143,99,111,99,7,143,99,3,143,107,140,143, + 99,143,99,143,107,143,107,175,99,143,99,175,99,175,107,143,99,176,107,175, + 107,143,107,5,175,107,133,175,99,175,107,176,107,175,107,175,107,4,176,107, + 132,175,99,176,107,175,107,175,107,3,176,107,131,175,107,208,107,176,107,4, + 208,107,130,176,107,176,107,9,208,107,151,241,107,208,107,241,115,208,107,241, + 107,241,107,208,107,208,107,209,107,241,107,241,107,209,107,241,115,241,107,241, + 107,17,116,241,115,241,107,241,107,17,116,241,115,17,116,17,108,7,17,116, + 136,49,116,49,116,17,116,49,116,50,116,17,116,49,116,50,116,5,49,116, + 3,82,116,132,50,116,82,116,82,116,50,116,3,82,116,132,82,124,82,116, + 82,124,50,116,4,82,116,133,82,124,82,124,82,116,82,116,114,116,6,82, + 124,137,82,116,114,116,82,116,82,116,114,124,82,124,114,124,82,116,82,124, + 3,114,124,129,82,124,14,114,124,144,115,124,114,124,146,124,114,124,146,124, + 115,124,82,124,82,116,50,108,209,91,144,83,144,83,76,42,232,0,134,0, + 134,0,4,135,0,132,136,0,135,0,135,0,103,0,3,135,0,137,136,0, + 135,0,134,0,101,0,68,0,100,0,101,0,133,0,101,0,3,68,0,142, + 100,8,100,0,100,8,67,8,67,8,66,8,98,8,98,8,99,8,99,8, + 98,8,99,8,67,8,99,8,3,67,8,130,99,8,67,8,4,99,8,130, + 67,8,99,0,6,100,8,131,132,8,132,8,164,8,3,165,16,133,197,16, + 197,16,229,24,230,16,230,16,3,230,24,135,6,25,7,25,39,33,72,33, + 72,33,71,33,71,41,3,103,41,134,135,41,136,49,136,41,136,41,137,41, + 136,41,3,105,41,146,137,41,104,41,105,41,105,33,105,33,72,33,105,33, + 104,33,105,33,105,33,104,41,105,41,105,41,105,33,137,33,137,41,105,41, + 105,41,3,137,41,129,105,33,6,105,41,156,137,49,202,49,234,57,10,66, + 43,74,107,82,139,82,204,98,236,98,237,106,13,107,45,115,78,115,78,115, + 110,115,110,123,142,123,142,123,142,131,142,131,174,131,207,131,207,131,207,139, + 239,139,239,139,240,139,16,140,3,48,148,7,81,148,145,81,140,16,140,16, + 140,207,131,207,123,174,123,142,123,142,115,142,115,142,123,142,123,207,131,239, + 131,16,140,48,140,16,140,239,131,3,16,140,134,16,132,240,131,16,132,239, + 139,16,140,16,140,17,3,135,203,82,203,90,203,82,203,82,203,90,203,82, + 203,90,4,203,82,3,203,90,4,235,90,140,203,82,203,90,235,90,203,90, + 235,90,203,82,235,90,235,90,203,90,203,90,235,90,203,90,5,235,90,135, + 236,90,235,90,236,90,236,90,203,90,236,90,235,90,4,236,90,129,235,90, + 3,236,90,129,235,90,7,236,90,129,235,90,4,236,90,129,235,82,3,236, + 90,133,235,90,236,90,236,82,235,90,235,90,4,236,90,140,235,90,235,82, + 203,82,235,82,236,82,203,90,235,90,235,82,203,90,236,90,203,82,236,90, + 4,203,82,130,236,82,204,82,8,203,82,137,171,82,203,82,171,82,171,82, + 171,74,171,82,171,74,138,74,139,74,3,138,74,154,106,74,106,74,138,74, + 139,74,106,74,106,74,138,74,106,74,138,74,233,57,71,33,230,8,230,8, + 7,17,40,17,71,25,136,25,168,41,9,50,74,58,139,66,172,74,204,82, + 237,82,13,99,45,99,10,78,99,135,110,99,78,99,78,99,110,99,110,99, + 78,99,110,99,15,78,99,6,110,99,133,111,99,111,99,143,99,143,107,143, + 107,4,143,99,3,175,99,137,175,107,143,99,175,107,143,107,143,107,175,107, + 175,99,175,99,143,99,3,176,107,136,175,107,175,99,176,107,176,107,207,107, + 176,107,208,107,175,107,3,176,107,5,208,107,129,176,107,3,208,107,129,176, + 107,7,208,107,129,208,115,9,208,107,135,240,107,240,107,208,107,240,107,241, + 107,241,107,240,107,4,241,107,132,241,115,241,115,241,107,241,115,3,241,107, + 135,241,115,241,115,241,107,17,108,241,107,17,116,17,108,6,17,116,129,49, + 116,4,17,116,4,49,116,133,50,116,50,116,49,116,50,116,50,116,5,82, + 116,129,50,116,4,82,116,4,82,124,5,82,116,12,82,124,134,114,124,114, + 116,82,124,114,124,114,124,82,124,5,114,124,131,82,116,114,124,82,124,6, + 114,124,141,115,124,114,124,115,124,114,124,114,124,146,124,114,124,146,124,115, + 124,146,124,147,124,146,124,147,124,3,115,124,140,82,116,50,108,209,91,176, + 83,144,83,108,42,232,0,135,0,134,0,135,0,135,0,103,0,3,135,0, + 129,103,0,3,135,0,135,136,0,136,0,135,0,134,0,133,0,100,0,100, + 0,3,101,0,129,100,0,3,68,0,131,100,8,100,0,99,8,3,66,8, + 134,67,8,66,8,66,8,99,8,66,8,98,8,8,99,8,138,131,8,100, + 8,132,8,132,8,164,8,164,8,165,16,197,16,197,16,230,24,4,6,25, + 135,39,25,39,33,7,33,7,25,39,25,39,33,40,33,4,39,33,151,71, + 33,39,33,72,33,104,41,103,41,102,41,102,41,103,41,136,49,136,49,168, + 41,136,41,137,41,137,49,137,49,137,41,104,41,137,41,105,41,105,33,105, + 33,105,41,105,33,3,105,41,131,137,41,105,41,104,41,3,105,41,150,137, + 41,137,41,105,41,137,41,137,41,169,41,169,49,201,49,234,57,10,66,42, + 74,107,74,172,90,204,98,237,106,13,107,45,115,77,115,110,115,110,123,142, + 123,142,123,3,174,123,139,174,131,175,131,207,131,207,131,239,139,239,139,16, + 140,16,148,48,148,49,148,49,148,3,81,148,4,113,148,3,81,148,135,48, + 140,16,140,16,140,239,131,207,131,175,123,207,123,3,207,131,135,239,131,239, + 131,240,139,16,140,16,140,48,140,49,140,4,48,140,131,16,140,207,131,16, + 132,4,16,140,3,239,131,1,16,140,249,2,138,203,82,203,90,203,82,171, + 82,203,90,203,82,203,90,203,90,203,82,203,82,7,203,90,136,203,82,235, + 90,235,90,203,90,235,90,203,90,235,90,235,90,3,203,90,132,235,90,203, + 90,235,90,203,90,6,235,90,130,236,90,235,90,4,236,90,3,235,90,133, + 236,90,235,90,236,90,236,90,235,90,4,236,90,129,235,90,6,236,90,130, + 235,90,235,90,7,236,90,148,235,90,236,90,235,82,235,82,236,82,236,82, + 235,90,235,90,236,82,236,90,204,90,235,90,203,82,236,90,236,90,203,82, + 236,82,203,82,235,82,235,82,11,203,82,3,171,82,131,171,74,171,74,171, + 82,6,138,74,130,106,74,106,74,6,138,74,141,9,66,135,41,38,17,71, + 33,136,41,201,49,10,58,107,66,139,74,204,82,204,90,13,91,45,91,11, + 78,99,132,110,99,78,99,110,99,110,99,16,78,99,130,78,91,78,99,4, + 110,99,5,111,99,3,143,99,130,143,107,143,99,3,143,107,129,175,99,3, + 143,107,133,143,99,143,107,175,99,175,99,175,107,3,175,99,132,175,107,175, + 99,176,107,176,99,5,176,107,24,208,107,4,240,107,131,208,107,208,107,241, + 107,3,240,107,130,241,107,240,107,3,241,107,3,241,115,141,241,107,241,107, + 241,115,241,115,241,107,241,107,241,115,17,108,17,116,241,115,17,108,17,108, + 241,115,9,17,116,136,49,116,17,116,18,116,49,116,49,116,50,116,49,116, + 49,116,3,50,116,133,49,116,82,116,50,116,82,116,82,124,3,82,116,147, + 82,124,82,124,82,116,82,124,82,116,82,124,82,124,82,116,82,124,82,124, + 82,116,82,124,82,124,114,124,114,124,82,116,114,124,114,124,82,124,3,114, + 124,129,82,124,3,114,124,129,82,124,4,114,124,129,114,116,12,114,124,129, + 146,124,5,114,124,131,146,124,146,124,114,124,3,146,124,130,115,124,114,124, + 3,147,124,138,114,124,82,116,49,116,209,91,176,83,144,83,141,50,8,9, + 134,0,134,0,6,135,0,131,134,0,135,0,135,0,3,136,0,133,135,0, + 134,0,101,0,100,0,100,0,4,101,0,140,68,0,68,0,100,0,100,8, + 100,8,99,8,67,8,66,8,98,8,67,8,99,8,67,8,3,99,8,141, + 131,8,132,8,132,8,164,8,164,16,165,16,164,16,165,16,197,16,197,16, + 229,16,229,16,230,24,3,6,25,3,39,33,129,71,33,5,39,33,152,7, + 33,39,33,39,33,40,33,39,33,71,33,71,33,39,33,71,41,39,41,71, + 41,70,41,70,41,70,49,102,49,103,49,136,49,136,49,136,41,136,41,137, + 41,137,49,137,41,137,41,6,105,41,152,105,33,105,33,105,41,104,33,104, + 41,137,41,137,41,169,49,201,57,202,57,234,57,10,66,43,74,74,74,107, + 82,172,90,172,90,236,98,13,107,13,107,45,115,77,115,78,115,110,123,4, + 142,123,138,174,131,175,131,175,131,207,131,207,131,239,139,240,139,16,148,48, + 148,49,148,3,81,148,137,113,148,113,148,113,156,113,148,113,148,81,148,113, + 148,81,148,81,148,3,48,140,129,16,140,3,16,132,133,239,139,16,140,16, + 132,16,140,16,140,3,48,140,137,49,140,49,140,81,148,49,140,49,140,48, + 140,48,140,81,140,49,148,4,48,140,138,239,131,240,131,16,140,48,140,16, + 140,240,131,207,131,239,131,239,131,240,131,33,3,3,203,82,138,203,90,203, + 90,203,82,203,82,203,90,203,82,203,82,235,90,203,90,235,90,4,203,90, + 133,235,90,235,90,203,90,235,90,203,90,4,235,90,131,203,82,235,90,203, + 90,3,235,90,129,236,90,3,235,90,137,236,90,236,90,235,90,236,90,235, + 90,235,90,236,90,235,90,235,90,6,236,90,133,12,91,12,91,236,90,235, + 90,12,91,4,236,90,131,235,90,236,90,235,90,4,236,90,130,12,91,235, + 82,3,236,90,135,235,90,236,90,236,90,235,90,236,90,236,82,236,82,3, + 236,90,132,204,90,235,90,236,82,236,90,4,203,82,130,236,82,235,82,8, + 203,82,146,204,82,171,82,203,82,203,82,171,82,171,82,171,74,171,82,138, + 74,138,74,170,74,170,74,139,74,170,82,138,74,138,74,106,66,106,74,5, + 138,74,139,41,66,232,49,200,57,41,66,106,66,171,74,204,90,13,91,13, + 91,77,99,46,99,9,78,99,129,110,99,3,78,99,129,110,99,7,78,99, + 129,110,99,10,78,99,149,110,99,110,99,111,99,111,99,110,99,111,99,111, + 99,143,99,111,99,143,107,143,99,143,99,143,107,143,99,175,99,143,99,143, + 107,143,107,175,107,175,107,175,99,9,175,107,136,176,99,175,107,207,107,207, + 107,208,107,208,99,208,107,176,107,7,208,107,129,240,107,5,208,107,131,240, + 107,208,107,209,107,3,208,107,136,241,107,240,107,208,107,240,107,241,107,208, + 115,241,107,241,107,4,240,107,130,241,115,241,115,4,241,107,142,241,115,240, + 115,17,108,241,107,17,116,241,115,17,116,241,107,17,116,241,107,241,115,241, + 107,17,116,241,115,4,17,116,129,17,108,6,17,116,129,18,116,3,17,116, + 131,18,116,49,116,50,116,3,49,116,4,50,116,6,82,116,143,82,124,82, + 124,82,116,82,116,82,124,82,124,82,116,82,116,114,124,82,124,82,124,114, + 116,114,124,114,124,82,124,4,114,124,129,114,116,3,114,124,129,114,116,19, + 114,124,129,115,124,3,114,124,156,146,124,114,124,114,124,147,124,114,124,114, + 124,147,124,114,124,146,124,115,124,146,124,115,124,115,124,146,124,147,124,146, + 124,147,124,146,124,114,124,82,116,50,108,241,91,176,83,176,83,140,50,8, + 9,135,0,102,0,6,135,0,139,134,0,135,0,135,0,136,0,168,0,168, + 0,135,0,134,0,101,0,100,0,68,0,3,101,0,129,100,0,3,68,0, + 3,100,8,5,99,8,3,132,8,132,164,16,196,16,229,16,229,16,5,230, + 24,135,7,25,6,33,7,33,6,25,6,33,38,33,7,33,8,39,33,136, + 40,33,40,33,71,33,39,33,40,33,71,33,72,41,72,41,3,71,41,143, + 70,41,38,41,70,41,70,41,70,49,102,49,135,49,136,49,136,49,137,49, + 136,41,104,41,137,41,105,41,104,41,5,72,33,162,105,41,104,33,169,49, + 233,57,233,57,10,66,74,74,139,90,237,98,13,107,236,98,236,98,237,106, + 45,107,45,107,78,115,77,115,110,115,110,115,110,123,110,123,142,123,142,123, + 174,131,175,131,207,131,239,131,239,139,16,140,16,148,48,148,49,148,81,148, + 81,148,4,113,148,130,114,148,146,148,5,113,148,135,81,148,81,148,81,140, + 49,140,81,140,81,140,49,140,3,48,140,154,49,140,48,140,81,140,49,140, + 48,140,49,140,48,140,48,140,49,140,81,140,49,140,49,140,81,140,48,140, + 49,140,49,140,16,140,49,140,113,148,113,148,48,140,16,132,48,140,16,140, + 240,139,239,131,6,48,140,130,16,140,48,140,20,3,130,203,82,203,82,4, + 203,90,129,203,82,4,203,90,141,235,90,203,82,203,90,235,90,203,90,235, + 90,235,90,203,90,203,82,235,90,203,90,235,90,203,82,6,235,90,129,203, + 90,4,235,90,132,236,90,235,90,236,90,235,90,3,236,90,137,235,90,236, + 90,235,90,236,90,236,90,235,90,235,90,12,91,235,90,3,236,90,129,235, + 90,3,236,90,129,12,91,4,236,90,129,235,90,9,236,90,135,236,82,236, + 90,236,90,236,82,235,90,236,82,236,82,4,236,90,132,203,82,203,90,235, + 82,236,90,4,236,82,134,203,82,203,90,236,90,203,82,203,82,236,82,4, + 203,82,3,171,82,3,171,74,131,170,74,171,74,139,74,4,171,74,130,139, + 74,106,74,6,138,74,134,106,74,138,74,171,82,236,90,237,90,13,99,3, + 45,99,132,77,99,78,99,78,99,46,99,6,78,99,138,110,99,78,99,78, + 99,110,99,78,99,78,99,110,99,78,99,78,99,110,99,6,78,99,133,110, + 99,78,99,110,99,110,99,78,99,4,110,99,134,111,99,143,99,143,99,110, + 99,143,99,111,99,5,143,99,135,143,107,143,107,175,99,175,107,143,99,176, + 107,175,107,3,175,99,132,175,107,176,107,175,107,175,99,3,176,107,131,176, + 99,176,107,176,107,8,208,107,132,240,107,208,107,241,107,240,107,3,240,115, + 131,240,107,240,115,240,115,5,240,107,135,241,107,240,107,240,115,241,115,241, + 107,241,115,240,107,5,241,107,136,240,107,241,115,241,107,241,107,241,115,241, + 115,240,107,241,115,3,17,116,130,241,115,241,107,3,17,116,129,17,108,14, + 17,116,140,50,116,17,116,17,116,50,116,50,116,49,116,50,116,50,116,49, + 116,50,116,82,116,49,116,6,82,116,134,82,124,82,116,82,124,114,116,82, + 124,82,116,6,82,124,3,114,124,137,82,116,114,124,114,124,82,124,114,124, + 82,124,114,124,114,124,115,124,3,114,124,129,115,124,14,114,124,131,115,124, + 114,124,146,124,3,114,124,131,115,124,114,124,146,124,3,115,124,139,114,124, + 146,124,114,124,146,124,115,124,147,124,146,124,115,124,147,124,147,124,146,124, + 4,147,124,140,114,124,82,116,50,116,241,99,176,83,176,83,173,50,40,9, + 135,0,135,0,134,0,134,0,7,135,0,3,168,0,131,135,0,102,0,133, + 0,3,100,0,137,101,0,133,0,68,0,100,0,68,0,100,0,100,0,100, + 8,165,16,4,197,16,143,197,8,197,16,230,16,230,16,6,25,39,25,39, + 25,39,33,6,25,7,33,39,33,39,25,39,33,39,33,7,25,9,39,33, + 4,71,33,132,72,33,71,33,72,33,71,33,4,71,41,137,72,41,71,41, + 70,41,37,33,69,41,37,41,37,41,70,41,103,41,3,104,41,147,72,33, + 104,33,104,41,104,41,169,49,201,49,233,57,42,66,107,74,107,82,107,82, + 139,82,172,90,237,106,13,107,13,107,45,115,77,115,110,115,3,239,139,141, + 175,131,174,123,142,123,174,123,175,123,207,131,207,131,239,131,16,140,16,140, + 48,140,49,148,81,148,4,113,148,131,114,148,114,148,146,156,5,146,148,131, + 113,148,113,148,114,148,5,113,148,129,81,148,3,113,148,3,81,148,132,81, + 140,48,140,48,140,81,140,3,48,140,134,49,140,16,132,48,140,49,140,48, + 140,16,140,3,48,140,130,49,140,16,140,4,48,140,3,81,148,129,48,148, + 3,81,148,130,240,139,81,140,3,81,148,132,81,140,49,140,48,140,16,132, + 224,2,131,203,82,203,90,203,82,3,203,90,129,203,82,4,203,90,132,203, + 82,235,90,203,90,203,90,3,235,90,134,203,90,235,90,235,90,203,90,235, + 90,236,90,3,235,90,129,236,90,4,235,90,133,235,82,235,90,235,90,236, + 90,236,90,3,235,90,132,236,90,235,90,236,90,235,90,25,236,90,129,235, + 90,5,236,90,131,236,82,236,90,235,82,6,236,90,139,236,82,236,82,236, + 90,235,82,236,90,204,82,236,82,204,82,235,82,203,82,236,82,9,203,82, + 3,171,82,130,203,82,171,82,5,171,74,130,171,82,139,74,4,138,74,141, + 139,82,138,74,138,74,138,82,203,82,204,90,236,90,12,91,13,99,45,99, + 45,99,77,99,45,99,8,78,99,129,110,99,5,78,99,130,110,99,110,99, + 3,78,99,135,110,99,78,99,110,99,110,99,78,99,110,99,78,99,6,110, + 99,130,111,99,111,99,4,143,99,140,143,107,143,107,143,99,143,99,175,99, + 143,99,175,99,143,107,175,107,175,99,175,99,143,99,3,175,107,135,176,99, + 208,107,176,107,175,107,176,107,208,107,208,99,10,208,107,131,240,107,240,107, + 241,107,4,240,107,3,241,107,135,240,107,240,107,241,115,241,107,241,107,241, + 115,240,107,3,241,107,140,17,116,17,116,17,108,17,116,17,108,241,115,241, + 107,17,116,241,107,241,115,17,108,17,108,3,17,116,132,17,108,17,116,17, + 116,17,108,13,17,116,136,49,116,17,116,18,116,18,116,50,116,18,116,50, + 116,49,116,11,50,116,129,82,116,3,50,116,129,82,124,3,82,116,134,82, + 124,82,116,82,124,82,124,114,124,82,124,3,114,124,132,82,124,114,124,82, + 124,82,124,18,114,124,130,115,124,115,124,5,114,124,129,115,124,3,114,124, + 146,115,124,115,124,114,124,114,124,146,124,114,124,115,124,114,124,115,124,114, + 124,115,124,115,124,146,124,115,124,115,124,147,124,147,124,146,124,5,147,124, + 129,115,124,3,147,124,140,115,124,82,116,50,116,241,99,176,83,176,83,173, + 50,73,9,167,0,135,0,135,0,134,0,7,135,0,134,136,0,168,0,168, + 0,135,0,102,0,101,0,3,100,0,142,101,0,101,0,100,8,68,0,68, + 0,100,0,100,0,133,8,7,25,39,25,39,25,7,25,7,25,231,16,3, + 6,25,14,39,33,135,71,33,39,33,39,33,71,33,71,33,71,41,71,41, + 8,71,33,135,39,33,39,33,71,33,71,41,38,41,37,41,5,33,3,37, + 33,140,39,33,71,41,72,41,72,33,104,41,234,57,107,82,140,82,204,90, + 237,106,45,107,77,115,3,110,115,3,77,115,138,110,115,110,123,110,123,142, + 123,142,123,175,123,16,140,48,148,48,140,48,140,3,16,140,130,49,140,81, + 148,3,113,148,3,146,148,153,146,156,146,148,146,156,146,156,146,148,146,148, + 114,148,146,148,146,148,113,148,114,148,113,148,146,148,146,148,114,148,113,148, + 113,148,114,148,114,148,113,148,113,148,81,148,81,148,81,140,81,148,3,81, + 140,132,80,140,80,140,81,140,81,140,3,81,148,136,113,148,81,148,48,140, + 81,148,48,140,16,140,48,140,81,140,6,81,148,5,113,148,3,81,148,131, + 207,131,239,123,48,132,3,16,132,131,16,124,208,123,207,123,49,3,131,203, + 90,203,90,203,82,4,203,90,132,235,90,203,90,203,82,235,90,3,203,90, + 131,235,90,203,90,235,90,4,203,90,4,235,90,131,203,90,235,90,203,90, + 8,235,90,132,236,90,236,90,235,90,235,90,5,236,90,136,235,90,236,90, + 236,90,235,90,236,90,12,91,236,90,12,91,3,236,90,129,235,90,4,236, + 90,129,12,91,3,236,90,141,12,91,236,90,12,91,12,91,236,90,236,90, + 235,90,236,90,236,90,235,90,236,90,236,90,236,82,3,236,90,148,204,90, + 236,90,236,82,236,82,235,82,236,82,236,82,236,90,236,82,236,82,235,90, + 203,82,236,90,203,90,203,82,204,82,236,82,203,82,203,82,236,82,4,203, + 82,132,171,82,171,82,171,74,171,74,3,171,82,150,171,74,171,82,139,82, + 170,74,170,74,139,74,138,74,138,74,170,74,138,74,106,74,171,74,171,82, + 203,90,236,90,12,91,45,91,45,91,45,99,77,99,45,99,77,99,7,78, + 99,131,110,99,78,99,110,99,3,78,99,130,110,99,78,99,4,110,99,132, + 78,99,110,99,110,99,78,99,4,110,99,132,111,99,110,99,111,99,111,99, + 4,143,99,130,143,107,143,107,3,143,99,137,175,99,176,107,143,99,175,99, + 143,107,175,99,175,99,175,107,176,107,3,175,107,132,208,107,176,107,208,107, + 176,107,11,208,107,130,240,107,241,107,3,240,107,131,241,107,241,107,17,108, + 3,241,107,130,240,115,17,108,3,241,107,133,17,108,241,107,17,108,241,107, + 241,115,3,17,116,130,17,108,17,108,6,17,116,132,17,108,17,108,17,116, + 17,108,10,17,116,134,18,116,18,116,17,116,49,116,17,116,17,116,4,49, + 116,132,17,116,18,116,50,116,49,116,6,50,116,134,49,116,50,116,50,116, + 82,124,82,116,82,116,4,50,116,137,82,116,50,116,82,116,82,124,82,116, + 82,124,114,124,114,124,82,124,4,114,124,129,114,116,10,114,124,132,115,124, + 114,124,114,124,115,124,10,114,124,136,115,124,114,124,115,124,114,124,114,124, + 115,124,115,124,147,124,3,114,124,148,146,124,114,124,146,124,147,124,115,124, + 115,124,146,124,115,124,115,124,147,124,115,124,147,124,115,124,146,124,146,124, + 115,124,146,124,147,124,147,124,146,124,6,147,124,138,114,116,82,116,241,99, + 176,83,176,83,206,58,73,17,135,0,135,0,134,0,6,135,0,142,103,0, + 135,0,136,0,168,0,168,0,135,0,134,0,133,0,101,0,68,0,100,0, + 101,0,133,0,100,0,3,68,0,143,100,0,166,8,39,25,71,33,39,25, + 7,25,39,25,39,25,7,25,39,33,6,25,7,25,7,33,38,33,39,25, + 5,39,33,130,7,33,7,33,4,39,33,130,71,41,71,41,3,71,33,133, + 71,41,71,33,71,33,39,33,71,41,8,39,33,140,38,33,38,41,5,33, + 37,33,5,33,6,33,39,33,39,33,71,33,72,33,104,33,139,74,3,142, + 123,143,175,123,207,131,175,131,174,123,174,123,174,131,174,123,175,131,174,123, + 175,123,207,131,207,131,239,131,16,140,49,140,5,113,148,3,146,148,130,146, + 156,178,156,13,146,148,147,114,148,113,148,114,148,113,148,114,148,81,148,81, + 148,81,140,81,148,81,140,81,148,81,140,81,140,48,140,81,148,81,148,48, + 140,81,140,113,148,3,114,148,140,113,148,114,148,146,148,113,148,114,148,114, + 148,113,148,48,140,81,140,81,140,81,148,81,140,4,113,148,129,81,148,3, + 113,148,140,81,148,81,148,113,148,48,140,16,132,49,132,16,132,175,123,143, + 115,16,132,16,132,16,140,3,49,140,1,48,140,24,3,134,203,90,203,90, + 203,82,203,82,203,90,203,90,3,203,82,136,235,90,203,82,235,90,236,90, + 203,90,203,90,235,90,203,90,10,235,90,140,236,90,235,90,235,90,236,90, + 236,90,235,90,203,82,236,90,236,90,235,90,236,90,236,90,4,235,90,5, + 236,90,132,12,91,12,91,236,90,12,91,4,236,90,129,235,90,3,236,90, + 129,12,91,3,236,90,132,12,91,236,90,236,90,235,90,5,236,90,132,236, + 82,236,90,236,90,235,90,3,236,90,130,236,82,236,82,3,236,90,131,235, + 90,235,90,236,90,4,236,82,134,204,82,204,90,235,82,203,82,203,82,236, + 82,10,203,82,3,171,82,129,171,74,4,171,82,144,171,74,171,82,170,82, + 138,74,170,74,138,74,106,74,139,82,171,82,236,90,12,91,13,91,13,91, + 45,99,45,99,77,99,10,78,99,130,110,99,78,99,11,110,99,138,78,99, + 110,99,110,99,143,99,110,99,111,99,111,99,143,99,143,99,143,107,3,143, + 99,131,175,99,143,99,143,99,3,175,99,132,176,99,175,99,176,99,176,99, + 3,175,107,130,175,99,176,99,3,208,107,130,176,107,176,107,4,208,107,134, + 240,107,208,107,208,107,240,107,240,107,208,107,4,240,107,133,241,107,240,107, + 17,108,241,107,241,107,3,17,116,133,17,108,17,116,17,116,17,108,17,108, + 14,17,116,152,17,108,49,116,17,116,17,116,50,116,17,108,17,116,17,116, + 49,116,49,116,17,116,18,116,18,116,49,116,49,116,17,116,49,116,49,116, + 17,116,17,116,50,116,17,116,49,116,49,116,5,50,116,129,49,116,8,50, + 116,145,82,116,50,116,82,116,50,116,82,116,82,116,82,124,82,116,82,116, + 82,124,82,124,82,116,82,116,82,124,114,116,114,124,82,124,3,114,124,131, + 82,124,114,124,114,116,6,114,124,129,115,124,5,114,124,132,146,124,146,124, + 114,124,114,124,3,115,124,131,147,124,115,124,147,124,6,115,124,134,146,124, + 146,124,114,124,114,124,115,124,146,124,4,147,124,129,146,124,3,115,124,3, + 147,124,136,146,124,115,124,146,124,147,124,146,124,147,124,115,124,146,124,5, + 147,124,140,146,124,147,124,147,124,146,124,114,116,82,116,241,99,209,91,208, + 83,238,58,105,17,167,0,10,135,0,157,167,0,136,0,168,0,168,0,134, + 0,101,0,101,0,100,0,100,0,133,0,133,0,100,0,68,0,68,0,100, + 0,68,0,133,8,7,33,39,33,6,25,7,33,7,25,7,25,7,33,38, + 33,39,33,6,33,39,33,38,33,6,39,33,131,38,33,38,33,6,33,3, + 39,33,130,71,41,71,41,8,39,33,130,7,33,7,33,4,39,33,129,71, + 33,3,71,41,142,70,33,39,33,39,33,71,33,71,33,72,41,72,33,104, + 41,104,41,139,82,175,123,207,131,207,131,207,123,5,239,131,132,48,140,49, + 140,49,148,81,140,3,81,148,130,113,148,113,148,8,146,148,133,178,156,146, + 148,146,148,178,156,146,156,3,146,148,133,114,148,114,148,113,148,114,148,113, + 148,5,81,140,129,48,140,3,16,132,141,239,131,16,132,16,132,239,131,239, + 131,239,123,48,140,81,148,146,148,146,148,113,148,146,148,146,156,4,146,148, + 139,114,148,146,148,114,148,113,148,113,148,48,140,81,140,81,148,113,148,113, + 148,81,148,4,113,148,147,81,148,113,148,113,148,81,148,81,148,113,148,81, + 148,49,140,81,140,113,148,16,140,207,131,49,140,113,148,113,148,81,148,81, + 148,49,148,81,140,21,3,130,203,82,203,82,4,203,90,129,203,82,5,203, + 90,132,235,90,203,82,235,90,203,90,3,235,90,129,203,90,3,235,90,130, + 203,90,236,90,4,235,90,131,236,90,235,90,236,90,3,235,90,133,12,91, + 236,90,235,90,236,90,235,90,6,236,90,129,12,91,5,236,90,131,12,91, + 236,90,236,90,4,12,91,135,236,90,236,90,12,91,12,91,236,90,236,90, + 12,91,8,236,90,132,236,82,236,90,236,90,235,90,5,236,90,129,236,82, + 6,236,90,134,236,82,235,90,236,82,236,82,235,82,235,82,4,203,82,3, + 204,82,4,203,82,152,171,82,171,82,171,74,171,82,171,74,171,82,171,74, + 171,82,171,82,171,74,171,82,171,74,139,74,138,74,106,74,106,74,171,82, + 204,90,236,90,12,91,13,91,45,91,45,99,77,99,5,78,99,133,110,99, + 78,99,110,99,110,99,78,99,11,110,99,139,111,99,111,99,110,99,78,91, + 142,99,175,107,143,107,110,99,142,99,143,99,111,99,5,143,99,136,144,99, + 175,99,143,99,175,107,175,99,176,107,176,99,176,99,3,176,107,131,208,107, + 176,107,176,107,9,208,107,3,240,107,132,208,107,241,107,241,107,240,107,5, + 241,107,132,17,116,17,116,241,115,241,115,9,17,116,133,49,116,17,116,17, + 116,17,108,49,116,4,17,116,146,49,116,18,116,18,116,49,116,49,116,17, + 116,17,116,49,116,18,116,17,116,49,116,49,116,17,116,49,116,49,116,50, + 116,50,116,49,116,19,50,116,138,82,116,50,116,82,116,50,116,82,116,82, + 116,50,116,50,116,82,116,82,124,3,82,116,135,82,124,82,124,82,116,114, + 124,82,124,114,124,82,124,10,114,124,130,115,124,115,124,4,114,124,169,147, + 124,114,124,115,124,115,124,146,124,115,124,115,124,146,124,147,124,114,124,115, + 124,147,124,147,124,114,124,115,124,147,124,146,124,147,124,115,124,147,124,114, + 124,147,124,114,124,146,124,147,124,115,124,147,124,115,124,146,124,114,124,147, + 124,147,124,115,124,147,124,114,124,147,124,115,124,115,124,147,124,147,124,146, + 124,3,147,124,129,146,124,8,147,124,141,114,124,114,116,82,116,241,99,208, + 83,176,83,238,66,138,17,167,0,135,0,135,0,134,0,134,0,7,135,0, + 3,168,0,135,135,0,101,0,101,0,100,0,100,0,133,0,133,0,3,100, + 0,138,68,0,100,0,133,8,230,24,39,33,6,33,6,25,6,25,6,33, + 6,33,3,39,33,133,71,33,39,33,71,33,71,33,71,41,5,39,33,129, + 6,33,3,39,33,131,39,41,39,41,71,41,4,39,33,141,7,33,39,33, + 7,33,39,33,7,33,39,33,71,33,71,33,71,41,71,41,103,41,104,41, + 136,41,5,104,41,146,136,41,104,41,104,41,234,57,13,99,239,131,240,131, + 240,131,16,132,16,140,48,140,48,140,16,140,16,140,48,140,81,140,49,140, + 49,140,3,81,140,131,48,140,49,140,113,148,5,146,148,132,178,148,146,148, + 146,148,178,156,4,146,148,3,113,148,3,81,140,132,48,140,48,140,80,140, + 81,140,5,16,132,140,15,132,239,131,16,132,48,140,16,132,16,132,239,123, + 48,132,114,148,146,156,146,156,146,148,3,113,148,142,81,140,48,140,48,132, + 113,148,146,148,146,148,113,148,114,148,49,140,48,140,113,148,113,148,81,148, + 81,148,6,113,148,132,114,148,113,148,114,148,114,148,4,113,148,133,48,140, + 142,123,16,132,49,140,48,140,3,16,132,1,240,123,54,3,132,203,90,203, + 90,203,82,203,82,5,203,90,139,236,90,235,90,235,90,203,90,235,90,235, + 90,203,90,235,90,203,90,236,90,236,90,5,235,90,140,236,90,235,90,235, + 90,236,90,235,90,235,90,236,90,235,90,236,90,235,90,236,90,235,90,3, + 236,90,136,12,91,236,90,236,90,12,91,235,90,12,91,236,90,235,90,4, + 236,90,139,12,91,236,90,12,91,236,90,12,91,236,90,12,91,236,90,236, + 90,12,91,12,91,4,236,90,129,12,91,3,236,90,132,12,91,236,90,236, + 90,235,90,3,236,90,131,12,91,12,91,236,82,3,236,90,145,236,82,236, + 90,236,90,236,82,236,90,236,90,236,82,236,82,236,90,236,82,236,82,236, + 90,203,82,204,82,203,82,204,82,204,82,7,203,82,5,171,82,146,171,74, + 171,82,171,82,171,74,171,82,171,74,171,74,138,74,106,74,106,74,171,82, + 203,82,236,90,13,99,45,99,45,91,45,91,77,99,5,78,99,8,110,99, + 129,110,107,3,111,99,131,111,107,111,99,111,99,3,143,107,137,46,99,45, + 83,207,99,240,115,175,107,110,99,110,99,143,99,111,99,3,143,99,141,175, + 99,144,99,144,99,176,107,175,99,175,107,176,107,176,107,176,99,176,107,208, + 107,208,107,208,99,9,208,107,133,240,107,208,107,240,107,208,107,241,107,3, + 240,107,3,241,107,137,241,115,17,108,17,116,17,116,17,108,241,115,17,116, + 17,116,17,108,11,17,116,140,49,116,49,116,17,116,17,116,49,116,17,116, + 49,116,49,116,18,116,18,116,50,116,50,116,5,49,116,129,17,116,20,50, + 116,133,82,116,82,116,50,116,82,116,82,116,3,50,116,134,82,116,50,116, + 82,116,82,124,82,116,82,124,3,82,116,137,82,124,82,124,82,116,114,124, + 82,124,82,124,114,124,114,124,82,124,3,114,124,147,115,124,115,124,114,124, + 115,124,115,124,114,124,115,124,115,124,114,124,146,124,114,124,146,124,147,124, + 115,124,147,124,147,124,115,124,115,124,114,124,3,147,124,132,115,124,147,124, + 115,124,146,124,3,147,124,149,115,124,146,124,115,124,114,124,115,124,146,124, + 115,124,146,124,147,124,114,124,146,124,147,124,114,124,147,124,115,124,115,124, + 147,124,115,124,115,124,147,124,115,124,4,147,124,129,146,124,10,147,124,141, + 115,124,115,116,82,116,18,108,209,91,176,83,238,66,138,17,167,0,135,0, + 135,0,134,0,134,0,6,135,0,154,167,0,168,0,168,0,200,0,134,0, + 133,0,132,8,100,8,133,0,133,0,101,0,100,0,100,0,68,0,68,0, + 69,0,101,0,230,24,38,33,6,33,38,33,6,33,6,33,38,33,39,33, + 39,33,3,71,33,3,71,41,129,39,41,7,39,33,4,38,33,7,39,33, + 148,40,33,72,33,71,33,72,33,72,41,104,41,136,41,104,41,136,41,104, + 41,72,41,39,33,39,33,38,33,71,33,71,41,103,41,233,57,12,99,142, + 115,4,207,123,134,239,123,239,131,239,131,16,132,49,140,49,140,3,81,140, + 135,113,140,81,140,81,148,81,140,113,148,146,148,178,156,4,146,148,4,113, + 148,139,114,148,113,148,114,148,113,148,81,140,48,140,16,132,16,132,48,140, + 81,140,48,132,5,81,140,143,81,148,81,140,81,140,49,140,48,140,48,140, + 81,140,49,140,16,132,15,132,48,140,113,148,113,140,81,140,81,140,5,80, + 140,138,238,123,48,132,146,148,146,148,114,148,146,148,81,148,48,140,146,148, + 114,148,10,113,148,143,113,156,113,148,113,148,81,148,49,140,48,132,16,132, + 110,115,175,123,49,132,16,132,16,140,16,132,48,140,16,140,65,3,3,203, + 90,138,203,82,203,90,203,82,203,90,203,82,203,82,203,90,203,90,235,90, + 203,90,7,235,90,134,236,90,235,90,235,90,236,90,235,90,235,90,3,236, + 90,3,235,90,3,236,90,129,235,90,4,236,90,135,12,91,236,90,12,91, + 236,90,236,90,12,91,236,90,6,12,91,136,236,90,12,91,12,91,236,90, + 12,91,236,90,12,91,236,90,5,12,91,136,236,90,12,91,236,90,12,91, + 12,91,236,90,236,90,12,91,4,236,90,131,235,82,236,90,12,91,8,236, + 90,136,236,82,236,90,236,82,203,82,236,82,204,82,236,82,235,82,3,236, + 82,137,203,82,203,82,236,82,204,82,203,82,203,82,171,82,203,82,203,82, + 3,171,82,130,171,74,203,82,3,171,82,140,171,74,171,82,171,82,138,74, + 105,66,106,74,171,82,236,90,12,91,13,91,45,99,77,91,4,78,99,131, + 110,99,78,99,110,107,3,110,99,4,111,99,132,143,107,111,99,143,99,111, + 99,3,143,107,3,143,99,134,110,99,45,83,13,83,208,107,17,124,208,107, + 5,143,99,131,143,107,175,107,175,107,4,176,107,131,207,99,208,107,208,99, + 8,208,107,134,240,107,241,107,209,107,209,107,240,107,240,107,4,241,107,158, + 241,115,17,116,241,107,17,116,241,107,17,116,17,108,17,116,17,116,17,108, + 17,116,17,108,17,116,49,116,17,116,49,116,49,116,17,116,49,116,50,116, + 50,116,49,116,50,116,49,116,50,116,50,116,18,116,50,116,49,116,49,116, + 12,50,116,129,49,116,9,50,116,145,82,116,50,116,50,116,82,116,82,116, + 50,116,82,116,50,116,50,116,50,124,82,116,82,116,82,124,82,116,82,124, + 82,124,50,116,5,82,116,140,82,124,82,124,82,116,82,124,82,116,114,116, + 82,116,82,116,82,124,114,124,82,124,82,124,5,114,124,130,115,124,115,124, + 4,114,124,5,115,124,159,146,124,115,124,147,124,115,124,147,124,147,124,115, + 124,146,124,146,124,115,124,147,124,146,124,115,124,147,124,115,124,146,124,147, + 124,115,124,115,124,147,124,115,124,146,124,147,124,147,124,115,124,147,124,146, + 124,147,124,146,124,147,124,115,124,3,147,124,129,114,124,21,147,124,139,147, + 132,147,124,115,116,82,116,17,100,209,91,176,83,14,67,170,25,200,0,167, + 0,5,135,0,131,167,0,167,0,135,0,3,167,0,147,200,0,200,0,135, + 0,133,0,101,0,100,0,100,0,133,0,133,0,101,0,100,0,67,8,100, + 0,100,0,101,8,230,24,71,41,70,41,70,41,4,38,33,129,70,41,3, + 39,33,136,39,41,71,41,103,41,71,41,39,33,39,33,6,33,7,33,3, + 39,33,129,38,33,3,39,33,137,71,41,103,41,104,41,104,41,72,41,104, + 41,72,41,72,33,71,33,3,39,33,145,71,41,103,41,103,41,168,49,233, + 57,41,66,171,82,12,99,142,115,240,131,48,140,146,156,211,164,211,164,146, + 148,175,115,110,107,3,110,115,131,142,115,174,123,16,132,4,81,140,134,113, + 140,81,140,113,140,113,140,81,148,114,148,3,146,148,129,113,148,3,114,148, + 134,113,148,114,148,146,148,113,148,81,140,113,148,6,81,140,145,113,148,81, + 148,81,140,113,148,81,140,113,140,113,148,48,132,239,123,239,131,15,124,239, + 123,15,124,239,123,15,132,16,132,48,132,4,113,140,155,81,148,113,148,146, + 148,146,156,146,156,178,156,80,140,238,123,146,148,146,148,114,148,113,148,81, + 148,16,132,48,132,48,132,16,132,239,131,239,123,239,123,15,132,206,123,239, + 115,81,140,113,148,113,148,81,148,3,113,148,133,81,140,113,148,81,148,239, + 139,207,131,3,113,148,3,81,148,209,2,7,203,90,134,235,90,203,82,203, + 90,235,90,203,90,203,90,4,235,90,129,236,90,7,235,90,134,236,90,235, + 90,236,90,236,90,235,90,235,90,12,236,90,3,12,91,136,236,90,12,91, + 12,91,236,90,236,90,12,91,236,90,12,91,3,236,90,131,12,91,236,90, + 12,91,3,236,90,134,12,91,236,90,12,91,236,90,236,90,12,91,8,236, + 90,129,12,91,13,236,90,131,236,82,236,90,236,90,8,236,82,7,203,82, + 11,171,82,136,138,74,106,74,138,74,203,82,236,90,13,91,45,99,45,99, + 4,78,99,139,110,99,110,99,110,107,110,99,142,107,143,99,143,99,111,99, + 111,99,143,107,143,107,5,143,99,3,143,107,138,143,99,143,99,78,99,236, + 82,13,83,240,107,17,124,208,107,143,99,143,99,3,143,107,130,175,107,175, + 99,3,176,107,130,208,107,176,107,10,208,107,131,240,107,241,107,209,107,7, + 241,107,133,17,116,241,107,17,108,17,116,241,115,9,17,116,133,49,116,17, + 116,17,116,50,116,49,116,3,50,116,129,49,116,9,50,116,129,49,116,7, + 50,116,3,82,116,138,50,116,82,116,82,116,50,116,82,116,50,116,82,116, + 50,116,82,124,50,116,9,82,116,130,82,124,82,124,3,82,116,141,82,124, + 82,116,82,124,82,116,82,116,82,124,82,124,82,116,82,124,82,124,82,116, + 82,124,82,124,3,82,116,4,114,124,129,115,124,5,114,124,3,115,124,130, + 114,124,114,124,3,115,124,151,147,124,115,124,147,124,115,124,147,124,115,124, + 147,124,146,124,115,124,147,124,115,124,115,124,147,124,147,124,115,124,147,124, + 115,124,147,124,147,124,115,124,115,124,147,124,115,124,9,147,124,129,115,124, + 7,147,124,130,146,124,146,124,18,147,124,139,114,124,82,116,18,108,209,91, + 208,91,15,67,203,25,167,0,168,0,135,0,134,0,6,135,0,3,167,0, + 148,166,0,167,0,167,0,134,0,100,0,100,0,100,8,133,0,133,0,100, + 8,100,0,100,0,100,8,68,0,101,0,7,25,71,41,103,41,103,41,70, + 41,3,38,33,133,70,41,39,33,39,33,38,33,38,33,4,71,41,133,39, + 41,71,33,39,33,71,33,104,33,6,104,41,165,103,41,71,41,71,33,39, + 33,39,33,103,41,103,41,168,49,233,57,74,74,139,82,236,98,110,107,142, + 115,16,140,81,148,178,156,210,164,19,173,52,181,52,181,85,189,117,197,182, + 205,150,197,52,173,16,132,175,115,142,115,142,115,174,115,174,115,239,123,49, + 140,81,140,113,140,113,140,6,81,140,129,113,148,4,146,148,131,178,156,146, + 148,113,148,4,113,140,146,81,140,113,140,113,148,81,140,113,148,113,148,48, + 132,80,140,81,140,81,140,80,140,80,140,80,132,48,140,81,140,80,140,48, + 132,48,140,4,81,140,3,113,148,4,114,148,136,81,148,49,140,114,148,146, + 148,114,148,113,148,80,140,206,115,3,81,140,155,48,140,239,123,142,115,174, + 115,239,123,16,132,239,131,48,140,48,140,81,140,48,140,141,115,81,140,113, + 148,113,148,146,148,146,148,146,156,113,148,113,148,81,148,113,148,48,148,174, + 131,81,148,113,148,113,148,3,81,148,76,3,3,203,90,133,235,90,203,90, + 203,90,203,82,235,90,3,203,90,4,235,90,132,203,90,235,90,235,90,236, + 90,4,235,90,132,236,90,235,90,236,90,235,90,3,236,90,3,235,90,132, + 236,90,12,91,236,90,235,90,3,236,90,132,12,91,236,90,236,90,12,91, + 3,236,90,3,12,91,129,236,90,3,12,91,132,236,90,12,91,236,90,236, + 90,4,12,91,3,236,90,136,235,90,12,91,12,91,236,90,236,90,12,91, + 236,90,12,91,6,236,90,129,12,91,10,236,90,129,236,82,4,236,90,138, + 204,82,236,82,236,82,204,82,204,90,236,82,203,82,235,82,236,82,204,82, + 4,203,82,163,171,82,203,82,171,82,171,82,203,82,171,74,171,82,203,82, + 171,82,171,82,171,74,138,74,106,74,138,74,236,90,236,90,12,91,45,99, + 77,99,78,99,78,99,110,107,110,99,110,107,111,99,111,107,111,107,143,99, + 143,107,143,107,143,99,143,99,143,107,143,107,143,99,3,143,107,6,143,99, + 144,46,91,236,82,77,83,17,116,17,124,208,107,143,99,143,107,143,107,175, + 99,175,99,176,99,176,107,176,107,208,107,176,107,6,208,107,133,240,107,208, + 107,208,107,209,107,208,107,4,240,107,4,241,107,130,241,115,241,107,3,17, + 108,9,17,116,129,50,116,3,49,116,133,50,116,49,116,50,116,49,116,82, + 116,7,50,116,139,82,116,81,116,82,116,50,116,50,116,50,124,50,116,50, + 116,82,116,50,116,50,116,5,82,116,132,50,116,82,116,82,116,50,116,4, + 82,116,132,82,124,82,116,82,116,82,124,3,82,116,131,82,124,82,116,82, + 124,3,82,116,150,82,124,82,116,82,116,82,124,114,116,82,116,82,124,114, + 124,82,124,82,116,82,124,114,124,82,124,114,124,82,116,83,124,114,116,82, + 116,82,124,82,124,114,124,82,124,3,114,124,132,115,124,114,124,115,124,114, + 124,7,115,124,135,147,124,147,124,115,124,115,124,147,124,147,124,115,124,5, + 147,124,129,115,124,3,147,124,130,115,124,115,124,7,147,124,144,115,124,147, + 124,146,124,147,124,147,124,114,124,147,124,115,124,146,124,147,124,115,124,147, + 124,147,124,115,124,147,124,115,124,3,147,124,129,146,124,3,147,124,129,147, + 132,9,147,124,142,147,132,147,132,147,124,115,124,114,116,18,108,209,91,177, + 91,47,75,235,25,200,0,168,0,135,0,135,0,3,167,0,4,135,0,134, + 167,0,167,0,134,0,166,0,134,0,134,0,3,100,0,145,101,0,134,8, + 101,8,100,0,100,0,68,0,100,0,68,0,7,33,136,49,136,49,71,41, + 102,41,38,41,71,41,38,41,70,41,4,71,41,134,103,41,136,49,103,49, + 103,41,104,41,103,41,5,71,41,146,39,33,38,33,38,33,103,41,168,49, + 233,65,74,74,171,82,236,98,110,115,175,123,240,131,81,148,114,156,178,164, + 243,172,20,181,52,181,3,85,189,145,149,197,182,197,182,197,149,197,149,197, + 182,197,214,205,214,205,85,181,113,140,207,123,142,115,175,123,175,123,239,123, + 81,140,114,148,6,146,148,143,114,148,114,148,146,148,146,148,178,156,178,156, + 211,156,178,156,178,156,113,148,80,140,113,140,113,140,113,148,113,148,3,81, + 140,133,80,132,80,140,113,140,80,140,81,140,3,113,148,129,81,148,4,113, + 148,7,114,148,171,146,148,146,148,146,156,114,148,113,148,113,148,81,140,240, + 131,81,140,113,140,113,140,15,132,239,123,174,115,15,124,239,123,81,140,113, + 148,81,140,16,132,16,140,81,148,113,148,48,140,113,148,113,148,114,148,113, + 148,205,123,48,132,146,156,114,156,113,148,81,148,80,140,48,140,48,140,48, + 132,48,140,15,140,174,123,49,140,113,148,4,81,148,44,3,3,203,90,131, + 203,82,203,90,235,90,3,203,90,137,235,90,235,90,203,90,235,90,235,90, + 203,90,235,90,235,90,203,90,3,235,90,144,236,90,236,90,235,90,236,90, + 235,90,236,90,235,90,235,90,236,90,235,90,236,90,236,90,12,91,236,90, + 236,90,12,91,3,236,90,129,12,91,3,236,90,134,12,91,236,90,12,91, + 236,90,12,91,236,90,6,12,91,134,236,90,12,91,236,90,12,91,12,91, + 236,90,5,12,91,129,236,90,4,12,91,134,236,90,236,90,12,91,236,90, + 12,91,12,91,9,236,90,139,236,82,236,90,236,82,236,82,236,90,236,90, + 236,82,236,90,236,82,236,82,236,90,3,236,82,136,236,90,236,82,204,82, + 204,82,203,82,204,82,204,82,203,74,6,203,82,144,171,74,171,74,171,82, + 203,82,171,82,106,74,138,74,171,82,236,90,12,91,45,91,78,99,78,99, + 110,99,111,99,111,99,5,143,107,151,143,99,143,99,143,107,143,107,143,99, + 175,107,143,107,143,99,143,107,143,107,175,99,143,99,175,107,143,107,175,107, + 175,107,175,99,143,99,110,91,175,99,49,124,49,124,208,115,3,175,107,133, + 175,99,208,107,176,107,176,99,176,107,5,208,107,130,240,115,208,107,3,241, + 107,138,241,115,240,107,241,107,208,107,241,107,209,107,208,107,241,107,17,108, + 17,108,5,17,116,130,18,116,49,116,3,17,116,133,49,116,49,116,50,116, + 49,116,49,116,9,50,116,8,82,116,129,82,124,7,82,116,129,50,116,5, + 82,116,3,82,124,130,82,116,82,116,3,82,124,7,82,116,3,82,124,135, + 82,116,82,116,82,124,82,116,82,116,114,124,114,124,3,82,116,141,114,124, + 114,116,82,124,114,124,114,124,82,124,114,124,115,124,82,124,115,124,114,124, + 115,124,115,124,3,114,124,5,115,124,129,114,124,4,115,124,138,146,124,147, + 124,115,124,147,124,115,124,147,124,147,124,115,124,147,124,115,124,6,147,124, + 130,115,124,115,124,10,147,124,132,115,124,147,124,147,124,115,124,8,147,124, + 129,115,124,19,147,124,175,147,132,147,124,147,132,147,124,147,132,115,124,83, + 116,18,108,209,91,209,91,79,75,11,34,200,0,168,0,167,0,167,0,135, + 0,167,0,168,0,167,0,167,0,135,0,167,0,167,0,135,0,166,0,167, + 0,167,0,134,0,133,0,100,0,100,0,133,0,134,0,133,8,100,8,100, + 0,100,0,68,0,100,8,7,25,168,49,200,57,136,49,135,49,103,49,103, + 49,4,136,49,153,135,49,103,49,135,49,103,49,71,41,70,41,70,41,103, + 41,135,49,168,49,233,65,73,74,139,82,13,99,110,115,239,123,49,140,113, + 148,178,156,211,164,243,172,20,173,84,181,85,189,117,197,3,149,197,129,150, + 197,3,182,197,147,117,189,149,189,149,197,150,197,182,197,149,197,150,197,182, + 197,182,205,214,205,149,197,179,156,16,132,175,123,175,123,207,123,240,131,146, + 148,178,148,6,146,148,133,114,148,146,148,146,148,178,148,178,156,4,211,156, + 136,146,148,113,140,146,148,81,140,48,132,80,140,113,140,113,148,4,146,148, + 132,178,156,146,156,146,148,81,148,3,114,148,7,146,148,130,146,156,146,156, + 3,113,148,138,80,140,80,140,113,140,145,148,114,148,17,140,81,148,146,148, + 145,148,145,156,3,15,132,148,239,123,113,148,146,148,146,148,113,148,81,140, + 146,148,146,148,81,140,113,148,81,148,48,140,81,140,81,140,16,140,81,148, + 48,140,48,132,48,140,48,140,4,113,148,132,80,148,173,131,207,123,113,140, + 3,113,148,1,81,148,190,2,4,203,90,133,203,82,235,90,204,90,235,90, + 203,82,4,235,90,129,236,90,5,235,90,133,236,90,236,90,235,90,236,90, + 235,90,3,236,90,129,235,90,13,236,90,131,12,91,12,91,236,90,6,12, + 91,129,236,90,3,12,91,129,236,90,8,12,91,129,236,90,4,12,91,138, + 236,90,12,91,236,90,12,91,236,90,12,91,236,90,12,91,236,90,236,90, + 3,12,91,9,236,90,129,236,82,3,236,90,132,236,82,236,82,236,90,236, + 90,3,236,82,135,204,82,204,82,236,82,203,82,236,82,203,82,204,82,6, + 203,82,144,171,82,203,82,171,74,203,82,171,82,171,82,138,74,138,74,171, + 82,236,90,13,91,45,99,78,99,110,99,110,99,111,99,10,143,107,137,175, + 107,143,107,175,107,143,107,143,107,175,107,175,107,176,107,208,107,3,208,115, + 140,240,115,175,107,175,107,208,107,49,124,49,124,240,115,207,115,175,115,175, + 107,176,99,176,107,4,208,107,133,241,107,240,107,208,107,240,107,240,107,9, + 241,107,129,240,107,3,241,107,5,17,116,133,18,116,17,116,17,116,49,116, + 49,116,9,50,116,29,82,116,134,82,124,82,124,114,124,82,116,82,124,82, + 116,6,82,124,142,114,124,114,116,114,124,82,124,82,116,82,124,82,124,114, + 124,82,116,114,124,82,124,114,124,82,116,115,124,3,114,124,129,82,116,5, + 114,124,3,115,124,129,114,124,3,115,124,131,114,124,115,124,114,124,5,115, + 124,129,114,124,3,115,124,132,147,124,147,124,115,124,115,124,10,147,124,129, + 115,124,8,147,124,129,115,124,7,147,124,130,115,124,147,132,29,147,124,139, + 179,124,147,124,115,124,82,116,50,108,241,91,209,91,80,75,44,34,200,0, + 168,0,4,167,0,132,168,0,168,0,167,0,167,0,3,135,0,3,167,0, + 147,134,0,101,0,100,0,100,8,133,0,134,0,133,0,100,8,67,8,100, + 8,100,0,100,0,7,25,201,57,9,66,200,57,168,57,135,57,135,49,3, + 103,49,144,102,49,135,49,168,57,232,57,9,66,106,74,171,90,12,99,110, + 107,175,123,239,131,81,140,113,148,146,156,211,164,243,172,3,52,181,132,84, + 181,117,189,117,189,149,189,3,149,197,140,150,197,149,197,149,189,149,197,117, + 197,149,197,181,197,150,197,149,189,149,197,182,197,182,197,3,149,197,143,182, + 205,214,205,182,197,243,164,49,140,207,123,175,123,207,123,48,132,146,148,178, + 148,146,148,146,148,114,148,113,148,5,146,148,140,178,148,178,156,178,156,211, + 156,211,156,210,156,178,156,146,148,146,148,81,140,15,124,81,140,3,146,148, + 136,178,148,82,148,82,148,114,148,82,148,17,140,241,139,146,148,11,178,156, + 155,48,132,113,140,146,148,145,148,145,148,146,148,146,156,178,156,49,148,81, + 148,146,156,146,156,178,156,113,148,48,140,80,140,48,140,81,148,114,148,146, + 148,146,148,48,140,113,148,114,148,48,140,16,132,49,140,3,48,140,129,81, + 140,3,48,140,130,81,148,80,148,3,113,148,134,146,156,146,156,48,148,141, + 123,239,123,81,140,3,81,148,66,3,131,203,90,203,90,203,82,4,203,90, + 131,235,90,235,90,203,90,4,235,90,131,236,90,235,90,203,90,3,235,90, + 136,236,90,235,90,235,90,236,90,235,90,11,91,235,90,235,90,3,236,90, + 140,12,91,235,90,12,91,235,90,236,90,236,90,12,91,12,91,236,90,12, + 91,12,91,236,90,7,12,91,133,236,90,12,91,12,91,236,90,236,90,5, + 12,91,129,236,90,3,12,91,130,236,90,236,90,5,12,91,129,236,90,6, + 12,91,4,236,90,130,12,91,12,91,4,236,90,131,12,91,12,91,236,82, + 5,236,90,131,236,82,236,90,236,90,4,236,82,136,203,82,203,82,204,82, + 203,82,204,82,171,82,203,82,204,82,3,203,82,143,171,82,203,82,171,82, + 203,82,203,82,171,74,138,74,139,74,204,90,236,90,45,91,78,99,78,99, + 110,99,143,99,3,143,107,129,143,99,3,143,107,154,175,107,143,107,175,107, + 175,107,143,107,143,107,175,107,175,99,175,107,208,115,240,115,240,115,16,124, + 16,124,240,123,17,124,240,115,240,115,208,107,16,116,81,124,49,124,240,123, + 239,123,207,115,175,107,5,208,107,8,241,107,134,17,116,241,115,17,116,241, + 115,17,108,17,108,3,241,107,137,17,108,17,108,49,116,49,116,17,116,17, + 116,49,116,50,116,17,116,8,50,116,129,82,116,3,50,116,130,82,116,50, + 124,3,82,116,135,82,124,82,116,82,116,82,124,82,116,82,124,82,124,4, + 82,116,3,82,124,134,82,116,82,124,82,116,82,116,82,124,82,124,4,82, + 116,4,82,124,155,82,116,114,116,82,116,114,124,114,124,82,116,82,124,82, + 116,114,124,114,124,82,116,114,124,114,116,114,116,82,124,82,124,114,116,115, + 124,82,124,114,124,83,124,114,124,115,124,83,124,114,124,115,124,115,124,4, + 114,124,133,115,124,114,124,115,124,114,124,114,124,3,115,124,143,114,124,115, + 124,114,124,115,124,115,124,114,124,147,124,147,124,115,124,147,124,147,124,146, + 124,147,124,115,124,115,124,7,147,124,129,115,124,21,147,124,132,115,124,147, + 124,147,124,115,124,5,147,124,129,115,124,17,147,124,141,147,132,147,124,147, + 132,147,124,115,124,114,116,18,108,241,91,209,83,111,83,76,34,232,0,168, + 0,4,167,0,131,168,0,168,0,167,0,3,168,0,183,167,0,168,0,200, + 0,135,0,134,0,133,8,100,8,100,0,133,8,133,0,133,0,100,8,100, + 0,100,0,100,8,68,0,7,25,201,49,9,66,200,57,199,57,199,57,232, + 65,41,74,106,82,203,90,236,98,45,107,142,115,239,131,16,140,113,148,146, + 156,211,164,243,172,20,173,52,181,84,181,85,189,85,181,85,189,117,189,149, + 197,117,189,117,189,84,189,149,197,117,189,117,189,117,197,149,197,149,197,117, + 189,149,197,149,197,3,117,189,146,149,197,150,197,182,197,149,197,150,197,181, + 197,149,197,149,189,149,197,182,197,182,197,214,205,20,173,81,140,207,123,175, + 123,240,131,49,140,5,146,148,131,114,148,113,148,114,148,4,146,148,129,178, + 148,3,178,156,148,114,148,113,140,82,140,114,148,114,148,16,132,81,140,178, + 156,146,156,178,156,178,156,82,148,241,139,17,140,242,139,209,139,17,140,146, + 148,178,156,211,156,3,178,156,136,178,148,178,156,146,156,178,156,146,156,178, + 156,15,132,81,140,6,178,156,136,114,148,17,140,146,148,178,156,146,148,113, + 148,81,148,114,148,3,113,148,145,146,148,146,156,80,140,113,148,81,148,48, + 132,16,132,49,140,48,140,81,140,16,140,48,140,16,140,81,148,81,148,113, + 148,113,148,3,81,148,134,114,148,113,148,81,148,207,131,206,123,15,132,3, + 81,148,6,3,4,203,90,130,235,90,235,90,3,203,90,131,235,90,235,90, + 203,82,4,235,90,133,236,90,235,90,236,90,235,90,235,90,5,236,90,132, + 235,90,236,90,12,91,235,90,7,12,91,140,236,90,236,90,235,90,236,90, + 12,91,236,90,12,91,236,90,236,90,12,91,12,91,236,90,8,12,91,134, + 236,90,12,91,236,90,236,90,12,91,236,90,11,12,91,136,236,90,12,91, + 236,90,236,90,12,91,12,91,236,90,12,91,5,236,90,129,12,91,9,236, + 90,3,236,82,138,204,82,236,90,204,82,236,82,236,82,203,82,204,82,204, + 82,203,82,204,82,3,203,82,140,171,82,203,82,203,82,171,82,171,74,171, + 82,139,74,139,74,171,82,236,90,13,91,45,99,3,110,99,131,143,107,143, + 107,143,99,7,175,107,129,175,99,3,175,107,135,176,107,208,107,240,123,16, + 124,48,124,48,124,49,124,3,16,124,138,16,116,240,115,208,107,16,116,114, + 132,81,132,16,124,240,123,239,115,207,115,4,208,107,6,241,107,130,17,116, + 17,108,5,17,116,129,17,108,6,17,116,130,49,116,50,116,3,49,116,3, + 50,116,134,82,116,50,116,50,116,82,116,82,116,50,116,3,82,116,129,82, + 124,5,82,116,159,82,124,82,124,82,116,82,124,82,124,82,116,82,124,82, + 116,82,124,82,124,114,124,82,124,82,124,82,116,82,116,83,124,114,116,82, + 124,114,124,114,116,114,124,82,124,82,124,114,124,82,124,114,124,114,124,82, + 124,114,124,114,124,82,124,3,114,124,137,82,124,115,124,115,116,83,124,114, + 124,115,124,114,124,114,124,114,116,4,114,124,4,115,124,132,114,116,115,124, + 115,116,114,124,3,115,124,129,114,124,8,115,124,131,114,124,115,124,114,124, + 6,115,124,130,147,124,115,124,10,147,124,129,115,124,5,147,124,134,147,132, + 147,124,147,124,115,124,147,124,115,124,11,147,124,129,146,124,20,147,124,131, + 147,132,147,124,147,132,3,147,124,141,147,132,179,124,147,124,147,132,147,124, + 147,124,115,116,50,108,241,91,209,91,112,83,108,42,232,0,3,168,0,131, + 135,0,168,0,200,0,7,168,0,137,200,0,168,0,134,0,133,8,100,8, + 100,8,133,0,133,0,133,8,4,100,8,138,100,0,230,16,74,66,45,99, + 110,115,174,123,240,131,81,140,146,148,178,156,3,211,164,132,243,172,52,181, + 85,181,85,181,5,117,189,129,85,189,6,117,189,129,85,181,4,117,189,140, + 149,197,149,197,117,189,149,197,149,197,117,189,84,181,85,181,85,189,150,197, + 149,197,181,197,4,182,197,148,149,197,150,197,181,197,182,205,214,205,84,181, + 114,148,239,123,175,123,240,131,81,140,146,148,146,148,114,148,113,148,114,148, + 81,140,240,131,16,132,81,140,3,114,148,140,146,148,178,148,178,156,146,148, + 146,148,81,140,113,148,114,148,146,148,48,132,81,132,178,156,3,211,156,140, + 146,156,17,140,242,139,18,140,18,140,241,139,82,140,146,148,146,148,114,148, + 113,148,114,148,6,178,156,133,113,148,80,140,178,156,178,156,146,156,4,178, + 156,132,17,140,114,148,178,156,146,156,3,146,148,151,178,156,146,148,146,148, + 146,156,146,148,81,148,81,140,48,140,80,140,81,148,49,140,81,148,81,148, + 113,148,81,148,113,148,146,148,81,148,81,148,113,148,113,156,81,148,81,148, + 3,113,148,134,239,139,174,123,16,132,114,148,113,148,113,148,224,2,4,203, + 90,132,235,90,203,90,235,90,203,90,3,235,90,130,236,90,236,90,3,235, + 90,135,236,90,235,90,235,90,236,90,11,91,235,90,235,90,8,236,90,139, + 12,91,236,90,236,90,12,91,236,90,236,90,12,91,12,91,236,90,236,90, + 12,91,3,236,90,19,12,91,129,236,90,6,12,91,134,236,90,236,90,12, + 91,12,91,236,90,12,91,3,236,90,132,12,91,236,90,12,91,12,91,7, + 236,90,129,236,82,3,236,90,144,236,82,236,90,236,82,236,82,236,90,236, + 82,235,82,236,82,236,82,204,82,236,82,203,82,204,82,203,82,204,82,204, + 82,5,203,82,140,171,82,203,82,203,82,139,74,171,74,203,82,236,90,13, + 99,78,99,78,99,111,99,111,99,3,143,107,143,175,107,175,107,176,107,175, + 107,175,107,176,107,175,107,175,107,208,107,176,107,176,107,208,107,208,115,16, + 124,17,124,4,49,124,3,16,124,137,16,116,240,107,17,108,82,124,81,132, + 16,124,240,123,240,115,208,115,3,208,107,135,209,107,241,107,241,107,17,108, + 17,108,241,115,241,115,6,17,116,131,49,116,17,116,17,116,4,49,116,129, + 18,116,6,50,116,129,82,116,3,50,116,130,82,116,50,116,3,82,116,129, + 82,124,4,82,116,133,82,124,82,116,82,124,82,124,82,116,7,82,124,131, + 114,116,114,124,82,124,4,114,124,129,82,124,5,114,124,136,82,116,115,124, + 83,124,82,124,115,124,115,124,114,124,114,116,3,115,124,130,114,124,114,124, + 6,115,124,134,114,124,115,124,114,124,115,124,115,124,114,124,7,115,124,132, + 114,124,115,124,115,124,115,116,6,115,124,131,114,124,115,124,114,124,8,115, + 124,132,147,124,115,124,147,124,115,124,25,147,124,129,147,132,23,147,124,129, + 147,132,8,147,124,142,147,132,147,132,147,124,147,124,147,132,147,124,147,124, + 115,116,50,108,241,91,209,91,112,75,109,42,232,0,6,168,0,129,200,0, + 7,168,0,154,167,0,134,0,133,0,100,8,100,8,133,8,134,8,133,8, + 100,0,68,8,100,8,132,8,68,0,7,17,13,91,81,140,178,156,178,156, + 243,164,20,173,52,173,52,181,85,181,84,181,52,173,52,181,3,84,181,134, + 85,181,84,181,116,189,85,181,85,181,85,189,8,117,189,146,117,197,117,189, + 85,189,117,189,149,197,117,197,117,189,117,189,117,197,84,181,84,181,85,189, + 150,197,149,197,149,197,182,197,181,197,149,197,3,182,197,154,182,205,182,197, + 214,205,85,181,146,148,240,131,175,123,16,132,81,140,146,148,146,148,114,148, + 114,148,146,148,146,148,81,140,81,140,114,148,146,148,114,148,146,148,146,148, + 178,156,178,156,146,148,146,148,3,81,140,3,113,140,139,178,156,179,156,211, + 156,211,156,114,148,17,140,50,148,114,148,114,148,82,148,82,148,3,114,148, + 130,82,148,82,148,3,178,156,134,146,156,178,156,178,156,146,148,48,132,146, + 148,6,178,156,130,49,148,81,148,3,178,156,3,146,148,130,146,156,146,156, + 3,146,148,133,81,148,48,132,81,140,114,148,81,140,3,113,148,137,81,148, + 81,148,113,148,113,148,81,148,81,148,113,148,114,156,114,156,3,146,156,134, + 16,140,174,123,81,140,146,156,114,148,113,148,235,2,129,235,90,3,203,90, + 141,235,90,203,90,235,90,203,90,203,90,235,90,235,90,203,82,236,90,235, + 90,235,90,236,90,235,90,3,236,90,140,235,90,235,90,236,90,235,90,236, + 90,236,90,12,91,235,90,235,90,236,90,236,90,12,91,3,236,90,132,12, + 91,236,90,12,91,236,90,6,12,91,129,236,90,8,12,91,129,236,90,11, + 12,91,129,236,90,8,12,91,135,236,90,12,91,12,91,236,90,12,91,236, + 90,236,90,4,12,91,153,236,90,236,90,12,91,236,90,236,90,12,91,12, + 91,236,90,236,90,236,82,12,91,236,90,236,90,204,90,236,90,236,90,204, + 90,236,90,204,82,236,82,236,82,204,82,203,82,203,82,204,82,5,203,82, + 139,171,82,203,82,171,82,139,82,171,74,203,82,236,90,13,91,78,99,110, + 99,143,99,3,143,107,3,175,107,3,176,107,129,175,107,4,176,107,135,208, + 107,208,107,240,115,16,124,49,132,49,124,49,132,4,49,124,141,16,124,17, + 116,240,115,17,116,82,132,81,124,17,124,240,123,208,115,208,115,207,107,208, + 107,208,107,3,241,107,7,17,116,136,50,116,17,116,49,116,50,116,49,116, + 50,116,50,116,49,116,8,50,116,135,82,116,50,116,82,116,50,116,82,116, + 82,116,82,124,5,82,116,143,82,124,82,124,82,116,82,124,82,124,82,116, + 114,124,82,124,114,124,82,124,82,124,114,124,114,124,115,124,82,124,6,114, + 124,129,115,124,3,114,124,9,115,124,134,114,124,114,124,115,124,114,124,115, + 124,114,124,15,115,124,135,115,116,115,124,115,124,147,124,115,124,115,124,114, + 124,16,115,124,133,147,124,115,124,115,124,147,124,115,124,14,147,124,129,115, + 124,11,147,124,129,147,132,11,147,124,134,147,132,147,124,115,124,147,124,147, + 124,147,132,6,147,124,131,147,132,147,124,147,132,5,147,124,144,147,132,147, + 124,147,132,179,132,147,124,147,124,179,132,147,124,147,116,114,116,50,108,241, + 99,177,91,112,75,109,42,232,0,3,168,0,132,200,0,200,0,168,0,200, + 0,6,168,0,145,200,0,167,0,134,0,133,8,132,8,100,8,133,8,134, + 0,165,8,100,0,100,0,100,8,132,8,100,8,231,16,78,99,211,156,3, + 20,173,137,85,181,85,181,84,181,85,181,85,181,52,181,52,181,84,181,85, + 181,4,84,181,131,85,181,85,189,85,189,5,117,189,134,85,189,117,189,117, + 189,117,197,84,189,116,181,3,117,189,137,85,189,117,189,117,189,84,181,84, + 181,85,189,150,197,149,197,181,197,3,149,197,3,182,197,143,182,205,182,197, + 214,205,117,197,179,156,16,132,207,123,16,132,81,140,114,148,146,148,113,140, + 113,140,146,148,114,148,4,146,148,130,114,148,146,148,3,178,156,135,146,148, + 146,148,114,148,81,140,113,148,114,148,146,148,3,178,156,3,179,156,130,82, + 148,114,148,6,178,156,131,179,156,146,148,49,148,6,178,156,131,146,156,48, + 140,146,148,6,178,156,149,146,156,49,148,146,156,178,156,178,156,146,148,146, + 156,146,156,178,156,178,156,146,156,146,148,146,148,81,148,48,140,81,140,146, + 148,113,148,48,140,81,148,81,148,3,48,140,132,81,140,113,148,81,148,113, + 148,4,146,156,135,113,148,238,131,206,123,113,148,146,156,113,148,114,148,185, + 2,129,203,90,4,235,90,129,203,90,4,235,90,129,203,90,3,235,90,134, + 236,90,235,90,236,90,235,90,236,90,235,90,9,236,90,144,12,91,12,91, + 236,90,12,91,236,90,12,91,236,90,12,91,236,90,12,91,236,90,236,90, + 12,91,236,90,12,91,236,90,26,12,91,129,236,90,6,12,91,130,236,90, + 236,90,3,12,91,129,236,90,5,12,91,5,236,90,132,236,82,236,90,236, + 82,236,82,4,236,90,3,236,82,129,203,82,4,204,82,130,203,82,204,82, + 5,203,82,147,204,82,171,82,138,74,171,82,204,90,13,91,45,99,78,99, + 111,99,143,107,175,107,175,99,176,107,175,107,176,107,208,107,207,107,176,107, + 176,107,7,208,107,130,16,116,49,132,3,49,124,129,49,132,3,49,124,142, + 17,124,17,116,240,115,49,116,114,132,82,132,16,124,240,115,239,115,208,115, + 175,107,175,107,176,107,241,107,6,17,116,134,50,116,50,116,49,116,49,116, + 50,116,49,116,6,50,116,130,82,116,50,116,11,82,116,129,82,124,4,82, + 116,136,82,124,114,124,82,124,114,124,114,124,115,124,115,124,114,124,3,115, + 124,134,114,124,115,124,114,124,115,124,115,124,114,116,5,115,124,130,114,124, + 114,124,10,115,124,129,147,124,7,115,124,131,115,116,115,124,114,124,13,115, + 124,130,114,124,147,124,3,115,124,129,147,124,12,115,124,129,147,124,3,115, + 124,134,147,124,147,124,115,124,115,124,147,124,115,124,3,147,124,129,115,124, + 4,147,124,132,115,124,147,124,147,124,147,132,3,147,124,129,147,132,33,147, + 124,129,179,132,8,147,124,129,147,132,3,147,124,138,179,124,147,132,147,124, + 115,116,82,108,241,99,209,83,112,83,141,42,8,9,4,168,0,132,201,8, + 168,0,200,0,201,0,5,168,0,149,200,0,167,0,134,0,133,8,132,8, + 100,8,133,8,134,8,134,8,132,8,100,8,100,8,132,8,132,16,231,16, + 14,83,178,156,52,173,20,173,52,173,52,181,3,84,181,129,85,181,4,84, + 181,150,85,181,85,181,52,181,85,181,84,181,84,181,85,189,85,181,117,189, + 85,189,85,189,84,181,117,189,85,189,85,189,117,189,85,189,84,181,84,189, + 117,189,117,189,84,189,4,117,189,147,85,189,149,197,181,197,181,197,149,197, + 182,197,182,197,181,197,182,197,182,205,214,205,182,205,214,205,182,197,243,164, + 49,140,16,132,81,140,81,140,3,146,148,132,113,140,146,148,146,148,114,148, + 6,146,148,137,178,156,179,156,178,156,146,148,81,148,81,140,114,148,146,148, + 146,148,3,178,156,143,179,156,179,156,178,156,146,156,146,148,178,148,146,156, + 178,156,178,156,179,156,211,156,210,156,178,156,81,140,146,148,6,178,156,131, + 80,140,113,140,179,156,6,178,156,134,49,148,114,148,178,156,146,156,146,148, + 178,156,3,146,156,137,178,156,146,156,146,148,81,140,113,148,48,140,80,140, + 113,148,81,140,5,81,148,130,113,148,114,156,3,146,156,138,81,148,16,132, + 48,132,47,132,48,140,16,140,113,148,146,148,114,148,113,148,150,2,4,203, + 90,130,235,90,203,90,5,235,90,129,236,90,4,235,90,4,236,90,129,235, + 90,6,236,90,133,12,91,12,91,236,90,12,91,236,90,3,12,91,129,236, + 90,4,12,91,133,236,90,12,91,236,90,12,91,236,90,7,12,91,129,236, + 90,10,12,91,131,236,90,12,91,236,90,17,12,91,129,236,90,3,12,91, + 131,236,90,236,90,12,91,3,236,90,129,12,91,3,236,90,132,236,82,236, + 82,235,90,236,82,3,236,90,135,236,82,204,90,236,90,236,82,204,82,204, + 82,236,82,3,204,82,141,203,82,204,82,204,82,203,82,171,74,139,74,171, + 82,236,90,13,91,78,99,110,99,110,99,143,107,3,175,107,131,208,107,208, + 107,207,107,6,208,107,136,208,115,208,107,208,107,240,107,16,116,49,132,49, + 132,81,132,5,49,124,142,17,124,17,116,240,107,49,116,114,132,82,132,16, + 116,240,115,207,115,208,115,143,107,143,99,176,107,241,115,3,17,116,130,50, + 116,17,116,4,50,116,130,49,116,49,116,4,50,116,138,82,116,82,116,50, + 116,82,116,50,116,82,116,82,116,82,124,82,116,82,116,3,82,124,7,82, + 116,134,82,124,83,124,114,124,82,124,115,124,114,124,25,115,124,129,147,124, + 30,115,124,130,147,124,147,124,3,115,124,129,147,124,11,115,124,131,147,124, + 115,124,115,124,4,147,124,129,115,124,20,147,124,129,147,132,10,147,124,130, + 147,132,147,132,4,147,124,129,147,132,20,147,124,130,147,132,147,132,5,147, + 124,135,115,124,82,108,17,100,209,91,144,83,141,50,9,1,4,168,0,4, + 200,0,154,168,0,201,0,200,0,168,0,200,0,200,0,168,0,133,0,133, + 8,132,8,100,8,133,8,165,8,134,0,133,0,100,0,100,8,132,8,132, + 8,198,16,237,82,178,148,52,173,20,173,52,181,52,181,3,84,181,131,85, + 181,84,181,85,181,3,84,181,146,85,181,85,181,84,181,52,181,84,181,84, + 181,84,189,85,189,84,189,84,181,84,181,85,189,85,189,84,189,117,189,117, + 189,85,181,84,189,4,117,189,129,117,197,3,117,189,137,150,197,149,197,182, + 197,117,197,117,197,150,197,182,197,181,197,182,197,3,182,205,134,181,197,243, + 164,81,140,49,140,113,148,113,148,3,146,148,134,81,140,114,148,114,148,81, + 140,48,132,81,140,4,146,148,137,178,156,178,148,146,148,146,148,113,148,114, + 148,178,156,179,156,178,156,4,211,156,131,178,156,178,156,146,156,4,146,148, + 5,178,156,131,82,148,146,148,179,156,5,178,156,131,81,140,81,140,179,156, + 6,178,156,137,82,148,82,148,178,156,178,156,146,156,146,156,178,156,146,156, + 178,156,3,146,156,154,113,148,81,148,146,148,81,148,48,140,81,140,81,140, + 49,140,81,140,114,148,146,148,114,148,114,148,81,140,49,140,16,132,208,123, + 207,123,48,140,113,148,145,156,48,148,81,140,146,148,146,156,114,148,210,2, + 130,203,90,203,90,3,235,90,3,203,90,130,235,90,236,90,3,235,90,5, + 236,90,131,235,90,236,90,235,90,6,236,90,137,12,91,12,91,236,90,12, + 91,12,91,236,90,12,91,236,90,236,90,5,12,91,130,236,90,236,90,26, + 12,91,132,236,90,12,91,12,91,236,90,5,12,91,129,236,90,6,12,91, + 132,236,90,12,91,236,90,12,91,4,236,90,130,12,91,236,82,3,236,90, + 133,236,82,236,90,236,82,236,82,236,90,5,236,82,131,204,82,203,82,236, + 82,6,204,82,144,203,82,171,74,171,74,171,82,236,90,13,99,78,99,142, + 99,143,107,143,107,176,107,175,107,207,107,176,107,208,107,176,107,4,208,107, + 129,241,107,4,208,107,134,240,115,17,124,81,132,81,132,49,132,81,124,4, + 49,124,147,49,116,17,116,240,107,49,116,114,132,81,132,16,124,207,115,240, + 123,207,115,143,107,143,99,176,107,241,107,17,116,49,116,50,116,50,116,49, + 116,5,50,116,134,49,116,49,116,50,116,82,116,82,116,50,116,6,82,116, + 130,82,124,114,116,3,82,116,136,114,116,82,124,82,116,114,116,82,124,114, + 124,82,116,82,124,3,115,124,129,114,124,7,115,124,129,147,124,11,115,124, + 129,147,124,3,115,124,129,147,124,3,115,124,129,147,124,3,115,124,132,147, + 124,115,124,115,124,147,124,4,115,124,129,147,124,6,115,124,134,147,124,115, + 124,147,124,115,124,115,124,147,124,6,115,124,146,147,124,115,124,147,124,115, + 124,115,124,147,124,115,124,115,124,147,124,115,124,115,124,147,124,115,124,147, + 124,115,124,115,124,147,124,147,124,4,115,124,134,147,124,147,124,115,124,115, + 124,147,124,115,124,3,147,124,129,115,124,29,147,124,129,147,132,4,147,124, + 130,147,132,147,132,8,147,124,154,179,132,147,124,179,132,147,124,147,132,147, + 132,147,124,179,124,147,124,147,132,179,132,147,132,147,124,147,124,115,124,82, + 108,241,99,209,91,144,83,173,50,41,9,135,0,168,0,168,0,200,8,200, + 8,7,200,0,3,168,0,147,134,0,133,8,133,8,100,8,133,8,166,8, + 166,0,133,8,100,8,100,8,132,8,100,8,166,8,173,74,146,148,52,173, + 52,181,52,181,53,181,5,84,181,132,53,181,84,181,53,181,85,181,3,84, + 181,3,52,181,140,85,189,84,189,117,189,85,181,84,181,85,189,117,189,85, + 189,84,189,84,189,84,181,84,189,8,117,189,137,117,197,149,197,149,197,85, + 189,117,189,149,197,182,197,149,197,149,197,3,182,205,134,150,197,19,165,146, + 148,81,140,114,140,113,148,3,146,148,138,113,148,81,140,113,140,81,140,16, + 132,49,140,114,148,146,148,146,148,114,148,5,146,148,129,178,156,7,211,156, + 129,178,156,3,146,148,140,114,148,146,148,146,156,146,148,146,156,178,148,178, + 156,211,156,114,148,114,148,179,156,211,156,3,178,156,131,179,156,145,148,48, + 132,6,178,156,131,210,156,114,148,17,140,6,178,156,4,146,156,137,114,148, + 81,148,178,156,178,156,146,148,81,148,80,140,240,123,207,115,6,240,123,130, + 16,132,81,140,3,146,156,134,178,156,81,148,48,140,146,156,146,156,114,148, + 249,2,135,203,90,235,90,235,90,203,82,235,90,235,90,236,90,7,235,90, + 137,236,90,236,90,235,90,235,90,236,90,235,90,236,90,236,90,12,91,8, + 236,90,4,12,91,132,236,90,236,90,12,91,236,90,19,12,91,129,12,99, + 6,12,91,129,236,90,3,12,91,129,236,90,14,12,91,138,236,90,12,91, + 12,91,236,90,12,91,12,91,236,90,12,91,236,90,236,82,4,236,90,137, + 12,91,236,90,236,90,236,82,236,82,236,90,236,90,203,82,236,82,5,204, + 82,145,203,82,204,82,204,82,203,82,204,82,203,82,171,74,171,74,204,82, + 236,90,45,91,78,99,143,107,143,107,175,107,176,107,176,107,5,208,107,129, + 209,107,3,240,107,134,208,107,209,107,208,107,208,107,241,115,49,124,4,81, + 132,149,81,124,49,124,81,124,49,124,49,124,17,116,16,116,49,116,114,132, + 82,132,16,116,208,115,207,115,207,115,143,107,143,99,208,107,17,108,18,116, + 50,116,49,116,3,50,116,130,82,116,50,116,3,82,116,129,50,116,4,82, + 116,4,82,124,135,82,116,82,124,82,124,82,116,114,124,114,124,83,116,4, + 114,124,129,83,124,8,115,124,129,114,124,10,115,124,142,147,124,147,124,115, + 124,147,124,115,124,147,124,147,124,115,124,147,124,115,124,147,124,115,124,147, + 124,115,124,5,147,124,134,115,124,147,124,147,124,115,124,147,124,147,124,5, + 115,124,129,147,124,4,115,124,133,147,124,115,124,147,124,147,124,115,124,3, + 147,124,145,115,124,147,124,147,124,115,124,147,124,147,124,115,124,147,124,147, + 124,115,124,115,124,147,124,115,124,115,124,147,124,115,124,115,124,3,147,124, + 3,115,124,3,147,124,132,115,124,147,124,147,124,115,132,16,147,124,129,147, + 132,22,147,124,129,147,132,3,147,124,132,147,132,147,132,147,124,147,132,7, + 147,124,132,179,132,147,124,179,132,179,124,3,179,132,146,147,124,147,124,115, + 124,82,116,18,100,209,91,144,83,173,50,40,9,135,0,167,0,167,0,168, + 0,200,8,199,8,168,0,168,0,200,0,6,167,0,147,134,0,133,8,132, + 8,100,8,133,8,134,0,166,8,133,8,100,8,100,8,132,8,100,8,134, + 8,108,66,114,140,52,173,52,173,52,181,84,181,3,52,181,130,84,181,52, + 181,5,84,181,151,84,189,85,181,52,181,52,181,84,181,85,189,85,181,117, + 189,117,189,84,181,84,181,84,189,85,189,84,189,85,189,116,189,85,189,117, + 189,85,189,117,189,84,181,85,189,85,189,3,117,189,153,149,189,149,189,117, + 189,116,189,149,197,150,197,149,197,181,197,182,205,182,205,214,205,149,197,52, + 173,178,156,113,140,113,148,113,148,146,148,114,148,81,140,113,140,81,140,81, + 140,113,148,114,148,4,113,140,135,114,148,114,148,146,148,178,156,179,156,178, + 156,178,156,5,211,156,131,178,156,178,156,146,156,5,178,156,140,146,148,146, + 148,178,156,179,156,146,148,178,156,114,148,82,148,179,156,178,156,211,156,211, + 156,3,178,156,139,15,132,113,148,211,156,178,156,178,156,179,156,178,156,178, + 156,146,156,241,139,146,148,7,178,156,133,146,156,178,156,146,156,81,148,146, + 148,3,146,156,133,178,156,114,148,113,148,113,148,81,148,3,113,148,132,146, + 156,178,156,178,156,146,156,3,114,148,133,81,148,240,131,49,132,81,140,81, + 140,166,2,132,235,90,203,90,235,90,236,90,4,235,90,129,236,90,4,235, + 90,4,236,90,129,235,90,4,236,90,129,12,91,3,236,90,134,12,91,236, + 90,12,91,12,91,236,90,236,90,55,12,91,129,236,90,3,12,91,4,236, + 90,129,236,82,6,236,90,130,236,82,236,90,3,236,82,132,204,82,236,82, + 204,82,204,82,3,236,82,141,203,82,204,82,204,82,171,82,139,74,171,82, + 236,90,236,90,45,99,142,99,175,107,143,107,176,107,6,208,107,141,240,107, + 240,107,209,107,241,107,240,107,208,107,208,107,176,99,208,99,17,116,81,132, + 81,132,113,132,3,81,132,129,81,124,3,49,124,146,17,116,17,116,49,116, + 114,132,82,132,17,116,207,115,240,115,175,115,143,107,143,99,208,107,241,107, + 18,116,50,116,82,116,50,116,50,116,9,82,116,129,114,116,3,82,116,135, + 114,124,82,116,82,116,114,124,82,124,114,124,82,124,3,114,124,3,115,124, + 130,114,124,115,116,12,115,124,133,147,124,115,124,147,124,147,124,115,124,5, + 147,124,129,115,124,3,147,124,129,115,124,4,147,124,132,115,124,115,124,147, + 124,147,124,4,115,124,129,147,124,3,115,124,129,147,124,4,115,124,131,147, + 124,147,124,115,124,5,147,124,133,115,124,147,124,147,124,115,124,115,124,5, + 147,124,129,115,124,3,147,124,129,115,124,3,147,124,3,115,124,132,147,124, + 115,124,147,124,115,124,22,147,124,129,115,124,5,147,124,130,147,132,147,132, + 18,147,124,129,147,132,5,147,124,132,147,132,147,124,147,124,147,132,5,147, + 124,3,147,132,130,179,132,179,132,4,147,132,136,147,124,115,124,82,108,18, + 100,209,91,144,83,206,58,73,9,3,167,0,156,168,0,168,0,167,8,200, + 0,167,0,167,8,166,8,166,0,166,8,166,8,167,0,166,0,133,0,133, + 8,132,8,100,8,133,8,134,8,166,8,133,8,100,8,99,8,132,8,100, + 8,133,8,75,58,81,140,52,173,4,52,181,133,84,181,52,181,84,181,52, + 181,52,181,6,84,181,135,52,181,52,181,84,181,85,181,85,181,84,189,84, + 189,3,84,181,139,85,189,85,189,117,189,117,189,85,189,117,189,84,189,117, + 189,85,189,117,189,84,189,3,117,189,133,149,197,149,197,117,189,117,189,149, + 189,5,149,197,139,182,205,214,205,84,181,211,156,114,148,113,148,113,148,146, + 148,146,148,81,140,114,148,3,113,148,129,146,148,3,114,148,130,146,148,146, + 148,3,178,156,6,211,156,156,178,156,179,156,146,148,146,156,178,156,178,156, + 146,156,179,156,178,156,178,156,146,148,146,148,178,156,211,156,179,156,114,148, + 114,148,50,148,178,156,211,156,178,156,179,156,178,156,178,156,210,156,48,140, + 81,140,211,156,5,178,156,131,179,156,17,148,82,148,7,178,156,135,146,156, + 178,156,178,156,81,148,113,148,178,156,146,148,3,146,156,130,146,148,146,148, + 7,114,148,3,81,140,134,49,132,49,132,207,123,16,132,81,140,81,140,209, + 2,129,203,90,4,235,90,129,203,90,6,235,90,152,236,90,235,90,235,90, + 236,90,235,90,12,91,235,90,236,90,236,90,12,91,236,90,236,90,12,91, + 236,90,236,90,12,91,12,91,236,90,12,91,12,91,236,90,12,91,12,91, + 236,90,48,12,91,133,236,90,12,91,236,90,12,91,12,91,3,236,90,135, + 12,91,236,90,236,90,12,91,236,90,236,90,236,82,5,236,90,148,236,82, + 236,90,236,82,236,90,236,82,236,82,204,82,236,82,204,82,236,82,203,82, + 204,82,204,82,171,82,139,74,171,82,236,90,13,91,78,99,143,107,3,175, + 107,3,208,107,3,240,107,144,240,115,240,115,240,107,241,107,208,107,208,107, + 176,99,176,99,208,99,48,124,81,132,81,132,114,132,81,132,113,132,113,132, + 4,81,124,148,49,124,17,116,49,116,114,132,82,132,16,124,208,115,240,123, + 175,115,143,107,143,99,208,107,17,116,17,116,50,116,82,116,50,116,50,116, + 82,116,82,116,3,82,124,4,82,116,135,114,124,82,124,82,116,114,124,82, + 116,114,124,114,116,4,114,124,131,115,124,114,124,114,124,3,115,124,129,114, + 124,7,115,124,133,147,124,115,124,115,124,147,124,115,124,5,147,124,132,115, + 124,147,124,147,124,115,124,3,147,124,132,115,124,115,124,147,124,115,124,7, + 147,124,129,115,124,5,147,124,129,115,124,3,147,124,137,115,124,147,124,115, + 124,147,132,115,124,147,124,115,124,147,124,115,124,3,147,124,132,115,124,147, + 124,115,124,115,124,7,147,124,129,115,124,11,147,124,133,115,124,115,124,147, + 124,147,124,115,124,9,147,124,129,115,124,6,147,124,129,147,132,4,147,124, + 135,147,132,147,132,147,124,147,124,147,132,147,124,147,132,5,147,124,129,147, + 132,14,147,124,129,147,132,11,147,124,135,179,124,147,124,147,124,179,124,179, + 132,147,132,179,132,4,147,124,157,82,116,18,100,209,91,176,83,238,58,105, + 9,135,0,199,0,199,0,200,8,200,8,167,0,167,0,166,0,166,8,134, + 0,134,0,134,8,134,8,166,0,134,0,133,8,101,0,132,8,100,8,133, + 8,133,8,165,8,133,8,4,100,8,132,101,0,11,58,49,132,52,173,4, + 52,181,129,84,181,6,52,181,131,84,181,84,181,52,181,4,84,181,133,84, + 189,84,181,84,181,84,189,84,189,3,84,181,129,116,189,3,117,189,131,85, + 189,85,189,84,189,3,117,189,136,116,189,116,189,117,197,149,197,117,197,117, + 189,149,197,117,189,5,149,197,137,182,197,214,205,117,189,243,156,114,148,113, + 140,113,148,146,148,178,148,5,146,148,129,178,148,4,178,156,9,211,156,165, + 178,156,146,156,179,156,178,156,178,156,146,148,178,156,146,156,178,156,146,156, + 146,148,178,156,146,156,146,148,146,148,178,156,82,148,50,148,50,148,146,148, + 211,156,178,156,211,156,210,156,178,156,211,156,81,140,81,140,211,156,211,156, + 178,156,211,156,178,156,178,156,210,156,82,148,82,148,8,178,156,133,146,156, + 178,156,113,148,113,148,178,156,3,146,156,130,178,156,114,148,3,81,140,129, + 113,140,6,81,140,135,113,140,81,140,49,140,240,131,16,132,114,140,146,148, + 188,2,138,203,90,235,90,203,90,203,90,235,90,235,90,236,90,235,90,235, + 90,236,90,4,235,90,3,236,90,129,235,90,4,236,90,136,12,91,236,90, + 236,90,12,91,12,91,236,90,12,91,236,90,7,12,91,129,236,90,10,12, + 91,129,236,90,12,12,91,129,12,99,23,12,91,129,236,90,3,12,91,131, + 236,90,12,91,12,91,3,236,90,136,236,82,236,90,236,90,12,91,236,90, + 236,90,236,82,236,90,4,236,82,146,236,90,236,82,204,82,236,82,235,82, + 204,82,203,82,236,82,204,82,236,82,171,74,171,74,171,82,236,90,45,99, + 78,99,143,107,176,107,3,208,107,168,208,115,208,107,240,107,241,107,241,115, + 241,115,241,107,241,107,240,107,240,107,208,107,208,99,175,99,240,107,49,124, + 114,132,81,132,113,132,114,132,113,132,81,132,81,132,114,132,81,124,81,124, + 81,116,17,116,49,116,114,132,82,132,17,124,240,115,207,115,175,107,143,107, + 175,99,208,107,17,116,50,116,50,116,3,82,124,154,82,116,82,124,114,124, + 82,116,82,116,114,116,82,116,114,124,82,116,82,124,114,124,114,124,114,116, + 114,124,114,124,114,116,115,124,114,124,114,124,115,124,115,124,114,116,115,116, + 114,116,115,124,147,124,5,115,124,133,147,124,147,124,115,124,147,124,115,124, + 23,147,124,129,115,124,24,147,124,130,115,124,147,132,7,147,124,129,115,124, + 5,147,124,131,115,124,147,124,115,124,3,147,124,129,115,124,21,147,124,129, + 147,132,5,147,124,129,147,132,21,147,124,129,179,132,3,147,124,129,147,132, + 6,147,124,162,179,124,147,124,147,132,147,124,147,124,179,124,147,124,179,132, + 147,132,179,124,147,132,179,132,147,124,147,132,147,124,147,124,115,116,82,116, + 18,100,209,91,177,83,238,58,106,17,135,0,200,8,168,0,167,0,167,0, + 166,0,134,0,133,8,165,0,165,8,133,8,4,165,8,144,133,8,132,0, + 132,8,100,8,100,8,133,8,166,8,165,8,100,8,99,8,132,8,132,8, + 101,8,202,49,17,124,52,173,4,52,181,136,84,181,52,181,85,181,52,181, + 52,173,52,181,52,181,84,189,6,84,181,138,85,189,85,189,84,181,84,181, + 84,189,85,189,85,181,84,181,52,181,84,189,3,117,189,130,84,189,84,181, + 3,117,189,134,84,181,84,189,117,189,149,189,149,189,117,189,6,149,197,149, + 181,197,182,197,182,205,117,189,243,164,114,148,113,148,113,148,146,148,178,148, + 146,148,178,148,178,148,146,148,146,148,178,156,178,156,178,148,179,148,178,156, + 179,156,8,211,156,135,146,148,146,148,211,156,211,156,178,156,146,148,146,148, + 5,178,156,129,211,156,3,178,156,132,114,148,114,148,82,148,114,148,3,211, + 156,134,179,156,178,156,211,164,113,148,48,132,178,156,4,211,156,132,210,156, + 211,156,146,156,50,140,3,178,156,129,146,156,7,178,156,139,81,140,146,156, + 178,156,178,156,146,156,178,156,113,148,81,140,81,140,81,132,81,140,3,114, + 140,130,146,148,146,148,3,114,140,133,82,140,240,123,111,107,143,107,78,99, + 69,2,129,203,90,6,235,90,135,236,90,235,90,236,90,235,90,235,90,236, + 90,235,90,8,236,90,136,12,91,236,90,12,91,236,90,12,91,236,90,12, + 91,236,90,44,12,91,129,236,90,15,12,91,135,236,90,12,91,12,91,236, + 90,236,90,12,91,12,91,9,236,90,130,236,82,236,90,5,236,82,158,204, + 82,236,82,236,82,203,82,171,74,171,74,171,82,12,91,45,91,110,99,175, + 107,175,107,208,107,208,107,240,107,241,115,241,107,241,115,240,107,241,115,17, + 116,17,116,241,107,241,107,240,107,240,107,208,99,208,99,17,116,81,124,7, + 114,132,145,81,132,49,124,48,116,49,124,49,116,49,116,114,124,114,132,17, + 124,240,115,207,115,175,107,143,99,208,107,240,107,17,108,50,116,3,82,124, + 136,82,116,82,124,114,124,114,124,82,124,114,124,114,124,82,116,4,114,124, + 136,115,124,114,124,114,124,114,116,115,124,115,124,114,124,114,124,6,115,124, + 130,147,124,115,124,3,147,124,132,115,124,147,124,115,124,115,124,98,147,124, + 129,147,132,4,147,124,129,147,132,11,147,124,129,147,132,6,147,124,129,179, + 132,3,147,124,129,147,132,7,147,124,135,147,132,147,124,179,132,147,124,179, + 132,147,132,147,132,5,179,132,144,147,124,147,124,115,124,82,116,18,108,241, + 91,176,83,238,58,106,17,167,0,200,8,167,0,167,0,166,0,134,0,133, + 8,5,165,8,3,166,8,151,133,8,133,8,132,8,132,8,132,0,133,8, + 166,8,165,8,100,8,99,8,132,8,100,8,132,8,201,49,240,123,52,173, + 52,181,52,181,52,173,52,181,52,181,84,181,84,181,4,52,181,6,84,181, + 136,84,189,84,181,85,189,84,181,84,181,52,181,84,189,84,181,3,52,181, + 134,85,189,117,189,85,189,85,189,84,189,85,189,3,117,189,133,84,189,117, + 189,149,197,117,189,149,189,3,149,197,142,150,197,182,197,150,197,182,197,150, + 197,182,197,117,189,243,164,146,148,114,148,113,148,145,148,146,148,114,148,6, + 146,148,133,178,148,146,148,146,148,178,148,179,156,7,211,156,136,114,148,146, + 156,211,164,179,156,146,156,178,156,146,148,146,148,8,178,156,132,147,156,179, + 156,82,148,82,148,7,211,156,131,48,132,146,148,211,156,5,178,156,131,146, + 148,49,140,114,148,3,146,148,129,113,148,6,178,156,130,81,140,146,148,3, + 178,156,147,210,156,178,156,146,148,146,140,146,140,114,140,114,140,49,132,240, + 115,143,107,45,99,204,74,74,66,233,49,167,41,37,25,196,16,131,16,98, + 8,156,2,4,235,90,135,236,90,235,90,236,90,235,90,236,90,236,90,235, + 90,3,236,90,135,235,90,235,90,236,90,12,91,236,90,236,90,12,91,4, + 236,90,131,12,91,236,90,235,90,36,12,91,129,44,91,9,12,91,129,12, + 99,12,12,91,137,236,90,236,90,12,91,236,90,12,91,236,90,12,91,236, + 90,12,91,6,236,90,159,236,82,236,90,236,90,236,82,236,90,236,90,236, + 82,236,90,236,90,236,82,204,82,236,82,204,90,236,82,236,82,171,74,171, + 74,203,82,13,91,78,99,142,99,175,107,208,107,240,107,240,107,241,107,241, + 107,241,115,241,115,17,108,17,108,3,17,116,134,241,107,241,107,208,107,208, + 107,208,99,49,116,8,114,132,145,49,124,207,115,207,107,17,116,49,116,49, + 116,114,124,114,132,17,124,240,115,207,115,175,107,143,107,208,107,241,115,17, + 116,50,116,5,82,124,129,114,116,4,114,124,129,114,116,4,114,124,129,147, + 124,12,115,124,132,147,124,115,124,147,124,115,124,5,147,124,129,115,124,8, + 147,124,131,115,124,147,124,115,124,5,147,124,129,115,124,52,147,124,129,147, + 132,10,147,124,129,179,132,10,147,124,129,147,132,5,147,124,129,147,132,5, + 147,124,130,147,132,147,132,3,147,124,129,147,132,6,147,124,129,147,132,4, + 147,124,129,179,132,5,147,124,141,179,132,147,124,147,124,147,132,147,124,147, + 124,179,132,147,124,147,124,179,132,147,132,179,132,179,132,3,147,132,147,179, + 132,179,124,179,124,179,132,147,132,147,124,147,124,82,116,50,108,209,91,177, + 83,239,66,138,17,135,0,167,8,167,8,134,8,166,8,133,8,3,165,8, + 4,166,8,130,198,8,166,8,3,133,8,147,132,8,100,0,133,8,166,8, + 165,8,132,8,99,8,100,8,132,8,132,8,169,41,240,123,52,173,52,173, + 84,181,20,173,52,181,19,173,84,181,6,52,181,3,84,181,138,52,181,52, + 181,84,181,85,181,84,181,84,181,52,181,52,181,84,181,84,181,3,52,181, + 135,85,189,117,189,84,189,85,189,85,181,85,189,84,189,4,117,189,7,149, + 197,145,182,197,149,197,182,197,182,197,149,197,117,189,243,164,146,148,114,148, + 113,148,146,148,146,148,113,140,114,148,146,148,114,148,114,148,3,146,148,134, + 178,148,146,148,146,156,146,148,146,156,178,156,5,211,156,140,114,148,146,148, + 211,156,211,156,178,148,146,148,146,156,146,148,146,148,114,148,146,148,146,148, + 3,114,148,136,179,156,179,156,178,156,82,148,82,148,211,164,211,156,211,156, + 4,178,156,130,48,140,113,148,3,178,156,3,146,148,165,114,148,81,148,114, + 148,113,148,114,148,146,156,81,148,178,156,211,156,210,156,211,164,211,164,243, + 164,178,156,243,164,20,165,20,165,211,156,178,156,48,140,174,115,77,99,171, + 82,41,66,167,49,69,33,228,24,163,16,130,8,98,8,98,8,97,8,97, + 8,98,16,98,16,130,16,130,16,180,2,133,235,90,235,90,236,90,203,90, + 235,90,3,236,90,4,235,90,149,236,90,236,90,235,90,236,90,12,91,236, + 90,236,90,12,91,236,90,236,90,12,91,236,90,236,90,12,91,236,90,12, + 91,12,91,236,90,12,91,12,91,236,90,16,12,91,129,12,99,44,12,91, + 144,236,90,236,82,12,91,236,90,236,82,236,90,236,82,236,82,236,90,235, + 82,236,82,236,82,236,90,236,82,236,90,236,90,3,236,82,144,203,82,236, + 82,236,82,171,82,171,74,171,82,203,90,45,91,110,99,143,99,207,107,208, + 107,240,107,240,107,17,116,241,115,8,17,116,133,241,107,240,107,208,99,240, + 107,49,124,4,114,132,129,146,132,3,114,132,147,240,115,110,99,142,99,16, + 116,49,116,17,116,114,124,114,132,49,124,240,115,207,115,175,107,176,107,241, + 107,17,108,49,116,49,116,82,124,82,124,3,114,124,131,114,116,114,124,114, + 124,5,115,124,129,114,124,4,115,124,142,147,124,147,124,115,124,147,124,147, + 124,115,124,147,124,147,116,115,124,147,124,115,124,147,124,115,124,115,124,4, + 147,124,129,115,124,11,147,124,129,147,132,25,147,124,130,147,132,147,132,21, + 147,124,132,147,132,147,124,147,124,147,132,3,147,124,129,147,132,3,147,124, + 129,148,132,4,147,124,130,147,132,147,132,12,147,124,129,147,132,17,147,124, + 131,147,132,147,124,147,132,4,147,124,136,147,132,147,124,179,124,147,132,147, + 124,179,124,147,124,179,132,4,147,124,129,179,124,3,147,132,137,147,124,179, + 124,179,132,147,124,179,132,147,124,179,124,147,132,147,132,4,179,132,147,147, + 124,179,124,179,132,179,132,147,124,147,124,114,116,18,108,209,91,177,83,239, + 66,138,17,135,0,167,8,166,0,166,8,165,8,166,8,133,8,5,166,8, + 3,199,8,144,166,8,133,8,132,8,132,8,100,8,133,8,134,8,165,8, + 132,8,99,8,100,8,132,8,100,8,104,33,207,123,20,173,5,52,181,129, + 84,181,3,52,181,129,84,181,5,52,181,135,52,173,52,173,52,181,52,181, + 84,181,84,181,52,181,4,84,181,136,52,181,52,181,84,189,84,189,85,189, + 84,181,84,189,84,181,5,117,189,161,117,197,149,189,149,197,149,197,117,189, + 117,189,149,197,182,197,181,197,149,197,181,197,182,205,149,197,52,173,178,148, + 146,148,113,148,114,148,146,148,114,148,114,148,146,148,146,148,114,148,114,148, + 146,148,178,148,178,156,178,156,211,156,179,156,178,156,178,156,4,211,156,150, + 243,164,179,156,114,148,179,156,179,156,146,156,114,148,146,148,146,148,178,156, + 146,156,178,156,211,156,179,156,146,156,178,156,178,156,210,156,178,156,114,148, + 49,140,146,148,3,178,156,129,146,148,3,114,148,129,113,148,3,146,148,133, + 146,156,113,148,81,148,81,140,81,148,3,113,148,150,178,156,146,156,114,148, + 179,156,178,148,81,140,16,132,174,115,12,99,138,74,41,66,134,49,37,33, + 195,16,130,8,65,8,33,8,33,8,65,8,65,16,97,16,98,16,10,130, + 16,101,2,4,235,90,132,236,90,236,90,235,90,236,90,3,235,90,134,12, + 91,236,90,235,90,235,90,12,91,12,91,3,236,90,4,12,91,3,236,90, + 6,12,91,129,12,99,5,12,91,129,12,99,5,12,91,130,12,99,12,99, + 4,12,91,129,44,99,38,12,91,134,12,83,12,91,236,90,236,90,12,91, + 12,91,3,236,90,129,236,82,3,236,90,13,236,82,140,171,74,171,74,171, + 82,236,90,45,91,110,99,175,107,208,107,208,107,240,107,241,115,241,115,3, + 17,116,129,49,116,6,17,116,132,240,107,208,99,17,108,82,124,8,114,132, + 141,49,124,207,107,240,107,49,124,49,124,16,116,114,124,146,132,81,132,240, + 115,207,107,144,107,208,107,3,17,116,130,49,116,82,116,5,114,124,132,115, + 124,114,124,115,124,115,116,4,115,124,132,147,124,147,124,115,124,115,124,4, + 147,124,129,115,124,5,147,124,134,115,124,147,124,115,124,115,124,147,124,115, + 124,12,147,124,129,147,132,48,147,124,129,179,124,6,147,124,3,147,132,130, + 147,124,179,124,15,147,124,129,147,132,3,147,124,129,147,132,7,147,124,132, + 147,132,147,124,147,124,147,132,11,147,124,135,147,132,179,132,147,124,179,124, + 147,124,147,132,179,132,3,147,124,130,179,132,179,132,5,147,124,146,147,132, + 147,124,147,124,179,124,179,132,147,124,179,132,147,124,179,124,147,124,179,132, + 147,124,179,132,179,124,147,132,147,124,179,132,147,132,3,147,124,135,82,116, + 50,100,241,91,177,83,15,67,138,17,167,0,7,166,8,152,133,0,133,8, + 132,8,133,8,199,0,200,0,200,8,167,0,134,0,133,8,132,8,133,8, + 165,8,134,8,165,8,132,8,99,8,100,8,100,8,100,0,72,33,143,115, + 20,173,52,173,4,52,181,131,84,181,52,181,84,181,3,52,181,137,19,173, + 19,173,52,181,52,181,52,173,52,181,19,173,52,173,52,181,9,84,181,133, + 84,189,84,189,84,181,84,181,85,189,7,117,189,130,117,197,149,197,3,117, + 189,136,150,197,181,197,181,197,182,197,182,205,182,197,85,181,178,148,4,114, + 148,130,113,140,113,148,3,114,148,132,146,148,146,148,178,156,179,156,4,211, + 156,132,178,148,179,156,178,156,179,156,3,211,156,3,179,156,132,146,156,146, + 148,179,156,179,156,4,211,156,131,211,164,211,156,178,156,4,146,148,131,82, + 148,114,148,146,156,3,146,148,130,113,148,81,148,3,113,148,152,146,148,146, + 156,211,156,178,156,113,148,81,148,81,140,16,132,239,131,110,115,45,99,203, + 90,41,66,8,58,166,49,37,33,228,24,163,16,130,16,97,8,65,8,65, + 8,97,8,98,16,5,130,16,129,130,24,12,130,16,200,2,7,235,90,131, + 236,90,235,90,235,90,3,236,90,131,235,90,236,90,12,91,7,236,90,130, + 12,91,236,90,4,12,91,129,236,90,13,12,91,129,13,91,19,12,91,129, + 12,99,26,12,91,129,236,90,3,12,91,3,236,90,137,12,91,236,90,236, + 82,236,90,236,82,236,90,236,90,236,82,236,90,10,236,82,138,171,74,171, + 74,171,82,236,90,78,99,143,107,175,107,208,107,240,107,240,107,4,17,116, + 144,49,116,17,116,17,116,49,116,17,116,49,116,17,108,17,108,240,107,240, + 99,17,116,114,132,114,132,146,132,146,140,146,132,4,114,132,156,81,132,49, + 124,81,124,49,124,49,116,17,116,81,124,114,132,82,132,240,123,175,107,175, + 99,240,115,17,116,17,116,49,116,50,116,82,124,114,124,114,124,115,124,114, + 124,114,124,115,124,115,124,147,124,115,116,147,124,3,115,124,136,147,124,147, + 124,115,124,147,124,115,124,147,124,147,124,115,124,3,147,124,3,115,124,134, + 147,124,147,124,115,124,147,124,147,124,115,124,34,147,124,129,179,124,6,147, + 124,129,179,124,7,147,124,136,179,124,147,124,147,124,179,124,147,132,147,124, + 147,124,179,132,7,147,124,144,147,132,147,124,147,124,179,124,147,124,147,132, + 147,124,179,132,147,132,147,124,147,124,147,132,147,132,147,124,147,124,179,132, + 4,147,124,136,147,132,147,124,147,132,147,124,179,132,147,124,147,124,179,124, + 4,147,124,130,147,132,147,132,5,147,124,133,147,132,147,124,179,124,147,132, + 147,132,4,147,124,160,179,132,147,124,147,132,179,132,179,124,147,124,179,132, + 147,124,179,132,147,124,147,132,147,124,147,132,179,132,147,124,179,132,147,132, + 147,124,147,124,179,124,147,132,147,132,147,124,179,132,147,132,147,124,179,132, + 147,124,179,124,179,132,179,124,147,132,7,179,132,137,147,124,147,124,115,116, + 18,108,241,91,177,83,15,67,170,17,135,0,3,166,8,155,199,8,199,8, + 166,0,133,8,132,8,99,8,131,8,132,8,166,8,200,0,200,0,199,8, + 166,8,133,0,132,8,132,8,133,8,165,8,165,8,132,8,99,8,100,8, + 132,8,100,0,39,25,142,107,20,173,11,52,181,130,20,173,20,173,4,52, + 181,131,19,173,52,173,20,173,5,84,181,129,85,181,3,84,181,135,84,189, + 84,189,52,181,84,181,85,189,117,189,117,189,3,85,189,3,117,189,129,149, + 197,3,117,189,161,149,197,181,197,150,197,182,197,182,197,182,205,117,189,178, + 156,146,148,114,148,114,148,113,148,49,140,49,140,113,140,81,140,81,140,113, + 148,178,148,179,156,211,156,179,156,179,156,178,156,211,156,146,148,146,148,178, + 148,179,156,178,156,211,156,243,164,243,164,6,211,156,129,179,156,3,211,156, + 133,243,164,211,156,178,148,146,148,146,148,3,113,148,155,114,148,146,148,146, + 148,178,156,243,164,178,156,146,156,178,156,146,140,113,140,49,140,16,132,174, + 115,45,99,138,82,232,65,134,49,69,33,228,32,163,24,162,16,130,16,98, + 16,98,16,97,8,98,16,98,16,4,130,16,130,162,16,162,16,10,130,16, + 129,162,24,8,130,16,21,3,143,235,90,235,90,236,90,235,90,236,90,236, + 90,235,90,235,90,236,90,12,91,235,90,235,90,12,91,236,90,235,90,3, + 12,91,134,236,90,12,91,12,91,236,90,12,91,236,90,10,12,91,131,12, + 99,12,91,12,99,4,12,91,133,12,99,12,99,12,91,12,91,236,90,3, + 12,91,133,12,99,12,99,12,91,12,91,12,99,3,12,91,129,13,91,5, + 12,91,129,44,91,3,12,91,132,12,99,12,91,12,91,44,91,3,12,91, + 129,45,91,18,12,91,138,236,90,12,91,236,90,12,91,236,90,236,90,12, + 91,12,91,236,90,236,90,3,236,82,3,236,90,129,236,82,3,236,90,143, + 236,82,236,82,203,82,171,82,171,82,203,82,12,91,78,99,175,107,208,107, + 240,107,240,107,241,115,17,116,17,116,3,49,116,129,18,116,3,49,116,140, + 50,116,49,116,17,116,240,107,241,107,49,116,114,132,114,132,49,132,240,115, + 49,124,81,132,5,114,132,148,81,124,81,124,49,116,16,116,81,124,114,132, + 114,132,240,115,175,107,175,107,241,107,50,116,50,116,49,116,50,116,82,116, + 114,124,115,124,115,124,114,124,3,115,124,5,147,124,135,115,124,147,124,115, + 124,115,124,147,124,147,124,115,124,7,147,124,129,115,124,7,147,124,129,115, + 124,15,147,124,129,179,124,11,147,124,129,179,124,3,147,124,129,179,124,6, + 147,124,140,179,124,179,124,147,124,147,132,179,124,147,124,179,124,147,124,179, + 124,179,124,147,124,179,124,3,147,124,129,179,124,4,147,124,136,179,124,147, + 124,147,124,179,132,147,132,148,124,179,124,148,132,3,179,124,138,147,132,147, + 124,179,124,179,124,147,124,179,124,179,124,147,132,147,132,179,124,12,147,124, + 175,179,124,147,132,147,132,147,124,147,132,147,124,147,124,179,132,179,132,147, + 124,147,132,179,132,147,132,147,124,179,124,147,124,179,132,147,124,179,132,147, + 124,147,124,179,124,179,124,147,124,179,124,179,132,179,124,147,132,179,132,179, + 124,147,132,147,132,179,124,147,124,179,132,147,132,179,132,179,132,147,132,147, + 124,147,132,147,132,179,124,147,124,147,124,147,132,147,132,6,179,132,129,147, + 124,4,179,132,167,147,124,147,116,114,116,50,108,241,91,177,83,15,67,170, + 17,167,0,199,8,166,8,199,8,199,8,198,8,133,8,132,8,131,8,131, + 16,131,8,131,8,132,8,199,8,200,0,167,8,134,8,133,8,133,8,101, + 8,133,8,166,8,165,8,132,8,99,8,132,8,100,8,100,8,7,25,110, + 107,19,173,5,52,181,129,52,173,6,52,181,138,52,173,52,181,52,181,84, + 181,52,181,20,173,19,173,52,181,84,181,52,181,4,84,181,130,84,189,84, + 189,6,84,181,131,117,189,117,189,84,189,3,117,189,153,117,197,117,189,149, + 197,149,197,117,197,117,189,149,197,150,197,149,197,150,197,182,197,182,197,117, + 189,211,156,146,148,114,148,146,148,146,148,113,140,81,140,113,148,114,148,113, + 148,114,148,178,148,3,178,156,4,211,156,136,179,156,179,156,211,156,211,164, + 211,164,211,156,211,156,179,156,3,178,156,136,178,148,178,156,146,148,178,156, + 211,156,211,156,243,164,244,164,3,178,156,143,114,148,146,148,146,148,113,148, + 81,148,16,132,207,123,109,115,12,99,73,74,231,57,134,41,37,33,195,24, + 130,8,4,65,8,130,97,8,98,16,5,130,16,134,162,16,130,16,130,16, + 130,24,130,16,162,16,5,130,16,129,130,24,17,130,16,213,2,4,235,90, + 135,236,90,235,90,236,90,235,90,236,90,236,90,235,90,5,236,90,133,12, + 91,12,91,236,90,12,91,236,90,3,12,91,129,236,90,16,12,91,129,12, + 99,7,12,91,129,44,91,5,12,91,129,12,99,6,12,91,129,12,99,17, + 12,91,129,12,99,16,12,91,130,236,82,236,82,4,236,90,132,236,82,236, + 82,236,90,236,90,3,236,82,130,236,90,236,90,3,236,82,137,203,82,171, + 74,171,82,236,90,13,91,110,99,175,107,208,107,240,107,4,17,116,147,49, + 116,49,116,50,116,50,116,49,116,49,116,50,116,50,116,49,116,17,108,241, + 107,17,108,82,116,114,132,16,124,109,99,236,82,207,107,49,124,3,114,132, + 129,81,132,3,81,124,142,49,116,240,115,49,116,114,132,114,132,16,116,175, + 107,176,99,17,116,50,116,50,116,49,116,50,116,82,124,3,114,124,3,115, + 124,132,147,124,115,124,147,124,115,124,4,147,124,130,115,124,115,124,10,147, + 124,132,115,124,147,124,147,124,115,124,14,147,124,129,115,124,17,147,124,129, + 179,124,10,147,124,135,179,124,179,124,147,124,147,124,179,124,147,124,179,124, + 7,147,124,148,179,124,147,124,179,124,147,124,179,124,147,124,179,124,179,132, + 179,132,179,124,147,132,147,132,179,132,179,132,147,124,179,124,147,124,148,132, + 147,124,147,132,3,147,124,136,179,124,147,124,147,124,147,132,147,124,147,132, + 147,124,179,124,3,147,124,138,179,124,147,124,147,124,179,132,147,132,179,124, + 147,132,147,132,147,124,147,132,3,147,124,144,147,132,147,124,147,132,179,132, + 147,132,179,132,147,124,179,132,147,132,147,124,147,124,147,132,147,132,147,124, + 179,132,147,124,3,179,132,150,212,132,147,132,179,132,179,132,147,132,179,132, + 147,132,147,132,179,132,179,124,179,132,147,124,179,124,179,124,147,124,179,132, + 179,124,147,124,179,132,179,132,147,132,179,124,5,179,132,158,147,132,179,132, + 179,132,180,132,147,132,147,124,114,116,50,108,241,91,177,83,47,67,202,17, + 167,0,200,8,199,8,167,8,198,8,165,8,132,8,131,8,131,8,131,16, + 131,16,99,8,132,8,198,8,198,8,166,8,134,8,165,8,3,133,8,138, + 166,8,165,8,132,8,99,8,131,8,132,8,100,8,230,16,13,99,243,172, + 4,52,181,131,20,173,19,173,20,173,8,52,181,135,84,181,52,181,52,173, + 20,181,52,181,84,181,52,181,3,84,181,129,52,181,3,84,181,129,85,181, + 3,84,181,133,84,189,85,189,117,189,117,189,85,189,3,117,189,144,117,197, + 149,189,149,197,149,197,117,197,117,189,149,197,181,197,182,197,149,197,182,205, + 149,197,243,164,146,148,146,148,114,148,6,146,148,131,178,148,146,148,146,148, + 3,178,156,4,211,156,129,211,164,3,243,164,158,211,164,243,164,178,156,146, + 148,146,148,178,156,210,156,211,164,211,164,211,156,211,156,178,156,146,148,113, + 148,16,132,175,123,174,115,236,98,138,82,73,74,231,57,134,49,69,41,228, + 24,163,16,130,16,130,16,97,16,98,16,98,16,3,130,16,132,162,16,162, + 24,130,16,162,16,7,130,16,129,162,16,4,130,16,129,162,16,22,130,16, + 0,3,131,235,90,236,90,235,90,5,236,90,133,235,90,236,90,236,90,235, + 90,12,91,4,236,90,3,12,91,132,236,90,236,90,12,91,236,90,18,12, + 91,131,12,99,12,91,12,99,12,12,91,129,44,91,3,12,91,129,44,91, + 5,12,91,131,44,91,12,91,45,91,24,12,91,140,236,90,12,91,236,90, + 12,91,236,82,236,90,236,90,236,82,236,90,236,82,236,90,235,90,3,236, + 82,145,236,90,236,82,12,83,236,82,12,83,236,82,203,82,171,74,171,82, + 236,90,45,91,143,99,208,107,208,107,17,108,17,116,17,116,4,49,116,132, + 50,116,49,116,82,116,50,116,3,49,116,171,17,116,17,108,17,108,81,124, + 114,140,240,115,109,91,45,83,207,107,114,132,114,132,146,132,81,124,239,115, + 16,116,49,124,81,124,49,116,240,107,16,116,114,132,114,132,16,116,175,107, + 208,107,49,116,82,116,82,116,49,116,50,116,82,124,114,124,147,124,115,124, + 115,124,147,124,115,124,147,124,147,124,115,124,147,124,147,124,115,124,8,147, + 124,129,115,124,14,147,124,132,115,124,147,124,147,124,115,124,3,147,124,129, + 115,124,22,147,124,129,180,132,3,147,124,141,179,124,179,124,147,124,147,124, + 179,124,147,124,147,124,179,124,147,124,147,124,179,124,147,124,180,124,5,147, + 124,145,179,124,147,124,179,124,147,124,179,124,147,124,179,124,148,132,179,124, + 147,132,179,124,179,132,147,132,147,132,180,124,147,124,147,132,3,147,124,157, + 179,124,179,124,147,124,180,124,147,132,147,124,147,124,147,132,147,124,147,124, + 179,124,147,132,179,132,147,124,179,124,147,132,179,124,147,124,179,132,147,124, + 147,124,147,132,147,132,147,124,179,132,147,124,147,124,179,124,147,132,3,147, + 124,3,179,124,165,147,132,147,124,147,124,148,132,147,124,147,124,179,132,147, + 124,179,132,179,132,114,132,207,107,212,132,179,132,147,132,179,132,179,132,147, + 132,147,132,179,132,147,124,179,132,147,124,147,124,179,124,179,132,147,132,179, + 124,179,132,179,124,179,132,179,132,179,124,179,124,147,132,179,132,147,132,5, + 179,132,142,147,124,147,116,114,116,50,108,241,91,177,91,47,67,203,25,168, + 0,200,0,199,8,166,8,165,16,164,16,3,131,8,3,131,16,130,164,8, + 165,8,3,166,8,149,197,16,164,16,132,8,133,8,134,8,166,8,132,8, + 99,8,132,8,132,8,100,0,198,16,204,90,243,164,20,173,20,173,52,181, + 52,181,52,173,19,173,20,181,14,52,181,136,84,181,52,181,84,181,84,181, + 52,181,84,181,84,181,84,189,3,84,181,143,85,189,116,189,84,189,117,189, + 117,189,85,189,85,189,117,189,117,197,149,197,149,189,149,189,149,197,117,197, + 117,189,4,149,197,136,181,197,149,197,244,164,146,148,114,148,114,148,146,148, + 178,156,4,146,148,136,178,148,146,148,146,148,178,156,178,156,179,156,211,156, + 211,156,4,243,164,148,20,165,20,165,52,173,52,173,20,165,211,156,178,156, + 178,156,114,148,49,140,240,131,109,107,235,90,138,82,232,57,134,49,37,33, + 228,24,195,24,162,16,3,130,16,129,98,16,6,130,16,130,162,16,130,16, + 3,162,16,132,130,24,162,24,162,16,162,16,4,130,16,129,162,24,6,130, + 16,133,162,16,162,24,162,16,130,16,162,24,13,130,16,134,162,24,163,24, + 163,24,195,24,195,32,227,32,66,3,132,236,90,235,90,235,90,236,90,3, + 235,90,3,236,90,136,12,91,12,91,236,90,12,91,12,91,236,90,12,91, + 236,90,25,12,91,129,44,99,3,12,91,132,13,99,12,91,12,91,45,99, + 5,12,91,129,45,91,5,12,91,134,44,91,12,99,44,91,44,91,44,99, + 12,99,3,12,91,132,44,91,12,91,13,91,45,91,3,12,91,129,12,99, + 13,12,91,138,12,83,12,91,12,91,236,82,12,91,236,90,12,91,236,82, + 236,90,236,90,3,236,82,148,236,90,236,90,236,82,236,90,236,82,236,90, + 236,82,236,90,236,90,236,82,203,82,171,74,203,82,12,91,45,99,143,107, + 208,115,240,107,17,116,17,116,3,49,116,3,50,116,132,82,116,82,124,82, + 116,82,116,3,49,116,160,17,108,49,116,114,132,114,140,81,132,16,124,16, + 124,81,132,81,132,48,132,48,124,174,115,109,99,207,107,16,124,49,124,17, + 116,240,107,240,115,114,124,146,132,16,124,175,107,240,107,82,116,82,116,50, + 116,50,116,82,116,82,124,114,124,146,124,3,115,124,4,147,124,130,115,124, + 115,124,10,147,124,129,115,124,17,147,124,129,115,116,8,147,124,129,147,132, + 4,147,124,129,179,132,3,147,124,132,179,124,147,124,147,124,179,124,3,147, + 124,133,179,124,147,124,147,124,179,124,179,124,4,147,124,138,179,124,147,124, + 147,124,179,124,147,124,179,132,147,124,180,124,147,124,179,124,3,147,124,133, + 179,124,148,132,179,124,147,124,147,124,3,179,132,154,147,124,179,124,179,132, + 179,132,148,132,147,124,147,124,147,132,179,132,147,124,179,124,179,132,147,132, + 179,132,147,124,179,132,147,124,179,124,147,132,147,124,147,132,179,124,179,124, + 147,124,179,124,147,132,3,179,124,3,147,124,131,179,132,147,124,179,124,3, + 147,132,140,147,124,179,124,147,124,179,124,179,132,179,124,147,124,179,124,147, + 124,147,124,179,124,147,132,3,179,132,144,147,132,179,132,147,132,180,132,114, + 124,77,107,77,107,179,132,179,124,179,132,179,132,147,124,147,132,179,132,179, + 132,147,124,3,179,132,137,147,132,147,124,179,132,147,132,147,132,179,124,179, + 132,147,124,179,124,4,179,132,178,147,124,179,124,179,132,179,132,147,132,147, + 124,147,124,82,116,50,108,241,99,177,83,79,75,235,25,167,0,200,8,198, + 8,165,16,164,8,164,16,131,8,131,16,131,16,132,8,131,16,164,16,164, + 16,133,8,133,8,134,8,166,8,197,24,196,24,132,8,133,8,166,8,165, + 8,133,8,100,8,100,8,132,8,100,8,166,8,139,82,211,164,20,173,20, + 173,20,181,52,181,20,173,52,173,4,52,181,134,19,173,52,181,52,181,19, + 173,20,173,19,181,6,52,181,151,84,181,52,181,52,173,52,181,52,181,84, + 181,84,189,85,189,84,189,84,181,84,189,84,189,85,189,84,189,117,189,117, + 189,84,189,84,189,117,189,117,189,149,197,117,189,117,197,3,149,197,135,150, + 197,149,197,149,197,182,197,182,197,20,165,178,148,3,146,148,133,179,156,178, + 148,178,148,146,148,178,148,3,178,156,3,243,164,129,244,164,3,243,164,141, + 211,156,178,156,113,148,48,140,207,123,109,107,203,90,40,66,199,57,101,41, + 36,33,195,16,130,16,3,65,8,131,97,8,97,16,98,16,6,130,16,152, + 131,24,162,16,162,16,130,24,162,16,162,16,130,16,162,16,162,24,162,16, + 162,16,130,16,162,24,162,24,130,16,162,16,130,16,162,16,162,24,162,16, + 130,16,162,16,130,24,162,24,12,130,16,143,162,24,162,24,163,24,195,24, + 195,32,195,32,227,32,227,32,228,32,228,32,227,32,195,32,195,24,195,24, + 162,16,29,3,129,235,90,3,236,90,136,235,90,12,91,235,90,235,90,12, + 91,236,90,12,91,236,90,3,12,91,131,236,90,12,91,12,91,3,236,90, + 20,12,91,131,12,99,12,91,12,99,3,12,91,132,12,99,12,91,12,91, + 12,99,7,12,91,129,13,91,4,12,91,131,44,91,12,91,44,91,9,12, + 91,129,44,99,19,12,91,134,236,90,12,91,236,90,236,90,12,91,236,90, + 3,236,82,3,236,90,131,236,82,236,90,236,82,4,236,90,139,236,82,171, + 82,171,82,203,82,12,91,77,99,175,107,240,107,241,107,17,116,17,116,3, + 49,116,130,82,116,50,116,3,82,116,129,82,124,3,82,116,155,49,116,17, + 108,49,116,48,124,16,124,207,123,175,115,109,107,77,99,12,91,235,82,12, + 91,203,82,109,99,207,115,49,124,49,124,17,116,208,107,208,107,82,124,146, + 140,49,124,208,115,17,116,82,124,114,124,3,82,116,129,114,124,4,115,124, + 5,147,124,129,115,124,28,147,124,129,147,116,11,147,124,129,147,132,4,147, + 124,131,179,124,147,124,147,132,3,147,124,129,179,124,3,147,124,150,179,124, + 147,124,147,124,179,124,179,124,147,124,179,124,147,132,179,124,147,124,147,124, + 179,124,179,124,179,132,147,124,179,124,147,124,179,132,179,124,147,124,179,124, + 147,124,3,179,124,214,147,132,179,124,147,124,179,124,147,124,147,132,179,132, + 147,132,179,132,147,132,179,124,179,132,179,132,179,124,179,132,147,132,147,132, + 180,124,179,132,179,132,147,124,147,124,179,132,147,124,179,132,147,124,179,124, + 147,124,147,124,179,124,147,124,179,132,179,124,147,132,147,124,147,132,147,124, + 147,124,179,132,179,132,147,124,179,124,147,132,179,124,179,124,147,124,179,132, + 147,124,179,132,147,124,179,132,147,132,147,124,147,132,179,132,179,132,147,132, + 147,132,179,132,147,124,180,132,114,124,78,99,45,107,81,124,180,132,179,132, + 179,132,147,124,179,132,179,132,147,124,147,124,179,132,147,132,147,124,179,132, + 179,132,147,132,179,132,147,124,147,132,179,132,147,132,179,124,179,124,8,179, + 132,139,147,132,147,124,114,116,50,108,241,91,177,83,79,75,235,25,135,0, + 199,8,198,8,3,164,16,146,163,16,131,16,98,8,66,8,34,8,34,0, + 35,0,100,0,166,16,105,33,231,24,197,16,165,16,132,8,133,8,166,8, + 165,8,133,8,3,100,8,138,132,8,133,8,139,82,178,164,20,181,20,173, + 20,181,52,181,20,173,20,173,4,52,181,134,20,181,52,173,52,181,19,173, + 243,172,19,173,10,52,181,148,84,181,84,181,84,189,85,189,84,189,84,181, + 84,189,84,181,84,181,84,189,117,189,117,189,85,189,85,189,117,189,117,197, + 117,189,149,197,149,189,149,189,5,149,197,132,182,197,182,205,52,173,178,148, + 3,146,148,3,211,156,151,243,156,243,156,243,164,211,156,211,156,178,156,113, + 148,48,140,239,131,142,115,12,99,170,82,73,74,199,57,134,49,69,41,227, + 24,163,16,130,16,98,8,98,16,98,8,98,16,3,130,16,133,162,16,162, + 16,130,16,162,16,130,16,3,162,16,130,130,24,162,16,3,130,16,129,162, + 24,3,162,16,129,130,16,4,162,16,129,130,24,3,162,24,137,163,16,162, + 16,130,16,162,24,130,16,162,16,130,16,130,16,162,16,3,130,16,134,162, + 16,162,24,162,16,163,24,195,24,195,24,6,227,32,140,195,24,195,24,163, + 24,162,16,130,16,98,16,65,8,65,8,33,8,33,8,32,8,0,8,66, + 3,133,203,90,235,90,236,90,235,90,235,90,4,236,90,138,235,90,236,90, + 236,90,12,91,236,90,12,91,236,90,236,90,12,91,236,90,5,12,91,129, + 236,90,15,12,91,137,44,99,12,91,12,91,12,99,12,91,44,99,12,91, + 12,91,44,99,13,12,91,140,44,91,12,91,44,91,45,91,12,91,12,91, + 12,99,12,91,12,91,12,99,12,91,44,91,5,12,91,129,44,91,15,12, + 91,132,236,90,12,91,236,90,236,90,4,236,82,4,236,90,148,236,82,236, + 90,236,90,236,82,12,83,236,82,12,91,236,82,171,82,171,74,236,90,13, + 91,110,99,208,107,240,107,17,108,17,116,49,116,49,116,81,116,3,82,116, + 162,82,124,114,124,82,116,82,124,82,116,82,116,240,107,175,99,77,91,45, + 91,12,91,203,82,73,66,8,50,166,41,69,33,4,25,195,16,36,25,40, + 58,110,107,49,124,114,132,81,124,17,116,240,107,175,107,49,124,146,140,49, + 132,240,115,17,116,114,124,114,124,3,82,116,129,82,124,3,115,124,33,147, + 124,129,147,132,7,147,124,132,179,124,147,124,147,124,179,132,4,147,124,148, + 179,124,147,124,147,124,179,124,147,124,179,124,179,132,147,124,147,124,179,124, + 147,124,147,132,147,124,179,124,147,124,179,124,147,124,179,124,179,124,180,124, + 3,147,124,161,179,132,147,124,147,124,179,132,147,124,179,124,147,124,179,132, + 147,124,179,124,147,124,179,124,147,124,179,124,147,132,179,132,179,132,147,124, + 179,132,179,124,179,132,179,132,147,124,180,132,147,132,179,124,147,132,180,132, + 179,124,147,132,179,132,179,132,147,132,3,179,132,143,147,132,147,124,147,132, + 179,132,147,124,179,132,147,132,180,132,179,124,147,124,147,124,147,132,179,132, + 147,132,147,132,3,147,124,132,179,132,147,132,147,124,179,124,3,147,124,155, + 179,132,147,124,147,132,147,124,147,124,179,124,179,132,147,124,147,132,180,124, + 179,124,147,132,179,132,179,124,179,132,114,124,142,107,12,99,175,107,212,132, + 147,132,179,132,179,124,147,132,179,132,147,132,179,124,6,179,132,136,179,124, + 179,124,179,132,147,124,179,124,179,132,147,132,179,124,7,179,132,167,147,124, + 147,124,114,116,50,108,241,91,176,83,80,75,11,26,134,0,167,0,134,0, + 35,0,2,0,2,0,1,0,67,8,5,33,233,57,172,82,176,107,147,132, + 21,149,118,157,215,165,107,66,132,16,165,16,132,16,133,8,166,8,166,8, + 133,8,100,8,100,8,132,8,100,8,133,8,74,74,178,164,3,52,181,136, + 20,173,52,173,20,173,19,173,20,173,20,173,20,181,52,181,3,20,173,133, + 19,173,20,173,52,181,52,181,84,181,4,52,181,129,84,181,3,52,181,145, + 84,181,52,181,84,181,84,181,84,189,84,189,84,181,84,181,84,189,85,189, + 117,189,85,189,117,189,117,189,117,197,117,197,149,189,4,149,197,136,182,197, + 149,197,181,197,182,205,247,213,117,181,243,164,211,156,3,178,156,145,146,148, + 113,148,48,140,207,123,109,107,12,99,137,74,8,58,166,49,69,33,227,24, + 195,24,162,16,130,16,130,16,98,16,98,16,5,130,16,3,162,16,153,162, + 24,162,24,130,16,162,16,130,24,162,16,162,16,130,16,130,16,162,16,130, + 16,162,24,130,16,162,16,162,16,162,24,130,16,162,24,162,16,130,16,162, + 24,162,16,162,16,130,16,162,24,8,130,16,130,162,16,130,16,3,163,24, + 144,227,32,195,32,227,32,227,32,4,33,4,33,227,32,227,32,195,24,162, + 24,162,16,130,16,97,16,65,8,65,8,33,8,3,0,8,136,32,8,32, + 16,32,24,64,32,65,32,97,32,129,40,129,40,111,3,137,236,90,235,90, + 235,90,236,90,235,90,235,90,236,90,236,90,235,90,3,12,91,132,236,90, + 12,91,236,90,236,90,20,12,91,129,12,99,3,12,91,136,12,99,12,91, + 12,91,12,99,44,99,12,91,12,91,45,99,3,12,91,129,44,99,3,12, + 91,153,44,99,12,91,44,91,12,91,44,91,12,91,45,91,12,91,12,99, + 44,91,12,91,44,91,12,91,12,91,44,91,12,91,44,91,12,91,44,91, + 13,91,12,91,45,91,12,91,12,91,12,99,6,12,91,129,44,91,8,12, + 91,204,236,90,12,91,236,90,236,82,12,91,236,90,236,82,236,90,236,90, + 236,82,236,82,236,90,236,90,236,82,12,91,12,91,236,90,236,90,12,91, + 204,82,171,82,171,82,12,91,45,91,143,107,240,107,17,116,17,116,49,116, + 49,116,50,124,50,116,82,116,82,124,82,124,114,124,114,124,82,124,82,124, + 50,116,110,99,171,66,232,49,69,33,36,25,195,16,130,8,97,0,98,0, + 97,0,97,8,98,0,98,8,130,8,37,25,236,90,142,107,207,115,142,107, + 143,99,175,107,175,99,17,116,114,132,81,132,17,116,50,116,114,124,114,116, + 82,116,50,116,82,124,114,124,114,124,115,124,115,124,3,147,124,129,115,124, + 36,147,124,132,179,124,147,124,147,124,179,124,4,147,124,147,179,124,147,124, + 179,124,179,124,147,124,147,124,179,132,179,124,147,124,179,124,179,124,147,124, + 179,124,147,124,147,124,179,124,179,124,147,124,147,124,7,179,124,139,147,124, + 179,132,179,124,147,124,179,124,147,124,179,124,179,124,179,132,147,132,180,132, + 3,179,124,131,179,132,179,132,179,124,3,179,132,129,180,132,4,179,132,139, + 147,124,179,124,179,124,179,132,147,124,179,124,179,132,179,124,179,124,179,132, + 179,132,3,179,124,179,147,124,179,124,147,132,147,132,180,124,179,132,147,132, + 179,124,179,132,179,124,147,132,179,124,147,132,147,132,179,132,147,124,179,124, + 179,132,179,124,179,132,180,132,179,132,147,124,179,132,148,132,147,124,179,124, + 147,132,179,132,179,124,179,132,179,124,179,132,147,132,179,132,49,116,45,99, + 77,107,142,107,179,124,179,132,179,132,147,124,179,132,179,132,179,124,147,124, + 147,132,179,124,179,132,147,132,5,179,132,131,179,124,179,132,147,132,3,179, + 132,131,179,124,179,124,147,132,4,179,132,160,147,124,115,116,50,108,241,91, + 177,83,112,75,76,42,69,0,166,8,235,49,144,107,148,132,87,157,58,182, + 154,190,186,190,186,190,121,182,24,182,247,173,150,165,52,157,52,157,171,74, + 133,8,197,24,132,8,133,8,166,8,166,8,165,8,100,8,3,132,8,139, + 101,0,233,57,146,156,20,173,20,173,52,181,20,181,20,173,52,181,20,181, + 52,173,4,20,173,131,19,173,20,173,20,173,4,52,181,139,20,181,20,181, + 52,181,84,181,52,181,52,181,84,181,84,181,52,181,84,181,52,181,3,84, + 181,142,84,189,84,181,84,189,117,189,85,189,85,189,117,189,149,189,117,189, + 149,189,149,197,149,197,181,197,181,197,3,182,205,147,149,197,117,189,84,189, + 145,156,142,115,12,99,138,82,40,66,231,57,102,41,36,33,195,24,130,16, + 97,8,65,8,65,8,97,8,97,8,98,16,4,130,16,137,163,16,130,16, + 162,16,162,16,162,24,162,24,162,16,162,16,130,16,4,162,24,138,130,16, + 162,24,130,16,130,16,162,16,130,16,162,24,130,16,162,16,130,24,3,162, + 16,139,130,24,130,16,162,16,130,16,162,24,130,16,130,16,162,16,130,24, + 162,16,162,24,3,163,24,132,195,24,195,24,227,32,228,32,4,227,32,149, + 195,32,195,24,162,24,130,16,98,16,65,8,65,8,64,8,32,8,32,8, + 0,8,32,16,32,16,64,24,64,24,96,32,129,32,129,40,161,48,194,56, + 194,64,4,226,64,131,194,56,194,56,162,56,11,3,130,235,90,235,90,3, + 236,90,129,12,91,4,236,90,131,12,91,12,91,236,90,13,12,91,129,12, + 99,13,12,91,139,12,99,12,99,12,91,12,99,12,91,44,91,13,99,12, + 91,12,91,12,99,12,99,15,12,91,131,44,91,12,91,44,99,5,12,91, + 133,12,99,12,91,44,91,12,91,13,91,15,12,91,4,236,90,153,236,82, + 236,90,12,83,236,82,236,82,236,90,236,82,236,82,12,91,236,90,12,83, + 12,91,236,82,236,82,12,91,12,83,203,82,171,82,203,82,12,91,77,99, + 143,99,240,115,17,116,17,116,3,50,116,3,82,116,137,114,116,114,124,82, + 124,114,124,82,116,175,107,73,58,4,25,162,16,3,130,8,3,130,16,152, + 130,8,130,16,130,16,130,8,130,16,162,16,134,41,40,58,73,66,41,58, + 171,74,78,91,175,107,16,116,114,132,81,132,49,124,82,116,115,124,114,124, + 82,124,82,116,82,116,114,124,3,115,124,9,147,124,129,147,132,21,147,124, + 129,147,132,7,147,124,133,147,132,147,132,179,124,179,132,179,124,5,147,124, + 137,179,124,147,124,179,124,179,124,147,124,147,124,179,124,147,124,147,124,4, + 179,124,145,147,124,179,124,147,124,147,124,179,124,147,124,179,124,179,124,179, + 132,147,124,147,124,179,124,147,124,179,124,147,124,147,124,147,132,4,179,124, + 129,147,124,4,179,124,136,179,132,179,124,179,132,179,132,179,124,148,132,179, + 132,180,132,5,179,132,142,147,124,180,132,179,124,147,132,179,124,179,124,179, + 132,179,132,179,124,179,132,179,124,179,132,147,132,179,124,3,179,132,129,179, + 124,3,179,132,138,179,124,179,124,179,132,147,124,147,124,179,132,179,132,179, + 124,179,132,147,124,3,179,132,135,179,124,179,132,147,132,179,132,179,132,147, + 124,147,132,6,179,132,133,82,124,115,132,44,107,45,107,147,132,6,179,132, + 132,180,132,179,132,179,132,179,124,6,179,132,129,179,124,11,179,132,167,147, + 132,147,132,115,116,50,108,241,91,177,83,112,75,235,25,235,49,244,140,24, + 182,89,182,56,182,182,173,182,165,20,157,211,140,114,140,239,115,207,115,142, + 107,45,99,203,82,170,74,71,33,165,16,197,16,132,8,133,8,166,8,166, + 8,165,8,132,8,100,8,132,8,132,8,100,0,201,57,113,156,3,19,173, + 133,52,181,20,173,19,173,20,181,52,181,3,20,173,3,19,173,3,52,181, + 137,20,181,52,181,20,173,19,173,19,173,84,181,84,181,52,181,52,181,4, + 84,181,133,85,189,84,189,85,189,85,189,84,189,3,117,189,147,85,189,117, + 189,149,197,149,197,117,197,84,189,51,181,19,173,209,164,80,148,239,139,141, + 123,234,98,105,82,7,66,133,49,4,25,195,16,130,16,4,98,16,3,130, + 16,144,162,16,130,16,162,24,162,16,130,16,162,16,162,16,130,16,162,16, + 130,16,162,16,162,24,162,16,130,16,162,24,130,24,5,162,24,141,162,16, + 130,16,130,24,162,16,130,16,162,16,130,16,162,16,162,24,162,16,130,16, + 162,16,162,16,3,130,16,132,162,16,162,24,162,24,163,24,3,195,24,129, + 195,32,3,227,32,137,195,24,195,32,163,24,163,24,130,16,129,16,97,16, + 65,8,33,8,4,32,8,141,32,16,64,16,64,24,97,32,97,40,129,40, + 161,48,161,48,162,56,194,56,194,56,226,56,226,56,3,194,64,3,194,56, + 133,226,64,226,64,3,65,3,65,36,73,94,3,130,235,90,235,90,3,236, + 90,137,235,90,236,90,12,91,12,91,235,90,12,91,12,91,236,90,236,90, + 10,12,91,129,236,90,6,12,91,130,12,99,12,99,4,12,91,131,44,99, + 12,91,12,99,4,12,91,129,44,99,3,12,91,130,44,99,12,99,3,12, + 91,132,44,91,12,91,45,99,12,99,3,12,91,129,44,91,3,12,91,129, + 13,91,3,12,91,132,44,91,12,91,12,91,45,91,3,12,91,3,44,91, + 131,12,91,12,91,44,91,17,12,91,154,236,90,12,91,236,90,12,83,236, + 82,12,91,236,82,236,82,236,90,236,90,12,91,12,83,236,90,236,82,12, + 83,12,83,203,82,171,82,204,90,12,91,78,99,175,107,241,115,17,116,49, + 116,50,124,3,82,116,129,82,124,5,114,124,141,17,116,45,83,4,25,130, + 16,163,16,163,16,162,16,130,16,130,16,162,16,163,16,130,16,163,16,3, + 130,16,148,98,8,130,8,162,16,163,16,162,8,134,41,139,74,77,99,207, + 107,113,132,114,132,82,124,82,124,115,124,114,124,82,124,50,116,82,116,82, + 124,114,124,3,115,124,3,147,124,129,147,116,27,147,124,129,179,124,7,147, + 124,134,179,132,147,124,147,124,179,124,147,132,179,132,3,147,124,156,179,124, + 147,124,147,124,179,124,147,124,147,124,179,124,147,124,147,124,179,124,179,124, + 147,124,179,124,179,124,147,124,179,124,148,124,147,124,147,124,179,124,179,124, + 179,132,147,132,147,124,179,124,179,132,147,124,179,132,3,179,124,133,180,124, + 179,124,147,124,180,124,147,124,4,179,124,137,179,132,147,124,179,124,180,132, + 179,124,179,132,179,132,179,124,179,124,4,179,132,129,147,132,3,179,132,130, + 180,132,179,124,3,179,132,130,147,124,179,132,4,179,124,138,179,132,180,132, + 179,132,179,132,180,132,147,132,179,124,179,124,179,132,179,124,3,179,132,131, + 147,124,180,132,147,132,3,179,132,136,180,132,179,132,147,132,179,132,147,124, + 147,132,179,132,147,124,3,179,132,136,180,132,114,124,16,116,77,107,12,99, + 114,132,180,124,179,124,4,179,132,135,179,124,179,132,179,132,179,124,147,132, + 179,132,147,132,8,179,132,129,179,124,6,179,132,145,147,132,147,124,114,116, + 82,108,241,91,209,91,80,75,109,50,24,182,117,157,239,123,174,107,77,99, + 235,90,170,82,138,74,105,74,3,73,66,201,41,58,73,66,41,66,106,66, + 136,33,165,8,197,16,132,8,133,8,166,8,166,8,165,8,132,8,100,8, + 100,8,132,8,100,0,136,41,81,148,243,172,20,173,19,173,20,173,20,173, + 52,173,20,181,19,181,20,173,20,173,52,181,20,173,19,173,20,181,52,181, + 52,181,19,173,20,181,52,181,19,173,19,173,52,181,84,181,84,181,52,181, + 52,181,84,181,84,189,84,181,84,181,84,189,84,189,85,189,85,189,84,189, + 117,189,117,189,116,189,149,197,149,197,19,181,112,156,173,123,235,98,104,74, + 198,57,101,41,227,32,195,24,162,16,130,16,98,16,97,8,98,16,3,130, + 16,132,162,16,130,16,162,16,162,24,4,162,16,153,130,24,162,16,130,16, + 130,16,162,16,130,16,162,16,162,16,130,16,162,24,162,24,130,16,162,16, + 162,16,130,16,162,24,162,24,130,24,130,24,162,16,130,16,162,24,162,16, + 130,16,130,16,3,162,16,3,162,24,145,163,24,195,24,195,24,227,24,195, + 32,227,32,227,32,195,32,195,32,195,24,195,24,162,24,130,16,130,16,97, + 16,65,8,65,8,3,32,8,146,32,16,32,16,64,16,65,24,65,24,96, + 32,97,40,129,40,129,40,162,48,194,48,194,56,194,56,195,64,194,64,226, + 64,225,64,194,64,3,193,56,140,194,56,226,56,226,64,35,73,100,81,165, + 81,229,97,38,98,39,98,136,114,169,114,169,114,58,3,143,235,90,236,90, + 235,90,12,91,12,91,236,90,235,90,236,90,235,90,236,90,12,91,12,91, + 236,90,12,91,236,90,5,12,91,129,236,90,10,12,91,129,12,99,3,12, + 91,132,12,99,12,91,12,91,44,99,4,12,91,131,44,99,12,91,44,99, + 8,12,91,129,12,99,4,12,91,130,13,99,44,91,4,12,91,137,44,91, + 12,91,44,91,12,91,12,91,44,99,12,99,12,91,45,91,6,12,91,129, + 45,91,11,12,91,129,236,90,3,12,91,161,236,90,12,83,12,91,236,90, + 12,91,236,82,236,82,12,83,236,90,236,82,12,91,12,91,236,82,12,91, + 12,91,236,82,12,91,236,82,203,82,171,82,204,90,45,91,142,99,240,107, + 17,116,50,116,49,116,49,116,50,116,82,116,82,116,114,116,82,124,4,114, + 124,131,207,107,73,58,98,8,4,163,16,139,130,16,162,16,163,16,163,16, + 162,16,162,16,130,16,130,16,97,8,98,8,97,8,3,98,8,135,130,8, + 36,33,231,49,170,74,142,107,49,132,82,124,3,114,124,136,82,116,50,116, + 82,116,82,124,114,124,147,124,115,124,115,124,30,147,124,129,179,124,3,147, + 124,4,179,124,167,147,124,147,132,179,132,179,132,179,124,147,124,179,124,179, + 132,147,124,147,124,179,132,147,124,179,124,147,124,179,124,147,124,180,124,179, + 124,147,124,179,124,147,124,179,124,179,124,147,132,147,124,179,124,179,132,179, + 124,179,124,180,132,179,124,179,132,179,132,179,124,179,124,147,124,179,124,179, + 124,147,124,3,179,124,130,147,132,179,132,4,179,124,146,179,132,179,132,180, + 124,179,132,179,124,180,124,180,132,179,132,180,132,179,132,180,132,180,132,179, + 132,180,132,179,132,179,132,180,132,180,132,3,179,132,130,179,124,179,124,3, + 179,132,131,179,124,179,124,180,132,4,179,132,133,180,132,179,124,179,132,147, + 124,147,132,5,179,132,133,180,132,179,124,179,132,148,132,179,124,5,179,132, + 132,179,124,147,132,179,132,179,124,4,179,132,134,114,124,240,123,77,107,45, + 107,175,107,212,132,8,179,132,131,147,132,179,132,147,132,4,179,132,132,147, + 132,179,132,179,132,179,124,8,179,132,142,179,124,147,124,114,116,50,116,18, + 100,209,83,47,67,150,157,52,149,77,99,101,41,8,58,40,66,41,66,3, + 73,66,4,105,66,156,106,66,105,66,138,74,168,41,166,8,165,16,133,8, + 133,8,166,8,198,8,165,8,132,8,99,8,132,8,100,8,101,0,71,33, + 49,148,19,173,20,173,20,173,52,181,20,173,20,173,52,181,20,173,19,173, + 19,173,4,52,181,136,20,181,52,181,51,173,52,181,52,181,84,181,52,173, + 20,181,3,84,181,129,52,181,4,84,181,145,85,189,84,181,84,189,84,189, + 117,189,85,189,117,189,149,189,19,181,141,123,231,65,162,16,65,8,33,0, + 65,8,97,8,98,16,5,130,16,147,162,16,130,16,162,16,130,16,162,16, + 162,16,130,16,162,16,162,16,130,16,130,24,162,16,162,16,162,24,162,16, + 130,16,130,16,162,16,130,16,5,162,16,139,130,16,162,24,130,24,130,16, + 162,16,130,16,130,16,162,16,162,16,162,24,162,24,3,163,24,7,195,24, + 136,162,24,162,24,130,16,130,16,97,16,65,16,65,8,64,8,3,32,8, + 139,32,16,32,16,64,24,64,32,97,32,129,32,130,40,129,48,161,48,161, + 56,162,48,3,194,56,146,194,48,162,56,194,56,162,48,194,48,194,48,226, + 56,2,65,3,65,67,73,132,81,164,81,6,90,39,98,103,106,169,114,201, + 122,234,122,3,10,123,134,42,123,233,122,71,98,10,115,233,114,233,114,7, + 3,129,235,90,8,236,90,134,12,91,236,90,236,90,12,91,12,91,236,90, + 10,12,91,130,12,99,12,99,11,12,91,168,12,99,12,91,12,91,44,99, + 12,91,12,99,12,91,44,91,44,91,12,91,13,91,12,91,44,91,45,99, + 12,91,45,91,12,91,44,91,13,99,44,91,44,91,12,91,12,91,12,99, + 12,99,12,91,45,99,12,91,44,91,12,91,44,91,12,91,44,91,12,91, + 45,91,44,91,12,91,12,91,44,91,44,91,17,12,91,160,236,90,12,83, + 12,91,12,91,236,90,12,91,236,90,12,83,12,83,236,82,12,91,12,91, + 236,90,12,91,12,83,12,91,12,83,12,91,236,82,203,82,203,82,236,90, + 45,91,143,99,240,107,17,116,49,116,49,116,82,116,82,124,82,116,82,124, + 5,114,124,132,82,124,78,91,199,41,98,8,3,163,16,3,130,16,134,162, + 16,163,16,162,16,163,16,130,16,98,16,4,97,8,3,98,8,144,130,8, + 163,16,36,25,73,58,77,99,240,115,114,124,147,124,114,124,82,116,50,116, + 82,124,114,124,114,124,115,124,115,124,31,147,124,129,179,124,3,147,124,146, + 179,124,147,132,179,124,179,132,147,124,179,124,147,124,179,124,179,132,147,124, + 179,124,179,124,147,124,179,124,147,124,179,124,147,124,147,124,4,179,124,135, + 147,124,179,124,147,124,179,124,179,132,180,132,147,124,13,179,124,129,180,124, + 5,179,124,3,179,132,132,179,124,179,132,179,132,179,124,3,179,132,139,179, + 124,180,124,180,132,179,132,180,132,180,132,179,132,180,132,180,132,179,132,180, + 132,3,179,132,132,180,132,179,124,179,132,179,124,4,179,132,135,180,132,179, + 124,179,132,179,132,180,132,180,132,179,132,3,179,124,132,179,132,179,124,179, + 124,180,132,5,179,132,131,179,124,180,124,179,124,5,179,132,129,180,132,4, + 179,132,135,180,132,50,116,16,116,77,107,77,107,175,115,244,132,15,179,132, + 129,179,124,11,179,132,144,147,132,147,124,114,116,82,116,18,100,209,83,112, + 83,118,157,85,157,109,99,102,41,231,57,8,58,40,66,105,66,73,66,7, + 105,66,157,138,66,168,41,166,8,165,16,132,8,133,8,165,8,166,8,165, + 8,132,8,100,8,132,8,132,8,101,0,39,25,16,140,243,172,52,173,20, + 173,52,181,52,181,20,173,52,181,20,173,19,173,19,173,52,181,52,181,20, + 173,4,52,181,131,20,181,52,181,84,181,3,52,181,135,84,181,84,181,52, + 181,84,181,84,181,84,189,84,189,3,84,181,3,84,189,139,117,189,85,189, + 109,115,4,33,97,8,130,16,130,16,162,16,162,16,130,16,162,16,6,130, + 16,149,162,16,130,16,162,24,130,16,162,16,130,16,162,16,162,24,130,24, + 130,16,162,16,162,16,130,16,130,16,162,16,130,24,130,16,162,24,130,16, + 162,16,130,16,5,162,16,5,163,24,4,195,24,177,163,24,162,24,162,16, + 130,16,130,16,97,16,97,8,65,8,64,8,65,8,64,8,32,16,64,16, + 64,16,96,24,96,24,97,32,129,48,161,48,194,56,226,56,2,65,66,73, + 2,73,194,64,194,56,162,56,194,56,161,56,162,48,162,48,194,56,226,56, + 3,57,36,73,68,65,132,73,197,81,230,89,39,98,104,106,136,106,169,114, + 201,122,234,122,234,122,10,123,42,123,42,131,3,10,123,137,9,123,234,122, + 10,123,233,114,10,123,71,98,201,106,233,114,233,114,63,3,3,236,90,129, + 12,91,3,236,90,131,12,91,12,91,236,90,14,12,91,130,12,99,12,99, + 9,12,91,132,12,99,12,91,12,91,44,91,3,12,91,129,45,99,8,12, + 91,155,44,99,12,91,12,91,44,91,12,91,45,99,12,99,44,99,12,91, + 12,91,44,99,12,91,44,99,44,91,12,91,44,91,12,99,12,91,45,91, + 12,91,13,91,44,91,44,91,12,91,44,99,12,91,45,91,16,12,91,129, + 236,90,3,12,91,137,236,90,236,90,12,91,12,91,236,82,12,91,236,82, + 12,91,236,90,3,12,91,140,12,83,12,83,13,91,203,82,171,74,203,82, + 236,90,78,99,175,107,240,107,49,116,49,116,4,82,116,6,114,124,138,49, + 116,12,83,37,25,130,16,163,16,163,16,130,16,162,16,130,16,130,16,4, + 162,16,130,130,16,98,16,3,65,8,149,66,8,97,8,65,8,195,16,103, + 33,134,41,4,17,163,16,232,49,13,91,240,107,147,124,115,124,82,116,50, + 116,82,116,82,124,114,124,147,124,147,124,115,124,25,147,124,158,179,124,147, + 124,179,124,147,124,147,124,179,124,179,124,147,132,179,124,147,124,147,124,179, + 124,179,132,179,124,147,124,179,124,147,124,179,132,147,124,147,132,147,124,147, + 132,147,124,147,124,179,124,147,124,147,124,179,124,179,124,180,124,4,179,124, + 129,179,132,5,179,124,129,147,124,3,179,124,133,180,124,147,132,179,124,180, + 124,179,132,3,179,124,146,180,124,180,132,179,124,179,124,180,132,180,124,180, + 132,179,132,179,132,180,124,180,132,180,132,148,132,179,132,179,132,179,124,180, + 132,180,124,4,180,132,137,179,132,179,132,180,132,180,132,180,124,179,132,179, + 132,180,132,179,124,6,179,132,130,180,132,179,132,3,180,132,148,147,124,179, + 132,180,132,179,132,179,124,179,132,179,132,179,124,179,124,179,132,180,132,180, + 132,179,132,179,132,179,124,180,124,179,132,180,132,179,132,180,132,7,179,132, + 131,179,124,21,141,81,124,3,77,107,136,244,140,179,132,179,132,180,132,179, + 132,179,132,180,132,180,132,9,179,132,130,147,124,147,132,10,179,132,156,147, + 124,115,124,82,116,17,100,177,83,112,83,118,157,85,157,142,107,102,41,199, + 49,231,57,8,58,40,58,40,66,73,66,73,66,105,66,73,66,105,66,105, + 66,73,66,137,74,200,41,166,8,166,16,132,8,132,8,3,165,8,142,132, + 8,99,8,132,8,132,8,101,0,231,16,239,131,243,172,20,181,19,173,52, + 181,52,181,20,173,52,181,3,20,173,132,52,173,52,181,52,181,52,173,3, + 52,181,129,20,173,6,52,181,134,84,181,52,181,52,181,84,181,84,181,85, + 189,3,84,181,144,85,189,84,189,85,189,117,189,20,173,133,49,97,8,162, + 16,130,16,162,16,162,24,130,16,162,16,162,16,130,16,162,16,3,130,16, + 149,162,16,162,16,130,16,130,24,162,24,130,16,162,16,130,16,162,16,130, + 16,130,16,162,16,162,16,130,16,162,16,130,16,130,16,162,24,162,24,163, + 24,163,24,3,195,24,129,163,24,3,195,24,174,163,24,162,24,162,16,130, + 16,130,16,98,8,65,8,65,8,33,8,32,0,33,8,32,8,64,16,96, + 24,96,24,97,32,129,40,129,48,129,48,161,48,161,48,162,48,194,56,2, + 65,99,81,131,89,99,89,131,89,131,89,131,81,163,89,163,89,2,73,226, + 64,3,65,68,73,165,81,230,89,39,98,103,106,136,114,137,114,201,114,10, + 123,169,114,234,122,3,42,123,133,10,123,10,123,42,123,10,123,234,122,4, + 10,123,139,234,122,10,123,233,114,234,122,233,122,233,114,10,123,136,114,136, + 98,234,114,201,114,82,3,130,235,90,12,91,5,236,90,131,12,91,12,91, + 236,90,7,12,91,129,236,90,6,12,91,132,12,99,12,91,12,91,12,99, + 3,12,91,129,12,99,4,12,91,129,44,91,3,12,91,129,44,99,4,12, + 91,137,44,99,12,91,44,99,12,91,44,99,13,91,44,91,12,91,44,99, + 3,12,91,141,44,91,44,91,12,91,12,99,12,91,44,91,12,91,44,99, + 12,99,44,91,44,91,12,91,12,91,3,44,91,136,12,91,44,91,12,91, + 45,91,45,91,12,91,12,91,44,91,5,12,91,129,13,91,9,12,91,129, + 236,82,4,12,91,135,12,83,12,83,12,91,12,91,236,82,12,83,236,90, + 4,12,91,142,236,82,204,82,171,82,204,82,12,91,78,99,208,107,17,108, + 49,116,82,116,82,124,82,124,114,124,82,124,4,114,124,137,146,124,179,124, + 240,107,138,66,195,16,130,16,162,16,130,16,162,16,3,130,16,129,162,16, + 4,130,16,130,130,8,97,8,3,65,8,148,98,8,37,25,73,58,236,82, + 45,99,171,74,166,41,130,8,101,33,171,66,208,107,82,124,82,116,49,116, + 50,116,114,124,115,124,114,124,146,124,115,124,13,147,124,129,179,124,9,147, + 124,131,179,124,147,124,147,124,3,179,124,146,147,124,179,124,147,124,147,124, + 179,132,147,124,179,124,179,132,179,124,179,132,179,124,147,124,147,124,179,124, + 147,132,179,124,147,132,147,124,4,179,124,137,180,132,147,124,180,124,179,124, + 179,132,179,132,147,124,179,124,147,124,10,179,124,132,179,132,179,132,180,124, + 147,124,3,179,124,171,179,132,179,124,179,132,179,124,179,124,179,132,180,124, + 179,124,180,124,180,132,180,132,179,132,180,132,179,132,179,132,180,132,179,124, + 179,132,180,132,180,132,179,124,179,124,180,132,180,132,179,132,180,132,179,132, + 179,124,180,132,180,124,180,132,180,132,179,124,180,132,179,132,179,124,180,132, + 179,132,179,132,180,132,179,132,180,132,179,132,3,180,132,147,179,132,180,124, + 179,124,180,124,147,132,179,132,179,132,179,124,180,132,179,132,179,132,179,124, + 179,132,179,132,180,132,179,132,180,132,179,132,180,132,3,179,132,137,179,124, + 179,124,212,132,77,99,110,115,110,107,12,99,179,132,212,132,22,179,132,176, + 179,124,179,132,179,132,147,132,179,132,147,124,114,124,82,116,18,100,209,83, + 112,75,150,157,85,157,174,107,101,41,199,49,199,57,231,57,232,49,8,58, + 8,66,40,66,41,66,73,66,73,66,105,66,105,66,137,66,201,41,167,0, + 198,16,165,8,100,8,133,8,166,8,166,8,132,8,100,8,132,8,132,8, + 101,0,198,8,142,115,211,164,19,173,20,173,52,173,19,173,3,20,173,130, + 19,173,52,173,3,52,181,133,20,181,52,173,19,173,52,181,52,173,7,52, + 181,145,84,181,52,181,52,181,84,181,85,189,84,189,84,181,84,181,85,189, + 84,189,84,181,84,189,146,156,97,8,130,16,130,16,162,24,3,130,16,129, + 162,16,8,130,16,133,162,16,130,24,130,16,162,24,130,24,5,162,16,3, + 163,24,130,195,24,195,24,3,163,24,184,162,24,162,16,130,16,98,16,98, + 16,97,8,65,8,65,8,64,8,64,8,64,16,65,16,64,24,96,24,97, + 32,161,40,194,48,225,56,2,65,35,73,67,73,68,81,67,81,68,73,35, + 65,3,57,34,73,226,64,193,56,194,56,226,64,35,73,5,98,229,97,229, + 89,70,106,135,114,103,106,135,106,169,114,169,122,201,122,201,122,168,122,168, + 130,103,122,70,122,229,105,196,97,99,81,67,65,201,106,233,122,136,98,43, + 123,42,123,5,10,123,130,11,123,9,123,4,10,123,138,234,122,234,122,10, + 123,234,122,234,114,234,122,9,123,39,98,234,114,234,114,12,3,4,236,90, + 134,12,91,12,91,236,90,236,90,12,91,236,90,25,12,91,140,44,99,12, + 91,12,91,13,99,12,91,44,99,12,91,12,99,12,91,12,99,12,91,44, + 99,4,12,91,159,44,91,44,99,12,91,44,91,45,91,44,99,12,91,45, + 91,12,91,45,91,12,91,45,91,12,91,44,99,12,91,44,91,44,91,12, + 91,44,91,12,91,44,91,44,91,12,91,12,91,44,99,44,91,45,91,12, + 91,45,91,12,91,44,91,11,12,91,133,236,90,12,91,12,83,12,91,12, + 91,3,236,90,150,12,91,12,83,12,91,236,90,12,83,12,91,12,91,12, + 83,12,91,12,91,13,91,236,82,203,82,171,82,204,90,12,91,143,99,240, + 107,49,116,49,116,82,116,82,124,6,114,124,136,146,124,114,124,147,124,143, + 99,8,50,162,16,130,16,162,16,11,130,16,152,98,8,97,8,65,8,130, + 8,102,33,139,66,45,91,143,99,207,107,78,99,138,74,36,25,163,8,69, + 25,237,74,208,107,49,116,49,116,82,116,114,124,115,124,115,124,147,124,114, + 124,23,147,124,130,179,124,179,124,3,147,124,131,179,124,147,124,147,132,5, + 179,124,129,179,132,3,179,124,136,147,132,179,124,179,124,179,132,179,124,147, + 132,179,124,147,124,5,179,124,129,180,124,3,179,124,130,180,132,180,124,3, + 179,124,129,180,124,6,179,124,131,180,132,180,132,179,132,3,180,124,151,179, + 124,180,132,180,124,179,132,179,124,179,124,180,132,179,124,179,124,180,124,179, + 124,179,132,180,132,180,132,179,132,180,132,180,132,179,132,180,132,179,132,180, + 132,180,132,179,132,3,180,132,130,179,132,179,132,5,180,132,139,179,132,180, + 132,180,132,179,132,180,132,180,124,180,132,179,132,180,132,180,132,179,132,4, + 180,132,4,179,132,142,179,124,179,132,180,132,179,132,179,132,180,132,180,124, + 180,132,179,132,180,124,180,132,180,132,179,132,179,132,4,180,132,137,179,132, + 180,132,82,124,142,107,77,115,77,107,77,107,49,124,212,132,10,179,132,129, + 147,132,16,179,132,167,147,124,147,124,82,116,18,100,209,83,79,75,118,157, + 85,157,174,107,101,41,199,49,231,49,199,49,231,49,232,57,232,57,8,58, + 40,58,41,58,41,66,73,66,73,66,105,66,233,49,199,8,198,16,165,16, + 132,8,165,8,198,8,198,8,132,8,100,8,100,8,132,8,101,0,166,8, + 77,107,210,164,3,20,173,140,19,173,20,173,20,173,19,173,20,173,52,181, + 20,173,52,173,52,181,20,181,52,181,52,173,9,52,181,130,84,181,52,181, + 3,84,181,130,85,189,84,189,3,85,189,133,84,181,117,189,211,164,130,16, + 130,16,3,162,16,130,130,16,162,16,6,130,16,3,162,16,130,162,24,162, + 24,3,163,24,139,195,24,195,24,163,24,195,24,162,24,162,24,130,16,130, + 24,130,16,98,16,97,16,5,65,8,139,65,16,65,16,97,24,129,32,129, + 32,129,40,162,48,226,56,226,56,3,65,67,65,3,67,73,166,100,73,67, + 73,67,73,67,65,100,73,132,73,100,73,132,73,132,73,165,81,165,89,197, + 89,7,90,39,98,104,106,201,122,169,114,201,114,42,123,42,131,10,123,5, + 98,229,97,196,97,195,105,163,105,130,105,130,113,130,113,97,113,98,105,66, + 97,1,81,225,64,39,82,75,123,104,98,43,123,12,10,123,129,234,122,3, + 10,123,134,234,122,234,114,10,123,71,106,201,106,233,122,119,3,131,12,91, + 235,90,12,91,3,236,90,3,12,91,131,236,90,12,91,12,99,13,12,91, + 136,12,99,12,91,12,91,44,91,12,91,44,99,12,99,44,91,3,12,91, + 143,12,99,44,91,12,91,12,91,44,91,12,91,45,91,44,99,12,99,12, + 99,44,99,12,91,45,91,12,91,44,99,3,12,91,155,12,99,44,99,44, + 99,12,91,12,91,44,91,12,91,44,99,44,91,12,91,44,91,12,91,12, + 91,44,91,12,91,44,99,44,91,44,91,12,91,44,91,12,91,12,91,13, + 91,12,91,12,91,44,91,13,91,6,12,91,129,45,91,12,12,91,133,236, + 90,12,91,12,91,236,82,236,82,3,12,83,142,13,83,13,83,12,83,13, + 91,236,82,203,82,171,82,236,90,45,99,175,99,241,107,49,116,82,116,82, + 124,5,114,124,138,147,124,146,124,114,124,147,124,147,132,78,91,134,41,130, + 8,162,16,162,16,7,130,16,156,130,8,130,16,98,16,130,16,130,16,98, + 16,98,8,228,24,41,58,78,99,175,107,175,107,207,107,175,107,13,91,199, + 41,4,25,163,8,134,33,236,74,207,99,50,116,82,116,82,124,115,124,147, + 124,147,124,115,124,19,147,124,129,179,124,4,147,124,194,179,124,179,124,147, + 124,179,124,147,132,147,132,179,132,179,132,147,132,179,132,147,124,179,124,179, + 132,147,124,147,132,179,124,179,132,179,124,179,132,179,124,179,132,179,124,179, + 124,147,132,179,124,147,124,147,124,180,124,179,124,179,124,180,132,179,124,179, + 124,180,132,180,124,179,124,179,124,180,132,179,124,180,132,179,124,180,124,179, + 124,179,132,180,124,179,132,179,132,179,124,180,124,180,124,180,132,179,124,179, + 132,180,124,180,132,179,124,179,124,180,132,179,132,180,132,180,124,180,132,180, + 124,180,132,180,132,179,132,3,180,132,130,179,132,179,124,3,180,132,133,179, + 132,180,132,180,132,179,132,179,132,3,180,132,129,179,124,3,180,132,129,180, + 124,4,180,132,129,179,132,3,180,132,149,180,124,180,132,179,124,179,132,180, + 132,180,132,179,132,180,132,179,132,180,132,180,132,179,124,180,132,179,132,180, + 124,179,124,179,132,180,124,180,124,179,132,179,124,4,179,132,138,180,132,179, + 132,212,132,17,108,49,124,45,107,77,107,77,107,175,107,245,140,3,180,132, + 142,180,124,179,132,180,132,180,132,179,132,179,132,180,124,179,132,179,132,180, + 132,179,124,179,132,179,132,179,124,5,179,132,129,180,132,4,179,132,138,147, + 124,115,124,82,116,18,100,209,83,80,75,85,149,117,157,240,115,102,41,3, + 199,49,131,199,57,231,49,232,57,3,8,58,140,40,66,41,58,73,66,73, + 66,232,49,199,0,198,16,165,16,133,0,166,8,166,8,198,8,4,132,8, + 132,133,8,134,0,45,107,178,156,4,20,173,141,52,173,20,173,52,173,19, + 173,20,173,52,181,19,173,20,173,51,181,19,173,20,173,52,173,52,173,7, + 52,181,6,84,181,142,85,189,84,181,85,189,85,189,84,181,117,189,52,181, + 228,32,98,16,162,16,130,16,162,16,130,16,162,16,3,130,16,133,162,24, + 227,32,195,24,163,24,195,24,3,163,24,134,130,24,162,24,130,16,130,16, + 98,16,97,16,3,65,8,191,32,8,32,8,64,8,65,16,96,24,129,32, + 161,32,162,40,194,48,226,48,226,56,2,65,2,65,68,73,35,65,67,73, + 100,73,164,81,197,89,68,65,67,73,100,81,68,73,68,73,132,81,197,81, + 230,89,39,98,104,98,136,106,136,106,136,114,168,114,168,122,136,114,103,114, + 71,106,6,98,197,81,10,115,10,123,169,106,75,131,75,131,10,131,225,72, + 1,73,66,81,5,106,5,122,4,122,37,122,69,122,37,122,38,122,229,113, + 34,89,225,72,132,73,43,115,136,106,234,114,42,123,3,10,123,130,42,123, + 42,123,8,10,123,136,234,122,10,123,233,114,234,114,169,106,136,106,136,106, + 234,114,147,3,135,235,90,12,91,236,90,12,91,236,90,12,91,236,90,4, + 12,91,129,236,90,4,12,91,134,12,99,12,91,236,90,12,91,12,91,12, + 99,6,12,91,182,44,99,12,91,44,99,12,91,12,99,12,91,44,99,12, + 91,12,91,12,99,12,91,12,91,12,99,44,99,12,91,44,99,12,99,12, + 91,13,91,44,91,44,99,12,91,44,91,12,91,12,91,44,99,44,91,12, + 91,12,99,45,99,45,99,12,91,44,99,13,91,45,91,44,91,44,99,45, + 99,13,91,44,91,12,91,12,91,12,99,13,91,12,91,44,91,12,91,45, + 91,12,91,45,91,44,91,45,91,12,91,45,91,3,12,91,129,45,91,10, + 12,91,137,236,82,12,91,12,91,236,82,12,91,236,90,12,91,12,91,236, + 82,5,12,91,141,12,83,12,91,236,82,203,74,203,82,12,91,77,91,208, + 107,17,116,49,116,82,124,82,124,82,116,3,114,124,142,146,124,146,124,114, + 124,147,124,147,124,114,124,12,83,69,25,98,8,162,16,162,16,130,16,130, + 8,130,16,3,98,8,157,98,16,130,16,130,16,130,8,130,16,162,16,163, + 16,162,16,4,25,74,58,110,99,175,107,175,107,176,107,143,107,110,99,203, + 74,8,50,102,33,195,16,102,33,204,74,240,107,82,116,114,124,115,124,147, + 124,115,124,115,116,15,147,124,129,179,124,5,147,124,138,179,124,147,124,179, + 124,147,124,179,124,179,124,179,132,179,132,147,124,179,132,4,179,124,129,147, + 124,3,179,124,129,179,132,3,179,124,134,147,124,147,124,179,132,179,124,179, + 124,147,124,4,179,124,133,179,132,179,132,180,124,179,132,179,132,3,179,124, + 148,179,132,179,124,180,124,180,124,179,124,180,124,179,124,179,124,180,132,179, + 124,180,124,179,132,180,132,179,124,180,124,179,132,179,132,180,132,180,132,180, + 124,4,180,132,132,179,124,180,132,180,132,179,132,3,180,132,137,179,124,180, + 132,180,132,179,132,180,132,180,132,179,132,180,132,180,124,3,180,132,132,180, + 124,180,132,180,132,179,132,8,180,132,129,179,132,3,180,132,134,179,132,180, + 132,180,132,179,132,180,132,180,124,5,180,132,131,179,132,179,124,179,124,3, + 180,132,130,179,124,179,132,3,147,124,144,179,132,180,132,179,132,179,132,180, + 132,147,132,179,148,12,107,110,115,109,115,110,115,179,132,180,132,179,132,179, + 132,180,132,4,179,132,129,180,132,4,179,132,133,180,132,179,132,179,132,180, + 132,180,132,4,179,132,129,180,132,4,179,132,186,147,124,147,124,82,116,18, + 100,209,83,80,67,21,141,85,157,49,124,101,41,167,41,232,49,199,49,199, + 49,232,57,199,49,231,57,232,57,8,58,8,58,40,66,41,58,73,66,232, + 49,199,0,198,16,198,16,133,8,134,8,166,8,166,16,133,8,100,8,132, + 16,132,8,133,8,101,0,237,98,146,164,52,173,20,173,52,173,20,173,52, + 173,20,173,20,173,51,181,52,181,52,173,52,173,20,173,20,173,52,181,51, + 181,20,173,19,181,52,181,19,173,6,52,181,4,84,181,141,52,181,84,181, + 84,189,84,189,84,181,85,189,116,189,85,189,166,49,98,8,162,16,162,16, + 130,16,3,162,16,136,130,16,130,16,162,16,227,32,195,24,98,16,97,8, + 65,16,5,65,8,199,65,16,97,16,129,24,161,32,194,40,226,48,2,57, + 67,73,67,73,132,81,100,81,100,81,197,89,230,89,197,89,68,73,68,73, + 100,73,67,65,132,73,197,81,136,98,104,106,137,106,169,114,136,106,104,106, + 136,106,136,106,202,114,233,122,10,123,168,114,70,106,38,106,5,106,228,105, + 196,113,163,113,131,113,98,105,65,105,66,89,66,81,160,64,229,81,75,123, + 104,98,43,123,43,123,75,131,99,89,1,73,1,73,5,106,228,105,195,105, + 195,105,130,105,98,97,66,89,65,81,1,73,225,64,34,57,234,106,233,122, + 169,106,43,123,42,123,42,123,4,10,123,135,234,114,233,122,10,123,169,114, + 201,114,234,114,234,122,3,201,114,3,169,106,130,104,98,234,114,37,3,138, + 236,90,236,90,235,90,12,91,236,90,12,91,236,90,12,91,12,91,236,90, + 13,12,91,129,44,99,7,12,91,139,44,91,12,91,12,91,44,99,12,91, + 12,99,12,99,44,99,12,91,44,99,12,99,3,44,99,159,13,99,44,91, + 12,99,44,91,12,99,44,99,12,91,45,99,13,91,12,91,45,91,13,91, + 12,91,12,99,12,91,12,91,45,91,44,99,12,91,13,91,44,91,12,91, + 44,99,44,91,12,91,44,99,12,91,44,91,44,91,13,91,44,99,3,12, + 91,135,45,91,44,91,12,91,13,91,12,91,12,91,45,91,12,12,91,135, + 12,83,12,91,236,90,236,90,12,91,12,91,236,82,7,12,91,3,203,82, + 135,12,91,110,99,208,107,49,116,50,116,82,116,82,124,3,114,124,129,115, + 124,3,146,124,137,115,124,147,124,82,124,203,74,4,25,98,8,162,16,130, + 16,130,16,4,98,8,130,130,16,98,8,4,130,16,3,163,16,147,37,25, + 74,58,78,91,143,99,175,107,175,107,175,99,143,99,110,91,236,82,106,58, + 134,41,228,16,200,41,110,91,17,116,114,124,115,124,115,124,23,147,124,3, + 179,124,131,147,124,179,124,147,124,3,179,124,131,179,132,179,124,179,124,3, + 179,132,15,179,124,139,179,132,179,124,179,132,179,132,179,124,179,132,180,132, + 180,124,180,132,179,132,180,132,4,179,124,140,180,132,179,124,180,124,179,124, + 179,132,179,124,180,132,180,132,179,124,179,132,180,124,179,124,3,180,132,133, + 179,124,212,124,180,132,180,132,179,132,4,180,132,135,212,132,211,132,211,132, + 180,132,212,132,180,132,212,132,6,180,132,129,179,132,8,180,132,129,179,132, + 5,180,132,129,179,132,9,180,132,131,179,132,179,132,180,132,4,179,132,148, + 180,132,179,132,179,124,179,124,179,132,179,132,180,132,179,132,179,132,147,132, + 179,132,179,132,147,132,146,140,45,107,110,115,77,107,77,107,82,124,180,124, + 5,179,132,129,180,132,10,179,132,133,180,132,179,132,179,132,180,132,180,132, + 5,179,132,139,147,124,147,124,114,116,18,108,209,83,80,67,245,140,117,157, + 113,124,101,41,167,49,3,199,49,153,231,57,199,49,231,57,232,57,232,57, + 8,58,8,58,40,58,40,66,232,49,199,8,198,16,198,16,133,8,133,8, + 166,8,198,8,133,8,100,8,131,8,132,8,133,8,101,0,172,82,146,156, + 4,20,173,130,19,173,52,181,3,20,173,129,19,173,3,20,173,134,19,173, + 51,173,52,173,52,181,20,173,20,173,8,52,181,3,84,181,140,52,181,84, + 181,85,189,85,189,85,181,116,189,149,189,73,74,97,8,162,16,162,16,130, + 16,4,162,16,3,130,16,146,97,16,65,16,97,16,129,24,129,24,162,32, + 194,40,226,48,3,49,67,65,67,73,100,73,132,73,133,81,100,73,164,81, + 6,98,197,97,3,165,89,190,71,98,137,106,103,98,230,89,6,90,6,98, + 71,106,103,106,136,114,168,122,168,114,136,114,103,106,39,98,168,106,42,123, + 169,106,10,123,42,131,42,131,197,89,1,73,99,89,163,97,196,105,195,113, + 228,121,4,122,4,114,4,114,5,114,228,105,1,73,100,73,42,123,136,106, + 10,115,42,123,107,131,229,105,192,64,225,72,34,73,34,81,34,81,66,89, + 99,89,131,89,164,89,229,97,6,98,70,106,136,106,10,123,10,123,168,106, + 42,123,42,123,10,123,233,114,233,114,169,114,3,234,114,141,201,114,169,114, + 201,114,169,106,169,106,136,106,104,98,72,90,71,90,39,90,6,82,230,81, + 6,82,107,3,135,12,91,236,90,12,91,236,90,236,90,12,99,236,90,6, + 12,91,129,12,99,5,12,91,129,12,99,5,12,91,129,12,99,3,12,91, + 141,12,99,12,99,12,91,12,99,12,91,44,99,12,91,12,91,44,99,44, + 91,12,91,44,99,12,99,3,12,91,163,44,91,12,99,44,99,12,91,44, + 99,45,99,12,91,44,91,44,91,12,91,45,99,13,99,45,91,45,99,44, + 99,12,91,45,91,12,91,45,91,44,91,12,91,12,99,12,99,44,99,12, + 99,12,91,12,91,45,91,12,91,44,91,12,91,45,91,13,91,12,91,44, + 91,3,12,91,129,44,91,12,12,91,3,12,83,5,12,91,129,12,83,3, + 12,91,145,12,83,12,91,13,91,12,83,203,82,171,82,236,90,13,91,110, + 99,240,107,49,116,82,116,82,116,114,124,82,116,114,124,146,124,3,114,124, + 175,146,124,114,124,147,124,81,116,171,74,228,16,97,8,130,16,130,16,97, + 8,98,8,98,8,98,16,97,8,98,8,98,8,130,16,130,16,98,8,130, + 16,163,16,163,16,195,16,102,33,139,66,78,91,142,99,175,99,143,99,143, + 99,175,99,208,107,142,91,78,91,139,66,167,41,228,16,204,74,208,107,114, + 124,115,124,115,124,147,124,147,124,147,132,147,124,179,124,15,147,124,136,179, + 124,179,124,147,124,179,124,147,124,147,124,179,124,147,124,4,179,124,132,179, + 132,179,124,179,124,179,132,4,179,124,132,180,124,180,132,179,124,179,132,3, + 179,124,153,179,132,179,124,147,124,180,132,179,124,180,124,179,132,179,132,180, + 132,179,124,179,124,180,132,179,132,180,132,179,124,180,132,179,132,180,132,179, + 124,179,132,179,132,180,132,180,132,180,124,180,132,3,179,132,137,180,132,179, + 132,179,132,180,132,180,132,180,124,180,132,180,132,180,124,3,180,132,129,212, + 132,3,180,132,132,179,124,212,132,211,132,179,132,4,212,132,133,180,132,212, + 132,212,132,180,132,179,132,5,180,132,129,179,132,13,180,132,132,179,132,180, + 132,180,132,212,132,4,180,132,129,212,132,9,180,132,132,180,124,179,132,179, + 132,180,132,3,179,132,140,180,132,82,124,82,132,45,107,110,115,77,107,109, + 107,82,124,212,132,179,132,179,132,179,124,3,179,132,129,180,132,8,179,132, + 3,180,132,8,179,132,160,147,124,147,124,114,116,50,108,209,91,112,75,212, + 132,117,157,146,140,134,41,166,49,199,49,199,49,231,57,199,49,199,57,231, + 57,232,57,232,49,232,57,8,58,8,58,40,58,8,58,199,8,231,16,197, + 16,132,8,133,8,165,8,198,8,165,8,3,132,8,132,133,8,68,0,107, + 74,113,148,3,20,173,144,19,173,20,173,19,173,19,173,51,173,19,173,52, + 173,20,173,52,173,19,173,243,172,19,173,52,173,52,181,52,181,51,181,5, + 52,181,130,84,181,52,181,3,84,181,140,52,181,52,181,85,189,85,181,85, + 181,84,181,84,189,149,189,235,98,97,8,163,24,163,24,3,162,16,129,130, + 16,3,162,16,139,130,16,130,24,226,48,2,57,100,73,100,65,100,65,132, + 65,197,81,165,81,100,73,3,132,73,186,197,81,165,73,6,90,103,106,71, + 106,39,106,71,106,136,114,169,114,233,122,168,114,103,106,103,106,70,106,70, + 114,37,114,229,113,195,113,163,105,99,97,33,81,2,73,67,73,43,123,169, + 106,233,114,43,131,43,131,229,97,225,64,164,89,70,114,69,114,4,114,4, + 114,228,113,195,105,195,105,98,89,66,81,193,72,226,56,201,106,201,114,201, + 106,75,131,43,123,233,122,197,89,229,89,39,98,71,106,136,114,201,122,233, + 122,10,123,42,123,43,131,5,75,131,151,169,114,10,115,75,131,43,131,233, + 114,201,106,169,106,169,106,136,98,104,90,72,90,6,90,6,82,6,82,198, + 81,230,81,230,81,197,89,197,89,229,89,229,97,229,97,5,98,130,3,131, + 235,90,236,90,236,90,5,12,91,132,236,90,12,91,12,91,12,99,5,12, + 91,186,12,99,12,91,12,99,12,91,12,91,44,99,12,99,12,91,12,91, + 12,99,12,91,12,91,44,99,12,91,13,91,45,91,44,91,44,99,12,91, + 12,91,45,99,12,99,45,99,12,91,12,99,13,99,44,99,44,91,12,99, + 45,99,12,99,44,91,45,91,12,99,45,91,45,91,44,91,45,91,13,91, + 44,91,45,99,12,91,44,91,13,91,45,99,45,99,12,91,44,91,44,99, + 12,91,45,91,12,91,44,91,45,91,45,91,12,91,44,91,45,91,4,12, + 91,131,45,91,12,91,45,99,3,12,91,132,44,91,12,91,12,91,45,91, + 9,12,91,133,12,83,12,91,236,90,12,91,236,90,4,12,91,129,13,91, + 3,12,91,137,236,82,203,82,171,82,236,90,45,91,143,107,17,108,50,116, + 82,116,5,114,124,131,146,124,114,124,146,124,3,114,124,133,82,116,45,83, + 167,33,130,16,130,8,3,98,8,135,97,8,97,8,98,8,98,16,130,16, + 98,16,98,8,3,130,16,147,163,16,228,24,9,58,236,82,110,91,142,99, + 143,99,111,99,143,99,208,107,49,116,240,107,208,107,111,91,205,82,69,25, + 134,33,45,83,49,116,3,147,124,129,115,124,11,147,124,129,179,124,3,147, + 124,136,179,124,147,124,147,124,179,124,147,124,179,124,147,124,147,124,3,179, + 124,129,147,124,4,179,124,133,180,124,179,132,180,132,212,132,147,124,4,179, + 132,3,180,132,3,179,124,129,179,132,3,180,132,146,179,124,180,132,179,124, + 179,132,180,124,180,132,179,132,180,124,180,132,180,124,180,132,180,124,180,132, + 180,132,180,124,180,132,180,124,180,124,6,180,132,131,180,124,180,132,212,132, + 3,180,132,129,180,124,3,180,132,131,212,132,212,132,179,132,3,212,132,129, + 180,132,5,212,132,133,180,132,212,132,180,132,212,132,180,132,7,212,132,132, + 211,132,180,132,180,132,212,132,3,180,132,138,212,132,179,132,180,132,212,132, + 180,132,180,132,212,132,180,132,212,132,179,132,3,180,132,134,212,132,180,132, + 211,132,180,132,180,132,212,132,6,180,132,131,179,132,180,132,179,132,3,180, + 132,137,179,132,179,132,146,140,77,107,109,115,77,107,45,107,240,123,212,132, + 6,179,132,131,180,132,180,124,180,132,4,179,132,135,180,132,211,132,180,132, + 180,132,179,132,179,132,180,132,6,179,132,140,179,124,147,124,114,116,50,100, + 209,91,112,75,147,124,150,165,146,132,134,49,166,49,167,49,3,199,49,154, + 231,49,199,49,231,57,231,49,232,57,231,57,232,57,8,58,232,57,231,16, + 230,16,230,24,133,8,133,8,165,8,198,8,165,8,132,8,131,8,132,16, + 133,8,101,0,42,66,81,148,20,173,20,173,6,19,173,4,20,173,131,243, + 164,243,172,19,173,3,52,181,129,52,173,5,52,181,131,84,181,52,181,52, + 181,3,84,181,130,52,181,84,181,3,85,189,188,85,181,182,197,142,123,130, + 16,130,16,162,16,163,24,162,16,163,24,162,16,163,24,163,24,162,24,130, + 16,162,24,68,65,132,73,6,90,104,90,72,90,104,90,136,98,104,98,39, + 90,71,98,71,106,104,106,136,106,104,106,103,106,71,106,202,114,233,114,201, + 106,11,123,43,123,168,114,99,81,66,81,66,81,131,97,98,105,130,105,163, + 113,228,121,4,114,228,113,163,97,1,81,193,56,201,114,233,114,169,106,43, + 131,75,131,168,114,192,64,2,65,34,81,65,81,3,34,81,160,67,81,66, + 81,99,89,132,81,229,89,39,90,10,115,42,131,136,98,43,123,43,131,75, + 131,107,131,75,131,107,131,107,131,108,131,75,131,75,131,43,131,43,131,42, + 123,10,123,234,114,233,106,201,106,169,98,71,90,137,98,168,106,103,98,6, + 82,3,230,81,143,229,81,229,89,229,89,5,98,5,98,5,106,6,106,38, + 106,37,106,37,106,69,114,69,114,70,114,69,114,70,114,63,3,130,236,90, + 236,90,13,12,91,129,12,99,3,12,91,133,12,99,12,99,12,91,12,99, + 12,99,10,12,91,148,44,91,12,99,44,99,12,91,44,91,45,99,44,99, + 12,99,12,91,12,99,44,91,44,99,44,99,12,99,12,91,44,91,12,91, + 44,91,13,91,45,91,3,44,91,141,12,91,45,91,44,91,44,91,45,99, + 12,99,13,91,45,91,12,99,44,91,12,91,45,91,13,91,3,12,91,129, + 44,91,3,12,91,133,45,91,12,91,45,91,12,91,44,91,4,12,91,129, + 13,91,12,12,91,130,236,82,236,90,10,12,91,137,236,82,203,82,203,82, + 236,90,45,99,175,107,17,116,82,116,82,116,10,114,124,139,114,116,114,116, + 175,99,204,66,134,33,162,16,130,16,130,16,130,8,130,8,98,16,5,98, + 8,157,130,16,130,8,130,16,130,8,37,25,138,74,78,99,110,99,110,91, + 143,99,110,91,111,91,208,107,81,116,49,116,240,107,17,108,143,99,106,66, + 227,16,138,66,208,107,114,124,147,124,147,124,115,124,147,124,147,124,179,124, + 7,147,124,129,179,124,7,147,124,133,179,124,179,124,147,124,179,124,147,124, + 6,179,124,138,179,132,179,124,179,124,179,132,114,124,16,124,45,99,208,115, + 212,132,180,132,4,179,132,142,180,132,179,124,179,124,179,132,179,124,179,132, + 180,124,180,124,179,124,180,124,180,132,180,124,179,124,180,124,4,180,132,141, + 212,124,180,132,180,132,179,132,179,132,180,124,180,132,180,132,180,124,180,124, + 179,124,212,124,212,124,7,180,132,133,212,132,180,132,212,132,212,132,180,132, + 4,212,132,129,180,132,7,212,132,3,180,132,151,212,132,180,132,212,132,180, + 132,180,132,212,132,212,132,180,132,212,132,180,132,212,132,180,132,212,132,212, + 132,180,132,180,132,212,132,212,132,180,132,212,132,180,132,212,132,212,132,5, + 180,132,130,212,132,212,132,13,180,132,139,179,132,180,132,180,132,179,132,178, + 140,44,107,77,107,240,123,77,107,174,115,179,132,3,180,132,134,179,132,180, + 132,180,132,179,132,180,132,180,132,5,179,132,134,180,132,179,132,180,124,179, + 132,179,132,180,132,6,179,132,160,147,132,147,124,115,116,50,108,209,83,144, + 75,115,124,182,165,243,140,166,49,134,49,167,49,199,49,199,49,231,57,199, + 49,231,57,231,57,199,49,231,57,231,57,232,57,232,57,8,58,231,8,231, + 16,230,24,165,8,133,8,165,8,166,8,166,8,3,132,8,134,133,8,100, + 0,234,57,49,148,244,172,20,173,3,19,173,4,20,173,138,19,173,52,173, + 19,173,243,164,243,164,19,173,52,181,19,173,52,181,52,173,7,52,181,7, + 84,181,3,85,189,201,149,197,16,140,227,24,130,24,163,24,162,16,162,16, + 162,24,162,16,162,16,163,24,162,16,130,16,162,24,133,65,230,89,71,98, + 136,106,136,98,136,106,103,106,103,106,70,106,38,114,5,114,196,105,164,97, + 131,89,99,81,34,73,39,90,42,123,136,98,10,115,43,123,201,114,34,73, + 1,73,99,89,228,105,196,105,4,114,4,114,228,113,228,105,228,105,164,97, + 1,73,160,56,104,98,10,123,168,98,43,123,43,123,10,123,99,81,132,81, + 164,81,229,89,38,98,71,106,136,106,169,114,201,122,234,122,10,123,43,131, + 75,131,43,131,107,131,136,106,43,123,43,131,3,43,123,139,10,123,234,114, + 233,114,169,106,168,98,104,98,103,98,71,90,70,90,38,90,6,82,3,6, + 90,150,5,90,5,90,6,98,37,98,37,106,38,106,38,106,70,106,70,106, + 70,114,70,114,102,114,102,114,102,122,134,122,134,122,135,122,134,114,102,114, + 70,114,37,106,37,98,111,3,129,236,90,3,12,91,133,236,90,12,91,236, + 90,12,91,236,90,4,12,91,129,12,99,9,12,91,130,44,99,12,91,3, + 44,99,174,12,91,12,91,12,99,44,91,12,99,12,91,45,99,44,99,12, + 91,12,91,44,91,12,91,13,91,12,99,44,99,12,99,44,99,12,91,44, + 99,12,99,12,91,44,91,13,91,12,91,12,91,44,99,12,99,44,99,12, + 99,45,91,45,91,13,91,45,91,45,99,44,91,12,91,44,99,45,99,44, + 91,44,91,13,91,44,91,44,91,12,91,44,99,44,91,3,12,91,134,44, + 91,12,91,44,91,12,91,45,91,13,91,4,12,91,130,44,91,12,99,8, + 12,91,133,236,90,12,83,12,91,12,91,236,90,3,12,91,134,12,83,12, + 83,12,91,12,83,13,91,13,91,3,203,82,135,12,91,78,99,207,107,49, + 116,82,116,114,124,82,124,5,114,124,131,146,124,114,124,115,124,3,114,116, + 134,17,108,143,91,172,58,102,25,195,16,162,16,8,130,16,151,98,16,130, + 8,130,16,65,8,167,49,12,91,174,107,143,99,110,91,110,99,78,91,143, + 91,240,107,82,124,82,124,16,116,17,116,240,115,13,91,37,25,135,33,78, + 91,82,124,6,147,124,129,179,124,15,147,124,132,179,124,147,124,179,124,147, + 124,5,179,124,3,179,132,131,180,124,179,124,240,115,3,236,90,130,114,124, + 212,132,4,179,124,146,180,132,179,132,180,124,179,132,179,124,180,132,179,132, + 179,124,180,132,180,132,179,132,180,132,180,132,179,132,180,132,180,132,179,132, + 212,132,3,180,132,130,179,132,211,132,3,180,132,146,180,124,212,132,180,132, + 212,124,212,124,180,132,212,124,179,132,180,124,212,132,180,132,212,132,212,132, + 212,124,180,132,212,132,180,132,180,132,13,212,132,3,180,132,3,212,132,130, + 180,132,180,132,4,212,132,153,180,132,212,132,212,132,180,132,180,132,212,132, + 180,132,211,132,212,132,212,132,180,132,180,132,212,132,180,132,212,132,180,132, + 212,132,180,132,180,132,212,132,180,132,212,132,180,132,212,132,212,124,6,180, + 132,147,212,132,212,132,180,132,212,132,115,124,143,107,110,115,45,107,150,173, + 203,90,77,107,179,132,211,132,179,132,180,132,179,132,180,132,180,132,211,132, + 3,180,132,3,179,132,152,180,132,179,132,179,124,180,124,179,124,179,124,179, + 132,180,132,179,132,179,132,179,124,179,124,179,132,179,132,147,124,115,116,50, + 108,209,83,144,75,82,116,182,165,211,140,166,49,134,41,4,199,49,145,231, + 49,231,57,231,57,199,49,231,57,231,57,199,49,8,58,8,58,231,8,231, + 16,6,25,133,8,133,8,165,8,198,8,166,8,3,132,8,132,133,8,68, + 0,168,49,16,140,6,20,173,130,52,181,19,173,4,20,173,135,19,173,19, + 173,20,173,52,181,19,173,52,173,20,173,7,52,181,162,84,181,84,181,52, + 181,84,181,52,181,84,181,52,181,84,189,84,181,85,189,149,197,178,156,69, + 41,130,16,162,24,163,24,162,16,130,16,162,16,162,24,162,16,163,16,130, + 16,130,16,7,74,201,114,201,114,71,106,132,81,131,81,131,89,98,89,98, + 105,98,105,3,131,105,147,163,97,99,89,225,64,132,73,43,123,136,106,10, + 115,42,123,10,123,100,81,225,64,34,73,99,89,66,89,66,89,33,89,33, + 81,1,81,34,81,3,67,73,140,104,98,42,123,136,98,43,123,43,123,43, + 131,234,122,234,122,10,123,43,123,43,131,43,131,6,75,131,146,42,123,10, + 123,10,115,136,98,202,106,233,114,104,90,104,90,39,90,39,82,6,82,230, + 81,6,90,6,82,6,90,5,98,38,98,37,98,3,38,106,152,70,106,70, + 106,70,114,70,114,102,114,102,114,135,122,134,122,135,122,135,130,135,130,167, + 130,135,122,134,122,102,106,70,106,5,90,197,81,164,65,132,65,99,57,34, + 41,2,41,226,32,104,3,132,236,90,236,98,236,90,12,99,3,12,91,129, + 12,99,3,12,91,129,12,99,4,12,91,129,12,99,3,12,91,130,12,99, + 12,99,5,12,91,158,12,99,12,91,44,99,12,91,44,99,12,91,44,99, + 44,91,12,91,44,99,12,91,44,99,44,91,44,91,12,91,12,91,44,99, + 12,91,44,99,12,99,44,91,45,91,45,91,44,91,44,99,44,99,44,91, + 12,91,13,91,13,91,3,44,91,150,45,91,45,91,13,91,45,91,12,91, + 44,91,13,91,44,91,44,91,12,91,12,91,13,91,44,91,12,91,13,91, + 12,91,44,99,12,91,44,99,12,91,13,91,44,91,3,12,91,132,13,91, + 44,91,12,91,44,91,22,12,91,140,203,82,203,82,236,90,45,91,143,99, + 240,107,49,116,82,116,82,124,114,124,114,124,114,116,5,114,124,138,114,116, + 82,116,82,116,50,108,50,108,241,99,143,91,139,66,102,33,163,16,10,130, + 16,151,65,8,130,8,171,82,142,107,207,115,175,107,143,99,110,91,78,91, + 143,91,17,108,82,116,114,124,49,124,17,116,50,116,175,107,8,58,4,25, + 139,58,17,108,146,124,115,124,5,147,124,129,179,124,3,147,124,130,179,124, + 147,124,4,179,124,5,147,124,134,179,124,147,124,147,124,179,124,179,132,179, + 132,4,179,124,150,179,132,180,132,212,132,114,124,207,115,236,98,13,99,236, + 98,236,90,244,132,211,132,180,132,180,132,180,124,179,132,180,132,179,132,180, + 132,180,132,179,132,180,124,180,124,4,180,132,135,179,132,180,132,212,132,180, + 132,180,132,179,132,179,132,5,180,132,137,212,132,180,132,212,132,180,132,212, + 132,180,132,180,132,212,132,180,132,4,212,132,130,180,132,180,132,28,212,132, + 132,180,132,212,132,180,132,180,132,3,212,132,131,180,132,212,132,211,132,4, + 212,132,129,180,132,6,212,132,133,180,132,212,132,212,132,180,132,180,132,3, + 212,132,159,180,132,180,132,212,132,212,132,180,132,212,132,212,132,180,132,212, + 132,147,124,77,107,45,107,85,165,203,90,45,107,113,124,212,132,212,132,180, + 132,180,132,211,132,180,132,180,132,212,132,211,132,179,132,211,132,180,132,179, + 132,179,124,180,132,3,180,124,147,179,124,179,124,180,132,179,132,180,132,179, + 132,212,132,179,132,179,132,147,124,115,116,50,108,209,91,176,75,50,108,182, + 165,85,157,8,58,69,41,4,199,49,133,199,57,199,49,231,57,232,57,199, + 49,3,231,57,151,8,58,231,16,232,16,6,25,164,16,132,8,165,8,166, + 8,165,8,132,8,99,8,132,8,132,8,101,0,104,41,207,131,243,172,20, + 173,19,173,52,173,20,173,20,173,19,173,4,20,173,144,52,173,20,173,20, + 173,52,173,52,181,19,173,20,181,52,181,52,181,20,173,20,181,20,173,52, + 181,52,173,52,181,84,181,3,52,181,138,84,181,52,181,84,181,52,181,84, + 189,84,189,117,189,19,173,231,57,130,16,3,163,24,188,162,16,162,24,162, + 16,162,16,163,24,163,16,130,16,198,65,233,114,234,114,71,106,225,64,66, + 81,164,97,163,105,228,105,228,105,5,114,228,113,228,105,195,97,132,97,225, + 72,2,57,10,115,169,106,233,114,42,123,42,123,38,98,1,57,99,73,99, + 81,197,89,229,89,38,98,103,106,136,106,201,106,233,122,10,123,10,123,75, + 131,43,131,169,106,10,115,43,131,43,131,75,131,75,123,42,123,10,123,234, + 122,234,114,201,106,169,106,137,106,104,98,71,90,39,90,3,6,82,142,5, + 82,6,90,6,90,6,98,6,98,38,98,38,106,70,106,70,106,70,114,102, + 114,102,114,103,122,102,122,4,135,122,146,167,122,134,122,167,122,135,114,102, + 114,70,106,38,98,5,98,228,81,196,73,131,65,67,49,34,41,2,41,226, + 32,226,32,193,32,194,24,3,226,32,131,2,33,67,49,35,49,76,3,129, + 12,91,3,236,90,130,12,91,236,90,10,12,91,129,12,99,3,12,91,131, + 12,99,12,91,44,99,5,12,91,176,44,91,12,91,44,91,12,99,12,91, + 12,99,12,91,12,91,12,99,44,91,44,99,44,91,44,99,45,99,12,91, + 44,99,12,91,12,99,12,99,12,91,44,91,44,91,44,99,44,99,12,91, + 12,91,45,91,13,91,12,91,45,91,44,91,44,91,13,91,44,99,12,99, + 45,91,44,99,12,91,45,91,44,99,44,91,12,91,45,99,44,91,12,91, + 44,91,12,91,44,91,3,12,91,133,44,91,12,91,12,91,44,91,45,91, + 4,12,91,131,13,91,12,91,44,91,4,12,91,129,12,83,5,12,91,129, + 12,83,3,12,91,142,12,83,12,83,12,91,13,91,13,91,12,83,203,82, + 203,82,236,90,45,91,143,99,16,108,82,116,82,116,4,114,124,3,114,116, + 143,114,124,114,116,114,116,82,116,82,116,50,108,17,100,17,100,240,99,13, + 83,8,50,228,24,98,8,130,8,98,8,3,130,16,3,98,8,156,97,8, + 162,16,167,49,77,99,239,123,240,115,143,107,142,99,78,91,46,83,144,91, + 18,108,82,116,114,132,81,124,49,116,49,116,17,116,139,74,36,25,199,41, + 208,99,114,124,115,124,147,124,147,124,179,124,179,124,4,147,124,136,179,124, + 147,124,147,124,179,124,147,124,179,124,147,124,179,124,3,147,124,5,179,124, + 154,179,132,179,132,179,124,179,124,179,132,179,124,179,124,179,132,212,132,114, + 124,174,115,236,98,12,99,12,91,171,82,240,115,244,132,180,132,180,124,180, + 132,179,132,180,124,179,124,179,124,180,124,179,132,6,180,132,144,212,132,180, + 132,211,132,180,132,180,132,179,132,212,132,180,132,212,132,212,124,180,132,212, + 132,212,132,180,132,180,132,212,132,3,180,132,5,212,132,129,180,132,30,212, + 132,132,180,132,212,132,212,132,180,132,11,212,132,132,180,132,212,132,212,132, + 212,124,18,212,132,141,147,132,244,148,12,99,174,115,211,148,235,98,77,115, + 240,115,245,132,211,132,212,132,179,132,212,132,4,180,132,129,212,132,3,180, + 132,3,180,124,129,212,124,4,180,124,144,179,124,179,132,179,132,180,132,179, + 132,179,132,147,124,115,116,82,108,242,91,177,83,242,99,215,173,20,149,40, + 66,69,33,3,199,49,154,199,57,199,49,199,49,231,57,231,49,199,49,199, + 57,231,57,231,57,8,58,8,17,231,16,38,33,165,16,132,8,165,8,198, + 8,198,16,132,8,131,8,132,8,132,8,101,8,71,33,175,123,243,164,8, + 20,173,133,19,173,19,173,20,173,20,173,52,173,3,20,173,130,20,181,52, + 181,3,19,173,129,20,181,6,52,181,143,52,173,84,181,84,181,52,181,84, + 181,85,189,84,181,117,189,84,181,105,82,130,16,163,24,163,24,162,24,163, + 16,5,162,16,158,130,16,133,49,201,114,234,122,136,106,34,65,34,73,131, + 89,131,89,131,97,98,97,66,89,66,89,65,81,34,81,34,73,34,65,100, + 65,10,115,201,114,202,106,43,123,42,123,10,123,168,106,201,114,233,114,10, + 123,42,123,43,123,3,75,131,194,43,131,43,131,42,123,10,123,10,123,169, + 106,169,106,234,114,169,106,136,98,136,98,71,98,71,90,39,90,7,90,6, + 90,6,90,6,82,6,90,38,90,38,98,37,98,37,98,38,106,38,106,102, + 106,70,114,70,114,102,114,102,122,135,122,167,122,167,122,135,122,167,122,135, + 122,135,122,102,114,102,114,102,106,38,98,5,90,196,81,164,73,164,65,99, + 49,66,49,34,41,2,33,226,32,226,32,193,32,226,32,226,32,225,32,2, + 33,34,41,99,57,99,49,132,57,132,57,132,65,132,65,99,57,99,57,67, + 49,48,3,129,236,90,4,12,91,129,236,90,6,12,91,129,12,99,4,12, + 91,130,12,99,12,91,3,12,99,139,45,99,12,91,44,99,12,91,12,99, + 12,91,44,99,12,91,44,99,12,99,12,99,3,44,91,160,12,99,44,91, + 13,99,45,91,44,99,44,91,45,99,44,99,13,91,44,91,44,91,13,91, + 44,99,12,91,44,91,45,91,44,99,44,99,45,91,45,91,44,99,44,91, + 44,91,45,91,44,91,12,99,12,91,45,91,45,91,13,99,12,91,44,99, + 4,44,91,135,45,91,12,91,45,91,12,91,45,99,12,91,44,91,4,12, + 91,3,44,91,14,12,91,130,236,90,12,83,6,12,91,190,13,83,12,91, + 236,82,203,82,204,82,12,91,77,99,175,107,17,108,82,116,82,116,114,116, + 114,124,114,124,114,116,114,116,114,124,114,116,114,116,82,116,82,116,82,108, + 82,116,49,108,17,100,241,99,241,99,110,91,138,66,134,41,4,25,228,24, + 228,24,4,25,227,24,195,24,163,16,195,24,4,25,69,33,231,57,203,82, + 239,123,48,132,240,123,175,107,143,107,78,91,46,83,143,91,241,107,50,116, + 114,132,82,124,49,116,49,116,50,116,13,83,134,41,4,25,110,91,50,116, + 5,147,124,129,179,124,5,147,124,140,147,132,179,124,179,124,147,124,147,124, + 179,124,179,124,147,124,179,124,147,124,179,124,180,124,3,179,124,139,179,132, + 179,124,179,124,179,132,179,124,179,124,180,132,212,132,81,124,142,107,12,91, + 3,12,99,133,45,99,147,124,212,132,180,132,179,132,3,180,132,130,179,132, + 180,124,3,180,132,132,212,132,180,132,212,132,180,124,4,180,132,141,212,132, + 212,132,180,124,212,132,180,132,212,124,180,132,212,132,212,132,180,132,212,132, + 212,132,180,132,57,212,132,129,212,140,10,212,132,156,180,132,212,132,212,132, + 180,132,180,132,211,132,211,132,49,116,82,124,171,90,49,132,114,132,12,107, + 109,107,110,107,21,141,180,132,180,132,212,132,180,132,179,132,211,132,180,132, + 180,132,212,132,180,132,180,132,211,132,3,180,124,130,212,124,212,124,4,180, + 124,143,179,132,179,132,212,132,180,132,179,124,147,124,115,116,50,108,241,91, + 177,83,177,91,215,173,53,149,105,74,37,33,6,199,49,130,231,57,199,57, + 3,199,49,149,231,57,8,58,40,17,231,16,39,33,197,16,132,8,165,8, + 166,8,166,8,164,8,99,8,132,8,132,8,101,8,7,25,142,115,211,164, + 20,173,20,173,19,173,6,20,173,131,243,172,243,172,19,173,4,20,173,133, + 52,173,20,173,19,173,20,173,20,173,3,52,181,129,52,173,4,52,181,4, + 84,181,138,84,189,85,189,84,189,85,189,235,98,162,16,163,24,195,24,162, + 24,162,16,4,163,24,170,162,16,130,16,36,41,201,106,234,114,169,114,67, + 73,192,56,34,65,34,73,99,81,131,81,164,89,229,97,6,98,38,98,103, + 106,168,106,169,106,43,131,234,114,168,98,74,131,43,123,43,131,43,131,75, + 131,43,131,43,123,42,123,42,123,10,115,233,106,201,106,169,98,136,98,103, + 98,71,90,71,90,6,82,39,82,39,90,5,6,90,156,38,98,38,98,38, + 106,38,106,70,106,70,106,102,106,102,114,102,114,135,122,135,122,167,122,167, + 122,168,130,167,130,167,122,167,122,102,114,70,106,69,98,5,82,196,73,164, + 73,99,57,99,57,34,49,34,33,2,33,4,225,32,149,226,32,226,32,2, + 41,34,41,35,49,68,49,100,57,132,57,132,65,2,41,132,57,34,49,131, + 57,99,49,131,57,67,49,35,49,67,49,2,41,2,41,225,32,91,3,134, + 235,90,12,91,236,90,12,91,12,91,236,90,11,12,91,132,12,99,12,91, + 12,91,13,99,4,12,91,136,12,99,44,99,44,91,44,99,12,91,12,91, + 44,99,12,91,3,44,99,134,44,91,45,99,12,99,44,91,45,91,44,99, + 3,12,91,172,44,91,44,91,44,99,44,91,44,91,12,99,45,99,44,99, + 12,91,44,91,13,91,12,91,13,91,44,99,44,91,44,91,44,99,45,91, + 44,91,13,91,44,91,45,91,12,91,44,91,12,91,44,99,45,91,12,99, + 44,91,44,91,12,91,45,91,45,91,12,91,45,91,44,91,12,91,45,91, + 44,91,44,91,45,91,44,91,12,91,44,91,16,12,91,141,13,83,12,91, + 12,83,12,91,13,91,203,82,203,74,204,82,12,91,110,91,207,107,49,116, + 82,116,8,114,124,141,114,116,82,116,114,116,82,108,50,108,18,108,241,99, + 241,91,241,99,142,91,12,83,106,66,41,58,3,8,58,158,40,66,40,58, + 41,74,73,74,170,82,235,90,77,99,207,115,81,132,49,132,240,115,175,107, + 142,107,77,91,13,75,111,83,209,107,49,108,114,124,114,132,81,116,49,116, + 82,124,143,99,73,58,195,16,171,66,241,107,147,124,146,124,3,147,124,134, + 179,132,179,124,147,124,179,124,147,124,179,124,3,147,124,143,179,124,147,124, + 147,124,179,124,147,124,179,124,147,124,180,124,179,124,179,124,147,124,179,124, + 179,132,180,132,180,132,3,179,124,132,212,124,212,132,240,115,77,107,3,236, + 90,135,45,99,12,99,143,107,212,132,180,132,180,132,179,132,5,180,132,130, + 211,132,211,132,3,180,132,130,211,132,180,124,3,212,132,134,180,132,212,132, + 212,132,180,132,212,132,180,132,3,212,132,134,180,132,212,132,180,132,180,132, + 212,132,180,132,39,212,132,129,180,132,20,212,132,130,179,132,179,132,3,147, + 124,157,147,132,180,132,212,132,245,140,54,141,86,149,118,149,119,149,147,116, + 179,132,171,82,113,132,239,123,77,107,77,107,44,107,179,132,212,132,212,132, + 180,132,212,132,212,132,211,132,211,132,179,132,179,132,212,132,179,132,180,132, + 3,180,124,187,212,124,180,124,212,132,212,124,180,124,180,132,179,132,179,124, + 179,132,180,132,180,124,147,124,115,124,50,108,242,91,177,75,144,83,247,173, + 150,157,171,74,36,33,167,49,167,49,199,49,199,49,199,57,199,49,199,57, + 231,57,232,57,199,57,231,57,199,49,8,58,40,17,231,16,39,33,197,16, + 132,8,165,8,198,8,198,8,164,8,99,8,132,16,132,8,100,8,230,24, + 45,107,211,164,52,173,19,173,20,173,20,173,19,173,243,172,243,172,20,173, + 20,173,3,243,172,135,20,173,19,173,19,173,20,173,20,173,19,173,52,173, + 3,52,181,133,52,173,19,173,19,173,52,181,52,181,3,84,181,143,52,181, + 84,181,84,181,85,189,84,181,85,189,117,189,142,115,163,24,162,16,195,24, + 162,16,162,16,163,24,162,24,3,163,24,142,130,16,227,32,169,98,10,123, + 234,122,168,106,103,98,136,106,201,114,201,114,10,123,42,123,43,123,43,131, + 3,75,131,144,75,123,42,123,234,114,136,98,42,123,233,114,169,106,168,98, + 136,98,103,98,71,90,39,90,38,90,6,82,6,82,230,81,3,6,90,134, + 5,98,6,98,37,98,38,106,38,106,70,106,4,102,114,130,135,122,134,122, + 4,135,122,170,135,114,103,114,102,106,69,98,38,98,228,89,196,73,131,65, + 99,49,67,49,2,41,2,33,226,32,225,24,226,24,193,32,226,32,226,32, + 2,41,2,41,35,41,67,49,67,49,100,57,100,57,132,57,100,57,132,57, + 100,57,99,57,67,49,67,49,34,41,2,41,67,41,99,57,99,49,34,49, + 226,32,2,41,226,32,225,32,3,226,32,130,2,41,34,41,27,3,131,236, + 90,12,91,236,90,15,12,91,131,12,99,12,91,12,99,4,12,91,155,44, + 99,12,91,44,91,12,91,44,91,12,91,45,99,44,99,12,99,44,99,44, + 99,45,99,44,91,44,99,12,91,44,91,44,99,44,99,12,91,45,99,44, + 91,44,99,12,99,44,91,44,99,44,99,45,91,3,44,91,134,45,91,45, + 91,12,91,45,99,45,91,45,91,3,44,91,143,45,91,44,91,13,91,45, + 91,44,91,45,91,44,91,45,91,12,99,44,91,12,91,12,91,45,91,44, + 91,44,91,6,12,91,132,45,99,12,91,12,91,13,91,16,12,91,129,12, + 83,3,12,91,138,13,91,203,82,203,82,236,90,13,91,111,99,240,107,49, + 116,82,116,82,116,7,114,124,134,114,116,82,116,82,116,50,108,50,108,17, + 100,3,241,99,164,207,107,110,99,12,91,236,90,203,90,235,90,236,90,12, + 91,12,99,45,99,77,107,109,107,142,107,207,115,48,132,81,140,49,132,240, + 115,207,107,142,107,45,91,13,75,111,91,176,99,240,107,114,124,146,132,81, + 124,17,116,49,116,208,107,171,74,4,25,232,41,176,99,114,124,5,147,124, + 6,179,124,136,147,124,179,124,147,124,179,124,179,124,147,124,179,124,147,124, + 7,179,124,140,180,132,180,132,179,124,179,124,179,132,179,132,212,132,16,124, + 45,99,236,90,12,91,13,99,3,45,99,130,114,124,212,132,13,180,132,138, + 211,124,212,132,180,132,212,132,180,132,180,132,212,132,180,132,212,132,180,132, + 30,212,132,129,244,132,30,212,132,162,179,132,179,124,147,124,115,124,114,116, + 83,116,148,116,213,124,87,141,216,157,26,166,155,182,187,190,155,182,90,182, + 25,174,216,173,86,157,21,149,179,140,179,140,81,124,114,132,139,82,16,124, + 207,123,44,107,77,107,77,107,49,124,244,132,212,132,180,132,212,132,3,180, + 132,129,212,132,4,180,132,130,180,124,180,124,3,212,124,131,180,124,212,132, + 211,132,5,180,132,149,179,124,147,124,115,124,50,108,241,91,209,83,112,83, + 247,173,117,157,12,91,4,33,167,49,167,49,199,49,199,49,199,57,199,49, + 199,49,199,57,199,49,199,49,3,231,57,163,72,25,199,16,39,33,197,24, + 132,8,165,8,166,8,166,8,164,16,99,8,132,16,132,8,132,8,198,16, + 13,99,178,164,52,173,19,173,20,173,19,173,19,173,243,172,243,172,19,173, + 20,173,243,172,19,173,20,173,19,173,19,173,20,173,20,173,19,173,20,173, + 20,173,4,52,181,137,19,173,19,173,20,181,84,181,52,181,84,181,84,181, + 52,181,52,181,4,84,181,132,117,189,16,140,227,24,162,24,8,163,24,131, + 130,16,195,24,104,90,3,10,123,4,42,123,217,10,123,10,123,234,122,234, + 114,201,114,201,106,169,106,136,106,136,98,136,98,71,90,136,106,103,98,71, + 90,70,98,38,90,5,90,5,98,6,90,38,98,38,98,38,106,38,106,70, + 106,70,106,103,106,102,114,134,114,134,114,134,122,134,122,135,122,134,122,135, + 122,134,114,102,114,70,106,37,98,5,90,228,81,164,73,132,65,99,57,67, + 49,34,41,34,41,2,41,226,32,225,32,1,33,226,32,2,33,2,41,35, + 41,35,41,67,49,68,49,100,49,99,57,99,57,132,57,100,57,100,57,100, + 49,68,49,67,49,35,41,35,41,2,41,34,41,2,41,2,33,225,32,226, + 32,2,33,2,33,226,32,164,57,67,49,67,49,226,32,2,41,67,41,2, + 41,34,41,67,49,2,41,35,41,201,106,33,3,6,12,91,129,12,99,5, + 12,91,129,12,99,5,12,91,147,12,99,44,99,12,99,44,99,12,91,44, + 99,12,91,44,99,12,91,44,91,12,99,44,99,12,99,44,99,12,91,44, + 99,12,99,45,99,12,91,5,44,99,133,44,91,12,91,12,91,44,91,45, + 99,3,44,99,154,13,99,45,99,44,99,44,99,45,91,45,91,45,99,44, + 91,13,91,45,91,44,91,45,91,12,99,12,91,45,91,44,91,45,91,45, + 99,44,91,13,91,44,91,45,99,12,91,45,91,12,91,45,91,3,12,91, + 133,44,91,12,91,12,91,44,91,44,91,20,12,91,143,44,91,44,91,12, + 91,12,91,45,91,12,91,203,82,203,82,236,90,13,91,143,99,16,108,49, + 116,82,116,114,116,4,114,124,4,114,116,3,82,116,135,50,108,17,108,241, + 99,241,99,17,108,16,124,207,115,3,142,107,159,109,107,142,107,142,107,174, + 115,207,115,207,115,239,123,16,124,81,132,113,140,113,140,49,132,240,115,207, + 107,142,99,45,83,13,83,78,83,143,99,208,107,82,116,114,132,81,124,17, + 116,49,116,241,107,13,83,134,41,37,25,78,91,82,116,4,147,124,134,179, + 124,147,124,147,124,179,124,147,124,179,124,6,147,124,131,179,124,179,124,147, + 124,3,179,124,151,180,124,179,124,179,132,179,132,180,124,180,124,179,124,180, + 124,179,132,179,132,212,132,175,115,204,90,12,99,12,99,45,99,13,99,45, + 99,12,91,175,107,21,141,180,132,180,124,10,180,132,3,212,132,130,180,132, + 180,132,60,212,132,131,179,132,147,132,147,124,3,115,116,167,213,124,119,141, + 250,157,221,190,127,207,255,223,255,239,190,223,219,206,215,181,20,157,16,124, + 77,99,138,82,73,74,8,58,199,49,134,49,101,33,5,25,5,17,196,16, + 233,49,81,132,236,90,207,115,109,115,45,107,77,115,77,107,142,107,21,141, + 180,132,212,132,212,132,180,132,212,132,212,132,211,132,4,180,132,3,180,124, + 152,212,124,180,124,212,124,180,132,180,132,212,132,180,132,179,132,212,132,180, + 132,179,132,147,124,115,116,50,108,242,91,209,83,112,75,23,174,85,157,45, + 91,4,33,166,49,199,49,167,49,4,199,49,152,231,49,199,49,231,49,231, + 49,232,57,7,58,104,25,199,8,39,33,229,24,132,8,165,16,197,16,198, + 16,164,16,131,8,132,8,132,8,133,8,166,16,204,90,146,156,20,173,19, + 173,3,20,173,3,243,172,131,20,173,19,173,243,172,7,19,173,129,20,173, + 4,52,181,130,19,173,20,173,6,52,181,142,84,181,84,181,52,181,85,181, + 84,181,117,189,146,156,4,33,163,16,195,24,194,24,163,16,163,24,163,16, + 3,163,24,139,162,16,130,16,39,82,10,123,233,114,201,114,201,106,201,106, + 168,106,168,106,136,106,3,103,98,163,71,98,70,98,38,98,38,98,70,98, + 38,98,6,98,38,98,38,98,5,90,229,89,229,97,229,89,102,114,103,114, + 102,122,135,114,135,122,167,122,135,122,167,122,135,122,102,122,102,114,70,106, + 37,98,5,90,228,81,164,73,132,65,99,57,66,49,34,41,2,41,1,33, + 3,225,32,135,226,32,226,32,3,41,35,41,67,49,68,49,99,57,3,100, + 57,136,99,57,132,57,100,49,100,49,68,49,67,41,34,41,34,41,3,2, + 41,129,2,33,3,2,41,150,226,32,2,41,2,41,2,33,2,41,2,41, + 2,33,2,33,2,41,226,32,132,57,67,49,132,57,226,40,2,41,99,49, + 99,57,196,65,164,65,67,57,226,32,11,99,113,3,129,236,90,5,12,91, + 196,236,90,12,99,12,91,12,91,12,99,12,99,12,91,12,99,12,91,12, + 91,44,99,12,99,12,91,44,91,12,91,12,91,44,99,12,91,12,91,44, + 99,12,91,44,99,12,99,44,99,44,99,12,99,44,99,44,99,12,99,44, + 99,12,91,12,91,45,99,12,91,44,99,44,99,44,91,44,99,12,91,45, + 99,44,91,45,99,44,99,12,99,44,91,44,91,44,99,44,91,44,99,12, + 91,44,91,45,99,45,91,12,91,45,99,45,91,44,91,45,91,45,99,13, + 91,13,99,45,99,12,91,45,91,45,91,44,91,45,91,12,91,3,44,91, + 135,44,99,12,91,45,91,13,91,12,91,44,91,44,91,5,12,91,129,44, + 91,14,12,91,147,12,83,12,91,13,91,12,91,12,83,236,82,203,82,203, + 74,12,91,45,91,207,107,17,116,82,124,82,124,114,116,114,116,114,124,114, + 124,115,124,3,114,116,3,82,116,137,82,108,50,108,17,108,241,91,17,100, + 81,116,113,132,81,132,48,132,4,16,124,169,48,132,48,132,48,124,16,124, + 81,132,114,140,178,140,179,140,114,140,48,124,240,115,207,107,111,99,45,91, + 46,83,78,83,111,91,176,99,49,116,114,132,81,124,17,116,17,116,240,115, + 110,99,41,58,228,16,171,66,241,107,179,132,147,124,147,124,147,132,147,124, + 147,124,179,124,179,124,179,132,147,124,179,124,147,124,6,179,124,129,147,124, + 3,179,124,132,180,124,179,132,179,124,180,124,3,179,124,3,180,132,147,179, + 132,208,115,12,99,45,99,12,99,45,99,12,99,13,99,45,99,203,90,50, + 124,244,132,212,132,180,132,180,132,212,132,180,132,212,132,180,132,5,212,132, + 129,180,132,31,212,132,135,244,132,244,132,212,132,212,132,244,132,212,132,244, + 132,3,212,132,134,244,132,212,132,244,132,244,132,212,132,244,132,4,212,132, + 178,179,132,179,132,147,124,147,124,180,124,212,132,245,140,54,141,86,141,119, + 149,151,157,151,149,249,165,90,174,155,182,252,198,60,207,251,206,24,190,52, + 165,80,140,235,98,231,65,4,33,65,8,65,0,66,0,131,0,163,8,196, + 8,228,8,5,17,37,25,69,25,37,25,70,25,38,25,70,25,37,25,41, + 50,143,99,49,124,143,115,207,115,203,90,45,107,109,115,110,115,77,107,212, + 140,3,212,132,136,180,132,212,132,180,132,212,132,212,132,211,132,180,132,180, + 132,3,212,124,131,212,132,212,132,180,132,3,212,132,130,180,132,179,132,3, + 180,132,139,147,124,115,116,50,108,242,91,210,83,80,75,215,173,85,149,142, + 107,4,33,134,49,4,199,49,145,199,57,231,49,199,49,231,57,199,49,231, + 57,199,49,231,57,103,33,200,8,39,33,229,24,132,8,165,8,165,8,132, + 8,164,16,3,132,8,133,100,8,165,8,139,82,114,156,20,173,3,243,172, + 130,19,173,243,172,5,19,173,137,20,173,20,173,19,173,243,172,243,172,20, + 173,52,173,20,181,52,173,8,52,181,132,84,181,84,181,52,181,52,181,3, + 84,181,146,84,189,117,189,20,173,167,49,130,16,195,24,163,24,163,24,195, + 24,163,24,163,24,195,24,163,24,163,24,130,16,101,49,136,106,70,90,5, + 38,90,139,6,98,5,98,37,98,38,98,5,98,37,106,5,98,229,89,228, + 89,229,89,37,98,4,5,98,156,38,106,38,106,102,114,102,106,70,106,37, + 98,5,90,196,81,164,73,131,65,99,57,66,49,34,41,2,33,226,32,226, + 32,225,32,226,32,226,32,2,33,2,33,34,41,35,41,67,49,99,49,99, + 57,132,57,132,57,3,100,57,136,67,49,67,49,67,41,34,41,34,41,2, + 41,2,41,2,33,3,226,32,131,2,33,2,33,226,32,5,2,41,129,2, + 33,4,2,41,3,2,33,4,2,41,132,67,41,67,49,164,65,1,49,3, + 2,41,133,34,41,1,33,1,41,226,32,165,57,69,3,129,236,90,9,12, + 91,131,12,99,12,99,12,91,5,12,99,157,12,91,12,99,44,99,12,91, + 44,99,12,91,44,99,12,99,44,99,12,91,12,99,44,99,12,99,44,91, + 44,91,44,99,44,99,45,91,44,99,44,99,44,91,44,91,44,99,12,91, + 45,99,12,91,45,99,44,91,44,91,3,44,99,145,44,91,44,99,45,99, + 44,91,45,91,45,91,45,99,44,99,45,91,45,91,13,99,45,99,44,99, + 44,91,45,99,45,99,45,91,3,44,91,3,45,91,135,44,91,12,91,44, + 91,44,91,45,91,12,91,45,91,3,12,91,134,45,91,12,91,44,91,12, + 91,44,91,45,91,9,12,91,129,12,83,5,12,91,130,12,83,12,91,3, + 13,91,138,236,82,203,74,203,82,12,91,77,91,208,107,49,116,82,116,114, + 124,114,116,3,114,124,132,115,124,114,116,114,124,114,116,3,82,116,170,50, + 108,50,108,17,100,241,99,17,108,82,124,146,140,114,140,81,132,113,132,81, + 132,113,132,113,132,114,140,113,140,16,124,240,115,81,132,178,140,179,148,211, + 148,114,140,48,124,240,115,175,107,110,99,78,91,78,83,110,83,111,91,176, + 99,49,116,114,132,81,124,17,116,241,115,240,115,175,107,171,74,228,16,9, + 42,175,99,6,147,124,3,179,124,132,147,124,179,124,179,132,147,124,7,179, + 124,4,180,132,143,179,124,179,132,179,132,180,124,179,132,180,132,180,132,212, + 132,147,132,175,107,13,99,45,99,45,99,12,99,13,99,4,45,99,131,179, + 132,212,132,179,132,3,212,132,131,180,132,212,132,180,132,6,212,132,129,180, + 132,21,212,132,131,244,132,212,132,244,132,7,212,132,3,244,132,167,212,132, + 244,132,244,132,212,132,212,132,244,132,244,132,244,140,212,132,179,132,147,124, + 115,124,147,124,180,124,22,133,184,149,58,166,155,182,220,190,155,190,122,182, + 216,173,151,157,85,157,244,140,146,132,16,124,109,107,203,82,40,66,69,33, + 195,16,130,8,131,0,163,8,196,8,5,17,37,17,37,25,6,70,25,135, + 38,25,70,25,70,25,69,25,70,25,70,25,37,25,3,70,25,138,143,99, + 20,149,110,115,235,98,203,90,44,107,77,107,110,115,109,107,179,132,4,212, + 132,129,211,132,5,212,132,140,180,132,180,124,212,124,212,132,212,132,180,132, + 180,132,212,132,211,132,180,132,212,132,179,132,3,180,132,140,147,124,147,116, + 51,108,242,91,209,83,80,75,216,173,85,157,175,107,36,33,134,41,167,49, + 4,199,49,167,199,57,199,49,231,57,199,49,231,49,231,57,231,57,103,33, + 70,0,165,16,67,8,2,0,68,0,166,8,104,33,230,24,99,8,132,16, + 132,8,132,8,133,8,74,74,81,148,20,173,19,173,243,172,243,172,244,172, + 243,172,243,164,19,173,19,173,243,172,19,173,243,172,19,173,20,173,243,172, + 243,172,4,20,173,133,52,173,52,173,52,181,52,181,52,173,6,52,181,5, + 84,181,137,117,189,85,181,73,74,98,16,195,24,163,24,195,24,163,24,195, + 24,4,163,24,158,98,16,195,24,5,82,37,90,70,98,38,98,228,89,228, + 81,37,98,5,98,197,89,229,89,229,89,5,90,37,106,38,106,5,98,37, + 98,37,106,38,106,5,98,5,90,229,89,164,81,163,73,131,65,67,57,66, + 49,35,41,2,41,5,2,33,135,34,41,35,41,35,41,67,41,67,49,99, + 49,68,57,4,100,57,133,67,49,67,49,66,49,35,41,34,41,3,2,41, + 6,2,33,131,2,41,2,41,2,33,8,2,41,134,225,32,2,33,226,32, + 225,32,225,32,2,33,9,2,41,132,35,41,99,57,100,49,67,49,4,2, + 41,132,2,33,226,32,2,33,225,32,119,3,133,236,90,12,91,12,91,12, + 99,12,99,6,12,91,129,12,99,3,12,91,129,12,99,3,12,91,133,12, + 99,12,91,44,99,13,99,44,91,3,12,99,129,12,91,3,44,99,131,45, + 99,12,99,44,91,3,44,99,134,44,91,44,91,44,99,45,99,12,91,44, + 91,3,44,99,138,44,91,12,99,44,91,45,99,12,91,45,99,12,99,44, + 91,13,91,45,99,3,44,91,151,44,99,12,99,12,99,45,91,44,91,44, + 91,44,99,45,91,44,99,44,91,44,99,44,99,12,91,44,99,45,91,44, + 91,44,91,12,91,12,91,44,99,45,91,12,91,13,91,5,12,91,129,45, + 91,12,12,91,146,13,91,12,91,12,91,13,91,13,91,12,91,13,91,45, + 91,12,91,236,82,203,82,204,82,13,91,78,99,240,107,49,116,82,124,82, + 124,4,114,124,129,114,116,3,114,124,3,82,116,135,50,108,49,108,17,100, + 241,99,49,108,114,124,178,140,6,146,140,172,179,140,146,140,207,115,207,107, + 81,124,211,148,211,140,211,148,114,140,17,124,240,115,207,107,110,99,78,91, + 111,91,143,91,143,91,175,91,49,116,146,132,114,132,49,116,17,116,240,115, + 208,107,236,82,69,33,134,33,110,83,114,124,147,124,179,124,147,124,179,124, + 147,124,147,124,179,124,147,124,179,124,179,124,147,132,179,132,147,124,179,132, + 6,179,124,135,180,132,180,132,179,124,180,132,180,132,179,124,179,132,3,180, + 132,145,212,132,82,116,207,115,236,90,13,99,45,99,45,99,77,107,45,99, + 77,107,45,99,236,90,208,107,244,132,211,124,212,132,180,132,30,212,132,129, + 244,132,3,212,132,136,244,132,212,132,244,132,244,132,212,132,244,132,244,132, + 244,140,5,212,132,151,180,132,179,124,147,124,115,124,115,116,213,124,87,133, + 91,166,30,199,223,223,255,231,125,223,154,198,149,173,81,132,142,107,138,74, + 73,66,8,58,135,49,102,41,69,25,228,24,4,228,16,130,5,25,37,25, + 4,70,25,131,101,25,70,33,70,25,3,37,25,170,38,25,70,25,69,25, + 69,25,37,25,69,25,37,25,70,25,70,25,69,25,37,25,70,25,70,25, + 37,17,106,58,244,148,235,90,101,49,170,90,77,107,109,107,110,115,77,107, + 81,124,244,132,212,132,212,132,211,132,212,132,180,132,180,132,212,132,212,132, + 180,132,180,132,180,124,212,132,212,132,180,132,180,132,211,132,212,132,3,180, + 132,129,212,132,3,180,132,143,147,124,147,116,82,108,242,91,242,83,80,75, + 215,165,117,157,240,115,36,33,134,41,167,49,167,49,199,49,167,49,6,199, + 49,169,231,57,199,57,200,41,174,66,111,99,82,124,244,140,118,157,183,165, + 24,174,172,74,34,8,132,16,132,8,132,8,133,8,42,66,49,140,20,173, + 19,173,243,172,243,164,243,172,243,172,243,164,211,164,243,172,243,172,243,164, + 243,164,19,173,20,173,19,173,19,173,20,173,52,173,20,173,20,173,19,173, + 52,173,20,173,4,52,181,129,52,173,4,52,181,4,84,181,137,117,181,85, + 181,235,98,65,8,195,24,163,24,195,24,163,24,195,24,4,163,24,184,130, + 16,130,16,230,81,38,98,103,98,103,106,70,106,5,98,70,106,102,114,5, + 98,5,98,6,98,5,98,196,81,196,81,132,73,99,65,67,57,66,49,34, + 41,2,41,2,41,2,33,2,33,225,32,2,33,2,33,35,41,35,49,67, + 49,67,49,99,49,99,49,100,57,100,57,99,57,99,49,67,49,67,49,35, + 41,35,41,2,41,2,33,226,32,226,32,34,41,35,41,34,41,34,41,67, + 49,2,41,2,41,2,33,2,33,2,41,5,2,33,134,2,41,226,32,2, + 33,226,32,193,32,193,32,3,193,24,135,225,32,2,41,67,49,100,57,197, + 73,6,90,34,57,6,2,41,129,2,33,3,2,41,139,132,57,35,49,164, + 65,1,41,2,41,226,32,35,41,99,49,34,49,67,49,99,57,92,3,130, + 12,91,236,90,12,12,91,139,44,99,12,91,44,99,12,99,13,99,12,99, + 44,91,12,91,44,99,12,99,12,99,3,44,99,146,44,91,44,99,12,91, + 44,99,44,99,12,91,44,99,12,99,44,99,45,99,45,99,44,91,44,99, + 45,99,44,91,44,99,44,99,13,91,4,44,91,132,44,99,45,91,44,99, + 44,91,4,45,91,143,45,99,45,99,44,99,44,99,44,91,45,99,12,91, + 45,99,45,91,44,91,45,91,45,99,12,99,44,99,12,99,4,44,91,137, + 13,91,44,91,44,91,12,91,44,91,44,91,12,91,44,91,44,91,3,12, + 91,129,45,91,12,12,91,145,13,91,13,91,12,91,12,91,45,91,44,91, + 12,91,203,74,171,82,236,90,13,91,142,99,17,108,50,116,82,116,114,124, + 114,116,4,114,124,3,114,116,138,114,124,82,116,82,116,82,108,50,108,49, + 100,17,100,82,116,146,132,146,140,4,178,140,160,179,140,178,140,178,140,146, + 140,48,124,49,124,146,132,211,148,211,148,179,148,81,132,16,124,240,115,175, + 107,111,99,111,91,143,91,208,99,176,91,208,91,49,108,146,132,114,132,49, + 116,17,116,241,115,240,115,78,99,166,41,36,25,236,74,50,116,3,147,124, + 129,179,124,3,147,124,129,179,132,9,179,124,135,179,132,179,124,180,124,179, + 124,179,124,180,132,179,132,3,180,132,145,212,124,180,132,180,132,212,132,114, + 124,77,107,236,90,13,99,45,99,45,99,13,99,12,91,45,99,13,99,45, + 99,12,99,114,124,25,212,132,134,244,132,212,132,212,132,244,132,212,132,212, + 132,7,244,132,3,212,132,156,179,124,147,124,180,124,212,132,21,133,86,141, + 119,149,151,149,184,149,249,157,91,174,187,190,252,198,251,206,88,190,84,165, + 174,115,137,74,69,41,98,8,65,0,98,0,164,8,228,16,5,17,37,25, + 37,25,69,25,3,70,25,142,102,25,69,25,70,33,69,25,70,33,70,25, + 69,25,69,25,70,25,69,25,69,33,70,25,69,25,69,25,3,37,25,129, + 69,25,4,37,25,133,69,25,69,25,37,25,70,25,38,25,3,69,25,135, + 5,17,106,58,53,157,12,99,231,65,40,66,109,115,3,77,107,129,207,115, + 6,212,132,139,212,124,180,124,212,132,180,124,180,124,212,132,212,132,180,132, + 212,132,212,132,180,132,4,212,132,143,180,132,179,132,212,132,179,132,179,124, + 147,124,82,116,242,91,242,91,80,75,182,165,85,157,49,124,36,33,102,41, + 7,199,49,154,231,57,199,49,231,57,231,49,134,41,44,99,218,206,24,182, + 247,181,85,165,52,157,243,148,19,157,9,58,67,0,132,16,132,16,133,8, + 133,8,233,57,16,140,20,173,19,173,243,172,243,164,19,173,3,243,164,3, + 243,172,141,243,164,243,172,19,173,20,173,20,173,19,173,19,173,20,173,52, + 173,20,173,20,173,52,181,20,173,7,52,181,137,84,181,53,181,52,181,84, + 181,84,181,85,189,117,189,207,123,65,0,4,195,24,145,163,24,163,24,195, + 24,163,24,163,24,130,16,98,8,197,73,37,98,229,81,196,81,164,81,131, + 73,99,65,67,57,67,49,34,41,4,2,33,135,35,41,2,41,34,41,34, + 41,67,49,99,57,67,49,3,99,49,3,100,57,3,67,49,131,35,41,35, + 41,2,41,3,2,33,129,2,41,3,34,41,166,67,49,99,49,132,57,99, + 57,67,49,132,57,132,57,196,73,132,65,34,41,2,33,226,32,225,32,225, + 32,226,32,2,33,226,32,2,33,2,41,34,41,67,49,99,57,132,57,229, + 73,38,90,103,106,201,114,10,131,75,139,108,147,172,155,172,155,205,155,205, + 163,228,105,226,32,34,33,2,33,6,2,41,140,2,33,100,49,34,49,164, + 57,34,49,225,40,132,57,131,57,196,65,132,65,196,65,99,57,86,3,7, + 12,91,147,12,99,12,99,12,91,12,99,12,91,12,99,12,91,12,91,44, + 99,12,91,12,91,12,99,44,99,12,99,44,99,12,99,44,99,44,99,12, + 99,4,44,99,129,12,91,6,44,99,140,45,99,44,91,12,99,44,99,44, + 99,45,91,45,99,44,91,44,99,45,99,45,99,44,91,3,44,99,151,44, + 91,45,99,45,91,45,99,44,99,45,99,44,91,44,91,45,91,45,99,45, + 99,45,91,45,91,44,99,45,91,45,91,44,91,45,91,44,91,44,99,45, + 99,45,91,44,91,3,45,91,140,44,91,44,91,13,91,12,91,45,91,12, + 91,13,91,44,91,44,91,12,91,12,91,45,91,6,12,91,150,12,83,44, + 91,12,91,13,91,12,91,12,91,13,91,13,91,12,91,12,91,45,91,45, + 91,236,82,203,82,171,82,236,90,45,91,143,99,17,116,82,116,82,124,114, + 116,8,114,124,140,114,116,114,116,82,116,82,108,50,108,50,108,49,108,82, + 124,146,140,178,140,178,140,179,140,6,178,140,148,146,140,146,140,178,140,179, + 148,211,148,178,140,81,132,16,124,240,115,207,107,111,99,111,91,208,99,241, + 99,208,99,208,99,49,116,146,132,114,132,49,116,3,17,116,137,143,107,8, + 58,228,16,106,58,17,108,114,124,147,124,147,124,179,124,3,147,124,4,179, + 124,4,179,132,135,179,124,179,124,179,132,179,124,180,132,180,124,180,132,3, + 179,132,139,180,132,180,132,212,132,180,132,212,132,180,132,179,132,110,107,45, + 99,12,99,12,99,3,45,99,129,77,99,3,45,99,130,142,107,21,141,23, + 212,132,130,244,132,244,132,4,212,132,158,244,132,244,132,245,132,212,132,212, + 132,179,124,115,124,115,116,148,116,22,133,184,149,58,166,187,190,252,190,155, + 190,57,174,215,165,117,157,243,148,113,132,174,115,170,82,8,66,69,41,163, + 16,163,8,196,16,4,17,37,25,70,33,6,102,33,133,70,33,70,25,70, + 33,70,25,70,33,4,70,25,132,38,25,70,25,70,25,69,25,4,70,25, + 135,37,25,69,25,69,25,70,25,70,25,37,25,69,25,5,70,25,129,102, + 25,4,70,25,143,69,25,69,25,5,17,106,58,244,148,77,107,41,74,166, + 57,77,107,110,115,77,107,77,107,142,115,212,132,212,132,3,212,124,137,212, + 132,212,132,212,124,212,124,212,132,212,124,212,132,212,132,180,132,4,212,132, + 129,180,132,4,212,132,142,180,132,180,132,179,124,147,124,83,116,242,99,210, + 83,80,75,118,157,85,157,81,124,36,33,102,41,167,49,7,199,49,141,199, + 57,199,49,231,57,199,49,73,74,44,99,12,99,12,91,138,74,73,66,8, + 58,199,49,5,33,3,132,8,145,133,16,101,8,201,49,239,131,20,173,19, + 173,19,173,243,164,19,173,243,172,243,164,243,164,243,172,243,172,243,164,243, + 164,19,173,3,20,173,129,19,173,4,20,173,130,52,173,52,173,9,52,181, + 130,84,181,52,181,3,84,181,136,117,189,113,148,97,8,163,24,195,24,195, + 24,163,24,163,16,4,163,24,155,130,16,98,8,68,49,67,57,1,41,2, + 33,2,41,34,41,34,33,34,41,67,49,34,41,35,41,67,41,100,49,67, + 49,99,49,67,49,99,57,99,57,67,49,99,49,66,41,67,49,34,41,2, + 41,34,41,10,2,33,163,67,41,131,57,131,57,132,57,99,49,99,57,99, + 49,99,57,34,41,2,33,2,33,226,32,2,33,1,33,2,33,34,41,67, + 49,100,57,164,65,229,73,6,82,71,90,136,106,201,114,234,122,42,139,75, + 147,140,147,172,155,204,155,172,155,173,155,172,155,172,155,173,155,3,172,155, + 131,237,163,167,130,225,40,9,2,41,135,67,41,99,57,99,49,67,57,226, + 32,132,49,66,57,3,2,41,1,2,33,113,3,129,236,90,6,12,91,5, + 12,99,168,12,91,44,91,12,91,12,91,44,99,12,99,12,91,44,99,12, + 91,12,91,44,99,44,91,44,99,12,99,12,91,44,99,12,99,44,91,44, + 91,44,99,44,99,12,99,44,99,44,99,45,99,45,99,12,91,44,99,44, + 99,44,91,45,99,44,99,45,99,12,99,44,99,44,99,44,91,45,99,45, + 99,44,91,3,44,99,166,45,91,45,91,44,99,45,91,45,91,45,99,44, + 99,12,99,12,91,44,99,45,99,45,91,44,99,44,91,44,91,45,99,45, + 91,13,91,45,91,12,91,45,91,12,91,45,91,12,91,44,91,12,91,44, + 91,45,91,13,91,12,91,44,91,12,91,45,91,45,91,12,91,12,91,44, + 91,13,91,3,12,91,129,12,83,5,12,91,153,13,91,45,91,12,91,45, + 91,12,91,45,91,236,82,203,82,203,82,12,91,77,99,175,107,49,116,82, + 116,82,116,114,124,114,124,146,124,114,124,115,124,114,124,114,124,115,124,114, + 124,114,124,3,114,116,3,82,108,134,114,124,178,140,178,148,146,140,113,132, + 114,140,5,178,140,129,179,140,4,211,148,143,178,140,49,124,16,116,240,115, + 175,107,143,91,175,91,241,107,17,108,17,108,241,107,50,116,146,132,146,140, + 49,124,3,17,116,145,207,107,73,66,4,25,232,41,208,99,114,124,147,124, + 147,124,179,124,147,124,147,124,179,124,179,124,147,124,179,132,179,124,180,132, + 3,179,132,141,179,124,179,124,180,132,179,132,180,124,180,124,180,132,180,132, + 179,124,179,132,180,132,212,132,180,132,3,212,132,135,49,124,204,90,77,99, + 13,99,13,99,45,99,13,99,5,45,99,131,236,98,114,124,244,132,14,212, + 132,136,212,140,212,132,244,132,212,132,212,140,212,132,212,132,244,132,5,212, + 132,153,179,124,147,124,115,124,115,108,245,124,185,149,156,174,159,207,255,231, + 255,231,186,198,149,165,81,132,12,91,138,74,40,66,199,49,102,41,36,33, + 228,24,228,16,228,24,5,25,38,33,70,33,5,102,33,146,103,33,70,33, + 102,33,70,33,70,33,69,33,70,33,102,33,70,25,37,25,70,33,70,25, + 38,33,70,33,70,25,70,25,69,25,69,25,3,70,25,129,38,25,6,70, + 25,131,102,25,102,25,70,25,7,102,25,3,102,33,143,102,25,102,33,37, + 17,171,66,20,149,77,107,138,82,133,57,236,98,142,115,77,107,110,115,77, + 107,211,132,244,132,5,212,132,130,212,124,212,124,3,212,132,129,180,132,7, + 212,132,3,180,132,141,212,132,180,132,180,124,147,124,115,116,18,100,242,83, + 112,75,118,157,85,157,178,140,36,33,134,41,8,199,49,161,199,57,231,49, + 199,57,231,57,199,49,166,49,166,49,134,41,199,49,199,49,199,57,232,57, + 70,33,132,8,100,8,132,8,133,8,101,8,136,41,207,123,244,172,244,172, + 19,173,243,172,243,172,19,173,243,172,243,164,243,172,243,172,19,173,19,173, + 244,172,3,20,173,129,19,173,4,20,173,129,52,173,10,52,181,140,84,181, + 52,181,84,181,84,181,85,181,117,189,211,164,162,16,163,16,195,24,163,24, + 195,24,6,163,24,135,98,8,36,41,67,49,2,33,35,41,99,49,99,57, + 3,132,57,134,99,49,99,49,67,49,67,49,34,41,66,41,3,34,41,133, + 2,33,2,41,2,33,2,33,226,32,10,2,33,133,226,32,225,32,2,33, + 2,33,226,32,4,225,32,168,34,33,34,41,132,57,197,65,229,73,38,82, + 103,98,168,114,233,122,10,131,75,139,107,139,140,147,140,147,172,155,172,155, + 173,155,172,155,173,155,173,155,205,155,172,155,204,155,173,155,205,155,205,155, + 237,155,205,155,237,163,237,163,205,155,205,155,106,147,224,48,34,41,2,41, + 34,41,2,41,34,41,34,41,4,2,41,138,196,65,34,41,132,57,1,41, + 35,41,132,57,1,41,2,41,2,41,226,32,131,3,129,12,99,10,12,91, + 129,12,99,5,12,91,137,12,99,44,99,12,99,44,99,44,99,12,91,12, + 99,44,99,44,91,4,44,99,130,13,99,44,91,5,44,99,155,12,99,44, + 99,45,99,44,99,45,99,45,91,45,99,12,99,44,91,44,91,45,91,44, + 99,44,91,44,91,45,99,44,91,45,91,45,91,44,99,45,99,12,91,45, + 99,45,99,44,99,45,99,44,99,44,91,3,45,91,136,44,91,44,91,45, + 91,44,91,44,91,45,91,45,91,45,99,6,45,91,140,13,91,12,91,44, + 91,12,91,44,91,45,91,12,91,12,91,12,83,12,91,12,91,44,91,4, + 12,91,147,13,91,12,91,12,91,12,83,12,83,12,91,12,91,44,91,12, + 91,45,91,45,91,204,82,203,82,203,82,13,91,110,99,240,107,49,116,82, + 116,4,114,124,148,146,124,146,124,115,124,146,124,146,124,147,124,146,124,147, + 116,115,116,115,116,114,116,82,108,82,116,146,132,178,140,81,132,142,107,44, + 91,16,116,114,132,4,178,140,3,179,140,156,211,140,211,148,146,140,49,124, + 16,124,16,116,175,107,143,99,208,99,18,108,50,108,17,108,241,99,49,108, + 146,132,146,140,114,124,82,116,17,108,17,116,241,115,171,74,37,33,102,33, + 143,99,49,116,115,124,147,124,3,179,124,138,147,124,147,124,179,124,179,124, + 180,132,179,132,179,124,180,124,179,124,180,124,5,179,124,153,180,132,180,132, + 211,132,212,124,180,132,180,132,212,132,180,132,212,132,180,132,16,124,12,91, + 45,99,12,99,45,99,45,99,13,99,45,99,45,99,77,107,77,107,45,99, + 13,99,45,99,179,132,13,212,132,159,244,132,212,132,244,132,212,132,180,132, + 180,132,147,124,180,124,212,124,21,141,86,141,151,149,151,149,217,149,58,166, + 188,190,28,207,28,207,120,198,242,156,109,107,198,49,195,24,98,8,98,8, + 163,16,196,16,4,25,37,25,37,25,69,33,3,70,33,134,102,33,70,33, + 70,33,102,33,102,33,70,33,5,102,33,144,70,33,102,33,102,33,70,33, + 70,33,101,25,70,33,70,33,69,25,69,25,70,33,70,25,70,33,70,33, + 69,33,69,25,5,70,25,132,102,33,102,25,102,33,102,33,3,102,25,137, + 102,33,70,25,102,25,70,25,70,25,70,33,70,25,70,25,37,25,3,70, + 25,150,69,25,70,25,5,17,204,74,114,132,110,107,77,107,134,49,12,107, + 110,115,77,107,77,107,45,107,114,124,245,132,244,132,244,124,245,132,213,132, + 212,124,212,132,212,124,12,212,132,145,180,132,212,132,180,132,179,124,179,132, + 147,124,115,116,18,100,242,83,113,75,21,149,150,165,52,149,36,33,102,41, + 134,49,167,49,5,199,49,161,200,49,199,49,199,49,232,57,231,57,199,57, + 231,49,231,49,232,57,231,49,232,57,199,49,232,57,70,33,132,8,132,8, + 132,16,132,8,133,8,104,33,175,123,243,164,244,172,243,164,20,173,19,173, + 20,173,19,173,19,173,243,164,243,172,243,172,19,173,7,20,173,131,19,173, + 19,173,52,173,3,52,181,131,52,173,20,173,52,173,3,52,181,144,84,181, + 52,181,84,181,84,181,85,181,85,181,117,189,52,173,37,33,130,16,195,24, + 195,24,163,16,163,16,195,24,195,24,3,163,24,130,98,16,3,33,3,67, + 49,134,34,41,34,41,2,41,34,41,2,33,2,41,4,2,33,130,226,32, + 226,32,8,2,33,7,226,32,157,2,33,34,41,35,41,99,49,132,57,165, + 65,6,82,71,90,104,98,168,106,233,122,10,123,75,139,169,122,10,123,140, + 147,173,147,205,155,173,155,173,155,172,147,172,155,172,147,172,155,172,155,173, + 155,205,155,173,155,172,155,3,173,155,141,172,147,140,147,107,139,42,131,234, + 122,168,106,103,98,38,82,197,73,132,57,67,49,35,41,2,33,3,2,41, + 129,34,41,4,2,41,140,2,33,226,32,164,49,66,57,132,57,1,49,35, + 41,164,57,34,49,2,41,67,49,99,49,153,3,6,12,91,132,12,99,12, + 99,12,91,12,99,3,12,91,134,13,99,12,91,12,91,12,99,12,91,12, + 91,3,12,99,134,45,99,44,99,12,99,44,99,44,99,45,99,4,44,99, + 129,45,99,4,44,99,161,45,99,45,99,44,99,45,99,45,99,44,99,45, + 99,45,91,45,91,45,99,44,99,44,91,44,91,45,91,44,99,44,99,44, + 91,44,91,44,99,44,99,45,91,45,99,45,91,44,99,45,91,45,99,45, + 91,45,91,44,91,44,91,45,91,45,91,44,91,4,45,91,132,44,91,45, + 91,44,99,44,91,3,45,91,3,12,91,133,45,91,45,91,13,91,45,91, + 45,91,8,12,91,129,13,91,4,12,91,129,44,91,4,45,91,137,13,91, + 203,74,203,82,236,90,13,91,110,99,240,107,82,124,82,124,3,114,124,131, + 147,124,114,124,146,124,6,147,124,183,115,124,114,116,114,116,82,116,114,124, + 146,132,178,148,16,124,109,99,45,75,16,116,146,132,178,140,179,148,179,140, + 146,140,146,140,179,140,179,140,211,140,211,148,114,132,16,124,16,124,16,116, + 175,107,111,91,176,91,83,116,179,124,212,124,53,141,118,149,183,157,183,165, + 248,165,24,174,85,149,82,124,17,116,236,82,102,33,37,17,78,91,17,116, + 114,124,147,124,147,124,147,132,179,132,147,124,179,124,179,124,180,132,179,124, + 4,179,132,132,180,132,179,132,179,124,180,124,5,180,132,3,212,132,148,180, + 132,180,132,212,132,179,132,175,107,45,99,45,99,13,99,13,99,45,99,45, + 99,77,107,45,99,77,107,45,99,45,99,77,107,13,99,17,116,244,132,9, + 212,132,154,244,132,212,132,179,132,147,124,115,116,115,108,245,124,151,149,58, + 166,219,190,220,190,155,190,57,174,183,165,85,157,210,140,48,124,77,99,40, + 66,69,41,195,24,163,16,196,16,4,25,37,33,70,33,3,102,33,132,102, + 41,101,33,69,33,69,33,3,70,33,129,69,33,4,70,33,151,102,33,102, + 33,70,33,102,33,70,33,102,33,102,33,70,33,102,33,70,33,70,33,102, + 33,102,33,70,33,70,25,70,25,70,33,102,33,102,33,102,25,102,33,70, + 25,102,25,3,70,25,139,102,25,102,33,135,33,102,25,70,25,70,25,102, + 25,70,25,37,25,37,25,37,17,3,37,25,150,5,17,4,17,4,25,228, + 16,4,17,4,25,4,17,4,25,4,25,196,8,9,50,245,148,45,99,110, + 107,102,41,110,115,109,107,109,107,110,115,45,107,16,116,21,133,3,244,132, + 13,212,132,129,180,132,5,212,132,143,180,124,179,132,147,124,115,116,50,100, + 242,91,145,75,244,140,117,157,20,149,69,41,102,41,134,49,167,49,167,49, + 5,199,49,156,231,49,199,49,232,57,231,57,199,49,231,49,232,57,200,57, + 231,49,199,49,231,57,231,57,70,33,132,16,131,8,164,16,132,16,101,0, + 72,33,142,115,243,164,20,173,19,173,19,173,20,173,19,173,20,173,243,172, + 3,243,164,132,243,172,19,173,20,173,52,173,3,20,173,137,19,173,20,173, + 20,173,52,173,52,173,52,181,52,181,20,173,20,173,3,52,173,132,52,181, + 84,181,84,181,85,181,4,84,181,136,85,181,199,57,130,16,195,24,195,24, + 163,24,195,24,163,24,3,195,24,138,163,24,130,16,227,24,100,57,67,49, + 67,49,226,32,2,33,2,33,226,32,6,2,33,130,226,32,2,33,4,226, + 32,191,226,24,226,32,226,32,2,33,67,41,99,49,132,57,165,65,230,73, + 6,82,103,98,136,106,201,114,10,123,42,131,75,147,108,147,140,155,107,147, + 39,90,137,98,136,106,39,82,75,131,6,90,201,106,75,131,204,147,172,155, + 173,155,173,155,205,155,173,155,173,155,140,147,139,147,75,139,43,131,234,122, + 200,114,135,98,71,90,38,82,164,65,132,57,67,49,34,41,2,41,2,41, + 34,41,35,49,67,49,131,65,196,73,38,90,164,81,226,40,2,41,2,41, + 34,41,2,41,34,41,34,41,3,2,41,138,68,41,132,65,132,57,66,57, + 2,41,132,57,66,49,2,41,67,49,131,57,180,3,7,12,91,154,12,99, + 12,91,12,99,12,91,44,99,12,99,44,99,12,99,12,91,12,99,44,99, + 12,91,44,99,44,99,12,91,44,99,44,99,12,91,44,99,12,99,45,99, + 44,99,12,99,44,99,44,99,45,99,3,44,99,3,45,99,137,44,99,44, + 99,45,99,44,99,12,99,45,99,44,91,44,99,44,91,5,44,99,139,45, + 91,45,99,44,99,12,91,45,91,44,91,45,91,44,99,45,99,44,99,45, + 99,4,45,91,134,45,99,44,91,45,91,45,91,44,91,45,99,3,45,91, + 132,44,91,45,91,44,91,12,91,4,45,91,137,12,91,12,91,13,91,45, + 91,13,91,44,91,12,91,12,91,45,91,3,12,91,146,45,91,12,91,13, + 91,45,91,12,83,45,91,44,91,45,91,13,91,45,91,12,91,203,82,203, + 82,236,90,45,91,175,99,17,108,82,116,3,114,124,134,115,124,114,124,114, + 124,147,124,114,124,146,124,3,147,124,193,147,116,146,124,114,124,82,116,82, + 116,114,124,146,140,146,140,81,132,240,115,240,115,114,132,178,140,178,140,179, + 140,146,140,16,124,81,124,146,140,211,140,211,148,178,148,114,132,48,124,16, + 124,240,115,143,99,179,124,24,174,57,182,24,174,24,174,23,182,182,173,24, + 174,150,173,113,132,178,140,57,174,182,157,50,116,45,91,199,41,227,16,13, + 75,241,107,82,124,114,124,147,124,179,124,179,132,147,132,179,124,179,132,179, + 124,180,124,179,132,179,124,179,132,180,132,180,132,179,124,179,124,180,124,179, + 132,3,180,132,129,180,124,6,212,132,141,179,132,78,99,45,99,13,99,12, + 91,12,99,12,99,45,99,13,99,12,99,77,107,45,99,77,107,3,45,99, + 129,179,132,5,212,132,154,180,132,147,124,147,124,115,116,148,116,54,133,26, + 158,62,199,255,223,255,239,60,215,24,182,211,148,109,99,170,82,40,66,199, + 49,102,41,37,33,4,25,5,25,5,25,38,33,102,33,134,41,102,41,5, + 102,33,136,70,33,102,33,102,33,70,33,69,33,69,33,70,33,70,33,3, + 69,33,134,70,33,69,33,69,33,70,33,69,33,102,33,3,70,33,141,102, + 33,135,33,102,33,134,33,102,33,102,33,102,25,102,33,102,33,134,33,103, + 33,102,33,102,33,7,70,25,147,69,25,37,25,70,25,37,25,37,25,5, + 17,36,25,4,25,4,17,228,24,228,16,4,17,228,16,4,17,5,17,5, + 25,5,17,37,25,37,17,4,37,25,141,5,17,41,50,53,157,175,115,77, + 107,235,90,142,115,110,107,77,107,109,115,45,107,77,107,54,133,4,244,132, + 11,212,132,130,180,132,180,132,3,212,132,145,180,132,212,132,180,132,179,132, + 147,124,115,116,50,100,242,91,145,75,212,132,182,165,85,157,69,41,101,41, + 134,41,199,49,167,49,5,199,49,157,231,49,199,49,199,49,231,49,199,49, + 200,49,231,57,199,49,232,57,199,57,231,57,232,57,102,41,132,16,131,8, + 132,16,132,8,133,8,39,25,78,107,243,164,20,173,243,172,244,172,20,173, + 20,173,20,165,20,173,19,173,3,243,164,130,19,173,19,173,5,20,173,129, + 19,173,3,20,173,129,52,173,4,20,173,147,52,173,20,173,20,173,52,181, + 85,181,84,181,85,181,84,181,52,181,84,181,117,181,105,74,98,16,195,24, + 195,24,163,24,195,24,163,24,195,24,3,163,24,135,130,16,162,24,100,57, + 34,41,99,49,2,33,226,32,5,2,33,150,226,32,193,24,193,32,225,32, + 2,33,34,33,67,41,132,57,197,65,6,82,71,90,136,98,168,106,234,122, + 42,131,42,131,107,139,140,147,140,147,172,155,173,155,173,155,3,172,155,188, + 173,147,205,155,205,155,6,90,104,98,234,114,169,114,43,131,10,131,43,131, + 108,139,140,147,75,139,42,131,233,122,168,106,103,98,70,82,229,73,164,57, + 131,49,67,49,34,41,2,33,2,33,226,32,34,33,100,49,164,65,229,73, + 71,90,136,106,201,114,10,131,43,139,107,147,140,147,172,155,237,163,233,138, + 1,49,2,41,2,41,34,41,34,41,2,41,2,41,34,41,2,41,34,41, + 2,33,197,65,99,57,99,57,2,33,100,49,99,57,1,41,2,41,2,41, + 181,3,129,12,99,4,12,91,3,12,99,4,12,91,138,12,99,12,91,44, + 99,44,91,12,91,12,99,12,99,44,99,45,99,12,91,3,45,99,135,44, + 99,45,99,12,99,44,99,44,99,12,99,44,99,3,45,99,4,44,99,130, + 12,91,12,91,3,44,99,132,45,99,12,99,44,99,44,91,4,44,99,132, + 45,91,44,91,12,91,45,99,3,45,91,133,45,99,44,91,44,99,44,99, + 44,91,3,45,99,131,45,91,44,91,45,99,3,45,91,133,44,99,45,99, + 13,91,45,91,44,91,3,45,91,143,13,91,44,91,13,91,45,91,45,91, + 13,91,12,91,45,91,45,91,12,91,13,91,44,91,12,91,12,91,44,91, + 3,12,91,143,44,91,13,91,44,91,12,91,45,91,12,91,44,91,45,91, + 12,83,203,82,203,82,236,90,77,91,207,107,17,116,4,114,124,132,146,124, + 147,124,115,124,146,124,6,147,124,133,114,116,146,116,114,116,82,116,146,124, + 3,178,140,176,179,140,179,140,178,140,179,140,178,140,179,140,81,132,174,107, + 16,116,146,132,211,140,211,148,178,148,113,132,48,124,16,124,240,115,208,107, + 146,132,146,140,48,124,16,124,142,107,203,82,73,58,167,41,69,25,69,25, + 37,17,215,165,117,157,110,99,176,107,41,58,163,16,171,66,208,107,82,116, + 114,124,147,124,179,132,147,124,179,124,147,124,147,124,179,124,180,124,179,132, + 3,180,132,134,179,132,179,132,180,132,180,132,179,132,179,132,3,212,132,178, + 179,132,212,132,180,132,180,132,212,132,212,132,147,124,142,107,236,90,45,99, + 45,99,13,99,45,99,12,99,45,99,45,107,45,99,45,107,77,107,12,99, + 236,98,139,82,45,91,245,132,21,133,86,141,151,149,183,149,249,157,155,174, + 252,190,60,207,251,214,246,181,145,148,170,90,101,41,130,16,98,8,131,8, + 196,16,5,25,70,33,69,33,70,33,102,41,102,41,102,33,134,33,134,41, + 7,102,33,131,69,33,69,33,102,33,7,69,33,130,102,33,70,33,3,69, + 33,148,102,33,102,33,70,33,102,33,102,33,135,33,135,33,102,33,134,33, + 102,33,102,33,70,33,70,33,135,33,102,33,103,33,102,33,69,25,70,33, + 69,25,5,37,25,145,37,17,4,25,4,25,4,17,5,17,37,17,37,25, + 37,25,5,25,5,17,5,25,5,25,38,25,37,25,70,25,102,25,70,25, + 4,102,25,147,70,25,102,25,103,25,103,25,37,17,171,66,53,157,110,107, + 77,107,77,107,109,107,77,107,77,107,109,115,109,107,12,99,21,141,245,132, + 244,132,11,212,132,134,180,132,180,132,179,124,147,124,179,132,180,132,4,212, + 132,143,179,132,147,124,115,116,50,108,18,92,177,75,148,132,150,165,150,165, + 134,41,102,41,134,41,167,49,199,49,167,49,5,199,49,160,231,49,231,57, + 199,49,231,49,232,57,199,49,199,49,232,49,231,49,199,57,232,57,102,41, + 132,16,100,8,132,8,133,8,101,8,230,24,13,99,211,164,20,173,243,172, + 20,165,243,164,244,172,19,165,19,173,243,172,243,172,243,164,243,164,243,172, + 3,19,173,144,20,173,19,173,20,173,20,173,19,173,20,173,19,173,20,173, + 52,173,20,173,52,173,20,181,52,181,52,173,52,181,84,181,3,52,181,134, + 85,181,84,181,84,181,117,189,44,99,130,16,3,195,24,131,163,24,195,24, + 163,24,3,195,24,133,130,16,162,16,100,57,35,49,100,49,6,2,33,211, + 226,32,67,41,104,90,168,106,233,114,42,131,75,139,107,147,140,147,172,155, + 172,155,204,155,204,155,205,155,172,155,204,155,205,155,204,155,204,155,173,155, + 173,155,172,155,172,155,173,155,172,155,172,147,140,147,107,139,107,139,10,131, + 201,122,168,114,136,106,38,90,6,82,197,73,132,57,99,49,34,41,2,33, + 225,32,225,32,226,32,225,32,2,33,2,33,34,41,35,41,67,49,67,49, + 99,57,67,49,35,41,172,139,205,163,205,163,238,163,237,163,13,164,237,163, + 237,163,237,155,205,155,205,155,173,147,107,139,98,65,2,33,34,41,2,41, + 2,41,34,41,34,41,2,41,2,41,34,41,226,40,164,57,67,57,164,65, + 2,41,35,41,196,65,3,2,41,136,3,6,12,91,144,12,99,12,99,12, + 91,12,99,12,91,44,99,12,91,44,91,44,99,12,91,44,99,12,91,44, + 99,12,99,45,99,12,91,8,44,99,132,45,99,44,99,45,99,12,99,3, + 44,99,146,45,99,45,99,44,99,45,99,44,99,45,99,44,99,44,99,44, + 91,45,99,45,99,44,91,45,99,45,99,44,99,45,91,45,99,45,99,3, + 45,91,141,44,99,44,91,45,91,45,91,44,99,45,99,45,91,44,91,45, + 91,44,99,44,91,45,91,44,91,4,45,91,134,45,99,45,91,12,91,44, + 91,44,91,45,91,3,44,91,131,45,91,44,91,13,91,4,45,91,131,12, + 91,45,91,13,91,3,12,91,133,44,91,13,91,12,91,13,91,12,91,3, + 44,91,137,45,91,45,91,236,82,203,82,204,82,12,91,78,99,208,107,49, + 116,3,114,124,5,147,124,142,146,124,147,124,147,124,146,124,147,124,147,124, + 146,124,114,124,114,116,82,116,146,132,178,140,178,140,179,140,3,178,140,186, + 179,140,178,140,178,140,113,132,16,124,81,124,179,140,211,140,211,148,146,140, + 81,132,16,124,17,124,240,115,175,99,138,66,199,41,135,33,134,33,102,33, + 167,33,199,41,200,41,232,49,200,41,41,42,183,165,52,149,105,74,78,99, + 138,74,195,8,106,58,175,99,49,124,82,124,114,124,147,124,179,132,179,124, + 147,124,179,124,180,124,179,124,212,124,179,132,180,132,179,132,179,132,180,132, + 179,124,179,132,180,132,212,132,180,132,212,132,180,132,180,132,5,212,132,169, + 147,124,78,99,236,90,77,99,13,99,45,99,45,107,12,99,203,98,171,90, + 139,82,172,74,78,91,17,116,213,132,119,157,216,165,154,182,57,174,215,165, + 85,157,243,148,48,132,44,99,40,74,69,41,195,16,195,16,228,24,37,33, + 102,33,134,41,134,33,134,41,134,41,102,33,102,33,102,41,102,33,102,41, + 102,41,5,102,33,131,70,33,102,33,102,33,5,70,33,4,69,33,139,37, + 33,69,33,70,33,70,33,101,33,69,33,69,33,70,33,102,33,70,33,134, + 33,4,135,33,137,102,33,70,33,102,33,102,33,70,33,102,33,70,25,70, + 33,69,25,7,37,25,130,5,25,5,17,3,37,25,132,70,25,69,25,70, + 25,37,25,5,70,25,4,102,25,131,103,25,102,25,103,25,3,102,25,3, + 70,25,133,229,8,204,74,150,173,110,107,45,107,6,77,107,132,12,99,114, + 124,21,133,244,132,11,212,132,134,180,124,179,124,147,124,115,124,147,124,180, + 132,4,212,132,140,179,132,147,124,147,124,50,108,18,100,177,83,115,116,150, + 165,118,165,199,49,102,41,134,41,3,167,49,4,199,49,153,199,57,199,49, + 199,49,231,57,199,49,231,57,231,49,199,57,231,57,231,49,199,49,231,57, + 102,41,132,8,132,16,132,8,132,8,133,8,198,16,204,90,179,164,19,173, + 243,164,243,164,243,172,3,19,173,5,243,164,136,243,172,19,173,20,173,20, + 173,19,173,20,173,20,173,19,173,3,20,173,144,52,181,20,173,52,173,20, + 173,52,181,20,173,52,181,52,181,52,173,84,181,52,181,84,181,85,181,84, + 181,149,189,174,123,10,195,24,134,162,16,130,16,68,49,67,49,100,49,34, + 41,5,2,33,136,225,32,67,41,140,139,173,147,173,147,173,155,204,155,204, + 155,3,173,155,188,205,155,205,155,204,155,173,155,204,155,172,147,140,147,139, + 147,107,139,74,131,10,131,233,122,168,106,103,98,38,82,229,65,164,57,99, + 49,67,49,66,41,66,41,34,41,67,41,100,49,99,57,1,33,225,32,67, + 41,99,57,67,49,99,49,99,49,164,57,164,57,164,65,132,57,164,65,164, + 65,131,57,132,57,67,57,226,32,75,115,205,147,172,147,107,139,75,131,42, + 123,233,114,168,106,103,90,38,82,6,74,196,65,196,65,99,57,2,41,2, + 41,34,41,2,41,3,34,41,140,2,41,34,41,2,33,100,49,99,57,197, + 65,34,49,2,41,197,65,34,49,2,41,34,41,118,3,129,12,99,5,12, + 91,131,12,99,12,99,12,91,3,44,99,139,12,91,44,99,12,99,45,99, + 12,91,44,99,12,91,44,99,12,91,44,99,12,91,4,44,99,129,12,99, + 3,44,99,129,44,91,3,44,99,185,44,91,44,99,45,99,44,99,45,99, + 45,99,44,99,45,99,45,99,44,91,45,99,45,99,45,91,44,99,45,91, + 45,91,44,99,44,99,45,91,45,99,45,99,45,91,44,91,44,99,44,99, + 44,91,45,99,45,91,44,91,44,99,44,91,45,99,45,91,45,99,45,91, + 44,91,44,91,45,99,45,91,45,91,12,99,45,91,45,91,13,91,44,91, + 45,91,44,91,45,91,44,91,44,99,44,91,12,91,45,91,44,91,12,91, + 45,91,12,91,3,45,91,147,12,91,45,91,45,91,12,91,45,91,12,91, + 45,91,13,91,44,91,44,91,45,91,44,91,236,82,203,82,204,82,12,91, + 110,99,240,107,49,116,3,114,124,3,146,124,131,147,124,147,124,147,132,5, + 147,124,135,114,124,114,124,114,116,114,116,146,132,178,140,179,140,4,178,140, + 147,179,140,178,140,210,140,178,140,114,140,178,140,211,140,211,140,211,148,146, + 140,81,124,49,124,17,124,208,115,208,107,175,99,135,33,200,49,232,49,3, + 232,41,165,232,49,232,41,135,33,12,67,57,182,179,140,138,82,171,82,138, + 74,195,16,41,50,143,99,49,124,114,116,114,124,147,124,147,124,179,132,147, + 124,147,124,179,124,179,132,180,132,179,124,179,132,180,132,180,132,179,124,179, + 132,211,124,180,124,212,132,211,132,212,132,180,132,212,132,180,132,4,212,132, + 158,146,132,12,91,12,99,203,90,171,90,74,74,139,66,47,83,245,124,58, + 166,94,207,223,223,60,215,247,181,146,132,174,107,235,90,41,66,232,57,134, + 49,70,41,70,41,102,41,102,41,134,41,135,49,167,49,167,49,134,41,135, + 41,3,134,41,129,102,41,5,102,33,130,102,41,70,33,6,102,33,133,102, + 41,70,41,70,33,70,33,102,33,5,70,33,130,69,33,69,33,4,102,33, + 3,70,33,130,102,33,134,33,3,135,33,132,102,33,70,33,70,25,70,33, + 3,69,25,130,37,25,5,25,9,37,25,9,70,25,138,38,25,70,25,70, + 25,102,33,102,25,102,25,70,25,70,25,102,33,102,25,5,70,25,135,37, + 25,70,25,37,25,228,16,107,66,179,140,12,99,7,77,107,131,45,107,16, + 124,21,141,11,212,132,134,179,124,147,124,147,116,147,124,179,124,180,132,4, + 212,132,141,180,132,179,132,147,124,147,116,82,108,18,100,177,83,82,116,182, + 165,85,157,232,57,102,41,134,41,7,199,49,142,231,49,199,49,199,49,231, + 49,199,49,199,57,231,49,232,57,199,49,199,57,232,57,231,57,135,41,132, + 16,3,132,8,132,133,8,198,16,172,82,178,156,3,243,164,135,243,172,243, + 172,19,173,19,173,243,172,243,164,19,165,4,243,164,129,243,172,7,20,173, + 137,52,173,52,173,52,181,52,173,20,173,52,173,20,173,52,181,84,181,4, + 52,181,134,84,181,52,181,149,189,16,140,4,33,163,24,7,195,24,138,163, + 24,163,24,130,16,36,41,67,57,99,49,35,49,2,33,2,33,2,41,4, + 2,33,130,107,131,237,155,4,205,155,166,205,163,173,155,140,155,107,147,75, + 139,10,131,201,114,136,98,102,90,6,74,196,65,131,57,67,49,34,41,2, + 33,2,33,34,41,99,41,132,57,197,65,6,74,71,90,104,98,169,114,233, + 122,42,131,107,139,10,139,67,57,225,32,66,41,164,65,99,57,132,57,67, + 49,99,49,67,49,67,49,4,34,41,137,2,41,34,41,2,41,197,65,6, + 74,197,65,164,57,131,49,67,49,3,99,49,138,164,65,196,65,164,65,66, + 49,164,57,34,41,2,41,34,41,34,41,2,41,3,34,41,139,2,41,2, + 41,67,41,132,65,131,57,131,57,1,41,132,49,99,57,2,41,35,41,153, + 3,4,12,91,154,44,99,12,99,12,91,44,99,12,99,12,91,44,99,12, + 91,12,99,44,99,45,99,12,99,44,99,12,99,44,99,44,91,44,99,12, + 91,44,99,44,99,12,91,44,99,12,91,44,99,44,99,44,91,5,44,99, + 145,45,99,44,91,44,99,44,91,44,91,45,99,45,91,44,91,45,99,44, + 91,44,91,45,99,44,99,44,99,45,99,45,91,44,99,3,45,99,132,44, + 91,45,99,44,99,44,91,4,45,99,131,44,91,45,99,44,99,3,44,91, + 134,45,99,45,91,44,99,45,91,45,91,45,99,3,45,91,130,44,91,45, + 91,3,44,91,133,45,91,12,91,45,99,44,91,13,91,3,45,91,139,44, + 91,45,91,12,91,44,91,13,91,45,91,44,91,45,91,12,91,45,91,44, + 91,4,45,91,139,12,91,203,82,204,82,236,90,45,91,143,99,17,116,82, + 116,114,116,114,124,146,124,7,147,124,138,179,124,179,124,147,124,147,124,146, + 124,114,116,82,116,114,124,146,140,179,140,3,178,140,186,179,140,178,140,178, + 140,210,140,178,140,179,140,211,148,211,140,179,148,211,148,210,140,114,140,49, + 124,17,124,49,124,207,107,208,99,114,116,50,116,134,33,200,41,232,41,200, + 41,232,41,200,41,232,41,134,33,175,91,247,165,48,124,73,74,203,82,171, + 82,4,25,200,33,143,99,50,116,82,116,114,124,147,124,179,124,179,124,180, + 124,180,124,179,124,179,132,179,132,180,124,212,124,180,124,180,132,179,124,180, + 132,212,132,212,132,180,132,212,132,180,132,7,212,132,155,114,116,176,99,147, + 124,86,133,26,158,29,191,92,207,88,198,113,148,203,90,101,49,130,16,98, + 8,131,16,228,24,5,33,70,41,134,41,134,41,167,41,167,49,200,57,232, + 57,199,49,167,49,199,49,167,49,5,134,41,3,102,41,139,134,41,134,41, + 102,41,102,33,102,41,70,33,102,33,69,33,70,33,102,41,102,41,5,102, + 33,131,69,33,70,33,70,33,3,102,33,130,134,33,134,33,3,102,33,137, + 70,33,102,33,70,33,102,33,102,33,70,33,38,25,69,33,38,33,3,37, + 25,129,4,25,3,37,25,141,69,25,70,33,70,33,70,25,70,33,70,33, + 70,25,70,33,69,25,102,25,70,25,70,25,102,25,4,70,25,137,38,25, + 38,25,37,17,38,25,38,25,37,25,69,25,37,25,38,25,4,37,25,132, + 5,25,37,25,37,25,5,17,3,5,25,136,5,17,196,8,41,58,17,116, + 109,107,45,99,77,107,109,107,4,77,107,131,45,107,142,107,244,132,9,212, + 132,136,180,132,147,124,147,116,147,116,179,124,212,132,244,132,245,132,5,212, + 132,142,179,132,180,124,147,124,50,108,18,100,209,83,50,108,182,165,150,157, + 41,66,101,41,134,41,166,49,167,49,4,199,49,135,231,49,231,49,199,49, + 231,57,199,49,199,57,231,49,3,199,49,140,199,57,199,49,231,57,135,41, + 164,16,132,8,132,16,132,16,133,8,166,16,75,74,146,148,4,243,164,140, + 244,172,243,164,243,172,19,173,243,164,20,173,243,172,243,164,243,172,243,164, + 19,173,20,173,3,19,173,135,20,173,19,173,20,173,20,173,19,173,20,173, + 20,173,3,19,173,132,20,173,20,173,52,181,52,173,4,52,181,132,85,189, + 146,156,101,41,162,16,4,195,24,130,163,16,163,24,3,195,24,133,98,16, + 3,33,100,57,66,49,67,49,6,2,33,140,226,24,136,98,74,131,233,114, + 168,114,103,106,38,90,6,74,196,65,132,57,99,49,35,41,3,34,41,143, + 35,49,132,57,197,65,5,74,38,90,168,106,201,114,10,123,10,123,169,114, + 43,131,43,131,234,122,173,147,237,155,3,237,163,137,205,155,173,155,197,81, + 225,32,2,41,2,33,2,41,2,33,2,33,7,2,41,137,34,41,2,41, + 164,57,131,57,164,65,164,65,163,57,164,65,131,65,3,131,57,137,132,57, + 67,49,67,41,225,32,33,33,2,33,2,41,34,41,2,41,5,34,41,138, + 2,41,34,41,164,57,67,49,229,65,1,41,34,33,197,65,2,41,34,41, + 82,3,130,12,91,12,99,5,12,91,133,12,99,12,91,12,99,12,99,12, + 91,3,44,99,139,12,99,44,99,44,91,12,99,44,99,44,99,45,99,44, + 99,12,99,12,99,45,99,3,44,99,129,45,99,7,44,99,143,45,99,45, + 99,12,91,45,99,44,99,44,99,45,99,45,99,44,91,44,99,45,99,45, + 91,45,99,44,99,45,99,3,44,99,146,45,99,44,91,45,91,45,91,44, + 91,45,99,45,99,45,91,45,99,45,99,44,91,45,99,45,99,44,91,45, + 99,45,99,45,91,45,99,3,45,91,3,44,91,130,45,91,44,91,10,45, + 91,131,12,91,45,91,45,91,3,13,91,4,45,91,144,12,91,45,91,44, + 91,45,91,45,91,12,83,204,82,203,82,12,91,45,91,175,99,49,116,82, + 124,114,124,114,124,146,124,4,147,124,129,147,132,7,147,124,159,114,116,114, + 116,114,124,178,140,179,140,179,140,178,140,178,140,179,140,178,140,211,148,178, + 140,211,140,211,140,179,140,211,148,211,140,211,148,178,140,114,132,49,124,49, + 124,16,124,208,107,208,99,50,108,245,132,111,91,167,33,232,41,200,41,3, + 232,41,145,103,33,114,116,247,165,207,115,105,74,170,82,203,90,105,74,167, + 33,143,91,50,116,82,116,82,124,114,124,147,124,179,124,179,124,4,179,132, + 132,180,132,179,132,180,124,212,124,3,180,132,130,212,132,180,132,9,212,132, + 139,147,116,21,141,178,140,142,115,138,82,69,41,195,24,163,16,196,24,5, + 33,69,33,5,102,41,132,135,49,134,41,135,49,167,41,6,199,49,144,167, + 49,135,41,134,41,134,41,102,41,134,41,102,41,102,33,102,33,102,41,102, + 41,102,33,102,41,102,41,102,33,102,33,4,102,41,133,102,33,135,41,134, + 41,102,41,70,33,4,102,33,132,134,33,135,41,135,41,102,33,7,70,33, + 129,69,33,8,37,25,134,70,33,70,33,70,25,102,25,102,33,103,33,3, + 102,33,129,70,33,9,70,25,132,38,25,37,25,37,17,37,25,3,5,25, + 140,37,17,5,25,5,25,4,17,5,17,5,25,4,25,4,17,4,25,4, + 17,228,16,4,17,3,228,16,135,163,8,41,58,240,115,77,107,45,107,45, + 99,109,107,6,77,107,130,179,132,245,132,8,212,132,133,179,124,147,116,180, + 124,147,124,180,124,3,212,132,145,180,132,179,124,180,132,212,132,212,124,180, + 132,180,124,115,124,50,108,18,100,210,91,18,108,183,165,117,157,105,66,101, + 41,102,41,3,167,49,6,199,49,130,199,57,200,57,4,199,49,134,231,49, + 231,49,199,49,231,57,135,41,165,8,3,132,16,132,133,8,166,8,43,66, + 114,148,3,243,164,132,243,172,19,173,243,164,243,164,4,243,172,130,243,164, + 243,164,8,243,172,139,19,173,243,172,19,173,20,173,19,173,243,172,19,173, + 20,173,19,173,20,173,20,173,5,52,181,132,85,181,243,164,199,57,130,16, + 5,195,24,137,163,24,195,24,195,24,163,24,130,16,227,24,132,65,66,41, + 99,49,7,2,33,133,67,41,99,49,67,41,34,41,34,41,3,2,33,192, + 34,41,2,33,226,32,100,49,10,115,42,131,76,139,108,147,172,147,172,155, + 169,114,234,114,234,122,234,114,43,131,169,114,234,114,234,122,169,114,10,123, + 75,131,10,123,233,122,168,106,103,98,71,90,131,65,2,41,2,41,34,41, + 2,41,34,41,34,41,2,41,2,41,34,41,34,41,2,41,2,41,2,33, + 34,41,2,41,67,49,66,41,99,49,67,49,2,33,2,33,1,33,225,32, + 2,33,2,41,34,49,99,49,132,57,196,73,5,82,99,65,2,41,34,41, + 34,41,2,41,34,41,3,41,3,34,41,137,2,41,164,57,66,57,197,57, + 34,49,226,40,197,57,34,49,2,41,140,3,153,236,90,12,91,12,91,12, + 99,12,91,12,91,12,99,44,99,12,91,44,99,44,99,12,91,44,99,44, + 99,12,91,44,99,44,91,45,99,44,99,44,99,12,91,45,99,44,99,44, + 99,44,91,4,44,99,133,45,99,44,99,45,99,44,99,45,99,3,44,99, + 161,44,91,45,99,44,99,45,99,44,91,45,99,45,99,44,99,45,99,45, + 99,44,99,45,91,45,99,45,99,44,99,45,99,44,99,44,99,44,91,44, + 99,45,91,45,99,45,99,45,91,45,91,45,99,44,91,44,91,45,99,45, + 91,45,99,44,91,45,99,4,45,91,133,45,99,45,91,44,91,45,91,45, + 91,4,44,91,3,45,91,129,44,91,4,45,91,133,13,91,45,91,45,91, + 12,91,13,91,3,45,91,129,12,91,4,45,91,142,44,91,13,91,236,82, + 203,82,203,82,236,90,78,91,208,107,49,116,82,124,114,124,114,124,147,124, + 146,124,6,147,124,129,179,124,4,147,124,158,114,116,114,116,146,124,178,140, + 179,140,179,140,178,140,179,140,179,140,178,140,179,140,178,140,178,140,211,148, + 179,140,211,140,211,140,211,148,178,148,113,132,49,124,49,124,16,116,207,107, + 241,107,82,116,147,124,212,132,237,74,134,33,4,232,41,158,199,33,243,132, + 215,173,44,99,138,74,170,82,170,82,203,90,171,74,110,91,82,116,82,124, + 82,124,114,124,147,124,179,124,179,132,179,132,180,132,180,124,179,132,180,132, + 179,132,179,124,212,132,212,132,180,132,212,132,180,132,180,132,8,212,132,134, + 245,132,240,107,167,49,228,24,37,33,69,33,5,102,41,141,70,41,70,41, + 102,41,70,33,134,41,102,41,134,41,134,41,167,49,167,49,199,49,199,49, + 232,57,3,199,49,130,167,49,167,49,3,134,41,131,102,41,102,33,102,41, + 3,102,33,140,102,41,102,41,102,33,102,33,102,41,135,41,135,41,135,33, + 167,41,135,41,135,41,134,41,4,102,33,140,134,33,135,33,102,33,134,33, + 102,33,102,33,69,33,70,33,69,33,5,33,37,33,37,25,3,37,33,4, + 70,33,141,70,25,102,25,102,33,134,33,102,33,134,33,135,33,102,33,102, + 33,103,33,102,33,102,33,102,25,4,70,25,143,38,25,38,25,37,25,6, + 25,37,25,37,17,5,25,5,25,5,17,5,25,5,25,5,17,228,16,228, + 24,228,24,10,228,16,133,196,16,228,16,163,8,106,66,146,132,3,45,107, + 129,109,107,6,77,107,130,114,132,245,132,9,212,132,154,212,124,212,132,179, + 132,212,132,212,132,180,140,179,140,179,140,179,132,180,124,212,132,212,124,180, + 124,180,124,147,124,82,108,18,100,210,91,242,99,182,165,150,165,171,74,101, + 41,102,41,167,49,167,49,7,199,49,147,231,49,232,57,199,57,200,57,199, + 49,199,57,200,57,199,49,199,49,8,58,135,41,165,16,132,16,132,16,133, + 8,133,8,166,8,10,66,81,148,3,243,164,131,243,172,243,164,243,172,4, + 243,164,130,243,172,243,172,4,243,164,3,243,172,130,243,164,243,164,3,243, + 172,135,20,173,19,173,20,173,19,173,20,173,20,173,52,173,6,52,181,132, + 84,181,52,181,73,74,130,16,4,195,24,129,163,24,4,195,24,178,130,16, + 163,24,132,65,66,49,131,57,2,41,2,33,2,33,2,41,2,33,2,33, + 226,32,34,41,66,49,67,49,67,41,67,49,132,57,132,65,132,57,197,73, + 34,41,225,32,100,41,238,147,238,163,237,163,237,163,205,155,237,163,10,131, + 201,114,201,114,136,106,136,106,104,98,70,90,6,82,229,73,196,65,164,57, + 131,57,99,49,132,57,132,57,196,65,131,57,164,65,2,41,2,33,5,2, + 41,132,34,41,2,41,34,41,2,41,3,34,41,150,2,41,2,41,67,41, + 99,49,164,65,229,73,70,90,135,106,201,114,233,122,74,139,107,147,140,147, + 172,155,13,164,69,122,2,41,34,41,34,41,2,41,34,41,2,41,4,34, + 41,136,99,49,131,57,100,57,131,57,226,40,132,49,131,57,2,41,93,3, + 6,12,91,129,12,99,3,12,91,140,12,99,12,91,44,99,12,91,12,91, + 12,99,44,99,12,91,45,99,45,99,44,99,12,91,4,44,99,131,45,99, + 45,99,44,91,4,44,99,132,45,99,44,99,45,99,45,99,3,44,99,131, + 45,91,45,99,45,99,4,44,99,157,45,99,44,99,45,99,44,99,44,91, + 45,99,44,91,44,99,45,91,44,91,45,99,45,91,45,99,45,91,45,99, + 45,91,45,99,44,99,45,99,45,99,44,99,45,91,44,99,45,99,45,91, + 45,99,45,91,45,91,44,99,6,45,91,130,44,91,44,91,4,45,91,134, + 12,91,45,91,44,91,13,91,45,91,13,91,4,45,91,130,12,91,12,91, + 6,45,91,135,236,82,203,82,236,90,13,91,110,99,240,107,82,116,4,114, + 124,6,147,124,129,179,132,3,147,124,133,146,124,146,124,114,116,114,116,146, + 132,4,178,140,133,179,140,178,140,210,140,179,140,179,140,3,211,140,174,179, + 140,211,140,211,148,146,140,81,132,49,124,49,124,240,115,208,107,17,108,115, + 116,147,124,180,124,245,132,171,66,135,33,232,49,232,41,200,41,74,50,243, + 132,215,173,138,82,105,74,138,82,170,82,171,82,203,90,143,99,82,116,114, + 124,82,116,114,124,147,124,179,132,179,132,180,132,179,124,179,124,180,124,212, + 132,180,132,211,132,211,132,212,132,180,132,11,212,132,132,244,132,16,124,8, + 58,69,33,8,102,41,129,70,41,3,102,41,3,134,41,129,135,41,3,167, + 49,136,199,49,200,49,199,49,199,57,199,49,167,49,135,49,102,41,3,134, + 41,3,102,41,160,134,41,102,41,102,33,134,41,134,33,167,49,167,41,167, + 41,135,41,135,41,134,41,70,33,102,33,70,33,102,33,102,33,70,33,70, + 33,102,33,70,33,70,33,69,33,69,33,70,33,37,33,37,25,37,25,37, + 33,69,33,69,33,70,33,69,33,3,102,33,134,103,33,103,33,102,33,135, + 33,103,33,103,33,4,102,33,5,70,25,130,37,25,37,25,4,5,25,131, + 4,17,4,25,4,17,7,228,16,129,228,24,5,228,16,3,196,16,130,228, + 16,196,16,3,228,16,134,131,8,232,49,146,132,142,115,45,107,45,99,4, + 77,107,132,45,107,45,107,45,99,240,115,4,244,140,7,244,148,130,212,148, + 212,148,4,211,148,176,212,148,179,140,212,132,212,132,212,124,212,124,180,124, + 147,124,82,108,18,100,242,83,241,99,182,165,150,157,235,82,102,41,102,41, + 166,49,199,49,167,49,167,49,199,49,167,49,199,49,199,49,231,57,199,49, + 199,49,200,57,232,57,232,57,200,57,199,49,232,57,199,49,199,49,167,41, + 165,16,132,8,132,16,164,16,133,8,134,8,233,57,49,140,211,164,243,164, + 211,164,3,243,164,134,211,164,211,164,243,164,243,164,211,164,211,164,5,243, + 164,133,243,172,243,172,244,172,19,173,19,173,3,20,173,132,52,173,20,173, + 52,173,52,173,4,52,181,3,84,181,133,85,181,85,181,117,181,236,98,162, + 16,9,195,24,136,130,16,130,16,132,57,67,49,132,57,34,41,2,33,34, + 41,4,2,33,195,99,49,196,65,164,65,131,57,99,49,99,49,99,57,66, + 49,67,41,34,41,2,41,2,33,168,98,168,106,104,98,38,82,229,73,196, + 65,132,57,99,49,66,41,34,33,2,33,226,32,225,32,2,33,131,57,164, + 65,164,65,196,73,67,49,99,49,67,49,99,49,66,41,34,41,2,41,226, + 32,2,33,2,33,2,41,67,49,34,41,34,41,2,41,34,41,2,41,2, + 41,34,41,34,41,2,41,2,33,72,82,237,147,237,163,14,164,14,172,14, + 172,46,172,14,172,14,164,13,164,13,164,237,155,237,155,42,147,193,40,9, + 34,41,136,2,41,229,65,34,49,164,65,2,41,67,41,164,65,2,41,19, + 3,3,12,99,149,12,91,12,99,12,91,12,99,12,99,44,99,12,99,12, + 91,12,91,44,99,44,99,12,99,44,99,45,99,44,99,44,99,13,99,12, + 99,44,99,44,99,12,99,3,44,99,130,44,91,45,99,3,44,99,153,45, + 99,45,99,44,99,45,99,45,99,44,99,44,99,45,99,44,99,45,91,45, + 91,44,91,45,99,45,99,44,99,45,99,44,91,45,99,44,91,45,99,45, + 99,45,91,44,99,45,99,45,91,3,45,99,129,45,91,5,45,99,135,45, + 91,45,99,45,99,45,91,44,91,44,91,45,99,18,45,91,130,44,91,44, + 91,3,45,91,132,44,91,45,91,13,91,44,91,6,45,91,141,236,82,203, + 82,236,90,45,91,110,99,17,116,82,116,114,116,114,124,146,124,146,124,115, + 124,146,124,9,147,124,132,115,124,114,116,114,124,146,132,4,178,140,5,179, + 140,135,211,140,179,140,211,148,211,140,211,148,211,148,114,140,3,49,124,146, + 240,115,208,107,49,108,147,116,179,124,179,124,180,124,180,132,9,42,167,33, + 232,41,167,33,171,66,85,149,150,165,40,66,138,74,138,82,3,170,82,149, + 236,90,82,116,114,124,82,116,114,124,115,124,147,132,179,132,179,132,180,132, + 179,124,180,132,180,132,212,132,211,132,211,132,180,132,180,132,212,132,212,132, + 180,132,7,212,132,133,244,132,179,132,110,99,8,66,102,33,8,102,41,129, + 70,41,3,102,41,3,134,41,135,135,49,167,49,167,49,199,49,200,57,200, + 49,200,49,3,167,49,133,135,49,134,41,135,49,134,41,102,41,7,134,41, + 3,167,41,129,135,41,3,102,41,131,102,33,70,33,69,33,4,70,33,129, + 69,33,5,70,33,130,102,33,102,33,3,70,33,4,102,33,130,103,33,135, + 33,4,102,33,3,70,33,132,70,25,70,25,38,25,70,25,3,37,25,5, + 5,25,131,4,25,4,17,228,24,10,228,16,132,196,16,196,16,228,16,228, + 16,3,196,16,140,228,16,196,16,228,16,196,16,228,16,228,16,163,8,232, + 49,113,132,49,132,12,99,45,99,3,77,107,137,45,99,77,107,77,107,12, + 99,207,115,20,149,244,156,244,148,244,148,6,244,156,130,243,148,244,156,5, + 211,148,131,212,148,211,140,212,132,3,212,124,142,180,124,148,116,82,108,18, + 100,242,83,210,99,183,165,20,149,44,91,102,41,101,41,167,49,199,49,167, + 49,7,199,49,146,231,57,199,49,199,49,199,57,199,49,199,57,231,49,199, + 49,231,57,167,41,165,16,132,8,131,16,132,16,166,8,134,8,201,49,16, + 140,6,211,164,9,243,164,131,243,172,243,172,19,173,4,20,173,129,52,173, + 3,20,173,135,52,181,52,181,52,173,52,173,52,181,52,181,84,181,5,85, + 181,130,117,189,110,115,10,195,24,141,162,16,130,16,68,49,99,57,131,49, + 35,41,2,33,2,41,2,41,2,33,2,41,2,33,67,41,3,164,65,138, + 228,73,132,57,2,33,2,41,2,33,2,41,34,41,2,33,34,41,34,41, + 6,2,33,135,2,41,2,41,2,33,2,33,2,41,2,33,2,41,3,34, + 41,142,2,41,34,41,67,41,99,49,132,57,164,65,5,74,38,90,103,98, + 168,106,233,114,74,131,5,90,1,41,7,34,41,144,2,33,230,65,205,147, + 237,155,173,147,172,147,107,131,43,131,10,115,200,106,136,98,71,90,6,74, + 196,65,164,65,2,41,9,34,41,136,2,41,197,57,66,57,164,65,34,49, + 34,41,164,65,34,49,101,3,154,12,91,12,91,12,99,12,99,12,91,44, + 91,12,99,12,91,12,99,12,99,44,99,12,91,12,91,44,99,12,91,44, + 99,44,99,12,91,45,99,12,99,45,99,44,99,45,99,44,99,44,91,44, + 99,3,45,99,4,44,99,157,45,99,44,99,45,99,45,99,44,99,45,99, + 44,99,44,99,45,99,77,91,45,99,44,99,77,91,44,99,77,99,45,91, + 45,99,45,91,45,91,45,99,45,91,44,99,45,99,45,99,44,91,45,91, + 45,99,45,99,44,99,3,45,99,133,45,91,44,99,45,91,45,91,44,99, + 3,45,99,138,45,91,44,99,45,91,45,99,45,99,44,91,44,91,45,91, + 45,91,45,99,6,45,91,132,12,91,45,91,44,91,44,91,3,45,91,133, + 44,91,44,91,45,91,12,91,12,91,4,45,91,142,12,91,204,82,171,82, + 236,90,45,91,143,99,49,116,82,116,114,124,114,124,115,124,146,124,147,124, + 146,124,3,147,124,138,179,124,147,132,179,124,147,124,147,124,115,124,147,116, + 114,116,114,124,146,140,5,178,140,4,179,140,154,146,140,146,140,179,140,211, + 148,211,148,211,140,114,140,49,124,17,124,17,124,240,115,208,99,50,116,147, + 124,180,124,179,124,148,124,180,124,50,108,200,33,200,41,167,33,45,75,183, + 157,20,157,8,66,3,138,82,139,170,82,170,82,171,82,236,82,180,132,82, + 124,82,116,146,124,179,124,179,132,179,132,3,179,124,133,180,124,212,132,212, + 132,180,132,180,132,9,212,132,3,244,132,135,147,132,236,90,8,58,135,41, + 70,33,69,33,70,41,4,102,41,129,70,33,5,102,41,138,134,41,134,41, + 135,49,167,49,199,49,200,49,199,49,200,57,199,49,199,49,3,167,49,132, + 134,41,135,49,134,41,134,41,5,102,41,138,134,41,135,41,135,41,134,41, + 134,41,102,41,102,41,102,33,102,41,69,33,3,70,33,4,102,33,137,103, + 33,102,33,134,33,102,33,103,41,102,33,134,41,102,33,103,33,3,102,33, + 129,70,33,4,102,33,132,70,33,70,33,70,25,70,25,7,37,25,139,4, + 25,5,25,4,25,4,25,228,24,228,24,229,24,228,24,228,16,228,24,228, + 24,3,228,16,135,196,16,228,16,196,16,228,24,195,24,196,16,228,16,4, + 196,16,129,228,16,7,196,16,142,163,16,103,33,146,132,16,124,12,99,45, + 99,77,107,45,99,45,107,45,107,77,107,45,99,45,99,142,115,4,244,156, + 158,243,156,244,156,244,156,243,156,244,156,243,156,243,156,243,148,244,156,211, + 148,243,148,211,148,212,148,211,148,212,140,212,132,212,132,212,124,212,124,180, + 124,148,116,83,108,18,100,242,83,209,99,182,165,85,149,109,99,134,41,101, + 41,4,167,49,11,199,49,142,199,57,199,57,231,49,231,57,167,41,197,16, + 164,16,132,16,132,16,165,8,166,8,137,41,16,132,211,156,7,243,164,135, + 244,164,243,164,20,165,243,164,19,173,243,164,243,172,3,19,173,6,20,173, + 137,52,173,20,173,52,181,84,173,52,181,85,181,84,181,85,181,84,181,4, + 85,181,132,117,181,149,189,16,132,227,24,9,195,24,134,163,24,130,16,36, + 41,132,65,99,49,66,49,4,2,41,144,2,33,2,33,34,41,99,57,99, + 57,99,49,131,49,66,49,34,41,34,33,2,41,3,41,2,41,2,41,2, + 33,1,41,4,2,41,130,34,41,2,41,3,225,32,149,2,33,35,41,99, + 49,164,57,6,74,70,82,103,98,136,106,201,114,169,114,169,114,233,114,10, + 123,172,147,205,155,237,163,238,163,13,164,78,172,9,139,1,49,5,34,41, + 145,2,41,34,41,2,41,67,41,39,82,5,74,196,65,132,57,99,49,67, + 49,34,41,34,41,2,41,2,41,2,33,2,41,2,41,10,34,41,136,2, + 41,100,49,163,65,132,57,66,57,2,41,165,57,164,65,93,3,153,12,91, + 12,91,12,99,12,91,12,99,12,99,44,91,12,91,44,99,12,91,12,99, + 44,99,44,99,12,91,12,99,44,99,45,99,44,99,12,91,44,99,44,91, + 12,99,45,99,12,99,44,99,5,45,99,129,44,99,7,45,99,129,44,99, + 3,45,99,132,44,99,44,99,45,99,45,91,3,45,99,133,44,99,44,99, + 45,91,45,99,45,99,4,44,99,148,45,91,45,99,44,91,76,99,77,99, + 45,99,45,91,45,91,45,99,45,99,44,91,45,99,45,99,44,91,45,91, + 45,91,44,91,45,91,45,91,44,91,3,45,91,132,45,99,45,91,45,91, + 45,99,4,45,91,129,13,91,6,45,91,129,44,91,5,45,91,142,44,91, + 45,91,45,91,236,82,203,82,203,82,12,91,77,99,176,107,49,116,114,124, + 114,124,146,124,146,124,7,147,124,138,179,132,179,124,147,124,115,124,147,124, + 115,116,114,116,146,132,178,140,179,140,3,178,140,159,179,140,178,140,178,140, + 179,140,114,140,240,115,81,124,178,140,211,148,211,140,178,140,113,132,49,124, + 48,124,49,124,208,115,240,107,82,116,147,124,180,124,179,124,180,124,147,116, + 180,124,241,99,200,41,167,41,240,99,248,173,16,124,8,66,3,138,74,147, + 138,82,170,82,170,82,138,82,110,99,147,124,82,116,114,124,147,124,179,132, + 179,132,180,132,180,124,179,132,180,132,212,132,180,132,212,132,180,132,11,212, + 132,143,245,132,146,124,171,82,232,57,200,49,69,33,37,33,70,33,102,33, + 70,33,102,41,70,41,102,41,70,41,70,33,4,102,41,134,135,41,135,41, + 135,49,167,49,167,49,200,49,3,199,49,144,200,57,167,49,135,49,135,49, + 134,41,134,41,101,33,102,41,102,41,102,33,134,41,135,41,134,41,102,33, + 102,41,134,41,4,102,41,3,102,33,129,135,33,8,135,41,133,134,33,135, + 41,135,41,103,33,102,41,6,102,33,132,69,33,102,33,69,33,69,33,3, + 37,33,129,37,25,4,5,25,142,37,25,4,25,4,25,228,24,228,16,228, + 24,228,24,228,16,228,16,228,24,228,16,228,24,196,16,196,24,3,196,16, + 135,228,16,196,16,195,16,195,16,196,16,195,16,195,16,4,196,16,129,195, + 16,4,196,16,165,228,16,228,16,163,8,167,41,146,124,207,115,12,99,45, + 99,44,99,45,107,45,107,45,99,45,107,44,99,45,99,13,99,178,148,20, + 157,243,156,243,156,244,156,243,156,243,156,244,156,243,156,243,156,243,148,243, + 156,243,148,244,148,211,156,243,148,243,148,212,148,212,140,212,132,212,132,3, + 180,124,139,147,116,115,116,50,100,242,91,209,91,150,165,53,149,175,107,101, + 41,101,41,134,41,4,167,49,130,199,49,231,49,5,199,49,130,199,57,199, + 57,4,199,49,139,231,57,167,49,197,16,164,16,132,16,164,16,164,16,133, + 8,39,33,207,123,179,156,3,243,164,142,243,172,20,165,19,173,19,173,243, + 164,20,173,243,164,20,173,244,172,20,173,19,173,20,173,20,173,19,173,4, + 20,173,138,52,173,52,173,20,173,20,173,52,181,52,181,84,181,52,173,84, + 181,53,181,4,85,181,134,85,173,85,173,117,181,146,148,36,33,162,24,8, + 195,24,136,163,24,130,16,227,32,164,65,99,49,99,57,2,33,2,33,4, + 34,41,131,2,41,2,33,1,33,6,2,33,3,34,41,160,67,41,67,49, + 34,41,2,41,34,41,34,41,2,41,99,49,136,90,9,115,42,123,107,139, + 140,147,140,147,75,139,42,131,108,139,76,139,10,123,140,139,140,147,10,123, + 140,147,108,139,237,155,204,155,172,147,108,139,75,139,43,131,168,114,66,49, + 7,34,41,135,2,41,2,41,225,32,225,32,226,32,226,32,2,33,19,34, + 41,135,1,33,229,65,131,57,164,65,1,41,34,41,99,49,89,3,129,12, + 91,3,12,99,131,12,91,12,91,12,99,3,12,91,136,12,99,12,91,12, + 91,44,99,12,99,44,99,44,91,44,99,3,45,99,132,44,99,45,99,44, + 99,44,99,4,45,99,142,45,91,44,99,45,99,44,99,45,99,44,99,45, + 99,44,99,44,99,45,99,44,99,45,91,44,91,44,99,4,45,99,148,44, + 99,45,99,45,99,44,99,45,91,45,99,44,91,45,91,45,99,45,91,45, + 91,45,99,45,99,45,91,45,91,45,99,44,91,45,91,45,99,45,99,3, + 45,91,130,45,99,45,99,21,45,91,129,13,91,11,45,91,139,235,82,203, + 82,235,82,13,91,110,99,208,107,82,116,114,116,114,124,114,124,146,124,3, + 147,124,132,147,132,147,124,179,124,179,132,4,147,124,132,147,116,114,116,114, + 116,146,132,4,178,140,179,179,140,178,140,178,140,211,140,179,148,49,132,174, + 107,48,116,146,140,211,148,211,148,178,140,81,132,49,124,49,124,17,124,208, + 107,241,107,115,116,180,124,180,124,179,124,179,124,147,124,115,116,180,124,175, + 91,102,25,16,108,89,182,44,99,73,66,106,74,138,74,138,74,138,82,138, + 82,170,82,171,82,171,82,207,107,114,124,114,124,147,124,179,124,180,132,180, + 124,179,124,180,124,180,132,180,132,13,212,132,145,244,132,245,140,82,124,171, + 74,232,57,200,57,135,41,4,25,70,33,102,41,101,33,69,33,70,33,70, + 33,102,41,102,41,70,33,3,102,41,140,134,41,135,49,135,49,167,49,199, + 49,167,49,199,49,199,49,167,49,199,49,167,49,135,49,3,102,41,135,102, + 33,102,41,134,41,134,41,102,41,135,41,135,41,3,134,41,132,135,41,134, + 41,102,41,134,41,5,135,41,132,167,41,167,41,135,41,167,41,3,135,41, + 134,103,41,134,41,134,41,103,33,102,33,102,33,4,70,33,3,69,33,139, + 37,33,37,33,37,25,5,33,5,25,37,25,5,25,4,25,4,25,228,24, + 4,25,3,228,24,3,228,16,132,228,24,196,16,228,16,228,16,3,196,16, + 132,195,16,196,16,195,16,196,16,5,195,16,137,196,16,196,16,195,16,195, + 16,196,16,195,16,196,16,196,16,195,16,3,196,16,135,163,8,167,41,179, + 132,175,115,12,99,44,99,45,107,4,45,99,133,12,99,45,107,12,99,16, + 132,20,157,6,243,156,161,243,148,211,156,243,148,243,156,211,148,211,148,243, + 156,243,148,244,156,244,148,212,140,212,132,212,132,180,132,180,124,180,124,147, + 124,83,108,18,100,242,91,209,91,118,157,85,157,240,115,102,41,101,41,134, + 41,167,49,166,49,199,49,167,49,199,49,167,49,4,199,49,129,200,49,3, + 199,49,145,231,49,199,49,199,49,199,57,167,41,197,16,164,16,132,16,132, + 16,164,16,133,8,230,24,174,123,211,156,243,164,211,164,211,164,6,243,164, + 144,19,165,244,164,243,164,243,164,19,165,20,165,244,164,19,165,19,173,20, + 165,19,173,20,173,20,173,52,173,20,173,20,173,11,52,173,133,52,165,52, + 173,178,148,101,41,162,16,9,195,24,197,130,16,195,24,164,73,99,49,132, + 57,1,33,34,41,2,41,34,41,2,33,2,41,34,41,34,41,35,41,67, + 41,99,49,131,57,196,65,228,73,5,82,69,90,133,98,134,106,198,106,165, + 114,99,57,2,41,2,41,34,41,2,33,99,41,108,131,14,164,14,164,13, + 164,14,164,237,163,140,147,75,139,10,131,42,131,234,122,42,123,9,123,200, + 106,168,106,103,98,38,90,5,74,196,65,132,57,99,49,67,49,34,41,34, + 41,2,41,2,33,1,33,2,33,2,33,2,41,34,41,66,41,99,49,131, + 57,164,65,196,73,229,73,196,73,7,34,41,129,35,41,11,34,41,135,2, + 41,197,65,99,57,229,73,34,49,67,49,67,49,74,3,5,12,91,135,12, + 99,12,91,44,99,44,99,12,91,12,99,12,91,3,12,99,156,45,99,12, + 91,44,99,13,99,44,99,12,91,45,99,45,99,44,99,45,99,45,99,44, + 99,45,99,45,99,44,99,44,99,45,99,44,99,45,99,44,91,44,99,44, + 99,45,99,45,99,45,91,44,91,44,99,44,99,3,45,99,143,44,99,45, + 91,45,91,45,99,45,99,45,91,45,91,44,99,45,91,45,99,77,91,45, + 91,45,99,45,91,44,99,3,45,91,132,44,99,44,91,77,91,45,99,5, + 45,91,131,45,99,45,91,44,91,4,45,91,129,44,91,8,45,91,129,12, + 91,4,45,91,131,13,91,45,91,44,91,4,45,91,151,13,91,45,91,45, + 91,12,91,204,82,203,82,204,90,13,91,110,99,240,107,82,124,114,116,114, + 124,146,124,147,124,179,124,147,124,179,132,147,124,147,124,179,132,179,132,179, + 124,3,147,124,155,147,116,114,116,114,124,146,132,179,140,178,140,178,140,179, + 140,179,140,178,140,211,140,179,140,179,140,81,132,16,116,81,124,179,140,211, + 148,211,140,146,140,81,132,49,124,49,124,16,116,208,107,17,108,147,124,3, + 180,124,142,179,124,147,124,115,116,115,116,244,140,236,74,49,108,187,190,73, + 74,74,74,106,74,138,74,138,74,106,74,3,170,82,136,171,82,203,82,82, + 116,114,124,147,124,179,132,179,132,179,124,3,180,132,130,212,132,180,132,11, + 212,132,139,244,132,244,132,21,141,208,107,106,74,8,58,200,57,167,49,102, + 41,37,25,102,41,3,70,33,130,102,33,102,41,3,70,41,148,102,41,102, + 41,134,41,134,41,135,49,167,49,167,49,199,49,200,49,200,57,199,49,167, + 49,135,49,102,41,70,41,102,41,102,41,134,41,167,41,166,41,5,167,49, + 3,135,41,129,102,41,7,135,41,142,167,41,167,49,135,41,134,41,135,41, + 102,41,134,33,135,41,102,41,102,33,102,33,70,33,70,33,102,33,3,69, + 33,133,37,33,69,33,37,25,37,33,37,33,5,4,25,132,228,24,4,25, + 228,24,4,25,3,228,24,137,196,24,228,16,228,16,196,16,196,16,228,24, + 196,16,195,16,196,24,4,196,16,130,195,16,195,16,4,196,16,131,195,16, + 196,16,195,16,8,196,16,138,195,16,163,8,135,41,114,124,142,107,12,99, + 45,99,44,99,45,99,12,99,3,45,99,132,12,99,12,99,142,107,52,165, + 3,243,156,7,211,148,154,179,148,179,148,211,148,244,156,243,156,244,148,212, + 148,212,132,212,132,180,132,180,124,180,124,148,124,83,108,18,100,242,91,209, + 91,118,157,85,149,240,115,102,41,101,41,134,41,166,49,167,49,167,49,11, + 199,49,129,231,49,4,199,49,138,197,16,164,16,132,16,164,16,164,16,132, + 8,197,16,142,115,179,156,211,156,3,146,148,130,178,148,178,148,5,211,156, + 4,243,156,3,243,164,136,244,164,244,164,19,165,20,165,19,165,20,165,20, + 165,20,157,10,20,165,133,52,165,52,165,211,156,199,49,130,16,3,195,24, + 129,163,24,5,195,24,136,162,16,130,16,165,65,99,49,164,57,1,41,2, + 41,2,41,3,34,41,135,2,33,196,65,134,98,166,106,199,114,231,114,7, + 123,3,6,123,134,197,114,165,106,70,123,70,131,195,73,2,33,4,34,41, + 142,234,106,204,147,139,139,74,131,10,123,201,106,103,98,70,90,5,74,197, + 65,132,57,99,49,67,41,34,41,3,2,33,150,1,41,2,41,2,33,2, + 41,2,41,34,41,34,41,67,41,132,49,196,65,4,74,69,90,134,98,166, + 106,198,114,230,122,7,123,7,123,71,131,103,131,230,130,66,57,18,34,41, + 135,2,41,132,57,131,65,164,65,164,65,132,65,132,65,43,3,148,12,91, + 44,99,44,91,12,91,12,99,44,99,12,91,12,99,12,91,44,99,12,91, + 12,99,44,99,45,99,44,99,12,91,44,99,44,99,45,99,45,99,7,44, + 99,3,45,99,140,77,99,45,99,45,99,44,99,45,91,45,91,44,91,45, + 99,44,99,45,99,45,99,45,91,4,45,99,133,45,91,45,91,45,99,44, + 99,44,99,7,45,99,130,45,91,45,91,5,45,99,132,45,91,45,99,45, + 91,44,99,3,45,91,129,76,99,7,45,91,129,45,99,3,45,91,129,44, + 91,10,45,91,129,12,91,8,45,91,138,12,83,203,74,203,82,236,90,45, + 91,175,99,17,108,82,124,114,124,114,124,6,147,124,129,179,124,5,147,124, + 134,146,116,146,124,115,116,114,124,146,140,179,148,8,179,140,130,178,140,146, + 140,3,211,140,154,211,148,146,140,49,132,49,124,49,124,240,115,240,107,49, + 116,147,124,180,124,212,124,180,124,179,124,179,116,147,116,115,116,147,132,211, + 148,243,140,89,190,199,57,106,74,105,74,105,74,138,74,138,74,3,138,82, + 138,171,82,171,90,171,82,146,124,147,124,147,132,179,124,212,124,180,124,179, + 132,13,212,132,147,244,132,212,132,244,132,53,141,78,99,73,66,8,58,8, + 66,199,57,135,49,69,33,37,33,102,41,102,33,70,33,70,41,70,41,102, + 41,70,41,3,102,41,138,134,41,134,49,167,49,167,49,200,49,200,49,168, + 49,199,49,167,49,134,41,3,102,41,130,134,41,135,41,5,167,49,138,200, + 49,167,49,199,49,167,41,134,41,135,41,102,33,102,41,135,41,134,41,3, + 135,41,129,102,41,4,134,41,3,102,41,135,134,41,70,33,70,41,70,33, + 69,33,70,41,69,33,5,37,33,140,36,33,36,25,5,25,4,33,4,25, + 4,33,4,25,4,25,228,24,228,24,4,25,228,16,3,228,24,132,196,24, + 228,16,196,16,228,16,3,196,16,138,195,16,195,16,196,16,195,16,196,16, + 196,16,163,16,195,16,195,16,163,16,4,195,16,146,196,16,195,16,195,16, + 196,16,195,16,195,16,196,16,195,16,195,16,196,16,163,8,167,41,82,124, + 142,107,12,99,45,99,12,99,13,99,3,44,99,135,45,107,13,99,45,99, + 44,99,20,165,243,156,243,156,3,211,148,131,179,148,179,148,211,148,4,179, + 148,133,243,148,243,156,244,156,244,156,244,148,3,212,132,145,180,132,180,124, + 147,124,83,116,50,100,18,92,209,91,85,149,85,149,146,132,134,49,102,41, + 134,41,166,49,166,49,167,49,167,49,13,199,49,147,231,57,199,49,197,16, + 164,16,132,16,132,16,164,16,164,16,197,16,45,107,146,156,178,156,113,140, + 81,140,114,140,146,148,146,148,179,148,179,148,5,211,148,137,211,156,211,148, + 211,156,243,156,211,156,243,156,211,156,243,156,243,156,6,244,156,129,19,157, + 7,20,165,135,52,165,52,165,20,165,170,74,98,16,195,24,163,24,7,195, + 24,133,162,16,98,8,165,65,99,57,132,57,3,34,41,156,2,41,34,41, + 2,41,2,33,5,74,136,131,70,131,196,114,132,98,197,106,165,106,229,114, + 5,115,164,106,165,106,5,115,102,131,36,90,2,33,34,41,34,41,2,41, + 2,41,67,49,99,49,35,41,2,33,226,32,4,225,32,136,1,33,2,33, + 34,41,34,41,67,49,99,49,163,57,66,49,5,34,41,145,2,41,2,41, + 67,41,137,131,103,139,135,139,38,131,229,114,196,114,197,106,132,106,164,106, + 164,106,69,131,102,131,70,139,195,81,19,34,41,134,66,41,196,65,34,41, + 132,57,164,65,164,65,242,2,144,12,91,12,99,12,99,12,91,12,99,12, + 91,12,91,12,99,12,91,44,99,12,91,44,99,44,99,12,99,44,99,12, + 91,7,44,99,130,45,99,44,99,4,45,99,129,44,99,6,45,99,144,44, + 99,44,99,45,99,44,99,45,99,45,91,45,99,44,99,44,99,45,99,45, + 99,44,99,44,91,45,99,45,99,45,91,3,45,99,129,45,91,3,45,99, + 129,44,99,3,45,99,131,44,91,45,99,45,99,5,45,91,132,44,91,45, + 91,45,91,44,91,29,45,91,139,12,83,203,74,203,82,12,91,45,99,207, + 107,17,116,82,124,114,124,146,124,146,124,3,147,124,129,179,132,6,147,124, + 150,115,124,146,124,114,124,114,116,146,124,179,140,178,140,146,140,113,140,81, + 132,178,132,178,140,179,140,179,140,211,140,179,140,179,148,211,140,211,140,211, + 148,211,148,146,140,3,49,124,150,240,115,240,107,82,116,179,124,180,124,212, + 124,180,124,179,124,147,124,147,116,114,116,147,132,178,132,117,149,150,165,199, + 57,106,74,106,74,138,74,138,74,106,74,138,74,3,138,82,138,171,82,171, + 82,77,91,147,124,147,132,179,132,180,132,212,132,180,132,180,132,14,212,132, + 150,244,132,53,141,78,91,9,58,232,57,8,58,232,57,167,41,102,41,69, + 33,69,33,70,41,70,33,70,33,102,41,70,41,70,41,102,41,134,41,135, + 41,102,41,134,41,3,167,49,135,200,49,167,49,167,49,134,41,102,41,102, + 41,134,41,3,167,49,130,200,49,200,57,5,200,49,130,167,49,134,41,6, + 102,41,131,102,33,102,41,102,33,10,102,41,129,70,33,4,69,33,134,36, + 33,37,33,37,33,5,33,5,33,4,33,6,4,25,7,228,24,135,195,16, + 196,16,196,16,196,24,196,16,196,24,196,16,7,195,16,134,163,16,195,16, + 195,16,164,16,195,16,163,16,9,195,16,3,196,16,134,163,8,70,33,50, + 116,175,107,12,99,236,90,7,12,99,132,45,99,236,90,211,148,20,157,4, + 211,148,129,179,148,6,211,148,133,243,156,243,156,244,156,244,156,212,148,3, + 212,132,143,180,132,179,124,147,124,83,116,50,100,18,100,209,91,85,149,85, + 157,146,132,134,49,134,49,102,41,167,49,166,49,3,167,49,12,199,49,146, + 199,57,199,49,229,16,165,16,164,16,132,16,164,16,164,16,132,16,236,98, + 146,148,179,156,81,140,81,140,113,140,146,148,146,148,178,148,4,211,148,135, + 211,156,211,148,211,156,211,148,211,148,211,156,211,156,5,243,156,133,244,156, + 20,165,244,156,20,157,244,156,3,20,165,129,19,157,5,20,165,135,52,165, + 52,165,45,99,65,8,195,24,195,24,163,24,6,195,24,155,163,24,98,8, + 100,57,131,57,164,57,66,49,34,41,34,41,2,41,34,41,34,41,2,33, + 164,57,71,123,69,131,229,114,197,106,197,114,197,114,165,106,165,98,100,98, + 68,90,4,82,3,74,131,57,2,33,4,34,41,146,2,41,2,41,2,33, + 35,41,99,49,131,57,163,57,196,73,5,82,37,82,102,98,134,98,166,106, + 231,114,7,123,39,131,195,81,2,41,6,34,41,144,2,33,73,115,102,131, + 102,131,5,123,132,106,132,106,197,114,229,114,229,114,229,122,5,123,6,123, + 198,114,228,81,2,41,19,34,41,133,196,65,66,49,6,74,99,57,67,49, + 68,3,132,12,91,12,91,12,99,12,91,4,12,99,137,12,91,12,99,12, + 91,44,91,12,91,44,99,12,99,44,99,45,99,3,44,99,141,12,91,44, + 99,44,99,12,99,45,99,44,99,45,99,44,99,44,99,77,99,45,99,44, + 99,45,99,3,44,99,136,45,99,45,99,44,99,45,99,44,99,45,99,45, + 99,44,99,3,45,99,129,44,99,12,45,99,132,44,91,45,99,45,99,45, + 91,3,45,99,136,45,91,45,91,45,99,45,99,45,91,45,91,44,91,45, + 99,5,45,91,129,44,91,6,45,91,132,45,99,45,91,45,91,12,91,13, + 45,91,138,236,82,204,82,204,82,12,91,78,99,208,107,82,116,114,124,146, + 124,114,124,4,147,124,130,179,124,179,124,5,147,124,144,115,124,146,124,114, + 116,114,116,146,132,178,140,146,140,207,115,45,99,142,99,113,124,178,140,179, + 140,179,140,211,140,211,140,4,211,148,130,179,148,114,140,3,49,124,149,240, + 115,240,107,82,116,180,124,212,132,180,132,212,124,179,124,147,124,115,116,115, + 116,179,132,179,140,150,157,211,148,8,58,106,74,106,74,105,74,106,74,106, + 74,3,138,74,139,138,82,170,82,171,82,171,82,175,107,211,132,179,132,180, + 132,211,132,179,132,180,132,9,212,132,147,244,132,212,132,244,132,212,132,244, + 132,244,132,20,141,45,91,9,58,9,58,8,58,232,57,200,49,134,41,135, + 41,228,24,195,16,70,33,70,33,6,102,41,130,134,41,135,41,5,167,49, + 136,134,49,134,41,102,41,134,41,167,49,199,49,200,49,199,49,3,232,57, + 133,200,57,199,49,200,49,167,49,134,41,5,102,41,145,70,41,69,33,102, + 41,102,41,69,33,70,33,102,41,70,33,70,41,102,41,69,41,69,41,102, + 41,69,41,69,41,69,33,69,33,3,37,33,134,36,33,37,33,4,33,4, + 33,5,33,4,33,3,4,25,130,228,24,4,25,3,228,24,129,228,16,5, + 228,24,4,196,16,3,195,16,135,163,16,195,16,163,16,195,16,195,16,163, + 16,195,16,3,163,16,130,195,16,195,16,3,163,16,146,195,16,195,16,164, + 16,195,16,163,16,195,16,195,8,196,16,195,16,131,16,167,41,114,124,175, + 115,236,90,236,90,12,99,236,90,236,90,5,12,99,131,236,90,49,132,20, + 157,3,243,156,130,211,148,210,148,5,211,148,157,243,156,243,156,243,148,244, + 156,244,156,212,148,212,132,212,132,180,132,180,132,180,124,147,124,115,116,50, + 100,18,100,177,91,53,149,150,157,146,132,167,49,166,49,69,33,166,49,167, + 49,166,49,199,49,167,49,199,49,167,49,8,199,49,129,231,57,3,199,49, + 145,229,24,164,16,164,16,131,16,164,16,132,16,131,16,171,90,114,148,179, + 156,114,140,113,140,114,140,146,140,146,148,178,148,179,148,5,211,148,5,211, + 156,4,243,156,129,19,157,3,20,165,130,20,157,20,157,3,20,165,130,19, + 157,243,164,3,20,165,136,20,157,20,165,52,165,240,123,97,8,195,24,163, + 16,163,24,7,195,24,134,98,8,68,41,132,65,164,57,99,49,2,33,4, + 34,41,147,2,41,66,41,69,82,36,82,227,73,196,65,131,57,99,49,66, + 49,33,41,1,33,1,33,226,32,2,33,34,41,2,41,34,41,34,41,35, + 41,3,34,41,143,2,41,229,65,7,115,6,123,38,123,38,123,6,123,6, + 123,6,115,197,114,230,114,70,131,70,131,135,139,100,98,6,34,41,147,35, + 41,226,32,167,90,71,131,5,123,197,114,165,106,101,98,69,90,36,82,4, + 74,195,65,163,57,131,49,66,49,66,49,34,41,34,41,35,41,12,34,41, + 4,2,41,134,34,41,197,65,98,57,229,65,66,49,34,41,25,3,3,12, + 91,136,12,99,12,99,12,91,45,91,12,91,44,99,12,91,44,99,3,12, + 99,3,44,99,137,45,99,44,99,44,99,45,99,44,99,44,99,45,99,44, + 99,44,99,8,45,99,131,44,99,45,99,45,91,3,44,99,130,45,99,44, + 99,5,45,99,145,44,91,44,91,45,99,44,99,45,99,45,99,44,99,45, + 99,45,99,76,99,45,99,45,99,44,99,45,99,77,99,77,99,45,99,4, + 45,91,130,45,99,77,99,18,45,91,129,45,99,3,45,91,129,12,91,11, + 45,91,138,236,82,204,82,236,90,12,91,142,99,16,108,82,124,114,124,114, + 124,146,124,4,147,124,146,179,124,179,124,147,124,147,124,147,132,147,124,146, + 124,114,124,147,124,114,116,114,124,146,132,178,140,81,132,110,99,236,74,143, + 91,82,124,3,179,140,136,178,140,146,140,179,140,211,148,211,148,243,148,179, + 140,114,132,3,49,124,144,240,115,17,108,115,116,180,124,212,132,212,132,180, + 124,180,124,147,124,147,116,147,116,179,132,211,140,248,173,207,115,41,66,3, + 106,74,130,138,74,106,74,3,138,74,135,138,82,138,82,170,82,170,82,171, + 82,240,115,212,132,3,180,132,131,212,124,212,132,180,132,5,212,132,131,244, + 132,244,132,212,132,3,244,132,142,212,140,245,140,179,132,13,91,9,58,232, + 57,9,58,232,57,232,49,167,49,102,41,70,33,130,8,228,24,5,102,41, + 146,134,41,102,41,135,41,135,41,134,41,135,49,135,49,134,49,134,41,134, + 41,102,41,135,41,199,49,200,49,200,57,199,49,199,49,232,49,3,199,49, + 136,167,49,134,49,134,41,134,41,102,41,70,33,69,33,70,33,6,69,33, + 129,69,41,3,69,33,129,69,41,5,69,33,5,37,33,134,5,25,4,25, + 4,33,4,25,4,25,4,33,11,228,24,136,196,16,196,24,195,16,196,16, + 195,16,195,16,196,16,195,16,10,163,16,134,195,16,195,16,163,16,195,8, + 163,16,195,16,4,163,16,130,195,8,196,16,3,195,16,139,195,8,130,8, + 200,49,17,116,77,107,12,99,12,99,236,90,236,90,12,99,236,90,4,12, + 99,134,236,98,174,115,19,157,211,148,211,156,211,156,8,211,148,133,243,156, + 243,156,244,156,244,156,212,148,4,212,132,141,180,132,147,124,115,116,50,108, + 18,100,209,91,21,141,150,157,211,140,199,49,166,49,101,41,166,49,5,167, + 49,13,199,49,130,230,24,165,16,3,164,16,140,131,16,131,16,74,74,81, + 140,179,156,113,140,81,140,113,140,146,148,146,148,178,148,179,148,3,211,148, + 133,211,156,211,148,243,156,211,156,211,156,7,243,156,140,20,165,20,157,19, + 157,20,165,19,165,20,165,20,165,19,165,244,164,20,165,20,165,20,157,3, + 20,165,131,52,165,114,140,130,16,10,195,24,136,130,16,3,33,164,65,131, + 49,132,57,34,41,34,41,2,41,4,34,41,143,2,33,2,33,34,33,34, + 41,99,49,131,57,196,65,5,74,69,82,102,98,166,106,231,114,231,114,99, + 57,2,41,5,34,41,144,2,33,197,57,168,147,102,139,102,131,69,131,196, + 106,229,114,229,114,164,106,229,114,70,131,70,131,102,131,165,106,66,49,7, + 34,41,142,35,41,131,49,66,41,34,41,34,33,2,33,2,41,2,33,2, + 33,2,41,2,41,34,41,34,41,2,41,8,34,41,145,67,49,35,49,67, + 49,99,49,99,57,132,57,164,65,196,65,196,73,5,74,163,73,2,41,99, + 49,196,73,131,57,164,65,34,41,248,2,3,12,91,145,12,99,12,99,12, + 91,12,99,44,99,12,91,12,99,44,99,12,99,45,99,44,99,44,99,44, + 91,44,99,45,99,44,99,44,99,3,45,99,129,13,99,9,45,99,137,44, + 99,45,99,77,99,45,99,44,99,45,99,44,99,45,99,45,91,6,45,99, + 130,45,91,45,91,3,45,99,129,45,91,5,45,99,136,44,99,45,99,45, + 99,44,99,45,99,45,99,45,91,44,91,4,45,99,5,45,91,129,77,91, + 8,45,91,129,44,91,17,45,91,137,13,91,236,82,203,82,236,90,45,91, + 143,99,17,116,82,124,114,124,5,147,124,133,179,124,147,124,179,132,147,124, + 179,124,4,147,124,157,115,124,114,116,114,124,146,132,178,140,146,140,16,124, + 239,107,49,124,178,140,179,140,179,140,178,140,81,132,48,124,146,132,211,140, + 211,148,211,148,178,140,81,132,49,124,81,124,16,124,240,107,49,108,147,124, + 212,132,212,124,3,180,124,136,147,124,115,116,147,116,179,132,211,140,24,174, + 45,99,73,66,4,106,74,142,138,74,106,74,106,74,138,74,138,74,138,82, + 138,82,170,82,171,82,171,82,147,124,212,132,212,132,180,132,9,212,132,130, + 244,132,212,132,4,244,132,144,21,141,147,132,171,74,8,58,232,57,9,66, + 8,58,199,49,167,49,135,41,70,33,4,33,130,8,37,33,70,41,70,41, + 4,102,41,130,134,41,135,49,3,167,49,136,135,49,134,41,102,41,134,41, + 167,49,167,49,200,49,200,49,3,199,49,132,167,49,167,49,134,41,134,41, + 4,102,41,3,69,33,129,69,41,4,69,33,129,37,33,4,69,33,3,37, + 33,141,69,33,69,33,37,33,37,33,5,33,37,33,37,33,4,25,5,33, + 4,25,4,33,4,25,4,25,10,228,24,137,196,24,196,16,196,24,196,24, + 195,24,196,16,195,16,195,16,196,16,14,163,16,129,163,8,6,163,16,129, + 163,8,3,163,16,134,195,16,195,16,131,8,5,25,81,124,13,99,3,236, + 90,139,203,90,236,90,236,90,12,99,12,91,236,90,12,99,12,99,77,107, + 211,148,211,156,10,211,148,152,211,156,243,156,243,156,244,156,212,148,212,132, + 212,140,212,132,212,132,180,132,179,124,115,116,50,108,18,100,209,91,244,132, + 150,157,179,140,231,57,199,49,69,33,134,41,167,49,167,41,3,167,49,130, + 199,49,167,49,11,199,49,150,230,24,165,16,164,16,132,16,164,16,164,16, + 99,8,41,66,49,140,211,156,113,140,81,140,114,140,146,148,146,148,178,148, + 179,148,211,148,211,156,211,148,211,156,211,148,3,211,156,7,243,156,130,20, + 165,20,157,5,20,165,132,20,157,20,165,20,165,20,157,4,20,165,131,52, + 165,211,156,228,24,10,195,24,133,130,16,195,24,197,73,99,49,164,65,7, + 34,41,142,196,65,166,106,198,106,231,114,7,123,6,123,39,123,6,123,6, + 123,71,131,103,139,135,131,167,139,195,73,6,34,41,143,2,33,100,41,104, + 131,70,131,38,131,6,123,197,114,197,106,165,106,101,98,68,90,36,82,228, + 73,227,65,163,57,15,34,41,130,2,41,2,41,4,34,41,154,67,49,67, + 49,99,57,99,57,132,57,132,65,164,65,165,65,196,65,197,65,196,73,197, + 73,197,65,164,65,164,65,132,57,99,57,67,49,99,49,5,74,2,49,35, + 41,229,73,66,49,196,65,34,49,33,3,138,12,99,12,91,12,99,12,91, + 44,99,44,99,12,99,44,99,44,99,12,99,4,44,99,129,45,99,4,44, + 99,132,45,99,44,99,45,99,44,99,3,45,99,140,44,99,44,99,45,99, + 44,99,45,99,77,99,44,91,45,99,77,99,44,91,45,99,45,99,4,44, + 99,130,45,99,45,99,3,44,99,133,45,99,45,91,44,91,45,99,44,99, + 4,45,99,130,45,91,77,99,5,45,99,139,45,91,45,91,45,99,44,99, + 45,99,45,99,44,91,45,99,45,91,77,99,45,99,3,45,91,129,45,99, + 6,45,91,129,44,91,18,45,91,137,13,91,236,82,203,82,12,91,45,91, + 207,107,49,116,114,124,114,124,5,147,124,134,179,132,147,124,179,124,179,132, + 147,132,147,132,3,147,124,169,146,124,114,116,114,124,146,140,179,140,178,140, + 146,140,178,140,178,140,179,140,179,140,211,140,146,140,207,115,207,107,113,132, + 211,140,211,148,179,140,146,140,81,124,49,124,49,124,16,124,240,107,82,116, + 147,124,212,132,212,132,212,124,180,124,180,124,148,124,147,116,147,116,179,132, + 244,140,247,173,203,82,73,74,105,74,4,106,74,6,138,74,136,138,82,171, + 82,170,82,13,91,212,132,212,132,180,132,180,132,7,212,132,130,244,132,212, + 132,5,244,132,145,21,141,82,124,41,66,8,58,8,58,232,57,8,58,232, + 57,199,49,167,49,102,41,37,33,195,16,98,8,37,33,69,33,70,33,3, + 102,41,137,134,41,135,49,167,49,135,49,134,49,134,41,102,41,102,41,134, + 41,3,167,49,141,200,57,199,49,167,49,167,49,135,49,134,41,134,41,102, + 41,70,41,102,41,102,41,69,41,69,41,3,69,33,129,37,33,3,69,33, + 129,69,41,9,37,33,139,36,33,37,33,4,33,4,33,5,33,4,25,4, + 25,228,24,228,24,4,25,4,25,9,228,24,132,228,16,196,16,196,16,196, + 24,6,195,16,136,163,16,195,16,163,16,163,8,195,16,163,16,163,16,195, + 16,11,163,16,130,131,16,130,8,3,98,8,140,66,0,98,0,163,0,228, + 16,70,33,240,115,207,115,203,90,236,90,236,90,203,82,203,90,4,236,90, + 133,12,99,12,99,13,99,178,148,243,156,10,211,148,133,211,156,244,156,243, + 156,244,156,244,148,4,212,132,142,180,124,179,124,115,116,50,108,50,100,209, + 91,244,140,150,165,146,132,8,66,167,49,69,33,134,41,134,41,3,167,49, + 130,199,49,167,49,12,199,49,153,230,24,196,16,164,16,131,16,164,16,164, + 16,99,8,232,57,48,140,211,156,114,148,81,140,114,140,146,148,146,148,179, + 148,179,148,211,148,211,148,211,156,211,156,211,148,211,156,243,156,211,156,7, + 243,156,129,244,156,6,20,165,129,20,157,4,20,165,135,20,157,244,156,20, + 165,52,165,20,165,102,41,163,24,9,195,24,134,130,16,162,24,197,73,67, + 49,196,65,66,49,3,34,41,145,67,41,34,41,2,33,38,74,168,147,103, + 139,135,139,102,131,196,106,197,106,197,106,164,106,70,131,134,139,134,139,199, + 147,36,90,7,34,41,142,2,33,37,74,4,74,195,65,162,57,131,57,99, + 49,66,41,35,41,34,41,34,41,2,41,34,41,2,41,4,34,41,130,2, + 41,34,41,3,2,41,3,34,41,145,67,41,67,49,99,49,132,57,164,57, + 196,65,196,73,197,73,197,73,229,73,229,73,196,65,196,65,164,65,132,57, + 132,57,100,49,3,67,49,129,66,41,6,34,41,136,2,41,229,65,66,57, + 2,41,230,65,98,57,196,73,66,57,65,3,130,12,91,12,91,4,12,99, + 143,12,91,44,99,12,91,44,99,44,99,12,91,44,99,44,99,12,91,44, + 99,12,99,45,99,45,99,44,99,44,99,3,45,99,130,44,99,44,99,6, + 45,99,129,44,99,10,45,99,132,45,91,44,91,45,99,45,91,6,45,99, + 137,45,91,45,99,77,99,45,99,77,99,45,99,45,99,45,91,45,91,3, + 45,99,133,45,91,77,99,45,99,45,99,77,91,4,45,99,3,45,91,130, + 45,99,44,91,13,45,91,135,44,91,45,91,45,91,13,91,45,91,44,91, + 44,91,4,45,91,144,12,83,203,82,204,90,12,91,77,99,208,107,49,116, + 114,116,146,124,147,124,146,124,147,124,147,132,179,124,147,124,179,132,3,179, + 124,4,147,124,132,114,124,114,116,114,124,178,140,3,179,140,130,211,140,179, + 140,3,211,140,136,146,140,16,124,16,116,146,132,211,148,211,140,178,140,114, + 132,3,49,124,133,240,115,16,108,82,116,180,124,212,132,3,212,124,142,179, + 124,179,124,115,116,147,124,179,132,118,157,150,165,138,82,73,74,105,74,106, + 74,138,74,105,74,105,74,3,106,74,129,138,82,3,138,74,3,170,82,132, + 78,99,244,140,212,132,180,132,5,212,132,4,244,132,151,212,132,244,132,244, + 132,245,132,244,132,21,141,208,107,9,66,8,58,8,58,9,58,232,57,232, + 57,199,49,199,49,134,41,70,33,5,25,130,8,98,8,5,25,69,33,70, + 41,3,102,41,4,134,41,3,102,41,130,135,41,167,49,3,199,49,132,167, + 49,167,49,135,49,134,49,3,102,41,136,101,41,69,41,69,33,69,33,37, + 41,69,33,37,33,36,33,3,37,33,129,36,33,4,37,33,139,4,33,37, + 33,4,33,37,33,37,33,36,33,36,33,4,25,4,33,4,25,4,33,3, + 4,25,7,228,24,144,196,24,196,24,228,16,196,24,196,24,196,16,195,16, + 196,16,196,24,195,16,196,16,195,16,195,16,163,16,163,16,195,16,3,163, + 16,129,163,8,4,163,16,156,131,16,131,8,130,8,131,8,163,16,164,16, + 196,16,196,16,228,16,229,24,5,25,135,33,74,42,139,50,204,58,46,67, + 78,75,42,50,229,24,71,33,143,99,45,99,236,90,236,90,204,90,203,82, + 236,90,235,90,4,236,90,136,12,99,12,99,16,124,244,156,211,148,243,156, + 243,156,211,148,4,243,156,129,244,156,3,243,156,132,244,156,244,156,244,148, + 212,140,3,212,132,143,180,132,179,124,115,116,50,108,18,100,209,91,180,132, + 183,165,243,140,41,66,166,49,101,41,134,41,166,49,166,49,3,167,49,4, + 199,49,131,167,49,199,49,199,57,5,199,49,151,232,49,6,25,165,16,164, + 16,131,16,131,16,164,16,99,8,167,49,240,131,179,156,114,148,81,140,114, + 140,146,148,146,148,178,148,179,148,211,148,211,156,211,148,211,148,211,156,3, + 243,156,129,211,156,4,243,156,139,19,157,19,157,20,165,20,165,20,157,20, + 165,19,165,19,157,20,165,20,165,20,157,5,20,165,133,244,156,52,165,52, + 165,9,58,130,16,9,195,24,134,163,24,130,16,165,57,99,57,196,65,99, + 49,5,34,41,143,2,33,164,57,168,147,102,139,102,139,102,131,6,123,230, + 114,229,114,197,106,165,106,133,98,100,98,36,82,195,65,8,34,41,136,2, + 41,2,33,2,33,2,41,2,41,34,33,34,41,2,41,5,34,41,138,66, + 41,34,41,67,49,67,49,99,49,99,57,132,57,164,65,196,65,197,65,3, + 229,73,139,197,73,197,65,164,65,164,65,99,57,132,57,67,49,66,41,34, + 41,34,41,2,41,16,34,41,135,132,49,197,73,2,41,99,49,196,65,164, + 57,98,57,50,3,3,12,91,137,44,99,12,91,12,91,44,99,44,99,12, + 99,44,99,44,99,12,99,3,44,99,134,45,99,44,99,44,99,45,99,45, + 99,44,99,12,45,99,129,44,99,3,45,99,4,44,99,131,45,99,44,99, + 12,91,5,45,99,133,44,99,45,99,45,91,45,99,45,91,5,45,99,142, + 45,91,77,99,45,99,45,99,45,91,45,99,45,91,45,99,45,99,45,91, + 45,91,45,99,44,91,45,99,10,45,91,131,45,99,45,91,44,91,17,45, + 91,137,236,82,203,82,236,82,12,91,109,99,16,108,82,116,114,124,146,124, + 3,147,124,135,179,132,179,124,147,124,179,124,179,124,179,132,179,124,4,147, + 124,133,114,116,114,124,146,124,178,140,178,140,5,179,140,138,211,140,179,140, + 178,140,114,132,114,132,179,140,211,148,211,140,146,140,113,132,3,49,124,163, + 240,115,17,108,114,124,179,124,212,132,212,132,212,124,180,124,180,124,147,116, + 115,116,147,124,179,140,118,149,52,149,105,74,105,74,106,74,105,74,106,74, + 105,74,105,74,106,74,106,74,138,74,106,74,138,74,138,74,138,82,138,74, + 138,82,171,82,138,82,208,107,21,141,4,212,132,133,244,132,212,132,244,132, + 244,132,212,132,5,244,132,148,245,132,21,141,110,99,8,58,9,58,9,58, + 8,58,9,58,8,58,232,57,167,49,135,41,102,33,37,25,228,24,98,8, + 163,16,37,33,37,33,70,33,5,102,41,135,70,41,70,33,69,33,102,41, + 167,49,199,49,200,57,3,199,49,139,167,49,134,41,134,41,102,41,102,41, + 69,41,69,41,69,33,69,33,37,33,69,33,6,37,33,144,5,33,37,33, + 37,33,5,33,4,33,4,33,5,33,5,33,4,25,4,33,4,25,5,33, + 4,25,228,24,4,25,4,33,10,228,24,139,196,24,228,24,196,24,196,16, + 196,24,195,24,195,16,196,24,196,16,196,16,195,16,4,163,16,142,163,8, + 163,8,131,8,131,16,131,8,163,8,98,0,98,0,163,0,5,9,135,25, + 9,42,103,25,38,33,4,71,33,149,39,33,39,33,42,58,205,74,107,66, + 42,58,104,33,6,25,230,24,6,25,39,25,143,99,12,91,203,90,236,90, + 203,90,203,82,203,82,203,90,236,90,204,90,4,236,90,129,207,123,3,243, + 156,3,244,156,139,243,156,243,156,244,156,244,156,243,156,244,156,243,148,244, + 156,244,156,244,148,212,140,3,212,132,142,180,132,179,124,115,116,82,108,18, + 100,209,91,180,124,248,173,211,132,73,66,166,49,101,41,134,41,167,41,5, + 167,49,4,199,49,129,167,49,6,199,49,131,231,49,6,17,165,16,4,164, + 16,148,99,8,135,49,207,131,179,156,114,148,81,140,113,140,114,148,146,148, + 146,148,179,148,211,148,211,148,211,156,211,148,211,156,211,156,243,156,243,156, + 211,156,4,243,156,131,244,156,243,156,20,157,8,20,165,139,20,157,20,165, + 20,165,20,157,20,157,20,165,20,165,85,173,171,82,130,16,227,24,8,195, + 24,134,163,24,130,16,101,57,131,65,196,57,131,49,6,34,41,140,67,41, + 166,98,133,98,68,82,4,82,227,73,195,65,163,57,131,57,99,49,66,41, + 66,41,13,34,41,137,66,41,66,49,67,49,99,49,99,49,99,57,132,57, + 132,57,164,65,3,196,65,137,197,65,197,65,164,65,164,65,132,65,132,65, + 99,57,99,49,99,49,3,67,49,8,34,41,135,35,41,34,41,66,41,34, + 41,67,49,66,49,34,41,3,99,49,143,164,57,196,65,228,73,196,65,131, + 57,34,41,66,41,34,41,35,41,6,74,34,49,34,41,5,74,132,57,131, + 65,96,3,133,12,91,12,99,12,99,12,91,12,91,3,44,99,132,12,99, + 44,99,44,99,12,91,3,44,99,132,12,91,45,99,44,99,45,99,3,44, + 99,6,45,99,134,44,99,44,99,45,91,45,99,44,99,44,99,4,45,99, + 133,44,91,45,99,44,99,45,99,45,99,4,44,99,4,45,99,129,44,91, + 5,45,99,136,44,99,45,99,45,99,77,99,44,91,77,99,45,99,44,99, + 3,45,99,132,45,91,45,91,45,99,77,99,4,45,91,132,77,99,45,91, + 45,91,45,99,6,45,91,130,44,91,45,99,15,45,91,150,236,82,203,82, + 236,90,45,91,142,99,17,116,82,116,114,124,114,124,146,124,147,124,147,124, + 179,124,179,132,179,124,179,124,147,124,179,132,179,124,179,132,147,124,147,124, + 3,114,116,132,146,132,178,140,179,140,178,140,3,179,140,129,211,140,5,179, + 140,133,211,148,211,148,211,140,146,132,81,124,3,49,124,131,240,115,17,108, + 147,124,3,212,132,139,212,124,180,132,179,124,179,116,147,116,147,124,211,140, + 150,157,211,140,41,66,105,74,3,106,74,135,138,74,106,74,138,74,106,74, + 138,74,106,74,106,74,4,138,74,135,170,82,171,82,138,74,147,124,245,140, + 212,132,212,132,4,244,132,130,212,132,212,132,3,244,132,149,244,140,245,132, + 21,133,212,132,142,99,41,66,200,57,233,57,8,58,8,58,232,57,200,57, + 200,49,135,41,102,41,70,33,37,33,195,16,98,8,37,33,37,33,3,69, + 33,145,70,41,70,41,102,41,69,33,37,33,70,41,134,41,167,49,199,49, + 199,57,200,49,199,57,199,57,167,49,134,41,102,41,102,41,3,69,41,139, + 37,33,37,33,4,33,37,33,37,33,5,33,5,33,4,33,36,33,4,33, + 5,33,5,4,33,137,4,25,4,25,4,33,4,33,228,32,4,25,4,33, + 228,24,4,25,7,228,24,134,196,24,228,24,228,24,196,24,228,24,228,24, + 3,196,24,130,195,16,195,16,4,163,16,139,131,16,98,8,163,8,196,16, + 37,25,70,33,70,33,103,33,71,33,38,33,110,91,3,49,108,131,79,91, + 75,58,38,25,4,230,24,172,198,24,6,25,6,25,230,24,197,16,197,16, + 230,24,230,16,230,24,6,25,6,25,7,25,114,132,13,91,203,82,204,90, + 171,82,203,82,171,82,203,90,204,90,203,82,236,90,236,90,12,91,236,90, + 110,107,211,148,179,148,211,148,211,148,211,156,244,156,244,156,243,156,244,156, + 243,156,243,156,244,156,243,156,244,156,244,156,212,148,212,140,3,212,132,146, + 180,132,179,124,147,116,82,108,18,100,209,91,147,132,215,165,211,140,138,74, + 166,49,102,41,102,41,166,49,167,49,167,49,166,49,167,49,12,199,49,132, + 231,57,6,25,165,16,132,16,3,164,16,147,131,8,102,41,207,123,179,156, + 114,148,81,140,81,140,146,148,178,156,211,156,211,156,211,148,211,156,211,148, + 211,148,211,156,211,156,243,156,211,156,5,243,156,131,244,156,19,157,20,157, + 3,20,165,129,20,157,5,20,165,130,20,157,20,157,4,20,165,133,85,173, + 45,99,163,16,195,24,227,24,3,195,24,129,227,24,4,195,24,136,130,16, + 68,41,165,73,164,57,132,57,34,41,34,41,66,41,4,34,41,130,67,41, + 66,41,7,34,41,129,1,41,3,34,41,150,67,41,66,41,131,49,66,41, + 99,49,131,57,132,57,164,57,99,49,164,57,164,65,164,65,197,65,197,73, + 197,65,196,73,196,65,164,65,164,65,132,57,99,57,99,49,3,67,49,10, + 34,41,131,66,41,34,41,2,41,3,34,41,145,99,49,67,49,67,49,34, + 41,66,49,67,41,34,49,66,49,34,41,196,57,37,82,4,74,37,82,4, + 74,5,74,228,73,131,65,3,34,41,135,2,33,6,74,67,57,2,41,229, + 65,99,57,196,65,83,3,154,44,99,12,99,12,91,44,99,44,99,12,99, + 44,91,44,99,12,91,45,99,45,99,44,99,44,99,45,99,44,99,44,99, + 45,99,44,99,44,99,45,99,45,99,44,99,44,99,45,99,44,99,77,99, + 6,45,99,135,44,99,44,99,45,99,45,99,45,91,45,99,44,99,3,45, + 99,129,45,91,5,45,99,140,44,99,45,91,45,91,45,99,77,99,45,99, + 45,99,77,99,44,99,45,99,45,99,77,99,4,45,99,134,77,99,45,91, + 45,99,77,99,45,99,45,91,3,45,99,130,77,99,45,99,5,45,91,129, + 45,99,21,45,91,142,12,91,204,82,203,82,12,91,45,99,175,99,49,116, + 114,124,114,124,147,124,147,124,179,124,179,132,147,124,3,179,132,3,179,124, + 3,147,124,134,147,116,114,116,114,124,146,132,178,148,178,140,3,179,140,129, + 211,140,3,179,140,129,211,140,4,211,148,131,179,140,114,132,81,124,3,49, + 124,131,240,107,50,116,147,124,3,212,124,129,212,132,3,179,124,136,115,116, + 179,124,211,140,182,165,16,124,40,66,106,74,105,74,3,106,74,130,105,74, + 138,74,3,106,74,139,138,74,106,74,138,74,106,74,138,82,138,74,138,74, + 171,82,171,82,147,132,244,132,3,212,132,143,244,132,244,132,212,132,245,140, + 245,132,245,140,244,140,244,132,245,132,21,133,179,132,110,99,232,57,233,57, + 9,58,4,232,57,138,200,57,167,49,135,41,102,41,69,33,37,33,163,16, + 131,8,69,41,37,33,3,69,33,145,37,33,37,33,5,33,37,33,102,41, + 134,49,167,49,199,49,200,49,199,49,199,49,167,49,167,49,134,41,102,41, + 70,41,69,41,4,37,33,9,4,33,131,228,32,228,24,4,25,4,228,24, + 130,228,32,228,24,3,4,25,133,4,33,4,33,228,24,228,24,4,25,3, + 228,24,136,196,24,196,24,196,16,195,16,195,24,195,16,196,24,196,24,4, + 228,24,142,70,33,135,33,200,33,9,42,106,50,237,66,233,49,39,33,39, + 33,7,25,7,25,230,24,7,25,230,24,3,165,16,137,132,8,133,16,197, + 16,230,24,197,16,230,24,198,24,230,24,230,24,5,6,25,156,230,24,230, + 24,6,25,230,24,230,24,71,33,17,116,236,90,204,90,203,90,203,82,171, + 82,138,74,171,82,203,82,203,82,204,82,236,90,236,90,12,99,45,99,113, + 140,146,148,146,140,146,148,211,148,244,156,243,156,8,244,156,146,212,148,212, + 140,212,140,212,132,180,132,212,132,180,124,147,116,82,108,50,100,210,91,115, + 124,182,165,20,149,203,82,166,49,134,41,102,41,3,166,49,130,167,49,167, + 49,4,199,49,129,167,49,7,199,49,145,231,57,38,25,197,16,164,16,131, + 16,164,16,164,16,132,8,70,41,175,123,179,156,146,148,81,140,81,140,146, + 148,211,156,243,164,6,211,156,132,243,156,211,156,243,156,211,156,3,243,156, + 130,244,156,19,157,14,20,165,149,244,164,20,165,19,157,52,165,174,115,227, + 24,195,24,227,24,227,24,195,24,195,24,227,24,195,24,227,24,227,24,195, + 24,130,16,4,33,229,73,99,49,164,65,4,34,41,129,67,41,3,34,41, + 155,66,41,66,41,98,49,163,57,99,49,98,49,131,49,131,49,163,57,132, + 57,228,65,196,65,196,65,6,82,37,74,196,65,228,73,196,73,5,74,229, + 73,132,65,131,57,131,57,99,49,99,49,66,49,66,41,4,34,41,129,2, + 41,9,34,41,5,66,41,162,34,41,131,49,229,73,229,73,37,82,38,82, + 4,82,4,82,37,82,131,57,34,41,67,49,34,41,66,49,67,41,34,41, + 2,41,34,41,34,41,2,41,2,41,2,33,34,41,67,49,99,49,131,57, + 196,65,163,65,132,57,164,65,2,41,132,57,164,65,229,65,76,3,139,44, + 99,12,91,12,99,44,99,12,99,44,99,12,91,44,99,12,91,44,99,12, + 99,3,44,99,135,45,99,44,99,45,99,44,99,45,99,45,99,44,99,3, + 45,99,129,44,99,5,45,99,131,44,99,45,99,44,99,3,45,99,131,44, + 99,44,91,44,99,8,45,99,131,45,91,44,99,44,99,3,45,99,132,77, + 99,44,99,45,99,77,99,3,45,99,135,44,91,77,99,45,99,45,99,77, + 99,45,99,77,91,3,45,99,144,45,91,45,91,45,99,45,99,45,91,45, + 99,45,91,77,91,45,91,45,91,45,99,45,91,45,99,44,91,45,91,13, + 91,12,45,91,129,45,99,3,45,91,137,236,82,203,82,203,82,13,91,77, + 99,207,99,82,116,114,124,146,124,3,147,124,130,179,124,179,124,4,179,132, + 138,179,124,179,132,179,124,147,124,147,124,147,116,114,116,114,124,178,140,178, + 140,6,179,140,159,211,140,179,140,179,140,179,148,211,140,211,148,211,140,211, + 148,114,132,81,124,49,124,49,124,17,116,240,107,82,116,179,124,212,124,212, + 132,212,124,212,124,180,124,180,124,179,124,147,116,179,132,20,141,150,157,174, + 115,41,66,138,74,105,74,5,106,74,130,105,74,105,74,4,106,74,6,138, + 74,129,45,91,4,212,132,4,244,132,141,245,132,244,132,245,132,244,132,244, + 132,21,141,179,132,13,91,232,57,9,58,9,58,232,57,8,58,3,232,57, + 136,167,49,135,41,102,41,70,33,37,33,37,33,131,8,196,24,5,37,33, + 158,36,33,4,33,37,33,102,41,167,49,167,49,199,49,199,57,199,49,167, + 49,167,49,134,49,134,41,70,41,69,41,69,33,37,33,37,33,36,33,4, + 33,4,25,4,33,4,33,228,32,4,33,228,24,228,32,228,24,228,24,228, + 32,9,228,24,129,4,33,3,228,24,147,196,24,195,24,163,16,195,24,195, + 24,196,24,195,24,195,16,228,16,37,25,37,33,69,33,71,33,71,33,104, + 41,103,41,104,41,71,33,42,58,3,172,66,135,107,66,104,41,198,16,166, + 16,231,24,199,24,231,24,4,230,24,130,198,24,198,16,4,230,24,134,198, + 24,197,16,230,24,198,16,230,24,6,25,9,230,24,133,71,33,208,107,16, + 124,171,82,203,82,6,171,82,144,204,82,204,90,236,90,12,91,12,91,81, + 140,211,148,211,148,179,148,243,156,244,156,244,156,243,156,244,156,244,156,243, + 156,5,244,156,129,212,140,4,212,132,142,148,124,147,116,82,108,50,100,210, + 91,83,116,183,165,244,148,236,82,134,49,134,41,102,41,134,41,166,41,3, + 167,49,130,199,49,167,49,10,199,49,145,231,57,38,25,198,16,132,16,131, + 16,164,16,164,16,132,16,38,33,110,115,178,156,146,148,81,140,81,140,146, + 148,211,156,211,164,7,211,156,131,211,148,178,148,211,156,4,243,156,12,20, + 165,131,19,165,243,156,243,156,3,211,156,135,20,165,239,123,4,25,195,24, + 227,24,195,24,227,24,3,195,24,136,227,24,195,24,195,24,130,16,227,24, + 230,81,98,49,196,65,3,34,41,154,67,49,164,57,131,57,131,49,164,57, + 196,65,196,57,99,49,196,65,196,73,37,82,228,73,196,65,5,74,228,73, + 4,74,196,65,132,57,229,73,131,49,131,57,131,57,66,49,99,49,67,41, + 66,49,9,34,41,129,67,41,3,67,49,133,99,49,131,57,131,49,34,41, + 67,41,3,34,41,134,66,41,34,41,34,41,66,41,34,41,67,49,3,164, + 65,157,131,57,98,57,66,41,34,41,2,41,2,33,34,41,66,41,34,41, + 34,41,67,49,196,57,229,73,37,82,103,90,167,106,200,106,41,123,42,131, + 140,139,140,147,140,147,171,155,65,65,229,73,34,49,99,49,197,73,164,57, + 99,3,136,12,91,12,99,44,99,44,99,12,99,44,99,12,99,12,99,3, + 44,99,134,12,99,44,99,44,99,45,99,44,99,44,99,3,45,99,3,44, + 99,131,45,99,45,99,77,99,3,45,99,132,44,99,77,99,45,99,44,99, + 3,45,99,129,44,99,3,45,99,133,44,99,45,91,45,99,45,99,45,91, + 3,45,99,135,44,91,44,99,77,99,77,99,45,99,45,91,44,99,3,45, + 99,134,77,99,45,99,77,99,45,99,45,99,77,99,4,45,99,134,77,99, + 45,99,45,91,45,99,45,91,45,99,7,45,91,135,45,99,45,91,45,91, + 45,99,45,91,45,91,12,91,14,45,91,137,236,82,203,82,236,90,13,91, + 78,99,208,107,82,116,114,124,146,124,3,147,124,136,147,132,179,132,179,132, + 147,124,179,124,179,132,147,124,179,124,3,147,124,148,147,116,114,116,146,124, + 178,140,179,140,179,140,178,140,179,140,211,140,179,140,179,140,211,140,178,140, + 211,140,211,140,211,148,211,140,211,140,179,148,114,132,3,49,124,147,16,116, + 17,108,82,116,180,132,180,132,212,132,212,132,212,124,180,124,180,124,147,124, + 147,124,179,132,179,132,183,165,12,91,41,66,105,74,105,74,7,106,74,132, + 105,74,106,74,106,74,105,74,7,138,74,144,143,99,53,141,212,132,212,132, + 244,132,244,132,212,132,244,132,244,132,245,132,245,140,245,140,244,132,21,141, + 147,132,236,82,5,232,57,149,9,58,232,57,199,57,200,49,167,49,102,41, + 70,33,37,33,37,33,228,24,130,8,196,16,5,33,37,33,37,33,4,33, + 4,25,228,24,37,33,102,41,135,49,3,167,49,135,199,49,167,49,167,49, + 134,41,102,41,101,41,69,41,3,37,33,135,4,33,4,25,228,24,228,32, + 228,32,228,24,4,33,13,228,24,147,195,24,196,24,195,24,196,24,4,25, + 70,33,134,41,200,49,135,41,168,41,138,66,171,66,204,66,13,75,204,74, + 103,33,7,25,7,33,7,33,4,7,25,133,6,25,230,24,229,24,197,24, + 198,16,4,230,24,133,199,24,199,24,230,24,198,24,230,24,3,198,24,5, + 198,16,131,230,24,230,24,198,16,10,230,24,133,198,16,39,33,111,99,110, + 107,138,74,3,171,82,130,138,82,139,82,3,171,82,134,171,90,204,90,236, + 90,236,90,239,123,52,165,6,244,156,132,243,156,244,156,244,156,243,156,3, + 244,156,153,244,148,212,140,212,132,212,140,212,132,212,132,180,132,147,124,82, + 108,18,100,209,91,83,108,182,165,20,149,235,82,134,49,134,49,101,41,134, + 41,166,41,167,49,167,49,199,49,167,49,167,49,3,199,49,129,167,49,6, + 199,49,149,231,57,38,25,198,16,164,16,131,8,164,16,132,16,132,16,38, + 33,77,107,146,148,146,148,81,140,81,140,114,148,146,148,178,148,211,156,211, + 148,211,156,243,156,3,211,156,136,178,148,114,140,178,148,243,156,211,156,178, + 148,211,148,211,156,8,20,165,141,20,157,20,165,20,165,19,157,243,156,243, + 156,211,156,211,156,243,156,20,165,113,140,102,41,163,24,9,195,24,153,162, + 16,163,24,229,81,98,57,196,65,66,41,66,41,164,57,164,65,228,73,228, + 73,195,65,37,82,4,74,163,65,99,49,98,49,130,57,196,65,99,57,67, + 49,131,57,99,57,66,41,66,49,8,34,41,130,67,49,34,41,3,66,41, + 130,34,41,66,41,3,34,41,136,164,65,228,73,37,82,38,82,228,73,4, + 74,196,65,66,49,3,34,41,167,66,41,34,41,66,41,66,41,34,41,2, + 33,225,32,225,32,2,33,2,33,34,41,99,57,197,65,5,74,71,90,201, + 106,4,90,66,49,67,41,34,41,34,41,205,131,13,164,14,164,47,172,78, + 172,78,172,13,172,233,130,107,123,237,155,136,114,172,131,131,89,197,73,66, + 57,66,41,229,73,99,57,142,3,152,12,99,12,91,44,99,12,99,44,91, + 44,99,12,99,44,99,12,91,44,99,12,99,45,99,44,99,45,99,44,99, + 44,99,45,99,44,99,45,99,44,99,45,99,45,99,44,99,44,99,5,45, + 99,142,44,91,45,99,45,99,44,99,77,99,45,99,44,99,44,91,45,99, + 44,99,45,99,77,99,45,99,45,99,3,44,99,150,77,99,44,91,77,99, + 45,99,77,99,45,99,45,99,77,99,45,99,77,99,77,99,44,99,45,91, + 45,99,45,99,45,91,45,91,45,99,77,99,45,99,45,91,45,99,5,45, + 91,133,45,99,45,99,45,91,45,91,44,91,8,45,91,129,13,91,5,45, + 91,129,13,91,9,45,91,137,204,82,203,82,236,90,45,91,110,99,240,107, + 82,116,114,124,146,124,3,147,124,130,179,132,147,124,5,179,132,129,179,124, + 3,147,124,131,115,116,114,124,146,132,4,179,140,133,178,140,211,140,211,140, + 179,140,179,140,5,211,140,131,211,148,179,148,114,132,3,49,124,146,240,115, + 17,116,115,124,180,124,212,132,212,132,212,124,212,124,180,124,179,124,147,124, + 147,116,211,132,20,141,182,165,138,74,105,74,105,74,3,106,74,129,138,74, + 8,106,74,142,138,74,106,74,138,74,138,74,106,74,106,74,138,74,73,74, + 49,116,21,141,244,132,212,132,244,132,212,132,3,244,132,134,245,132,245,132, + 244,132,21,141,114,124,74,66,3,9,58,165,200,49,232,57,233,57,8,58, + 232,57,200,49,135,41,135,41,102,41,70,33,37,33,5,25,196,16,163,16, + 196,24,4,25,4,25,228,24,195,24,228,24,70,33,134,41,134,49,135,49, + 167,49,167,49,199,49,167,49,135,49,135,41,102,41,69,41,37,33,37,33, + 5,33,4,33,4,25,4,228,24,135,196,24,228,24,195,24,196,24,227,24, + 195,24,196,24,3,228,24,166,4,25,69,33,102,41,167,49,167,49,200,49, + 168,41,136,41,233,57,169,49,136,41,104,41,39,33,39,33,71,33,136,41, + 136,41,103,33,6,25,230,24,6,25,7,25,7,25,230,24,7,25,7,25, + 7,33,231,24,230,24,231,24,230,24,230,24,231,24,230,24,230,24,231,24, + 198,24,230,24,3,198,24,131,166,16,198,16,198,24,3,198,16,137,166,16, + 198,16,198,24,197,16,198,24,197,16,197,16,198,24,198,24,8,230,24,138, + 6,25,143,99,45,91,171,82,203,82,171,82,138,74,139,82,138,74,139,74, + 3,171,82,135,203,82,236,90,236,90,77,107,52,165,244,156,243,156,3,244, + 156,133,19,157,243,156,244,156,243,156,20,157,3,244,156,130,211,148,212,140, + 4,212,132,150,180,124,147,116,83,108,50,100,242,91,50,108,215,165,85,149, + 45,91,134,49,166,49,102,41,134,41,166,49,166,49,167,49,167,49,199,49, + 167,49,199,49,199,49,167,49,7,199,49,132,232,57,39,25,198,8,165,16, + 3,132,16,153,164,16,5,33,13,99,114,148,146,148,81,140,81,140,113,148, + 146,148,146,148,179,148,179,148,211,156,211,156,243,156,211,156,211,156,178,148, + 113,140,179,148,211,156,211,156,178,148,178,148,211,156,8,20,165,129,20,157, + 4,20,165,137,20,157,244,156,20,165,20,165,85,173,243,156,8,58,162,16, + 227,24,8,195,24,142,163,24,130,16,197,65,163,65,196,65,98,49,66,41, + 5,74,99,49,131,57,99,49,98,49,66,49,66,49,3,66,41,3,34,41, + 155,66,41,34,41,66,41,34,41,66,41,66,41,131,57,99,49,131,57,131, + 57,164,57,196,65,131,57,229,73,196,65,229,73,70,90,195,65,66,49,34, + 41,66,41,66,41,34,41,67,49,99,49,131,57,99,49,5,34,41,154,67, + 49,99,49,66,49,34,49,34,41,34,41,164,57,168,98,10,115,74,131,75, + 139,205,147,205,147,205,155,173,155,47,172,205,163,172,147,41,131,34,57,66, + 41,66,41,225,32,108,115,111,172,78,164,4,46,172,139,107,147,75,131,46, + 164,172,155,46,164,134,130,164,73,131,65,34,41,196,65,131,65,94,3,137, + 12,99,12,91,44,99,12,91,44,99,12,99,44,99,44,99,12,99,3,44, + 99,3,45,99,142,44,99,45,99,44,99,44,99,45,99,45,99,44,99,45, + 99,45,99,44,99,44,99,45,99,45,99,44,99,3,45,99,133,77,99,44, + 99,45,99,45,91,44,99,8,45,99,129,44,99,4,45,99,136,45,91,45, + 99,45,99,77,99,77,99,45,99,45,99,77,99,6,45,99,129,77,99,4, + 45,99,137,45,91,45,91,77,91,45,91,45,91,45,99,45,91,45,91,45, + 99,14,45,91,129,12,91,9,45,91,143,204,82,204,82,12,91,45,91,142, + 99,17,108,114,124,114,124,146,124,147,124,147,124,147,132,179,132,179,124,179, + 124,4,179,132,129,179,124,3,147,124,131,114,116,114,124,146,132,7,179,140, + 138,211,140,179,140,179,140,178,140,211,148,211,140,211,148,211,148,179,140,81, + 132,3,49,124,146,240,115,49,116,147,124,212,124,212,132,212,132,212,124,212, + 124,180,124,179,124,147,116,147,124,211,132,244,140,182,165,8,66,106,74,105, + 74,3,106,74,130,105,74,138,74,6,106,74,140,105,74,106,74,138,74,106, + 74,138,74,138,74,106,74,106,74,138,74,171,82,147,124,245,140,3,244,132, + 142,245,132,245,140,245,132,21,141,244,132,244,132,21,141,114,124,74,66,9, + 58,9,58,232,57,232,57,8,58,3,232,57,149,200,49,167,49,167,49,134, + 41,70,33,69,33,37,25,4,25,196,24,195,16,228,24,228,24,196,16,195, + 16,4,33,70,41,102,41,102,41,134,41,135,49,135,49,3,167,49,158,102, + 41,102,41,69,41,69,33,37,33,4,33,4,33,228,24,228,24,195,24,195, + 24,196,24,195,24,228,24,4,25,4,33,37,33,102,33,103,33,103,41,135, + 41,104,41,103,41,233,49,41,58,74,58,10,58,233,49,71,33,6,25,3, + 7,25,129,6,25,3,39,33,129,6,25,3,7,33,139,39,25,39,25,7, + 25,6,25,7,25,230,24,231,24,231,24,230,24,6,25,6,25,3,230,24, + 134,198,24,230,24,231,24,198,16,198,24,198,24,4,198,16,131,198,24,198, + 16,166,16,3,198,16,135,198,24,197,16,197,16,198,24,198,24,197,16,197, + 16,9,230,24,129,240,115,4,171,82,4,138,74,3,171,82,136,203,82,236, + 90,12,91,236,90,19,157,20,157,243,156,244,156,3,243,156,132,244,156,244, + 156,243,156,19,157,3,244,156,131,244,148,212,140,212,140,3,212,132,147,179, + 124,147,116,82,108,50,100,242,91,18,108,215,165,20,149,77,99,134,49,166, + 49,102,41,134,41,166,41,166,41,166,49,167,49,199,49,166,49,3,167,49, + 7,199,49,147,231,57,39,33,199,16,165,8,132,16,132,16,164,16,164,16, + 229,24,236,90,114,148,146,148,81,140,113,140,114,148,146,148,178,148,179,148, + 211,148,5,211,156,136,211,148,178,148,211,156,211,156,243,156,211,156,211,156, + 243,156,6,20,165,129,20,157,3,20,165,129,20,157,5,20,165,3,52,165, + 130,106,74,163,16,7,195,24,140,227,24,227,24,162,16,130,16,133,57,196, + 73,196,65,99,57,66,41,229,65,99,49,34,41,9,66,41,130,67,41,66, + 49,4,66,41,132,67,41,196,65,228,65,5,82,3,228,73,189,131,57,163, + 57,99,57,98,49,99,49,66,41,34,41,66,41,66,41,34,41,67,49,99, + 49,131,49,164,65,197,65,6,74,103,90,136,98,201,106,9,115,10,123,140, + 147,37,98,33,49,66,49,34,41,164,57,238,147,79,172,78,172,75,147,205, + 147,75,139,75,131,201,114,140,131,107,147,10,123,74,139,131,73,34,41,67, + 41,1,41,136,82,112,164,111,172,78,172,78,180,78,172,46,164,13,164,237, + 155,172,147,140,147,107,139,102,106,131,57,196,73,34,49,164,49,164,73,139, + 3,134,12,91,12,99,44,99,12,99,44,99,12,99,3,44,99,132,12,99, + 12,99,44,99,45,99,7,44,99,133,45,99,44,99,45,99,45,99,44,99, + 3,45,99,133,44,99,45,99,45,99,44,99,44,99,3,45,99,147,44,99, + 45,99,45,91,45,99,45,99,44,99,45,99,45,99,77,99,44,91,77,99, + 45,99,45,99,44,99,45,99,77,99,45,99,45,99,77,99,6,45,99,145, + 77,91,45,99,45,99,45,91,45,91,77,99,45,91,45,99,45,99,45,91, + 45,99,45,99,45,91,45,99,45,91,45,91,45,99,12,45,91,132,12,91, + 45,91,12,91,44,91,7,45,91,149,12,83,236,82,236,82,236,90,77,91, + 207,107,17,116,114,124,146,124,147,124,147,124,179,124,179,132,179,124,179,132, + 179,132,179,124,179,124,179,132,179,132,179,124,3,147,124,133,114,116,146,124, + 179,132,179,140,211,140,3,179,140,3,211,140,160,178,140,113,132,113,132,178, + 140,211,140,243,148,211,148,178,140,81,124,49,124,81,124,48,124,240,115,49, + 116,147,124,212,124,244,132,212,132,212,132,180,132,180,124,180,124,147,124,147, + 116,211,132,20,141,52,157,8,66,105,74,106,74,106,74,105,74,3,106,74, + 129,138,74,4,106,74,131,105,74,106,74,138,74,4,106,74,136,106,66,106, + 74,106,74,138,74,13,91,244,140,245,132,244,132,3,245,132,129,244,140,3, + 245,140,135,21,141,17,116,8,58,232,57,9,58,232,49,9,58,3,232,57, + 170,200,49,232,57,167,49,135,49,134,41,102,41,69,33,70,33,37,33,4, + 33,228,24,228,24,163,16,163,16,196,24,37,33,69,41,70,41,102,41,134, + 41,135,49,135,49,134,49,134,49,134,41,102,41,69,41,37,33,4,33,228, + 24,228,32,228,24,4,33,5,33,69,33,167,41,200,41,233,49,41,58,74, + 66,136,41,39,33,4,72,33,129,40,33,3,39,33,135,7,25,7,25,6, + 25,7,25,39,33,39,33,7,33,4,39,33,132,7,33,7,33,39,33,7, + 33,4,7,25,129,231,24,3,7,25,129,231,24,6,230,24,151,198,24,198, + 24,198,16,198,24,198,24,198,16,198,24,198,16,198,24,198,16,198,16,198, + 24,230,16,198,16,198,16,198,24,198,24,197,16,198,16,198,16,197,16,230, + 24,198,24,3,230,24,129,6,25,4,230,24,138,39,33,208,107,13,91,171, + 82,171,74,139,82,139,74,139,74,106,74,139,74,3,171,82,139,203,82,236, + 90,12,91,203,82,146,148,20,157,244,156,243,156,244,156,244,156,243,156,8, + 244,156,3,212,140,146,212,132,212,132,180,132,147,116,115,108,50,100,242,91, + 18,108,215,165,85,149,109,99,166,49,166,49,102,41,134,41,166,41,167,49, + 167,41,3,167,49,130,199,49,167,49,3,199,49,129,167,49,4,199,49,147, + 231,57,71,25,199,8,198,16,164,16,132,16,164,16,132,8,197,16,171,82, + 81,140,146,148,81,140,113,148,114,148,146,148,178,148,179,148,211,148,6,211, + 156,130,243,156,211,156,3,243,156,133,244,156,19,165,20,165,20,165,19,157, + 13,20,165,133,52,165,52,165,85,173,236,90,163,24,4,195,24,131,227,24, + 195,24,227,24,3,195,24,147,130,16,68,41,229,81,164,57,164,65,34,41, + 196,65,131,57,34,41,66,41,66,41,66,49,66,41,34,41,66,41,66,49, + 66,41,66,41,34,41,5,66,41,196,34,41,99,49,66,49,66,49,34,41, + 2,33,2,33,1,33,34,41,67,41,99,49,164,57,6,74,131,57,34,41, + 67,41,34,41,197,57,107,123,140,147,205,155,13,156,237,163,140,147,173,155, + 172,147,111,172,13,164,108,139,9,131,33,49,66,41,34,41,67,41,173,123, + 79,172,79,172,205,163,172,147,205,155,14,164,237,163,14,164,111,180,46,172, + 111,180,4,106,34,41,67,49,34,41,229,57,140,123,74,131,232,114,167,98, + 102,90,5,74,164,65,131,57,66,49,33,41,1,33,225,32,67,41,6,74, + 1,49,67,41,229,73,89,3,145,12,91,12,99,12,91,12,91,45,99,12, + 99,12,91,44,99,12,99,44,99,45,99,44,99,44,99,45,99,45,99,44, + 99,44,99,4,45,99,3,44,99,5,45,99,137,44,91,77,99,45,99,45, + 99,44,99,44,91,45,99,45,99,77,99,4,45,99,129,44,99,4,45,99, + 158,44,99,45,99,45,99,44,99,45,99,45,99,77,99,45,91,77,99,45, + 99,77,99,77,99,45,99,44,91,44,91,45,99,45,91,45,99,77,99,45, + 99,45,99,45,91,44,91,45,99,45,91,45,99,45,91,45,99,45,91,45, + 99,12,45,91,132,13,91,45,91,45,91,13,91,8,45,91,3,236,82,142, + 13,91,78,99,208,107,82,116,114,124,115,124,147,124,147,124,147,132,179,124, + 179,124,179,132,179,132,179,124,3,179,132,4,147,124,130,114,116,146,124,3, + 179,140,169,178,140,179,140,211,140,179,140,179,140,211,140,146,140,207,115,16, + 116,114,132,211,140,211,148,211,140,146,140,81,124,49,124,49,124,17,124,240, + 107,50,116,180,124,212,132,212,124,212,132,212,132,212,124,180,124,180,124,147, + 116,147,124,211,140,215,165,48,124,40,66,138,74,106,74,106,74,137,74,106, + 74,106,74,105,74,4,106,74,130,105,74,138,74,5,106,74,130,105,66,106, + 66,4,106,74,132,45,91,53,141,245,140,244,132,5,245,132,134,245,140,21, + 141,12,91,9,58,41,58,8,58,3,232,57,153,233,57,167,49,232,57,199, + 49,167,49,167,49,135,41,102,41,70,41,70,33,69,33,69,33,5,33,200, + 49,37,33,98,8,4,25,37,33,37,33,69,33,69,41,102,41,102,41,134, + 41,134,41,4,167,49,145,103,41,103,41,168,49,168,49,169,49,168,49,168, + 49,136,41,201,49,201,49,136,41,103,41,38,33,39,33,40,33,39,33,7, + 33,6,39,33,3,7,25,140,7,33,7,25,39,33,7,25,7,33,39,33, + 7,25,7,33,231,24,7,33,7,33,39,33,6,7,25,137,231,24,230,24, + 230,24,7,25,230,24,230,24,231,24,198,24,230,24,3,198,24,134,198,16, + 198,24,198,24,198,16,198,24,197,16,3,198,16,138,230,16,198,24,198,16, + 198,24,197,16,198,16,197,16,198,16,198,16,230,16,6,230,24,137,6,25, + 230,24,230,24,6,25,49,124,17,124,139,74,171,82,138,82,4,106,74,137, + 138,74,139,74,138,82,171,82,204,90,236,90,204,90,240,123,20,165,7,244, + 156,129,243,156,4,244,156,130,243,156,212,140,4,212,132,145,180,124,147,124, + 115,108,50,100,241,91,242,99,215,165,53,149,142,107,134,49,167,49,101,41, + 102,41,167,41,166,41,167,49,166,41,4,167,49,139,199,49,167,49,199,49, + 167,49,199,49,199,49,167,49,167,49,231,57,71,33,198,8,4,165,16,139, + 133,8,165,8,106,74,49,140,146,148,81,140,113,140,114,148,114,148,146,148, + 178,148,8,211,156,4,243,156,130,20,165,19,157,18,20,165,131,85,173,142, + 107,196,24,3,227,24,130,196,24,227,24,5,195,24,144,130,16,227,32,5, + 82,163,57,196,65,34,41,196,65,196,65,34,41,66,49,66,41,67,49,66, + 41,67,41,66,41,66,49,9,66,41,146,67,49,6,74,71,82,136,98,233, + 106,43,123,75,131,140,147,172,147,14,164,205,155,237,155,233,122,1,41,67, + 49,34,41,132,49,14,148,3,111,172,174,78,172,42,139,205,147,42,131,79, + 164,46,172,172,147,237,163,98,65,66,49,66,49,1,41,233,90,111,172,46, + 164,45,164,237,155,205,147,140,147,107,131,10,123,200,106,135,98,70,82,131, + 57,34,41,34,49,67,49,34,41,2,33,1,33,2,33,34,41,67,49,99, + 57,196,65,5,82,70,90,168,106,201,114,106,139,4,98,37,82,66,57,2, + 41,5,66,48,3,137,12,91,44,99,44,99,12,99,44,99,12,99,44,99, + 44,99,12,99,5,44,99,129,45,99,3,44,99,14,45,99,131,44,99,45, + 99,44,99,4,45,99,130,44,99,77,99,6,45,99,130,77,99,77,99,3, + 45,99,143,77,99,45,99,45,99,77,99,45,99,77,99,77,99,45,99,77, + 99,45,99,45,99,45,91,45,91,45,99,45,99,3,45,91,131,45,99,45, + 91,77,99,3,45,91,129,45,99,3,45,91,129,77,99,20,45,91,142,236, + 82,204,82,236,90,13,91,110,99,240,107,82,116,146,124,147,124,147,124,147, + 132,179,132,179,132,179,124,6,179,132,137,179,124,147,124,147,124,146,116,114, + 116,146,132,179,140,179,140,178,140,6,179,140,136,113,140,175,115,16,116,146, + 132,211,140,211,148,211,140,146,132,3,49,124,148,16,116,241,107,82,116,180, + 124,212,132,212,132,212,124,212,132,180,124,180,124,179,124,147,116,147,124,147, + 132,24,174,77,107,73,66,138,74,106,74,138,74,5,106,74,129,105,74,9, + 106,74,138,74,74,73,74,106,74,106,66,106,74,138,74,73,66,240,107,53, + 141,244,140,3,245,132,164,244,132,245,140,245,140,244,140,204,82,9,58,41, + 58,9,58,41,66,8,58,232,57,232,57,200,57,232,57,199,49,167,49,167, + 49,135,41,102,41,102,41,69,33,70,33,70,33,37,33,9,66,138,74,5, + 25,4,25,37,33,37,33,70,33,135,41,167,49,168,49,167,49,200,57,4, + 9,58,133,201,49,169,41,168,49,136,41,136,41,3,104,41,6,71,33,130, + 39,33,40,33,4,39,33,133,7,25,7,33,39,33,7,25,7,25,5,7, + 33,129,39,33,3,7,25,138,231,24,7,25,7,25,7,33,6,25,6,25, + 7,25,7,25,231,24,7,25,5,230,24,133,198,24,230,24,198,24,230,24, + 198,16,3,198,24,146,198,16,198,24,198,16,198,24,198,24,198,16,198,24, + 198,24,198,16,198,24,197,16,230,16,230,24,197,16,197,16,166,16,165,16, + 198,16,4,230,24,131,198,16,230,24,6,25,3,230,24,132,208,107,13,91, + 171,82,171,82,6,106,74,136,139,74,138,74,171,82,203,82,236,90,236,90, + 142,107,20,157,3,244,156,129,243,156,9,244,156,129,212,140,4,212,132,146, + 180,124,148,124,83,108,50,108,18,92,209,91,183,165,85,157,207,115,166,49, + 166,49,101,41,102,41,134,41,166,49,134,41,166,49,166,49,5,167,49,4, + 199,49,148,167,49,199,49,199,49,71,33,198,16,197,16,165,16,133,16,165, + 16,165,16,133,8,42,66,16,132,146,148,81,140,81,140,114,148,114,148,146, + 148,178,148,6,211,156,6,243,156,130,244,156,19,165,18,20,165,134,84,173, + 16,124,228,24,195,24,227,24,227,24,3,195,24,147,195,32,227,24,227,24, + 195,24,130,16,163,24,38,82,163,65,229,73,33,41,132,57,229,73,33,41, + 66,49,66,41,67,41,67,49,67,41,34,41,3,66,41,3,66,49,150,66, + 41,66,41,67,49,34,41,67,41,13,148,79,164,78,172,111,172,79,172,140, + 147,173,147,107,139,46,156,140,147,42,123,74,131,1,41,66,41,34,49,67, + 41,140,123,3,111,172,174,111,180,13,164,79,172,46,172,46,172,14,164,13, + 164,172,147,195,73,34,41,66,49,34,41,197,65,103,90,5,74,228,65,163, + 57,99,49,66,41,34,41,34,41,33,41,66,49,131,57,164,65,34,49,66, + 49,66,49,34,41,39,74,42,115,107,139,140,147,172,147,13,164,237,163,237, + 155,204,163,172,147,75,139,140,139,200,122,196,73,163,73,34,41,164,57,117, + 3,134,12,99,44,91,12,99,44,99,44,99,12,99,4,44,99,139,45,99, + 44,99,44,99,44,91,12,99,45,99,44,99,44,99,45,99,45,99,44,99, + 3,45,99,133,77,99,45,99,44,99,45,99,44,99,3,45,99,129,44,91, + 3,44,99,3,45,99,131,44,99,45,99,44,99,3,45,99,156,77,99,45, + 99,44,99,45,99,77,99,77,99,45,99,77,99,45,99,77,99,45,91,45, + 99,77,99,45,99,45,99,77,99,45,99,45,99,45,91,45,91,77,99,45, + 99,45,91,77,91,45,99,45,99,45,91,45,99,3,45,91,129,77,99,13, + 45,91,129,44,91,10,45,91,136,236,82,236,82,236,90,13,91,143,99,17, + 108,114,116,146,124,3,147,124,129,179,132,4,179,124,5,179,132,136,147,124, + 147,124,115,116,114,116,146,132,179,140,179,140,178,140,4,179,140,138,178,140, + 211,148,146,140,81,124,81,132,179,140,211,148,211,148,179,140,114,132,3,49, + 124,131,16,116,17,108,114,124,4,212,132,140,212,124,180,124,180,124,179,124, + 147,116,179,124,179,132,122,182,138,82,73,74,106,74,106,74,3,138,74,132, + 106,74,105,74,138,74,105,74,3,106,74,129,138,74,4,106,74,157,105,66, + 73,66,106,66,74,66,74,66,74,74,106,74,74,74,139,74,114,124,21,141, + 245,140,245,132,21,133,21,133,244,140,21,141,179,132,139,74,232,57,41,66, + 9,58,233,57,8,58,9,58,232,57,200,57,200,49,200,49,3,167,49,147, + 135,41,102,33,102,41,102,41,102,33,102,41,41,66,236,90,204,90,229,24, + 70,33,135,33,168,41,200,49,200,49,233,57,201,49,233,57,233,57,3,201, + 49,137,169,49,169,49,169,41,137,49,136,41,136,41,104,41,104,41,71,41, + 4,71,33,129,72,33,6,39,33,6,7,33,131,7,25,7,25,231,24,3, + 7,25,3,231,24,137,7,25,7,33,7,25,7,25,6,25,7,25,6,25, + 230,24,7,25,3,230,24,4,198,24,136,230,24,198,24,198,16,198,24,198, + 24,230,24,198,24,230,24,6,198,16,133,198,24,198,16,198,24,197,16,230, + 16,3,197,16,137,197,24,198,16,198,16,229,24,230,24,230,24,197,16,198, + 24,197,16,3,230,24,130,241,115,176,107,3,138,74,145,106,74,106,74,74, + 74,74,74,106,74,138,74,139,82,171,82,171,82,12,91,236,90,45,99,211, + 156,20,157,244,156,244,156,243,156,8,244,156,130,243,156,180,140,4,212,132, + 146,180,124,147,124,115,108,50,108,242,99,209,91,183,165,85,157,207,115,199, + 49,166,49,134,41,102,33,135,41,134,41,134,41,167,49,166,49,4,167,49, + 139,199,49,167,49,166,49,199,49,199,49,167,49,167,49,231,49,70,33,198, + 8,197,16,3,165,16,145,165,8,133,8,9,58,16,132,146,148,81,140,81, + 140,114,148,114,148,146,148,179,148,179,148,211,156,211,156,243,156,211,156,211, + 156,6,243,156,130,244,156,243,164,12,20,165,129,52,165,3,20,165,137,52, + 165,52,165,84,173,114,140,37,33,195,24,227,24,195,24,227,24,3,195,24, + 3,227,24,147,162,16,130,16,38,82,164,65,5,74,34,41,131,49,5,74, + 33,41,66,41,66,41,66,49,66,41,67,41,67,49,66,41,66,41,98,49, + 66,49,3,66,41,134,66,49,66,49,66,41,2,33,237,139,143,180,3,111, + 172,189,172,147,205,147,204,147,79,164,78,172,13,156,78,172,65,57,66,41, + 67,49,66,41,201,98,14,156,204,155,172,147,106,131,42,123,200,106,135,98, + 38,82,228,73,164,65,99,49,33,41,66,41,67,49,66,41,66,41,99,49, + 99,49,164,57,5,74,70,82,136,98,233,114,42,123,75,131,172,147,140,147, + 13,164,34,73,34,41,67,49,2,41,104,82,111,164,110,172,110,172,78,172, + 79,172,46,172,202,122,140,139,168,114,169,114,43,123,74,139,131,73,37,82, + 33,49,67,49,114,3,135,12,99,44,99,44,99,12,91,12,99,44,99,12, + 91,3,44,99,133,45,99,44,99,44,99,45,99,45,99,5,44,99,133,45, + 99,45,99,44,99,45,99,44,99,8,45,99,146,44,99,77,99,45,99,44, + 99,45,99,44,99,45,99,44,99,44,99,45,99,45,99,44,99,45,99,77, + 99,77,99,45,99,45,99,45,91,5,45,99,132,77,99,45,99,45,99,77, + 99,5,45,99,137,45,91,77,91,45,99,45,91,45,99,45,91,45,91,45, + 99,45,99,9,45,91,132,45,99,45,91,45,91,45,99,9,45,91,129,77, + 91,3,45,91,137,12,91,236,82,203,82,12,91,45,91,208,107,49,116,114, + 124,114,124,3,147,124,6,179,132,149,179,124,179,132,179,124,179,124,147,124, + 147,124,114,116,114,124,146,140,179,140,179,140,211,140,179,140,179,140,178,140, + 179,140,211,140,211,148,179,148,178,140,179,140,3,211,148,136,178,148,114,132, + 49,124,81,124,49,124,240,115,17,116,115,124,5,212,132,140,180,124,180,124, + 179,124,147,116,147,124,243,140,89,182,231,57,138,74,138,74,106,74,137,74, + 8,106,74,131,105,74,106,74,105,74,3,106,74,151,74,66,106,74,73,66, + 105,66,106,66,74,66,105,66,74,66,106,66,171,74,179,132,21,141,245,132, + 21,141,244,132,21,133,21,141,147,132,172,74,41,66,41,66,41,58,9,58, + 3,232,57,135,8,58,200,49,200,57,200,49,167,49,135,41,135,41,3,102, + 41,140,70,33,37,33,37,33,9,66,167,49,5,25,71,33,103,41,135,41, + 200,49,233,49,200,57,3,233,57,130,233,49,234,57,3,201,49,136,169,49, + 136,41,136,41,104,41,104,41,71,33,72,41,71,41,3,71,33,4,39,33, + 129,71,33,7,39,33,138,7,25,7,25,231,24,7,25,231,24,231,24,230, + 24,7,25,231,24,7,25,3,231,24,135,6,25,230,24,6,25,231,24,230, + 24,230,24,198,24,4,230,24,133,198,24,230,24,230,24,198,24,198,16,5, + 198,24,173,198,16,198,24,198,24,198,16,198,16,230,24,197,16,198,24,197, + 16,230,24,197,16,197,16,198,24,197,16,197,16,197,24,229,24,230,24,197, + 16,229,24,229,24,230,24,197,24,230,24,197,16,39,33,17,116,16,124,106, + 74,139,74,106,74,138,74,74,74,74,74,74,66,106,74,106,74,138,74,171, + 82,171,82,204,90,236,90,12,91,114,140,20,157,3,243,156,139,244,156,244, + 156,243,156,244,156,244,156,20,157,244,156,244,156,243,156,212,140,212,140,3, + 212,132,145,180,124,148,124,115,108,50,100,18,100,177,91,215,165,85,149,207, + 107,199,57,166,49,102,41,102,41,134,49,166,41,134,41,134,49,6,167,49, + 5,199,49,133,167,49,231,49,103,33,198,8,197,16,4,165,16,140,133,8, + 201,57,208,131,146,148,81,140,81,140,113,140,114,148,146,148,179,148,179,148, + 211,148,4,211,156,130,243,156,211,156,5,243,156,129,244,164,18,20,165,135, + 52,165,211,156,134,41,195,24,228,24,227,24,227,24,3,195,24,129,227,24, + 3,195,24,219,98,8,198,65,164,65,5,74,67,49,66,41,37,82,66,49, + 66,41,66,41,99,49,196,65,196,65,4,74,228,65,228,65,37,82,5,74, + 99,49,34,41,66,41,66,49,66,41,66,49,225,32,42,115,144,180,111,172, + 111,172,78,172,13,164,13,164,204,155,172,147,107,139,74,131,9,123,98,57, + 34,41,66,41,66,49,99,49,99,49,66,41,34,33,34,33,34,41,34,41, + 99,49,164,57,229,73,38,82,168,98,70,90,34,49,67,49,66,49,34,41, + 172,123,111,172,79,172,111,180,111,180,144,180,205,163,205,147,172,147,42,131, + 234,122,172,139,37,98,1,41,66,49,34,49,165,57,14,140,111,172,79,172, + 79,172,111,180,111,180,13,172,111,172,46,172,111,180,78,172,46,180,162,97, + 37,74,98,57,66,41,105,3,132,44,99,44,99,12,91,12,91,9,44,99, + 133,45,99,44,99,45,99,45,99,44,99,3,45,99,129,44,99,11,45,99, + 129,44,99,6,45,99,129,44,99,3,45,99,133,44,99,45,99,77,99,45, + 99,45,99,3,77,99,135,45,99,77,99,45,99,77,99,45,99,45,99,77, + 99,6,45,99,139,77,91,45,91,45,99,45,91,45,99,45,91,45,91,45, + 99,45,91,45,91,45,99,14,45,91,129,44,91,7,45,91,138,77,91,45, + 91,236,82,204,82,236,82,12,91,77,99,208,107,50,116,114,124,4,147,124, + 4,179,132,129,179,124,3,179,132,143,179,124,179,124,147,124,147,124,115,116, + 146,124,178,140,178,140,114,140,16,124,16,124,114,132,178,140,178,140,179,140, + 3,211,140,134,211,148,211,140,211,148,211,148,178,140,81,132,3,49,124,131, + 240,115,50,116,147,124,4,212,132,141,212,124,180,124,179,124,180,124,147,116, + 179,124,118,149,214,173,231,57,138,74,106,74,138,74,138,74,3,106,74,187, + 138,74,106,74,138,74,106,74,105,74,106,74,106,74,105,74,138,74,106,74, + 106,66,106,66,106,74,73,66,74,66,74,66,73,66,73,66,74,66,74,66, + 106,66,13,83,54,141,21,141,245,140,21,133,21,133,53,141,114,124,41,58, + 232,57,41,66,41,66,9,58,232,57,200,57,232,57,232,57,200,57,199,49, + 167,49,167,49,167,41,135,41,102,33,102,41,70,33,70,33,37,33,37,33, + 103,41,232,57,5,33,102,41,103,41,168,49,200,49,200,49,232,57,3,233, + 57,129,234,57,3,201,49,132,169,49,169,49,168,41,136,41,3,104,41,131, + 71,33,71,33,103,41,3,71,33,3,39,33,129,71,33,4,39,33,131,7, + 33,39,33,39,33,3,7,25,131,231,24,231,24,230,24,3,7,25,130,230, + 24,231,24,8,230,24,129,198,24,3,230,24,3,198,24,147,230,24,198,24, + 230,24,198,24,198,24,198,16,198,24,198,16,198,16,198,24,230,24,198,16, + 198,24,198,16,198,16,198,24,197,16,197,24,197,16,3,198,16,131,197,16, + 197,24,197,24,4,230,24,147,6,25,230,24,230,24,229,16,71,33,49,124, + 16,124,106,74,139,82,138,74,106,74,106,74,74,66,73,66,74,66,106,74, + 138,74,171,82,171,82,3,236,90,130,16,124,20,157,3,243,156,138,20,157, + 244,156,243,156,244,156,243,156,244,156,243,156,244,156,243,156,212,140,4,212, + 132,141,180,132,148,124,115,116,50,100,18,92,177,83,183,157,85,157,240,115, + 231,57,167,49,102,41,102,41,3,134,41,132,134,49,167,49,167,49,166,49, + 4,167,49,131,199,49,199,49,167,49,3,199,49,131,103,33,198,16,197,16, + 4,165,16,140,133,8,168,49,175,123,146,148,81,140,81,140,113,140,114,148, + 146,148,178,148,179,148,211,148,4,211,156,7,243,156,132,244,156,19,157,20, + 165,19,157,13,20,165,135,52,165,20,165,52,165,20,165,40,58,162,16,228, + 32,3,227,24,225,195,24,227,24,195,24,227,24,227,24,195,24,98,16,165, + 65,196,73,229,65,131,57,66,41,5,74,99,57,66,41,66,41,131,57,37, + 82,4,74,163,65,163,65,228,65,195,65,195,65,99,49,66,41,66,49,66, + 49,66,41,66,49,34,41,38,82,41,123,232,106,167,98,70,90,5,74,197, + 65,164,57,131,49,99,49,99,49,131,49,98,49,66,41,66,49,66,49,99, + 49,71,82,168,106,233,114,42,123,140,139,172,147,237,155,237,163,204,147,237, + 155,205,155,139,147,98,65,66,41,66,49,225,32,43,107,144,172,79,172,110, + 172,79,172,111,172,13,164,140,139,205,155,75,139,140,147,14,156,9,139,33, + 49,67,49,66,49,67,41,172,115,78,172,13,164,237,155,204,147,139,139,106, + 131,9,115,233,106,167,98,70,90,37,82,98,57,197,65,163,73,66,49,126, + 3,129,12,99,3,44,99,133,45,99,44,99,44,99,12,99,45,99,4,44, + 99,139,45,99,44,99,44,99,45,99,45,99,44,99,45,99,44,99,44,99, + 45,99,44,99,3,45,99,129,44,99,5,45,99,137,44,99,44,99,45,99, + 45,99,44,99,45,99,45,99,44,99,44,99,3,45,99,133,45,91,45,99, + 45,99,45,91,45,99,4,77,99,136,44,91,45,99,77,99,45,99,45,91, + 45,99,45,91,77,99,3,45,99,132,45,91,45,91,77,99,45,91,3,45, + 99,131,45,91,45,91,45,99,7,45,91,129,45,99,3,45,91,129,44,91, + 7,45,91,130,77,91,77,91,4,45,91,139,236,82,203,82,236,90,13,91, + 78,99,240,115,82,116,114,124,146,124,147,124,147,124,5,179,132,145,179,124, + 179,132,179,124,179,132,179,124,147,124,147,124,146,124,114,124,146,124,178,140, + 146,140,207,115,203,82,45,83,16,116,146,140,3,179,140,3,211,148,139,211, + 140,211,148,211,148,146,140,81,124,49,124,81,124,17,116,241,107,50,116,179, + 124,4,212,132,129,212,124,3,180,124,133,147,116,147,124,150,157,20,157,232, + 65,5,138,74,134,106,74,138,74,106,74,138,74,138,74,105,74,3,106,74, + 134,138,74,106,74,106,74,74,66,73,66,105,66,4,73,66,154,74,66,42, + 66,73,66,106,66,41,66,208,99,86,141,21,133,245,132,21,133,54,141,16, + 108,8,58,41,66,9,58,41,58,9,58,9,58,8,58,8,58,200,49,200, + 57,200,57,167,49,199,49,167,49,3,103,41,3,70,33,138,69,33,37,33, + 134,49,70,33,103,41,103,41,168,41,168,49,200,49,200,57,3,233,57,129, + 201,57,3,201,49,130,169,49,169,49,3,136,41,3,104,41,5,71,33,4, + 39,33,129,71,33,6,39,33,137,7,25,6,25,7,25,230,24,7,25,230, + 24,7,25,231,24,7,25,3,230,24,129,6,25,6,230,24,139,198,24,230, + 24,198,24,230,16,230,24,198,24,198,16,198,24,230,24,198,24,230,24,3, + 198,24,131,230,24,230,24,198,16,3,198,24,141,198,16,230,24,197,16,230, + 24,197,24,198,16,230,16,197,16,230,24,198,16,230,16,229,16,230,24,6, + 6,25,162,230,24,38,33,208,115,207,115,106,74,171,74,106,74,74,74,106, + 74,73,66,73,66,74,66,106,74,138,74,171,82,171,82,236,90,12,91,204, + 90,175,115,244,156,244,156,243,156,244,156,244,156,243,156,20,157,244,156,243, + 156,243,156,244,156,243,156,244,156,179,140,4,212,132,141,180,124,147,124,115, + 116,50,100,18,100,144,83,150,157,52,149,114,124,231,57,167,49,102,41,102, + 41,3,134,41,138,135,41,167,49,167,49,134,41,167,49,166,49,166,49,167, + 49,167,49,199,49,3,167,49,148,199,57,103,33,198,16,197,16,165,16,133, + 8,165,16,165,16,133,8,136,41,143,115,146,148,113,140,81,140,113,140,114, + 148,146,148,178,148,178,148,211,148,4,211,156,6,243,156,133,20,165,243,156, + 19,157,20,165,20,157,3,20,165,129,244,156,11,20,165,137,52,165,52,165, + 171,74,130,16,227,24,228,32,227,24,195,24,227,24,3,195,24,173,227,24, + 195,24,98,16,100,49,229,73,196,65,196,65,34,41,229,65,164,57,66,41, + 66,49,98,49,99,49,98,49,98,49,66,49,98,49,66,41,66,49,66,41, + 67,49,66,49,66,41,67,41,66,41,66,41,67,49,66,41,66,41,99,41, + 164,57,196,65,70,82,135,90,168,106,10,115,10,123,108,139,200,114,33,49, + 67,49,66,41,131,49,205,139,3,111,172,3,111,180,140,78,172,107,139,172, + 139,107,139,173,147,164,81,34,41,66,49,2,41,104,74,144,172,111,180,4, + 144,180,145,111,180,111,180,78,172,46,172,46,164,41,139,66,57,66,49,66, + 49,34,41,5,74,37,82,228,73,163,65,131,57,99,49,66,49,3,34,41, + 134,2,41,33,41,34,41,99,49,228,73,34,49,100,3,130,44,99,12,99, + 4,44,99,129,12,99,4,44,99,130,45,99,45,99,3,44,99,5,45,99, + 136,13,99,45,99,44,99,45,99,45,99,44,99,45,99,44,99,5,45,99, + 130,77,99,44,99,6,45,99,136,44,99,45,99,45,91,77,99,45,99,45, + 91,45,91,77,99,3,45,99,129,45,91,3,45,99,146,44,99,45,99,77, + 99,45,99,45,99,44,99,45,99,45,99,45,91,77,99,45,99,45,91,45, + 99,45,91,45,99,77,99,45,91,45,99,8,45,91,129,44,91,5,45,91, + 129,44,91,3,45,91,129,44,91,6,45,91,140,236,82,203,82,236,90,45, + 91,110,99,17,108,114,124,146,124,147,124,147,124,179,124,179,124,3,179,132, + 152,211,132,179,132,179,132,179,124,179,132,179,132,147,124,179,124,115,116,114, + 124,146,124,178,140,113,132,207,107,12,75,142,91,49,124,178,140,179,140,178, + 140,146,140,114,140,146,140,179,140,3,211,148,158,146,140,81,124,49,124,81, + 132,17,124,17,108,82,116,180,124,212,132,244,132,212,132,212,132,212,124,180, + 124,180,124,179,124,147,116,179,132,150,157,16,124,41,66,138,74,106,74,138, + 74,106,74,138,74,106,74,138,74,106,74,106,74,3,138,74,130,106,74,105, + 74,4,106,74,129,106,66,6,73,66,153,41,58,41,58,73,66,106,66,73, + 66,17,108,53,141,21,133,245,132,86,149,12,83,232,57,9,66,41,66,41, + 66,9,58,9,58,232,57,232,57,233,57,200,49,168,49,200,49,167,49,167, + 49,3,102,41,129,102,33,3,70,33,136,4,25,37,33,70,33,135,41,135, + 41,168,49,200,49,200,49,6,233,57,3,201,49,138,169,49,169,49,136,41, + 136,41,104,41,104,41,71,33,39,33,39,33,71,33,4,39,33,129,7,33, + 8,39,33,141,7,25,7,33,7,33,7,25,231,24,7,33,6,25,231,24, + 6,25,230,24,6,25,230,24,6,25,8,230,24,132,198,24,230,24,230,24, + 198,24,10,230,24,129,198,24,8,230,24,151,230,16,230,24,229,24,230,24, + 230,24,6,25,6,25,230,24,6,25,7,25,39,33,38,33,38,33,71,33, + 6,25,71,33,241,107,16,124,106,74,139,74,138,74,106,74,74,74,3,73, + 66,132,74,74,106,74,138,74,203,82,3,236,90,130,77,107,211,156,3,243, + 156,130,244,156,243,156,4,244,156,132,243,156,244,156,243,156,180,140,3,212, + 132,153,180,132,180,124,179,124,115,116,50,108,18,100,144,83,150,157,85,157, + 113,124,232,57,166,49,134,41,101,41,102,41,134,41,134,41,166,41,166,49, + 134,41,167,49,166,49,167,49,167,49,199,49,3,167,49,3,199,49,147,135, + 41,198,8,198,16,165,16,165,8,165,16,165,16,133,8,71,33,110,115,146, + 148,113,140,81,140,81,140,113,148,146,148,146,148,179,148,179,156,3,211,156, + 130,243,156,211,156,5,243,156,132,20,157,243,156,244,156,20,157,7,20,165, + 129,20,157,9,20,165,134,53,173,142,107,97,8,228,24,195,24,195,24,6, + 227,24,142,195,24,130,16,4,33,5,82,164,57,229,73,34,41,196,65,228, + 73,34,41,98,49,99,49,66,49,67,49,3,66,49,129,66,41,3,66,49, + 129,67,49,3,66,49,195,66,41,99,49,107,123,13,156,46,172,237,155,46, + 172,205,155,205,155,140,147,78,164,13,164,76,139,139,147,131,65,34,41,66, + 49,34,41,43,107,144,180,111,172,111,180,111,172,111,180,143,180,111,180,14, + 164,79,172,14,164,143,180,102,114,34,41,67,49,34,41,196,57,140,131,139, + 139,74,123,233,114,168,106,135,98,38,82,229,73,164,57,131,57,66,41,66, + 41,34,41,66,41,66,41,66,49,2,41,2,41,33,41,34,41,34,41,67, + 49,66,49,98,49,99,57,99,57,132,57,164,65,196,65,229,73,37,82,66, + 49,21,3,3,44,99,129,12,99,7,44,99,132,45,99,44,99,45,99,44, + 99,4,45,99,130,44,99,44,99,9,45,99,129,44,91,4,45,99,130,44, + 99,44,99,4,45,99,132,45,91,45,99,45,99,45,91,12,45,99,3,77, + 99,4,45,99,132,45,91,45,91,45,99,45,99,14,45,91,129,77,91,15, + 45,91,142,77,91,13,91,236,82,236,82,12,91,45,91,143,99,49,116,114, + 124,147,124,147,124,147,132,179,124,179,124,4,179,132,129,180,132,3,179,132, + 158,179,124,179,124,147,124,147,116,114,124,147,132,179,140,146,140,81,124,16, + 116,81,124,146,140,178,140,179,140,178,140,49,132,240,115,81,124,178,140,211, + 148,243,148,179,148,114,140,81,124,49,132,49,124,17,116,17,108,114,116,180, + 124,3,212,132,157,212,124,212,124,180,124,180,124,147,116,115,116,179,132,248, + 173,109,99,73,74,138,74,138,74,106,74,138,74,106,74,138,74,106,74,138, + 74,138,74,106,74,138,74,106,74,106,74,105,74,106,74,106,74,138,74,105, + 74,74,66,5,73,66,129,41,58,3,73,58,153,73,66,74,66,138,66,147, + 116,53,141,245,132,118,157,171,74,9,58,233,57,74,66,41,66,9,58,9, + 66,9,58,200,49,232,57,200,49,168,49,200,49,135,49,167,49,135,41,102, + 41,102,41,4,70,33,137,5,25,5,25,103,41,103,41,135,49,167,49,200, + 49,200,57,200,57,4,233,57,4,201,49,131,169,49,136,49,136,41,3,104, + 41,131,71,41,71,33,71,33,5,39,33,129,6,33,8,39,33,134,7,33, + 39,33,7,25,7,33,7,25,7,33,7,6,25,129,6,33,19,230,24,129, + 6,25,5,230,24,130,6,25,6,25,3,230,24,131,6,25,230,24,230,24, + 4,6,25,151,39,33,6,25,39,33,39,33,103,33,39,33,6,33,39,33, + 38,33,144,107,82,132,106,74,171,74,138,74,106,74,74,66,74,66,41,66, + 74,66,74,74,106,74,139,74,171,82,3,236,90,131,13,91,178,148,20,157, + 10,244,156,130,243,156,179,140,4,212,132,150,180,132,147,124,115,116,50,108, + 18,100,144,83,118,157,118,157,178,132,8,58,166,49,134,49,102,41,102,41, + 134,41,134,41,166,41,167,49,167,49,166,49,167,49,167,41,3,167,49,3, + 199,49,149,167,49,199,49,135,41,198,16,198,16,165,16,133,16,165,16,165, + 16,133,8,39,33,77,107,146,148,113,148,81,140,81,140,114,148,146,148,146, + 148,179,148,179,148,5,211,156,7,243,156,131,20,165,20,165,20,157,5,20, + 165,132,19,157,19,165,20,165,20,157,6,20,165,134,52,165,85,173,16,132, + 130,8,228,24,228,24,5,227,24,140,228,24,195,24,195,24,130,16,227,24, + 6,82,163,57,37,74,66,49,164,57,5,74,66,41,3,66,49,136,66,41, + 66,49,66,49,66,41,66,41,67,49,131,49,98,49,5,66,49,194,99,41, + 172,131,175,180,143,180,237,155,204,147,107,131,42,123,42,123,205,139,13,164, + 107,139,205,155,228,81,66,41,66,49,34,41,168,90,176,180,111,172,111,172, + 78,172,46,164,237,155,204,147,139,139,75,131,41,123,232,114,4,82,34,41, + 67,49,66,49,66,49,132,57,99,49,66,41,34,41,34,41,33,41,34,41, + 1,33,34,41,33,41,34,41,67,49,99,49,131,49,131,57,164,57,196,65, + 196,65,228,73,229,73,229,73,5,74,5,74,5,82,5,82,229,73,229,73, + 197,73,196,65,164,65,99,57,66,49,118,3,6,44,99,129,44,91,5,44, + 99,142,45,99,45,99,44,99,44,99,45,99,45,99,44,99,44,99,45,99, + 45,99,44,91,44,99,45,99,44,99,6,45,99,132,44,99,45,99,77,99, + 44,99,3,45,99,153,77,99,45,99,45,99,77,99,45,99,44,99,77,99, + 77,99,44,99,45,99,45,99,44,99,44,99,45,99,45,91,77,91,77,99, + 45,99,45,91,45,91,44,99,45,99,77,91,77,99,45,91,3,45,99,129, + 77,99,3,45,91,132,77,91,45,91,45,91,44,91,3,45,91,129,77,91, + 16,45,91,129,45,99,3,45,91,141,13,91,236,82,204,82,13,91,78,91, + 175,99,81,116,114,124,146,124,147,124,147,124,179,132,179,124,3,179,132,132, + 180,132,180,132,211,132,179,132,3,179,124,132,147,124,146,116,146,124,146,132, + 3,178,140,4,179,140,150,178,140,178,148,207,123,142,107,16,116,179,140,211, + 148,243,148,179,140,114,132,49,124,81,124,49,124,16,116,49,116,115,116,212, + 124,212,132,212,132,212,124,212,132,212,124,3,180,124,135,115,116,244,140,215, + 173,235,90,105,74,138,74,106,74,3,138,74,131,106,74,138,74,105,74,3, + 138,74,5,106,74,132,106,66,74,66,74,66,105,66,3,73,66,170,73,58, + 41,58,73,58,41,58,41,66,73,66,73,58,41,58,171,66,54,149,21,141, + 118,149,139,74,9,58,41,58,41,58,41,66,9,58,9,58,232,57,233,57, + 232,57,200,49,200,49,168,49,167,49,167,49,103,41,102,41,102,41,102,33, + 70,33,70,33,102,41,4,25,228,24,135,41,135,41,135,49,200,49,200,49, + 200,57,5,233,57,129,201,57,3,201,49,133,169,49,136,49,136,49,104,41, + 104,41,3,71,41,130,39,33,38,33,5,39,33,132,7,25,39,33,39,33, + 71,33,3,39,33,129,38,33,3,39,33,139,7,33,6,25,6,33,6,33, + 38,33,6,33,6,33,38,25,6,25,6,33,6,33,7,6,25,135,230,24, + 230,24,6,25,230,24,6,25,6,25,230,24,3,6,25,177,7,25,6,25, + 6,33,6,25,6,25,230,24,6,25,39,33,38,25,6,25,6,25,230,24, + 6,25,6,25,229,24,230,24,165,16,165,16,197,24,165,16,132,16,132,16, + 133,8,165,16,198,16,72,25,201,33,165,0,133,0,240,107,48,124,106,74, + 171,74,106,74,74,66,74,66,73,66,9,58,73,66,74,66,106,74,138,74, + 171,82,204,90,236,90,236,90,204,90,49,132,20,157,3,244,156,132,243,156, + 244,156,244,156,243,156,4,244,156,130,179,140,180,132,3,212,132,142,180,132, + 147,124,115,116,50,108,18,92,112,83,53,149,117,157,146,132,8,58,166,49, + 134,49,101,41,102,41,3,134,41,129,134,49,11,167,49,132,199,49,135,41, + 198,8,198,16,4,165,16,140,134,0,7,25,45,107,114,148,114,148,81,140, + 113,140,114,148,146,148,146,148,178,148,179,148,4,211,156,6,243,156,134,244, + 156,244,156,243,156,19,165,244,156,244,164,3,20,165,134,244,164,19,165,19, + 165,20,165,20,165,19,165,5,20,165,135,52,165,53,173,146,148,163,16,227, + 24,228,24,228,24,6,227,24,149,195,24,162,16,195,16,6,74,131,57,37, + 74,99,49,98,49,38,82,98,49,66,49,98,49,131,49,131,57,131,57,196, + 65,196,65,228,65,5,74,229,73,196,65,5,66,49,134,66,41,42,115,176, + 180,143,180,111,172,78,164,3,79,172,151,111,172,143,180,79,180,46,172,69, + 98,34,41,66,49,66,41,196,57,41,115,199,106,135,90,37,82,5,74,196, + 65,131,57,99,57,98,49,66,41,34,41,34,41,66,41,66,41,3,34,41, + 154,66,41,66,41,67,49,99,57,164,57,196,65,228,73,229,73,5,82,6, + 82,38,82,6,82,6,82,5,82,5,82,229,73,196,65,164,65,164,65,131, + 57,99,49,99,49,66,49,67,49,67,49,66,41,5,66,49,166,3,136,12, + 99,44,99,12,91,44,99,44,99,45,99,12,91,45,99,5,44,99,140,45, + 99,44,99,45,99,45,99,44,99,45,99,45,99,44,99,77,99,45,99,45, + 99,44,99,3,45,99,132,44,99,45,99,45,99,44,99,5,45,99,132,44, + 91,44,99,45,99,44,99,4,45,99,129,44,91,3,45,99,133,77,99,45, + 99,77,99,77,99,45,91,3,45,99,149,45,91,77,99,45,99,77,99,77, + 99,45,91,45,91,45,99,77,99,45,91,45,91,77,99,45,99,45,99,45, + 91,45,91,45,99,77,99,45,91,45,91,77,91,11,45,91,129,13,91,4, + 45,91,129,77,91,3,45,91,141,77,91,236,82,204,82,236,82,13,91,78, + 99,208,107,82,124,114,124,146,124,147,124,147,124,179,124,5,179,132,161,180, + 132,180,124,180,132,180,124,179,124,147,124,147,124,114,124,114,124,147,140,178, + 148,178,140,179,140,179,140,179,148,179,140,178,140,178,140,146,140,16,124,240, + 115,81,124,179,140,211,148,211,148,146,140,113,132,81,124,81,124,49,124,240, + 115,50,116,147,124,5,212,132,139,212,124,180,124,180,124,148,116,115,116,20, + 149,118,157,170,82,106,74,138,74,138,74,4,106,74,132,105,74,106,74,138, + 74,138,74,7,106,74,6,73,66,130,73,58,73,58,6,41,58,140,9,58, + 46,83,21,141,119,157,139,74,41,58,41,58,74,66,41,66,9,58,9,58, + 41,66,3,232,57,147,167,49,135,49,167,49,135,49,135,49,103,41,102,41, + 102,33,70,33,70,33,102,33,4,25,163,16,37,33,135,41,135,49,168,49, + 200,49,200,57,3,232,57,144,201,57,232,57,233,57,201,57,201,49,201,49, + 169,41,136,41,104,41,104,41,103,41,104,41,71,33,71,41,71,41,71,33, + 8,39,33,4,71,33,137,39,33,39,33,38,33,38,33,39,33,38,33,71, + 33,39,33,7,33,3,39,33,139,38,33,39,33,6,33,38,33,7,33,39, + 33,7,25,39,33,39,33,6,25,7,33,3,39,33,133,6,25,6,25,230, + 24,230,24,6,25,6,230,24,167,7,25,230,24,230,16,7,25,7,25,72, + 25,39,25,105,25,202,33,11,42,173,58,79,75,209,83,242,91,51,100,149, + 108,152,133,249,141,123,166,94,191,191,207,255,223,255,231,255,239,179,124,207, + 115,138,74,139,74,171,82,171,74,74,66,73,66,73,66,41,66,74,66,106, + 74,138,74,171,82,204,90,3,236,90,159,207,123,52,157,243,156,243,156,244, + 156,244,156,243,156,243,156,244,156,244,156,243,156,244,156,244,156,179,140,179, + 132,212,132,212,132,180,132,180,132,148,124,147,116,82,100,51,100,50,92,86, + 149,118,157,179,140,41,66,167,49,134,49,101,41,3,134,41,136,166,41,167, + 49,134,49,134,41,167,49,167,49,167,41,166,49,5,167,49,149,199,49,135, + 41,198,8,198,16,165,16,165,8,133,8,165,16,133,0,230,16,236,90,114, + 148,114,148,81,140,81,140,114,148,114,148,178,148,179,148,179,156,179,148,4, + 211,156,130,243,156,211,156,4,243,156,204,20,165,243,156,20,157,20,165,20, + 157,19,157,20,165,244,164,20,157,20,165,19,157,20,157,243,156,20,165,20, + 157,19,157,20,165,19,165,20,165,20,165,52,165,244,156,4,25,195,24,228, + 32,227,24,227,24,195,24,227,24,227,24,195,24,227,24,228,24,163,24,130, + 16,230,73,163,65,37,74,163,57,34,41,38,82,130,57,66,49,98,49,131, + 57,37,74,69,82,101,90,69,82,69,90,69,90,196,65,131,57,66,49,99, + 49,99,49,66,49,98,49,34,41,135,90,46,156,237,155,204,155,171,147,74, + 139,41,123,233,114,135,98,70,82,5,74,196,65,131,49,66,41,66,41,66, + 49,34,41,3,1,33,142,34,41,34,41,66,41,66,41,66,49,99,49,131, + 49,131,57,164,57,196,65,197,65,229,73,5,82,37,82,3,38,82,145,5, + 82,5,82,229,73,196,65,164,65,131,65,131,57,99,49,98,49,66,49,34, + 41,66,49,34,41,34,41,66,49,66,49,66,41,3,66,49,133,66,41,34, + 49,34,41,34,49,34,41,3,66,49,142,3,131,44,99,44,99,12,99,6, + 44,99,131,45,99,44,99,44,99,3,45,99,137,44,99,44,99,45,99,45, + 99,44,99,44,99,45,99,45,99,44,99,6,45,99,135,44,99,44,99,45, + 99,45,99,44,99,45,91,44,99,6,45,99,136,44,99,45,99,45,99,44, + 99,45,99,77,99,45,99,45,91,3,77,99,3,45,99,3,77,99,134,45, + 99,77,99,45,91,77,91,45,99,45,91,4,45,99,129,45,91,5,45,99, + 131,45,91,45,91,45,99,4,45,91,129,12,91,13,45,91,143,77,91,77, + 91,236,82,203,82,236,90,13,99,110,99,240,107,114,124,146,124,147,124,147, + 132,147,124,179,124,179,124,3,179,132,129,180,132,5,179,132,136,147,124,147, + 124,114,116,146,132,178,140,146,140,113,132,81,132,3,16,124,145,81,132,146, + 140,178,140,114,132,113,132,146,140,211,140,211,140,211,148,146,140,81,132,49, + 124,81,124,17,124,240,115,50,116,147,124,4,212,132,148,212,124,212,124,180, + 124,180,124,147,116,147,116,117,157,20,157,138,82,106,74,138,74,138,74,106, + 74,138,74,138,74,106,74,138,74,138,74,106,74,138,74,6,106,74,130,74, + 66,106,66,5,73,66,129,73,58,8,41,58,134,73,58,208,99,151,157,172, + 74,9,58,41,66,3,74,66,138,41,66,9,58,233,57,200,49,200,49,167, + 49,200,49,167,49,135,49,135,41,4,102,41,159,70,33,69,33,4,25,163, + 16,4,25,134,41,135,41,199,49,200,49,200,57,200,57,232,57,232,57,233, + 57,233,49,233,57,201,49,233,57,201,49,169,49,136,49,136,49,103,41,135, + 41,103,41,103,41,71,41,71,41,71,33,39,33,71,33,4,39,33,131,38, + 33,39,33,39,33,4,71,33,3,39,33,174,71,33,39,33,71,33,39,33, + 39,33,71,33,39,33,39,33,71,33,71,33,39,33,39,33,71,33,39,33, + 6,33,39,33,39,33,6,25,230,24,230,24,198,16,6,25,71,33,104,33, + 104,33,136,33,137,41,201,41,43,50,108,50,173,58,47,67,177,83,83,108, + 147,108,245,124,86,133,119,149,249,165,90,182,253,198,93,207,159,223,223,231, + 255,239,255,247,11,255,255,143,180,132,16,124,138,74,171,74,204,82,106,74, + 41,66,73,66,41,66,41,66,73,66,106,74,138,74,171,82,203,82,3,236, + 90,160,77,107,52,165,244,156,243,156,243,156,244,156,244,156,243,156,244,156, + 243,156,244,148,244,148,212,148,212,132,212,132,213,132,212,124,212,132,245,132, + 245,132,21,133,21,133,22,133,54,133,183,157,118,157,243,140,41,66,166,49, + 134,49,101,41,102,41,4,134,41,133,134,49,167,49,167,49,134,41,166,49, + 6,167,49,155,199,49,135,49,198,16,230,16,165,16,165,8,164,16,165,16, + 134,8,198,16,171,82,82,148,114,148,81,140,81,140,113,148,114,148,146,148, + 178,148,179,148,211,148,211,148,211,156,211,156,243,156,211,156,211,156,4,243, + 156,141,19,157,243,156,19,165,20,165,20,157,19,165,20,165,20,165,20,157, + 20,165,243,156,19,165,244,156,3,243,156,137,211,156,211,156,243,156,211,156, + 243,156,20,165,134,41,195,24,228,24,3,227,24,181,195,24,227,24,195,24, + 228,24,227,24,195,24,130,16,165,65,229,73,229,65,196,65,33,41,37,74, + 164,65,66,49,67,49,99,49,131,57,163,57,163,57,131,57,130,57,131,57, + 98,49,99,49,66,49,99,49,67,49,98,49,98,49,66,49,131,57,5,74, + 196,65,163,57,131,49,98,49,66,41,34,41,34,41,2,41,33,41,34,41, + 66,41,99,49,99,49,131,57,132,57,164,57,164,65,197,65,229,65,229,73, + 3,5,74,144,5,82,5,82,229,73,229,73,196,73,196,65,196,65,164,65, + 132,57,131,57,99,57,99,57,67,49,66,49,66,49,66,41,3,66,49,135, + 67,49,66,49,66,49,67,49,66,41,66,41,34,41,3,66,49,139,99,49, + 99,49,131,57,164,57,164,65,196,65,196,65,229,73,5,74,5,74,5,82, + 119,3,129,12,99,4,44,99,141,45,99,12,91,44,99,44,99,45,99,44, + 99,44,99,45,99,45,99,44,99,45,99,44,99,44,99,4,45,99,140,44, + 99,44,99,45,99,44,99,45,99,44,99,45,99,45,99,44,99,44,99,45, + 99,44,99,4,45,99,129,44,99,5,45,99,129,77,99,5,45,99,5,77, + 99,5,45,99,143,76,99,77,99,77,99,45,99,45,91,77,91,45,91,45, + 99,45,99,45,91,45,99,77,99,45,91,45,91,77,91,4,45,91,129,77, + 91,3,45,91,129,45,99,10,45,91,150,77,91,45,91,45,91,77,91,45, + 91,203,82,235,82,12,91,45,99,143,99,17,108,114,124,147,124,147,124,179, + 132,179,132,147,124,179,124,179,132,179,132,211,132,212,132,5,179,132,149,147, + 124,147,124,114,124,114,132,48,132,175,115,109,107,12,91,203,82,170,82,235, + 82,142,107,16,124,114,140,178,140,146,140,178,140,179,140,211,148,211,148,114, + 140,3,81,124,132,17,116,17,116,82,116,179,124,5,212,132,136,180,124,180, + 124,179,124,147,116,147,116,150,157,178,140,105,74,3,138,74,129,106,74,5, + 138,74,134,106,74,138,74,106,74,105,74,106,74,105,74,3,106,74,5,73, + 66,130,73,58,41,66,5,41,58,136,9,58,9,58,41,58,9,58,106,66, + 146,124,172,74,41,58,3,74,66,162,106,74,41,66,9,58,232,57,200,57, + 200,49,232,57,200,49,167,49,135,41,135,41,103,41,103,41,102,41,102,41, + 70,33,70,33,37,33,163,16,228,24,135,41,135,41,167,49,200,49,200,49, + 200,57,232,57,200,57,233,57,233,57,233,49,201,49,201,49,200,57,3,168, + 49,142,136,41,104,41,104,41,71,41,103,41,71,33,71,33,71,41,71,33, + 71,33,39,33,71,33,71,41,71,33,3,39,33,130,38,33,39,33,5,38, + 33,135,6,25,230,24,197,24,230,24,197,24,230,24,197,24,4,165,16,151, + 197,16,230,16,7,33,71,33,137,41,234,41,43,50,173,58,208,91,83,108, + 22,133,119,133,216,149,58,166,155,174,28,199,125,215,126,223,158,231,223,239, + 255,247,255,239,255,247,20,255,255,138,255,247,255,255,180,132,81,140,106,74, + 138,74,236,90,106,74,134,41,106,74,3,41,66,167,106,74,106,74,171,82, + 236,90,204,90,236,90,236,90,204,90,211,156,243,148,211,148,211,148,212,148, + 212,140,212,132,212,132,244,132,212,132,244,132,245,132,245,132,21,133,245,132, + 245,132,21,133,22,133,22,133,54,133,86,133,86,141,54,133,118,149,118,157, + 243,148,73,66,166,49,134,49,101,41,102,41,3,134,41,133,166,41,134,41, + 134,49,166,49,166,41,7,167,49,141,199,49,135,41,198,16,230,16,197,16, + 164,16,165,16,165,16,133,8,166,8,107,82,81,140,114,148,3,81,140,130, + 114,148,146,148,3,179,148,129,211,148,3,211,156,131,178,148,179,148,211,156, + 3,243,156,142,211,156,211,156,243,156,243,156,244,156,243,156,19,157,20,165, + 243,156,20,165,243,156,243,156,244,156,243,156,6,211,156,133,243,156,52,165, + 8,58,162,16,228,32,4,227,24,142,195,24,195,24,227,24,227,24,195,24, + 130,16,133,49,5,82,196,65,228,73,33,41,5,74,196,65,66,49,3,98, + 49,3,66,49,152,98,49,66,49,66,49,98,49,98,49,66,49,66,41,66, + 41,66,49,34,41,66,41,1,41,33,41,66,41,66,41,99,49,131,49,164, + 57,196,65,228,73,5,74,5,82,5,82,5,74,3,5,82,144,5,74,5, + 74,197,73,196,65,196,65,164,57,131,57,99,57,99,49,98,49,99,49,66, + 49,67,49,66,49,34,41,66,41,4,66,49,130,34,41,66,49,3,34,41, + 151,34,49,34,41,66,49,66,49,99,49,163,57,196,65,228,73,5,74,5, + 74,6,82,70,90,38,82,38,90,6,90,6,82,5,82,228,73,196,65,196, + 65,132,57,99,49,38,74,142,3,129,12,99,4,44,99,140,12,91,44,99, + 44,99,45,99,44,99,45,99,44,99,44,99,45,99,45,99,44,91,44,99, + 4,45,99,138,77,99,45,99,45,99,44,99,45,99,45,99,44,99,45,99, + 44,99,44,91,3,45,99,137,44,99,44,91,77,99,45,99,77,99,45,99, + 44,99,45,99,45,91,7,45,99,129,77,91,4,45,99,130,77,99,45,99, + 4,77,99,135,45,99,44,91,45,99,45,91,77,99,45,91,45,91,3,45, + 99,131,45,91,45,91,45,99,10,45,91,129,45,99,8,45,91,129,77,91, + 3,45,91,146,77,91,12,91,204,82,204,82,12,91,45,99,175,99,49,116, + 114,124,146,124,147,124,179,132,179,132,180,132,179,132,180,132,180,132,179,132, + 4,180,132,145,179,124,147,124,147,124,82,116,175,99,12,83,105,74,198,49, + 37,33,227,24,195,16,195,24,228,24,166,41,171,74,143,107,113,132,3,178, + 140,138,211,148,179,140,114,132,49,124,81,124,49,132,17,124,17,116,114,124, + 212,124,5,212,132,145,212,124,212,124,212,108,213,84,21,93,182,173,81,132, + 73,66,138,82,106,74,138,82,106,74,106,74,138,74,138,74,106,74,138,74, + 7,106,74,131,105,66,106,74,106,66,3,73,66,130,74,66,73,58,5,41, + 58,129,9,58,3,9,50,143,41,50,232,49,204,74,74,66,74,66,41,66, + 74,66,73,66,41,66,74,66,9,66,9,58,232,57,200,57,200,57,3,167, + 49,146,135,41,135,49,102,41,135,41,102,41,135,41,102,41,37,33,163,16, + 196,24,134,41,167,49,167,49,200,49,200,49,232,57,200,57,232,57,4,233, + 57,130,201,57,201,49,4,168,49,135,136,41,104,41,103,41,103,41,71,41, + 70,33,38,33,3,6,33,162,38,33,38,33,71,33,71,41,71,33,71,33, + 103,41,104,33,168,41,169,41,234,49,42,58,107,66,140,66,46,91,78,91, + 111,99,209,107,17,116,50,116,180,132,53,141,119,149,216,165,25,166,57,166, + 220,182,29,191,191,215,223,207,255,223,255,239,255,247,255,247,6,255,255,3, + 255,247,7,255,255,4,255,247,130,255,255,255,247,3,255,255,129,255,247,7, + 255,255,155,255,247,255,255,85,165,175,107,139,74,171,82,204,82,138,74,134, + 41,8,58,74,66,41,66,74,66,106,66,138,74,171,82,204,90,236,90,236, + 90,237,90,171,82,114,124,21,141,245,132,212,124,212,124,180,124,3,212,124, + 133,213,124,245,124,245,124,245,132,245,132,5,245,124,141,21,133,21,133,54, + 133,21,125,118,149,150,157,211,140,105,74,167,57,166,49,101,33,102,41,102, + 41,4,134,41,136,134,49,167,41,166,49,167,49,166,49,167,49,167,49,166, + 49,4,167,49,170,231,16,230,16,197,16,164,16,164,8,165,16,134,8,134, + 8,74,66,49,140,114,148,49,140,81,140,81,140,114,140,114,148,178,148,179, + 148,179,148,211,156,179,148,211,156,211,148,146,148,146,148,179,148,211,156,211, + 156,211,148,146,148,178,148,243,156,244,164,243,156,20,157,243,156,244,164,243, + 156,244,164,243,156,243,156,244,156,5,243,156,173,244,156,243,156,20,165,85, + 173,203,82,130,16,228,24,195,24,227,24,227,24,195,24,227,24,227,24,195, + 24,227,24,195,24,130,16,36,41,70,90,131,57,5,74,66,49,196,65,228, + 73,66,49,98,49,66,49,98,49,66,41,98,49,98,49,66,49,98,49,98, + 49,99,49,131,49,131,49,164,57,164,57,196,65,229,65,5,74,5,74,37, + 82,38,82,3,37,82,137,5,74,229,73,196,73,196,65,164,65,131,57,131, + 57,99,57,98,49,4,66,49,165,34,41,66,49,66,41,66,49,66,41,67, + 49,66,49,66,41,66,41,67,49,66,49,98,49,99,49,98,49,99,57,131, + 57,131,57,164,65,196,65,229,73,5,74,5,82,70,82,38,90,38,82,38, + 82,37,82,5,82,229,81,229,73,196,65,164,65,131,57,99,49,98,49,66, + 49,66,41,3,34,41,133,34,49,34,41,34,41,2,41,132,49,105,3,129, + 12,99,5,44,99,131,45,99,44,99,44,99,3,45,99,131,44,99,45,99, + 44,99,6,45,99,134,44,99,45,99,45,99,44,99,44,99,45,99,3,44, + 99,11,45,99,129,44,99,7,45,99,129,77,99,8,45,99,134,45,91,45, + 91,45,99,45,99,44,91,45,99,3,45,91,136,45,99,45,99,45,91,45, + 99,45,99,45,91,45,91,45,99,4,45,91,131,45,99,45,91,45,99,6, + 45,91,129,44,91,6,45,91,138,77,91,45,91,45,99,236,90,236,82,236, + 82,12,91,110,99,208,107,49,116,3,147,124,130,179,132,179,124,5,179,132, + 161,211,132,179,132,179,132,179,124,179,124,115,124,240,107,45,91,41,50,101, + 33,195,24,130,8,130,16,163,16,227,24,4,25,4,25,195,16,37,25,73, + 66,175,107,49,132,178,140,210,140,211,148,178,140,81,132,81,124,49,124,49, + 124,16,116,17,108,147,116,3,212,132,3,212,124,138,212,116,212,84,245,60, + 245,28,244,100,150,173,207,115,73,74,106,74,138,82,3,138,74,132,106,74, + 138,74,138,74,137,74,3,106,74,135,138,74,106,74,105,74,106,74,106,66, + 106,66,74,66,4,73,66,4,41,58,140,41,50,41,58,9,58,9,50,8, + 50,9,50,9,50,232,49,237,82,74,66,106,74,106,66,3,74,66,152,74, + 74,41,66,41,66,232,57,200,49,200,57,199,49,167,49,135,49,135,41,135, + 49,135,41,134,41,135,41,135,41,134,41,69,33,195,16,195,16,134,49,167, + 49,199,49,200,57,200,57,5,232,57,185,200,57,200,57,168,49,136,49,135, + 41,103,41,71,33,104,33,71,33,71,33,103,33,136,41,169,41,10,58,42, + 58,140,74,172,74,237,82,143,99,208,107,49,124,50,124,17,124,17,116,50, + 124,146,132,212,140,86,149,151,165,215,165,248,173,57,174,57,174,122,182,155, + 182,155,182,220,190,252,190,29,191,126,199,158,207,158,207,191,215,191,215,255, + 223,190,215,223,223,158,215,191,223,223,231,223,231,223,239,223,239,223,231,223, + 239,255,239,255,239,5,255,247,130,255,255,255,247,4,255,255,4,255,247,15, + 255,255,153,86,165,78,99,171,74,171,74,203,82,138,74,134,49,199,49,73, + 66,74,66,41,58,74,66,106,74,171,82,236,82,236,90,236,90,13,91,204, + 82,240,107,21,133,245,132,212,124,180,124,179,124,3,180,124,150,212,124,244, + 124,212,124,180,124,212,124,212,124,213,124,213,124,245,124,212,124,245,124,22, + 133,86,133,54,133,151,149,150,157,20,149,138,74,166,57,166,49,101,41,102, + 41,6,134,41,135,134,49,167,41,166,41,166,49,134,49,166,49,166,49,3, + 167,49,132,167,41,198,8,230,16,197,16,3,165,16,137,133,8,133,0,10, + 66,48,132,81,140,49,140,81,140,81,140,113,140,3,146,148,129,179,148,4, + 211,148,130,178,148,178,148,3,211,156,131,211,148,178,148,178,148,3,243,156, + 130,20,165,243,156,3,244,156,6,243,156,129,244,164,4,20,165,133,85,173, + 45,99,163,16,228,24,227,32,5,227,24,177,228,24,195,24,195,24,130,16, + 228,32,71,90,131,57,37,82,98,49,163,57,70,82,131,49,131,57,164,57, + 164,57,196,65,196,65,229,73,229,73,5,74,5,74,5,82,37,82,5,82, + 5,82,5,74,229,73,228,73,196,73,196,65,163,57,132,57,131,57,131,49, + 98,49,99,49,66,49,66,49,66,41,66,49,66,41,66,49,66,41,66,41, + 66,49,66,41,66,49,66,49,67,49,3,99,49,151,131,57,164,57,164,65, + 196,65,196,65,229,73,229,73,5,74,6,82,6,82,37,82,6,82,5,82, + 5,82,229,73,228,73,196,65,164,65,132,57,131,57,99,57,99,49,98,49, + 5,66,49,141,34,49,34,41,34,41,33,41,34,41,34,41,66,41,98,49, + 98,57,131,57,197,65,5,82,130,57,136,3,129,12,99,3,44,99,140,45, + 99,44,99,44,99,45,99,12,99,45,99,44,99,44,99,45,99,44,99,45, + 99,44,99,5,45,99,131,44,99,45,99,45,99,3,44,99,134,45,99,44, + 99,45,99,45,99,44,99,44,99,3,45,99,129,44,99,4,45,99,129,77, + 99,3,45,99,129,44,99,4,45,99,133,44,99,77,99,45,99,77,99,44, + 99,3,45,99,131,77,99,45,91,45,91,3,45,99,3,45,91,139,45,99, + 45,91,45,91,44,91,45,91,45,99,45,91,45,99,45,91,45,91,44,91, + 18,45,91,140,77,91,77,91,12,91,203,82,236,90,13,91,110,99,240,107, + 82,116,146,124,147,124,147,124,5,179,132,157,211,132,179,132,179,132,179,124, + 179,132,147,124,180,124,208,107,236,82,135,41,162,16,98,8,130,8,162,16, + 163,16,195,24,228,24,4,33,4,25,195,24,162,16,195,16,73,66,142,107, + 48,132,178,140,211,148,146,140,81,132,3,49,124,131,241,115,49,108,147,124, + 5,212,132,137,212,124,180,84,244,44,245,20,245,4,86,125,182,165,77,107, + 105,74,3,138,74,143,106,74,138,74,138,74,106,74,138,74,106,74,105,74, + 106,74,106,74,138,74,106,74,106,74,106,66,106,74,106,66,3,73,66,131, + 41,58,73,58,73,66,5,41,58,4,9,50,182,232,49,9,50,175,107,9, + 58,139,74,106,66,106,66,106,74,41,66,42,66,73,66,41,66,232,57,232, + 57,199,49,200,49,167,49,167,49,135,49,167,49,167,49,135,49,135,49,135, + 41,134,41,69,41,163,16,163,16,135,49,102,41,102,41,134,49,135,49,103, + 41,103,41,135,41,71,33,103,33,136,41,42,58,75,66,173,74,46,91,46, + 91,144,99,82,124,114,124,179,132,212,140,20,149,21,149,53,157,53,157,85, + 165,3,85,157,151,150,165,150,165,183,165,248,173,57,174,89,174,122,174,122, + 182,155,182,219,182,219,182,252,182,61,199,252,182,29,191,61,191,61,191,93, + 199,61,199,93,199,29,199,93,207,93,199,4,126,207,132,158,215,191,223,158, + 215,191,231,5,223,231,131,255,247,255,247,255,239,6,255,247,6,255,255,130, + 255,247,255,247,15,255,255,180,21,149,204,74,171,74,171,74,204,90,138,74, + 167,49,199,57,232,57,74,66,41,58,74,66,107,74,171,74,204,82,12,91, + 236,82,12,91,236,82,45,91,240,99,115,116,180,124,180,124,179,124,179,124, + 147,116,180,116,180,124,180,124,212,116,180,124,212,116,212,124,213,124,245,124, + 245,132,21,133,21,125,54,133,119,141,119,141,151,149,150,165,20,149,171,82, + 166,49,166,49,102,41,69,41,102,41,102,41,3,134,41,142,134,49,135,49, + 166,49,135,41,167,49,167,49,135,49,166,49,166,41,166,49,166,49,167,41, + 231,16,230,16,4,165,16,158,133,8,133,0,233,57,240,131,81,140,17,132, + 49,140,81,140,114,148,114,140,146,148,146,148,179,148,179,148,211,148,211,148, + 211,156,179,148,211,148,211,156,211,156,243,156,211,156,211,156,243,156,243,156, + 19,157,243,156,244,156,244,156,7,243,156,173,244,156,243,156,244,156,243,156, + 20,157,20,165,244,156,53,165,174,115,227,24,227,24,228,24,228,24,195,32, + 227,24,227,24,195,24,227,24,227,24,195,24,130,16,195,24,39,90,163,65, + 37,82,99,49,131,49,70,90,38,82,38,82,37,82,5,82,5,82,5,74, + 229,73,196,65,196,65,163,65,131,57,131,57,99,57,99,57,98,49,98,49, + 66,49,3,66,41,129,66,49,6,66,41,140,99,49,131,57,164,57,99,49, + 164,57,196,65,164,65,196,65,229,73,229,73,5,74,5,82,3,38,82,143, + 6,82,5,82,5,82,229,73,196,73,196,65,164,65,131,57,99,57,99,57, + 66,49,99,49,98,49,67,49,67,49,4,66,49,132,98,49,66,49,66,49, + 67,49,3,66,49,142,99,49,164,57,229,73,70,82,135,98,232,114,42,123, + 107,139,172,147,205,155,237,155,46,172,110,180,4,114,127,3,134,44,99,44, + 99,12,91,44,99,44,99,44,91,3,44,99,129,44,91,4,45,99,135,44, + 99,45,99,45,99,44,99,44,99,45,99,45,99,3,44,99,5,45,99,130, + 44,99,44,99,3,45,99,129,44,99,4,45,99,131,44,99,45,99,45,91, + 5,45,99,132,77,99,77,99,45,99,77,99,3,45,99,137,45,91,77,99, + 45,91,45,91,45,99,45,99,77,99,45,99,45,99,4,45,91,132,45,99, + 45,99,45,91,45,91,4,45,99,8,45,91,135,45,99,45,91,45,91,44, + 91,45,91,45,91,13,91,5,45,91,183,77,91,45,91,45,91,236,82,204, + 82,236,90,45,99,143,99,17,116,82,124,146,124,147,124,147,124,179,124,179, + 132,179,132,179,124,179,132,179,132,211,132,179,132,179,132,147,124,179,132,50, + 116,203,74,4,25,98,8,98,16,130,16,130,16,162,16,195,16,195,24,228, + 24,4,25,4,33,195,24,130,16,130,8,163,16,199,41,45,91,114,132,179, + 148,146,140,81,132,81,124,81,132,49,124,17,116,50,116,180,132,212,132,244, + 132,3,212,132,139,179,108,180,60,212,12,212,4,180,12,20,133,183,165,171, + 82,138,74,138,74,138,82,4,138,74,133,105,74,106,74,138,74,138,74,106, + 74,3,105,74,137,106,74,105,74,106,74,73,66,74,66,74,66,74,58,73, + 66,74,66,5,41,58,212,9,50,9,50,232,41,233,49,232,49,232,49,74, + 58,204,74,139,74,204,82,171,82,106,74,139,74,106,74,106,74,74,66,9, + 66,232,57,200,57,200,49,167,49,135,49,167,49,135,41,102,41,135,41,135, + 49,167,49,200,49,9,58,41,58,9,50,9,50,13,83,45,91,110,91,207, + 107,175,107,49,124,114,132,147,132,85,157,182,173,215,173,215,173,215,181,182, + 173,150,173,182,173,182,173,150,173,118,165,150,165,150,165,182,165,215,173,215, + 165,248,165,56,166,90,174,187,182,187,182,154,174,187,174,252,182,252,182,252, + 190,219,182,28,191,219,182,155,174,252,190,155,174,252,190,219,182,220,182,28, + 191,220,182,252,190,29,191,252,190,28,191,28,191,252,190,3,93,207,129,126, + 207,5,158,215,136,191,223,223,231,223,231,255,239,255,239,223,239,255,247,255, + 247,4,255,239,132,255,247,255,255,255,255,255,247,4,255,255,130,255,247,255, + 247,3,255,255,129,255,247,11,255,255,150,148,132,82,132,139,74,171,74,203, + 82,138,74,166,49,199,57,232,57,106,66,73,66,74,66,106,74,139,74,204, + 82,236,90,236,90,12,91,237,82,13,91,82,132,147,124,4,212,124,132,180, + 116,180,116,212,124,213,124,3,245,124,130,21,125,21,133,4,54,133,140,86, + 133,87,141,87,133,119,141,182,165,53,149,203,82,198,57,167,49,102,41,69, + 41,102,41,5,134,41,160,167,41,166,41,134,49,135,49,135,49,167,49,167, + 49,134,49,166,49,166,49,167,49,198,16,230,16,197,16,132,8,132,8,165, + 8,165,16,133,8,168,49,240,131,81,140,16,132,17,132,49,140,81,140,114, + 140,146,148,146,148,178,148,179,148,179,148,7,211,156,18,243,156,161,244,156, + 243,156,19,165,243,156,52,165,16,132,37,33,195,24,228,32,228,32,227,24, + 228,24,227,24,196,24,227,24,195,24,195,24,163,24,130,16,6,82,228,73, + 5,74,163,57,98,49,131,57,163,57,131,57,98,49,98,49,66,49,66,49, + 66,41,66,41,6,66,49,157,98,49,98,49,99,49,5,74,4,74,131,57, + 132,57,195,65,196,65,228,65,228,65,70,82,37,82,102,82,168,98,167,98, + 38,82,168,98,102,90,167,106,196,65,228,65,196,65,163,65,131,57,131,57, + 131,49,98,49,98,49,3,66,49,129,66,41,4,66,49,5,98,49,130,66, + 49,99,49,3,98,49,149,67,49,67,49,66,49,67,49,99,49,98,49,67, + 49,99,49,237,131,176,188,176,180,176,188,47,180,111,180,139,147,14,156,237, + 155,144,172,111,180,176,180,8,147,105,3,4,44,99,3,45,99,138,44,99, + 12,99,45,99,44,99,44,99,45,99,44,99,45,99,44,99,44,99,4,45, + 99,131,44,99,45,99,44,99,3,45,99,132,44,99,45,99,44,99,44,99, + 4,45,99,129,45,91,15,45,99,146,77,99,45,91,44,99,77,99,77,99, + 45,99,44,91,45,99,45,99,44,91,45,91,77,99,45,99,45,99,45,91, + 45,99,45,91,45,91,3,45,99,5,45,91,130,44,91,45,99,17,45,91, + 137,77,91,45,91,236,82,204,82,12,91,45,99,175,99,49,116,114,124,3, + 147,124,132,179,124,179,124,179,132,179,132,3,180,132,135,179,132,179,124,147, + 124,147,132,207,107,232,49,98,8,3,130,16,136,162,16,162,16,195,24,195, + 24,228,24,4,25,228,24,163,16,3,130,16,140,163,16,73,58,16,124,114, + 140,81,132,16,124,240,123,16,124,16,116,17,116,82,116,212,132,3,244,132, + 138,212,132,212,132,147,92,147,44,180,12,180,4,180,28,52,141,150,165,105, + 74,3,138,74,144,137,74,106,74,138,74,138,74,106,74,138,74,106,74,138, + 74,105,74,106,74,106,74,138,74,105,74,106,74,106,74,105,66,3,73,66, + 130,73,58,73,58,5,41,58,4,9,50,199,232,49,232,41,106,58,13,83, + 236,90,12,91,204,82,171,82,139,74,106,74,138,74,106,74,74,66,9,58, + 168,49,200,49,9,66,74,66,106,66,204,82,13,91,77,99,207,107,114,132, + 243,148,85,165,118,165,150,173,183,173,182,173,182,173,150,173,118,173,118,173, + 118,165,85,165,85,157,52,157,85,157,85,157,150,165,151,165,183,165,215,165, + 215,165,57,174,57,174,89,174,122,174,219,182,186,182,186,182,187,182,154,182, + 122,174,154,174,186,182,122,174,187,182,122,174,122,174,187,182,90,166,122,174, + 187,182,219,182,155,174,155,182,154,182,252,190,187,182,4,29,191,142,61,199, + 187,182,29,191,93,207,29,191,61,199,126,207,126,207,125,207,93,199,191,223, + 158,215,158,215,191,223,3,223,231,133,255,239,255,239,223,239,255,239,255,247, + 3,255,239,129,255,247,3,255,255,130,255,247,255,247,3,255,255,130,255,247, + 255,247,9,255,255,129,255,247,5,255,255,161,20,149,143,107,138,74,171,74, + 203,82,138,74,167,49,232,57,8,58,74,66,41,58,74,66,106,74,139,74, + 236,82,236,90,236,90,12,91,236,82,236,82,146,140,54,141,22,133,54,133, + 22,133,21,133,21,125,245,124,245,124,21,125,22,133,22,133,22,125,4,54, + 133,3,86,133,139,87,141,86,133,86,141,183,165,53,149,12,91,166,49,166, + 49,134,41,69,41,101,41,8,134,41,155,166,49,134,41,166,49,167,49,134, + 49,166,49,167,49,167,49,198,16,230,16,197,16,164,8,132,8,164,16,165, + 8,101,0,103,41,207,131,81,140,16,132,49,132,49,132,81,140,114,140,114, + 148,146,148,178,148,3,179,148,6,211,156,130,243,156,211,156,14,243,156,129, + 244,156,5,243,156,183,20,165,113,140,134,41,195,24,228,24,228,32,228,24, + 227,24,227,24,195,24,227,24,195,24,227,24,195,24,130,16,198,65,36,82, + 4,74,196,65,66,49,98,49,66,49,99,49,131,57,131,49,131,49,131,57, + 131,57,196,65,164,57,163,57,5,74,164,57,229,65,228,65,5,74,38,82, + 164,57,5,74,70,82,135,90,135,98,70,90,70,90,167,98,38,82,135,98, + 69,90,4,74,102,90,196,65,196,65,228,73,131,57,163,57,4,66,49,132, + 98,49,66,49,98,49,66,49,3,99,49,133,98,49,99,49,67,49,99,49, + 98,49,4,66,49,156,98,49,98,49,66,49,66,49,98,57,99,57,98,49, + 99,49,131,57,164,65,66,49,99,49,98,49,66,49,33,41,43,99,208,180, + 111,172,176,180,233,130,107,139,234,114,140,139,107,131,111,164,143,188,176,188, + 236,171,196,3,5,44,99,139,45,99,45,99,44,99,44,99,45,99,44,99, + 45,99,44,99,44,99,45,99,44,99,3,45,99,137,44,99,45,99,45,99, + 44,99,45,99,44,99,77,99,45,99,45,99,3,44,99,130,45,99,77,99, + 3,45,99,131,44,99,45,99,77,99,3,45,99,161,45,91,77,99,45,99, + 45,91,45,99,44,99,45,99,77,99,45,99,45,99,77,99,45,99,77,99, + 45,99,45,91,77,99,45,99,45,91,45,91,45,99,45,91,77,99,45,99, + 45,91,45,99,45,91,45,91,77,99,45,99,45,91,45,91,45,99,45,99, + 3,45,91,129,45,99,5,45,91,137,77,91,45,91,45,91,45,99,45,91, + 45,91,45,99,45,91,77,91,3,45,91,154,77,91,13,83,236,82,204,82, + 13,91,45,91,208,107,49,116,114,124,147,124,147,124,179,124,147,124,179,124, + 179,132,179,132,212,132,180,132,180,132,212,132,179,124,179,132,115,124,110,99, + 37,25,98,8,4,130,16,166,162,16,195,24,195,24,4,25,4,25,228,24, + 163,16,130,16,130,16,162,16,130,16,37,33,236,90,77,107,45,99,236,90, + 236,90,45,91,143,107,240,107,82,124,212,132,245,132,245,140,212,132,244,132, + 212,124,146,76,115,28,147,12,180,4,179,44,52,149,84,157,40,66,138,82, + 138,74,138,82,5,138,74,3,106,74,129,138,74,4,106,74,131,106,66,106, + 66,105,66,3,73,66,130,41,58,73,58,3,41,58,143,9,50,41,58,9, + 58,9,50,232,49,8,50,232,49,199,41,204,74,45,91,78,99,77,99,13, + 99,12,99,203,82,3,139,74,138,74,66,232,57,139,74,16,124,146,148,179, + 148,243,156,20,157,52,165,20,165,3,53,165,3,52,165,189,244,156,211,156, + 211,148,20,149,85,157,150,165,247,173,24,174,88,174,154,182,154,182,186,182, + 219,190,154,174,186,182,251,190,154,174,251,190,122,174,121,174,89,174,154,174, + 219,182,122,174,122,174,89,166,154,174,219,182,154,174,219,182,154,174,122,174, + 89,174,154,174,122,174,219,182,155,174,187,182,187,182,252,190,220,182,220,182, + 219,182,252,190,252,182,61,199,252,182,61,199,28,191,94,207,61,207,126,207, + 93,207,93,199,158,215,93,207,126,215,93,199,158,215,190,223,190,223,3,223, + 231,138,255,239,223,231,223,239,255,247,255,239,223,239,255,239,255,247,255,255, + 255,255,5,255,247,131,255,255,255,255,255,247,3,255,255,131,255,247,255,255, + 255,247,10,255,255,137,53,149,13,91,139,74,171,74,203,82,171,82,167,49, + 231,57,8,58,3,74,66,131,106,66,139,74,204,82,3,236,90,147,13,91, + 204,82,50,116,151,141,119,141,87,141,54,133,86,133,54,133,21,125,21,125, + 54,133,54,133,22,133,54,133,87,133,87,133,86,133,86,133,3,119,141,139, + 151,141,119,141,119,141,183,165,20,149,45,99,134,49,166,49,134,49,69,33, + 102,41,6,134,41,135,166,41,134,41,134,49,134,41,166,49,135,41,134,49, + 3,167,49,158,197,16,198,16,197,16,132,8,132,8,165,16,165,8,101,0, + 71,33,175,123,81,140,16,132,16,132,48,132,49,132,81,140,114,140,146,148, + 146,148,178,148,179,148,178,148,179,148,210,148,211,148,211,148,211,156,211,156, + 243,156,211,156,3,243,156,129,211,156,6,243,156,129,211,156,7,243,156,140, + 20,157,243,156,20,165,178,148,232,49,163,24,228,24,228,32,227,24,228,24, + 228,24,195,24,3,227,24,181,195,24,130,16,133,41,101,98,228,65,4,74, + 98,49,130,49,131,57,228,65,69,82,37,74,135,98,70,82,196,65,102,82, + 37,82,70,82,200,106,134,90,199,98,102,90,102,90,70,82,228,65,163,57, + 196,65,228,65,228,73,163,65,164,57,5,74,131,57,98,49,66,49,34,41, + 66,41,33,41,33,33,66,41,99,49,66,49,98,49,99,49,98,49,98,49, + 99,49,99,49,98,49,99,49,99,49,98,49,98,49,3,99,49,162,98,49, + 99,49,99,49,163,65,196,65,163,65,66,49,228,65,228,73,163,65,69,82, + 69,82,101,90,69,90,69,82,102,90,98,57,98,49,99,49,98,49,33,41, + 39,66,241,180,176,180,208,188,111,180,144,180,111,180,143,180,111,180,111,172, + 45,164,13,156,139,139,174,3,8,44,99,138,45,99,44,99,44,99,45,99, + 44,99,45,99,45,99,44,99,45,99,44,99,3,45,99,133,44,99,45,99, + 44,99,77,99,44,99,3,45,99,136,45,91,77,99,77,99,45,99,44,99, + 45,99,45,99,44,99,6,45,99,129,77,99,3,45,99,133,77,99,77,99, + 45,99,45,99,77,99,4,45,99,135,77,99,45,99,45,91,45,99,77,99, + 45,91,45,99,6,45,91,133,44,91,45,99,77,99,45,99,77,99,17,45, + 91,142,77,91,45,91,45,91,77,91,45,91,45,91,12,83,236,82,236,90, + 45,91,78,91,240,107,82,124,114,124,3,147,124,129,179,124,4,179,132,136, + 211,132,211,132,179,132,211,132,180,132,81,116,236,82,130,8,5,130,16,165, + 163,16,195,16,195,24,4,25,4,25,228,24,163,24,162,16,130,16,130,16, + 162,16,162,16,4,25,69,33,4,25,227,16,227,16,37,25,232,49,139,74, + 45,83,240,107,114,124,212,132,244,132,244,132,179,116,114,60,115,20,180,12, + 180,4,179,68,182,165,113,140,41,66,138,82,138,82,3,138,74,3,106,74, + 138,138,74,138,74,105,74,106,74,106,74,105,74,106,74,106,74,73,66,106, + 74,6,73,66,142,41,58,9,58,41,58,41,58,9,50,9,58,9,50,232, + 41,232,41,8,50,200,41,139,66,204,74,207,115,3,175,115,137,142,107,77, + 99,13,99,204,90,171,82,106,66,16,132,211,156,211,156,3,243,156,206,244, + 156,243,156,244,156,52,157,85,157,150,165,24,166,88,182,186,190,27,191,92, + 199,125,199,93,199,93,199,60,199,27,191,251,190,27,191,27,199,251,190,186, + 182,219,182,219,190,187,182,154,182,154,174,122,174,122,174,154,182,154,174,187, + 182,154,174,89,166,89,166,122,166,122,174,122,174,57,166,122,174,248,157,154, + 174,154,174,251,182,219,182,122,174,187,182,154,174,28,191,220,182,219,182,219, + 182,252,190,61,191,28,191,28,191,61,199,93,207,61,199,126,207,93,199,125, + 207,61,199,93,199,93,207,126,215,158,215,126,215,126,215,158,215,158,223,223, + 231,191,231,223,231,223,231,255,239,255,247,255,239,223,239,5,255,247,147,255, + 255,255,255,255,247,255,247,255,255,255,255,255,247,255,247,255,255,255,247,255, + 247,255,255,255,255,255,247,255,255,255,247,255,247,255,255,255,247,4,255,255, + 156,180,140,211,140,171,74,139,74,171,82,139,74,232,57,232,57,41,66,106, + 66,74,66,106,66,74,66,170,74,204,82,236,82,12,83,13,91,13,91,204, + 74,240,107,184,149,184,141,152,141,87,133,86,133,87,133,86,133,3,54,133, + 148,87,133,119,141,119,133,119,133,120,141,87,133,119,141,120,141,152,141,152, + 141,87,133,86,141,183,165,85,157,142,107,166,49,167,49,134,49,69,33,101, + 41,3,102,41,152,134,41,134,41,134,49,135,41,166,41,134,49,134,49,166, + 49,166,49,134,41,166,41,166,49,199,49,197,16,230,24,197,16,164,16,132, + 16,165,16,165,8,101,0,230,24,175,115,81,140,3,16,132,137,49,132,81, + 140,81,140,114,140,146,148,179,148,179,148,178,148,179,148,5,211,148,3,211, + 156,134,243,156,211,156,243,156,243,156,211,156,211,156,4,243,156,129,211,156, + 7,243,156,167,20,157,244,156,243,156,73,66,195,24,228,32,228,32,227,24, + 227,24,228,24,227,32,227,24,227,24,228,24,227,24,130,16,37,33,102,98, + 196,65,69,82,66,41,196,65,70,90,228,73,135,90,102,90,102,90,37,82, + 163,57,228,65,4,74,196,65,196,65,163,57,195,65,130,57,130,49,98,49, + 99,49,3,98,49,141,66,41,66,41,98,49,131,57,163,57,196,65,5,74, + 38,82,135,98,168,106,42,123,69,98,66,49,3,99,49,174,66,49,98,49, + 99,49,99,49,98,49,98,49,99,49,67,49,99,49,99,49,98,49,99,49, + 66,49,196,65,69,82,69,90,36,82,134,90,4,82,228,65,37,82,228,73, + 163,65,4,74,4,74,195,65,163,57,163,65,131,57,98,49,98,49,66,49, + 66,49,132,49,172,131,106,131,10,115,200,106,134,90,69,82,228,65,131,57, + 98,41,33,41,1,33,1,33,113,3,129,12,99,3,44,99,129,45,99,5, + 44,99,130,45,99,45,99,3,44,99,131,45,99,45,99,44,99,3,45,99, + 129,44,99,3,45,99,131,44,99,45,99,44,99,8,45,99,131,44,99,45, + 99,45,91,6,45,99,135,44,99,45,99,77,99,45,99,77,99,45,91,77, + 99,3,45,91,137,45,99,45,99,45,91,45,99,77,99,45,91,45,99,45, + 91,45,99,5,45,91,131,44,91,45,91,45,99,3,45,91,129,45,99,21, + 45,91,135,236,82,203,82,236,90,45,91,110,99,17,108,82,124,4,147,124, + 141,179,124,179,132,179,124,179,132,179,132,211,132,211,132,180,132,179,132,211, + 132,16,116,106,66,97,8,5,130,16,135,163,16,195,24,228,24,228,24,4, + 33,196,24,162,16,6,130,16,151,98,16,98,8,98,8,97,8,97,8,163, + 16,228,16,69,25,41,50,78,83,17,108,179,124,212,132,147,116,114,52,147, + 12,147,12,147,4,211,84,215,173,174,115,73,74,138,82,3,138,74,147,106, + 74,105,74,137,74,138,74,106,74,105,74,138,74,106,74,105,74,105,74,106, + 74,106,74,105,74,106,66,73,74,73,66,73,66,41,58,73,58,5,41,58, + 148,41,50,41,50,9,50,233,41,232,49,232,49,200,41,106,58,204,74,16, + 124,240,123,16,124,207,115,207,123,174,115,77,99,12,91,236,90,240,123,49, + 132,3,146,148,138,178,148,178,148,179,148,243,148,247,165,186,182,92,199,190, + 215,190,215,190,223,3,125,207,146,92,199,60,199,251,190,251,190,219,190,251, + 190,187,182,219,190,186,182,219,182,219,182,187,182,122,174,219,182,187,182,186, + 182,121,174,186,182,3,187,182,130,154,174,122,174,3,154,174,135,57,166,89, + 166,122,174,122,174,219,182,219,182,89,166,3,187,182,146,28,191,28,191,187, + 182,61,191,252,190,252,182,219,182,252,190,252,190,252,182,252,182,29,191,61, + 199,61,199,29,191,93,207,126,207,93,207,3,158,215,136,190,223,190,223,191, + 223,223,231,191,223,223,231,255,239,223,239,5,255,247,130,255,255,255,247,7, + 255,255,133,255,247,255,255,255,247,255,247,255,255,10,255,247,138,255,255,147, + 132,81,124,171,74,139,74,106,74,167,49,232,57,232,57,41,58,4,106,66, + 150,139,74,204,82,236,82,237,82,13,91,13,91,236,82,143,99,152,149,185, + 141,152,141,119,133,87,133,86,133,54,133,22,125,22,133,22,133,54,133,86, + 133,87,133,87,133,3,86,133,140,119,133,87,133,119,133,86,133,87,133,183, + 165,53,149,175,107,134,49,167,49,166,49,69,33,3,102,41,3,134,41,164, + 135,41,134,41,166,49,134,41,166,41,134,49,135,49,134,41,166,49,167,49, + 167,49,197,16,230,16,229,16,164,8,132,8,165,8,165,8,133,8,198,16, + 110,115,49,140,16,132,240,131,16,132,49,132,81,140,81,140,114,140,146,148, + 146,148,179,148,178,148,178,148,211,156,179,148,3,211,148,3,211,156,143,243, + 156,211,156,211,156,243,156,243,156,211,156,243,156,211,156,243,156,211,156,243, + 156,211,156,243,156,211,156,211,156,5,243,156,136,244,164,171,82,227,24,228, + 24,228,24,227,24,228,24,228,24,5,227,24,146,162,16,195,24,135,98,196, + 73,102,90,66,49,196,57,102,90,98,49,228,65,196,65,98,49,130,57,99, + 49,99,49,98,49,98,49,66,49,5,98,49,146,99,49,98,49,66,49,5, + 74,9,115,74,123,171,139,204,147,13,164,13,164,46,172,111,180,175,180,176, + 180,209,196,139,155,98,57,99,49,3,98,49,133,99,49,99,49,98,49,99, + 57,98,49,6,99,49,146,98,49,131,49,163,65,196,65,195,65,163,65,163, + 65,131,57,131,57,98,57,98,49,98,49,66,49,98,49,98,49,66,49,98, + 49,99,49,5,98,49,139,33,41,1,33,1,41,1,41,33,41,99,49,131, + 57,164,65,229,73,38,90,103,98,134,3,132,44,99,12,91,44,99,12,99, + 4,45,99,129,44,99,3,45,99,134,44,99,45,99,44,99,44,99,45,99, + 44,99,3,45,99,129,44,99,4,45,99,129,44,99,3,45,99,130,44,99, + 44,99,4,45,99,139,77,99,44,99,45,99,45,91,45,99,45,99,45,91, + 45,99,77,91,45,99,77,99,3,45,99,130,45,91,77,91,3,45,99,132, + 77,99,45,99,45,99,45,91,3,45,99,5,45,91,131,45,99,45,91,45, + 99,14,45,91,131,44,91,45,91,44,91,3,45,91,129,77,91,4,45,91, + 137,77,91,45,91,236,82,203,82,13,91,45,99,142,107,49,116,114,124,4, + 147,124,3,179,124,138,179,132,179,132,211,132,180,132,212,124,212,132,179,132, + 175,107,8,50,65,8,5,130,16,140,163,16,195,24,228,24,228,24,4,33, + 195,24,162,16,130,16,130,8,98,8,98,8,98,16,3,98,8,149,97,8, + 65,8,33,8,130,8,37,25,102,25,227,16,37,25,171,58,50,108,147,124, + 115,108,114,36,147,12,179,12,180,12,179,100,24,182,235,90,138,74,138,82, + 5,138,74,133,105,74,106,74,138,74,105,74,106,74,3,105,74,192,106,74, + 106,74,105,74,105,66,73,66,73,66,41,66,41,58,73,58,73,58,41,58, + 9,50,41,50,41,58,233,57,9,50,232,49,232,49,233,49,232,41,200,41, + 139,66,45,83,16,124,240,123,240,123,16,124,240,123,207,123,142,107,45,99, + 77,99,81,140,207,123,16,132,81,140,114,140,179,148,114,140,146,132,20,141, + 56,166,251,182,60,199,125,215,157,215,125,207,92,207,93,207,92,199,28,191, + 92,207,60,199,251,190,28,199,251,190,251,190,219,190,186,182,219,190,219,190, + 251,190,186,182,154,182,3,219,182,176,154,174,219,182,252,182,122,174,187,174, + 186,174,186,182,154,174,219,182,122,166,154,174,89,166,155,174,89,166,89,166, + 122,174,219,182,187,174,155,174,219,182,220,182,187,182,219,182,155,174,220,182, + 29,191,252,190,187,182,29,191,61,191,28,191,29,191,29,199,61,199,125,207, + 94,207,126,215,126,207,158,215,126,215,158,215,190,223,223,231,191,223,158,223, + 223,231,255,239,223,239,5,255,247,4,255,255,131,255,247,255,255,255,255,4, + 255,247,130,255,255,255,247,3,255,239,129,255,247,4,255,255,163,255,247,255, + 247,255,255,255,255,147,140,175,107,106,74,171,74,106,66,167,41,232,57,8, + 58,41,58,106,66,74,66,106,66,106,66,138,66,172,82,236,82,236,82,13, + 91,13,83,237,82,13,83,21,141,87,141,86,133,54,133,22,125,21,125,21, + 125,245,124,245,124,21,125,3,54,133,132,86,133,86,133,87,133,86,133,3, + 119,133,142,87,133,87,141,183,165,53,149,207,115,134,49,167,49,166,49,69, + 33,101,41,101,41,102,41,134,41,102,41,3,134,41,157,134,49,134,41,134, + 41,166,41,134,41,134,49,135,41,167,49,167,49,229,24,230,16,230,16,165, + 8,132,8,164,16,165,8,133,8,165,8,77,107,17,132,240,131,240,123,16, + 132,16,132,49,132,81,140,114,140,146,140,146,148,5,178,148,131,179,148,178, + 148,211,148,5,211,156,3,243,156,138,211,156,243,156,243,156,211,156,211,156, + 243,156,211,156,243,156,211,156,211,156,5,243,156,131,20,165,45,91,195,24, + 6,228,24,145,227,24,228,32,228,24,228,32,162,16,131,16,103,98,195,73, + 102,90,98,57,163,57,134,90,98,49,98,49,99,49,130,49,130,49,9,98, + 49,150,130,49,99,49,99,49,66,49,70,74,176,172,208,188,208,188,78,172, + 46,164,237,147,172,147,140,147,176,180,176,188,240,188,13,164,130,65,98,49, + 99,49,99,49,98,49,3,99,49,3,98,49,3,99,49,6,98,49,129,99, + 49,5,98,49,131,99,49,98,49,99,49,3,98,49,146,66,49,99,49,98, + 49,98,49,99,49,66,49,196,65,167,98,200,106,42,123,107,139,204,155,205, + 155,14,164,79,172,79,180,111,188,143,188,140,3,129,12,91,4,44,99,130, + 44,91,12,99,4,44,99,140,45,99,44,91,45,99,44,99,45,99,45,99, + 44,99,45,99,44,99,44,99,45,99,44,99,5,45,99,129,44,99,6,45, + 99,140,44,99,45,99,45,99,44,99,45,99,44,91,45,91,45,99,45,99, + 45,91,77,99,45,91,5,45,99,133,77,99,45,99,77,99,45,99,44,99, + 5,45,91,136,45,99,45,99,45,91,45,91,77,91,45,91,45,91,45,99, + 4,45,91,129,45,99,16,45,91,130,77,91,77,91,3,45,91,143,12,83, + 204,82,204,82,12,91,45,99,175,99,49,116,114,124,115,116,147,124,179,124, + 179,132,179,124,179,124,179,132,3,180,132,135,212,132,180,132,212,132,147,124, + 77,91,69,33,98,8,5,130,16,135,163,16,195,24,227,24,228,24,228,24, + 163,16,98,16,4,97,8,145,65,8,97,8,97,8,98,8,130,8,227,16, + 37,25,172,66,111,99,208,107,77,83,199,41,163,8,204,66,208,91,17,76, + 115,20,3,213,12,133,244,124,24,182,40,74,138,74,138,82,3,138,74,138, + 105,74,105,74,138,74,138,74,106,74,106,74,105,74,106,74,105,74,105,74, + 3,106,74,4,73,66,172,41,66,41,66,41,58,41,58,41,50,41,58,9, + 50,9,58,9,50,232,49,233,41,232,49,232,49,8,50,204,74,110,99,114, + 140,114,132,81,132,81,132,114,140,146,140,82,132,17,124,208,115,77,107,175, + 115,16,132,81,132,146,140,146,140,178,140,178,140,53,149,56,166,251,190,92, + 199,189,223,157,215,125,207,93,207,92,207,93,207,93,207,3,28,199,172,251, + 190,251,190,219,190,28,199,251,190,251,190,187,182,186,182,154,182,89,174,252, + 190,154,174,219,182,154,174,122,174,89,166,219,182,122,174,154,174,154,174,122, + 174,57,166,186,174,121,166,89,166,154,182,122,166,154,174,219,182,122,174,122, + 174,252,190,155,182,219,182,28,191,154,174,219,182,252,198,220,182,28,191,29, + 199,61,191,252,182,29,191,3,61,199,141,93,199,126,207,61,199,158,215,126, + 215,158,223,94,199,190,223,191,231,191,223,191,223,190,223,223,231,5,255,247, + 131,255,255,255,247,255,247,5,255,255,5,255,247,130,255,239,223,239,4,255, + 247,132,255,255,255,255,255,247,255,247,3,255,255,155,212,140,237,82,171,74, + 139,74,139,74,9,58,167,49,41,66,73,66,106,66,74,66,106,66,138,66, + 139,74,171,74,236,82,204,82,13,91,236,90,237,82,204,74,82,116,86,133, + 22,125,21,125,245,124,22,125,3,54,133,136,87,133,87,141,87,141,86,133, + 86,133,119,141,87,141,86,133,3,54,133,143,21,133,245,132,215,165,85,149, + 16,116,134,49,199,57,134,49,69,33,69,33,102,41,101,41,101,41,134,41, + 102,41,3,134,41,136,166,49,166,49,166,41,166,41,166,49,134,49,166,49, + 166,49,3,230,16,146,164,16,132,16,132,8,165,8,101,8,133,8,236,90, + 16,132,240,123,239,123,240,123,16,132,49,132,49,132,81,140,114,140,146,140, + 146,148,4,178,148,132,210,148,179,148,211,148,211,148,5,211,156,133,243,156, + 211,156,243,156,211,156,211,148,4,211,156,3,243,156,130,211,156,211,156,3, + 243,156,151,20,157,207,115,4,25,228,24,228,24,227,24,227,24,228,24,227, + 32,227,24,228,24,228,24,227,24,195,24,98,16,71,82,4,74,70,82,163, + 65,98,49,134,90,163,57,130,49,4,131,49,135,131,57,195,65,4,74,195, + 65,195,57,4,74,195,65,3,98,49,148,130,49,98,49,196,57,111,156,240, + 188,208,188,46,172,237,155,140,147,46,164,237,155,144,180,240,188,208,188,143, + 180,4,90,66,49,99,49,98,49,98,49,3,99,49,131,98,49,98,49,99, + 49,3,98,49,129,130,57,3,98,49,132,99,49,98,49,99,49,99,49,5, + 98,49,129,99,49,7,98,49,143,99,49,98,49,34,49,71,74,209,172,208, + 188,209,188,110,180,46,164,237,163,107,139,139,147,46,148,143,180,143,180,118, + 3,5,44,99,129,45,99,4,44,99,131,45,99,45,99,44,99,4,45,99, + 133,44,99,45,99,44,99,45,99,44,99,9,45,99,131,44,99,45,99,44, + 99,4,45,99,131,45,91,45,99,77,99,4,45,99,129,45,91,7,45,99, + 130,45,91,44,91,3,45,91,134,45,99,45,99,45,91,45,91,44,91,45, + 99,8,45,91,129,45,99,23,45,91,153,12,83,204,82,236,90,12,91,77, + 99,175,99,49,116,114,124,147,124,147,124,179,132,179,132,180,132,179,132,179, + 132,180,132,211,132,180,132,179,132,180,132,211,132,114,124,12,83,4,25,98, + 8,5,130,16,135,163,16,195,24,228,24,228,24,227,24,162,16,97,8,3, + 65,8,153,97,8,98,8,163,16,37,25,167,41,74,58,204,74,13,83,176, + 99,82,116,180,132,82,124,77,91,102,33,37,17,237,50,241,35,180,12,245, + 12,21,13,21,29,52,141,247,181,8,66,138,82,5,138,74,140,105,74,137, + 74,106,74,105,74,106,74,105,74,106,74,105,74,106,74,106,74,105,74,106, + 74,5,73,66,143,41,58,41,66,41,58,41,58,9,58,9,50,9,58,9, + 50,232,49,232,49,233,49,232,49,232,41,172,66,143,107,3,146,140,216,179, + 148,179,140,179,140,114,132,82,132,240,123,142,115,207,115,16,132,114,140,81, + 140,114,140,114,132,178,140,53,149,89,166,251,190,125,207,125,207,158,215,125, + 207,125,215,125,207,60,199,92,207,27,191,251,190,27,191,28,191,251,190,251, + 190,219,182,251,190,219,190,186,182,154,174,219,190,121,174,219,182,154,174,154, + 174,154,182,154,182,89,174,251,190,122,174,122,174,154,174,122,174,89,166,154, + 174,89,166,122,174,122,174,154,182,154,182,187,174,219,190,187,182,187,182,219, + 182,219,182,154,174,219,182,155,174,187,182,219,182,220,182,187,182,252,190,29, + 191,252,190,28,191,28,191,61,199,61,191,93,207,61,199,158,215,93,207,93, + 207,158,215,190,223,190,223,191,223,191,223,159,223,223,231,5,255,247,129,255, + 255,5,255,247,129,255,255,6,255,247,129,255,255,4,255,247,4,255,255,158, + 255,247,255,255,255,247,255,255,119,157,204,74,171,74,171,74,139,74,9,58, + 41,58,200,49,73,66,106,66,74,66,106,66,106,58,138,66,139,74,204,82, + 236,82,236,82,236,90,236,82,172,74,240,107,119,141,54,133,54,133,22,133, + 4,54,133,153,86,133,53,133,21,133,245,132,180,116,115,116,82,108,17,100, + 209,91,208,91,143,83,111,75,45,75,248,173,20,149,16,124,134,49,199,57, + 166,49,69,33,69,33,102,41,102,41,134,41,102,41,3,134,41,159,166,41, + 134,41,134,41,166,49,134,49,166,49,166,49,134,41,167,49,6,17,7,17, + 230,16,164,16,132,8,164,8,165,8,133,8,101,0,204,90,240,131,240,123, + 208,123,240,123,240,123,17,132,49,132,81,140,114,140,146,140,146,148,146,148, + 3,178,148,131,179,148,178,148,210,148,9,211,156,3,211,148,133,211,156,211, + 156,211,148,211,156,211,156,3,211,148,137,211,156,243,156,243,156,19,157,48, + 132,37,33,228,24,228,32,228,24,4,228,32,153,227,24,228,24,228,32,195, + 24,98,16,6,74,37,90,70,82,228,73,98,49,101,82,196,65,98,49,130, + 49,130,57,98,49,196,65,134,90,69,82,37,82,69,82,101,90,134,98,101, + 90,163,65,3,99,49,143,98,49,131,49,237,139,208,188,176,180,111,180,111, + 172,46,172,13,156,236,147,171,139,138,131,74,123,232,106,195,65,3,98,49, + 3,99,49,4,98,49,167,99,49,98,49,99,49,99,49,98,49,98,49,99, + 49,98,49,66,49,98,49,99,49,98,49,98,49,99,49,66,49,98,49,98, + 49,66,49,131,57,131,57,195,65,163,65,195,57,195,65,228,73,98,57,98, + 49,164,57,47,148,176,180,176,180,236,171,172,139,42,139,139,139,172,147,205, + 147,208,188,176,188,150,3,135,44,91,44,99,44,99,12,99,44,99,77,99, + 45,99,3,44,99,132,45,99,44,99,77,99,45,99,8,44,99,130,45,99, + 44,99,6,45,99,129,45,91,7,45,99,139,77,99,44,99,45,99,45,91, + 45,99,45,99,45,91,45,99,77,99,45,99,45,91,3,45,99,132,77,99, + 45,99,44,99,45,99,3,45,91,132,45,99,44,91,77,99,77,99,6,45, + 91,135,77,91,45,99,45,91,45,91,77,91,45,91,45,99,16,45,91,129, + 77,91,3,45,91,153,236,82,203,82,236,82,45,91,78,99,208,107,82,116, + 114,124,146,124,147,124,179,124,179,124,180,132,179,132,179,124,179,124,211,132, + 180,132,179,132,179,132,211,132,49,116,171,74,195,16,98,8,5,130,16,164, + 163,16,195,24,228,24,228,24,195,24,162,16,97,8,97,8,65,8,65,8, + 98,8,195,8,135,33,106,58,13,75,142,99,208,115,208,115,49,116,179,124, + 244,132,244,140,17,116,171,58,233,1,13,3,50,12,213,12,245,12,245,4, + 54,37,85,157,84,157,41,74,138,82,138,82,4,138,74,133,106,74,138,74, + 106,74,105,74,106,74,3,105,74,132,73,74,106,74,105,74,73,74,3,73, + 66,132,41,66,73,66,41,58,41,58,3,9,58,3,9,50,231,232,49,232, + 49,233,41,232,41,74,58,240,115,175,107,146,140,147,140,179,140,179,140,147, + 140,179,140,82,124,82,124,175,115,110,115,175,115,49,132,146,140,114,140,146, + 140,146,140,178,140,53,149,121,174,27,191,157,215,125,215,125,207,125,207,125, + 215,93,207,60,199,60,199,28,199,27,191,251,190,251,182,27,191,27,191,219, + 182,251,182,219,190,251,190,219,182,219,182,186,182,219,182,121,174,154,182,154, + 174,154,174,122,174,154,182,187,182,89,174,122,174,122,174,24,158,154,174,122, + 174,187,182,187,174,154,174,252,190,219,182,187,182,122,174,154,174,251,182,187, + 182,187,182,61,199,219,182,187,182,220,182,28,191,187,182,252,190,28,191,187, + 182,252,182,29,191,29,199,93,199,94,207,126,207,158,215,93,199,125,207,190, + 223,190,223,191,231,158,223,190,223,191,231,222,231,223,231,255,247,223,239,255, + 239,223,239,11,255,247,130,255,239,255,239,3,255,247,7,255,255,141,255,247, + 255,247,255,255,184,157,13,91,171,74,138,74,138,74,41,58,73,66,41,58, + 232,49,138,66,4,106,66,150,106,74,203,82,204,82,236,82,204,82,204,82, + 172,74,110,91,21,133,212,124,180,116,147,116,83,108,50,100,17,100,241,91, + 240,83,143,83,143,83,143,75,78,75,46,75,4,78,75,139,46,75,46,75, + 205,66,215,173,52,149,114,132,134,49,199,57,166,49,101,41,69,33,3,102, + 41,130,134,41,102,41,5,134,41,3,134,49,154,134,41,134,41,167,49,6, + 25,6,25,230,16,164,8,132,8,164,16,133,8,133,8,68,0,172,82,240, + 131,240,123,207,123,208,123,208,123,16,132,49,132,49,132,113,140,114,140,146, + 140,146,140,146,148,5,178,148,132,211,148,179,148,211,148,211,148,3,211,156, + 3,211,148,129,211,156,3,211,148,3,211,156,139,211,148,211,148,243,156,243, + 156,211,148,211,156,243,156,113,140,101,33,195,24,228,32,3,228,24,175,228, + 32,227,24,228,32,227,24,228,24,195,24,98,16,165,57,69,90,4,74,37, + 82,66,49,69,74,37,82,98,49,130,49,130,49,98,49,195,57,69,90,4, + 74,195,65,163,57,228,73,163,65,195,65,131,57,98,49,99,49,98,49,98, + 49,131,49,135,90,9,115,167,98,102,82,36,74,196,65,163,57,98,49,66, + 41,33,33,33,33,33,41,66,41,98,49,130,57,3,98,49,133,99,49,98, + 49,98,49,99,49,99,49,3,98,49,164,99,49,99,49,98,49,99,49,131, + 57,4,74,130,57,131,57,163,57,195,65,4,74,37,82,4,82,37,82,167, + 98,4,74,134,90,166,98,101,98,134,98,101,90,101,90,130,57,98,49,99, + 49,173,123,241,188,241,188,208,188,208,188,144,180,143,180,143,180,78,172,13, + 164,204,147,101,3,129,12,99,9,44,99,133,12,91,45,99,44,99,45,99, + 44,99,5,45,99,129,44,99,13,45,99,134,44,99,45,91,44,91,45,99, + 44,99,45,91,4,45,99,132,77,99,45,91,45,99,45,91,4,45,99,3, + 77,99,134,45,99,77,99,45,99,45,99,45,91,45,99,6,45,91,129,45, + 99,20,45,91,129,77,91,7,45,91,138,236,82,235,82,12,91,45,99,142, + 99,241,107,114,124,146,124,147,124,147,124,4,179,132,138,179,124,211,132,179, + 132,179,132,179,124,179,124,212,132,240,115,106,66,162,16,6,130,16,164,163, + 16,195,24,228,24,228,24,195,24,130,16,98,8,130,8,130,16,98,8,195, + 8,70,25,139,58,45,83,143,99,240,107,17,116,240,115,50,116,179,124,212, + 132,245,132,179,124,50,76,176,3,209,3,82,4,180,4,213,12,22,5,244, + 60,117,165,113,132,73,74,138,82,170,82,3,138,74,132,105,74,105,74,106, + 74,138,74,3,105,74,129,106,74,4,105,74,5,73,66,132,41,66,41,66, + 41,58,9,58,4,9,50,170,232,49,232,41,233,41,232,41,232,41,138,58, + 175,107,143,99,179,140,211,140,211,148,147,140,179,140,212,140,49,124,17,116, + 175,115,110,107,239,123,49,132,114,140,114,140,146,140,114,132,211,140,85,149, + 186,182,93,207,125,215,92,207,92,207,92,199,125,207,93,207,92,199,92,199, + 28,191,28,191,251,190,27,191,251,182,60,199,3,219,182,187,187,182,154,174, + 122,174,154,174,154,182,187,182,186,182,187,182,154,182,186,182,89,174,121,166, + 154,174,122,174,89,166,154,174,187,182,89,174,154,174,122,174,28,191,187,182, + 154,182,155,182,155,182,187,182,154,174,154,182,187,190,251,190,252,190,155,174, + 252,190,252,182,219,182,155,174,219,174,252,190,29,191,93,199,252,190,61,199, + 28,199,93,207,93,199,126,207,61,199,126,207,158,215,126,215,158,223,158,223, + 190,223,191,223,223,239,223,231,255,247,255,247,223,239,7,255,247,130,255,239, + 223,239,9,255,247,5,255,255,141,255,247,255,255,255,255,21,149,240,115,139, + 74,139,74,138,74,138,74,9,58,138,74,41,58,73,58,3,73,66,169,42, + 58,106,66,138,74,171,82,204,90,204,82,204,82,171,74,139,74,208,99,208, + 91,208,91,208,99,208,99,240,107,17,108,49,124,82,124,17,116,241,107,82, + 116,147,124,147,132,179,132,180,132,148,124,115,116,50,108,18,100,112,75,182, + 165,85,149,179,140,134,49,199,57,166,49,69,41,69,33,101,41,102,41,102, + 41,6,134,41,132,166,41,166,49,134,41,134,41,3,166,49,147,6,25,230, + 16,230,16,165,8,132,8,164,8,132,8,132,8,68,0,139,74,240,123,240, + 123,175,123,207,123,16,132,146,140,179,148,147,140,81,140,3,114,140,137,146, + 148,178,148,146,148,146,148,178,148,178,148,211,148,210,148,178,148,9,211,148, + 131,211,156,211,148,211,156,3,211,148,138,211,156,211,148,211,156,243,156,211, + 148,243,156,179,148,231,49,195,24,228,32,3,228,24,152,227,24,228,32,228, + 24,228,24,228,32,227,24,130,16,69,41,103,98,227,65,102,90,98,49,228, + 65,102,90,98,49,130,57,130,57,130,49,98,49,98,49,99,49,99,49,130, + 49,98,57,3,98,49,150,130,49,98,49,131,49,130,49,98,49,66,49,98, + 49,130,57,164,65,228,65,70,82,135,90,168,106,9,123,74,131,171,139,14, + 156,106,139,130,65,99,49,99,49,131,49,3,98,49,130,99,49,99,49,4, + 98,49,3,99,49,161,98,49,163,57,167,98,134,98,167,106,102,90,102,90, + 101,90,199,106,4,74,36,82,69,82,163,65,228,73,163,57,98,49,130,49, + 98,49,130,49,98,49,99,49,66,49,103,82,41,115,168,106,103,90,69,82, + 228,65,163,57,130,57,33,41,34,41,33,41,100,3,8,44,99,131,45,99, + 44,99,44,99,3,45,99,129,44,99,18,45,99,132,45,91,45,99,45,99, + 44,99,6,45,99,130,45,91,45,91,3,45,99,3,45,91,3,45,99,133, + 45,91,45,99,45,99,45,91,44,91,7,45,91,129,45,99,6,45,91,130, + 45,99,45,99,4,45,91,129,77,91,16,45,91,138,236,82,236,82,236,90, + 77,99,175,99,17,116,114,124,147,124,147,124,147,132,4,179,132,131,211,124, + 179,124,179,132,4,179,124,134,208,107,41,50,130,8,130,16,130,16,98,8, + 3,130,16,175,195,24,195,24,227,24,195,24,163,24,130,16,98,8,130,16, + 130,16,130,8,69,33,41,58,13,83,78,83,143,91,176,99,208,107,208,107, + 82,116,180,124,244,132,244,132,212,124,147,76,82,12,50,4,115,12,245,12, + 21,13,54,5,244,84,215,173,207,115,105,74,170,82,138,82,138,82,138,74, + 137,74,105,74,106,74,105,74,106,74,106,74,105,74,105,74,106,74,3,105, + 74,130,73,74,73,74,3,73,66,129,41,66,3,41,58,129,9,58,4,9, + 50,129,232,49,4,232,41,180,233,49,204,74,81,124,114,140,179,140,114,140, + 146,140,244,148,179,132,82,124,17,124,142,115,142,115,240,123,81,140,114,140, + 178,140,114,140,114,132,179,140,85,149,154,174,60,199,93,207,157,215,125,207, + 125,207,28,191,92,199,27,191,28,191,251,190,219,182,251,190,251,190,219,182, + 251,182,219,182,187,182,219,182,219,182,187,182,187,182,186,174,121,166,219,182, + 122,174,154,174,219,182,186,182,186,182,121,174,3,122,174,4,154,174,172,122, + 174,219,190,121,174,122,174,154,174,187,182,121,174,155,174,154,174,187,182,187, + 182,252,182,219,182,219,182,187,174,155,174,123,174,220,182,187,182,61,199,61, + 199,28,191,28,191,29,191,125,207,29,191,93,207,61,199,126,215,126,215,158, + 223,158,215,158,223,191,223,190,223,191,231,223,239,255,247,223,239,255,239,255, + 239,255,247,255,239,255,247,4,255,239,132,255,247,223,239,255,239,255,239,3, + 255,247,131,255,255,255,247,255,247,5,255,255,142,255,247,255,255,255,255,147, + 132,175,107,139,74,139,74,170,74,138,74,41,58,106,66,73,66,41,58,73, + 66,3,41,58,131,74,66,106,74,139,74,3,171,82,136,139,74,107,74,49, + 132,211,148,179,148,211,148,211,148,243,156,3,244,156,152,179,140,115,124,147, + 132,212,132,212,132,180,132,180,124,147,116,83,116,18,100,242,91,80,75,118, + 157,85,157,178,132,134,49,199,57,166,49,101,41,69,33,101,41,101,41,102, + 41,102,41,6,134,41,152,135,49,135,49,134,41,166,49,166,41,166,49,6, + 25,230,16,230,16,165,8,132,8,132,16,132,8,133,8,68,0,107,66,240, + 123,240,123,143,115,207,123,16,132,179,148,20,157,179,148,4,114,140,135,146, + 140,146,140,146,148,146,148,178,148,178,148,179,148,3,178,148,9,211,148,129, + 211,156,4,211,148,137,211,156,211,148,211,156,211,156,211,148,211,156,211,156, + 73,66,162,16,3,228,24,129,228,32,3,228,24,174,228,32,227,24,228,24, + 130,16,4,33,103,98,195,65,134,90,130,57,163,57,134,90,130,57,130,57, + 130,49,131,49,130,49,131,49,131,49,98,57,131,57,131,57,131,49,98,49, + 98,49,99,49,98,49,130,49,98,49,98,49,5,74,172,139,46,164,46,164, + 14,164,143,180,46,172,208,180,46,172,14,164,208,188,241,196,110,180,163,73, + 98,49,130,49,99,49,3,98,49,129,131,49,4,99,49,141,98,49,99,49, + 98,57,98,57,98,49,98,49,163,57,163,65,195,65,163,57,130,57,131,49, + 130,57,5,98,49,133,66,49,98,49,98,49,66,49,66,49,4,98,49,138, + 99,49,99,57,131,57,163,65,196,73,228,73,5,74,37,82,37,82,69,90, + 178,3,132,12,99,44,99,45,99,44,91,4,44,99,129,45,99,3,44,99, + 131,45,99,44,99,44,99,4,45,99,130,44,99,44,99,3,45,99,129,44, + 99,8,45,99,142,45,91,45,99,44,99,45,99,45,99,45,91,45,99,45, + 99,45,91,44,99,45,99,45,91,45,91,77,99,4,45,99,137,77,99,77, + 99,45,91,45,91,45,99,45,91,45,99,45,91,44,99,5,45,91,129,45, + 99,3,45,91,129,44,91,3,45,91,129,45,99,13,45,91,129,77,91,6, + 45,91,139,77,91,12,91,236,74,236,82,12,91,45,99,207,107,49,116,114, + 124,147,124,147,124,3,179,124,192,179,132,179,124,180,132,179,132,179,124,147, + 124,179,124,147,116,147,124,175,99,232,49,130,8,130,16,98,8,98,8,130, + 16,98,16,130,16,162,16,163,16,163,16,162,16,130,16,130,8,98,16,130, + 16,130,16,163,16,8,58,13,99,142,99,143,99,143,91,175,99,208,107,208, + 107,82,116,179,124,244,132,244,132,212,116,147,68,50,4,82,4,180,4,22, + 13,54,29,21,37,20,133,247,173,45,99,138,82,170,82,138,74,106,74,105, + 74,105,74,138,74,105,74,105,74,138,74,138,74,105,74,73,74,3,105,74, + 138,106,74,73,66,105,66,73,66,41,66,41,66,73,66,73,58,41,58,41, + 58,3,9,58,180,9,50,9,50,232,49,232,41,9,50,232,41,200,41,204, + 74,45,83,82,132,81,140,114,140,208,115,50,124,53,157,244,148,81,132,16, + 124,142,107,110,107,240,123,81,140,114,140,146,140,81,132,146,140,211,140,117, + 149,186,174,60,191,157,215,125,207,125,207,60,199,28,191,28,191,219,182,252, + 190,219,182,251,182,219,190,219,182,219,182,154,182,186,182,219,190,219,182,251, + 190,219,182,154,174,154,174,122,174,3,154,174,178,154,182,121,174,219,182,89, + 166,186,182,89,174,89,166,122,174,89,166,122,174,154,182,122,174,122,174,89, + 174,121,174,122,174,186,182,154,174,28,199,252,190,154,174,154,182,187,182,252, + 190,154,174,154,174,187,174,123,174,187,182,252,182,61,191,61,191,28,191,28, + 191,29,191,125,207,29,191,93,207,93,207,158,215,126,207,126,215,190,223,158, + 215,190,223,190,223,223,231,255,239,255,247,223,239,4,255,239,132,255,247,255, + 239,255,239,223,239,7,255,239,132,255,247,255,255,255,247,255,247,5,255,255, + 158,255,239,223,239,255,255,244,140,82,132,203,82,106,66,106,66,139,74,74, + 66,106,66,73,66,73,66,41,66,41,58,9,58,41,58,41,66,73,66,138, + 74,171,82,171,82,204,82,171,82,107,74,16,124,20,165,243,156,243,156,243, + 148,4,244,156,152,147,132,82,124,115,124,180,132,180,124,180,124,179,124,147, + 124,115,116,18,100,242,91,112,75,86,157,85,157,211,140,166,49,199,57,199, + 49,101,41,69,33,102,41,101,33,101,41,102,41,4,134,41,158,166,41,134, + 41,134,41,166,49,167,49,134,41,166,49,166,41,38,25,230,16,230,16,165, + 8,132,8,132,8,133,8,132,8,68,0,42,58,208,123,240,123,142,115,175, + 115,239,123,146,140,212,148,147,148,82,140,81,132,114,140,114,140,3,146,140, + 3,146,148,140,179,148,178,148,179,148,178,148,211,148,210,148,211,148,179,148, + 211,148,179,148,211,148,210,148,5,211,148,129,210,148,6,211,148,131,243,156, + 204,82,130,16,3,228,24,149,228,32,228,24,228,24,228,32,4,33,228,32, + 228,32,163,24,195,24,135,98,195,65,135,90,163,57,98,49,166,98,163,65, + 130,49,130,57,130,57,99,49,99,49,5,98,49,159,130,49,163,57,131,49, + 98,57,99,49,131,49,98,49,228,65,144,164,17,197,78,172,75,131,14,156, + 10,123,111,164,237,155,74,123,111,172,241,188,207,188,36,90,66,41,131,49, + 131,49,99,57,99,49,131,49,131,57,99,57,131,49,131,57,5,98,49,161, + 99,49,99,49,98,49,66,49,98,49,66,49,66,49,98,49,66,41,66,41, + 66,49,98,49,99,49,131,57,163,65,228,65,228,73,37,82,38,90,70,90, + 102,90,103,90,103,90,102,90,102,90,70,90,70,82,5,82,4,74,228,73, + 195,65,163,65,131,57,150,3,3,44,99,129,45,99,3,44,99,3,45,99, + 135,44,99,44,99,45,99,45,99,12,91,45,99,44,99,4,45,99,132,44, + 99,44,99,45,99,44,99,4,45,99,142,77,99,44,99,45,99,44,91,45, + 99,44,99,45,99,44,99,45,99,44,91,45,99,45,99,45,91,44,99,4, + 45,99,132,45,91,44,99,45,91,45,99,3,45,91,141,77,99,45,91,45, + 99,45,91,45,99,44,91,45,99,45,99,45,91,77,99,45,91,45,91,45, + 99,9,45,91,132,77,91,45,91,45,91,77,91,10,45,91,130,77,91,77, + 91,3,45,91,140,12,83,236,82,236,90,13,91,78,99,240,107,82,116,114, + 124,147,124,147,124,147,132,179,132,7,179,124,3,147,124,135,175,99,41,50, + 130,8,98,8,130,16,130,16,130,8,6,130,16,138,130,8,98,8,130,8, + 130,16,98,8,37,25,12,91,239,123,16,124,207,107,3,175,99,157,208,99, + 82,116,179,124,212,132,213,132,179,108,114,60,241,3,115,4,212,28,245,68, + 245,92,212,100,52,149,150,165,235,90,170,82,170,82,138,82,138,74,138,74, + 138,82,138,74,106,74,137,74,105,74,106,74,105,74,106,74,4,105,74,4, + 73,66,130,41,66,41,66,3,41,58,129,8,50,4,9,50,149,232,49,232, + 41,232,41,233,49,167,41,110,91,143,99,114,132,81,132,81,140,13,99,78, + 83,52,149,21,149,179,140,16,124,142,115,110,107,16,124,114,140,178,140,3, + 146,140,138,243,140,150,149,186,174,92,199,158,215,125,207,92,199,92,207,92, + 199,251,182,3,27,191,130,251,190,219,190,3,186,182,180,218,182,154,174,219, + 182,219,182,154,174,121,174,154,174,186,174,154,174,122,174,121,174,186,182,57, + 166,122,174,122,174,186,174,121,174,89,174,89,166,89,166,187,182,154,174,57, + 166,219,182,122,174,89,166,154,182,122,174,122,174,187,182,122,174,219,182,24, + 158,154,174,154,174,123,166,220,182,155,174,122,166,155,182,122,166,29,191,252, + 182,219,182,252,182,252,190,28,191,61,199,61,199,126,207,93,207,126,215,3, + 158,215,140,191,223,158,223,191,223,255,239,255,239,223,231,255,239,223,239,255, + 247,255,239,223,231,223,239,3,255,239,135,223,239,255,239,255,239,223,239,255, + 247,255,239,255,247,7,255,255,136,255,247,223,239,255,239,255,255,53,149,175, + 107,106,66,106,66,3,74,66,130,42,66,41,66,3,41,58,150,9,58,8, + 58,8,58,74,66,138,74,171,82,171,82,203,82,204,82,139,74,142,107,244, + 156,243,156,211,148,243,156,211,148,244,156,244,156,244,148,147,132,82,124,115, + 124,3,180,132,146,148,124,147,124,115,116,50,100,242,91,80,75,86,157,150, + 157,211,140,167,49,199,57,199,57,101,41,69,33,69,33,102,33,102,41,102, + 41,9,134,41,135,166,49,167,49,167,49,38,25,6,17,230,16,197,16,3, + 132,8,142,133,0,68,0,201,49,176,115,240,123,142,115,143,115,175,115,240, + 123,17,132,49,132,49,132,81,132,81,140,4,114,140,3,146,140,3,178,148, + 3,179,148,129,211,148,4,179,148,145,178,148,210,148,179,148,211,148,178,148, + 211,148,211,148,179,148,211,148,211,148,179,148,179,148,211,148,243,156,110,107, + 130,8,228,24,4,227,24,180,228,24,4,33,228,32,228,24,228,24,195,24, + 163,16,71,90,228,81,102,90,228,65,98,41,166,90,228,73,130,57,131,57, + 130,57,131,49,195,57,4,74,227,65,102,90,69,90,101,90,134,98,69,90, + 4,82,99,49,130,49,131,49,98,49,131,49,237,139,17,197,176,188,13,164, + 111,172,143,180,176,180,209,188,143,180,208,188,240,188,241,196,231,122,66,41, + 98,57,98,57,98,49,99,49,66,49,66,49,4,98,49,129,99,49,3,131, + 49,152,131,57,163,57,163,65,196,65,228,73,4,74,5,82,37,82,70,90, + 102,90,103,90,103,98,103,98,103,90,102,98,37,82,5,82,5,74,196,73, + 164,65,131,57,99,57,98,49,66,49,4,33,41,133,34,41,65,49,66,49, + 98,49,130,57,115,3,9,44,99,135,45,99,44,99,45,99,44,99,45,99, + 45,99,44,99,8,45,99,131,44,99,45,99,44,99,3,45,99,133,44,99, + 45,99,45,99,44,99,44,99,7,45,99,131,44,91,45,91,45,91,4,45, + 99,129,45,91,3,45,99,130,45,91,45,91,6,45,99,6,45,91,130,44, + 91,44,91,4,45,91,129,45,99,18,45,91,138,77,91,45,91,45,91,236, + 82,203,82,236,90,13,91,110,99,241,107,82,124,3,147,124,131,179,124,179, + 132,179,132,3,179,124,137,147,124,147,124,179,124,147,124,147,124,147,116,17, + 108,236,74,134,33,5,163,16,133,162,16,163,16,130,16,162,16,163,16,4, + 130,16,161,65,8,232,49,142,107,49,132,48,124,240,115,208,107,175,107,143, + 99,176,91,82,116,180,124,212,124,212,132,147,108,49,44,241,3,50,20,180, + 68,212,108,212,116,179,124,118,157,85,157,235,90,138,82,170,82,138,82,138, + 82,138,74,105,74,106,74,106,74,8,105,74,129,73,74,3,73,66,3,41, + 66,186,41,58,41,58,9,58,9,50,9,58,9,50,9,50,8,50,8,50, + 232,41,232,49,232,49,167,41,171,74,143,107,114,132,49,132,49,132,203,90, + 106,66,85,165,244,140,53,149,179,140,77,107,110,107,81,132,146,140,211,148, + 146,140,146,140,178,140,211,140,182,157,218,182,92,199,125,207,125,207,92,207, + 92,199,60,199,27,191,60,199,251,190,251,190,219,182,186,182,186,182,218,182, + 186,182,154,182,187,182,219,182,154,174,154,174,89,174,154,174,154,174,3,122, + 174,146,154,174,154,182,186,182,57,166,122,174,121,174,186,182,89,174,56,166, + 187,182,187,182,122,174,154,174,121,174,154,182,154,182,122,174,122,174,3,187, + 182,165,122,174,154,174,89,166,187,174,155,174,155,174,154,174,155,174,122,174, + 187,182,252,182,252,190,252,182,220,182,29,191,29,191,61,199,61,199,93,199, + 125,215,93,199,126,207,126,207,158,215,190,223,190,223,158,223,223,239,255,239, + 223,231,255,239,223,239,255,239,223,239,255,239,255,239,223,239,4,255,239,129, + 223,239,3,255,247,4,255,255,143,255,247,255,255,255,247,255,239,223,231,223, + 239,255,255,87,157,78,99,138,74,74,66,106,66,74,66,41,66,73,66,3, + 41,58,4,9,58,130,41,66,106,74,3,171,82,136,203,82,171,74,13,91, + 178,148,244,156,211,148,243,148,243,156,3,244,156,143,147,132,82,124,115,124, + 180,132,180,132,180,124,148,124,147,124,115,116,18,100,242,91,112,75,21,149, + 118,157,85,149,3,199,57,131,134,41,69,33,101,41,3,102,41,5,134,41, + 139,166,49,166,49,167,49,134,41,134,49,166,41,167,49,38,25,6,25,6, + 25,196,16,4,132,8,141,68,0,168,41,143,115,241,123,110,107,143,115,175, + 115,175,115,240,123,240,123,49,132,81,132,82,140,5,114,140,132,146,140,146, + 140,146,148,146,148,4,178,148,5,179,148,5,178,148,133,211,148,178,148,211, + 148,178,148,210,148,3,179,148,131,243,156,240,123,130,8,3,227,24,190,228, + 32,228,32,228,24,228,32,228,24,228,32,228,32,195,24,130,16,6,74,37, + 90,69,82,4,74,65,49,102,82,4,74,130,57,131,57,131,57,98,49,195, + 65,101,90,166,98,166,98,134,98,133,98,166,98,5,82,195,65,98,49,131, + 49,130,49,98,49,98,49,107,123,241,188,176,180,143,180,111,172,78,172,13, + 164,204,147,171,139,74,123,232,106,200,106,4,82,66,41,98,49,130,49,131, + 49,163,57,164,65,196,65,196,65,228,73,5,74,5,74,37,82,37,90,70, + 82,70,82,3,70,90,158,69,90,70,90,37,82,5,82,228,73,196,73,164, + 65,163,57,131,57,98,57,66,41,34,41,33,41,33,41,33,49,65,41,65, + 49,98,49,131,57,196,65,229,73,37,82,70,90,135,106,200,106,9,123,42, + 131,139,147,172,147,13,164,169,3,7,44,99,129,45,99,6,44,99,3,45, + 99,130,44,99,44,99,3,45,99,135,44,99,45,99,45,99,44,99,44,99, + 45,99,77,99,4,45,99,131,44,99,44,99,77,99,3,45,99,129,44,91, + 3,45,99,138,45,91,45,91,45,99,45,91,45,91,45,99,45,99,45,91, + 45,91,77,99,3,45,99,129,45,91,3,45,99,131,45,91,45,91,45,99, + 11,45,91,129,45,99,18,45,91,137,77,91,45,91,236,82,203,82,236,90, + 45,99,143,99,17,116,82,124,3,147,124,191,179,124,179,124,179,132,179,124, + 179,132,179,132,147,124,179,124,179,124,147,124,147,116,147,116,82,108,176,91, + 204,74,167,33,228,24,195,16,195,24,195,24,195,16,163,16,163,16,162,16, + 162,16,130,16,130,16,98,16,97,8,130,8,12,83,16,124,114,140,49,124, + 240,115,208,107,176,107,111,99,143,91,50,108,147,124,180,124,180,124,115,92, + 17,28,209,3,17,36,115,84,212,124,212,124,179,124,85,149,243,148,170,90, + 170,82,138,82,138,74,138,74,138,82,105,74,137,74,106,74,137,74,4,105, + 74,129,73,74,3,105,74,137,73,74,73,66,73,66,41,66,41,66,73,66, + 41,58,41,58,9,58,5,9,50,163,232,49,232,41,232,49,232,41,199,33, + 236,74,208,107,114,132,114,140,49,132,73,74,74,66,117,165,243,148,244,148, + 151,165,240,123,77,107,114,140,147,140,178,140,178,148,146,140,179,140,243,140, + 182,149,251,190,27,191,93,207,125,207,93,207,92,199,60,199,251,182,27,199, + 4,219,190,153,219,182,154,182,186,190,186,182,219,182,186,182,153,174,89,166, + 186,182,154,174,121,174,154,182,154,182,89,166,89,174,154,182,121,174,89,166, + 122,174,154,174,154,182,154,182,121,174,219,182,186,182,3,89,174,159,186,182, + 121,174,89,166,24,166,89,166,154,182,154,174,24,158,154,174,57,158,187,174, + 122,166,90,166,219,182,122,174,219,182,90,166,220,182,187,174,28,191,252,182, + 28,191,61,191,28,199,252,190,61,199,126,207,93,207,93,199,61,199,126,207, + 3,158,215,130,223,231,223,239,3,255,239,135,223,239,223,231,255,239,255,247, + 223,231,255,239,223,231,3,255,239,153,255,247,255,247,255,239,223,239,255,247, + 255,255,255,247,255,255,255,255,223,231,223,231,223,239,223,239,255,255,54,149, + 142,107,171,74,74,66,106,66,41,66,73,66,41,58,9,58,9,58,9,66, + 3,9,58,132,232,57,9,58,74,74,139,74,4,171,82,161,236,82,113,140, + 243,156,243,156,211,148,244,156,243,156,244,156,244,156,147,140,82,116,115,124, + 180,132,180,132,148,124,179,124,147,124,115,116,18,100,242,83,145,67,244,140, + 85,157,20,149,232,65,231,57,199,57,134,41,69,33,69,41,101,41,102,41, + 102,41,4,134,41,140,134,49,134,41,167,49,167,49,166,49,166,49,134,49, + 167,49,70,33,6,25,6,25,196,16,4,132,8,141,68,0,104,33,111,107, + 240,123,110,107,143,115,143,115,207,115,208,123,240,123,49,132,81,132,81,140, + 6,114,140,131,146,140,146,148,146,148,3,178,148,150,179,148,178,148,179,148, + 179,148,178,148,179,148,178,148,178,148,179,148,179,148,210,148,178,148,178,148, + 211,148,178,148,178,148,179,148,178,148,178,148,211,148,81,132,195,16,3,227, + 24,157,228,24,228,24,227,24,228,32,227,32,228,24,228,32,195,24,130,16, + 198,65,102,98,4,74,37,82,98,49,37,74,37,82,130,57,130,57,131,57, + 131,57,130,57,195,65,228,65,195,65,162,57,163,57,163,57,131,49,131,49, + 3,130,49,162,98,49,66,41,38,74,232,106,102,90,37,82,4,74,228,65, + 195,57,195,65,195,65,196,65,228,65,228,73,5,82,38,82,70,90,102,90, + 70,90,102,90,103,90,70,90,70,90,70,82,37,82,5,82,4,74,196,65, + 164,65,163,57,131,57,98,49,98,49,66,49,5,33,41,152,65,41,66,49, + 130,49,164,65,229,73,70,82,135,98,200,106,9,123,106,131,139,147,205,155, + 13,164,78,172,78,180,143,180,175,188,176,188,208,196,208,196,208,188,208,196, + 208,196,208,188,184,3,133,44,99,45,99,45,99,44,99,45,99,3,44,99, + 129,45,99,3,44,99,145,45,99,45,99,44,99,45,99,45,99,44,99,45, + 99,44,99,44,99,45,99,45,99,44,99,44,99,45,99,45,99,44,99,44, + 99,4,45,99,130,44,99,45,91,3,45,99,147,77,99,45,91,45,99,45, + 91,45,99,45,99,44,99,45,99,45,91,45,99,45,91,77,99,45,99,45, + 99,77,99,45,91,45,99,45,91,45,91,4,45,99,132,45,91,45,91,45, + 99,45,91,3,45,99,130,45,91,45,99,6,45,91,130,77,91,45,91,3, + 77,91,9,45,91,4,77,91,143,12,91,236,82,236,82,12,91,45,91,175, + 99,49,116,114,124,147,124,179,132,147,124,147,124,179,124,179,124,147,124,3, + 179,124,3,147,124,139,115,116,115,116,114,108,82,108,240,99,204,74,167,41, + 228,24,195,16,163,16,162,16,4,130,16,167,130,8,98,8,130,8,228,24, + 41,58,207,107,114,132,114,140,16,124,240,115,240,115,175,107,111,91,143,91, + 50,108,83,116,115,124,114,116,82,76,17,20,208,19,241,51,115,92,180,124, + 180,124,179,124,85,157,113,132,137,82,170,82,138,82,138,82,105,74,106,74, + 105,74,105,74,138,74,105,74,138,74,5,105,74,131,106,74,73,74,73,74, + 3,73,66,137,41,58,41,58,41,66,9,66,41,58,9,58,40,50,8,50, + 8,50,5,232,49,190,167,41,45,83,142,107,146,140,17,132,239,123,166,49, + 172,74,86,165,211,140,179,140,113,132,81,132,85,157,179,140,211,148,179,140, + 146,140,178,140,179,140,244,140,24,166,251,182,125,207,93,207,60,191,92,199, + 27,191,28,191,251,190,251,190,219,190,219,190,219,182,218,190,219,182,186,182, + 187,182,154,182,218,182,186,182,89,166,219,190,122,174,122,174,57,166,89,174, + 89,166,154,182,121,174,154,182,121,174,121,174,154,182,89,166,122,174,154,182, + 89,174,56,166,122,174,24,166,57,166,3,24,166,167,248,157,24,166,24,158, + 89,166,89,166,154,174,90,166,154,174,57,158,122,174,122,174,154,174,155,174, + 122,166,122,166,155,174,155,174,220,182,187,182,187,174,29,191,220,182,29,191, + 61,191,29,191,61,199,126,207,61,199,93,199,126,207,158,215,191,231,158,215, + 191,223,223,239,191,231,223,239,223,239,223,231,4,255,239,132,223,231,223,239, + 255,239,223,239,4,255,239,146,255,247,255,247,255,255,255,255,255,239,158,223, + 223,231,255,239,255,239,255,247,51,116,179,148,203,82,41,58,106,66,74,66, + 41,58,41,66,3,41,58,169,9,58,9,58,232,57,233,57,9,58,74,66, + 138,74,171,82,172,82,171,82,171,82,172,82,16,132,243,156,243,156,243,148, + 243,148,244,148,244,156,244,156,147,132,82,116,114,124,180,124,180,132,180,124, + 147,124,147,124,115,116,18,100,242,91,145,75,244,132,118,157,20,141,40,66, + 231,57,231,57,134,49,69,33,69,33,3,102,41,144,134,41,134,49,134,49, + 134,41,167,49,166,41,102,33,37,33,69,33,102,41,102,41,134,41,70,33, + 7,25,6,25,197,16,4,132,8,144,100,0,39,25,78,107,208,123,78,107, + 110,107,143,115,175,115,207,115,240,123,16,124,49,132,49,132,81,132,82,140, + 82,140,3,114,140,131,146,148,146,148,146,140,3,146,148,4,178,148,133,210, + 148,178,148,178,148,179,148,179,148,5,178,148,129,179,148,3,178,148,152,179, + 148,211,148,146,148,37,25,195,24,228,24,228,24,227,24,227,24,4,33,227, + 24,228,24,228,32,228,24,227,24,130,16,101,41,167,106,195,65,102,90,130, + 49,228,65,102,90,130,57,4,130,49,3,98,49,137,130,49,98,49,131,49, + 131,49,131,57,163,57,163,57,195,65,228,65,3,228,73,168,5,74,37,82, + 70,82,70,90,102,90,102,90,70,90,70,90,38,82,37,82,5,82,228,73, + 196,65,163,65,131,57,130,49,98,49,66,41,66,41,34,41,65,41,66,49, + 98,49,99,57,131,57,164,65,228,65,5,74,38,90,135,98,232,114,41,123, + 106,139,204,147,13,156,78,172,111,180,176,188,176,196,208,196,4,241,196,133, + 17,205,241,196,241,196,240,196,208,196,4,208,188,6,176,188,110,3,7,44, + 99,139,45,99,44,99,44,99,45,99,44,99,45,99,45,99,44,99,45,99, + 45,99,44,99,12,45,99,138,45,91,45,99,45,99,44,99,45,99,77,99, + 44,99,77,99,45,99,45,91,4,45,99,129,77,99,3,45,99,135,45,91, + 45,99,45,91,45,99,45,91,45,91,44,91,3,45,91,130,45,99,45,99, + 20,45,91,129,77,91,6,45,91,146,77,91,45,91,45,91,77,91,45,91, + 77,99,45,91,12,83,236,82,236,90,12,91,77,91,208,107,50,116,114,124, + 147,124,147,132,147,124,3,179,124,129,147,124,3,179,124,143,147,124,147,124, + 147,116,147,116,115,116,82,108,82,108,17,108,78,91,73,58,101,33,228,24, + 228,24,195,16,227,24,3,228,24,162,37,25,69,33,199,49,106,66,13,91, + 240,115,81,132,81,124,16,116,240,107,208,115,175,107,110,91,176,91,18,108, + 82,116,82,116,82,100,50,60,17,20,209,27,241,59,82,100,147,124,147,124, + 179,124,150,165,16,124,105,74,170,82,138,82,138,82,105,74,138,74,12,105, + 74,130,73,74,73,66,4,41,66,132,41,58,41,58,9,50,9,58,3,9, + 50,129,232,49,3,232,41,167,232,49,168,41,236,82,175,115,146,140,81,140, + 142,115,37,41,45,91,53,157,179,140,179,140,146,140,81,132,179,148,243,148, + 179,148,211,148,178,140,146,140,211,140,20,141,89,174,60,199,92,207,158,215, + 60,199,93,207,251,190,60,199,251,190,251,182,251,190,219,182,187,182,219,182, + 186,182,186,182,154,182,3,186,182,172,154,182,186,174,121,166,154,174,121,174, + 154,174,121,174,154,182,89,174,57,166,89,174,89,174,154,182,56,166,57,166, + 57,166,122,174,89,166,89,174,89,174,248,157,247,165,24,158,24,158,24,166, + 57,166,248,157,57,166,24,158,57,166,24,158,24,166,89,166,57,158,57,166, + 122,166,89,166,122,166,90,166,123,166,122,174,155,174,155,174,220,182,3,252, + 182,174,61,191,29,191,61,191,61,199,93,207,61,199,93,199,126,207,126,207, + 158,215,190,223,190,231,191,231,223,231,191,231,223,231,223,239,223,231,255,239, + 223,231,255,239,223,239,223,239,255,239,223,239,255,247,223,239,255,239,255,247, + 255,247,255,255,255,255,255,239,191,231,255,239,223,231,255,239,255,247,184,157, + 114,132,139,74,41,58,106,74,74,66,41,66,41,58,4,9,58,134,8,58, + 233,57,9,58,9,58,42,66,138,74,5,171,82,130,175,115,244,156,4,243, + 148,190,244,156,244,148,147,140,82,124,114,124,147,132,180,124,180,124,147,124, + 147,124,83,116,50,100,242,91,145,75,180,132,150,157,20,141,73,66,232,57, + 231,57,166,49,69,41,37,33,102,41,102,41,134,49,228,24,4,17,70,17, + 69,33,167,41,102,41,236,66,146,108,244,108,138,58,142,107,204,74,229,16, + 39,33,39,25,197,16,164,8,132,16,132,8,132,8,100,0,6,25,45,99, + 240,123,78,99,110,107,142,107,175,115,175,123,240,123,16,124,49,132,49,132, + 81,132,81,140,81,140,4,114,140,137,146,148,114,140,146,140,146,148,146,140, + 146,148,146,148,179,148,179,148,5,178,148,129,179,148,9,178,148,132,179,148, + 211,148,135,41,195,24,5,228,24,148,228,32,228,24,4,33,228,32,228,32, + 130,16,36,33,200,114,195,65,134,90,163,57,196,65,134,98,163,65,163,57, + 196,57,196,65,228,65,228,65,4,74,3,37,82,129,70,82,5,102,90,163, + 70,90,38,90,37,82,5,74,4,74,228,73,196,65,195,65,195,65,163,57, + 130,57,98,49,66,41,66,41,98,49,98,49,131,57,163,57,228,65,5,74, + 37,82,102,98,167,106,200,114,41,123,106,131,139,139,204,147,13,164,78,172, + 111,172,144,180,176,188,208,188,209,196,6,241,196,131,240,196,208,188,240,188, + 12,208,188,130,208,196,208,196,4,241,196,1,208,196,167,3,129,12,91,8, + 44,99,134,45,99,44,99,45,99,45,99,44,99,44,99,5,45,99,129,44, + 99,4,45,99,129,44,99,5,45,99,129,45,91,3,45,99,129,44,99,5, + 45,99,133,77,99,45,91,45,91,45,99,45,91,4,45,99,3,45,91,129, + 45,99,4,45,91,132,45,99,45,99,45,91,45,99,6,45,91,132,45,99, + 45,91,45,91,77,91,3,45,91,130,77,91,45,99,5,45,91,132,77,91, + 45,91,77,91,77,91,5,45,91,146,77,91,45,91,77,91,236,82,236,82, + 236,90,13,91,78,99,240,107,82,116,115,124,147,124,147,132,147,124,179,132, + 179,124,179,124,147,124,3,179,124,175,147,124,147,124,115,116,147,116,114,108, + 82,108,50,108,17,100,110,91,203,74,41,58,199,49,167,41,199,41,199,49, + 8,58,40,58,73,66,106,66,171,74,236,82,77,91,142,107,208,107,16,108, + 240,107,239,107,240,107,207,107,175,107,111,99,176,99,241,107,50,108,50,108, + 17,84,18,44,17,28,208,27,241,59,82,100,147,116,147,116,212,132,150,165, + 174,115,105,74,3,138,82,3,105,74,132,106,74,105,74,105,74,138,74,6, + 105,74,131,73,74,73,66,73,66,3,41,66,3,41,58,147,233,57,9,58, + 9,58,9,50,9,50,232,49,232,49,232,41,232,49,232,41,200,41,78,91, + 240,115,81,132,114,140,142,115,196,24,208,107,244,156,3,146,140,231,81,132, + 244,148,178,148,178,140,211,148,211,148,146,140,211,140,117,149,121,174,92,199, + 125,207,125,215,60,199,92,199,60,191,60,191,251,190,28,191,251,190,219,182, + 186,182,27,191,186,182,154,174,219,190,219,182,251,182,219,182,122,174,187,174, + 121,174,154,174,154,174,122,174,122,166,121,174,89,166,89,174,56,166,154,182, + 56,166,121,174,89,174,121,174,56,166,56,166,57,174,24,166,24,158,24,166, + 24,166,89,166,248,157,248,157,247,149,24,158,215,157,24,158,24,158,57,166, + 122,174,216,149,24,158,57,158,248,157,57,166,24,158,57,166,90,166,154,174, + 90,166,187,174,187,174,220,182,187,174,252,182,28,191,61,199,29,191,61,199, + 61,199,94,207,126,207,93,199,158,215,158,215,191,231,190,223,223,231,223,231, + 223,239,223,231,223,239,223,239,191,223,223,239,255,239,255,239,223,239,223,231, + 255,247,223,239,3,255,247,154,255,255,255,247,223,231,223,239,255,239,223,239, + 255,247,255,255,216,157,175,107,106,74,41,66,73,66,74,66,41,66,41,58, + 41,66,9,58,9,58,8,58,9,58,233,57,232,57,232,57,41,66,106,74, + 5,171,82,130,77,99,211,156,4,243,148,171,244,148,244,156,147,140,50,124, + 82,124,179,124,180,124,147,124,148,124,147,124,115,116,18,108,242,91,145,83, + 115,124,118,157,243,140,8,58,101,49,231,57,199,49,69,41,37,33,101,41, + 102,41,228,24,118,141,251,182,60,207,175,99,40,58,199,49,56,166,255,255, + 255,255,85,117,215,189,179,132,132,8,71,33,71,33,230,24,164,8,3,132, + 8,147,100,0,197,16,237,90,208,115,78,99,110,107,110,107,143,115,207,115, + 207,123,16,124,17,132,49,132,81,132,81,132,114,140,82,140,81,132,81,132, + 4,114,140,3,146,140,136,146,148,178,148,146,148,179,148,178,148,146,148,178, + 148,146,140,7,178,148,141,146,140,146,140,146,148,146,148,178,148,232,57,163, + 16,228,24,228,24,227,24,228,24,228,32,4,25,4,228,32,154,130,16,195, + 24,168,106,195,73,134,90,163,65,163,57,167,98,134,90,102,90,134,98,102, + 98,102,98,102,90,70,90,69,82,37,82,4,74,228,73,196,65,163,65,98, + 57,98,49,66,49,66,41,66,41,4,98,49,147,130,49,98,57,98,49,98, + 49,163,57,135,90,232,106,42,123,106,131,171,147,204,155,13,156,46,164,110, + 180,143,180,176,188,208,188,208,196,240,196,8,241,196,138,240,196,241,188,241, + 196,209,188,208,188,209,188,208,188,208,188,208,196,208,196,4,241,196,132,241, + 204,241,196,17,205,17,205,3,17,197,137,209,196,176,188,176,180,78,172,45, + 164,236,147,139,139,41,123,232,106,161,3,131,44,99,44,99,45,99,6,44, + 99,3,45,99,130,44,99,45,99,4,44,99,136,45,99,45,99,44,99,44, + 99,45,99,45,99,44,99,44,99,5,45,99,130,45,91,77,99,4,45,99, + 134,45,91,45,99,44,99,76,91,45,99,44,99,3,45,99,132,45,91,45, + 99,45,91,77,99,4,45,99,129,45,91,3,45,99,131,77,99,45,91,45, + 91,3,45,99,5,45,91,132,77,99,45,99,45,91,45,99,15,45,91,5, + 77,91,138,45,91,236,82,204,82,236,90,45,91,110,99,17,116,114,124,114, + 124,147,124,4,179,132,131,147,124,147,124,179,124,4,147,124,173,146,116,115, + 116,114,116,50,108,50,100,241,99,110,91,45,91,12,83,236,82,236,82,204, + 82,236,82,13,83,45,83,78,99,78,99,110,99,142,99,143,99,143,99,142, + 91,143,99,143,91,175,99,207,107,207,107,143,99,143,99,176,99,241,107,17, + 108,17,108,17,76,50,28,18,20,209,27,241,67,50,100,82,116,114,116,179, + 132,150,165,44,99,105,74,4,138,82,133,106,74,138,74,106,74,106,74,138, + 74,5,105,74,132,73,74,73,74,73,66,73,66,4,41,66,196,9,66,41, + 58,9,58,233,57,232,49,9,50,8,50,8,50,232,41,232,49,232,49,232, + 41,232,41,168,33,110,91,17,124,114,140,49,132,109,107,34,8,179,140,179, + 148,146,140,114,140,146,140,49,124,211,148,178,148,146,140,179,148,179,148,179, + 140,211,140,150,157,186,182,125,215,125,207,93,207,125,207,92,207,60,199,60, + 199,27,191,219,190,219,182,251,182,219,190,186,182,186,182,154,174,186,182,154, + 182,186,182,154,174,186,174,154,174,154,174,153,182,154,174,121,174,121,174,121, + 166,154,182,88,166,89,174,121,174,247,157,89,174,3,56,166,138,89,174,24, + 166,24,166,248,157,248,157,247,165,24,166,24,166,215,157,247,157,3,248,157, + 162,183,149,215,157,247,157,215,157,24,158,24,166,248,157,24,158,57,158,122, + 174,25,158,57,158,57,166,155,166,122,174,123,174,188,182,220,182,252,182,28, + 191,29,191,93,199,61,191,29,191,29,191,61,199,94,207,126,207,191,223,191, + 231,223,231,223,231,191,223,191,231,3,223,231,131,191,223,255,239,223,231,4, + 255,239,4,255,247,153,223,239,223,231,223,231,255,239,223,239,255,247,255,255, + 25,174,143,107,171,74,41,58,73,58,41,58,41,66,41,58,8,58,232,57, + 8,58,8,58,233,57,9,58,232,49,9,58,41,66,106,74,5,171,82,193, + 236,90,146,140,244,156,243,156,243,148,243,156,244,156,244,156,147,140,50,116, + 82,116,147,132,180,132,179,124,147,124,147,124,115,116,50,100,17,92,177,83, + 115,124,150,157,49,132,26,158,95,159,171,58,8,66,167,49,9,58,236,82, + 37,25,0,0,255,239,255,255,255,255,82,100,69,33,102,33,56,174,255,255, + 255,255,150,141,118,173,244,148,164,8,39,25,39,25,230,16,164,16,132,16, + 132,8,132,8,100,0,197,16,172,82,208,115,78,99,110,107,110,107,142,107, + 175,115,208,115,240,123,16,124,49,132,3,81,132,132,49,132,16,124,49,132, + 81,132,4,114,140,130,146,140,146,148,3,146,140,131,146,148,146,148,178,148, + 3,146,148,131,178,148,146,148,179,148,3,146,148,138,146,140,114,140,114,140, + 146,140,179,148,106,74,163,16,228,32,228,24,227,32,3,228,24,143,228,32, + 228,32,4,33,228,32,163,24,162,16,104,90,4,82,102,82,228,73,130,49, + 195,65,228,73,195,65,163,57,3,131,57,157,98,49,163,57,163,57,195,65, + 4,74,37,82,69,90,166,98,231,106,40,115,104,139,169,147,201,147,10,164, + 7,131,130,57,131,57,163,57,130,57,98,49,196,65,111,164,50,205,17,197, + 17,197,17,205,17,197,17,197,17,205,4,241,196,136,240,196,240,188,241,196, + 241,188,240,188,240,196,240,188,240,196,9,241,196,145,241,188,208,188,208,188, + 143,180,111,180,46,172,13,156,205,147,139,139,74,131,232,114,168,98,102,90, + 37,74,195,65,163,57,130,57,3,66,49,131,65,49,98,57,130,57,149,3, + 3,44,99,132,45,99,44,99,45,99,12,99,3,44,99,135,45,99,45,99, + 44,99,45,99,44,99,44,99,45,99,4,44,99,135,45,99,44,99,45,99, + 44,99,45,99,45,99,44,99,5,45,99,130,44,99,44,99,3,45,99,130, + 44,99,45,91,6,45,99,139,44,99,45,99,45,91,45,99,45,91,44,91, + 45,99,45,99,44,91,45,99,44,99,3,45,99,10,45,91,3,45,99,5, + 45,91,129,45,99,7,45,91,130,45,99,45,91,5,77,91,136,45,91,236, + 82,204,82,12,91,45,99,143,107,49,116,114,124,3,147,124,134,179,124,147, + 124,179,124,179,124,147,124,179,124,4,147,124,140,147,116,115,116,114,116,82, + 108,50,100,241,99,143,91,110,91,78,91,77,91,78,91,77,83,3,78,91, + 5,110,91,155,111,91,110,91,110,91,143,91,143,99,175,99,175,107,143,99, + 175,99,208,99,241,107,17,108,17,108,18,60,50,20,18,12,208,27,241,67, + 18,100,50,108,114,116,179,132,150,165,170,90,138,82,170,82,138,82,13,105, + 74,3,73,66,4,41,66,136,41,58,9,58,9,58,8,50,232,49,8,50, + 8,50,9,50,3,232,49,139,232,41,200,49,232,41,110,91,49,132,114,140, + 16,132,12,99,33,0,53,157,146,140,3,114,140,179,16,124,147,140,146,140, + 114,140,146,140,114,140,114,140,211,140,118,149,121,174,92,207,93,207,125,207, + 93,207,92,207,92,199,28,191,28,191,251,182,251,190,251,182,219,182,219,182, + 186,182,154,174,186,182,154,174,154,174,251,190,186,182,154,174,121,174,89,166, + 121,174,89,166,121,174,121,174,89,166,89,166,88,174,56,166,56,166,24,166, + 56,166,248,157,247,157,24,166,24,166,215,157,24,166,247,157,3,183,157,139, + 215,157,248,157,247,157,215,157,182,149,183,157,183,149,183,149,183,157,247,157, + 215,149,4,248,157,144,25,158,57,166,57,158,122,166,90,166,122,166,122,174, + 219,182,252,182,220,182,220,182,252,182,29,191,28,191,28,191,61,199,3,126, + 215,134,158,215,190,223,191,231,191,223,191,231,191,223,3,223,231,134,255,239, + 255,239,223,239,223,239,255,239,255,239,4,255,247,144,223,239,255,239,223,239, + 255,239,255,239,255,247,255,255,122,190,143,99,171,74,41,58,41,66,41,58, + 9,58,9,58,8,58,3,9,58,144,233,57,233,57,8,58,8,58,9,58, + 74,66,171,74,172,82,171,74,171,82,171,82,204,82,49,140,20,157,243,148, + 243,148,3,244,156,158,147,140,50,116,82,124,147,124,180,124,179,124,147,124, + 147,124,115,124,50,108,18,100,177,83,83,124,150,157,16,124,187,190,255,223, + 78,67,40,74,232,57,10,50,13,91,232,41,196,8,125,199,255,255,255,255, + 154,166,16,84,20,125,3,255,255,136,215,141,117,173,53,157,197,8,39,33, + 39,25,230,16,164,8,3,132,8,156,100,0,165,8,139,74,176,115,78,99, + 78,107,110,107,143,107,175,115,207,115,240,123,16,124,49,132,49,132,81,132, + 81,132,49,132,16,124,16,124,49,132,81,140,114,140,49,132,81,132,114,140, + 146,148,146,140,146,140,5,146,148,150,178,148,178,148,146,140,178,148,178,148, + 146,148,146,148,146,140,146,140,114,140,114,140,146,140,211,156,12,91,195,24, + 228,32,228,24,228,32,227,24,4,33,228,24,228,24,3,228,32,167,163,24, + 130,16,39,74,69,90,69,82,37,74,130,57,130,57,98,49,102,82,166,98, + 199,106,7,123,72,131,136,131,169,147,201,147,233,155,41,164,42,164,42,164, + 73,172,73,172,74,172,41,164,8,156,41,164,105,172,200,155,162,65,130,57, + 130,57,131,57,130,57,130,49,13,140,17,197,240,188,240,196,3,241,188,5, + 241,196,4,17,197,3,241,196,161,208,188,176,188,144,180,111,172,78,172,45, + 156,204,147,139,139,74,131,9,115,200,106,134,98,70,82,37,74,228,65,195, + 65,195,57,131,57,163,57,163,57,163,65,195,65,196,73,228,73,4,82,37, + 82,70,90,70,90,102,90,103,98,102,90,102,98,102,90,188,3,3,44,99, + 142,12,99,44,99,44,99,12,99,44,99,44,99,45,99,44,99,45,99,44, + 99,45,99,44,99,44,99,45,99,4,44,99,3,45,99,129,44,99,7,45, + 99,129,45,91,3,45,99,136,45,91,45,99,45,91,45,91,44,99,45,99, + 45,99,44,99,3,45,99,140,45,91,45,91,45,99,44,91,77,99,45,99, + 45,99,45,91,45,99,45,91,45,99,45,99,4,45,91,131,45,99,45,91, + 45,99,7,45,91,129,77,91,3,45,91,131,45,99,45,91,77,91,7,45, + 91,147,77,91,77,91,45,91,77,91,45,91,77,91,12,91,236,82,203,82, + 12,91,45,99,175,107,49,116,114,124,147,124,147,124,179,124,147,124,179,132, + 4,179,124,140,147,124,179,124,147,124,115,116,115,116,114,116,114,108,50,108, + 50,108,18,100,208,91,175,91,7,110,91,131,78,91,110,91,110,83,4,110, + 91,129,111,91,4,110,91,149,143,99,175,99,208,99,17,108,17,108,241,99, + 50,44,50,20,18,4,208,35,241,75,17,100,17,108,82,116,243,140,117,165, + 73,74,138,82,138,74,138,82,105,82,3,105,74,129,106,74,7,105,74,3, + 73,74,140,73,66,41,66,40,66,41,58,41,66,41,58,9,58,8,58,8, + 58,9,50,8,50,8,50,3,232,49,139,232,41,232,41,200,41,74,58,204, + 74,114,132,81,140,81,140,235,98,33,0,150,165,3,114,132,130,17,124,114, + 132,3,146,140,173,114,140,81,132,114,140,211,140,150,149,154,174,60,191,93, + 207,93,207,125,207,125,207,92,199,27,183,28,191,251,182,251,190,251,190,186, + 174,219,182,154,174,154,174,218,182,121,174,186,174,187,182,154,174,154,174,121, + 174,153,174,153,174,56,166,121,174,89,174,89,174,121,174,24,166,56,166,24, + 166,56,174,56,166,24,166,182,157,24,166,215,157,182,149,3,215,157,180,150, + 157,150,149,182,149,183,157,150,157,182,149,118,149,182,157,183,157,150,149,183, + 157,215,157,118,149,183,149,183,149,151,149,215,157,215,157,216,149,25,166,57, + 166,248,157,25,158,154,174,89,166,187,182,187,174,187,174,188,182,252,182,220, + 182,252,182,29,199,93,199,61,191,93,199,158,215,190,223,190,223,159,223,190, + 223,191,223,223,231,223,231,223,239,223,231,255,239,255,239,223,239,255,247,255, + 247,223,247,3,255,247,140,255,239,255,247,255,239,223,239,255,239,255,239,255, + 255,57,182,49,124,171,74,9,58,41,66,3,9,58,130,232,57,233,57,5, + 232,57,169,9,58,233,57,42,66,106,74,171,74,171,82,171,82,203,74,171, + 82,175,115,20,157,243,148,243,148,244,148,244,156,244,156,147,140,49,116,50, + 116,148,124,148,124,179,124,147,124,147,124,115,116,50,108,17,92,177,83,82, + 116,182,165,16,124,187,182,255,215,240,83,142,107,78,91,10,50,78,99,146, + 124,146,116,28,191,8,255,255,136,248,141,85,165,118,165,229,8,39,25,39, + 25,6,25,164,16,3,132,8,153,100,8,133,8,107,74,176,115,78,99,45, + 99,78,107,110,107,143,115,175,115,208,123,240,123,17,124,49,132,49,132,81, + 132,49,132,16,124,16,124,49,132,81,132,81,132,49,132,81,132,114,148,3, + 146,140,129,146,148,3,146,140,146,146,148,178,148,146,148,146,148,178,148,179, + 148,178,148,178,148,146,148,178,148,146,148,146,148,178,148,243,156,110,107,228, + 24,228,24,228,32,3,228,24,192,228,32,4,33,228,32,4,33,228,32,195, + 24,130,16,198,57,166,106,37,74,69,90,130,57,162,57,98,49,235,147,138, + 180,74,172,73,172,73,172,41,164,73,164,8,156,199,147,40,156,199,147,167, + 147,135,139,134,139,199,147,231,147,199,147,231,147,137,172,40,172,227,73,98, + 49,131,57,131,57,130,57,66,49,107,115,82,205,17,197,49,205,50,205,50, + 205,18,205,17,205,241,196,241,196,208,180,175,180,111,180,78,164,13,156,204, + 147,107,131,42,115,232,106,135,90,70,82,4,74,196,65,163,57,3,131,57, + 153,163,57,164,65,228,65,228,73,37,82,69,90,70,90,103,98,103,98,135, + 98,103,98,134,98,102,98,70,90,70,90,37,82,4,74,228,73,228,73,163, + 65,163,57,131,57,131,57,98,57,98,49,177,3,131,44,91,44,99,12,99, + 10,44,99,129,45,99,5,44,99,130,45,99,45,99,3,44,99,4,45,99, + 151,44,99,44,99,45,99,44,99,45,99,45,91,45,99,45,99,44,99,45, + 99,44,99,45,99,45,99,44,99,45,99,45,99,45,91,44,91,45,91,44, + 99,45,99,45,99,45,91,3,45,99,6,45,91,132,77,99,45,91,45,99, + 45,99,3,45,91,138,45,99,45,99,77,91,77,91,45,91,77,99,45,91, + 77,99,77,91,77,91,10,45,91,131,77,91,45,91,45,91,3,77,91,135, + 236,82,236,82,236,90,13,91,77,91,208,107,82,116,3,147,124,132,147,132, + 179,124,147,124,147,124,3,179,124,4,147,124,140,115,116,114,116,82,116,82, + 108,50,100,50,100,50,108,241,99,208,99,143,83,111,91,110,91,3,78,91, + 162,78,83,46,83,77,83,45,83,45,83,13,83,13,75,13,75,237,74,237, + 74,13,75,78,83,143,99,208,99,241,107,17,108,17,108,17,100,147,36,180, + 4,83,4,241,35,17,84,17,108,17,100,114,116,85,149,211,148,73,74,138, + 82,106,82,105,74,105,74,138,82,7,105,74,136,73,74,105,74,73,74,105, + 74,73,74,73,66,73,66,40,66,3,41,66,131,41,58,8,58,8,58,5, + 232,49,184,232,41,232,41,200,41,200,41,168,41,204,74,46,91,146,140,81, + 132,113,140,170,90,131,8,182,173,81,132,114,140,81,132,16,124,182,165,81, + 132,179,140,178,140,146,140,114,140,178,140,244,140,24,166,218,182,92,199,92, + 199,93,207,251,190,60,199,27,191,28,191,219,182,251,190,218,182,219,182,186, + 182,186,174,154,174,121,174,186,182,186,182,186,174,219,182,121,174,154,174,89, + 166,89,166,89,174,88,166,88,166,24,166,89,174,56,174,3,24,166,188,23, + 166,215,157,247,165,182,157,182,157,214,157,182,157,150,149,215,165,182,157,118, + 149,118,149,150,149,150,149,85,141,118,149,183,157,118,149,85,149,150,149,183, + 157,183,157,118,149,150,149,85,141,215,157,183,149,215,149,215,157,183,157,215, + 157,248,157,24,158,25,158,122,174,57,166,123,174,155,174,155,174,219,182,187, + 182,187,182,252,182,252,182,61,191,29,191,158,215,158,215,158,223,191,231,191, + 223,158,223,159,223,223,231,255,239,191,223,223,231,255,239,255,239,223,239,4, + 255,247,192,255,239,255,247,255,247,223,231,255,239,255,239,223,239,255,255,216, + 165,175,107,139,74,41,58,41,66,41,66,9,58,9,58,232,49,232,49,8, + 58,232,57,232,49,200,49,232,49,232,57,9,58,41,66,106,74,171,82,171, + 74,171,74,171,82,171,82,77,99,20,157,243,148,243,156,243,148,244,148,244, + 156,147,140,17,116,50,116,115,124,148,124,179,124,148,124,147,124,115,116,50, + 108,18,100,209,83,50,108,183,165,114,124,188,182,255,223,212,108,53,149,21, + 141,139,50,77,99,215,165,249,165,251,182,8,255,255,136,89,158,52,165,215, + 173,38,17,6,25,39,25,6,25,164,16,3,132,8,141,100,8,132,8,42, + 66,143,107,78,99,45,99,78,99,110,107,142,107,175,115,208,115,240,123,17, + 124,5,49,132,130,81,132,49,132,3,81,132,131,113,140,146,140,114,140,6, + 146,140,175,146,148,146,148,146,140,178,148,146,148,146,148,178,148,146,148,146, + 148,178,148,178,148,146,148,178,148,211,156,240,115,37,33,195,24,4,25,228, + 32,4,33,228,24,228,24,228,32,228,32,4,33,4,33,227,24,130,16,68, + 41,200,114,4,74,166,98,130,49,163,57,66,41,202,131,170,180,104,172,199, + 147,199,147,166,147,231,147,166,139,166,147,8,156,8,164,232,155,3,8,156, + 152,8,164,9,156,232,147,232,147,168,147,36,82,130,49,131,57,130,57,130, + 57,66,49,135,82,78,164,236,147,171,139,106,131,41,123,232,106,167,98,102, + 90,37,74,228,65,196,57,131,57,3,130,49,136,131,49,163,57,196,65,229, + 73,37,82,70,90,102,90,103,98,4,135,98,140,103,98,70,90,69,82,5, + 82,228,73,196,73,163,65,131,57,130,49,98,49,66,49,66,41,3,66,49, + 3,98,49,134,131,57,131,57,163,65,163,65,196,65,228,73,145,3,131,44, + 99,44,99,12,99,3,44,99,137,12,91,44,99,44,99,45,99,44,99,44, + 99,45,99,44,99,45,99,3,44,99,131,45,99,44,99,44,99,5,45,99, + 131,44,99,12,99,44,99,3,45,99,129,44,99,12,45,99,129,44,99,3, + 45,99,4,45,91,130,77,99,45,99,8,45,91,129,77,99,5,45,91,137, + 77,99,45,91,45,91,45,99,45,91,77,91,45,91,77,91,77,91,8,45, + 91,143,77,91,45,91,77,91,45,91,77,91,77,91,45,91,236,82,236,82, + 236,90,13,91,110,99,208,107,114,124,146,124,6,147,124,4,179,124,3,147, + 124,140,115,116,115,116,114,108,82,108,50,100,50,100,50,108,50,100,241,99, + 176,91,111,83,45,75,3,13,75,3,237,74,5,204,66,153,237,66,13,75, + 46,75,111,91,176,99,241,107,241,107,18,108,18,108,82,84,115,36,148,4, + 50,4,18,52,50,92,50,108,17,100,147,124,150,157,48,132,105,74,138,82, + 105,74,138,82,138,74,11,105,74,131,73,74,73,74,73,66,3,41,66,135, + 40,66,41,58,41,66,8,58,232,57,8,50,232,57,3,232,49,147,232,41, + 232,41,200,41,200,41,167,41,236,82,13,91,146,140,49,132,81,140,40,74, + 37,17,118,173,81,132,114,132,49,132,81,140,53,157,114,140,3,146,140,185, + 114,140,146,140,244,140,247,165,186,182,93,207,93,207,125,215,60,199,92,199, + 251,182,28,191,251,182,251,182,219,182,251,182,186,182,154,174,121,174,89,166, + 218,182,186,174,153,174,153,174,121,174,121,174,89,166,89,166,121,174,88,166, + 89,166,24,166,56,166,24,166,24,166,247,165,23,166,247,157,214,157,215,157, + 150,157,182,157,182,157,117,149,182,149,118,149,150,157,118,149,117,157,150,157, + 118,149,118,149,85,149,52,141,85,149,117,149,53,141,3,118,149,158,85,141, + 118,149,86,149,85,141,150,149,183,149,150,149,215,157,215,157,247,157,24,166, + 248,157,57,166,89,166,122,174,122,174,155,174,155,174,219,182,155,174,252,182, + 252,190,29,191,126,207,126,215,126,207,158,215,158,215,190,223,190,223,3,223, + 231,133,223,239,223,231,255,239,223,239,255,239,3,255,247,131,255,239,255,247, + 255,247,4,255,239,165,255,255,152,165,175,115,106,74,9,58,41,58,41,58, + 9,58,9,58,232,49,232,49,232,57,232,49,232,49,8,58,232,49,9,58, + 9,58,41,66,106,66,139,74,171,74,171,74,171,82,172,82,12,91,211,156, + 244,156,243,148,243,148,244,156,244,156,147,140,49,116,50,116,147,124,179,124, + 3,147,124,145,115,116,50,108,18,100,209,91,18,108,183,165,82,124,155,182, + 255,239,244,108,53,149,85,149,204,58,13,91,183,165,25,166,219,182,8,255, + 255,136,154,174,20,157,248,181,103,25,6,25,39,33,6,25,164,16,3,132, + 8,144,100,8,100,0,9,58,111,107,78,99,13,99,77,99,78,107,143,107, + 143,115,208,115,240,123,16,124,17,124,49,132,49,132,5,81,132,130,82,140, + 113,132,3,114,140,3,146,140,134,114,140,146,140,146,140,146,148,146,148,146, + 140,4,146,148,195,146,140,146,148,178,148,146,148,178,148,146,148,179,148,49, + 132,102,41,227,24,4,33,228,32,228,32,228,24,4,33,4,25,228,32,4, + 33,228,32,228,32,130,16,228,24,200,114,4,74,167,98,130,57,163,57,98, + 49,40,107,171,180,137,172,40,156,8,156,232,155,232,155,231,155,200,147,135, + 139,103,131,70,123,6,115,230,106,165,98,132,90,68,82,36,74,227,65,195, + 65,130,49,130,57,98,49,98,49,131,49,130,57,164,57,5,74,228,65,196, + 65,196,65,196,73,195,65,228,73,4,74,5,82,37,82,70,90,70,90,5, + 102,90,156,70,90,37,82,5,82,4,74,228,73,196,65,164,65,163,57,131, + 57,98,57,98,49,98,49,66,49,65,49,98,49,98,49,130,49,131,57,163, + 57,196,65,228,73,4,74,5,82,37,82,37,82,70,90,70,90,102,90,3, + 102,98,131,103,98,103,90,102,90,188,3,129,12,99,3,44,99,129,12,99, + 3,44,99,130,45,99,44,91,4,44,99,131,12,99,44,99,45,99,4,44, + 99,129,45,99,3,44,99,5,45,99,129,44,99,3,45,99,131,44,99,44, + 99,45,91,4,45,99,129,44,91,7,45,99,131,77,91,45,91,77,99,4, + 45,91,134,45,99,45,91,77,99,45,99,45,91,45,99,7,45,91,137,77, + 91,77,91,45,99,45,91,77,91,77,91,45,91,77,91,77,91,4,45,91, + 146,77,91,45,91,45,91,77,91,77,91,45,91,77,91,77,91,45,91,77, + 99,45,91,236,82,204,82,236,90,45,91,142,99,241,107,114,124,5,147,124, + 134,147,132,179,124,179,124,147,124,179,124,179,124,3,147,124,134,147,116,114, + 116,114,116,82,108,82,108,50,108,3,50,100,167,209,99,111,83,13,75,204, + 66,204,58,172,58,204,66,172,66,204,66,205,66,205,66,237,66,13,75,45, + 75,78,83,78,83,143,91,176,99,240,107,17,108,49,116,50,108,50,116,240, + 91,143,19,111,3,111,3,208,59,50,100,82,108,18,108,179,124,215,165,109, + 107,105,74,138,82,138,82,105,74,106,82,8,105,74,143,73,74,105,74,105, + 74,73,74,73,74,73,66,41,66,40,66,8,66,41,66,40,58,8,58,8, + 58,232,57,232,57,4,232,49,147,200,49,200,41,232,49,168,49,106,58,12, + 83,110,99,114,140,49,132,49,140,199,57,167,41,85,165,49,132,81,132,48, + 132,179,148,52,157,81,132,3,114,140,139,81,140,114,140,244,140,24,166,27, + 191,92,199,60,199,93,207,125,207,60,199,27,191,3,251,182,172,219,182,218, + 182,186,182,154,174,154,174,122,174,154,174,154,174,153,174,186,182,121,174,121, + 174,56,166,89,166,56,166,24,158,24,158,247,165,215,157,24,166,23,158,214, + 157,215,157,215,157,182,157,215,157,150,149,182,149,150,149,117,149,118,149,117, + 149,85,149,117,149,117,149,85,149,85,149,118,149,53,141,53,149,117,149,52, + 141,85,141,85,141,4,85,149,142,53,149,52,141,118,149,85,149,150,157,183, + 157,183,157,150,149,216,157,248,157,24,166,25,158,89,166,90,166,4,122,166, + 139,187,174,187,182,252,182,28,191,93,207,93,199,126,207,158,215,191,223,191, + 231,191,223,3,223,231,133,191,231,255,231,255,239,223,239,255,239,4,255,247, + 129,255,255,3,255,247,186,255,255,255,255,152,157,240,115,42,66,41,66,41, + 58,41,58,9,58,9,58,232,49,200,49,232,57,232,57,200,49,232,57,233, + 57,232,57,9,58,9,58,74,66,139,74,171,82,171,74,171,82,172,82,172, + 82,146,140,244,156,244,148,211,148,244,156,244,156,147,140,17,116,49,116,115, + 124,147,124,179,124,147,124,147,124,115,116,50,108,18,100,209,91,241,107,183, + 165,146,132,91,182,255,231,21,117,85,157,118,149,14,67,236,82,183,165,90, + 174,155,166,8,255,255,157,252,190,244,148,248,181,200,33,6,25,71,33,6, + 25,196,16,132,8,132,8,100,8,100,8,100,0,201,49,78,107,78,99,13, + 99,77,99,78,107,110,107,143,115,207,115,208,123,240,123,17,132,49,132,49, + 132,81,132,49,132,3,81,132,129,81,140,3,114,140,134,146,140,114,140,146, + 140,114,140,146,140,114,140,4,146,140,143,146,148,146,140,146,140,146,148,146, + 148,178,148,146,148,178,148,146,140,146,148,178,148,146,140,199,49,195,24,4, + 33,3,228,32,171,4,33,4,25,228,24,4,33,4,33,227,32,162,16,163, + 16,232,114,4,74,167,98,162,57,163,57,130,57,68,82,71,123,6,115,197, + 106,165,98,100,90,36,74,228,73,227,65,162,57,162,49,98,57,98,49,66, + 49,98,49,98,49,130,49,131,57,163,57,196,65,228,73,37,74,69,82,70, + 90,71,90,102,90,102,98,102,90,103,90,3,102,98,169,102,90,70,90,37, + 82,5,74,228,73,228,73,196,65,163,65,131,57,130,57,98,49,130,57,98, + 49,98,49,66,49,65,49,66,49,98,49,130,57,130,57,163,57,228,65,4, + 74,37,82,37,82,102,90,103,98,135,98,135,98,135,106,135,106,167,106,134, + 98,102,98,70,90,69,82,37,82,228,73,228,73,196,73,163,65,3,131,57, + 130,130,57,98,57,197,3,137,44,99,44,99,12,99,12,99,44,99,12,99, + 44,99,44,99,12,99,4,44,99,3,45,99,164,44,99,45,99,45,99,44, + 99,45,99,44,99,45,99,44,99,45,99,45,99,44,99,45,99,44,99,44, + 99,77,99,45,99,45,99,44,99,45,99,45,99,44,99,45,99,45,99,44, + 91,45,99,45,91,45,99,45,91,45,91,45,99,45,99,77,91,44,99,45, + 99,45,99,45,91,4,45,99,134,45,91,45,99,45,99,45,91,77,99,45, + 99,3,45,91,138,77,91,45,91,77,91,45,91,77,91,45,91,77,91,45, + 91,77,91,45,91,6,77,91,131,45,91,77,91,77,91,3,45,91,5,77, + 91,136,45,91,204,82,236,82,12,91,45,99,175,107,17,116,114,124,3,147, + 124,130,179,132,179,124,3,147,124,139,147,132,179,124,147,124,147,124,179,124, + 147,124,147,124,147,116,115,116,114,116,115,108,4,82,108,131,17,100,143,83, + 45,75,3,237,74,129,13,75,3,46,83,146,78,91,110,91,142,91,143,99, + 175,99,176,99,208,107,208,107,17,108,49,108,50,116,115,116,49,116,13,83, + 102,9,195,0,41,18,209,83,3,82,108,131,211,132,56,182,170,90,3,138, + 82,133,105,74,106,74,105,74,105,74,73,74,4,105,74,143,73,74,73,66, + 73,74,73,74,105,74,73,74,73,66,40,66,41,66,41,66,8,58,8,58, + 40,58,8,58,232,57,5,232,49,3,200,41,186,167,41,13,83,172,82,241, + 115,49,132,49,132,16,132,102,41,139,66,244,156,49,132,81,132,48,132,179, + 148,114,140,113,140,81,140,113,140,113,140,146,140,114,140,20,141,89,174,60, + 199,92,199,125,207,92,207,60,199,92,199,60,199,27,191,27,191,251,182,218, + 182,219,182,219,182,154,174,121,174,186,182,121,174,121,166,153,174,154,174,121, + 174,89,174,24,158,56,166,247,157,24,166,24,166,247,165,214,157,215,157,214, + 157,182,157,117,149,215,157,215,157,3,117,149,186,182,149,150,149,117,149,117, + 149,118,149,52,141,85,149,53,141,85,149,20,141,52,141,85,149,85,141,20, + 141,85,141,53,141,53,141,52,141,53,149,244,140,20,141,85,149,150,149,244, + 132,85,141,53,141,118,149,85,141,118,149,150,149,215,157,248,165,24,166,24, + 166,25,166,57,166,25,166,57,166,122,174,187,182,187,182,29,191,28,191,29, + 191,61,199,93,207,126,207,158,215,158,215,191,223,158,215,223,231,223,231,255, + 239,223,239,255,239,223,239,255,239,3,255,247,130,255,255,255,247,4,255,255, + 130,184,173,110,107,3,41,58,179,9,58,9,58,232,49,200,49,232,49,232, + 57,200,57,233,57,9,58,233,49,233,57,232,57,9,58,74,66,138,74,171, + 82,139,74,171,82,172,82,171,74,48,132,20,157,243,148,243,148,244,148,244, + 148,115,140,17,116,18,116,115,124,147,124,147,124,148,124,147,124,115,116,50, + 108,18,100,241,91,241,107,150,165,146,132,249,165,255,231,86,117,85,157,86, + 149,111,83,204,74,150,165,90,182,154,174,8,255,255,153,93,215,211,132,248, + 189,74,50,6,25,71,33,39,33,197,16,131,8,132,8,132,8,100,8,100, + 0,168,41,78,99,78,107,13,91,45,99,78,99,110,107,174,115,175,115,240, + 123,240,123,16,124,3,49,132,134,81,132,49,132,81,132,81,132,81,140,81, + 140,3,114,140,134,146,140,114,140,146,140,114,140,146,140,114,140,4,146,140, + 129,146,148,3,146,140,153,146,148,146,148,178,148,146,148,146,148,179,148,179, + 148,73,66,195,24,4,33,4,33,228,32,228,24,228,32,4,33,228,24,4, + 33,4,33,228,32,163,24,98,16,168,98,36,82,167,98,195,65,3,130,57, + 141,130,49,98,49,131,49,130,49,163,57,163,57,195,65,228,73,4,74,37, + 74,69,82,102,90,134,90,4,135,98,140,134,98,102,98,102,90,70,90,37, + 90,37,82,228,73,228,73,196,65,163,65,163,57,130,57,6,98,49,156,130, + 57,130,57,131,57,163,57,163,65,196,65,228,73,5,74,37,82,70,90,102, + 90,135,98,135,98,167,106,167,106,167,98,135,98,135,98,102,90,70,90,37, + 82,5,74,228,73,196,65,163,65,131,57,131,57,98,57,7,98,49,132,98, + 57,130,57,98,49,98,49,3,98,57,133,3,131,12,99,44,99,12,99,3, + 44,99,129,12,99,3,44,99,129,12,99,3,45,99,134,44,99,44,99,45, + 99,44,99,45,99,44,99,3,45,99,135,44,99,45,99,44,99,44,99,45, + 99,45,99,44,99,5,45,99,129,44,99,3,45,99,132,45,91,45,99,45, + 99,45,91,4,45,99,141,45,91,45,99,45,99,45,91,45,99,45,91,45, + 99,45,91,45,99,45,91,45,99,77,99,45,99,4,45,91,131,77,91,45, + 91,77,99,3,77,91,133,45,91,45,91,77,99,77,91,45,91,4,77,91, + 129,45,91,3,77,91,145,45,91,45,91,77,91,45,91,45,91,77,91,45, + 91,77,91,77,91,12,91,236,82,236,82,12,91,77,99,207,107,49,116,114, + 124,3,147,124,131,179,124,147,132,179,132,3,179,124,130,179,132,179,124,5, + 147,124,3,147,116,4,115,116,132,49,108,208,99,110,91,78,91,3,110,91, + 129,111,91,3,143,99,154,175,99,143,99,176,99,208,107,208,107,240,107,17, + 108,49,108,50,116,82,116,115,124,208,107,106,66,97,8,37,9,237,66,50, + 108,115,116,115,108,114,108,211,140,247,181,73,74,170,82,138,82,106,82,7, + 105,74,3,73,74,129,73,66,4,73,74,132,73,66,41,66,8,66,40,58, + 4,8,58,129,232,57,4,232,49,129,232,41,3,200,41,182,135,33,142,91, + 236,82,17,124,49,132,81,132,240,131,228,24,77,91,179,148,81,132,81,132, + 81,140,16,124,81,132,114,140,81,132,81,132,146,140,114,140,146,140,20,149, + 56,174,60,199,92,207,189,223,124,207,60,199,93,207,60,199,251,190,251,182, + 219,182,219,182,218,182,219,182,121,174,154,174,186,174,154,174,121,174,121,174, + 89,174,56,166,56,166,24,166,56,166,24,158,56,166,23,166,247,157,214,157, + 182,149,182,149,3,150,149,141,182,157,85,149,85,149,117,149,117,149,85,149, + 53,141,85,149,85,149,52,149,52,141,53,141,85,149,4,20,141,140,85,149, + 20,141,20,149,53,149,20,141,52,149,52,149,243,140,52,149,52,141,20,133, + 53,141,3,20,141,147,53,149,53,141,85,141,150,149,247,157,248,165,24,166, + 24,158,248,157,89,166,122,174,89,174,154,174,187,174,220,182,252,190,29,191, + 61,199,93,199,3,158,215,3,191,223,133,255,239,255,239,223,231,223,239,255, + 239,3,255,247,130,255,255,255,247,4,255,255,163,249,173,110,107,106,66,9, + 58,41,58,9,58,9,58,9,50,200,49,200,49,232,49,232,49,200,49,8, + 50,233,57,232,57,232,49,9,58,41,58,138,74,139,74,139,74,172,82,172, + 82,171,82,207,115,244,156,244,148,243,148,244,148,244,148,114,132,17,116,18, + 116,115,124,4,147,124,145,115,116,50,108,18,100,241,91,241,99,150,157,179, + 140,216,157,255,231,152,125,53,157,86,149,175,91,171,74,118,157,122,182,122, + 166,8,255,255,136,92,223,243,132,24,182,139,58,6,25,71,33,39,25,197, + 16,4,132,8,142,100,0,135,41,13,99,111,107,237,90,45,99,45,99,110, + 107,142,107,175,115,208,115,240,123,17,124,17,132,3,49,132,4,81,132,6, + 114,140,130,146,140,114,140,12,146,140,3,146,148,133,178,148,211,148,171,74, + 195,24,228,32,4,4,33,161,228,32,228,32,4,33,228,32,228,32,195,24, + 98,8,103,82,69,90,134,82,134,98,4,74,69,82,69,82,70,90,102,98, + 134,98,134,98,135,98,135,98,134,98,134,98,102,90,70,90,69,90,37,82, + 4,74,228,73,228,73,196,65,195,65,131,57,130,57,5,98,49,140,130,57, + 163,65,163,65,195,65,228,65,228,73,5,74,37,82,37,82,70,90,102,90, + 102,90,3,135,98,136,135,90,102,90,70,90,70,90,37,82,37,82,4,74, + 228,73,3,195,65,3,131,57,133,130,49,130,57,98,57,130,57,98,49,5, + 98,57,142,98,49,98,57,98,49,98,57,130,57,131,57,131,57,163,65,196, + 65,228,73,229,73,5,82,37,82,70,90,172,3,130,12,99,45,99,3,44, + 99,129,12,99,5,44,99,3,45,99,130,44,99,44,99,4,45,99,142,44, + 99,45,91,45,99,44,99,12,99,45,99,44,99,45,99,45,99,44,99,45, + 99,45,99,44,91,44,91,3,45,99,143,45,91,45,99,45,91,45,99,45, + 91,44,99,45,99,44,99,45,91,45,91,45,99,45,99,44,99,45,99,45, + 99,3,45,91,133,45,99,45,91,45,91,45,99,45,91,3,45,99,4,45, + 91,130,77,91,77,99,3,45,91,135,77,99,77,91,77,99,45,91,45,99, + 45,91,45,99,4,45,91,4,77,91,154,45,91,77,91,45,91,77,99,77, + 91,236,82,204,82,236,90,44,91,78,99,208,107,49,116,147,124,147,132,179, + 124,147,124,179,132,148,132,179,124,179,132,179,124,179,124,179,132,179,124,180, + 124,180,124,3,179,124,4,147,124,134,179,124,147,124,147,124,82,116,240,107, + 207,99,7,175,99,154,176,107,175,99,176,107,208,107,240,107,240,107,17,116, + 17,116,50,116,114,116,147,116,114,124,78,91,166,33,98,8,74,42,209,91, + 147,116,147,116,115,116,115,116,20,149,150,173,73,74,170,82,138,82,7,105, + 74,6,73,74,135,73,66,73,66,41,66,73,66,41,66,40,66,40,66,4, + 8,58,3,232,49,130,200,49,232,49,4,200,41,191,167,33,208,107,13,91, + 114,140,114,140,81,132,174,123,163,16,207,115,114,140,81,140,81,132,113,140, + 16,124,114,140,146,140,114,140,81,132,113,140,114,140,146,140,20,141,247,157, + 251,182,125,215,125,207,125,215,124,207,92,199,92,199,27,199,28,191,251,182, + 218,182,153,174,186,182,121,174,154,174,121,174,121,166,121,174,89,166,56,166, + 24,166,56,166,56,166,247,157,215,157,24,158,247,157,215,157,215,157,182,149, + 182,149,118,149,150,149,182,157,85,149,85,141,117,149,52,149,52,141,52,141, + 3,52,149,143,211,132,52,149,243,140,53,141,20,141,20,141,211,132,20,141, + 20,133,20,141,52,141,20,141,52,149,20,141,211,132,3,20,141,143,211,132, + 85,149,20,141,52,149,85,149,20,141,52,149,20,141,53,141,85,149,85,141, + 183,149,215,157,216,157,248,157,3,90,166,140,122,174,155,174,187,182,187,182, + 252,182,28,191,61,191,61,191,125,207,158,215,190,215,158,215,3,223,231,130, + 223,239,223,239,3,255,247,130,255,255,255,247,4,255,255,131,119,157,17,124, + 171,74,3,9,58,157,233,57,9,58,232,49,232,49,200,49,200,49,232,49, + 200,49,232,49,232,57,9,58,9,58,41,66,138,74,139,74,139,74,171,74, + 172,82,172,82,78,107,211,156,244,148,243,148,244,148,244,156,114,132,17,116, + 17,116,115,124,4,147,124,145,115,116,50,108,18,100,241,91,241,99,150,157, + 178,132,151,157,255,239,217,133,20,149,118,149,240,99,139,66,85,157,122,182, + 122,166,8,255,255,154,125,223,20,133,24,190,237,74,230,16,71,33,38,25, + 197,16,131,8,164,8,132,8,132,8,100,0,71,33,237,90,111,107,237,90, + 13,99,46,99,78,107,111,107,175,115,207,115,240,123,17,124,17,132,3,49, + 132,3,81,132,132,82,140,81,132,114,132,81,140,3,114,140,129,146,140,3, + 114,140,130,146,148,146,148,3,146,140,147,114,140,146,140,146,140,146,148,146, + 140,146,140,146,148,178,148,178,148,211,156,12,91,228,24,4,33,4,33,228, + 32,4,33,4,33,228,32,228,32,3,4,33,163,195,24,98,16,6,66,135, + 106,228,73,167,98,102,90,102,90,69,82,69,82,37,82,228,73,196,65,196, + 65,163,65,130,57,130,57,131,57,98,57,98,57,98,49,98,49,130,57,131, + 57,163,57,195,65,228,65,4,74,37,74,69,82,102,90,102,98,134,98,135, + 98,134,98,3,135,98,148,102,98,102,98,69,90,37,82,37,82,5,74,228, + 73,196,65,163,65,163,57,130,57,130,57,131,57,131,57,130,49,130,49,98, + 49,98,57,130,57,130,57,8,98,49,148,130,57,130,57,163,57,195,65,228, + 73,5,74,37,82,69,90,134,98,167,98,167,106,168,106,167,106,167,106,135, + 106,135,98,102,98,70,90,37,82,4,82,166,3,134,12,99,44,99,44,99, + 12,99,44,99,12,99,3,44,99,129,12,91,6,44,99,132,45,99,44,99, + 45,99,44,99,6,45,99,3,44,99,175,45,99,44,99,45,99,45,99,44, + 99,45,91,44,99,45,99,45,91,45,99,45,99,44,99,45,99,45,91,45, + 91,45,99,44,99,77,99,77,99,45,91,45,99,45,99,45,91,45,99,45, + 91,45,99,45,91,77,91,45,91,45,91,45,99,45,99,45,91,77,99,45, + 99,77,91,77,99,45,91,77,91,45,91,45,91,77,99,45,99,45,91,77, + 91,77,91,45,91,4,77,91,134,77,99,77,99,77,91,45,91,77,91,45, + 91,3,77,91,138,77,99,45,91,45,91,12,83,204,82,236,90,45,91,110, + 99,240,107,114,124,3,147,124,130,179,132,179,124,5,179,132,134,179,124,179, + 124,180,124,179,132,179,132,180,132,3,179,132,136,179,124,179,132,179,132,179, + 124,179,124,114,124,49,116,240,107,9,208,107,152,240,107,241,107,17,108,17, + 116,49,116,82,116,114,116,115,124,180,132,17,108,138,66,162,16,37,17,111, + 75,83,116,147,124,147,116,147,116,147,124,85,149,243,148,73,74,170,82,138, + 82,8,105,74,144,73,74,105,74,73,74,41,74,73,74,73,74,41,66,73, + 66,41,66,40,66,40,66,8,58,9,66,8,58,8,58,232,57,5,232,49, + 129,167,41,3,200,41,145,167,33,106,58,106,66,244,156,81,140,113,140,142, + 115,98,8,81,132,113,140,81,132,81,140,113,140,81,132,146,140,113,140,81, + 132,3,113,140,177,178,140,53,149,57,166,60,199,190,223,157,215,92,207,125, + 207,92,199,92,199,251,190,60,199,27,199,251,190,219,182,186,182,186,182,121, + 174,154,182,121,166,121,174,121,174,24,158,23,158,215,157,247,157,215,157,247, + 157,215,157,182,157,117,149,150,149,85,149,182,149,117,149,117,149,52,141,52, + 149,52,141,85,149,244,140,20,141,243,140,244,140,243,140,211,140,243,140,211, + 132,243,132,7,211,132,129,20,141,3,244,140,137,243,140,243,132,20,141,243, + 132,211,132,20,141,211,132,244,140,212,132,3,244,140,155,243,140,52,141,20, + 141,85,149,53,141,118,149,118,149,215,157,248,157,248,157,25,158,57,158,123, + 166,155,174,187,182,252,182,253,190,61,199,61,191,126,207,126,207,191,223,158, + 215,158,215,223,231,223,231,255,239,4,255,247,129,255,255,3,255,247,164,255, + 255,119,157,175,107,138,74,41,58,41,58,9,50,9,50,232,49,200,49,200, + 49,232,49,232,49,200,49,200,49,232,49,232,49,232,57,232,49,9,58,74, + 74,139,74,139,66,139,74,171,82,171,82,12,91,146,140,244,156,243,148,244, + 156,244,148,115,132,17,116,17,116,82,124,4,147,124,145,115,116,82,108,18, + 100,241,91,241,99,118,157,179,140,87,157,255,239,58,142,20,149,118,149,16, + 108,138,66,52,149,122,182,122,166,8,255,255,136,125,231,53,141,248,189,110, + 91,229,16,71,33,71,25,229,16,4,132,8,144,100,0,39,33,236,90,110, + 107,204,90,13,99,45,99,78,107,110,107,175,115,208,115,240,123,16,124,17, + 124,49,132,49,124,3,49,132,135,81,132,82,132,113,140,114,140,81,140,114, + 140,146,140,3,114,140,7,146,140,129,114,140,4,146,140,3,146,148,133,179, + 148,211,156,175,107,4,33,228,32,3,4,33,129,228,32,4,4,33,167,228, + 32,228,32,130,16,133,49,200,114,162,57,130,57,163,57,36,74,228,73,163, + 65,3,74,36,82,227,65,227,65,36,82,68,82,4,74,70,82,102,90,102, + 90,135,98,135,98,167,106,167,98,167,106,135,98,102,98,102,98,70,90,69, + 82,37,82,4,74,228,73,196,65,196,65,163,57,130,57,130,57,3,98,49, + 129,98,57,4,98,49,131,98,57,130,49,130,49,3,130,57,162,131,57,131, + 57,163,57,195,65,195,65,196,65,228,73,36,82,69,82,69,90,102,98,135, + 98,135,98,167,98,168,106,167,106,168,106,167,98,134,98,102,90,38,90,5, + 82,228,73,196,65,163,57,130,57,98,49,66,49,65,49,65,49,98,49,98, + 57,130,57,163,65,131,3,5,12,99,129,44,91,3,44,99,129,45,99,8, + 44,99,130,45,99,44,99,5,45,99,129,44,99,3,45,99,129,44,91,3, + 45,99,129,44,99,8,45,99,129,44,99,4,45,99,133,45,91,45,99,45, + 91,45,99,44,91,3,45,91,146,45,99,45,91,45,99,45,99,45,91,45, + 91,77,91,45,99,45,91,45,91,77,91,45,91,77,99,77,99,45,99,77, + 99,77,91,77,99,8,77,91,130,45,91,45,91,8,77,91,139,45,91,236, + 82,203,82,12,91,13,91,143,99,17,116,114,124,147,124,147,124,179,124,5, + 179,132,132,180,132,179,132,179,124,180,132,3,179,132,129,179,124,5,179,132, + 135,180,132,212,124,180,124,114,124,49,116,17,116,16,108,4,240,107,157,208, + 107,208,107,240,107,240,107,17,116,17,108,17,116,49,116,82,116,82,116,147, + 124,179,124,180,124,110,99,167,41,65,0,107,42,241,99,147,116,179,124,147, + 116,147,116,179,124,118,157,81,132,105,82,170,82,138,82,137,74,4,105,74, + 3,73,74,129,105,74,3,73,74,3,73,66,132,41,66,41,66,40,66,8, + 66,4,8,58,135,232,57,232,49,232,49,231,49,200,49,232,49,199,41,3, + 200,41,137,168,41,74,58,171,66,179,148,81,132,113,140,44,107,131,16,146, + 140,4,81,140,131,48,132,114,140,146,140,3,113,140,146,114,140,178,140,85, + 149,89,166,125,207,189,223,124,207,28,199,27,191,251,182,60,199,154,174,251, + 190,251,190,218,182,251,190,121,166,153,174,4,121,174,186,89,166,247,149,24, + 158,182,157,182,157,214,157,150,149,150,149,117,149,150,149,52,141,117,149,52, + 141,52,141,20,141,243,132,244,132,243,132,20,141,244,140,211,132,178,132,211, + 132,211,132,211,140,146,132,178,132,211,132,178,132,146,124,146,124,178,132,179, + 132,146,124,211,132,211,140,243,140,211,132,211,140,243,140,211,132,211,132,179, + 132,178,132,211,132,178,124,179,132,211,132,244,140,20,141,20,141,211,132,20, + 141,211,132,20,141,244,140,85,149,150,157,3,183,157,189,215,157,25,158,57, + 166,90,166,122,166,122,166,187,174,252,182,188,174,93,199,61,191,126,215,126, + 207,158,215,190,223,191,223,223,231,255,239,255,247,255,239,255,247,255,247,255, + 239,255,247,255,255,255,255,185,165,207,115,171,74,9,58,41,58,9,50,8, + 50,232,49,200,49,200,49,200,41,200,49,232,49,200,49,232,49,233,57,232, + 49,233,57,233,57,41,66,107,74,139,74,139,74,171,82,204,82,236,90,81, + 132,244,156,243,148,244,156,244,156,114,132,241,115,17,108,82,124,4,147,124, + 146,115,116,82,108,18,100,241,91,209,99,118,149,179,132,86,157,255,239,155, + 150,244,140,151,157,49,108,139,66,20,149,154,182,122,166,255,247,7,255,255, + 136,158,231,85,141,247,189,208,99,6,17,71,33,71,25,230,16,4,132,8, + 144,100,0,38,25,204,82,110,107,236,90,237,90,45,99,78,99,110,107,175, + 115,208,115,208,123,240,123,17,124,17,132,17,132,4,49,132,132,81,132,81, + 132,81,140,81,140,6,114,140,13,146,140,134,146,148,178,148,211,156,16,124, + 37,33,228,32,3,4,33,130,228,32,228,32,4,4,33,195,228,32,130,16, + 36,41,200,114,195,65,36,82,36,82,166,98,134,90,231,106,231,106,198,106, + 133,90,133,90,198,106,198,106,37,82,70,90,69,90,37,82,37,74,228,73, + 228,73,196,65,195,65,163,57,163,57,162,57,131,57,130,57,130,57,98,49, + 98,57,130,57,98,57,98,49,130,57,98,57,130,57,130,49,131,57,163,57, + 163,57,163,65,196,65,228,65,4,74,5,74,37,82,69,82,70,90,102,90, + 102,90,135,98,134,98,167,98,135,98,135,98,102,98,102,98,70,90,37,82, + 37,82,5,82,228,73,196,65,163,65,4,98,49,143,131,57,131,57,195,65, + 228,73,37,82,70,90,134,98,200,106,232,114,73,131,138,139,171,147,237,163, + 45,172,110,172,159,3,135,12,91,44,91,44,99,12,99,44,99,12,91,12, + 99,4,44,99,135,45,99,12,91,44,99,45,99,44,99,45,99,45,99,5, + 44,99,132,45,99,44,99,45,99,45,99,3,44,99,131,45,99,44,99,44, + 99,3,45,99,130,45,91,44,99,4,45,99,129,44,99,4,45,99,129,45, + 91,3,45,99,134,45,91,45,99,45,91,45,91,77,99,77,99,3,45,99, + 134,77,99,77,91,45,99,45,91,45,91,77,91,3,77,99,133,45,91,77, + 99,77,91,45,99,77,99,4,77,91,133,45,99,77,99,77,91,45,91,77, + 99,3,77,91,129,77,99,3,77,91,140,77,99,45,91,236,82,236,82,12, + 91,45,99,175,107,49,116,114,124,147,124,147,124,179,124,4,179,132,134,179, + 124,179,132,211,132,180,132,180,132,180,124,4,179,132,171,211,132,179,124,211, + 132,180,124,212,132,180,132,179,132,147,124,82,124,81,116,17,116,17,116,17, + 108,240,107,17,116,17,108,241,107,17,116,17,108,17,116,17,116,49,116,82, + 116,114,116,115,124,147,124,180,124,82,124,171,74,195,24,163,8,111,75,82, + 108,180,116,179,124,148,116,179,116,179,132,215,165,142,115,170,82,170,82,138, + 82,3,105,74,149,73,74,105,74,73,74,105,74,73,74,105,74,73,74,73, + 66,73,74,73,74,41,66,73,66,41,66,41,66,8,58,41,66,8,58,8, + 58,232,57,8,58,232,57,4,232,49,3,199,41,168,200,41,200,41,167,33, + 139,66,13,83,178,148,49,132,179,148,12,99,196,16,179,148,81,140,81,132, + 81,140,48,132,207,123,114,140,146,148,113,140,113,140,146,140,113,140,178,140, + 85,157,121,174,60,199,92,199,60,199,27,191,27,191,219,182,28,191,186,182, + 186,182,251,190,153,174,186,174,88,166,121,174,121,174,3,56,166,134,56,158, + 182,149,247,157,150,149,150,149,117,149,4,85,141,3,20,141,130,211,132,243, + 132,3,211,132,130,178,124,211,132,3,146,124,131,178,132,113,132,178,132,3, + 146,132,129,114,124,3,146,132,154,178,132,211,132,179,132,211,140,146,132,179, + 132,178,124,178,132,146,124,146,124,146,132,146,124,179,132,146,124,211,132,146, + 124,244,140,211,132,211,140,243,140,244,140,20,141,211,132,85,149,85,149,117, + 149,3,150,149,146,183,149,215,157,24,158,57,166,89,166,57,166,155,174,188, + 182,252,182,252,182,61,191,61,191,126,207,158,215,223,223,223,231,255,239,255, + 239,5,255,247,142,255,255,223,239,242,107,114,132,204,82,9,58,9,58,9, + 50,233,49,9,50,200,49,200,49,200,41,168,41,3,200,49,3,232,49,146, + 233,57,41,58,106,66,106,74,139,74,171,74,172,82,172,82,240,123,244,156, + 243,148,244,148,244,148,114,132,241,115,17,108,82,124,115,124,3,147,124,146, + 115,116,82,108,18,100,241,91,209,99,118,157,212,140,151,157,255,239,253,174, + 179,132,151,157,81,116,139,66,211,140,122,182,90,166,255,239,7,255,255,136, + 190,231,85,141,215,181,17,116,6,17,71,33,71,25,6,25,4,132,8,145, + 100,0,6,17,171,82,111,107,236,90,236,90,45,99,78,99,110,107,175,115, + 208,115,240,123,16,124,17,124,16,124,17,124,17,132,3,49,132,132,81,132, + 81,132,81,140,81,132,5,114,140,6,146,140,129,114,140,7,146,140,134,146, + 148,179,148,211,148,81,140,69,33,228,24,4,4,33,129,4,25,4,4,33, + 137,228,24,162,16,227,32,200,114,227,73,232,106,69,90,101,90,102,90,3, + 101,90,133,36,74,36,82,36,82,102,90,195,65,4,130,57,3,130,49,129, + 130,57,4,98,49,160,130,49,131,57,162,57,195,65,195,65,228,65,5,74, + 37,82,70,82,102,90,102,98,135,98,134,98,135,98,167,98,135,106,135,98, + 134,98,70,90,70,90,37,82,4,74,196,65,195,65,163,57,195,65,163,65, + 163,65,130,57,131,57,130,57,130,49,4,130,57,145,98,57,70,74,233,106, + 41,123,139,139,171,155,13,164,45,172,110,180,143,188,175,196,208,196,241,196, + 17,197,17,205,17,205,49,205,4,17,205,171,3,131,12,99,12,99,12,91, + 3,12,99,134,12,91,44,99,44,99,12,99,44,99,12,99,4,44,99,129, + 12,91,4,44,99,129,45,99,6,44,99,3,45,99,136,44,99,45,99,44, + 99,45,99,45,99,44,99,45,99,45,91,5,45,99,135,45,91,45,99,45, + 99,45,91,45,99,45,99,44,99,4,45,99,3,45,91,131,77,99,77,99, + 45,99,3,45,91,132,77,91,77,99,45,91,45,99,3,77,91,135,45,91, + 77,99,45,91,45,91,77,91,77,99,77,99,13,77,91,165,12,91,204,82, + 236,82,13,91,77,91,208,107,82,116,146,124,147,124,179,124,179,132,147,124, + 179,124,179,132,179,132,180,132,179,132,180,124,180,132,180,132,179,132,211,132, + 180,132,180,132,211,132,179,132,180,132,180,132,180,124,180,124,179,132,179,132, + 147,124,147,124,114,124,82,116,81,116,3,49,116,156,17,116,49,116,17,116, + 17,116,49,116,49,116,82,116,114,116,147,124,147,124,180,124,147,124,175,99, + 134,41,97,8,41,42,18,100,147,116,180,116,179,116,180,116,147,116,178,132, + 150,165,44,99,170,82,138,82,138,82,3,105,74,131,73,74,105,74,105,74, + 5,73,74,136,73,66,73,74,73,74,73,66,41,66,40,66,8,58,8,66, + 3,8,58,135,232,57,232,49,200,49,232,49,232,49,199,41,200,49,3,167, + 41,145,199,41,167,41,106,58,78,91,146,148,114,140,113,140,171,90,69,33, + 178,140,81,140,81,132,49,132,49,132,211,148,146,140,81,140,3,113,140,170, + 146,140,178,140,182,157,251,190,60,199,251,182,251,190,251,190,218,182,251,190, + 218,182,186,182,89,166,153,174,121,174,88,166,154,174,56,166,56,166,24,166, + 214,157,215,149,150,149,182,157,117,149,52,149,118,149,85,149,52,141,20,141, + 243,132,211,132,211,132,243,132,146,124,146,124,178,124,178,132,113,116,146,124, + 146,132,81,116,3,113,124,138,81,116,81,124,81,116,146,132,113,132,81,124, + 113,132,146,132,113,124,146,124,3,178,132,175,146,132,114,124,81,124,48,116, + 16,108,113,124,113,124,81,116,146,124,81,124,146,132,146,132,114,124,211,132, + 211,132,179,132,178,132,179,132,211,132,244,140,53,149,118,157,20,149,85,149, + 117,149,150,149,53,149,117,149,118,149,151,157,183,157,24,158,90,166,90,166, + 123,166,220,174,188,174,252,182,93,199,93,199,158,215,223,231,255,239,223,239, + 255,239,255,239,223,239,3,255,247,165,191,231,242,107,48,124,204,82,9,58, + 73,58,138,74,232,49,233,49,200,49,200,49,168,41,200,49,200,49,232,49, + 232,49,200,49,232,49,232,49,233,57,41,66,74,66,106,66,139,74,171,82, + 204,82,172,74,110,107,211,156,244,156,244,148,243,148,114,132,241,115,241,115, + 82,116,115,124,3,147,124,146,147,116,82,108,18,100,242,99,209,91,85,149, + 244,140,245,148,255,239,94,183,146,124,151,157,82,116,138,66,146,132,122,182, + 90,166,223,239,7,255,255,160,190,239,150,149,183,181,114,124,39,17,72,33, + 103,33,6,25,164,8,132,8,132,16,132,8,100,0,197,16,139,74,111,107, + 236,82,237,90,13,99,78,99,110,107,143,107,207,115,208,123,240,123,17,124, + 17,124,16,124,49,132,17,124,49,132,49,132,4,81,132,4,114,140,133,146, + 140,114,140,146,140,146,140,114,140,11,146,140,133,146,148,211,148,146,140,199, + 49,195,24,6,4,33,159,228,24,4,33,4,25,4,33,163,24,195,24,168, + 98,227,81,167,98,4,74,163,57,163,57,195,65,195,65,130,57,130,57,162, + 57,163,57,195,65,227,65,195,65,4,74,36,74,227,73,37,82,166,98,102, + 90,4,74,69,82,102,90,135,90,4,167,98,152,167,106,166,106,103,98,102, + 90,69,90,37,82,4,74,228,73,196,65,163,65,163,57,163,57,130,57,131, + 57,163,65,227,65,4,74,36,82,133,90,166,106,8,123,133,98,98,57,130, + 57,3,131,57,145,130,57,130,57,131,57,163,57,130,57,130,57,98,49,9, + 99,82,197,82,205,82,205,50,213,50,213,49,205,50,205,17,205,49,205,3, + 17,205,130,17,197,17,197,5,17,205,132,3,141,44,99,44,99,12,99,44, + 99,12,99,44,99,12,99,44,99,12,99,45,99,45,99,44,99,45,99,7, + 44,99,132,45,99,44,99,44,99,45,99,3,44,99,131,45,99,44,99,44, + 91,4,45,99,3,44,99,3,45,99,130,44,99,44,99,4,45,99,129,77, + 99,3,45,99,131,45,91,45,99,77,99,3,45,91,146,45,99,45,91,45, + 99,45,91,77,99,77,99,45,91,77,99,77,91,45,91,77,99,45,91,45, + 91,77,99,77,99,45,91,77,99,77,99,16,77,91,139,77,99,12,83,236, + 82,236,82,45,91,110,99,240,115,82,116,114,124,147,124,147,124,7,179,132, + 3,180,132,132,179,132,180,132,179,124,180,132,3,179,132,168,180,132,179,124, + 180,132,179,132,179,132,147,132,147,124,147,124,82,124,82,116,82,116,49,116, + 81,116,50,116,50,116,49,116,50,116,82,116,82,116,82,124,146,124,147,124, + 147,124,180,132,50,116,236,82,163,16,228,16,14,67,83,116,180,116,148,116, + 179,116,180,116,147,116,244,140,117,165,235,98,170,82,138,82,6,105,74,130, + 73,74,105,74,5,73,74,135,73,66,73,66,41,66,40,66,40,66,8,58, + 8,66,3,8,58,129,232,57,3,200,49,3,199,49,129,199,41,4,167,41, + 181,171,66,240,115,114,140,81,140,146,148,40,74,167,41,179,148,81,132,81, + 140,49,140,113,140,244,148,113,140,81,140,81,132,81,140,81,140,113,140,146, + 140,56,166,186,182,27,191,251,182,219,182,219,182,251,190,251,190,218,182,154, + 174,88,166,121,174,56,166,56,166,88,174,24,166,56,166,247,157,214,157,214, + 149,150,149,20,141,85,141,52,141,20,141,243,140,211,132,211,132,178,132,179, + 132,114,124,146,124,114,124,4,113,124,3,81,124,129,48,116,3,49,116,204, + 49,124,16,116,81,124,114,132,81,124,81,124,113,132,114,132,146,132,114,124, + 146,124,81,124,81,124,16,116,16,116,240,115,49,124,48,116,49,116,81,124, + 113,124,81,124,113,124,146,132,146,132,114,124,146,124,146,132,146,132,179,132, + 146,124,211,132,20,141,53,149,52,149,85,149,85,149,118,149,85,149,53,149, + 85,149,118,149,150,149,215,157,248,157,57,166,25,158,155,174,122,166,220,182, + 220,182,61,191,158,207,190,223,191,223,223,239,255,239,223,239,255,239,255,239, + 223,239,255,247,255,247,213,132,207,115,204,82,9,58,106,66,45,99,232,49, + 9,58,232,49,232,49,200,49,200,41,200,41,3,200,49,3,232,49,137,9, + 58,42,66,106,74,139,74,171,74,204,82,171,82,13,91,179,148,3,244,156, + 133,114,132,241,115,241,107,50,116,115,124,4,147,124,145,82,108,18,100,241, + 91,209,99,85,149,243,140,213,148,255,231,191,199,82,116,183,157,114,124,139, + 66,114,132,122,182,90,166,190,231,7,255,255,137,223,239,215,157,182,173,179, + 132,71,25,104,33,104,33,6,25,164,16,3,132,8,141,101,0,165,16,74, + 74,78,107,237,90,204,90,13,99,77,99,78,107,143,115,175,115,208,115,240, + 123,4,17,124,132,49,124,49,132,81,132,49,132,3,81,132,3,114,140,131, + 146,140,146,140,114,140,5,146,140,129,114,140,6,146,140,129,114,140,3,146, + 140,131,146,148,41,66,195,24,10,4,33,158,195,24,162,16,104,90,69,90, + 134,90,69,82,163,57,227,65,101,90,69,90,69,82,101,90,134,98,133,90, + 166,98,133,98,134,98,8,115,7,115,100,90,166,98,199,106,199,106,36,82, + 37,82,37,82,4,74,228,73,195,65,163,65,3,163,57,153,131,57,195,57, + 195,65,228,65,4,74,69,82,102,90,167,106,199,114,194,65,130,57,37,74, + 10,148,42,164,74,172,106,172,139,180,138,180,138,180,200,163,130,65,131,57, + 163,57,163,57,131,57,3,163,57,134,231,106,68,90,227,73,98,57,103,74, + 241,180,6,49,205,140,50,205,49,205,50,205,49,205,17,197,241,196,208,196, + 176,188,143,188,78,172,13,156,204,147,200,3,138,44,99,44,99,12,99,12, + 99,44,91,44,99,12,91,44,99,12,91,45,99,6,44,99,140,45,99,12, + 99,45,99,45,99,44,99,44,91,44,99,45,99,45,91,44,99,45,99,45, + 99,3,44,99,4,45,99,129,44,99,4,45,99,135,44,99,44,91,45,91, + 77,99,44,99,45,99,45,91,4,45,99,141,45,91,45,99,77,91,45,99, + 77,99,45,99,45,91,45,99,45,99,77,91,45,99,77,99,45,91,4,45, + 99,5,77,99,8,77,91,132,45,91,77,91,45,91,77,99,6,77,91,140, + 236,82,203,82,236,90,45,91,110,99,17,116,114,124,146,124,147,124,147,132, + 179,132,179,124,4,179,132,152,212,132,180,132,179,132,180,132,179,132,180,132, + 180,132,179,132,212,132,180,132,211,124,180,132,211,124,179,132,212,132,180,124, + 179,132,147,132,115,124,115,124,114,124,82,116,82,124,82,124,3,82,116,133, + 82,124,82,116,114,124,114,124,147,124,3,179,124,144,175,99,8,50,65,8, + 9,34,208,91,148,124,179,116,148,116,179,124,180,116,179,116,211,140,52,157, + 203,90,170,82,170,82,4,105,74,136,73,74,105,74,105,74,73,74,73,74, + 41,74,73,74,73,66,3,73,74,131,41,66,40,66,40,66,3,8,58,133, + 232,57,8,58,232,49,232,49,199,49,3,200,49,129,199,41,3,167,41,155, + 199,41,199,41,106,58,16,124,114,140,81,140,178,156,166,57,9,58,178,148, + 49,132,49,140,48,132,178,148,244,156,81,140,81,140,49,132,81,140,113,140, + 113,140,211,140,56,174,219,182,219,182,251,182,219,182,3,186,182,139,121,174, + 121,174,89,166,121,174,24,158,247,157,182,157,214,157,150,149,150,149,117,149, + 3,20,141,139,243,132,243,140,211,132,178,132,146,124,146,124,113,124,114,124, + 146,124,81,116,16,116,3,81,124,140,49,116,16,116,48,116,113,124,49,116, + 16,116,49,116,16,116,16,116,16,124,16,116,49,116,3,81,124,177,146,132, + 114,124,16,116,240,107,16,116,16,116,207,107,240,107,48,116,16,116,240,107, + 81,116,49,124,81,124,49,116,81,124,114,124,114,124,146,132,146,132,146,124, + 114,124,146,124,146,124,211,132,211,132,243,140,20,141,53,149,53,141,53,141, + 86,149,53,149,52,149,53,141,85,149,118,149,118,149,183,157,183,157,25,166, + 90,166,155,174,188,182,220,182,61,191,126,207,158,215,191,223,4,223,231,167, + 191,223,255,239,255,255,249,173,13,91,139,74,233,49,106,66,12,91,231,49, + 232,49,200,49,200,41,200,49,200,41,168,41,200,49,200,49,168,49,200,49, + 232,57,232,49,9,50,41,58,74,66,107,74,139,74,172,82,172,82,236,82, + 114,140,20,157,244,156,244,148,114,132,241,107,241,107,50,116,115,124,3,147, + 124,146,115,124,82,108,18,100,242,91,177,91,53,149,85,149,245,148,255,231, + 255,207,82,108,183,157,114,124,171,74,48,124,121,182,90,166,158,223,7,255, + 255,160,255,247,247,165,150,173,244,148,136,33,104,33,104,33,38,25,164,8, + 132,8,164,8,132,8,100,0,165,8,42,58,78,99,237,90,236,90,13,99, + 45,99,78,107,143,107,175,115,208,123,16,124,17,124,16,124,16,124,17,124, + 17,124,49,132,49,132,4,81,132,135,82,140,113,140,114,140,114,140,146,140, + 114,140,114,140,4,146,140,133,114,140,114,140,146,140,146,140,114,140,3,146, + 140,134,114,140,146,140,114,140,179,148,139,74,162,16,5,4,33,218,228,24, + 4,33,228,32,4,33,4,33,195,24,130,16,7,74,134,106,69,82,102,90, + 134,90,102,90,134,90,101,90,166,98,166,98,133,98,69,90,101,90,3,74, + 227,73,69,82,36,82,130,49,195,57,195,57,195,65,195,57,163,57,228,65, + 4,74,69,82,134,90,199,106,232,114,74,131,139,139,203,147,237,163,45,172, + 110,180,143,180,175,188,208,196,241,196,17,205,101,106,98,49,228,65,108,164, + 72,172,231,155,8,156,199,147,199,147,134,131,73,172,195,81,130,57,163,65, + 162,57,163,57,131,57,131,57,130,49,232,106,166,106,133,98,98,57,228,65, + 176,164,50,205,17,197,209,188,143,188,110,172,45,164,204,147,138,139,73,123, + 200,106,166,98,70,82,36,82,4,74,228,73,4,74,4,74,4,82,189,3, + 132,12,91,44,99,44,99,12,91,4,44,99,130,44,91,12,91,3,44,99, + 134,12,99,44,99,45,99,45,99,44,99,12,99,3,45,99,134,44,99,44, + 91,44,99,45,99,45,99,45,91,4,44,99,134,45,99,45,91,45,99,44, + 91,44,99,44,99,6,45,99,143,45,91,45,99,77,99,45,99,45,99,45, + 91,77,99,45,91,45,99,45,99,77,99,45,99,45,99,45,91,77,99,3, + 77,91,137,45,99,77,99,77,99,45,91,77,99,77,91,77,91,77,99,45, + 99,3,77,99,130,45,91,77,99,14,77,91,142,45,91,236,82,204,82,12, + 91,45,91,143,99,49,116,114,124,147,124,147,132,179,132,147,132,147,124,179, + 124,4,179,132,150,180,132,180,132,179,132,180,132,211,132,179,132,211,132,180, + 132,180,132,211,132,212,132,212,124,180,132,180,132,179,124,180,132,179,132,147, + 124,146,124,115,124,115,124,114,116,6,114,124,148,147,124,147,124,179,124,179, + 124,212,132,17,116,171,74,195,16,228,16,78,75,82,108,179,116,180,124,180, + 124,180,116,180,124,179,124,85,149,211,148,170,82,3,138,82,129,105,74,4, + 73,74,139,105,74,73,74,73,74,73,66,41,74,73,74,41,66,73,74,73, + 74,41,66,40,66,4,8,58,138,232,57,232,57,232,49,199,49,199,49,232, + 49,199,49,199,49,167,41,167,33,3,167,41,197,232,41,204,74,17,124,146, + 148,114,140,178,148,37,41,139,74,211,156,49,132,49,132,48,132,211,148,178, + 148,81,140,49,132,81,140,81,132,113,140,114,140,20,141,247,165,186,182,218, + 182,153,174,186,174,186,174,89,174,89,174,56,158,24,158,247,157,24,158,150, + 149,182,157,149,149,117,149,52,141,20,141,211,132,211,132,178,132,146,124,146, + 124,113,124,146,132,146,124,114,132,81,124,49,116,48,116,81,124,48,116,16, + 116,81,124,16,116,240,107,240,107,207,107,240,107,207,107,240,107,16,116,48, + 116,240,115,239,115,49,116,16,116,239,115,5,16,116,153,240,107,240,107,208, + 115,16,116,207,107,208,107,208,107,49,116,16,116,16,116,239,115,49,124,16, + 116,81,116,49,124,114,132,49,124,49,124,81,124,49,116,81,124,81,124,146, + 124,178,132,146,132,6,20,141,160,244,140,20,141,20,141,52,149,53,149,53, + 149,86,149,150,157,183,149,24,158,57,158,123,166,187,174,252,182,93,199,190, + 215,191,223,223,231,255,239,223,231,191,223,191,223,255,247,122,190,110,107,45, + 91,9,58,73,58,236,90,199,49,9,50,200,49,3,168,41,173,200,41,200, + 49,200,49,168,49,200,49,200,49,232,49,9,58,9,58,42,58,106,66,139, + 74,171,82,172,82,172,82,16,124,20,157,244,156,244,156,114,132,241,107,241, + 107,50,116,115,124,115,124,147,124,115,124,147,116,83,108,18,100,241,91,177, + 91,21,149,52,149,21,149,255,231,223,207,49,108,183,165,147,124,171,74,240, + 115,89,182,122,174,93,215,8,255,255,136,56,166,85,165,53,149,200,33,104, + 33,136,33,38,33,164,8,3,132,8,155,132,0,133,8,9,58,46,99,237, + 90,204,90,13,91,45,99,78,99,143,107,175,115,208,115,240,123,17,124,17, + 124,16,124,17,124,49,124,49,132,49,124,49,132,81,132,81,132,82,132,82, + 132,114,140,114,140,4,146,140,148,114,140,114,140,146,140,114,140,146,140,146, + 140,114,140,146,140,146,140,114,140,114,140,146,140,114,140,114,132,114,140,146, + 148,45,91,130,16,4,33,228,32,8,4,33,159,228,24,130,16,166,57,231, + 122,4,66,167,98,199,106,4,74,227,65,36,82,227,65,227,65,195,65,162, + 57,36,74,134,98,199,106,232,106,73,115,139,139,204,147,237,155,78,172,143, + 180,176,188,241,196,241,196,17,205,50,205,50,213,50,213,5,82,213,173,50, + 213,50,213,50,205,49,205,50,205,82,213,72,147,97,49,130,49,235,139,137, + 180,7,156,199,147,199,147,232,155,232,155,106,172,100,106,130,57,130,57,131, + 57,130,57,131,57,130,57,130,57,130,49,130,57,130,57,131,57,163,57,69, + 82,37,82,4,74,228,65,228,65,196,73,228,73,4,74,4,82,69,90,101, + 90,135,98,167,106,167,106,200,106,3,167,106,1,102,98,170,3,3,12,99, + 135,44,99,44,99,12,99,12,99,44,99,44,99,12,99,3,44,99,129,12, + 99,7,44,99,146,45,99,44,99,45,99,45,99,45,91,45,91,44,99,45, + 99,44,99,45,99,44,99,44,99,45,99,45,99,45,91,44,99,45,99,45, + 91,3,45,99,131,77,99,45,91,45,91,4,45,99,129,45,91,3,45,99, + 142,77,99,45,91,77,91,45,91,45,91,77,99,45,91,45,99,45,99,77, + 99,45,99,45,99,77,91,45,91,3,77,99,3,77,91,130,77,99,77,99, + 14,77,91,142,77,99,13,91,236,82,204,82,13,91,45,99,175,107,50,116, + 114,124,147,132,147,124,179,124,147,132,179,124,3,179,132,129,180,132,4,179, + 132,134,180,132,180,124,179,132,179,132,212,132,180,132,4,179,132,135,180,132, + 180,124,179,132,179,124,147,124,147,124,114,124,3,115,124,145,114,124,114,124, + 146,124,114,124,115,124,147,124,179,124,179,124,180,132,180,132,110,99,199,49, + 65,8,42,34,241,91,147,116,179,116,3,180,124,132,212,124,147,124,117,157, + 113,132,3,138,82,130,105,82,105,74,7,73,74,137,40,66,73,74,41,66, + 73,66,41,74,73,66,41,66,40,66,8,66,4,8,58,135,232,57,232,49, + 199,49,199,49,200,49,199,49,200,41,5,167,41,161,200,33,171,66,49,124, + 114,140,81,140,114,148,37,33,45,91,243,156,49,132,81,140,49,132,16,132, + 48,132,114,140,81,132,81,140,49,132,81,132,114,132,20,149,248,165,153,174, + 218,182,89,166,56,166,89,166,88,166,24,158,215,149,182,149,150,149,85,149, + 3,52,141,149,211,132,243,132,178,132,114,124,178,132,146,124,113,124,114,124, + 113,124,146,132,113,124,114,132,49,116,48,116,240,115,16,116,240,107,16,116, + 16,116,49,116,240,115,3,16,116,139,207,107,240,107,16,116,239,107,240,115, + 16,116,16,116,240,115,48,116,16,116,240,115,3,16,116,4,240,115,154,207, + 107,207,107,239,107,240,107,240,107,240,115,16,116,16,116,48,116,16,116,48, + 116,81,124,49,124,81,124,48,124,81,124,49,116,81,124,81,116,114,124,146, + 124,211,140,244,140,20,141,244,140,243,140,5,244,140,155,20,141,20,141,53, + 149,85,149,85,149,150,149,183,157,248,157,122,166,123,166,219,174,61,191,93, + 199,158,215,158,215,191,223,223,231,223,231,255,247,123,182,45,99,204,82,232, + 49,74,66,236,90,199,49,233,57,3,200,41,133,168,41,168,41,168,49,200, + 41,168,41,3,200,49,146,232,49,9,58,41,66,106,66,139,74,171,82,172, + 82,139,74,175,115,20,157,243,156,244,148,114,132,241,115,241,107,50,116,82, + 124,115,124,3,147,124,145,82,108,18,100,241,91,177,91,21,141,85,149,179, + 140,223,223,255,215,49,108,216,165,211,132,203,74,207,107,90,182,122,174,60, + 215,8,255,255,158,89,182,85,157,118,165,9,42,104,33,136,33,71,25,164, + 16,132,8,164,8,132,8,100,0,132,0,200,49,45,99,237,90,204,82,13, + 99,45,99,78,99,143,107,175,115,208,115,240,123,17,124,17,124,16,124,17, + 124,17,124,49,124,3,49,132,138,81,132,81,132,82,132,114,140,114,140,146, + 140,146,140,114,140,146,140,146,140,3,114,140,130,146,140,146,140,7,114,140, + 138,81,132,81,132,146,140,175,107,130,8,4,33,228,32,4,33,4,33,228, + 32,3,4,33,152,228,32,4,33,228,32,130,16,101,41,9,123,195,65,166, + 98,166,98,37,82,130,57,163,57,162,57,162,57,163,65,130,57,41,115,241, + 196,17,205,17,205,49,205,50,213,82,213,50,213,3,82,213,129,50,213,3, + 50,205,130,49,205,50,213,3,50,205,179,50,213,50,213,82,213,50,213,50, + 213,50,205,49,205,82,213,203,171,65,49,98,49,8,107,9,156,167,147,167, + 139,103,131,70,131,6,123,230,114,4,82,163,65,196,65,228,65,4,74,4, + 74,37,82,69,82,70,90,102,98,134,98,166,98,167,98,102,98,134,98,134, + 98,135,98,134,98,134,98,102,90,69,90,69,90,37,82,4,74,228,73,195, + 65,163,65,163,65,130,57,98,57,98,57,98,49,184,3,131,12,99,44,99, + 12,99,3,44,99,135,12,91,44,99,44,99,12,91,44,99,12,99,12,99, + 4,44,99,134,12,91,44,99,44,99,12,99,45,99,45,99,4,44,99,5, + 45,99,129,45,91,3,45,99,145,45,91,44,99,77,99,45,99,77,91,45, + 91,45,99,45,99,45,91,45,99,44,99,45,99,77,99,45,91,45,99,45, + 99,45,91,3,45,99,133,77,99,45,99,45,91,45,91,45,99,3,77,99, + 130,77,91,77,99,3,77,91,133,77,99,77,99,77,91,77,99,77,99,5, + 77,91,162,77,99,77,91,77,99,77,91,77,99,77,91,77,99,77,91,77, + 99,77,91,77,99,12,83,203,82,236,90,13,91,77,99,208,107,50,124,146, + 124,146,124,179,124,179,132,179,132,179,124,179,124,180,132,179,132,179,132,180, + 132,179,132,211,132,180,132,179,132,180,132,4,179,132,3,180,132,131,179,124, + 180,132,211,132,3,179,124,11,147,124,151,179,132,179,124,212,132,82,116,171, + 74,228,24,163,8,111,75,82,108,180,124,179,116,180,124,180,124,212,124,180, + 124,211,132,85,157,15,124,105,82,170,82,138,82,105,74,105,74,4,73,74, + 145,41,74,73,74,73,74,41,66,40,74,73,74,40,66,73,74,40,66,41, + 66,40,66,40,58,8,58,232,57,8,58,232,57,232,57,3,199,49,150,199, + 41,200,49,199,41,167,41,135,41,167,41,167,41,70,33,45,83,139,74,49, + 132,114,140,81,140,16,124,102,41,167,49,146,148,113,140,49,140,49,140,239, + 131,48,132,3,81,140,166,81,132,81,132,113,132,52,149,24,158,154,174,56, + 166,247,157,248,157,247,157,214,149,150,149,118,149,52,141,85,141,20,141,20, + 141,243,132,178,132,178,124,146,124,146,124,81,116,81,116,49,116,114,132,114, + 132,113,132,113,124,113,124,49,124,113,132,48,124,16,116,16,116,240,115,16, + 116,207,107,4,240,115,137,16,116,207,107,207,107,16,116,207,107,208,107,240, + 115,207,107,207,107,4,16,116,139,49,124,240,115,16,116,16,116,207,107,208, + 107,207,107,207,107,175,107,239,107,239,107,3,16,116,227,240,115,49,116,16, + 116,240,115,81,124,49,124,16,116,81,116,49,116,81,124,17,116,49,116,114, + 124,179,132,211,132,211,132,211,140,211,132,179,132,179,132,211,140,211,132,211, + 140,243,140,243,140,244,140,52,149,20,141,118,149,85,141,151,149,248,157,57, + 158,123,166,220,174,253,182,94,199,94,199,158,215,159,215,255,239,255,231,29, + 191,204,90,236,90,9,58,73,66,236,90,167,49,232,49,200,41,200,49,168, + 49,200,41,167,41,168,41,200,41,200,41,168,41,200,41,200,49,232,57,233, + 49,41,58,74,66,139,74,171,74,171,74,139,74,45,99,244,156,244,156,244, + 148,114,132,240,107,241,107,50,116,114,124,115,124,115,124,147,124,115,124,82, + 108,18,108,242,99,177,91,245,140,85,149,147,132,158,215,255,231,49,100,216, + 165,244,132,203,74,142,107,57,182,90,174,60,207,8,255,255,152,89,182,85, + 157,150,165,42,50,103,33,136,41,103,33,197,16,131,16,132,16,132,8,100, + 0,100,0,200,41,13,99,237,90,204,82,237,90,45,99,78,99,110,107,175, + 115,208,115,240,123,4,17,124,135,49,124,17,124,49,124,49,132,49,132,81, + 132,81,132,4,114,140,138,146,140,114,140,146,140,146,140,114,140,114,140,146, + 140,146,140,114,140,146,140,6,114,140,133,81,132,81,132,146,140,16,124,163, + 16,3,228,32,130,4,33,228,24,5,4,33,144,228,32,162,16,4,33,41, + 123,227,65,167,98,134,90,134,98,130,57,163,57,102,90,4,74,194,65,130, + 57,233,106,82,205,8,82,213,129,114,213,4,82,213,176,50,213,50,213,17, + 205,241,196,208,196,143,180,110,172,45,164,236,155,171,139,106,131,8,115,232, + 106,101,98,130,57,195,65,4,74,102,82,102,90,101,90,102,90,134,98,135, + 98,167,106,168,106,200,106,167,106,199,106,167,106,167,98,134,98,102,90,70, + 90,37,82,37,74,228,73,228,65,196,65,163,65,163,65,163,57,131,57,130, + 57,130,57,98,57,98,49,98,49,97,49,3,98,49,133,130,57,130,57,195, + 65,228,73,4,82,210,3,134,12,99,12,99,44,91,12,91,44,99,12,91, + 3,12,99,157,44,99,12,99,44,99,12,99,44,99,44,99,12,99,44,99, + 44,99,45,99,44,99,45,99,44,99,45,99,45,99,44,99,45,99,45,99, + 45,91,45,91,45,99,44,91,44,91,77,99,44,91,44,99,44,91,44,91, + 44,99,7,45,99,133,45,91,45,99,45,99,45,91,45,99,3,77,99,134, + 45,91,77,99,77,99,45,99,45,91,77,99,3,77,91,3,77,99,133,77, + 91,77,91,77,99,77,99,77,91,4,77,99,130,77,91,77,91,3,77,99, + 149,77,91,77,91,45,91,77,91,45,91,77,99,77,91,109,99,77,91,77, + 99,77,91,236,82,236,82,236,90,13,91,110,99,240,107,114,124,146,124,147, + 124,147,132,3,179,132,129,179,124,4,179,132,135,180,132,180,132,179,132,180, + 132,211,132,211,132,179,132,4,211,132,135,179,132,179,124,211,132,179,132,179, + 132,179,124,179,132,3,147,124,129,179,124,5,147,124,142,179,124,180,132,180, + 124,212,132,147,124,142,99,134,33,97,8,42,42,18,100,147,116,179,116,179, + 124,180,124,3,212,124,131,179,132,117,157,141,115,3,138,82,130,105,74,105, + 74,6,73,74,138,41,66,73,74,41,74,41,66,41,66,40,66,73,66,40, + 66,8,66,8,66,3,8,58,135,231,57,231,49,199,49,199,41,199,49,199, + 49,167,49,3,167,41,144,135,33,167,41,102,25,78,83,78,99,114,140,114, + 140,81,140,240,123,174,115,228,24,228,16,81,140,113,140,113,140,239,123,6, + 81,140,156,113,132,243,148,118,149,215,157,24,166,182,157,182,157,117,149,118, + 149,85,149,243,132,20,141,211,132,146,124,114,124,114,124,146,124,113,124,81, + 124,48,116,48,116,16,116,49,116,81,124,81,124,80,124,16,116,48,116,3, + 16,116,148,239,115,16,116,48,116,240,107,240,115,207,107,207,107,240,115,207, + 107,240,115,207,107,207,107,175,107,175,107,207,107,175,107,16,116,240,107,175, + 107,240,115,3,16,116,134,240,115,16,116,239,115,207,107,175,107,240,115,6, + 207,107,132,49,124,16,116,49,116,240,107,3,16,116,221,17,116,239,107,16, + 116,240,107,175,99,16,108,81,116,81,124,178,132,179,132,146,124,147,132,147, + 132,179,132,178,132,179,132,178,132,146,132,179,132,211,132,244,140,244,140,211, + 132,20,141,21,141,118,141,151,149,183,149,25,158,122,166,90,158,253,182,29, + 191,61,191,126,207,255,231,223,223,204,82,236,82,9,50,74,66,236,90,167, + 49,232,49,200,49,167,41,167,41,168,41,167,41,200,41,199,41,168,41,168, + 41,200,49,233,49,232,49,41,58,9,58,74,66,107,74,171,74,171,74,139, + 74,171,82,211,148,20,157,244,156,82,124,240,107,241,107,49,116,82,116,115, + 124,147,124,147,124,115,124,83,116,18,108,242,91,177,91,212,140,85,157,147, + 132,126,207,255,223,82,100,151,165,212,132,236,82,109,99,248,173,90,174,28, + 207,8,255,255,165,122,182,85,157,182,173,139,58,103,33,169,41,104,33,229, + 16,99,8,132,8,132,8,100,0,100,0,136,41,237,90,237,90,204,82,13, + 91,13,99,45,99,110,107,143,115,208,115,240,115,16,124,16,124,17,124,17, + 124,16,124,240,123,16,124,49,132,81,132,81,132,49,132,49,132,81,132,3, + 114,140,136,146,140,114,140,146,140,146,140,114,140,146,140,114,140,146,140,4, + 114,140,130,113,140,114,140,3,81,132,139,114,140,81,132,4,25,227,24,228, + 32,4,25,4,33,228,24,4,33,4,33,228,32,3,4,33,207,163,24,195, + 24,233,106,36,82,166,90,69,82,199,106,162,57,163,57,165,90,199,106,101, + 90,130,49,103,82,241,196,82,205,17,205,17,197,208,196,175,188,175,180,110, + 172,46,164,12,156,203,147,138,139,105,123,9,115,232,106,167,98,102,90,102, + 90,69,82,36,74,37,74,5,82,37,74,69,82,70,90,102,90,134,98,167, + 98,168,106,167,106,167,106,134,98,102,90,102,90,38,90,37,82,4,74,228, + 73,195,65,163,65,130,57,130,57,130,49,98,49,98,49,130,57,98,49,98, + 57,130,57,162,57,131,57,163,57,163,65,195,65,195,65,228,73,4,74,37, + 82,69,90,102,90,134,98,167,106,167,106,199,106,200,114,3,232,114,130,168, + 106,167,106,178,3,134,12,91,12,99,44,99,12,91,44,99,12,91,4,44, + 99,129,12,99,4,44,99,129,12,99,4,44,99,3,45,99,3,44,99,4, + 45,99,150,45,91,45,99,45,99,44,99,45,99,45,91,45,91,45,99,45, + 99,45,91,45,99,45,99,45,91,45,99,45,91,45,99,45,99,45,91,77, + 99,77,99,45,91,77,99,3,45,99,4,77,99,138,45,99,77,91,77,91, + 45,91,77,91,77,99,77,91,77,99,77,99,77,91,4,77,99,3,77,91, + 135,77,99,77,91,77,91,77,99,77,91,77,99,77,99,5,77,91,140,77, + 99,45,91,236,82,203,82,236,90,45,99,142,99,17,108,114,124,146,124,147, + 124,147,124,4,179,132,129,179,124,4,179,132,140,180,132,179,132,180,132,179, + 132,180,132,180,132,211,132,179,132,180,132,211,124,212,132,180,124,3,179,132, + 131,180,132,179,124,179,132,4,179,124,157,147,132,179,132,179,132,179,124,180, + 124,212,124,180,132,212,132,17,116,171,74,130,16,37,17,78,75,82,116,179, + 124,179,124,180,124,212,124,212,132,212,124,212,124,179,132,117,165,44,99,170, + 82,138,82,138,82,105,82,105,74,3,73,74,136,41,74,73,74,41,74,73, + 66,41,66,73,74,41,74,41,66,3,40,66,135,8,66,8,58,8,58,232, + 57,232,57,231,57,231,49,4,199,49,199,167,41,167,41,135,41,167,41,167, + 41,167,33,70,33,237,74,111,107,179,148,114,140,114,140,48,132,49,132,110, + 107,196,24,135,41,240,123,146,148,240,131,81,140,81,140,80,132,113,140,81, + 140,81,132,113,132,179,140,85,149,182,157,150,157,117,149,85,149,20,141,20, + 141,211,132,211,132,146,124,114,124,113,124,81,124,48,116,49,116,49,116,16, + 116,207,107,16,116,240,107,49,116,48,116,49,116,49,124,49,116,48,124,16, + 116,240,115,239,107,240,115,239,115,16,116,240,115,239,107,207,107,207,107,239, + 107,175,107,175,107,240,107,207,107,175,99,207,115,3,207,107,135,240,115,207, + 107,207,107,240,107,240,115,16,116,240,107,4,207,107,135,175,107,207,107,207, + 107,175,107,208,107,207,107,16,116,3,240,115,144,16,116,240,107,240,115,16, + 116,240,115,208,115,208,115,240,115,208,107,207,107,175,99,49,124,114,124,178, + 132,146,132,82,124,3,114,124,159,146,132,146,124,114,124,146,124,179,132,211, + 132,211,132,179,132,211,132,243,132,53,141,20,141,85,141,150,149,216,157,25, + 158,155,174,188,174,28,183,61,199,191,223,28,191,13,91,236,90,8,50,41, + 58,236,90,167,49,232,49,200,49,168,41,5,167,41,170,168,41,168,41,232, + 49,41,58,232,49,138,66,233,49,41,66,106,74,139,74,171,74,139,74,107, + 74,114,140,20,157,244,156,82,124,241,115,241,107,17,116,82,124,115,124,147, + 124,115,124,115,124,82,108,18,108,241,91,177,91,212,140,118,157,179,140,61, + 207,255,231,83,100,150,157,244,132,236,82,45,99,183,173,90,166,252,198,8, + 255,255,136,154,190,85,157,183,173,204,66,103,33,169,41,136,33,229,16,3, + 132,8,155,132,0,100,0,103,33,237,90,237,90,204,82,237,90,13,91,46, + 99,110,107,143,107,207,115,240,123,17,124,16,124,17,124,17,124,240,123,208, + 115,240,123,49,132,49,132,81,132,81,132,48,132,49,132,113,140,3,114,140, + 133,146,140,146,140,114,140,114,140,146,140,3,114,140,131,113,140,81,132,113, + 132,3,81,132,136,49,132,81,132,81,132,113,140,102,41,195,24,4,33,228, + 32,8,4,33,149,195,24,130,16,168,90,101,98,134,90,69,82,231,106,194, + 65,163,57,195,57,228,65,195,65,130,57,228,65,74,123,74,123,41,123,8, + 115,231,106,199,98,167,98,3,134,90,3,102,90,130,102,98,102,98,3,134, + 98,142,102,98,134,98,102,98,102,90,70,90,37,90,37,82,4,74,4,74, + 196,65,195,65,163,57,131,57,130,57,5,98,49,141,130,57,162,57,163,65, + 195,65,228,73,228,73,4,74,37,82,69,82,70,90,102,98,134,98,167,98, + 6,167,106,139,134,98,134,98,102,90,70,90,69,90,4,82,4,82,227,73, + 195,65,163,65,163,65,3,130,57,184,3,158,147,52,110,83,236,98,11,99, + 12,99,12,99,44,99,44,91,44,99,45,99,12,99,44,99,44,91,44,99, + 45,99,13,99,44,99,45,91,44,99,44,99,45,99,12,91,44,99,45,99, + 44,99,44,99,12,99,44,99,45,99,45,91,6,45,99,149,45,91,45,91, + 77,99,44,99,45,99,45,99,77,99,45,99,77,99,45,99,45,91,77,99, + 45,91,45,99,45,99,77,91,45,99,45,91,45,99,77,99,45,99,11,77, + 99,129,77,91,4,77,99,4,77,91,132,77,99,77,91,77,91,77,99,3, + 77,91,146,77,99,77,99,109,91,77,91,77,99,45,91,236,82,236,82,12, + 91,45,99,143,99,17,116,114,124,147,124,147,124,147,132,179,124,179,124,3, + 179,132,134,211,132,211,132,179,132,179,132,211,132,179,132,3,180,132,141,179, + 132,212,132,180,132,179,124,180,124,212,124,180,132,211,124,212,124,180,132,180, + 132,180,124,179,132,3,179,124,145,179,132,180,124,180,132,179,124,212,124,180, + 132,180,132,212,132,146,124,77,91,134,41,97,8,107,50,241,99,147,124,179, + 124,179,116,4,212,124,140,212,132,211,140,117,165,203,90,170,82,138,82,138, + 82,105,74,105,74,73,74,73,74,41,74,4,73,74,131,41,66,41,66,41, + 74,4,41,66,129,40,66,3,8,58,167,231,57,231,57,232,57,199,49,199, + 41,199,41,167,49,167,49,167,41,134,41,167,41,135,33,167,41,70,25,204, + 74,143,107,179,148,81,140,114,140,81,140,48,132,81,140,44,99,163,16,168, + 41,48,132,207,123,113,140,81,140,81,140,113,140,113,140,114,140,113,140,178, + 140,52,149,117,149,85,149,52,149,3,243,140,150,211,132,146,132,49,124,81, + 124,49,116,49,116,16,116,240,107,239,107,207,107,207,107,240,107,207,107,175, + 99,16,116,48,116,48,116,49,116,49,116,16,116,48,116,16,116,6,207,107, + 133,174,107,207,107,175,107,174,107,175,99,4,207,107,141,207,115,207,115,207, + 107,208,107,175,107,207,107,207,107,240,115,240,115,175,107,175,107,207,107,143, + 107,3,175,107,187,142,99,207,107,240,115,240,107,240,115,16,116,48,116,16, + 116,207,107,240,115,240,107,207,107,175,99,207,107,16,116,207,107,175,107,175, + 99,240,107,49,124,179,132,114,124,49,116,49,116,114,124,82,124,82,124,81, + 124,146,124,114,124,179,132,146,124,211,132,211,132,179,132,244,140,244,140,243, + 132,244,140,53,141,86,141,151,149,25,158,90,166,220,174,29,191,126,199,29, + 183,13,91,139,74,8,58,41,58,203,90,167,49,200,49,200,41,200,41,135, + 41,168,41,5,167,41,168,200,49,41,58,168,41,74,66,200,49,41,66,106, + 66,139,74,171,74,139,74,74,66,49,132,20,157,244,148,82,124,241,107,240, + 107,17,116,82,116,115,124,147,124,147,124,115,124,83,116,50,100,242,99,177, + 83,179,132,85,149,49,124,28,199,255,247,148,100,117,157,244,132,236,82,12, + 91,150,165,57,166,219,190,8,255,255,137,219,198,85,157,215,181,13,75,103, + 33,201,41,136,33,229,16,99,8,3,132,8,154,100,0,71,33,204,82,237, + 90,172,82,13,91,13,99,45,99,110,107,143,107,176,115,208,115,240,123,17, + 124,17,124,16,124,240,115,208,115,240,123,16,124,49,132,49,132,81,132,49, + 124,49,132,81,132,3,114,140,132,146,140,114,140,146,140,146,140,4,114,140, + 129,81,132,8,49,132,138,114,140,200,49,195,24,4,33,228,32,4,33,228, + 32,4,33,4,33,4,25,3,4,33,161,195,24,130,16,71,74,166,114,69, + 82,69,90,232,106,69,82,4,74,69,82,102,90,134,90,134,98,134,98,135, + 98,167,98,167,98,167,106,167,98,166,98,135,98,134,98,102,90,102,90,69, + 90,69,82,4,82,228,73,227,73,195,65,163,65,162,57,195,65,3,130,57, + 145,98,49,98,49,97,49,98,49,130,49,130,57,163,65,195,65,228,65,5, + 74,37,82,69,90,134,90,134,98,167,106,167,106,199,106,3,200,106,146,167, + 106,199,106,135,98,134,98,102,90,69,90,37,82,4,82,228,73,195,73,195, + 65,195,65,163,65,163,65,162,57,162,65,130,57,163,57,9,130,57,1,65, + 49,187,3,140,54,29,118,37,244,52,175,75,45,91,12,99,12,99,44,99, + 12,91,45,99,44,91,12,99,3,44,99,129,12,99,4,44,99,132,12,99, + 44,99,45,99,44,99,3,45,99,137,44,99,45,99,44,99,45,99,44,91, + 45,99,45,99,44,91,44,99,3,45,99,131,45,91,45,99,45,91,3,45, + 99,133,77,99,45,91,77,99,44,99,77,99,3,45,99,131,45,91,45,99, + 45,91,4,77,99,136,45,99,77,99,77,91,77,99,77,99,77,91,77,99, + 77,91,3,77,99,132,77,91,77,91,77,99,77,99,4,77,91,129,78,91, + 4,77,91,143,77,99,109,99,77,99,77,99,109,99,45,91,235,82,236,82, + 13,91,77,99,208,107,49,116,146,124,147,124,147,124,3,179,132,130,179,124, + 179,124,8,179,132,140,180,132,179,132,180,132,212,132,211,132,180,132,180,132, + 211,132,179,132,211,132,179,132,179,124,3,180,124,132,180,132,180,132,179,124, + 180,124,3,180,132,4,212,132,170,143,99,8,58,97,8,167,25,209,91,115, + 124,180,124,179,116,180,124,244,124,244,132,212,132,212,132,211,132,244,140,52, + 157,105,82,203,90,138,82,138,82,105,74,73,74,73,74,40,66,73,74,41, + 74,73,74,40,66,40,66,41,66,40,66,40,74,40,66,41,74,40,66,8, + 66,8,66,8,58,8,58,231,57,8,58,231,57,3,199,49,3,167,49,159, + 134,41,134,41,135,33,135,33,134,33,70,25,13,75,175,107,179,148,114,140, + 146,140,82,140,81,140,49,132,81,140,203,82,200,49,106,74,142,115,113,140, + 146,148,113,140,114,140,113,140,113,140,81,132,178,140,20,149,244,148,211,140, + 210,140,3,178,132,140,113,132,81,124,49,116,49,124,16,116,16,116,207,107, + 240,107,240,107,175,99,175,99,175,107,3,207,107,147,239,107,16,116,16,116, + 48,116,240,115,207,115,16,116,16,116,207,107,207,107,207,115,175,107,240,107, + 240,107,175,107,175,107,207,107,175,107,142,99,4,207,107,145,175,107,207,107, + 207,107,175,107,207,107,207,107,175,99,175,107,240,107,174,107,207,107,142,99, + 142,99,142,107,142,99,142,107,175,107,3,207,107,129,240,107,4,207,107,178, + 175,107,110,99,240,107,207,107,175,107,175,107,240,107,175,99,207,107,240,107, + 16,116,81,124,49,124,49,116,17,116,16,116,17,116,49,116,82,116,81,124, + 114,124,114,124,147,132,114,124,179,132,179,132,212,140,212,132,244,132,211,132, + 244,132,53,141,85,141,150,149,25,158,155,174,220,174,154,166,45,99,106,66, + 232,49,41,66,236,90,166,49,200,49,199,41,168,41,168,41,167,41,135,41, + 3,167,41,169,200,41,200,41,74,66,102,41,9,58,168,41,9,58,74,66, + 139,74,171,74,139,74,42,66,142,107,244,156,244,148,82,124,241,107,241,107, + 18,116,82,124,115,124,147,124,147,124,115,124,115,116,50,100,241,99,177,91, + 179,132,117,157,147,132,253,190,255,239,180,100,85,157,244,132,235,82,203,82, + 53,149,57,166,219,182,8,255,255,152,28,199,85,157,215,181,78,91,136,33, + 201,41,168,33,6,17,131,8,132,8,132,8,100,0,100,0,6,25,172,82, + 237,90,172,82,236,90,13,91,45,99,110,107,143,107,175,115,240,115,4,17, + 124,3,16,124,135,240,123,16,124,49,132,49,132,49,124,81,132,82,140,5, + 114,140,4,146,140,134,113,140,114,140,81,132,81,132,49,132,81,132,3,49, + 132,133,81,132,81,132,146,148,106,66,195,24,9,4,33,138,36,33,195,24, + 130,16,166,57,232,130,36,74,167,98,102,90,200,114,167,106,3,134,98,171, + 101,90,69,82,37,82,4,74,4,74,227,65,163,65,163,65,162,57,162,57, + 4,74,228,73,195,65,162,57,228,65,195,65,228,73,36,82,4,74,69,82, + 133,98,166,106,69,90,36,74,134,90,135,98,167,98,199,106,200,106,200,106, + 199,106,199,106,167,106,135,106,135,98,102,98,101,90,69,82,36,82,4,74, + 227,65,163,65,162,65,3,130,57,129,130,49,5,130,57,148,131,57,162,57, + 163,65,163,65,163,57,163,65,163,57,163,57,130,57,130,57,163,57,163,65, + 163,65,228,65,4,74,4,82,103,90,36,90,228,73,204,139,154,3,135,208, + 27,147,12,54,21,86,37,180,52,240,75,12,91,3,12,99,130,44,99,12, + 91,3,44,99,132,44,91,44,99,44,99,45,99,6,44,99,129,45,99,3, + 44,91,137,45,99,45,99,44,99,45,99,44,99,45,99,44,91,45,99,45, + 91,3,45,99,135,45,91,45,99,44,99,45,99,45,91,45,99,45,91,3, + 45,99,135,77,99,77,99,45,99,77,99,77,91,45,99,77,99,3,77,91, + 3,77,99,129,77,91,4,77,99,138,77,91,77,99,77,99,77,91,77,99, + 77,99,77,91,77,91,77,99,77,99,3,77,91,131,77,99,77,99,77,91, + 3,77,99,139,77,91,12,83,236,82,236,90,12,91,110,99,240,107,50,116, + 147,124,147,124,179,124,13,179,132,130,211,124,211,132,3,179,132,131,211,132, + 211,132,179,132,3,180,132,130,179,124,179,132,3,180,124,134,180,132,179,124, + 212,124,180,124,212,132,180,132,3,212,132,150,49,124,171,74,4,25,130,8, + 78,75,82,108,180,124,180,124,179,124,180,124,212,132,244,132,212,132,212,132, + 179,132,52,149,178,148,105,82,171,90,170,82,137,82,105,74,3,73,74,129, + 40,66,3,73,74,139,40,66,73,66,41,66,40,66,40,66,41,74,41,66, + 8,66,8,58,232,57,8,58,3,232,57,3,199,49,198,167,41,167,49,167, + 41,134,41,135,41,135,33,135,33,134,33,5,17,78,83,176,107,179,148,114, + 140,114,140,81,140,81,140,16,132,48,132,142,115,204,90,203,90,199,49,142, + 107,49,132,81,140,113,140,113,140,81,132,81,132,114,140,211,140,211,140,178, + 132,146,132,114,132,113,124,113,132,81,124,114,124,49,124,16,116,240,115,240, + 115,207,107,207,99,207,107,175,99,175,99,240,107,175,99,207,99,240,115,207, + 107,240,115,240,115,16,116,240,115,239,115,239,115,207,107,207,107,175,107,207, + 107,207,107,175,99,142,99,142,99,175,107,240,107,208,107,3,175,107,133,143, + 99,207,107,175,107,142,107,207,107,3,175,107,144,207,107,207,107,175,107,175, + 107,142,107,142,99,110,99,207,107,175,99,175,107,175,107,175,99,175,107,207, + 107,175,107,175,107,4,207,107,173,142,99,175,107,175,99,143,99,175,99,175, + 99,143,99,208,107,207,107,207,107,16,116,48,116,49,116,240,115,16,116,17, + 116,16,116,49,116,16,116,82,124,81,116,81,116,114,124,82,124,114,124,147, + 124,179,132,179,124,211,132,244,132,244,132,21,141,53,141,150,149,183,149,90, + 166,54,133,176,115,204,82,232,49,41,58,12,91,134,41,200,49,200,49,3, + 167,41,129,135,41,4,167,41,147,200,41,42,66,102,33,9,58,168,41,9, + 58,74,66,107,74,171,74,139,74,74,66,13,99,211,148,244,148,82,124,240, + 107,241,107,18,116,82,116,4,115,124,145,83,116,50,108,242,99,177,91,147, + 124,150,157,147,132,220,198,255,247,21,101,53,149,212,124,171,74,138,66,179, + 132,57,166,187,182,8,255,255,153,93,207,85,157,248,181,175,99,168,33,234, + 49,201,41,38,25,99,8,132,8,132,8,100,8,100,0,230,16,139,82,13, + 91,172,82,236,90,237,90,46,99,110,107,143,107,175,115,208,115,240,123,3, + 17,124,138,16,124,16,124,17,132,17,124,16,124,49,132,81,132,49,132,81, + 132,114,132,5,114,140,3,146,140,130,114,140,114,140,7,81,132,134,81,140, + 81,132,81,140,146,140,203,82,195,24,10,4,33,175,228,24,130,16,69,33, + 41,131,36,82,232,106,162,57,227,65,4,74,69,82,227,65,163,57,195,65, + 36,74,227,73,36,74,102,90,228,73,69,90,101,90,101,90,227,73,134,98, + 133,98,231,114,101,90,9,115,7,115,165,98,198,106,101,90,40,123,230,114, + 166,106,166,106,37,82,101,90,37,82,37,82,4,74,4,74,228,73,195,65, + 195,65,162,65,163,57,131,57,6,130,57,135,163,57,163,65,163,65,162,57, + 162,57,163,65,163,57,10,163,65,142,162,65,163,57,107,123,171,139,204,147, + 13,164,110,172,143,180,143,180,208,196,209,188,11,188,194,81,241,172,202,3, + 146,12,83,78,51,208,19,180,4,53,21,86,37,212,52,175,75,12,91,236, + 98,12,99,12,91,44,99,44,99,44,91,12,99,45,99,45,99,4,44,99, + 149,44,91,44,99,44,99,45,99,44,99,12,99,45,99,45,91,13,91,45, + 99,44,99,44,91,44,99,45,99,45,99,44,91,45,91,77,99,45,91,45, + 91,77,99,3,45,91,3,45,99,3,77,99,132,45,99,77,99,77,99,77, + 91,5,77,99,130,77,91,77,91,5,77,99,135,77,91,77,99,77,99,77, + 91,77,99,77,91,77,91,4,77,99,148,77,91,77,99,45,91,77,99,77, + 91,77,91,77,99,77,91,77,99,77,91,12,83,203,82,236,90,12,91,110, + 99,240,107,82,116,146,124,146,124,147,124,6,179,132,130,180,132,179,132,4, + 180,132,140,179,132,179,132,211,132,179,132,180,132,179,132,211,132,212,132,179, + 124,179,124,179,132,212,132,3,179,132,135,180,124,180,124,179,124,179,132,180, + 124,180,132,180,132,3,212,132,139,147,132,175,99,134,41,65,8,232,33,18, + 108,148,124,180,124,179,124,211,124,212,124,4,244,132,136,211,132,85,157,48, + 132,138,82,170,90,138,82,105,82,105,74,6,73,74,132,41,74,40,66,40, + 66,41,66,3,40,66,187,41,66,8,66,232,57,232,57,231,57,232,57,232, + 57,231,57,199,49,199,49,167,41,167,49,167,41,167,41,134,41,135,41,135, + 33,135,33,102,33,41,50,240,107,17,124,179,148,114,140,146,148,81,140,113, + 140,49,132,81,132,240,123,240,123,48,140,235,90,203,90,109,107,239,123,81, + 132,81,132,49,132,81,132,81,132,146,140,146,132,113,132,146,140,81,124,81, + 124,49,124,48,124,16,116,48,116,16,116,16,116,207,107,207,107,240,107,207, + 107,207,107,240,107,3,207,107,133,240,107,207,107,239,115,240,115,240,107,4, + 207,107,141,240,115,175,107,142,99,110,99,175,107,174,107,175,107,143,99,142, + 99,143,107,207,107,240,115,143,107,3,175,99,138,175,107,175,107,207,107,175, + 107,207,107,175,107,207,107,143,99,175,107,207,107,3,175,107,135,110,91,207, + 107,142,99,175,99,142,99,175,107,207,107,3,175,107,223,143,99,175,107,207, + 107,110,99,175,107,175,99,143,99,143,99,175,99,208,99,16,116,16,116,208, + 107,240,107,240,107,17,116,16,116,49,116,240,107,16,116,17,116,240,107,17, + 116,17,116,16,116,49,116,81,124,81,116,146,124,146,124,211,132,179,124,211, + 132,20,141,53,141,85,149,118,149,215,149,147,116,82,132,171,82,232,49,9, + 50,232,57,134,41,199,49,199,41,168,41,167,41,167,41,135,33,167,41,168, + 41,167,41,168,41,168,41,9,58,102,33,233,49,168,41,233,57,42,58,107, + 66,139,74,139,74,106,66,203,82,146,148,244,156,82,124,240,107,241,107,17, + 116,82,116,115,124,147,124,147,124,147,116,83,116,50,100,17,100,209,91,147, + 124,118,157,82,132,155,190,255,255,119,117,244,140,212,124,40,58,101,33,16, + 116,249,165,155,182,8,255,255,158,125,223,85,157,248,181,240,107,169,33,201, + 41,201,41,38,25,99,8,131,8,132,8,132,8,100,0,198,16,139,74,237, + 90,204,82,204,82,46,99,240,123,49,124,240,123,175,115,208,115,240,123,17, + 124,17,132,17,124,17,124,49,124,3,49,132,4,81,132,130,113,140,114,132, + 4,114,140,132,114,132,146,140,114,140,114,140,4,81,132,138,81,140,81,132, + 81,132,81,140,113,132,81,140,81,140,146,140,45,99,228,24,3,4,33,129, + 36,33,6,4,33,146,228,32,130,16,227,24,42,131,36,82,8,115,162,57, + 4,74,37,74,8,115,166,98,198,106,199,106,8,115,101,98,133,90,232,106, + 199,106,3,40,123,157,227,73,133,90,133,98,133,98,68,82,199,106,133,98, + 3,74,36,82,227,65,36,74,227,73,195,65,228,73,162,57,131,57,130,57, + 98,49,130,57,162,57,130,57,66,49,66,49,65,49,98,49,98,49,130,49, + 163,57,131,57,4,163,57,158,98,57,130,57,163,57,162,57,162,57,163,65, + 163,57,163,65,163,65,162,65,163,65,162,65,163,65,163,65,162,57,163,57, + 162,57,98,49,18,173,114,213,82,213,208,204,143,180,45,172,14,164,204,147, + 172,147,110,172,161,89,236,131,203,3,143,44,99,12,99,12,99,45,59,176, + 35,82,12,21,21,118,29,21,45,175,75,45,91,12,99,12,99,45,99,45, + 99,5,44,99,132,45,91,44,91,44,99,12,99,3,44,99,144,45,99,45, + 91,45,99,45,99,45,91,45,99,45,99,45,91,44,99,45,99,45,91,45, + 99,45,91,45,99,77,99,44,91,5,45,99,133,45,91,77,91,45,99,77, + 99,77,99,4,45,99,132,77,99,45,99,77,99,45,99,4,77,99,133,77, + 91,77,91,77,99,77,99,77,91,5,77,99,134,77,91,77,99,109,99,77, + 91,77,99,77,91,3,77,99,142,77,91,77,99,109,91,77,99,77,91,12, + 83,236,82,12,91,45,91,143,99,17,116,114,124,147,124,147,124,6,179,132, + 151,180,124,180,132,180,132,179,132,180,132,212,132,179,132,212,132,211,132,179, + 132,212,132,180,132,212,132,179,132,179,132,211,132,179,124,180,132,179,124,212, + 132,179,132,180,124,180,132,3,179,132,152,180,124,180,132,212,132,179,132,212, + 132,179,132,175,107,41,58,97,8,102,25,143,83,147,124,212,132,179,124,179, + 124,180,124,212,132,212,132,244,132,244,132,212,132,146,124,182,165,77,107,3, + 138,82,130,137,82,105,82,3,73,74,133,41,74,73,74,40,74,73,74,73, + 66,3,40,66,134,40,74,40,66,8,66,8,66,232,57,232,57,3,231,57, + 4,199,49,142,167,49,167,41,167,41,135,41,102,33,134,33,134,33,5,17, + 114,132,13,91,81,132,146,148,146,148,178,148,3,114,140,152,113,140,240,123, + 81,132,81,140,48,132,175,115,142,107,174,115,239,123,16,124,16,132,16,132, + 81,124,113,132,146,140,146,132,81,124,81,132,48,124,114,124,16,116,16,116, + 240,115,240,115,4,207,107,207,175,107,240,107,16,116,240,115,207,107,175,107, + 207,107,239,107,240,107,207,107,240,115,16,116,16,116,207,107,175,107,175,107, + 207,107,142,99,175,107,142,99,175,107,175,107,142,99,142,99,142,107,142,99, + 142,99,175,107,208,107,175,107,142,99,208,107,175,107,142,107,142,99,142,99, + 175,107,143,99,175,99,143,99,175,107,142,99,175,107,142,99,175,107,142,99, + 142,99,110,99,142,99,142,99,110,99,175,107,142,99,207,107,207,107,143,107, + 207,107,207,107,110,99,143,99,78,91,142,99,111,91,110,91,142,99,208,107, + 16,108,208,107,240,107,240,107,175,107,207,107,240,107,17,108,207,107,240,107, + 208,107,208,107,16,116,4,49,116,146,114,116,114,124,146,124,179,132,146,124, + 179,124,212,132,244,140,85,149,146,124,143,99,13,91,232,49,9,58,103,41, + 134,33,232,49,200,41,3,167,41,174,135,41,135,41,167,41,167,41,135,41, + 167,41,232,49,135,41,233,49,168,41,233,49,41,58,74,66,139,74,139,74, + 74,66,107,74,81,132,244,156,50,124,208,107,241,115,17,116,82,116,83,124, + 147,124,115,124,147,116,83,116,50,108,241,99,177,91,115,124,150,157,179,132, + 155,190,255,255,152,125,179,140,179,124,166,41,162,8,109,99,184,157,89,166, + 255,247,7,255,255,159,190,223,85,149,247,181,17,116,136,33,168,41,136,33, + 6,17,131,8,131,8,132,8,100,8,100,0,165,8,75,74,237,90,204,82, + 236,90,143,115,178,148,21,157,147,140,240,115,208,115,240,123,17,124,16,124, + 49,124,16,124,17,124,49,124,4,49,132,3,81,132,129,82,132,7,114,140, + 129,82,140,4,81,132,140,81,140,113,132,81,132,81,132,113,132,81,132,81, + 140,146,140,143,107,37,33,4,25,36,33,9,4,33,192,163,24,130,16,42, + 115,37,82,232,106,68,82,9,115,4,74,68,82,133,98,231,114,133,98,133, + 98,3,74,227,65,133,90,101,90,36,82,36,82,4,74,163,57,195,65,227, + 65,162,57,162,57,163,57,130,57,130,57,130,49,130,57,130,49,130,49,130, + 57,163,57,162,65,163,65,4,74,37,82,37,82,130,57,70,82,40,115,73, + 123,137,139,202,147,11,156,11,164,108,172,230,130,162,65,130,57,37,74,40, + 123,101,90,198,106,231,114,101,98,162,65,162,57,163,57,163,57,162,57,163, + 57,163,57,3,163,65,144,162,65,163,65,162,65,65,49,206,123,114,205,49, + 205,241,204,237,163,45,172,13,156,204,155,237,155,208,180,100,122,74,107,164, + 3,143,12,91,12,99,44,99,44,91,12,91,45,67,208,27,115,12,21,13, + 86,37,212,44,240,75,12,91,12,99,44,99,3,45,99,129,44,91,3,44, + 99,137,45,99,44,99,44,99,45,99,12,99,45,99,45,91,45,91,44,99, + 3,45,99,130,45,91,44,99,3,45,99,129,44,91,4,45,99,132,44,99, + 45,91,77,91,77,99,3,45,99,133,77,99,77,99,45,99,45,99,77,91, + 3,77,99,129,45,91,5,77,99,130,77,91,77,91,3,77,99,130,77,91, + 77,99,3,77,91,129,77,99,3,77,91,133,77,99,77,99,77,91,77,99, + 77,91,3,77,99,139,77,91,45,91,236,82,236,82,12,91,45,91,175,107, + 49,116,114,124,146,124,147,124,4,179,132,129,179,124,5,179,132,135,180,132, + 211,132,179,132,179,132,212,132,179,132,179,132,3,211,132,135,179,132,179,132, + 180,132,180,124,179,124,180,132,179,132,4,180,132,152,179,132,180,124,180,132, + 180,132,212,132,244,132,241,115,203,74,4,25,163,8,237,66,50,108,212,132, + 180,132,179,124,180,124,212,124,212,132,212,132,244,132,212,132,244,132,211,140, + 247,173,3,170,90,131,138,82,105,82,105,74,6,73,74,146,41,74,41,74, + 40,66,40,66,41,66,40,66,41,66,40,66,8,58,232,57,232,57,231,57, + 231,57,199,49,231,57,199,49,167,49,167,49,3,167,41,129,134,33,3,102, + 33,133,70,25,143,99,171,66,146,140,211,148,3,146,148,136,114,140,114,140, + 81,132,207,115,16,132,49,140,81,132,81,140,3,16,132,3,16,124,149,48, + 124,81,132,81,132,49,124,16,116,16,116,48,124,81,124,48,116,16,116,240, + 115,240,115,240,107,207,107,207,107,175,107,174,107,208,107,207,107,16,116,16, + 116,3,207,107,151,16,116,207,107,240,107,207,107,239,107,240,115,207,107,207, + 107,175,107,142,99,142,99,174,107,175,107,174,99,110,99,142,99,175,107,175, + 107,175,99,110,99,207,107,175,107,142,99,3,175,107,130,175,99,207,107,3, + 175,99,175,175,107,143,107,142,99,142,99,240,107,240,107,142,99,143,99,143, + 99,175,99,143,99,142,99,175,107,142,99,175,107,143,107,175,99,207,107,174, + 107,110,99,143,99,175,107,78,91,78,91,143,99,110,91,175,99,208,107,207, + 107,207,107,240,107,240,107,175,99,175,107,16,116,239,107,49,116,240,107,240, + 107,16,108,49,116,17,108,81,116,240,107,81,116,82,124,114,124,3,146,124, + 139,211,132,244,140,20,141,146,124,143,107,110,99,232,49,9,58,200,41,228, + 16,232,49,3,167,41,130,135,41,135,41,3,167,41,149,135,41,167,41,167, + 41,236,82,9,50,168,41,233,49,9,58,74,66,139,74,107,74,107,66,74, + 66,207,115,244,156,82,124,208,107,241,107,17,116,50,116,115,116,3,115,124, + 146,115,116,50,108,241,91,177,91,115,124,150,157,146,132,154,190,255,255,248, + 141,146,132,180,132,167,41,130,8,12,91,183,157,57,158,255,247,7,255,255, + 158,223,231,52,149,247,189,114,124,200,33,201,41,136,33,38,25,131,8,131, + 8,100,8,100,0,100,0,132,0,42,66,237,90,204,82,204,82,110,107,114, + 140,244,156,114,140,208,115,208,115,240,123,241,123,17,124,17,124,49,124,16, + 124,5,49,132,130,81,132,81,132,9,114,140,129,113,132,11,81,132,132,113, + 140,207,115,102,33,228,32,10,4,33,149,195,24,98,8,200,106,69,90,167, + 98,101,90,232,106,195,65,227,65,195,65,227,73,194,65,195,65,195,65,163, + 57,195,65,162,65,163,57,163,57,162,57,163,65,5,163,57,185,227,65,70, + 82,102,90,135,98,200,106,9,115,73,131,172,139,232,122,228,65,143,164,110, + 172,143,180,227,81,199,90,237,196,170,180,105,180,170,180,137,180,138,180,202, + 188,135,155,163,65,163,57,228,73,41,115,101,98,199,106,101,90,35,82,162, + 65,162,57,195,65,4,74,69,90,227,73,133,98,166,98,101,90,69,82,101, + 90,198,106,100,98,97,57,10,99,115,197,82,213,82,213,49,205,114,213,17, + 205,82,213,81,213,114,221,39,163,102,90,178,3,131,49,60,45,83,236,98, + 3,12,99,150,13,91,78,59,208,19,148,12,54,21,86,37,180,60,143,75, + 236,98,12,99,44,99,44,99,12,91,45,99,45,99,44,99,45,99,44,99, + 44,99,45,99,45,99,44,91,6,45,99,140,44,91,44,99,45,91,45,99, + 45,91,45,91,44,99,45,99,44,91,77,99,77,91,77,91,3,45,99,3, + 77,99,134,45,91,77,99,45,99,77,99,77,91,77,91,7,77,99,130,77, + 91,77,91,3,77,99,130,77,91,77,91,4,77,99,137,77,91,77,99,77, + 91,77,91,77,99,77,91,77,99,77,91,78,99,3,77,99,137,13,91,236, + 82,204,90,13,91,77,99,208,107,49,116,114,124,147,124,3,147,132,154,179, + 132,179,132,179,124,179,124,180,132,179,132,180,132,179,132,212,132,179,132,211, + 132,179,132,211,132,180,132,212,132,211,132,179,132,180,132,179,132,180,132,179, + 132,180,132,180,132,211,124,179,132,179,132,3,180,132,146,211,132,180,132,212, + 132,180,132,212,132,147,132,77,91,134,41,65,8,42,42,241,99,147,124,212, + 132,179,124,180,124,180,124,212,124,212,132,3,244,132,138,212,132,211,140,214, + 173,137,82,203,90,138,82,138,82,105,82,73,74,105,74,6,73,74,131,40, + 66,40,66,41,66,4,40,66,137,8,58,232,57,231,57,231,57,232,57,231, + 57,199,57,199,49,167,49,3,167,41,156,166,41,102,33,134,33,102,33,102, + 41,102,33,17,116,45,91,179,140,178,148,178,148,146,140,179,148,114,140,146, + 140,114,140,16,124,207,123,49,132,114,140,81,140,81,140,81,132,81,140,49, + 132,16,132,16,132,49,124,3,81,124,135,16,116,48,124,239,115,16,116,48, + 124,240,115,239,115,3,207,107,162,239,107,175,99,175,107,175,107,240,107,175, + 99,239,107,207,107,240,107,207,107,142,99,207,107,207,107,174,99,240,115,240, + 107,239,107,207,107,175,107,142,99,110,99,174,99,142,99,142,99,175,107,207, + 107,142,99,175,99,143,99,174,107,142,99,175,107,142,99,142,99,4,175,107, + 134,207,107,175,99,175,107,143,99,175,99,143,99,4,175,99,129,175,107,4, + 143,99,146,110,99,142,99,142,99,110,99,143,107,207,107,175,107,142,99,110, + 91,110,91,175,99,110,99,175,99,143,91,143,99,175,99,207,107,240,107,3, + 175,107,135,207,107,207,107,240,107,175,99,17,116,49,116,17,108,3,240,107, + 147,17,116,49,116,16,108,81,116,49,116,211,132,179,124,179,132,146,132,211, + 132,17,108,114,132,45,91,200,49,9,58,233,49,5,25,199,49,200,49,3, + 167,41,130,135,41,167,41,5,135,41,167,105,66,167,41,168,49,233,49,9, + 58,74,66,107,74,139,66,107,66,74,66,110,107,211,148,82,124,208,107,241, + 107,17,116,50,116,115,124,115,124,147,124,115,124,83,116,50,108,17,100,209, + 91,82,124,182,165,82,124,122,182,255,255,90,158,81,116,211,132,166,41,98, + 8,170,74,151,157,151,141,223,247,7,255,255,160,125,215,243,140,247,189,179, + 140,10,50,10,50,201,41,71,25,132,8,131,8,131,8,100,8,100,0,100, + 0,10,66,204,90,204,82,236,90,13,99,175,115,17,132,240,123,175,115,208, + 115,240,123,241,123,16,124,17,124,49,124,49,132,49,132,49,124,4,49,132, + 130,81,132,82,140,7,114,140,131,114,132,81,132,49,132,11,81,132,132,16, + 124,135,41,228,24,36,33,9,4,33,211,195,24,98,8,136,90,134,106,134, + 90,167,98,199,106,227,73,162,57,163,57,163,57,162,57,162,57,195,65,163, + 57,130,57,130,57,195,57,163,57,195,65,228,73,4,74,228,65,4,74,36, + 74,162,57,70,82,144,180,241,188,241,196,208,196,176,188,208,196,208,188,142, + 188,161,49,175,172,143,180,208,188,102,98,69,66,236,188,169,180,7,156,199, + 147,102,131,231,147,202,188,8,164,195,73,163,57,162,57,9,115,166,106,166, + 98,134,98,101,90,166,98,198,106,40,123,72,131,198,106,100,90,133,98,166, + 98,166,106,198,106,230,114,198,106,101,98,130,65,102,82,240,172,175,180,77, + 172,45,164,236,155,138,139,106,131,40,115,9,115,101,106,163,65,203,3,149, + 245,20,244,36,17,60,45,91,12,99,12,99,45,99,12,99,12,99,45,59, + 176,27,115,4,54,21,119,29,244,52,143,75,12,91,12,99,12,99,45,99, + 12,91,3,44,99,130,45,99,45,99,5,44,99,138,45,99,44,99,45,91, + 44,99,45,99,45,99,45,91,45,99,45,99,45,91,3,45,99,144,45,91, + 45,91,77,99,45,99,77,91,45,91,45,99,45,91,77,99,45,99,45,91, + 77,99,45,99,77,99,77,99,45,91,5,77,99,131,77,91,77,99,77,91, + 6,77,99,3,77,91,130,77,99,77,99,3,77,91,146,77,99,109,99,77, + 99,109,99,77,99,77,91,12,91,235,82,236,90,13,91,78,99,240,107,82, + 116,114,124,147,124,147,124,179,132,179,124,3,179,132,153,211,132,179,124,179, + 132,180,132,180,132,179,124,211,132,180,132,180,132,212,132,211,132,212,132,211, + 132,179,132,180,132,180,124,180,132,211,132,180,132,180,132,179,124,180,132,180, + 132,179,132,179,132,3,180,132,142,179,132,212,132,147,124,175,107,199,49,98, + 16,70,25,241,91,147,124,212,132,180,124,179,124,180,124,212,124,4,244,132, + 140,245,132,212,132,243,140,85,165,73,82,203,90,170,90,138,82,105,74,105, + 74,73,74,105,74,4,73,74,3,40,66,129,41,66,4,40,66,132,8,58, + 232,57,231,57,231,57,3,199,57,130,167,49,167,49,3,167,41,129,135,41, + 4,102,33,159,70,33,208,107,111,99,211,148,146,148,179,148,179,148,146,148, + 146,140,179,148,146,140,49,132,16,124,81,140,114,140,113,140,113,140,49,132, + 49,132,48,132,16,132,16,124,81,132,49,124,49,124,16,124,16,116,48,116, + 239,115,16,116,207,115,4,207,107,166,175,107,175,107,110,99,207,107,207,107, + 175,99,175,99,142,107,142,107,239,107,207,115,207,107,207,107,142,99,239,107, + 207,107,175,107,207,107,207,107,208,107,175,99,175,107,142,99,142,99,175,107, + 143,99,175,107,175,107,143,99,142,99,175,107,175,107,143,99,175,99,143,99, + 175,99,175,107,143,99,3,175,107,138,143,99,175,107,143,99,110,99,175,107, + 175,99,175,99,143,99,143,99,175,99,3,143,99,129,142,99,4,143,99,179, + 175,107,143,99,142,99,110,91,143,99,111,91,110,91,143,99,175,99,142,91, + 110,91,143,99,175,99,175,107,175,107,208,107,142,99,142,99,207,99,207,107, + 16,116,16,108,81,116,16,108,240,107,17,116,240,107,240,107,49,116,17,116, + 16,116,49,116,114,124,147,124,114,124,146,124,82,116,17,116,110,99,232,49, + 9,58,9,58,103,33,167,41,200,41,199,41,168,41,167,41,135,41,167,41, + 167,41,3,135,41,135,168,41,70,33,102,41,200,49,233,49,9,58,42,58, + 3,107,66,197,42,58,12,91,147,148,82,132,208,107,241,107,17,116,50,116, + 82,124,115,124,147,116,115,124,115,116,50,108,242,99,209,91,50,116,150,165, + 114,140,119,149,126,191,119,133,16,116,179,132,199,49,97,8,73,66,118,157, + 244,132,56,182,252,198,251,198,219,198,218,206,219,206,154,190,186,198,247,181, + 178,148,215,181,244,148,10,50,10,58,234,41,103,25,132,8,131,16,99,8, + 100,8,100,0,100,0,201,49,172,82,172,82,236,90,237,90,13,91,78,99, + 111,107,175,107,208,115,240,123,241,123,16,124,17,124,17,124,49,132,49,132, + 49,124,3,49,132,130,81,132,81,132,3,114,140,136,82,132,114,140,114,140, + 82,140,114,140,82,140,81,132,49,132,12,81,132,130,232,57,228,24,10,4, + 33,211,227,24,98,8,7,66,199,114,68,82,199,106,199,98,4,74,134,90, + 37,82,68,82,69,82,133,90,199,106,231,106,166,106,133,98,230,106,7,115, + 7,115,230,114,231,114,39,123,7,123,198,114,194,65,4,74,241,180,114,213, + 82,213,240,196,13,164,237,155,172,139,176,180,161,73,204,131,209,188,208,188, + 41,131,98,49,205,180,201,188,137,180,72,172,72,172,73,172,137,180,41,180, + 3,90,162,57,162,57,134,90,68,90,199,106,166,106,101,98,101,90,133,90, + 36,74,68,82,227,73,195,65,162,65,162,57,195,65,162,57,130,57,130,57, + 162,65,162,65,195,65,200,98,41,115,74,123,139,139,204,147,45,164,78,172, + 175,188,209,188,207,212,3,106,159,3,150,241,19,179,20,21,29,147,44,208, + 67,45,83,12,99,44,99,44,99,12,99,12,91,77,67,208,27,147,12,54, + 21,86,37,147,52,175,75,236,90,12,99,44,99,45,99,3,44,99,5,45, + 99,135,44,91,45,99,45,99,45,91,45,99,44,99,44,99,3,45,91,129, + 45,99,4,45,91,3,45,99,133,77,99,77,99,45,91,45,91,45,99,3, + 77,91,134,45,99,77,99,77,91,77,91,77,99,77,91,7,77,99,129,77, + 91,5,77,99,134,77,91,77,91,77,99,77,99,77,91,77,91,3,77,99, + 144,109,99,77,99,109,99,77,91,12,91,203,82,12,91,45,91,110,99,17, + 108,114,124,146,124,147,124,147,124,179,124,179,124,5,179,132,134,180,132,180, + 132,211,132,179,132,212,132,212,132,4,211,132,132,179,132,211,132,179,132,212, + 132,4,179,132,3,180,132,147,179,132,180,132,180,132,211,132,180,132,212,132, + 180,132,16,108,203,74,163,16,228,16,237,66,83,116,212,132,212,124,179,124, + 179,124,180,124,212,124,5,244,132,135,211,132,20,149,210,148,105,82,170,90, + 170,82,138,82,3,105,74,6,73,74,129,40,74,4,40,66,140,8,66,40, + 66,232,57,232,57,199,57,231,57,231,57,199,49,199,49,167,49,167,41,167, + 49,3,167,41,153,102,33,102,33,134,33,102,33,102,33,236,74,79,99,211, + 156,146,140,146,148,179,148,179,148,146,148,178,148,146,140,17,132,48,132,113, + 140,114,148,81,140,81,140,49,132,17,132,16,132,48,132,5,16,124,140,16, + 116,16,116,240,115,240,115,207,115,207,107,207,107,175,107,239,107,175,107,207, + 107,143,107,3,175,107,133,142,107,142,99,143,99,143,99,175,107,3,207,107, + 148,175,107,174,99,207,107,142,107,207,107,175,107,208,107,175,107,175,107,175, + 99,142,99,175,107,110,99,143,99,143,99,142,107,175,107,175,107,142,99,143, + 99,4,175,99,133,143,99,208,107,175,107,175,107,207,107,3,143,99,137,175, + 107,175,99,175,99,175,107,208,107,175,99,208,107,175,99,175,99,4,143,99, + 132,175,107,143,99,143,99,175,99,4,143,99,165,110,91,143,99,143,99,142, + 99,142,99,175,99,143,99,175,99,142,99,175,107,143,99,239,107,16,108,240, + 107,17,116,16,108,16,108,17,116,208,107,16,108,240,107,49,116,49,116,17, + 116,17,116,82,124,179,132,146,124,114,124,49,124,45,91,232,49,41,58,233, + 49,168,41,167,41,200,41,3,167,41,130,135,41,135,33,4,135,41,179,167, + 41,135,41,102,41,200,49,200,49,233,49,41,58,106,66,107,74,107,66,42, + 66,171,82,81,140,82,132,208,107,241,107,17,108,50,116,82,116,115,124,115, + 116,115,124,115,116,50,108,18,100,209,91,50,116,183,165,147,132,211,140,117, + 157,81,124,240,115,147,124,199,49,97,8,199,49,118,157,244,132,113,132,20, + 149,85,157,85,165,117,165,117,165,149,165,150,173,85,157,178,140,215,181,53, + 149,3,10,50,158,136,33,132,8,131,8,99,8,100,8,100,0,100,0,136, + 41,171,82,204,82,236,90,13,91,13,91,78,99,143,107,175,115,208,115,240, + 115,240,123,17,124,17,132,17,124,49,132,49,124,17,124,49,132,49,124,49, + 132,81,132,81,132,7,114,140,129,113,132,3,81,132,130,49,132,49,132,4, + 81,132,129,49,132,4,81,132,131,81,140,73,66,228,32,10,4,33,180,228, + 24,98,16,134,49,8,123,36,74,231,114,166,98,36,82,133,90,166,106,40, + 115,40,123,40,123,166,106,133,98,231,114,133,98,165,98,165,98,100,90,68, + 82,4,74,36,74,3,74,3,74,194,65,195,57,78,156,82,213,82,213,17, + 205,143,180,17,197,143,180,82,213,35,98,106,123,208,196,176,188,203,155,97, + 49,105,123,70,123,6,115,229,106,197,98,165,98,133,90,133,90,195,65,163, + 65,162,65,4,162,57,136,162,65,162,57,130,57,162,57,162,57,163,65,162, + 57,163,65,5,162,57,142,163,65,162,65,162,57,205,131,83,213,82,213,17, + 213,110,180,176,180,45,164,78,172,13,156,143,180,100,122,204,3,137,45,75, + 142,35,82,12,245,20,20,37,147,44,77,75,12,99,12,99,3,44,99,166, + 13,83,78,59,241,19,212,4,86,29,86,37,114,60,77,83,236,98,12,99, + 45,99,44,99,45,99,44,99,12,91,45,99,44,99,44,99,45,99,45,99, + 44,99,45,99,44,91,45,99,44,99,44,91,45,91,77,99,45,99,45,91, + 45,99,45,91,45,99,45,91,45,99,45,99,45,91,45,99,3,77,99,130, + 77,91,77,91,10,77,99,129,77,91,3,77,99,138,77,91,77,99,77,91, + 109,99,77,99,77,99,109,99,77,91,109,99,77,99,4,77,91,145,78,91, + 77,99,109,99,77,99,45,91,236,90,203,82,12,91,45,99,142,99,17,116, + 114,124,146,124,147,124,147,132,179,132,179,124,3,179,132,3,180,132,3,179, + 132,141,211,132,211,132,179,132,211,132,211,132,179,132,211,132,179,132,179,132, + 212,132,179,132,179,132,180,124,3,180,132,149,180,124,179,132,211,132,180,132, + 211,132,180,132,212,132,81,124,45,91,101,41,98,8,73,50,241,107,180,132, + 212,132,180,124,179,124,179,124,180,124,212,132,212,132,4,244,132,138,211,132, + 85,157,48,132,105,82,170,90,170,90,138,82,137,82,105,74,105,74,6,73, + 74,131,40,74,40,66,40,66,4,8,66,170,232,57,232,57,199,57,232,57, + 199,57,231,57,199,49,199,49,167,49,167,41,166,41,167,41,134,33,102,33, + 102,33,134,33,102,33,102,25,74,58,78,91,211,156,179,148,179,148,146,148, + 179,148,178,148,179,148,179,148,49,132,16,132,81,132,81,140,113,140,113,140, + 81,132,49,132,49,132,16,124,240,123,240,123,16,124,16,124,3,16,116,133, + 240,115,239,107,207,107,207,107,142,99,3,175,107,136,175,99,175,107,207,107, + 174,99,175,99,110,91,175,107,143,99,3,142,99,137,208,107,175,107,207,107, + 207,107,175,107,142,99,240,107,175,107,207,107,3,175,107,143,175,99,142,99, + 110,99,143,99,175,107,142,99,175,99,175,99,143,107,175,107,175,99,175,107, + 143,99,175,107,175,99,3,207,107,134,175,99,143,99,175,107,143,99,208,99, + 207,99,4,175,99,129,207,107,3,175,99,161,143,99,175,107,143,99,143,99, + 175,99,143,99,143,99,110,91,143,99,143,91,143,99,110,91,111,99,143,99, + 175,99,175,99,143,99,142,99,142,99,175,99,175,107,175,107,240,107,241,107, + 240,107,240,107,208,107,240,107,240,107,175,99,240,107,16,108,17,116,3,49, + 116,144,114,124,146,124,49,116,49,116,110,99,204,82,233,49,8,58,9,58, + 200,49,168,41,200,41,167,41,167,41,168,41,135,33,5,135,41,169,167,41, + 167,41,102,33,167,41,200,49,233,49,9,58,106,74,139,74,106,66,74,66, + 139,74,207,123,82,132,208,107,241,107,17,108,50,116,82,124,115,124,147,124, + 115,124,115,116,50,108,18,100,209,91,18,108,183,165,179,140,114,132,178,140, + 174,107,207,107,147,124,231,49,97,8,134,41,85,157,244,132,142,99,48,132, + 3,81,132,157,113,140,178,148,211,148,146,140,113,140,215,181,85,165,42,50, + 233,41,233,41,104,33,164,16,99,8,99,8,100,0,100,0,68,0,103,33, + 139,74,204,82,236,90,13,91,13,99,78,107,143,107,143,115,208,115,240,115, + 240,123,4,17,124,140,49,124,17,124,49,124,49,132,49,132,81,132,82,132, + 114,140,114,140,114,132,114,140,114,132,3,114,140,3,81,132,130,49,132,49, + 132,4,81,132,136,49,132,81,132,49,132,81,132,49,132,81,140,138,74,228, + 24,10,4,33,144,228,32,130,16,68,41,9,123,227,73,232,114,166,98,133, + 98,194,65,4,74,68,82,36,74,36,74,226,65,195,65,195,65,3,195,57, + 168,195,65,163,57,163,57,162,57,163,57,163,57,195,65,162,57,237,139,115, + 213,82,213,49,205,17,205,17,197,208,196,241,204,100,106,101,82,106,131,73, + 115,199,106,129,57,37,74,166,98,200,106,8,115,40,123,105,131,169,147,234, + 155,231,130,129,57,163,57,163,65,163,65,163,57,130,57,163,57,163,57,195, + 57,3,130,57,149,163,65,130,57,195,65,4,74,195,73,227,73,4,74,4, + 82,163,65,130,57,42,99,82,197,82,213,240,204,13,172,106,131,107,139,204, + 139,139,147,78,164,7,147,192,3,137,44,99,12,99,12,75,175,27,114,12, + 244,20,21,37,81,60,78,83,3,12,99,143,44,99,12,99,236,90,77,59, + 208,19,147,4,86,21,118,37,147,52,78,83,13,99,13,99,12,91,45,99, + 45,91,3,45,99,135,44,91,45,91,13,91,44,91,44,99,45,91,45,91, + 4,45,99,151,45,91,45,99,77,99,45,91,45,99,45,99,77,99,45,99, + 77,99,45,99,45,91,45,99,77,99,77,99,77,91,77,91,45,99,77,99, + 77,91,77,99,77,99,109,99,77,91,5,77,99,138,77,91,77,99,77,99, + 77,91,77,99,109,99,77,91,77,99,77,91,77,99,3,77,91,150,77,99, + 77,91,78,91,78,99,77,99,13,91,236,82,203,82,13,91,45,91,175,107, + 49,116,114,124,147,124,147,124,179,124,179,132,179,132,179,124,180,132,179,132, + 180,132,3,179,132,166,180,132,179,132,179,132,180,132,211,132,179,132,211,124, + 179,132,211,132,211,132,212,132,180,132,180,132,179,132,180,132,179,124,180,132, + 180,132,180,124,212,124,180,132,179,132,179,132,212,132,147,132,77,91,231,49, + 98,8,200,33,208,91,147,124,212,132,212,124,179,124,147,124,180,124,212,124, + 212,132,4,244,132,136,245,132,178,132,150,165,141,115,170,90,170,82,138,82, + 138,82,3,105,74,7,73,74,129,41,74,3,40,66,132,8,66,40,66,8, + 58,232,57,3,231,57,136,199,49,199,49,167,41,199,49,167,41,166,41,135, + 41,135,41,3,102,33,142,70,33,232,41,171,66,240,115,243,156,146,148,211, + 148,179,148,146,148,146,148,179,148,146,140,49,132,240,123,3,114,140,166,81, + 140,81,132,81,140,49,132,240,123,239,123,240,123,240,115,240,115,207,115,207, + 107,16,116,240,115,16,116,207,107,207,107,142,99,175,107,175,107,207,107,175, + 107,142,99,142,99,175,107,142,99,174,99,175,107,207,107,207,107,175,107,142, + 99,142,99,175,107,175,107,207,107,175,99,175,107,240,107,5,175,107,196,175, + 99,175,107,175,107,207,107,208,107,175,99,175,99,143,99,175,107,143,99,143, + 99,208,107,207,99,207,107,175,99,175,107,175,99,175,99,208,107,175,99,207, + 107,240,107,208,107,175,99,207,107,207,99,175,99,175,99,208,99,143,99,207, + 107,175,99,175,99,175,107,208,107,208,107,110,91,143,91,175,99,143,99,110, + 91,142,91,208,107,143,99,175,99,143,99,175,99,143,99,175,99,143,99,175, + 99,208,107,174,107,142,107,207,107,240,107,240,107,175,99,208,99,175,107,175, + 99,207,107,17,116,240,107,240,107,17,116,240,107,240,107,3,49,116,141,82, + 116,110,91,236,82,9,58,9,50,233,57,200,49,200,49,167,41,167,41,135, + 41,167,41,135,33,5,135,41,3,167,41,166,200,41,232,49,233,49,233,57, + 74,66,106,74,106,66,75,66,106,74,77,107,49,124,208,107,209,107,241,115, + 18,116,82,116,114,124,147,124,115,124,115,116,82,108,18,100,241,91,18,108, + 183,165,211,140,16,116,207,107,44,91,175,107,114,124,8,58,98,8,36,33, + 53,157,244,132,77,91,44,99,3,77,99,161,109,107,142,107,141,107,109,107, + 239,123,183,181,150,173,42,50,201,41,233,49,136,33,132,8,99,8,99,8, + 100,8,100,0,68,0,38,33,74,66,172,82,237,90,13,91,13,91,78,99, + 110,107,175,115,208,115,240,115,241,123,17,124,49,124,49,124,49,132,4,49, + 124,132,49,132,81,132,81,132,114,132,4,114,140,132,82,140,114,140,114,132, + 82,140,3,81,132,3,49,132,131,81,132,49,132,81,132,4,49,132,131,81, + 140,13,91,4,25,11,4,33,138,130,16,227,24,9,115,3,82,232,106,166, + 98,167,106,162,57,195,65,162,65,5,195,65,129,195,57,8,195,65,132,163, + 65,163,57,168,98,139,139,5,106,131,138,203,139,101,98,228,73,78,164,78, + 172,144,188,228,89,199,90,237,196,203,188,3,170,188,164,170,180,234,188,8, + 172,98,57,195,57,162,65,162,65,227,65,101,90,36,82,101,90,8,123,198, + 106,133,98,165,98,40,115,7,115,72,123,198,106,39,123,72,131,39,123,230, + 106,227,73,130,57,102,74,18,181,82,213,82,213,241,204,49,205,82,213,82, + 213,82,221,147,221,44,196,143,3,154,12,91,12,99,12,99,12,91,77,59, + 208,27,179,20,21,29,212,36,208,67,45,91,12,99,44,99,44,91,12,99, + 12,99,45,83,110,51,17,12,212,4,86,21,21,45,17,60,77,91,236,98, + 44,99,3,45,91,129,44,99,5,45,99,135,44,99,45,99,45,91,76,99, + 45,99,45,91,45,91,3,45,99,140,77,91,77,91,45,91,45,99,45,99, + 77,99,45,99,77,99,45,99,77,99,77,99,45,99,19,77,99,3,77,91, + 132,77,99,77,91,78,91,77,91,3,77,99,140,109,99,12,91,236,82,236, + 90,12,91,77,99,207,107,82,116,146,124,147,124,147,124,179,124,6,179,132, + 129,211,132,3,179,132,3,180,132,160,211,132,179,132,211,132,211,132,180,132, + 180,132,179,132,179,132,180,132,179,132,179,132,179,124,179,132,180,132,180,132, + 180,124,180,132,180,124,212,132,180,132,240,115,105,66,195,16,195,16,111,83, + 82,116,180,132,212,132,180,124,179,124,179,124,180,124,3,212,132,139,244,132, + 244,132,245,132,244,132,146,132,118,157,44,107,170,82,170,90,137,82,138,82, + 4,105,74,5,73,74,130,72,74,40,74,3,40,66,142,8,66,8,66,232, + 57,231,57,231,57,232,57,199,57,199,57,199,49,167,49,167,41,167,49,167, + 41,134,41,5,102,33,136,135,33,172,66,50,124,211,156,179,148,211,148,178, + 148,178,148,3,179,148,172,16,132,239,123,146,148,146,148,114,140,81,140,113, + 140,81,132,48,132,16,124,239,123,240,123,240,115,207,115,239,115,207,107,207, + 107,175,107,207,107,240,115,207,107,207,107,174,107,174,107,175,107,142,99,142, + 99,175,99,175,99,175,107,175,99,142,99,142,99,143,99,143,99,175,99,143, + 99,175,107,207,107,143,99,175,99,143,99,208,107,240,107,5,175,107,138,207, + 107,175,99,175,99,175,107,207,107,175,99,175,107,175,107,143,99,175,107,3, + 175,99,171,207,99,208,107,175,99,208,107,208,107,176,107,208,107,207,99,207, + 99,176,99,175,99,175,99,207,99,175,99,208,107,175,99,143,99,175,99,175, + 99,207,107,240,107,175,107,175,99,143,91,143,91,175,99,175,99,142,99,175, + 99,175,99,143,99,175,99,143,99,175,107,142,99,143,99,175,107,175,99,207, + 107,143,99,208,107,175,107,208,107,3,175,99,134,208,99,175,99,175,99,240, + 107,240,107,207,99,3,240,107,148,49,116,49,116,17,108,241,107,13,91,233, + 49,233,49,9,58,232,49,200,49,168,41,135,33,167,41,167,33,135,33,135, + 33,135,41,167,41,135,33,135,41,3,167,41,181,200,41,200,49,233,49,9, + 58,74,66,106,66,107,66,74,66,106,74,12,91,16,124,241,107,241,107,241, + 115,50,116,82,124,115,116,115,124,115,116,115,116,82,108,18,100,241,91,241, + 107,183,165,178,140,16,116,44,99,203,82,110,99,82,124,41,58,130,8,227, + 24,244,148,244,132,12,75,138,82,203,82,171,82,138,74,170,82,203,82,203, + 82,170,82,174,115,182,181,183,173,139,58,233,41,42,50,201,41,164,8,3, + 99,8,144,100,0,100,0,230,24,41,66,172,82,237,90,13,91,13,91,78, + 99,111,107,143,115,208,115,240,115,240,123,16,124,17,124,4,49,124,133,17, + 124,49,124,49,132,81,132,81,132,5,114,140,130,114,132,82,132,5,81,132, + 10,49,132,131,81,132,110,99,4,25,11,4,33,138,163,24,195,24,201,106, + 36,90,167,98,166,98,8,115,130,57,195,65,227,65,12,195,65,188,163,57, + 163,57,163,65,130,57,102,82,111,172,175,188,208,188,143,188,144,188,176,188, + 241,196,170,155,194,65,207,172,143,180,241,196,102,106,37,74,204,180,169,180, + 7,164,231,155,199,147,199,139,201,180,138,188,130,73,163,57,162,65,163,65, + 4,74,40,115,230,114,101,98,101,90,165,98,198,106,132,98,165,98,100,90, + 101,90,3,74,3,74,4,74,227,73,3,74,195,65,130,65,4,66,208,164, + 17,205,240,196,208,188,175,180,110,172,45,164,235,155,203,147,40,131,180,3, + 169,12,99,12,91,44,99,12,99,12,99,45,83,110,43,49,12,244,12,21, + 37,147,52,110,83,236,98,12,99,44,99,13,99,44,99,12,99,45,75,111, + 43,50,12,53,13,86,29,21,45,175,75,236,98,12,99,45,99,44,91,44, + 99,44,99,45,99,44,99,45,99,45,99,44,99,45,91,45,99,45,91,45, + 99,45,91,7,45,99,132,77,91,45,99,77,99,45,99,5,77,99,129,77, + 91,3,77,99,133,77,91,77,91,77,99,77,99,77,91,4,77,99,129,77, + 91,3,77,99,151,109,99,77,99,109,99,109,99,77,91,77,91,77,99,77, + 91,110,91,77,91,77,99,109,99,109,99,12,91,236,82,236,90,45,99,110, + 99,208,107,82,124,147,124,147,124,179,124,9,179,132,165,180,132,180,132,212, + 132,179,132,212,132,179,132,212,132,179,132,211,132,180,132,180,132,179,132,211, + 132,179,132,179,132,211,132,179,132,180,132,179,124,180,124,180,132,180,132,179, + 124,212,132,82,124,77,91,36,33,131,8,74,42,50,108,179,124,212,132,212, + 132,180,124,179,124,180,124,180,124,3,212,132,142,244,132,244,132,245,132,244, + 132,211,140,85,157,11,99,170,90,170,90,138,82,105,74,105,82,105,74,105, + 74,5,73,74,143,72,74,40,66,73,74,40,74,40,66,8,66,40,66,8, + 66,232,57,231,57,231,57,231,49,232,57,199,57,199,49,3,167,41,130,167, + 49,135,41,4,102,33,145,70,25,200,41,42,50,179,148,211,156,211,148,244, + 156,211,148,178,148,211,156,179,148,113,140,110,107,49,132,81,140,146,148,146, + 140,3,81,140,131,81,132,240,123,207,123,3,207,115,130,239,115,175,107,3, + 207,107,142,175,107,142,99,207,107,142,99,175,107,142,107,175,107,175,99,175, + 99,142,99,175,107,143,99,175,99,110,99,4,175,99,3,175,107,138,175,99, + 175,99,207,107,207,107,175,107,175,99,175,107,208,107,175,99,143,99,3,175, + 99,141,175,107,208,107,175,99,207,107,175,99,175,99,175,107,208,107,175,99, + 208,107,208,107,207,99,240,107,3,175,99,130,175,107,207,99,4,208,107,190, + 175,99,208,107,208,107,208,99,207,99,207,107,208,99,175,99,175,107,208,107, + 175,99,111,91,175,99,175,99,208,99,175,99,207,99,143,99,175,99,207,99, + 207,107,175,107,175,107,175,99,208,107,175,107,207,107,175,107,207,107,143,99, + 175,99,175,99,110,91,175,99,175,99,143,99,175,99,175,107,142,91,17,108, + 208,107,240,107,240,107,49,116,241,107,143,99,106,66,233,57,9,58,233,57, + 200,41,232,49,200,41,167,33,167,41,135,33,168,41,135,33,167,41,135,41, + 135,41,135,33,3,167,41,166,200,49,232,49,233,49,9,58,74,66,106,66, + 107,66,74,66,139,74,77,107,49,124,208,107,240,107,241,107,18,116,82,116, + 115,124,115,124,115,116,115,116,82,108,18,100,241,91,241,107,215,165,179,140, + 16,116,171,82,138,74,77,99,82,116,41,58,130,16,130,16,211,140,244,140, + 236,74,8,66,4,73,74,162,105,74,106,82,105,74,109,115,215,181,215,181, + 204,66,234,49,75,58,234,41,197,8,99,8,99,8,99,0,100,0,100,0, + 230,16,9,58,172,82,236,90,13,91,13,91,78,99,111,107,143,107,208,115, + 240,115,17,124,16,124,17,124,49,124,49,124,17,124,17,124,3,49,124,131, + 81,132,82,132,81,132,6,114,140,5,81,132,10,49,132,131,81,140,175,115, + 37,33,11,4,33,136,195,24,162,16,136,90,133,106,166,90,166,98,8,115, + 163,57,4,195,65,198,163,65,162,57,163,57,195,65,163,65,163,57,162,57, + 195,65,195,65,162,57,163,57,227,65,195,65,130,57,69,74,241,188,114,213, + 82,213,175,188,204,147,204,147,172,139,45,164,129,57,236,139,176,188,208,188, + 9,139,163,57,172,172,234,188,137,188,73,172,73,172,105,172,202,188,235,204, + 4,98,162,57,195,65,163,65,195,65,227,65,227,73,195,65,163,65,163,65, + 195,65,162,65,163,65,162,65,162,65,162,57,163,57,163,57,130,65,163,65, + 163,57,163,65,162,57,101,82,69,82,228,73,195,65,163,57,130,57,130,57, + 130,49,97,49,130,57,207,3,143,12,91,44,99,12,99,12,91,44,99,12, + 99,12,99,13,75,110,43,114,12,244,20,53,29,17,60,77,91,12,99,3, + 44,99,158,12,99,12,99,12,83,143,35,82,12,245,12,151,29,212,44,175, + 75,12,99,12,99,45,99,45,91,44,91,77,99,13,91,45,91,45,99,44, + 91,45,99,44,91,45,91,44,99,45,91,45,91,44,91,45,99,45,91,77, + 99,45,91,3,45,99,135,77,99,77,91,77,91,77,99,77,91,77,91,45, + 99,11,77,99,129,77,91,3,77,99,153,109,99,77,91,109,99,77,99,77, + 99,109,99,77,99,77,91,77,91,77,99,77,91,77,99,77,99,77,91,236, + 82,204,82,236,90,45,91,142,99,240,107,114,124,146,124,147,124,147,132,179, + 124,3,179,132,133,180,132,179,132,211,132,179,132,211,132,3,179,132,140,211, + 132,179,132,212,132,180,132,180,132,179,132,212,132,212,132,180,132,179,132,180, + 132,180,132,3,179,132,4,180,132,157,212,132,147,124,110,99,232,49,97,8, + 232,41,176,91,179,124,212,132,212,132,180,132,179,124,148,124,180,124,212,132, + 212,132,244,132,244,132,245,132,244,132,244,132,212,132,243,140,19,149,202,98, + 170,90,170,90,170,82,106,82,3,105,74,5,73,74,140,41,66,73,74,40, + 66,41,74,40,66,40,66,8,66,8,66,232,57,231,57,199,57,231,57,3, + 199,49,133,167,49,167,41,167,49,134,41,135,41,4,102,33,175,69,25,73, + 58,204,74,20,157,178,156,211,148,243,156,211,156,178,148,178,148,243,156,48, + 140,142,115,146,148,146,140,146,148,146,148,146,140,146,140,81,140,49,132,16, + 124,239,115,207,115,207,115,207,107,175,107,175,107,142,107,175,107,175,107,174, + 99,142,99,110,91,175,107,142,99,142,99,143,99,175,107,175,99,175,107,110, + 91,143,99,143,107,143,99,143,99,143,91,3,175,99,143,175,107,175,99,175, + 99,207,99,207,107,175,99,175,99,207,107,175,99,175,107,175,99,175,99,175, + 107,143,99,207,107,3,175,99,148,207,107,175,107,207,107,240,107,176,107,175, + 99,175,107,175,99,208,99,208,107,175,99,208,107,207,107,208,107,175,99,176, + 107,208,107,176,99,208,107,175,107,3,208,107,150,175,99,176,107,175,99,175, + 107,175,99,208,107,175,107,175,99,208,107,143,99,208,99,175,99,175,99,208, + 107,143,99,175,99,207,107,143,99,143,99,175,99,175,99,207,107,3,175,99, + 140,207,107,175,99,175,99,143,99,143,99,240,107,208,107,143,99,143,99,175, + 99,175,99,207,107,4,240,107,141,17,116,139,66,233,57,9,58,8,50,200, + 49,200,49,200,41,168,41,167,41,167,33,135,41,167,41,3,135,41,3,167, + 41,134,168,41,200,49,200,49,233,49,9,50,42,58,3,107,74,137,171,74, + 208,115,147,132,208,107,208,107,241,107,17,116,50,116,114,116,3,115,116,161, + 82,108,18,100,241,91,241,107,183,165,244,140,16,116,138,82,73,74,45,99, + 49,116,73,58,162,16,97,8,114,132,244,140,45,83,7,66,41,66,41,74, + 40,66,41,74,73,74,105,74,73,74,44,107,215,181,247,181,13,75,233,49, + 43,58,233,49,229,16,3,99,8,141,100,0,100,0,197,16,233,57,172,82, + 237,90,237,90,13,91,46,99,110,107,175,107,208,115,240,123,3,17,124,129, + 17,132,3,49,124,134,17,124,17,124,49,124,49,132,81,132,81,132,3,114, + 140,131,113,140,114,140,81,140,3,81,132,5,49,132,129,81,132,4,49,132, + 135,81,132,49,132,81,132,16,124,102,41,228,32,36,33,5,4,33,129,36, + 33,3,4,33,183,195,24,130,16,39,74,199,122,69,82,167,98,8,115,4, + 74,68,82,4,74,227,65,4,74,69,82,199,106,68,82,4,82,69,82,166, + 98,166,98,198,106,198,106,199,106,7,115,7,115,69,90,130,57,196,57,143, + 164,114,213,82,213,16,197,78,172,176,180,144,180,240,196,194,73,139,123,49, + 205,241,188,78,180,97,49,105,123,232,147,135,139,102,131,71,123,5,107,198, + 98,165,98,195,73,162,65,163,65,162,65,162,65,163,57,5,162,57,132,130, + 57,162,57,162,65,163,65,3,195,65,143,227,65,227,73,4,74,4,74,37, + 82,36,82,69,90,134,98,167,106,199,106,200,114,233,114,8,123,8,123,41, + 123,179,3,163,44,99,12,91,44,99,12,99,44,99,44,99,12,99,44,99, + 12,91,78,59,208,27,147,12,21,29,179,44,175,75,12,99,12,99,44,99, + 12,99,45,99,45,99,12,91,77,67,176,35,147,12,54,21,86,37,82,60, + 77,83,12,99,45,99,45,91,44,91,45,91,45,91,3,45,99,130,45,91, + 44,91,4,45,99,135,45,91,45,99,77,99,45,91,45,99,77,99,45,99, + 5,77,99,132,77,91,45,99,77,99,77,91,3,77,99,132,78,99,77,99, + 77,99,77,91,7,77,99,135,109,91,109,99,77,99,109,99,77,91,77,99, + 77,91,3,77,99,144,109,91,109,99,77,91,236,82,204,90,12,91,45,91, + 143,107,49,116,114,124,146,124,147,124,147,124,179,124,179,132,179,124,4,179, + 132,3,211,132,139,179,132,180,132,211,132,212,132,179,132,212,132,179,132,179, + 132,211,132,179,132,180,132,4,179,132,129,180,124,3,180,132,146,179,132,212, + 132,212,132,208,107,138,66,227,24,4,25,46,75,82,116,212,132,180,132,180, + 132,180,124,179,124,180,124,180,132,212,132,212,132,4,244,132,140,245,132,179, + 132,20,149,178,140,170,90,170,90,170,82,138,82,138,82,105,82,105,74,105, + 74,8,73,74,3,40,66,142,8,66,8,66,232,57,231,57,199,57,231,57, + 199,57,199,57,167,49,167,41,167,49,167,41,166,41,134,41,4,102,33,152, + 37,33,171,74,204,74,85,165,243,156,243,156,211,148,211,156,179,148,178,148, + 211,156,114,148,166,49,239,123,178,148,178,148,146,148,146,148,114,140,81,140, + 81,132,16,132,207,115,207,115,4,175,107,144,142,99,143,107,142,99,175,107, + 142,99,142,99,175,107,142,99,143,99,142,99,142,99,110,99,175,99,143,99, + 143,99,142,99,4,175,99,3,175,107,137,143,99,175,99,175,99,175,107,175, + 99,175,107,175,99,175,107,143,99,4,175,99,148,207,107,143,99,207,107,208, + 107,175,99,208,107,240,107,208,107,208,99,207,107,208,107,207,99,175,99,207, + 107,208,99,208,99,175,99,208,107,207,99,208,99,3,208,107,132,207,107,208, + 107,240,107,207,107,9,208,107,155,175,99,208,99,207,107,208,107,208,107,207, + 107,207,107,175,99,175,99,175,107,175,99,143,99,175,99,175,107,175,107,175, + 99,143,99,142,91,143,99,175,99,175,99,143,91,143,99,175,99,175,99,208, + 107,175,99,3,208,107,191,240,107,240,107,208,107,139,66,232,49,9,58,9, + 50,232,49,232,49,200,41,167,41,168,41,167,41,135,33,135,33,135,41,167, + 41,135,41,135,41,168,41,168,41,200,49,232,49,233,49,9,58,9,58,74, + 66,107,66,139,74,139,74,172,82,208,107,115,124,208,107,18,116,50,116,82, + 124,147,124,180,132,180,132,179,132,179,124,180,124,147,124,115,116,147,124,183, + 165,244,140,16,124,138,82,73,74,45,91,17,116,106,66,162,16,33,0,48, + 124,244,140,110,91,232,65,40,74,40,74,40,66,4,73,74,138,12,99,182, + 181,247,181,78,91,201,41,10,50,233,49,229,16,99,8,99,8,3,100,0, + 143,197,8,201,49,172,82,204,90,237,90,13,99,78,99,110,107,143,107,208, + 115,240,123,240,123,17,124,17,124,49,132,3,49,124,140,17,124,49,124,49, + 124,49,132,81,132,82,132,114,132,114,140,114,140,114,132,114,140,82,140,3, + 81,132,4,49,132,129,81,132,9,49,132,132,167,41,228,32,36,33,36,33, + 8,4,33,210,227,24,130,16,198,57,9,131,3,74,199,106,232,106,69,82, + 231,114,166,98,7,115,72,131,198,106,7,123,7,115,7,115,230,106,39,115, + 198,106,198,114,133,98,133,98,165,98,101,90,36,82,163,57,131,57,13,140, + 147,221,82,213,82,213,49,213,50,213,50,205,240,196,68,98,102,82,204,147, + 106,131,9,123,130,57,195,65,195,65,163,57,130,57,130,49,130,49,98,49, + 98,49,130,57,162,65,163,65,195,65,195,65,227,73,4,74,37,74,37,82, + 69,82,102,90,102,90,166,98,167,98,167,106,199,106,199,106,200,106,199,106, + 200,106,167,106,167,106,166,106,134,98,102,98,101,90,69,90,37,90,36,82, + 228,73,227,73,4,82,162,65,159,3,160,12,99,12,91,44,99,12,99,12, + 99,44,99,12,99,44,99,44,91,44,99,45,83,110,43,115,4,245,20,21, + 37,17,60,12,91,12,99,12,99,45,99,44,91,44,99,12,99,12,91,78, + 59,17,20,212,4,86,29,21,45,208,67,236,90,12,99,3,45,99,129,77, + 99,3,45,99,3,45,91,132,45,99,45,91,45,91,45,99,3,77,99,135, + 45,99,77,99,45,99,77,91,77,91,45,99,45,99,10,77,99,129,77,91, + 10,77,99,129,109,99,4,77,99,145,109,99,77,91,110,99,109,99,45,91, + 204,82,236,82,12,91,77,99,175,107,49,116,114,124,147,124,147,132,147,124, + 179,124,179,124,4,179,132,143,180,132,211,132,179,132,212,132,179,132,212,132, + 212,132,180,132,180,132,212,132,179,132,179,132,211,132,180,132,180,124,3,179, + 132,3,180,132,145,179,132,180,132,179,132,212,132,114,124,12,83,102,41,98, + 8,139,58,17,108,180,132,212,132,212,132,180,132,180,124,179,124,179,124,4, + 212,132,3,244,132,135,245,132,114,124,53,149,81,140,138,82,170,90,138,90, + 3,138,82,130,73,74,105,74,5,73,74,137,41,74,41,74,40,66,40,74, + 40,66,41,66,40,66,8,66,199,57,3,231,57,3,199,49,133,167,41,167, + 49,167,49,134,41,134,41,4,102,33,158,69,25,106,66,106,66,85,165,211, + 156,243,156,243,156,244,164,146,148,211,156,243,156,113,148,130,16,110,99,178, + 148,146,148,114,148,114,140,114,140,81,140,49,132,16,124,239,115,207,115,207, + 107,174,107,142,107,175,107,143,107,142,107,3,142,99,129,143,107,5,142,99, + 132,175,99,175,99,175,107,110,99,3,143,99,130,175,99,175,99,3,175,107, + 4,175,99,137,143,99,175,107,207,99,175,107,143,99,175,99,175,107,175,99, + 207,107,3,175,99,130,208,107,175,99,3,240,107,137,176,107,175,99,175,99, + 208,107,208,107,207,99,208,99,208,107,175,99,3,208,107,130,240,107,240,107, + 3,208,107,129,207,107,3,208,107,142,240,107,208,107,240,107,240,107,208,107, + 240,107,208,107,175,99,176,99,175,99,208,107,208,107,208,99,175,107,7,175, + 99,130,143,99,143,99,3,175,99,151,143,99,143,99,175,99,143,99,175,99, + 208,107,208,99,208,107,240,107,175,99,207,107,17,108,17,108,45,91,138,74, + 9,50,41,58,41,58,232,49,200,49,200,49,167,41,168,41,8,167,41,135, + 200,41,200,49,200,49,9,58,41,58,74,66,107,74,3,172,74,160,236,90, + 207,107,147,124,114,132,212,148,244,140,53,149,86,157,86,149,86,149,53,149, + 86,149,118,149,118,149,54,141,22,141,183,165,52,149,114,132,138,82,105,74, + 12,91,17,116,138,74,195,24,32,0,240,115,212,140,142,99,231,65,40,74, + 40,66,3,41,74,166,73,74,73,74,203,90,150,181,215,181,143,99,201,41, + 42,58,233,49,229,16,99,8,131,8,99,8,100,0,68,0,165,8,200,49, + 171,82,236,90,237,90,13,91,78,99,111,107,175,115,176,115,208,115,240,123, + 17,124,17,124,49,124,49,124,49,132,49,124,17,124,49,124,49,124,49,132, + 81,132,3,82,132,132,114,140,114,140,114,132,82,140,4,81,132,129,49,132, + 3,81,132,7,49,132,139,81,132,81,132,9,58,227,24,36,33,36,33,4, + 33,36,33,4,33,4,33,36,33,3,4,33,180,228,24,130,16,101,41,74, + 139,227,65,200,106,167,98,134,98,68,82,101,90,199,106,166,106,36,74,4, + 74,68,82,36,82,227,65,4,74,195,65,227,65,195,65,195,57,194,57,195, + 65,194,65,195,65,130,57,9,107,13,156,170,139,105,131,8,123,199,106,167, + 90,69,90,163,65,130,49,163,57,130,57,130,49,163,65,195,65,227,65,228, + 73,36,82,69,82,102,90,134,98,167,106,199,106,199,106,231,106,3,232,114, + 155,200,114,200,106,167,106,166,98,102,98,101,90,37,82,36,82,4,74,228, + 73,227,73,227,73,4,74,4,74,37,82,69,90,134,98,166,98,167,106,134, + 98,162,65,162,57,162,65,4,74,36,82,166,98,133,98,213,3,172,44,99, + 44,99,12,91,44,99,45,99,12,99,44,99,44,99,44,91,12,91,44,99, + 12,99,45,67,208,27,147,12,53,29,212,36,175,75,12,91,12,99,45,99, + 12,91,44,91,45,91,12,99,12,91,78,51,50,12,245,12,150,21,179,52, + 110,83,12,99,12,99,44,91,44,99,44,99,45,91,44,91,45,91,45,99, + 45,91,44,99,44,91,4,45,99,132,45,91,45,99,77,99,45,91,5,77, + 99,131,45,99,77,99,77,91,5,77,99,129,109,99,4,77,99,134,77,91, + 77,99,77,99,109,99,77,99,77,91,3,77,99,130,109,99,77,91,3,77, + 99,137,77,91,77,99,236,90,236,82,236,90,12,91,78,99,208,107,50,124, + 3,147,124,8,179,132,134,180,132,211,132,179,132,180,132,179,132,212,132,4, + 179,132,155,212,132,179,132,179,132,211,132,180,132,179,132,179,124,180,132,179, + 132,179,132,180,132,179,124,212,132,147,132,142,99,199,49,130,16,135,33,241, + 99,147,124,180,124,180,132,180,132,179,124,179,124,180,124,180,124,3,212,132, + 3,244,132,140,212,132,244,132,179,132,85,157,239,131,138,90,138,82,170,82, + 138,82,105,82,105,74,105,74,5,73,74,134,41,74,41,66,41,74,40,66, + 72,74,40,66,3,8,66,3,231,57,137,199,57,199,57,199,49,167,49,167, + 49,166,41,135,41,135,41,134,41,4,102,33,163,69,33,41,58,107,66,85, + 165,211,156,20,165,243,156,211,156,211,156,178,148,243,156,239,131,163,16,208, + 115,179,148,146,148,146,148,146,140,146,148,114,140,49,132,240,123,240,123,207, + 115,175,115,175,107,175,107,207,107,175,107,142,99,143,107,110,99,143,99,110, + 99,143,99,5,142,99,169,175,107,175,99,142,91,175,99,175,99,143,99,175, + 99,143,99,175,99,175,99,143,99,143,99,175,99,208,107,175,99,207,99,175, + 99,175,107,207,107,175,99,175,107,175,99,208,107,207,107,207,107,175,99,208, + 107,240,107,208,107,16,116,208,107,208,107,175,99,208,99,208,107,176,99,208, + 107,208,107,207,99,240,107,208,107,3,240,107,140,208,107,208,107,240,107,208, + 107,240,107,240,107,208,107,240,107,208,107,240,107,208,107,208,107,3,240,107, + 136,17,116,17,116,208,107,208,107,176,99,208,107,175,99,208,107,3,175,99, + 144,208,99,175,99,208,107,208,107,175,99,175,99,208,99,175,99,175,99,176, + 99,175,99,240,107,208,99,176,99,176,99,111,91,3,175,99,204,208,99,208, + 107,208,99,45,83,106,66,232,49,9,58,41,58,232,49,232,49,200,49,200, + 41,200,41,168,41,167,41,167,41,168,41,168,41,167,41,199,41,200,49,232, + 49,233,57,9,58,41,58,74,66,106,66,171,74,204,82,237,82,13,91,45, + 99,175,107,147,132,244,140,118,157,151,157,151,157,118,149,118,149,151,149,183, + 157,216,157,249,157,25,158,216,149,151,149,183,157,53,149,146,132,138,82,73, + 74,235,90,208,107,139,74,227,24,0,0,142,107,179,132,110,99,231,65,40, + 66,41,66,40,66,41,66,73,66,73,74,73,74,138,82,84,173,182,181,240, + 115,168,33,42,50,10,50,6,17,3,99,8,147,100,0,100,0,165,8,168, + 49,171,82,236,90,13,91,45,99,46,99,110,107,143,107,208,115,240,123,17, + 124,17,124,49,124,49,124,49,132,49,132,3,49,124,134,49,132,49,132,81, + 132,81,132,114,132,114,132,3,114,140,133,82,132,114,132,81,132,81,132,49, + 132,4,81,132,130,49,132,81,132,3,49,132,136,81,132,49,132,49,132,82, + 140,171,74,195,16,36,33,4,33,3,36,33,3,4,33,144,36,33,36,33, + 4,33,130,16,4,33,75,131,227,73,199,106,134,90,231,106,162,57,195,65, + 163,57,163,57,195,65,195,65,3,163,57,133,162,57,163,57,163,57,195,65, + 163,57,4,195,65,154,227,65,195,65,162,57,163,65,195,65,4,74,36,82, + 69,82,102,90,167,98,167,106,199,106,200,106,232,114,200,114,200,106,232,114, + 199,114,167,106,167,106,134,98,102,98,102,90,69,82,37,82,36,82,3,4, + 74,155,4,82,36,82,69,82,70,90,134,98,135,98,200,106,200,114,232,114, + 8,123,8,115,8,123,232,122,232,114,200,114,167,106,134,98,102,98,37,82, + 8,115,35,90,130,65,4,74,106,131,36,90,166,98,166,106,159,3,4,44, + 99,129,12,99,3,44,99,162,12,91,44,99,44,91,44,91,44,99,44,83, + 110,51,82,20,244,20,21,37,17,60,45,83,12,99,45,91,44,99,12,91, + 45,91,45,99,12,99,45,75,176,35,115,20,86,21,53,45,49,60,45,91, + 12,99,44,99,45,99,45,91,45,99,44,91,45,99,45,91,7,45,99,138, + 77,99,77,99,77,91,45,99,45,99,77,99,77,99,77,91,77,99,77,91, + 8,77,99,129,77,91,6,77,99,129,77,91,3,109,99,147,77,99,109,99, + 109,99,77,91,77,99,77,99,110,91,77,91,236,90,236,82,236,90,13,91, + 110,99,240,107,82,124,146,124,147,124,147,124,147,132,6,179,132,170,211,132, + 211,132,179,132,211,132,179,132,211,132,180,132,180,132,179,132,179,132,211,132, + 211,132,212,132,180,132,179,132,179,124,180,132,179,132,179,132,179,124,179,124, + 179,132,180,132,179,132,240,115,203,74,195,24,4,17,13,67,82,116,180,132, + 212,132,212,132,180,132,179,124,147,124,180,124,212,124,212,132,212,132,244,132, + 212,132,4,244,132,138,179,132,52,149,174,115,170,82,170,82,138,82,138,82, + 105,82,105,82,105,74,3,73,74,133,40,74,73,74,73,74,41,74,41,66, + 4,40,66,130,8,66,8,66,3,231,57,3,199,49,133,167,49,167,49,167, + 41,135,41,134,41,5,102,33,144,69,25,9,50,204,74,85,173,178,148,52, + 165,243,164,243,156,146,148,243,156,211,156,174,123,163,16,49,124,211,156,178, + 148,3,146,148,133,113,140,49,132,16,124,240,123,207,115,5,175,107,140,207, + 107,175,107,143,107,143,99,110,99,143,99,142,99,110,99,143,99,143,99,142, + 99,175,99,3,143,99,132,142,99,143,99,143,99,143,91,9,175,99,129,207, + 107,3,175,99,133,175,107,208,107,175,107,208,107,175,107,3,208,107,135,240, + 107,208,107,175,107,208,99,208,107,208,107,208,99,3,208,107,131,240,107,208, + 107,240,107,3,208,107,133,240,107,207,99,208,107,240,107,240,115,3,240,107, + 3,208,107,4,240,107,131,17,108,240,107,240,107,4,208,107,215,176,99,208, + 107,175,99,240,107,207,99,208,99,208,107,208,99,175,99,176,99,208,107,175, + 99,175,99,111,91,208,99,17,108,143,91,240,107,175,99,143,99,176,91,208, + 99,208,99,208,107,208,99,204,66,107,66,9,50,41,58,9,58,232,49,232, + 49,200,41,200,41,200,49,168,41,167,41,200,41,168,41,168,41,200,49,200, + 41,233,49,9,50,9,58,41,58,74,66,138,74,139,74,172,74,237,82,237, + 82,13,91,77,99,175,107,115,124,179,132,151,157,183,157,183,157,151,149,151, + 149,183,157,216,157,249,157,25,158,90,166,58,166,25,158,183,157,85,157,146, + 132,138,82,73,74,170,82,175,107,138,74,227,24,0,0,12,91,81,124,110, + 99,8,66,40,66,40,66,41,66,41,66,3,73,74,152,105,82,243,164,150, + 181,49,124,168,33,10,50,233,41,6,17,131,8,99,8,99,8,100,0,100, + 0,132,8,168,49,171,82,237,90,13,91,13,99,78,99,110,107,143,107,176, + 115,240,123,4,17,124,131,49,124,49,132,49,132,3,49,124,133,49,132,49, + 132,81,132,82,140,114,132,4,114,140,5,81,132,134,49,132,81,132,49,132, + 81,132,49,132,81,132,4,49,132,132,81,132,114,140,13,91,163,24,4,36, + 33,131,4,33,36,33,36,33,4,4,33,135,163,16,195,24,42,115,36,82, + 199,106,101,82,40,115,3,195,65,142,227,65,228,65,228,73,4,74,36,74, + 37,82,69,82,69,90,102,90,134,98,134,98,167,98,167,106,167,106,4,199, + 106,136,167,106,167,98,134,98,134,98,102,98,101,90,102,90,70,90,3,69, + 82,3,69,90,167,102,90,101,90,102,90,134,98,167,98,167,106,199,106,199, + 106,167,106,200,114,200,106,199,106,167,106,167,106,134,106,134,98,101,90,69, + 90,37,82,4,82,4,74,227,73,195,65,194,65,162,65,162,57,162,57,130, + 57,162,57,130,57,98,57,167,90,100,106,130,65,163,57,73,123,96,65,195, + 65,162,65,182,3,151,12,91,44,99,12,91,44,99,12,99,44,99,12,91, + 44,99,12,99,12,99,44,99,45,91,44,99,12,99,12,91,77,67,241,27, + 180,12,53,37,179,44,110,83,236,98,12,99,3,45,99,158,45,91,44,99, + 45,91,78,59,82,12,245,12,118,29,212,44,110,75,236,98,45,99,45,99, + 77,99,44,91,44,91,45,99,44,91,45,99,45,99,45,91,77,99,77,99, + 45,99,77,99,45,99,77,99,45,99,77,99,77,99,77,91,16,77,99,133, + 109,99,110,99,77,99,77,91,77,99,3,109,99,145,77,99,109,99,78,99, + 109,99,78,99,45,91,236,82,204,82,236,90,45,99,142,99,17,116,82,124, + 147,124,147,132,147,124,147,132,7,179,132,143,211,132,211,132,179,132,179,132, + 211,132,179,132,211,132,179,132,180,132,211,132,179,132,180,132,179,132,179,132, + 180,132,3,179,132,151,180,124,179,124,211,132,212,132,82,124,45,91,166,41, + 130,16,41,50,208,99,180,132,180,132,212,132,180,132,180,132,179,124,179,124, + 180,124,212,124,212,132,212,132,244,132,212,132,3,244,132,138,212,132,211,140, + 85,157,77,107,170,90,170,90,170,82,137,82,137,82,105,74,3,73,74,134, + 105,74,73,74,73,74,41,74,73,74,73,74,3,40,66,4,8,66,3,231, + 57,136,199,49,167,49,166,49,167,41,167,41,135,41,134,41,134,41,4,102, + 33,164,69,25,9,50,13,91,85,173,244,164,244,164,243,156,243,156,178,148, + 211,156,20,165,77,115,163,24,179,148,211,156,179,156,146,148,146,148,114,148, + 113,140,81,140,16,124,207,123,175,115,175,107,174,107,174,107,142,107,142,107, + 207,107,175,99,175,107,175,107,110,91,110,99,142,91,3,143,99,137,142,99, + 175,99,143,99,175,99,143,107,143,107,175,107,175,107,143,99,6,175,99,140, + 207,99,175,99,175,99,175,107,207,107,207,99,207,99,207,107,208,107,207,99, + 208,107,208,107,3,240,107,133,207,107,208,107,208,107,176,99,208,107,3,208, + 99,137,208,107,208,107,240,107,208,99,240,107,240,107,208,107,240,107,240,107, + 3,208,107,136,240,107,208,107,240,107,240,107,208,107,240,107,240,107,241,115, + 6,240,107,130,208,107,208,99,4,208,107,131,208,99,175,99,208,99,3,208, + 107,132,208,99,176,99,240,107,208,107,3,176,99,129,208,107,3,208,99,139, + 176,99,208,99,208,99,176,99,208,99,240,99,13,83,106,58,9,50,41,58, + 41,58,3,232,49,154,232,41,200,41,168,41,167,41,200,49,200,41,200,49, + 233,49,200,41,233,49,9,50,41,58,74,66,106,66,139,74,139,74,236,82, + 13,83,13,83,45,91,78,99,175,107,147,132,146,124,151,165,216,165,3,184, + 157,164,248,157,25,158,57,158,90,166,123,174,90,166,90,166,216,157,52,149, + 114,132,138,82,73,74,138,74,110,99,106,74,4,33,0,0,138,74,240,115, + 45,91,8,66,40,66,8,66,8,66,40,66,41,66,41,66,73,74,73,74, + 178,156,117,173,114,132,136,33,10,50,233,41,6,17,3,99,8,142,100,0, + 100,0,132,0,135,41,139,82,236,90,13,91,13,99,46,99,110,107,143,107, + 208,115,208,115,241,123,3,17,124,3,49,132,3,17,124,134,49,132,49,132, + 82,132,81,132,81,132,114,132,3,114,140,6,81,132,132,49,132,49,132,81, + 132,81,132,5,49,132,137,81,132,114,140,143,107,163,16,36,33,4,33,36, + 33,4,33,36,33,4,4,33,155,36,33,36,33,195,24,162,16,201,98,133, + 106,166,98,69,82,73,123,199,106,199,98,199,106,199,114,232,122,232,106,233, + 114,232,114,232,114,167,106,167,106,166,98,134,90,69,90,69,82,69,82,37, + 82,36,82,3,69,82,181,101,90,102,90,134,98,167,98,167,106,167,106,200, + 106,200,106,199,114,232,114,232,114,200,114,199,106,199,106,166,98,166,98,134, + 98,70,90,69,82,36,82,4,74,4,74,227,73,195,65,195,65,162,65,194, + 65,195,65,162,57,162,65,162,65,162,57,163,65,162,65,163,65,162,65,162, + 57,195,65,162,65,163,65,163,65,195,65,163,65,195,65,162,65,37,74,198, + 122,130,65,130,57,41,107,226,89,162,65,228,73,177,3,135,12,99,12,91, + 12,99,44,91,44,99,44,99,12,99,4,44,99,155,45,99,12,99,44,99, + 45,99,44,99,12,91,78,51,82,12,245,28,53,37,16,60,45,91,12,99, + 44,99,45,99,45,99,44,99,44,99,12,99,44,91,143,43,82,12,53,21, + 86,37,114,60,13,91,12,99,6,45,99,140,45,91,45,99,77,91,45,91, + 77,99,77,99,45,99,45,91,77,99,45,99,45,99,77,91,4,77,99,129, + 77,91,4,77,99,130,77,91,77,91,4,77,99,129,77,91,9,77,99,142, + 77,91,77,99,77,99,109,99,45,91,236,82,236,82,12,91,13,91,175,99, + 49,116,114,124,114,124,147,124,3,179,132,129,179,124,4,179,132,142,212,132, + 180,132,211,132,211,132,212,132,211,132,180,132,179,132,211,132,180,132,179,132, + 180,132,180,132,211,132,4,179,132,139,179,124,179,132,180,132,212,132,179,132, + 110,99,8,58,163,24,135,33,176,91,115,124,3,180,132,137,179,124,180,124, + 147,124,179,124,211,124,212,132,212,132,244,132,244,132,3,212,132,139,244,132, + 212,132,211,132,85,157,235,98,170,90,170,90,138,82,105,74,105,82,105,74, + 3,73,74,131,40,74,73,74,73,74,7,40,66,130,232,65,8,66,3,231, + 57,136,199,57,199,49,167,49,166,49,167,41,167,49,134,41,134,33,3,102, + 33,137,70,33,102,33,70,33,102,33,240,115,20,165,243,156,53,173,20,165, + 4,243,156,132,203,98,196,16,20,157,179,156,3,178,148,147,146,148,113,140, + 81,132,16,124,207,115,207,115,175,107,175,107,143,107,208,107,175,107,142,99, + 175,107,142,99,142,99,143,99,142,99,142,99,175,99,3,143,99,133,175,99, + 175,99,143,99,143,99,175,99,3,175,107,130,143,99,143,99,4,175,99,136, + 208,99,207,99,175,99,208,107,208,99,207,99,207,107,207,99,3,208,107,129, + 240,107,3,208,107,129,240,107,3,208,107,137,208,99,208,99,240,107,208,99, + 240,107,207,99,208,107,208,99,240,107,5,208,107,131,240,107,240,107,208,107, + 10,240,107,132,16,108,16,108,240,107,240,107,3,208,107,129,208,99,3,240, + 107,129,208,107,3,240,107,208,207,99,208,99,240,107,208,107,208,99,208,99, + 175,91,207,99,208,107,208,99,208,99,176,91,176,91,176,99,208,99,176,99, + 240,107,176,91,106,58,9,58,9,58,73,58,9,50,9,50,232,49,200,41, + 9,50,200,41,200,49,200,49,200,41,232,49,233,49,233,49,9,58,9,50, + 74,58,106,66,106,66,171,74,172,74,236,74,13,83,45,91,78,91,110,107, + 175,107,147,132,240,107,146,124,183,157,249,165,25,166,57,166,57,166,25,166, + 90,166,123,174,123,174,155,174,155,174,248,165,53,157,146,132,170,82,73,74, + 105,74,12,91,73,74,4,33,32,0,8,58,142,107,12,91,8,66,41,66, + 8,66,40,66,41,66,40,66,3,73,74,172,113,148,52,173,178,148,135,25, + 233,41,201,41,5,17,131,8,99,8,100,0,100,8,100,0,132,0,103,33, + 106,74,237,90,13,91,45,99,78,99,110,107,143,107,176,115,240,115,240,115, + 17,124,16,124,49,124,17,124,49,132,49,124,17,124,49,124,49,132,49,132, + 81,132,49,132,82,132,82,132,114,132,113,132,82,140,82,140,82,132,82,132, + 3,81,132,129,49,132,6,81,132,204,49,132,49,132,81,132,49,132,81,140, + 240,123,227,24,4,33,36,33,4,33,36,33,4,33,36,33,4,33,36,33, + 36,33,4,33,36,33,195,24,130,16,72,74,199,122,102,90,167,98,69,82, + 134,90,40,115,73,131,7,115,8,123,165,98,133,90,101,90,37,82,134,90, + 102,90,167,98,167,106,199,106,231,114,200,114,232,114,200,114,232,114,200,106, + 199,106,167,106,134,98,134,98,102,90,69,90,36,82,4,82,4,74,227,65, + 195,65,162,65,130,57,162,57,130,57,162,57,130,57,162,57,163,57,162,57, + 162,65,163,65,163,65,162,65,163,65,163,65,195,65,162,65,195,65,163,65, + 162,65,3,163,65,130,162,65,162,57,6,195,65,140,163,65,195,65,163,65, + 163,65,163,57,74,123,129,65,162,65,102,82,165,114,130,65,4,66,171,3, + 131,44,99,44,99,12,91,5,12,99,135,44,99,12,91,44,91,45,99,12, + 99,45,99,45,99,3,44,99,149,78,59,241,27,180,20,53,37,147,52,142, + 75,12,99,45,99,44,99,45,91,45,91,44,91,44,99,44,99,77,67,17, + 20,212,20,86,29,179,52,143,75,12,99,6,45,99,143,45,91,45,91,45, + 99,45,91,77,99,45,99,77,99,45,99,77,99,45,99,77,91,45,99,77, + 99,77,91,77,91,3,77,99,129,77,91,10,77,99,135,77,91,77,99,78, + 99,109,99,77,99,77,99,109,99,3,77,99,141,109,99,12,91,236,82,236, + 90,12,91,45,99,208,107,49,116,114,124,147,124,147,124,179,124,179,124,3, + 179,132,129,179,124,3,179,132,129,211,132,3,179,132,135,211,132,211,132,180, + 132,211,132,212,132,180,132,180,132,3,179,132,4,180,132,142,179,124,179,132, + 180,132,16,116,170,74,4,33,163,16,13,67,50,108,179,132,180,124,180,124, + 180,132,180,132,3,179,124,3,212,132,145,244,132,244,132,212,132,244,132,212, + 132,244,132,211,132,179,132,52,157,170,90,202,90,138,82,138,82,105,82,105, + 82,105,74,105,74,3,73,74,133,40,74,40,74,41,74,40,74,72,74,3, + 40,66,131,8,66,8,66,232,65,3,231,57,139,199,57,199,49,167,49,167, + 49,167,41,135,41,134,41,134,41,102,41,102,33,101,33,3,102,33,132,103, + 33,82,132,52,165,243,156,3,20,165,134,211,156,20,165,20,165,138,82,5, + 25,53,165,4,178,148,136,146,148,81,140,81,132,240,123,240,115,207,115,175, + 107,207,115,3,175,107,150,142,99,175,107,142,99,143,99,143,99,142,99,143, + 99,143,99,175,107,143,99,175,107,175,99,175,99,143,99,143,99,207,99,143, + 99,175,99,207,107,175,107,175,99,207,107,3,175,99,134,208,107,240,107,175, + 99,208,107,207,107,207,107,3,208,107,138,207,107,208,107,240,107,208,107,208, + 107,175,107,208,107,208,107,208,99,208,99,6,208,107,138,240,107,208,107,208, + 107,208,99,208,107,208,107,208,99,240,107,240,107,208,107,5,240,107,162,208, + 107,16,108,240,107,208,107,240,107,240,107,17,108,16,108,240,107,208,107,240, + 107,240,107,208,107,240,107,208,107,240,107,208,107,240,107,208,107,240,99,240, + 107,240,107,240,99,208,99,208,107,240,107,208,99,176,91,175,91,208,107,208, + 99,176,99,208,99,208,91,5,208,99,163,204,66,74,58,41,58,41,58,9, + 50,41,58,9,50,200,41,9,58,232,49,200,41,232,41,200,49,232,49,232, + 49,9,50,9,58,41,50,74,58,74,66,106,66,204,74,172,74,237,82,45, + 91,45,91,110,99,110,107,175,107,115,124,110,91,12,75,118,157,90,174,90, + 174,3,90,166,151,123,174,155,174,187,182,188,182,188,182,248,165,85,149,211, + 140,171,82,73,74,73,74,235,90,73,66,36,33,33,0,166,49,77,99,203, + 82,8,66,41,74,40,66,40,66,73,66,4,73,74,154,81,140,52,165,211, + 156,136,33,233,41,201,41,5,25,131,8,99,8,99,8,99,0,100,0,132, + 0,71,33,106,74,236,90,13,99,45,99,78,99,78,99,143,107,176,115,240, + 115,240,123,17,124,17,124,5,49,124,132,49,132,49,124,49,132,49,132,4, + 81,132,132,82,132,113,132,113,132,114,132,7,81,132,132,49,132,81,132,81, + 132,49,132,3,81,132,137,49,132,81,132,49,124,4,25,4,33,36,33,4, + 33,36,33,36,33,3,4,33,3,36,33,162,228,24,130,16,230,57,40,139, + 69,82,200,114,36,82,166,98,166,98,231,114,133,98,231,114,165,98,166,98, + 133,90,101,90,166,98,134,90,102,90,69,90,69,82,36,82,36,74,4,74, + 228,73,227,65,227,65,163,65,163,57,163,57,162,65,130,65,162,57,162,57, + 3,162,65,6,163,65,137,195,57,163,65,163,57,163,65,163,65,163,57,195, + 65,163,65,194,65,3,195,65,140,163,65,4,74,134,90,227,73,195,65,227, + 73,36,74,101,90,198,106,166,98,165,106,130,65,4,195,65,138,162,65,195, + 65,130,57,73,107,193,89,162,65,195,57,73,123,161,73,195,65,243,3,182, + 44,99,12,91,44,99,12,91,12,99,44,99,44,99,12,91,44,99,44,91, + 44,99,12,99,12,91,44,99,44,99,45,99,44,91,44,91,45,91,45,83, + 111,43,147,12,21,37,21,45,208,67,13,91,12,99,12,91,45,99,44,91, + 44,91,45,99,12,99,45,83,143,43,115,12,86,29,53,45,17,60,236,98, + 12,99,45,99,45,91,45,91,45,99,44,91,45,91,77,99,45,99,77,91, + 45,99,77,99,77,99,45,91,3,77,99,137,45,91,77,99,77,99,77,91, + 77,91,77,99,45,99,77,99,77,91,3,77,99,129,77,91,4,77,99,156, + 77,91,109,99,109,99,77,99,77,99,110,99,109,99,77,99,109,99,77,99, + 77,91,12,91,235,82,236,90,13,91,77,99,208,107,82,116,114,124,147,124, + 147,132,179,124,147,132,179,132,179,132,180,132,179,132,179,132,3,211,132,158, + 179,132,180,132,211,132,179,132,211,132,179,132,180,132,211,132,179,132,180,132, + 179,132,180,132,180,124,179,132,179,124,180,132,179,132,180,132,212,132,82,124, + 78,91,134,41,130,16,232,41,241,99,147,124,180,124,180,124,179,132,179,132, + 3,179,124,174,212,124,212,132,212,132,212,140,244,132,212,132,244,132,244,132, + 212,132,244,132,179,132,244,140,210,148,138,82,203,90,170,82,138,82,105,82, + 105,82,105,74,73,74,73,74,40,74,40,74,41,74,73,74,41,74,8,66, + 40,66,40,74,40,66,8,66,8,66,8,58,8,58,231,57,199,57,231,57, + 199,49,199,49,167,49,166,49,134,41,135,41,134,41,134,41,3,102,33,154, + 101,33,70,33,135,33,200,49,114,132,52,165,52,165,20,165,20,165,211,156, + 211,156,243,156,243,164,41,74,135,41,85,173,178,148,178,148,146,148,178,148, + 146,148,114,140,17,132,16,124,240,115,175,115,3,175,107,144,174,107,175,107, + 175,99,174,99,175,107,143,99,143,99,110,99,143,99,175,107,143,99,175,99, + 175,107,175,99,175,99,143,99,4,175,99,147,175,107,175,99,175,99,207,99, + 208,107,207,99,208,99,175,99,208,99,176,107,175,99,208,107,207,99,240,107, + 176,99,240,107,175,107,207,99,240,107,3,208,107,133,208,99,207,99,208,99, + 208,107,208,107,3,240,107,145,208,107,208,99,208,107,175,99,208,107,208,107, + 208,99,240,107,208,107,176,99,240,107,208,99,240,107,208,107,240,107,240,107, + 208,107,4,240,107,135,17,108,240,107,240,107,16,108,208,107,240,107,240,107, + 3,208,107,132,175,99,240,107,240,107,208,107,3,240,107,138,240,99,240,107, + 240,107,208,107,241,99,208,99,208,99,176,99,240,99,240,107,4,208,99,167, + 176,99,208,99,208,99,209,99,45,75,74,58,41,58,41,58,41,50,9,50, + 9,50,200,41,232,49,200,49,232,49,200,49,200,49,232,49,233,49,9,50, + 41,58,41,58,106,58,107,66,139,66,204,74,204,82,237,82,45,91,78,91, + 110,99,143,107,175,107,147,124,45,83,106,58,150,157,188,182,187,182,3,123, + 174,163,155,182,187,182,220,182,220,182,187,174,25,166,53,149,179,140,203,82, + 105,74,41,74,171,82,41,66,36,33,33,8,102,41,236,90,171,74,41,74, + 41,74,40,66,41,66,41,66,73,74,73,66,73,74,40,66,48,140,20,165, + 243,156,200,33,9,50,233,41,38,25,131,8,3,99,8,143,68,0,100,0, + 71,33,74,74,13,91,13,99,45,99,45,99,78,107,111,107,176,115,208,115, + 241,123,17,124,17,124,3,49,124,142,49,132,17,124,49,124,49,124,49,132, + 81,132,49,132,82,132,82,132,81,132,82,132,114,132,113,132,82,132,14,81, + 132,139,49,132,81,132,81,132,102,41,228,32,36,33,4,33,36,33,36,33, + 4,33,4,33,4,36,33,156,228,32,130,16,101,41,73,139,36,82,8,115, + 134,90,200,106,36,74,36,82,228,73,134,90,3,74,68,82,3,74,163,65, + 163,65,162,57,195,65,162,65,162,57,163,57,162,57,130,57,162,57,163,65, + 195,65,163,65,3,195,65,178,162,57,162,65,163,65,163,65,162,57,163,65, + 163,57,228,65,195,65,162,57,4,74,36,82,195,65,4,74,227,73,3,74, + 195,65,36,82,162,65,195,65,163,65,195,65,163,65,195,65,163,65,69,74, + 138,139,230,114,39,123,7,123,170,139,104,139,230,114,198,106,72,123,194,73, + 163,65,194,65,195,65,195,65,194,65,195,65,130,57,167,82,100,114,162,65, + 130,57,106,123,194,81,194,65,189,3,136,12,99,44,99,12,99,12,99,44, + 99,12,99,12,99,13,91,5,44,99,175,45,99,44,99,44,99,12,91,12, + 99,44,99,45,99,12,99,45,67,241,27,180,28,53,45,179,44,110,75,12, + 99,45,99,44,99,45,99,45,91,45,99,44,99,12,99,45,75,17,20,212, + 20,118,37,212,44,143,75,12,99,12,99,45,91,45,91,45,99,45,99,77, + 99,44,91,45,99,77,91,45,99,45,99,77,99,45,99,77,99,45,99,77, + 99,77,99,77,91,4,77,99,129,77,91,8,77,99,135,109,99,78,99,77, + 99,77,99,109,99,77,99,109,91,3,77,99,143,78,99,77,91,236,82,203, + 82,12,91,13,91,110,99,17,116,82,124,114,124,147,124,147,132,179,132,179, + 124,179,124,4,179,132,140,211,132,180,132,180,132,211,132,211,132,179,132,211, + 132,211,132,179,132,180,132,179,132,180,132,3,179,132,150,180,132,211,132,179, + 132,179,132,180,132,212,132,147,132,110,99,40,58,130,16,134,33,111,83,147, + 124,180,132,180,124,179,124,179,132,179,124,179,124,180,124,180,124,179,132,6, + 212,132,3,244,132,138,179,132,53,157,48,132,170,90,170,90,170,82,138,82, + 105,82,105,74,105,82,4,73,74,135,41,66,40,74,41,74,40,66,8,74, + 41,74,72,74,4,8,66,129,231,57,3,199,57,131,199,49,167,49,166,49, + 4,134,41,3,102,33,157,70,33,37,33,9,50,74,66,179,148,52,165,243, + 156,20,165,52,165,243,156,243,156,243,164,179,156,199,57,233,57,20,165,146, + 148,178,148,146,148,178,148,146,140,114,140,114,140,207,123,240,123,240,115,208, + 115,175,107,207,107,3,175,107,135,175,99,175,107,175,107,143,107,175,99,175, + 107,143,99,8,175,99,151,207,99,175,99,175,99,207,99,207,99,240,107,175, + 99,208,107,207,99,207,99,208,107,207,99,207,107,208,99,240,107,208,107,208, + 99,208,107,208,107,208,99,208,99,240,107,207,107,3,208,107,144,176,99,207, + 99,208,107,207,99,208,107,207,99,208,99,208,99,175,99,207,99,208,107,208, + 107,208,99,208,107,208,107,175,99,7,208,107,135,240,107,207,99,208,107,240, + 107,240,107,16,108,208,107,3,240,107,167,208,99,240,107,240,107,208,99,240, + 107,208,107,208,99,240,107,208,107,240,107,240,107,241,107,241,107,208,99,240, + 99,240,99,208,91,208,91,176,91,208,99,208,99,176,91,176,99,176,99,208, + 99,208,91,241,99,208,99,241,99,176,99,13,75,41,58,74,58,41,50,9, + 50,232,49,232,49,233,49,200,41,3,232,49,150,232,41,232,49,9,50,9, + 50,73,58,74,58,138,66,139,66,172,74,204,82,236,82,45,91,78,91,110, + 99,78,99,207,107,147,132,110,91,41,50,53,149,122,174,123,174,4,155,174, + 150,25,158,151,149,216,157,123,174,25,166,86,157,244,140,236,90,73,74,41, + 66,138,74,40,66,36,41,65,0,36,33,138,82,106,74,41,74,73,74,40, + 74,73,74,73,66,3,73,74,139,40,66,239,131,243,164,20,165,233,41,10, + 50,42,58,103,33,131,8,99,8,99,8,3,100,0,144,6,25,74,66,13, + 91,13,91,45,99,46,99,78,107,110,107,176,115,240,115,240,123,17,124,17, + 124,49,124,49,132,81,124,4,49,124,138,49,132,49,124,49,132,81,132,81, + 132,82,132,81,132,113,140,114,140,114,132,8,81,132,132,82,132,81,132,49, + 132,49,132,4,81,132,137,114,140,200,49,227,32,36,33,4,33,36,33,4, + 33,4,33,36,33,3,4,33,156,36,33,4,33,130,16,228,24,107,139,36, + 82,8,115,69,90,199,106,195,65,195,65,4,74,36,82,3,74,4,74,134, + 98,133,98,166,98,68,82,199,106,133,90,231,106,165,98,231,106,6,115,231, + 114,3,74,162,57,4,195,65,132,101,90,4,82,228,73,36,82,3,101,90, + 141,199,106,198,114,7,115,39,123,101,98,100,90,166,106,138,131,104,139,39, + 123,138,147,227,81,194,65,3,195,65,155,163,65,163,65,194,65,4,74,4, + 74,36,82,195,65,227,65,162,65,36,82,130,57,227,65,162,57,162,57,162, + 65,163,65,163,65,195,65,195,65,194,65,196,65,72,131,161,73,130,57,232, + 98,100,98,163,65,169,3,136,12,99,44,99,44,99,12,99,44,99,12,99, + 44,99,12,99,3,44,99,129,12,99,4,44,99,130,12,99,44,99,3,45, + 99,151,12,99,45,83,111,43,115,20,21,37,21,45,240,59,45,91,12,99, + 45,91,44,99,44,99,45,91,45,91,45,99,45,83,143,43,115,12,54,37, + 53,53,49,60,13,91,12,99,6,45,99,130,77,99,77,99,3,45,99,129, + 77,99,4,77,91,138,77,99,77,91,77,99,77,99,77,91,77,91,77,99, + 77,99,77,91,77,91,5,77,99,129,109,99,5,77,99,141,77,91,77,91, + 78,99,45,91,236,82,203,82,12,91,45,99,142,99,17,108,82,124,146,124, + 146,124,3,147,124,7,179,132,132,180,132,179,132,211,132,211,132,3,179,132, + 129,211,132,5,179,132,149,180,132,180,132,179,132,179,132,180,132,212,132,240, + 107,171,74,4,33,228,16,204,66,50,108,180,132,180,124,179,124,179,124,179, + 132,180,132,179,124,180,124,212,124,6,212,132,4,244,132,144,179,132,85,157, + 174,115,170,90,203,90,138,82,138,82,137,82,105,74,105,74,73,74,73,74, + 40,74,40,74,41,74,41,74,3,40,74,3,40,66,139,8,66,8,58,231, + 57,231,57,199,57,231,57,199,49,167,49,166,49,134,41,167,41,3,134,41, + 158,102,33,102,33,69,33,70,33,4,17,77,91,74,66,179,148,52,165,244, + 164,244,164,52,165,243,156,243,156,20,165,211,156,134,49,107,66,20,165,146, + 148,178,148,178,148,146,148,146,148,113,140,81,132,240,123,240,123,207,115,207, + 115,4,175,107,176,175,99,175,107,175,99,175,99,143,99,175,99,175,107,143, + 99,175,107,175,99,175,99,143,99,175,107,175,99,207,107,207,107,175,99,207, + 99,208,99,208,99,208,107,207,99,175,107,208,107,208,107,208,99,208,107,207, + 107,208,107,207,99,175,99,240,107,208,99,208,99,240,107,207,99,207,99,208, + 107,208,107,175,107,208,107,208,107,208,99,207,99,175,99,175,99,207,99,207, + 99,3,208,99,148,240,107,208,107,208,99,175,99,175,99,208,107,175,99,240, + 107,175,99,240,107,208,107,208,99,208,107,240,107,240,107,208,107,240,107,240, + 107,208,107,240,107,4,208,107,140,175,107,208,99,240,107,208,107,208,107,240, + 107,208,99,240,107,208,99,208,107,240,107,240,107,4,208,99,129,176,99,7, + 176,91,194,143,91,176,91,176,91,208,91,240,99,17,108,46,75,74,58,9, + 58,41,58,9,50,9,50,232,41,233,49,9,50,232,41,233,49,232,49,233, + 49,232,49,9,58,41,58,41,58,74,58,106,66,139,66,204,74,236,82,237, + 82,45,83,78,91,78,99,237,90,175,107,147,132,110,91,73,58,244,140,58, + 174,123,174,155,182,155,174,155,174,90,174,53,133,50,100,115,116,248,157,57, + 174,118,157,211,140,236,90,73,74,40,66,105,74,40,66,36,41,65,8,228, + 32,73,74,41,66,41,74,73,74,41,74,41,74,73,66,3,73,74,153,73, + 66,174,123,211,164,52,165,9,50,42,50,43,58,104,33,164,8,99,8,99, + 8,100,0,68,0,100,0,6,25,42,66,13,91,13,99,45,99,78,99,78, + 107,111,107,176,115,208,115,240,123,3,17,124,131,49,132,49,132,81,132,4, + 49,124,135,49,132,49,132,81,132,81,132,82,132,82,132,81,140,3,82,132, + 6,81,132,129,82,132,8,81,132,137,114,140,74,66,196,24,4,33,4,33, + 36,33,4,33,36,33,36,33,3,4,33,151,36,33,4,33,163,24,163,16, + 75,131,68,90,8,115,102,90,231,106,227,65,195,57,101,82,8,115,72,123, + 7,115,199,106,231,114,8,115,133,98,133,98,166,106,7,115,230,114,3,198, + 106,153,68,90,101,90,68,82,227,65,163,65,227,73,199,106,166,98,39,123, + 7,115,105,131,231,114,166,106,134,98,198,106,166,98,166,98,101,90,227,73, + 4,74,101,90,68,82,36,82,4,82,194,65,6,195,65,142,130,57,98,57, + 130,57,130,57,162,57,162,57,195,57,195,65,4,74,4,74,69,82,102,90, + 231,106,194,81,4,195,65,135,130,57,105,123,193,81,162,65,102,74,198,114, + 162,65,204,3,137,44,99,12,99,44,99,12,99,44,99,12,91,12,99,12, + 99,12,91,3,44,99,129,45,99,4,44,99,173,44,91,45,91,45,91,45, + 99,44,99,44,99,45,91,78,59,17,20,212,28,53,45,114,52,77,83,12, + 99,44,99,45,99,44,91,45,99,45,91,44,99,44,91,77,67,50,12,21, + 29,118,53,147,52,77,83,12,99,77,99,45,91,45,99,45,99,77,99,77, + 99,45,91,77,99,45,99,77,99,77,99,77,91,77,99,77,91,77,99,77, + 91,77,91,15,77,99,148,109,99,77,91,77,99,110,91,110,99,77,91,109, + 99,44,91,236,82,204,82,12,91,45,99,143,99,49,116,114,124,146,124,147, + 124,147,124,179,124,179,124,6,179,132,133,211,132,180,132,179,132,211,132,211, + 132,3,179,132,132,180,132,179,132,180,132,179,124,3,179,132,147,211,124,179, + 124,180,132,212,132,114,124,45,83,166,41,97,16,41,50,208,99,147,124,180, + 132,180,132,179,132,180,124,180,124,147,124,179,124,179,124,8,212,132,147,244, + 132,212,132,212,132,114,132,150,165,44,107,203,98,203,90,170,82,137,82,105, + 82,73,74,105,74,73,74,73,74,40,74,40,74,40,66,41,74,3,40,74, + 174,40,66,73,66,40,66,8,66,8,58,232,57,199,57,231,57,199,57,199, + 57,199,49,134,49,134,49,166,41,134,41,134,41,102,41,102,33,102,33,70, + 33,70,33,228,16,111,99,204,82,244,156,20,165,20,157,20,165,20,165,52, + 165,20,165,243,156,146,148,69,41,13,91,20,165,179,148,178,148,146,148,146, + 140,146,140,81,132,16,124,240,123,240,123,207,115,3,207,107,198,175,107,175, + 99,175,107,175,107,175,99,175,107,143,99,175,99,175,107,143,99,175,99,208, + 107,175,99,207,99,207,99,208,107,207,107,208,107,175,99,208,107,208,107,207, + 99,208,107,207,107,176,99,208,99,208,107,208,99,240,107,208,107,208,99,240, + 107,208,107,208,107,208,99,175,99,208,99,208,99,208,107,175,99,175,99,207, + 99,208,107,208,107,175,99,208,99,208,99,176,99,240,107,207,107,207,107,175, + 99,208,107,240,107,208,107,240,107,208,99,175,99,208,99,208,107,207,107,175, + 99,207,107,208,107,207,99,175,99,240,107,208,107,208,99,240,107,7,208,107, + 3,208,99,149,208,107,208,99,208,107,208,99,208,99,176,99,176,99,240,107, + 175,99,175,99,208,99,208,99,176,99,176,91,176,91,175,91,143,91,176,99, + 175,91,143,91,143,91,3,176,91,219,208,91,208,91,240,99,241,99,204,74, + 106,66,41,58,9,50,233,49,233,49,232,49,232,41,200,41,233,49,200,49, + 200,49,232,41,9,50,41,58,42,58,41,58,106,66,106,66,204,74,236,82, + 237,82,13,91,46,91,78,99,171,82,142,107,179,132,111,99,41,50,178,132, + 25,166,90,166,155,174,187,182,155,182,90,166,245,124,241,91,50,108,184,157, + 58,174,150,157,244,140,12,91,73,74,40,66,73,74,8,66,69,41,97,8, + 195,24,8,66,8,58,40,66,73,74,73,74,41,74,73,66,73,66,105,74, + 73,74,41,66,109,115,211,156,52,173,74,50,10,50,43,58,136,33,164,8, + 99,8,99,8,99,0,100,0,100,0,229,24,41,66,13,91,13,99,45,99, + 46,99,78,99,111,107,176,115,208,115,241,123,3,17,124,137,49,132,81,132, + 81,132,49,124,49,132,49,124,49,132,81,124,49,132,3,81,132,132,82,132, + 81,132,81,132,82,132,3,81,132,129,82,132,11,81,132,140,49,132,114,140, + 171,74,227,24,4,33,36,33,4,33,36,33,4,33,4,33,36,33,36,33, + 3,4,33,171,163,24,130,16,10,115,101,106,231,98,134,98,232,106,228,73, + 36,74,4,74,133,98,7,115,133,98,101,90,133,98,101,82,227,73,101,90, + 68,82,7,107,133,98,227,65,73,123,7,115,72,123,170,147,72,131,69,90, + 163,65,195,65,36,82,37,82,36,82,3,74,4,74,194,65,162,65,162,57, + 162,65,130,49,130,49,130,57,98,49,4,97,49,129,130,57,4,195,65,146, + 162,65,195,65,227,65,200,98,41,115,74,123,139,139,236,147,13,164,110,172, + 175,180,175,188,176,196,17,205,209,196,147,221,99,130,162,57,3,195,65,135, + 130,57,9,107,35,98,162,65,4,74,231,114,194,73,203,3,132,12,99,44, + 91,12,99,12,91,6,44,99,171,12,91,44,99,44,99,13,99,12,99,45, + 99,44,99,12,99,44,99,44,99,45,99,45,91,45,99,45,99,12,99,12, + 83,111,35,82,20,21,37,53,45,208,67,45,91,12,99,45,99,45,99,45, + 91,44,91,44,91,12,99,45,83,144,35,115,20,86,53,53,53,240,67,12, + 99,45,99,45,99,77,91,77,99,45,99,77,99,45,91,7,77,99,129,77, + 91,5,77,99,157,77,91,77,99,77,99,77,91,77,99,77,91,78,99,77, + 99,110,99,77,91,109,91,77,91,78,99,77,99,110,99,77,91,77,99,77, + 91,12,83,236,82,236,82,12,91,77,99,207,107,49,124,114,124,146,124,147, + 124,179,124,6,179,132,129,211,132,3,179,132,155,211,132,180,132,180,132,211, + 132,179,132,180,132,180,124,179,132,179,132,179,124,180,132,180,132,179,132,211, + 132,179,132,211,132,114,132,143,99,231,49,162,24,69,25,208,91,115,124,180, + 132,179,124,179,132,180,124,3,179,124,130,147,124,180,132,7,212,132,140,244, + 132,212,132,244,132,212,132,211,140,183,173,170,90,235,98,203,90,170,82,138, + 82,105,82,6,73,74,3,40,74,130,8,66,40,74,3,40,66,131,8,66, + 232,65,231,57,3,199,57,132,199,49,166,49,166,49,134,49,3,134,41,161, + 102,33,69,33,69,33,101,33,70,33,228,16,142,99,171,82,243,156,20,165, + 244,164,243,156,211,156,20,165,211,156,20,165,113,148,195,24,175,107,244,164, + 178,148,179,148,146,148,146,148,114,148,113,140,49,132,16,124,240,123,175,115, + 240,115,175,107,207,107,6,175,107,129,208,107,4,175,99,3,207,107,211,175, + 99,208,107,175,99,175,99,208,107,207,107,240,107,175,99,208,99,208,99,208, + 107,175,99,207,99,208,107,175,99,207,99,175,99,208,107,207,107,208,107,208, + 107,208,99,207,99,208,107,175,99,208,99,207,99,208,99,208,107,207,107,175, + 99,240,107,208,99,175,99,208,107,207,99,208,99,208,107,208,107,175,99,207, + 99,208,99,208,107,175,99,207,99,208,107,208,107,175,99,208,107,207,107,240, + 107,208,107,175,99,208,107,207,99,240,107,208,99,240,107,208,107,240,107,240, + 107,208,99,208,107,208,107,175,99,208,107,208,107,208,99,208,99,240,107,208, + 99,208,107,176,99,208,99,176,99,208,99,208,99,176,99,208,99,176,91,144, + 91,143,91,176,91,3,143,91,141,175,91,176,91,143,91,143,91,175,91,176, + 91,176,91,240,99,237,74,204,74,9,58,9,50,41,58,3,232,49,215,200, + 41,139,66,200,41,232,49,232,49,9,50,41,58,41,58,74,58,106,66,139, + 74,204,82,204,82,236,82,13,83,78,91,78,99,171,74,142,99,180,132,143, + 99,8,50,114,124,216,157,25,158,122,174,155,174,155,182,90,174,25,158,118, + 141,151,149,123,182,90,174,85,157,211,140,77,99,73,74,40,74,8,66,232, + 65,69,41,98,8,162,24,199,57,199,57,40,74,105,74,73,74,73,74,73, + 66,73,74,73,74,105,74,73,74,77,115,210,156,52,173,171,66,10,50,42, + 50,104,33,164,8,99,8,131,8,100,8,100,0,100,0,197,16,9,66,236, + 90,13,99,45,99,78,99,78,107,143,107,175,115,208,115,240,123,17,124,49, + 124,49,124,49,132,82,132,81,132,49,124,81,124,3,49,124,130,81,132,81, + 132,4,82,132,136,81,132,81,132,82,132,81,132,82,132,114,132,82,132,82, + 132,10,81,132,131,114,140,13,91,228,24,3,36,33,185,4,33,36,33,36, + 33,4,33,4,33,36,33,4,33,4,33,195,24,130,16,169,90,167,106,134, + 90,199,106,231,106,36,82,40,123,231,114,72,123,199,114,68,82,198,106,231, + 114,170,147,7,123,138,139,198,106,231,106,198,106,3,74,199,106,165,98,133, + 90,100,90,101,90,3,74,195,65,195,65,163,65,162,57,195,65,195,65,228, + 65,4,74,36,74,69,82,134,98,199,106,232,106,41,123,106,131,171,139,236, + 155,45,156,142,180,162,81,163,65,4,195,65,145,163,65,195,65,176,156,180, + 229,147,221,147,221,179,229,49,213,111,180,240,188,114,221,77,180,111,164,175, + 196,112,156,169,179,129,65,3,195,65,135,162,65,102,82,166,114,162,65,227, + 65,231,114,226,81,168,3,133,44,99,44,99,12,99,44,99,12,99,8,44, + 99,129,44,91,7,44,99,142,45,91,44,99,44,91,45,91,45,99,12,91, + 78,51,17,28,212,28,53,45,147,52,142,75,12,99,44,99,4,45,91,148, + 45,99,45,91,110,51,82,12,21,37,86,53,49,60,77,83,12,99,77,99, + 77,99,45,99,77,99,77,91,77,99,77,91,45,91,77,99,77,99,77,91, + 3,77,99,129,77,91,6,77,99,129,109,99,9,77,99,146,109,99,77,91, + 77,91,77,99,77,99,236,82,235,82,236,90,13,91,110,99,208,107,82,116, + 115,124,146,124,147,124,147,132,179,132,179,124,13,179,132,129,180,132,4,179, + 132,145,180,132,180,132,179,132,179,124,180,132,179,132,208,107,171,74,227,24, + 228,24,204,66,50,116,179,132,180,132,179,132,179,124,180,132,3,179,124,129, + 180,132,7,212,132,142,244,132,244,132,212,132,244,132,212,132,211,140,85,165, + 170,90,235,98,203,90,170,90,138,82,137,82,105,74,4,73,74,132,40,74, + 72,74,40,66,41,74,3,40,66,3,8,66,136,232,65,231,57,199,57,199, + 57,199,49,199,49,134,49,166,41,4,134,41,129,102,33,4,69,33,154,37, + 25,200,41,41,58,13,91,85,173,52,165,20,165,243,156,211,156,211,156,20, + 165,145,148,163,16,49,124,243,156,210,148,178,148,146,148,178,148,114,140,113, + 140,49,132,16,124,240,123,207,115,207,115,4,175,107,151,143,99,175,107,207, + 107,208,107,175,107,207,99,175,99,207,99,207,107,175,99,208,107,175,99,207, + 99,175,99,207,99,175,99,207,107,208,107,175,99,208,107,208,107,175,99,207, + 99,3,175,99,172,208,107,208,107,176,99,208,99,207,99,208,99,208,107,208, + 107,207,99,208,107,175,99,208,107,207,107,208,99,175,99,207,107,207,99,240, + 107,208,99,175,99,208,107,208,107,208,99,208,99,208,107,175,99,208,99,175, + 99,208,99,175,99,208,107,207,99,175,99,207,99,176,99,208,107,240,107,176, + 99,175,99,208,107,176,99,208,107,208,107,240,107,4,208,107,137,240,99,207, + 99,208,99,175,99,208,107,176,99,208,107,208,107,208,99,3,208,107,219,176, + 99,208,99,176,99,208,99,208,99,143,91,175,91,143,91,143,91,143,83,111, + 83,143,83,143,91,143,83,143,83,175,91,143,91,176,91,176,91,208,91,78, + 75,106,58,74,58,233,49,232,49,232,49,200,49,232,49,167,33,17,108,106, + 58,232,49,232,49,233,49,41,58,41,58,106,66,74,66,171,74,204,74,204, + 82,237,82,13,91,78,91,110,99,236,82,175,107,212,132,175,99,41,58,82, + 124,183,157,216,157,58,166,90,174,122,174,122,174,122,182,123,174,123,174,220, + 182,58,174,117,157,20,149,77,107,73,74,41,74,8,66,232,57,69,41,98, + 8,130,16,167,57,166,49,40,74,138,82,73,74,134,41,228,24,195,24,166, + 49,105,74,73,74,44,107,210,156,52,173,204,74,10,50,10,50,136,33,164, + 8,3,99,8,148,100,0,100,0,197,16,232,57,236,90,13,91,45,99,78, + 99,78,107,143,107,207,115,208,115,240,123,17,124,17,124,49,124,81,132,81, + 132,82,132,49,132,4,49,124,141,49,132,81,132,82,132,82,132,114,132,81, + 132,82,132,82,132,81,132,82,132,81,132,114,140,114,140,6,81,132,129,82, + 132,5,81,132,138,78,99,4,25,4,33,4,33,36,33,4,33,36,33,4, + 33,36,33,36,33,3,4,33,177,195,24,98,16,39,74,8,123,69,82,8, + 115,199,106,36,82,231,106,198,106,198,106,166,98,4,74,3,74,4,74,101, + 90,36,82,36,82,3,74,36,74,69,82,68,82,69,82,101,90,231,106,73, + 123,138,139,101,98,162,65,227,65,195,65,130,57,9,107,110,172,143,172,175, + 188,175,188,241,196,208,196,208,204,241,196,82,213,208,196,50,205,147,229,115, + 221,212,237,35,106,162,57,5,195,65,144,130,57,205,123,147,221,82,213,82, + 213,114,221,208,204,237,163,172,139,114,205,143,188,237,155,175,188,209,180,141, + 196,161,81,3,195,65,135,194,65,4,74,231,122,162,73,163,57,232,106,35, + 90,197,3,138,44,91,12,99,44,99,44,91,12,99,44,99,12,99,44,99, + 44,99,12,99,4,44,99,169,12,99,44,99,45,91,44,99,12,91,45,99, + 44,99,44,99,44,91,45,99,45,99,44,91,45,91,12,91,45,75,143,35, + 147,12,54,45,53,53,208,67,12,91,12,99,45,99,44,91,45,91,45,91, + 45,99,44,99,78,67,241,19,212,20,118,61,179,60,110,75,12,107,45,99, + 45,99,77,99,77,91,77,99,77,99,3,77,91,3,77,99,129,77,91,5, + 77,99,129,109,99,9,77,99,148,109,99,77,99,109,91,77,91,77,99,77, + 99,45,91,236,82,204,82,12,91,45,91,110,99,240,107,82,124,114,124,147, + 124,147,132,179,132,179,132,179,124,5,179,132,131,211,132,211,132,180,132,3, + 179,132,135,180,132,179,132,179,132,180,132,180,132,179,132,179,132,3,180,132, + 139,179,132,212,132,49,116,12,83,134,41,162,16,41,42,208,91,147,132,179, + 132,180,124,6,179,124,129,180,132,8,212,132,147,244,132,212,132,245,132,179, + 132,243,148,243,148,170,90,235,98,202,90,170,90,138,82,105,82,105,74,73, + 74,73,74,41,74,40,74,40,66,41,74,6,40,66,137,8,66,8,58,231, + 57,231,57,199,57,231,57,199,49,199,49,166,49,5,134,41,129,101,33,3, + 70,33,171,69,33,69,33,37,25,70,33,168,41,237,90,117,173,19,157,243, + 156,243,156,146,148,244,164,81,140,98,16,179,140,211,156,179,148,211,156,178, + 148,146,148,146,148,114,140,49,132,16,124,207,115,207,115,175,115,207,107,175, + 107,175,107,207,107,175,99,175,99,207,107,208,107,175,99,207,107,175,99,207, + 99,208,107,175,99,208,107,208,107,3,175,99,140,207,99,207,99,208,107,207, + 99,208,107,208,107,175,99,207,99,208,107,175,99,208,107,208,107,4,175,99, + 156,207,99,208,107,176,99,175,99,240,107,175,99,208,107,208,107,207,99,175, + 107,208,107,208,99,175,99,207,107,208,107,207,99,208,107,175,99,207,99,208, + 107,175,99,207,99,208,107,175,99,175,99,208,107,175,99,207,99,3,175,99, + 146,208,107,208,99,175,99,207,99,208,99,208,107,240,107,208,107,208,107,208, + 99,208,107,208,107,208,99,208,99,207,99,208,99,208,107,175,99,3,208,99, + 140,208,107,208,107,176,99,176,99,175,91,208,99,208,99,176,99,111,83,208, + 99,240,99,111,91,3,111,83,129,79,83,6,111,83,163,175,91,204,74,69, + 33,73,58,9,58,9,50,233,49,232,41,200,41,200,41,167,33,13,83,168, + 41,232,41,9,50,41,58,41,58,74,58,107,66,171,74,204,74,236,82,13, + 83,45,91,110,99,142,99,236,90,77,99,179,132,16,124,12,99,16,108,151, + 157,216,157,25,166,3,58,166,185,90,174,123,174,123,174,188,182,58,166,118, + 157,85,149,77,99,73,74,40,74,231,65,231,57,69,41,98,8,98,16,166, + 49,167,49,8,66,170,90,199,49,33,8,97,8,65,8,162,16,8,66,138, + 82,44,107,178,156,52,173,13,83,233,41,10,50,136,33,164,8,99,8,99, + 8,100,0,100,0,68,0,165,8,200,49,236,90,237,90,13,99,78,99,78, + 107,111,107,175,115,240,115,240,123,17,124,17,124,49,132,81,132,81,132,82, + 132,81,132,5,49,124,134,81,132,82,132,82,132,114,132,114,132,82,132,4, + 81,132,133,114,140,114,140,81,132,81,132,49,132,3,81,132,138,82,132,81, + 132,81,132,114,132,81,132,81,132,143,115,70,33,4,33,36,33,3,4,33, + 3,36,33,182,4,33,36,33,4,33,227,24,130,16,198,57,41,123,35,74, + 40,123,199,106,101,90,228,73,3,74,195,65,36,74,232,106,9,107,73,123, + 138,139,171,147,236,155,13,164,78,172,79,180,175,188,208,196,143,188,110,180, + 209,196,49,205,138,147,162,65,195,65,195,65,130,57,42,107,147,221,146,221, + 82,213,45,172,111,172,175,188,237,163,13,148,110,180,204,155,237,139,147,221, + 82,213,180,229,231,138,130,57,195,65,194,65,3,195,65,132,130,57,233,90, + 212,221,114,213,3,114,221,147,17,205,17,205,147,221,82,221,114,221,147,229, + 179,229,49,229,3,114,163,65,195,65,227,65,195,65,228,65,232,114,226,81, + 162,65,199,90,100,106,202,3,129,12,91,4,44,99,135,12,99,44,99,45, + 99,12,99,44,99,44,99,44,91,3,44,99,153,45,99,44,99,45,91,45, + 99,44,99,12,91,44,99,45,99,44,99,44,99,45,99,44,91,45,91,45, + 99,12,99,45,67,208,19,212,36,86,53,211,52,143,75,12,91,44,99,45, + 91,45,91,3,45,99,139,12,91,110,43,115,12,54,45,86,53,240,67,45, + 91,45,99,77,99,45,99,45,91,3,77,99,133,77,91,77,91,77,99,77, + 99,77,91,8,77,99,130,77,91,77,91,3,77,99,149,109,99,109,99,77, + 91,77,91,77,99,109,99,77,99,77,99,45,91,236,82,235,82,12,91,45, + 91,143,99,241,107,114,124,147,124,146,124,147,124,179,132,147,132,4,179,132, + 129,211,132,3,179,132,134,211,132,179,132,211,132,211,132,179,132,211,132,4, + 179,132,144,180,132,179,132,179,124,179,124,212,132,114,124,44,91,167,49,130, + 16,199,33,176,91,147,124,180,132,179,124,180,132,180,124,4,179,124,131,180, + 124,211,132,211,132,7,212,132,3,244,132,138,146,132,52,149,146,140,235,98, + 11,99,202,90,170,90,170,90,137,82,105,82,3,73,74,139,40,74,40,66, + 40,66,40,74,40,74,40,66,40,74,40,74,40,66,8,66,8,66,3,231, + 57,132,199,49,199,49,166,49,166,49,5,134,41,181,69,33,70,33,69,33, + 69,33,69,25,69,33,69,33,37,25,102,33,9,58,139,74,244,156,20,165, + 243,156,211,156,20,165,207,123,1,0,85,165,211,156,178,148,178,148,146,148, + 178,148,146,140,113,140,16,132,240,123,239,115,175,107,208,115,175,107,175,107, + 207,107,175,99,175,107,175,99,175,107,175,99,208,107,207,99,175,99,207,107, + 175,99,208,107,208,107,175,99,175,99,207,99,208,107,208,107,207,99,208,99, + 3,175,99,129,208,107,6,175,99,133,208,99,175,99,208,107,208,99,208,107, + 3,175,99,130,175,107,176,99,3,208,107,133,207,99,240,115,240,107,208,107, + 240,107,6,208,107,140,175,99,208,107,208,107,175,99,208,107,208,107,207,99, + 208,107,175,99,208,107,175,99,175,99,5,208,107,140,207,99,207,99,208,107, + 240,107,175,99,208,107,208,99,208,99,175,99,208,107,176,99,208,99,5,175, + 99,130,143,99,143,99,3,143,91,134,78,83,78,75,46,75,45,75,13,75, + 13,75,3,46,75,205,13,75,78,83,78,83,78,91,78,91,143,99,171,74, + 228,24,8,50,41,58,9,50,200,41,232,49,199,41,232,41,195,24,143,99, + 200,41,200,41,9,50,41,58,73,58,42,58,106,66,171,74,204,74,236,82, + 13,83,45,91,78,99,175,107,110,99,12,91,114,124,240,115,138,74,208,107, + 86,149,184,157,249,157,249,165,25,166,57,166,58,166,90,174,122,174,155,174, + 58,166,150,165,52,149,12,91,73,74,73,74,8,66,231,57,69,41,130,16, + 98,16,134,49,199,57,8,74,235,98,37,33,130,16,98,16,65,8,98,16, + 134,57,138,82,12,99,178,156,52,173,77,91,201,41,42,50,168,33,196,8, + 3,99,8,147,100,0,100,0,165,8,168,41,204,82,237,90,13,99,46,99, + 78,99,111,107,175,115,208,115,240,123,17,124,17,124,49,124,49,132,82,132, + 49,132,6,49,124,156,49,132,81,132,114,132,82,132,114,132,114,132,81,132, + 49,132,82,132,81,132,114,140,114,132,82,132,81,132,81,132,49,132,81,132, + 81,132,82,132,82,132,81,132,81,132,49,132,81,132,240,123,134,41,4,33, + 4,33,3,36,33,183,4,33,4,33,36,33,36,33,4,33,36,33,228,32, + 130,16,101,41,73,131,227,73,41,115,167,106,199,106,195,65,228,73,195,65, + 167,90,82,213,147,221,115,221,240,196,176,188,78,172,46,164,46,164,236,147, + 82,213,179,229,49,213,109,172,111,172,175,180,236,163,194,65,195,65,195,65, + 162,57,103,82,82,197,146,221,49,213,13,164,45,156,143,180,208,188,143,180, + 78,172,143,180,111,172,147,221,114,221,212,229,12,180,161,65,3,195,65,156, + 227,65,194,65,162,57,70,74,115,197,49,205,17,205,240,196,208,196,207,188, + 110,188,77,172,12,164,203,155,138,139,105,131,231,122,227,81,195,65,227,65, + 195,65,195,65,163,65,8,107,3,90,162,65,37,74,198,114,169,3,142,44, + 99,12,99,12,99,44,99,44,99,12,91,12,99,44,99,44,99,12,99,44, + 99,12,91,12,99,45,99,4,44,99,4,45,99,146,44,99,45,99,45,99, + 44,99,44,91,44,91,45,91,45,91,12,99,45,83,110,43,115,20,21,37, + 53,45,17,60,77,83,12,99,44,99,4,45,91,142,44,91,110,51,17,20, + 244,28,86,53,114,60,77,83,44,99,77,99,45,99,45,99,77,99,45,99, + 77,91,3,77,99,131,77,91,77,99,45,99,7,77,99,129,77,91,4,77, + 99,129,109,99,3,77,99,142,78,91,77,99,77,91,45,91,235,82,236,82, + 12,91,77,99,175,107,49,116,114,124,114,124,147,124,147,124,8,179,132,129, + 180,132,4,179,132,132,211,132,179,132,179,132,180,132,3,179,132,140,180,132, + 180,132,180,124,212,132,146,124,175,99,41,58,195,24,228,16,110,83,82,116, + 179,132,5,179,124,133,179,132,179,124,179,124,180,132,180,132,8,212,132,141, + 244,132,244,132,245,132,178,132,85,157,16,132,12,107,12,99,235,98,202,90, + 170,82,137,82,105,82,3,73,74,130,40,74,40,74,3,40,66,130,8,66, + 40,74,4,8,66,135,231,57,231,57,199,57,199,57,199,49,167,49,134,49, + 4,134,41,132,102,41,69,33,69,33,70,33,5,69,33,141,37,25,102,33, + 232,49,42,66,52,165,243,156,178,156,243,156,142,115,33,0,85,165,178,148, + 179,156,3,146,148,132,146,140,81,140,49,132,240,123,3,207,115,3,175,107, + 146,207,107,175,107,207,107,207,107,175,107,207,107,207,107,175,107,175,99,208, + 107,207,99,208,107,208,107,175,99,208,99,207,99,208,107,208,107,4,175,99, + 145,208,107,207,99,208,99,208,99,207,99,175,99,208,99,208,99,207,99,176, + 107,208,99,175,99,175,99,207,99,207,99,240,107,207,99,3,208,107,131,207, + 107,240,107,208,107,4,240,107,131,208,107,240,107,240,107,3,208,107,151,207, + 107,208,99,208,107,207,99,208,99,175,99,143,99,208,99,175,99,208,107,208, + 99,208,107,208,99,240,107,175,99,208,99,208,107,240,107,208,107,208,107,208, + 99,176,99,208,99,3,175,99,142,143,99,175,99,207,99,175,99,176,99,143, + 99,143,91,142,91,110,91,110,91,111,91,237,66,13,75,13,75,3,237,74, + 225,172,66,13,83,45,83,77,91,78,91,78,91,77,91,78,99,46,91,106, + 66,163,8,102,33,73,58,232,49,200,41,200,41,167,41,200,41,130,8,143, + 91,9,50,200,49,9,50,41,58,74,58,74,58,139,66,204,74,204,82,237, + 82,13,83,45,91,78,99,175,115,175,115,77,99,82,124,208,107,232,49,142, + 107,20,141,118,149,184,157,248,157,249,165,58,174,90,174,122,174,122,174,155, + 174,58,174,118,157,20,149,77,99,40,74,73,74,232,65,231,57,69,41,130, + 16,97,8,134,49,199,57,8,66,203,90,69,41,130,16,195,24,65,8,98, + 16,134,49,138,82,11,99,145,156,52,173,142,107,201,33,10,50,169,41,196, + 16,99,8,99,8,99,0,100,0,100,0,133,8,135,41,172,82,236,90,13, + 91,45,99,78,99,111,107,175,115,208,115,240,123,17,124,3,49,124,130,82, + 132,82,124,3,49,124,132,17,124,49,124,81,124,81,132,5,114,132,129,82, + 132,3,81,132,132,114,132,114,140,82,132,114,132,5,81,132,140,114,132,81, + 132,81,132,49,132,81,132,17,124,200,49,228,32,4,33,36,33,4,33,37, + 33,3,4,33,129,36,33,3,4,33,163,162,24,36,33,42,131,3,82,8, + 115,166,98,8,115,195,65,227,73,195,65,70,74,17,197,147,221,114,221,142, + 180,78,172,172,139,237,155,13,164,13,156,81,205,114,221,81,213,44,164,175, + 188,208,188,78,172,3,82,195,65,195,65,162,65,37,74,17,181,147,221,147, + 221,3,82,213,138,114,221,82,221,82,213,82,221,81,213,17,205,241,204,241, + 196,235,171,162,73,6,195,65,139,228,65,231,106,166,98,101,90,69,82,36, + 82,3,74,227,65,194,65,194,65,162,57,3,130,57,129,194,65,4,195,65, + 134,162,65,199,98,68,106,194,65,195,57,40,123,197,3,131,44,99,12,91, + 12,91,3,44,99,131,12,91,45,99,12,91,4,44,99,170,45,99,45,99, + 44,91,44,99,12,99,45,91,45,99,44,99,44,99,12,99,45,99,45,99, + 44,99,45,91,45,99,45,91,44,91,44,99,44,99,44,91,77,59,241,19, + 180,20,53,45,211,52,175,67,236,98,12,99,45,91,44,91,45,91,45,99, + 45,99,77,75,208,27,212,20,86,53,244,52,110,83,12,99,77,99,45,99, + 5,77,99,132,45,99,77,99,77,99,77,91,4,77,99,130,77,91,77,91, + 4,77,99,149,77,91,77,99,77,99,77,91,109,99,77,99,77,91,77,99, + 77,99,12,91,203,82,236,90,12,91,77,99,207,107,49,116,114,124,146,124, + 147,124,147,124,179,124,5,179,132,129,211,132,4,179,132,129,211,132,3,179, + 132,154,180,132,179,132,179,132,180,132,179,132,179,132,180,132,212,132,179,132, + 240,107,203,74,227,24,163,16,138,58,50,108,147,132,179,132,179,124,179,124, + 180,132,179,124,147,124,147,124,179,124,180,132,180,132,7,212,132,129,244,132, + 3,212,132,145,245,132,146,132,85,157,207,123,44,107,44,107,235,98,203,90, + 170,90,138,82,105,74,105,74,73,74,73,74,40,66,40,66,40,74,5,40, + 66,3,8,66,135,231,57,231,57,199,57,199,57,199,49,166,49,166,41,4, + 134,41,130,102,33,102,33,3,69,33,210,69,25,37,33,69,33,37,33,37, + 25,37,25,69,33,102,25,172,74,244,156,20,165,20,157,77,107,98,8,85, + 173,178,148,179,156,178,148,178,148,146,148,113,140,49,132,49,124,240,123,240, + 123,207,115,239,115,175,107,207,107,207,107,207,115,175,107,207,107,175,99,207, + 107,175,107,208,107,175,107,208,107,175,99,207,99,175,107,175,99,175,99,207, + 99,175,99,175,99,208,107,175,99,175,99,143,99,175,99,208,107,208,107,240, + 107,208,107,175,99,207,99,207,107,143,99,208,99,175,99,208,99,175,99,208, + 99,175,99,176,107,208,107,175,99,208,99,208,99,208,107,240,107,175,99,208, + 107,240,107,208,107,240,107,240,107,16,108,208,107,240,107,4,208,107,135,207, + 99,240,107,208,107,240,107,207,99,240,107,175,99,3,208,107,137,240,107,208, + 99,208,107,208,107,208,99,208,107,208,107,207,99,208,99,3,175,99,214,143, + 99,142,99,175,99,143,99,175,99,143,91,110,91,175,99,110,91,78,91,78, + 91,46,83,45,83,77,83,204,66,205,66,237,74,172,66,204,74,172,74,237, + 82,13,75,45,91,110,91,78,99,78,99,45,91,13,91,13,83,171,74,131, + 8,102,33,200,49,9,58,200,41,200,49,168,41,167,41,98,0,110,91,139, + 66,200,41,41,50,9,58,74,58,73,58,171,66,172,74,204,74,237,82,236, + 82,77,91,78,99,175,107,207,115,142,107,114,124,241,107,8,50,45,91,146, + 124,244,124,86,141,183,149,249,157,57,166,58,166,90,174,123,174,123,174,58, + 166,150,157,20,149,142,99,232,65,73,74,231,65,232,65,69,41,130,16,65, + 8,134,49,199,57,232,65,170,90,40,66,3,65,8,139,163,24,40,66,138, + 82,235,98,145,148,52,173,207,115,168,33,42,50,201,49,197,16,3,99,8, + 147,68,0,100,0,132,8,103,41,171,82,236,90,13,91,45,99,78,99,111, + 107,175,115,208,115,241,123,17,124,49,132,49,124,49,124,82,132,82,124,5, + 49,124,138,49,132,82,132,114,132,114,140,114,132,114,132,81,132,82,132,81, + 132,81,132,4,114,132,132,82,132,81,132,49,132,82,132,5,81,132,136,49, + 132,81,132,49,132,41,66,228,24,36,33,36,33,4,33,5,36,33,3,4, + 33,145,163,24,227,24,42,123,68,90,231,106,166,98,40,123,195,65,228,73, + 228,65,4,66,176,172,147,221,114,221,82,213,82,213,81,213,3,114,221,136, + 146,221,146,221,114,221,109,172,17,197,110,172,17,205,69,98,3,195,65,144, + 228,73,77,164,207,188,142,180,78,172,45,164,204,155,138,139,73,123,8,115, + 199,106,166,98,101,82,68,82,36,82,227,73,5,195,65,131,163,65,195,65, + 195,65,3,162,57,132,162,65,194,65,162,65,194,65,7,195,65,138,194,65, + 194,65,195,65,195,65,162,65,102,82,197,122,162,65,162,57,41,107,147,3, + 129,44,91,4,44,99,137,12,91,44,99,12,91,44,99,44,99,12,99,44, + 91,12,91,12,91,3,44,99,168,44,91,45,99,12,91,44,99,12,91,45, + 91,44,99,44,91,45,99,45,91,44,99,44,91,45,91,44,99,44,91,45, + 91,44,99,12,91,78,51,50,12,244,28,86,45,147,44,142,75,13,91,45, + 99,77,99,45,91,44,91,45,99,44,99,111,43,82,12,245,28,21,37,16, + 60,45,91,45,99,77,91,77,91,12,77,99,137,77,91,77,99,77,91,77, + 99,77,99,77,91,77,99,77,99,109,99,4,77,99,140,77,91,12,83,204, + 82,236,90,12,91,110,99,208,107,81,116,114,124,146,124,147,124,147,124,7, + 179,132,129,179,124,3,179,132,129,179,124,4,179,132,129,180,132,3,179,132, + 148,180,132,180,132,179,132,208,107,170,74,36,33,163,16,73,50,241,99,147, + 132,180,132,147,124,180,124,179,124,179,124,147,124,179,124,147,124,179,124,180, + 132,9,212,132,142,244,132,212,132,244,132,244,140,179,132,52,157,174,123,77, + 107,44,107,11,99,235,90,203,90,170,82,105,74,3,73,74,138,40,74,40, + 66,40,66,40,74,40,74,8,66,8,74,8,66,8,66,232,65,3,231,57, + 129,199,57,3,199,49,6,134,41,3,69,33,144,69,25,69,33,37,25,37, + 25,69,25,37,33,37,25,37,25,228,16,168,41,10,58,114,140,20,165,235, + 98,196,16,85,165,4,178,148,137,146,148,113,140,81,132,16,124,16,124,240, + 115,207,115,175,107,240,107,4,175,107,132,207,107,175,99,207,107,175,107,3, + 175,99,135,207,99,175,99,175,99,208,107,175,99,208,99,207,99,4,175,99, + 134,207,99,208,107,207,99,175,99,175,99,207,99,3,175,99,131,208,99,207, + 99,208,107,4,208,99,4,208,107,134,207,107,208,99,175,99,175,99,208,107, + 208,107,3,240,107,139,207,107,240,107,175,107,175,99,208,107,175,99,207,107, + 175,107,208,107,207,107,240,107,6,208,107,137,240,107,175,99,240,107,240,107, + 208,107,240,107,208,107,176,99,208,99,4,175,99,132,142,91,143,99,110,99, + 143,99,4,78,91,241,45,83,46,91,13,83,13,83,237,74,204,74,204,74, + 237,74,236,74,45,91,13,91,45,91,13,91,78,99,78,91,45,91,45,91, + 143,99,78,91,13,91,236,90,131,8,163,16,134,41,9,50,232,49,167,41, + 200,41,135,33,130,8,204,82,176,91,135,33,232,49,9,50,74,58,106,66, + 139,66,172,74,204,74,204,82,13,83,45,91,78,99,143,107,240,115,175,115, + 81,124,208,107,41,58,44,83,114,124,147,124,212,124,86,141,216,157,25,166, + 58,174,90,166,90,166,123,174,90,166,183,165,53,149,240,115,41,74,73,74, + 231,65,8,66,101,41,163,24,65,8,102,49,231,57,232,65,138,82,170,82, + 105,74,199,57,199,57,106,74,138,82,138,74,235,90,113,148,52,173,16,124, + 168,33,10,50,201,41,228,16,98,8,99,8,99,8,99,0,68,0,100,8, + 71,33,171,82,204,90,237,90,13,91,78,99,78,99,143,107,208,115,240,123, + 17,124,49,124,49,124,81,124,81,132,81,124,4,49,124,131,81,124,49,132, + 81,132,3,114,132,158,114,140,114,132,114,132,82,132,82,132,114,132,114,140, + 146,140,114,140,114,132,81,132,49,124,81,132,81,132,114,140,82,132,81,132, + 81,132,49,132,49,132,81,132,138,74,228,24,36,33,37,33,36,33,4,33, + 36,33,36,33,4,33,4,36,33,142,195,24,163,16,201,106,166,106,166,90, + 199,106,41,123,227,65,228,65,228,73,227,65,45,156,148,229,146,221,4,147, + 229,139,115,229,114,221,114,221,82,221,82,221,77,180,110,172,78,172,111,180, + 101,98,163,57,4,195,65,133,162,57,129,57,130,49,97,49,97,49,4,130, + 57,3,162,57,129,163,65,8,195,65,129,194,65,6,195,65,146,195,73,195, + 65,163,65,195,65,194,65,195,65,227,65,195,65,195,73,195,65,195,73,195, + 73,195,65,227,65,105,131,161,73,162,65,134,90,129,3,132,44,99,44,99, + 12,91,12,99,14,44,99,129,45,99,6,44,99,134,45,91,44,91,45,91, + 44,99,45,99,12,91,3,45,91,152,44,99,12,99,45,67,176,35,114,20, + 21,37,244,36,81,52,77,83,12,99,45,99,45,91,45,91,45,99,45,99, + 110,67,241,19,212,20,21,37,114,52,77,91,45,99,45,99,77,91,11,77, + 99,137,77,91,77,99,77,91,77,99,77,99,109,99,77,99,109,99,109,99, + 4,77,99,141,45,91,236,90,204,82,236,90,45,91,142,99,16,108,82,124, + 114,124,147,124,147,124,147,132,179,124,3,179,132,129,179,124,6,179,132,130, + 179,124,179,124,9,179,132,148,17,116,204,82,102,41,130,16,232,41,175,91, + 114,124,180,132,179,132,179,124,179,132,179,132,179,124,147,124,179,124,179,124, + 180,132,212,132,212,132,211,132,6,212,132,153,244,132,212,132,244,132,244,140, + 212,132,178,140,20,157,141,115,109,115,76,107,44,107,11,99,203,90,170,90, + 138,82,105,82,73,74,73,74,72,74,73,74,40,66,40,66,40,74,40,66, + 40,66,3,8,66,129,231,57,3,199,57,131,199,49,199,49,166,49,3,134, + 41,139,102,41,102,41,102,33,69,33,69,33,69,25,69,33,69,25,37,33, + 69,25,69,33,5,37,25,135,135,33,9,58,146,148,170,90,38,33,85,165, + 178,148,3,146,148,139,114,140,113,140,49,132,16,124,16,124,240,115,207,115, + 207,107,175,107,175,107,175,99,3,207,107,142,175,107,207,107,175,107,175,99, + 175,107,207,107,175,99,207,107,207,107,208,107,175,99,208,99,207,99,207,99, + 4,175,99,161,207,99,175,99,208,99,208,99,175,99,240,107,175,107,208,107, + 207,99,207,107,208,107,208,99,175,99,208,107,207,99,175,99,207,99,175,107, + 207,107,207,99,207,99,175,107,208,107,175,107,175,107,240,107,49,116,240,115, + 240,107,207,107,207,107,175,99,207,107,3,175,107,135,207,107,175,107,208,107, + 240,107,240,107,208,107,208,107,3,240,107,135,208,107,17,116,240,107,17,116, + 240,107,208,107,208,107,5,175,99,227,143,99,142,91,110,99,175,107,110,91, + 110,91,143,99,142,91,78,91,110,91,46,83,45,83,13,83,236,74,237,82, + 45,91,45,83,45,91,78,99,45,91,45,91,78,99,143,107,78,91,241,107, + 82,116,46,91,78,99,236,82,163,8,33,0,134,33,232,41,232,49,167,33, + 167,41,167,41,131,8,106,66,82,108,103,25,233,49,41,58,74,58,106,58, + 74,66,171,74,204,74,204,82,13,83,13,91,78,99,110,99,175,107,175,107, + 17,116,240,115,106,66,77,91,146,132,179,124,244,132,86,141,184,149,249,157, + 25,166,58,166,58,166,123,174,91,166,183,165,52,149,48,124,41,74,73,74, + 232,65,8,66,102,49,195,24,33,0,101,41,231,57,231,57,138,82,105,74, + 138,82,138,82,170,82,138,82,138,82,106,82,235,90,113,148,52,173,81,132, + 168,33,42,50,234,49,229,16,3,99,8,141,100,0,68,0,100,0,38,33, + 139,82,204,82,204,82,237,82,205,82,237,82,79,99,208,107,241,107,3,17, + 116,158,49,124,17,116,17,116,241,115,17,116,17,116,17,124,49,124,49,124, + 81,132,82,132,114,132,82,132,114,132,82,132,114,132,82,132,82,132,114,132, + 146,140,114,140,114,132,114,132,82,132,82,132,81,132,82,132,81,132,82,132, + 81,132,3,49,132,169,81,132,204,82,4,33,37,33,36,33,37,33,4,33, + 36,33,37,33,36,33,36,33,4,33,36,33,36,33,195,24,162,16,104,90, + 7,123,101,82,231,106,41,123,36,82,227,65,228,65,227,65,139,131,16,197, + 174,180,110,172,77,164,236,155,203,147,138,139,74,123,9,123,8,115,199,106, + 133,98,101,82,69,82,36,74,18,195,65,129,194,65,6,195,65,131,194,65, + 195,65,194,65,3,195,65,129,195,73,7,195,65,129,195,73,7,195,65,133, + 130,57,139,123,161,89,194,65,36,74,172,3,134,12,91,44,99,45,99,12, + 99,44,99,12,99,6,44,99,131,12,91,44,99,12,91,3,44,99,129,45, + 99,3,44,99,152,45,99,12,91,45,99,45,99,44,99,45,99,44,91,44, + 99,45,91,45,99,44,91,45,99,44,99,45,99,45,99,12,91,77,59,18, + 12,180,12,21,37,212,44,208,59,12,91,12,99,3,45,99,142,77,99,45, + 83,240,27,179,12,21,37,179,52,110,83,12,99,77,99,77,99,45,99,77, + 99,77,99,45,91,5,77,99,135,77,91,109,99,77,99,77,99,77,91,77, + 99,77,91,7,77,99,144,45,91,236,82,236,82,12,91,45,91,143,99,17, + 116,114,124,114,124,146,124,147,124,147,132,179,124,179,132,179,132,179,124,4, + 179,132,132,179,124,179,132,179,132,180,132,3,179,132,142,179,124,211,124,179, + 132,180,132,179,132,211,132,49,124,110,91,166,41,130,16,69,25,143,83,82, + 116,179,132,3,179,124,138,179,132,179,132,179,124,147,124,147,124,179,124,179, + 132,212,132,180,132,180,132,4,212,132,129,244,132,4,212,132,143,244,132,211, + 140,243,140,243,148,141,115,109,115,77,107,77,107,12,99,235,98,202,90,170, + 82,138,82,105,74,73,74,3,40,74,7,8,66,135,231,57,231,57,199,57, + 199,57,199,49,167,49,166,49,3,134,41,187,102,41,102,41,102,33,69,33, + 69,33,69,25,69,25,37,25,69,33,37,25,69,25,37,25,37,25,37,33, + 37,25,37,25,5,25,70,33,74,66,134,49,232,49,52,165,178,148,146,148, + 146,148,113,140,81,140,81,132,49,132,240,123,240,123,207,115,240,115,240,115, + 207,107,175,107,175,99,175,107,175,107,175,99,175,99,175,107,175,99,175,107, + 240,107,175,107,208,107,175,107,208,107,208,107,175,99,208,107,175,99,208,107, + 175,99,175,99,208,99,207,99,175,99,3,207,99,133,175,99,240,107,207,99, + 207,107,240,107,3,208,107,132,175,107,207,107,143,99,175,99,3,143,99,4, + 175,99,178,143,99,143,99,142,99,17,116,17,116,16,116,240,107,207,107,207, + 107,175,107,175,107,142,107,142,99,207,107,175,107,175,107,240,107,208,107,175, + 99,175,107,175,107,208,107,208,107,175,99,240,107,49,116,17,116,16,108,240, + 107,240,107,208,107,208,99,207,107,208,107,208,99,175,99,207,107,175,99,207, + 107,175,107,175,99,208,99,176,99,175,99,240,107,143,99,175,99,175,99,111, + 99,143,99,3,175,99,193,175,107,175,107,208,107,208,107,175,107,208,107,17, + 116,208,107,139,74,110,107,237,82,228,24,0,0,4,25,200,41,200,41,135, + 33,232,41,167,41,196,16,105,58,147,124,103,25,232,49,41,58,41,58,74, + 58,107,66,171,74,204,74,204,82,237,82,13,91,45,99,13,91,143,107,175, + 115,17,116,17,116,106,66,109,99,179,140,212,132,245,132,86,141,151,149,216, + 149,249,157,25,158,58,166,123,174,90,166,183,165,20,149,16,124,73,74,105, + 74,231,57,40,66,134,49,195,24,32,0,101,49,231,57,199,57,5,138,82, + 139,106,74,138,82,138,82,203,90,113,148,52,173,114,140,201,41,42,50,10, + 50,6,25,3,99,8,140,68,0,68,0,100,0,38,25,106,74,172,82,172, + 74,172,74,140,66,42,42,237,66,176,91,5,241,99,138,176,99,175,91,143, + 91,143,91,143,99,176,99,208,107,208,115,240,115,240,115,5,17,116,139,17, + 124,49,124,49,124,82,132,82,132,81,132,82,132,82,124,49,124,81,132,82, + 132,3,81,132,3,49,132,131,81,132,45,91,4,33,5,36,33,129,4,33, + 5,36,33,154,227,24,130,16,7,74,73,131,36,74,231,106,8,107,133,90, + 227,65,228,73,227,73,69,82,69,82,101,82,101,82,134,82,134,90,167,98, + 198,98,231,106,40,115,73,131,231,122,194,65,194,65,162,65,4,195,65,129, + 227,65,4,195,65,139,227,65,195,65,195,65,227,65,195,65,195,65,227,65, + 195,65,227,65,195,65,226,65,4,195,65,130,194,65,194,65,3,195,65,131, + 194,65,195,65,195,73,8,195,65,129,227,65,5,195,65,135,194,65,227,73, + 130,65,9,91,66,114,194,65,227,65,113,3,137,44,99,12,99,12,99,12, + 91,44,99,44,99,12,91,44,99,44,91,5,44,99,137,12,99,44,99,44, + 91,44,99,12,91,44,99,45,99,44,99,44,99,3,45,99,149,13,99,44, + 99,44,91,13,91,45,99,44,91,13,91,45,91,12,91,44,91,45,91,45, + 99,12,99,12,91,78,51,241,19,180,20,21,29,211,36,175,67,77,91,4, + 45,99,137,45,91,111,51,50,12,244,20,21,37,16,60,45,99,45,99,77, + 91,6,77,99,3,77,91,134,77,99,109,99,77,91,77,91,77,99,77,99, + 3,77,91,145,77,99,77,91,77,99,77,91,12,91,204,82,236,82,12,91, + 77,99,175,107,17,116,114,124,146,132,147,124,147,132,147,124,147,132,15,179, + 132,145,180,132,179,132,179,132,212,132,49,116,13,91,199,49,130,16,69,25, + 45,75,82,124,179,132,179,124,179,132,147,124,179,124,179,124,3,147,124,137, + 179,124,179,124,212,132,180,132,212,132,211,132,212,132,212,132,211,132,4,212, + 132,3,244,132,131,211,132,211,140,178,148,3,109,115,138,77,107,44,107,11, + 99,235,98,170,90,138,82,137,82,73,74,72,74,72,74,3,40,66,4,8, + 66,3,231,57,135,199,57,231,57,167,49,167,49,134,49,134,41,134,41,3, + 102,41,136,101,33,69,33,69,33,37,25,69,33,69,33,37,33,37,33,7, + 37,25,153,4,25,69,33,228,24,233,49,178,148,146,148,178,148,114,148,113, + 140,113,140,49,132,16,132,207,115,207,115,239,115,208,115,175,107,175,107,143, + 107,143,99,175,107,143,99,175,99,175,107,143,99,3,175,99,135,175,107,175, + 99,207,99,175,107,175,99,175,99,208,99,4,175,99,137,208,107,175,99,208, + 107,176,99,175,99,207,99,175,107,208,107,207,99,3,207,107,130,175,99,175, + 107,3,175,99,171,143,99,207,107,175,99,175,107,207,107,175,99,208,107,208, + 107,207,107,175,107,175,107,143,107,240,115,17,116,240,107,240,115,16,116,240, + 115,16,116,240,115,16,116,16,116,240,107,208,107,16,116,17,116,16,116,17, + 116,16,116,240,115,208,107,175,107,110,99,208,107,16,116,16,116,240,107,208, + 107,16,116,240,107,240,115,17,116,16,108,4,240,107,140,16,116,240,107,208, + 107,240,107,240,107,208,107,240,99,240,107,240,107,207,99,240,107,240,107,4, + 17,116,191,49,116,81,116,49,116,81,124,114,124,176,99,204,82,204,82,240, + 107,5,25,65,0,98,8,134,41,200,41,167,33,199,41,103,33,37,25,102, + 33,240,107,200,33,232,49,233,49,73,58,74,58,107,66,171,74,172,74,204, + 74,236,82,45,91,78,99,204,82,110,99,208,107,208,107,240,123,236,90,142, + 99,212,140,21,141,245,132,53,141,86,141,119,141,184,149,249,149,90,166,123, + 174,90,166,183,165,52,149,114,132,41,74,105,74,231,57,40,66,134,49,227, + 32,32,0,69,41,231,65,199,57,8,138,82,132,203,90,113,148,52,173,146, + 148,3,233,41,155,38,17,99,8,131,16,99,8,99,0,68,0,68,0,229, + 16,74,66,172,74,172,74,172,66,107,58,201,33,139,50,111,83,209,83,177, + 83,209,83,209,83,177,83,144,83,111,75,111,75,79,75,47,67,78,75,4, + 111,83,4,143,91,3,175,99,141,207,107,208,107,208,107,240,107,17,116,17, + 116,240,107,240,115,17,116,240,115,16,124,16,124,17,124,3,49,132,129,142, + 107,11,36,33,147,37,33,228,32,130,16,166,49,138,147,227,65,8,115,199, + 98,231,106,227,65,227,65,4,74,227,65,162,49,108,172,204,188,204,196,236, + 196,236,196,3,12,205,135,44,205,138,188,36,82,195,65,195,65,227,65,227, + 65,12,195,65,129,194,65,18,195,65,148,194,65,195,65,194,65,194,65,162, + 65,195,65,162,65,194,65,194,65,162,65,162,65,195,65,194,65,194,65,195, + 65,195,73,37,74,40,131,162,73,227,65,137,3,134,12,99,44,99,12,99, + 44,99,44,99,12,99,5,44,99,129,12,99,4,44,99,131,45,99,45,99, + 12,99,4,44,99,165,45,99,44,99,13,99,45,99,44,99,45,91,45,99, + 45,99,44,99,45,91,45,99,44,91,45,91,45,99,45,91,45,99,44,91, + 44,99,13,83,143,35,49,20,180,20,212,36,114,44,175,75,45,99,45,99, + 77,99,77,99,45,91,78,67,17,20,180,20,21,37,49,60,77,91,45,99, + 5,77,99,133,77,91,77,99,77,99,77,91,77,91,5,77,99,148,77,91, + 77,91,77,99,77,91,77,99,77,99,77,91,12,91,203,82,236,90,12,91, + 77,99,207,107,81,116,114,124,146,124,147,124,147,132,179,124,179,124,17,179, + 132,137,212,132,114,124,77,91,8,58,195,24,4,25,13,67,17,108,179,132, + 5,179,124,4,147,124,133,179,124,179,132,212,132,212,132,211,132,8,212,132, + 134,244,132,212,132,244,132,179,132,20,149,113,140,3,109,115,147,77,107,44, + 107,11,99,235,98,203,90,170,90,138,82,105,82,73,74,73,74,40,74,40, + 66,8,66,40,66,40,66,8,66,8,66,232,57,231,57,3,199,57,130,167, + 49,167,49,4,134,41,130,102,41,101,41,3,69,33,131,69,25,37,33,69, + 25,10,37,25,158,5,25,5,25,41,58,142,107,16,132,113,140,113,140,81, + 140,81,140,48,132,240,123,207,115,175,115,207,115,207,107,175,107,175,107,143, + 107,110,99,175,107,143,99,175,107,175,107,207,107,143,99,175,107,175,107,143, + 99,143,99,207,107,4,175,107,5,175,99,129,143,99,3,175,99,4,175,107, + 130,142,99,208,107,4,207,107,255,143,99,207,107,207,107,175,107,240,107,240, + 115,175,107,208,107,16,116,49,116,16,116,49,116,81,124,49,124,49,124,146, + 124,146,132,243,132,211,132,20,141,244,140,20,141,118,149,86,149,85,141,118, + 149,118,149,150,157,150,157,150,149,150,157,86,149,85,149,53,141,147,124,147, + 124,244,132,179,132,114,124,114,124,81,116,17,116,240,115,240,115,16,116,49, + 116,17,116,16,116,16,116,240,115,240,115,240,107,240,107,207,107,208,107,175, + 99,175,107,175,107,207,99,207,107,175,107,175,107,208,107,49,116,82,124,114, + 124,146,132,179,132,147,132,147,132,241,107,13,91,233,57,17,116,37,25,98, + 0,32,0,4,25,200,41,135,33,135,33,102,33,70,33,69,25,41,58,171, + 66,200,49,9,50,74,58,74,58,106,66,139,66,139,66,204,74,236,82,13, + 91,78,99,204,74,110,99,240,115,13,91,110,107,44,99,110,99,211,140,53, + 141,21,141,54,141,86,141,119,141,152,141,249,149,26,158,90,166,58,166,183, + 165,52,149,114,132,41,74,105,74,199,57,40,66,166,49,228,32,0,0,68, + 41,231,57,131,199,57,138,82,170,82,5,138,82,137,170,82,203,90,80,140, + 19,165,211,148,233,41,201,41,201,41,6,17,3,99,8,180,99,0,68,0, + 68,0,197,16,42,66,172,74,172,74,140,74,75,58,234,33,75,42,79,75, + 209,83,176,83,209,83,176,83,177,83,177,75,176,83,144,83,143,75,79,75, + 79,75,111,75,79,75,46,75,78,75,111,83,78,83,46,75,78,83,111,83, + 110,83,110,91,110,91,78,83,110,91,111,91,175,99,240,107,176,99,176,99, + 208,99,176,99,175,107,208,115,16,124,16,124,49,132,81,132,207,115,69,33, + 10,36,33,154,4,33,4,33,130,16,69,33,140,139,3,74,8,115,134,90, + 40,123,227,65,228,73,4,74,228,65,162,49,140,164,11,197,234,188,170,188, + 105,172,137,180,40,156,234,188,10,189,170,188,100,98,195,65,3,227,65,130, + 195,65,227,65,3,195,65,129,227,65,12,195,65,136,162,65,195,65,194,65, + 195,65,162,65,162,65,162,57,162,65,3,162,57,129,194,57,3,195,65,146, + 3,74,4,74,36,82,69,82,101,90,102,90,134,98,166,106,167,106,199,106, + 200,106,232,114,231,114,232,114,232,114,230,122,128,65,162,65,161,3,129,12, + 99,3,44,99,136,12,99,12,99,44,91,44,99,12,91,44,99,44,99,12, + 99,3,44,99,145,45,99,45,99,44,99,44,99,45,99,44,99,12,91,45, + 99,12,99,44,99,45,91,44,99,45,99,45,99,45,91,44,91,44,99,3, + 45,99,132,44,91,44,99,44,91,44,91,3,45,99,147,44,91,77,75,175, + 27,114,4,212,20,212,28,17,52,77,83,12,99,77,99,77,91,77,99,77, + 83,208,27,147,4,21,29,147,44,110,83,45,99,11,77,99,129,78,99,4, + 77,99,129,77,91,3,77,99,141,77,91,12,83,236,82,236,90,12,91,110, + 99,240,107,82,116,114,124,114,124,147,124,147,124,179,124,17,179,132,153,212, + 132,114,124,175,107,40,58,195,24,130,16,204,66,241,107,147,124,179,124,179, + 124,147,124,179,124,179,124,179,132,179,124,147,124,147,124,179,124,179,132,179, + 132,180,132,212,132,212,132,180,132,7,212,132,153,244,132,244,132,212,132,178, + 132,52,149,81,140,142,115,141,115,109,115,77,107,44,107,11,99,235,90,203, + 90,170,90,138,82,105,82,73,74,73,74,40,74,40,66,8,66,40,66,8, + 66,8,66,3,231,57,3,199,57,130,167,49,166,49,3,134,41,3,102,41, + 4,69,33,13,37,25,133,196,16,171,66,45,99,110,107,240,123,3,49,132, + 131,240,123,240,123,207,115,3,175,107,137,174,107,110,99,143,107,174,107,142, + 107,142,99,207,107,175,107,175,99,3,207,107,220,143,107,175,99,175,99,175, + 107,143,107,175,99,143,99,142,99,142,99,143,107,175,107,142,99,142,99,175, + 107,175,99,110,99,142,107,78,99,175,107,208,107,175,107,240,115,207,115,175, + 107,207,107,207,107,175,107,16,116,16,116,49,124,81,124,146,124,178,132,243, + 140,20,141,20,133,85,149,85,149,215,157,183,149,248,157,57,166,89,166,122, + 174,155,174,90,166,154,174,154,182,219,182,219,190,252,190,28,191,252,198,251, + 190,61,199,93,199,61,199,29,191,158,215,158,215,190,223,126,215,93,207,126, + 215,61,199,28,191,28,191,220,182,219,182,122,174,89,174,57,174,57,166,24, + 158,248,157,248,157,25,158,248,157,25,166,57,166,90,166,25,166,90,174,90, + 174,155,182,122,182,122,174,154,182,122,174,188,182,252,190,219,182,3,187,182, + 192,155,166,144,107,110,99,232,57,77,91,41,58,163,16,0,0,163,8,102, + 33,135,41,102,33,37,33,102,33,69,33,102,33,13,83,167,41,9,50,42, + 66,42,58,74,58,139,66,171,74,203,74,204,74,13,83,78,99,236,82,143, + 107,240,115,139,74,105,74,236,90,142,107,212,140,53,141,21,133,21,133,54, + 133,119,141,151,141,184,149,249,149,26,158,25,158,215,165,118,157,114,132,73, + 74,138,82,231,57,41,74,166,49,4,33,0,0,36,33,232,65,199,57,170, + 82,170,82,138,82,170,82,170,82,3,171,82,136,203,90,48,140,19,165,243, + 156,42,50,201,41,233,41,6,25,3,99,8,140,100,0,68,0,68,0,165, + 8,42,66,172,82,204,82,172,74,107,58,43,34,139,42,111,75,3,209,83, + 171,177,75,176,83,208,83,176,75,176,83,176,83,144,83,176,83,176,83,144, + 75,111,75,111,75,144,83,111,75,79,75,111,75,79,75,110,75,78,75,46, + 75,45,75,45,75,46,75,78,75,176,91,176,91,143,83,176,83,144,91,143, + 99,207,115,16,124,240,123,16,124,81,132,240,123,135,41,4,33,36,33,4, + 33,36,33,36,33,4,33,5,36,33,155,4,33,162,16,228,24,108,139,68, + 82,8,107,101,90,73,123,3,74,4,74,3,74,228,65,130,57,235,139,44, + 205,10,189,202,188,72,172,8,164,8,156,235,188,10,197,10,205,197,114,195, + 65,227,65,227,65,9,195,65,4,162,65,4,162,57,163,130,57,162,57,195, + 65,227,65,227,65,4,74,37,82,69,82,102,90,134,98,166,106,199,106,232, + 114,8,115,9,123,41,123,41,123,41,131,9,123,9,123,232,114,231,114,199, + 106,167,106,166,106,134,98,134,98,166,106,166,106,167,106,199,106,232,114,8, + 115,40,115,73,123,197,3,134,12,91,44,99,12,99,44,99,44,99,12,99, + 5,44,99,137,44,91,44,91,45,99,44,99,12,99,44,91,44,99,44,99, + 45,99,3,44,99,129,12,91,3,44,99,138,44,91,45,99,45,91,45,99, + 44,91,45,99,44,99,45,91,44,99,44,91,3,45,91,151,45,99,45,91, + 45,99,45,99,12,99,45,75,176,27,50,12,180,28,180,28,17,52,77,83, + 45,99,44,99,77,99,45,99,78,59,82,12,244,20,21,37,207,75,45,99, + 45,99,10,77,99,131,109,99,77,99,77,99,5,77,91,137,45,91,236,82, + 204,82,12,91,45,91,110,99,17,116,82,124,114,124,3,147,124,153,147,132, + 147,124,179,132,179,132,147,132,179,124,179,132,179,132,179,124,179,132,179,124, + 179,124,179,132,179,132,211,124,179,132,179,124,212,132,114,124,110,99,73,58, + 163,24,195,16,171,58,49,108,8,179,124,131,147,124,147,124,179,124,3,180, + 132,4,212,132,129,180,132,5,212,132,129,244,132,3,212,132,158,179,132,52, + 149,239,131,142,115,141,115,109,115,77,107,44,107,12,99,235,98,203,90,170, + 90,138,82,137,82,105,74,73,74,40,66,41,74,40,74,8,66,40,66,8, + 66,8,66,231,57,199,57,199,57,199,49,199,49,198,49,166,49,3,134,41, + 131,102,41,102,41,101,41,3,69,33,131,37,33,37,25,69,33,7,37,25, + 168,4,25,36,25,36,25,37,25,196,16,77,91,142,107,77,99,142,107,207, + 115,16,124,240,123,240,123,207,115,175,115,175,107,175,107,143,107,175,107,142, + 107,175,107,207,107,207,107,239,115,207,115,239,115,16,116,240,107,16,116,16, + 116,49,116,16,116,49,116,49,124,49,116,49,124,48,116,48,116,81,124,49, + 116,3,81,124,181,146,124,146,132,146,132,178,132,178,132,211,140,211,140,52, + 149,53,149,85,149,85,149,150,157,150,157,247,165,248,165,24,166,88,174,56, + 166,122,174,122,174,187,182,219,190,154,182,187,182,89,174,187,182,219,182,187, + 182,28,199,29,191,219,182,252,190,60,199,126,215,28,199,61,207,61,207,93, + 207,126,215,126,223,126,223,158,215,191,231,158,215,158,223,191,223,255,247,255, + 239,223,239,223,239,255,247,255,255,255,239,4,255,247,131,255,239,255,239,255, + 247,3,255,239,4,255,247,130,255,239,255,255,3,255,247,130,255,255,255,255, + 6,255,247,205,255,239,255,239,255,247,79,99,46,99,200,41,78,91,204,74, + 228,24,0,0,65,0,163,8,168,41,102,33,102,33,134,33,196,16,103,33, + 41,50,200,41,232,49,73,58,42,58,74,58,139,66,139,66,172,74,204,74, + 237,82,78,99,45,91,142,107,240,123,236,90,8,58,171,82,142,107,211,140, + 21,141,21,133,245,132,21,125,86,141,151,149,184,149,217,149,249,149,216,149, + 215,165,85,157,20,141,41,74,138,82,199,57,40,74,199,57,228,32,32,0, + 4,33,8,66,199,57,170,90,203,90,170,82,73,74,167,49,231,57,138,82, + 203,82,236,90,16,132,243,164,19,165,74,58,201,33,201,41,38,25,4,99, + 8,161,67,0,68,0,132,8,9,58,204,82,237,82,204,82,140,66,108,50, + 173,50,79,75,144,83,177,83,177,83,177,75,176,83,177,83,177,75,111,75, + 78,67,79,75,111,75,111,75,144,83,143,75,111,75,111,75,112,75,111,75, + 79,75,79,75,111,75,112,75,5,79,75,148,111,83,143,75,79,75,111,83, + 111,75,78,83,175,107,240,115,208,115,240,123,49,132,49,124,232,49,228,24, + 37,33,37,33,36,33,4,33,36,33,4,33,5,36,33,151,163,24,163,16, + 10,115,166,106,199,106,134,90,74,123,36,82,4,66,4,74,228,73,195,65, + 40,115,236,196,169,188,137,180,105,180,105,180,73,172,41,164,9,156,232,155, + 165,106,3,195,65,180,227,65,228,73,227,73,227,73,228,73,4,74,4,74, + 36,82,69,82,101,90,102,90,134,98,167,106,199,106,231,106,231,114,8,115, + 41,123,40,123,41,123,41,131,41,131,41,123,9,123,233,122,8,123,232,114, + 199,114,200,106,167,106,167,106,167,98,166,98,167,106,167,98,167,106,199,106, + 200,114,232,114,8,115,41,123,73,123,73,131,73,131,41,131,41,131,40,123, + 231,114,198,114,198,114,198,106,165,106,164,3,131,12,91,44,99,12,99,6, + 44,99,134,12,99,45,99,44,91,12,99,44,99,44,99,3,45,99,5,44, + 99,129,45,99,3,44,91,143,44,99,44,99,44,91,44,91,45,99,44,91, + 44,91,45,91,44,91,45,99,45,91,45,91,45,99,45,91,45,99,3,45, + 91,137,45,99,45,91,78,67,208,19,82,12,147,12,114,28,208,59,77,91, + 3,45,99,138,78,67,241,19,179,12,244,36,49,60,78,91,45,99,77,99, + 77,91,77,91,5,77,99,129,77,91,3,77,99,129,77,91,3,77,99,143, + 109,99,12,91,236,82,203,82,12,91,45,99,142,99,17,116,82,124,114,124, + 147,124,147,124,179,124,147,132,147,132,10,179,132,141,179,124,179,132,179,124, + 179,132,211,132,147,132,110,99,105,66,4,33,195,16,106,50,208,99,147,124, + 8,179,124,137,147,124,179,124,147,124,179,124,179,132,212,132,180,132,212,132, + 180,132,11,212,132,148,146,132,85,157,174,123,142,115,110,115,109,107,77,107, + 44,107,12,99,235,98,203,90,203,90,170,90,137,82,105,82,73,74,40,74, + 40,74,40,66,40,66,3,8,66,129,231,57,3,199,57,3,166,49,3,134, + 41,138,102,41,101,41,101,33,69,33,69,25,69,33,69,33,37,25,4,25, + 228,16,5,37,25,129,4,25,4,37,25,161,228,16,142,99,239,123,175,115, + 142,107,174,107,240,123,240,123,240,115,240,123,240,123,16,124,49,124,81,124, + 114,124,146,132,178,132,243,140,243,140,20,141,20,141,53,149,52,149,85,149, + 117,149,85,149,150,149,150,149,150,157,215,157,182,157,247,165,247,165,3,24, + 166,130,57,166,24,166,3,89,174,182,121,174,154,182,154,174,122,174,89,174, + 187,182,122,174,154,174,154,182,219,182,187,182,219,190,187,182,219,190,122,174, + 219,190,219,190,251,190,219,182,187,190,219,190,252,190,219,190,28,199,187,182, + 28,199,252,190,29,199,29,199,93,207,61,199,29,199,126,215,93,207,93,207, + 61,207,94,215,126,215,93,207,94,207,93,207,93,207,94,207,94,207,158,215, + 126,215,126,223,158,223,190,223,158,223,158,223,126,223,126,215,158,223,3,126, + 215,5,158,223,188,126,223,158,223,158,223,126,215,126,223,126,223,61,207,125, + 215,93,215,61,215,126,223,29,207,252,198,61,207,94,223,61,207,94,215,93, + 215,126,215,111,99,204,82,9,50,200,49,204,82,37,25,0,0,33,0,228, + 16,167,41,135,33,70,33,166,41,195,16,37,33,167,41,200,41,233,49,9, + 50,74,58,74,58,139,66,139,66,171,66,172,74,237,82,78,99,13,83,13, + 91,240,123,77,99,8,58,138,74,142,107,179,132,244,132,245,132,245,132,54, + 133,119,141,151,141,4,184,149,157,247,165,85,157,211,140,41,74,138,82,199, + 57,40,74,199,57,4,33,0,0,4,33,232,65,199,57,170,82,235,98,166, + 49,130,16,97,8,98,16,69,41,170,82,203,90,239,131,19,165,20,165,107, + 66,168,33,201,41,6,17,4,99,8,153,68,0,68,0,132,8,233,57,204, + 82,205,82,172,66,108,58,107,50,173,50,237,58,14,59,14,59,47,67,79, + 67,111,75,144,75,144,75,111,75,78,67,79,67,79,75,79,75,111,75,111, + 75,3,79,75,156,79,67,46,67,46,67,79,75,111,75,78,75,46,67,14, + 67,46,67,46,67,46,75,46,67,79,75,111,75,111,75,78,83,143,107,207, + 115,208,115,240,115,49,132,49,132,73,66,228,24,37,33,36,33,36,33,37, + 33,7,36,33,151,195,24,163,16,170,98,231,122,166,90,166,106,40,115,68, + 90,227,65,228,65,228,65,227,65,69,82,39,115,7,115,230,106,230,106,198, + 106,198,98,166,98,166,98,167,98,135,98,3,167,106,129,199,106,3,232,114, + 135,231,114,232,114,232,114,8,123,8,123,232,114,233,114,8,232,114,158,199, + 114,232,114,200,114,199,106,200,106,232,114,199,106,231,106,231,114,232,114,231, + 114,231,114,8,123,7,115,232,122,7,123,7,123,230,130,230,122,230,130,230, + 130,197,122,197,122,164,122,164,114,164,122,164,114,164,114,132,114,132,114,3, + 164,114,193,3,133,12,91,44,99,44,99,12,91,12,99,4,44,99,130,12, + 99,44,91,3,44,99,131,45,99,44,99,45,99,4,44,99,129,44,91,3, + 44,99,136,45,99,44,91,12,99,44,99,44,91,45,99,45,99,44,99,3, + 45,99,147,44,99,45,99,45,99,12,91,45,91,45,99,45,91,45,91,44, + 91,77,91,45,99,45,99,45,83,110,51,241,3,147,4,115,12,82,28,142, + 83,3,45,99,137,77,83,176,35,179,4,245,28,212,44,77,91,44,99,77, + 99,77,91,3,77,99,129,109,91,6,77,99,3,77,91,149,77,99,12,91, + 203,82,235,82,12,91,45,99,143,107,49,116,114,124,146,124,147,124,147,124, + 179,124,147,132,179,132,179,132,147,132,179,132,179,132,147,124,179,124,4,179, + 132,154,179,124,179,132,179,132,212,132,147,132,207,107,106,66,4,33,97,16, + 74,50,208,99,115,124,180,124,179,124,147,124,179,124,179,132,179,124,179,132, + 179,124,147,124,147,124,179,124,179,124,179,132,212,132,4,180,132,10,212,132, + 146,211,132,146,132,85,157,109,115,141,115,109,115,77,107,77,107,44,107,12, + 99,235,98,203,90,203,90,170,82,105,82,105,82,73,74,72,74,3,40,66, + 130,8,66,8,66,3,231,57,139,199,49,167,49,167,49,166,49,166,49,134, + 41,102,41,134,41,102,33,102,41,101,33,3,69,33,134,37,33,4,25,232, + 49,12,91,195,16,228,16,7,37,25,148,4,25,70,25,81,116,243,140,85, + 149,20,141,175,115,207,115,240,123,17,124,49,124,81,124,20,141,183,157,24, + 166,88,166,89,174,56,174,121,174,89,174,3,121,174,204,89,174,121,174,121, + 174,186,182,89,174,89,174,121,174,122,182,154,182,186,182,122,174,154,182,251, + 190,89,174,154,174,187,182,154,182,154,182,122,174,154,182,219,190,187,182,219, + 182,154,174,251,190,219,182,154,182,219,190,187,182,219,190,252,190,219,182,187, + 182,155,182,187,182,219,190,219,182,220,190,155,182,187,182,61,199,252,198,252, + 190,220,190,61,199,252,190,29,199,29,199,61,199,29,191,61,199,61,207,29, + 199,93,207,93,207,126,215,158,223,158,223,190,223,190,223,190,231,223,231,223, + 239,223,231,191,231,223,239,223,247,223,239,190,239,190,231,126,215,190,223,126, + 223,94,215,126,223,126,215,3,126,223,210,126,215,158,223,93,215,158,223,93, + 215,126,223,93,215,61,215,61,215,93,215,28,207,61,215,93,215,29,207,252, + 198,61,215,28,207,219,190,28,207,219,198,61,207,143,99,12,83,200,49,12, + 83,106,74,167,41,0,0,0,0,228,24,102,33,135,41,102,33,167,41,228, + 16,228,24,167,41,200,41,233,49,9,50,9,58,74,58,107,66,107,66,171, + 74,204,82,237,82,78,99,45,91,236,82,207,123,142,107,41,58,9,66,142, + 107,179,132,244,140,244,132,21,133,86,141,86,141,119,141,152,149,184,149,216, + 149,183,149,247,165,85,157,20,149,8,66,170,82,199,57,8,66,199,57,4, + 33,0,0,4,33,232,57,231,57,138,82,174,123,4,33,3,65,8,139,162, + 16,40,66,12,99,207,123,19,165,52,173,139,66,104,33,168,33,229,16,99, + 0,3,99,8,149,68,0,68,0,100,0,233,49,172,82,205,82,140,66,108, + 50,108,42,140,42,140,42,76,34,75,34,75,34,108,42,140,42,173,50,205, + 50,237,58,14,67,14,67,4,79,75,129,112,75,3,111,75,134,79,75,79, + 75,111,75,111,75,111,83,79,75,3,78,67,3,46,67,161,111,75,144,75, + 78,75,111,99,207,115,175,115,207,115,17,132,81,132,171,82,195,24,37,33, + 36,33,36,33,37,33,36,33,4,33,4,33,36,33,36,33,69,41,69,41, + 195,24,130,16,40,74,40,139,101,82,231,114,231,106,41,123,199,106,232,106, + 232,114,3,8,115,14,232,114,133,231,114,232,114,232,114,8,115,8,115,3, + 8,123,133,8,115,9,115,9,115,232,114,232,114,3,231,106,138,198,106,199, + 114,198,114,198,114,198,122,230,122,197,130,230,130,229,130,230,130,3,229,130, + 149,197,122,164,122,132,114,99,106,99,106,99,98,67,98,66,98,67,90,100, + 98,101,98,165,98,198,106,231,114,39,123,105,131,138,139,203,147,12,148,45, + 164,77,172,198,3,136,12,91,44,99,12,91,44,99,44,99,12,91,12,91, + 12,99,5,44,99,149,12,99,45,91,12,91,44,99,44,99,45,99,45,99, + 44,99,44,91,45,99,45,99,44,99,44,99,45,99,44,91,45,99,45,99, + 12,91,45,91,45,99,44,99,4,44,91,162,45,99,45,91,45,99,45,99, + 77,99,45,99,77,99,45,99,45,99,77,91,77,99,45,107,12,99,110,43, + 241,11,50,4,147,12,50,36,143,75,45,99,45,99,45,107,110,51,18,20, + 180,12,21,29,17,60,77,91,45,99,77,99,77,91,77,99,77,99,77,91, + 6,77,99,146,77,91,77,99,77,91,236,90,235,82,236,90,45,91,77,99, + 207,107,81,116,114,124,114,124,146,124,179,132,147,132,179,132,179,124,147,124, + 5,179,132,147,179,124,179,132,179,132,179,124,179,132,179,124,211,132,114,124, + 142,99,138,66,227,24,163,16,73,50,17,108,147,124,180,132,147,124,179,124, + 179,132,3,179,124,137,147,124,179,124,147,124,179,124,179,124,179,132,212,132, + 211,132,180,132,13,212,132,154,179,132,211,140,243,148,77,107,109,107,109,107, + 77,107,77,107,12,107,11,99,235,98,203,90,170,90,138,82,138,82,105,82, + 105,74,73,74,40,66,40,66,8,66,8,66,7,66,232,57,231,57,231,57, + 3,199,57,131,134,49,134,49,134,41,3,102,41,200,102,33,69,33,69,33, + 37,33,37,25,37,25,5,25,79,91,13,83,52,157,41,66,195,16,4,25, + 37,25,5,25,5,25,37,25,37,25,228,16,41,34,28,183,92,199,92,199, + 251,190,150,157,211,140,179,132,244,140,212,140,20,141,150,149,183,149,24,166, + 89,174,122,174,219,182,219,182,186,182,219,190,122,182,154,182,121,174,154,182, + 89,174,154,182,89,174,121,182,122,182,122,182,154,182,154,182,155,182,122,182, + 154,182,89,174,154,182,122,174,89,174,155,182,57,174,155,182,155,182,122,182, + 187,182,155,182,220,190,28,199,252,190,28,199,29,199,252,198,28,199,5,61, + 207,139,125,215,126,215,126,215,158,223,158,223,190,223,223,239,191,231,223,239, + 255,247,255,247,10,255,255,130,255,247,255,255,5,255,247,3,223,239,181,223, + 231,158,231,126,223,158,223,158,223,126,223,126,223,93,215,94,215,61,215,126, + 223,93,215,93,215,61,207,93,215,93,215,61,215,61,207,220,198,252,206,187, + 190,155,190,219,198,155,190,187,198,155,190,122,182,90,182,219,198,122,182,187, + 190,155,190,252,198,208,107,13,83,167,49,211,140,167,49,199,49,0,0,0, + 0,195,24,70,33,135,41,70,33,199,41,195,16,228,24,168,41,200,41,233, + 41,9,50,41,58,3,74,58,143,171,66,172,74,237,82,45,91,110,107,110, + 107,207,115,175,115,74,66,199,49,110,107,146,132,212,132,244,132,21,141,3, + 86,141,161,151,149,184,157,216,157,184,149,215,165,85,157,244,140,232,65,203, + 90,199,57,8,66,199,57,36,33,32,0,195,24,232,65,199,57,138,82,142, + 115,98,8,195,24,98,16,65,8,130,16,8,66,45,99,174,123,243,164,84, + 173,171,74,71,25,104,33,229,24,4,99,8,152,67,8,68,0,100,0,168, + 49,140,74,204,74,140,66,108,50,141,42,173,50,173,42,108,34,108,34,43, + 26,11,18,11,18,234,17,234,9,202,17,202,17,234,25,10,26,11,26,43, + 34,3,75,34,129,108,42,3,140,34,133,172,42,173,50,237,58,14,59,46, + 67,3,46,75,149,79,75,79,75,111,75,143,83,111,83,111,99,143,107,175, + 115,175,115,240,123,81,132,45,99,195,16,37,33,36,33,37,33,36,33,36, + 41,36,33,36,33,37,33,3,36,33,137,228,32,130,16,166,49,171,147,68, + 82,106,123,101,90,41,123,9,115,4,8,115,131,9,115,8,115,8,107,3, + 8,115,131,8,123,8,123,9,123,4,8,123,140,7,123,232,122,8,123,231, + 122,231,122,198,122,230,122,198,114,197,114,197,122,165,114,165,114,4,196,122, + 137,197,122,197,130,197,130,196,122,197,122,197,122,197,114,197,114,165,114,3, + 198,106,143,231,106,7,115,40,123,105,131,138,139,203,147,12,156,78,164,110, + 172,208,188,240,188,17,197,50,205,82,213,82,205,3,82,213,134,114,213,82, + 213,82,213,82,205,82,213,82,205,166,3,135,44,99,44,99,12,99,12,99, + 44,99,12,99,12,99,4,44,99,137,44,91,45,99,44,99,44,99,45,99, + 44,99,44,99,44,91,45,99,3,44,99,129,45,99,3,44,99,141,44,91, + 45,91,45,99,45,99,45,91,12,91,44,99,45,99,44,91,44,99,45,99, + 45,99,45,91,3,45,99,153,44,99,45,91,45,99,45,99,77,99,45,99, + 77,91,77,99,45,99,45,75,143,35,241,3,83,4,115,12,17,52,142,75, + 45,99,45,99,78,75,209,27,148,12,245,20,147,52,110,83,45,99,12,77, + 99,145,77,91,236,82,204,82,12,91,45,91,110,99,208,107,82,124,114,124, + 146,124,146,124,147,124,147,132,147,132,179,132,179,132,147,132,7,179,132,157, + 179,124,179,132,180,132,115,132,142,99,106,66,36,33,162,16,41,50,175,91, + 115,124,179,132,179,132,147,124,179,124,180,124,179,124,179,124,147,124,179,124, + 179,124,147,124,147,124,179,124,180,132,211,132,212,132,212,132,180,132,4,212, + 132,129,211,132,7,212,132,132,146,132,244,140,146,148,44,107,3,77,107,145, + 44,107,12,99,12,99,235,98,202,90,170,90,170,90,105,82,105,82,73,74, + 73,74,40,74,40,74,40,66,8,66,8,66,232,65,3,199,57,150,199,49, + 166,49,166,49,134,41,134,41,102,41,101,41,101,41,101,33,69,33,69,25, + 37,33,37,33,37,25,37,25,14,83,111,91,20,157,211,148,77,107,163,16, + 4,25,4,37,25,176,195,16,171,50,125,199,27,191,60,199,219,190,154,182, + 150,165,20,149,53,149,244,140,53,149,118,149,118,149,150,157,57,166,57,166, + 89,174,122,182,24,166,121,182,56,174,57,174,89,174,57,174,89,174,89,174, + 57,174,24,166,57,174,57,166,57,174,122,174,123,182,155,182,220,190,219,182, + 252,190,28,199,28,199,93,207,126,215,158,223,126,223,158,231,190,231,190,231, + 191,239,3,223,239,134,223,247,255,247,255,247,255,255,255,247,255,247,20,255, + 255,130,255,247,255,255,3,255,247,133,223,239,255,247,223,247,255,247,255,247, + 3,223,239,137,190,231,158,223,158,223,158,231,158,223,126,223,158,231,125,223, + 61,207,3,93,215,169,252,198,61,207,93,215,252,198,252,198,28,207,220,198, + 252,206,187,190,187,190,122,182,187,190,154,190,122,182,90,182,187,190,187,190, + 155,190,187,190,188,190,89,182,17,116,12,83,167,49,81,124,69,33,41,58, + 33,0,0,0,130,16,69,33,135,41,70,33,200,49,195,16,195,24,200,49, + 168,41,232,41,9,50,9,58,3,74,58,142,139,66,171,66,236,74,45,91, + 110,107,175,115,207,115,207,115,171,74,167,49,77,99,114,132,212,132,212,132, + 3,21,133,163,86,141,119,149,151,149,184,149,184,149,215,173,85,157,244,140, + 199,57,170,82,199,57,8,66,231,57,36,41,32,8,195,24,231,57,231,57, + 138,82,44,107,196,24,97,8,98,16,97,8,130,16,138,82,77,107,175,123, + 243,164,84,173,236,74,38,25,104,33,229,16,98,0,3,99,8,147,67,0, + 67,0,68,0,136,41,107,66,172,82,140,58,108,42,109,42,173,34,141,34, + 141,34,109,34,109,26,76,26,76,18,11,18,234,9,169,9,5,137,9,132, + 104,1,104,9,72,9,103,9,3,136,9,153,169,9,169,9,201,17,10,26, + 10,26,43,34,75,42,107,42,205,66,13,75,13,75,46,83,78,83,78,91, + 110,99,142,107,175,115,240,115,49,132,143,107,195,16,36,33,36,33,37,33, + 37,33,5,36,33,141,37,33,37,33,228,32,162,16,36,33,203,147,68,82, + 41,115,41,123,41,123,40,115,41,123,40,123,3,8,123,142,8,131,7,123, + 7,123,231,130,231,130,6,131,230,122,229,122,230,122,198,122,197,122,197,114, + 164,114,164,114,4,165,114,153,197,114,197,114,230,122,230,122,6,123,7,123, + 40,131,72,131,73,139,105,139,137,139,170,147,203,147,236,147,13,156,77,164, + 110,172,143,180,175,188,208,188,240,196,17,197,49,205,50,205,81,205,7,82, + 213,137,82,205,82,205,81,205,82,205,82,205,81,205,81,213,82,213,82,213, + 5,114,213,112,3,134,12,99,12,99,44,99,12,99,44,99,12,99,3,44, + 99,156,12,91,44,99,44,99,12,91,44,99,45,99,45,99,44,99,44,99, + 45,99,44,99,44,99,44,91,44,99,45,91,44,99,44,99,13,99,45,99, + 44,99,45,91,45,99,12,99,45,99,12,91,44,99,45,99,44,91,3,45, + 91,9,45,99,170,77,99,45,99,77,91,77,99,45,99,77,67,144,19,17, + 4,82,4,114,12,17,52,45,99,44,107,45,91,144,35,82,4,244,20,212, + 36,207,75,45,99,77,99,77,99,77,91,109,99,77,99,77,99,77,91,77, + 99,77,91,77,91,77,99,45,91,236,82,204,82,237,90,45,99,110,99,240, + 107,82,124,114,124,114,124,147,124,3,147,132,136,179,132,147,132,179,124,179, + 132,147,132,179,124,179,132,179,124,4,179,132,141,146,132,176,107,105,66,4, + 33,97,8,41,50,175,91,114,116,180,132,179,132,179,124,147,132,179,132,4, + 179,124,3,147,124,138,179,124,180,132,180,132,211,132,179,132,180,132,180,132, + 212,132,212,132,180,132,9,212,132,133,178,132,53,149,48,132,12,107,77,107, + 3,44,107,158,235,98,235,98,235,90,202,90,170,90,170,90,137,82,105,82, + 73,74,73,74,40,74,40,74,40,66,40,66,232,65,231,65,231,65,199,57, + 199,57,199,49,167,49,166,49,134,41,102,41,102,41,101,41,101,33,101,33, + 69,33,69,25,4,37,25,152,111,91,111,99,211,148,179,148,85,165,174,115, + 131,8,4,17,5,25,37,25,37,25,163,8,110,67,125,207,186,182,27,191, + 219,190,154,182,248,173,183,165,244,148,21,149,86,157,118,157,4,183,157,149, + 215,165,248,165,248,165,25,166,25,166,58,174,122,174,122,182,155,182,188,182, + 253,190,29,199,126,215,190,231,190,231,191,231,223,239,223,247,223,247,255,247, + 255,247,41,255,255,3,255,247,3,223,239,162,255,239,223,239,255,247,191,231, + 190,239,191,239,190,231,223,239,158,223,126,223,126,223,93,215,126,215,126,223, + 126,223,61,207,61,215,187,190,61,207,61,207,252,198,28,207,252,206,29,207, + 187,190,187,198,123,190,155,190,122,182,154,182,155,190,155,190,123,182,122,182, + 4,90,182,170,17,116,13,91,41,66,49,124,5,33,74,66,33,0,0,0, + 98,8,69,33,135,33,70,33,199,49,195,16,196,24,200,41,168,41,200,49, + 232,49,9,50,74,58,74,58,74,66,139,66,139,66,204,74,45,91,110,99, + 175,115,207,115,207,115,13,91,171,82,109,99,82,124,179,132,212,124,212,124, + 180,124,245,132,54,141,86,141,3,119,149,182,216,173,85,157,243,140,232,65, + 170,82,231,57,8,66,231,57,69,41,32,0,163,24,231,57,199,57,137,82, + 12,99,105,74,228,32,97,8,195,24,231,57,12,99,45,99,174,123,243,164, + 85,173,13,91,38,25,71,33,229,16,99,8,66,8,99,8,99,8,67,0, + 68,0,67,0,103,41,107,74,140,74,44,50,108,34,141,34,141,34,173,42, + 173,42,173,34,173,34,108,26,44,26,11,18,170,9,105,9,72,9,104,9, + 4,72,9,133,39,1,39,9,39,1,39,1,72,1,3,104,9,148,169,9, + 201,17,169,17,201,25,169,17,234,25,139,74,204,82,204,82,12,91,45,91, + 78,99,78,99,142,107,175,115,208,115,17,124,208,115,228,16,36,33,3,37, + 33,130,36,33,37,33,6,36,33,143,163,24,195,24,171,147,7,131,230,114, + 6,131,6,131,230,130,230,130,230,122,197,122,197,122,196,114,197,122,165,114, + 3,165,106,157,197,114,197,114,230,114,231,114,7,123,40,123,104,131,105,139, + 170,139,203,147,235,155,13,164,77,164,77,164,142,172,143,180,175,180,208,188, + 240,188,240,196,17,197,17,197,49,205,49,205,50,205,81,205,82,205,82,213, + 82,205,9,82,213,129,114,213,3,82,213,13,114,213,132,146,213,147,221,114, + 221,82,213,119,3,134,44,99,44,99,12,91,45,99,44,99,45,99,3,44, + 99,132,44,91,44,99,45,99,45,99,3,44,99,3,45,99,132,44,99,44, + 99,45,99,45,99,4,44,99,143,45,99,45,99,45,91,45,99,45,99,44, + 99,45,99,44,91,44,91,44,99,45,99,45,91,45,99,45,99,45,91,4, + 45,99,154,77,99,44,99,45,99,77,99,77,99,77,91,77,99,77,99,45, + 99,45,99,45,75,143,19,17,4,50,4,147,12,208,59,77,99,44,107,78, + 75,208,19,148,4,245,20,114,44,78,91,45,99,77,99,3,77,91,142,77, + 99,77,99,77,91,77,91,77,99,12,91,204,82,203,90,236,90,45,99,175, + 99,17,116,114,124,114,124,3,147,124,132,147,132,147,132,179,132,147,132,3, + 179,132,129,179,124,4,179,132,145,212,132,82,124,110,99,41,58,162,16,162, + 16,41,50,241,107,146,124,180,132,179,132,147,124,179,124,147,124,180,124,179, + 124,179,124,4,147,124,139,179,124,179,124,179,132,212,132,211,132,211,132,212, + 132,212,132,211,132,180,132,180,132,8,212,132,160,211,132,146,132,85,157,141, + 115,12,99,44,107,12,107,12,99,235,98,235,98,203,98,203,98,170,90,170, + 90,137,82,105,74,105,74,73,74,40,74,40,74,8,74,40,66,8,66,8, + 66,232,65,231,57,199,57,199,57,167,57,199,49,134,49,134,41,4,102,41, + 152,102,33,69,33,37,33,37,33,69,33,5,25,135,33,49,116,143,107,147, + 140,179,140,179,148,118,165,178,148,69,41,196,16,5,25,37,25,163,16,175, + 91,56,174,150,149,215,157,215,157,3,150,157,146,86,157,151,165,183,157,183, + 157,248,165,58,166,123,174,187,182,220,190,61,199,93,207,94,207,158,223,223, + 231,223,231,255,239,255,247,255,247,52,255,255,3,255,247,147,255,255,255,247, + 223,239,223,239,191,239,223,239,190,231,223,239,223,239,222,239,158,223,158,231, + 126,223,190,231,93,215,93,223,126,223,29,207,28,199,3,61,207,246,252,198, + 93,207,252,198,28,199,155,190,187,190,220,190,187,190,122,182,122,182,155,182, + 122,182,187,190,90,182,25,174,249,165,155,182,248,165,216,165,240,115,172,74, + 171,82,174,107,102,33,41,58,196,24,0,0,65,8,70,33,135,41,70,33, + 8,50,195,16,228,24,135,41,200,41,200,41,233,49,9,50,41,50,41,58, + 42,58,106,66,107,66,171,74,110,99,175,107,143,107,208,115,207,123,45,91, + 139,66,110,99,81,116,114,124,212,132,179,124,147,124,212,124,21,141,53,141, + 86,141,86,149,86,141,247,165,118,157,85,157,170,82,170,82,8,66,8,66, + 232,65,69,41,65,8,130,16,231,57,232,57,138,82,12,99,235,90,12,99, + 203,90,235,90,12,99,12,91,45,99,174,115,243,164,85,181,110,99,6,25, + 71,33,230,24,99,0,66,8,98,8,99,0,99,0,67,0,67,0,71,33, + 75,66,75,58,233,33,75,42,14,59,15,59,239,58,238,50,173,42,108,34, + 234,25,104,9,39,1,229,0,229,0,230,0,6,1,7,197,0,154,229,0, + 229,0,6,1,39,9,38,1,39,1,104,9,104,17,169,17,201,17,10,34, + 172,82,236,90,204,90,204,90,13,99,45,99,78,107,110,107,142,107,208,115, + 240,123,240,123,37,33,4,33,37,33,3,36,33,155,37,33,36,33,37,33, + 36,33,36,33,37,41,36,33,163,24,195,16,233,106,39,123,39,123,72,123, + 104,131,105,131,137,131,170,139,203,147,11,148,44,156,45,156,109,172,142,180, + 174,180,208,188,240,188,17,197,3,17,205,130,82,205,82,205,5,82,213,130, + 114,205,114,205,5,82,213,130,114,213,114,213,5,82,213,129,114,213,4,82, + 213,129,114,213,5,82,213,133,81,213,82,213,81,205,49,205,49,205,3,17, + 205,142,240,204,240,196,240,196,207,196,175,188,142,188,143,188,110,188,110,188, + 109,188,101,138,197,113,164,105,99,97,108,3,132,44,99,44,99,12,99,12, + 91,13,44,99,138,45,99,44,99,44,99,45,99,44,91,45,99,45,99,44, + 99,44,99,45,99,3,45,91,135,45,99,45,91,44,99,44,91,44,91,45, + 99,45,99,3,45,91,142,44,91,45,99,45,91,45,99,45,99,45,91,45, + 91,77,99,45,99,77,99,45,99,45,91,45,99,45,99,3,77,99,144,77, + 91,110,59,176,19,17,4,115,4,82,36,175,75,45,99,45,91,176,27,82, + 12,212,12,179,36,240,67,45,91,45,99,5,77,99,146,77,91,77,99,12, + 91,203,82,236,90,12,91,77,99,175,107,17,116,114,124,146,124,147,124,147, + 132,147,132,147,124,179,132,179,132,147,124,7,179,132,137,211,132,114,124,78, + 91,40,58,228,24,130,16,41,50,175,91,115,124,3,179,132,131,147,124,179, + 124,147,124,3,179,124,4,147,124,139,179,124,179,132,179,132,212,132,179,132, + 212,132,179,132,179,132,212,132,180,132,180,132,9,212,132,202,146,132,150,165, + 235,98,12,99,12,99,235,98,235,98,203,90,203,90,202,90,170,90,170,82, + 170,82,138,82,105,74,73,74,73,74,72,74,40,74,8,74,8,66,40,66, + 8,66,8,66,231,57,231,57,199,57,199,57,166,49,166,49,134,41,134,41, + 102,41,102,41,101,41,101,33,69,33,37,25,37,33,37,25,4,25,135,33, + 115,124,143,107,82,132,50,124,82,132,179,140,85,165,178,156,69,33,195,16, + 37,25,228,16,49,108,248,173,151,157,150,157,85,149,86,157,86,157,118,149, + 58,174,91,174,220,190,29,199,61,199,126,215,223,223,223,231,255,239,255,247, + 255,239,255,239,3,255,247,55,255,255,5,255,247,131,223,239,255,247,222,231, + 4,223,239,210,190,223,191,231,158,223,158,215,158,215,126,215,126,215,94,215, + 28,207,155,182,220,198,252,190,187,190,89,182,155,190,57,182,24,174,215,165, + 151,157,183,165,118,157,85,149,86,157,20,141,20,141,244,140,146,132,114,124, + 17,116,82,124,17,116,240,115,240,115,171,74,77,99,236,82,134,41,9,50, + 167,41,0,0,65,8,196,16,5,25,228,24,167,41,195,16,196,24,199,49, + 232,49,200,41,200,49,9,50,9,58,41,58,41,58,74,58,41,50,41,58, + 78,99,176,115,143,107,207,115,240,123,45,91,8,58,143,99,82,116,82,116, + 147,124,147,124,179,124,180,124,212,132,21,133,54,141,86,141,86,141,215,165, + 118,157,20,149,203,82,171,82,3,8,66,229,69,41,65,8,130,16,231,57, + 232,65,105,82,12,99,235,90,235,90,236,90,235,90,235,90,236,90,44,99, + 142,115,211,164,117,181,143,107,5,17,71,33,6,25,131,8,66,8,99,8, + 100,8,67,0,67,0,35,0,38,25,10,58,234,49,169,25,43,34,237,58, + 238,66,173,50,107,34,11,26,201,17,103,1,229,0,196,0,196,0,164,0, + 197,0,197,0,164,0,164,0,132,0,164,0,164,8,165,0,132,0,197,0, + 230,0,6,1,6,1,164,0,132,0,164,0,196,0,6,9,71,9,136,25, + 74,66,171,82,139,82,171,74,171,82,204,90,13,99,45,99,78,107,142,107, + 207,115,16,124,102,41,4,33,36,41,36,33,37,41,36,33,37,33,36,33, + 37,33,37,41,36,33,36,33,4,33,195,24,98,8,111,164,208,188,240,188, + 16,197,17,197,49,205,49,205,50,205,82,213,82,205,3,82,213,140,114,213, + 49,205,208,188,175,180,175,180,176,188,175,188,110,172,82,205,114,213,114,213, + 82,213,5,114,213,129,146,213,4,114,221,138,114,213,114,221,82,213,82,213, + 82,205,49,205,49,205,50,205,49,205,49,205,4,17,205,143,16,205,241,204, + 241,196,240,196,240,196,208,196,208,196,175,196,143,196,143,188,142,188,110,188, + 109,188,77,188,45,188,3,12,180,136,236,179,235,179,203,171,12,180,4,138, + 2,81,34,89,35,89,115,3,131,12,99,44,99,44,99,3,12,99,131,44, + 99,44,99,12,99,8,44,99,129,12,99,3,45,99,138,44,91,44,99,44, + 99,45,99,45,99,44,91,44,99,45,99,44,99,44,99,3,45,99,129,44, + 91,4,45,99,131,44,99,44,99,45,99,3,45,91,175,45,99,45,99,77, + 99,45,91,77,99,45,99,77,99,77,91,45,91,77,99,77,99,45,99,77, + 99,77,99,45,91,110,35,209,3,50,4,147,12,82,44,110,91,12,107,110, + 67,17,12,180,4,244,20,147,44,78,91,45,99,77,99,77,99,77,91,77, + 91,77,99,45,91,12,91,203,82,236,90,12,91,110,99,208,107,49,116,114, + 124,114,124,147,124,146,132,147,132,3,179,132,154,179,124,179,132,179,132,179, + 124,179,132,179,124,179,124,212,132,82,124,143,99,8,50,195,24,65,8,41, + 42,175,99,114,124,179,132,179,132,179,124,147,124,179,132,179,124,179,132,179, + 132,147,124,179,124,4,147,124,132,179,132,179,132,180,132,211,132,4,179,132, + 133,212,132,180,132,212,132,212,132,211,132,6,212,132,134,179,132,178,140,117, + 165,170,90,235,98,11,99,4,203,90,138,170,90,170,90,138,82,137,82,137, + 82,105,74,105,74,72,74,73,74,40,74,5,8,66,130,231,65,231,57,3, + 199,57,131,166,49,134,49,134,41,3,102,41,162,101,33,69,33,37,33,37, + 33,37,25,4,25,9,42,82,124,111,99,175,107,240,115,240,115,82,132,114, + 132,244,156,81,140,231,57,163,8,37,17,119,133,219,190,25,166,151,149,53, + 141,53,149,118,157,25,174,220,182,93,207,159,223,223,231,191,223,223,231,255, + 239,8,255,247,58,255,255,178,255,247,255,239,255,239,255,231,255,231,126,207, + 191,223,126,207,93,207,252,190,187,182,57,182,215,165,150,157,85,157,53,149, + 179,132,147,132,114,132,49,116,240,107,208,107,143,107,110,107,110,99,142,107, + 78,99,143,99,143,107,175,99,142,99,143,99,110,99,143,99,111,99,78,91, + 110,91,110,91,111,91,111,91,143,91,208,107,13,83,240,123,41,58,102,33, + 167,41,167,41,163,16,65,8,3,98,8,154,162,16,130,8,130,8,228,24, + 135,41,8,50,232,41,233,49,9,50,9,50,41,58,42,58,233,49,37,25, + 106,74,240,115,143,107,207,115,208,123,110,99,106,66,175,107,50,116,82,116, + 147,124,147,124,3,212,132,165,21,141,21,141,53,141,86,141,151,165,150,157, + 52,149,203,82,171,82,41,74,231,57,8,66,101,41,97,8,97,16,231,57, + 231,57,105,82,44,99,236,90,12,99,12,91,12,99,12,91,236,90,45,99, + 109,107,243,164,117,181,207,115,5,17,70,25,6,25,131,8,98,8,99,8, + 99,8,3,67,0,181,229,16,71,33,71,25,136,17,234,17,75,34,43,34, + 201,25,136,9,201,9,169,1,104,1,197,0,164,0,197,8,164,8,165,0, + 164,0,132,0,131,8,99,0,131,0,164,8,164,8,99,0,165,0,7,1, + 38,1,6,1,164,0,99,0,99,0,131,0,164,0,197,8,5,17,167,41, + 106,74,139,82,171,74,139,82,171,82,236,90,45,99,77,99,110,107,175,115, + 240,123,199,49,4,33,69,33,36,33,5,33,3,37,33,4,36,33,176,37, + 33,195,24,65,8,111,164,241,196,209,188,240,188,143,180,240,196,208,188,17, + 189,114,213,115,221,146,221,114,213,147,221,147,221,82,213,209,188,78,172,175, + 180,17,197,17,197,208,196,82,205,147,221,146,221,114,221,114,213,82,213,50, + 213,49,205,240,204,143,188,111,180,78,172,46,172,13,172,236,171,138,163,74, + 139,175,180,17,205,241,204,17,205,240,204,16,205,16,205,3,240,204,131,208, + 204,208,204,207,196,3,175,196,141,142,196,110,196,77,188,45,188,12,180,204, + 179,171,171,170,171,170,171,138,171,170,171,105,163,105,163,3,73,163,133,138, + 171,199,154,2,89,67,97,67,97,174,3,129,12,99,5,44,99,137,12,91, + 44,99,44,91,44,99,44,99,12,91,12,99,45,99,45,99,3,44,99,166, + 12,91,45,99,13,99,44,99,44,99,45,99,44,99,44,91,45,99,12,99, + 44,99,45,99,44,91,45,91,45,91,44,99,44,91,45,99,45,99,45,91, + 45,91,44,99,45,99,45,99,77,99,77,91,45,99,77,99,77,91,77,99, + 45,99,45,99,77,99,45,99,45,91,45,99,45,91,77,91,4,77,99,157, + 77,107,45,83,110,35,208,3,50,4,180,4,17,52,110,99,12,107,111,35, + 50,12,180,4,21,29,49,60,110,91,45,99,77,99,77,91,77,99,45,91, + 236,82,203,82,236,90,13,91,110,99,240,115,82,124,114,124,146,124,3,147, + 124,134,147,132,147,124,179,132,179,124,179,124,147,124,3,179,132,146,180,132, + 49,116,45,91,231,41,97,8,163,8,73,50,17,108,147,124,179,132,179,132, + 179,124,179,124,147,124,179,124,179,124,147,124,179,124,4,147,124,141,147,132, + 179,132,179,132,180,132,179,132,179,132,180,132,211,132,212,132,211,132,180,132, + 212,132,180,132,8,212,132,143,179,132,178,132,243,148,170,90,235,98,202,90, + 203,90,170,90,170,90,170,82,170,82,138,82,137,82,137,82,105,82,3,73, + 74,147,40,66,40,66,40,74,8,66,8,66,231,65,7,66,231,65,231,65, + 231,57,199,57,199,49,167,49,166,49,134,49,134,41,102,41,102,41,69,41, + 3,69,33,158,37,25,228,16,74,58,240,115,143,107,207,115,143,107,110,99, + 240,123,81,132,81,132,81,140,243,156,41,74,70,17,159,199,62,207,155,174, + 216,157,54,141,21,141,118,157,183,157,155,182,61,207,158,223,159,223,223,239, + 255,247,255,247,46,255,255,167,255,247,255,247,223,247,223,247,191,239,190,239, + 158,239,158,239,126,231,125,231,60,223,60,207,29,199,220,198,89,174,25,166, + 184,157,118,149,245,132,21,141,147,124,114,124,17,108,176,107,143,107,78,99, + 110,99,142,99,110,99,77,99,45,91,13,91,46,91,45,91,78,91,78,91, + 45,91,110,91,142,99,3,143,99,160,240,107,208,99,241,107,208,99,241,107, + 17,108,17,108,241,107,17,108,240,107,50,116,49,108,49,116,240,107,49,116, + 114,116,82,116,114,116,244,132,176,107,13,83,211,148,134,41,134,41,134,33, + 70,33,228,24,1,0,65,0,65,8,97,8,97,8,3,130,8,172,65,8, + 98,8,102,33,233,49,41,50,9,50,233,49,41,58,233,49,131,8,101,41, + 17,124,142,107,207,115,240,123,111,107,171,74,175,107,50,116,82,124,179,132, + 212,132,244,132,20,133,21,141,53,141,21,141,20,141,21,141,183,165,150,165, + 20,149,236,90,171,82,73,66,199,57,8,66,133,49,98,16,97,8,199,57, + 231,57,73,74,44,107,3,12,99,178,12,91,12,99,45,99,45,99,110,107, + 210,156,117,181,16,132,38,25,38,25,229,16,99,0,66,8,99,8,99,0, + 99,8,67,0,67,0,99,8,132,8,164,0,103,17,234,17,169,9,39,1, + 229,0,103,1,43,10,76,10,202,1,197,0,196,16,38,33,38,17,6,17, + 6,17,229,16,131,0,66,0,67,8,131,0,131,8,131,0,196,8,6,9, + 38,1,6,1,164,0,98,0,163,8,4,164,0,149,229,16,135,41,9,58, + 74,66,106,74,139,82,171,82,204,82,236,90,13,99,45,99,110,107,200,49, + 4,33,69,33,37,33,36,33,37,41,36,33,37,33,37,33,3,36,33,172, + 37,41,228,32,33,0,173,123,16,197,176,180,111,180,78,164,143,172,13,164, + 46,164,49,205,50,213,49,205,241,204,208,196,208,196,110,180,46,180,204,171, + 236,171,204,163,139,155,106,155,9,147,233,138,200,130,135,122,102,114,37,114, + 229,105,164,97,164,97,5,155,166,187,36,179,5,106,2,73,2,81,2,81, + 226,72,46,156,239,212,207,196,3,175,196,3,142,196,156,110,196,143,196,110, + 196,142,196,45,188,45,188,235,179,138,163,138,171,138,163,105,163,73,163,203, + 171,236,179,236,179,74,171,236,171,171,179,204,179,236,179,12,180,41,163,41, + 155,232,154,74,163,2,89,67,97,67,97,183,3,135,12,99,12,99,44,99, + 12,99,44,99,12,99,12,99,6,44,99,129,45,99,5,44,99,3,45,99, + 162,44,99,44,91,44,99,45,99,44,91,44,99,45,99,44,91,44,91,45, + 99,45,91,44,99,44,99,45,99,44,91,45,99,45,99,44,91,45,99,45, + 99,45,91,77,99,45,99,45,99,77,99,77,99,45,99,77,99,45,91,77, + 99,77,91,45,99,45,91,45,99,3,77,99,180,45,91,77,99,77,107,45, + 99,77,67,143,27,241,3,115,4,147,20,49,60,77,91,45,75,176,27,115, + 4,245,12,179,36,240,67,77,99,45,99,77,99,45,91,236,82,203,82,12, + 91,45,91,143,99,17,116,82,124,114,124,114,124,147,124,147,124,147,132,147, + 132,179,132,147,132,179,124,179,124,179,132,147,132,179,132,179,132,49,124,13, + 83,199,41,130,16,163,8,74,50,208,99,115,124,179,132,179,132,3,179,124, + 129,147,124,4,179,124,5,147,124,5,179,132,133,180,132,179,132,211,132,212, + 132,179,132,6,212,132,129,212,140,3,212,132,139,146,132,243,148,146,140,105, + 82,203,90,170,90,170,90,170,82,170,90,138,82,138,82,4,105,82,143,73, + 74,72,74,40,74,73,74,40,66,8,66,40,66,8,66,232,65,8,66,232, + 57,231,65,231,57,199,57,199,57,3,166,49,3,134,41,164,69,41,69,33, + 37,33,37,25,69,33,163,8,17,108,111,99,142,107,142,107,110,107,45,99, + 208,115,17,124,49,132,240,123,16,124,12,99,172,50,255,239,158,215,61,199, + 58,158,86,141,53,141,151,157,248,165,155,182,158,223,223,231,223,239,255,239, + 255,247,255,255,255,247,255,247,33,255,255,153,255,247,255,247,191,231,125,223, + 93,223,252,206,154,198,89,190,89,190,248,173,216,165,151,157,86,149,244,140, + 212,140,147,124,114,124,17,116,241,107,208,107,175,99,45,83,13,83,78,91, + 46,91,5,78,91,248,110,91,110,99,78,99,143,99,143,99,175,99,176,99, + 208,107,17,108,240,107,49,116,82,116,50,116,82,116,114,116,49,116,82,116, + 50,116,146,124,114,124,179,124,82,124,114,124,146,124,114,124,147,124,114,124, + 82,124,50,116,115,124,147,124,245,132,22,141,54,141,86,141,118,141,118,141, + 184,149,184,149,216,157,249,157,118,149,241,107,236,90,20,157,228,24,102,33, + 167,41,102,33,102,41,163,16,65,8,65,8,195,16,228,24,98,8,65,8, + 65,0,98,8,98,8,65,8,163,16,135,41,42,58,9,50,9,58,200,49, + 163,8,69,33,240,123,143,107,208,123,16,124,143,107,204,82,175,107,50,116, + 114,124,179,132,180,132,212,132,21,141,21,141,53,141,21,141,53,141,21,141, + 183,157,150,157,53,149,12,91,170,82,73,74,199,57,8,66,134,49,130,16, + 65,8,199,57,232,65,105,74,77,107,45,99,45,99,44,99,13,99,45,99, + 45,99,77,99,109,107,178,156,117,181,81,132,70,33,6,25,229,16,99,0, + 66,8,99,8,99,8,3,67,0,169,99,0,99,0,131,0,71,9,201,9, + 169,9,39,1,229,0,71,1,44,10,109,10,234,1,197,0,197,16,103,33, + 71,25,71,25,103,33,71,33,196,16,66,0,66,0,99,0,131,0,131,0, + 164,0,6,1,230,0,197,0,164,0,99,0,132,8,164,0,132,0,132,0, + 164,8,197,16,6,17,70,25,136,41,168,49,3,200,49,172,233,49,201,49, + 233,49,10,50,38,33,36,33,69,41,37,33,36,33,69,33,37,33,37,33, + 36,33,37,33,36,33,37,33,36,33,228,32,98,8,137,90,46,180,237,163, + 172,155,13,172,110,188,110,188,236,171,73,155,135,122,135,122,103,122,38,114, + 38,106,197,105,229,97,233,98,75,123,202,106,104,106,103,98,71,82,67,81, + 34,89,34,81,3,35,81,175,36,81,44,74,173,123,8,188,164,219,110,180, + 234,90,35,81,67,89,226,80,74,131,109,196,45,188,45,188,77,180,77,188, + 77,188,45,188,12,180,203,179,143,196,142,196,175,196,12,188,171,171,45,180, + 109,188,12,188,77,188,110,188,203,179,203,171,45,180,12,188,73,171,106,171, + 171,171,236,179,204,179,171,179,138,171,106,171,232,162,139,171,67,105,67,97, + 67,97,194,3,140,12,99,44,99,12,99,12,99,44,99,12,99,45,99,44, + 99,44,99,12,99,44,99,12,99,4,44,99,137,12,99,45,99,44,99,45, + 99,45,99,44,99,44,91,45,99,44,99,3,45,91,4,45,99,140,44,99, + 45,99,45,99,44,91,44,91,45,91,45,99,44,99,44,99,45,99,45,91, + 77,99,3,45,99,138,45,91,77,99,77,99,45,99,77,99,77,91,77,91, + 77,99,77,99,77,91,4,77,99,164,77,91,77,99,77,99,77,91,77,67, + 176,3,18,4,115,4,179,28,240,75,13,99,78,59,17,12,180,4,245,20, + 179,44,175,75,12,99,236,90,203,82,204,90,12,91,45,91,175,107,17,116, + 82,124,114,124,114,124,147,132,147,124,147,124,179,124,147,132,179,132,147,132, + 147,124,3,179,132,136,49,124,77,91,134,41,130,16,65,8,106,58,176,99, + 114,124,3,179,132,132,179,124,147,132,179,124,147,124,4,179,124,4,147,124, + 138,179,124,179,124,179,132,179,132,180,132,212,132,211,132,212,132,179,132,180, + 132,3,212,132,129,211,132,4,212,132,144,211,132,212,132,212,132,114,132,52, + 149,15,124,105,82,170,82,170,82,137,82,138,82,137,82,105,82,137,82,105, + 74,105,74,4,73,74,178,40,74,40,66,40,74,40,74,40,66,8,66,232, + 65,8,66,231,65,231,65,231,57,199,57,199,57,166,49,166,49,166,41,134, + 41,134,41,102,41,101,33,69,33,37,33,37,25,37,25,196,16,237,74,143, + 99,109,99,110,107,78,99,78,99,175,107,208,115,240,123,240,123,175,115,167, + 57,212,100,255,247,223,239,94,207,188,182,151,149,53,141,118,149,248,165,220, + 190,158,215,223,231,223,231,5,255,247,25,255,255,162,255,247,223,239,126,223, + 252,206,122,190,248,165,86,157,53,149,179,132,146,132,114,132,81,124,114,124, + 49,124,240,115,240,115,175,107,142,99,142,107,142,99,78,99,110,99,45,91, + 77,99,78,99,110,99,78,91,78,99,110,91,143,99,143,99,208,99,175,99, + 241,107,3,240,107,135,17,108,49,116,17,116,240,107,82,124,82,116,17,116, + 6,82,116,219,179,124,212,132,244,132,21,133,118,141,86,149,183,149,216,149, + 217,157,216,149,216,157,216,149,184,149,25,158,90,166,123,166,187,174,187,166, + 252,174,253,174,221,174,29,183,29,175,62,183,94,191,62,183,62,191,62,183, + 29,175,111,107,179,132,13,91,244,148,33,0,167,41,199,49,102,33,134,33, + 196,16,65,8,97,8,98,8,196,16,167,41,199,41,195,16,33,0,32,0, + 97,8,97,8,65,8,196,16,9,50,42,58,232,49,163,8,36,25,16,124, + 143,107,208,115,16,124,175,115,204,82,176,107,49,116,82,124,147,132,179,132, + 244,140,21,141,21,133,21,141,21,141,53,141,21,141,183,157,182,165,52,149, + 12,91,171,82,105,74,167,57,8,66,134,49,162,24,65,8,167,57,8,66, + 73,74,109,107,77,107,6,77,99,173,109,107,178,156,85,181,146,148,71,33, + 229,16,229,16,99,0,66,8,98,8,99,8,67,8,99,0,67,0,67,0, + 99,0,98,0,38,1,136,1,104,1,6,1,197,0,6,1,202,1,235,1, + 105,1,164,0,197,16,39,25,230,0,6,9,7,25,39,25,197,16,99,0, + 99,0,100,0,132,0,100,0,132,0,197,0,197,0,165,0,133,0,100,0, + 3,133,0,136,132,0,133,0,165,8,165,0,165,0,198,8,198,8,198,16, + 4,198,8,155,197,8,166,0,164,16,36,33,69,41,36,33,37,33,36,33, + 37,33,37,33,36,33,37,33,36,33,36,33,69,41,4,33,163,16,36,41, + 197,97,132,89,135,122,235,171,205,155,204,163,235,179,105,163,228,105,3,67, + 81,183,67,89,3,81,40,90,209,132,242,148,146,132,209,156,208,164,177,140, + 6,82,35,89,67,89,68,89,68,89,67,89,103,81,115,42,178,42,199,130, + 65,170,74,139,113,92,100,81,67,89,35,89,103,106,236,179,170,171,171,171, + 203,171,171,171,138,171,41,163,8,163,231,154,204,171,13,180,236,179,171,179, + 41,163,204,171,203,171,105,171,106,163,138,171,73,163,9,163,105,163,41,163, + 73,163,9,163,73,163,41,163,40,163,41,171,3,73,171,132,203,179,5,130, + 35,97,67,105,210,3,132,44,99,12,99,44,99,12,91,3,44,99,131,12, + 99,12,99,45,91,3,44,99,161,45,99,44,99,45,99,44,99,12,91,44, + 99,12,91,44,99,44,91,45,99,44,99,44,99,45,99,44,99,44,99,45, + 99,44,99,45,91,45,99,45,91,44,91,45,99,45,99,44,91,45,99,45, + 99,44,91,44,99,45,99,45,91,45,99,45,91,45,99,4,77,99,129,45, + 99,9,77,99,130,45,99,77,99,3,77,91,181,77,99,45,99,78,59,144, + 11,17,4,148,4,244,20,239,67,77,91,78,51,50,4,180,12,54,21,179, + 44,143,67,203,82,203,90,12,91,77,91,175,107,49,116,114,124,114,124,147, + 124,147,124,147,132,147,132,147,124,147,124,179,124,179,124,147,132,179,132,179, + 132,17,116,236,82,101,33,65,8,163,16,138,58,49,108,147,124,179,132,179, + 124,179,132,147,124,179,124,179,124,147,124,179,124,179,132,179,124,179,124,5, + 147,124,129,179,132,3,180,132,131,211,132,180,132,180,132,3,212,132,131,180, + 132,212,132,180,132,6,212,132,135,180,132,212,132,146,132,117,157,77,107,137, + 82,138,82,3,137,82,140,105,82,73,74,105,74,73,74,73,74,72,74,73, + 74,73,74,41,74,40,74,40,74,40,66,4,8,66,137,232,65,8,66,231, + 57,231,65,232,65,231,57,198,57,166,49,166,49,3,134,41,130,101,41,69, + 33,3,37,33,156,195,16,237,74,45,91,13,99,77,99,77,99,78,99,143, + 107,208,123,240,123,207,123,77,99,228,24,152,141,255,239,223,231,158,215,253, + 190,184,149,244,132,86,149,151,157,187,190,188,182,126,215,223,231,255,239,255, + 247,11,255,255,157,255,247,223,247,190,247,158,239,158,239,93,231,93,223,60, + 215,252,214,154,198,25,174,151,149,118,157,212,124,50,116,175,91,176,99,78, + 99,77,99,78,99,45,99,110,107,142,107,110,99,110,107,77,99,45,99,142, + 107,77,99,3,45,91,3,77,99,158,142,107,143,107,143,99,175,107,208,107, + 240,107,240,107,16,108,17,116,49,116,50,116,49,116,82,116,115,124,179,124, + 244,132,21,141,86,141,151,141,151,149,216,149,248,149,57,158,57,166,25,158, + 25,158,90,166,90,166,123,174,155,174,4,220,174,255,252,174,253,182,253,182, + 220,174,188,174,188,174,220,174,221,174,253,182,253,182,221,174,253,182,29,183, + 62,183,30,183,30,191,30,183,29,191,62,191,29,191,253,182,29,191,94,191, + 94,191,62,191,159,199,209,99,0,0,179,132,78,91,52,157,0,0,167,41, + 135,41,134,33,70,33,69,33,0,0,65,8,97,8,65,0,0,0,163,16, + 199,41,232,49,69,33,65,8,65,8,98,8,65,8,33,8,134,41,9,50, + 196,8,227,24,240,123,110,107,207,115,49,132,207,115,236,82,143,99,17,116, + 82,124,179,132,211,132,212,140,244,140,244,140,244,132,20,141,21,141,21,141, + 183,157,215,165,85,149,77,99,171,90,138,74,199,57,231,57,134,49,195,24, + 32,0,166,49,8,66,105,74,110,115,109,107,109,107,78,107,77,107,77,99, + 77,107,77,99,109,107,145,148,85,181,211,156,71,25,229,16,197,16,99,8, + 66,8,98,8,99,8,99,0,67,0,66,0,99,0,131,8,132,8,197,8, + 230,0,198,0,165,0,166,0,165,0,230,0,230,0,197,0,133,0,133,0, + 166,0,134,0,133,0,134,0,137,133,0,134,0,133,0,133,0,134,0,102, + 0,134,0,134,0,166,0,6,134,0,5,133,0,129,165,0,5,133,0,138, + 101,0,133,0,101,0,100,0,132,8,4,33,36,33,37,33,36,33,36,33, + 3,37,33,145,36,33,36,41,37,41,69,41,36,33,195,24,227,32,69,81, + 132,97,73,155,202,122,177,50,79,67,235,99,72,83,166,130,164,105,3,100, + 89,166,35,89,104,98,148,173,148,165,115,157,83,149,51,141,19,117,234,90, + 34,89,100,89,100,97,68,89,67,97,102,89,208,49,18,34,12,66,102,65, + 205,66,210,35,100,81,68,97,68,89,165,89,204,179,105,163,73,163,40,163, + 9,163,8,163,40,163,41,163,41,163,73,163,41,163,41,163,73,163,3,73, + 171,148,106,171,106,171,138,179,170,179,170,179,170,187,203,187,203,187,235,195, + 235,195,11,196,12,196,11,196,12,196,12,196,235,187,76,196,166,162,226,80, + 3,81,193,3,132,12,91,44,99,44,99,12,99,3,44,99,129,12,91,3, + 12,99,129,44,91,5,44,99,129,45,99,3,44,99,136,45,99,44,99,45, + 99,44,91,45,99,45,99,44,99,44,99,6,45,99,140,44,99,44,99,45, + 99,45,99,45,91,45,99,45,99,77,99,77,91,45,91,77,99,45,99,3, + 77,99,140,45,99,77,99,77,91,77,99,77,91,77,99,45,99,77,99,77, + 91,77,99,77,91,77,99,5,77,91,167,77,99,77,83,110,43,176,11,18, + 4,180,4,179,36,16,68,110,67,111,43,17,12,212,4,21,21,114,44,110, + 75,236,90,45,99,208,107,49,116,114,124,114,124,147,124,147,124,146,124,147, + 124,147,132,179,132,179,132,147,124,179,132,179,132,49,124,236,74,102,33,97, + 8,195,16,139,58,208,107,147,132,4,179,132,135,179,124,147,124,147,124,179, + 132,179,124,147,124,179,124,5,147,124,129,179,124,4,179,132,130,211,132,211, + 132,3,180,132,134,212,132,180,132,212,132,211,132,212,132,211,132,6,212,132, + 131,114,124,84,157,235,98,3,105,82,3,105,74,5,73,74,135,72,74,40, + 74,40,74,40,66,40,74,8,66,40,74,4,8,66,132,232,65,231,65,231, + 57,231,57,3,199,57,133,167,49,166,49,134,41,134,41,101,41,4,69,33, + 132,163,16,79,83,175,107,13,99,3,45,99,149,142,107,207,115,175,115,174, + 115,203,90,131,16,216,149,255,239,255,247,223,223,126,199,217,157,17,116,16, + 116,114,124,53,149,119,157,249,165,90,174,155,182,187,190,3,61,207,184,252, + 206,220,206,155,190,122,190,122,182,89,182,248,173,216,165,118,149,151,165,244, + 140,179,140,147,132,49,116,17,116,175,107,208,115,207,107,175,115,175,115,110, + 107,45,99,45,99,78,107,110,99,78,99,78,99,142,107,110,99,175,107,143, + 107,143,107,175,107,175,107,240,115,240,115,82,124,147,124,179,132,20,133,86, + 141,118,149,184,157,184,149,248,149,25,158,25,158,90,166,90,166,58,166,122, + 166,123,174,155,174,188,174,220,174,253,182,4,29,183,138,253,182,253,182,252, + 182,253,182,220,182,220,182,220,174,220,182,220,174,187,174,3,155,174,129,91, + 166,4,123,166,132,123,174,123,166,155,166,155,166,3,155,174,141,155,166,188, + 174,156,166,188,174,220,174,188,174,188,174,220,174,253,182,220,182,253,182,29, + 191,29,191,3,253,182,171,30,191,155,166,5,33,1,0,179,132,45,91,13, + 99,65,8,167,41,102,33,102,33,70,33,69,33,228,24,228,24,65,0,33, + 0,97,8,33,0,33,0,163,16,167,41,200,49,4,25,65,0,65,8,97, + 8,33,0,4,33,228,24,195,16,207,115,142,107,207,115,16,124,240,123,45, + 91,175,107,17,116,114,124,179,132,179,132,212,132,4,244,140,166,20,141,53, + 141,151,157,183,165,244,140,77,99,171,82,170,82,199,57,232,57,166,49,162, + 24,32,0,166,49,8,66,73,74,109,107,110,107,109,107,110,107,110,107,109, + 107,78,107,110,107,110,107,113,148,84,173,20,165,71,25,229,24,196,16,99, + 8,66,8,67,8,99,8,67,8,66,0,99,8,3,132,8,141,164,8,165, + 0,165,0,166,8,166,8,166,0,198,0,166,8,165,8,198,0,166,0,134, + 0,166,8,3,166,0,133,166,8,166,8,134,0,134,0,133,0,7,166,0, + 130,133,8,133,8,3,133,0,166,132,0,133,0,100,0,132,0,100,0,100, + 0,68,0,100,0,68,0,100,0,99,0,67,0,67,8,228,32,36,33,37, + 33,36,33,37,33,37,33,36,33,69,33,37,33,37,33,37,41,37,33,36, + 33,195,24,228,32,101,73,197,105,101,122,102,122,205,163,13,140,111,108,40, + 75,227,113,164,105,3,100,89,154,67,89,198,89,82,165,146,197,80,197,47, + 197,46,197,48,181,43,91,67,89,100,97,68,89,68,89,68,97,68,97,105, + 73,209,41,241,33,174,41,147,42,236,49,67,89,100,105,67,97,67,81,236, + 179,3,138,179,130,170,179,202,187,3,203,187,129,235,195,4,236,195,150,235, + 195,236,187,235,187,203,179,170,179,139,171,106,163,73,155,9,147,232,138,168, + 130,135,122,103,106,6,98,229,89,197,81,133,73,100,65,100,57,162,32,130, + 16,130,16,204,3,3,44,99,152,12,99,44,99,12,99,12,99,44,99,44, + 99,12,99,12,99,44,99,12,99,45,99,44,99,45,99,44,91,44,91,44, + 99,45,99,44,99,45,99,44,99,45,99,44,99,44,99,45,99,4,44,99, + 142,45,99,44,99,45,99,45,91,45,99,44,99,45,99,45,99,45,91,45, + 99,45,99,45,91,77,99,45,91,3,77,99,135,45,91,77,99,45,99,77, + 91,77,99,45,99,45,99,6,77,91,131,77,99,45,91,77,99,4,77,91, + 165,77,99,77,99,77,91,78,51,209,3,50,4,180,4,212,28,114,60,110, + 75,111,35,82,4,212,12,21,21,179,44,175,83,207,115,49,124,114,124,114, + 124,146,124,146,132,147,124,179,132,147,132,179,132,179,132,179,124,179,132,82, + 116,45,91,69,33,97,8,65,8,171,58,209,99,146,124,3,179,132,137,147, + 132,179,124,147,124,147,124,179,124,179,124,147,124,147,124,179,124,4,147,124, + 136,179,132,179,124,179,132,179,132,179,124,179,132,179,132,212,132,4,180,132, + 11,212,132,135,211,140,20,157,203,90,105,82,105,82,105,74,105,74,3,73, + 74,3,40,74,129,40,66,4,40,74,7,8,66,4,231,57,3,199,57,224, + 199,49,166,49,166,49,134,41,101,41,101,33,69,33,37,33,37,33,163,8, + 111,91,110,99,236,90,13,99,13,91,13,91,78,99,143,107,175,115,12,91, + 41,66,5,25,86,141,126,215,252,198,187,182,118,149,142,107,236,90,12,91, + 45,91,78,99,175,107,175,107,240,115,114,132,81,124,82,124,146,132,211,140, + 114,132,147,132,17,124,240,115,208,115,78,99,143,99,110,99,13,91,17,116, + 176,107,114,124,114,124,49,124,240,115,49,124,49,124,114,132,179,124,212,132, + 20,141,151,149,90,166,123,174,187,174,187,166,187,174,220,182,220,182,220,174, + 123,166,155,174,155,174,187,174,220,174,188,174,220,174,220,182,253,182,253,182, + 253,174,253,174,253,182,253,174,253,174,253,182,253,182,220,174,221,174,221,174, + 220,174,221,174,253,182,220,174,188,174,188,182,3,188,174,138,156,174,155,174, + 155,174,155,166,187,174,155,166,123,166,155,166,155,174,155,174,4,123,166,132, + 123,174,123,174,155,174,155,174,3,123,174,129,123,166,3,155,174,154,123,166, + 155,166,123,166,156,166,188,174,188,174,155,174,155,174,187,166,188,174,188,174, + 155,174,188,166,188,174,188,174,155,174,123,166,62,183,176,99,0,0,130,8, + 179,124,236,82,102,41,228,24,199,41,3,135,41,180,102,33,199,41,167,41, + 135,41,98,8,0,0,65,8,65,8,33,0,33,0,102,41,41,58,232,41, + 130,8,0,0,65,8,65,8,98,8,130,8,45,99,143,107,175,115,16,124, + 240,123,45,99,175,107,17,116,82,124,147,132,147,132,180,140,244,140,244,140, + 212,132,212,132,244,140,21,141,150,157,215,165,85,149,109,99,171,82,170,82, + 166,57,231,57,166,49,227,24,32,8,134,49,40,66,73,74,109,107,3,110, + 107,129,142,107,4,110,107,147,48,140,85,173,84,173,102,33,228,16,196,16, + 67,0,66,8,98,8,99,0,98,8,131,8,164,8,197,8,197,16,165,8, + 197,8,230,8,198,16,3,230,8,134,198,8,230,16,230,16,230,8,198,8, + 230,8,3,198,8,136,230,16,230,16,198,8,198,8,166,8,197,8,165,16, + 197,8,3,165,8,3,164,8,135,132,8,132,8,131,0,100,0,100,0,99, + 0,99,0,3,67,0,129,35,0,4,67,0,219,35,0,67,0,227,24,36, + 33,37,33,37,33,36,33,37,33,36,33,69,41,37,33,37,33,37,41,36, + 33,37,33,195,24,195,24,69,73,133,97,228,105,164,146,231,219,46,148,116, + 60,44,91,2,130,164,105,100,97,100,97,100,89,68,97,133,89,208,148,144, + 221,46,213,239,172,204,180,12,229,109,107,100,81,100,97,100,97,100,105,100, + 97,100,105,100,105,104,81,108,65,173,57,106,65,68,97,68,105,99,105,68, + 97,226,80,171,163,236,203,203,195,203,187,170,179,106,171,73,155,9,147,200, + 138,135,122,102,106,38,98,229,81,165,73,100,57,68,57,35,41,3,41,194, + 32,195,24,163,24,162,16,162,24,162,16,162,16,130,16,130,16,162,16,163, + 16,162,16,163,16,195,16,163,24,227,24,4,33,228,32,170,3,140,12,91, + 44,91,12,91,12,91,44,99,12,99,44,99,45,99,44,99,12,91,44,99, + 12,91,12,44,99,148,45,99,44,99,45,99,45,99,44,91,45,99,45,99, + 44,99,44,99,45,99,45,99,45,91,44,91,45,99,77,99,44,99,44,99, + 44,91,77,99,77,99,3,45,99,130,77,99,45,99,3,77,99,130,77,91, + 77,91,4,77,99,133,77,91,77,99,77,91,77,91,77,99,3,77,91,131, + 77,99,77,91,77,91,3,77,99,145,45,99,78,59,143,19,241,3,147,4, + 21,13,146,52,143,51,111,27,50,12,147,12,21,5,212,36,147,92,114,116, + 114,132,146,124,5,147,124,138,147,132,179,132,17,116,236,82,101,33,33,8, + 195,16,171,66,49,116,147,132,3,179,132,138,147,132,179,132,179,124,147,124, + 179,124,179,124,179,132,147,124,147,124,179,124,4,147,124,134,179,132,179,124, + 179,132,179,132,179,124,211,132,3,179,132,147,180,132,179,132,211,124,211,132, + 180,132,180,132,212,132,212,132,211,132,212,132,179,132,211,132,212,132,179,132, + 211,140,211,140,138,82,105,82,105,74,4,73,74,132,40,74,73,74,40,74, + 73,74,3,40,74,192,40,66,40,74,40,74,40,66,8,66,7,66,8,66, + 8,66,231,65,232,65,8,66,7,66,232,65,231,57,231,57,199,57,199,57, + 166,49,166,49,134,41,101,33,102,33,69,33,69,33,37,33,228,16,208,99, + 78,99,171,82,236,90,204,90,204,90,45,99,78,99,78,107,236,90,70,41, + 9,58,212,140,151,165,118,165,81,132,45,99,236,90,203,82,236,90,12,99, + 45,99,77,99,142,107,174,107,207,115,114,124,211,140,244,140,54,149,184,149, + 151,149,151,149,25,166,188,174,95,191,223,207,255,215,4,255,223,147,255,215, + 223,207,191,207,255,207,223,207,191,207,191,207,159,207,159,207,127,199,94,199, + 94,191,62,191,62,191,61,191,62,191,29,191,29,183,62,191,4,29,191,131, + 29,183,29,191,29,183,4,253,182,133,221,182,220,174,188,174,188,174,221,182, + 3,220,174,132,220,182,221,182,221,182,253,182,3,220,174,3,188,174,132,155, + 174,156,174,156,174,155,174,4,155,166,133,123,166,155,174,155,166,155,174,123, + 174,8,155,174,130,123,166,123,166,3,155,166,3,123,166,129,91,166,4,123, + 166,129,123,174,3,123,166,142,91,166,123,166,123,166,155,166,1,8,65,0, + 66,8,211,132,204,74,8,58,134,41,199,41,167,41,167,41,3,135,33,211, + 167,41,135,41,200,49,5,25,65,8,33,8,97,8,97,8,0,0,163,16, + 200,49,74,58,102,33,65,0,33,8,65,8,32,0,170,82,175,115,175,115, + 240,123,16,124,110,107,143,107,17,116,82,124,114,124,114,124,147,132,179,132, + 211,132,180,132,179,132,211,132,212,132,118,157,215,165,85,157,142,107,170,82, + 203,82,166,49,199,49,167,57,227,32,0,0,102,49,40,74,40,74,109,107, + 142,107,142,107,110,107,142,107,110,107,110,107,110,99,110,107,16,132,84,173, + 117,181,135,33,196,16,196,16,99,0,131,8,164,16,196,16,196,16,229,24, + 6,25,38,25,38,25,6,25,6,25,6,17,6,25,6,25,6,17,6,25, + 6,25,38,25,39,25,6,6,25,140,229,24,5,25,229,16,196,16,196,16, + 165,16,197,16,197,16,165,16,197,16,165,16,165,16,4,132,8,134,132,0, + 132,0,100,0,100,0,68,0,99,0,9,67,0,153,195,16,36,33,36,33, + 36,41,36,33,37,33,69,41,37,33,69,33,37,41,69,41,69,41,36,33, + 227,24,195,24,69,65,133,97,197,113,133,146,166,211,170,204,109,172,135,195, + 36,146,132,97,4,100,97,169,68,97,168,98,168,179,8,155,105,74,38,98, + 165,162,164,97,35,81,3,81,3,81,3,73,3,73,227,64,226,64,194,56, + 162,48,130,40,162,48,161,40,161,32,130,24,130,24,98,16,162,16,194,24, + 162,16,98,8,97,8,97,0,65,0,65,0,97,0,98,8,130,8,130,16, + 131,16,163,16,195,24,195,24,227,24,3,228,32,6,4,33,129,228,32,4, + 4,33,133,228,32,4,33,227,32,4,33,4,33,107,3,134,12,99,44,91, + 44,99,12,99,44,99,44,99,4,12,99,6,44,99,129,45,99,6,44,99, + 137,44,91,44,99,45,99,12,99,44,99,44,99,45,91,45,99,45,99,3, + 44,99,10,45,99,129,77,91,4,77,99,138,45,91,77,99,45,91,77,99, + 77,99,77,91,77,99,77,91,77,99,77,91,3,77,99,6,77,91,130,77, + 99,77,91,3,77,99,143,77,91,78,59,143,27,241,3,148,4,244,12,179, + 36,50,36,17,28,17,12,147,12,212,20,244,44,211,84,147,116,3,147,132, + 139,147,124,147,132,179,132,82,124,236,82,102,33,65,8,163,8,139,58,240, + 107,147,132,4,179,132,130,179,124,147,124,3,179,124,9,147,124,129,179,124, + 4,179,132,137,180,132,180,132,179,132,180,132,180,132,211,132,179,132,212,132, + 180,132,4,212,132,161,180,132,179,132,180,132,180,132,179,132,211,140,113,140, + 73,74,105,74,73,74,73,74,72,74,40,74,40,66,40,74,40,66,73,74, + 40,74,41,74,41,74,40,74,40,66,40,74,40,66,40,74,8,66,8,66, + 232,65,232,65,8,66,231,57,231,65,231,65,3,231,57,153,199,57,199,57, + 199,49,167,49,134,41,102,41,101,41,69,33,69,33,4,25,9,50,208,99, + 45,91,13,91,236,90,236,90,204,82,13,91,45,99,12,91,170,74,8,58, + 105,66,45,91,78,99,3,45,99,3,12,91,144,203,82,106,74,203,90,13, + 91,45,99,110,99,114,124,87,141,249,157,123,158,30,183,95,191,127,191,159, + 199,127,199,127,199,3,126,207,129,158,215,3,126,207,140,158,207,158,207,126, + 207,94,199,94,199,94,207,94,199,94,199,126,207,94,207,94,199,94,199,4, + 126,207,154,126,199,126,207,126,207,94,199,126,207,158,207,126,207,126,199,94, + 199,94,191,94,199,94,191,94,199,62,191,30,191,29,191,29,183,61,191,62, + 191,29,191,29,183,29,183,29,191,253,182,29,183,29,183,3,253,182,130,221, + 182,220,182,6,188,174,129,156,174,4,188,174,129,155,174,4,156,174,5,188, + 174,3,123,166,135,156,166,156,174,155,166,155,174,123,174,123,174,123,166,3, + 155,174,129,123,174,3,155,174,140,123,174,123,174,220,174,111,99,0,0,228, + 16,102,33,82,124,171,74,199,49,8,58,199,49,6,167,41,153,135,41,167, + 41,199,41,135,41,195,24,33,8,33,0,65,8,32,0,33,0,37,33,9, + 58,9,50,130,8,33,0,65,8,65,8,138,74,16,124,240,123,16,124,142, + 107,175,107,17,116,82,124,3,114,124,170,115,132,146,124,179,132,212,132,211, + 132,179,132,118,157,215,165,53,149,175,107,171,82,203,82,167,57,199,57,167, + 57,228,32,0,0,101,41,40,66,40,66,109,107,142,107,110,107,110,107,142, + 107,142,107,110,107,142,107,110,107,239,131,85,181,150,181,199,41,165,16,196, + 16,131,8,164,16,229,24,5,25,229,16,6,25,6,25,4,38,25,4,6, + 25,132,38,25,6,25,38,25,38,25,5,6,25,132,5,17,229,24,229,16, + 229,16,5,197,16,131,197,8,197,16,197,16,3,164,8,3,132,8,175,132, + 0,100,0,132,8,100,0,99,8,100,8,99,8,99,8,100,0,99,8,100, + 0,100,8,100,8,100,0,196,16,36,33,37,33,36,33,37,33,37,33,69, + 41,69,33,37,33,69,41,69,41,37,33,37,33,228,32,162,16,36,57,132, + 97,100,97,196,105,197,154,38,204,229,203,132,154,35,81,3,73,3,73,227, + 64,227,64,227,56,194,48,162,40,226,48,162,40,4,130,32,3,162,24,136, + 163,16,130,24,162,16,162,16,195,24,163,24,195,16,195,16,3,195,24,135, + 227,24,228,24,227,24,228,24,228,24,228,32,228,32,13,4,33,134,228,32, + 228,32,4,33,4,33,228,32,228,32,5,4,33,135,228,32,228,32,4,33, + 228,32,4,33,4,33,228,32,151,3,142,12,99,44,99,44,91,44,99,44, + 99,44,91,12,91,44,99,44,99,12,91,44,99,44,91,44,99,45,99,3, + 44,99,213,45,99,44,99,45,99,44,99,12,91,44,91,44,99,44,99,45, + 99,44,99,12,99,45,99,44,91,45,99,44,99,45,99,45,91,45,99,44, + 99,45,99,45,91,44,91,45,99,45,91,45,99,77,99,45,99,45,99,45, + 91,45,91,77,99,45,99,77,99,77,99,45,99,77,99,77,91,77,99,77, + 99,45,91,77,99,77,99,45,91,77,99,45,99,77,99,77,91,77,91,45, + 99,77,99,77,91,77,91,77,99,77,91,77,99,77,91,77,99,77,91,77, + 99,45,99,45,83,78,27,241,3,115,4,244,12,212,28,212,28,115,20,50, + 4,115,12,212,20,245,36,244,76,147,132,115,140,147,132,179,132,114,124,110, + 99,134,33,97,8,65,0,139,58,240,107,146,124,4,179,132,133,147,132,179, + 132,147,124,179,124,179,124,9,147,124,130,179,124,179,124,4,179,132,138,211, + 132,179,132,180,132,180,132,179,132,180,132,180,132,212,132,212,132,180,132,3, + 212,132,144,180,132,179,132,180,132,212,132,146,132,20,149,48,132,40,74,73, + 74,73,74,40,74,73,74,41,74,40,66,8,66,40,74,4,40,66,130,40, + 74,40,74,3,40,66,4,8,66,195,231,57,232,65,232,57,231,57,231,57, + 199,57,231,57,199,57,199,57,199,49,166,49,134,41,102,41,101,33,101,33, + 69,33,228,24,204,74,172,82,171,74,208,99,45,91,236,90,13,91,13,99, + 236,90,138,74,106,74,105,66,138,74,73,66,73,66,138,74,171,82,204,90, + 12,91,236,90,12,91,203,90,106,74,171,82,12,91,77,107,110,107,142,107, + 50,116,245,132,119,133,59,158,221,174,29,183,62,183,62,191,126,199,126,207, + 126,207,158,215,61,191,94,199,126,207,126,207,126,199,94,199,126,199,126,199, + 159,215,126,207,3,158,215,129,191,223,3,158,215,133,190,215,191,223,158,215, + 158,215,191,215,4,191,223,136,158,215,159,215,126,207,126,207,158,207,126,199, + 126,207,126,199,3,94,199,129,126,199,4,94,199,141,94,191,94,191,94,199, + 29,191,61,191,61,191,29,183,253,182,253,182,221,174,220,174,252,182,221,182, + 3,220,182,133,221,182,220,182,188,174,220,174,220,182,6,220,174,137,220,182, + 188,174,156,166,155,166,156,166,188,174,188,174,156,174,188,174,3,156,174,130, + 188,182,220,174,3,188,182,175,220,182,188,182,155,174,123,174,123,166,184,141, + 42,66,102,33,171,58,168,33,49,116,237,82,167,49,232,49,200,49,168,49, + 167,41,167,41,200,49,135,33,135,33,167,41,167,41,135,41,167,41,167,41, + 102,33,163,16,0,0,65,8,33,8,32,0,65,8,196,16,232,49,4,25, + 65,8,65,8,0,0,41,66,178,148,240,123,143,107,175,107,17,116,82,124, + 114,124,5,82,124,149,147,124,179,132,179,132,86,157,248,173,118,157,240,115, + 170,82,235,90,167,49,166,49,199,57,228,32,0,0,69,41,41,74,40,66, + 109,107,142,107,142,107,110,107,5,142,107,151,207,123,84,173,150,189,233,49, + 164,8,197,16,164,8,196,16,229,24,6,25,5,25,6,25,5,25,6,25, + 5,25,229,24,5,25,6,25,5,25,5,25,6,25,6,25,38,25,9,6, + 25,131,230,24,229,16,229,16,4,197,16,3,197,8,138,197,16,165,16,165, + 16,165,8,165,8,164,16,164,8,164,8,164,16,164,8,3,164,16,129,164, + 8,4,164,16,156,165,16,164,16,196,16,4,33,37,41,37,33,37,33,37, + 41,37,41,69,33,69,33,36,33,37,33,36,33,37,33,36,33,162,16,162, + 24,194,40,162,32,162,32,194,32,226,32,194,32,162,24,130,16,162,24,162, + 24,3,163,24,136,195,24,163,24,163,16,196,24,228,24,228,24,228,32,228, + 24,3,4,33,129,228,32,20,4,33,129,228,32,4,4,33,129,228,32,7, + 4,33,129,228,32,4,4,33,129,228,32,3,4,33,134,228,32,4,33,228, + 32,4,33,228,32,228,32,81,3,143,44,99,12,99,44,99,12,99,44,91, + 44,99,12,99,12,99,44,99,13,99,45,99,44,99,12,99,44,99,45,99, + 6,44,99,132,45,99,13,99,44,99,45,91,4,44,99,132,45,99,44,99, + 45,99,44,91,3,45,99,130,44,99,45,91,4,45,99,136,44,99,77,99, + 77,99,45,99,45,99,77,99,45,99,77,91,7,77,99,137,45,99,77,99, + 77,91,77,99,77,99,77,91,77,91,77,99,77,99,3,77,91,6,77,99, + 162,45,91,77,91,77,99,203,82,171,82,204,74,111,27,241,11,82,4,212, + 12,244,28,114,12,50,12,115,12,179,12,21,21,244,52,211,100,82,124,12, + 91,134,41,32,0,130,8,106,50,17,108,147,124,179,132,147,132,179,132,179, + 132,147,124,179,124,147,124,179,124,10,147,124,129,179,124,3,179,132,134,180, + 124,179,124,179,132,180,132,180,132,179,124,3,180,132,166,179,132,212,132,180, + 132,180,132,212,132,211,132,179,132,179,132,211,132,212,132,212,132,146,132,20, + 149,174,115,40,74,105,74,73,74,41,74,8,66,40,74,40,66,40,66,40, + 74,40,66,40,74,40,66,40,66,8,66,40,66,8,66,40,74,40,66,8, + 66,8,66,232,65,231,57,8,66,231,65,6,231,57,188,199,57,199,57,166, + 49,166,49,134,41,102,41,102,41,37,33,199,41,203,82,73,66,138,74,204, + 82,208,107,45,91,12,91,236,90,236,90,139,82,106,74,74,66,138,74,171, + 74,74,66,171,82,203,82,204,82,236,90,12,91,13,91,12,91,171,82,106, + 74,236,90,45,99,77,99,110,99,240,115,114,124,21,133,151,141,26,150,156, + 166,253,174,62,191,94,199,126,207,126,207,94,199,94,199,126,207,159,215,94, + 199,158,207,158,207,126,207,159,215,158,215,94,207,223,223,4,191,223,138,158, + 207,159,215,191,223,191,215,191,223,191,223,223,231,191,223,223,231,223,223,4, + 191,223,131,223,223,191,215,159,215,3,126,207,130,126,199,126,207,3,126,199, + 3,94,199,143,94,191,94,199,94,199,62,199,62,199,62,191,61,191,253,182, + 30,191,94,199,29,191,29,191,253,182,253,182,29,191,8,253,182,145,221,174, + 220,174,220,174,188,174,220,174,188,174,188,174,221,182,253,182,253,190,253,182, + 220,182,220,182,188,174,188,174,220,182,220,182,3,188,182,140,155,182,123,174, + 155,174,123,166,123,166,241,107,9,50,139,58,139,58,74,50,208,107,236,74, + 3,200,49,148,167,41,200,49,168,41,168,41,135,41,135,41,167,41,167,41, + 135,41,103,33,167,41,135,41,200,49,102,33,130,16,65,8,33,8,33,0, + 0,0,0,0,3,65,8,161,98,8,0,0,232,65,81,140,175,115,175,107, + 16,116,49,124,50,124,114,124,82,124,82,116,81,116,82,124,50,116,147,124, + 147,124,85,149,248,173,85,157,240,115,171,82,236,90,199,57,170,82,232,65, + 4,33,32,0,36,33,41,74,8,66,77,107,142,115,7,142,107,138,206,123, + 84,173,182,189,74,66,132,8,197,16,196,16,196,16,230,24,38,25,3,6, + 25,130,229,24,6,25,3,229,24,132,6,17,230,24,230,16,197,16,6,230, + 16,132,229,16,197,24,229,16,229,16,4,197,16,137,165,16,196,8,196,16, + 196,16,196,8,164,16,164,8,165,16,197,16,3,165,8,130,164,8,165,8, + 3,164,8,130,165,8,133,8,7,132,8,146,163,8,4,33,37,33,36,33, + 37,33,36,33,37,33,69,41,37,33,36,33,37,33,37,33,36,33,69,41, + 36,33,228,32,228,24,228,24,4,4,33,4,36,33,129,36,41,7,36,33, + 5,4,33,129,36,33,33,4,33,136,228,32,228,32,4,33,228,32,228,32, + 4,33,228,32,228,32,5,228,24,131,227,24,228,24,195,24,85,3,3,44, + 99,132,12,99,44,99,12,99,44,99,3,12,99,135,44,99,12,99,45,99, + 44,99,12,99,44,99,45,99,3,44,99,147,12,99,45,99,45,99,44,99, + 45,99,45,99,44,99,44,99,45,99,45,99,44,99,44,99,77,99,45,99, + 45,99,77,99,45,91,45,99,44,91,4,45,99,134,77,99,44,99,45,99, + 77,99,77,99,45,99,10,77,99,134,77,91,77,99,77,99,45,91,77,99, + 77,99,4,77,91,133,77,99,77,91,77,91,77,99,77,99,3,77,91,159, + 45,91,204,82,203,82,236,90,12,99,78,91,176,75,241,43,17,20,82,4, + 147,12,115,12,82,12,82,12,147,12,245,20,212,36,240,43,135,9,0,0, + 233,49,208,99,147,124,179,132,179,124,147,132,179,132,147,124,179,124,147,124, + 179,124,11,147,124,129,179,124,5,179,132,132,179,124,179,124,179,132,179,132, + 3,180,132,147,179,132,212,132,180,132,212,132,180,132,180,132,179,132,179,124, + 180,132,180,132,212,132,146,132,85,157,77,107,8,66,73,74,73,74,40,74, + 40,74,5,40,66,133,8,66,40,66,40,66,40,74,40,74,3,8,66,130, + 40,66,8,66,10,231,57,156,199,57,199,49,167,49,134,49,134,41,102,41, + 101,41,69,33,175,107,81,132,73,66,105,74,73,66,45,83,143,99,13,91, + 236,82,204,82,171,82,106,74,73,66,41,66,106,66,73,66,106,74,171,82, + 236,90,236,82,3,12,91,149,204,90,138,74,138,74,45,91,45,99,110,99, + 175,107,17,116,147,124,22,133,152,141,59,158,221,174,29,183,61,191,94,199, + 94,199,126,199,126,207,159,207,126,207,3,159,215,129,191,215,4,191,223,129, + 159,215,3,191,223,132,223,223,191,223,191,223,223,223,7,223,231,3,191,223, + 144,191,215,191,223,191,215,158,215,126,207,158,207,126,207,126,199,94,199,94, + 199,126,199,158,207,126,207,126,199,94,199,126,199,3,94,191,139,61,191,29, + 191,30,191,62,199,62,191,62,191,62,199,61,191,29,191,29,191,29,183,4, + 29,191,132,62,191,29,191,29,191,29,183,3,253,182,139,29,183,29,191,61, + 191,29,191,61,199,29,191,29,191,253,182,253,190,220,182,156,174,5,188,182, + 140,155,174,155,174,123,166,123,166,249,149,139,66,74,58,41,42,74,50,42, + 50,240,107,236,82,3,200,49,130,200,41,200,41,3,167,41,201,135,41,134, + 41,167,41,135,41,135,33,167,41,135,41,103,41,167,41,232,49,135,41,228, + 24,98,16,0,0,33,0,65,8,33,0,65,8,65,8,97,8,0,0,134, + 49,16,124,208,115,240,115,16,116,49,124,49,124,50,124,81,124,82,124,82, + 124,82,116,114,124,147,124,53,149,215,165,85,157,49,124,171,82,236,90,199, + 57,203,98,8,66,4,33,33,0,4,33,41,74,8,66,77,107,175,115,142, + 115,142,107,142,107,175,107,142,107,174,107,175,107,174,115,84,181,182,189,171, + 74,100,0,197,16,197,16,196,16,197,16,230,24,229,16,197,16,197,16,229, + 16,229,16,4,197,16,130,197,8,165,16,7,165,8,132,132,8,132,8,164, + 8,164,16,4,164,8,129,132,8,3,131,8,133,132,8,164,8,132,8,132, + 8,165,8,4,133,8,3,132,8,9,100,0,131,68,0,132,8,4,33,4, + 36,33,132,37,33,37,33,69,33,69,33,3,36,33,136,69,41,36,33,69, + 41,69,41,37,41,37,41,36,33,37,33,9,36,33,139,4,33,36,33,4, + 33,36,33,4,33,4,33,36,33,4,33,4,33,36,33,36,33,21,4,33, + 132,228,32,4,33,4,33,228,32,4,228,24,135,196,16,228,24,228,24,196, + 24,228,24,227,24,227,24,3,4,33,137,36,41,68,49,68,49,100,65,132, + 65,132,73,197,81,229,89,229,97,146,3,132,44,99,12,99,44,99,12,99, + 4,44,99,165,12,91,44,99,44,99,12,99,44,99,44,99,12,99,44,99, + 12,99,44,99,44,91,44,99,12,91,45,99,44,99,12,99,12,99,44,99, + 45,99,45,91,45,99,45,91,45,99,44,91,44,99,44,99,45,99,45,99, + 77,99,45,99,45,99,45,91,45,91,77,91,76,91,45,99,77,99,3,45, + 99,135,45,91,77,99,77,99,45,99,77,99,77,99,77,91,8,77,99,3, + 77,91,135,77,99,77,99,77,91,77,99,77,91,77,91,77,99,4,77,91, + 161,45,91,203,82,203,82,13,91,45,91,142,107,16,116,82,124,82,116,82, + 100,17,60,241,19,17,4,115,4,82,4,18,4,147,12,21,21,21,29,82, + 36,241,83,82,132,147,140,179,132,147,132,147,124,179,124,147,124,147,124,179, + 124,179,124,147,124,147,132,6,147,124,137,179,124,147,124,179,124,179,132,179, + 132,179,124,179,132,179,124,180,132,4,179,132,137,211,132,180,132,179,132,180, + 132,180,132,212,132,180,132,212,132,211,132,3,179,132,137,180,132,179,132,179, + 132,52,149,235,98,232,65,41,74,40,74,40,74,6,40,66,4,8,66,131, + 40,74,8,66,40,66,3,8,66,131,232,57,231,57,232,65,4,231,57,5, + 199,57,135,166,49,166,49,134,41,102,41,37,33,41,66,105,74,3,73,74, + 136,73,66,138,66,110,91,45,91,236,90,203,82,138,74,106,74,3,73,66, + 166,106,74,106,74,171,82,236,90,12,91,236,90,236,90,12,99,236,90,203, + 90,138,74,236,90,77,99,77,99,110,99,208,107,17,116,180,132,54,141,184, + 149,123,166,188,174,29,183,62,183,94,191,29,191,126,199,126,207,159,215,191, + 215,159,215,159,215,191,215,191,215,191,223,191,215,191,223,191,223,3,223,223, + 3,223,231,133,191,231,223,231,223,231,223,239,223,239,4,223,231,148,191,223, + 191,223,191,215,191,223,191,215,159,215,159,215,158,207,158,215,159,207,126,207, + 126,207,126,199,94,199,94,199,94,191,94,199,94,199,62,199,126,199,4,94, + 199,130,62,199,62,191,4,94,199,171,61,191,62,191,62,191,29,191,30,191, + 61,183,29,183,253,174,253,182,62,191,29,183,253,182,29,191,62,191,61,199, + 62,191,29,191,61,199,29,191,29,191,253,190,220,182,253,182,220,182,188,182, + 188,182,188,174,123,174,188,174,155,174,155,174,123,174,188,174,50,108,168,41, + 74,50,232,33,9,42,200,33,240,107,13,83,200,49,232,49,3,200,49,160, + 167,41,200,49,167,41,135,41,135,41,167,41,135,41,135,41,103,41,135,33, + 135,41,168,41,200,41,200,49,232,49,73,58,9,58,98,16,0,0,0,0, + 33,8,33,8,65,8,66,8,0,0,4,33,179,140,49,124,241,115,17,116, + 50,124,81,124,4,82,124,150,114,124,114,124,53,149,215,165,85,149,49,124, + 171,82,236,90,199,57,235,98,8,66,4,33,32,0,228,32,73,74,232,65, + 77,107,142,115,142,115,142,107,175,115,142,107,3,175,115,138,142,115,84,173, + 150,189,13,91,35,0,165,8,164,8,132,8,165,8,133,8,4,165,8,129, + 197,8,7,165,8,3,198,8,136,199,8,198,8,198,8,164,16,132,8,164, + 8,131,16,196,16,3,197,16,138,164,8,163,16,131,8,131,8,164,16,164, + 16,165,16,165,8,165,8,165,16,4,165,8,130,132,8,133,8,3,101,0, + 3,100,0,141,68,0,100,0,100,0,68,0,100,8,228,24,36,33,36,33, + 37,33,36,33,37,33,69,41,69,33,3,37,33,135,37,41,37,41,37,33, + 37,33,36,33,36,33,37,33,3,36,33,130,5,33,4,33,3,36,33,129, + 37,33,5,36,33,132,4,33,4,33,36,33,36,33,4,4,33,129,36,33, + 3,4,33,129,36,33,15,4,33,153,228,32,228,24,3,33,35,41,35,41, + 68,49,68,49,100,65,132,73,196,81,197,97,4,106,37,106,69,114,101,122, + 133,130,166,138,166,146,198,154,198,154,230,154,230,162,6,163,38,171,6,171, + 3,39,171,136,3,157,12,99,44,99,12,91,12,99,12,91,45,99,12,91, + 44,99,12,99,45,99,12,99,44,99,44,99,12,91,44,99,45,99,45,91, + 44,99,44,91,45,99,12,91,45,99,45,99,44,91,44,99,45,99,44,91, + 45,99,44,99,3,45,99,132,45,91,44,91,45,99,45,91,5,45,99,133, + 45,91,77,99,77,99,45,99,45,99,7,77,99,132,45,99,77,99,77,91, + 77,91,3,77,99,169,77,91,77,91,77,99,45,91,77,91,77,99,77,91, + 77,91,77,99,77,99,77,91,77,99,45,91,77,91,77,91,45,99,77,91, + 12,83,203,82,204,90,12,91,45,99,143,107,17,116,82,124,114,124,146,132, + 147,140,179,140,114,124,241,83,208,35,17,12,50,4,50,4,82,12,180,12, + 21,21,21,29,212,76,179,116,3,147,132,130,147,124,179,124,12,147,124,130, + 179,132,179,124,4,179,132,130,180,132,179,124,4,179,132,4,180,132,130,179, + 132,180,132,5,179,132,134,212,132,179,132,114,132,52,157,105,82,40,66,3, + 40,74,4,40,66,129,8,66,3,40,66,140,8,66,40,66,40,74,8,66, + 40,66,40,74,8,66,231,57,232,57,231,57,199,57,231,57,5,199,57,3, + 199,49,154,167,49,134,49,134,49,134,41,105,74,138,74,73,66,73,74,138, + 74,105,74,41,66,73,74,138,74,78,91,204,82,45,99,171,82,105,74,73, + 66,106,74,138,74,106,74,171,74,171,74,203,82,236,90,5,12,91,156,236, + 90,139,82,236,90,45,99,110,99,142,99,143,107,50,116,180,132,54,133,184, + 149,58,158,124,158,253,182,29,183,94,191,94,199,94,199,159,207,126,199,159, + 207,191,215,158,215,191,215,191,223,223,223,223,231,255,231,4,223,231,129,255, + 239,5,223,231,129,255,239,4,223,231,131,191,223,191,223,223,231,5,191,223, + 136,191,215,191,223,159,215,159,207,126,207,94,199,94,199,126,199,3,158,207, + 129,159,207,3,126,207,133,94,199,126,199,94,199,126,207,62,191,3,94,199, + 140,62,199,30,191,29,183,29,183,221,174,253,182,62,191,62,191,94,207,126, + 207,94,207,126,207,3,94,207,4,29,191,135,253,190,221,182,221,182,220,174, + 188,182,156,174,155,174,5,123,174,148,155,166,163,24,37,17,70,25,33,0, + 163,8,66,0,142,99,12,83,200,49,232,49,232,49,200,49,232,49,199,41, + 168,41,135,41,167,41,135,41,167,41,4,135,41,152,135,33,135,41,167,41, + 200,41,200,41,102,33,204,74,41,50,106,66,200,57,163,16,65,8,0,0, + 33,8,97,8,0,0,163,24,207,115,114,132,82,124,17,116,49,116,114,124, + 114,124,4,82,124,159,20,149,248,165,85,157,114,124,171,90,12,91,199,57, + 236,98,105,74,4,33,65,8,195,24,73,74,232,65,44,99,175,115,175,115, + 174,115,174,115,175,115,175,115,207,115,239,115,142,115,52,173,149,181,175,107, + 166,8,40,25,40,25,39,25,3,72,25,139,104,25,72,25,73,25,72,33, + 104,33,105,33,137,33,169,41,170,33,137,33,137,41,4,235,41,150,202,41, + 169,41,136,33,71,33,5,25,38,33,103,41,135,41,135,41,38,33,5,25, + 228,24,196,24,196,16,197,16,229,24,229,16,229,16,230,16,230,16,197,16, + 197,16,3,165,8,160,132,8,133,0,101,0,100,0,101,0,100,0,68,0, + 100,0,100,0,68,0,68,0,100,0,228,24,37,33,36,33,37,33,37,33, + 69,33,37,33,69,33,69,33,37,33,69,41,36,33,37,33,36,41,36,33, + 36,33,37,41,37,41,37,33,37,33,3,36,33,134,37,33,36,33,4,33, + 36,33,4,33,4,33,3,36,33,4,4,33,135,36,33,4,33,4,33,36, + 33,4,33,4,33,36,33,5,4,33,129,36,33,10,4,33,135,228,24,70, + 98,6,171,6,163,6,171,38,179,70,179,3,71,179,129,71,187,3,71,179, + 132,38,179,39,179,38,171,38,171,4,39,171,135,39,179,6,171,7,171,39, + 179,7,171,39,171,39,171,87,3,4,44,99,137,12,91,12,99,12,91,44, + 99,45,99,12,91,12,99,44,99,45,99,3,44,99,130,44,91,44,91,3, + 44,99,4,45,99,139,44,99,45,99,45,99,44,99,45,99,45,99,44,99, + 45,91,45,91,45,99,45,91,5,45,99,130,45,91,45,91,3,45,99,135, + 77,99,45,99,45,99,77,99,77,99,77,91,77,91,3,77,99,129,45,99, + 4,77,99,130,77,91,77,91,4,77,99,130,77,91,45,99,3,77,99,3, + 77,91,139,77,99,77,91,236,90,203,82,236,90,236,90,45,99,175,107,49, + 116,114,124,114,124,3,146,124,145,179,132,82,132,236,90,69,25,167,1,237, + 10,208,19,241,3,17,4,83,4,244,12,245,28,245,52,212,84,179,116,147, + 132,147,132,11,147,124,3,179,132,129,179,124,7,179,132,132,180,132,179,132, + 180,132,180,132,5,179,132,129,180,132,3,179,132,136,212,132,179,132,179,140, + 19,157,8,66,40,66,40,74,40,74,9,40,66,138,8,66,40,66,8,66, + 8,66,40,66,8,66,8,66,231,65,231,57,231,57,7,199,57,130,199,49, + 167,49,3,166,49,144,102,49,73,66,105,74,138,74,138,74,171,82,138,74, + 74,74,105,74,73,74,73,66,171,74,12,83,171,74,138,82,138,74,3,106, + 74,133,138,74,171,74,203,82,204,90,204,90,3,12,91,152,13,91,45,99, + 13,91,204,90,203,82,12,91,45,99,109,99,143,99,240,107,82,124,212,132, + 86,141,217,149,91,158,189,174,29,183,62,191,94,191,126,199,94,191,158,207, + 159,207,191,215,5,191,223,132,223,231,223,223,223,231,191,223,7,223,231,133, + 255,239,223,239,255,231,223,231,223,223,4,191,223,134,191,231,223,231,223,231, + 223,223,223,223,191,223,4,159,215,133,126,207,159,215,159,215,158,207,158,215, + 6,126,207,134,126,199,126,207,126,199,94,199,94,199,62,199,3,62,191,132, + 62,199,62,191,62,199,126,207,4,94,207,157,126,215,94,207,94,199,61,199, + 61,199,61,191,29,191,253,190,253,190,253,182,220,182,188,174,188,174,156,174, + 155,174,123,174,155,174,123,174,91,174,187,174,147,124,0,0,65,0,33,0, + 65,8,65,0,0,0,16,116,236,82,3,232,49,187,200,49,9,50,200,41, + 135,41,167,41,167,41,135,41,167,41,135,41,167,41,135,41,135,41,135,33, + 135,33,167,41,168,41,168,41,229,24,204,82,200,41,41,58,172,74,45,99, + 203,82,232,57,98,8,0,0,97,8,33,0,0,0,167,49,175,107,147,132, + 17,116,49,116,82,124,49,116,49,116,82,124,82,124,244,140,248,173,118,157, + 146,132,203,90,12,99,231,57,12,99,105,74,4,33,65,8,163,24,73,74, + 8,66,12,99,175,115,174,115,174,115,175,115,3,207,115,151,240,115,142,115, + 52,173,117,181,49,124,105,25,202,41,202,41,235,49,235,49,235,41,235,49, + 235,41,203,41,202,41,170,33,170,41,203,41,11,50,12,50,11,42,202,41, + 202,41,3,76,58,157,76,50,43,58,11,50,202,41,137,41,103,33,71,33, + 135,41,135,41,103,41,37,25,228,24,228,24,228,16,196,16,229,16,6,25, + 230,16,229,16,197,16,197,16,197,8,165,8,165,8,132,8,132,0,133,8, + 132,0,133,0,3,100,0,130,99,0,67,0,4,68,0,133,196,16,36,33, + 37,33,37,33,36,33,3,37,33,136,69,33,69,33,37,33,37,33,69,33, + 36,33,37,33,69,33,15,36,33,130,4,33,36,33,3,4,33,129,36,33, + 3,4,33,129,36,33,18,4,33,131,228,24,197,73,103,187,5,39,171,149, + 7,171,7,171,39,171,6,171,38,171,38,171,6,171,7,171,6,171,39,171, + 38,171,39,179,166,146,199,154,197,154,197,146,6,163,165,146,38,171,68,130, + 36,122,163,3,133,105,74,235,90,44,99,45,99,45,99,3,44,99,135,12, + 91,44,91,44,99,12,91,44,99,44,99,13,91,4,44,99,138,45,99,44, + 91,44,99,44,91,45,99,44,99,44,99,12,99,45,91,44,91,4,45,99, + 129,45,91,3,45,99,130,77,99,77,99,4,45,91,135,45,99,77,99,45, + 99,77,99,77,99,45,99,45,99,5,77,99,135,77,91,77,91,77,99,77, + 99,45,91,77,99,77,91,3,77,99,3,77,91,6,77,99,166,77,91,77, + 91,45,91,236,82,203,82,236,90,12,91,78,99,208,107,49,116,114,116,114, + 124,114,124,146,124,147,124,147,132,109,99,199,41,65,8,33,8,106,50,240, + 99,115,108,50,76,176,35,176,3,18,4,147,4,244,20,21,37,21,53,212, + 100,147,132,147,140,146,132,147,132,147,124,146,124,4,147,124,10,179,132,138, + 180,132,179,132,212,132,179,132,180,124,179,132,179,132,212,132,179,132,179,124, + 4,179,132,138,180,132,212,132,179,132,179,132,210,148,231,65,40,74,40,66, + 40,66,40,74,5,40,66,129,8,74,3,40,66,158,8,66,40,66,40,66, + 8,66,40,66,8,66,231,57,231,57,232,57,199,57,199,57,231,57,199,57, + 199,57,167,49,167,49,199,57,167,49,166,49,166,49,69,41,106,74,106,74, + 138,74,171,82,138,74,138,74,105,74,73,66,41,66,3,73,66,143,204,82, + 171,74,138,74,106,74,73,66,106,74,106,74,138,74,138,74,203,82,204,82, + 236,90,12,91,12,91,13,99,3,45,99,149,12,91,204,82,171,82,45,99, + 77,99,110,99,208,107,17,116,147,124,245,132,119,141,249,149,123,158,189,166, + 253,182,62,183,94,191,126,199,158,207,158,207,191,215,3,191,223,135,223,223, + 223,223,191,223,223,223,223,231,223,231,223,223,3,223,231,139,223,223,191,223, + 223,231,223,223,223,231,223,231,223,223,191,223,223,231,223,231,223,223,3,223, + 231,155,223,223,223,231,223,223,191,223,159,215,191,215,159,215,191,215,191,223, + 191,215,191,215,158,215,191,215,159,215,159,215,159,207,158,215,158,215,158,207, + 158,207,159,207,158,207,126,207,126,207,126,199,126,199,94,199,3,126,207,131, + 94,199,94,199,62,199,5,126,207,148,62,207,94,199,94,207,62,199,29,199, + 253,190,252,182,253,182,221,182,188,182,156,174,123,166,124,174,155,174,156,182, + 155,182,156,182,155,174,200,49,0,0,3,98,8,132,130,8,1,0,113,132, + 236,82,5,232,49,129,200,49,5,167,41,190,135,41,167,41,135,41,135,41, + 135,33,135,41,200,41,167,41,200,41,196,8,171,74,167,41,233,57,107,66, + 236,90,109,107,175,115,175,115,138,74,0,0,65,8,65,8,0,0,65,8, + 166,49,82,124,147,132,49,116,50,116,50,116,50,124,82,124,212,140,248,173, + 86,157,113,132,203,90,13,99,231,57,12,91,106,74,36,41,65,8,162,16, + 73,74,232,65,12,99,175,115,175,115,174,115,175,115,175,115,207,115,240,115, + 16,124,174,115,19,173,117,181,114,140,138,25,235,41,235,41,3,11,50,163, + 235,41,235,41,202,41,202,41,170,33,137,25,170,33,235,41,203,41,105,25, + 72,25,104,33,169,33,202,33,235,41,11,42,43,50,11,42,170,41,169,41, + 104,33,71,25,71,33,39,33,38,25,5,25,229,24,229,16,196,16,229,16, + 6,25,6,17,198,8,198,16,197,16,3,165,8,132,132,8,164,8,132,8, + 132,8,5,100,0,5,68,0,151,67,0,195,16,37,33,37,41,36,33,37, + 33,37,33,36,33,69,41,69,33,37,33,37,33,69,33,37,33,37,33,69, + 41,37,33,36,41,36,33,36,33,36,41,36,33,36,41,4,36,33,132,36, + 41,36,33,36,33,4,33,5,36,33,130,4,33,36,33,3,4,33,129,36, + 33,3,4,33,131,36,33,4,33,36,33,4,4,33,129,36,33,7,4,33, + 134,228,24,36,33,103,179,39,171,39,171,7,171,5,39,171,146,71,171,165, + 154,101,122,230,162,68,130,228,113,68,114,4,106,36,138,4,106,227,105,4, + 106,99,81,4,114,131,73,36,106,228,97,134,146,178,3,136,69,33,102,41, + 8,58,138,74,236,90,44,99,44,99,45,99,3,44,99,129,12,99,3,44, + 99,137,12,99,12,99,44,91,44,99,45,99,44,99,44,99,44,91,44,91, + 3,44,99,156,45,99,45,91,44,91,45,91,45,91,44,91,45,91,44,91, + 45,91,45,99,45,99,77,99,45,91,45,99,44,99,45,99,77,99,45,99, + 45,99,77,91,45,91,77,99,77,91,77,99,45,99,77,99,77,91,45,99, + 3,77,99,130,77,91,45,99,3,77,99,133,77,91,77,91,77,99,45,91, + 77,99,6,77,91,138,77,99,77,99,45,91,203,82,203,82,236,90,13,91, + 110,99,240,107,49,116,3,114,124,164,146,124,146,124,240,107,232,49,98,8, + 33,0,106,50,241,107,147,132,179,132,179,140,212,140,179,132,50,100,208,59, + 240,19,50,12,115,12,212,4,21,13,21,37,244,84,179,108,147,124,147,124, + 147,132,146,132,147,124,179,124,179,132,179,124,179,132,179,124,179,132,179,132, + 179,124,4,179,132,147,180,132,211,132,180,132,180,124,180,124,179,124,179,132, + 180,132,179,124,179,132,179,132,180,132,179,132,179,132,212,132,146,132,20,149, + 48,132,199,57,5,40,66,130,8,66,8,66,5,40,66,129,8,66,3,40, + 66,135,40,74,40,66,8,66,231,65,231,57,231,57,199,49,3,199,57,140, + 199,49,199,57,167,49,198,49,167,49,134,49,134,41,138,74,203,82,170,82, + 138,74,73,66,3,106,74,136,138,74,106,74,105,66,73,74,106,74,138,74, + 203,82,138,74,4,106,74,131,138,74,138,74,203,82,3,236,90,129,12,91, + 3,13,91,153,12,91,45,99,13,91,236,90,204,82,77,99,78,99,143,99, + 208,107,49,116,180,124,54,133,152,141,58,158,188,174,221,174,30,183,94,191, + 126,199,158,207,159,215,126,207,159,215,223,231,191,223,10,223,231,139,223,223, + 191,223,223,223,191,223,223,223,223,231,223,223,223,223,223,231,223,223,223,223, + 6,223,231,4,191,223,131,223,223,223,231,223,223,3,191,223,148,223,231,191, + 223,191,223,191,215,191,223,191,223,159,215,159,215,158,215,158,207,158,207,126, + 207,159,215,126,207,126,207,158,207,126,207,126,207,94,199,94,199,5,126,207, + 148,126,199,158,207,126,207,126,199,94,199,94,199,61,199,29,191,29,191,220, + 182,187,182,187,182,154,174,89,174,89,166,24,166,247,157,146,124,196,16,195, + 8,4,228,16,133,196,8,49,116,236,82,232,49,232,57,3,232,49,182,200, + 49,167,41,168,41,167,41,135,41,167,41,135,33,135,41,135,33,135,41,135, + 41,103,41,167,41,200,41,168,41,164,8,232,49,200,49,69,41,74,66,236, + 90,45,99,110,107,175,115,49,132,17,116,33,0,32,0,97,8,65,8,0, + 0,0,0,138,74,49,124,115,124,50,116,81,116,82,124,212,140,215,165,85, + 157,113,124,236,90,13,99,232,57,12,99,170,82,36,41,97,8,98,16,73, + 74,8,66,235,90,207,115,4,175,115,185,207,115,16,124,49,132,239,123,243, + 164,117,181,211,148,40,17,170,41,202,41,235,41,235,41,234,41,12,50,11, + 42,202,33,138,33,169,33,137,33,170,33,202,41,170,33,40,17,7,17,230, + 16,197,8,7,17,105,33,11,50,11,50,234,41,202,41,169,41,169,33,72, + 25,72,25,39,25,7,25,39,25,7,17,6,25,7,25,39,25,39,25,231, + 16,198,16,230,16,230,16,198,16,197,16,197,16,165,8,133,8,165,8,132, + 8,132,0,132,0,3,100,0,153,100,8,100,0,100,0,68,0,68,0,67, + 0,163,16,37,33,36,33,36,33,37,33,37,33,69,41,37,41,69,41,69, + 33,69,33,37,33,69,33,37,33,36,41,37,33,37,33,37,41,37,41,6, + 36,33,134,4,33,36,33,36,33,4,33,4,33,36,33,3,4,33,139,36, + 33,36,33,4,33,4,33,36,33,4,33,4,33,36,33,4,33,36,33,36, + 33,4,4,33,129,36,33,10,4,33,131,195,16,7,155,71,179,6,39,171, + 147,7,171,39,179,196,113,2,49,36,114,196,97,35,65,2,49,3,49,164, + 81,36,106,4,122,133,122,99,89,5,98,164,89,4,98,36,114,227,97,110, + 3,136,102,33,70,25,69,33,134,33,232,49,41,66,203,82,12,91,4,44, + 99,130,12,99,44,99,3,12,99,134,44,99,44,99,44,91,44,99,12,91, + 44,91,3,45,99,129,44,99,5,45,99,129,44,91,10,45,99,134,77,99, + 45,99,45,91,77,91,77,99,45,91,10,77,99,129,45,99,3,77,99,129, + 45,99,4,77,99,156,77,91,77,99,77,99,77,91,77,91,77,99,77,99, + 45,91,12,83,203,82,203,82,236,90,13,91,143,99,240,107,81,116,82,124, + 114,124,114,124,147,132,49,116,236,82,195,16,33,0,69,25,176,99,82,124, + 179,132,3,147,124,147,147,132,179,132,180,140,147,132,82,100,50,76,50,44, + 50,20,114,4,180,4,245,12,21,37,244,68,212,84,211,108,147,124,147,132, + 147,140,179,140,3,179,132,134,179,124,179,132,179,124,179,124,147,124,147,124, + 4,179,132,129,179,124,3,179,132,142,179,124,179,124,179,132,179,132,211,132, + 211,132,179,132,114,124,53,157,109,115,231,57,40,66,40,66,40,74,11,40, + 66,131,8,66,40,66,40,66,3,8,66,130,231,57,231,57,3,199,57,136, + 199,49,167,49,166,49,166,49,198,49,134,49,166,49,105,74,7,138,74,137, + 171,82,138,74,106,74,138,74,138,74,106,74,106,74,138,74,138,74,4,106, + 74,163,138,74,171,74,203,82,236,82,236,90,12,91,13,91,12,91,13,99, + 13,91,45,91,13,99,45,99,12,91,236,90,45,91,78,99,110,99,240,107, + 17,116,114,124,21,133,54,141,249,149,91,158,156,166,253,174,62,183,94,191, + 94,199,126,207,159,207,191,215,191,223,223,223,3,223,231,135,223,223,191,223, + 223,223,223,223,223,231,223,231,223,223,7,191,223,132,223,231,223,223,223,231, + 255,231,6,223,231,130,223,223,191,223,3,223,223,8,223,231,131,223,223,191, + 223,223,223,3,191,215,4,223,215,226,223,207,191,207,191,207,223,207,158,207, + 126,207,125,199,252,190,252,190,187,182,122,174,24,166,215,165,86,149,53,141, + 244,132,82,116,81,116,208,107,142,99,110,91,236,82,171,74,106,66,41,58, + 200,49,167,41,135,41,37,25,5,17,5,17,228,16,228,16,229,16,229,16, + 228,16,163,8,49,116,236,82,232,57,9,58,232,49,200,49,232,49,200,41, + 167,41,168,41,167,41,135,41,167,41,135,33,135,33,135,41,135,41,103,33, + 135,33,135,41,167,41,167,41,196,16,102,33,41,58,5,25,9,58,236,90, + 45,99,110,107,175,115,175,115,207,115,110,99,131,16,32,0,97,8,65,8, + 65,8,0,0,163,16,171,74,147,132,115,124,82,124,179,132,248,173,85,157, + 113,132,12,91,44,99,8,66,236,90,203,90,36,41,97,8,97,8,73,74, + 8,66,203,90,207,123,3,175,115,144,207,115,239,115,240,123,49,124,239,123, + 211,164,117,181,20,157,105,17,203,41,234,41,235,41,234,41,11,50,12,50, + 235,41,3,170,33,162,202,41,235,41,12,50,235,41,105,25,72,25,71,25, + 39,25,105,25,137,33,11,50,76,58,234,41,202,41,202,41,137,33,137,33, + 72,25,72,25,40,25,39,25,40,25,39,25,72,33,40,25,7,17,7,17, + 230,16,7,17,230,16,230,16,198,16,197,8,165,8,4,132,8,129,100,8, + 6,100,0,3,68,0,130,132,16,36,33,6,37,33,141,69,33,69,33,37, + 33,37,33,69,33,37,33,36,33,36,33,37,33,37,33,37,41,37,33,37, + 33,3,36,33,129,36,41,4,36,33,133,37,41,36,33,69,33,36,33,4, + 33,3,36,33,136,69,41,4,33,37,41,37,41,69,41,36,41,37,33,37, + 41,15,4,33,131,196,16,134,106,103,179,3,39,171,129,7,171,3,39,171, + 146,6,171,4,114,101,122,4,114,133,122,68,122,166,146,165,138,230,146,165, + 146,133,138,39,163,198,162,38,163,198,154,39,171,38,171,6,163,178,3,3, + 135,33,144,102,33,135,33,135,33,167,41,8,58,138,74,236,98,44,99,45, + 99,44,99,45,99,45,99,12,91,44,99,44,99,44,91,3,44,99,132,45, + 99,44,99,45,99,45,91,3,45,99,132,44,91,45,91,45,99,44,99,3, + 45,99,130,44,99,44,99,4,45,99,129,44,99,3,45,99,146,77,91,45, + 91,45,91,77,91,45,99,77,99,45,99,77,99,77,99,45,91,77,99,45, + 91,77,91,45,99,77,91,77,99,77,99,45,99,3,77,91,132,77,99,77, + 91,45,99,77,91,3,77,99,152,45,91,77,91,12,83,203,74,204,82,12, + 91,45,91,143,107,17,116,82,116,114,124,114,124,147,124,114,124,110,99,166, + 41,32,0,163,8,204,66,82,116,179,132,147,132,179,124,179,124,4,147,124, + 153,179,132,179,132,147,132,147,132,114,116,82,100,17,44,241,11,50,4,179, + 4,212,12,21,21,21,29,21,53,21,69,244,108,180,124,179,140,147,148,147, + 140,179,140,179,132,179,132,147,124,179,124,5,179,132,129,180,132,7,179,132, + 142,180,132,180,132,114,132,118,165,203,90,8,66,40,66,40,66,8,66,40, + 74,40,66,8,66,40,74,40,74,5,40,66,129,8,66,3,40,66,132,8, + 66,8,66,231,57,231,57,4,199,57,139,199,49,199,49,166,49,166,49,134, + 49,102,41,138,74,170,82,138,74,170,74,170,82,8,138,74,172,106,74,105, + 74,73,74,106,74,138,74,106,66,105,74,106,74,106,74,138,74,139,74,203, + 82,236,90,236,90,12,91,13,99,13,91,45,99,13,91,12,91,45,99,13, + 91,45,91,236,90,12,91,45,91,110,99,143,99,175,107,82,124,180,132,21, + 133,151,141,249,149,91,158,188,166,253,174,30,183,126,199,126,207,159,207,159, + 215,191,223,223,223,5,191,215,137,191,223,223,223,223,223,223,231,191,215,191, + 223,223,231,191,215,191,223,3,191,215,130,223,231,255,231,6,255,239,131,255, + 231,255,239,255,239,3,255,231,247,255,239,255,231,255,239,255,231,255,223,255, + 231,255,223,255,223,255,215,255,215,255,207,126,199,158,199,28,183,122,174,57, + 166,215,157,118,149,212,132,81,124,208,107,78,91,237,82,139,74,41,66,200, + 57,167,49,135,41,37,33,5,25,5,25,228,24,196,24,196,16,164,8,131, + 8,163,16,132,16,99,8,131,8,131,8,99,0,131,0,164,8,131,8,163, + 8,196,8,163,8,196,8,228,16,228,16,196,8,196,8,228,16,228,16,98, + 0,114,124,236,82,9,58,41,58,9,58,233,49,200,49,200,49,200,41,200, + 41,167,41,167,33,167,41,135,33,103,41,135,41,135,41,135,33,135,41,135, + 41,167,41,102,33,196,16,228,24,41,58,5,25,9,58,236,82,45,99,78, + 107,175,115,175,115,142,107,207,107,143,99,1,0,33,0,97,8,65,8,65, + 8,33,8,0,0,228,24,175,107,245,148,179,132,247,173,150,157,179,140,13, + 91,12,91,8,66,235,90,236,90,36,41,97,16,65,8,40,66,8,66,203, + 90,207,123,175,115,175,115,3,207,115,164,239,115,49,132,16,124,210,156,117, + 181,53,173,137,25,235,41,11,42,235,49,11,50,235,41,203,41,203,33,202, + 41,202,41,203,41,11,42,12,50,12,42,235,41,170,33,137,33,104,33,170, + 41,202,41,202,41,11,42,44,50,11,50,202,41,170,41,137,33,105,33,105, + 33,73,25,3,40,25,132,72,33,73,25,8,17,7,17,3,231,16,130,231, + 8,198,8,3,165,8,129,133,8,3,132,8,131,100,8,132,8,100,8,4, + 100,0,147,68,0,67,0,68,0,131,8,36,33,69,41,37,33,69,33,36, + 33,37,41,36,33,37,33,37,33,37,41,69,33,69,33,37,41,36,33,36, + 33,7,69,41,129,101,41,4,69,41,129,37,41,6,69,41,144,36,33,36, + 33,101,41,4,33,69,41,37,41,37,41,37,33,69,41,37,41,4,33,4, + 33,36,33,36,33,4,33,36,33,9,4,33,133,228,24,196,73,71,179,39, + 171,38,171,4,39,171,132,7,171,38,171,6,171,39,171,3,38,171,140,39, + 171,39,179,39,171,39,179,39,171,6,171,39,171,38,171,39,171,39,171,38, + 171,39,171,187,3,129,102,33,3,135,33,151,135,41,167,33,135,41,167,33, + 167,33,199,41,9,58,138,74,236,90,44,91,44,91,45,99,45,99,44,99, + 44,99,45,99,45,91,44,99,45,99,45,99,44,91,45,91,45,91,6,45, + 99,129,45,91,6,45,99,185,77,99,45,99,45,99,77,99,77,91,45,91, + 77,99,45,99,45,91,77,91,45,99,77,99,77,99,45,99,77,91,77,99, + 45,99,77,99,77,91,77,99,77,91,77,99,77,99,45,99,77,99,77,91, + 77,99,77,99,77,91,77,91,77,99,77,99,45,99,77,91,77,91,45,91, + 236,82,203,82,204,90,12,91,77,99,175,107,17,116,82,124,114,124,114,124, + 147,132,175,107,40,50,130,8,98,8,106,58,241,107,147,132,179,124,146,124, + 146,132,8,147,124,148,146,124,147,124,147,132,179,140,179,140,82,124,241,75, + 241,43,241,11,50,12,82,4,147,4,212,4,21,5,53,21,53,53,21,69, + 244,92,212,116,212,124,7,179,132,129,179,124,4,179,132,130,179,124,180,132, + 3,179,132,141,114,132,182,173,8,74,8,66,40,66,8,66,40,66,40,66, + 8,66,40,66,8,66,40,66,8,66,5,40,66,145,40,74,40,74,40,66, + 8,66,232,65,231,57,232,57,231,57,199,57,167,49,199,49,166,49,167,49, + 134,49,134,41,167,49,170,82,3,171,82,132,138,74,170,82,138,82,171,82, + 3,138,74,170,106,74,105,74,105,74,73,74,105,74,41,66,41,66,73,66, + 106,74,106,66,105,66,106,74,106,74,170,82,171,82,204,82,236,90,13,91, + 45,99,45,99,13,99,45,99,45,99,13,91,13,99,12,91,13,91,12,91, + 236,90,110,99,110,99,175,107,17,108,82,116,212,132,54,141,184,149,59,158, + 156,166,253,182,30,191,94,191,4,126,199,133,94,191,158,199,159,207,159,207, + 191,223,3,223,223,3,191,223,133,223,231,223,231,223,223,255,223,223,223,3, + 255,231,129,255,239,3,255,231,167,255,223,255,223,126,199,126,207,61,199,60, + 191,219,182,122,174,57,166,248,157,150,149,53,133,82,108,175,99,78,91,139, + 66,9,58,135,41,5,33,196,24,99,16,33,8,0,0,1,0,0,0,0, + 0,1,0,0,0,1,0,33,0,98,0,66,0,98,0,130,8,131,8,130, + 0,163,8,163,8,131,8,4,163,8,137,196,8,195,8,163,8,196,8,195, + 8,195,8,196,8,196,8,164,8,3,196,8,130,195,8,196,8,3,195,8, + 194,196,8,196,8,196,16,196,8,99,8,179,140,236,82,9,58,9,50,9, + 58,200,49,232,49,232,49,168,41,167,41,168,41,135,41,167,41,135,41,167, + 41,135,41,103,33,135,41,135,33,135,33,135,41,102,33,229,24,163,16,102, + 41,5,33,8,58,13,91,13,99,78,107,142,107,175,115,110,107,143,107,240, + 115,82,116,1,0,33,8,98,8,65,8,33,8,0,0,32,0,0,0,228, + 24,147,140,248,173,150,157,244,140,12,91,45,99,40,66,235,90,12,91,69, + 41,130,16,33,8,40,66,8,66,170,82,239,123,4,175,115,166,207,115,240, + 123,81,132,48,124,178,156,117,181,117,181,137,25,235,41,11,50,11,42,202, + 41,170,41,138,33,138,33,170,33,202,41,202,41,235,41,170,33,138,33,137, + 33,137,33,105,33,105,33,170,33,202,41,235,41,235,41,234,41,202,41,202, + 41,169,33,105,33,105,33,72,33,72,25,40,25,3,72,25,130,8,17,232, + 16,3,231,16,150,230,16,198,16,198,8,198,16,165,8,165,8,133,8,133, + 8,132,8,132,8,100,8,100,0,132,0,100,0,68,0,100,0,100,0,68, + 0,67,0,68,0,99,8,4,33,7,37,33,142,36,33,69,33,37,33,69, + 41,37,33,37,41,36,33,69,41,101,41,69,41,69,41,101,41,69,41,101, + 41,4,69,41,139,69,33,101,41,69,41,69,41,69,33,69,41,36,33,69, + 41,36,41,4,33,37,33,3,36,33,133,4,33,36,33,4,33,36,33,36, + 33,4,4,33,129,36,33,10,4,33,131,68,49,71,163,70,171,3,39,171, + 140,38,171,39,171,38,179,39,179,39,171,38,179,38,171,39,179,39,179,71, + 179,39,179,70,171,3,39,179,131,39,171,71,179,39,179,3,6,171,147,3, + 144,70,25,70,25,102,33,135,33,135,33,167,33,200,33,199,33,167,41,167, + 33,135,33,167,33,232,49,73,66,170,82,12,91,3,44,99,142,45,99,45, + 99,44,99,45,99,44,91,44,91,45,99,45,99,44,99,44,91,44,91,45, + 91,45,99,44,99,3,45,99,129,44,99,3,45,99,130,44,91,77,99,3, + 45,99,130,77,99,45,99,3,77,99,132,45,99,77,99,77,99,45,99,3, + 77,99,165,45,91,77,99,45,99,77,99,77,99,45,99,45,99,77,99,77, + 91,77,91,77,99,77,99,77,91,77,91,45,91,77,99,77,91,77,91,45, + 91,236,82,171,82,236,90,12,91,77,91,208,107,49,116,82,124,114,124,147, + 124,82,124,171,74,4,17,32,0,102,25,143,91,82,124,179,132,17,147,124, + 152,179,132,179,140,146,124,50,100,18,76,17,52,241,19,241,3,18,4,114, + 4,179,4,212,4,21,21,21,29,21,45,21,61,245,76,245,100,212,116,179, + 132,179,132,147,140,179,140,147,132,4,179,132,138,180,132,180,132,179,132,146, + 132,118,165,198,57,40,74,40,66,8,66,8,66,4,40,66,129,8,66,9, + 40,66,130,8,66,8,66,3,231,57,136,199,57,199,57,199,49,167,49,166, + 49,134,41,199,49,138,82,7,170,82,130,171,82,138,74,3,105,74,150,73, + 66,73,66,41,66,41,66,73,66,73,66,41,66,106,74,106,74,73,66,106, + 66,138,74,171,82,171,82,236,82,236,90,12,91,13,99,13,99,45,99,45, + 99,13,99,4,13,91,143,45,99,45,91,45,99,110,99,110,99,240,107,49, + 116,82,116,21,133,118,141,217,149,91,158,188,174,253,174,30,183,4,62,191, + 134,94,191,126,207,191,215,191,215,223,223,255,223,4,255,231,179,255,223,255, + 231,255,223,223,215,158,215,93,199,154,182,121,182,216,165,118,157,179,124,82, + 116,240,107,110,91,77,83,139,74,74,58,200,49,102,33,5,33,196,24,99, + 8,34,8,33,8,33,0,1,0,1,0,66,0,66,0,66,8,98,8,131, + 8,163,8,163,8,195,8,163,8,195,8,196,8,195,8,195,8,196,8,195, + 16,195,16,196,16,196,16,195,16,195,16,164,16,195,16,163,16,163,16,3, + 163,8,129,195,16,4,163,8,149,195,8,196,16,196,8,196,8,195,8,163, + 8,196,16,196,16,195,16,195,16,196,8,196,16,196,8,163,8,195,8,196, + 8,196,16,196,16,98,8,114,124,236,82,3,9,58,3,232,49,135,167,41, + 200,49,167,41,168,49,167,41,135,41,135,33,6,135,41,170,103,33,37,25, + 196,16,69,41,37,33,232,57,236,90,13,99,78,107,142,115,143,107,78,99, + 143,107,207,107,240,115,78,91,98,8,65,8,65,0,69,41,200,49,0,0, + 33,8,0,0,69,41,24,182,151,165,211,140,13,91,45,99,40,66,203,90, + 77,99,37,41,130,16,32,0,40,74,8,66,138,82,239,123,175,115,175,115, + 3,207,115,147,240,123,49,132,49,132,146,156,85,181,182,189,137,25,203,33, + 235,41,235,41,202,41,170,33,137,33,105,33,105,33,137,33,138,33,170,33, + 138,33,6,137,33,138,170,41,202,41,235,49,235,41,202,41,170,33,137,33, + 105,33,72,25,72,25,3,40,25,130,72,25,40,25,5,231,16,140,230,16, + 198,16,198,8,198,8,197,16,165,8,165,8,133,8,133,8,132,8,132,8, + 101,0,5,100,0,133,68,0,68,0,100,0,67,8,4,33,3,37,33,140, + 69,41,37,33,69,33,69,41,37,33,69,33,37,33,36,33,37,41,37,33, + 37,41,37,41,4,69,41,135,37,33,37,41,36,33,36,41,36,33,36,33, + 37,41,9,36,33,3,4,33,129,36,33,4,4,33,135,36,33,4,33,4, + 33,36,33,4,33,36,33,36,33,3,4,33,129,36,33,5,4,33,155,36, + 33,231,138,103,187,71,179,71,179,39,179,38,179,38,179,6,171,230,170,230, + 162,230,162,165,154,165,146,134,146,102,130,101,130,69,122,37,114,5,106,228, + 105,197,97,196,89,164,81,132,73,100,65,100,65,168,3,135,200,41,135,33, + 102,25,69,25,102,33,135,33,167,33,3,200,41,137,168,41,168,33,167,33, + 135,33,167,41,41,58,138,74,203,90,12,99,3,45,99,172,44,99,45,91, + 44,99,45,99,44,91,12,99,44,99,44,91,44,99,45,99,44,99,45,99, + 45,91,77,99,45,99,77,91,45,99,45,99,77,99,45,91,45,99,45,99, + 45,91,77,99,77,99,45,99,77,99,77,99,45,91,77,99,77,91,45,99, + 77,99,77,99,45,91,77,99,45,99,45,99,77,99,77,99,77,91,45,91, + 77,91,77,99,4,77,91,130,45,91,77,99,3,77,91,156,12,91,203,82, + 203,82,236,90,12,91,78,99,208,107,49,116,114,124,114,124,146,124,175,99, + 166,41,65,8,65,0,13,75,49,116,147,124,179,132,147,124,147,124,147,132, + 147,132,147,124,147,124,147,132,147,124,146,124,5,147,124,129,146,124,4,147, + 124,167,179,132,179,132,211,140,114,132,82,116,82,108,82,84,241,35,176,3, + 176,3,242,3,50,4,82,4,180,4,212,12,244,20,21,21,21,29,21,45, + 21,69,245,92,244,108,180,132,180,140,179,148,179,148,180,148,212,148,179,132, + 211,140,52,157,166,57,72,66,40,66,8,66,40,66,8,66,40,66,72,66, + 6,40,66,129,40,74,4,40,66,142,8,66,8,58,232,65,232,57,231,57, + 231,57,199,57,199,57,167,49,102,41,199,49,171,82,203,90,170,82,6,138, + 82,200,138,74,105,74,105,74,73,66,73,66,41,66,41,66,40,66,40,66, + 41,66,41,66,73,66,105,74,105,74,106,74,138,74,138,74,171,74,204,82, + 236,90,236,90,13,91,45,91,13,99,45,99,13,91,13,99,12,91,12,91, + 13,91,12,91,12,91,236,90,203,82,236,90,45,91,45,91,78,99,143,107, + 82,116,213,132,87,141,26,158,189,174,30,183,159,199,223,215,255,215,255,223, + 255,231,255,239,255,247,255,223,255,215,93,191,187,182,90,166,245,132,49,108, + 208,99,13,83,106,74,42,58,135,41,70,41,5,33,196,16,196,24,131,16, + 131,8,66,8,65,8,3,65,0,132,66,0,66,0,98,0,98,8,3,131, + 8,138,163,16,163,16,163,8,195,16,163,16,163,8,163,8,163,16,163,8, + 163,8,4,163,16,6,163,8,130,162,16,163,16,3,195,16,132,163,16,131, + 8,163,8,164,16,3,195,16,130,195,8,195,16,7,163,8,129,131,8,8, + 163,8,139,98,0,131,8,130,8,131,8,131,8,66,0,114,124,236,74,9, + 58,9,58,233,49,3,232,49,135,167,41,200,41,135,41,135,41,167,41,135, + 41,136,33,3,135,41,129,103,33,3,135,41,193,102,33,228,24,37,33,37, + 33,200,49,236,82,13,91,77,99,142,107,143,107,77,99,110,99,143,107,175, + 107,240,107,45,91,0,0,97,8,65,8,13,91,143,99,66,8,0,0,69, + 41,247,173,182,165,211,140,45,99,44,99,73,74,203,90,109,107,69,41,162, + 24,0,0,8,74,40,66,138,74,16,124,175,115,175,115,207,115,207,115,240, + 123,240,123,49,132,81,132,113,148,85,173,214,197,170,25,170,33,202,41,235, + 41,234,41,202,41,169,33,137,33,137,33,170,41,202,41,235,41,202,41,170, + 33,169,33,3,137,33,146,104,33,170,41,202,33,235,49,235,41,170,41,138, + 33,138,33,105,25,73,25,72,25,73,25,40,25,72,25,72,25,40,17,8, + 17,232,8,4,231,16,139,230,16,198,16,198,8,166,8,166,8,165,8,133, + 8,133,0,132,8,133,0,101,0,6,100,0,156,68,0,100,0,99,8,228, + 24,36,33,37,33,69,33,69,33,37,33,69,33,69,41,69,33,37,33,37, + 33,36,33,37,33,37,41,69,41,36,33,69,41,37,33,36,41,37,41,36, + 33,69,33,36,33,36,33,37,33,4,36,33,129,37,33,14,36,33,129,4, + 33,3,36,33,131,4,33,36,33,36,33,8,4,33,141,36,33,4,25,197, + 81,36,114,228,97,196,89,196,89,132,73,100,65,100,65,68,57,68,49,36, + 49,3,4,41,140,228,32,227,32,4,33,228,32,4,33,228,24,228,32,228, + 32,228,24,228,24,228,32,228,32,110,3,141,73,58,74,58,41,50,200,41, + 135,33,102,33,70,25,102,33,135,33,167,41,200,41,200,41,167,33,4,135, + 33,133,199,41,41,58,138,74,203,82,12,99,4,44,99,3,45,99,131,44, + 91,44,99,44,99,4,45,99,141,44,99,45,99,45,99,44,91,45,99,45, + 91,45,99,77,99,45,91,77,91,45,91,77,91,45,91,5,77,99,131,45, + 91,77,99,77,99,3,77,91,129,77,99,5,77,91,155,45,99,45,99,77, + 91,45,91,77,99,77,91,45,99,45,99,77,99,12,83,203,82,203,82,236, + 90,13,91,110,99,17,108,50,116,82,124,146,124,240,115,138,66,98,0,65, + 0,9,42,17,108,147,124,147,132,8,147,124,135,146,124,146,124,147,124,114, + 124,147,124,147,124,114,124,4,147,124,161,179,132,147,124,179,124,179,132,49, + 116,49,116,114,124,179,140,212,140,212,148,179,132,82,100,50,68,241,35,209, + 19,208,11,209,3,241,3,17,4,50,4,50,4,114,4,147,4,147,4,180, + 4,179,12,180,28,212,44,212,28,146,76,244,156,113,140,198,57,8,40,66, + 129,8,66,8,40,66,131,8,66,40,66,8,66,3,231,57,138,199,49,199, + 57,166,49,166,49,8,58,236,90,171,82,203,82,170,82,138,74,3,138,82, + 134,105,74,106,74,106,74,105,74,105,74,138,74,3,73,74,130,41,66,138, + 74,3,73,66,169,73,74,73,66,105,74,138,74,138,74,171,82,171,82,204, + 90,203,90,203,82,236,90,204,90,204,90,236,90,236,90,13,99,45,99,110, + 107,143,107,241,115,50,124,180,140,54,149,118,149,249,165,123,182,188,190,252, + 182,61,191,252,190,122,174,89,166,215,157,244,132,17,108,175,99,106,58,200, + 49,5,25,99,16,1,0,7,0,0,144,1,0,65,0,65,0,66,8,98, + 8,130,8,98,8,130,8,131,8,130,8,163,8,131,8,131,8,163,16,163, + 8,163,8,8,163,16,132,163,8,163,8,130,8,130,16,3,131,8,129,162, + 8,3,130,8,160,131,8,163,8,163,16,131,8,163,8,131,8,130,8,130, + 8,131,8,98,8,130,0,130,0,131,8,130,8,130,8,98,8,130,0,130, + 8,98,8,98,0,98,8,98,8,130,8,131,8,131,8,98,8,130,8,131, + 8,131,8,130,0,98,8,98,8,3,131,8,138,130,8,131,8,163,8,131, + 8,163,8,163,8,131,8,66,0,179,132,204,82,3,9,58,137,232,49,200, + 49,200,49,199,41,167,41,167,41,168,41,135,41,167,41,4,135,41,197,135, + 33,167,41,135,41,167,41,135,41,5,25,4,33,5,25,200,49,236,82,45, + 99,78,99,110,107,142,107,45,99,78,91,143,99,175,107,207,107,82,124,143, + 91,0,0,65,8,0,0,240,115,53,141,204,74,5,33,183,173,183,165,244, + 140,45,99,13,99,105,74,203,90,175,115,101,41,162,24,0,0,8,58,41, + 74,73,74,16,124,207,115,207,123,207,123,239,123,240,123,16,124,49,132,114, + 132,80,140,85,181,247,197,201,33,137,33,202,41,235,41,11,50,11,50,202, + 33,170,41,203,41,202,41,202,41,235,49,235,41,170,33,170,41,3,137,33, + 139,104,33,137,33,137,33,202,33,170,33,137,33,138,33,138,33,105,25,105, + 33,105,33,4,73,25,132,40,17,8,17,8,17,231,8,4,231,16,3,198, + 8,137,165,8,166,8,133,8,133,8,133,0,133,0,101,0,133,0,101,0, + 3,100,0,145,68,0,100,0,68,0,100,0,196,24,36,33,37,33,69,33, + 69,41,37,33,37,33,37,41,36,33,37,33,69,41,37,33,36,33,3,37, + 33,135,36,33,69,41,37,33,36,33,37,33,36,33,37,33,5,36,33,132, + 37,33,37,33,36,33,37,33,9,36,33,133,4,33,36,33,36,33,4,33, + 36,33,4,4,33,129,36,33,10,4,33,5,228,24,130,4,25,4,25,17, + 4,33,130,36,33,4,33,85,3,152,9,50,41,58,41,50,74,58,42,58, + 9,50,200,33,135,33,102,33,102,33,135,33,167,33,168,41,135,41,167,41, + 135,33,167,33,167,33,168,33,200,41,8,50,105,66,203,82,236,90,3,44, + 99,133,45,99,45,99,44,91,44,99,45,99,3,45,91,133,45,99,45,99, + 45,91,45,99,45,91,3,45,99,152,77,99,45,99,45,91,77,91,45,91, + 77,99,77,99,45,99,77,99,77,99,45,99,77,99,45,91,77,99,45,91, + 77,91,77,99,45,99,45,99,45,91,77,99,77,99,45,91,77,99,5,77, + 91,148,45,91,45,91,77,91,236,82,203,82,203,82,236,90,45,91,143,99, + 16,116,82,124,114,124,82,124,45,91,101,33,33,0,4,17,45,83,114,124, + 179,132,7,147,124,131,146,124,147,124,147,124,3,146,124,129,115,124,6,147, + 124,161,147,132,179,132,147,124,147,124,240,107,240,99,82,116,179,132,179,124, + 179,132,179,132,180,132,212,140,212,148,179,132,147,116,114,100,50,76,17,68, + 241,51,208,35,176,27,176,19,143,3,143,3,110,3,111,3,111,3,13,3, + 50,92,85,157,207,123,199,57,18,40,66,132,8,66,8,66,232,57,231,57, + 3,199,57,130,134,49,8,66,3,203,90,139,171,82,171,82,138,74,138,82, + 170,82,138,82,170,82,138,74,138,74,106,74,106,74,3,105,74,165,73,74, + 41,66,40,66,8,58,8,58,199,49,199,57,167,57,199,57,232,65,41,74, + 106,74,237,90,111,107,17,116,179,132,53,149,183,165,216,165,122,182,187,182, + 58,166,90,174,122,174,57,166,25,166,150,149,53,141,211,132,49,116,142,91, + 204,74,41,58,103,33,5,33,99,16,1,0,5,0,0,137,1,0,33,0, + 97,8,98,8,130,8,130,8,162,16,131,8,131,16,9,130,8,133,131,16, + 163,8,131,8,163,16,163,16,7,130,8,129,131,8,3,130,8,136,98,8, + 130,8,98,8,130,8,98,8,130,8,130,8,131,8,5,130,8,135,98,8, + 130,8,130,8,98,8,130,8,130,8,131,8,5,130,8,129,131,8,3,130, + 8,133,130,0,130,0,130,8,130,8,131,8,5,130,8,136,98,8,98,8, + 98,0,98,8,98,8,98,0,98,0,130,8,4,98,8,135,98,0,130,8, + 99,8,98,0,66,0,178,132,13,83,3,9,58,137,200,41,200,49,232,49, + 168,41,168,41,200,41,167,41,135,33,167,41,3,135,41,129,167,41,5,135, + 41,193,102,33,70,33,4,33,200,49,236,90,12,91,77,99,142,107,142,107, + 45,99,46,99,111,99,143,107,208,107,208,107,115,124,106,58,0,0,65,8, + 65,8,240,115,179,132,82,132,150,165,150,157,179,140,77,99,45,99,170,82, + 231,57,138,74,134,49,195,24,0,0,232,65,41,74,41,74,16,132,175,115, + 207,115,240,123,240,123,16,124,16,124,49,124,81,132,48,140,85,181,247,197, + 42,50,105,33,170,41,202,41,235,49,11,50,234,41,203,41,235,41,202,41, + 170,33,170,33,202,41,170,33,170,33,137,33,3,72,25,135,105,33,105,33, + 138,33,137,33,105,25,137,33,138,33,3,105,25,129,105,33,3,73,25,132, + 41,17,8,17,8,17,231,8,4,231,16,137,198,16,198,8,198,8,166,8, + 165,8,133,8,133,8,133,0,133,0,4,100,0,129,101,0,4,100,0,149, + 68,0,163,16,36,33,37,33,37,33,69,33,69,33,37,33,37,33,69,33, + 69,33,37,33,37,33,37,41,37,33,69,33,69,41,37,41,36,33,37,41, + 37,41,3,36,33,137,37,33,36,33,36,33,37,41,36,33,36,33,37,41, + 37,33,37,33,9,36,33,137,4,33,4,33,36,33,4,33,36,33,36,33, + 4,33,4,33,36,33,12,4,33,129,36,33,22,4,33,130,36,33,36,33, + 102,3,143,9,50,8,50,9,50,9,50,41,58,74,58,74,58,42,58,8, + 50,167,33,102,25,70,25,102,33,103,33,134,33,3,135,33,137,168,33,200, + 33,168,33,200,33,232,41,41,50,171,74,235,82,12,91,3,45,99,142,44, + 99,45,91,45,99,44,91,44,99,45,99,44,99,45,99,44,99,45,91,45, + 91,44,99,44,91,45,99,3,77,99,186,45,91,45,99,77,91,77,99,45, + 99,77,99,45,99,77,91,77,99,77,91,45,99,77,99,45,99,77,91,77, + 91,45,91,45,91,77,99,45,91,77,99,77,99,45,91,77,91,77,99,45, + 91,77,91,77,99,45,91,203,82,171,82,235,82,12,91,45,91,143,107,17, + 116,82,116,147,124,240,115,73,58,130,8,65,0,42,50,241,107,147,132,147, + 124,146,124,146,124,147,132,147,124,146,124,147,124,146,124,146,124,147,124,146, + 124,147,124,146,124,146,124,5,147,124,148,147,132,147,124,179,132,179,124,179, + 132,114,124,175,107,240,99,114,124,179,132,179,132,147,132,179,132,147,124,179, + 124,147,124,179,132,179,132,211,140,179,140,3,179,132,130,147,124,147,124,4, + 147,116,136,179,108,147,108,114,132,85,157,44,107,231,65,8,66,8,66,13, + 40,66,185,8,66,40,66,40,66,8,66,8,66,232,57,231,57,231,57,199, + 57,166,49,40,66,235,90,203,90,170,90,170,82,138,82,138,82,138,74,138, + 82,170,82,137,82,105,82,105,74,40,66,40,66,8,66,199,65,199,57,134, + 57,167,57,232,65,42,74,110,107,176,115,49,124,86,149,25,174,219,190,94, + 199,223,207,255,215,255,215,126,207,187,182,151,149,180,132,17,116,13,83,139, + 74,233,57,70,33,37,33,228,24,131,16,98,8,65,8,1,0,5,0,0, + 133,65,0,65,8,98,8,98,8,97,8,5,130,8,5,98,8,138,66,8, + 65,8,98,8,97,8,97,8,98,8,97,8,65,8,66,8,65,8,12,98, + 8,130,130,8,98,8,9,130,8,3,131,8,130,163,8,131,8,6,130,8, + 130,98,8,98,0,9,98,8,5,98,0,5,98,8,129,98,0,3,98,8, + 129,98,0,4,98,8,146,98,0,98,0,98,8,98,8,98,0,130,8,99, + 8,131,8,98,0,66,8,179,140,45,91,41,58,9,58,8,58,199,41,200, + 41,232,49,3,168,41,130,167,41,167,41,7,135,41,191,135,33,135,33,135, + 41,135,41,168,41,70,33,167,49,204,82,13,91,77,99,110,107,142,107,45, + 99,45,91,110,99,143,99,176,107,176,107,176,99,49,116,135,41,0,0,0, + 0,37,33,82,124,82,124,183,165,150,157,178,140,142,107,203,90,199,57,4, + 33,195,24,195,24,163,16,33,0,232,65,105,74,40,74,16,124,207,115,207, + 115,239,123,240,123,240,123,16,124,49,124,81,132,48,140,84,173,246,197,108, + 58,105,33,170,33,170,41,202,41,235,41,202,41,202,33,202,33,170,33,138, + 33,4,170,33,139,137,33,72,25,72,33,72,25,73,25,72,25,105,33,105, + 33,72,25,73,25,137,33,3,105,25,139,105,33,73,25,73,25,40,17,40, + 17,8,17,232,8,8,17,231,16,231,16,199,8,3,198,8,132,166,8,166, + 8,134,8,134,0,3,133,0,133,100,0,101,0,101,0,100,0,68,0,3, + 100,0,138,68,0,68,0,131,8,4,33,37,33,69,33,37,33,69,41,69, + 41,69,33,4,37,33,143,69,41,36,33,37,33,37,33,69,41,36,33,37, + 33,36,33,37,41,36,33,37,33,37,41,36,33,37,41,37,33,7,36,33, + 129,4,33,3,36,33,129,4,33,6,36,33,5,4,33,129,36,41,3,4, + 33,136,36,33,36,33,4,33,4,33,36,33,4,33,4,33,36,41,4,4, + 33,129,36,33,4,4,33,136,36,33,4,33,36,33,4,33,4,41,36,33, + 36,33,36,41,7,4,33,1,228,32,134,3,150,41,58,41,58,41,50,9, + 50,8,42,8,50,9,58,73,58,106,66,106,58,42,50,233,41,167,33,102, + 25,102,33,103,33,135,33,135,33,167,33,200,33,200,41,200,41,3,232,41, + 137,9,50,74,50,138,74,203,82,12,91,44,99,45,91,45,91,44,99,4, + 45,99,154,45,91,45,99,45,99,44,99,45,99,45,91,77,99,45,99,45, + 91,45,99,45,99,77,99,45,99,45,91,77,99,45,99,77,99,45,91,77, + 99,45,99,77,99,45,91,77,91,77,99,77,99,45,99,3,77,91,130,45, + 91,45,99,5,77,91,144,45,91,203,82,171,82,203,82,12,91,77,99,175, + 107,49,116,82,124,114,124,236,82,4,25,32,0,102,25,143,99,114,124,10, + 147,124,134,114,124,146,124,115,124,147,124,146,124,115,124,5,147,124,149,179, + 132,179,132,147,132,179,132,82,124,207,99,17,108,114,124,179,132,147,132,147, + 124,179,132,179,132,179,124,179,132,179,124,179,124,179,132,147,124,147,124,147, + 132,7,179,132,142,212,132,212,140,145,132,85,157,170,82,8,66,40,74,40, + 66,8,66,40,66,8,66,40,66,40,66,40,74,4,40,66,133,40,74,40, + 66,40,66,40,74,40,66,3,8,66,163,231,57,231,57,199,57,134,49,40, + 66,170,90,106,82,138,82,138,82,170,82,171,90,171,90,203,90,236,90,12, + 91,77,99,142,107,240,115,18,116,146,132,21,149,248,165,154,190,61,199,93, + 207,125,207,93,207,187,182,24,166,150,157,114,132,143,99,73,66,228,24,66, + 16,9,0,0,130,33,0,33,0,3,65,8,129,66,8,4,98,8,131,195, + 16,65,8,65,8,3,98,8,129,97,8,5,98,8,132,97,8,97,8,66, + 8,66,8,5,65,8,129,97,8,4,65,8,150,65,0,65,8,65,8,65, + 0,65,8,65,0,65,8,65,0,65,8,65,0,65,8,65,8,97,8,97, + 8,98,0,65,8,97,8,97,0,65,8,97,8,98,8,97,8,5,65,8, + 145,97,8,66,0,98,0,97,8,65,8,97,8,65,8,98,8,98,8,65, + 8,98,8,66,8,66,8,65,8,98,0,66,0,65,8,3,98,8,137,66, + 8,98,0,98,8,98,8,66,8,98,0,98,8,98,8,98,0,5,98,8, + 153,98,0,98,8,98,8,130,8,98,8,98,8,98,0,130,8,98,8,130, + 8,130,0,130,8,131,8,98,0,131,8,146,132,12,83,41,58,41,58,9, + 50,200,49,232,49,232,49,168,41,200,49,3,167,41,130,135,41,103,41,3, + 135,41,171,167,41,167,41,135,41,167,41,167,41,168,41,200,49,233,57,9, + 58,171,82,13,91,45,99,110,107,110,107,45,99,13,91,110,99,143,99,175, + 107,143,99,143,99,175,99,50,116,5,25,32,0,0,0,134,49,147,140,150, + 165,118,157,20,149,171,82,101,49,101,49,195,24,33,8,227,32,228,32,195, + 24,228,24,166,49,199,57,239,123,3,16,124,139,240,123,240,123,239,123,16, + 124,49,132,80,140,117,181,214,197,173,74,105,25,137,33,3,170,33,130,137, + 33,170,33,3,137,33,143,105,25,138,33,170,33,170,33,137,33,72,33,39, + 25,39,25,72,25,40,25,72,25,72,25,40,17,72,25,105,33,3,105,25, + 135,106,25,73,25,40,17,40,17,8,25,8,17,7,17,4,231,16,140,230, + 16,199,16,198,8,198,8,166,0,134,8,134,0,133,0,133,0,101,0,100, + 0,133,0,3,101,0,131,68,0,100,0,68,0,3,100,0,143,196,24,36, + 33,37,33,69,33,37,41,37,33,69,33,37,33,69,33,36,33,36,33,37, + 41,37,33,69,33,69,33,3,36,33,138,37,41,36,33,36,33,37,41,36, + 33,36,33,37,33,37,33,36,33,37,33,3,36,33,129,37,41,24,36,33, + 132,4,33,4,33,36,33,36,33,3,4,33,137,228,32,228,32,4,33,227, + 32,228,32,227,32,227,32,195,24,227,32,4,195,24,3,163,24,135,162,16, + 130,16,130,16,162,16,130,16,162,16,130,16,40,3,131,139,66,138,66,106, + 58,3,41,50,3,9,50,159,41,58,74,58,106,58,74,58,9,50,200,41, + 135,33,103,33,102,33,167,33,168,33,200,33,200,41,232,41,233,41,232,41, + 233,41,233,41,200,33,233,41,74,58,171,74,236,82,12,91,45,99,45,99, + 44,99,45,99,45,91,45,99,44,99,3,45,91,129,44,99,3,45,91,130, + 45,99,45,91,3,45,99,139,77,99,77,99,77,91,77,91,45,99,77,91, + 77,99,45,91,77,91,77,91,45,91,4,77,91,150,45,91,77,99,77,91, + 77,91,45,91,45,91,77,91,12,91,203,82,203,82,236,82,12,91,110,99, + 208,107,81,124,114,124,240,115,8,50,97,8,33,0,204,66,17,108,3,147, + 124,129,146,124,6,147,124,133,146,124,147,124,146,124,115,124,114,124,5,147, + 124,146,147,132,147,124,179,132,147,132,147,124,147,132,82,124,240,107,50,116, + 147,124,179,132,147,124,147,124,179,132,147,132,179,124,179,132,147,124,3,179, + 124,133,147,124,147,124,179,132,179,132,147,132,4,179,132,135,212,132,179,132, + 146,132,20,157,105,82,8,66,40,74,4,40,66,129,40,74,4,40,66,129, + 73,74,6,40,66,3,8,66,141,231,57,231,57,199,49,174,107,48,124,49, + 124,81,132,114,132,114,132,146,132,146,132,114,124,114,132,3,179,132,139,146, + 124,114,116,17,108,53,141,208,99,74,58,232,57,134,41,196,24,98,8,1, + 0,6,0,0,131,33,0,65,0,66,8,4,98,8,133,66,8,66,8,98, + 8,65,8,66,8,8,98,8,132,130,8,196,24,98,8,66,8,13,98,8, + 12,65,8,3,65,0,4,65,8,137,65,0,65,8,65,8,65,0,65,0, + 97,8,97,8,65,8,97,8,3,65,8,131,65,0,65,8,66,8,5,65, + 8,129,65,0,5,65,8,130,66,8,65,8,3,66,8,140,66,0,98,8, + 98,8,98,0,98,8,98,8,66,8,98,0,98,0,98,8,98,8,98,0, + 9,98,8,129,98,0,4,98,8,129,130,8,4,98,8,142,130,0,130,8, + 130,8,98,0,131,16,146,132,203,82,41,58,41,58,9,58,200,49,200,41, + 232,49,200,41,3,167,41,5,135,41,186,167,41,135,41,167,41,135,41,167, + 41,168,41,168,41,200,49,232,49,41,58,171,82,236,90,45,99,110,107,110, + 107,45,99,13,91,110,99,110,99,111,99,143,99,110,99,175,107,240,107,17, + 108,0,0,65,8,0,0,12,91,248,173,150,165,243,148,170,82,37,41,227, + 32,101,41,134,49,33,8,65,8,162,24,195,24,227,32,163,24,134,49,232, + 57,138,74,45,99,175,115,49,132,81,132,82,132,146,140,113,140,117,181,247, + 197,237,74,73,25,137,33,3,170,33,3,137,33,138,105,33,105,25,72,25, + 137,33,170,33,170,33,105,25,72,25,39,25,39,25,3,72,25,152,104,33, + 39,25,38,33,70,33,70,33,136,41,104,33,73,25,41,17,40,17,40,17, + 8,17,8,17,232,16,231,16,231,16,231,8,231,16,231,8,199,8,198,8, + 199,8,166,0,134,0,3,133,0,5,101,0,7,100,0,149,132,8,228,24, + 69,33,69,41,37,33,37,41,37,33,69,33,69,33,37,33,36,33,69,33, + 37,41,37,33,37,41,37,33,37,33,36,33,36,33,37,41,37,41,4,36, + 33,132,37,33,36,33,37,33,37,33,3,36,33,133,37,41,37,41,37,33, + 36,33,37,33,4,36,33,6,4,33,3,228,32,129,227,32,3,227,24,15, + 195,24,7,228,24,3,4,25,132,228,24,4,33,4,25,4,33,3,5,33, + 44,3,136,236,82,204,74,204,74,139,66,106,58,106,58,41,50,41,50,3, + 9,50,169,41,50,74,58,106,58,106,58,42,58,233,41,167,33,134,25,135, + 33,135,33,200,41,232,41,233,41,233,41,9,42,233,41,200,33,200,33,200, + 41,233,41,73,50,106,66,235,82,12,91,45,99,77,99,77,99,45,99,45, + 91,45,99,45,91,45,91,77,91,45,99,45,91,45,91,77,91,45,99,77, + 99,45,91,77,91,3,45,99,139,77,99,77,99,77,91,77,91,45,99,77, + 91,45,91,77,91,45,91,77,91,77,91,5,45,91,148,77,91,77,91,45, + 91,12,91,203,74,203,82,236,90,13,91,110,99,240,107,82,124,81,124,109, + 99,36,25,32,0,228,16,176,99,114,124,146,124,146,124,7,147,124,136,146, + 124,114,124,147,124,146,124,146,124,115,124,115,124,146,124,3,147,124,130,147, + 132,147,132,3,147,124,136,114,124,49,116,49,116,114,116,147,132,179,132,147, + 124,179,124,6,179,132,5,147,124,148,179,132,179,124,180,132,179,132,180,132, + 180,132,212,132,179,132,211,140,211,148,73,74,8,66,8,74,40,66,40,66, + 8,66,8,66,40,66,40,66,41,74,3,40,66,129,41,66,4,40,66,3, + 8,66,154,232,57,231,57,199,57,199,49,207,107,77,99,12,91,171,82,106, + 66,73,66,232,57,232,49,199,49,134,41,101,33,69,33,4,25,4,25,228, + 24,229,24,237,74,196,24,34,0,98,8,98,8,131,8,3,130,8,132,131, + 8,98,8,98,8,130,8,6,98,8,129,97,8,5,66,8,130,65,8,66, + 8,7,98,8,133,131,16,195,16,98,8,66,8,97,8,10,98,8,3,97, + 8,25,65,8,3,97,8,141,66,8,65,8,65,8,65,0,65,8,65,0, + 65,8,65,0,65,0,65,8,65,0,65,8,65,0,5,65,8,3,66,8, + 3,98,8,137,98,0,66,8,98,8,66,8,98,0,66,8,98,8,98,8, + 66,0,4,98,8,129,66,8,3,98,8,129,98,0,14,98,8,138,1,0, + 81,132,13,91,41,58,41,58,9,58,232,49,200,41,200,49,200,49,5,167, + 41,130,135,33,167,41,5,135,41,216,167,41,167,41,168,41,200,49,200,49, + 41,58,171,82,236,90,45,99,77,99,110,107,13,91,237,90,46,91,78,91, + 78,91,111,99,142,99,175,99,175,99,17,116,236,82,0,0,65,8,131,16, + 118,165,183,165,20,149,105,74,36,41,8,66,105,74,81,132,101,41,195,24, + 65,8,0,0,33,8,98,16,162,24,195,24,227,32,228,32,4,33,4,33, + 166,49,73,66,44,91,16,132,215,197,251,230,241,107,105,25,202,41,202,33, + 202,41,202,33,170,33,170,33,138,33,137,33,137,33,105,25,105,25,170,33, + 138,33,137,33,104,33,72,25,39,25,38,25,5,25,5,25,196,24,163,24, + 162,24,195,24,69,33,69,41,4,33,71,33,73,25,9,17,40,17,8,17, + 8,17,232,8,232,16,3,231,8,135,199,8,199,8,198,8,166,8,166,8, + 134,0,134,0,3,133,0,4,101,0,132,100,0,101,0,100,0,100,0,3, + 101,0,136,100,0,131,8,227,32,36,33,37,33,69,41,69,33,69,33,3, + 69,41,131,37,33,37,33,37,41,4,69,41,133,37,41,37,41,36,41,36, + 33,37,33,6,4,33,132,228,32,228,32,227,32,228,32,6,195,24,131,163, + 24,195,24,163,24,5,195,24,136,228,24,195,24,4,25,228,24,4,25,4, + 33,4,33,4,25,5,37,33,129,69,41,6,69,33,129,69,41,8,69,33, + 3,37,33,3,4,33,129,4,25,3,228,24,82,3,130,13,91,45,91,3, + 13,83,165,236,74,172,66,139,66,106,58,73,50,41,58,9,50,9,42,41, + 50,41,50,74,50,107,58,107,58,74,58,233,41,167,33,135,33,135,33,200, + 33,200,41,233,41,233,41,232,41,232,33,200,41,232,33,233,41,200,33,232, + 33,41,50,106,66,203,82,12,91,45,99,77,99,45,99,44,91,3,45,91, + 5,45,99,133,77,91,77,91,45,99,77,99,77,99,3,45,91,129,77,99, + 3,45,91,133,77,91,45,91,45,99,77,91,45,91,4,77,91,3,45,91, + 145,236,82,171,82,203,82,236,90,45,91,143,99,17,116,82,124,240,107,105, + 66,33,0,98,8,106,58,50,116,147,132,147,124,146,124,3,147,124,4,146, + 124,130,114,124,146,124,3,114,124,133,147,124,146,124,147,124,147,124,147,132, + 4,147,124,130,179,132,146,124,3,82,116,143,147,124,179,124,147,124,179,132, + 147,132,179,124,147,124,179,124,179,132,179,132,179,124,147,124,147,132,147,124, + 147,124,3,179,124,4,179,132,144,212,132,146,124,178,140,113,140,8,66,8, + 66,40,66,8,66,41,74,40,74,40,66,40,66,40,74,40,66,40,66,40, + 74,4,40,66,133,8,66,8,66,40,66,8,58,8,66,3,231,57,132,199, + 49,134,49,101,49,134,49,3,101,41,3,102,41,3,69,33,3,37,25,140, + 102,33,111,91,5,25,131,16,163,8,164,16,163,16,163,8,130,8,130,8, + 98,8,130,8,8,98,8,132,66,8,98,8,66,8,65,8,3,66,8,131, + 98,8,66,8,65,8,5,98,8,136,163,16,163,16,98,8,66,8,65,8, + 65,8,98,8,98,8,3,97,8,7,98,8,130,97,8,97,8,13,65,8, + 129,33,0,7,65,8,136,97,8,65,8,65,8,66,8,65,0,98,8,65, + 8,65,0,3,65,8,140,66,8,66,8,65,8,97,8,97,8,66,8,65, + 8,97,8,66,8,66,0,66,8,65,8,3,66,8,140,98,8,65,0,66, + 8,66,8,98,8,66,8,98,8,66,0,98,0,66,0,65,0,98,0,12, + 98,8,134,98,0,98,0,98,8,98,8,65,8,66,8,3,65,8,136,65, + 0,66,8,0,0,240,123,13,91,41,58,41,58,9,58,3,232,49,131,200, + 49,168,49,168,41,3,135,41,129,135,33,3,135,41,189,136,41,135,41,168, + 41,135,41,168,41,168,41,200,49,233,49,9,58,139,74,236,90,45,99,78, + 107,110,107,13,99,236,82,45,91,78,91,110,99,110,99,110,91,175,107,176, + 107,208,107,17,116,73,58,0,0,131,16,244,148,183,165,243,140,77,99,12, + 99,204,90,73,74,207,115,199,57,4,33,0,0,134,49,199,57,163,24,98, + 8,33,8,32,8,65,8,97,16,130,16,130,24,162,24,65,8,32,0,0, + 0,0,0,98,16,163,16,195,24,196,24,229,24,229,24,6,33,3,5,25, + 136,228,24,196,24,196,16,131,16,130,16,162,24,130,16,97,16,6,65,8, + 139,97,8,163,16,37,41,4,33,195,24,36,33,228,32,6,25,40,17,8, + 17,8,17,4,232,8,137,231,8,232,8,199,8,231,8,199,8,166,8,198, + 0,166,0,166,0,3,134,0,4,133,0,6,101,0,134,133,0,133,0,6, + 25,4,25,228,24,228,24,6,4,33,129,228,32,4,228,24,134,227,24,228, + 24,228,24,195,24,228,24,227,24,3,228,24,138,4,25,4,25,4,33,4, + 25,37,25,36,33,37,33,69,33,69,41,70,41,3,102,41,139,134,41,134, + 41,135,49,135,41,167,41,135,41,134,41,135,49,134,41,135,41,134,49,3, + 134,41,130,102,41,134,41,5,102,41,129,70,33,3,69,33,3,37,33,132, + 37,25,5,25,4,33,5,25,4,228,24,3,196,24,6,196,16,130,228,24, + 196,16,71,3,3,45,91,139,78,91,45,83,45,83,13,83,236,82,236,74, + 171,66,139,66,74,58,41,50,41,50,3,9,50,138,41,50,74,58,107,58, + 74,58,41,50,200,33,167,33,135,33,167,33,200,41,3,233,41,129,232,41, + 6,200,33,160,41,50,138,74,236,82,12,91,45,99,45,99,77,99,77,91, + 45,99,77,99,45,99,45,99,77,99,77,99,77,91,45,99,77,99,45,91, + 77,91,45,91,45,91,77,99,77,91,77,91,77,99,45,91,45,91,77,91, + 45,91,77,91,45,99,45,91,3,77,91,148,45,91,45,91,235,82,171,74, + 203,82,236,90,45,91,175,107,17,116,82,124,77,91,101,33,0,0,5,25, + 78,83,114,124,147,132,147,124,146,124,146,124,3,147,124,136,146,124,114,124, + 147,124,146,124,115,124,146,124,146,124,114,124,5,147,124,129,179,124,4,147, + 124,133,114,124,49,116,82,116,114,124,147,132,3,147,124,135,179,132,179,132, + 147,124,179,124,179,124,179,132,179,124,3,147,124,132,147,132,147,132,179,132, + 147,124,3,179,132,134,180,132,212,132,114,124,211,140,16,124,231,65,3,8, + 66,3,40,66,132,40,74,40,74,40,66,41,66,6,40,66,132,8,66,8, + 66,40,66,232,65,3,231,57,133,199,57,199,57,199,49,167,49,166,49,3, + 134,41,131,102,41,101,41,102,33,3,69,33,134,37,33,4,25,233,41,78, + 83,196,16,131,8,3,163,8,131,131,8,130,8,130,16,7,98,8,135,66, + 8,65,8,98,8,97,8,66,8,66,8,65,8,3,66,8,131,65,8,66, + 8,66,8,5,98,8,132,163,16,163,16,98,8,98,8,3,66,8,3,98, + 8,136,66,8,98,8,98,8,97,8,97,8,66,8,97,8,98,8,24,65, + 8,3,66,8,153,65,0,66,8,65,8,65,8,97,8,65,8,65,8,97, + 8,66,8,97,8,65,0,98,8,66,8,98,8,98,8,66,8,66,8,98, + 8,65,8,66,8,66,8,65,8,66,8,98,8,65,8,3,66,8,132,66, + 0,66,0,66,8,66,8,7,98,8,129,98,0,17,98,8,134,1,0,142, + 107,13,91,41,58,41,58,9,50,3,232,49,137,168,41,200,41,168,49,135, + 41,135,41,167,41,135,41,167,41,135,41,4,167,41,3,168,41,141,200,49, + 9,50,9,58,171,82,236,90,45,99,78,99,110,107,45,99,236,82,45,91, + 78,91,78,91,3,143,99,164,207,99,176,107,208,107,17,108,37,25,65,8, + 244,148,183,165,243,148,142,107,236,90,236,90,73,74,239,115,231,57,4,33, + 0,0,101,41,203,90,105,74,174,115,45,99,106,74,199,49,69,33,195,24, + 33,0,0,0,0,0,32,0,33,8,65,8,130,16,162,16,130,16,162,24, + 5,130,16,134,98,16,130,16,97,16,97,16,97,8,97,16,3,65,8,154, + 33,8,33,8,64,8,65,8,98,16,163,16,162,16,195,24,37,41,196,24, + 195,24,195,24,130,16,228,24,41,17,8,9,8,17,8,9,232,8,231,8, + 232,8,8,9,8,9,231,0,231,0,199,8,3,198,0,4,166,0,7,133, + 0,129,101,0,3,133,0,132,101,0,197,8,103,33,135,41,3,37,33,144, + 4,33,36,33,37,33,37,33,69,33,70,33,69,33,70,41,102,33,102,41, + 134,41,102,33,135,41,135,41,134,41,167,41,8,167,49,146,167,41,167,41, + 167,49,167,41,167,49,135,41,135,41,134,41,134,41,103,41,134,41,134,41, + 102,41,102,41,70,41,70,33,69,33,69,33,3,37,33,3,37,25,131,5, + 25,5,25,4,25,3,5,25,129,4,25,7,5,25,129,5,17,3,5,25, + 129,37,25,4,5,25,135,37,25,38,25,38,25,37,25,38,25,38,25,5, + 25,147,3,3,78,91,182,110,91,78,91,77,91,77,83,78,91,77,91,45, + 83,13,83,236,74,172,66,106,58,74,50,9,50,9,50,232,41,232,41,9, + 42,41,50,106,58,106,58,74,58,232,41,167,33,135,33,135,25,167,33,200, + 41,232,41,200,41,200,41,200,33,168,33,168,33,135,25,103,25,135,33,233, + 41,106,58,171,74,13,91,45,91,77,99,77,99,45,99,45,99,77,99,45, + 99,45,91,45,91,77,99,45,99,77,91,77,99,45,99,3,45,91,130,45, + 99,45,99,8,45,91,166,77,91,77,91,45,91,13,91,203,82,171,82,203, + 90,236,90,77,99,207,107,49,116,17,116,170,74,162,16,65,8,9,42,208, + 107,147,132,146,124,147,124,114,124,147,124,114,124,146,124,147,124,146,124,147, + 124,114,124,114,124,147,124,114,124,114,124,147,124,146,124,147,124,147,132,147, + 132,179,124,5,147,124,142,114,124,81,124,114,124,146,124,147,132,147,132,179, + 124,147,124,147,124,179,132,147,124,179,124,179,132,179,132,4,147,124,148,179, + 132,147,132,179,132,147,132,179,124,180,132,180,132,179,132,212,132,114,132,20, + 149,206,115,231,65,40,66,40,66,8,74,40,66,8,66,40,66,40,74,4, + 40,66,129,40,74,3,40,66,3,8,66,137,232,65,231,65,8,58,231,57, + 199,57,199,57,199,49,199,49,166,49,4,134,41,130,102,41,102,41,4,69, + 33,139,69,25,228,24,106,50,236,74,163,16,131,8,131,8,163,16,163,8, + 130,8,131,8,9,98,8,131,66,8,66,8,65,8,5,66,8,134,65,8, + 65,8,66,8,66,8,98,8,66,8,4,98,8,139,130,8,98,8,130,8, + 65,8,65,8,98,8,65,8,97,8,66,8,65,8,98,8,4,65,8,130, + 65,0,65,0,17,65,8,156,97,8,65,8,65,8,66,8,66,8,97,8, + 66,8,65,8,66,8,66,8,97,8,66,8,66,8,65,8,97,8,66,8, + 66,8,97,8,66,8,66,8,98,8,98,8,66,8,98,8,98,8,65,8, + 66,8,97,8,3,66,8,133,65,8,98,8,66,8,97,8,97,0,3,66, + 8,131,97,8,66,8,65,8,3,66,8,147,98,8,66,8,66,8,98,0, + 66,0,66,8,65,0,66,0,66,0,98,8,66,8,66,8,66,0,66,0, + 98,0,66,0,98,0,66,0,98,8,3,66,0,207,1,0,77,99,236,82, + 41,66,42,58,9,58,9,58,232,49,232,49,168,41,167,41,200,49,135,41, + 135,41,167,41,135,41,167,41,135,41,168,41,168,49,167,41,135,41,168,41, + 167,41,200,41,200,49,200,49,41,58,139,74,236,90,45,99,77,99,110,107, + 45,99,236,82,45,91,78,91,110,99,143,99,142,99,143,99,175,99,175,99, + 176,107,208,115,49,124,0,0,179,148,247,173,52,149,207,115,13,99,236,90, + 73,74,207,123,8,66,36,33,0,0,69,41,138,82,40,66,207,115,16,124, + 16,132,16,124,240,123,16,124,207,115,77,99,203,82,8,66,199,57,37,41, + 65,8,33,8,65,8,65,8,33,8,33,8,3,65,8,154,64,8,65,8, + 32,8,33,8,32,8,32,8,33,8,65,8,97,8,131,8,163,16,197,16, + 6,25,6,25,130,16,65,8,195,24,4,33,163,24,195,24,130,16,162,24, + 38,25,41,17,232,8,231,0,5,231,8,133,8,9,231,0,199,0,198,8, + 198,8,4,166,0,138,165,0,165,0,133,0,133,0,101,0,101,0,132,0, + 100,0,100,0,132,0,3,133,0,138,101,0,100,0,165,8,39,25,167,41, + 200,41,200,49,199,49,199,41,199,49,3,200,49,136,167,49,199,49,200,49, + 167,41,168,49,200,41,167,41,167,49,3,135,41,163,134,41,135,41,134,41, + 134,33,102,33,102,33,70,33,102,33,70,33,70,33,69,25,70,33,38,33, + 38,33,69,33,37,33,5,25,37,25,37,25,6,25,37,25,5,25,5,25, + 37,25,5,25,38,25,37,25,37,25,5,25,37,25,37,25,38,25,38,25, + 37,25,37,25,20,38,25,129,37,25,4,38,25,1,37,17,137,3,132,110, + 91,110,91,110,99,142,99,6,110,91,147,111,91,110,91,78,91,45,83,13, + 75,171,66,106,58,41,50,9,50,233,41,232,41,9,50,41,50,74,58,107, + 58,106,58,41,50,232,41,167,33,3,135,33,146,167,25,167,33,168,33,168, + 33,167,33,135,33,135,25,103,25,103,25,135,33,9,50,138,66,203,74,12, + 91,77,91,45,99,45,91,77,99,3,45,99,130,77,91,45,99,3,77,99, + 129,45,91,4,45,99,131,77,91,45,91,77,91,6,45,91,157,77,91,12, + 83,171,74,171,82,236,82,236,90,78,99,208,107,82,124,142,107,166,41,65, + 0,163,8,45,75,82,116,147,124,147,124,146,124,147,124,146,124,147,124,147, + 124,146,124,147,124,114,124,146,124,114,124,114,124,146,124,7,147,124,130,147, + 132,179,132,3,147,124,130,146,124,115,124,3,147,124,136,147,132,147,124,147, + 124,179,124,147,132,147,132,179,124,179,132,5,147,124,148,179,132,179,124,147, + 124,179,124,179,132,179,132,180,132,180,132,179,132,146,132,20,149,77,107,231, + 65,40,66,40,66,8,66,40,66,40,74,40,66,40,74,5,40,66,143,8, + 66,40,66,40,66,8,66,8,66,232,57,8,66,232,57,231,57,231,57,199, + 57,199,57,199,49,167,49,167,49,3,134,41,145,102,33,102,41,102,41,69, + 33,69,33,37,33,69,33,37,25,228,24,139,66,172,74,131,8,163,8,163, + 16,130,8,131,16,130,8,8,98,8,4,66,8,3,65,8,148,65,0,65, + 0,65,8,65,0,65,8,66,8,65,8,65,8,97,8,98,8,98,8,65, + 8,66,8,66,8,65,8,65,8,65,0,65,8,66,8,66,8,3,65,8, + 143,65,0,65,8,65,0,65,0,65,8,65,0,65,8,65,8,65,0,65, + 8,65,0,65,0,65,8,65,8,97,8,5,65,8,146,97,8,65,8,97, + 8,66,8,97,8,97,8,66,8,65,8,97,8,97,8,65,8,66,8,66, + 8,65,8,97,8,66,8,98,8,97,8,3,65,8,134,66,8,97,8,65, + 8,65,8,98,8,66,8,3,65,8,133,33,0,65,0,65,0,33,0,65, + 0,13,33,0,4,65,8,130,66,8,66,8,3,98,8,132,130,16,98,16, + 131,16,131,16,3,163,16,149,195,24,195,24,228,24,196,24,228,24,37,33, + 37,41,0,0,73,66,171,74,41,58,41,58,9,58,9,58,232,49,232,49, + 200,49,167,41,200,41,167,41,167,41,3,135,41,129,167,49,3,167,41,3, + 168,41,203,200,49,233,49,233,49,9,58,171,74,204,90,12,99,77,107,110, + 107,78,99,236,82,45,91,45,91,111,99,143,99,143,99,142,99,175,107,207, + 107,208,107,175,107,240,115,142,99,49,124,183,165,211,140,175,107,12,91,12, + 99,73,74,81,132,8,58,36,41,0,0,36,33,170,82,73,74,142,115,16, + 124,239,115,240,123,240,115,17,124,48,124,48,124,81,132,243,156,182,189,154, + 222,118,173,231,8,40,25,7,25,6,17,230,24,230,24,230,16,229,16,197, + 16,197,16,198,16,229,16,230,16,7,17,39,17,7,17,8,9,7,9,8, + 9,7,17,131,8,33,8,33,0,98,16,228,32,3,163,24,143,130,16,4, + 33,230,16,198,0,166,0,166,0,165,0,166,8,166,0,198,0,198,8,198, + 0,198,0,165,0,165,0,3,133,0,133,165,8,133,0,133,0,133,8,165, + 0,4,165,8,130,164,8,165,16,3,165,8,154,197,8,229,16,197,16,197, + 16,196,8,164,8,228,8,5,25,37,25,37,25,38,25,38,33,38,25,38, + 25,70,25,37,25,38,33,38,25,37,25,229,16,5,17,5,17,5,25,5, + 17,5,25,5,25,4,5,17,130,5,25,37,25,6,38,25,135,38,33,38, + 33,38,25,38,25,70,25,38,25,39,33,3,38,25,3,70,25,139,38,25, + 38,25,70,25,70,25,70,33,38,25,70,25,38,25,70,33,38,25,38,25, + 3,70,25,129,70,33,10,70,25,6,38,25,132,6,25,38,25,38,25,37, + 17,95,3,134,142,91,142,99,142,91,110,99,143,99,110,99,3,110,91,145, + 143,91,143,91,142,91,110,91,111,91,110,91,78,83,13,75,204,74,106,50, + 73,50,41,50,232,41,9,42,9,50,9,50,41,50,3,74,58,136,41,50, + 200,33,135,33,134,25,103,25,103,25,135,33,167,33,4,135,33,150,135,25, + 135,25,168,33,233,41,73,58,138,74,203,82,45,99,77,99,45,99,77,99, + 77,99,45,99,77,99,77,99,77,91,45,91,77,99,45,91,77,91,45,91, + 77,91,10,45,91,156,236,82,171,74,203,82,236,90,12,91,110,99,240,115, + 82,124,236,82,4,25,0,0,134,33,176,99,114,124,147,124,114,124,147,124, + 147,124,146,124,147,124,146,124,146,124,114,124,114,124,146,124,114,124,146,124, + 146,124,11,147,124,129,147,132,4,147,124,130,147,132,147,132,5,147,124,129, + 179,132,6,147,124,143,179,132,147,124,179,132,179,124,179,132,179,132,180,132, + 180,132,179,132,114,132,52,157,235,98,231,65,8,66,8,66,3,40,66,129, + 8,66,3,40,66,129,40,74,4,40,66,4,8,66,143,8,58,232,65,199, + 57,199,49,199,57,199,57,166,49,167,49,166,49,166,41,134,41,134,41,102, + 41,134,41,102,41,3,69,33,134,37,33,69,33,228,24,172,66,138,66,130, + 8,4,131,8,131,130,8,98,8,130,8,5,98,8,131,66,8,98,8,98, + 8,6,65,8,129,66,8,5,65,8,132,97,8,98,8,98,8,66,8,3, + 65,8,133,97,8,65,8,65,8,97,8,66,8,7,65,8,3,65,0,9, + 65,8,4,98,8,132,66,8,98,8,98,8,66,8,5,65,8,6,33,0, + 149,65,8,33,0,65,0,33,0,33,0,65,8,65,8,66,8,98,8,98, + 8,130,8,130,16,163,16,163,16,195,24,195,16,195,24,228,24,228,24,4, + 33,4,33,3,37,33,146,69,33,101,41,102,41,134,41,134,49,166,49,167, + 49,199,49,231,57,8,58,231,57,8,58,8,66,73,66,105,74,106,74,170, + 82,105,74,3,170,82,159,171,82,138,74,203,82,203,90,236,90,77,99,45, + 99,109,107,12,99,12,91,109,107,142,107,98,8,138,74,77,91,73,58,41, + 58,41,58,9,50,233,49,232,49,200,41,168,41,167,41,199,41,167,41,168, + 41,135,41,135,33,167,41,200,49,4,167,41,144,168,41,200,49,200,49,232, + 49,41,58,171,74,236,90,45,99,77,107,110,107,77,99,204,82,45,91,78, + 91,78,91,110,91,3,143,99,3,175,107,162,208,107,17,116,20,149,182,165, + 211,140,207,115,45,99,12,99,73,74,240,123,41,66,68,41,0,0,4,33, + 170,82,73,74,77,107,16,124,240,123,17,132,16,124,240,123,16,124,16,116, + 16,116,16,132,243,164,149,189,211,156,133,0,166,8,198,8,166,0,166,8, + 3,198,8,130,198,0,198,8,6,166,0,149,197,8,230,8,197,8,130,8, + 32,8,33,8,65,8,195,24,227,24,163,24,130,16,130,16,195,24,5,17, + 165,8,165,8,165,0,165,8,166,8,165,8,166,8,10,197,8,141,230,8, + 229,16,229,16,230,16,6,17,5,17,6,17,6,25,5,25,6,25,6,25, + 38,25,6,25,3,38,25,136,38,33,38,25,5,17,5,17,37,17,37,25, + 5,25,37,25,3,38,25,5,70,25,130,38,25,38,25,3,70,25,137,71, + 33,70,33,70,25,70,33,70,33,70,25,71,33,103,33,102,33,5,70,33, + 134,102,33,103,33,71,25,70,33,70,25,102,25,3,70,33,134,70,25,71, + 33,70,33,70,25,70,25,70,33,3,70,25,132,38,25,70,33,38,25,38, + 25,5,70,25,3,38,25,146,69,25,70,25,38,25,38,25,70,25,38,25, + 70,25,70,33,37,25,69,25,38,25,37,25,38,25,37,25,38,25,5,25, + 38,25,37,25,110,3,3,142,99,168,143,99,142,99,142,99,111,99,143,99, + 110,99,142,91,143,99,143,91,111,99,142,91,111,91,143,91,111,91,78,83, + 13,83,236,74,171,66,106,58,41,50,9,42,233,41,233,41,232,41,232,41, + 9,42,41,50,74,58,9,50,232,41,167,33,103,25,102,25,70,25,102,25, + 135,25,135,33,135,33,103,33,102,33,3,135,33,136,102,25,134,41,105,66, + 236,82,12,91,77,99,77,99,77,91,4,77,99,133,77,91,77,91,77,99, + 45,99,77,91,10,45,91,152,236,82,171,74,203,82,236,82,13,91,142,99, + 17,116,17,124,73,66,130,8,0,0,139,58,17,116,115,124,147,124,146,124, + 147,124,114,124,147,124,146,124,114,124,146,124,146,124,114,124,3,146,124,6, + 147,124,132,147,132,147,124,147,124,147,132,7,147,124,131,147,132,147,124,179, + 124,4,147,124,132,179,132,147,124,147,124,146,124,4,147,124,147,147,132,147, + 124,147,124,179,124,179,132,180,132,180,124,179,132,146,132,20,157,137,82,231, + 65,40,66,40,66,8,66,40,66,40,74,8,66,8,66,3,40,66,145,8, + 66,40,66,8,66,8,66,40,66,8,66,8,66,232,65,232,65,231,57,199, + 57,231,57,199,49,167,49,167,49,166,49,166,49,3,134,41,3,102,41,5, + 69,33,134,228,16,45,75,41,58,98,8,131,8,131,8,10,98,8,133,66, + 8,98,8,66,8,65,8,65,8,3,66,8,130,65,8,66,8,3,65,8, + 133,97,8,65,8,65,8,66,8,98,8,3,65,8,129,66,8,4,65,8, + 129,66,0,6,65,8,131,33,0,65,0,65,0,8,33,0,129,32,0,4, + 33,0,146,65,8,66,8,98,8,130,16,130,16,163,16,195,24,195,24,4, + 33,36,33,37,33,101,33,102,41,134,41,199,49,167,49,199,49,232,49,5, + 232,57,4,199,49,137,232,49,199,49,199,49,166,41,167,41,135,49,167,41, + 134,41,167,33,6,167,41,143,199,41,199,41,200,41,199,41,200,41,199,41, + 200,41,200,41,167,41,168,41,167,41,167,41,168,41,168,41,167,41,5,135, + 41,132,102,33,103,33,103,33,71,33,3,103,33,224,102,33,70,33,70,33, + 135,33,70,33,12,91,175,107,105,66,41,58,41,58,9,50,233,49,232,49, + 200,49,200,41,200,41,168,41,167,41,167,41,135,41,135,41,167,41,167,41, + 200,49,168,49,168,41,167,41,168,41,200,41,200,49,233,57,41,66,139,74, + 236,90,45,99,77,107,110,107,78,99,204,82,237,82,78,91,45,91,78,91, + 110,99,175,99,143,99,143,99,175,107,176,107,176,107,17,116,85,157,215,165, + 244,148,240,115,45,99,12,99,73,74,239,123,73,74,69,41,32,0,228,32, + 138,82,105,74,77,107,16,124,208,115,239,123,240,123,240,115,16,124,240,123, + 17,124,48,132,19,173,182,189,243,156,165,0,166,8,165,8,165,0,197,8, + 165,8,165,8,197,8,198,8,197,8,197,8,166,8,198,8,230,8,198,16, + 230,16,39,25,196,16,4,65,8,135,195,24,4,33,162,16,130,16,162,24, + 162,16,37,25,4,6,17,130,6,25,7,17,3,6,17,159,38,17,6,25, + 6,25,6,17,38,25,38,25,38,17,38,25,39,25,38,25,70,25,70,25, + 71,25,71,33,103,33,71,33,71,25,71,25,103,33,103,33,71,33,102,25, + 103,33,70,33,103,33,71,33,103,33,70,33,70,33,103,33,102,33,7,103, + 33,133,103,25,103,33,135,33,135,33,71,33,10,103,33,130,71,33,135,33, + 4,103,33,129,71,33,4,103,33,138,71,33,103,33,103,33,102,33,102,25, + 70,33,71,33,70,33,71,33,70,33,3,70,25,5,70,33,130,70,25,70, + 25,3,70,33,142,70,25,70,33,70,33,70,25,70,25,38,25,38,25,70, + 25,38,25,38,25,38,33,38,33,70,25,37,25,3,38,25,129,38,33,3, + 37,25,121,3,165,142,99,143,99,142,99,143,91,143,99,143,99,142,91,111, + 99,143,99,142,91,143,99,143,99,111,99,143,91,143,99,143,99,143,91,111, + 91,111,91,143,91,110,91,78,83,13,75,204,66,106,58,8,42,200,33,167, + 41,167,41,167,33,167,33,232,41,41,50,42,50,9,42,200,33,167,25,5, + 70,25,150,103,33,135,33,135,33,135,25,4,25,196,16,69,33,231,49,41, + 58,171,74,236,82,45,91,77,99,77,91,77,99,45,91,77,91,45,91,45, + 99,45,91,45,91,77,91,9,45,91,141,203,74,171,74,203,82,236,90,45, + 91,175,107,49,116,175,107,134,41,33,8,130,8,111,91,82,124,4,146,124, + 141,147,124,146,124,114,124,114,124,146,124,114,124,146,124,146,124,114,124,147, + 124,146,124,147,124,146,124,13,147,124,129,147,132,4,147,124,143,179,124,147, + 124,179,132,179,124,147,124,115,124,146,124,147,124,147,124,147,132,179,124,147, + 124,179,124,179,132,180,124,3,179,132,131,146,132,114,132,19,149,3,8,66, + 132,40,74,8,66,40,66,8,66,5,40,66,135,41,74,8,66,40,66,8, + 66,8,66,232,65,8,66,4,231,57,133,167,49,199,49,199,49,167,49,167, + 49,5,134,41,130,102,33,101,33,3,69,33,134,37,33,69,33,228,24,236, + 74,41,58,98,8,5,130,8,130,98,8,66,8,6,98,8,129,97,8,3, + 66,8,3,65,8,130,33,0,65,0,6,33,0,130,66,0,66,8,3,33, + 0,3,65,8,131,66,8,98,8,98,8,3,130,16,3,163,16,144,195,24, + 196,24,228,24,4,25,4,25,36,33,69,33,101,41,102,41,134,41,166,49, + 167,49,199,49,232,57,231,49,231,49,3,199,49,132,167,49,134,41,102,33, + 102,33,3,69,33,138,36,25,228,24,228,24,195,16,163,16,163,8,131,8, + 130,8,130,8,98,8,5,130,8,137,131,8,131,8,163,8,131,16,163,8, + 163,8,163,16,195,16,196,16,3,228,16,133,229,16,5,25,37,17,37,25, + 37,25,3,70,25,130,69,25,70,17,3,38,25,3,70,25,129,102,25,4, + 70,25,130,38,25,37,25,3,70,25,150,70,33,103,33,70,25,38,25,70, + 25,38,25,70,25,102,25,70,25,70,25,5,17,13,91,143,107,106,74,41, + 58,9,58,41,58,232,49,233,49,200,49,167,41,168,49,3,167,41,178,168, + 41,135,41,168,41,200,41,200,49,200,41,200,49,167,41,168,41,200,49,232, + 49,233,49,42,58,139,74,236,90,45,99,77,99,110,107,78,99,172,74,204, + 82,45,83,46,91,110,99,143,99,175,99,143,99,143,99,175,99,175,99,175, + 107,240,115,52,149,215,165,179,140,240,115,12,99,45,99,73,74,142,115,138, + 74,101,41,33,0,227,24,138,82,138,74,45,99,16,124,240,123,208,115,4, + 240,115,140,16,124,16,124,243,164,150,181,52,173,71,25,39,25,39,25,71, + 25,71,25,38,25,39,25,3,71,25,172,39,25,39,25,71,25,71,25,104, + 25,103,33,131,8,32,8,65,8,65,8,130,16,135,33,103,33,130,16,130, + 16,162,16,163,24,102,33,168,33,104,33,103,25,103,33,103,33,136,33,136, + 33,104,33,136,33,104,33,103,33,103,33,136,25,103,25,103,33,135,33,103, + 25,103,33,104,25,104,33,103,33,104,33,135,33,136,33,103,33,103,33,7, + 135,33,137,136,33,135,33,167,33,135,33,135,33,136,33,135,33,135,33,135, + 41,3,135,33,129,135,41,9,135,33,129,135,41,3,135,33,140,103,33,135, + 41,135,33,136,33,136,41,135,41,135,33,135,33,136,33,135,33,135,33,136, + 33,5,135,33,137,135,41,135,33,135,41,135,33,135,33,135,41,103,41,103, + 33,134,33,3,103,33,131,102,33,103,33,71,33,3,102,33,136,103,33,102, + 33,70,33,102,33,70,33,102,33,70,33,102,25,9,70,33,135,70,25,70, + 33,70,33,38,33,70,33,70,25,70,33,40,3,130,143,99,142,99,4,143, + 99,132,143,91,143,91,143,99,143,91,3,143,99,130,143,91,143,99,4,143, + 91,3,111,91,146,143,91,111,91,45,83,172,66,107,58,42,50,9,42,232, + 41,168,41,167,33,167,33,200,41,233,41,9,50,232,41,200,41,167,33,135, + 25,3,70,25,147,103,25,135,25,102,33,4,17,228,16,102,33,167,41,167, + 41,200,41,8,58,105,66,203,82,12,91,45,91,45,91,77,91,77,91,77, + 99,77,91,10,45,91,156,12,91,203,74,171,82,236,90,12,91,45,91,208, + 107,17,116,109,99,4,17,32,0,37,25,208,99,114,124,146,124,146,124,147, + 124,114,124,146,124,114,124,146,124,114,124,114,124,146,124,146,124,114,124,114, + 124,146,124,17,147,124,129,147,132,3,147,124,130,147,132,147,132,8,147,124, + 130,179,124,179,124,4,179,132,138,180,132,179,132,146,132,211,140,178,140,199, + 65,8,66,40,66,40,66,8,66,3,40,66,129,40,74,3,40,66,130,8, + 66,40,66,4,8,66,129,232,57,3,231,57,134,199,57,199,57,199,49,167, + 49,167,49,166,49,4,134,41,131,102,41,101,41,101,33,5,69,33,135,228, + 16,204,74,200,49,65,0,98,8,98,8,66,0,3,33,0,133,1,0,1, + 0,0,0,1,0,1,0,4,0,0,142,1,0,33,0,33,8,66,8,98, + 8,131,16,163,16,195,24,228,24,4,33,37,33,69,41,134,41,102,41,3, + 134,41,152,134,49,134,41,134,41,102,41,134,41,134,41,231,49,199,49,166, + 49,134,41,134,41,102,41,101,41,101,33,69,41,69,33,69,33,37,33,4, + 25,228,24,227,24,195,16,163,16,162,16,3,130,8,132,98,8,98,8,97, + 8,97,8,6,98,8,130,130,8,98,8,4,130,8,131,130,16,162,16,131, + 8,7,163,16,129,195,16,3,196,16,131,195,16,195,16,196,16,4,228,16, + 3,5,25,133,37,25,37,25,38,25,37,25,37,25,3,5,17,130,38,25, + 38,25,3,70,25,134,102,25,70,25,102,25,103,33,70,25,38,25,3,37, + 25,133,38,25,103,25,102,25,102,33,103,33,3,70,25,151,103,25,103,25, + 102,33,103,25,103,25,229,16,175,107,143,107,74,66,41,66,9,58,9,58, + 9,50,232,49,232,49,200,41,200,49,167,41,168,41,167,33,135,41,135,41, + 168,41,3,200,49,171,232,49,168,41,200,41,200,49,232,49,9,50,42,58, + 172,82,236,82,45,99,77,107,110,107,110,107,204,82,204,82,45,91,78,91, + 110,99,143,99,143,99,111,99,143,99,208,107,176,107,208,107,241,123,20,149, + 215,165,20,149,16,116,13,99,45,99,73,74,174,115,170,82,101,41,65,8, + 195,24,138,82,138,82,12,99,17,132,240,115,3,240,123,137,240,115,240,123, + 16,124,16,132,243,164,149,189,85,181,201,41,136,25,11,136,33,143,201,33, + 38,25,98,8,65,8,97,8,65,8,4,33,169,41,201,33,228,24,130,16, + 130,16,162,24,70,33,169,41,21,168,33,130,169,33,168,33,4,168,41,137, + 200,41,200,33,200,41,168,41,200,41,200,41,168,41,168,41,200,33,3,168, + 33,130,168,41,168,33,4,168,41,129,168,33,8,168,41,129,168,33,3,168, + 41,132,167,33,168,41,167,41,167,41,4,168,41,132,168,33,200,41,168,41, + 167,33,3,168,41,140,168,33,168,33,167,41,167,33,168,41,167,41,135,41, + 167,41,167,33,167,41,135,41,135,41,7,135,33,4,103,33,5,102,33,136, + 103,33,70,33,102,33,102,33,70,33,70,33,102,33,71,33,9,70,33,154, + 3,140,142,99,143,99,111,91,143,91,143,99,143,91,143,99,143,91,143,99, + 143,99,142,91,143,99,4,143,91,133,143,99,143,91,143,91,111,91,111,91, + 3,143,91,162,78,83,14,75,237,74,237,74,204,66,172,66,106,50,9,42, + 232,41,232,33,232,41,200,41,233,41,9,42,9,42,9,50,233,41,200,33, + 135,25,102,25,102,25,70,25,228,16,228,16,134,33,199,49,200,49,200,41, + 200,41,199,41,73,58,106,66,203,82,45,91,3,77,91,131,45,99,45,91, + 77,91,8,45,91,142,12,91,203,82,171,82,204,90,236,90,77,91,240,107, + 17,116,236,82,130,8,33,0,232,33,49,116,147,132,3,147,124,131,146,124, + 115,124,146,124,3,114,124,136,146,124,114,124,147,124,146,124,147,124,147,132, + 147,124,147,124,4,147,132,10,147,124,129,179,124,3,147,124,129,179,124,4, + 147,124,147,146,124,147,124,147,124,147,132,147,124,179,124,147,124,179,124,179, + 132,179,132,180,132,179,132,179,124,146,132,244,148,80,132,199,57,40,66,8, + 66,5,40,66,131,8,66,8,66,40,66,7,8,66,135,8,58,231,57,231, + 57,199,57,199,57,199,49,199,49,3,166,49,168,166,41,166,41,134,41,101, + 41,102,41,102,41,102,33,69,33,69,33,37,25,69,33,69,33,65,0,204, + 74,99,8,0,0,98,8,195,16,37,33,134,41,199,57,41,66,138,74,74, + 66,73,66,41,66,73,66,106,74,171,74,171,74,138,74,171,74,138,74,106, + 74,73,66,41,58,8,58,232,49,199,49,167,49,3,134,41,145,69,41,36, + 33,4,25,4,25,228,24,228,24,196,24,196,24,195,16,163,16,163,16,195, + 16,163,16,162,16,130,8,130,16,130,8,4,98,8,129,130,8,3,98,8, + 135,130,8,130,8,98,8,130,8,130,8,130,16,130,16,3,130,8,142,130, + 16,130,16,131,16,130,8,162,16,130,8,130,8,163,16,162,8,162,16,130, + 16,131,16,163,16,131,16,5,163,16,130,195,16,163,16,4,195,16,3,196, + 16,143,196,8,196,16,196,16,228,16,228,16,4,17,229,16,5,17,37,25, + 38,25,70,25,37,25,5,17,5,17,5,25,3,5,17,131,70,17,70,25, + 102,25,3,70,25,179,102,25,103,33,135,25,70,25,102,25,70,25,70,25, + 38,25,70,25,70,25,102,25,70,25,103,33,103,25,70,25,103,33,103,33, + 135,33,135,33,167,33,38,25,49,124,45,91,207,123,175,115,200,49,9,50, + 9,58,232,49,232,41,200,41,200,41,167,41,168,41,168,41,168,49,167,49, + 200,49,168,49,200,49,168,41,232,49,200,49,200,49,232,49,233,49,9,50, + 41,58,171,82,204,90,45,99,3,110,107,159,204,82,237,82,46,91,78,91, + 110,99,143,99,142,99,143,99,175,107,208,107,208,107,240,107,241,115,244,148, + 215,165,244,148,16,124,45,99,77,99,41,74,239,123,203,82,101,49,65,8, + 163,24,138,82,138,82,235,90,49,132,240,123,240,123,3,240,115,161,240,123, + 16,124,16,124,210,164,149,181,117,181,10,50,168,25,169,33,169,33,168,33, + 169,33,169,33,168,33,201,41,169,33,200,33,201,41,10,50,70,25,33,0, + 65,8,65,8,32,8,69,33,233,41,41,42,5,25,130,16,163,16,163,24, + 102,33,9,42,9,233,41,142,9,50,9,42,9,50,41,50,9,50,42,50, + 41,50,10,42,10,42,10,50,10,50,9,42,9,50,10,50,6,9,50,131, + 9,42,233,49,233,49,5,9,50,131,233,41,233,41,233,49,4,232,41,135, + 200,41,233,41,232,41,200,49,233,41,232,41,200,41,4,232,41,141,233,41, + 232,41,233,41,232,49,232,41,233,41,233,49,232,41,233,41,201,41,232,41, + 233,49,233,49,3,232,41,133,200,41,200,41,200,49,200,41,232,41,3,200, + 41,133,168,41,200,41,200,41,167,41,200,41,3,168,41,132,167,41,167,41, + 135,41,167,41,4,135,33,129,135,41,3,135,33,132,103,33,135,33,134,41, + 135,41,7,103,33,134,102,33,102,33,103,33,102,33,103,33,70,33,3,102, + 33,132,3,134,110,99,143,99,142,99,143,99,143,91,143,99,4,143,91,138, + 142,91,142,91,143,99,143,99,143,91,143,91,143,99,143,91,143,91,143,99, + 4,143,91,170,78,83,14,75,46,75,78,83,111,91,111,91,45,75,237,66, + 205,66,107,58,74,50,106,50,74,50,107,58,138,58,139,58,139,58,140,58, + 139,58,74,50,233,41,232,41,41,58,73,66,138,74,203,74,171,74,171,82, + 203,82,204,82,203,74,203,82,203,82,12,91,45,91,45,99,45,99,77,91, + 77,91,45,91,45,91,77,91,6,45,91,147,236,82,171,74,171,82,236,90, + 12,91,110,99,241,107,240,107,106,66,32,0,98,8,171,66,82,124,147,124, + 146,124,115,124,147,124,114,124,146,124,5,114,124,132,146,124,146,124,147,124, + 146,124,5,147,124,131,147,132,147,124,146,124,3,147,124,129,146,124,7,147, + 124,129,147,132,4,147,124,129,146,124,4,147,124,175,179,124,147,124,147,124, + 179,124,179,132,179,132,179,124,179,132,179,132,147,124,114,132,20,149,142,115, + 199,57,40,66,8,66,40,66,8,66,40,66,8,66,8,66,40,66,8,66, + 40,66,8,66,8,66,40,66,8,66,8,66,231,65,231,57,232,57,231,57, + 199,57,231,57,199,57,199,57,167,49,167,49,166,49,166,49,134,49,134,41, + 102,41,134,41,102,41,102,33,4,69,33,151,37,33,195,16,81,116,183,165, + 117,165,150,165,20,149,146,132,16,116,174,99,77,91,171,74,73,58,41,58, + 199,49,69,33,5,25,228,16,196,16,163,16,131,8,131,8,98,8,3,130, + 8,144,98,8,130,8,130,8,98,16,131,16,131,16,130,16,130,16,162,8, + 130,16,162,16,163,16,130,16,162,16,162,16,130,16,3,162,16,136,131,16, + 131,16,163,16,131,16,130,16,130,16,131,16,131,16,3,130,16,129,131,16, + 3,130,16,129,130,8,3,130,16,147,130,8,130,8,131,16,130,16,131,8, + 163,8,130,16,163,16,131,8,162,16,131,8,163,8,163,16,131,16,163,16, + 163,16,131,8,163,8,162,16,6,163,16,4,195,16,129,196,16,5,228,16, + 137,5,17,5,25,37,25,37,17,38,25,38,25,70,25,70,25,38,25,4, + 37,25,134,70,25,38,25,70,25,70,25,102,25,135,25,3,135,33,129,103, + 33,3,135,33,129,167,33,3,135,33,129,136,33,3,135,33,149,168,33,167, + 41,168,41,200,41,200,41,232,41,200,33,135,33,77,91,45,91,110,107,183, + 181,9,66,8,50,9,50,9,58,200,49,168,41,200,49,200,41,199,41,4, + 167,41,174,200,49,232,49,200,49,232,49,200,49,200,49,9,50,9,58,9, + 58,74,66,171,74,236,90,45,99,77,99,110,107,78,107,237,82,13,83,78, + 91,78,91,111,99,78,99,78,91,143,99,175,99,176,107,208,107,241,115,208, + 115,244,140,215,173,53,149,48,124,45,99,110,99,73,74,130,16,235,90,166, + 49,65,8,162,16,138,82,170,82,203,90,49,132,240,123,3,240,115,137,240, + 123,16,116,240,123,16,124,178,156,149,181,150,181,172,66,233,41,4,10,42, + 3,42,50,140,74,50,75,50,75,50,229,16,33,8,98,16,65,8,98,16, + 42,58,172,58,139,58,195,16,3,130,16,136,69,33,140,66,140,58,140,58, + 139,58,139,58,140,66,140,58,3,172,66,130,172,58,172,58,10,172,66,130, + 172,58,172,66,4,139,58,6,107,58,133,106,58,106,58,107,58,106,58,106, + 58,3,74,58,132,74,50,74,58,73,50,42,58,3,74,58,129,42,58,4, + 74,58,129,106,58,6,74,58,129,74,50,4,74,58,137,41,50,41,58,42, + 58,74,50,41,50,42,58,41,50,41,58,41,50,7,9,50,134,232,49,233, + 49,232,41,233,49,232,41,200,49,3,200,41,134,200,49,168,41,200,41,200, + 41,168,41,168,41,5,167,41,133,135,41,167,41,135,41,135,33,167,41,4, + 135,41,134,135,33,135,41,135,41,135,33,103,33,135,41,3,103,41,1,102, + 33,49,3,132,110,99,142,99,142,91,142,91,20,143,91,141,111,83,78,83, + 78,83,111,91,111,91,111,83,78,83,78,83,78,75,237,66,172,58,172,66, + 171,66,3,204,66,136,172,58,204,66,13,75,13,75,204,66,13,83,12,91, + 236,90,3,45,91,133,45,99,45,99,77,99,77,99,77,91,3,45,91,132, + 45,99,45,99,77,99,77,91,9,45,91,141,203,82,171,74,171,82,236,90, + 45,91,110,99,17,116,175,107,8,58,0,0,195,16,13,75,114,124,3,146, + 124,143,114,124,146,124,114,124,146,124,114,124,146,124,146,124,114,124,146,124, + 146,124,147,132,147,124,179,132,147,124,146,124,21,147,124,129,146,124,7,147, + 124,144,179,124,179,132,179,124,179,132,179,132,179,124,179,132,146,132,85,157, + 235,98,231,65,40,66,8,66,40,66,8,66,40,66,8,8,66,139,8,58, + 232,65,231,65,232,57,231,57,231,57,199,57,199,57,199,49,167,49,167,49, + 3,166,49,3,134,41,130,102,41,102,33,6,69,33,132,37,25,102,25,172, + 66,195,16,3,98,8,137,130,8,131,8,131,16,163,16,228,24,228,24,195, + 16,163,16,163,16,3,195,16,131,196,24,196,16,196,16,6,195,16,8,163, + 16,129,162,16,6,163,16,137,130,16,162,16,162,16,163,16,131,16,130,16, + 163,16,163,16,130,16,4,130,8,129,130,16,6,130,8,146,130,16,130,16, + 131,16,130,8,130,8,131,16,163,8,131,8,131,8,163,16,163,16,131,8, + 163,16,131,16,163,8,163,16,163,16,163,8,5,163,16,131,195,16,163,16, + 195,16,3,196,16,4,228,16,134,5,25,5,25,37,17,37,25,37,25,38, + 25,5,70,25,135,37,25,38,25,38,25,70,25,70,25,102,25,102,25,3, + 135,33,3,167,33,136,168,33,168,33,167,33,135,33,168,33,168,33,167,33, + 168,33,3,200,33,238,168,33,200,41,200,41,136,33,168,33,200,41,200,41, + 233,41,136,33,175,107,45,99,138,82,146,140,204,82,200,49,9,58,232,49, + 200,49,168,41,200,49,200,41,167,41,200,49,167,41,200,41,200,49,168,49, + 232,49,233,57,232,49,200,49,232,49,232,49,9,58,41,58,74,58,171,74, + 237,90,45,99,77,107,110,107,77,99,236,82,236,82,45,91,78,91,110,91, + 78,91,78,99,110,99,110,99,143,99,208,107,241,115,240,115,212,148,215,165, + 53,149,81,124,45,99,78,107,232,57,195,24,163,24,166,57,98,8,130,16, + 138,74,171,82,203,82,48,132,240,123,240,115,240,115,240,123,16,124,240,115, + 240,123,240,123,146,156,149,181,182,189,13,83,139,58,140,58,140,66,172,58, + 172,66,172,58,172,66,172,66,14,75,172,58,163,16,65,8,130,16,33,8, + 4,25,171,66,46,75,205,74,37,25,65,8,162,16,162,16,130,16,41,58, + 14,75,237,66,237,66,5,237,74,133,13,75,237,74,237,66,13,75,237,74, + 7,13,75,134,237,74,237,74,237,66,237,74,204,66,205,66,3,204,66,130, + 172,66,204,66,6,172,66,134,171,66,171,58,171,66,140,66,171,66,171,58, + 3,139,66,129,171,66,6,139,66,145,171,66,139,58,139,66,171,66,171,66, + 139,66,171,66,171,66,139,66,139,66,139,58,139,66,139,58,139,58,139,66, + 139,66,139,58,3,107,58,129,106,58,5,74,58,133,74,50,42,58,41,58, + 41,58,41,50,5,9,50,136,233,49,9,50,233,41,232,49,232,49,200,49, + 200,41,200,49,3,200,41,130,200,49,200,41,5,168,41,135,167,41,167,41, + 168,41,135,41,167,41,167,33,167,41,5,135,41,130,135,33,135,41,78,3, + 134,110,99,142,91,142,91,143,91,143,99,142,91,3,143,91,130,111,91,110, + 91,4,143,91,132,143,99,143,91,143,99,111,91,5,143,91,138,111,91,110, + 83,110,83,78,83,111,91,111,83,110,83,110,83,78,83,46,75,3,237,66, + 129,237,74,4,237,66,3,13,75,134,110,107,12,99,203,82,45,91,45,99, + 45,91,3,45,99,9,45,91,129,77,91,8,45,91,143,171,82,171,74,203, + 82,236,90,45,91,143,99,17,116,142,99,134,41,0,0,5,25,78,83,147, + 124,146,124,114,124,3,146,124,4,114,124,131,146,124,115,124,146,124,5,147, + 124,129,147,132,8,147,124,129,146,124,7,147,124,135,146,124,146,124,147,124, + 147,124,114,124,147,124,146,124,6,147,124,159,179,124,179,132,147,124,179,132, + 179,124,179,124,147,124,81,124,150,165,73,82,8,66,40,66,8,66,8,66, + 40,66,8,66,40,66,8,66,8,66,40,66,8,66,8,66,8,58,8,66, + 8,66,8,58,232,57,199,57,231,57,199,57,199,57,3,199,49,131,167,49, + 167,49,166,49,3,134,41,132,102,41,102,41,102,33,101,33,5,69,33,142, + 36,25,199,33,208,99,37,33,196,24,228,16,4,25,228,24,228,24,4,25, + 37,25,37,25,69,33,196,24,4,195,16,137,195,8,164,16,195,16,195,16, + 163,16,163,16,195,16,163,16,195,16,13,163,16,140,162,16,163,16,163,16, + 130,16,162,16,163,16,163,16,130,16,131,16,162,16,130,16,162,16,3,130, + 16,130,130,8,130,16,6,130,8,142,130,16,131,8,130,8,130,8,162,8, + 130,16,163,16,131,16,131,8,131,16,162,16,163,8,163,8,130,8,9,163, + 16,129,163,8,3,195,16,3,196,16,133,228,16,228,16,4,25,5,25,5, + 17,3,37,25,3,70,25,129,103,25,5,102,25,132,103,25,135,25,135,33, + 135,25,3,135,33,132,167,33,135,33,167,33,200,33,7,135,33,202,168,33, + 200,33,232,41,200,41,168,33,135,33,103,33,103,25,135,25,167,33,168,33, + 103,25,16,116,207,107,106,74,77,99,17,116,9,58,9,50,8,50,232,49, + 200,49,168,49,167,41,200,49,168,41,168,41,200,49,200,49,233,49,200,49, + 9,58,9,58,232,49,232,49,9,50,9,58,41,58,74,66,171,82,236,90, + 45,99,78,107,110,107,13,99,236,82,236,82,45,83,45,91,78,91,110,99, + 111,99,143,99,175,99,143,99,175,99,208,107,240,115,244,148,247,165,20,149, + 49,124,142,107,106,74,167,57,130,16,163,24,228,32,130,16,97,8,105,74, + 203,90,170,82,48,132,3,240,115,141,240,123,240,115,240,115,240,123,16,124, + 146,148,117,181,150,181,143,99,237,66,237,74,14,75,13,75,3,14,75,149, + 143,83,172,58,130,8,97,8,130,16,0,0,167,41,78,83,79,83,79,83, + 37,25,65,8,163,16,163,16,130,16,195,24,45,83,79,75,46,75,78,75, + 46,83,8,46,75,132,78,75,46,75,79,83,78,75,4,46,83,141,45,83, + 46,75,46,75,45,75,13,75,14,75,13,75,13,75,13,67,13,75,237,74, + 237,74,237,66,4,237,74,137,237,66,236,74,237,74,236,74,236,66,205,66, + 204,74,236,66,204,66,5,204,74,157,204,66,204,74,204,66,236,66,204,66, + 204,74,172,74,204,66,204,66,204,74,204,66,204,66,204,74,172,66,172,74, + 204,66,172,66,172,66,171,66,172,66,171,66,172,66,171,66,139,58,139,58, + 138,66,139,66,107,58,139,58,3,106,58,4,74,58,130,74,50,42,58,3, + 41,50,4,9,50,3,233,49,133,233,41,200,49,200,49,200,41,201,49,4, + 200,41,133,168,41,168,41,167,41,167,41,135,41,3,167,41,130,135,41,167, + 41,3,135,41,112,3,3,110,91,134,110,99,110,99,110,91,143,91,110,91, + 143,99,4,110,91,133,143,91,111,91,143,91,143,99,111,91,3,143,91,129, + 111,91,3,143,91,138,110,91,46,83,78,75,78,83,79,83,79,83,78,83, + 78,83,78,75,13,75,3,237,66,141,237,58,13,67,13,75,46,75,46,75, + 13,75,13,75,77,99,45,99,235,90,45,99,45,91,44,91,3,45,91,133, + 45,99,45,91,45,99,45,99,77,91,12,45,91,145,12,91,171,82,171,82, + 203,82,236,90,77,91,175,99,49,116,77,91,37,25,0,0,102,33,143,91, + 147,132,146,124,114,124,146,124,6,114,124,129,146,124,3,147,124,130,147,132, + 146,124,3,147,124,132,146,124,146,124,147,124,147,132,3,147,124,129,146,124, + 10,147,124,3,146,124,130,147,124,146,124,5,147,124,139,179,124,179,124,179, + 132,179,132,179,124,147,124,179,124,147,132,146,132,150,165,231,65,4,8,66, + 130,40,66,40,66,7,8,66,130,7,58,8,58,4,231,57,132,199,57,199, + 49,199,49,167,49,4,166,49,3,134,41,131,102,41,70,33,102,33,3,69, + 33,144,37,33,69,25,37,33,228,16,13,75,45,91,69,33,36,25,5,25, + 69,33,69,33,228,24,4,25,5,33,102,33,70,33,3,195,16,129,196,16, + 3,195,16,131,196,16,195,16,195,16,5,163,16,129,195,16,8,163,16,134, + 131,16,131,16,163,16,163,8,163,16,130,8,3,163,16,135,130,16,131,16, + 163,16,130,16,162,16,130,8,162,16,3,130,16,147,130,8,130,8,163,16, + 130,8,131,16,130,16,130,8,130,16,131,8,163,8,162,8,131,8,131,8, + 163,8,162,8,163,16,163,8,130,8,162,8,10,163,16,130,195,16,163,16, + 3,196,16,172,228,16,196,16,228,16,228,16,228,24,4,17,5,25,5,17, + 37,25,38,25,70,25,37,25,102,25,70,25,102,25,102,25,135,33,102,33, + 103,33,135,33,102,25,103,25,102,25,103,25,103,33,102,25,103,25,103,33, + 135,33,167,33,168,33,135,33,135,33,103,25,102,25,103,33,135,33,136,33, + 168,33,200,41,200,41,233,41,233,41,200,41,3,135,33,193,200,41,200,41, + 135,33,204,82,45,91,171,82,232,57,211,140,204,74,232,41,41,58,200,49, + 167,41,168,41,167,41,200,41,200,41,167,41,200,41,200,49,200,49,233,57, + 233,57,232,49,233,49,233,49,9,58,9,50,41,58,74,66,171,82,236,90, + 13,99,110,107,78,107,171,74,204,82,236,82,13,83,45,91,78,99,110,99, + 143,99,143,99,175,99,175,107,175,107,208,107,240,115,179,140,247,173,53,157, + 146,140,171,82,166,49,101,49,98,16,32,8,162,24,130,16,98,16,105,74, + 203,82,170,82,16,124,5,240,115,161,240,123,16,124,16,124,113,148,149,189, + 182,189,208,107,46,75,111,83,79,83,79,83,78,83,143,83,144,91,168,33, + 0,0,130,16,65,8,65,8,138,66,241,99,143,83,144,91,196,24,33,8, + 98,8,195,24,195,24,97,8,41,58,208,91,111,83,143,83,3,111,83,3, + 143,83,129,111,83,4,143,83,3,111,83,137,143,83,111,91,143,91,111,83, + 111,83,79,83,78,83,111,83,111,83,3,78,83,136,46,83,78,75,46,83, + 46,75,46,83,78,83,46,75,46,75,3,45,75,131,46,83,13,75,45,75, + 4,13,75,129,237,74,6,13,75,129,237,74,3,13,75,145,13,83,13,75, + 13,75,237,74,13,75,13,75,12,75,237,74,237,74,236,74,237,74,237,74, + 205,74,204,74,204,74,204,66,204,66,5,172,66,130,171,66,171,66,3,139, + 66,139,107,66,107,58,107,66,106,58,74,58,74,58,42,58,74,58,41,50, + 42,50,41,50,5,9,50,133,233,49,233,49,9,42,232,41,232,41,4,200, + 49,134,200,41,200,41,168,41,167,41,168,41,168,41,3,167,41,131,135,41, + 167,41,135,41,84,3,130,110,91,111,99,3,110,91,135,110,99,142,91,143, + 91,110,91,111,91,111,91,110,91,3,111,91,130,110,91,143,91,5,111,91, + 155,143,91,143,91,111,91,110,83,46,75,46,83,78,75,46,75,46,83,78, + 83,78,75,78,75,46,75,13,67,237,74,13,67,237,66,237,66,13,75,78, + 83,46,75,46,83,12,83,12,99,13,99,12,91,45,99,5,45,91,129,45, + 99,13,45,91,146,13,91,45,91,45,91,12,91,171,74,171,82,203,82,12, + 91,78,91,208,107,49,116,13,91,4,17,32,0,167,33,208,99,147,132,146, + 124,4,114,124,129,114,116,3,114,124,131,147,124,146,124,147,132,3,147,124, + 134,146,124,147,124,147,124,146,124,147,124,146,124,14,147,124,132,115,124,146, + 124,114,124,146,124,7,147,124,129,179,124,3,179,132,135,179,124,147,124,147, + 124,146,132,178,140,52,157,166,57,3,8,66,129,40,66,7,8,66,4,232, + 65,130,231,57,231,57,3,199,57,132,199,49,199,49,167,49,167,49,3,166, + 49,133,134,41,134,41,102,41,101,41,101,33,6,69,33,155,69,25,227,16, + 110,83,106,66,5,33,5,25,37,25,69,33,134,41,37,33,4,25,4,25, + 167,41,102,41,163,16,195,16,196,16,196,16,195,16,195,16,196,16,196,16, + 195,16,195,16,163,16,195,16,195,16,16,163,16,153,162,16,162,16,163,16, + 163,16,130,16,163,16,162,16,162,16,130,8,162,8,130,16,131,8,163,8, + 131,16,130,8,130,8,131,16,130,8,131,16,130,8,131,16,163,8,130,8, + 163,8,130,8,3,163,16,3,163,8,130,163,16,130,8,4,163,16,129,163, + 8,3,163,16,130,195,16,163,16,4,195,16,129,196,16,4,228,16,131,229, + 16,5,25,5,17,3,37,25,129,38,25,3,70,25,133,103,25,102,25,102, + 33,135,33,135,25,3,135,33,132,102,25,103,25,102,25,103,33,4,135,33, + 130,168,41,168,41,4,167,33,130,168,33,200,33,3,200,41,4,233,41,145, + 232,41,200,41,233,41,200,33,103,33,240,123,142,107,203,82,5,33,244,140, + 45,83,200,41,9,58,232,49,200,49,200,41,199,41,3,200,41,153,200,49, + 199,41,200,49,9,58,233,57,9,58,9,58,233,49,41,58,41,58,74,58, + 74,66,172,82,13,91,13,99,78,107,78,107,138,74,204,82,236,82,45,91, + 78,91,78,91,110,99,110,99,3,143,99,151,176,107,240,107,208,115,179,140, + 247,173,53,157,81,132,8,66,166,57,4,33,170,82,98,8,33,8,162,24, + 162,16,41,66,236,90,170,82,16,124,16,124,240,115,240,115,16,116,3,16, + 124,172,49,124,113,148,117,181,182,189,49,116,111,83,144,91,143,91,144,91, + 241,99,13,75,38,33,65,8,130,16,0,0,4,25,46,83,241,99,176,91, + 176,91,71,33,65,8,98,8,130,16,162,16,163,24,98,16,175,91,176,91, + 176,91,144,91,176,91,176,91,144,91,176,91,144,91,176,91,144,91,175,91, + 176,91,175,91,144,91,176,91,176,91,3,143,91,134,143,83,143,91,143,91, + 111,91,143,83,143,83,5,111,83,136,78,83,79,83,79,83,78,83,78,83, + 78,75,78,83,46,83,3,78,83,137,46,83,46,75,46,83,46,75,46,75, + 45,83,46,75,46,75,14,75,3,13,83,131,45,75,13,75,13,83,3,45, + 75,129,13,83,3,13,75,132,13,83,13,83,237,74,13,75,6,237,74,139, + 205,74,236,74,204,74,204,74,172,66,172,66,171,66,172,66,171,66,171,66, + 139,58,3,139,66,4,106,58,3,74,58,132,42,50,10,58,41,50,41,50, + 3,9,50,134,233,49,233,49,232,49,233,49,232,49,200,49,5,200,41,131, + 168,41,200,41,168,41,4,167,41,131,135,41,167,41,135,41,83,3,7,110, + 91,137,142,91,142,91,111,91,78,91,110,91,142,91,111,91,110,91,143,91, + 5,111,91,143,143,91,143,91,111,91,143,83,78,83,13,75,45,75,46,83, + 46,75,46,75,78,83,78,83,46,75,46,75,14,75,4,237,66,138,14,75, + 46,75,46,75,46,83,236,82,203,90,12,99,13,91,45,99,45,99,15,45, + 91,150,44,91,45,91,45,91,13,91,45,91,45,91,236,82,171,74,171,82, + 203,82,13,91,110,99,240,107,49,116,236,82,195,16,32,0,232,41,208,107, + 147,124,114,124,146,124,3,114,124,154,114,116,114,124,146,124,147,124,147,124, + 146,124,147,124,179,124,146,124,178,132,146,124,146,132,178,132,146,132,178,132, + 146,132,146,124,178,132,146,124,179,124,146,124,146,124,147,124,115,124,147,124, + 146,124,4,147,124,135,115,124,114,124,115,124,146,124,147,124,146,124,115,124, + 4,147,124,132,179,124,179,132,179,124,179,124,3,147,124,136,146,132,211,140, + 178,148,166,57,40,66,8,66,8,66,40,66,6,8,66,141,40,66,232,57, + 232,57,8,66,232,57,231,57,231,57,199,57,231,57,199,57,167,49,199,49, + 198,49,3,166,49,130,134,41,134,41,3,102,41,130,101,33,101,33,3,69, + 33,146,37,33,69,33,69,33,196,16,175,91,135,41,5,25,37,25,5,25, + 37,25,37,25,37,33,232,49,199,49,134,41,101,41,164,16,195,24,3,196, + 16,3,228,16,129,196,16,3,195,16,129,196,16,8,163,16,129,163,8,10, + 163,16,130,163,8,131,16,3,163,16,150,131,8,163,16,130,16,130,16,163, + 8,130,16,162,16,130,8,130,16,163,16,163,8,162,16,130,16,163,8,131, + 8,131,8,130,16,163,16,163,16,163,8,163,16,163,8,10,163,16,133,195, + 16,163,16,196,16,163,16,195,16,3,196,16,5,228,16,137,5,25,4,25, + 5,25,5,25,37,25,38,25,70,25,70,25,102,25,3,103,33,5,135,33, + 129,167,33,7,135,33,131,200,33,200,41,168,41,5,200,41,134,233,41,233, + 41,232,41,233,41,9,42,233,41,4,9,50,142,233,41,135,33,240,123,142, + 107,171,82,196,16,147,132,143,91,232,49,9,58,232,49,199,41,200,41,232, + 49,3,200,41,220,200,49,200,49,233,49,232,49,233,57,9,58,41,58,9, + 58,41,58,74,58,41,58,106,66,204,82,236,90,13,91,77,99,110,107,73, + 66,204,82,13,83,45,91,46,91,78,91,78,91,110,91,110,99,110,99,143, + 107,176,107,208,107,208,107,146,140,215,165,20,149,49,124,8,66,101,41,69, + 41,77,99,204,74,32,0,65,8,130,16,163,24,138,82,236,90,16,124,16, + 124,240,115,240,123,16,124,240,123,17,124,82,132,114,132,113,148,117,181,182, + 197,114,132,176,91,208,91,241,99,147,116,201,41,130,16,162,16,98,16,0, + 0,134,41,17,100,241,99,208,91,18,100,168,41,65,8,98,8,65,16,162, + 16,130,16,162,16,37,41,50,100,208,91,208,91,176,91,209,99,208,91,176, + 91,208,91,176,91,208,91,208,91,6,176,91,130,175,91,208,91,5,176,91, + 130,175,91,143,91,3,143,83,131,111,83,111,83,111,91,3,111,83,131,79, + 83,111,83,110,83,8,78,83,3,46,83,134,78,83,46,83,46,83,46,75, + 46,83,46,83,3,46,75,134,45,75,46,75,14,75,14,75,13,75,45,75, + 4,13,75,4,237,74,134,236,74,236,74,204,74,204,74,205,66,204,66,4, + 172,66,130,171,66,171,66,4,139,66,129,107,58,3,106,58,133,74,58,74, + 58,42,58,42,50,41,58,5,9,50,136,233,49,233,49,232,49,233,49,233, + 49,200,41,168,41,200,49,3,200,41,132,168,41,200,41,199,41,168,49,4, + 168,41,130,167,41,135,41,101,3,3,110,91,130,78,91,78,91,5,110,91, + 135,111,91,110,91,110,91,142,91,143,91,111,91,143,91,3,111,91,129,143, + 91,4,111,91,130,111,83,46,83,3,46,75,155,13,75,46,75,78,83,46, + 75,46,75,13,67,13,75,237,66,237,66,13,75,13,67,14,75,46,75,45, + 75,170,74,73,74,171,82,45,91,45,99,44,91,45,91,45,99,45,91,45, + 91,44,91,45,91,77,91,8,45,91,148,44,91,45,91,44,91,44,91,45, + 91,45,91,203,82,171,74,171,82,236,82,12,91,142,99,240,107,49,116,236, + 74,163,8,65,0,9,50,241,107,179,124,4,114,124,141,114,116,146,124,146, + 124,146,132,146,132,178,132,147,132,115,132,115,124,115,116,84,116,52,116,52, + 116,3,20,108,137,52,116,52,116,83,124,115,116,115,124,147,132,178,132,146, + 124,146,124,4,147,124,129,146,124,4,114,124,129,146,124,7,147,124,131,179, + 124,147,124,179,124,3,147,124,133,179,124,113,124,244,148,16,132,166,57,3, + 40,66,8,8,66,129,232,65,4,231,57,3,199,57,135,199,49,199,49,167, + 49,198,49,134,49,166,49,166,49,3,134,41,131,101,41,102,33,102,41,6, + 69,33,136,37,25,228,24,110,91,134,33,4,25,69,33,37,33,69,33,3, + 37,25,134,70,33,200,57,69,41,196,16,228,16,196,16,3,228,16,131,228, + 24,228,16,195,16,12,163,16,129,163,8,5,163,16,133,131,16,131,16,163, + 16,163,16,163,8,5,163,16,144,163,8,131,16,163,16,131,16,163,8,130, + 8,130,8,163,16,163,8,130,8,163,8,163,16,162,8,163,8,163,16,131, + 8,4,163,16,129,131,8,3,163,16,129,163,8,6,163,16,154,195,16,196, + 16,163,16,196,16,195,16,195,16,196,16,195,16,196,16,228,16,228,16,196, + 16,4,17,5,17,4,17,5,25,5,25,37,25,37,25,70,25,70,25,102, + 25,102,25,103,33,135,33,103,33,8,135,33,129,167,33,3,135,33,188,103, + 25,135,25,135,25,135,33,168,33,168,33,167,33,200,41,135,33,167,33,168, + 33,200,41,200,33,200,41,168,41,168,41,168,33,200,33,168,41,168,41,70, + 25,49,132,240,123,170,82,163,16,17,116,208,107,74,58,232,41,232,49,232, + 49,200,49,200,41,232,49,200,41,200,41,168,41,200,49,233,49,9,58,233, + 49,41,58,41,58,9,50,9,50,41,58,41,58,107,66,204,82,237,90,13, + 99,77,107,78,107,41,66,204,82,46,91,78,99,78,91,78,91,110,91,4, + 110,99,148,143,99,208,107,240,115,147,140,216,165,20,149,49,124,199,57,8, + 58,73,74,12,91,142,107,167,49,65,8,65,8,130,16,0,0,232,57,16, + 124,17,124,3,240,115,176,240,123,49,124,114,132,17,124,113,140,117,181,214, + 197,49,124,237,74,176,91,204,74,66,0,65,16,162,24,32,8,195,24,45, + 83,115,108,241,99,241,91,82,108,136,41,33,8,98,16,65,8,134,33,163, + 16,195,24,130,16,13,83,18,100,209,91,208,91,241,99,209,99,209,91,241, + 99,209,91,208,99,208,99,209,99,209,99,209,91,208,99,176,91,208,91,208, + 91,208,99,3,208,91,130,176,91,208,91,4,176,91,129,144,91,3,143,83, + 138,143,91,143,83,111,83,111,91,111,83,79,83,111,83,111,83,78,83,111, + 83,4,78,83,132,78,75,46,83,78,83,78,83,4,46,83,3,46,75,3, + 45,75,132,14,75,13,83,13,75,14,83,6,13,75,3,237,74,136,237,66, + 236,74,204,74,204,66,204,74,204,74,204,66,204,66,3,172,66,129,171,66, + 3,139,66,131,107,66,139,66,139,58,3,106,58,3,74,58,131,42,58,41, + 50,42,50,6,9,50,138,232,49,232,41,200,41,200,49,232,49,232,49,200, + 41,200,49,200,41,200,41,4,168,41,3,167,41,1,135,41,101,3,133,110, + 91,110,91,78,91,78,83,78,83,9,110,91,130,111,91,143,91,9,111,91, + 139,110,83,46,75,46,75,14,75,14,67,13,67,13,75,46,75,45,75,13, + 75,13,75,3,237,66,136,13,67,13,67,237,66,46,75,237,74,73,74,8, + 66,203,82,5,45,91,129,45,99,3,45,91,129,44,91,3,45,91,129,45, + 99,7,45,91,145,44,91,45,91,12,91,203,82,171,74,203,82,236,82,45, + 91,143,99,17,108,17,124,203,74,162,8,65,0,9,50,17,108,179,124,4, + 114,124,154,146,124,146,132,115,124,52,116,245,99,182,91,119,83,88,67,24, + 59,248,50,216,42,184,34,153,34,152,26,152,34,152,34,184,34,184,42,216, + 42,24,51,55,67,118,75,213,99,52,116,146,124,178,132,3,147,124,130,114, + 124,146,124,3,114,124,130,147,124,146,124,5,147,124,130,179,132,179,132,6, + 147,124,136,146,132,52,149,141,107,231,65,40,74,40,66,8,66,40,66,3, + 8,66,138,231,65,8,66,7,66,8,66,232,57,231,57,231,65,231,57,199, + 57,231,57,3,199,49,3,167,49,130,166,49,134,49,3,134,41,132,102,41, + 102,41,69,33,102,41,5,69,33,151,37,33,37,33,37,25,175,91,9,58, + 4,25,37,33,37,33,37,25,37,33,37,25,37,25,102,33,73,66,166,49, + 163,8,196,16,228,16,228,16,228,24,228,24,4,25,228,16,7,163,16,129, + 163,8,21,163,16,130,162,16,130,16,3,163,16,139,131,8,130,8,131,16, + 131,8,130,8,131,16,163,16,163,16,163,8,163,16,163,8,4,163,16,131, + 131,8,163,16,131,8,3,163,8,132,163,16,163,16,163,8,163,8,4,163, + 16,142,195,16,196,16,228,24,228,16,4,17,5,25,5,25,4,25,5,25, + 228,16,196,16,228,16,228,16,4,25,3,5,17,139,37,25,70,25,102,25, + 70,33,70,33,102,33,103,25,102,25,135,33,102,33,103,33,5,135,33,158, + 167,33,167,33,199,41,200,41,168,41,200,49,200,49,232,49,9,50,41,58, + 9,50,41,58,42,58,74,58,73,58,41,58,41,58,9,50,9,50,232,49, + 200,49,199,41,70,33,16,124,16,124,171,82,131,8,143,107,240,107,171,66, + 3,232,49,129,200,49,4,200,41,131,200,49,232,49,232,49,3,9,58,206, + 41,58,41,58,9,50,74,58,74,66,107,66,171,74,237,82,45,99,78,99, + 78,107,41,66,204,82,45,91,78,91,46,91,78,91,110,99,110,99,110,91, + 110,99,143,99,143,99,176,107,240,107,146,132,215,165,53,157,49,124,8,66, + 45,91,73,66,12,99,77,99,231,57,227,32,33,8,65,8,98,16,97,8, + 166,49,142,107,114,140,16,124,240,115,240,115,17,124,16,116,240,115,81,140, + 149,189,153,214,240,115,5,17,228,24,65,8,162,24,98,16,65,8,167,49, + 17,108,50,108,241,99,241,99,82,108,172,66,1,8,130,16,0,0,40,58, + 139,58,130,16,195,24,4,33,208,99,241,99,241,99,209,99,3,241,99,138, + 209,99,241,99,240,99,241,99,209,91,209,91,208,99,208,99,176,91,176,91, + 4,208,91,130,176,91,208,91,3,176,91,4,144,91,142,143,83,111,83,143, + 91,111,83,111,83,111,91,111,91,111,83,111,83,79,83,111,83,110,83,78, + 83,110,83,5,78,83,131,77,83,46,83,45,75,4,46,83,137,46,75,45, + 75,13,83,45,75,13,75,45,75,45,83,13,83,13,83,7,13,75,3,237, + 74,134,204,74,236,74,204,66,204,74,172,66,204,66,3,172,66,130,139,66, + 171,66,3,139,66,133,138,66,107,58,106,58,107,58,106,58,3,74,58,3, + 41,58,133,41,50,9,50,233,49,233,49,9,50,3,233,49,135,232,49,232, + 49,200,49,200,41,200,49,200,41,200,49,3,200,41,130,168,41,135,41,3, + 167,41,1,135,41,109,3,4,110,91,129,78,91,7,110,91,130,111,91,110, + 91,3,111,91,129,110,91,6,111,91,137,111,83,110,83,46,75,14,67,13, + 67,14,67,13,67,13,75,45,75,4,13,75,130,13,67,13,75,3,237,66, + 135,14,75,204,74,8,58,8,66,235,82,45,91,13,91,7,45,91,132,44, + 91,44,99,45,91,13,91,5,45,91,163,12,91,45,91,44,91,12,91,45, + 91,12,91,203,74,171,74,203,82,236,82,45,91,175,107,17,108,17,116,171, + 74,162,8,65,8,9,50,241,115,146,124,146,124,146,132,114,124,83,116,245, + 99,120,75,57,59,217,42,153,26,56,18,22,10,149,1,83,1,50,1,17, + 1,4,16,1,143,49,1,50,1,115,1,148,1,246,9,55,18,121,18,185, + 34,217,34,23,51,213,91,147,132,178,132,146,124,146,124,3,114,124,132,146, + 124,147,124,147,124,146,124,5,147,124,129,179,132,4,147,124,135,146,124,147, + 124,146,132,85,157,235,98,7,66,40,74,3,8,66,130,40,66,40,66,4, + 8,66,131,232,65,8,66,231,65,3,231,57,132,199,57,199,49,166,49,199, + 49,3,167,49,137,166,49,166,49,134,41,134,41,102,41,102,41,102,33,69, + 33,102,33,3,69,33,137,37,33,69,33,37,33,37,25,102,33,176,91,74, + 74,5,33,37,33,5,37,25,132,134,33,232,57,167,49,131,8,3,196,16, + 132,195,16,195,16,4,25,5,25,13,163,16,129,163,8,5,163,16,142,131, + 16,131,8,130,8,130,16,130,16,163,16,131,16,130,16,130,16,131,16,162, + 16,131,8,131,16,130,8,4,163,16,132,195,16,195,16,163,16,131,16,3, + 130,8,135,131,8,130,8,130,8,163,8,196,16,4,25,228,24,4,4,25, + 132,228,24,131,8,163,8,163,8,3,163,16,134,195,16,195,16,228,16,4, + 25,5,25,5,25,3,37,25,169,37,33,37,33,37,25,37,25,69,33,102, + 33,135,41,200,49,9,50,41,50,106,58,106,58,106,66,139,66,139,66,171, + 66,139,66,139,66,171,66,139,66,139,66,106,58,138,58,106,58,41,58,9, + 58,9,50,232,49,200,41,167,41,135,33,102,33,102,33,70,33,38,25,37, + 25,229,16,228,16,228,16,196,16,164,16,3,163,16,3,131,16,138,33,0, + 16,124,142,107,139,74,196,16,45,99,146,132,237,74,233,49,233,49,4,232, + 49,129,168,41,3,232,49,131,9,50,41,58,9,50,3,9,58,172,41,58, + 74,58,74,58,106,66,171,74,236,82,45,99,78,107,110,107,106,66,171,74, + 13,91,45,91,13,91,78,99,110,99,111,99,78,99,111,99,143,99,143,99, + 208,107,240,115,114,132,183,165,53,157,146,132,13,91,45,91,106,74,203,90, + 110,107,231,57,4,33,33,0,163,24,0,0,98,16,65,8,98,16,8,58, + 49,132,179,140,114,124,3,114,132,157,244,156,149,181,170,82,195,16,97,8, + 162,24,162,16,33,8,163,24,204,74,50,108,50,108,241,99,241,99,50,108, + 111,83,131,16,162,24,33,8,228,32,114,108,70,33,162,24,162,24,8,58, + 18,100,241,99,241,99,208,99,4,241,99,139,209,91,240,99,241,91,241,91, + 208,91,241,99,208,91,144,83,208,91,208,91,209,91,3,208,91,4,176,91, + 3,144,91,4,143,91,5,111,83,132,110,83,78,83,111,83,110,83,4,78, + 83,130,78,75,78,83,4,46,83,139,14,83,46,83,45,83,46,83,46,83, + 14,83,13,75,45,75,46,75,45,83,14,83,6,13,75,130,237,74,13,75, + 4,237,74,138,205,74,204,74,204,74,204,66,172,66,204,66,172,66,171,66, + 172,66,172,66,5,139,66,3,107,58,129,106,58,5,74,58,3,41,50,132, + 9,50,233,49,232,49,232,49,3,233,49,143,232,49,232,49,200,49,200,49, + 200,41,200,49,200,49,200,41,200,41,168,49,167,41,167,41,135,41,167,41, + 167,41,111,3,12,110,91,137,111,91,110,91,111,83,111,83,110,83,78,83, + 78,83,110,91,110,91,4,111,91,133,78,83,46,75,45,75,13,75,13,75, + 3,13,67,155,237,66,46,75,46,75,13,75,13,75,13,67,237,66,204,58, + 172,58,237,66,106,66,167,57,41,66,236,90,44,99,44,91,45,91,44,91, + 45,91,45,91,45,99,44,91,45,91,45,91,44,91,45,91,44,91,3,45, + 91,189,44,91,44,91,12,91,13,91,44,83,44,91,44,91,12,83,171,74, + 170,74,203,82,236,90,78,91,207,107,17,116,49,116,203,74,130,8,65,8, + 8,50,16,116,115,124,20,108,150,83,249,50,152,26,23,18,148,1,82,1, + 48,1,13,9,77,17,141,25,12,42,108,58,140,66,172,74,204,82,204,82, + 203,82,171,82,171,74,75,66,10,58,202,41,139,33,108,25,111,9,147,9, + 22,10,120,26,153,18,152,34,86,67,83,124,146,124,146,124,147,124,147,124, + 114,124,146,124,5,147,124,129,147,132,5,147,124,139,146,124,147,124,147,124, + 146,132,52,157,137,82,7,66,7,66,72,74,40,66,40,66,7,8,66,129, + 8,58,3,231,57,130,199,49,199,57,3,199,49,131,167,49,166,49,166,49, + 3,134,41,3,102,41,131,101,33,70,33,102,33,4,69,33,133,37,33,37, + 33,4,25,200,41,208,99,3,37,33,137,69,33,37,33,37,25,37,33,69, + 25,199,41,102,41,167,49,131,16,3,196,16,135,228,16,5,25,228,16,228, + 24,131,16,163,16,163,16,5,195,16,8,163,16,136,195,16,195,16,196,16, + 196,24,196,24,195,16,195,24,227,24,8,163,16,137,196,16,227,24,228,16, + 228,24,228,24,196,16,196,16,195,16,163,16,3,195,16,129,163,16,3,195, + 16,3,163,16,131,163,8,195,16,163,16,3,195,16,129,196,16,3,195,16, + 138,228,24,196,24,196,16,195,16,196,16,195,16,196,16,164,16,195,16,163, + 16,3,163,8,139,163,16,163,16,196,16,196,16,163,8,131,8,98,0,66, + 0,33,0,1,0,1,0,15,0,0,3,1,0,132,32,0,33,0,33,0, + 33,8,3,65,0,147,65,8,65,0,65,0,65,8,66,8,65,8,65,0, + 65,8,0,0,175,107,142,107,138,74,229,16,73,58,20,149,45,83,41,58, + 8,50,233,49,5,200,41,130,200,49,232,49,4,9,58,145,42,58,42,58, + 41,58,106,58,74,58,106,66,204,74,236,90,45,99,78,99,110,107,237,90, + 171,74,13,91,46,91,45,91,46,91,3,110,99,188,143,107,111,99,110,99, + 175,107,208,115,114,132,215,165,52,157,114,132,13,91,45,99,138,74,236,98, + 109,99,8,58,36,33,0,0,73,74,73,66,33,8,0,0,65,8,97,16, + 0,0,4,25,73,66,138,74,74,66,135,41,66,8,0,0,65,8,130,16, + 97,16,65,8,195,24,134,33,36,17,102,25,74,50,111,91,241,99,18,108, + 209,91,229,24,97,16,97,8,195,24,49,108,46,75,66,8,227,24,195,24, + 78,83,17,100,208,91,241,99,241,99,241,91,241,99,3,209,99,130,209,91, + 209,91,3,208,91,132,144,83,144,83,208,91,209,91,3,208,91,135,176,91, + 176,91,208,91,176,91,176,91,144,91,143,91,4,143,83,131,143,91,111,83, + 111,91,3,111,83,139,110,83,111,83,78,83,79,83,78,83,78,83,78,75, + 78,83,78,83,46,83,78,83,3,46,83,140,46,75,46,83,46,75,46,75, + 13,83,46,83,45,83,46,75,45,75,13,75,45,75,45,75,6,13,75,6, + 237,74,135,204,74,204,66,204,74,172,66,204,66,172,66,172,66,3,171,66, + 129,171,58,3,139,66,130,107,66,138,58,3,106,58,4,74,58,131,41,58, + 41,50,41,50,3,9,50,129,233,49,3,232,41,3,233,49,140,200,41,200, + 49,200,49,200,41,168,49,168,41,168,41,200,41,200,41,168,41,167,41,167, + 41,87,3,4,110,91,130,78,83,110,83,3,110,91,130,78,83,110,83,4, + 110,91,170,110,83,78,91,78,83,78,83,78,91,78,83,110,83,110,91,110, + 91,78,83,78,83,46,83,46,75,13,75,13,75,13,67,13,67,14,67,46, + 75,46,75,45,75,13,75,13,75,237,66,204,66,172,58,139,50,172,74,41, + 66,134,49,106,74,12,91,44,91,12,91,45,91,44,91,45,91,44,91,44, + 91,45,91,45,91,13,91,5,45,91,190,12,91,12,91,45,91,12,91,12, + 91,13,91,44,91,45,91,236,82,171,74,170,74,203,82,236,90,78,99,208, + 107,49,116,49,116,203,74,97,0,66,0,46,42,117,83,56,59,152,34,22, + 10,50,1,15,1,77,9,14,42,174,66,15,83,46,91,12,91,171,82,41, + 66,199,49,102,41,36,33,228,24,227,24,163,16,195,16,227,24,4,25,4, + 33,69,33,101,41,134,49,134,41,198,16,169,0,14,1,22,10,120,26,121, + 26,216,42,116,75,109,115,173,131,49,124,147,124,179,124,11,147,124,137,146, + 124,147,124,114,124,146,140,243,148,105,82,40,74,40,74,40,66,8,8,66, + 137,231,57,232,57,199,57,231,57,231,57,199,57,199,57,199,49,199,49,3, + 166,49,129,167,49,3,134,41,133,102,41,102,41,69,33,102,33,101,33,6, + 69,33,135,37,33,4,25,9,50,82,116,4,33,102,33,69,33,3,37,33, + 134,69,25,69,25,167,41,37,33,199,49,163,16,3,196,16,3,228,16,134, + 196,16,131,8,163,16,163,16,195,16,228,24,4,195,16,3,163,16,133,195, + 16,195,16,163,16,163,16,195,16,3,163,16,132,163,8,163,8,131,8,163, + 8,9,163,16,138,131,16,131,8,130,8,131,8,131,8,130,8,131,8,131, + 8,130,8,131,8,5,130,8,131,98,8,98,0,66,0,4,65,0,134,33, + 0,65,0,65,0,33,0,33,0,65,0,9,33,0,130,33,8,33,0,3, + 65,0,132,33,8,33,8,33,0,33,0,4,65,8,134,98,8,65,8,65, + 8,66,8,66,8,98,0,6,98,8,129,97,8,4,98,8,129,97,8,16, + 98,8,240,130,8,0,0,110,107,207,115,74,74,70,33,135,41,77,91,111, + 99,74,58,9,50,232,49,200,49,232,49,232,49,200,41,200,49,200,41,200, + 49,9,50,9,58,9,58,41,58,41,58,73,58,41,58,74,58,106,66,139, + 74,204,74,12,91,45,99,77,99,110,107,110,107,236,90,237,90,46,91,78, + 91,78,91,78,99,110,99,78,99,110,99,111,99,111,99,176,107,208,115,82, + 132,215,165,117,157,179,140,45,91,110,99,171,82,170,82,110,107,8,66,36, + 41,0,0,199,57,77,107,106,74,199,57,65,8,0,0,130,16,97,8,33, + 8,33,8,65,8,65,8,130,16,65,8,0,0,97,16,102,41,13,83,241, + 99,111,83,106,58,102,25,228,8,168,33,237,74,17,100,233,41,65,8,162, + 16,98,16,45,83,147,108,200,41,130,16,195,24,37,33,17,100,241,99,240, + 99,241,99,209,99,209,91,241,99,209,99,209,91,209,99,209,91,209,91,209, + 99,240,91,176,91,176,83,7,208,91,4,176,91,136,143,91,143,91,175,91, + 143,91,143,83,143,83,143,91,111,91,4,111,83,130,110,83,111,83,8,78, + 83,7,46,83,139,45,75,45,75,46,75,45,75,46,75,13,75,13,75,45, + 75,13,75,13,75,13,83,5,13,75,5,237,74,136,204,66,204,74,204,66, + 204,74,204,66,204,66,171,66,172,66,3,171,66,3,139,66,135,139,58,107, + 66,106,58,106,58,74,58,74,58,74,50,3,74,58,131,41,50,41,50,41, + 58,3,9,50,131,233,49,232,49,200,41,3,233,49,3,200,49,137,200,41, + 200,49,200,49,168,41,168,49,168,41,200,41,200,41,168,41,128,3,145,110, + 91,110,91,78,83,78,83,78,91,110,91,110,91,78,83,78,91,78,83,78, + 83,110,91,110,83,110,91,110,91,110,83,110,91,3,78,83,155,79,91,78, + 83,110,91,111,91,110,83,78,83,78,75,46,75,46,75,13,67,13,67,13, + 75,46,75,46,75,45,75,46,75,13,75,237,66,237,66,172,58,139,58,74, + 50,171,66,8,58,134,49,170,74,45,91,3,12,91,134,44,91,45,91,44, + 91,44,91,45,91,44,91,3,45,91,174,12,91,45,91,12,91,45,91,13, + 91,44,91,12,83,44,91,45,91,12,83,45,91,203,82,170,74,171,82,204, + 82,12,83,110,91,240,107,49,116,49,124,235,74,173,25,182,50,217,50,88, + 18,83,1,174,0,237,0,110,58,177,107,17,116,77,91,138,66,166,41,227, + 16,162,8,97,8,65,8,33,8,33,0,65,8,33,8,33,0,33,0,65, + 8,33,0,4,65,8,145,98,8,130,16,195,24,195,24,162,16,103,0,80, + 1,55,10,185,34,185,34,149,42,229,105,34,122,167,122,174,123,147,124,180, + 124,8,147,124,142,115,124,147,124,147,124,146,124,211,140,178,148,40,74,41, + 74,40,74,40,66,40,66,8,66,8,66,40,66,4,8,66,146,231,65,232, + 57,232,57,199,57,199,57,231,57,199,49,167,49,199,49,167,49,134,49,166, + 41,134,41,134,49,134,41,102,41,102,41,101,41,3,101,33,130,69,33,101, + 33,4,69,33,155,37,33,4,25,74,58,16,116,228,24,102,41,70,33,37, + 33,69,33,37,25,69,33,69,33,167,41,4,25,200,49,163,8,195,16,196, + 16,196,16,195,16,228,16,228,24,4,25,163,16,162,8,163,16,163,16,3, + 195,16,3,163,16,129,163,8,3,163,16,133,163,8,163,8,163,16,131,16, + 131,8,3,130,8,138,131,8,130,8,163,8,130,8,130,8,130,16,130,8, + 130,8,98,8,130,8,3,98,8,4,130,8,135,98,8,98,8,130,8,98, + 8,130,8,98,8,130,8,4,98,8,129,66,8,3,65,0,131,66,8,65, + 0,97,8,6,65,8,132,66,8,65,0,65,8,97,8,5,65,8,139,66, + 8,65,8,65,8,66,8,66,8,98,8,97,8,65,8,97,8,65,8,97, + 8,3,98,8,129,97,8,10,98,8,130,130,8,130,8,3,98,8,10,130, + 8,174,131,16,163,8,131,8,131,8,163,8,163,8,66,0,171,82,110,107, + 73,66,102,33,102,33,167,41,204,82,204,74,9,50,200,49,232,49,232,49, + 200,41,232,49,200,41,200,49,9,50,233,49,9,58,9,58,42,58,74,58, + 74,58,42,58,74,58,74,66,139,66,172,74,236,90,45,91,77,107,110,107, + 110,107,45,99,236,82,45,91,45,91,77,91,78,91,5,110,99,149,176,107, + 240,115,81,132,215,165,53,149,179,140,78,99,111,99,171,82,203,90,142,107, + 8,66,36,41,0,0,166,49,236,90,203,90,239,123,17,124,41,66,130,16, + 6,0,0,158,69,49,15,148,243,156,17,108,50,108,17,100,241,99,208,91, + 78,83,106,58,4,17,37,17,74,50,98,8,163,24,0,0,200,49,82,108, + 50,100,66,8,227,24,97,16,139,74,49,100,208,91,241,99,241,99,241,91, + 241,99,241,91,3,209,91,129,209,99,3,208,91,131,176,91,176,83,209,91, + 5,208,91,5,176,91,4,143,91,3,143,83,6,111,83,130,110,83,79,83, + 5,78,83,130,46,83,78,83,3,46,83,142,45,75,46,83,46,83,45,83, + 45,75,45,75,46,83,13,75,46,75,45,83,45,75,13,75,13,75,45,75, + 3,13,75,129,13,83,3,13,75,138,237,74,237,74,237,66,204,74,204,74, + 236,66,204,66,204,74,204,66,204,66,4,171,66,4,139,66,130,139,58,139, + 58,3,106,58,4,74,58,133,42,58,41,58,41,50,41,50,10,50,4,9, + 50,134,232,49,233,41,200,41,232,49,233,49,232,49,3,200,49,135,200,41, + 200,49,200,41,168,41,200,49,168,41,168,41,133,3,130,78,91,78,91,3, + 78,83,140,110,91,78,91,110,91,78,83,78,83,46,83,78,91,78,83,78, + 83,110,83,78,83,111,83,4,78,83,134,110,91,78,91,110,83,78,83,78, + 75,78,75,4,46,75,129,45,75,4,46,75,139,13,75,237,66,172,58,138, + 50,73,50,73,50,74,66,199,49,167,49,203,82,45,99,5,12,91,4,44, + 91,131,45,91,44,91,13,91,3,12,91,193,45,91,12,83,45,91,44,91, + 45,91,12,91,44,91,13,91,203,74,170,74,171,82,235,82,12,83,143,99, + 16,108,50,116,213,91,57,59,250,42,246,9,49,1,204,0,45,50,176,99, + 81,124,77,91,231,41,163,16,33,0,32,0,0,0,33,8,33,0,33,8, + 65,8,65,8,33,8,65,8,65,0,65,0,65,8,65,0,65,0,65,8, + 97,8,98,8,65,8,65,8,33,8,33,0,33,0,65,8,97,16,32,8, + 102,0,179,9,152,26,186,34,185,26,171,49,97,89,226,129,101,130,174,123, + 180,124,5,147,124,3,115,124,142,147,124,115,124,114,124,211,148,80,132,8, + 66,40,66,40,66,40,74,8,66,40,66,8,66,40,66,40,66,4,8,66, + 170,232,57,231,57,231,57,199,57,199,57,199,49,199,57,167,49,166,49,166, + 49,134,49,134,49,134,41,134,41,102,41,101,41,102,41,101,33,69,33,101, + 33,101,33,69,33,69,33,37,33,37,33,69,33,37,33,4,25,139,66,143, + 99,4,25,69,33,70,33,102,33,70,33,37,33,69,33,69,33,167,41,228, + 24,199,49,130,16,5,196,16,132,195,16,163,8,163,16,163,16,8,195,16, + 165,163,16,163,16,163,8,163,16,163,16,162,8,163,8,163,16,163,16,131, + 16,163,16,130,16,163,8,163,8,130,8,163,8,130,8,131,16,163,8,130, + 8,131,16,163,8,131,8,130,16,130,8,130,8,163,8,131,8,130,8,131, + 16,130,8,98,8,130,8,130,8,130,16,130,8,130,8,3,98,8,143,130, + 8,66,8,33,0,98,8,66,8,66,8,97,8,65,8,66,8,98,8,65, + 8,97,8,98,8,98,8,97,8,10,98,8,132,130,8,98,8,98,16,98, + 8,4,130,8,134,131,16,131,8,130,8,163,8,163,16,163,8,12,163,16, + 130,195,16,195,8,3,196,16,6,228,16,146,4,17,5,17,5,25,5,25, + 37,25,37,25,196,16,172,82,142,99,106,66,232,49,167,41,41,58,8,50, + 106,66,9,50,8,58,232,49,4,200,41,131,200,49,233,49,9,50,4,41, + 58,146,74,58,74,58,74,66,106,66,107,66,204,82,236,90,13,91,77,99, + 78,107,110,107,13,91,236,82,13,91,77,91,78,91,78,99,78,91,4,110, + 99,158,175,107,175,107,49,132,247,173,85,157,178,140,110,99,110,99,203,82, + 170,82,77,99,8,66,69,41,0,0,134,49,235,90,171,82,110,107,49,124, + 82,124,211,140,147,132,240,115,175,115,49,132,85,157,20,157,23,198,24,206, + 85,165,3,241,99,162,17,100,17,100,17,108,241,107,46,83,200,41,98,8, + 162,24,98,16,163,24,146,116,82,100,172,58,65,16,227,24,98,24,49,100, + 241,99,209,99,209,99,208,99,208,99,209,99,209,99,208,91,209,99,240,99, + 209,99,208,91,240,91,208,91,176,83,208,91,209,91,4,208,91,131,176,91, + 208,91,208,91,3,176,91,130,143,91,144,91,3,143,91,131,143,83,111,83, + 143,83,3,111,83,133,110,83,111,83,79,83,78,83,110,83,5,78,83,6, + 46,83,139,45,75,45,83,45,75,46,83,45,75,13,83,45,75,13,83,45, + 83,45,75,14,83,6,13,75,135,237,74,13,75,13,75,236,74,237,74,236, + 74,237,74,4,204,74,139,204,66,172,66,171,66,172,66,171,66,171,66,139, + 66,171,66,139,66,138,66,139,66,4,106,58,3,74,58,3,42,58,3,41, + 58,3,9,50,136,233,49,233,49,232,49,200,49,200,41,232,49,233,49,200, + 41,4,200,49,132,167,41,200,49,168,41,167,41,112,3,4,78,83,131,78, + 91,78,83,78,91,3,78,83,129,46,83,5,78,83,134,110,83,78,91,110, + 91,78,91,78,83,110,91,3,78,83,129,46,83,3,46,75,146,13,75,45, + 75,45,75,46,75,45,75,13,75,13,75,237,66,172,58,139,58,73,58,41, + 50,106,58,9,58,135,41,231,57,12,91,44,91,3,12,91,138,44,91,13, + 91,12,91,12,91,44,91,45,91,44,91,12,91,45,91,45,91,8,12,91, + 151,13,91,12,83,171,74,138,74,203,82,235,90,12,91,143,99,180,91,119, + 75,152,34,213,9,49,1,138,0,8,17,237,82,175,107,106,66,37,25,65, + 0,33,0,33,8,33,8,9,65,8,136,97,8,97,8,98,8,98,8,97, + 8,97,8,98,8,98,8,4,130,16,129,98,16,3,65,8,161,32,8,68, + 0,46,1,55,18,186,34,186,26,206,33,1,73,226,113,3,122,76,123,147, + 124,179,124,147,124,147,124,115,124,147,124,115,124,114,124,115,124,147,124,82, + 124,244,148,239,123,7,66,40,74,40,66,40,74,40,74,40,66,40,66,8, + 66,40,66,4,8,66,3,231,57,3,199,57,129,167,49,4,166,49,135,134, + 41,134,41,102,41,102,41,101,33,102,41,69,33,3,101,33,155,69,33,69, + 33,37,33,37,33,69,33,69,33,5,25,171,66,240,107,228,24,102,41,70, + 33,69,33,69,33,37,25,37,33,69,33,199,49,196,24,199,57,130,8,163, + 16,163,16,163,8,163,16,163,16,163,8,3,163,16,133,195,16,196,24,196, + 24,196,16,196,16,3,195,16,3,163,16,130,163,8,163,8,7,163,16,3, + 163,8,140,131,8,163,16,163,16,163,8,163,8,163,16,131,16,131,8,131, + 8,130,8,131,16,163,8,4,130,8,140,131,8,130,8,131,8,130,8,131, + 16,130,8,130,16,130,8,130,8,130,16,98,8,66,8,4,98,8,9,130, + 8,139,131,8,131,16,130,8,163,8,131,16,163,16,163,8,131,16,163,8, + 163,8,163,16,3,163,8,129,196,16,3,195,16,131,196,16,196,16,196,8, + 7,228,16,129,228,24,3,228,16,134,229,16,4,17,4,17,5,25,37,25, + 5,25,4,37,25,130,38,25,38,25,6,70,25,146,102,25,103,25,37,17, + 78,99,142,107,106,66,41,58,200,49,41,58,41,58,9,58,9,50,232,49, + 232,49,200,49,232,41,200,41,200,41,3,232,49,130,41,58,9,58,3,41, + 58,168,73,58,74,58,107,66,107,66,172,74,236,82,13,91,45,99,77,99, + 110,107,13,91,204,74,13,83,45,91,78,91,78,91,78,99,143,99,78,91, + 78,91,110,99,175,107,208,107,49,132,215,165,85,157,211,140,111,99,110,99, + 203,82,171,82,207,115,41,66,101,49,0,0,134,49,236,90,170,82,109,107, + 49,124,3,17,116,136,50,124,49,124,81,124,17,116,208,115,52,173,214,197, + 85,173,7,241,99,141,17,100,74,58,130,16,195,24,65,8,9,58,17,100, + 18,100,38,25,162,24,163,24,167,49,82,108,3,209,91,130,209,99,208,91, + 3,209,99,136,208,91,209,99,208,91,209,91,208,91,176,91,176,83,209,91, + 6,208,91,130,176,91,208,91,4,176,91,134,143,91,144,91,143,83,143,91, + 111,91,143,83,3,111,83,132,110,83,111,83,78,83,110,83,7,78,83,4, + 46,83,144,45,83,46,83,46,75,45,83,45,75,46,75,45,75,45,83,13, + 75,45,83,13,83,13,75,45,75,14,75,13,75,13,83,5,13,75,152,237, + 74,237,74,236,74,236,74,204,74,205,74,204,74,204,66,172,66,172,66,171, + 66,172,66,171,66,172,66,171,66,139,66,74,58,74,58,139,66,138,58,106, + 58,106,58,74,58,106,58,3,74,58,133,42,58,41,58,42,58,41,50,41, + 50,5,9,50,131,233,49,232,49,233,49,3,200,49,137,232,49,200,41,200, + 41,200,49,200,41,200,49,200,41,168,41,168,41,159,3,129,46,83,6,78, + 83,129,110,83,4,78,83,129,78,91,3,78,83,131,78,91,78,83,110,83, + 4,78,83,133,78,75,78,83,46,83,46,75,46,75,3,13,75,129,13,67, + 4,13,75,137,171,58,106,50,106,58,73,50,73,58,138,58,9,50,134,41, + 40,66,5,12,91,132,45,91,12,91,44,91,12,91,3,45,91,132,12,91, + 45,91,12,91,13,91,4,12,91,150,12,83,12,91,12,91,44,91,236,82, + 171,74,170,74,170,90,202,82,48,83,88,67,217,42,246,9,174,0,235,8, + 199,16,66,0,37,33,134,41,163,16,33,0,33,8,13,65,8,175,97,8, + 97,8,98,8,130,8,130,8,130,16,98,16,98,8,33,0,33,8,32,0, + 65,8,130,16,162,16,130,16,98,8,97,8,64,8,33,0,202,0,120,18, + 218,34,219,26,142,33,160,48,194,113,36,138,233,122,147,124,148,124,147,124, + 147,124,114,116,146,116,115,124,146,124,146,116,114,132,20,149,141,115,7,66, + 40,74,40,66,8,66,40,74,40,66,40,74,5,8,66,129,231,65,3,231, + 57,3,199,57,134,198,49,167,49,166,49,134,41,134,49,134,41,4,102,41, + 133,101,33,101,33,69,33,101,33,101,33,3,69,33,136,37,25,69,33,37, + 33,37,25,45,75,78,91,5,33,102,41,3,70,33,157,69,33,69,33,102, + 33,199,49,196,16,232,57,130,8,163,8,163,8,163,16,131,16,131,16,163, + 16,163,16,195,16,195,16,196,16,196,16,228,16,195,16,164,16,163,16,196, + 16,163,16,195,16,163,16,163,16,195,16,163,8,3,163,16,130,163,8,131, + 16,4,163,8,133,163,16,163,16,130,8,163,8,163,8,4,163,16,154,131, + 8,162,8,163,16,163,8,163,16,163,16,163,8,163,16,131,8,162,8,163, + 8,163,16,163,16,130,16,131,16,131,8,131,16,131,16,163,16,98,8,98, + 8,130,8,130,8,131,8,130,16,130,16,3,131,8,136,130,8,131,8,131, + 8,130,8,130,8,131,8,131,8,163,8,3,163,16,129,195,16,3,163,16, + 130,163,8,163,16,3,163,8,147,195,16,163,16,196,16,196,8,196,8,196, + 16,196,8,228,16,196,16,228,8,196,8,228,16,228,16,5,17,5,17,37, + 17,37,25,70,25,102,25,4,70,25,151,103,33,135,33,167,33,168,33,168, + 33,200,33,232,41,9,50,9,50,41,50,41,50,74,58,74,58,41,58,110, + 99,110,99,106,66,73,58,9,50,41,58,73,58,41,58,9,58,4,232,49, + 178,200,49,200,49,232,49,232,49,233,49,41,58,9,58,9,50,41,58,42, + 58,74,58,42,58,106,66,139,66,171,74,236,82,12,91,45,99,78,99,110, + 107,13,91,171,74,236,82,45,91,78,91,45,91,46,91,111,91,110,91,78, + 99,143,99,175,107,208,107,49,124,183,165,85,157,179,140,143,99,142,99,204, + 82,138,74,110,107,41,66,134,49,0,0,101,41,236,90,171,82,77,99,17, + 124,4,17,116,135,49,124,16,116,50,116,240,115,19,165,182,189,117,173,7, + 241,99,160,17,100,5,33,163,24,130,16,130,16,37,25,13,75,14,75,163, + 24,4,33,130,24,237,82,17,100,208,99,208,99,209,99,208,91,208,91,209, + 99,209,91,209,91,208,91,208,99,240,91,208,91,208,91,176,91,209,91,208, + 91,176,91,208,91,208,99,5,208,91,147,176,91,176,91,144,91,176,83,175, + 91,143,91,143,83,143,91,111,83,143,83,111,83,111,83,110,83,111,83,79, + 83,110,83,110,83,78,83,79,83,6,78,83,4,46,83,140,45,75,46,83, + 46,83,14,75,46,83,13,75,13,83,13,83,45,75,13,75,13,83,45,75, + 3,13,75,134,13,83,13,75,237,74,13,75,236,74,13,75,3,237,74,131, + 236,74,204,74,204,74,3,204,66,138,171,66,172,66,171,66,139,66,171,66, + 139,66,199,33,135,33,106,58,107,66,5,106,58,136,74,58,74,58,42,58, + 41,58,42,58,41,50,41,58,41,58,5,9,50,136,233,49,233,49,232,49, + 200,49,200,49,200,41,232,49,200,49,3,200,41,131,167,41,168,41,167,41, + 106,3,140,78,83,46,83,78,83,78,83,78,91,78,83,78,91,78,83,78, + 83,46,83,78,83,78,83,3,46,83,9,78,83,4,46,75,146,13,75,13, + 67,14,75,13,67,13,67,237,66,13,75,237,66,107,58,41,50,41,58,106, + 58,139,58,139,58,199,49,134,41,106,74,45,91,10,12,91,130,45,91,44, + 91,3,12,91,4,12,83,148,12,91,44,91,12,91,13,91,203,82,138,74, + 138,74,238,82,55,67,250,42,181,1,207,0,11,9,144,99,174,115,166,41, + 227,24,162,16,33,8,33,8,4,65,8,135,33,0,33,8,33,0,33,0, + 65,8,97,16,162,16,4,130,16,169,98,16,97,8,130,16,163,16,195,16, + 228,24,36,33,69,33,134,41,167,41,167,41,69,33,130,16,33,0,65,8, + 130,16,130,16,98,8,65,8,0,0,103,0,245,9,185,34,251,34,177,17, + 97,24,194,105,2,138,102,122,114,124,179,124,147,124,146,124,114,124,147,124, + 114,116,114,124,146,132,19,149,44,99,8,66,4,40,74,130,8,66,8,66, + 3,40,66,3,8,66,131,231,57,199,57,231,57,3,199,57,135,199,49,166, + 49,166,49,134,49,134,41,102,41,134,41,4,102,41,131,101,33,102,33,70, + 33,4,69,33,3,37,33,158,69,25,45,83,203,82,37,33,102,41,102,41, + 69,33,102,33,37,33,70,33,102,33,134,49,228,24,40,66,98,0,163,8, + 163,16,163,8,163,8,163,16,131,16,163,16,196,16,195,16,228,16,228,24, + 228,16,195,16,195,16,196,16,3,195,16,132,196,16,163,16,163,8,163,16, + 3,195,16,129,163,8,13,163,16,129,163,8,3,163,16,132,163,8,195,16, + 195,8,196,16,3,163,16,133,195,16,195,16,163,16,163,16,131,8,5,163, + 16,182,98,8,130,16,130,16,162,16,163,16,131,8,130,16,163,8,163,16, + 196,16,228,24,196,16,228,16,228,16,228,24,163,16,163,8,163,16,195,16, + 228,24,229,24,37,25,69,33,167,41,200,49,232,41,9,50,41,50,42,58, + 41,58,74,58,139,66,171,66,171,66,204,74,237,74,204,74,12,75,13,75, + 45,83,13,83,45,91,110,91,111,91,111,91,110,91,143,99,143,91,143,91, + 176,99,176,99,176,107,208,99,209,99,4,241,107,130,17,108,17,116,4,50, + 116,194,50,108,50,116,237,82,78,99,139,74,74,66,73,58,41,58,41,50, + 41,58,41,58,232,49,8,50,232,49,233,49,200,41,200,49,9,50,232,49, + 232,49,9,58,9,58,41,58,42,58,41,58,74,58,74,66,106,66,139,74, + 171,74,236,82,13,91,46,99,77,107,110,107,12,91,139,74,236,82,46,91, + 78,99,78,99,46,91,110,99,142,99,143,107,176,107,208,107,208,107,17,124, + 183,165,118,157,211,140,174,107,143,99,236,82,138,74,174,107,73,66,134,49, + 0,0,69,41,235,90,203,90,45,99,49,116,49,124,6,17,116,132,16,116, + 243,164,182,189,117,181,6,241,99,159,82,108,10,50,65,16,228,32,130,24, + 171,74,135,33,4,17,69,25,162,16,195,24,70,41,240,99,208,99,208,91, + 240,91,209,91,208,91,209,99,208,91,208,99,208,99,208,91,209,99,208,91, + 208,91,176,91,176,91,208,91,208,99,176,91,3,208,91,6,176,91,130,143, + 91,176,91,3,143,91,129,143,83,4,111,83,130,110,83,111,83,8,78,83, + 5,46,83,129,46,75,3,45,83,131,14,75,46,75,46,83,3,45,75,131, + 13,75,45,75,45,75,8,13,75,130,237,74,236,74,3,237,74,3,204,74, + 134,204,66,204,66,172,66,204,66,172,66,172,66,3,171,66,133,41,58,70, + 25,200,41,171,66,139,58,4,106,58,136,74,58,74,58,73,50,41,50,42, + 50,41,58,9,50,41,50,4,9,50,5,233,49,138,232,49,200,49,200,41, + 200,41,200,49,200,41,200,41,200,49,200,41,168,41,146,3,131,45,83,78, + 83,46,83,5,78,83,134,46,83,45,75,45,83,78,83,78,83,46,83,8, + 78,83,152,46,83,46,75,45,75,14,75,46,75,13,75,13,67,13,75,13, + 75,13,67,237,66,13,67,237,66,237,66,74,58,41,50,73,50,138,58,172, + 58,139,58,167,41,167,49,170,74,44,91,8,12,91,129,44,91,7,12,91, + 147,12,83,12,83,13,83,12,91,12,91,12,83,13,91,170,74,139,74,242, + 74,25,59,119,26,49,1,45,9,175,74,82,124,109,99,166,41,130,16,4, + 65,8,137,33,8,33,0,33,0,33,8,65,8,130,16,130,24,163,24,195, + 24,3,227,24,175,195,24,130,16,227,24,199,49,138,74,13,83,110,99,208, + 107,49,116,82,124,115,132,147,132,147,132,179,132,147,132,240,107,204,82,37, + 33,33,0,65,8,163,16,130,16,97,8,0,0,102,0,244,9,185,26,251, + 34,177,17,96,32,194,105,3,138,135,122,78,99,17,108,179,124,147,124,114, + 116,115,124,114,116,113,132,19,149,202,90,7,66,40,74,40,66,8,66,3, + 40,74,5,8,66,135,231,65,231,57,231,65,231,57,231,57,199,49,199,57, + 3,166,49,129,134,49,3,134,41,134,102,41,101,41,101,41,101,33,69,41, + 101,33,4,69,33,135,37,33,69,25,37,25,37,25,69,33,77,83,41,58, + 3,102,41,139,102,33,102,33,37,33,102,33,102,33,134,41,196,24,199,57, + 130,8,163,16,163,16,3,163,8,131,162,8,162,8,196,16,3,228,16,139, + 228,24,228,24,196,16,228,16,163,16,195,16,196,16,196,16,195,16,163,16, + 163,16,3,195,16,4,163,16,133,195,16,196,16,196,16,195,16,195,16,4, + 163,16,132,195,16,195,16,163,16,163,16,3,195,16,136,196,16,196,16,164, + 16,195,16,196,16,196,24,196,16,196,16,3,195,16,131,196,16,228,16,228, + 16,3,228,24,175,228,16,4,25,4,25,5,25,130,16,130,16,167,41,9, + 58,41,58,9,50,107,66,107,66,106,66,228,24,130,8,163,16,195,16,5, + 25,102,33,233,41,106,58,46,75,208,99,209,99,208,99,176,91,176,91,144, + 91,143,91,144,91,144,91,143,91,144,91,208,91,241,99,17,100,50,108,82, + 108,82,108,82,116,50,116,50,108,17,108,18,108,241,107,241,99,17,100,10, + 241,99,146,17,108,17,108,241,107,17,108,241,99,241,99,49,108,13,91,236, + 82,139,74,106,66,41,58,73,58,41,58,41,58,41,50,232,49,232,41,3, + 232,49,136,200,41,200,41,232,49,233,57,9,58,9,58,41,58,42,58,3, + 74,58,166,106,66,139,74,74,66,204,82,13,91,45,99,77,99,78,107,12, + 91,138,74,204,82,45,91,78,99,110,99,142,99,78,91,110,99,143,107,143, + 99,175,107,208,107,241,123,183,165,118,157,179,140,175,99,143,99,236,90,138, + 74,207,115,73,74,166,57,0,0,36,33,235,90,171,82,45,99,49,124,3, + 17,116,137,16,116,241,115,17,116,17,116,240,115,210,156,182,189,150,181,17, + 108,4,241,99,146,17,100,242,99,98,16,195,24,65,16,232,57,50,108,79, + 83,102,25,98,8,227,32,162,24,106,66,17,100,208,91,208,99,208,99,209, + 99,3,208,91,130,209,91,208,99,3,208,91,130,176,91,176,91,3,208,91, + 134,176,91,209,91,208,91,208,99,176,91,208,91,5,176,91,129,175,91,4, + 143,91,130,111,83,143,83,5,111,83,129,79,83,7,78,83,148,46,83,78, + 83,46,83,46,83,46,75,45,83,46,83,13,75,45,75,45,75,46,83,13, + 75,13,75,45,83,13,75,13,83,45,75,45,75,13,75,13,83,6,13,75, + 3,237,74,130,236,74,236,74,3,204,74,130,172,66,204,66,3,172,66,129, + 171,66,3,139,66,136,232,49,102,33,74,58,107,66,106,58,106,66,106,58, + 106,58,4,74,58,138,41,50,41,58,41,58,41,50,41,50,9,58,9,50, + 9,50,233,49,9,50,3,232,49,132,200,49,200,49,200,41,200,41,3,200, + 49,131,168,49,168,41,135,41,187,3,131,45,83,77,83,46,83,5,78,83, + 143,77,83,45,83,45,83,46,83,46,83,45,75,46,75,78,83,78,83,46, + 83,78,83,78,83,46,83,78,75,46,75,5,13,75,131,13,67,237,66,14, + 75,4,237,66,139,172,58,41,50,73,58,106,58,171,58,172,58,74,58,134, + 41,232,57,203,82,13,91,4,12,91,129,12,83,4,12,91,174,45,91,12, + 91,44,91,44,91,12,91,12,83,12,91,12,83,12,83,12,91,12,83,12, + 91,12,83,11,91,205,74,54,67,249,50,180,9,174,0,140,33,17,116,16, + 116,41,58,130,8,33,8,65,8,65,8,32,0,0,0,0,0,97,8,162, + 16,227,32,228,32,227,32,228,24,228,32,228,24,227,24,195,24,130,24,97, + 24,36,41,138,74,240,115,114,132,3,179,132,4,147,124,160,146,124,114,124, + 146,124,114,124,147,124,179,132,114,124,142,107,37,33,0,0,65,8,65,8, + 0,0,0,0,3,0,214,1,122,18,188,26,111,9,96,32,226,105,68,138, + 69,114,232,57,13,75,82,108,179,124,147,124,146,124,146,140,243,148,105,82, + 3,40,74,139,8,66,40,74,40,66,40,74,40,66,40,66,8,66,7,66, + 8,66,7,66,231,65,3,231,57,134,199,57,199,57,167,49,166,49,166,49, + 134,49,4,134,41,132,102,41,101,41,69,33,70,33,6,69,33,150,37,33, + 69,25,37,25,69,33,78,83,9,58,102,41,134,41,135,41,102,33,102,33, + 69,33,70,33,70,33,69,33,228,24,163,16,130,16,163,16,163,16,131,16, + 163,8,3,163,16,129,196,16,4,228,24,133,228,16,196,16,196,16,196,24, + 164,16,3,195,16,133,164,16,195,16,195,16,163,16,195,16,3,163,16,133, + 195,16,195,8,195,16,195,16,163,16,6,195,16,137,196,16,164,16,196,16, + 195,16,195,16,196,16,228,16,196,16,196,16,3,228,16,182,228,24,228,16, + 196,16,228,24,228,16,228,16,5,25,5,25,37,25,5,25,5,33,37,25, + 37,25,4,25,228,16,130,8,130,8,232,49,41,58,74,58,107,58,172,66, + 172,66,140,66,163,16,98,8,98,8,131,16,163,16,5,17,102,25,200,33, + 204,66,143,83,143,83,176,91,177,99,209,99,209,99,241,99,209,99,209,99, + 176,99,143,91,111,83,79,83,78,83,111,83,175,91,176,91,208,91,17,108, + 17,108,17,100,3,241,107,134,241,99,209,99,209,99,208,99,209,99,209,99, + 5,241,99,145,17,100,241,107,241,107,17,108,241,107,241,107,17,108,175,107, + 45,99,106,66,106,66,41,58,73,66,9,58,41,58,9,50,9,50,3,232, + 49,208,200,41,200,41,232,49,232,49,9,58,9,50,9,50,41,58,42,58, + 41,58,74,58,74,66,74,66,139,74,233,49,139,66,45,99,13,91,77,99, + 110,107,12,91,139,66,236,82,78,99,110,99,110,99,143,99,110,99,110,99, + 111,99,143,99,143,107,175,107,240,115,150,165,118,157,211,140,175,107,142,99, + 12,91,138,74,110,107,105,74,166,57,0,0,4,33,235,90,203,90,12,99, + 17,124,17,116,16,116,17,116,241,115,241,115,241,107,241,115,240,115,178,156, + 182,189,182,189,17,108,241,91,241,99,241,99,209,99,83,108,233,41,130,24, + 228,32,0,0,17,108,17,100,18,108,233,41,130,16,36,33,130,16,46,83, + 17,100,3,208,91,130,208,99,208,99,3,208,91,129,209,91,3,208,91,140, + 176,91,176,91,208,91,208,99,208,91,208,91,176,91,208,91,208,91,176,91, + 208,91,208,91,4,176,91,141,143,91,143,83,143,83,143,91,143,83,143,83, + 111,83,111,83,78,83,111,83,111,83,79,83,110,83,8,78,83,5,46,83, + 141,14,83,46,83,46,83,45,75,46,83,46,83,13,83,13,75,45,75,13, + 75,45,75,13,75,13,83,6,13,75,143,237,74,13,75,237,74,236,74,236, + 74,204,74,236,74,204,74,204,66,204,74,172,66,204,66,172,66,172,66,171, + 66,3,139,66,132,107,66,135,33,200,41,139,66,3,106,58,3,74,58,4, + 42,58,143,41,58,41,58,9,50,41,50,9,50,233,49,233,49,9,50,233, + 49,232,49,167,41,102,33,167,41,232,49,232,49,3,168,41,131,200,41,200, + 41,103,33,165,3,130,45,83,45,83,6,78,83,129,46,83,3,45,75,160, + 46,83,46,75,46,75,46,83,46,83,78,83,46,83,46,83,78,83,46,75, + 45,75,46,75,13,75,13,75,46,75,13,75,237,66,13,67,237,66,13,75, + 237,66,205,66,204,58,106,50,41,50,106,58,172,66,204,66,204,66,41,50, + 102,41,41,66,4,12,91,129,236,82,7,12,91,134,12,83,12,91,12,91, + 12,83,12,83,12,91,4,12,83,168,12,91,12,91,18,75,58,51,54,18, + 17,1,234,8,172,74,207,107,73,66,130,16,32,0,33,0,33,8,33,8, + 65,8,163,16,36,33,134,49,101,41,36,33,4,33,228,24,227,32,227,40, + 194,32,162,40,162,40,3,41,8,66,240,115,179,132,212,132,179,124,147,124, + 114,124,115,124,114,116,82,116,82,116,4,114,124,160,114,116,82,116,114,124, + 114,116,114,124,179,124,244,140,49,124,82,132,16,124,16,124,240,123,174,115, + 110,107,145,107,145,107,181,99,238,33,98,24,227,105,35,138,201,122,235,90, + 12,91,175,107,208,107,49,116,146,132,243,148,40,74,40,74,72,74,4,40, + 74,131,40,66,8,66,40,66,3,8,66,129,231,65,3,231,57,3,199,57, + 132,166,49,167,49,166,49,134,49,3,134,41,133,102,41,102,41,101,33,102, + 33,101,33,3,69,33,150,37,25,37,33,69,33,37,33,69,33,37,33,69, + 33,143,99,8,58,102,41,134,41,102,41,102,41,70,33,69,33,70,33,69, + 33,69,25,37,33,37,33,4,33,195,24,4,163,16,132,163,8,163,16,228, + 16,4,25,3,228,24,141,196,16,228,16,228,16,196,16,196,16,195,16,196, + 16,195,8,228,16,195,16,163,16,195,16,195,16,3,163,16,131,195,16,163, + 16,195,16,5,196,16,133,195,16,163,16,196,16,196,16,195,16,3,196,16, + 129,228,24,3,228,16,3,228,24,134,5,25,228,24,228,24,228,16,228,24, + 228,16,3,5,25,186,229,16,5,25,5,25,37,25,196,16,130,8,66,8, + 98,8,168,41,42,58,9,50,42,50,107,58,107,58,135,33,33,0,65,8, + 98,8,98,0,33,0,98,8,135,41,106,58,13,75,143,83,144,83,143,83, + 111,83,144,83,144,83,143,83,144,83,175,83,176,91,144,91,79,83,78,75, + 46,75,46,75,237,74,172,66,237,66,144,91,208,99,208,99,209,99,241,99, + 241,107,241,99,241,107,17,108,241,99,17,108,17,108,241,107,17,108,241,99, + 241,99,3,17,108,135,241,107,241,107,241,99,241,107,49,108,45,91,171,74, + 3,74,66,3,41,58,195,9,50,233,49,200,49,200,41,232,41,232,49,200, + 41,200,49,233,49,9,58,41,58,9,58,42,58,73,58,41,58,41,58,74, + 58,106,66,139,66,200,41,41,58,45,99,45,99,77,99,109,107,13,99,139, + 74,236,82,110,99,142,99,142,99,110,99,143,107,143,107,142,99,143,99,143, + 99,143,107,240,115,150,165,182,157,20,149,207,107,143,99,13,91,105,74,240, + 123,138,74,166,57,0,0,227,24,203,90,203,82,12,99,17,124,17,116,17, + 116,240,115,240,107,240,107,241,107,240,115,208,115,146,148,182,189,182,189,17, + 108,3,241,99,145,50,100,46,75,130,16,228,32,65,16,41,58,82,108,209, + 99,82,100,163,16,195,24,195,32,195,16,106,58,176,91,209,99,209,91,9, + 208,91,134,176,91,176,91,208,91,176,91,208,91,208,91,4,176,91,134,208, + 91,176,91,176,91,143,91,176,91,176,91,3,143,83,130,143,91,143,83,6, + 111,83,132,79,83,78,83,78,83,110,83,5,78,83,130,46,83,78,83,4, + 46,83,141,45,83,13,75,45,75,45,75,13,75,45,75,13,75,13,75,45, + 83,13,75,13,75,13,83,45,83,5,13,75,7,237,74,3,204,74,142,204, + 66,204,66,172,66,172,66,171,66,171,66,172,66,171,66,171,66,139,66,171, + 66,41,50,102,25,9,50,4,106,58,3,74,58,134,42,58,74,58,74,58, + 41,58,9,58,41,58,5,9,50,141,233,49,233,49,200,49,103,33,135,33, + 200,49,232,49,200,41,200,41,168,41,200,41,200,41,70,33,91,3,142,45, + 83,45,83,78,83,78,83,78,91,78,83,78,83,46,83,45,83,46,83,46, + 83,45,75,46,75,46,75,3,46,83,129,78,83,3,46,83,131,46,75,46, + 83,46,75,4,13,75,3,237,66,141,13,67,237,66,205,66,172,58,74,50, + 106,58,172,66,205,74,13,67,204,66,8,50,134,41,105,74,4,12,91,129, + 12,83,10,12,91,5,12,83,163,12,91,11,83,13,91,53,75,249,50,180, + 9,238,0,74,25,236,82,171,82,102,41,65,8,33,8,0,0,65,8,195, + 24,101,41,167,49,166,49,69,41,228,24,228,24,4,41,36,49,35,57,225, + 56,129,40,226,48,198,65,13,99,49,116,179,132,179,124,147,124,115,124,4, + 146,124,131,114,124,82,116,114,116,4,114,124,129,114,116,5,114,124,154,82, + 116,239,115,81,132,113,132,16,124,240,123,240,123,207,115,240,123,208,115,209, + 115,179,99,239,74,236,98,11,115,109,115,174,115,142,115,109,107,110,107,16, + 124,211,140,145,140,231,65,40,74,72,74,4,40,74,131,40,66,8,66,40, + 66,4,8,66,3,231,57,4,199,57,138,166,49,166,49,134,41,134,49,134, + 41,101,41,102,41,102,41,102,33,101,33,7,69,33,158,37,33,69,33,37, + 33,70,33,208,107,232,57,134,41,134,41,102,41,102,41,102,33,102,33,69, + 33,37,33,70,33,69,33,37,33,5,25,5,25,4,25,228,24,195,16,195, + 16,163,16,195,16,228,16,228,24,229,24,228,24,228,24,3,228,16,3,196, + 16,131,228,16,196,16,228,16,3,196,16,5,195,16,3,196,16,135,228,16, + 195,16,196,16,228,24,196,16,196,16,196,24,5,196,16,6,228,16,131,4, + 25,228,16,228,24,10,228,16,153,4,25,4,25,195,16,65,8,65,0,167, + 41,73,58,9,58,233,49,9,50,135,33,130,0,33,0,65,0,66,0,98, + 0,130,8,37,33,9,50,233,49,233,49,107,58,139,58,139,58,237,74,3, + 13,75,151,237,66,171,58,9,42,135,33,38,25,228,16,228,16,228,8,228, + 16,5,17,5,17,37,25,70,25,135,25,168,33,232,41,41,42,107,50,172, + 58,237,66,78,75,144,83,176,91,3,241,99,143,17,108,241,107,17,108,241, + 107,241,99,209,99,208,99,208,99,241,99,110,107,77,99,106,66,74,66,74, + 66,73,58,3,41,58,130,9,50,200,41,6,232,49,148,9,50,9,58,9, + 58,41,58,42,58,74,58,74,58,73,58,106,66,139,74,232,49,9,50,78, + 99,45,99,77,99,77,99,13,91,139,82,237,90,78,99,3,110,99,150,143, + 107,143,99,143,99,110,99,110,99,142,107,207,115,118,157,150,157,244,148,175, + 107,142,99,45,91,106,74,110,107,138,74,198,57,32,0,195,24,203,82,203, + 82,236,90,4,240,115,3,208,107,135,208,115,207,115,113,148,182,189,182,197, + 17,108,241,91,3,241,99,148,135,33,130,16,163,24,196,24,207,91,241,99, + 49,100,13,67,65,16,4,33,163,24,102,33,4,17,107,58,208,99,208,91, + 208,99,208,91,208,91,176,91,3,208,91,136,208,99,208,91,176,91,176,83, + 208,91,208,91,176,91,208,91,11,176,91,4,143,91,129,143,83,3,111,83, + 130,78,83,110,83,10,78,83,6,46,83,135,46,75,45,75,13,75,13,75, + 45,75,13,75,13,83,3,13,75,130,237,74,237,74,5,13,75,130,237,74, + 13,75,3,237,74,151,236,66,204,74,236,74,204,74,204,66,204,74,204,74, + 172,66,172,66,171,66,172,66,139,66,171,66,171,66,139,66,171,66,106,58, + 135,41,167,41,106,58,106,58,74,58,106,58,3,74,58,130,41,58,74,58, + 3,41,58,4,9,50,134,8,50,9,50,233,49,233,41,9,50,200,49,3, + 232,49,134,200,49,200,41,200,41,168,41,200,41,103,33,176,3,130,45,83, + 45,83,5,78,83,138,46,83,45,83,45,83,46,83,45,83,45,75,45,75, + 46,83,46,75,46,83,3,46,75,136,45,75,46,83,46,75,46,75,13,75, + 237,74,237,74,13,67,4,237,66,140,13,67,205,66,139,58,74,58,171,58, + 237,66,237,74,13,75,204,66,232,49,167,49,170,74,13,12,91,129,12,83, + 3,12,91,3,12,83,169,11,91,237,82,88,67,185,34,148,1,172,0,234, + 49,12,91,8,58,195,24,33,8,0,0,65,8,37,33,8,66,231,57,134, + 49,4,33,195,16,228,24,100,57,132,81,98,73,160,56,64,40,226,40,171, + 82,208,115,146,124,179,132,147,124,146,124,114,124,146,124,147,124,114,124,147, + 124,147,124,114,116,82,124,50,116,6,114,124,129,114,116,5,114,124,159,16, + 116,81,124,146,132,114,132,16,124,49,124,49,132,240,123,240,115,16,124,17, + 124,19,116,243,115,208,107,175,115,174,115,175,115,174,115,142,107,49,124,243, + 148,15,124,231,65,72,74,72,74,40,74,40,74,40,66,40,74,8,66,40, + 66,3,8,66,130,7,66,8,66,4,231,57,142,199,57,199,57,199,49,166, + 49,166,49,134,49,134,49,134,41,102,41,101,41,101,41,69,33,69,33,70, + 41,3,69,33,140,37,33,69,33,69,33,37,33,36,25,37,25,102,33,114, + 132,200,57,102,33,134,41,134,41,3,102,41,130,37,33,70,33,3,69,33, + 137,5,33,38,33,5,25,37,33,4,25,228,24,228,24,228,16,5,25,3, + 228,24,136,4,25,228,16,228,16,196,16,196,24,228,24,228,16,228,16,4, + 196,16,134,228,16,195,16,196,16,196,16,195,16,163,16,3,196,16,143,196, + 8,196,24,196,16,196,24,228,24,228,16,228,16,228,24,228,16,196,16,228, + 16,196,24,196,24,228,24,228,24,3,228,16,134,228,24,228,24,196,16,228, + 16,228,16,196,16,4,228,16,170,196,16,228,16,196,16,228,24,228,24,4, + 25,98,8,33,0,135,41,200,41,134,33,103,25,168,33,228,24,98,8,33, + 0,33,0,65,0,98,8,228,24,135,41,135,33,135,33,233,49,139,58,171, + 66,204,66,237,74,13,75,204,66,9,42,70,17,163,8,163,8,195,16,163, + 16,130,16,98,8,98,8,130,8,162,16,195,16,7,228,24,156,4,25,37, + 25,37,25,102,25,135,25,9,34,139,50,13,75,112,83,176,91,241,99,18, + 108,18,108,241,99,209,91,208,91,208,91,207,107,207,115,138,66,106,66,73, + 58,73,58,41,58,9,58,41,58,232,49,200,49,3,232,49,210,233,49,200, + 41,232,49,9,50,9,58,41,58,42,58,41,58,74,58,73,58,74,58,106, + 66,139,66,200,41,8,50,110,99,45,99,78,99,78,99,13,99,171,82,237, + 82,78,99,78,99,110,99,142,99,143,99,175,99,142,99,78,99,110,99,143, + 107,175,115,85,157,118,157,211,140,208,107,143,107,45,91,138,74,45,91,138, + 74,231,57,32,0,195,24,170,82,203,90,236,90,240,115,207,115,208,107,208, + 107,175,107,175,107,207,107,207,115,207,115,113,148,182,189,214,197,49,116,208, + 91,241,99,50,108,237,66,98,16,4,33,97,16,105,66,18,100,241,99,18, + 100,38,25,195,24,228,32,69,41,13,75,228,16,228,16,13,75,209,99,209, + 99,3,208,91,131,208,99,208,91,208,91,4,176,91,136,208,91,208,91,176, + 91,208,91,176,91,208,91,176,91,208,91,4,176,91,132,175,91,176,91,175, + 91,143,83,3,143,91,129,143,83,5,111,83,129,110,83,8,78,83,130,46, + 83,78,83,4,46,83,149,13,83,45,83,45,75,45,83,13,75,45,75,13, + 75,13,83,13,75,13,83,13,75,172,66,107,50,13,75,13,83,13,83,13, + 75,13,75,237,74,237,74,13,75,4,237,74,134,204,74,204,74,204,66,204, + 74,204,66,204,66,3,172,66,131,171,66,139,66,171,66,3,139,66,135,9, + 50,135,33,233,41,139,58,106,66,74,58,106,58,3,74,58,139,73,58,73, + 58,41,58,9,58,42,50,9,50,9,50,233,49,233,49,9,50,9,58,4, + 233,49,136,232,49,200,49,200,49,200,41,200,41,168,41,200,41,135,41,172, + 3,158,45,83,45,83,77,83,78,83,46,83,45,83,78,83,45,83,45,83, + 46,83,46,83,77,83,78,83,46,83,46,83,46,75,46,75,45,75,14,75, + 45,75,13,75,13,75,46,75,46,75,13,75,237,66,236,66,237,66,237,66, + 13,67,3,237,66,144,139,58,106,50,171,58,172,66,237,74,13,75,13,75, + 171,66,199,49,8,58,203,82,12,91,12,83,12,91,12,91,236,82,3,12, + 91,131,236,90,12,91,236,82,5,12,91,3,12,83,160,235,82,16,75,57, + 59,87,26,16,1,234,8,137,74,138,82,102,41,65,8,0,0,98,8,134, + 49,73,74,231,57,4,33,195,24,227,32,100,49,165,81,164,89,33,73,160, + 48,194,40,73,66,207,107,179,132,212,132,179,124,146,124,114,124,146,124,4, + 114,124,134,146,124,114,124,114,124,82,116,50,116,82,116,3,114,124,3,114, + 116,161,82,116,114,116,114,124,114,124,114,116,147,124,17,116,48,124,114,132, + 178,140,146,132,49,124,114,132,114,132,81,132,81,132,81,124,81,124,17,124, + 17,124,240,115,240,115,240,123,16,124,240,123,81,132,20,157,109,107,7,66, + 72,74,72,74,41,74,72,74,3,40,74,5,8,66,129,231,65,5,231,57, + 135,199,57,199,57,166,49,166,49,134,49,134,41,134,41,3,102,41,129,101, + 33,4,69,33,147,37,33,69,33,37,33,37,25,37,25,37,33,195,24,236, + 82,240,115,134,49,167,49,135,41,135,41,134,41,134,41,102,41,102,41,102, + 33,70,41,3,69,33,150,5,33,37,33,37,25,5,25,5,25,4,25,228, + 24,228,24,4,17,228,24,228,24,228,16,196,16,228,16,228,24,4,25,228, + 24,228,16,228,16,228,24,196,16,195,16,4,196,16,134,163,16,163,16,196, + 16,195,16,228,24,195,16,5,196,16,130,196,24,228,24,3,196,16,3,228, + 16,3,196,16,135,228,16,196,16,228,16,228,24,228,16,228,24,196,16,4, + 228,16,159,196,16,228,16,196,16,228,16,228,24,4,25,4,25,98,8,65, + 8,167,41,168,41,195,16,37,33,200,41,167,41,102,41,130,8,33,0,65, + 8,98,8,37,25,135,41,200,49,74,58,140,66,139,58,171,66,139,58,200, + 33,4,9,66,0,3,0,0,224,130,8,102,33,135,33,37,33,37,33,69, + 33,134,41,167,41,167,49,70,33,4,25,228,24,228,16,228,16,228,8,228, + 16,228,16,4,17,102,33,135,41,134,41,37,25,37,25,4,25,37,25,135, + 33,233,41,233,33,9,42,139,58,46,75,111,83,176,91,175,107,45,91,107, + 66,74,66,74,66,73,58,9,58,41,58,9,50,232,49,9,50,200,49,233, + 49,232,41,232,49,200,49,232,49,9,58,232,49,41,58,41,58,73,58,74, + 58,42,58,74,66,139,66,139,74,232,49,232,49,110,99,13,99,77,99,45, + 99,13,91,236,82,13,91,45,91,77,91,110,99,143,99,175,107,143,99,111, + 91,110,99,110,99,175,107,208,115,85,157,150,165,243,148,207,107,111,99,45, + 91,106,74,45,99,170,74,231,57,65,8,162,16,170,82,203,90,203,90,175, + 115,4,175,107,159,143,107,175,107,240,115,240,115,80,140,182,189,214,197,82, + 132,208,91,241,99,50,100,98,8,195,24,195,24,4,33,17,100,241,99,17, + 100,172,66,163,24,4,33,162,24,12,83,241,99,172,58,163,8,4,17,236, + 74,208,91,208,91,176,91,5,208,91,3,176,91,132,208,91,176,91,176,91, + 208,91,8,176,91,131,175,91,175,83,144,83,3,143,91,129,143,83,6,111, + 83,131,110,83,78,83,110,83,6,78,83,5,46,83,143,13,75,13,75,45, + 75,46,83,14,75,45,75,45,75,13,75,45,75,45,75,13,75,13,75,204, + 66,107,58,237,74,5,13,75,141,237,74,237,74,13,75,237,74,237,74,236, + 74,236,74,204,74,204,66,204,74,204,74,172,66,172,66,4,171,66,137,139, + 66,171,66,139,66,139,66,106,66,232,49,134,33,41,50,107,66,6,74,58, + 131,41,50,42,50,41,58,4,9,50,131,233,49,9,50,9,50,3,233,49, + 137,200,41,232,49,200,41,200,49,200,49,200,41,200,49,200,49,167,49,143, + 3,132,45,75,45,83,77,83,78,83,3,45,83,137,46,83,45,83,46,83, + 46,83,45,83,46,83,46,75,46,83,46,75,6,13,75,133,45,75,46,75, + 237,74,205,66,204,66,4,237,66,141,205,66,172,58,106,58,138,58,172,66, + 204,66,237,66,237,74,13,75,139,58,167,49,73,66,236,90,4,12,91,135, + 236,90,12,91,12,91,236,90,12,91,12,91,12,83,4,12,91,164,12,83, + 12,91,12,83,11,83,17,75,57,59,119,34,238,0,139,33,171,74,8,58, + 4,25,97,8,33,0,4,25,8,58,167,49,36,33,195,24,36,41,133,65, + 164,81,66,73,225,64,161,48,226,40,106,74,17,116,179,132,179,124,146,124, + 114,124,114,124,146,124,114,124,146,124,3,114,124,143,146,124,114,124,146,124, + 114,124,49,116,17,108,50,116,114,124,114,124,114,116,114,116,82,124,114,124, + 82,124,114,116,4,114,124,142,16,116,16,124,146,132,146,140,211,140,146,132, + 178,140,179,140,146,140,146,140,146,132,146,132,114,132,82,124,5,49,124,133, + 114,132,85,165,235,98,7,66,72,74,3,40,74,131,40,66,40,74,8,74, + 7,8,66,134,231,57,199,57,231,57,199,57,199,57,167,49,3,166,49,129, + 134,41,3,102,41,131,101,41,101,33,70,41,6,69,33,146,69,25,37,33, + 37,33,163,16,49,116,143,107,167,49,135,41,135,41,134,41,134,41,102,41, + 70,33,101,41,70,33,70,41,69,33,70,41,4,37,33,3,5,25,132,228, + 24,4,25,228,24,4,25,4,228,24,141,228,16,228,24,228,24,228,16,228, + 16,228,24,196,16,195,16,196,16,228,16,228,16,195,16,195,16,3,196,16, + 130,228,24,196,16,4,228,16,129,196,16,4,228,16,129,228,24,4,196,16, + 4,228,16,129,196,16,3,228,16,3,196,16,6,228,16,153,228,24,4,25, + 4,25,98,8,98,0,167,41,41,58,134,41,200,49,9,50,200,49,233,49, + 102,41,228,24,228,24,37,33,102,41,200,49,233,49,200,41,168,33,102,25, + 102,25,37,25,33,0,6,0,0,154,98,8,5,25,135,33,232,49,200,41, + 200,41,233,49,200,41,102,17,135,25,9,34,42,42,74,42,42,34,42,34, + 9,34,200,25,135,25,200,41,233,49,200,41,232,49,232,49,167,41,70,33, + 163,8,3,0,0,170,98,0,196,8,37,17,175,107,13,91,139,74,74,66, + 74,66,74,58,41,58,41,58,9,50,233,49,233,49,232,49,233,49,200,49, + 200,49,232,49,233,49,9,58,9,58,41,58,73,58,73,58,42,58,41,58, + 74,66,139,66,139,66,232,41,199,49,78,99,45,99,77,99,13,91,236,90, + 45,99,13,91,78,91,110,99,142,99,3,175,99,199,143,99,110,99,110,99, + 143,107,208,115,53,157,182,165,20,149,208,115,110,99,45,91,105,74,77,99, + 171,74,231,57,97,8,130,16,170,82,235,90,171,82,174,115,142,107,142,107, + 174,107,175,107,175,107,208,107,207,107,175,107,16,132,182,189,214,197,114,132, + 209,91,50,100,234,41,130,16,228,32,33,8,45,83,18,100,209,99,241,99, + 103,33,163,24,227,32,36,33,208,91,241,99,143,91,74,50,98,0,102,25, + 13,75,209,99,208,91,208,91,176,91,208,91,208,91,176,91,144,91,176,91, + 208,91,208,91,176,91,176,91,208,91,176,91,208,91,176,99,8,176,91,129, + 175,91,3,143,91,129,143,83,6,111,83,130,78,83,111,83,5,78,83,5, + 46,83,143,45,83,45,83,13,83,45,83,46,83,13,75,45,83,13,75,13, + 75,13,83,13,83,13,75,13,83,237,74,205,66,6,13,75,133,237,74,13, + 75,237,74,236,74,237,74,3,236,74,135,204,74,204,66,204,66,172,66,172, + 66,171,66,172,66,3,171,66,137,138,58,139,66,107,66,139,66,106,58,167, + 41,200,41,74,58,106,58,3,74,58,131,74,50,42,50,74,58,3,41,50, + 4,9,50,137,233,49,9,50,233,49,233,49,232,49,233,49,232,49,200,49, + 201,41,3,200,49,130,200,41,168,41,179,3,137,45,75,78,83,78,83,46, + 83,45,83,45,83,46,83,45,83,45,75,3,46,83,132,78,83,46,75,45, + 75,46,83,4,13,75,162,13,67,13,67,13,75,46,75,237,66,204,66,172, + 66,204,66,205,66,237,66,204,66,172,58,74,50,74,58,171,58,204,66,236, + 66,237,66,13,75,236,74,106,58,232,49,138,74,236,82,236,82,12,91,12, + 91,236,82,236,90,12,83,12,91,12,91,236,90,236,82,4,12,91,158,236, + 82,236,82,12,91,235,90,16,75,58,59,86,34,175,0,11,50,44,91,232, + 49,163,16,97,8,32,0,4,25,166,49,36,33,195,24,227,32,35,57,35, + 73,160,56,64,40,226,40,194,32,130,24,70,33,143,99,147,132,146,124,3, + 114,124,132,146,124,114,124,114,124,146,124,3,114,124,142,146,124,114,124,146, + 124,82,116,17,108,17,108,50,116,114,116,114,124,114,116,82,116,114,124,114, + 124,82,124,4,114,124,136,81,124,146,140,81,132,146,132,179,140,243,148,211, + 148,179,140,5,211,140,143,179,132,178,132,114,132,82,124,81,116,146,132,178, + 140,114,132,117,165,105,82,40,74,72,74,72,74,40,74,40,74,3,40,66, + 5,8,66,130,231,65,232,65,3,231,57,139,199,57,199,57,199,49,199,49, + 166,49,166,49,134,41,134,41,102,41,102,41,101,41,6,69,33,151,37,33, + 69,33,37,25,37,25,37,33,163,16,17,108,204,82,134,41,135,41,135,41, + 102,41,167,41,70,33,70,33,102,41,102,33,70,33,70,33,69,33,37,33, + 69,33,37,25,3,37,33,144,37,25,5,25,5,25,228,24,5,25,37,25, + 4,25,229,24,5,25,228,24,4,25,228,16,228,24,228,16,228,16,196,16, + 4,228,16,136,196,16,228,16,195,16,196,16,228,16,196,16,196,24,228,16, + 4,196,16,5,228,16,174,196,24,228,24,196,16,196,16,228,16,228,16,196, + 16,228,16,228,16,196,16,228,16,196,16,228,16,228,16,196,24,228,24,228, + 16,228,24,196,24,228,16,228,24,228,24,4,25,228,16,98,8,98,8,102, + 33,200,41,167,41,232,49,73,58,232,49,232,49,9,50,9,50,135,33,135, + 41,135,41,70,33,228,16,195,16,228,16,4,25,37,25,228,24,32,0,8, + 0,0,151,195,8,103,33,200,41,200,41,9,50,233,49,172,58,80,67,144, + 67,80,67,238,50,205,50,80,67,112,67,144,67,205,58,10,50,9,50,232, + 49,232,49,200,41,228,16,33,0,7,0,0,148,207,107,45,99,106,74,74, + 66,74,66,74,58,41,58,41,58,41,50,9,50,200,41,232,49,233,49,233, + 49,232,49,232,49,233,49,9,50,9,50,41,58,3,74,58,207,41,58,74, + 66,107,66,139,66,9,50,167,41,236,90,78,99,78,99,13,91,171,82,45, + 99,13,91,78,99,110,99,110,99,143,99,142,99,143,99,143,99,110,99,143, + 99,143,107,208,115,53,157,117,165,243,148,207,107,143,99,45,91,105,74,77, + 99,171,82,231,65,97,8,98,16,138,82,235,90,170,82,110,107,142,107,110, + 107,142,107,208,115,208,107,143,99,110,107,110,107,207,123,150,189,214,197,146, + 132,17,100,237,74,131,16,4,33,65,8,69,41,82,108,209,91,241,99,46, + 75,163,24,4,33,130,24,73,58,17,100,208,91,209,99,111,83,135,25,98, + 0,199,33,144,91,209,99,176,91,176,91,208,91,208,91,6,176,91,130,208, + 91,208,91,7,176,91,132,175,91,176,91,176,91,175,91,3,143,91,132,143, + 83,111,83,111,83,111,91,3,111,83,131,79,83,78,83,110,83,5,78,83, + 7,46,83,143,14,83,46,83,46,83,13,83,13,83,13,75,13,75,13,83, + 13,83,13,75,45,75,13,75,237,74,13,83,13,83,3,13,75,3,237,74, + 129,236,74,3,237,74,148,236,74,204,74,204,74,204,66,204,66,172,66,171, + 66,171,66,172,66,171,66,171,66,139,66,139,66,139,58,106,58,139,66,139, + 58,41,50,135,41,9,50,3,74,58,141,42,66,42,50,41,58,74,58,41, + 50,41,50,9,58,41,50,9,58,9,50,9,50,233,49,9,50,4,233,49, + 136,232,41,232,49,200,49,200,49,200,41,200,41,168,41,200,41,180,3,4, + 45,83,4,13,75,130,45,83,45,83,3,46,83,129,46,75,5,13,75,144, + 237,74,237,66,13,75,13,67,237,74,237,66,204,66,139,58,172,58,205,66, + 172,66,172,58,74,50,41,50,171,58,204,58,3,237,66,133,13,67,236,66, + 106,58,41,58,171,82,3,236,90,170,12,91,12,83,12,91,12,91,236,82, + 236,90,12,91,236,82,236,90,12,91,236,90,12,91,12,91,12,83,11,83, + 18,75,58,59,20,26,237,0,75,58,43,91,102,41,130,16,65,8,65,8, + 195,24,36,33,195,24,195,32,194,40,193,56,161,40,36,41,73,66,208,107, + 175,107,199,41,130,16,195,24,172,66,17,116,147,124,4,114,124,132,146,124, + 114,124,114,124,146,124,5,114,124,132,49,116,240,107,17,108,82,116,3,114, + 124,165,82,116,114,116,82,124,114,116,114,116,82,116,114,116,82,124,49,124, + 146,140,146,140,81,124,211,140,243,140,179,140,211,140,179,140,179,140,178,132, + 179,140,211,140,211,140,211,132,179,132,146,124,114,124,178,132,178,140,179,140, + 85,157,231,65,40,74,72,74,40,74,40,74,8,66,40,74,5,8,66,130, + 232,65,232,65,4,231,57,130,199,57,199,57,3,167,49,136,166,49,134,49, + 134,49,134,41,134,41,102,41,102,41,101,41,6,69,33,183,37,33,69,33, + 37,25,37,33,195,16,45,91,9,50,134,41,134,41,135,49,135,41,134,41, + 135,49,102,41,134,41,102,41,102,41,69,33,69,33,70,33,69,33,69,33, + 70,33,69,33,37,25,5,25,37,25,37,25,5,25,5,25,4,25,4,25, + 5,25,4,25,228,24,4,17,228,16,228,24,228,24,228,16,228,16,228,24, + 228,16,228,24,196,16,195,16,196,24,196,16,196,16,228,16,228,24,196,16, + 228,16,196,16,228,16,3,228,24,148,196,16,228,16,228,24,196,16,228,24, + 196,16,228,16,228,16,196,16,228,24,228,16,196,16,228,24,196,16,228,16, + 228,16,196,16,228,16,196,16,196,16,3,228,16,159,196,24,228,16,228,24, + 196,16,196,16,98,8,98,8,228,16,4,25,4,17,37,25,9,50,74,66, + 41,58,232,49,167,33,228,16,131,8,131,8,130,8,163,8,195,16,228,24, + 37,25,37,25,4,25,130,16,65,8,32,8,0,0,32,0,6,0,0,147, + 66,0,228,16,5,25,70,25,135,33,233,33,42,34,107,42,75,50,75,42, + 107,42,74,34,10,34,168,33,102,33,5,25,228,16,130,8,1,0,9,0, + 0,137,109,99,77,99,106,66,106,66,41,58,41,58,9,58,233,49,200,49, + 3,200,41,133,200,49,200,41,167,41,168,41,168,41,4,233,49,205,9,58, + 41,58,9,58,42,58,74,66,74,66,106,66,41,66,106,74,13,91,78,107, + 237,90,171,82,45,99,45,91,78,99,110,99,110,99,175,107,143,107,143,99, + 143,107,143,107,111,107,175,107,17,124,52,165,85,165,178,148,110,99,143,99, + 77,99,105,74,45,99,203,82,231,57,130,16,97,8,138,82,235,90,138,82, + 109,107,110,107,110,107,175,107,110,99,77,99,45,99,77,99,110,107,207,123, + 181,189,214,197,244,148,78,75,196,16,4,33,162,24,196,32,208,99,241,91, + 208,99,82,100,5,17,195,24,228,32,4,33,208,99,209,99,209,91,208,99, + 241,99,237,74,69,25,65,0,42,50,111,83,4,176,91,129,175,91,10,176, + 91,129,175,91,5,176,91,141,144,91,144,83,144,91,143,91,143,83,143,91, + 111,91,111,83,111,83,110,83,111,83,79,83,110,83,8,78,83,150,46,83, + 78,83,46,83,46,83,13,75,45,75,14,75,45,83,45,83,13,75,13,83, + 45,83,13,75,45,83,13,75,45,75,13,75,13,75,237,74,237,74,13,75, + 13,83,3,13,75,4,237,74,165,236,74,237,74,204,74,204,74,204,66,204, + 74,172,66,171,58,171,66,171,66,139,66,172,66,171,66,171,66,139,66,139, + 66,138,58,107,66,107,66,107,58,232,41,135,33,41,50,74,58,74,58,74, + 50,42,58,74,58,41,58,42,58,41,58,41,58,9,50,9,50,9,58,9, + 50,9,50,3,233,49,132,232,49,233,49,200,49,200,41,3,200,49,131,200, + 41,200,41,168,41,79,3,4,45,83,132,45,75,13,75,13,75,45,75,4, + 45,83,130,78,83,46,83,3,13,75,132,237,74,237,66,13,75,13,67,4, + 237,66,137,204,66,171,58,139,58,172,58,139,58,106,50,41,50,74,58,172, + 58,4,237,66,146,13,67,236,66,106,58,74,58,204,82,236,90,236,90,236, + 82,236,82,236,90,236,82,12,83,236,90,12,83,236,90,12,91,12,83,236, + 82,3,12,91,157,11,91,241,74,89,67,117,42,205,0,76,66,235,82,37, + 33,162,16,65,8,65,8,163,24,228,32,227,24,130,24,129,32,35,49,8, + 66,13,91,82,116,146,124,147,124,240,107,73,58,163,16,130,24,9,50,208, + 99,147,132,8,114,124,129,114,116,3,114,124,138,82,124,17,108,240,107,17, + 108,82,116,114,124,114,116,82,124,82,116,114,116,5,114,124,136,82,116,49, + 124,113,132,178,140,114,132,146,132,211,140,243,148,5,211,140,140,179,132,178, + 132,179,132,211,132,146,132,114,132,179,140,146,132,178,140,19,157,199,65,72, + 74,3,40,74,9,8,66,129,232,57,3,231,57,148,199,57,199,57,199,49, + 199,57,167,49,166,49,166,49,134,49,134,41,134,41,102,41,101,41,101,41, + 101,33,69,33,70,33,69,33,69,33,37,33,69,33,3,37,33,138,163,16, + 208,107,41,66,134,41,134,41,135,49,135,41,134,41,135,41,134,41,4,102, + 41,139,70,33,102,33,69,33,70,33,69,33,37,25,37,25,37,33,37,25, + 5,25,37,25,3,5,25,142,4,25,5,25,4,25,5,25,4,25,228,24, + 228,24,228,16,228,24,228,16,228,24,228,24,195,16,195,16,3,196,16,131, + 228,16,4,17,228,24,3,228,16,6,228,24,133,228,16,228,24,228,16,228, + 16,228,24,4,228,16,129,228,24,5,228,16,129,196,16,5,228,16,156,228, + 24,228,16,196,16,196,16,65,8,98,8,228,16,228,24,228,24,228,16,134, + 33,74,58,74,58,9,50,9,50,167,41,228,24,130,8,98,8,98,8,131, + 8,195,16,5,17,5,25,4,25,163,16,98,8,33,0,15,0,0,132,1, + 0,1,0,0,0,1,0,13,0,0,135,1,8,33,8,33,8,0,0,109, + 107,77,99,172,82,5,139,74,141,107,74,171,74,139,74,139,74,203,82,204, + 82,204,82,236,90,13,99,45,99,77,107,110,107,110,107,3,175,115,144,240, + 115,240,123,16,124,49,132,49,132,113,140,146,140,178,148,146,140,178,148,211, + 148,211,148,243,148,243,148,243,156,20,157,3,52,157,184,52,165,52,165,243, + 148,243,148,52,165,19,157,48,124,12,91,175,107,78,99,73,74,109,107,203, + 82,199,57,162,16,65,8,105,74,236,90,138,82,77,107,77,107,110,107,45, + 99,12,91,236,90,45,99,78,99,45,99,142,115,182,189,214,197,20,149,229, + 16,162,24,228,32,65,16,171,74,241,99,208,91,17,100,14,75,33,8,36, + 33,130,16,139,74,17,100,209,91,176,91,208,91,208,99,176,99,139,58,195, + 8,195,8,106,58,144,91,11,176,91,133,144,91,144,91,176,91,176,91,175, + 91,4,176,91,130,144,83,176,83,3,143,91,129,111,91,6,111,83,129,110, + 83,8,78,83,5,46,83,136,46,75,13,83,45,75,13,75,46,75,45,75, + 13,83,14,75,3,13,75,131,13,83,13,75,237,74,7,13,75,130,237,74, + 237,74,3,236,74,129,205,74,3,204,74,157,204,66,204,66,172,66,171,66, + 139,66,140,66,171,66,171,66,139,66,139,66,139,58,106,58,107,66,107,66, + 73,58,167,41,200,41,74,58,74,58,74,50,42,58,74,58,41,58,42,58, + 41,50,41,50,41,58,9,58,9,58,4,9,50,134,233,49,9,50,232,49, + 232,49,200,49,232,41,4,200,41,1,200,49,199,3,129,46,83,3,45,83, + 132,45,75,45,75,13,75,13,75,4,46,83,133,45,83,46,83,45,75,13, + 75,13,75,8,237,66,191,205,66,172,58,139,58,172,58,106,58,73,50,73, + 50,171,58,204,66,237,66,237,66,13,67,13,67,237,74,204,66,107,58,106, + 66,236,90,236,82,236,82,12,91,236,82,236,90,236,90,12,83,12,83,236, + 82,12,91,236,90,12,83,236,90,12,91,12,83,11,91,239,74,90,67,150, + 50,206,0,108,66,202,82,36,25,163,16,97,8,65,8,163,16,195,24,162, + 16,97,16,101,49,203,90,240,115,114,124,146,124,114,124,82,116,49,116,49, + 116,236,82,227,16,130,16,70,33,78,91,146,124,6,114,124,131,114,116,114, + 124,114,116,3,114,124,172,82,116,17,108,240,99,49,116,82,116,114,124,82, + 124,82,116,114,116,82,124,114,124,114,124,114,116,114,124,114,124,49,116,48, + 116,114,132,146,140,146,140,146,132,211,140,243,140,243,148,211,140,211,140,243, + 140,244,140,243,140,211,140,211,140,243,140,211,140,146,132,179,132,114,132,210, + 140,178,140,231,65,72,74,40,74,8,66,8,66,40,74,5,8,66,133,232, + 65,7,66,231,57,231,65,7,58,4,231,57,130,199,57,199,57,3,166,49, + 153,134,49,134,41,102,41,134,41,101,41,102,41,69,33,69,33,70,33,69, + 33,69,33,37,33,37,25,37,33,37,25,37,25,195,16,13,83,9,58,134, + 41,134,41,167,41,135,41,167,49,134,41,5,102,41,166,102,33,70,33,37, + 33,70,33,69,33,37,33,37,33,37,25,5,25,5,25,4,25,228,16,4, + 25,37,25,4,25,228,24,229,24,228,24,228,16,228,24,195,16,195,8,196, + 16,195,16,196,16,195,16,163,16,163,8,163,16,163,8,163,16,163,8,228, + 16,196,16,195,16,163,8,163,16,164,16,6,163,8,132,131,16,131,8,131, + 8,163,16,5,131,8,211,98,8,131,8,98,8,98,8,66,8,66,0,66, + 8,66,8,66,0,66,8,66,8,66,0,66,0,33,0,1,0,0,0,0, + 0,66,8,65,8,65,8,66,8,196,24,103,41,167,41,168,49,200,49,200, + 49,135,41,37,33,196,24,131,16,98,16,130,16,163,16,196,24,228,32,4, + 33,228,32,228,32,4,33,228,40,4,41,4,41,37,41,69,49,102,49,134, + 49,167,57,199,65,232,65,8,74,41,74,73,74,138,82,170,90,203,90,236, + 98,236,98,44,107,77,107,109,107,174,115,174,123,239,123,240,131,48,132,48, + 132,81,140,114,148,146,140,146,148,178,148,211,148,243,148,243,156,85,165,117, + 165,85,165,85,165,117,165,117,173,117,165,117,173,3,150,173,132,118,173,182, + 173,150,173,150,173,3,182,173,133,182,181,182,173,182,181,214,173,215,181,8, + 182,173,132,150,173,118,173,150,173,118,165,4,117,165,130,85,165,85,173,3, + 85,165,190,52,165,19,157,243,156,243,156,145,140,44,91,171,82,175,99,110, + 99,73,66,77,99,236,90,231,57,163,24,33,8,73,74,12,91,138,82,12, + 99,44,99,235,90,236,90,203,90,12,99,12,99,236,90,12,91,141,115,182, + 189,88,198,106,74,98,16,4,33,33,8,199,49,17,100,209,99,209,99,241, + 91,38,25,195,24,228,24,163,24,16,100,208,91,208,91,176,91,208,91,176, + 91,208,91,111,83,233,41,33,0,37,25,237,74,208,99,176,91,176,91,175, + 91,176,91,176,91,175,91,3,176,91,139,175,91,143,83,144,91,176,91,176, + 91,175,91,176,91,176,91,144,91,176,91,144,91,4,143,91,129,143,83,3, + 111,83,132,110,83,78,83,79,83,111,83,4,78,83,147,78,91,46,83,46, + 83,78,83,46,83,45,75,46,75,46,75,45,83,13,83,45,83,45,83,13, + 75,45,75,13,83,13,83,13,75,45,83,13,83,7,13,75,148,237,74,13, + 75,13,75,236,74,236,74,237,74,236,74,236,74,237,74,204,74,205,74,205, + 66,204,74,172,66,172,66,171,66,171,66,139,66,139,66,171,66,3,139,66, + 136,107,66,139,66,107,66,106,58,106,66,41,58,167,41,232,41,4,74,58, + 134,41,50,41,58,41,50,42,58,41,50,9,58,5,9,50,139,233,49,232, + 49,233,49,232,49,200,49,232,49,232,49,200,41,200,41,233,41,167,41,162, + 3,4,45,83,143,13,83,45,75,13,75,13,75,45,83,45,83,46,83,45, + 83,46,83,45,75,13,75,237,74,237,66,237,66,205,66,7,237,66,146,204, + 66,172,58,106,58,41,50,41,58,139,66,204,66,204,66,237,66,237,74,237, + 66,237,66,13,67,172,66,106,58,171,74,236,82,236,90,3,236,82,131,236, + 90,236,90,236,82,3,236,90,152,236,82,12,91,12,91,236,82,235,90,239, + 74,90,59,149,50,206,0,75,66,105,74,195,16,163,16,97,8,97,8,163, + 16,163,24,227,24,166,49,110,99,50,116,114,124,82,116,81,116,3,82,116, + 142,81,116,82,116,175,99,232,41,97,8,195,24,139,58,49,116,146,124,114, + 124,114,124,146,124,114,124,114,116,3,114,124,155,114,116,114,124,114,124,49, + 116,17,108,17,108,49,116,82,116,82,124,82,124,82,116,82,116,114,116,114, + 116,82,116,82,124,82,116,114,116,49,116,17,116,114,132,146,140,210,140,178, + 132,179,132,243,140,243,148,3,211,140,131,211,148,244,148,211,140,3,243,140, + 134,211,140,211,140,81,132,178,140,174,115,7,66,3,231,65,130,199,57,231, + 57,9,199,57,157,166,57,199,57,167,57,198,57,166,49,166,49,134,49,134, + 49,134,41,101,41,102,41,101,41,101,41,69,41,69,33,37,33,37,33,36, + 33,37,33,37,33,36,33,37,33,4,33,4,25,5,33,4,33,196,24,74, + 66,106,74,3,167,49,132,134,49,135,49,167,49,134,49,3,135,49,131,167, + 49,102,41,135,41,17,102,41,132,135,49,102,41,102,41,134,41,3,167,49, + 166,135,49,167,49,167,49,199,57,199,57,232,57,232,57,8,66,8,66,9, + 66,9,66,73,74,73,74,106,74,105,74,73,74,138,82,138,82,171,82,203, + 90,171,90,171,82,171,90,236,90,236,90,12,91,12,99,44,99,45,107,109, + 107,207,123,207,123,239,123,16,124,48,132,48,132,81,140,146,140,3,178,148, + 147,211,148,243,156,52,165,52,165,84,165,85,165,52,165,150,173,149,173,149, + 173,150,165,150,173,182,181,182,181,215,181,247,181,24,190,56,190,56,198,4, + 56,190,131,88,190,88,190,56,190,3,88,190,131,89,190,88,190,89,190,3, + 88,190,136,56,190,56,182,24,182,56,182,24,182,24,182,23,182,23,182,3, + 247,181,143,215,181,215,181,214,173,214,181,182,173,182,173,150,173,182,173,150, + 173,182,173,150,165,149,165,117,165,149,165,117,165,3,85,165,131,84,157,85, + 157,84,157,3,85,165,131,84,157,85,157,53,157,11,52,157,146,20,157,20, + 157,52,157,52,157,20,149,20,157,20,149,20,157,52,157,52,157,20,157,20, + 149,244,148,243,148,20,149,243,148,19,149,20,149,3,243,148,198,211,140,178, + 140,178,140,48,124,12,91,138,74,171,82,143,99,110,99,73,66,142,107,236, + 90,199,57,195,24,32,0,73,74,12,91,106,74,12,99,203,90,171,90,203, + 90,235,90,203,90,235,90,203,90,203,90,109,115,214,189,171,90,98,16,4, + 33,130,16,4,33,82,108,208,91,208,91,241,99,75,58,130,16,4,33,130, + 16,171,74,241,99,176,91,176,91,208,91,176,91,176,91,208,91,208,99,111, + 83,70,25,65,0,70,25,78,83,176,99,176,91,176,91,144,91,144,83,143, + 83,143,91,175,91,144,83,143,91,176,91,143,91,176,91,175,91,5,176,91, + 129,144,91,4,143,83,137,111,83,111,83,143,91,111,83,111,83,110,83,110, + 83,111,83,110,83,5,78,83,130,46,83,78,83,6,46,83,135,45,83,13, + 83,45,75,13,75,13,75,45,83,13,83,5,13,75,137,237,74,13,75,13, + 83,237,82,13,75,13,75,237,74,237,74,13,75,3,237,74,142,204,74,236, + 74,236,74,204,74,204,66,172,66,171,66,139,58,139,66,171,66,139,66,171, + 66,139,66,171,66,3,139,66,144,106,66,107,58,106,66,107,66,9,50,135, + 33,9,50,74,58,74,58,41,50,74,58,41,50,42,58,41,50,9,50,42, + 58,3,9,50,131,233,49,9,50,9,50,3,233,49,135,232,49,233,49,200, + 41,200,41,233,49,102,41,130,16,49,3,3,45,83,133,45,75,45,83,13, + 75,45,75,13,83,5,45,83,147,45,75,13,75,13,75,237,74,237,66,205, + 66,205,66,236,66,237,66,13,67,237,66,237,66,205,66,204,66,139,58,74, + 58,41,50,106,58,172,66,6,237,66,132,13,67,172,66,139,58,171,74,4, + 236,82,131,236,90,236,82,235,82,8,203,82,147,206,74,23,59,247,66,14, + 9,137,57,231,73,98,8,65,8,0,0,0,0,97,8,130,16,36,33,106, + 74,13,83,175,99,240,107,49,116,49,116,3,82,116,137,81,116,49,116,82, + 116,241,107,171,66,130,8,98,16,200,41,240,107,5,114,124,129,114,116,5, + 114,124,134,82,124,49,116,241,107,17,108,50,116,82,124,8,82,116,142,114, + 124,114,116,240,107,17,116,146,132,179,140,178,140,179,140,178,132,211,140,243, + 140,211,140,179,140,178,140,8,211,140,132,113,132,16,124,16,124,174,123,5, + 174,115,140,206,115,174,115,206,115,207,115,175,115,207,115,207,123,142,115,174, + 115,206,115,174,115,207,115,5,207,123,130,207,115,207,123,8,239,123,144,16, + 124,48,124,48,132,81,132,49,132,81,132,113,132,113,140,81,132,178,140,243, + 148,178,148,210,148,210,148,179,148,211,148,4,243,148,129,19,157,6,20,157, + 3,52,157,133,52,165,84,165,84,165,85,165,85,165,3,117,165,131,85,165, + 150,173,150,173,4,182,173,130,214,181,214,181,3,215,181,6,247,181,140,23, + 182,247,189,23,182,247,181,24,182,23,182,24,182,247,181,23,182,24,182,24, + 182,23,182,11,247,181,136,247,173,247,181,247,181,215,181,214,173,215,173,183, + 173,150,173,3,182,173,130,182,165,182,173,4,150,165,131,117,165,117,165,85, + 165,3,117,165,3,85,165,3,85,157,134,52,157,85,165,85,165,85,157,85, + 157,84,157,3,52,157,129,84,157,4,52,157,135,84,157,52,157,52,157,20, + 149,52,157,52,157,20,157,4,52,157,140,20,157,20,157,52,157,53,157,20, + 149,20,157,20,149,20,149,52,157,20,157,20,157,52,157,4,20,149,131,243, + 148,20,149,20,149,3,243,148,145,210,140,243,148,243,148,211,148,211,140,211, + 140,243,140,211,140,179,140,178,140,146,132,146,132,178,140,178,140,114,132,178, + 140,113,132,4,81,124,137,49,124,48,116,48,116,16,116,48,116,16,116,16, + 116,240,107,240,115,3,207,107,4,175,107,151,142,99,142,99,109,99,45,91, + 12,91,203,82,171,74,170,74,171,82,110,99,111,99,73,74,110,107,13,99, + 199,57,227,32,32,0,40,66,12,99,138,74,235,98,203,90,171,90,4,203, + 90,146,170,82,203,90,174,115,236,98,98,16,195,24,130,24,4,33,143,91, + 209,91,208,91,208,99,144,83,228,24,195,24,195,24,101,41,208,99,9,176, + 91,133,140,66,196,8,65,8,232,41,78,83,4,176,91,129,143,83,6,176, + 91,130,175,91,143,91,5,176,91,133,175,91,143,91,143,83,143,83,111,91, + 5,111,83,131,110,83,110,83,79,83,7,78,83,136,46,83,46,83,46,75, + 46,83,46,83,45,75,46,83,13,83,5,13,75,131,13,83,13,75,13,83, + 4,13,75,129,13,83,3,13,75,130,13,83,13,75,4,237,74,132,205,74, + 236,74,204,74,236,74,3,204,74,135,172,66,171,66,139,66,171,66,171,66, + 139,66,171,66,4,139,66,129,107,66,3,106,58,141,74,58,167,41,167,41, + 42,58,74,58,74,58,73,58,41,50,42,58,42,58,41,58,9,50,9,58, + 3,9,50,130,233,49,9,50,3,233,49,135,232,49,200,49,233,49,232,49, + 37,33,130,16,130,16,117,3,4,45,83,3,13,75,135,45,75,45,83,13, + 83,45,75,13,75,45,75,45,83,3,13,75,143,237,66,237,66,204,66,237, + 66,237,66,237,74,237,66,205,66,172,58,139,58,73,58,41,50,106,58,171, + 58,204,66,3,237,66,129,204,66,3,237,66,131,172,66,172,66,204,82,3, + 203,82,172,171,74,138,74,171,82,204,90,45,99,142,107,240,123,81,132,146, + 148,211,156,243,156,20,165,54,157,55,157,245,156,178,156,177,164,80,148,240, + 131,142,123,236,98,41,74,135,57,69,41,74,74,138,74,203,74,142,91,240, + 107,49,116,81,116,82,116,82,116,81,116,82,116,49,116,49,108,50,116,78, + 91,228,16,65,16,228,24,143,91,82,124,4,114,124,129,114,116,5,114,124, + 132,82,116,17,108,240,107,17,108,9,82,116,139,114,116,82,116,114,124,207, + 107,240,107,146,132,179,140,179,140,178,140,178,132,179,132,3,211,140,141,146, + 132,178,140,211,140,211,140,179,140,211,140,211,140,243,140,211,140,211,140,207, + 123,48,132,210,148,3,243,148,145,19,149,19,157,20,157,19,157,20,149,20, + 157,20,149,20,157,52,157,20,157,52,157,52,165,52,157,52,157,52,165,84, + 165,84,165,3,85,165,135,84,165,85,157,85,165,85,165,117,165,85,165,85, + 165,5,117,165,139,150,173,150,173,117,165,117,165,150,173,150,165,150,165,117, + 165,149,173,150,165,149,173,3,117,165,135,150,173,117,165,117,165,150,165,149, + 165,118,165,118,165,3,117,165,129,150,165,3,117,165,129,85,165,3,117,165, + 129,85,165,7,117,165,141,85,165,85,165,149,165,117,165,117,165,85,165,117, + 165,117,165,85,157,85,165,117,165,117,165,84,165,5,85,165,129,85,157,4, + 85,165,161,52,157,52,157,20,157,52,157,52,157,84,157,85,157,85,165,85, + 165,85,157,85,157,117,165,52,157,85,157,85,157,52,157,84,157,84,157,85, + 165,52,157,85,165,117,165,85,157,85,157,52,157,53,157,85,157,52,157,85, + 157,85,157,52,157,52,157,20,149,3,52,157,3,20,149,129,52,149,4,20, + 149,139,243,148,243,148,211,140,211,140,243,148,211,140,211,140,243,140,178,140, + 178,132,178,132,4,146,132,129,113,124,4,81,124,144,49,124,16,116,49,116, + 16,116,16,116,240,107,16,116,207,107,239,107,207,107,175,99,175,107,174,99, + 174,107,142,99,142,99,4,110,99,137,77,91,109,91,45,91,45,91,77,91, + 45,91,45,83,45,91,44,83,6,12,83,130,236,82,12,83,5,236,82,133, + 235,82,203,82,235,82,203,74,203,82,6,203,74,3,171,74,135,203,74,171, + 74,170,74,170,74,171,74,171,74,170,74,6,171,74,168,171,82,171,82,45, + 91,143,99,73,66,109,107,12,91,231,57,4,33,32,0,8,66,12,99,138, + 82,235,98,203,90,171,90,203,90,170,90,138,82,138,82,203,90,203,90,167, + 49,130,16,195,24,98,16,162,24,45,91,209,99,176,91,176,91,50,108,9, + 42,130,16,37,41,98,16,203,74,241,99,176,91,208,91,6,176,91,135,208, + 91,111,83,233,41,97,0,163,16,74,58,143,91,8,176,91,133,175,91,176, + 91,175,91,176,91,143,91,3,176,91,133,143,91,176,91,143,83,143,91,143, + 91,7,111,83,132,78,83,110,83,78,83,111,83,4,78,83,4,46,83,136, + 14,83,46,83,45,83,14,83,13,75,13,83,13,75,13,75,3,13,83,3, + 13,75,131,237,74,13,83,13,83,5,13,75,129,13,83,4,237,74,131,236, + 74,204,74,236,74,3,204,74,135,204,66,204,66,172,66,171,66,171,66,172, + 66,171,66,4,139,66,146,106,66,107,58,106,66,74,58,106,58,107,66,9, + 58,135,41,233,49,74,58,74,58,42,58,42,58,41,58,42,58,41,58,10, + 58,42,58,3,9,50,140,9,58,9,50,233,49,232,49,233,49,232,41,9, + 50,233,49,5,33,97,16,162,16,4,33,179,3,3,45,83,159,45,75,45, + 75,13,75,45,83,45,83,13,83,13,75,13,75,45,75,13,75,45,75,13, + 75,13,75,13,67,13,75,237,74,237,66,237,66,237,74,237,66,237,66,172, + 58,139,58,74,58,41,50,106,58,171,58,204,66,204,66,172,58,237,74,5, + 237,66,146,171,66,139,66,171,74,236,90,45,99,175,115,113,140,20,157,117, + 173,182,181,214,189,214,189,182,181,150,181,117,181,85,173,84,173,84,173,3, + 52,173,159,84,173,85,173,149,181,150,189,182,189,247,197,23,198,23,198,247, + 197,85,181,210,156,48,140,240,123,17,116,17,116,49,116,50,116,82,116,81, + 116,81,116,49,116,49,116,82,116,240,107,232,41,98,8,65,8,139,58,17, + 108,114,124,114,116,7,114,124,136,114,116,49,108,17,108,240,107,49,108,81, + 116,82,116,50,116,6,82,116,157,114,116,82,124,114,124,114,124,175,99,146, + 132,146,132,178,132,178,140,114,132,146,124,211,132,211,140,211,140,178,140,146, + 132,146,132,179,140,178,140,179,140,179,132,211,140,211,140,243,140,146,140,240, + 123,240,123,16,124,48,132,3,81,132,145,113,132,113,132,81,132,113,132,81, + 132,81,132,113,132,113,132,81,132,113,140,145,140,81,132,113,132,113,132,81, + 132,145,140,113,132,3,146,140,139,178,140,145,132,146,140,146,140,178,140,146, + 140,178,140,146,140,178,140,178,140,243,148,3,211,148,137,146,140,178,140,211, + 148,211,140,211,140,211,148,211,140,211,148,210,140,4,178,140,129,211,148,3, + 211,140,132,178,140,211,140,211,140,211,148,3,178,140,139,243,148,178,140,211, + 140,211,140,178,140,210,140,243,148,210,140,178,140,210,140,211,148,3,178,140, + 176,211,148,146,140,178,140,178,140,178,132,146,132,113,132,114,132,178,140,113, + 132,146,132,146,132,113,132,113,132,146,132,81,124,81,124,114,124,16,116,81, + 124,81,124,48,124,52,149,214,165,182,157,20,141,48,116,81,124,81,124,16, + 116,240,107,240,115,207,107,142,99,175,107,110,99,142,99,207,107,239,107,175, + 107,175,107,114,124,48,108,110,91,110,99,142,99,110,99,109,99,3,45,91, + 138,44,83,45,83,12,83,12,83,236,82,12,83,236,82,236,74,236,74,235, + 74,7,203,74,136,171,74,170,74,171,74,171,74,170,74,170,74,171,74,138, + 74,4,170,74,131,171,74,170,74,170,74,3,171,74,131,170,74,171,74,171, + 74,4,170,74,3,171,74,140,170,74,203,74,171,74,170,74,171,74,202,74, + 203,74,171,74,170,74,203,74,203,74,203,82,15,203,74,142,171,74,203,82, + 203,74,203,74,203,82,203,74,203,74,235,74,203,74,203,74,203,82,203,82, + 203,74,203,82,4,203,74,217,171,82,203,74,171,74,203,74,171,74,170,74, + 203,74,203,74,171,74,171,74,203,74,171,82,171,74,170,74,138,74,13,91, + 143,99,73,74,45,99,45,99,231,57,36,33,0,0,231,57,12,99,138,82, + 202,90,12,107,11,99,170,90,170,90,138,82,171,90,73,74,228,24,130,16, + 227,24,97,8,36,41,142,91,209,91,144,91,176,91,209,91,79,75,65,8, + 4,33,130,16,199,49,241,99,208,91,176,91,176,91,208,91,176,91,176,91, + 144,91,144,91,176,91,144,91,176,91,78,83,168,33,33,0,195,16,74,58, + 176,91,176,91,175,91,176,91,176,91,175,91,176,91,176,91,144,91,144,91, + 176,91,143,91,176,91,144,91,176,91,143,91,176,91,143,91,175,91,143,91, + 111,83,143,83,143,83,4,111,83,130,78,83,111,83,9,78,83,3,46,83, + 3,45,83,134,13,83,13,83,46,83,45,75,13,75,45,83,3,13,75,129, + 13,83,5,13,75,129,236,74,3,13,75,143,237,74,237,74,13,75,236,74, + 237,74,236,74,205,74,204,74,205,74,204,74,204,66,204,74,204,74,172,66, + 172,66,3,171,66,164,139,66,171,66,139,66,106,58,106,58,107,66,107,66, + 106,58,107,58,74,58,199,41,135,33,41,58,74,58,74,58,41,58,41,58, + 41,50,9,58,41,50,9,50,9,50,9,58,233,49,9,50,233,49,9,50, + 233,49,232,49,9,50,168,49,195,24,97,8,228,24,36,33,195,32,89,3, + 6,45,83,130,13,83,45,75,8,13,75,129,237,74,3,13,75,137,237,66, + 237,66,205,66,172,58,139,58,74,58,41,50,106,58,139,58,3,172,58,129, + 205,58,3,237,66,181,204,66,204,66,236,74,13,91,208,115,146,148,117,173, + 215,181,23,190,23,190,247,189,182,189,117,181,85,173,52,173,19,165,243,164, + 211,156,178,148,146,148,113,140,81,140,49,140,49,132,49,140,81,140,114,148, + 146,148,178,148,211,156,243,164,20,165,20,165,84,173,117,181,149,189,149,189, + 85,181,20,165,179,148,114,132,81,124,49,116,81,116,49,116,50,116,82,116, + 82,116,171,74,195,16,65,8,134,33,143,91,5,114,124,130,114,116,114,124, + 3,82,116,132,17,108,17,108,16,108,49,116,9,82,116,146,82,124,114,124, + 82,116,114,124,82,116,114,124,146,124,146,132,146,132,16,116,49,116,178,132, + 179,140,178,140,146,132,114,132,114,132,113,132,5,114,132,170,146,132,178,132, + 178,140,81,124,175,107,12,91,171,82,203,82,235,82,235,90,235,82,235,82, + 236,82,236,82,203,82,236,90,236,82,235,82,235,82,12,91,235,82,235,90, + 235,82,235,82,12,91,203,82,12,91,235,90,236,82,12,83,12,91,12,83, + 12,91,12,83,236,82,12,91,12,91,44,91,44,91,45,91,77,99,77,91, + 3,77,99,3,109,99,134,77,99,109,99,77,99,77,99,77,91,77,91,4, + 77,99,133,77,91,77,99,45,91,77,99,45,91,3,44,91,137,45,91,44, + 91,77,91,44,91,45,91,44,91,44,91,76,91,45,91,10,44,91,137,12, + 91,12,83,12,91,12,83,12,83,12,91,12,83,12,83,236,82,4,235,82, + 136,236,82,236,82,12,83,235,82,12,83,235,82,236,82,203,74,3,236,82, + 142,235,82,235,82,12,83,236,82,235,82,12,83,12,83,12,91,12,83,236, + 82,236,82,12,83,236,82,235,82,4,236,82,134,235,82,235,82,12,83,236, + 82,12,83,12,83,3,236,82,3,12,83,3,236,82,5,235,82,131,203,82, + 235,82,235,82,4,203,82,131,203,74,203,82,203,82,8,203,74,4,203,82, + 131,235,82,203,74,235,82,4,203,82,132,235,82,203,74,203,74,203,82,3, + 203,74,147,203,82,203,82,235,82,203,74,203,82,203,74,236,82,236,82,203, + 82,235,82,235,82,236,82,203,82,203,82,235,82,203,82,203,74,203,82,235, + 82,3,203,82,4,203,74,138,203,82,203,74,203,82,203,82,203,74,203,82, + 203,74,203,82,203,74,203,82,6,203,74,132,170,74,171,74,171,74,203,74, + 5,171,74,166,170,74,170,74,138,74,236,82,110,99,73,74,77,99,77,99, + 231,57,37,41,0,0,199,57,12,99,138,82,203,98,235,98,235,98,202,90, + 170,90,203,90,8,66,195,24,162,16,227,24,33,8,102,57,85,181,143,83, + 144,91,144,91,176,91,176,83,38,25,163,24,227,32,130,16,175,99,208,91, + 5,176,91,141,144,91,144,91,143,91,176,91,176,91,144,91,144,91,14,75, + 4,17,65,8,228,24,204,66,175,91,3,176,91,135,143,83,143,83,143,91, + 143,91,143,83,175,91,143,91,3,176,91,136,175,91,176,91,143,91,143,91, + 143,83,143,83,143,91,143,91,3,111,83,131,110,83,110,83,79,83,9,78, + 83,137,46,83,78,83,46,83,45,83,46,83,46,83,13,83,45,83,13,83, + 15,13,75,132,236,74,12,75,237,74,236,74,3,237,74,130,204,74,236,74, + 4,204,74,130,204,66,172,66,3,171,66,4,139,66,132,107,66,107,58,138, + 66,106,66,3,107,58,131,9,58,70,33,232,41,4,74,58,147,42,58,42, + 58,41,50,9,50,41,58,9,58,232,49,9,58,9,50,233,49,9,50,9, + 58,200,49,162,16,130,16,228,24,4,33,195,24,65,8,118,3,138,13,83, + 45,83,13,83,45,83,45,83,13,83,45,83,13,75,13,75,237,66,5,13, + 75,206,45,75,13,75,14,75,13,75,237,74,237,66,204,58,172,58,139,58, + 73,58,41,50,74,58,139,58,172,58,172,58,139,58,172,58,204,58,172,58, + 172,58,205,74,176,107,114,140,52,165,150,181,215,189,215,189,182,181,117,181, + 85,173,52,173,20,165,20,165,52,173,85,173,117,173,117,181,149,181,150,181, + 182,181,182,181,150,181,117,181,117,173,85,173,52,165,243,156,211,156,114,148, + 113,140,81,140,146,148,178,148,211,156,243,156,211,156,178,148,210,156,19,165, + 84,181,149,181,149,181,52,173,179,148,81,124,17,108,17,108,50,108,114,116, + 77,91,101,33,65,8,195,16,237,66,50,116,114,124,114,116,114,124,3,114, + 116,135,82,116,82,116,49,116,49,108,17,116,49,108,81,116,9,82,116,151, + 114,124,114,116,82,124,114,124,82,116,146,124,146,124,146,132,114,124,239,107, + 240,107,114,124,178,132,211,140,49,124,81,124,81,124,81,132,114,132,114,140, + 146,132,146,132,114,132,3,146,140,136,146,132,114,132,81,124,207,115,171,82, + 41,66,73,66,105,74,5,138,74,129,105,74,10,138,74,131,170,74,170,74, + 138,74,4,170,74,133,171,74,170,74,170,74,171,82,203,82,3,235,82,3, + 12,91,13,44,91,131,45,91,44,91,44,99,4,44,91,152,45,91,45,91, + 77,91,45,91,44,91,45,99,44,91,44,99,44,99,77,99,77,99,45,91, + 45,91,77,99,77,99,44,91,77,91,77,91,44,91,45,99,45,99,77,91, + 44,91,45,91,5,44,91,131,12,91,12,91,12,83,6,44,91,130,12,91, + 44,91,4,12,91,136,44,91,44,91,12,91,44,91,44,91,12,83,44,91, + 12,91,3,44,91,138,12,83,44,91,12,91,12,83,12,91,12,83,12,91, + 12,83,12,83,236,82,4,12,83,3,236,82,135,235,82,236,82,236,82,203, + 82,235,82,236,82,235,82,5,236,82,156,203,82,235,82,203,82,235,82,203, + 74,203,82,170,82,203,82,203,74,203,82,203,74,171,74,171,74,203,74,170, + 74,171,74,170,74,203,74,203,74,171,74,203,74,203,74,203,82,203,82,203, + 74,203,82,235,82,235,82,4,203,82,131,203,74,203,74,203,82,4,203,74, + 129,203,82,3,203,74,5,203,82,4,203,74,135,203,82,203,82,203,74,203, + 82,203,82,203,74,203,74,3,203,82,135,171,74,203,74,170,74,203,74,203, + 74,203,82,203,74,3,171,74,132,170,74,203,74,171,74,203,74,5,170,74, + 169,170,82,171,74,171,74,203,74,170,74,138,74,105,74,203,82,78,99,73, + 74,109,107,110,99,231,57,69,41,0,0,166,49,45,99,138,82,170,90,203, + 98,202,98,12,99,203,90,134,49,163,24,163,24,195,24,33,8,102,57,85, + 181,247,197,78,75,144,91,144,91,208,91,139,58,130,16,4,33,98,16,9, + 66,241,99,7,176,91,146,144,91,175,91,176,91,144,91,144,91,176,91,176, + 91,139,58,163,8,65,8,69,25,204,66,176,91,176,91,144,91,143,91,144, + 91,143,91,3,143,83,130,176,91,144,91,4,176,91,134,143,91,143,91,143, + 83,143,91,111,83,143,91,6,111,83,129,79,83,5,78,83,144,46,83,46, + 83,78,83,46,83,46,83,46,75,46,83,45,75,46,83,13,75,46,83,14, + 75,13,75,13,75,13,83,13,83,3,13,75,3,13,83,4,13,75,139,237, + 74,237,74,13,75,13,75,237,74,13,75,237,74,237,74,236,74,236,74,204, + 66,3,204,74,135,204,66,204,66,172,74,140,66,171,66,138,58,107,66,3, + 139,66,137,107,66,106,66,106,58,107,66,106,58,106,58,74,66,167,41,135, + 41,4,74,58,136,41,58,41,58,41,50,41,58,42,58,9,50,233,49,9, + 58,3,9,50,136,232,49,162,16,195,24,36,33,228,32,130,24,32,8,228, + 24,89,3,179,13,75,45,83,45,83,13,75,45,75,13,83,45,75,13,83, + 13,75,237,74,237,74,13,75,13,67,237,74,13,75,13,75,237,74,237,74, + 237,66,237,66,205,66,172,58,139,58,73,50,41,58,73,50,171,58,204,58, + 172,58,139,50,75,50,139,58,237,82,241,123,243,156,150,181,182,181,84,173, + 20,165,211,156,178,156,113,148,16,140,16,132,48,140,146,148,211,156,19,157, + 178,148,113,140,48,132,3,16,132,168,49,140,113,148,178,156,243,164,20,173, + 85,173,117,181,150,181,214,189,182,189,182,181,149,181,20,165,179,156,146,148, + 146,148,178,156,211,156,243,156,243,156,211,156,243,156,19,165,52,181,149,189, + 149,181,52,173,146,148,82,124,82,124,240,107,105,58,130,8,97,8,200,41, + 143,99,147,124,114,124,114,116,114,124,3,114,116,133,82,116,82,116,49,108, + 49,116,49,116,11,82,116,168,114,116,82,116,82,116,114,116,82,116,17,108, + 114,124,146,132,142,91,207,99,240,115,113,124,114,124,49,124,16,124,48,124, + 178,140,178,140,179,140,178,140,178,140,178,132,179,140,178,140,146,132,146,132, + 114,132,114,124,114,124,147,124,49,124,45,91,170,74,105,66,105,74,138,74, + 138,74,138,66,138,74,106,74,8,138,74,135,170,74,138,74,138,74,170,82, + 170,74,170,74,138,74,6,170,74,136,170,82,203,82,203,82,236,90,236,82, + 12,83,12,91,12,83,11,44,91,129,44,99,6,44,91,135,45,99,44,91, + 44,91,45,91,44,91,44,91,44,99,4,44,91,135,45,99,44,91,45,91, + 44,99,44,91,44,91,45,91,5,44,91,131,45,91,44,91,45,91,6,44, + 91,131,12,91,12,91,12,83,5,12,91,131,12,83,236,82,12,83,6,12, + 91,3,44,91,132,12,83,12,91,12,83,12,91,8,12,83,138,12,91,12, + 83,235,82,12,83,236,82,235,82,12,83,236,82,235,82,12,83,5,236,82, + 149,235,82,235,82,203,82,235,82,235,82,203,82,235,82,235,82,203,82,203, + 82,235,82,203,74,203,74,170,74,203,74,171,74,203,82,203,74,170,74,203, + 74,203,82,3,203,74,129,171,74,8,203,74,142,203,82,235,82,203,82,203, + 82,203,74,235,82,203,74,203,82,203,82,171,74,203,82,203,74,203,82,203, + 82,3,203,74,4,203,82,3,203,74,150,171,74,203,74,171,74,171,74,203, + 82,203,74,170,74,171,74,203,74,170,74,203,74,171,82,203,74,203,82,203, + 82,171,74,203,74,203,82,171,74,203,74,171,74,171,74,9,170,74,166,138, + 74,171,74,138,74,106,74,73,74,171,74,45,91,41,74,45,99,142,107,231, + 57,101,41,0,0,102,49,12,99,170,82,171,90,170,90,170,90,40,74,130, + 16,130,16,195,24,130,16,98,16,4,33,84,181,182,189,214,197,79,83,144, + 91,176,91,46,75,131,16,163,24,162,16,69,41,175,91,11,176,91,138,175, + 91,143,91,176,91,176,91,144,91,107,58,163,8,32,0,228,16,106,58,8, + 176,91,131,143,91,176,91,175,91,4,176,91,5,143,91,129,143,83,3,111, + 83,133,110,83,111,83,111,83,78,83,110,83,5,78,83,3,46,83,136,78, + 83,46,83,46,83,45,75,14,83,13,83,45,83,13,75,3,13,83,3,13, + 75,140,13,83,13,75,13,83,13,75,13,75,13,83,13,75,237,74,237,74, + 13,75,237,74,13,83,5,237,74,153,236,74,204,74,236,74,204,66,204,74, + 204,74,172,66,204,66,172,74,172,66,139,66,106,58,106,58,139,66,139,66, + 138,66,106,66,107,66,107,66,107,58,139,66,9,58,135,41,74,58,106,58, + 4,74,58,145,42,58,41,58,41,58,42,58,9,50,233,49,9,50,41,50, + 200,49,163,16,4,33,69,33,195,24,97,16,32,0,4,25,9,42,34,3, + 129,13,83,7,13,75,134,236,66,204,66,237,74,237,74,13,75,237,66,3, + 13,75,168,237,66,237,66,236,66,204,66,139,58,73,58,41,50,74,58,139, + 58,204,66,172,58,139,50,140,58,78,99,82,132,53,165,117,173,19,165,146, + 148,81,148,146,148,179,148,146,148,81,140,81,140,146,148,211,156,211,156,113, + 140,81,140,113,140,113,148,114,148,113,148,113,148,146,148,146,148,178,156,210, + 156,211,156,3,243,164,160,211,164,243,156,211,156,19,165,52,173,117,181,150, + 181,182,181,150,181,84,173,244,164,211,156,211,164,243,164,243,164,20,165,20, + 165,243,164,244,164,52,173,84,173,116,181,52,173,243,156,146,132,77,99,228, + 16,33,8,4,25,13,75,82,124,114,124,6,114,116,132,82,116,49,108,49, + 116,49,116,16,82,116,145,50,108,50,116,114,124,110,83,175,99,239,107,49, + 116,49,116,49,124,16,116,16,124,146,132,146,124,146,132,114,132,146,132,114, + 124,3,81,124,147,114,124,240,115,240,107,16,108,16,108,207,99,207,99,142, + 91,12,83,138,74,105,66,138,74,137,66,138,74,105,66,106,74,138,74,106, + 74,105,74,9,138,74,131,170,74,170,74,138,74,6,170,74,143,170,82,170, + 82,170,74,203,82,203,82,235,82,235,82,235,90,12,91,44,91,12,91,44, + 91,44,91,12,91,12,91,4,44,91,130,12,91,12,91,7,44,91,129,45, + 91,3,44,91,129,12,91,9,44,91,129,45,91,7,44,91,134,12,91,44, + 91,12,91,44,91,12,91,44,91,6,12,91,137,12,83,12,91,12,83,12, + 83,12,91,12,83,12,91,12,91,12,83,5,12,91,130,12,83,44,83,8, + 12,83,130,12,91,12,91,5,12,83,129,235,82,7,236,82,3,235,82,140, + 236,82,235,82,235,82,204,82,203,82,203,74,235,82,203,74,203,82,235,82, + 203,74,235,82,3,203,74,3,203,82,133,203,74,203,74,203,82,203,82,203, + 74,3,171,74,138,203,82,170,74,171,74,170,74,171,74,170,74,171,74,203, + 74,203,74,170,74,3,203,74,144,171,74,171,74,203,74,203,74,203,82,171, + 74,170,74,171,74,171,74,203,74,171,74,170,74,170,74,171,74,203,74,203, + 74,3,171,74,141,203,74,170,74,171,74,170,74,171,74,170,74,171,74,171, + 74,170,74,170,74,171,74,170,74,203,74,4,171,74,5,170,74,5,138,74, + 129,138,66,5,138,74,166,105,66,73,66,138,74,45,99,41,74,45,99,175, + 107,232,57,101,41,0,0,101,41,44,99,170,82,235,98,73,74,101,41,162, + 24,195,24,195,24,98,16,130,16,134,49,170,90,210,164,149,181,214,197,143, + 91,144,91,17,100,102,33,130,16,195,24,163,24,236,74,176,83,144,83,144, + 91,175,91,5,176,91,129,144,91,3,176,91,139,144,91,176,91,143,91,176, + 91,111,91,74,50,98,0,33,0,195,16,171,58,111,91,13,176,91,5,143, + 91,131,111,83,111,91,111,91,4,111,83,131,79,83,78,83,110,83,5,78, + 83,5,46,83,136,46,75,46,83,45,83,45,75,45,75,13,83,14,83,45, + 83,5,13,83,134,13,75,13,75,13,83,13,83,13,75,237,74,5,13,75, + 4,237,74,130,236,74,236,74,5,204,74,134,172,66,204,74,172,74,172,66, + 107,66,106,58,6,139,66,137,107,66,139,66,74,58,135,33,41,50,106,58, + 74,66,74,58,74,58,3,42,58,143,41,50,41,50,233,49,9,50,9,50, + 41,58,163,16,228,24,69,33,130,16,98,16,0,8,5,25,233,41,232,41, + 31,3,8,13,75,132,236,66,237,66,237,74,237,74,4,13,75,172,237,66, + 237,74,237,66,204,66,139,58,73,50,9,50,73,58,139,58,172,66,139,58, + 139,66,143,107,179,148,117,173,85,173,178,156,239,131,240,131,146,148,243,156, + 146,148,49,140,81,140,114,148,113,140,240,123,142,115,45,107,16,132,178,156, + 178,148,114,148,81,148,81,140,113,148,113,148,49,140,81,148,178,156,210,156, + 210,156,113,148,16,140,3,239,131,166,240,131,16,140,48,140,146,148,211,156, + 84,173,149,189,182,189,182,189,85,181,52,173,84,181,52,173,52,181,52,173, + 19,165,244,164,20,165,19,165,19,173,84,181,84,181,52,173,174,115,1,8, + 0,0,9,42,17,116,114,124,114,116,82,116,114,124,114,116,114,116,82,116, + 82,116,17,108,49,108,20,82,116,137,240,99,110,83,240,107,240,115,16,116, + 49,124,16,116,49,124,146,132,4,114,124,133,82,124,49,116,81,116,81,124, + 81,116,3,240,107,140,16,108,175,99,143,91,142,91,175,99,12,83,228,16, + 102,33,138,74,138,74,105,74,73,66,5,105,66,131,105,74,105,74,106,74, + 11,138,74,131,170,74,170,74,138,74,3,170,74,130,170,82,171,82,3,203, + 82,133,235,82,12,91,12,91,44,91,44,91,6,12,91,131,44,91,12,91, + 12,91,6,44,91,130,12,91,12,91,4,44,91,130,12,91,12,91,4,44, + 91,129,12,91,3,44,91,137,12,91,44,91,12,83,12,91,44,91,44,91, + 12,91,12,91,44,91,5,12,91,144,12,83,12,91,12,83,12,91,12,91, + 12,83,235,82,12,83,11,83,12,91,12,91,12,83,12,91,12,91,235,82, + 12,91,3,12,83,133,12,91,12,83,236,82,12,83,236,82,4,12,83,133, + 236,82,236,82,235,82,235,82,236,82,3,235,82,136,203,74,235,82,203,82, + 203,74,235,82,203,82,235,82,235,82,3,203,74,129,203,82,4,203,74,133, + 171,74,203,74,203,74,171,74,171,74,3,170,74,129,171,82,3,171,74,6, + 170,74,131,171,74,170,74,171,74,26,170,74,129,138,74,5,170,74,141,138, + 74,170,74,138,74,170,74,138,74,170,74,138,74,138,74,170,74,138,74,138, + 74,170,74,170,74,4,138,74,133,137,66,138,66,138,74,137,66,106,66,3, + 105,66,173,106,66,106,74,105,66,105,66,73,66,105,66,73,66,41,66,138, + 74,45,99,105,74,44,99,207,115,232,57,101,41,0,0,69,41,45,99,12, + 91,8,58,163,24,162,24,195,24,162,16,65,8,98,16,137,82,138,82,137, + 82,210,164,149,181,246,197,144,91,209,99,205,66,65,8,4,33,97,16,232, + 57,208,91,144,91,143,91,144,91,144,91,143,91,7,176,91,145,144,91,176, + 91,143,91,176,91,143,91,176,91,111,91,200,41,98,0,0,0,228,16,74, + 50,111,83,208,99,176,91,144,91,144,91,7,176,91,6,143,91,129,111,83, + 3,111,91,134,110,91,111,83,111,83,78,83,110,83,111,83,6,78,83,4, + 46,83,130,14,83,45,83,4,13,75,132,14,83,13,75,13,75,45,83,4, + 13,75,134,13,83,45,83,13,83,13,75,13,75,237,74,5,13,75,132,237, + 74,236,74,237,74,236,74,8,204,74,135,172,74,172,66,171,66,171,66,139, + 66,139,66,171,66,5,139,66,153,75,66,134,33,42,58,107,58,106,58,74, + 58,74,58,74,66,42,58,74,58,42,58,41,58,9,58,233,49,74,58,36, + 33,163,16,228,24,162,16,97,16,33,8,196,16,9,42,232,41,200,41,136, + 3,129,236,74,7,13,75,133,237,74,236,66,237,74,237,66,237,66,4,13, + 75,188,237,66,204,66,139,58,41,50,8,50,74,58,107,58,171,66,237,82, + 208,115,85,165,150,181,20,165,48,140,207,123,239,123,179,148,243,156,146,140, + 16,132,239,131,16,132,174,115,77,107,45,99,109,115,207,131,113,148,146,148, + 48,140,207,123,207,131,178,148,211,156,48,140,239,139,113,156,210,156,239,131, + 77,107,236,98,77,115,207,131,146,156,244,164,85,181,182,189,214,189,214,189, + 183,189,150,181,85,173,20,165,19,165,84,173,117,181,150,189,117,181,85,181, + 52,173,3,84,181,150,52,181,20,165,244,164,211,164,243,164,52,173,182,189, + 84,181,236,106,69,41,45,83,82,116,114,124,114,116,114,124,114,116,114,124, + 82,116,49,108,17,108,17,108,49,116,10,82,116,129,82,124,4,82,116,135, + 50,116,82,116,50,116,82,116,114,116,208,99,143,99,4,240,115,134,81,124, + 114,132,114,124,114,132,81,124,114,124,3,49,116,130,81,124,49,116,3,240, + 107,141,16,116,175,99,143,99,110,91,207,99,171,66,13,83,233,49,163,8, + 37,25,199,41,40,58,105,66,7,73,66,142,105,66,105,66,73,74,105,74, + 105,74,105,66,105,74,106,74,105,74,138,74,105,74,105,74,106,74,106,74, + 6,138,74,129,171,82,3,170,82,3,203,82,130,235,82,235,90,4,235,82, + 132,203,82,235,82,235,82,203,82,4,235,82,149,235,90,236,90,235,82,235, + 82,236,82,12,91,11,83,236,90,235,82,235,90,12,91,236,82,235,82,235, + 90,236,90,11,83,11,83,12,91,235,82,77,99,12,91,3,235,82,132,12, + 91,235,82,235,82,236,82,5,235,82,7,203,82,3,235,82,145,203,74,235, + 82,235,82,203,74,235,82,203,82,203,82,235,82,203,82,235,74,203,74,203, + 82,203,74,235,82,203,82,203,74,235,74,5,203,74,134,203,82,203,74,203, + 74,171,74,170,74,171,74,7,170,74,134,138,74,138,74,170,74,170,74,170, + 66,170,74,3,138,74,129,138,66,3,138,74,135,138,66,138,74,138,74,137, + 74,138,66,138,74,137,74,3,138,66,135,106,66,138,74,138,66,138,74,138, + 66,138,66,138,74,3,138,66,162,105,66,138,74,138,74,105,66,138,66,138, + 74,137,66,138,66,138,66,137,66,105,74,138,74,138,66,138,74,138,66,106, + 74,106,66,106,66,138,74,138,66,138,74,106,66,105,66,138,66,138,66,106, + 66,106,66,138,66,105,66,106,66,106,66,105,66,105,66,106,66,4,105,66, + 134,106,66,105,66,73,66,105,66,73,66,105,66,7,73,66,203,73,58,73, + 66,73,66,41,66,40,58,40,58,8,66,106,74,12,91,203,82,203,90,109, + 107,8,66,133,49,32,0,69,41,105,74,195,24,130,16,227,24,195,24,98, + 16,130,16,134,49,203,90,12,99,138,82,73,74,113,148,117,181,247,197,208, + 107,46,75,131,8,227,24,163,24,196,24,208,91,144,91,143,91,144,91,143, + 91,144,91,143,91,143,91,144,91,176,91,176,91,144,91,144,91,176,91,176, + 91,144,91,176,91,176,91,143,91,176,91,176,91,111,91,106,50,163,8,0, + 0,65,0,101,33,204,66,144,83,176,91,144,83,144,91,144,91,176,91,176, + 99,175,91,176,91,176,91,7,143,91,138,143,83,143,91,111,83,110,83,111, + 91,111,83,79,83,110,83,78,91,110,83,6,78,83,5,46,83,3,45,83, + 132,45,75,45,83,45,83,13,75,4,13,83,148,13,75,13,83,45,83,13, + 75,13,75,13,83,13,83,237,74,13,75,13,75,13,83,13,83,237,74,13, + 75,236,74,237,74,204,74,236,74,237,74,236,74,6,204,74,133,172,66,172, + 74,171,74,171,66,171,66,4,139,66,154,171,66,139,66,167,41,9,58,139, + 66,74,66,74,58,74,58,74,66,74,58,74,58,42,58,42,58,41,58,9, + 50,69,33,65,8,195,24,98,16,97,8,33,8,228,16,9,50,200,49,200, + 41,200,41,28,3,132,237,74,13,75,13,75,12,75,4,13,75,222,237,74, + 205,66,237,66,237,74,237,74,13,75,237,74,237,66,237,66,204,66,171,66, + 74,58,9,50,41,50,74,58,204,74,240,115,244,156,85,173,243,156,81,140, + 207,123,16,132,178,148,243,156,146,148,16,132,207,123,142,115,142,107,110,115, + 175,123,16,140,113,148,178,156,146,148,15,132,236,98,12,107,48,132,85,173, + 52,165,48,140,48,148,113,148,146,107,172,57,233,73,45,107,81,140,52,165, + 150,181,150,181,117,181,117,173,84,173,84,173,52,165,243,164,178,156,146,148, + 81,140,81,140,113,140,146,148,243,164,84,173,117,181,117,181,52,173,243,164, + 19,165,84,181,149,189,117,181,84,181,52,173,211,164,210,156,19,173,117,189, + 242,164,142,115,208,115,82,116,82,116,114,116,114,116,82,116,50,116,16,108, + 208,99,241,107,17,108,5,82,116,129,50,116,12,82,116,136,50,116,50,116, + 82,116,175,99,208,107,240,107,207,107,207,107,4,114,132,156,114,124,81,124, + 81,116,81,124,114,124,81,124,17,116,16,108,240,115,16,108,240,107,175,107, + 143,99,175,99,207,99,171,66,204,66,176,91,78,83,106,58,232,49,102,33, + 69,33,135,41,73,66,73,66,40,66,41,66,14,73,66,131,105,74,105,74, + 73,66,3,105,66,131,105,74,105,74,137,74,3,138,74,131,170,74,170,74, + 138,74,4,170,74,139,203,82,202,82,203,82,171,82,170,82,170,82,170,74, + 170,74,202,74,170,74,171,82,17,203,82,130,170,82,236,82,8,203,82,131, + 170,74,203,82,170,82,3,170,74,129,170,82,7,170,74,3,171,74,142,170, + 74,171,74,170,74,170,74,171,74,171,74,170,74,170,74,171,74,171,74,170, + 74,171,74,170,74,171,74,14,170,74,131,138,74,138,74,138,66,6,138,74, + 3,138,66,130,106,66,137,66,15,105,66,129,73,66,4,105,66,129,106,66, + 5,105,66,141,73,66,105,66,73,66,105,66,105,66,73,66,105,66,105,66, + 73,66,105,66,73,66,73,66,105,66,5,73,66,129,105,66,4,73,66,129, + 105,66,5,73,66,129,72,58,5,73,66,136,73,58,73,66,73,66,41,66, + 73,66,41,58,41,66,41,58,5,40,58,133,8,58,40,58,8,58,40,58, + 8,50,3,8,58,159,105,66,171,82,237,90,203,90,174,107,40,66,134,49, + 98,8,228,24,162,16,195,24,228,32,130,16,65,8,195,32,8,66,105,82, + 105,82,170,90,105,82,8,66,80,148,84,173,182,197,17,116,70,25,130,16, + 195,24,163,24,171,66,176,83,6,143,91,3,144,91,130,176,91,175,91,5, + 176,91,141,144,91,176,91,176,91,143,91,176,91,111,91,140,58,195,8,32, + 0,32,0,4,17,73,50,46,75,5,176,91,133,175,91,143,91,176,91,176, + 91,175,91,7,143,91,129,111,91,3,111,83,137,111,91,110,83,110,83,79, + 83,110,83,110,83,78,91,78,83,78,91,3,78,83,133,46,83,46,83,78, + 83,46,83,46,83,4,45,83,137,45,75,13,75,13,83,13,83,13,75,45, + 83,13,83,13,75,13,75,3,13,83,139,13,75,237,74,13,83,13,75,13, + 75,236,74,237,74,236,74,204,74,236,74,236,74,6,204,74,132,172,74,172, + 66,171,66,172,66,3,171,66,136,139,66,139,66,107,66,139,66,106,66,106, + 66,232,49,233,49,7,74,58,143,42,58,74,58,74,58,200,49,98,16,130, + 16,130,16,97,8,32,8,195,16,233,41,233,49,200,49,200,41,200,41,111, + 3,4,13,75,129,237,74,3,13,75,130,237,74,237,66,4,237,74,216,237, + 66,204,66,204,66,171,66,74,58,41,50,233,41,75,66,143,107,211,148,85, + 173,243,156,113,140,239,131,239,131,146,148,20,165,178,148,48,140,174,115,109, + 107,45,107,207,123,48,140,145,148,146,156,178,156,145,148,206,131,200,122,231, + 73,174,115,85,173,215,189,114,148,174,123,16,140,207,131,81,107,115,107,180, + 148,85,173,150,181,84,173,19,165,243,156,178,156,178,156,146,156,178,156,178, + 156,211,156,19,165,52,173,85,173,117,181,150,181,150,181,117,173,85,173,85, + 165,52,165,84,173,117,181,117,181,52,173,178,156,113,148,211,156,84,173,182, + 189,182,189,149,189,20,173,178,156,243,172,84,181,243,164,146,148,82,124,82, + 116,82,116,114,116,49,116,208,99,143,91,175,91,17,108,9,82,116,129,82, + 124,4,82,116,129,49,116,3,82,116,170,50,116,50,116,49,108,49,116,208, + 107,239,107,207,107,175,107,113,124,17,116,17,116,16,108,17,116,16,108,208, + 99,208,107,208,107,16,108,143,91,143,91,143,99,143,99,142,99,45,83,13, + 75,204,74,77,91,65,0,195,8,196,8,172,58,147,116,53,133,114,116,240, + 99,237,82,196,16,134,41,73,66,41,66,40,66,40,66,5,41,66,129,73, + 66,3,40,66,134,41,66,40,66,41,66,40,66,73,66,41,66,5,73,66, + 132,105,66,105,74,105,74,105,66,4,105,74,130,138,74,105,74,8,138,74, + 135,170,74,138,74,138,74,170,74,170,74,138,74,138,74,9,170,74,132,138, + 74,170,74,170,74,138,74,6,170,74,129,138,74,4,170,74,131,138,74,138, + 74,170,74,5,138,74,131,105,74,137,74,137,74,10,138,74,141,138,66,138, + 74,170,74,138,74,138,66,138,66,138,74,138,66,138,74,138,66,138,66,138, + 74,138,74,3,138,66,133,137,66,138,66,137,66,138,66,138,66,3,105,66, + 131,138,66,105,66,105,66,3,106,66,130,105,66,73,66,5,105,66,135,73, + 66,73,58,73,66,105,66,73,58,73,58,73,66,6,73,58,131,73,66,73, + 66,73,58,3,73,66,129,41,58,3,73,58,139,73,66,73,66,73,58,73, + 58,41,66,73,66,41,58,73,66,40,58,41,58,73,66,3,41,58,134,40, + 58,40,58,41,58,40,58,41,58,41,58,3,40,58,131,41,58,40,58,73, + 58,5,40,58,133,41,58,40,58,40,58,41,58,8,58,4,40,58,133,41, + 58,40,58,40,58,8,58,40,58,3,8,58,134,232,49,8,50,232,49,231, + 49,231,49,232,57,3,231,49,163,231,57,8,58,199,49,8,58,170,74,13, + 91,12,91,48,124,232,57,227,24,195,24,195,24,227,32,162,16,65,8,163, + 24,199,57,73,74,72,74,8,66,231,65,137,82,138,82,40,74,80,140,117, + 181,88,214,171,74,66,8,195,24,130,16,9,58,176,91,144,91,175,91,5, + 143,91,131,175,91,143,91,143,91,4,176,91,135,175,91,175,91,176,91,144, + 91,143,91,176,91,143,91,3,176,91,141,172,66,70,25,33,0,0,0,130, + 8,134,33,13,75,143,91,208,91,176,91,176,91,175,91,175,91,3,176,91, + 5,143,91,136,111,91,143,91,111,91,111,83,111,91,111,91,110,91,78,91, + 7,78,83,4,46,83,132,45,83,46,83,45,75,45,83,3,13,83,3,13, + 75,132,237,74,13,75,13,75,237,74,3,13,75,132,237,66,13,75,13,75, + 237,74,3,236,74,142,237,74,236,66,204,66,204,66,204,74,172,66,204,74, + 204,74,204,66,204,66,172,74,171,66,172,74,171,66,3,172,66,130,171,66, + 171,66,4,139,66,139,107,66,139,66,106,58,232,49,233,49,74,58,107,66, + 106,66,74,58,106,58,106,66,3,74,58,141,106,66,130,16,97,8,130,16, + 98,8,33,8,33,0,41,50,9,58,233,57,200,49,232,49,232,49,125,3, + 184,237,74,237,74,12,75,13,75,237,74,13,75,237,74,237,74,13,75,236, + 66,237,66,237,74,237,66,237,66,204,66,204,66,139,58,41,50,8,58,106, + 74,78,107,20,157,85,173,243,164,113,148,81,140,48,132,114,140,243,156,211, + 156,240,131,142,115,77,107,110,115,16,132,146,156,178,156,178,164,178,156,146, + 148,16,132,12,91,2,122,166,146,211,164,215,189,118,181,243,156,146,148,20, + 173,85,173,150,181,214,181,181,181,84,173,20,165,5,243,156,129,19,165,3, + 20,165,165,243,164,178,156,113,148,81,140,113,148,178,156,19,165,85,173,52, + 173,210,156,81,140,48,132,49,132,178,156,52,173,117,181,85,181,178,156,49, + 140,49,140,178,148,52,173,149,189,214,197,117,189,52,181,52,181,84,189,52, + 173,178,148,82,124,82,116,17,116,208,99,110,91,175,99,17,108,4,82,116, + 131,50,116,82,116,50,116,5,82,116,178,50,116,81,116,50,116,49,116,49, + 116,49,108,50,108,49,116,49,116,49,108,49,108,240,107,175,107,207,115,81, + 124,208,107,208,99,208,107,240,107,240,107,143,91,143,99,175,99,240,107,78, + 91,110,91,110,99,142,99,110,91,45,75,13,75,13,83,13,75,130,8,65, + 8,130,8,98,8,4,17,204,58,82,100,180,116,21,133,54,141,9,58,130, + 8,102,41,231,49,8,58,40,66,40,66,4,8,58,4,232,57,3,8,58, + 129,40,66,5,8,58,132,41,66,40,66,41,66,73,66,6,40,66,135,41, + 66,73,66,41,66,40,66,73,66,73,66,72,66,6,73,66,129,105,66,9, + 73,66,4,105,66,129,73,66,12,105,66,132,105,74,105,66,73,66,105,66, + 4,73,66,129,105,66,4,73,66,130,105,66,73,66,5,105,66,132,73,66, + 105,66,105,66,73,66,3,105,66,129,73,66,5,105,66,134,73,58,105,66, + 105,58,73,58,73,66,73,66,3,73,58,130,41,58,73,66,7,73,58,137, + 41,58,41,58,73,58,40,58,73,58,41,58,41,66,40,58,73,58,3,40, + 58,136,41,58,40,58,40,58,8,58,40,58,8,50,40,58,8,58,5,40, + 58,130,8,58,40,58,3,8,58,135,40,58,8,58,40,58,8,58,40,58, + 8,58,40,58,7,8,58,130,8,50,232,57,4,8,58,197,232,49,8,58, + 8,58,232,49,8,50,8,50,8,58,8,58,8,50,8,58,232,49,8,58, + 8,58,8,50,232,57,232,49,8,50,8,58,8,58,231,57,232,49,8,50, + 8,58,232,49,232,49,231,57,232,49,231,49,231,49,199,49,199,49,199,41, + 199,49,167,49,166,41,167,41,166,41,166,41,199,49,199,49,41,66,170,82, + 45,91,8,58,4,33,98,16,227,24,227,24,163,24,65,8,163,24,134,49, + 44,107,170,90,40,74,40,66,40,74,40,74,170,90,203,90,40,66,239,139, + 182,189,210,156,0,0,227,24,130,16,134,49,240,99,3,176,91,129,175,91, + 4,143,91,136,144,83,143,91,176,91,143,91,144,91,143,91,176,91,143,91, + 3,176,91,148,144,91,143,83,143,83,144,91,176,91,176,91,176,99,78,83, + 41,50,163,8,33,0,0,0,162,8,167,41,139,66,78,75,111,91,144,91, + 143,83,143,91,3,111,83,132,143,83,111,83,111,91,110,83,3,111,83,10, + 78,83,138,46,83,46,83,46,75,46,83,46,75,45,83,13,75,14,83,13, + 75,45,75,3,13,75,130,237,74,13,75,3,237,74,135,237,66,237,74,205, + 74,237,74,237,74,13,75,13,75,4,237,74,143,205,74,204,74,237,74,204, + 66,204,66,204,74,204,66,172,66,236,74,236,74,237,74,236,74,204,74,204, + 74,236,74,3,204,74,134,172,74,172,66,171,74,171,66,172,74,171,74,3, + 171,66,152,106,66,233,57,9,58,139,66,107,66,106,58,107,66,106,66,74, + 66,74,66,107,66,37,41,65,8,98,16,97,8,65,8,65,8,232,41,41, + 58,9,58,233,57,232,49,200,41,232,41,99,3,184,236,74,13,75,236,74, + 13,75,13,75,237,74,12,75,13,75,13,75,237,66,237,74,237,66,205,74, + 204,66,172,58,106,58,41,58,8,58,45,99,114,140,85,165,243,156,146,148, + 146,148,113,148,113,140,146,148,210,148,81,140,174,123,109,115,174,123,48,140, + 178,156,113,148,16,140,243,164,52,173,178,156,109,107,138,74,106,66,201,130, + 52,181,150,181,20,165,211,164,146,148,243,164,52,165,117,173,85,173,20,165, + 211,148,146,148,81,140,3,48,132,171,16,132,207,123,174,123,174,115,207,123, + 239,123,48,132,145,148,178,156,243,156,178,156,146,148,81,148,113,148,178,156, + 20,165,52,165,211,148,114,140,17,124,49,124,114,140,19,165,84,181,85,181, + 210,156,81,140,48,132,113,140,210,156,52,173,149,181,149,189,117,189,84,181, + 84,181,19,165,146,140,241,115,143,91,110,83,208,99,49,116,3,82,116,129, + 50,116,7,82,116,153,49,116,81,116,50,116,50,116,49,116,50,116,50,108, + 50,108,49,116,50,108,49,116,82,116,17,108,175,107,240,107,81,124,207,107, + 208,107,208,107,240,107,208,107,143,99,175,99,175,99,207,107,3,110,91,130, + 143,99,110,91,4,45,83,148,237,82,199,49,130,16,65,8,130,16,97,8, + 196,8,135,33,106,50,143,75,179,116,45,83,98,8,195,16,37,25,101,41, + 199,49,8,58,8,58,231,57,7,199,49,130,231,57,199,57,6,199,49,133, + 231,57,199,49,231,57,231,57,231,49,3,231,57,133,232,57,231,57,231,57, + 8,58,232,57,5,8,58,135,40,58,40,66,40,58,41,66,40,66,41,66, + 41,66,3,73,66,131,40,66,73,66,41,66,6,73,66,3,105,66,129,73, + 66,7,105,66,130,73,66,105,66,13,73,66,129,105,66,3,73,66,140,105, + 66,105,66,73,66,73,66,105,66,73,66,73,58,73,66,73,66,73,58,73, + 58,73,66,4,73,58,137,73,66,73,58,73,58,41,58,73,58,73,58,41, + 58,41,58,40,58,3,41,58,131,40,58,40,58,41,58,5,40,58,4,8, + 58,131,40,58,8,50,8,50,3,8,58,130,8,50,8,58,5,8,50,3, + 8,58,152,8,50,8,58,8,58,8,50,232,49,8,58,232,49,8,50,232, + 49,8,58,232,49,8,50,8,50,232,49,232,57,232,57,231,49,8,50,232, + 49,231,49,8,50,232,49,232,49,8,50,3,232,49,155,231,49,231,49,232, + 49,232,49,232,57,232,49,232,49,232,57,231,49,232,49,232,49,232,57,231, + 49,232,49,231,49,231,49,232,49,231,49,231,49,232,49,231,49,231,49,232, + 49,199,49,232,49,231,49,231,49,4,199,49,151,199,41,199,49,199,49,167, + 41,199,49,167,49,167,49,232,49,41,58,40,58,167,49,4,33,98,16,195, + 24,228,32,162,16,130,16,98,8,167,57,170,82,138,74,12,107,137,82,3, + 73,74,140,8,66,171,90,12,99,105,74,15,132,211,156,4,33,130,24,195, + 24,163,24,143,99,240,99,4,176,91,3,143,91,133,144,91,144,91,143,91, + 143,91,144,91,8,176,91,130,144,91,143,91,3,144,91,143,143,83,176,91, + 143,91,172,66,167,33,163,16,0,0,33,0,163,16,134,33,107,58,46,75, + 144,91,144,91,143,83,8,111,83,129,79,83,13,78,83,130,46,83,78,83, + 4,46,83,130,45,83,46,83,3,45,83,129,13,83,4,13,75,134,13,83, + 237,74,237,74,13,83,46,83,13,83,3,13,75,129,237,82,6,237,74,137, + 204,74,204,74,236,74,237,74,236,74,236,74,237,82,236,74,236,74,3,204, + 74,134,172,74,204,74,171,66,171,66,171,74,171,74,4,171,66,132,41,58, + 41,58,139,66,139,66,5,106,66,142,232,57,130,16,97,8,66,8,65,8, + 33,0,102,33,42,58,9,58,9,50,233,49,233,49,200,49,200,49,151,3, + 236,236,74,236,74,237,74,13,75,236,74,13,75,13,75,237,74,13,67,237, + 66,237,66,205,66,205,66,172,58,75,50,232,49,106,74,240,123,53,165,19, + 165,113,148,114,148,178,148,113,148,113,148,146,148,113,148,175,123,109,115,174, + 123,81,148,178,156,146,148,109,115,78,107,20,165,84,173,48,140,236,90,41, + 66,77,99,178,148,52,173,210,156,48,140,207,123,16,132,243,156,117,173,117, + 173,20,157,113,140,16,132,207,123,239,131,16,132,174,115,203,90,199,57,134, + 57,102,49,235,90,203,82,203,82,138,74,73,74,138,82,235,90,45,107,239, + 123,81,140,146,148,178,156,113,148,48,140,113,148,20,165,85,173,52,165,244, + 156,114,140,17,124,81,132,211,156,84,181,85,181,243,164,49,140,16,132,49, + 140,146,148,211,164,52,173,149,189,149,189,117,189,52,173,178,156,175,115,110, + 83,240,99,49,116,82,116,82,116,50,116,50,116,82,116,50,116,4,82,116, + 129,50,108,3,50,116,130,49,116,49,108,3,50,116,190,49,116,49,116,50, + 116,49,108,82,108,240,107,16,116,49,124,240,115,240,107,240,107,16,116,208, + 107,175,99,207,99,207,107,175,99,143,99,143,99,142,99,143,99,110,91,78, + 91,77,91,77,91,237,74,13,83,46,91,13,83,167,41,98,8,0,0,97, + 8,98,16,98,8,98,8,196,8,199,33,69,33,162,16,163,16,195,16,228, + 24,36,25,69,33,134,41,101,41,69,41,101,41,69,33,69,41,69,33,101, + 41,69,41,101,41,134,41,133,41,134,49,134,49,134,41,166,49,167,49,4, + 199,49,129,199,57,4,231,57,144,232,57,232,57,8,58,231,57,8,58,8, + 58,40,66,8,58,8,58,40,66,40,66,73,66,41,66,40,66,41,66,40, + 58,3,73,66,130,40,66,40,66,5,73,66,129,41,66,10,73,66,145,41, + 58,40,58,41,58,40,58,40,58,41,58,40,58,8,58,40,58,40,58,8, + 58,8,58,40,58,40,58,8,58,41,58,40,58,3,41,58,7,73,58,129, + 41,58,4,73,58,135,73,66,73,58,73,58,41,58,73,66,41,58,73,58, + 8,41,58,136,8,58,8,58,40,58,9,58,8,50,8,58,8,50,8,58, + 7,8,50,136,232,57,8,50,232,49,231,49,8,50,231,49,231,49,232,49, + 4,231,49,135,199,49,231,49,231,41,232,49,231,49,232,49,231,49,3,232, + 49,5,231,49,131,232,57,231,49,199,49,3,231,49,134,8,58,231,49,232, + 49,232,49,231,49,199,49,8,231,49,137,232,49,232,57,231,49,232,49,199, + 49,232,49,231,49,231,49,232,49,3,231,49,129,199,49,3,231,49,135,199, + 49,231,49,199,49,199,49,231,49,199,49,231,49,3,199,49,130,167,49,167, + 49,3,199,49,137,231,49,8,58,134,41,131,16,130,16,195,24,227,32,163, + 24,97,8,3,130,16,153,12,99,236,90,73,74,236,98,105,82,73,82,73, + 74,41,74,40,74,203,90,44,99,171,90,174,123,167,57,98,16,162,16,98, + 16,171,74,18,100,208,91,176,91,176,99,176,99,176,91,144,91,5,143,91, + 3,176,91,129,144,91,10,176,91,143,144,91,144,91,176,91,208,99,176,99, + 111,91,172,66,37,25,97,8,0,0,32,0,130,8,102,33,172,74,79,83, + 3,176,91,7,143,91,154,111,91,111,91,110,83,111,83,111,91,111,91,110, + 83,78,83,110,83,111,83,78,91,78,91,110,83,78,91,78,91,78,83,78, + 83,46,83,46,83,45,83,46,83,45,83,45,83,13,83,46,83,14,83,4, + 46,83,147,13,75,13,83,45,83,13,83,13,83,236,74,13,83,13,75,237, + 82,13,83,237,74,13,83,237,74,237,74,204,74,204,74,237,74,236,74,237, + 82,3,236,82,131,237,82,236,82,205,74,4,204,74,159,172,74,204,74,172, + 74,171,74,171,66,171,66,171,74,171,74,74,58,233,49,106,66,139,74,139, + 66,107,66,106,66,106,66,139,66,37,33,65,8,97,8,65,8,32,8,196, + 16,74,58,41,58,9,58,9,58,9,50,233,49,200,49,200,49,168,3,131, + 236,74,236,74,237,74,3,13,75,144,237,74,13,75,13,75,237,74,237,74, + 237,66,139,58,74,58,106,74,240,123,52,165,20,165,81,148,48,140,146,148, + 146,148,3,81,140,192,207,131,110,115,207,131,81,148,146,148,16,140,109,107, + 138,74,110,107,85,165,211,156,77,107,204,82,110,107,20,165,19,165,113,148, + 142,123,207,123,244,156,20,165,150,173,117,173,178,148,16,132,174,123,206,123, + 174,115,236,98,73,74,228,32,98,16,33,8,32,8,195,32,166,49,12,91, + 204,82,203,82,138,74,73,66,106,74,138,74,171,74,45,91,143,99,208,107, + 17,116,81,132,114,140,81,140,16,132,81,140,243,164,52,173,85,173,53,165, + 179,148,17,124,49,124,178,148,52,173,84,181,211,164,3,81,140,154,113,148, + 114,148,243,164,84,181,149,189,149,189,117,181,114,148,17,116,50,116,81,116, + 82,116,82,116,50,116,81,116,81,116,82,116,82,116,50,116,50,116,49,116, + 49,116,50,116,49,108,50,108,49,116,3,50,116,181,49,108,50,108,50,108, + 50,116,50,108,50,116,17,116,49,116,17,116,16,116,17,116,240,107,208,107, + 208,107,207,99,208,107,175,99,143,99,143,99,175,99,142,91,110,91,110,99, + 110,91,110,91,78,91,78,91,78,83,111,83,241,99,21,133,175,99,135,41, + 163,16,98,8,33,0,33,8,33,8,98,8,163,16,162,16,131,16,228,24, + 163,16,65,8,32,0,97,8,228,24,36,33,36,33,37,33,69,33,37,33, + 4,69,33,130,101,41,101,41,3,102,41,134,134,41,102,41,102,41,69,41, + 101,41,102,41,3,134,41,133,134,49,134,41,166,49,166,49,166,41,4,199, + 49,5,231,49,139,232,57,232,49,232,57,231,57,232,57,232,57,231,57,8, + 58,8,58,8,50,232,49,4,8,58,139,232,49,232,57,8,58,8,50,232, + 49,232,57,8,50,232,49,231,57,232,49,199,49,11,231,49,132,232,49,231, + 49,231,49,232,49,5,8,50,129,9,50,4,8,50,134,8,58,8,50,40, + 58,8,58,8,58,8,50,4,8,58,133,40,58,40,58,8,58,8,58,40, + 58,6,8,50,131,8,58,8,50,8,58,3,8,50,3,232,49,129,231,57, + 3,232,49,140,231,49,232,49,231,49,232,49,231,49,231,49,232,49,231,49, + 199,49,199,49,232,49,199,49,3,231,49,3,199,49,129,231,49,3,199,49, + 130,231,49,231,49,4,199,49,137,231,49,231,49,199,49,231,49,231,49,199, + 49,231,49,199,49,231,49,3,199,49,139,231,49,199,49,231,49,231,49,199, + 49,199,49,231,49,231,49,199,49,231,49,199,49,4,231,49,133,232,49,199, + 49,199,49,231,49,199,49,3,231,49,132,231,57,199,49,199,49,231,49,3, + 199,49,129,167,49,5,199,49,168,232,57,199,49,36,25,130,8,65,8,195, + 24,195,24,130,16,65,8,228,32,134,49,199,57,97,8,97,8,203,90,235, + 90,40,66,235,98,203,90,138,82,105,74,105,82,106,82,203,90,44,107,171, + 82,162,24,130,16,163,16,66,16,106,66,17,100,176,91,208,99,176,99,208, + 99,208,99,176,99,176,99,144,99,4,143,91,134,143,99,144,91,143,91,143, + 91,175,91,144,91,3,176,91,153,176,99,175,91,208,99,176,99,176,99,176, + 91,175,91,176,91,176,91,176,99,208,99,208,99,111,99,204,74,232,41,163, + 16,65,0,0,0,65,0,4,17,232,49,13,75,111,91,176,99,175,91,5, + 143,91,131,110,91,111,91,143,91,3,111,91,136,110,91,110,91,111,91,110, + 91,111,91,111,91,110,83,110,91,4,78,91,3,78,83,129,78,91,6,45, + 83,138,46,83,13,83,13,83,46,83,13,83,13,75,13,83,13,75,237,74, + 13,75,3,13,83,141,237,82,237,82,236,74,237,74,236,74,236,74,237,82, + 236,74,237,74,236,82,237,74,237,82,204,74,3,236,74,5,204,74,142,171, + 74,171,74,172,74,171,74,171,74,106,66,8,58,74,58,171,66,139,66,139, + 66,139,74,139,74,9,58,3,65,8,139,33,8,33,0,107,66,74,66,41, + 66,41,58,9,58,9,58,233,49,232,49,200,49,84,3,5,236,74,4,237, + 74,225,237,66,237,66,172,66,171,74,142,115,178,148,52,165,146,148,49,140, + 114,148,178,148,113,148,81,140,48,140,240,131,174,123,207,131,81,140,113,148, + 16,132,109,107,172,74,107,66,143,107,85,173,113,140,45,99,143,107,146,140, + 243,156,239,131,81,140,240,123,207,123,243,156,150,173,85,173,211,156,48,140, + 239,131,206,123,209,115,210,74,8,25,228,32,195,24,130,16,227,24,130,24, + 135,57,166,57,231,57,12,83,204,82,203,74,138,66,73,66,138,74,138,74, + 204,82,110,91,208,107,16,108,17,108,17,116,17,116,49,124,81,132,48,132, + 48,140,113,148,211,156,52,165,84,173,52,165,146,140,49,124,81,124,211,156, + 19,173,51,173,178,156,113,140,113,140,146,148,146,148,146,156,210,164,52,173, + 117,189,117,181,19,165,114,140,50,116,82,116,82,116,49,116,4,82,116,3, + 50,116,136,49,116,49,116,49,108,50,116,49,116,49,108,50,116,50,116,3, + 49,108,136,50,108,50,108,49,108,17,108,17,116,49,116,17,116,17,116,4, + 240,107,129,16,108,3,240,107,130,241,107,240,107,3,241,107,154,240,99,208, + 99,240,107,241,107,17,108,17,108,115,116,180,116,245,124,115,116,143,99,171, + 66,200,49,196,24,0,0,33,0,130,16,163,16,163,16,130,16,130,16,98, + 8,97,8,98,8,130,16,195,16,3,163,16,130,195,16,228,24,4,4,25, + 132,36,25,37,33,69,33,101,41,4,69,33,132,101,41,101,33,133,41,102, + 41,5,101,41,133,134,41,166,41,166,41,167,41,199,41,4,199,49,131,231, + 49,199,49,199,49,7,231,49,146,232,49,232,49,232,57,8,58,8,58,232, + 49,232,49,8,50,8,50,8,58,8,58,8,50,232,49,232,49,8,50,232, + 49,232,57,231,49,4,232,49,131,231,49,232,57,231,49,3,232,49,131,8, + 58,8,50,232,49,3,8,50,130,8,58,9,58,10,8,50,130,232,49,8, + 50,5,232,49,129,8,50,6,232,49,129,8,50,10,232,49,130,231,49,199, + 49,3,231,49,134,232,49,199,49,231,49,231,49,199,49,200,49,4,199,49, + 130,231,49,199,41,7,199,49,132,199,41,199,49,199,49,231,49,13,199,49, + 131,231,49,199,49,231,49,7,199,49,129,231,49,4,199,49,132,231,49,199, + 49,231,49,232,49,4,199,49,129,231,49,5,199,49,129,199,41,7,199,49, + 162,232,49,231,49,69,33,162,16,98,8,162,16,194,24,162,16,98,16,195, + 24,41,66,207,115,170,82,134,49,98,16,65,8,203,90,235,90,41,66,12, + 99,170,82,105,74,170,90,235,90,170,90,203,90,138,82,227,24,130,16,195, + 24,0,8,171,90,208,99,209,91,5,208,99,3,176,99,135,144,91,144,91, + 143,91,176,91,143,91,144,91,143,91,5,176,91,161,176,99,176,91,176,99, + 175,99,176,99,176,99,175,99,176,99,176,91,176,91,176,99,176,91,176,91, + 208,99,176,99,143,91,204,74,9,50,37,25,97,0,0,0,33,0,228,16, + 200,41,171,66,110,83,176,99,176,99,175,91,143,91,143,91,111,91,143,91, + 5,111,91,133,110,91,111,91,110,91,78,91,110,83,3,78,91,3,78,83, + 134,78,91,78,83,78,91,46,83,45,83,46,83,8,45,83,133,13,83,13, + 83,45,83,13,83,236,74,5,13,83,146,237,74,13,83,237,82,237,74,237, + 74,237,82,237,74,237,82,236,82,237,82,237,82,236,74,236,82,236,74,236, + 74,204,74,204,74,204,82,3,204,74,155,172,74,171,74,172,74,171,74,171, + 74,41,58,9,58,139,66,171,74,139,66,139,74,204,74,4,33,33,8,65, + 8,65,8,0,0,70,33,74,66,74,58,41,58,42,58,41,58,9,58,9, + 50,232,49,200,49,161,3,132,236,74,236,74,204,74,236,74,3,237,74,227, + 237,66,236,66,172,66,172,74,45,99,146,148,52,165,178,156,48,140,113,148, + 178,148,113,148,81,140,48,140,239,131,175,123,207,131,81,148,113,148,48,140, + 109,107,236,82,172,66,140,66,208,115,52,165,15,132,45,99,81,132,211,148, + 16,132,12,99,175,115,211,148,146,148,117,173,149,173,19,157,16,140,207,123, + 16,132,174,123,16,83,24,59,82,1,36,0,134,41,130,8,97,8,167,57, + 76,90,173,114,139,98,171,74,204,82,235,82,171,74,105,66,73,66,138,74, + 171,82,236,82,110,99,208,107,16,108,17,108,49,116,49,108,49,108,49,116, + 50,124,49,124,48,132,48,140,178,156,20,165,19,165,52,165,243,156,49,124, + 240,115,114,132,178,148,52,173,19,173,146,156,113,140,113,148,114,148,178,156, + 210,164,210,164,52,173,149,189,117,181,179,148,49,124,49,116,50,108,5,82, + 116,135,50,108,49,116,50,116,49,108,50,116,49,108,50,108,5,50,116,131, + 50,108,49,108,49,108,5,50,108,130,82,108,50,108,6,82,108,201,114,116, + 114,108,82,108,115,116,83,116,114,116,114,116,114,108,114,116,115,116,114,108, + 115,108,114,108,115,108,115,108,147,116,148,116,212,116,179,116,114,116,175,107, + 41,58,130,16,0,0,33,0,98,8,130,8,98,8,98,8,97,8,98,8, + 97,8,65,8,65,8,98,8,97,8,98,8,97,8,65,8,65,0,65,0, + 65,8,97,8,65,8,65,0,65,0,65,8,98,8,98,8,130,8,162,8, + 195,16,228,24,37,33,134,41,199,49,232,57,231,57,231,49,199,49,231,49, + 200,49,231,49,199,49,232,49,231,49,231,49,231,57,231,49,231,49,8,58, + 231,49,232,57,3,231,49,143,232,57,232,57,8,58,231,49,232,49,8,58, + 232,49,8,50,8,50,8,58,8,50,8,58,8,50,8,50,232,49,8,231, + 49,132,232,49,231,49,199,49,199,49,4,232,49,133,8,50,232,49,8,58, + 8,50,9,50,3,8,50,133,8,58,8,50,9,50,8,50,8,58,5,8, + 50,8,232,49,129,231,49,3,232,49,154,199,49,231,49,199,41,200,41,199, + 41,199,41,231,49,199,49,199,41,199,49,167,41,199,41,199,49,199,41,199, + 41,167,41,199,41,167,41,166,41,167,41,167,41,199,49,167,41,166,41,167, + 41,199,49,4,199,41,130,167,49,199,41,4,199,49,136,167,41,199,41,199, + 41,167,49,199,49,199,49,199,41,199,41,3,199,49,130,167,41,199,49,3, + 199,41,139,199,49,199,49,167,41,199,49,199,41,199,49,199,49,199,41,199, + 41,199,49,199,49,6,199,41,4,199,49,177,167,49,199,49,199,41,167,49, + 199,41,167,41,167,49,167,41,199,49,167,41,167,41,199,49,167,49,199,49, + 199,49,231,49,101,33,130,16,98,16,130,16,195,24,130,16,65,8,195,24, + 167,49,106,74,236,90,239,115,138,74,134,49,98,16,65,8,203,82,235,90, + 73,66,235,98,138,82,105,74,170,82,203,90,235,90,232,57,163,24,163,24, + 130,16,0,0,40,82,149,173,176,91,6,208,99,144,176,99,176,91,176,99, + 176,99,143,91,143,99,144,91,175,99,143,91,176,91,143,91,144,91,176,91, + 143,99,176,91,176,91,6,176,99,131,208,99,176,99,208,99,4,176,99,3, + 208,99,141,175,99,45,83,74,58,102,33,162,8,0,0,32,0,130,8,166, + 33,139,66,78,83,176,99,176,99,3,143,91,7,111,91,147,110,91,110,91, + 78,91,78,91,110,91,78,91,78,91,110,91,78,83,78,91,78,91,78,83, + 78,83,46,91,78,83,78,83,45,83,45,83,77,83,5,45,83,134,45,91, + 45,83,45,83,237,74,236,74,237,82,6,13,83,132,237,82,13,83,13,83, + 237,74,4,237,82,135,236,82,236,74,237,74,236,82,236,74,236,74,204,82, + 4,204,74,139,172,74,172,74,171,74,171,74,106,66,9,58,139,74,171,74, + 139,74,139,74,171,74,3,65,8,140,33,8,131,8,9,50,41,58,74,58, + 41,58,74,58,41,58,9,58,233,49,232,49,232,41,122,3,129,204,66,3, + 236,66,234,236,74,236,74,236,66,204,74,204,74,111,107,146,148,52,165,211, + 156,81,140,81,140,146,148,113,148,49,140,81,140,16,132,207,123,207,123,48, + 140,113,148,239,131,77,99,204,82,204,66,204,58,172,74,49,132,52,157,207, + 123,207,115,211,148,81,140,12,99,139,74,203,90,118,173,150,173,150,181,243, + 156,48,140,174,123,175,123,240,131,168,122,73,66,148,34,184,34,205,0,37, + 33,195,16,69,41,41,82,9,82,238,122,43,106,9,74,203,74,236,82,235, + 82,170,74,105,66,73,66,138,74,171,74,236,82,143,99,240,107,17,108,17, + 116,49,108,49,108,49,116,81,116,82,116,81,116,49,116,49,124,16,132,81, + 140,211,156,243,164,243,164,52,173,113,148,175,115,207,115,142,115,145,148,51, + 173,243,164,146,156,114,148,81,148,146,156,19,173,19,173,211,164,52,173,149, + 189,84,181,211,156,49,116,50,116,82,116,114,116,114,124,3,82,116,130,50, + 116,50,116,4,17,108,134,240,107,17,108,17,108,18,108,49,108,49,108,3, + 82,116,132,82,108,82,108,50,108,50,108,3,82,108,3,82,116,130,82,108, + 82,116,5,82,108,163,114,108,82,108,82,108,114,116,114,108,82,108,114,108, + 82,108,114,108,115,116,114,108,115,108,114,116,115,116,179,116,245,124,86,141, + 82,116,172,74,70,33,163,16,131,16,98,8,65,8,32,0,32,0,33,0, + 65,8,98,16,98,16,130,16,130,16,98,8,98,16,98,16,6,98,8,5, + 65,8,137,33,8,33,0,33,0,32,0,97,8,195,16,69,33,199,41,231, + 49,3,8,58,136,231,57,232,49,232,49,231,49,232,49,232,49,231,49,232, + 49,3,231,49,139,8,50,232,57,8,58,8,50,8,58,8,58,8,50,8, + 58,8,50,8,50,232,57,6,232,49,133,231,49,199,49,199,49,200,41,231, + 49,3,199,49,133,231,49,199,49,232,49,199,41,200,49,3,231,49,131,232, + 49,232,49,231,49,4,232,49,4,8,50,129,8,42,11,232,49,136,199,41, + 231,49,231,49,199,49,200,49,199,41,199,41,199,49,3,199,41,131,199,49, + 167,49,199,41,3,167,41,146,166,41,134,41,167,41,167,41,166,41,166,41, + 134,41,166,41,167,41,166,41,134,41,167,41,134,41,134,41,166,41,134,41, + 134,33,166,41,3,134,41,129,134,33,10,134,41,129,166,41,3,134,41,3, + 166,41,7,134,41,131,166,41,134,41,167,41,3,134,41,136,167,41,166,41, + 134,41,166,41,167,41,167,41,134,41,167,41,3,166,41,129,134,41,3,166, + 41,172,167,41,166,49,134,41,167,41,167,41,166,41,166,41,199,49,199,49, + 101,33,162,16,65,8,163,24,163,24,98,16,130,16,228,24,134,41,106,74, + 106,74,41,66,12,91,81,132,138,74,102,49,130,16,33,0,170,82,235,90, + 41,66,170,90,170,82,203,90,12,99,171,82,102,41,98,16,162,16,163,16, + 65,8,170,98,214,197,85,173,143,91,9,208,99,147,176,99,176,99,176,91, + 143,99,176,91,176,91,175,91,175,99,176,91,143,91,143,99,176,99,143,99, + 175,99,176,99,176,99,208,99,176,99,176,99,3,208,99,156,176,99,208,99, + 176,99,208,99,208,99,176,99,208,99,208,99,208,107,241,99,144,99,45,83, + 41,58,69,25,98,8,0,0,33,0,228,16,41,50,237,74,111,91,175,99, + 143,91,143,91,142,91,143,91,110,91,143,91,4,111,91,4,110,91,9,78, + 91,129,45,83,4,78,83,3,45,83,129,46,83,3,45,83,135,13,83,204, + 74,204,74,236,74,13,83,13,83,13,75,8,13,83,129,237,82,4,13,83, + 3,236,82,151,236,74,236,74,204,82,236,82,236,74,204,74,204,74,172,82, + 204,74,171,74,9,58,73,66,139,74,139,74,204,74,232,57,32,0,65,8, + 65,8,33,8,135,33,106,66,41,58,3,74,66,133,41,58,41,58,9,58, + 233,49,200,41,14,3,132,204,66,204,66,236,66,236,74,3,204,74,229,78, + 99,49,132,20,165,243,164,113,148,81,140,113,148,48,140,16,140,81,140,113, + 140,16,132,207,131,16,132,81,148,16,132,110,107,204,74,204,66,204,66,205, + 66,204,74,208,115,20,157,16,132,81,132,178,148,174,115,203,90,45,99,17, + 132,52,165,150,181,52,165,81,148,207,123,175,123,207,123,16,132,108,139,131, + 146,231,89,150,34,86,26,171,0,134,49,167,65,42,90,103,65,173,114,76, + 114,233,89,102,49,138,66,236,82,203,82,138,66,73,66,106,74,138,74,171, + 82,13,91,175,99,240,107,17,108,17,116,49,108,49,116,49,116,81,116,49, + 116,82,116,82,116,81,116,49,116,17,124,16,132,178,156,19,165,211,156,19, + 165,243,164,81,140,175,115,45,107,239,123,19,165,19,173,210,164,146,148,81, + 148,81,148,243,164,84,173,51,173,243,164,52,173,117,181,20,173,48,132,12, + 83,3,41,50,150,8,42,232,41,232,41,199,41,167,33,167,33,135,25,135, + 25,167,33,135,33,167,33,135,33,167,33,200,33,232,33,41,50,106,50,171, + 58,205,66,46,75,176,91,82,108,3,115,116,129,82,116,7,82,108,131,82, + 116,82,108,82,116,3,82,108,3,114,108,158,114,116,115,116,114,108,114,108, + 115,108,114,116,115,116,115,116,114,108,147,116,212,124,245,124,114,116,176,99, + 45,83,204,74,138,66,41,58,69,33,130,16,0,0,0,0,33,8,65,8, + 98,8,98,8,130,16,98,8,130,8,98,8,8,130,16,141,130,8,130,16, + 98,16,130,8,98,8,65,8,32,0,33,0,130,8,228,16,101,33,199,49, + 8,58,4,232,49,133,232,57,231,57,8,58,231,57,232,49,5,231,49,3, + 232,49,129,231,49,3,232,49,131,231,49,232,49,232,57,4,231,49,8,199, + 49,129,199,41,3,199,49,130,231,49,231,49,7,232,49,129,8,50,4,232, + 49,130,232,41,8,50,5,232,49,133,232,41,200,41,199,41,199,49,199,49, + 12,199,41,130,167,41,199,41,9,167,41,129,135,41,3,134,41,129,166,41, + 28,134,41,129,133,41,29,134,41,4,166,41,166,167,41,134,41,4,25,98, + 8,130,16,195,24,130,16,98,16,195,24,134,41,199,49,199,49,231,57,138, + 74,8,66,114,132,49,132,170,82,134,49,162,16,33,0,170,82,236,90,73, + 66,170,90,203,90,44,99,8,66,228,32,97,8,162,16,130,16,65,8,199, + 65,52,173,117,181,85,173,175,99,10,208,99,3,176,99,137,144,99,143,99, + 176,99,175,91,176,91,176,99,143,99,175,99,143,99,6,176,99,3,208,99, + 133,176,99,176,99,208,99,176,99,176,99,4,208,99,144,176,99,208,99,208, + 99,176,99,46,91,171,66,134,41,195,16,33,0,65,0,4,17,232,41,13, + 83,143,91,143,91,143,99,4,143,91,133,142,91,111,91,78,91,111,91,110, + 91,3,78,91,130,110,91,110,91,6,78,91,3,78,83,147,77,91,78,83, + 45,83,78,83,78,91,45,83,46,83,45,83,13,83,13,83,13,75,237,74, + 236,74,13,83,13,83,45,83,13,83,13,83,45,83,4,13,83,129,13,91, + 5,13,83,132,236,82,13,83,237,82,236,82,3,204,82,130,236,74,204,82, + 3,204,74,141,171,74,73,66,74,66,171,74,139,74,204,82,37,33,32,8, + 65,8,33,8,66,8,41,50,106,66,3,74,66,134,74,58,74,66,41,58, + 9,58,8,50,232,49,116,3,153,204,66,236,58,237,66,13,67,13,59,13, + 67,240,107,243,148,52,165,146,148,81,132,114,140,145,140,16,132,16,124,211, + 140,146,140,16,124,240,131,48,148,16,140,110,115,236,90,172,66,172,58,3, + 172,66,174,176,107,20,157,49,140,178,148,146,148,12,99,13,91,49,132,52, + 165,150,181,117,173,146,148,207,131,174,123,207,123,174,123,206,123,239,131,102, + 122,197,154,36,122,116,42,246,1,42,33,106,98,201,81,164,40,10,90,206, + 130,202,97,168,65,195,24,170,74,236,82,235,82,138,66,73,66,106,74,170, + 74,171,82,13,91,175,107,240,107,16,108,17,116,17,108,5,49,116,3,82, + 116,187,49,116,49,116,49,124,178,148,52,173,211,156,243,156,52,165,178,148, + 48,132,207,123,48,140,243,164,243,172,243,172,178,156,146,148,81,148,146,156, + 52,173,117,189,243,172,146,156,84,181,116,181,210,164,12,99,74,66,106,66, + 171,66,172,74,204,74,237,82,13,83,45,91,78,91,110,91,110,91,78,91, + 78,91,45,83,13,83,236,74,171,74,138,66,41,50,232,41,135,33,69,25, + 4,9,36,9,200,25,172,58,241,91,115,108,147,124,147,116,114,116,82,116, + 9,82,108,132,114,108,114,108,82,108,82,108,5,115,108,146,114,108,115,108, + 114,108,115,108,115,108,83,108,147,108,147,116,180,124,212,116,212,116,180,116, + 115,116,82,116,240,107,204,82,232,57,228,24,4,0,0,135,32,8,33,8, + 65,8,98,8,130,16,130,8,98,16,6,130,16,161,162,16,130,16,162,16, + 130,16,98,8,97,8,33,0,65,8,97,8,195,16,199,49,40,50,8,50, + 199,49,231,49,199,49,232,49,231,49,231,49,232,57,231,49,231,49,232,49, + 232,49,232,57,232,49,231,49,232,49,232,49,231,49,199,49,231,49,231,49, + 5,199,49,135,167,49,167,49,199,49,167,41,166,41,199,49,199,49,4,167, + 41,131,199,41,199,49,199,49,3,232,49,132,232,41,8,50,232,41,232,41, + 7,232,49,131,232,41,232,49,232,49,4,199,41,138,167,41,199,41,199,41, + 167,41,199,41,167,41,199,41,199,41,167,41,199,41,3,167,41,132,199,41, + 199,41,167,41,199,41,4,167,41,137,166,41,134,41,166,41,134,41,134,41, + 135,41,166,41,166,41,134,33,5,134,41,132,134,33,134,41,134,41,102,41, + 3,134,41,129,134,33,4,134,41,129,102,41,4,134,41,129,134,33,3,134, + 41,129,102,41,5,134,41,129,134,33,4,134,41,129,134,33,10,134,41,129, + 134,33,13,134,41,138,199,49,37,33,130,16,130,16,163,16,163,16,97,8, + 130,16,69,41,167,41,3,167,49,161,199,49,73,74,12,99,243,148,240,123, + 170,82,101,49,162,16,32,0,138,82,12,99,73,74,44,99,73,74,36,33, + 98,8,130,16,162,16,130,16,130,16,101,41,76,107,52,173,84,181,85,173, + 176,99,208,99,241,99,208,99,209,107,208,99,208,99,209,99,4,208,99,3, + 176,99,130,143,99,175,99,8,176,99,145,176,91,176,99,208,99,176,99,176, + 99,208,99,176,99,208,99,176,99,208,99,208,99,176,99,208,99,176,99,208, + 99,208,99,176,99,3,208,99,147,208,107,176,99,110,91,204,74,232,49,195, + 8,33,0,33,0,4,17,41,50,45,83,175,99,175,99,143,91,143,99,111, + 91,111,91,79,91,78,91,3,110,91,134,78,91,78,91,110,91,78,91,78, + 91,110,91,5,78,91,134,77,83,46,91,78,91,78,83,46,83,78,83,3, + 78,91,133,45,83,13,83,45,83,45,83,46,91,4,13,83,134,45,91,13, + 83,45,83,13,83,13,83,45,83,7,13,83,132,12,83,13,83,236,82,237, + 82,3,236,82,4,204,82,143,204,74,204,82,138,74,41,58,106,66,172,74, + 171,74,195,24,33,8,65,8,33,8,131,16,139,66,106,66,106,66,4,74, + 66,132,74,58,9,58,9,50,232,49,92,3,162,176,43,208,35,240,35,241, + 35,49,44,147,76,53,109,244,108,146,84,146,76,179,84,147,84,114,68,147, + 60,212,76,179,84,114,76,114,84,146,92,114,92,17,60,208,43,176,43,111, + 51,78,51,46,51,237,66,208,107,20,157,113,140,178,148,49,140,142,115,146, + 140,3,85,173,187,243,156,16,132,142,115,206,123,48,132,16,132,110,115,239, + 131,12,91,197,89,198,154,132,146,43,82,16,58,9,106,38,65,99,32,103, + 65,47,139,42,114,71,65,4,41,195,24,106,66,236,82,203,82,73,66,73, + 66,105,74,170,74,203,82,77,91,207,107,16,108,17,108,49,108,49,116,49, + 108,49,108,49,116,81,116,82,116,114,124,114,124,82,116,17,116,207,99,45, + 83,171,74,77,107,243,164,243,164,210,156,52,165,211,156,16,132,16,132,146, + 148,20,165,3,243,164,143,178,164,145,156,113,148,211,156,85,181,84,181,113, + 156,178,156,52,173,149,189,52,173,147,140,114,116,82,116,114,116,5,82,116, + 130,50,116,50,116,5,82,116,146,114,116,147,116,115,124,115,116,83,116,50, + 116,175,99,236,74,232,41,4,9,37,9,232,33,46,75,241,99,115,116,114, + 116,82,108,114,108,4,82,108,132,114,108,82,108,82,108,83,108,3,82,108, + 134,115,108,82,108,114,108,114,108,115,116,115,108,4,115,116,148,82,108,82, + 108,114,108,115,116,115,108,115,108,147,108,147,108,179,116,212,116,245,124,54, + 133,86,141,212,124,49,116,45,83,106,74,200,49,4,33,163,24,4,130,16, + 132,130,8,98,8,130,16,130,8,3,130,16,144,162,16,130,16,162,16,163, + 16,163,16,130,16,98,8,65,8,32,0,98,0,37,25,167,41,232,49,232, + 49,199,41,232,49,3,199,49,129,231,49,3,232,49,129,199,49,4,232,49, + 133,232,57,231,49,232,49,232,49,231,49,5,199,49,133,166,49,199,41,167, + 49,167,49,166,41,6,167,41,135,199,41,199,49,199,49,232,41,232,49,232, + 41,232,41,3,232,49,137,199,41,200,41,200,49,232,41,232,49,199,41,232, + 41,199,41,199,49,5,199,41,132,167,41,199,41,167,41,199,41,10,167,41, + 135,166,41,167,41,134,41,166,41,134,41,134,41,166,41,9,134,41,4,102, + 33,129,134,41,5,102,33,133,102,41,102,33,102,33,101,41,101,41,5,102, + 41,130,134,41,102,33,4,102,41,149,134,41,102,41,102,41,102,33,102,33, + 102,41,102,41,134,33,134,41,134,33,134,33,134,41,102,41,134,33,134,41, + 134,41,102,41,134,41,134,41,102,41,134,41,4,102,41,4,134,41,129,102, + 41,3,134,41,158,102,41,196,24,98,8,163,16,163,16,130,16,130,16,228, + 24,166,49,134,41,102,41,102,33,134,41,101,41,102,41,137,82,207,123,146, + 148,16,124,170,82,101,49,162,24,0,0,105,74,235,90,8,58,37,41,98, + 16,130,16,162,16,3,130,16,135,69,41,171,90,45,107,19,173,117,181,85, + 181,208,107,4,241,99,3,241,107,136,240,107,209,99,208,99,208,99,208,107, + 176,99,176,99,175,99,3,176,99,134,175,99,176,99,143,99,143,99,175,99, + 175,99,3,208,99,130,176,99,176,99,18,208,99,144,208,107,176,99,45,83, + 74,58,37,25,33,0,0,0,195,16,41,50,13,83,143,99,143,99,143,91, + 143,91,110,91,111,91,7,110,91,12,78,91,139,78,83,78,91,78,91,45, + 83,45,83,45,91,45,91,46,91,45,91,45,83,13,75,3,13,83,4,45, + 83,131,45,91,13,83,45,91,3,13,83,131,13,91,13,83,13,91,4,13, + 83,4,236,82,143,204,74,204,82,204,82,236,82,171,74,74,66,106,66,204, + 82,106,74,130,16,33,8,65,8,32,8,37,25,171,74,3,106,66,3,74, + 66,132,73,66,9,58,9,58,201,49,121,3,143,114,28,114,28,147,28,147, + 28,179,44,212,60,212,52,179,44,179,36,179,44,179,36,179,28,179,28,180, + 36,179,36,4,147,36,233,147,28,115,28,147,28,115,28,114,36,82,36,50, + 44,50,60,20,117,178,132,178,132,146,140,146,148,20,165,243,164,243,164,52, + 165,113,148,207,131,207,123,174,123,77,107,48,132,142,115,110,115,207,123,105, + 74,40,74,68,130,39,163,227,113,135,81,229,48,131,32,66,24,176,147,173, + 122,104,81,135,49,195,24,227,32,40,58,12,83,171,74,105,66,73,66,105, + 74,138,74,236,82,110,91,208,107,16,108,17,116,17,108,49,108,49,116,82, + 116,114,116,114,124,17,108,110,91,171,66,232,41,167,33,134,33,135,41,232, + 49,106,66,240,123,211,156,243,164,178,156,20,165,243,156,236,98,138,82,49, + 132,117,173,243,164,211,164,243,172,178,164,178,164,210,164,178,156,243,164,84, + 181,243,172,113,148,178,156,52,173,19,173,114,140,17,116,50,108,81,116,49, + 116,17,108,49,108,17,108,18,108,17,108,49,108,17,108,17,108,3,49,108, + 5,50,108,140,82,108,114,116,115,116,49,116,143,99,138,66,167,33,102,17, + 41,34,176,83,115,108,115,116,10,82,108,139,114,108,114,108,82,108,114,108, + 82,108,115,108,115,108,115,116,115,116,114,116,114,108,3,82,108,131,114,108, + 115,116,115,116,3,115,108,129,115,116,3,115,108,142,147,116,180,116,213,116, + 245,124,54,141,142,107,167,49,102,41,69,33,4,33,4,25,195,24,195,16, + 162,16,7,130,16,151,162,16,130,16,162,16,163,16,163,16,163,24,130,16, + 98,8,163,16,37,33,134,41,134,41,166,41,167,41,167,41,199,49,167,41, + 199,49,199,49,231,41,199,49,199,41,199,41,4,167,41,4,134,41,156,102, + 41,69,33,69,33,101,33,101,33,69,33,101,33,101,33,134,41,134,41,166, + 41,167,41,167,41,199,49,199,49,199,41,232,49,199,49,199,41,200,49,232, + 41,200,41,199,41,232,41,232,41,199,49,200,49,199,49,11,199,41,130,167, + 41,199,41,3,167,41,138,199,41,167,41,167,41,166,41,166,41,135,41,167, + 41,135,41,166,41,134,33,9,134,41,133,102,41,102,33,102,41,102,33,102, + 41,7,102,33,133,102,41,101,33,102,41,134,41,101,33,4,102,33,131,101, + 33,102,33,102,33,4,101,33,132,102,41,102,33,102,33,101,41,6,102,33, + 183,102,41,101,41,102,33,102,33,101,33,102,41,102,41,102,33,102,41,101, + 41,102,41,102,41,134,41,134,33,102,33,102,41,102,41,102,33,102,41,102, + 33,102,41,101,41,101,33,102,41,102,41,134,41,36,33,163,16,162,16,195, + 24,162,16,98,16,227,24,69,41,102,41,101,41,101,33,69,41,69,33,69, + 41,69,33,36,25,69,33,206,123,16,132,81,140,170,82,101,49,162,24,65, + 8,166,49,37,33,130,16,130,16,162,16,5,130,16,136,195,24,203,90,77, + 107,243,164,117,181,84,181,240,107,241,99,4,241,107,129,17,108,3,241,107, + 129,240,107,3,208,99,129,175,99,3,176,99,139,175,99,175,99,143,99,176, + 99,175,99,175,99,176,99,176,99,208,99,208,99,176,99,6,208,99,129,208, + 107,10,208,99,3,176,99,143,175,99,208,99,143,99,45,91,9,58,4,25, + 65,0,65,0,37,25,74,58,78,83,143,91,143,91,111,91,111,91,9,110, + 91,9,78,91,143,77,83,46,83,78,91,46,83,45,83,45,91,77,83,45, + 83,77,91,45,91,45,83,13,83,45,83,13,83,13,83,4,45,83,142,45, + 91,45,91,45,83,45,91,45,91,13,91,13,83,45,83,13,83,13,91,13, + 91,13,83,12,83,13,83,4,236,82,152,204,82,236,82,236,82,204,82,74, + 66,41,66,204,82,74,66,65,16,33,8,65,8,0,0,200,33,171,74,106, + 74,106,66,73,58,74,66,106,66,106,66,74,58,41,58,9,58,200,49,143, + 3,3,147,12,129,179,20,3,147,20,138,179,20,147,12,147,20,147,12,147, + 12,147,20,147,20,115,12,115,20,115,20,4,82,12,234,114,12,115,20,147, + 20,147,20,147,28,212,52,212,68,211,68,212,84,244,108,244,124,146,124,178, + 140,19,157,81,140,174,123,207,131,109,115,12,107,12,99,239,123,77,107,110, + 115,109,107,41,58,139,74,228,105,72,171,67,138,195,56,131,24,1,8,107, + 98,144,147,169,97,70,65,170,74,195,24,227,32,199,49,12,83,170,74,73, + 58,73,66,138,74,138,74,12,83,110,99,240,107,16,108,49,116,82,116,114, + 124,114,124,240,107,204,74,199,41,228,16,69,25,200,41,204,66,110,91,208, + 107,17,116,82,116,50,116,17,108,49,116,178,148,243,164,146,156,243,164,19, + 165,73,82,33,8,49,132,117,181,211,156,211,156,19,165,243,172,211,172,52, + 173,19,173,178,156,20,173,84,181,146,156,81,148,243,164,52,173,114,148,209, + 82,242,66,82,108,177,124,81,116,49,108,17,108,49,108,49,108,17,108,50, + 108,49,108,49,108,17,108,4,50,108,143,49,108,49,108,82,108,50,108,82, + 108,115,116,147,116,50,116,143,99,73,58,228,0,167,17,176,83,147,124,147, + 116,6,82,108,129,114,108,4,82,108,131,114,108,114,108,82,108,3,115,108, + 129,114,108,3,82,108,168,114,108,82,108,115,108,82,108,115,116,115,108,115, + 116,147,116,147,108,115,108,115,116,147,116,147,116,147,108,147,116,178,132,170, + 82,102,41,134,49,134,49,101,41,134,41,101,41,69,41,69,33,36,33,228, + 24,195,24,130,16,130,16,98,8,130,16,162,16,130,16,130,8,130,16,130, + 16,130,8,130,16,162,16,4,130,16,140,131,16,163,16,163,16,162,8,195, + 16,162,16,163,16,163,16,162,16,162,16,163,16,131,8,3,163,16,137,130, + 16,130,8,162,16,163,16,130,16,130,8,130,8,130,16,130,8,3,162,16, + 129,163,16,4,195,16,134,228,24,37,33,102,33,232,41,232,49,9,50,3, + 232,49,133,199,41,199,41,200,41,199,41,200,41,3,199,41,129,199,49,5, + 199,41,133,167,41,199,41,199,41,167,41,199,41,4,167,41,130,167,33,134, + 41,3,167,41,3,134,41,137,134,33,134,33,134,41,134,41,102,41,134,41, + 102,41,134,41,134,41,3,102,33,129,101,41,3,102,33,132,101,33,102,33, + 101,33,102,33,3,101,33,131,101,41,101,33,102,41,4,102,33,133,101,33, + 69,33,102,41,101,33,101,33,4,102,33,130,101,33,102,33,3,101,33,169, + 102,41,102,33,101,33,102,41,102,33,102,33,101,33,102,33,102,33,102,41, + 102,41,102,33,101,41,101,41,102,41,102,41,102,33,101,33,102,41,102,41, + 102,33,102,41,102,41,101,41,102,33,102,41,101,33,102,41,134,41,4,25, + 130,16,163,16,163,24,130,16,162,16,37,33,101,41,101,41,69,33,69,33, + 102,33,4,69,33,136,37,33,4,25,44,99,142,115,146,148,235,82,36,33, + 163,24,4,130,16,142,98,8,65,8,97,8,195,24,195,24,98,8,130,16, + 130,16,203,90,77,107,210,164,84,181,85,181,240,107,9,241,107,132,208,107, + 240,107,208,99,208,99,9,176,99,134,175,99,176,99,176,99,208,99,176,99, + 176,99,18,208,99,131,176,99,175,99,175,99,3,176,99,141,143,99,237,82, + 9,50,162,8,32,0,65,0,135,33,203,74,111,91,143,99,143,91,111,91, + 110,99,8,110,91,130,78,91,110,91,6,78,91,131,78,83,45,83,77,91, + 3,78,91,146,77,91,78,91,46,91,78,91,45,83,45,83,77,83,13,83, + 13,83,45,83,77,91,45,91,45,83,45,91,77,91,45,91,45,91,13,91, + 3,45,91,155,13,83,13,83,45,83,13,83,13,83,237,82,13,83,237,82, + 236,82,237,82,236,82,237,82,236,82,236,82,139,74,106,66,236,82,9,66, + 65,8,33,8,65,8,0,0,107,58,171,74,138,66,106,66,74,66,3,106, + 66,132,74,66,41,58,9,58,232,49,156,3,129,49,36,4,17,28,209,17, + 20,17,4,17,12,50,20,82,20,82,12,82,12,114,12,115,12,147,12,114, + 12,114,20,82,20,82,20,49,20,17,20,209,19,208,19,176,19,17,36,147, + 68,82,44,114,36,147,36,179,36,212,44,211,44,212,52,20,85,179,76,114, + 84,114,108,240,99,110,99,236,90,45,99,206,123,45,107,141,115,171,82,41, + 74,233,81,69,81,7,163,230,154,68,73,0,0,102,65,241,155,233,97,70, + 65,171,82,203,74,228,24,228,32,69,33,12,83,138,66,73,58,73,66,138, + 74,171,74,12,91,143,99,17,108,49,116,240,107,45,83,73,58,69,25,196, + 8,167,33,204,74,17,108,146,124,147,124,114,124,114,116,82,108,49,108,50, + 108,3,17,108,166,17,116,146,140,243,156,113,148,211,156,117,173,77,115,98, + 16,16,124,117,173,178,156,146,148,19,165,19,173,210,164,243,164,117,189,243, + 172,211,164,52,181,19,173,113,148,146,156,19,173,83,181,242,106,49,33,81, + 33,50,75,18,108,81,116,49,108,17,108,49,108,49,108,17,108,49,108,50, + 108,3,49,108,132,50,108,49,108,50,108,82,108,3,50,108,139,82,108,82, + 108,115,116,179,124,50,116,171,74,228,8,167,17,78,67,82,108,115,116,4, + 82,108,129,114,108,3,82,108,139,114,108,83,108,82,116,82,108,83,108,83, + 108,82,108,115,108,82,108,82,108,114,108,7,115,108,129,115,116,3,115,108, + 136,147,108,115,116,115,116,147,116,146,132,170,82,69,33,69,41,3,102,41, + 131,101,41,101,41,69,41,3,101,41,140,134,41,134,41,102,41,68,33,4, + 25,228,24,163,24,162,16,162,16,130,16,130,16,98,16,8,130,16,136,162, + 16,130,16,130,16,98,16,98,8,162,16,162,16,130,16,4,162,16,132,195, + 16,163,16,163,16,162,16,3,163,16,135,162,16,195,16,163,16,162,16,163, + 16,163,16,131,16,3,163,16,140,130,16,98,8,65,8,98,8,131,16,37, + 25,102,33,134,33,200,41,232,41,232,41,232,49,3,199,41,129,200,41,3, + 199,41,132,167,41,199,41,167,41,199,41,5,167,41,129,199,41,4,167,41, + 134,135,41,135,41,167,41,135,41,135,41,166,41,4,134,41,130,134,33,134, + 41,3,102,33,129,102,41,5,102,33,139,101,33,102,33,101,33,102,33,70, + 33,102,33,101,33,102,33,101,33,102,33,101,33,4,69,33,139,102,33,69, + 33,70,33,101,33,69,33,101,33,69,41,69,33,102,41,101,33,70,33,3, + 101,33,133,69,33,101,33,102,33,102,33,102,41,4,102,33,3,101,33,156, + 102,41,101,33,101,41,102,41,102,33,102,33,102,41,102,41,101,41,101,33, + 101,41,69,41,102,33,102,41,102,41,69,33,195,16,130,16,163,16,163,16, + 97,8,227,24,102,41,69,33,101,41,69,33,69,33,102,33,6,69,33,157, + 4,25,171,82,203,82,73,66,162,16,98,16,131,16,163,16,130,16,98,8, + 98,16,163,24,8,66,8,66,33,0,98,16,98,16,65,8,36,41,12,99, + 45,107,210,164,117,181,84,181,16,116,240,107,241,107,241,107,17,108,3,241, + 107,133,240,99,241,107,241,107,240,107,240,107,4,208,99,130,176,99,175,99, + 5,176,99,133,175,99,176,99,176,99,208,99,176,99,3,208,99,132,208,107, + 208,99,208,99,208,107,3,208,99,131,240,107,208,107,208,107,6,208,99,4, + 176,99,143,175,99,175,99,176,107,175,99,13,83,9,58,196,16,0,0,98, + 0,135,33,12,83,143,99,143,99,110,99,143,99,5,110,91,133,78,99,110, + 91,78,91,110,91,110,91,5,78,91,131,110,91,78,91,78,91,3,110,91, + 4,78,91,141,45,91,77,91,77,83,45,91,45,91,13,83,45,83,46,91, + 45,91,46,91,45,91,45,91,46,91,6,45,91,136,13,83,13,91,13,83, + 13,83,12,83,13,83,13,83,12,83,3,236,82,138,237,82,171,74,41,66, + 171,74,199,57,33,8,65,8,65,8,0,0,172,66,3,139,74,136,138,74, + 138,66,106,66,106,66,74,74,74,66,9,50,232,49,121,3,207,240,83,240, + 83,16,92,207,75,142,51,45,27,46,27,240,59,82,84,17,60,241,43,17, + 44,17,28,50,20,50,12,114,20,114,12,115,20,114,28,114,20,82,28,17, + 28,241,35,240,51,179,108,146,116,240,83,17,76,17,52,17,36,82,36,179, + 52,211,44,212,44,244,44,244,44,244,60,179,60,114,60,208,59,16,92,207, + 107,109,107,109,115,139,90,201,81,38,65,164,48,229,146,39,155,196,97,2, + 0,46,131,205,130,71,81,102,57,203,74,203,74,69,33,227,24,36,33,171, + 74,138,74,41,66,73,66,138,74,203,82,77,91,175,107,236,82,8,50,102, + 33,102,33,9,50,13,83,17,116,114,124,114,124,82,116,5,49,116,173,49, + 108,49,108,17,108,17,108,49,108,17,108,49,116,114,140,210,156,81,148,146, + 148,84,173,12,107,167,57,49,132,84,173,239,131,109,107,243,156,20,173,145, + 156,113,148,84,181,116,189,19,173,243,172,51,173,178,164,113,148,210,164,83, + 181,242,172,114,123,113,41,16,17,113,50,82,108,113,116,17,108,49,108,49, + 108,17,108,18,108,50,108,49,108,8,50,108,4,82,108,137,83,108,147,116, + 50,116,138,66,102,25,167,17,143,83,115,108,115,108,12,82,108,133,114,108, + 82,108,82,108,114,108,114,108,3,115,108,134,114,108,114,108,115,108,115,116, + 115,108,114,108,5,115,108,137,147,124,81,124,170,82,69,41,134,49,134,49, + 101,41,101,41,69,41,3,101,41,133,69,41,101,41,69,33,134,41,199,41, + 3,199,49,145,167,41,134,41,102,41,69,33,69,33,36,33,4,33,228,24, + 195,24,130,16,163,16,195,24,163,24,195,24,195,24,163,24,163,16,4,130, + 16,3,163,16,132,195,16,195,24,195,16,163,24,6,195,24,131,163,16,163, + 16,195,24,4,163,16,131,130,16,163,16,195,16,3,195,24,137,163,24,98, + 16,98,8,98,8,163,16,228,16,36,25,102,33,167,41,3,232,41,5,199, + 41,10,167,41,134,135,33,167,41,135,41,167,41,167,33,134,33,4,134,41, + 3,134,33,132,102,33,102,41,102,33,102,41,4,102,33,131,101,33,102,33, + 70,33,3,101,33,138,102,33,69,33,70,33,70,33,69,33,102,33,69,33, + 101,33,69,33,70,33,4,69,33,129,101,33,5,69,33,129,101,33,3,69, + 33,136,101,33,69,33,101,33,70,41,70,41,70,33,101,33,69,33,3,102, + 33,189,101,33,102,33,102,41,101,33,101,33,101,41,102,41,102,33,101,33, + 69,33,101,41,101,33,102,41,102,33,101,41,102,41,69,33,162,16,130,16, + 163,24,130,16,130,16,228,24,102,41,102,41,70,33,102,33,101,33,69,33, + 69,33,70,41,102,41,102,41,102,33,69,33,4,25,195,16,228,24,98,16, + 65,8,130,16,163,16,163,16,162,16,130,16,4,33,166,49,138,74,235,98, + 236,98,134,49,195,24,130,16,69,41,171,90,12,99,44,99,178,156,84,181, + 84,181,48,116,7,241,107,133,17,108,241,107,241,107,240,107,240,107,3,208, + 107,3,208,99,130,175,99,208,99,3,176,99,134,175,99,175,99,176,99,176, + 99,208,99,176,99,3,208,99,145,208,107,208,99,240,107,240,107,208,99,240, + 107,208,107,208,107,240,107,240,99,208,107,208,99,208,107,176,107,208,99,208, + 99,176,99,5,175,99,140,176,99,176,99,110,99,204,82,134,33,130,8,32, + 0,4,17,73,58,45,83,143,99,143,99,4,110,91,130,78,91,110,99,5, + 110,91,3,78,91,130,110,91,110,99,4,78,91,129,110,91,4,78,91,129, + 46,91,4,78,91,136,45,83,13,83,78,91,78,91,46,91,45,91,45,91, + 77,91,6,45,91,133,13,83,12,91,13,83,12,91,13,91,3,13,83,4, + 236,82,148,204,82,106,74,171,82,199,57,33,8,65,8,65,8,0,0,204, + 74,139,74,139,74,139,66,139,74,139,74,106,74,106,66,74,66,73,66,41, + 58,232,49,133,3,252,16,124,48,124,239,115,12,83,106,50,106,50,175,99, + 178,140,48,132,207,99,240,99,207,91,175,59,176,35,176,27,241,19,17,20, + 50,20,114,12,115,20,147,20,114,28,147,44,212,76,212,108,82,92,17,92, + 16,92,240,75,143,67,207,67,240,67,16,44,114,44,147,36,212,36,244,36, + 244,36,20,37,212,44,211,68,146,76,49,92,207,99,139,90,229,48,66,24, + 132,24,132,138,72,163,161,105,169,81,112,147,10,106,228,48,37,41,204,82, + 236,82,199,41,195,24,4,33,41,58,138,74,73,66,106,74,171,82,138,74, + 166,49,195,16,4,17,41,50,77,91,17,108,82,116,82,116,50,116,49,116, + 49,116,49,108,50,116,49,116,81,108,49,116,50,116,49,108,49,108,17,108, + 49,108,17,108,17,108,49,108,82,116,211,148,243,164,81,140,113,140,19,165, + 142,115,37,41,178,148,84,173,105,82,196,32,48,132,52,165,81,148,16,132, + 243,156,149,189,52,181,210,164,19,173,19,173,113,148,146,156,243,172,18,173, + 243,172,242,139,144,57,144,8,17,67,178,116,49,108,3,17,108,130,49,108, + 18,108,9,50,108,142,82,108,82,108,50,108,50,108,82,108,82,108,115,116, + 17,108,171,66,228,0,9,34,50,100,147,116,114,108,10,82,108,132,114,116, + 82,108,82,108,114,108,4,115,108,129,115,116,4,115,108,129,82,108,5,115, + 108,148,147,116,49,124,138,74,69,41,101,41,102,41,134,41,134,41,102,41, + 69,41,69,41,101,41,69,41,101,41,101,33,134,41,166,41,167,41,167,41, + 167,49,3,199,41,146,200,49,200,49,200,41,199,41,199,49,167,41,37,33, + 130,16,98,16,130,16,98,16,98,8,98,16,4,25,199,49,167,49,166,49, + 166,41,4,134,41,131,167,41,134,41,134,49,3,134,41,145,102,41,102,41, + 134,41,134,41,102,41,101,41,102,41,101,41,69,33,37,33,4,33,4,25, + 195,24,163,16,130,16,163,16,163,16,3,195,24,140,163,24,163,24,130,16, + 130,16,130,8,195,16,4,17,134,33,199,41,232,49,199,41,199,41,5,167, + 41,134,167,33,167,41,167,41,134,41,135,41,167,33,3,167,41,129,135,41, + 3,134,41,3,134,33,135,102,33,134,33,102,33,102,33,102,41,102,33,101, + 33,3,102,33,3,70,33,135,69,33,101,33,102,33,70,33,69,33,69,33, + 101,33,17,69,33,133,101,33,101,33,69,33,101,33,101,33,3,69,33,129, + 101,33,3,69,33,133,101,41,69,33,69,33,101,41,102,33,8,101,33,180, + 101,41,101,33,101,41,101,33,134,41,69,33,163,16,162,16,163,16,130,16, + 130,16,37,33,102,41,101,41,101,33,102,33,102,41,102,33,134,33,102,41, + 134,41,102,33,4,25,163,16,130,16,98,8,130,16,130,16,163,16,162,16, + 130,16,98,16,163,16,130,16,102,49,203,90,138,82,105,82,203,90,138,82, + 203,90,170,82,138,74,138,82,171,90,203,90,12,99,145,156,84,181,84,181, + 49,124,241,99,6,241,107,133,17,108,241,107,241,107,240,107,240,107,4,208, + 107,164,208,99,208,99,207,99,208,99,208,99,207,99,208,99,175,99,207,99, + 175,99,207,99,208,99,175,99,208,99,208,99,240,107,208,107,208,107,240,99, + 208,107,208,99,208,107,240,99,208,107,240,107,240,107,208,107,208,99,208,99, + 208,107,176,99,207,99,175,99,207,99,175,99,143,99,3,175,99,140,143,99, + 143,99,175,107,78,91,106,66,37,25,0,0,65,0,69,25,236,74,110,99, + 143,99,10,110,91,3,78,91,3,110,91,131,78,91,78,91,110,91,8,78, + 91,130,77,91,78,91,3,45,91,136,78,91,46,91,77,91,46,91,77,91, + 45,91,45,91,46,91,6,45,91,135,13,91,13,91,13,83,13,83,12,83, + 236,90,13,83,3,236,82,132,138,74,171,82,166,49,33,8,3,65,8,140, + 13,83,171,74,139,74,171,74,139,74,139,74,138,74,106,66,106,66,74,66, + 9,58,233,49,139,3,204,239,123,142,115,170,82,231,49,40,66,77,107,178, + 148,15,132,174,115,207,123,174,115,142,107,12,83,236,58,13,43,13,43,78, + 35,110,27,176,19,208,27,50,44,82,28,114,36,147,36,147,44,147,52,179, + 60,114,68,81,68,208,67,236,58,73,50,106,50,171,50,13,35,208,51,240, + 35,82,28,114,20,147,28,212,36,212,36,244,52,179,52,49,36,78,19,204, + 26,233,33,230,105,39,163,227,113,80,139,172,122,103,81,98,16,101,33,236, + 82,235,82,73,66,227,24,227,24,134,41,106,66,8,58,167,49,228,24,163, + 8,134,33,45,91,82,124,82,116,82,116,49,116,49,116,49,108,49,108,4, + 49,116,178,49,108,49,116,49,116,49,108,49,116,49,108,49,108,17,108,17, + 108,82,116,50,108,77,91,101,41,77,107,243,156,81,140,48,132,243,156,174, + 123,196,32,113,140,149,181,69,49,1,8,45,99,243,156,113,148,207,123,49, + 140,52,173,117,189,178,164,178,164,19,181,178,164,113,148,210,164,177,164,210, + 164,115,181,146,156,207,65,112,33,178,91,50,108,49,108,17,108,49,108,17, + 100,17,108,9,50,108,131,82,108,50,108,50,100,3,50,108,136,82,108,147, + 116,49,116,41,58,195,0,172,50,17,100,115,116,7,82,108,129,83,108,3, + 82,108,150,114,108,82,108,83,108,114,108,82,108,115,108,114,108,83,108,114, + 108,83,108,82,108,115,108,115,108,115,116,114,108,83,108,115,108,146,116,48, + 124,40,66,69,33,101,41,3,69,41,3,101,41,143,69,41,69,41,101,41, + 101,41,166,41,9,42,106,50,41,50,200,41,167,41,199,41,200,41,199,41, + 199,41,167,41,3,199,41,145,199,49,199,49,69,33,162,16,130,16,98,8, + 97,8,65,8,33,0,4,25,134,33,167,41,167,41,166,41,166,41,167,41, + 167,41,4,134,41,135,134,33,134,41,134,33,102,33,102,33,102,41,134,41, + 4,102,41,166,134,41,134,41,199,41,199,41,199,49,134,41,69,33,228,24, + 163,24,162,16,163,24,130,16,162,16,163,24,195,24,162,16,162,16,97,8, + 98,8,163,16,5,25,102,33,134,33,167,41,167,41,199,41,167,41,167,33, + 167,41,167,41,167,33,134,41,135,33,167,33,134,33,135,41,134,41,134,41, + 6,134,33,6,102,33,132,101,33,70,33,69,33,101,33,4,69,33,129,101, + 33,22,69,33,129,37,33,10,69,33,162,101,33,69,33,69,33,102,41,69, + 33,102,33,69,33,101,33,69,33,70,33,69,33,102,41,69,33,69,33,70, + 33,69,33,102,41,5,25,130,16,130,16,162,16,130,16,130,16,102,41,102, + 41,102,33,102,41,134,41,102,41,102,41,69,33,36,33,195,24,195,24,3, + 130,16,156,162,16,162,16,163,16,98,16,162,16,195,24,4,33,134,49,227, + 24,0,0,166,49,203,90,138,82,41,74,203,90,138,82,138,82,106,82,170, + 82,106,82,73,74,106,74,170,82,16,140,52,173,84,181,81,132,240,107,4, + 241,107,134,17,116,241,107,17,108,240,107,17,108,241,107,4,240,107,130,208, + 99,208,107,4,208,99,135,208,107,208,107,207,99,208,107,208,99,176,99,176, + 99,3,208,99,134,208,107,240,99,240,107,208,99,240,107,241,107,3,240,107, + 139,208,107,240,107,208,99,240,99,240,107,208,107,208,107,208,99,208,99,176, + 99,176,99,3,175,99,4,143,99,142,175,99,175,107,78,99,41,50,228,24, + 0,0,98,8,167,41,204,74,110,99,143,99,142,91,110,91,110,91,3,78, + 91,139,110,91,78,91,78,99,78,91,110,91,110,91,110,99,110,91,110,91, + 78,91,78,91,3,110,91,131,78,91,110,91,110,91,4,78,91,139,45,91, + 77,91,45,91,45,91,46,91,78,91,77,91,78,99,77,91,13,91,77,91, + 6,45,91,5,13,91,130,13,83,12,83,3,236,82,136,171,82,139,74,199, + 57,33,8,65,8,33,8,65,0,237,74,3,171,74,136,139,74,74,66,74, + 66,106,74,106,66,74,66,73,58,233,49,90,3,184,44,99,73,74,199,49, + 231,57,235,90,239,123,174,123,77,107,109,115,109,107,77,107,12,99,73,58, + 73,50,106,50,138,50,171,50,171,50,78,67,16,92,16,92,16,76,240,51, + 240,27,17,28,49,36,81,44,82,36,49,44,240,43,45,35,138,34,232,33, + 134,33,231,41,41,50,106,42,204,34,45,19,142,19,208,11,49,20,114,28, + 179,36,179,36,211,44,82,44,143,27,203,74,8,139,138,122,14,131,9,106, + 5,49,130,8,167,49,3,203,82,142,69,33,227,32,37,33,134,41,195,24, + 4,25,134,41,203,82,143,99,240,107,240,107,16,108,17,108,17,116,7,49, + 108,178,49,116,49,116,49,108,49,116,49,108,49,108,17,108,49,108,114,116, + 175,99,134,33,98,8,97,16,97,16,203,90,243,156,48,140,48,132,243,156, + 44,107,13,99,243,156,178,156,236,90,204,82,81,132,210,156,146,148,239,131, + 16,132,211,156,84,181,242,172,145,156,242,172,210,164,113,156,178,164,113,156, + 81,148,177,156,50,173,82,148,144,90,240,82,241,99,49,108,49,108,17,108, + 49,108,14,50,108,139,82,108,82,108,50,100,114,108,115,116,175,99,167,25, + 135,17,237,58,115,116,115,116,11,82,108,130,114,108,114,108,5,115,108,130, + 82,108,82,108,6,115,108,138,114,124,81,124,199,49,69,41,101,41,69,41, + 101,41,69,33,69,41,69,33,4,69,41,138,69,33,172,66,111,83,143,83, + 176,91,175,91,236,74,41,50,167,33,167,41,3,199,41,143,167,41,199,41, + 167,41,199,41,231,49,166,49,69,33,195,24,97,8,98,16,97,8,33,0, + 98,8,195,16,101,33,4,167,41,180,135,41,134,41,102,41,102,41,101,33, + 102,41,102,41,102,33,102,41,102,33,102,41,101,41,101,41,101,33,101,33, + 101,41,102,41,134,33,167,41,200,41,232,41,232,41,232,49,200,49,167,41, + 70,33,4,25,227,24,163,16,130,16,130,16,162,16,195,24,195,24,162,16, + 130,16,130,16,162,16,195,16,36,25,69,25,134,33,167,41,199,41,167,41, + 167,41,167,33,167,41,135,33,134,41,135,41,134,41,4,134,33,131,135,33, + 102,33,134,33,3,102,33,133,101,33,102,33,102,33,70,33,70,33,20,69, + 33,130,37,33,37,33,23,69,33,3,101,33,150,69,33,101,33,101,33,69, + 33,69,33,101,33,102,33,102,41,4,25,130,8,130,16,163,16,130,16,195, + 24,102,41,134,41,102,41,69,41,37,33,4,25,195,16,163,16,3,130,16, + 131,163,16,195,16,195,16,3,130,16,159,163,16,134,49,138,82,174,115,170, + 82,8,66,227,32,0,0,134,49,203,90,138,82,40,74,235,90,138,82,138, + 82,171,82,203,90,106,82,106,82,106,74,138,82,15,132,52,173,85,181,82, + 132,208,99,240,107,208,99,208,99,240,99,240,107,3,241,107,130,240,107,241, + 107,4,240,107,3,208,107,134,208,99,208,107,208,107,208,99,208,107,208,107, + 3,208,99,137,176,107,208,107,208,99,208,99,208,107,240,107,208,107,240,107, + 208,107,7,240,107,140,240,99,208,99,208,107,208,99,208,107,208,99,208,107, + 175,99,175,99,176,99,175,99,175,99,6,143,99,141,111,99,204,82,200,49, + 98,8,33,0,195,16,41,58,13,83,110,99,143,99,110,91,110,99,78,91, + 3,110,91,136,78,99,78,91,78,91,110,99,111,99,78,91,110,91,78,91, + 3,110,91,134,78,91,110,91,110,91,78,91,110,99,110,99,5,78,91,135, + 77,91,77,91,78,91,77,91,78,91,78,91,45,91,3,77,91,7,45,91, + 138,13,91,13,91,12,91,13,91,13,91,236,82,13,83,204,82,138,74,199, + 57,3,65,8,130,32,0,236,74,3,171,74,136,139,74,106,74,106,66,138, + 66,106,66,106,66,74,66,9,50,158,3,209,7,66,134,41,166,41,105,74, + 76,99,44,107,202,90,235,98,235,98,235,90,202,90,73,66,199,41,199,41, + 232,49,40,58,41,58,203,82,206,115,206,115,238,115,239,107,44,75,12,35, + 110,35,142,27,175,27,207,27,240,27,240,27,175,35,142,27,12,35,40,34, + 166,33,69,33,133,33,167,33,8,26,41,18,138,18,203,18,110,19,207,27, + 49,28,114,36,146,36,114,44,240,51,141,83,12,99,203,114,70,65,227,32, + 195,24,231,57,203,82,170,74,105,74,101,33,228,32,36,33,68,33,8,58, + 105,74,138,74,236,82,77,91,142,99,207,99,208,99,208,107,240,107,240,107, + 16,108,240,107,16,108,16,108,240,107,16,108,240,107,5,17,108,159,240,107, + 82,116,204,74,195,16,65,8,130,16,97,16,33,8,99,16,205,90,243,156, + 16,132,16,132,146,148,174,115,207,115,19,165,146,148,49,116,208,107,49,124, + 210,156,146,148,16,132,239,131,178,148,84,173,51,181,113,148,178,164,243,172, + 4,145,156,137,80,148,80,148,210,164,82,148,79,107,209,99,17,100,17,100, + 49,108,6,50,108,149,82,108,83,108,82,108,82,108,114,108,82,108,50,108, + 82,100,82,108,82,108,50,108,82,108,82,108,115,116,82,116,13,83,70,25, + 135,17,208,83,147,116,147,108,7,82,108,129,83,108,3,82,108,133,115,108, + 114,108,82,108,115,108,115,108,3,82,108,143,114,108,115,108,115,108,115,116, + 82,108,81,116,113,132,134,41,69,41,101,41,69,41,101,33,101,33,101,41, + 69,41,5,69,33,211,208,91,147,116,115,116,115,108,147,108,180,116,114,116, + 208,99,106,58,167,41,134,41,199,41,167,41,199,41,200,41,167,41,167,41, + 167,49,200,49,199,49,101,41,130,16,65,8,98,8,97,8,65,8,97,8, + 163,16,69,33,231,49,167,41,134,41,102,41,134,41,102,41,102,33,102,33, + 101,33,69,33,102,33,101,33,102,41,102,33,101,33,70,33,101,33,101,33, + 102,41,134,33,167,41,200,41,200,33,200,41,199,41,200,41,199,49,200,41, + 199,41,199,41,135,41,102,33,4,33,130,16,97,8,65,8,130,16,130,16, + 162,16,163,16,162,16,130,16,130,16,163,16,163,16,228,24,37,25,102,25, + 167,33,167,41,199,41,167,41,167,41,135,33,5,134,33,130,102,33,134,33, + 4,102,33,134,69,33,70,33,102,33,69,33,102,33,101,33,3,69,33,129, + 102,33,7,69,33,129,101,33,7,69,33,133,101,33,69,33,69,33,101,33, + 70,33,9,69,33,129,70,33,4,69,33,137,101,33,102,33,69,33,69,33, + 101,41,69,33,101,41,69,33,70,33,3,101,33,140,102,41,102,33,102,41, + 4,25,131,8,162,16,163,16,130,16,195,24,4,33,228,24,163,16,4,130, + 16,169,162,16,162,16,163,16,162,16,162,16,130,16,98,16,130,16,195,24, + 4,33,101,41,69,33,73,74,142,115,239,123,138,82,8,66,4,33,0,0, + 69,41,203,90,170,82,8,66,203,90,171,90,203,90,203,90,236,90,171,82, + 171,82,74,74,138,82,207,131,84,181,84,181,114,132,208,99,208,107,176,91, + 144,91,208,91,3,241,107,7,240,107,134,208,107,240,107,208,107,208,107,207, + 99,208,99,4,208,107,131,208,99,208,99,208,107,3,208,99,132,208,107,208, + 107,240,107,208,107,7,240,107,131,208,107,208,107,240,107,3,208,107,3,208, + 99,3,175,99,130,143,99,175,99,6,143,99,164,175,99,78,99,106,74,69, + 33,65,0,33,0,5,25,73,58,78,91,143,99,143,99,110,99,110,99,110, + 91,78,99,110,91,78,91,110,99,110,91,78,91,110,91,110,99,78,91,110, + 91,110,91,110,99,110,91,110,91,110,99,110,91,110,99,110,91,78,91,78, + 91,78,99,78,99,3,78,91,129,77,91,3,78,91,133,77,91,45,91,77, + 99,77,99,77,91,7,45,91,142,13,91,45,91,13,83,12,91,12,91,237, + 90,236,90,170,82,199,49,65,8,98,8,65,8,32,0,236,74,4,171,74, + 135,139,74,138,74,138,74,139,74,106,66,42,66,9,50,164,3,139,100,41, + 100,41,165,49,40,66,40,74,230,65,7,66,7,66,6,66,39,66,230,57, + 4,133,41,143,198,49,72,74,234,90,169,90,202,90,11,99,72,74,7,58, + 137,66,169,66,104,42,138,34,170,26,202,26,235,34,3,44,35,176,235,34, + 137,34,231,41,133,33,165,33,166,33,165,33,133,33,133,33,198,25,40,26, + 170,26,44,27,110,27,174,35,239,43,207,43,207,67,170,66,133,41,35,33, + 36,33,198,49,198,49,68,33,3,33,166,41,100,41,68,33,68,41,7,58, + 40,66,73,66,170,74,12,91,44,91,77,91,109,99,110,91,110,91,142,99, + 110,91,110,91,142,91,142,91,110,99,110,91,142,91,4,110,91,181,142,99, + 175,99,199,49,129,16,226,24,227,24,195,24,196,24,8,25,41,33,134,16, + 236,90,80,140,206,123,207,123,48,132,77,107,13,99,113,140,238,123,175,91, + 175,99,207,107,113,148,113,140,16,132,174,123,239,123,178,156,242,164,80,148, + 80,148,178,164,112,156,112,148,80,148,112,148,80,148,206,131,15,140,112,148, + 239,131,240,115,208,91,208,91,208,99,208,91,208,91,175,91,176,91,175,91, + 143,91,143,91,3,110,83,152,143,91,143,91,175,91,208,91,208,91,241,99, + 17,100,49,100,50,108,82,108,147,116,147,124,204,74,37,17,199,25,110,83, + 49,100,82,108,82,108,50,100,50,108,82,108,82,108,50,108,10,82,108,139, + 114,108,82,108,82,108,49,100,208,91,143,75,16,108,239,115,37,33,69,41, + 101,41,5,69,41,176,69,33,69,41,69,33,37,33,101,33,49,100,147,108, + 114,108,114,108,115,116,115,108,115,100,148,100,181,100,50,84,238,34,9,34, + 232,41,199,41,167,41,199,41,199,49,199,49,199,41,200,49,232,49,8,50, + 167,41,195,24,130,16,97,8,98,16,97,8,33,8,98,8,37,25,102,33, + 134,41,102,33,69,33,69,33,70,33,101,33,102,33,101,33,101,33,102,33, + 102,33,4,69,33,136,102,33,134,33,167,33,167,41,200,41,168,41,168,33, + 199,41,5,167,41,151,199,41,199,41,199,49,199,49,134,33,4,25,163,16, + 98,8,97,8,97,8,130,16,130,16,163,16,163,16,130,16,130,16,130,8, + 130,16,163,8,195,16,228,24,37,25,69,33,3,102,33,132,134,33,134,33, + 102,33,134,33,6,102,33,7,69,33,4,37,33,129,37,25,5,4,25,138, + 228,24,228,24,227,24,228,16,228,16,227,24,196,16,227,16,227,16,195,16, + 4,228,24,130,4,25,228,24,5,4,25,132,5,33,37,33,4,25,36,25, + 3,37,33,135,36,33,37,33,37,33,36,33,36,33,37,33,36,33,3,4, + 25,150,228,24,227,24,130,16,130,16,163,16,162,16,130,16,65,8,65,8, + 98,8,130,16,163,16,163,24,162,16,163,16,130,16,130,16,98,16,162,16, + 195,24,228,32,69,33,4,134,41,158,70,33,138,74,109,107,16,124,138,82, + 8,66,36,33,0,0,69,41,171,90,170,82,232,57,12,99,171,90,138,82, + 170,82,109,107,203,90,138,74,138,74,171,82,175,123,52,173,52,173,114,140, + 208,99,241,107,208,99,208,99,240,99,4,241,107,129,17,108,4,240,107,136, + 241,107,240,107,208,107,208,107,176,107,208,107,208,107,208,99,3,208,107,134, + 208,99,208,99,208,107,208,99,176,99,208,99,3,208,107,8,240,107,134,208, + 107,208,107,240,107,208,107,208,107,208,99,3,176,107,131,175,99,175,99,176, + 99,3,175,99,130,143,99,175,99,5,143,99,143,175,107,110,99,171,74,38, + 25,65,0,0,0,228,16,8,58,236,82,110,99,142,99,110,99,110,99,110, + 91,78,91,3,110,91,135,78,91,110,99,78,99,110,91,110,99,111,99,110, + 91,6,110,99,135,110,91,78,99,78,99,78,91,78,99,78,99,46,99,4, + 78,99,136,77,91,78,91,45,91,78,91,77,91,77,91,45,91,45,99,3, + 45,91,143,13,91,13,91,45,91,13,91,13,83,13,83,13,91,171,82,8, + 66,98,16,98,8,65,8,0,0,204,74,204,74,5,171,74,133,139,74,139, + 74,106,66,74,66,9,58,97,3,140,68,33,100,41,132,41,132,49,100,41, + 133,41,132,49,132,49,133,49,133,41,100,41,100,33,3,100,41,184,165,49, + 230,57,197,57,197,57,6,66,197,57,132,49,197,49,6,58,165,49,165,41, + 229,41,230,41,230,33,6,34,39,42,39,42,72,42,104,42,72,42,39,42, + 229,41,165,41,133,41,132,33,132,41,100,33,100,33,132,41,165,33,230,33, + 72,34,137,34,170,34,235,42,11,43,234,42,104,34,198,41,100,41,100,33, + 132,41,198,49,7,58,39,58,230,49,100,41,132,41,132,41,230,57,231,57, + 8,58,72,66,41,66,73,66,41,58,3,9,58,129,9,50,3,233,49,5, + 201,49,165,201,41,201,41,201,49,134,41,227,24,36,33,35,33,36,33,38, + 33,71,33,70,33,36,33,4,25,200,49,172,82,207,115,109,107,141,115,206, + 115,106,82,12,99,238,123,12,91,107,66,108,66,172,82,206,123,15,132,206, + 123,141,115,77,107,16,132,145,148,15,140,15,132,80,148,79,148,3,15,140, + 141,15,132,206,123,173,123,206,123,238,131,141,107,231,49,133,33,133,41,101, + 33,68,33,36,25,36,25,3,3,25,152,227,16,227,24,3,25,3,25,36, + 25,68,25,101,33,134,33,199,41,8,50,105,50,235,66,77,75,175,91,49, + 108,16,108,236,82,199,41,8,42,236,66,17,100,49,100,17,100,16,100,5, + 17,100,129,49,100,3,17,100,140,49,100,49,108,49,100,17,100,208,91,143, + 83,45,75,204,58,139,50,207,99,174,107,69,33,10,134,41,148,101,41,199, + 41,50,92,50,84,17,68,241,67,209,51,209,35,177,35,145,35,144,27,177, + 35,209,43,176,59,110,83,12,83,73,66,8,50,8,50,41,58,4,40,58, + 140,41,58,232,49,134,41,37,33,227,24,195,24,195,24,163,16,162,16,195, + 24,37,33,101,41,3,166,41,134,135,41,166,41,166,41,167,41,167,41,166, + 41,3,134,41,142,166,41,167,41,200,41,232,41,232,41,232,49,233,49,8, + 50,232,41,232,41,200,41,232,41,199,41,200,41,3,199,41,141,200,41,199, + 41,232,41,231,49,167,41,101,33,36,33,228,24,163,24,130,16,130,16,162, + 16,163,16,5,195,24,131,163,16,163,16,162,16,4,195,16,131,227,16,228, + 24,228,16,5,228,24,140,228,16,228,24,228,24,195,16,195,16,163,16,195, + 16,162,16,162,16,163,16,162,16,162,16,6,130,16,139,162,16,130,16,162, + 16,162,16,163,16,162,16,162,16,163,16,162,16,163,16,163,16,3,130,16, + 4,130,8,3,98,8,131,130,8,130,16,130,8,3,130,16,129,130,8,3, + 130,16,3,130,8,4,98,8,138,130,16,162,16,163,16,130,16,163,16,130, + 16,162,16,162,16,163,16,162,16,3,130,16,133,163,16,195,24,4,33,37, + 33,101,41,3,134,41,158,102,41,134,41,102,41,134,41,69,33,73,74,109, + 107,240,123,171,82,40,66,69,41,0,0,36,33,171,82,170,82,232,65,235, + 90,138,82,138,82,171,82,12,91,171,82,138,74,138,74,138,82,174,123,52, + 173,52,173,114,140,208,99,10,241,107,5,240,107,12,208,107,131,208,99,208, + 107,175,99,3,208,107,10,240,107,5,208,107,130,176,107,208,107,5,175,99, + 130,143,99,175,99,7,143,99,142,175,99,143,99,45,91,106,66,70,33,97, + 0,65,0,195,16,8,50,204,82,110,91,143,99,110,99,110,99,5,110,91, + 144,110,99,110,91,110,91,110,99,110,91,110,99,110,99,111,99,110,99,110, + 99,110,91,110,99,110,99,78,99,110,99,110,99,3,78,99,3,110,99,133, + 78,91,78,91,77,91,78,99,77,99,4,77,91,5,45,91,4,13,91,137, + 204,82,73,74,130,16,98,8,66,8,0,0,74,58,204,82,171,82,4,171, + 74,133,139,74,138,74,106,74,74,66,9,58,108,3,132,67,33,67,41,67, + 41,67,33,3,68,41,143,100,41,67,33,100,33,99,33,67,33,100,33,68, + 33,99,33,99,41,100,41,67,41,99,41,99,41,67,41,100,41,6,99,41, + 133,99,33,100,33,131,33,131,41,132,41,4,164,41,147,132,41,132,41,100, + 41,100,41,99,41,99,33,100,41,99,33,100,41,132,41,132,41,197,33,197, + 33,230,33,6,42,6,42,229,41,165,41,165,41,3,197,49,131,165,49,165, + 49,164,41,3,132,41,141,101,41,101,41,133,41,133,41,134,41,166,41,166, + 41,198,49,231,49,231,49,7,58,8,58,8,58,3,40,58,171,72,66,40, + 66,72,66,105,66,198,49,100,41,100,41,132,41,165,41,134,41,166,41,165, + 41,100,41,133,41,200,49,169,49,135,49,40,66,44,99,202,90,235,90,11, + 99,105,74,11,91,43,99,7,58,199,41,138,74,11,91,108,107,141,107,141, + 107,76,99,235,90,109,107,238,131,173,123,141,115,206,123,238,123,205,123,173, + 115,205,123,3,141,115,135,108,107,141,115,75,107,38,58,132,41,132,41,164, + 41,11,132,41,130,100,41,100,41,3,100,33,148,100,41,133,41,166,41,7, + 58,105,66,44,83,174,99,44,83,7,50,166,33,138,66,142,91,16,100,240, + 99,240,99,207,91,207,99,208,91,207,91,207,91,3,240,91,139,207,91,142, + 83,77,83,236,74,138,58,73,50,73,42,203,66,142,107,11,91,133,41,11, + 198,49,173,232,41,79,27,79,27,79,35,111,43,143,51,175,67,208,75,240, + 83,17,100,49,108,49,108,81,108,49,108,49,108,16,116,109,99,235,82,138, + 66,137,66,138,66,137,66,137,66,105,66,41,58,40,58,41,58,7,58,198, + 49,101,41,69,33,69,33,68,33,68,33,101,33,133,41,231,49,8,50,40, + 58,8,58,40,58,8,58,40,58,8,58,8,50,3,8,58,137,40,58,73, + 58,105,58,106,58,106,58,105,66,73,66,73,58,73,58,4,41,58,130,40, + 58,40,50,5,8,50,137,232,49,8,50,8,50,231,49,231,49,199,49,134, + 41,68,33,4,25,4,195,24,3,4,33,133,3,25,227,24,227,24,3,25, + 3,25,8,227,24,159,3,25,36,33,3,25,3,25,228,24,3,33,3,25, + 228,24,227,24,3,25,3,25,227,24,4,33,4,33,227,24,227,24,228,24, + 227,24,228,24,4,25,227,24,4,25,228,24,4,33,4,25,3,25,227,24, + 195,24,227,24,195,16,195,16,3,195,24,129,163,16,5,130,16,143,162,16, + 130,16,130,16,163,16,130,16,162,16,162,16,130,16,130,16,163,16,162,16, + 162,16,130,16,130,8,130,16,3,162,16,4,130,16,141,98,16,130,16,162, + 16,195,16,228,32,5,33,69,33,102,41,102,41,134,41,134,41,102,41,134, + 41,4,102,41,162,134,41,134,41,69,33,73,74,142,115,240,123,170,82,73, + 74,101,41,32,0,4,33,170,82,203,82,199,57,203,90,170,82,138,82,171, + 90,235,90,204,90,138,82,106,74,138,82,142,115,20,173,52,173,114,140,208, + 107,241,107,241,107,240,107,241,107,241,107,240,107,3,241,107,3,240,107,6, + 208,107,129,208,99,7,208,107,132,176,107,208,107,208,107,175,99,3,208,107, + 131,240,107,240,107,208,107,7,240,107,5,208,107,129,176,99,5,175,99,3, + 143,99,129,175,99,7,143,99,144,175,99,143,99,143,99,45,91,73,66,69, + 33,65,8,32,0,195,8,232,49,236,82,111,99,143,99,142,99,110,91,110, + 91,4,110,99,129,143,99,3,110,99,130,110,91,143,99,3,110,99,129,142, + 99,9,110,99,138,78,99,77,91,78,91,78,99,77,99,78,99,45,91,77, + 99,45,91,77,91,6,45,91,3,13,91,146,236,90,170,82,195,24,65,8, + 65,8,0,0,167,33,12,83,171,74,171,82,171,74,171,74,139,74,106,66, + 139,66,106,74,74,66,41,58,145,3,129,66,33,14,67,33,131,68,33,67, + 33,68,33,7,67,33,142,66,33,67,33,67,33,66,33,66,33,67,33,98, + 33,98,41,66,33,99,41,67,33,67,41,99,33,98,33,3,99,33,146,98, + 41,99,33,67,33,99,41,67,33,99,33,99,33,67,33,99,33,99,33,99, + 41,99,33,131,33,99,41,100,33,131,33,131,41,100,33,4,131,41,133,132, + 41,131,41,132,41,131,41,131,41,3,132,41,6,164,49,175,165,49,165,49, + 164,49,165,49,197,49,197,49,164,49,132,41,164,41,164,41,197,49,165,49, + 197,49,164,49,132,41,197,41,166,49,133,41,197,49,6,58,197,49,197,49, + 6,66,230,57,7,66,38,66,38,66,135,74,168,74,38,58,5,50,6,50, + 229,49,136,74,169,74,169,82,168,74,135,74,233,82,74,99,42,91,9,91, + 42,99,75,107,74,99,42,99,74,99,4,10,91,134,10,99,74,99,200,74, + 70,58,70,58,102,58,3,70,58,129,69,58,3,70,58,173,69,58,70,58, + 38,58,38,58,37,58,37,58,38,58,37,58,37,58,5,58,5,58,229,49, + 229,49,196,49,229,49,72,58,234,82,234,82,6,50,165,41,198,49,39,58, + 170,74,44,83,11,83,11,75,76,83,44,83,44,83,236,74,203,74,170,66, + 72,58,40,50,7,50,72,50,203,66,77,83,109,83,11,83,137,66,197,41, + 230,49,230,49,198,49,4,230,49,129,6,50,3,230,49,134,105,58,174,91, + 174,99,174,99,239,99,207,99,3,239,99,158,207,91,239,91,239,91,240,91, + 207,99,207,99,174,99,174,107,238,107,202,82,72,58,137,66,137,66,169,74, + 137,66,105,58,105,66,104,58,105,66,104,66,104,66,71,58,7,50,6,50, + 230,49,7,50,230,49,230,49,7,50,71,58,7,137,66,136,169,66,137,66, + 137,66,169,66,202,66,170,74,202,74,202,74,3,170,74,144,169,66,170,66, + 169,66,137,66,169,66,137,66,169,66,137,66,137,66,105,58,104,58,104,58, + 105,58,104,58,105,58,72,58,3,104,58,135,104,66,72,58,39,58,7,50, + 230,41,165,41,165,41,3,133,41,132,132,41,133,41,133,41,132,41,3,133, + 41,129,132,41,5,133,41,144,132,41,133,41,133,41,101,41,100,33,68,33, + 100,33,100,33,101,41,133,41,133,41,165,41,133,41,132,41,132,41,133,33, + 4,133,41,145,132,41,133,41,133,41,101,33,100,33,68,33,35,33,36,33, + 68,33,36,33,36,33,4,25,227,24,195,24,162,16,162,16,98,8,6,130, + 16,149,98,8,98,8,98,16,130,16,98,16,130,8,98,16,98,8,97,8, + 130,16,162,16,163,16,163,16,228,24,228,24,36,33,69,33,101,33,101,33, + 102,41,134,41,10,102,41,161,134,41,134,41,102,41,134,41,134,41,102,41, + 8,66,141,107,16,124,170,82,73,74,166,49,32,0,227,24,170,82,203,82, + 199,57,203,90,138,82,171,90,138,74,106,66,41,66,105,74,171,90,138,74, + 110,115,19,165,52,173,146,148,208,99,240,107,241,107,3,240,107,129,16,108, + 5,240,107,134,209,107,240,107,240,107,208,107,240,107,208,107,3,208,99,133, + 208,107,208,99,208,107,208,107,208,99,4,208,107,135,207,107,208,107,208,107, + 240,107,208,107,240,107,208,107,3,240,107,129,208,107,5,240,107,3,208,107, + 132,175,99,208,99,176,99,176,99,4,175,99,135,143,99,175,99,143,99,143, + 99,175,99,143,99,175,99,3,143,99,154,111,99,143,99,143,99,175,107,110, + 99,204,74,135,41,131,8,0,0,98,8,102,33,106,66,78,99,110,99,142, + 99,110,99,142,99,110,99,142,99,111,99,110,99,111,99,143,99,111,99,142, + 99,142,99,9,110,99,129,142,99,3,110,99,132,78,91,77,99,110,99,109, + 99,4,78,99,156,77,91,77,91,45,91,45,91,45,99,45,91,45,91,13, + 91,45,91,13,91,13,91,204,82,69,41,33,8,97,8,33,8,196,16,236, + 82,172,82,204,82,171,82,171,74,107,74,106,66,139,74,107,66,106,66,41, + 58,42,3,16,67,33,4,68,33,130,67,33,68,33,3,67,33,130,66,33, + 67,33,4,66,33,132,98,33,66,33,66,33,67,33,5,66,33,129,98,33, + 11,66,33,130,67,33,66,33,4,99,33,132,99,41,99,33,99,33,99,41, + 3,99,33,140,131,33,99,41,99,33,98,41,99,41,98,41,98,41,99,41, + 99,41,131,41,131,41,164,41,3,163,41,129,132,41,9,164,41,130,164,49, + 196,41,7,164,41,129,165,49,4,164,49,147,228,57,69,66,102,66,70,66, + 38,58,38,58,5,50,5,50,38,58,38,58,70,66,102,66,134,66,199,82, + 200,82,199,74,200,82,8,83,8,83,3,232,82,138,200,74,200,74,200,82, + 200,82,199,74,200,74,167,66,135,66,167,66,134,66,4,167,66,134,166,66, + 135,66,166,66,167,66,166,66,135,66,7,134,66,166,102,58,70,58,69,58, + 70,58,69,58,38,58,71,58,136,66,136,66,37,58,5,50,229,49,38,58, + 38,58,229,49,136,66,137,66,104,58,40,58,39,50,39,50,7,50,39,50, + 72,50,137,58,169,58,137,50,137,58,137,66,39,58,229,41,230,49,230,41, + 6,50,230,49,230,49,6,50,230,49,3,6,50,138,230,49,104,58,44,83, + 44,75,44,75,44,83,44,83,76,83,76,83,109,83,3,77,83,140,109,83, + 109,83,76,83,44,83,44,91,169,66,230,41,6,50,7,50,7,50,169,74, + 202,74,5,72,58,141,40,58,104,58,71,58,39,58,7,50,39,50,7,50, + 39,50,39,50,39,58,71,58,72,58,104,58,6,137,66,3,169,66,129,201, + 66,8,169,66,135,137,58,169,66,136,66,137,58,136,66,137,66,136,58,7, + 104,58,3,72,58,140,71,58,39,50,71,50,71,58,71,58,71,50,39,50, + 7,50,6,50,230,41,6,50,230,41,3,230,49,133,230,41,230,49,6,50, + 230,41,230,41,3,6,50,7,230,49,140,6,50,6,50,39,50,6,50,39, + 50,39,50,7,50,39,50,39,50,39,58,7,58,39,50,3,39,58,142,7, + 50,7,50,6,50,230,49,230,49,6,50,230,49,230,41,198,41,198,49,166, + 41,101,33,69,33,69,33,8,37,33,134,36,33,37,33,37,33,69,33,69, + 33,4,25,4,130,16,141,4,33,101,33,101,33,102,41,102,33,69,33,101, + 33,69,33,102,33,102,33,69,33,102,41,101,33,5,102,41,174,102,33,102, + 41,134,41,102,41,134,41,134,41,102,41,232,65,77,107,16,132,171,82,41, + 66,134,49,32,0,228,24,138,74,203,82,199,57,171,90,171,90,203,90,138, + 74,204,74,41,58,8,58,171,82,138,74,77,107,243,164,52,173,146,148,208, + 107,240,107,241,107,240,107,240,107,17,108,241,107,240,107,241,107,240,107,241, + 107,240,107,240,107,208,107,240,107,4,208,107,129,208,99,7,208,107,135,208, + 99,208,107,208,107,208,99,176,107,208,107,208,107,12,240,107,3,208,107,132, + 175,107,207,107,176,99,176,99,8,175,99,132,143,99,175,99,143,99,175,99, + 4,143,99,129,110,99,3,143,99,155,78,99,171,74,167,49,130,16,33,0, + 98,0,167,41,171,74,78,91,143,107,143,99,142,99,143,99,143,99,111,99, + 110,99,111,99,143,99,142,99,143,99,111,99,110,99,142,107,110,99,110,99, + 142,99,110,99,3,142,99,4,110,99,132,78,99,78,99,110,99,110,99,4, + 78,99,134,77,99,45,99,77,99,77,99,45,91,45,99,3,45,91,139,13, + 91,12,91,199,57,33,8,98,8,65,8,130,8,204,74,204,82,171,74,204, + 82,4,171,74,131,138,74,106,74,41,58,17,3,135,67,33,67,33,99,33, + 67,33,68,41,68,33,68,33,7,67,33,137,100,33,67,33,68,33,68,33, + 67,33,68,33,67,33,68,33,99,33,5,67,33,27,66,33,130,98,33,98, + 33,5,99,33,129,131,41,3,99,41,4,99,33,4,99,41,135,131,41,131, + 41,163,41,164,49,196,41,196,49,164,41,10,196,49,3,228,49,130,196,49, + 196,49,3,164,41,139,196,49,196,41,196,49,196,41,164,41,227,49,69,58, + 101,58,102,66,101,58,101,58,3,69,58,139,37,58,37,58,69,58,134,66, + 166,74,166,74,199,74,231,74,231,82,231,74,231,82,4,231,74,132,199,74, + 199,74,167,74,167,74,4,166,66,130,166,74,166,74,4,167,74,131,166,66, + 199,74,167,74,5,166,66,132,134,66,166,74,166,66,134,66,3,102,58,130, + 101,58,69,66,4,37,58,130,38,58,38,58,3,70,58,147,38,50,6,50, + 229,41,230,41,229,41,229,41,230,41,230,41,6,42,230,41,229,41,6,42, + 6,50,6,58,230,49,5,42,5,42,229,49,229,41,5,6,50,135,38,50, + 38,50,6,50,39,50,104,66,104,58,137,66,4,169,66,129,170,74,3,169, + 74,142,202,66,170,74,169,66,105,66,169,66,39,58,7,50,39,58,7,50, + 39,50,136,66,202,74,7,50,39,50,3,39,58,138,39,50,39,58,39,50, + 39,50,39,58,39,50,7,50,39,50,39,50,71,58,3,39,58,142,72,58, + 72,58,104,58,136,58,104,58,104,58,136,66,104,66,136,58,136,58,104,58, + 104,58,136,58,136,58,3,104,58,3,72,58,132,71,58,71,50,71,58,39, + 58,6,39,50,133,6,50,7,50,7,50,6,42,7,50,4,230,41,129,229, + 41,4,230,41,129,198,41,3,230,41,132,198,41,230,41,229,41,197,41,3, + 230,41,132,229,41,197,41,230,41,230,41,3,230,49,140,230,41,231,49,231, + 49,230,41,230,49,230,49,230,41,230,41,230,49,230,41,230,41,230,49,7, + 6,50,132,230,49,6,50,230,49,230,49,3,6,50,134,230,49,230,49,198, + 49,166,41,133,41,101,33,11,69,33,131,102,41,5,25,163,16,3,130,16, + 129,4,33,3,69,33,174,101,33,69,33,102,41,69,33,69,33,102,41,69, + 33,102,41,102,41,102,33,102,33,102,41,102,41,102,33,102,41,134,41,134, + 41,102,41,134,41,102,41,134,41,101,41,232,57,142,115,48,132,203,90,199, + 57,101,41,33,0,227,24,106,74,203,82,199,57,170,90,12,99,12,99,138, + 74,5,25,102,33,73,66,73,66,171,90,77,107,243,164,20,173,178,148,5, + 240,107,4,241,107,136,240,107,240,107,241,107,208,107,240,107,240,107,208,107, + 240,107,3,208,107,129,208,99,3,208,107,129,208,99,5,208,107,131,207,99, + 207,99,176,99,3,208,107,10,240,107,4,208,107,131,207,107,207,107,176,99, + 4,175,99,130,175,107,143,99,5,175,99,129,143,107,3,143,99,129,143,107, + 3,143,99,144,142,99,143,99,143,107,78,99,139,74,167,41,130,8,0,0, + 130,8,134,41,13,75,143,99,175,107,143,107,143,99,110,99,4,143,99,140, + 142,99,110,99,142,99,143,99,142,99,143,99,142,99,142,99,143,99,143,99, + 110,99,142,99,6,110,99,5,78,99,4,77,99,130,45,99,45,99,4,45, + 91,145,12,91,73,74,33,8,98,8,65,8,65,8,106,58,236,82,203,82, + 171,82,204,82,171,82,171,74,171,74,138,74,106,66,41,66,86,3,131,68, + 33,68,33,100,33,3,68,33,129,100,33,3,68,33,144,67,33,99,33,67, + 33,100,33,67,33,68,33,100,33,68,33,68,33,100,33,100,33,68,33,68, + 33,100,33,100,33,99,33,12,67,33,132,66,33,67,33,67,33,34,33,4, + 66,33,129,67,33,7,66,33,146,67,33,66,33,66,33,67,33,99,33,131, + 41,131,41,99,33,131,33,131,41,131,41,99,33,131,41,131,33,131,41,99, + 33,131,41,99,41,4,131,41,130,163,41,163,49,6,196,49,132,195,49,196, + 49,196,49,196,41,3,196,49,6,228,49,157,196,41,196,41,163,41,196,41, + 195,41,196,41,196,49,228,49,36,58,69,58,101,58,166,66,166,74,199,74, + 198,66,198,66,166,66,166,66,166,74,198,74,230,74,230,74,231,74,230,74, + 231,74,7,83,231,74,7,75,7,75,3,231,74,132,199,74,199,74,167,74, + 199,74,3,166,66,137,166,74,166,74,166,66,166,66,166,74,134,66,166,74, + 166,74,166,66,4,134,66,155,102,66,101,66,134,66,166,66,101,66,102,66, + 133,66,101,66,102,58,37,58,5,58,37,58,5,50,37,58,4,50,5,50, + 5,58,37,58,37,58,5,50,196,41,164,41,132,41,132,33,164,33,164,41, + 164,33,3,164,41,130,196,41,164,41,3,197,41,145,196,41,196,33,229,41, + 197,41,197,41,229,41,229,41,229,49,5,50,229,41,229,41,5,50,229,49, + 5,50,6,50,6,50,5,50,3,6,50,132,38,50,38,58,6,50,39,58, + 8,6,50,3,230,49,130,198,49,198,49,3,230,49,133,197,41,197,49,197, + 49,230,41,6,50,3,230,49,141,6,50,6,50,7,50,39,50,7,50,39, + 50,39,58,39,50,39,50,39,58,39,50,39,58,39,58,4,39,50,4,7, + 50,131,6,50,6,50,230,49,3,230,41,133,198,41,230,49,197,41,229,41, + 197,41,3,165,41,138,197,41,165,41,165,33,165,41,165,33,165,33,132,33, + 132,33,133,41,100,33,7,132,33,129,100,33,7,132,33,134,100,33,132,41, + 132,33,133,33,165,33,165,41,4,198,41,135,166,41,198,41,165,41,165,33, + 132,41,132,33,165,33,3,165,41,141,197,41,197,41,230,49,230,49,229,49, + 197,41,197,41,165,41,132,33,165,41,165,41,197,41,198,41,3,230,49,133, + 198,49,166,49,133,41,101,33,37,33,4,69,33,140,37,33,69,33,37,33, + 69,33,69,41,4,25,130,8,130,16,195,16,130,16,228,32,101,41,11,69, + 33,137,70,41,102,41,102,33,102,41,102,41,102,33,102,41,102,41,102,33, + 3,134,41,171,102,41,101,41,167,49,142,115,16,132,235,90,69,41,4,33, + 65,8,195,24,106,74,203,82,199,49,138,82,80,148,239,139,36,33,0,0, + 33,0,134,41,138,82,203,90,12,99,210,156,52,173,178,156,240,107,241,107, + 241,107,17,108,241,107,17,108,241,107,17,108,17,108,240,107,240,107,209,107, + 241,107,240,107,240,107,208,107,240,107,4,208,107,129,208,99,5,208,107,129, + 176,107,3,208,107,129,176,99,7,208,107,8,240,107,5,208,107,134,175,99, + 207,107,176,99,176,99,175,99,143,107,4,175,99,130,143,99,175,99,6,143, + 99,152,142,99,142,107,142,99,143,99,143,99,142,99,175,107,143,107,237,82, + 199,49,163,16,0,0,98,8,167,41,204,82,143,107,175,107,142,99,143,99, + 142,99,143,99,143,99,143,107,143,107,3,143,99,136,142,99,142,99,142,107, + 143,107,142,107,143,99,142,99,142,99,9,110,99,156,78,99,78,91,77,99, + 78,99,78,99,77,99,77,91,45,91,45,99,45,91,45,91,13,91,236,90, + 98,16,65,8,97,8,33,8,200,41,237,82,172,82,204,82,204,74,171,82, + 171,74,106,74,106,66,138,74,41,58,245,2,3,68,33,3,36,33,138,68, + 33,36,33,35,33,36,33,68,33,35,33,36,33,67,33,67,33,36,33,8, + 68,33,131,100,33,68,33,68,33,7,67,33,129,99,33,14,67,33,130,99, + 33,99,33,6,67,33,131,99,33,99,33,99,41,9,131,41,129,132,41,4, + 131,41,137,132,41,132,41,163,41,164,41,163,49,196,41,195,41,196,41,196, + 41,3,164,41,129,163,41,3,164,41,149,163,41,196,41,164,41,164,41,163, + 41,164,41,163,41,163,41,131,41,131,41,163,41,163,41,164,41,196,41,228, + 49,4,50,36,58,69,58,101,58,134,66,166,66,4,198,66,134,198,74,231, + 74,230,74,231,74,231,74,230,74,5,231,74,131,7,75,231,74,7,75,5, + 231,74,132,230,74,230,74,231,74,231,74,5,199,74,131,198,74,198,74,166, + 74,4,166,66,150,134,66,134,66,166,74,166,66,134,66,166,66,166,66,134, + 66,69,58,69,58,37,58,37,58,37,50,37,50,4,50,4,58,4,50,5, + 50,228,49,164,41,131,33,131,33,7,132,33,131,164,33,164,41,164,33,5, + 164,41,4,196,41,5,197,41,3,229,41,139,229,49,229,49,229,41,197,41, + 229,41,197,41,229,49,229,41,197,41,197,41,197,49,6,164,41,3,132,41, + 135,132,33,132,41,132,41,100,33,132,33,132,33,100,33,3,132,33,132,132, + 41,132,33,164,41,133,41,3,164,41,134,165,41,164,41,165,41,197,41,165, + 41,197,41,11,165,41,139,133,41,165,41,132,41,132,41,132,33,133,41,132, + 33,132,33,132,41,132,33,132,33,10,100,33,134,68,33,68,33,67,33,68, + 33,67,33,67,33,6,68,33,130,67,33,67,33,7,68,33,132,100,33,100, + 33,133,33,133,33,3,166,41,131,134,41,133,33,132,33,6,100,33,131,132, + 33,133,41,165,41,3,197,41,137,165,41,165,41,132,41,100,33,100,33,132, + 33,165,41,165,41,197,49,4,230,49,131,166,41,134,41,102,41,7,69,33, + 135,102,33,37,25,130,8,130,16,162,16,130,16,4,25,11,69,33,186,69, + 41,70,33,70,33,102,41,102,41,102,33,102,41,102,41,69,41,102,41,102, + 33,102,41,102,41,134,41,134,41,102,41,134,49,142,115,16,132,12,99,4, + 33,195,24,65,8,195,24,105,74,170,82,199,49,105,82,113,148,55,214,105, + 74,0,0,1,0,8,58,44,99,138,82,236,98,210,164,19,173,178,156,240, + 107,240,107,241,107,240,107,241,107,17,108,241,107,17,108,17,108,16,108,241, + 107,240,107,241,107,240,107,240,107,208,107,240,107,240,107,10,208,107,137,207, + 99,208,107,208,107,175,99,208,107,208,107,176,107,208,107,208,107,11,240,107, + 5,208,107,130,175,99,176,107,4,175,99,132,175,107,175,99,143,99,143,107, + 3,143,99,133,143,107,143,99,143,99,142,99,142,99,4,143,99,142,142,99, + 110,99,143,107,143,107,78,99,171,82,167,41,97,8,32,0,163,8,73,66, + 78,99,143,107,175,107,3,143,99,132,143,107,143,99,143,99,143,107,4,143, + 99,3,143,107,130,142,99,142,99,8,110,99,133,78,99,110,99,77,99,77, + 99,78,99,3,77,99,130,45,99,45,99,3,45,91,144,12,91,228,32,65, + 8,97,8,33,0,70,33,237,82,203,82,204,82,203,82,203,82,171,74,106, + 66,106,66,138,66,73,66,100,3,129,36,33,3,69,33,132,36,33,36,25, + 4,25,4,25,6,3,25,132,4,25,3,25,3,33,3,25,4,35,25,133, + 35,33,35,33,36,33,35,33,35,25,3,35,33,133,35,25,35,25,35,33, + 35,33,68,33,4,67,33,135,35,33,67,33,67,33,35,33,67,33,67,33, + 99,33,3,67,33,144,99,33,67,33,67,33,100,33,67,33,68,33,99,33, + 100,33,100,33,100,41,100,41,132,33,131,41,132,41,131,41,164,41,4,132, + 41,134,132,33,164,41,132,41,164,41,164,41,132,41,5,164,41,129,163,41, + 7,164,41,132,163,41,164,41,164,41,163,41,5,164,41,4,131,41,147,132, + 41,131,33,164,41,196,41,228,49,228,49,4,50,37,50,37,50,37,58,69, + 50,69,50,69,58,133,58,133,58,133,66,166,66,134,66,133,66,4,166,66, + 143,198,66,198,66,199,66,166,74,198,74,198,66,199,74,198,74,198,66,198, + 74,199,74,198,74,231,74,199,74,198,74,4,231,74,160,230,74,231,74,199, + 74,198,74,198,74,199,74,199,74,166,66,198,74,166,74,166,66,198,66,166, + 66,198,74,166,74,165,66,166,66,134,66,133,66,134,66,134,66,102,66,101, + 58,101,66,101,58,69,58,5,50,4,50,228,41,196,41,196,41,196,49,12, + 196,41,129,228,41,3,197,41,129,196,41,3,197,41,151,229,41,229,41,197, + 41,229,41,229,41,229,49,196,41,197,41,197,41,229,41,197,41,197,41,229, + 41,196,41,164,41,196,41,164,41,164,41,132,33,132,33,132,41,132,33,132, + 33,4,100,33,4,99,33,131,100,33,100,33,99,33,4,100,33,129,99,33, + 9,100,33,129,68,33,4,100,33,134,99,33,99,33,100,33,68,33,100,33, + 100,33,4,67,33,136,68,33,67,33,68,33,68,33,67,33,68,33,67,33, + 68,33,3,67,33,172,35,33,67,33,35,33,67,33,35,33,35,25,67,33, + 35,25,35,33,35,33,35,25,67,33,35,33,35,33,35,25,35,25,35,33, + 67,33,35,25,67,33,35,33,35,33,67,25,67,33,35,33,67,33,67,33, + 68,33,100,33,101,33,101,33,134,33,134,33,101,33,100,33,100,33,68,33, + 68,33,35,25,68,33,36,33,67,33,67,33,68,33,3,100,33,146,132,33, + 132,41,132,33,100,33,68,33,99,33,100,33,100,33,164,41,197,41,229,49, + 230,49,6,50,6,50,198,49,166,49,166,41,101,33,4,69,33,139,69,25, + 69,33,69,33,131,16,98,16,163,16,98,8,227,24,70,41,69,33,37,33, + 4,69,33,145,37,33,69,33,101,33,69,33,70,41,69,33,69,33,102,41, + 69,33,101,41,70,41,70,33,69,33,102,41,101,41,102,33,102,33,3,102, + 41,162,102,33,102,41,142,115,16,132,12,99,228,24,163,16,65,8,227,24, + 73,66,170,74,199,57,138,82,203,90,81,140,109,107,138,74,105,74,235,90, + 236,90,106,74,203,90,210,156,19,173,178,156,240,107,240,107,16,116,17,108, + 241,115,17,116,241,107,240,115,16,108,3,240,107,129,240,115,3,240,107,5, + 208,107,129,208,99,3,208,107,129,208,99,7,208,107,129,176,99,5,208,107, + 8,240,107,7,208,107,130,175,107,208,107,4,175,99,138,175,107,143,99,175, + 107,143,99,143,99,175,107,143,107,143,99,110,99,110,99,4,143,99,148,111, + 99,110,99,142,99,143,107,143,107,143,99,143,107,78,99,74,66,4,25,0, + 0,65,0,134,33,236,82,207,107,175,107,142,99,142,107,143,99,175,99,3, + 143,107,131,142,99,143,99,143,99,4,143,107,131,142,107,110,99,111,99,8, + 110,99,136,78,99,77,99,78,99,77,99,77,99,78,99,45,91,77,99,3, + 45,91,144,45,99,166,57,33,8,97,8,33,8,195,16,204,74,204,82,203, + 74,172,82,204,82,171,74,171,74,139,74,138,74,73,66,84,3,140,37,33, + 134,41,199,41,232,49,200,49,167,41,134,33,102,33,69,33,37,25,4,25, + 228,16,3,228,24,133,227,24,227,24,227,16,227,24,195,24,3,227,24,135, + 195,16,227,16,227,24,195,16,194,16,227,16,227,16,6,227,24,131,3,25, + 3,25,227,24,5,3,25,132,35,25,3,25,35,33,35,25,3,35,33,138, + 36,33,35,25,68,33,36,33,68,33,67,33,68,33,68,33,67,33,68,33, + 4,100,33,136,100,41,100,33,99,33,99,33,100,33,100,41,132,41,132,33, + 18,132,41,129,100,41,5,132,41,131,131,41,132,41,100,33,3,132,41,130, + 164,41,164,41,4,196,41,133,229,49,228,49,228,49,229,49,229,49,3,5, + 50,132,4,50,37,50,36,50,37,50,3,69,58,133,102,58,69,58,101,58, + 101,58,69,58,3,101,58,131,69,58,69,58,102,58,3,101,58,135,133,66, + 133,58,134,58,166,66,134,66,134,66,134,58,4,166,66,130,134,66,166,66, + 3,134,66,5,166,66,134,134,66,134,66,166,66,134,58,166,58,166,58,3, + 166,66,134,134,66,133,58,101,58,101,58,69,58,70,58,3,69,58,151,69, + 50,69,58,69,58,37,50,69,58,69,50,69,58,37,50,69,50,38,50,70, + 58,37,50,37,50,38,50,70,58,69,50,69,50,69,58,69,50,69,50,70, + 50,37,50,38,50,3,37,50,5,5,50,136,229,49,229,49,228,41,229,41, + 196,41,228,41,196,49,197,41,6,164,41,129,132,41,5,164,41,133,132,41, + 132,41,132,33,132,41,132,33,3,132,41,129,164,33,3,132,33,130,132,41, + 132,41,9,132,33,6,100,33,129,99,33,4,100,33,134,99,33,100,33,68, + 33,67,33,68,33,68,33,3,67,33,130,68,33,68,33,6,67,33,129,67, + 25,3,67,33,132,35,33,67,33,35,25,68,33,3,67,33,133,35,25,67, + 33,35,33,35,33,67,33,3,68,33,131,101,33,101,33,102,33,3,101,33, + 131,68,33,68,33,67,25,4,67,33,129,35,33,5,67,33,147,100,33,68, + 33,68,33,100,33,68,33,67,33,68,33,132,41,165,41,197,49,229,49,6, + 50,6,58,230,49,198,49,198,49,166,41,102,41,133,41,3,69,33,137,37, + 25,163,16,130,16,130,16,98,8,195,24,102,33,37,33,37,33,3,69,33, + 129,37,33,5,69,33,178,102,33,69,33,101,33,69,33,70,41,70,33,102, + 41,102,33,70,33,69,33,102,33,70,33,102,33,102,41,134,41,102,33,102, + 41,69,33,142,115,16,124,77,99,196,24,130,16,98,8,4,25,41,66,138, + 74,199,57,138,82,171,90,171,82,45,99,179,140,239,115,171,82,105,74,138, + 74,203,90,178,156,19,165,178,156,240,115,241,107,240,107,240,107,17,108,17, + 108,241,115,241,115,17,108,3,240,107,134,208,107,240,107,240,107,208,107,240, + 107,240,107,3,208,107,130,207,107,207,99,6,208,107,133,175,99,143,99,175, + 99,176,99,207,99,7,208,107,142,240,107,240,107,208,107,240,107,240,107,208, + 107,208,107,240,107,208,107,175,107,175,107,208,107,207,107,207,107,5,175,107, + 134,143,99,175,107,175,99,175,99,143,99,175,99,3,143,99,129,111,99,4, + 143,99,153,110,99,110,99,142,99,143,99,111,99,143,99,143,99,143,107,175, + 107,46,91,9,58,98,8,0,0,130,8,138,66,142,99,175,107,142,99,143, + 99,143,107,143,107,143,99,175,107,143,99,175,107,3,143,107,135,142,99,142, + 107,110,99,143,99,142,99,110,99,142,99,7,110,99,154,78,99,77,99,77, + 99,78,99,77,91,77,99,77,99,45,99,45,91,45,99,13,99,105,74,130, + 16,65,8,65,8,33,0,139,66,236,82,171,82,172,82,171,74,171,74,138, + 74,74,74,106,66,73,66,45,3,141,69,33,8,58,73,66,138,66,138,66, + 106,66,73,58,41,58,9,50,232,49,167,41,135,33,135,33,3,102,33,136, + 70,33,69,33,37,33,37,25,37,25,5,25,4,25,4,25,3,228,24,131, + 227,24,195,24,195,24,4,195,16,132,195,24,195,16,195,16,195,24,4,195, + 16,129,195,24,3,195,16,129,195,24,6,227,24,131,3,25,3,25,227,24, + 5,3,25,140,35,33,3,25,3,33,3,33,35,33,35,33,67,33,36,33, + 35,33,68,33,67,33,67,33,6,68,33,129,100,33,4,68,33,3,100,33, + 136,68,33,100,33,68,33,100,33,100,33,99,33,100,33,99,33,7,100,33, + 131,100,41,132,41,132,41,3,164,41,129,196,41,6,197,41,133,229,41,229, + 41,229,49,229,41,229,41,4,5,50,133,37,50,37,58,5,50,37,50,37, + 58,3,37,50,129,5,50,3,37,50,134,37,58,37,50,70,58,37,58,70, + 58,70,58,3,69,58,132,69,50,70,58,102,58,101,58,5,69,58,129,70, + 58,4,69,58,139,69,50,37,50,69,58,69,58,101,58,69,58,69,58,101, + 58,101,58,102,58,70,58,8,37,50,7,69,50,131,70,50,70,58,70,50, + 3,69,50,131,70,50,102,50,70,58,3,102,58,130,70,50,102,58,3,70, + 58,146,102,58,102,58,70,50,70,58,69,58,69,50,70,50,69,50,70,50, + 38,50,38,50,38,58,38,50,37,50,37,50,5,50,37,50,37,50,7,5, + 50,148,229,49,228,49,5,50,5,50,229,49,229,41,229,41,229,49,228,49, + 229,41,228,41,229,41,229,49,228,49,229,41,197,41,197,41,229,41,197,41, + 228,41,3,197,41,5,164,41,129,132,33,4,132,41,3,132,33,13,100,33, + 143,68,33,68,33,99,33,68,33,100,33,67,33,67,33,68,33,67,33,68, + 33,67,33,68,33,68,33,100,33,67,33,3,68,33,135,67,33,67,33,100, + 33,100,33,101,33,101,33,133,33,3,101,33,131,68,33,68,33,67,33,4, + 68,33,135,67,33,68,33,100,33,67,33,68,33,100,33,68,33,7,100,33, + 147,132,41,197,41,229,49,230,49,6,50,6,50,230,49,230,49,198,49,166, + 41,134,41,102,41,70,41,69,33,163,16,98,16,130,16,130,16,227,24,3, + 69,33,132,37,33,69,33,69,33,37,33,3,69,33,144,70,33,70,33,69, + 33,70,33,69,33,69,33,70,33,70,33,101,41,70,33,102,41,70,33,70, + 33,102,41,102,33,102,33,3,102,41,159,102,33,69,33,142,115,15,124,77, + 99,228,24,130,8,130,8,36,33,41,66,106,74,199,49,138,82,236,98,171, + 82,171,82,235,90,203,82,170,82,138,82,138,82,235,90,145,148,19,173,178, + 156,240,115,17,116,241,107,241,107,16,108,17,116,3,241,107,134,240,107,240, + 107,208,107,208,107,240,107,240,107,15,208,107,131,175,99,175,99,176,107,6, + 208,107,132,176,107,208,107,208,107,240,107,7,208,107,142,207,107,175,99,207, + 107,176,107,175,99,175,107,175,107,175,99,175,107,143,99,175,99,143,99,175, + 99,143,107,8,143,99,149,142,99,143,99,110,99,143,99,142,99,143,99,143, + 99,142,99,143,99,143,99,143,107,143,107,110,99,73,66,195,24,0,0,130, + 8,9,58,110,99,175,107,142,99,4,143,107,129,142,99,6,143,107,3,142, + 99,130,110,99,142,99,7,110,99,131,78,99,77,99,78,99,3,77,99,148, + 45,99,45,99,45,91,45,99,13,99,171,82,228,32,65,8,97,8,0,0, + 232,49,13,83,204,82,203,82,203,74,171,82,171,74,138,74,138,74,74,66, + 89,3,140,134,49,106,66,203,82,45,83,77,83,45,83,12,83,12,83,204, + 74,171,66,171,66,106,58,3,74,58,139,42,58,41,58,41,58,41,50,9, + 50,232,49,232,49,200,49,199,41,167,41,167,41,3,135,41,3,102,33,129, + 70,41,3,70,33,135,69,33,37,33,37,33,36,25,5,33,5,25,4,25, + 4,228,24,130,227,24,228,24,3,195,24,5,195,16,131,194,16,195,16,163, + 16,3,194,16,132,195,16,195,16,194,16,195,16,3,195,24,5,227,24,11, + 3,25,129,35,25,3,3,25,130,35,25,35,25,3,35,33,129,67,33,7, + 36,33,130,68,33,67,33,3,100,33,130,132,33,132,33,3,132,41,129,164, + 33,4,164,41,141,165,41,165,41,196,41,197,41,197,41,228,41,197,41,197, + 41,229,41,229,49,229,49,228,41,229,41,7,229,49,130,5,50,229,49,8, + 5,50,129,37,50,9,5,50,135,229,49,5,50,5,50,229,49,5,50,5, + 50,4,50,3,5,50,130,229,49,5,50,7,229,41,130,5,42,5,50,5, + 5,42,147,5,50,229,49,5,42,5,50,37,50,5,50,5,50,37,50,38, + 50,38,50,70,50,69,50,37,50,37,50,70,58,38,50,70,50,70,58,70, + 50,4,70,58,149,69,50,70,58,70,58,70,50,70,50,38,50,70,50,70, + 58,38,58,70,50,69,58,70,50,70,50,38,50,37,50,38,50,38,58,37, + 50,38,58,70,50,38,50,3,70,58,148,102,58,70,50,70,50,102,58,70, + 58,70,50,69,50,70,50,70,50,38,58,70,58,37,58,37,50,70,50,37, + 50,70,58,37,50,38,50,5,50,37,50,3,5,50,135,229,49,229,41,228, + 41,229,41,229,49,229,41,229,49,3,197,41,132,196,41,197,41,164,41,196, + 41,4,164,41,131,164,33,164,41,164,41,6,132,41,137,132,33,164,41,132, + 41,132,33,100,33,132,41,132,33,132,33,132,41,4,132,33,139,100,33,132, + 33,100,33,100,33,132,33,133,33,133,33,101,33,133,33,133,41,132,33,5, + 100,33,129,132,33,5,100,33,129,132,33,5,100,33,153,132,33,100,33,100, + 33,132,41,197,41,197,49,229,49,6,50,6,58,39,58,6,50,230,49,230, + 49,166,49,166,41,134,41,228,24,130,16,162,16,98,16,195,24,69,33,70, + 33,69,25,69,33,5,37,33,145,69,33,69,33,70,33,70,33,102,33,102, + 33,69,33,70,33,101,33,101,33,70,33,102,33,102,33,70,33,70,33,102, + 33,70,33,5,102,41,141,37,33,142,115,240,123,109,107,4,25,131,8,163, + 8,37,33,8,58,106,74,199,49,138,74,236,90,5,203,90,146,138,82,138, + 82,203,82,113,148,243,164,243,164,12,83,17,116,49,116,17,108,241,115,17, + 116,241,107,17,116,241,115,17,108,240,107,208,107,3,240,107,133,208,107,240, + 107,208,107,208,107,240,107,4,208,107,129,207,107,5,208,107,138,176,99,175, + 99,208,99,175,107,208,107,208,107,176,99,208,107,208,99,176,99,3,208,107, + 129,240,107,6,208,107,132,175,107,207,99,175,107,175,99,3,175,107,138,143, + 99,143,99,175,99,143,99,175,99,175,107,175,107,143,99,143,99,143,107,3, + 143,99,158,142,99,143,99,143,99,142,99,142,99,143,99,142,99,111,99,143, + 99,142,99,143,107,142,99,110,99,110,99,142,99,142,107,171,74,228,24,0, + 0,97,8,232,49,143,107,175,107,143,99,143,99,143,107,142,107,143,107,175, + 107,175,107,4,143,107,142,142,107,142,107,143,99,142,99,142,107,142,99,111, + 99,142,99,110,99,110,99,78,99,78,99,109,99,77,99,4,78,99,141,45, + 99,45,99,45,91,77,99,45,99,203,82,102,41,65,8,97,8,33,0,228, + 16,45,91,204,82,3,203,82,132,171,74,171,74,138,74,106,66,57,3,138, + 8,66,203,82,77,91,175,99,175,107,175,107,207,99,175,107,175,99,143,99, + 3,110,91,5,78,91,130,78,83,45,83,4,13,83,3,236,74,131,204,74, + 172,74,171,74,3,139,74,140,138,74,139,66,138,66,106,66,106,66,74,66, + 74,66,41,58,41,58,9,58,9,50,9,50,4,232,49,130,200,41,199,41, + 3,167,41,137,134,41,167,41,134,41,103,41,102,41,102,33,102,33,70,33, + 70,33,4,69,33,3,37,33,3,4,25,4,228,24,8,195,16,129,163,16, + 4,195,16,129,163,16,5,195,16,134,195,24,227,16,195,16,195,16,227,16, + 227,16,7,227,24,3,3,25,129,4,25,3,35,25,135,3,25,35,33,35, + 33,36,33,68,33,68,33,67,25,3,68,33,5,100,33,131,132,33,100,33, + 100,33,4,132,33,135,132,41,165,41,132,33,165,41,164,41,164,41,132,33, + 3,164,41,131,165,41,165,41,164,41,8,165,41,135,164,41,165,41,164,41, + 165,41,165,41,164,41,165,41,3,197,41,133,165,41,164,41,165,41,164,41, + 164,41,3,165,41,129,164,41,3,165,41,130,197,41,196,41,3,197,41,129, + 196,41,3,197,41,133,229,41,229,41,197,41,229,41,197,41,4,229,41,129, + 229,49,5,229,41,132,229,49,229,41,5,50,5,50,6,229,41,137,230,49, + 5,50,229,49,229,49,229,41,229,49,229,49,229,41,229,41,3,5,50,134, + 6,50,5,50,38,50,6,50,38,50,6,50,3,38,50,138,37,50,5,50, + 38,50,37,50,38,50,38,50,37,50,38,50,38,50,70,50,5,38,50,132, + 37,50,37,50,38,50,37,50,6,5,50,136,6,50,5,50,5,50,229,41, + 229,49,229,49,229,41,5,50,4,229,49,152,229,41,229,49,229,41,197,41, + 229,49,229,41,229,49,229,49,230,49,229,41,229,41,229,49,197,41,229,49, + 229,49,197,49,197,41,197,49,197,41,197,41,165,41,196,41,197,41,197,41, + 7,165,41,131,197,41,165,41,197,41,3,165,41,130,164,41,164,41,10,165, + 41,138,164,41,165,41,132,41,165,41,164,41,197,41,230,49,6,50,38,58, + 39,66,3,39,58,159,7,58,7,50,134,41,4,25,130,16,195,24,163,24, + 102,41,70,33,69,33,69,33,70,33,69,33,37,33,37,33,69,33,69,33, + 70,33,102,33,70,33,70,33,102,33,70,33,70,33,102,33,70,41,102,41, + 101,33,70,33,102,41,70,41,4,102,33,3,102,41,156,134,41,37,33,142, + 115,207,115,142,107,37,25,196,16,228,24,4,33,8,58,73,66,200,49,105, + 74,235,90,171,90,171,90,203,82,203,90,203,90,171,82,171,82,235,90,80, + 148,243,164,20,173,195,16,167,41,78,99,3,17,116,132,16,108,17,116,17, + 116,240,115,9,240,107,5,208,107,130,176,107,207,107,7,208,107,136,208,99, + 175,99,175,107,208,107,176,99,208,99,176,107,175,99,7,208,107,149,208,99, + 207,107,207,107,176,107,175,99,175,107,175,99,143,99,175,99,143,99,143,99, + 175,99,142,99,143,99,175,107,143,99,143,107,175,99,143,99,143,99,143,107, + 4,143,99,148,111,99,143,99,110,99,143,99,143,99,142,99,143,99,142,99, + 143,99,110,99,142,99,142,99,143,107,175,107,12,91,228,16,0,0,0,0, + 232,49,110,99,4,175,107,133,143,107,175,107,143,107,175,107,175,107,6,143, + 107,129,142,99,6,110,99,155,110,107,78,99,78,99,109,99,78,99,78,99, + 45,91,45,91,77,99,77,99,45,99,45,99,236,90,8,66,130,16,65,8, + 65,8,1,0,13,83,236,82,204,82,203,82,171,74,172,82,138,74,73,66, + 102,41,198,2,136,73,66,12,91,110,99,207,107,240,107,240,107,16,116,16, + 116,9,240,107,3,208,107,132,207,107,208,99,208,107,175,107,4,175,99,148, + 143,99,142,99,143,99,142,99,110,91,143,91,142,99,110,91,110,91,78,91, + 77,91,45,83,45,91,45,91,13,83,13,83,237,82,236,82,236,82,236,74, + 3,204,74,141,171,74,171,66,171,74,171,66,171,66,138,66,107,66,139,66, + 106,66,106,66,106,58,74,58,74,66,3,74,58,152,73,58,73,58,41,58, + 41,58,9,58,233,57,233,49,232,49,232,49,200,49,200,49,199,49,167,41, + 167,41,135,41,134,41,134,41,102,33,102,33,70,33,70,33,69,33,37,33, + 37,25,4,37,33,135,4,25,4,33,4,33,4,25,228,24,228,24,4,25, + 3,228,24,5,227,24,131,228,24,195,24,227,24,12,195,24,7,227,24,9, + 3,25,131,36,25,35,33,3,25,4,35,25,141,36,33,35,33,68,33,68, + 33,67,25,68,33,68,33,35,33,68,33,68,33,67,33,68,33,68,33,21, + 100,33,12,132,33,134,164,33,132,33,164,33,133,33,165,33,164,33,5,165, + 41,129,164,41,8,165,41,132,165,33,197,41,165,41,197,41,7,165,41,130, + 197,41,165,41,13,197,41,135,229,41,229,41,197,41,229,41,229,41,197,41, + 197,41,8,229,41,136,197,41,197,49,197,41,197,41,229,41,229,49,197,41, + 229,41,17,197,41,132,197,49,197,41,197,41,197,49,5,197,41,129,165,41, + 3,197,41,133,165,41,197,41,197,41,165,41,197,41,6,165,41,3,197,41, + 129,165,41,3,197,41,132,165,41,165,41,197,41,165,41,3,197,41,131,165, + 49,165,41,197,41,6,165,41,145,197,41,230,49,6,50,39,58,71,66,71, + 58,103,66,104,66,104,66,40,58,231,57,134,49,227,24,163,16,69,33,70, + 33,70,33,3,69,33,130,37,33,37,33,4,69,33,9,102,33,130,102,41, + 102,41,5,102,33,147,134,41,134,41,102,41,134,33,134,41,37,33,142,107, + 207,123,142,107,37,33,228,24,69,33,36,25,232,49,41,58,199,49,73,74, + 12,99,171,90,4,203,90,3,171,82,135,48,140,19,173,85,181,36,33,0, + 0,36,25,204,74,4,17,116,133,241,107,240,107,240,115,240,107,240,115,6, + 240,107,5,208,107,132,207,99,208,107,208,107,207,107,5,208,107,3,175,99, + 129,207,99,3,208,107,129,208,99,5,208,107,139,207,107,208,99,175,99,176, + 107,175,107,175,99,175,107,175,107,175,99,143,99,175,99,3,143,99,129,142, + 99,6,143,99,3,143,107,131,143,99,143,99,143,107,3,143,99,146,110,99, + 142,99,142,99,143,99,142,99,143,99,143,107,143,107,142,99,142,99,175,107, + 175,107,203,82,228,24,0,0,97,8,8,50,142,99,6,175,107,129,143,107, + 3,175,107,136,143,107,142,99,142,107,142,107,143,107,110,99,142,107,110,107, + 5,110,99,146,78,99,78,99,77,99,78,99,78,99,45,99,77,99,46,99, + 45,99,45,99,12,91,138,82,195,24,65,8,65,8,0,0,138,58,236,82, + 3,204,82,132,236,82,199,57,4,33,130,16,81,3,157,105,74,12,99,142, + 107,207,115,240,115,16,124,49,124,49,124,49,116,49,124,49,124,49,116,49, + 116,81,116,81,116,49,116,81,116,81,124,81,124,81,116,49,116,81,116,81, + 116,82,116,49,116,81,116,49,116,49,116,17,116,6,49,116,132,48,116,17, + 116,17,108,241,107,4,240,107,133,208,107,208,107,175,107,207,107,176,107,3, + 175,99,5,143,99,131,142,99,110,99,110,91,3,78,91,134,78,83,77,91, + 78,91,78,91,77,91,77,83,3,45,83,4,13,83,129,236,74,3,236,82, + 129,204,74,3,171,74,3,139,66,145,106,66,105,66,74,58,74,58,41,58, + 41,58,9,58,9,50,9,58,9,58,232,57,232,49,232,49,200,49,200,49, + 199,49,168,49,3,167,41,140,135,41,134,41,134,41,103,33,102,41,70,33, + 70,41,69,33,70,33,70,33,69,33,70,33,3,37,33,131,37,25,37,25, + 36,33,4,4,25,130,4,33,5,33,4,4,25,4,228,24,5,227,24,133, + 227,16,195,24,227,24,227,24,195,24,5,227,24,135,195,24,227,24,227,24, + 227,16,227,16,195,24,195,24,7,227,24,129,227,16,6,227,24,131,3,25, + 3,25,227,24,7,3,25,141,35,25,35,25,4,25,3,25,35,25,35,25, + 36,25,35,25,36,25,36,33,68,33,35,33,36,33,12,68,33,133,100,33, + 68,33,68,33,100,33,68,33,19,100,33,133,132,33,100,33,132,33,100,33, + 100,33,13,132,33,154,165,41,132,33,165,33,164,33,133,41,165,41,164,33, + 132,33,133,41,132,41,165,41,164,41,133,41,133,41,164,33,133,41,132,41, + 133,41,132,33,132,41,133,33,132,33,133,41,132,33,132,41,165,41,4,133, + 41,129,132,41,3,165,41,4,133,41,132,132,41,133,33,132,41,132,41,3, + 132,33,146,100,33,132,33,132,33,133,41,132,33,133,41,132,41,133,41,132, + 33,132,33,133,41,132,33,133,41,132,33,133,41,165,41,133,33,133,41,3, + 165,41,131,133,41,165,41,133,41,3,165,41,157,133,41,165,41,133,41,165, + 41,197,41,229,41,6,50,39,58,72,66,72,66,104,66,169,74,169,74,137, + 74,105,66,40,66,102,49,102,41,102,33,102,33,70,33,69,33,70,33,70, + 33,37,33,37,33,69,33,102,33,70,33,11,102,33,129,134,41,4,102,33, + 179,103,33,103,41,134,41,135,41,134,41,134,41,69,33,44,99,207,115,175, + 115,69,33,195,16,228,24,4,25,232,49,41,66,199,49,73,74,12,99,203, + 90,235,90,203,90,203,90,235,90,171,82,138,74,138,82,15,132,243,164,85, + 181,37,33,0,0,65,8,130,8,171,74,240,115,49,124,241,115,17,108,240, + 107,240,115,16,116,240,115,240,107,240,107,240,115,240,115,240,107,240,107,208, + 107,240,107,3,208,107,132,240,107,208,107,208,107,208,99,3,208,107,134,176, + 107,208,107,175,99,175,107,175,99,175,99,4,208,107,130,176,99,176,99,4, + 208,107,132,176,107,207,107,175,99,175,107,6,175,99,184,143,99,143,99,142, + 99,143,99,142,99,143,99,142,99,143,99,143,99,142,99,143,99,143,99,143, + 107,143,99,143,99,142,99,142,99,143,99,142,99,110,99,143,99,143,99,142, + 107,143,107,143,99,143,107,143,107,142,99,143,107,142,99,175,107,143,107,139, + 74,163,16,0,0,130,8,73,58,208,115,175,107,143,107,175,107,175,107,143, + 107,175,107,175,107,143,107,175,107,174,107,143,107,143,107,142,107,143,99,142, + 107,142,99,110,107,142,99,4,110,99,153,78,99,110,99,77,99,77,99,78, + 99,110,99,142,107,143,107,174,107,143,107,78,99,12,91,69,41,98,8,65, + 8,0,8,135,33,13,83,204,82,204,82,236,82,166,49,163,24,130,16,65, + 8,35,3,144,138,82,12,99,109,107,207,115,239,123,16,124,49,124,49,124, + 81,124,81,124,82,132,113,124,114,124,114,124,114,132,114,124,3,114,132,5, + 146,132,141,146,124,146,132,146,132,146,124,146,132,146,124,146,132,146,124,147, + 132,146,124,147,132,146,132,146,132,4,146,124,131,114,124,146,124,146,124,6, + 114,124,134,82,124,114,124,82,124,113,116,82,124,81,116,4,82,116,3,81, + 116,9,49,116,137,17,108,17,108,16,116,17,108,16,108,16,116,240,107,240, + 107,240,115,3,208,107,129,207,107,4,175,99,140,143,91,142,91,110,91,110, + 99,78,91,78,91,77,91,78,91,78,83,77,91,45,83,45,91,3,13,83, + 131,237,82,236,74,236,82,3,204,74,133,171,74,172,74,171,66,139,66,139, + 74,4,139,66,132,107,66,106,66,106,66,106,58,3,74,58,139,42,58,42, + 58,41,58,42,58,9,58,9,58,9,50,9,58,233,49,233,49,232,49,3, + 200,41,129,168,41,3,167,41,130,135,33,167,41,7,135,41,131,134,33,135, + 33,103,33,3,102,33,5,70,33,146,37,33,69,33,69,33,37,33,69,33, + 69,33,69,25,38,33,37,33,69,33,37,33,36,33,37,25,4,33,37,33, + 36,25,36,25,5,33,8,4,25,129,228,24,4,4,25,4,228,24,132,4, + 25,4,25,228,24,4,25,3,228,24,15,4,25,133,3,25,4,25,4,25, + 3,25,3,25,5,4,25,10,3,25,136,4,25,3,25,36,25,36,25,4, + 25,35,33,35,25,35,25,3,36,25,133,36,33,36,33,36,25,36,25,68, + 33,4,36,33,133,36,25,36,33,36,33,68,33,68,33,4,36,33,3,68, + 33,135,36,33,36,25,68,33,36,33,36,25,68,33,36,33,10,68,33,133, + 36,33,68,33,36,33,68,33,68,25,4,68,33,129,36,33,16,68,33,163, + 100,33,68,33,100,33,100,33,101,33,100,33,100,41,100,33,100,33,101,33, + 101,33,165,41,166,41,230,49,40,58,72,66,105,66,105,66,169,74,234,82, + 11,83,235,82,235,82,137,74,8,50,134,41,70,33,102,33,102,33,70,33, + 70,33,37,25,69,33,69,33,70,33,5,102,33,137,103,33,135,33,134,33, + 102,33,102,33,135,41,134,33,135,41,135,41,3,134,41,159,135,41,167,41, + 135,41,167,41,167,41,200,41,70,33,77,107,207,123,174,115,102,41,4,25, + 196,16,4,33,199,49,41,66,199,49,41,66,236,90,203,90,203,90,236,90, + 203,90,203,90,138,74,106,74,105,74,207,123,211,156,52,173,170,82,4,65, + 8,141,167,41,110,91,49,116,17,116,241,115,240,115,241,107,241,115,240,107, + 240,115,240,107,240,115,240,115,4,240,107,130,208,107,208,115,10,208,107,146, + 207,99,176,107,175,99,175,107,208,107,208,107,175,99,175,107,207,99,175,99, + 208,107,207,107,208,107,208,107,175,99,175,99,175,107,175,99,3,143,99,3, + 175,99,3,143,99,132,142,99,142,99,111,99,110,99,5,143,99,131,143,107, + 143,99,142,99,3,143,107,129,142,107,4,143,107,148,175,107,143,107,143,99, + 142,99,143,107,174,99,143,99,175,107,175,107,236,82,98,8,0,0,97,8, + 171,74,175,107,175,107,143,107,143,107,175,107,143,107,3,175,107,137,143,107, + 142,107,143,107,143,107,142,107,143,107,143,99,142,99,110,107,7,110,99,150, + 142,107,77,99,171,82,166,57,36,41,227,32,4,41,166,49,73,66,8,66, + 65,8,65,8,33,8,130,16,204,74,237,82,171,74,101,41,97,8,98,8, + 131,16,195,16,235,2,138,170,82,44,99,109,107,174,115,239,115,16,124,49, + 132,81,132,81,124,81,132,6,114,132,130,146,132,114,132,5,146,132,3,147, + 132,132,146,132,147,132,147,132,146,132,11,179,132,129,178,132,23,179,132,129, + 179,124,5,179,132,138,147,132,147,124,179,132,178,132,147,132,147,132,147,124, + 146,124,146,132,146,124,5,114,124,132,81,116,82,124,81,116,81,116,3,49, + 116,3,17,116,132,17,108,17,108,16,108,16,108,3,240,107,132,208,107,208, + 107,208,99,207,99,3,175,99,138,143,99,143,99,143,91,143,99,142,99,142, + 99,143,99,110,91,142,91,110,99,3,110,91,4,78,91,130,46,91,46,91, + 4,45,83,132,13,83,13,83,237,74,236,82,6,204,74,131,172,74,171,66, + 171,74,3,171,66,6,139,66,138,106,66,106,58,106,58,74,66,74,58,74, + 58,73,58,41,58,41,58,9,58,8,41,58,141,9,58,9,58,233,49,232, + 49,232,49,200,49,232,49,200,41,200,49,200,41,200,41,168,41,168,41,11, + 167,41,4,135,41,133,167,41,134,41,102,41,103,41,134,41,3,135,41,6, + 134,41,130,102,41,134,41,5,102,33,130,101,33,101,33,18,69,33,130,37, + 33,37,33,3,69,33,3,37,33,131,69,33,37,33,37,33,5,69,33,3, + 36,33,145,37,33,37,33,69,33,36,33,36,25,37,33,37,25,37,25,36, + 33,37,33,36,33,68,33,69,33,36,33,69,33,68,33,68,33,13,69,33, + 134,68,33,68,33,36,33,68,33,36,33,37,33,4,69,33,129,101,33,6, + 69,33,130,101,33,69,33,3,101,33,133,101,41,101,33,101,33,101,41,133, + 41,4,134,41,155,166,41,166,41,133,41,134,41,101,41,134,41,166,41,199, + 49,7,58,72,66,104,66,169,66,170,74,202,82,11,91,76,91,76,99,235, + 82,105,66,232,49,134,41,102,33,70,33,70,33,69,33,37,25,69,33,5, + 102,33,137,134,33,134,33,135,33,102,33,102,33,134,41,134,33,135,41,134, + 41,3,135,41,131,134,41,134,41,135,41,5,167,41,170,102,33,12,99,207, + 115,207,115,134,41,37,33,228,24,4,25,199,49,41,66,199,49,41,66,236, + 90,235,90,203,90,203,90,203,82,171,82,105,74,105,74,138,74,174,123,211, + 164,19,165,16,124,171,74,228,24,65,8,130,16,98,8,69,33,78,91,17, + 116,241,115,16,116,16,116,241,115,240,107,240,115,241,115,240,107,240,115,3, + 240,107,130,208,107,240,107,11,208,107,134,207,107,208,107,175,107,176,107,208, + 107,208,107,3,175,99,130,176,107,207,107,3,208,107,130,175,99,175,107,4, + 175,99,130,143,99,175,99,6,143,99,130,110,99,111,99,3,142,99,130,111, + 99,142,99,3,143,99,142,142,99,143,107,143,99,143,99,110,99,142,107,143, + 107,143,107,142,107,142,99,143,107,143,107,142,99,143,107,4,175,107,138,143, + 107,41,58,97,8,0,0,36,25,12,91,207,107,143,107,175,107,175,107,3, + 143,107,129,175,107,3,143,107,134,142,107,143,107,143,99,143,107,143,107,110, + 107,6,110,99,151,142,107,204,90,4,33,33,8,32,8,0,0,0,8,65, + 8,97,8,163,24,36,33,37,33,4,33,98,16,65,8,41,50,203,74,101, + 41,130,16,162,16,227,24,195,24,98,16,95,3,138,171,90,44,99,109,107, + 174,115,207,123,16,124,49,132,81,132,81,132,113,132,9,114,132,139,146,132, + 146,132,147,132,178,132,178,140,179,140,179,132,147,132,179,140,179,132,146,132, + 3,179,132,144,179,140,179,132,179,132,179,140,211,132,179,140,179,132,179,132, + 211,140,179,132,211,140,179,140,211,140,211,140,211,132,212,140,4,211,140,141, + 211,132,211,132,244,132,211,140,211,140,212,132,211,140,211,132,212,140,212,132, + 243,132,211,140,211,140,5,244,140,129,212,140,8,244,140,135,243,140,244,132, + 243,140,211,132,212,140,211,132,211,132,6,179,132,155,179,124,179,124,147,124, + 147,132,147,124,147,124,146,124,147,124,146,124,146,124,146,116,114,124,114,124, + 114,116,114,116,82,116,82,116,81,116,81,116,49,116,49,116,50,116,49,116, + 49,116,81,116,49,116,81,116,4,49,116,132,17,108,17,116,49,116,17,116, + 4,17,108,130,241,107,240,107,3,208,99,6,175,99,4,143,91,140,111,91, + 143,91,143,91,142,91,110,91,111,91,110,91,110,91,110,83,78,91,78,91, + 77,83,5,45,83,130,13,83,45,91,4,45,83,134,13,83,45,83,13,83, + 13,75,236,82,237,82,4,204,74,3,172,74,130,203,74,172,66,3,171,66, + 138,172,66,140,66,171,66,171,74,139,66,139,66,171,66,139,66,139,66,138, + 66,3,139,66,131,106,66,106,66,107,66,5,106,66,140,107,74,106,66,106, + 66,74,66,106,66,74,66,74,66,73,58,74,58,42,58,73,58,42,58,6, + 41,58,5,9,58,130,9,50,9,58,3,9,50,133,8,50,8,58,8,58, + 8,50,8,58,3,232,57,145,232,49,232,49,200,49,232,49,200,49,200,49, + 232,49,232,49,200,49,200,49,200,41,199,41,199,41,200,49,168,49,200,41, + 200,49,3,200,41,132,199,41,199,41,168,41,168,41,3,167,41,132,199,41, + 199,41,167,41,167,49,3,200,49,133,199,49,200,49,232,41,199,49,200,49, + 3,199,49,136,200,49,200,41,200,49,200,41,200,49,167,41,200,41,199,41, + 4,200,49,5,232,49,129,232,57,7,232,49,135,8,50,8,50,232,49,8, + 50,8,58,9,58,9,58,5,41,58,152,9,58,8,50,232,49,231,49,199, + 49,231,49,8,50,40,58,72,58,137,74,170,74,202,74,11,91,44,91,76, + 99,44,99,171,82,73,66,199,49,102,33,70,33,102,33,69,33,36,33,6, + 102,33,143,103,33,135,41,135,41,135,33,135,33,135,41,134,33,134,41,134, + 41,167,41,135,41,135,41,134,41,135,41,135,41,5,167,41,174,134,33,12, + 99,174,115,239,123,135,41,37,33,228,24,4,25,199,49,9,58,199,49,167, + 49,41,66,73,74,73,74,138,74,73,74,170,82,138,82,41,66,167,49,109, + 107,243,164,243,164,16,132,17,116,45,91,69,33,65,8,163,24,98,16,37, + 33,13,83,17,124,17,116,17,116,240,115,17,116,241,107,240,115,240,107,240, + 115,240,115,240,107,208,107,240,107,8,208,107,129,176,107,4,208,107,145,207, + 107,207,107,175,107,175,107,176,107,208,107,207,99,176,99,207,107,208,107,208, + 107,208,99,208,107,208,107,176,99,208,99,175,107,4,175,99,7,143,99,130, + 110,99,143,99,3,110,99,146,111,99,110,99,142,99,110,99,142,99,143,99, + 143,99,142,99,110,99,143,107,143,99,142,99,143,99,142,107,143,99,143,107, + 175,107,143,99,3,143,107,137,175,107,143,107,110,107,199,49,0,0,65,8, + 134,41,110,99,208,107,7,175,107,130,143,107,175,107,6,143,107,129,142,107, + 3,110,107,153,142,107,77,99,199,57,130,24,65,8,65,16,32,0,163,16, + 195,24,162,16,130,16,162,24,195,24,163,24,102,49,36,41,131,16,70,25, + 167,41,163,16,163,16,228,24,195,24,98,16,65,8,54,3,138,203,90,12, + 99,77,107,142,115,207,115,240,123,49,132,49,132,81,132,113,132,3,114,132, + 6,146,132,137,147,132,146,132,146,132,179,140,179,132,146,140,147,132,178,132, + 147,132,3,179,132,3,179,140,4,211,140,138,179,140,211,140,179,140,211,132, + 211,140,211,140,212,140,211,140,243,140,243,140,7,211,140,134,244,140,244,140, + 211,140,244,140,244,140,212,140,11,244,140,130,20,141,20,141,9,20,149,6, + 20,141,13,244,140,139,244,132,244,132,211,132,212,132,211,132,211,132,212,132, + 179,132,211,132,179,132,211,132,3,179,132,129,211,132,5,212,132,134,211,132, + 211,132,212,132,211,132,179,132,180,132,3,211,132,132,179,132,179,132,179,124, + 179,132,3,147,124,129,146,124,7,114,124,3,114,116,5,82,116,132,50,116, + 50,116,49,116,49,116,3,49,108,130,17,108,17,116,3,17,108,132,17,116, + 17,108,17,108,49,108,3,17,108,143,240,107,240,107,240,99,240,107,208,107, + 208,107,208,99,207,107,208,107,208,99,175,99,207,99,176,99,175,99,176,99, + 9,175,99,131,143,99,143,99,175,99,4,143,99,140,111,91,143,99,111,91, + 143,99,143,99,110,99,110,91,142,99,110,91,110,99,111,91,79,91,3,110, + 91,131,78,91,78,91,78,83,4,78,91,129,77,91,3,45,91,156,45,83, + 13,83,45,83,45,91,13,83,45,91,13,83,45,91,45,83,13,91,45,91, + 13,83,13,83,13,91,13,83,13,83,237,82,237,82,236,82,237,90,237,82, + 13,83,236,74,237,82,237,82,236,74,236,74,204,82,3,204,74,131,236,74, + 204,74,236,74,3,204,74,132,204,82,204,74,204,74,172,74,5,204,74,134, + 172,74,204,74,204,82,236,74,204,82,204,82,3,236,82,134,236,74,237,74, + 204,82,204,82,204,74,204,82,3,204,74,150,236,74,204,74,236,74,236,74, + 204,74,236,74,236,74,237,74,205,82,236,74,236,74,236,82,204,74,204,74, + 205,74,205,74,204,74,236,74,236,74,205,74,237,74,237,74,3,237,82,5, + 13,83,139,237,82,204,74,171,74,106,66,73,66,41,58,8,58,40,58,40, + 58,105,66,170,66,3,202,74,138,11,91,76,99,11,91,138,74,73,66,199, + 49,102,33,70,33,37,33,69,33,3,102,33,3,134,33,129,135,33,4,135, + 41,136,103,33,135,41,135,41,134,41,135,41,167,41,135,41,135,41,3,167, + 41,179,200,41,168,41,200,41,200,49,135,41,236,90,174,115,240,123,199,49, + 70,33,228,16,4,25,199,49,73,58,232,57,134,41,167,49,9,58,8,58, + 40,66,199,57,105,74,170,82,73,66,5,25,235,98,210,156,210,156,16,124, + 17,116,49,124,240,115,199,49,162,16,163,16,98,16,163,16,138,66,17,116, + 17,116,16,116,240,107,240,107,240,115,240,107,241,107,240,107,240,115,240,107, + 240,107,208,115,4,240,107,9,208,107,146,208,99,207,99,175,107,207,107,175, + 107,175,107,207,107,208,107,175,107,175,107,208,107,207,107,175,99,175,107,207, + 107,175,107,175,99,175,99,3,143,99,131,175,99,143,99,142,99,3,110,99, + 131,143,99,142,99,142,99,8,110,99,132,143,99,143,107,110,99,143,99,4, + 143,107,131,175,107,175,107,143,99,7,175,107,134,110,99,134,41,0,0,65, + 8,199,49,208,115,4,175,107,130,143,107,143,107,4,175,107,3,143,107,142, + 142,107,142,107,143,107,110,99,110,107,142,107,142,107,195,32,33,8,65,8, + 97,8,33,0,98,16,98,16,5,65,8,140,196,24,163,24,195,24,70,33, + 102,33,37,25,163,16,228,24,163,24,98,16,65,8,65,8,222,2,135,203, + 90,12,99,45,107,142,107,175,115,239,123,16,132,3,81,132,3,114,132,136, + 146,132,114,132,146,132,146,132,147,132,146,132,146,140,146,140,3,179,132,131, + 147,140,178,132,179,132,5,179,140,133,211,140,179,140,179,140,211,140,179,140, + 8,211,140,132,243,148,211,140,243,140,243,140,4,211,140,136,212,140,212,140, + 211,140,212,140,244,140,243,140,244,140,211,140,7,244,140,132,244,148,20,149, + 244,148,20,141,20,20,149,131,244,140,20,141,20,141,3,244,140,132,20,141, + 244,140,244,140,20,141,3,244,140,129,244,132,3,244,140,134,212,140,244,132, + 212,132,212,132,244,132,244,132,4,244,140,130,20,141,244,140,7,20,141,131, + 244,140,244,140,20,141,4,244,140,129,244,132,6,212,132,130,211,132,211,132, + 3,212,132,131,211,132,212,132,211,132,6,179,132,132,179,124,179,124,147,124, + 179,124,7,147,124,136,179,124,147,124,147,124,147,132,147,124,147,124,115,124, + 114,124,4,114,116,3,114,124,129,114,116,3,82,124,14,82,116,130,49,116, + 81,116,13,49,116,139,17,116,49,108,17,108,17,116,17,108,17,108,16,108, + 16,116,16,116,240,107,16,108,6,240,107,10,208,107,129,240,107,3,208,107, + 140,208,99,208,99,208,107,175,107,176,99,208,99,175,99,176,107,176,99,176, + 99,175,99,143,99,6,175,99,7,143,99,131,143,91,143,99,143,91,5,143, + 99,131,175,99,175,99,143,99,4,175,99,129,176,99,3,175,99,6,143,99, + 6,175,99,131,143,99,175,99,176,99,5,143,99,173,143,91,143,99,143,99, + 175,99,143,99,176,99,143,99,175,99,176,99,176,107,176,99,176,99,208,99, + 175,99,143,99,111,99,46,91,237,82,171,74,138,74,73,66,73,58,41,58, + 73,58,137,66,170,74,170,74,137,74,169,74,10,91,11,91,137,74,137,74, + 8,58,167,49,70,33,37,25,69,33,102,33,102,33,135,33,102,33,135,33, + 135,33,135,41,3,135,33,136,135,41,135,33,134,41,135,41,167,41,135,41, + 167,41,135,41,3,167,41,130,168,49,200,41,3,200,49,167,135,49,236,90, + 142,115,16,124,199,49,102,41,228,24,228,24,199,49,74,66,41,66,167,49, + 101,41,102,41,102,41,167,49,167,49,232,57,138,82,170,82,163,16,170,82, + 178,156,178,156,16,132,241,115,241,115,49,124,208,107,41,58,162,16,98,16, + 98,16,162,16,171,74,240,115,17,116,240,115,240,107,3,240,115,5,240,107, + 131,208,107,240,107,240,107,7,208,107,129,240,107,3,208,107,141,207,107,175, + 107,175,99,175,107,207,107,207,107,176,107,175,107,175,107,208,107,175,107,207, + 99,175,107,4,175,99,131,143,99,175,99,143,107,3,143,99,131,111,99,143, + 99,111,99,3,143,99,132,111,99,110,99,143,99,110,99,3,110,91,129,110, + 99,4,143,99,132,142,107,143,99,175,107,143,107,11,175,107,134,77,99,163, + 16,0,0,65,8,171,74,208,107,11,175,107,143,174,107,142,107,142,107,143, + 107,142,107,143,107,110,107,102,49,98,16,130,16,98,8,65,8,66,8,130, + 16,97,8,4,65,8,138,97,8,163,16,163,16,130,16,69,33,37,25,196, + 24,195,24,195,24,97,16,3,65,8,31,3,136,203,90,236,98,44,99,109, + 107,174,115,239,123,48,124,49,132,3,81,132,4,114,132,4,146,132,136,146, + 140,147,140,179,140,146,132,147,132,147,132,178,132,178,132,5,179,140,129,211, + 140,3,179,140,136,211,140,211,140,179,140,211,140,211,140,179,140,211,140,211, + 140,3,243,140,143,211,140,243,140,212,140,211,140,211,140,212,140,211,140,211, + 140,212,140,244,140,243,140,244,140,244,140,243,140,243,140,3,244,140,136,20, + 141,244,148,20,149,244,148,244,148,20,149,244,148,244,148,7,20,149,131,52, + 149,20,149,21,149,8,20,149,137,20,141,20,141,244,148,244,140,244,148,244, + 140,20,149,244,148,20,141,3,244,140,129,20,141,5,244,140,129,212,140,3, + 244,140,129,212,140,3,244,140,5,20,141,3,21,149,134,21,141,20,149,21, + 149,20,149,20,141,21,149,6,20,141,130,244,140,244,132,6,244,140,129,20, + 141,6,244,140,138,244,132,244,140,244,140,244,132,244,132,244,140,244,140,244, + 132,244,140,212,132,7,244,132,3,244,140,4,212,132,131,211,132,179,132,212, + 132,3,211,132,135,212,132,212,132,211,132,179,132,180,132,211,132,211,132,3, + 212,132,135,180,132,211,132,212,132,211,132,212,132,211,132,179,124,5,179,132, + 133,179,124,179,132,147,132,179,132,179,124,4,179,132,144,147,124,179,124,179, + 124,147,132,179,124,147,132,146,132,147,132,146,124,146,124,147,132,147,124,146, + 132,147,124,147,124,146,124,20,114,124,135,114,116,82,124,114,124,114,116,82, + 124,82,116,82,124,3,82,116,129,82,124,4,82,116,135,82,124,82,116,82, + 116,50,116,50,116,82,116,82,116,6,49,116,131,50,116,50,116,49,116,5, + 82,116,138,50,116,82,116,82,116,50,116,82,116,82,116,50,116,82,116,82, + 116,49,116,5,82,116,133,50,116,50,116,82,116,50,116,82,116,5,50,116, + 133,82,116,50,116,50,116,82,116,50,116,4,82,116,129,82,124,4,82,116, + 157,17,108,17,108,208,107,111,91,45,83,204,74,138,74,106,74,73,66,73, + 66,105,66,105,66,170,74,169,74,105,74,169,82,202,90,169,74,203,82,105, + 74,8,66,102,41,37,33,69,33,102,33,134,33,135,33,135,33,135,41,3, + 135,33,131,135,41,135,41,167,41,3,135,41,166,167,41,135,33,135,41,167, + 41,135,41,167,41,167,41,168,41,200,49,200,41,200,49,200,49,167,41,171, + 82,142,107,48,132,8,58,135,41,228,24,4,25,199,49,106,66,106,74,232, + 57,167,41,231,57,232,57,105,74,73,74,171,82,109,115,235,90,4,25,170, + 82,146,148,145,148,48,132,240,107,3,17,116,137,208,107,138,66,65,8,65, + 8,98,16,163,16,138,66,16,116,17,116,3,240,115,3,240,107,135,240,115, + 240,107,240,107,240,115,208,107,240,107,240,115,4,208,107,129,240,107,6,208, + 107,133,207,107,176,107,175,107,175,107,208,107,3,175,107,130,208,107,207,107, + 5,175,107,135,175,99,175,99,143,99,143,107,143,99,143,99,175,99,7,143, + 99,4,110,99,138,110,91,78,91,110,99,110,99,142,99,143,99,142,99,142, + 99,143,99,143,107,6,175,107,129,207,107,3,175,107,137,207,107,175,107,208, + 115,138,74,65,8,0,0,4,25,77,91,208,107,11,175,107,3,143,107,147, + 142,107,175,107,73,66,163,24,227,24,130,16,98,8,33,8,130,16,130,16, + 65,8,65,8,97,8,97,8,98,16,163,16,163,16,195,16,163,16,3,228, + 24,130,195,24,98,16,4,65,8,4,3,136,170,90,203,90,12,99,109,107, + 142,115,207,115,16,124,49,132,4,81,132,4,114,132,135,146,132,146,132,146, + 140,146,140,146,132,147,132,146,140,4,146,132,133,147,140,179,140,179,140,211, + 140,179,140,4,211,140,142,179,132,211,140,211,140,179,132,178,132,179,132,179, + 132,211,132,211,140,243,140,244,148,211,148,211,140,243,140,4,211,140,142,212, + 140,212,140,211,140,212,140,211,140,243,140,212,140,244,140,244,140,20,149,20, + 149,244,148,20,149,244,140,10,20,149,130,21,149,52,149,3,20,149,129,52, + 149,6,20,149,132,20,141,20,149,244,148,244,148,6,20,149,132,20,141,20, + 149,20,141,20,141,6,244,140,130,212,132,212,140,3,244,140,3,20,141,141, + 21,149,20,141,20,149,21,149,21,149,21,141,21,149,20,149,20,149,53,149, + 20,141,20,149,52,149,3,21,149,131,20,149,20,149,20,141,5,244,140,129, + 20,149,3,20,141,130,244,140,21,149,4,20,141,131,20,149,20,141,20,141, + 11,244,140,130,20,141,20,141,9,244,140,129,244,132,5,244,140,129,20,141, + 4,244,140,131,20,141,20,141,21,141,3,20,141,134,21,141,21,141,20,141, + 244,140,20,141,20,141,6,244,140,129,20,141,6,244,140,129,20,141,17,244, + 140,134,212,140,244,140,212,140,212,140,244,140,212,132,7,244,140,151,20,141, + 244,140,244,140,212,140,244,140,244,132,244,132,212,132,244,132,244,132,244,140, + 244,132,244,140,212,140,244,140,212,140,244,140,212,132,212,132,244,140,212,132, + 212,132,211,132,8,212,132,129,211,132,7,212,132,129,244,132,7,212,132,129, + 244,132,4,212,132,134,244,132,212,132,244,132,212,132,212,132,244,132,18,212, + 132,140,244,132,212,132,212,132,212,124,179,124,147,124,82,116,17,108,176,99, + 78,91,236,74,139,74,5,138,74,143,202,74,170,74,169,74,169,82,169,82, + 234,82,234,90,170,82,232,57,102,41,69,33,103,33,103,41,135,33,135,33, + 5,135,41,129,167,41,4,135,41,190,167,41,135,41,167,41,135,41,167,41, + 135,41,167,41,200,49,168,49,168,41,200,49,200,49,167,41,203,82,142,107, + 48,132,106,74,135,41,4,25,228,24,232,57,203,82,236,90,170,82,138,74, + 203,82,236,90,174,115,174,123,174,123,16,132,12,99,70,33,73,74,113,148, + 81,140,48,132,241,115,17,116,240,107,240,115,17,116,50,124,204,74,163,16, + 65,8,98,16,130,16,40,58,240,107,17,116,240,107,240,115,240,115,241,115, + 240,115,240,107,240,107,208,107,240,107,240,107,240,115,3,240,107,139,208,107, + 240,107,208,107,240,107,208,107,208,107,240,107,240,107,208,107,208,107,175,107, + 3,207,107,3,208,107,135,175,107,207,107,176,107,176,107,207,107,175,99,175, + 99,3,175,107,135,175,99,175,107,143,99,175,99,175,107,175,99,143,107,5, + 143,99,132,111,99,143,99,110,99,110,99,4,110,91,133,143,99,142,99,143, + 107,143,99,110,99,6,175,107,142,176,107,175,107,175,107,208,107,207,107,175, + 107,175,107,208,115,73,66,33,0,32,0,69,33,110,99,208,107,10,175,107, + 139,143,107,175,99,174,107,175,107,236,90,228,24,228,24,195,24,98,16,98, + 16,33,8,3,65,8,145,97,8,65,8,97,8,162,16,195,16,195,24,163, + 16,130,16,196,24,228,24,228,24,163,16,98,16,66,16,65,8,65,8,98, + 8,192,2,137,170,90,203,90,12,99,77,107,142,115,207,115,16,124,48,132, + 49,132,3,81,132,131,113,132,114,132,114,132,4,146,132,129,146,140,7,146, + 132,5,179,140,5,211,140,129,179,140,5,179,132,131,211,132,211,140,211,140, + 3,243,140,6,211,140,129,212,140,3,211,140,129,212,140,4,244,140,133,244, + 148,244,140,244,148,20,149,244,148,26,20,149,137,244,148,244,148,20,149,20, + 149,244,148,20,149,244,140,20,141,20,149,6,244,140,129,212,140,5,244,140, + 149,20,141,20,149,20,149,21,141,20,141,20,141,20,149,20,149,21,149,20, + 149,20,149,53,149,21,149,21,149,52,149,21,149,52,149,21,149,20,149,20, + 141,20,141,4,244,140,130,20,141,20,149,3,20,141,134,20,149,20,149,21, + 149,20,141,20,141,20,149,3,20,141,129,245,140,9,20,141,3,244,140,129, + 20,141,11,244,140,134,20,141,20,141,244,140,244,140,244,148,244,140,3,20, + 141,131,21,149,21,141,20,149,3,21,149,132,20,141,21,149,20,149,20,149, + 4,20,141,9,244,140,4,20,141,129,21,141,5,20,141,134,21,141,21,141, + 21,149,245,140,21,149,21,149,3,20,141,156,244,140,20,141,20,141,244,140, + 20,141,244,140,20,141,21,149,21,149,21,141,53,149,21,149,21,149,53,149, + 21,149,21,141,21,149,21,141,21,141,21,149,21,141,53,149,21,141,21,141, + 21,149,21,141,21,149,21,149,5,21,141,140,53,141,21,141,20,141,21,141, + 21,149,21,141,20,141,21,141,20,141,21,141,245,140,245,140,11,21,141,129, + 53,141,8,21,141,130,53,141,53,141,26,21,141,137,244,132,212,132,147,124, + 82,116,17,108,208,107,45,91,204,82,171,82,4,203,74,139,203,82,203,82, + 170,74,170,82,170,82,234,82,11,91,235,90,73,66,231,57,134,41,6,135, + 33,133,135,41,135,33,167,41,135,41,167,41,6,135,41,5,167,41,129,168, + 49,3,200,49,168,168,41,171,82,174,115,16,124,12,99,167,41,69,33,228, + 24,232,57,77,107,109,107,45,107,77,107,109,107,142,115,48,140,15,132,142, + 115,15,132,12,99,102,33,41,66,113,148,49,140,48,132,241,115,17,116,240, + 115,240,107,241,115,17,116,17,116,204,82,195,16,65,8,162,24,227,24,170, + 74,208,107,17,116,4,240,107,132,240,115,240,107,240,115,240,115,3,240,107, + 134,240,115,240,107,208,107,208,107,240,107,240,107,3,208,107,129,240,107,3, + 208,107,129,207,107,5,208,107,132,175,107,208,107,175,107,207,107,3,175,107, + 134,207,107,175,99,175,107,175,107,175,99,175,107,4,175,99,8,143,99,3, + 110,99,130,110,91,110,91,4,110,99,130,142,99,143,107,7,175,107,129,176, + 107,4,175,107,138,207,107,142,107,134,41,0,0,97,8,8,58,240,115,207, + 107,175,107,207,107,9,175,107,153,143,107,240,115,37,41,227,24,228,32,130, + 16,66,8,98,16,33,8,65,8,65,8,97,8,130,8,228,24,65,8,98, + 16,130,16,98,8,98,16,130,16,196,16,228,24,228,24,98,16,97,8,3, + 65,8,1,97,8,18,3,138,138,82,171,90,235,98,77,107,142,107,207,115, + 240,123,49,124,49,132,81,124,3,81,132,3,114,132,129,146,132,3,146,140, + 7,146,132,132,179,140,179,140,178,140,179,140,3,211,140,131,179,140,211,140, + 179,140,4,179,132,131,178,140,179,140,179,140,4,211,140,152,243,140,212,140, + 243,140,211,140,211,140,212,140,211,140,212,140,212,140,211,140,211,140,212,140, + 244,140,244,148,243,140,244,148,244,140,244,148,244,140,20,149,20,149,244,140, + 20,149,244,148,23,20,149,135,244,148,20,149,244,148,244,148,20,141,20,149, + 244,148,8,244,140,130,212,140,212,140,3,244,140,140,20,149,20,141,20,141, + 20,149,20,149,20,141,21,141,20,149,20,149,21,149,20,149,53,149,3,21, + 149,133,20,149,21,149,53,149,20,149,20,149,7,244,140,130,20,149,244,140, + 4,20,149,139,21,149,20,149,21,149,20,149,21,149,20,141,20,149,21,149, + 20,149,20,141,21,141,3,20,141,133,244,140,20,149,20,141,244,140,244,140, + 3,20,141,133,244,140,244,140,20,141,244,140,20,141,4,244,140,138,20,149, + 20,149,20,141,21,141,244,140,20,141,244,148,20,149,20,149,20,141,3,21, + 149,130,53,149,53,149,4,21,149,139,20,149,20,149,20,141,245,140,20,141, + 20,141,244,140,20,141,244,140,244,140,20,141,3,244,140,3,20,141,138,244, + 148,21,141,21,141,21,149,20,149,20,141,20,149,20,141,20,149,20,141,4, + 21,149,139,20,149,20,149,21,149,20,149,244,148,20,141,20,149,244,148,20, + 141,21,149,21,149,11,53,149,129,21,149,15,53,149,133,21,149,53,149,21, + 149,21,149,53,149,3,21,141,133,53,149,21,141,53,149,53,149,21,149,14, + 53,149,131,85,149,53,149,86,149,14,53,149,130,54,149,53,141,3,53,149, + 147,54,149,53,149,53,141,53,149,53,149,54,149,53,141,21,141,21,141,245, + 140,180,132,147,124,82,116,241,107,110,99,13,91,204,82,203,74,204,82,3, + 236,82,129,235,82,3,170,82,137,203,82,11,99,43,99,170,82,105,74,8, + 58,134,41,135,33,135,33,3,167,33,132,135,41,167,41,167,33,167,33,4, + 135,41,129,167,33,3,167,41,148,167,33,167,41,167,41,168,41,200,41,200, + 49,200,41,200,49,200,49,138,74,142,107,16,124,174,115,168,41,135,33,196, + 16,8,66,239,123,207,123,174,123,3,207,123,139,48,140,48,140,109,115,16, + 132,77,107,102,41,7,58,145,148,81,140,48,140,240,107,3,240,115,142,16, + 116,16,116,17,116,17,124,13,91,98,8,97,16,227,32,133,57,171,82,240, + 115,17,116,240,107,208,107,5,240,107,131,240,115,240,107,240,107,3,208,107, + 3,240,107,129,208,107,5,240,107,8,208,107,129,176,107,3,208,107,131,175, + 107,176,107,207,107,6,175,107,133,143,99,175,99,143,99,175,107,143,107,3, + 143,99,129,175,99,3,143,99,138,111,99,110,99,110,99,78,99,110,91,110, + 99,78,99,110,99,143,107,143,99,6,175,107,148,207,107,207,107,175,107,208, + 107,207,107,240,115,49,124,81,132,175,115,163,16,0,0,130,8,45,91,240, + 115,175,107,175,107,207,107,175,107,175,107,207,107,5,175,107,137,207,107,110, + 99,228,32,4,25,163,16,65,8,66,8,98,8,33,8,3,65,8,132,69, + 25,49,108,171,82,32,16,3,65,8,138,97,8,163,16,196,24,195,24,130, + 16,97,8,65,8,65,8,97,8,97,8,22,3,145,105,82,170,90,235,98, + 45,107,110,115,174,115,239,123,16,124,49,124,49,124,81,124,81,132,81,132, + 114,132,81,132,114,132,114,132,5,146,132,129,114,132,3,146,132,130,147,132, + 146,132,4,179,140,129,211,140,3,179,140,136,211,132,179,132,179,132,147,132, + 178,132,179,132,179,132,179,140,3,211,140,132,243,140,211,140,212,140,212,140, + 4,211,140,136,212,140,211,140,212,140,244,140,243,140,243,140,244,140,244,140, + 4,244,148,130,20,141,244,148,21,20,149,142,244,148,20,149,244,148,244,148, + 20,141,244,140,244,140,20,141,20,141,244,140,244,140,20,141,244,140,20,141, + 11,244,140,132,20,141,20,141,20,149,20,141,3,20,149,151,20,141,20,141, + 20,149,20,149,20,141,21,149,21,149,52,149,21,149,53,149,53,149,21,149, + 20,149,244,140,244,140,244,148,244,140,20,149,244,140,244,148,20,149,20,141, + 20,141,6,20,149,139,21,149,20,149,21,149,21,149,20,149,20,149,20,141, + 20,141,21,149,20,141,20,141,3,20,149,136,20,141,20,141,244,140,20,141, + 20,141,20,149,20,149,20,141,3,244,140,131,20,141,244,140,20,141,3,20, + 149,133,20,141,20,149,20,149,245,148,20,141,6,21,149,138,53,149,53,149, + 21,149,21,149,20,149,21,149,20,149,20,149,20,141,20,141,7,244,140,129, + 20,141,4,20,149,133,21,141,20,149,21,141,20,141,20,141,5,20,149,137, + 21,149,20,149,21,149,20,149,21,149,21,149,20,149,21,149,20,141,4,21, + 149,6,53,149,129,85,149,8,53,149,130,85,149,85,157,4,53,149,130,85, + 157,85,149,9,53,149,129,21,149,3,53,149,129,21,149,14,53,149,134,85, + 149,85,149,53,149,85,149,85,149,53,149,4,85,149,132,53,149,85,149,85, + 149,53,149,3,85,149,6,53,149,159,85,149,85,157,85,149,53,149,85,149, + 53,149,85,149,53,149,53,149,86,149,53,149,53,149,21,141,245,140,212,132, + 147,132,114,124,17,116,175,107,78,91,237,82,236,90,236,82,236,82,12,83, + 12,83,236,82,170,74,170,74,202,74,170,74,3,137,74,134,170,82,137,74, + 8,58,167,41,135,33,135,33,5,135,41,132,135,33,135,41,135,33,135,33, + 4,135,41,5,167,41,157,200,41,168,41,200,49,200,49,168,41,106,74,109, + 107,48,132,77,99,200,49,168,41,228,24,199,49,45,99,142,115,142,115,207, + 131,16,132,239,123,16,132,80,140,109,107,239,123,77,107,134,41,134,41,16, + 132,175,115,174,123,4,240,115,141,17,116,240,115,240,107,17,116,81,124,237, + 82,195,16,98,16,69,49,199,65,170,82,241,115,17,116,5,240,107,129,240, + 115,5,240,107,131,208,107,240,107,208,107,8,240,107,3,208,107,131,207,107, + 208,107,240,107,3,208,107,135,176,107,208,107,208,107,207,107,208,107,207,107, + 208,107,4,175,107,131,175,99,175,99,175,107,4,175,99,130,143,99,175,99, + 5,143,99,136,142,99,110,99,110,91,110,99,110,91,142,99,142,99,143,107, + 4,175,107,149,207,107,175,107,207,107,175,107,208,107,16,116,240,115,171,82, + 130,24,98,16,227,32,228,32,65,16,0,0,37,25,110,99,208,115,208,107, + 208,107,207,107,207,107,6,175,107,145,208,107,105,74,228,24,195,24,65,8, + 65,8,195,24,195,24,33,8,65,8,98,8,98,16,97,8,232,49,235,98, + 65,24,65,16,3,65,8,133,98,16,163,16,163,16,98,16,97,8,4,65, + 8,10,3,139,106,82,170,90,235,98,77,107,110,107,174,115,240,123,16,124, + 48,124,49,132,81,124,3,81,132,129,113,132,6,114,132,5,146,132,129,178, + 140,4,179,140,135,211,140,211,140,179,140,179,140,179,132,179,140,179,140,5, + 179,132,129,179,140,5,211,140,131,212,140,211,140,243,140,4,211,140,132,243, + 140,212,140,244,140,243,140,3,244,140,129,243,140,3,244,140,133,244,148,20, + 149,244,148,20,149,244,148,21,20,149,130,244,148,244,148,20,244,140,132,20, + 141,20,149,20,149,20,141,3,20,149,3,20,141,140,20,149,20,149,21,149, + 21,149,20,149,53,149,21,149,53,149,20,149,20,149,244,148,20,149,3,244, + 148,3,20,149,132,20,141,20,149,20,149,244,148,3,20,149,129,20,141,6, + 20,149,132,20,141,20,141,20,149,20,141,8,20,149,138,20,141,20,149,20, + 141,244,140,20,141,244,140,20,141,244,140,20,141,244,140,6,20,149,130,21, + 149,20,149,3,21,149,137,53,149,21,149,21,149,53,149,21,149,53,149,21, + 149,20,149,20,149,5,20,141,129,244,148,4,244,140,130,20,149,244,140,4, + 20,149,132,20,141,21,141,21,149,244,148,3,20,149,133,21,149,20,149,21, + 149,20,149,20,149,6,21,149,132,20,149,20,149,21,149,20,149,5,53,149, + 129,53,157,3,53,149,129,85,149,5,53,149,135,53,157,85,149,53,157,53, + 157,85,157,53,149,85,149,14,53,149,130,21,149,21,149,15,53,149,148,85, + 149,53,149,53,149,85,149,85,149,53,157,85,149,85,157,85,157,53,149,53, + 157,53,149,53,149,85,149,53,149,85,149,53,157,85,149,53,149,53,149,3, + 85,149,136,53,149,85,149,53,149,85,149,85,149,53,149,53,149,85,149,3, + 53,149,174,53,141,21,141,244,140,179,132,82,124,17,116,176,99,78,91,237, + 82,237,82,13,91,13,91,237,82,12,83,236,82,170,74,137,66,170,74,235, + 82,170,82,104,66,39,58,39,58,40,66,7,58,167,49,134,33,102,33,102, + 41,103,33,103,33,102,33,103,33,135,33,135,33,103,33,103,33,134,41,134, + 33,102,33,135,41,102,33,135,33,134,41,134,41,135,33,3,135,41,171,167, + 49,135,41,41,66,109,107,81,132,199,49,135,41,135,41,4,25,37,33,69, + 33,167,49,232,57,105,74,73,66,73,66,105,74,106,74,106,74,105,74,41, + 66,199,49,102,41,167,49,134,41,203,82,49,124,240,115,240,107,240,107,240, + 115,17,116,17,116,240,115,17,116,17,116,204,74,195,16,162,24,133,57,198, + 65,236,82,241,115,4,240,115,3,240,107,130,240,115,240,115,4,240,107,132, + 208,107,240,107,240,107,208,107,3,240,107,131,240,115,240,107,240,107,8,208, + 107,131,175,107,208,107,207,107,3,208,107,130,207,107,208,107,4,175,107,137, + 175,99,175,99,175,107,175,99,175,107,143,99,143,99,175,99,142,107,5,143, + 99,134,142,99,142,99,110,99,110,99,142,99,143,99,4,175,107,148,207,107, + 207,107,175,107,207,107,208,107,49,124,12,91,4,33,0,0,0,0,1,0, + 0,0,1,0,65,8,65,8,97,8,41,58,208,107,208,115,208,107,3,207, + 107,149,175,107,175,107,207,107,175,107,208,107,110,107,199,57,228,24,163,16, + 98,8,65,8,98,8,228,24,65,8,65,8,66,8,98,16,130,16,130,16, + 162,24,65,16,3,65,8,132,33,8,98,8,163,16,163,16,6,65,8,33, + 3,140,138,82,170,90,235,98,45,107,109,107,174,115,207,115,16,124,48,124, + 49,124,49,132,49,132,3,81,124,129,81,132,6,114,132,4,146,132,131,178, + 132,179,140,178,140,3,179,140,129,211,140,3,179,140,130,179,132,179,140,3, + 179,132,131,179,140,179,132,179,132,6,211,140,136,243,140,211,140,212,140,212, + 140,211,140,243,140,243,140,212,140,4,244,140,129,243,140,3,244,140,132,244, + 148,244,140,20,149,20,141,17,20,149,134,244,148,20,149,20,149,244,148,20, + 149,20,149,6,244,140,132,20,149,244,140,244,140,20,141,12,244,140,130,244, + 148,244,148,6,20,149,135,20,141,20,141,20,149,20,149,21,149,21,149,20, + 149,4,53,149,129,20,149,4,244,148,131,20,149,20,149,244,148,4,20,149, + 129,244,140,11,20,149,134,21,149,20,149,20,149,21,149,20,149,21,149,5, + 20,149,136,21,149,20,149,21,141,244,140,20,141,244,140,20,141,244,140,3, + 20,141,4,20,149,131,21,141,21,149,20,149,3,21,149,141,53,149,21,149, + 53,149,21,149,53,149,21,149,20,149,20,149,244,148,20,141,244,148,244,148, + 20,141,5,244,140,142,20,141,20,149,244,148,20,149,20,141,20,149,20,149, + 21,149,21,149,20,149,21,149,20,149,21,149,20,149,3,21,149,130,20,149, + 20,149,3,21,149,136,20,149,20,149,21,149,53,149,21,149,53,149,53,149, + 21,149,3,53,149,133,85,149,53,157,53,157,53,149,85,149,4,53,149,140, + 53,157,53,149,53,149,85,149,85,149,53,157,53,149,85,157,85,149,53,149, + 85,149,85,149,10,53,149,129,21,149,16,53,149,142,53,157,85,157,85,149, + 53,149,85,149,85,149,53,157,85,157,85,149,85,157,85,157,53,157,85,157, + 53,157,3,85,149,142,53,157,85,157,85,149,53,149,85,149,53,149,85,149, + 85,157,53,149,85,157,53,149,53,149,53,157,85,149,4,53,149,155,21,149, + 53,141,244,140,179,132,115,124,17,116,175,99,46,91,237,74,237,74,13,83, + 45,91,45,91,12,91,236,90,170,74,105,66,105,66,202,74,235,90,234,82, + 169,74,137,74,137,74,105,74,8,58,134,41,3,69,33,135,70,33,70,33, + 102,33,70,33,102,33,70,33,70,33,6,102,33,130,102,41,102,33,3,102, + 41,154,134,41,102,41,102,41,8,66,174,115,48,132,138,74,134,41,102,41, + 4,25,102,41,231,57,138,74,170,82,170,82,203,90,203,90,170,82,138,82, + 138,82,105,74,8,58,9,58,8,58,41,66,170,82,3,240,115,134,240,107, + 16,116,240,115,16,116,240,115,241,115,3,17,116,136,171,74,97,8,227,32, + 101,49,166,57,13,91,17,116,240,115,5,240,107,130,240,115,240,115,5,240, + 107,132,208,107,240,107,208,107,240,107,3,240,115,130,240,107,240,107,7,208, + 107,135,207,107,175,107,208,107,208,107,207,107,176,107,208,107,3,207,107,8, + 175,107,133,143,107,143,107,175,99,175,107,175,99,3,143,99,182,175,99,143, + 99,143,99,110,99,110,99,111,99,143,107,175,107,175,107,207,107,175,107,207, + 107,175,107,175,107,16,116,17,124,232,65,32,8,0,8,33,8,33,8,33, + 0,1,0,1,0,33,8,65,8,33,8,195,16,13,83,17,124,208,107,208, + 107,240,115,240,115,17,124,16,116,16,116,17,116,175,107,171,82,102,41,227, + 24,131,16,65,8,97,8,33,8,227,24,97,16,65,8,97,8,98,8,130, + 16,162,16,228,32,4,65,8,132,33,8,65,8,130,8,98,8,6,65,8, + 46,3,138,138,82,171,90,235,98,44,99,109,107,174,115,239,123,240,123,16, + 124,49,132,3,49,124,4,81,124,139,81,132,81,132,114,132,114,132,146,132, + 114,132,146,132,147,132,146,140,178,140,146,140,3,179,140,135,211,140,179,140, + 179,140,211,140,179,140,179,132,211,132,3,179,132,132,211,140,179,132,211,132, + 179,132,6,211,140,137,212,140,244,140,211,140,244,140,244,140,212,140,212,140, + 243,140,244,140,3,244,148,136,244,140,211,140,211,140,179,140,211,140,243,140, + 244,148,20,149,3,244,148,133,20,149,244,148,20,149,20,149,244,148,11,20, + 149,136,244,148,20,149,244,148,20,149,244,140,244,148,244,140,20,141,3,244, + 140,129,244,148,9,244,140,141,20,149,244,140,244,140,244,148,244,140,244,140, + 20,149,244,140,20,149,20,149,244,140,20,149,20,141,4,20,149,134,21,149, + 52,149,53,149,21,149,53,149,21,149,3,20,149,131,244,140,244,148,20,141, + 10,20,149,129,21,149,9,20,149,137,21,149,20,149,21,149,20,149,21,149, + 20,149,21,149,20,149,21,149,3,20,149,3,20,141,155,244,140,21,149,20, + 141,21,149,20,149,20,149,21,149,20,149,21,149,21,149,20,149,21,149,21, + 149,53,149,21,149,53,149,53,149,21,149,53,149,20,149,20,149,21,141,20, + 141,244,148,244,148,244,140,244,148,8,244,140,143,20,149,21,149,21,149,20, + 141,21,149,20,149,20,149,21,149,20,149,21,149,21,149,20,149,21,149,21, + 149,20,149,4,21,149,134,53,149,52,149,21,149,21,149,20,149,21,149,7, + 53,149,129,53,157,3,53,149,129,85,149,6,53,149,131,85,149,53,149,53, + 157,3,85,157,30,53,149,141,85,149,53,149,53,157,85,157,53,149,53,157, + 53,157,85,157,53,157,85,157,85,157,53,157,85,157,3,53,157,133,85,149, + 53,157,85,157,53,157,53,157,9,53,149,132,85,149,53,149,53,149,85,149, + 3,53,149,146,20,141,212,132,115,124,50,116,143,91,14,83,172,66,172,66, + 237,74,13,83,78,91,45,91,13,91,171,82,138,74,73,66,105,66,170,74, + 3,235,90,134,11,91,44,99,11,91,105,74,102,41,37,33,7,69,33,133, + 69,25,69,33,37,33,69,33,70,33,5,69,33,147,102,33,70,33,70,33, + 102,33,69,33,199,57,142,115,16,124,12,91,134,41,37,33,4,25,166,49, + 105,74,12,99,109,115,109,107,109,115,109,115,3,77,107,135,12,99,12,99, + 44,99,44,99,77,107,77,107,175,107,6,240,115,164,241,115,240,115,240,115, + 17,116,17,116,49,124,138,66,163,16,195,32,4,41,69,41,236,82,49,116, + 240,115,208,107,240,107,240,115,240,107,240,107,240,115,240,107,208,107,240,107, + 208,107,240,107,240,107,208,107,208,107,240,115,240,107,240,115,240,107,240,115, + 240,107,208,107,240,107,6,208,107,130,175,107,207,107,3,208,107,137,176,107, + 175,107,207,107,207,107,175,99,207,107,207,107,175,107,207,107,8,175,107,140, + 175,99,143,99,175,107,143,107,143,99,175,107,143,99,142,99,110,91,142,99, + 175,99,208,107,3,207,107,170,240,115,16,116,171,82,65,16,0,0,33,0, + 33,8,33,0,1,8,33,0,33,0,65,8,65,8,65,0,33,8,0,0, + 195,16,175,107,17,124,207,115,77,99,236,90,171,74,73,66,41,66,106,74, + 167,49,199,49,37,33,195,16,130,16,98,16,65,8,65,8,98,8,227,24, + 33,8,97,8,97,16,98,16,130,16,130,16,4,65,8,129,32,8,3,65, + 8,134,98,8,65,8,65,8,33,8,65,8,65,8,144,2,142,138,82,171, + 90,235,98,44,99,109,107,142,115,207,115,239,123,16,124,48,124,49,124,49, + 124,81,132,49,124,5,81,124,131,113,132,114,132,114,132,3,146,132,130,147, + 140,178,140,7,179,140,5,179,132,131,179,140,179,140,179,132,3,211,132,6, + 211,140,132,243,140,211,140,212,140,212,140,3,244,140,146,212,140,244,140,243, + 140,244,140,244,140,211,140,211,140,179,132,211,140,211,132,244,140,244,140,20, + 149,244,148,244,148,20,149,244,148,244,148,17,20,149,131,244,140,244,148,244, + 148,14,244,140,131,20,141,244,148,20,149,4,244,140,7,20,149,129,244,148, + 5,20,149,131,53,149,20,149,53,149,4,20,149,130,244,148,244,140,26,20, + 149,3,21,149,130,20,149,21,149,3,20,149,3,20,141,129,20,149,3,21, + 149,132,20,149,21,149,21,149,20,149,4,21,149,134,20,149,20,149,21,149, + 53,149,21,149,53,149,3,21,149,131,20,141,20,149,20,149,6,244,140,142, + 244,148,244,140,20,149,244,140,20,149,20,141,20,149,20,149,21,149,20,149, + 21,149,21,149,20,149,20,149,9,21,149,129,53,149,5,21,149,10,53,149, + 129,53,157,10,53,149,130,53,157,85,157,20,53,149,129,53,157,7,53,149, + 137,53,157,53,149,53,149,85,149,53,149,85,157,85,157,53,149,53,149,7, + 85,157,136,53,157,53,157,85,157,53,157,85,157,85,149,53,157,53,157,7, + 53,149,130,85,149,53,149,4,85,149,3,53,149,156,21,141,212,132,147,124, + 50,108,143,99,13,75,140,58,107,58,172,66,13,83,78,91,110,99,110,99, + 12,91,171,82,138,74,105,66,105,66,170,74,235,90,11,91,11,91,76,99, + 76,99,235,90,7,58,69,33,37,25,3,37,33,130,37,25,37,25,7,37, + 33,129,37,25,4,37,33,143,69,33,37,33,37,33,37,25,167,49,174,115, + 207,123,77,99,102,41,4,25,4,25,166,49,105,74,44,107,109,115,4,77, + 107,132,44,107,44,107,77,107,45,107,3,77,107,130,109,107,207,115,11,240, + 115,137,17,116,240,115,73,58,130,16,195,32,163,24,4,33,143,99,17,116, + 3,240,107,129,240,115,3,240,107,131,208,107,240,107,208,107,3,240,107,5, + 240,115,4,240,107,6,208,107,130,207,107,207,107,5,208,107,131,207,107,175, + 107,175,107,3,207,107,130,175,107,175,99,7,175,107,129,175,99,4,175,107, + 142,175,99,175,107,143,99,142,99,110,99,143,99,175,107,207,107,208,107,17, + 116,143,107,167,57,0,0,1,8,3,65,8,130,33,8,33,8,6,65,8, + 144,33,0,0,0,199,41,9,66,37,41,195,24,195,24,163,16,163,16,37, + 25,228,24,70,33,130,16,130,16,195,16,130,16,3,65,8,136,33,8,37, + 33,163,16,65,8,97,8,98,8,98,16,98,16,4,65,8,133,32,8,33, + 8,66,8,130,16,98,8,5,65,8,252,2,138,170,82,203,90,235,98,44, + 107,77,107,142,115,207,115,239,123,240,123,48,124,5,49,124,3,81,124,129, + 82,132,3,114,132,133,146,132,146,132,146,140,179,140,178,140,8,179,140,129, + 179,132,5,179,140,132,179,132,211,132,211,140,211,132,8,211,140,137,244,140, + 243,140,243,140,211,140,243,140,244,140,243,140,244,140,244,140,3,211,140,140, + 179,132,211,132,211,140,244,140,244,140,244,148,244,148,20,149,20,149,244,148, + 244,148,20,149,3,244,148,4,20,149,132,20,141,244,148,20,149,244,148,7, + 20,149,131,244,140,20,141,20,141,12,244,140,132,20,149,244,148,20,141,244, + 148,3,244,140,9,20,149,129,244,148,3,20,149,3,21,149,130,20,149,20, + 149,3,244,148,20,20,149,129,21,149,4,20,149,130,21,149,20,149,3,21, + 149,131,20,149,21,149,21,149,3,20,149,132,21,141,20,149,21,149,20,149, + 4,21,149,3,20,149,144,21,149,20,149,21,149,20,149,20,149,21,149,21, + 149,20,149,21,149,21,149,20,149,21,149,20,149,244,148,20,141,244,148,4, + 244,140,149,244,148,244,140,20,149,244,148,244,148,245,148,20,149,21,149,20, + 149,21,149,21,149,20,149,21,149,20,149,20,149,21,149,52,149,21,149,21, + 149,20,149,53,149,3,21,149,131,53,149,53,149,21,149,4,53,149,130,53, + 157,53,157,6,53,149,130,53,157,53,157,5,53,149,129,53,157,3,53,149, + 133,85,149,53,149,85,149,53,157,85,149,7,53,149,129,53,157,11,53,149, + 129,53,157,9,53,149,134,53,157,53,149,53,149,85,149,53,157,53,157,5, + 85,157,138,53,157,85,157,85,157,53,157,85,157,53,157,85,157,53,149,53, + 149,85,149,5,53,149,167,53,157,85,149,53,157,53,149,53,157,53,157,85, + 149,53,157,53,157,53,149,53,149,21,141,212,132,147,132,50,108,143,91,13, + 75,107,58,107,50,172,58,237,74,78,91,143,107,175,107,110,99,13,91,203, + 82,106,74,73,66,105,66,203,82,11,91,11,91,76,99,76,99,11,99,137, + 74,134,41,4,25,8,228,24,3,4,25,130,228,16,4,25,4,228,24,143, + 4,25,228,24,4,25,228,24,69,41,141,107,207,123,110,107,69,41,196,16, + 4,25,166,49,170,82,109,107,142,115,3,77,107,129,109,107,3,77,107,137, + 109,107,109,107,77,107,142,115,142,115,207,115,240,115,240,115,241,115,4,240, + 115,144,241,115,240,115,240,115,16,116,240,107,241,115,208,107,232,49,33,8, + 130,24,65,8,134,41,208,107,16,116,240,107,240,107,3,240,115,130,240,107, + 208,107,10,240,107,141,240,115,240,107,240,115,240,107,240,107,208,107,240,107, + 240,107,208,107,208,107,207,107,208,107,207,107,3,208,107,140,207,107,208,107, + 208,107,207,107,175,107,207,107,176,107,175,107,175,107,207,107,175,107,207,107, + 3,175,107,147,207,107,175,107,175,107,143,107,143,107,175,99,143,107,175,107, + 143,107,143,99,110,99,110,99,175,107,175,107,49,124,77,99,130,24,0,0, + 33,8,12,65,8,130,130,8,228,24,4,130,16,137,98,16,98,8,130,16, + 195,24,228,24,163,16,0,8,0,0,97,8,4,65,8,133,33,8,162,16, + 69,41,65,8,65,8,3,97,8,135,65,8,65,8,33,8,65,8,33,0, + 33,8,33,8,4,65,8,131,33,8,65,8,65,8,61,3,136,170,90,203, + 90,235,90,12,99,77,107,109,107,207,115,207,115,3,16,124,130,49,124,48, + 124,4,49,124,3,81,124,129,114,132,3,146,132,132,147,132,178,132,178,132, + 146,140,6,179,140,129,179,132,3,179,140,4,179,132,145,211,132,211,140,211, + 140,211,132,211,132,243,140,211,140,212,140,212,140,211,140,243,140,243,140,212, + 140,243,140,212,140,211,140,211,140,4,244,140,131,211,140,179,132,179,132,3, + 211,140,129,244,140,4,244,148,4,20,149,133,244,148,20,149,244,148,20,149, + 244,148,3,20,149,143,244,148,20,149,20,149,244,148,20,149,20,149,244,148, + 244,140,244,148,20,149,244,140,20,149,20,141,244,140,20,141,8,244,140,132, + 20,149,20,149,244,140,20,141,3,244,140,133,20,141,244,140,244,140,20,149, + 244,148,3,20,149,131,244,148,20,149,20,141,4,20,149,131,52,149,20,149, + 21,149,7,20,149,129,21,149,3,20,149,129,21,149,8,20,149,134,21,149, + 20,149,21,149,21,149,20,149,20,149,3,21,149,136,53,149,21,149,21,149, + 53,149,20,149,21,149,21,149,20,149,5,21,149,138,20,149,21,149,21,149, + 20,149,20,149,21,149,20,149,20,149,21,149,20,141,3,20,149,129,20,141, + 3,20,149,146,21,149,20,149,21,149,21,149,244,148,245,148,20,141,244,140, + 20,149,20,141,20,141,20,149,244,140,244,148,20,149,20,149,244,148,20,149, + 4,21,149,136,20,149,20,149,21,149,20,149,20,149,53,149,21,149,21,149, + 5,53,149,130,21,149,53,149,3,21,149,131,53,157,53,149,53,149,4,53, + 157,134,53,149,53,157,53,149,53,157,53,149,53,157,15,53,149,129,53,157, + 3,53,149,131,20,149,20,149,21,149,7,53,149,133,53,157,53,149,85,149, + 53,149,85,149,9,53,149,137,53,157,53,149,53,149,85,149,53,149,53,149, + 85,157,53,157,86,157,4,85,157,137,53,149,85,157,85,157,53,149,53,157, + 85,157,53,157,85,149,53,157,7,53,149,133,85,157,85,149,85,157,53,157, + 85,157,3,53,149,173,21,141,212,140,147,124,49,116,143,91,238,74,107,50, + 43,42,140,50,205,66,46,91,175,99,208,107,240,115,174,115,77,107,203,82, + 106,74,73,66,73,66,170,74,235,90,11,91,43,91,235,90,170,82,40,66, + 101,41,4,25,196,16,196,16,228,24,196,24,196,16,195,16,195,24,227,24, + 195,24,195,24,227,24,195,24,196,24,195,16,195,16,196,24,3,195,16,153, + 163,16,36,33,142,107,207,115,142,115,37,33,130,8,4,25,166,49,105,74, + 77,107,142,115,109,107,45,107,109,107,109,107,77,107,109,107,109,115,109,107, + 109,107,142,115,174,115,142,115,175,107,3,240,115,130,17,116,17,116,4,240, + 115,129,16,116,3,240,115,138,17,116,49,116,166,41,65,8,98,16,32,0, + 167,41,208,107,240,115,240,115,3,240,107,129,240,115,7,240,107,133,240,115, + 240,107,240,107,241,115,240,107,3,240,115,131,208,115,240,107,208,107,4,240, + 107,148,208,107,208,107,207,107,208,107,208,107,240,107,208,107,207,107,207,107, + 208,107,207,107,208,107,207,107,208,107,207,107,208,107,207,107,208,107,207,107, + 208,107,6,175,107,129,143,99,3,175,107,134,143,99,110,99,143,99,208,107, + 142,107,0,0,14,65,8,154,98,8,131,16,65,8,66,8,98,8,130,16, + 163,16,163,16,195,24,196,24,228,24,228,24,130,16,32,0,32,0,33,0, + 98,8,65,8,65,8,33,8,33,8,32,0,195,16,130,16,33,8,97,8, + 4,65,8,136,33,8,65,8,33,8,0,0,33,0,33,0,65,8,33,8, + 4,65,8,206,2,140,170,90,203,90,235,98,12,99,77,107,109,107,174,115, + 207,115,239,123,16,124,16,124,48,124,5,49,124,132,81,124,82,124,114,124, + 114,132,4,146,132,133,179,140,147,140,179,132,179,140,179,140,3,179,132,140, + 179,140,179,132,179,140,179,140,179,132,179,140,179,132,179,140,211,132,179,140, + 211,140,211,132,7,211,140,140,243,140,211,140,211,140,243,140,211,140,211,140, + 243,140,244,140,244,148,244,140,243,140,243,140,4,211,140,135,244,140,244,148, + 20,149,20,149,244,148,20,149,20,149,4,244,148,13,20,149,135,244,148,20, + 141,244,148,244,140,20,141,20,149,20,141,8,244,140,133,244,148,244,140,244, + 148,20,149,244,148,5,244,140,130,20,149,244,140,3,20,149,134,244,148,20, + 141,20,149,20,141,20,149,244,148,13,20,149,129,52,149,5,20,149,130,21, + 149,21,149,6,20,149,3,21,149,130,20,149,20,149,4,21,149,132,53,149, + 21,149,53,149,20,149,4,21,149,129,20,149,3,21,149,129,20,149,3,21, + 149,133,53,149,21,149,20,149,20,149,21,149,4,20,149,131,20,141,20,149, + 20,141,5,21,149,4,20,149,137,244,148,244,148,20,149,20,141,20,149,20, + 149,20,141,20,141,244,148,5,21,149,133,20,149,21,149,21,149,20,149,21, + 149,4,53,149,129,21,149,6,53,149,129,21,149,3,53,149,129,53,157,3, + 85,157,130,53,157,53,149,4,53,157,19,53,149,133,20,149,21,149,21,149, + 20,149,21,149,6,53,149,131,53,157,53,149,85,149,14,53,149,129,85,149, + 4,85,157,129,53,157,4,85,157,132,53,157,85,157,85,157,53,157,4,53, + 149,129,53,157,6,53,149,4,53,157,129,85,149,4,53,149,158,21,149,212, + 140,147,124,50,116,143,91,238,74,107,50,43,42,140,50,205,66,46,83,143, + 99,208,107,240,115,239,123,175,115,77,99,204,90,106,74,41,66,73,66,138, + 74,235,82,11,91,235,90,170,82,40,66,198,57,134,41,4,33,10,4,25, + 133,228,24,4,25,228,24,4,25,4,25,3,228,24,153,195,16,37,33,77, + 107,207,115,142,115,102,41,163,16,4,25,166,49,138,74,77,107,142,115,109, + 107,109,107,109,115,109,115,109,107,109,115,110,115,109,107,141,115,109,107,174, + 115,174,115,207,115,4,240,115,135,241,115,240,115,17,116,16,116,240,115,17, + 116,17,116,3,240,115,131,17,116,143,99,101,33,3,65,8,138,41,58,17, + 124,240,115,240,107,240,115,240,115,240,107,208,107,240,115,208,107,6,240,107, + 134,16,116,240,107,16,108,240,115,16,108,240,115,7,240,107,130,208,107,239, + 107,6,208,107,129,207,107,8,208,107,133,207,107,208,107,207,107,175,107,175, + 107,3,207,107,6,175,107,133,142,99,142,99,240,115,167,49,32,0,6,65, + 8,129,97,8,6,65,8,146,33,0,163,16,163,16,195,24,195,24,195,16, + 163,16,130,16,130,16,98,16,195,24,163,16,163,16,130,16,33,8,32,0, + 33,0,98,8,3,65,8,137,33,8,65,8,65,8,130,16,65,8,65,8, + 97,8,97,8,97,16,4,65,8,132,0,0,33,0,33,0,33,8,5,65, + 8,46,3,141,170,82,203,90,203,90,12,99,45,107,109,107,142,115,207,123, + 239,123,16,124,16,124,48,124,17,124,5,49,124,131,81,124,82,124,114,132, + 3,146,132,131,178,140,147,132,146,132,3,179,140,134,179,132,179,132,179,140, + 179,132,179,140,179,140,3,179,132,131,179,140,179,140,179,132,10,211,140,130, + 212,140,212,140,3,211,140,129,243,140,5,244,140,139,243,140,243,140,211,140, + 244,140,244,140,20,149,244,140,20,149,20,149,244,148,244,148,3,244,140,129, + 20,141,3,20,149,129,244,148,5,20,149,129,244,148,4,20,149,136,20,141, + 244,148,20,149,244,148,20,149,20,141,244,140,20,141,7,244,140,131,244,148, + 244,140,20,141,5,244,140,140,20,149,244,140,20,141,20,141,20,149,244,140, + 20,149,244,148,244,140,20,149,20,141,20,141,3,20,149,130,21,149,52,149, + 8,20,149,132,21,149,20,149,21,149,21,149,4,20,149,131,21,149,20,149, + 21,149,3,20,149,133,21,149,20,149,21,149,53,149,20,149,3,21,149,139, + 53,149,21,149,53,149,21,149,53,149,20,149,52,149,53,149,21,149,21,149, + 53,149,4,21,149,145,20,149,53,149,53,149,21,149,20,149,21,149,20,149, + 21,149,20,149,21,149,20,149,20,141,20,149,20,149,244,148,21,149,20,149, + 3,21,149,135,20,141,20,149,21,149,20,149,244,148,20,141,244,148,3,20, + 149,129,245,148,3,20,149,130,21,149,20,149,8,21,149,130,53,149,21,149, + 3,53,149,137,21,149,53,149,53,149,21,149,53,149,21,149,53,149,53,149, + 53,157,4,85,157,4,53,157,131,85,157,53,157,85,149,6,53,149,129,53, + 157,7,53,149,129,53,157,3,53,149,134,20,149,21,149,20,149,21,149,20, + 149,21,149,4,53,149,132,85,149,53,157,53,157,85,149,12,53,149,133,53, + 157,53,149,85,149,53,149,85,157,3,53,157,142,85,157,53,149,53,157,85, + 157,53,157,53,157,85,149,85,157,85,157,53,149,85,157,53,149,53,149,53, + 157,6,53,149,166,53,157,85,157,53,157,85,157,85,157,53,149,85,149,53, + 149,21,149,244,140,147,132,50,116,175,91,14,75,75,50,10,42,107,50,204, + 66,46,83,111,99,207,107,16,124,16,124,240,123,175,115,110,107,236,90,73, + 74,41,66,40,58,170,74,235,82,235,90,170,82,72,66,230,57,72,66,134, + 41,8,4,25,131,4,33,4,25,4,33,7,4,25,153,228,24,37,33,109, + 107,207,115,175,115,199,49,195,16,4,25,166,49,138,74,77,107,142,115,109, + 107,109,115,141,115,141,115,109,107,142,115,109,107,141,115,141,115,141,107,142, + 115,142,115,207,115,4,240,115,3,240,107,133,240,115,240,115,240,107,240,115, + 17,116,3,240,115,146,17,116,78,99,228,16,32,0,65,8,65,8,77,91, + 17,124,240,107,240,115,240,107,240,115,208,115,240,107,208,107,240,107,240,107, + 208,107,3,240,107,133,240,115,240,115,240,107,240,115,240,115,7,240,107,3, + 208,107,3,207,107,6,208,107,130,208,115,208,115,4,208,107,133,207,107,208, + 107,207,107,175,107,208,107,3,207,107,6,175,107,132,143,107,143,99,142,99, + 36,33,5,65,8,142,97,8,65,8,97,8,65,8,65,8,97,8,65,8, + 97,8,33,0,98,8,228,24,228,24,195,24,97,8,4,65,8,149,33,8, + 195,16,130,16,98,8,130,16,65,8,1,0,33,8,33,0,33,8,65,8, + 65,8,33,8,33,8,65,8,65,8,130,16,65,8,97,8,98,16,98,16, + 4,65,8,132,33,8,1,0,33,0,33,8,5,65,8,42,3,140,170,90, + 170,90,203,90,236,98,45,99,77,107,142,115,174,115,207,123,240,123,16,124, + 48,124,4,49,124,137,81,124,81,124,82,132,114,132,114,132,146,132,146,132, + 178,140,146,132,5,179,140,135,179,132,179,132,179,140,179,140,179,132,179,132, + 179,140,3,179,132,131,211,132,211,140,211,132,7,211,140,135,212,140,212,140, + 211,140,211,140,244,140,212,140,211,140,3,244,140,129,244,148,6,244,140,134, + 244,148,20,141,244,148,20,149,244,148,244,148,6,244,140,5,20,149,137,244, + 148,20,149,20,149,244,148,20,149,244,148,244,148,20,149,244,140,3,20,149, + 130,244,148,20,149,19,244,140,134,20,149,20,149,244,140,244,148,20,141,244, + 140,3,20,149,131,20,141,20,149,20,149,3,21,149,130,20,149,21,149,11, + 20,149,131,21,149,20,149,21,149,3,20,149,140,21,149,20,149,53,149,21, + 149,53,149,53,149,52,149,53,149,21,149,53,149,53,149,21,149,4,53,149, + 135,21,149,53,149,21,149,20,149,21,149,21,149,20,149,3,21,149,144,53, + 149,53,149,21,149,20,149,21,149,21,149,20,149,21,149,20,149,21,149,21, + 149,20,149,20,149,244,140,20,141,20,149,3,21,149,135,20,149,20,149,21, + 149,21,149,20,149,20,149,21,149,3,20,149,133,21,149,20,149,20,149,21, + 149,20,149,5,21,149,132,20,149,20,149,21,149,21,149,6,53,149,129,53, + 157,7,53,149,4,53,157,142,85,157,85,157,53,157,85,157,53,157,53,157, + 85,157,85,157,85,149,53,149,53,157,53,149,85,149,85,149,12,53,149,139, + 20,141,21,149,20,149,20,149,21,149,20,149,53,157,85,149,53,149,53,149, + 53,157,3,53,149,129,85,149,5,53,149,129,21,149,8,53,149,146,53,157, + 53,149,53,149,85,149,53,149,85,157,53,157,85,157,53,157,53,157,53,149, + 85,157,85,157,53,157,85,149,53,157,85,149,85,149,5,53,149,171,85,149, + 53,149,85,149,85,157,53,157,53,149,85,157,85,149,53,149,53,149,21,149, + 244,140,179,124,82,116,144,91,14,75,75,50,10,34,75,42,172,58,14,83, + 110,91,175,107,16,124,240,123,16,124,16,124,240,123,175,115,45,99,138,82, + 41,66,8,58,105,66,203,82,203,82,105,74,231,57,105,74,105,66,166,49, + 228,24,228,24,12,4,25,151,228,24,228,24,4,25,228,24,4,33,12,99, + 174,115,207,123,199,49,163,16,4,25,134,41,137,74,45,99,109,107,109,115, + 77,107,109,107,110,115,109,107,142,115,110,115,142,115,3,109,107,131,45,107, + 175,115,240,107,5,208,107,135,240,107,208,107,208,107,208,115,240,115,241,115, + 241,115,3,240,115,139,17,116,110,99,130,8,33,8,32,0,195,16,78,91, + 17,116,240,115,240,115,208,107,3,240,107,129,208,107,5,240,107,134,16,108, + 241,107,240,115,240,107,16,108,241,107,3,240,115,138,240,107,208,107,208,115, + 240,115,240,107,208,115,240,107,208,107,240,107,208,107,3,240,107,4,208,107, + 131,240,107,208,107,240,107,3,208,107,137,207,107,176,107,207,107,208,107,208, + 107,207,107,175,107,175,107,175,99,3,175,107,132,175,99,175,99,78,91,195, + 24,4,65,8,129,97,8,3,65,8,139,97,8,65,8,65,8,97,8,65, + 8,32,0,163,16,228,24,130,16,65,8,33,8,6,65,8,134,98,16,97, + 8,33,8,65,8,33,0,0,0,3,33,8,5,65,8,141,98,16,130,16, + 33,8,98,16,98,16,65,8,33,8,65,0,65,8,65,8,32,8,1,0, + 33,8,5,65,8,213,2,141,170,90,170,90,203,90,236,98,44,99,77,107, + 142,115,174,115,207,115,240,123,16,124,48,124,48,124,4,49,124,132,81,132, + 81,132,114,132,114,132,3,146,132,129,178,140,3,179,140,130,179,132,179,140, + 3,179,132,3,179,140,130,179,132,179,132,3,179,140,5,211,140,129,212,140, + 3,211,140,133,212,140,211,140,212,140,212,140,211,140,3,212,140,133,244,140, + 244,140,243,148,244,148,20,149,3,244,140,135,244,148,244,148,244,140,244,140, + 20,149,20,149,244,148,6,244,140,130,20,149,244,148,6,20,149,130,244,148, + 244,148,3,20,149,132,244,148,20,149,20,149,244,148,3,20,141,16,244,140, + 4,20,141,134,244,140,20,149,244,148,244,140,244,140,20,141,5,20,149,130, + 21,149,53,149,3,21,149,130,20,149,21,149,6,20,149,132,21,149,20,149, + 20,149,21,149,5,20,149,135,21,149,21,149,53,149,21,149,21,149,53,149, + 21,149,10,53,149,132,21,149,20,149,53,149,20,149,4,21,149,137,53,149, + 21,149,21,149,20,149,21,149,20,149,20,149,21,149,20,149,3,21,149,130, + 20,149,21,149,3,20,149,3,21,149,3,20,149,129,21,149,6,20,149,132, + 21,149,21,149,20,149,20,149,8,21,149,6,53,149,129,53,157,5,53,149, + 131,21,149,53,149,53,149,4,53,157,131,85,157,85,157,53,157,3,85,157, + 138,53,157,85,157,53,149,85,157,85,157,53,149,85,149,85,149,53,157,53, + 157,3,53,149,129,21,149,6,53,149,3,20,149,131,244,148,21,149,21,149, + 25,53,149,133,53,157,53,149,53,149,53,157,53,149,4,53,157,133,85,157, + 53,149,85,157,85,157,85,149,7,53,149,136,85,149,53,149,85,157,85,157, + 85,149,53,149,85,157,85,157,3,53,149,141,244,140,179,132,82,116,176,91, + 14,75,75,50,234,33,43,42,172,58,13,75,110,99,175,107,240,115,5,16, + 124,145,175,115,77,99,171,82,8,66,8,58,105,66,235,82,202,82,105,66, + 137,74,202,82,137,74,199,49,134,33,134,41,102,33,102,41,3,102,33,130, + 69,33,101,33,8,69,33,145,102,41,12,99,175,115,207,115,199,49,5,25, + 36,25,102,41,105,74,77,107,142,115,142,115,109,107,77,107,109,107,76,107, + 77,107,3,76,107,136,44,107,44,107,77,107,175,115,240,107,240,107,240,115, + 240,107,4,240,115,129,240,107,5,240,115,140,240,107,240,115,240,115,17,116, + 139,74,98,8,65,8,32,8,134,33,175,107,17,116,240,115,3,208,107,130, + 240,107,208,107,5,240,107,132,240,115,240,115,240,107,240,107,5,240,115,146, + 240,107,240,107,208,115,208,115,240,115,208,115,208,107,208,107,240,107,208,107, + 240,107,240,107,208,107,240,115,240,107,208,107,208,107,240,107,7,208,107,134, + 207,107,208,107,207,107,208,107,208,107,207,107,3,175,107,133,207,107,175,107, + 175,107,175,99,163,24,7,65,8,137,97,8,97,8,65,8,66,8,98,8, + 33,0,33,8,195,24,130,16,13,65,8,129,33,8,3,32,0,7,65,8, + 141,36,33,163,24,33,8,98,16,98,16,65,8,65,8,33,8,33,0,33, + 8,0,0,33,8,98,8,4,65,8,49,3,140,170,90,171,90,203,90,236, + 98,44,99,77,107,109,115,174,115,207,115,240,123,16,124,16,124,3,49,124, + 131,81,132,81,124,81,132,3,114,132,3,146,132,138,179,132,179,132,179,140, + 146,132,179,132,147,140,147,132,179,132,179,132,179,140,5,179,132,141,179,140, + 179,140,211,140,211,140,212,140,211,140,211,140,212,140,211,140,211,140,212,140, + 211,140,211,140,5,212,140,144,244,140,244,148,244,140,244,148,244,148,244,140, + 244,148,244,140,244,148,20,149,20,149,244,148,20,149,20,149,244,148,244,148, + 6,244,140,147,244,148,20,149,244,148,20,149,244,140,244,148,20,149,244,148, + 244,148,20,149,20,149,244,148,244,140,20,149,244,148,20,149,244,140,20,149, + 20,141,18,244,140,132,20,149,244,140,20,149,20,149,5,244,140,138,20,149, + 20,149,21,149,53,149,20,149,21,149,53,149,20,149,21,149,21,149,7,20, + 149,129,21,149,4,20,149,129,21,149,3,20,149,136,52,149,20,149,21,149, + 53,149,53,149,21,149,53,149,21,149,5,53,149,130,21,149,21,149,3,53, + 149,134,21,149,21,149,20,149,20,149,21,149,53,149,4,21,149,136,20,149, + 21,149,21,149,20,149,20,149,21,149,21,149,53,149,5,21,149,135,53,149, + 21,149,21,149,53,149,53,149,21,149,20,149,3,21,149,5,20,149,132,21, + 149,21,149,20,149,20,149,7,21,149,138,53,149,53,149,21,149,53,149,53, + 149,53,157,53,149,53,149,53,157,53,157,5,53,149,129,21,149,3,53,149, + 129,53,157,3,85,157,141,53,157,85,157,53,157,85,157,85,157,53,149,53, + 157,85,157,53,149,85,149,53,149,53,157,53,157,6,53,149,129,21,149,3, + 53,149,129,21,149,3,20,149,136,21,149,53,149,53,149,53,157,53,157,53, + 149,53,149,53,157,8,53,149,129,21,149,12,53,149,140,53,157,53,157,53, + 149,53,149,53,157,53,149,53,157,53,149,53,149,85,157,53,157,85,149,7, + 53,149,136,53,157,53,149,53,149,53,157,85,157,85,149,53,157,53,157,3, + 53,149,141,244,140,179,132,82,116,176,99,14,75,75,50,202,25,43,34,140, + 50,13,75,78,99,175,107,16,116,3,16,124,151,16,132,49,132,16,124,207, + 115,110,107,139,82,8,58,8,58,105,66,235,74,170,74,137,74,170,82,105, + 74,138,74,12,83,236,82,236,90,236,82,204,82,171,82,203,74,171,74,3, + 171,82,147,171,74,171,82,203,74,171,82,171,82,203,82,204,90,77,99,142, + 107,207,123,203,82,236,90,134,41,102,41,105,74,77,107,142,115,110,115,109, + 107,5,109,115,134,77,115,77,115,109,115,109,115,76,107,207,115,8,240,115, + 131,240,107,240,115,240,107,6,240,115,142,16,116,208,115,8,50,32,0,65, + 8,33,0,41,58,49,124,240,115,240,107,208,107,240,107,240,107,208,107,7, + 240,107,129,240,115,4,240,107,130,16,116,240,115,4,240,107,148,240,115,240, + 115,208,107,240,107,208,107,208,107,240,107,240,115,240,115,208,107,208,115,240, + 107,240,107,207,115,240,115,208,107,240,115,208,107,208,107,207,107,3,208,107, + 3,207,107,139,208,107,207,107,175,107,175,107,207,107,175,107,175,107,16,108, + 4,33,33,8,98,16,5,65,8,138,97,8,65,8,33,8,1,0,33,0, + 0,0,33,0,163,16,65,8,97,8,6,65,8,129,97,8,5,65,8,133, + 32,0,33,8,32,0,33,8,97,8,5,65,8,143,33,8,97,8,227,32, + 32,8,65,8,98,16,65,8,33,0,33,8,65,8,65,8,0,0,33,0, + 65,8,33,8,3,65,8,57,3,148,170,90,170,90,203,90,236,98,12,99, + 77,107,109,107,174,115,207,115,239,123,16,124,16,124,48,124,49,124,81,124, + 81,132,81,132,82,132,114,132,114,132,5,146,132,137,147,132,146,132,179,132, + 179,132,179,140,179,132,179,140,179,132,179,132,3,179,140,133,179,132,211,132, + 179,132,211,140,211,132,9,211,140,138,212,140,211,140,243,140,243,140,244,140, + 244,140,243,140,244,140,244,148,244,140,3,244,148,137,244,140,244,140,244,148, + 20,149,244,148,20,149,20,149,244,140,20,149,3,244,140,131,244,148,244,140, + 20,141,3,244,148,137,20,149,20,149,244,148,244,148,20,149,244,148,20,149, + 244,148,244,148,7,20,149,129,244,148,5,244,140,129,20,141,10,244,140,142, + 20,141,244,140,20,149,20,149,244,140,244,140,212,140,212,140,244,140,244,140, + 20,141,21,149,20,149,21,149,5,53,149,129,21,149,6,20,149,133,21,149, + 20,149,21,149,52,149,53,149,3,21,149,130,20,149,20,149,3,21,149,5, + 53,149,143,21,149,53,149,21,149,53,149,53,149,21,149,21,149,53,149,20, + 149,21,149,53,149,20,149,21,149,21,149,20,149,3,21,149,4,20,149,143, + 21,149,21,149,20,149,53,149,21,149,21,149,53,149,52,149,53,149,53,149, + 21,149,53,149,53,149,21,149,20,149,3,21,149,136,53,149,21,149,20,149, + 21,149,20,149,244,148,21,149,21,149,4,20,149,136,21,149,21,149,20,149, + 21,149,21,149,53,149,21,149,21,149,4,53,149,129,53,157,3,53,149,130, + 53,157,53,157,7,53,149,130,53,157,53,149,3,53,157,129,85,157,3,53, + 157,135,85,157,53,157,85,157,53,157,85,149,85,157,53,157,6,53,149,129, + 21,149,6,53,149,3,21,149,131,53,149,53,149,53,157,5,53,149,129,53, + 157,6,53,149,129,21,149,4,53,149,129,21,149,10,53,149,137,21,149,53, + 149,21,149,53,157,53,149,53,149,85,149,85,157,85,157,8,53,149,174,53, + 157,53,157,85,157,53,157,53,149,85,149,53,157,53,149,85,157,53,149,53, + 149,244,140,179,132,82,116,176,91,14,75,107,42,201,25,10,34,107,50,237, + 74,78,91,143,99,240,115,16,124,16,124,16,132,16,124,16,132,48,132,16, + 124,240,115,142,107,236,90,73,66,232,49,73,58,170,74,138,74,137,74,105, + 66,170,74,175,107,175,107,175,99,175,99,3,143,99,150,111,99,143,99,143, + 99,111,99,143,99,143,107,175,107,175,107,176,115,240,115,240,115,77,99,174, + 107,109,107,110,107,114,132,41,58,37,33,105,74,44,99,109,115,77,107,5, + 109,115,138,77,107,109,115,109,115,77,107,109,115,76,107,175,115,240,107,240, + 115,240,107,3,240,115,134,16,116,240,115,240,115,240,107,208,107,240,107,3, + 240,115,3,240,107,138,240,115,240,115,199,41,0,0,33,8,32,0,13,91, + 17,116,208,107,240,107,4,208,107,3,240,107,131,240,115,240,107,240,115,10, + 240,107,139,208,107,240,107,240,107,240,115,240,115,240,107,240,107,208,107,208, + 107,240,107,240,115,3,240,107,134,208,107,208,115,240,107,208,107,240,115,240, + 107,3,208,107,129,207,107,5,208,107,137,207,107,175,107,175,107,207,107,207, + 107,240,107,171,74,0,0,98,16,3,65,8,131,98,8,65,8,33,8,5, + 0,0,131,33,0,65,8,97,8,3,65,8,5,97,8,129,98,8,4,65, + 8,132,33,8,0,0,33,8,1,8,3,65,8,130,33,8,65,8,3,33, + 8,135,65,8,97,8,33,0,65,8,97,8,33,8,33,8,3,65,8,134, + 0,0,0,0,1,0,1,8,65,8,65,8,250,2,140,170,90,170,90,203, + 90,235,98,44,99,45,107,109,107,142,115,207,115,239,123,16,124,16,124,3, + 49,124,133,81,132,81,124,81,132,114,132,114,132,4,146,132,133,147,132,146, + 132,147,132,147,132,179,132,4,179,140,3,179,132,131,179,140,179,140,179,132, + 6,211,140,130,212,140,212,140,5,211,140,133,244,140,212,140,244,140,244,140, + 243,140,4,244,140,3,244,148,131,20,149,244,140,244,140,4,20,149,130,244, + 148,244,148,3,244,140,130,244,148,20,141,5,244,148,135,20,149,244,148,20, + 149,244,148,20,149,20,149,244,148,6,20,149,136,20,141,20,149,244,140,20, + 141,20,141,244,140,244,140,20,141,7,244,140,147,244,148,244,140,244,140,20, + 149,244,148,20,141,20,149,20,141,244,140,244,140,212,140,212,140,244,140,244, + 140,20,141,21,149,21,149,53,149,21,149,4,53,149,3,21,149,130,20,149, + 20,149,5,21,149,151,53,149,21,149,21,149,20,149,21,149,20,149,20,149, + 21,149,20,149,20,149,21,149,53,149,21,149,21,149,52,149,53,149,53,149, + 21,149,53,149,53,149,21,149,53,149,53,149,5,21,149,136,20,149,21,149, + 21,149,20,149,20,149,244,148,20,149,20,149,7,21,149,135,53,149,21,149, + 21,149,53,149,21,149,53,149,53,149,6,21,149,130,20,149,21,149,3,20, + 149,140,21,149,21,149,20,149,21,149,21,149,20,149,21,149,21,149,20,149, + 53,149,53,149,21,149,4,53,149,129,53,157,4,53,149,130,53,157,53,157, + 6,53,149,129,21,149,3,53,149,141,53,157,53,149,53,149,85,157,53,157, + 53,149,53,149,53,157,53,149,85,157,53,157,53,149,53,157,18,53,149,129, + 53,157,23,53,149,129,53,157,13,53,149,130,53,157,85,149,8,53,149,131, + 53,157,53,149,85,149,7,53,149,146,244,140,179,132,50,116,176,91,14,75, + 107,50,201,25,234,33,75,50,237,66,78,91,143,99,240,115,16,124,240,123, + 16,124,16,132,16,132,3,16,124,147,240,123,175,115,77,99,74,74,232,49, + 73,58,202,74,170,74,105,74,138,74,110,91,111,91,110,91,78,91,78,91, + 46,83,77,91,46,91,46,91,3,78,91,3,110,99,142,143,107,175,107,208, + 107,77,99,142,107,174,115,77,99,81,124,41,58,37,33,105,74,44,99,142, + 115,77,107,6,109,115,135,77,115,109,115,109,107,77,107,76,107,175,115,240, + 107,10,240,115,133,240,107,240,115,240,107,240,115,240,107,3,240,115,141,16, + 116,175,107,195,16,32,8,0,0,4,25,143,99,240,115,240,107,208,107,208, + 107,240,107,208,107,7,240,107,148,16,108,240,107,240,115,240,107,240,115,240, + 107,240,107,208,107,208,107,240,107,240,107,208,115,240,107,240,107,208,107,240, + 107,208,107,208,107,208,115,240,115,4,240,107,140,208,115,240,107,208,107,240, + 107,240,115,240,115,208,115,207,107,81,132,16,124,208,115,175,107,3,208,107, + 3,175,107,134,208,107,208,107,240,115,0,0,130,16,98,8,3,65,8,136, + 32,8,0,8,0,0,0,8,0,0,33,8,32,0,33,0,5,65,8,4, + 97,8,130,98,16,98,16,5,65,8,132,33,8,33,8,32,0,1,0,4, + 65,8,4,33,8,130,98,8,97,8,3,33,8,138,0,8,33,8,65,8, + 66,8,33,8,0,0,1,0,0,0,32,0,65,8,28,3,145,170,90,170, + 90,203,90,235,98,12,99,45,107,109,107,142,115,175,115,207,115,16,124,16, + 124,48,124,49,124,81,132,81,132,82,132,5,114,132,130,146,132,146,132,4, + 147,132,3,179,132,136,211,140,179,140,179,140,179,132,179,132,211,140,179,132, + 211,132,7,211,140,129,212,140,4,211,140,131,244,140,243,140,211,140,4,244, + 140,5,244,148,141,244,140,20,149,244,140,244,148,20,149,244,148,20,149,244, + 148,244,148,244,140,244,140,244,148,244,148,3,244,140,139,244,148,20,141,20, + 149,244,148,244,148,20,149,244,140,244,148,244,148,244,140,244,148,6,20,149, + 136,244,140,20,149,244,140,244,140,20,149,244,140,20,141,244,148,3,244,140, + 129,20,141,4,244,140,4,20,141,134,20,149,20,149,20,141,244,140,244,140, + 212,140,3,244,140,131,20,149,53,149,21,149,4,53,149,135,21,149,53,149, + 53,149,20,149,21,149,20,149,20,149,3,21,149,133,20,149,21,149,53,149, + 21,149,21,149,6,20,149,142,53,149,53,149,20,149,53,149,53,149,20,149, + 53,149,53,149,21,149,21,149,53,149,53,149,21,149,20,149,4,21,149,132, + 20,149,20,149,21,149,21,149,3,20,149,135,21,149,20,149,20,149,21,149, + 20,149,21,149,53,149,4,21,149,130,53,149,21,149,3,53,149,3,21,149, + 129,53,149,5,21,149,131,20,149,21,149,20,149,4,21,149,131,20,149,21, + 149,21,149,3,53,149,129,21,149,7,53,149,129,85,149,6,53,149,132,21, + 149,53,149,53,149,21,149,3,53,149,5,53,157,6,53,149,129,53,157,9, + 53,149,129,21,149,10,53,149,129,53,157,14,53,149,129,21,149,8,53,149, + 129,21,149,12,53,149,129,85,149,9,53,149,134,53,157,53,149,53,157,53, + 157,53,149,85,149,3,53,149,142,21,149,244,140,179,132,82,116,176,91,14, + 75,75,50,169,17,234,25,75,42,205,66,46,83,143,99,240,115,4,16,124, + 173,16,132,16,124,16,124,240,123,16,124,240,123,240,115,77,99,138,74,232, + 57,138,66,235,74,170,82,170,74,78,83,78,91,46,83,45,83,13,83,45, + 83,45,83,13,83,46,91,45,83,13,83,45,91,78,91,78,99,110,91,110, + 99,175,107,208,107,109,107,109,107,207,115,77,99,49,124,106,66,36,33,105, + 74,44,99,142,115,109,107,109,115,141,115,4,109,115,139,77,107,109,115,77, + 115,109,115,76,107,174,107,240,107,208,107,240,115,240,115,208,107,3,240,107, + 3,240,115,132,208,107,240,115,240,115,240,107,3,240,115,144,240,107,240,115, + 17,116,172,82,98,8,32,8,32,0,232,49,16,116,240,107,208,107,208,107, + 240,107,208,107,240,107,208,107,4,240,107,135,240,115,240,115,16,108,240,107, + 240,115,240,115,16,116,3,240,115,3,208,107,130,240,107,240,107,5,208,107, + 147,240,107,208,107,240,107,240,107,208,107,240,115,240,107,240,115,207,107,208, + 107,240,115,240,115,207,107,178,148,211,156,178,148,81,132,175,107,175,107,3, + 207,107,146,175,99,208,107,208,107,49,124,37,33,65,8,163,16,33,8,65, + 8,32,0,32,8,0,0,32,0,0,0,0,0,65,8,32,0,33,0,3, + 65,8,130,97,8,98,16,3,97,8,135,98,16,97,8,97,8,65,8,65, + 8,65,0,33,8,3,65,8,131,32,0,0,0,33,0,4,65,8,4,33, + 8,142,65,8,97,8,0,0,0,0,1,8,0,0,33,8,65,8,65,8, + 33,8,0,0,1,8,0,0,33,8,241,2,142,170,90,170,90,203,90,235, + 98,12,99,45,107,109,107,142,107,174,115,239,123,240,123,16,124,48,124,49, + 124,3,81,132,3,114,132,4,146,132,130,147,132,146,132,3,147,132,4,179, + 140,134,179,132,211,140,211,140,179,140,211,140,179,132,11,211,140,134,212,140, + 211,140,212,140,244,140,244,140,243,140,6,244,140,131,244,148,20,149,244,148, + 4,244,140,136,244,148,244,148,244,140,20,149,20,149,244,148,20,149,20,149, + 3,244,148,139,20,149,244,148,20,141,244,148,244,148,20,149,244,148,20,149, + 20,149,244,148,20,141,8,20,149,135,20,141,244,140,20,149,244,148,20,149, + 244,140,20,141,3,244,140,129,20,141,3,244,140,129,244,148,4,244,140,129, + 20,141,5,244,140,131,20,149,21,149,21,149,7,53,149,129,21,149,3,20, + 149,131,21,149,21,149,20,149,3,53,149,133,20,149,53,149,52,149,21,149, + 21,149,3,20,149,130,21,149,20,149,4,53,149,5,21,149,132,53,149,21, + 149,21,149,53,149,4,21,149,130,20,149,21,149,4,20,149,3,244,148,4, + 20,149,135,53,149,21,149,52,149,21,149,53,149,53,149,21,149,4,53,149, + 134,21,149,53,149,53,149,21,149,21,149,53,149,3,21,149,135,20,149,21, + 149,20,149,20,149,21,149,21,149,53,149,5,21,149,131,53,149,21,149,21, + 149,3,53,149,132,53,157,53,149,53,149,53,157,6,53,149,129,21,149,8, + 53,149,130,85,149,53,157,10,53,149,129,53,157,8,53,149,129,21,149,5, + 53,149,129,53,157,18,53,149,129,21,149,18,53,149,131,53,157,85,149,53, + 157,6,53,149,129,53,157,10,53,149,144,21,149,244,140,148,132,82,116,144, + 91,14,75,75,50,169,17,201,25,43,42,172,66,46,83,143,99,208,107,16, + 124,240,123,5,16,124,145,240,123,240,123,16,124,16,124,240,123,175,115,236, + 82,41,58,106,66,235,82,203,74,13,83,45,83,13,83,13,75,237,74,237, + 74,6,13,83,145,45,83,78,91,110,91,110,99,175,107,207,107,77,99,109, + 107,207,115,77,99,17,124,106,66,36,33,73,74,12,99,109,107,77,107,6, + 109,115,149,77,107,77,115,77,115,77,107,77,115,142,107,240,107,208,107,208, + 115,208,107,175,99,175,99,240,115,240,107,240,115,240,115,240,107,240,107,240, + 115,240,107,240,115,3,240,107,138,240,115,208,107,240,107,17,116,138,66,65, + 0,33,8,65,0,138,66,17,116,3,208,107,132,240,107,208,107,208,107,240, + 115,4,240,107,149,17,108,16,116,240,107,16,108,17,116,240,115,17,116,240, + 115,240,107,240,107,208,107,208,107,240,107,240,107,240,115,240,107,240,115,240, + 107,240,107,240,115,240,107,3,240,115,157,208,115,240,115,240,115,208,107,208, + 107,240,107,208,107,240,115,178,156,210,156,211,156,211,164,243,164,114,140,16, + 124,207,107,175,107,207,107,208,107,208,107,240,107,13,91,0,0,228,24,65, + 8,65,8,32,0,0,8,32,0,3,0,0,131,33,8,32,0,32,0,4, + 65,8,133,97,8,98,16,98,16,97,8,97,8,9,65,8,132,33,8,33, + 8,0,0,0,0,4,65,8,145,33,8,33,0,33,8,33,8,65,8,97, + 8,33,8,32,8,32,0,0,0,0,0,65,8,98,8,65,8,33,0,65, + 8,98,8,219,2,148,170,90,203,90,203,98,235,98,12,99,44,99,109,107, + 142,115,174,115,207,123,239,123,16,124,48,124,48,132,81,132,81,132,114,132, + 113,132,114,132,114,132,8,146,132,136,179,132,179,140,179,132,211,140,211,140, + 179,132,211,140,179,132,7,211,140,129,212,140,7,211,140,132,212,140,211,140, + 212,140,212,140,3,244,140,131,244,148,244,140,244,140,4,244,148,4,244,140, + 3,244,148,129,20,149,6,244,148,135,244,140,244,148,20,149,20,149,244,148, + 20,149,20,141,12,20,149,129,244,148,4,20,149,132,244,148,20,149,20,141, + 244,148,11,244,140,129,20,141,4,244,140,132,20,141,20,141,53,149,21,149, + 7,53,149,3,21,149,130,20,149,20,149,3,21,149,129,53,149,3,21,149, + 146,20,149,21,149,20,149,20,149,21,149,20,149,21,149,21,149,53,149,21, + 149,53,149,21,149,21,149,20,149,21,149,21,149,20,149,53,149,3,21,149, + 130,20,149,53,149,5,21,149,3,20,149,148,244,148,244,148,20,149,20,149, + 21,149,20,149,20,149,53,149,53,149,21,149,21,149,53,149,53,149,21,149, + 53,149,53,149,21,149,21,149,53,149,21,149,3,53,149,4,21,149,4,20, + 149,7,21,149,8,53,149,131,53,157,53,149,53,157,8,53,149,129,21,149, + 7,53,149,133,53,157,53,157,53,149,53,149,21,149,13,53,149,130,21,149, + 21,149,4,53,149,129,21,149,5,53,149,129,21,149,4,53,149,132,53,157, + 53,149,53,149,53,157,7,53,149,129,21,149,19,53,149,131,53,157,53,157, + 85,149,6,53,149,129,53,157,4,53,149,129,53,157,3,53,149,144,21,149, + 244,140,147,132,50,116,144,91,14,75,75,50,169,17,169,25,11,42,172,66, + 14,83,110,91,208,107,240,115,240,123,6,16,124,167,240,123,240,123,16,124, + 240,123,240,115,207,115,13,99,106,74,204,82,13,75,13,75,13,83,237,74, + 237,74,204,74,237,74,237,74,237,82,237,74,13,83,237,82,13,83,45,91, + 78,99,110,99,110,99,143,107,207,115,110,107,109,107,207,115,77,99,17,124, + 139,66,4,25,73,74,12,99,109,107,45,107,5,109,115,135,109,107,109,115, + 76,115,77,107,77,107,77,115,142,107,3,240,115,131,208,107,175,107,208,107, + 4,240,115,151,240,107,240,115,240,107,240,115,240,115,240,107,240,107,208,107, + 240,107,208,107,208,107,240,115,208,115,200,49,0,0,33,8,163,16,175,107, + 240,115,240,107,208,107,240,107,208,107,8,240,107,141,16,116,240,107,16,116, + 240,115,240,115,16,116,240,115,240,107,240,107,240,115,240,107,240,107,240,115, + 4,240,107,135,208,115,240,107,240,115,240,115,208,115,240,107,240,115,3,240, + 107,159,208,107,240,107,49,124,211,156,211,156,178,156,178,156,210,156,211,156, + 243,164,146,148,49,132,207,107,175,99,240,107,208,107,175,107,196,24,65,8, + 195,24,33,8,32,0,0,0,32,0,0,0,0,0,32,8,65,8,0,0, + 33,8,33,8,3,65,8,130,97,8,97,8,5,65,8,129,97,8,4,65, + 8,4,33,8,131,33,0,0,0,33,0,7,65,8,129,33,8,3,65,8, + 4,0,0,133,32,8,65,8,97,8,66,8,163,16,7,3,141,170,90,203, + 90,203,98,235,98,12,99,45,107,109,107,142,115,174,115,207,115,240,123,16, + 124,49,132,3,81,132,131,114,132,146,132,114,132,5,146,132,143,147,132,146, + 132,146,132,179,132,179,140,179,132,179,140,211,140,211,132,179,132,211,140,179, + 140,179,140,211,140,179,132,3,211,140,129,212,140,3,211,140,137,212,140,211, + 140,211,140,212,140,211,140,212,140,244,140,244,140,212,140,3,244,140,3,244, + 148,134,244,140,20,149,244,148,244,148,244,140,244,140,5,244,148,137,20,149, + 244,148,244,148,244,140,244,148,244,140,244,140,244,148,244,140,6,20,149,132, + 244,140,20,149,20,149,244,148,6,20,149,129,244,148,6,20,149,130,20,141, + 20,141,3,244,140,143,20,141,244,140,244,148,20,141,244,140,20,141,20,141, + 244,140,244,140,20,149,20,141,244,140,20,149,20,141,21,149,10,53,149,134, + 20,149,21,149,20,149,21,149,20,149,21,149,4,20,149,133,21,149,53,149, + 20,149,21,149,21,149,3,20,149,140,21,149,21,149,53,149,21,149,20,149, + 21,149,20,149,20,149,21,149,20,149,20,149,53,149,4,21,149,3,20,149, + 130,21,149,21,149,3,20,149,132,244,140,20,149,244,148,21,149,3,20,149, + 4,53,149,130,21,149,21,149,4,53,149,3,21,149,132,53,149,21,149,21, + 149,53,149,4,21,149,135,20,149,21,149,20,149,20,149,21,149,21,149,53, + 149,3,21,149,131,53,149,21,149,21,149,17,53,149,129,21,149,14,53,149, + 129,21,149,10,53,149,130,21,149,21,149,11,53,149,129,21,149,4,53,149, + 129,53,157,8,53,149,130,21,149,21,149,7,53,149,129,21,149,5,53,149, + 3,53,157,137,85,149,85,149,53,157,53,157,53,149,85,149,53,149,53,149, + 53,157,3,53,149,129,53,157,4,53,149,129,53,157,3,53,149,146,21,149, + 244,140,147,124,50,116,144,91,14,75,75,42,169,17,137,17,10,34,140,58, + 237,74,110,91,207,107,240,115,240,123,16,124,240,123,3,16,124,152,240,123, + 16,124,240,123,16,124,240,123,240,123,240,115,208,115,142,107,45,91,13,75, + 237,74,204,74,204,74,236,74,237,74,236,74,237,82,237,82,12,75,13,75, + 237,82,13,91,78,99,3,110,99,148,143,107,207,115,77,99,77,107,207,115, + 77,99,240,123,171,74,36,33,73,74,12,99,109,107,77,107,77,115,109,115, + 108,115,109,115,77,115,109,115,77,115,4,109,115,138,142,107,240,115,240,115, + 208,107,240,115,240,115,208,115,240,115,240,107,208,115,7,240,115,143,240,107, + 240,107,208,107,240,107,208,107,240,115,16,116,175,107,163,16,0,0,0,0, + 40,58,240,115,240,107,208,107,7,240,107,139,240,115,240,107,240,107,16,108, + 240,107,17,116,241,115,17,116,16,116,240,115,240,107,3,240,115,129,208,107, + 3,240,107,135,208,107,240,115,240,107,240,107,240,115,240,115,240,107,3,240, + 115,3,240,107,132,208,107,47,132,110,148,144,148,3,211,156,142,210,156,211, + 156,211,156,243,156,211,156,81,140,240,115,175,107,240,107,41,66,0,0,228, + 24,65,8,32,0,5,0,0,131,65,8,33,8,32,8,7,65,8,135,98, + 8,65,8,65,8,97,8,97,8,65,8,65,8,4,33,8,135,65,8,33, + 0,32,8,32,0,0,0,0,0,65,0,10,65,8,130,33,0,33,0,3, + 0,0,131,1,8,33,8,65,8,229,2,147,203,90,203,90,235,98,236,98, + 12,99,44,107,109,107,109,115,174,115,207,115,239,123,16,124,48,132,81,132, + 81,132,113,132,114,132,146,132,114,132,5,146,132,139,147,132,179,132,179,132, + 147,132,179,132,179,132,211,140,211,140,179,132,211,140,211,140,3,179,140,130, + 211,140,179,140,9,211,140,134,212,140,244,140,211,140,244,140,212,140,243,140, + 4,244,140,134,244,148,244,140,244,148,244,148,244,140,244,148,4,244,140,131, + 244,148,244,140,244,140,3,244,148,3,244,140,129,244,148,3,20,149,136,244, + 148,20,149,244,148,20,149,244,148,20,149,20,149,244,148,11,20,149,131,21, + 149,20,149,21,149,3,20,141,6,244,140,129,20,141,5,244,140,135,20,141, + 20,149,21,141,20,149,21,149,53,149,21,149,6,53,149,5,21,149,130,20, + 149,21,149,3,20,149,3,21,149,5,20,149,132,21,149,20,149,21,149,53, + 149,4,21,149,129,20,141,3,20,149,4,21,149,135,53,149,21,149,21,149, + 20,149,21,149,20,149,21,149,4,20,149,134,20,141,244,140,20,141,20,149, + 21,149,20,149,4,21,149,147,53,149,53,149,21,149,53,149,53,149,21,149, + 53,149,21,149,53,149,53,149,21,149,53,149,21,149,21,149,20,149,21,149, + 21,149,20,149,20,149,5,21,149,131,53,149,21,149,21,149,7,53,149,133, + 53,157,53,149,53,157,53,149,53,157,9,53,149,129,21,149,13,53,149,129, + 53,157,28,53,149,4,53,157,3,53,149,134,21,149,53,149,21,149,53,149, + 53,149,21,149,5,53,149,129,21,149,4,53,149,129,53,157,4,53,149,136, + 53,157,53,157,85,157,53,149,85,149,85,157,53,149,53,157,5,53,149,131, + 53,157,53,157,85,157,4,53,149,144,21,149,244,140,179,132,50,116,144,91, + 14,75,75,50,169,17,137,17,234,25,139,58,237,82,78,91,175,107,240,115, + 240,123,4,16,124,131,240,123,240,123,16,124,6,240,123,132,207,115,175,107, + 78,99,13,83,3,204,74,154,236,74,237,74,237,74,237,82,13,83,237,82, + 12,83,13,83,78,99,110,99,110,99,142,107,175,107,175,107,78,107,77,107, + 207,123,45,99,240,115,203,74,4,25,40,66,236,90,109,107,77,107,77,107, + 4,109,115,3,77,115,141,109,115,77,115,77,107,142,115,240,107,240,115,240, + 107,208,107,240,115,240,115,240,107,240,115,240,107,6,240,115,133,240,107,240, + 107,208,115,208,107,240,107,3,208,107,135,17,124,12,83,130,8,32,8,65, + 8,203,74,241,115,4,208,107,5,240,107,134,240,115,16,108,240,107,16,116, + 17,116,241,115,4,240,115,133,240,107,240,107,208,107,240,107,240,115,3,208, + 107,137,240,107,208,107,240,107,240,107,240,115,240,115,240,107,240,107,208,107, + 4,240,115,158,146,148,144,148,175,148,110,148,176,156,178,156,210,156,178,156, + 178,148,211,156,210,156,211,156,243,164,178,156,49,124,143,107,65,8,0,0, + 130,16,33,8,32,8,32,0,1,0,0,0,0,0,162,16,97,8,65,8, + 65,8,33,8,4,65,8,129,97,8,7,65,8,130,33,8,33,8,4,65, + 8,134,33,8,33,8,33,0,0,0,0,0,33,8,11,65,8,134,33,8, + 33,8,33,0,33,0,33,8,65,0,186,2,143,203,90,203,90,235,98,235, + 98,12,99,44,99,109,107,109,107,142,115,207,115,240,123,16,124,48,132,81, + 132,81,132,4,114,132,4,146,132,133,147,132,146,132,179,132,147,132,179,132, + 3,179,140,4,211,132,132,179,132,211,132,179,140,211,132,4,211,140,139,212, + 140,212,140,211,140,212,140,212,140,211,140,212,140,211,140,211,140,244,140,212, + 140,6,244,140,133,20,141,244,148,244,148,244,140,244,148,8,244,140,137,20, + 149,244,148,244,148,20,149,244,148,20,149,244,140,20,149,244,148,21,20,149, + 129,21,149,3,20,141,11,244,140,134,20,141,244,140,20,149,20,149,21,149, + 21,149,7,53,149,3,21,149,131,20,149,20,149,21,149,5,20,149,3,21, + 149,131,20,149,20,149,21,149,4,20,149,4,21,149,134,20,149,21,149,20, + 141,20,141,20,149,20,149,5,21,149,140,53,149,21,149,20,149,20,149,21, + 149,20,149,20,149,20,141,20,149,20,149,20,141,21,149,4,20,149,3,53, + 149,133,21,149,53,149,53,149,21,149,21,149,9,53,149,135,21,149,21,149, + 20,149,20,149,245,148,21,149,20,149,4,21,149,131,53,149,21,149,21,149, + 8,53,149,130,53,157,85,157,12,53,149,129,21,149,41,53,149,3,53,157, + 4,53,149,132,21,149,53,149,21,149,21,149,11,53,149,3,53,157,135,53, + 149,53,157,53,149,53,149,53,157,85,149,85,149,3,53,157,158,85,149,53, + 149,53,157,53,157,85,149,85,149,85,157,53,157,85,157,53,149,85,149,85, + 149,53,149,21,149,244,140,147,124,50,116,144,91,14,67,75,50,169,25,137, + 17,202,25,107,58,205,74,46,91,175,107,240,115,240,123,240,123,4,16,124, + 6,240,123,135,240,115,240,123,240,115,208,115,175,107,110,99,237,74,3,204, + 74,153,236,74,237,82,237,82,13,83,237,82,237,82,45,91,78,99,110,99, + 142,107,143,107,175,107,175,107,110,107,77,107,239,123,77,99,207,115,204,74, + 4,25,40,66,235,90,109,107,77,107,77,107,3,109,115,136,77,115,109,115, + 77,107,109,115,109,115,109,107,109,115,141,107,3,240,115,136,208,107,240,107, + 208,115,208,107,208,107,240,107,240,115,208,115,5,240,115,143,208,107,208,115, + 208,107,240,107,240,115,208,115,208,115,240,115,240,115,41,66,33,0,32,0, + 37,33,143,99,240,107,4,208,107,145,240,107,240,107,240,115,240,107,240,107, + 16,108,241,115,240,107,240,115,17,116,16,116,16,116,240,115,16,116,240,115, + 240,107,240,107,3,208,107,131,240,107,208,107,240,115,3,208,107,130,240,115, + 208,107,4,240,115,160,240,107,240,107,16,124,178,156,178,156,145,148,144,148, + 110,148,143,148,178,156,178,156,210,156,211,156,179,156,210,156,179,156,211,156, + 243,156,178,148,77,107,69,41,32,0,0,0,0,0,0,8,32,8,32,0, + 0,0,98,8,33,8,65,8,33,8,5,65,8,129,97,8,6,65,8,130, + 33,8,33,8,6,65,8,130,33,8,33,0,3,0,0,129,33,0,13,65, + 8,131,65,0,131,8,70,25,30,3,143,203,90,203,90,235,98,12,99,12, + 99,45,99,77,107,109,107,142,115,207,115,239,123,16,124,48,124,81,132,81, + 132,3,114,132,5,146,132,158,147,132,146,132,147,140,179,140,179,132,179,140, + 179,140,179,132,179,132,211,132,211,132,179,132,211,132,211,140,179,140,179,132, + 211,140,211,140,211,132,212,132,212,140,212,140,211,140,212,140,211,132,211,140, + 211,140,244,140,244,140,212,140,4,244,140,136,244,148,244,148,244,140,20,141, + 244,148,244,148,20,141,244,148,7,244,140,141,244,148,20,149,20,149,244,148, + 20,149,20,149,20,141,244,148,20,149,244,148,20,149,20,149,21,149,7,20, + 149,142,21,149,21,149,20,149,21,149,20,149,21,149,20,149,20,149,21,149, + 20,149,21,149,20,149,20,141,21,149,3,244,140,129,20,141,5,244,140,130, + 20,141,244,140,3,20,141,131,20,149,21,149,21,149,8,53,149,137,21,149, + 21,149,20,149,21,141,20,149,21,149,21,149,20,149,21,149,3,20,149,132, + 21,149,20,149,20,149,21,149,4,20,149,130,21,149,21,141,5,21,149,140, + 20,149,20,149,21,149,20,149,20,149,21,149,21,149,53,149,53,149,21,149, + 21,149,20,149,3,21,149,152,20,149,21,141,20,149,244,148,20,141,20,141, + 244,148,20,149,20,149,21,149,52,149,53,149,21,149,53,149,53,149,21,149, + 53,149,21,149,53,149,53,149,21,149,53,149,53,149,21,149,3,53,149,130, + 21,149,53,149,4,21,149,129,20,149,3,21,149,3,53,149,3,21,149,4, + 53,149,3,53,157,135,85,157,53,149,53,149,85,149,53,149,53,149,53,157, + 30,53,149,129,21,149,16,53,149,130,85,149,85,157,3,53,157,3,53,149, + 130,21,149,53,149,3,21,149,13,53,149,130,85,149,85,149,3,53,149,132, + 85,157,53,149,85,149,53,157,3,53,149,136,53,157,53,149,85,149,53,157, + 53,157,85,149,85,149,85,157,3,53,149,146,20,141,212,132,147,124,17,108, + 144,91,14,75,75,50,137,25,104,17,201,25,75,50,205,74,46,91,143,99, + 208,115,240,115,240,123,240,123,3,16,124,8,240,123,158,240,115,208,115,175, + 115,175,107,13,83,172,74,204,74,204,74,237,82,13,83,13,83,237,82,237, + 82,13,83,45,91,110,99,110,99,142,107,143,107,143,107,175,107,110,107,109, + 107,239,123,77,107,207,115,236,82,4,33,40,66,236,90,3,109,107,4,109, + 115,144,109,107,109,115,109,115,109,107,109,107,109,115,109,115,240,115,208,115, + 240,107,240,115,208,115,240,115,208,107,208,107,240,107,5,240,115,145,208,115, + 240,115,240,115,208,115,240,115,240,115,240,107,208,107,240,107,240,107,208,115, + 175,107,101,33,0,0,65,0,73,58,17,116,4,208,107,4,240,107,145,240, + 115,240,107,240,115,240,115,16,108,240,107,16,116,16,108,240,115,240,115,240, + 107,240,115,240,107,240,107,208,107,208,107,240,115,3,208,107,140,240,107,208, + 107,240,115,240,107,240,115,240,115,208,115,240,115,240,107,208,107,49,132,210, + 156,3,178,156,137,178,148,178,156,179,156,144,148,143,148,177,148,211,156,211, + 156,178,156,3,210,156,132,20,165,211,156,81,140,73,74,3,0,0,132,0, + 8,0,0,65,8,65,8,4,33,8,8,65,8,132,33,8,33,0,33,8, + 33,8,3,65,8,129,65,0,4,65,8,134,33,8,33,0,0,0,0,0, + 1,0,98,8,3,65,8,130,97,8,97,8,4,65,8,133,33,8,66,8, + 38,17,107,50,204,66,55,3,144,203,90,235,98,236,98,236,98,12,99,44, + 107,77,107,109,107,142,115,207,115,239,115,16,124,48,132,81,132,113,132,114, + 132,5,146,132,132,146,140,146,132,146,132,179,140,3,179,132,148,179,140,179, + 132,211,140,179,132,179,132,179,140,211,132,179,140,211,132,211,140,179,132,211, + 140,211,140,179,132,179,140,212,140,211,140,212,140,244,140,211,140,3,244,140, + 129,212,140,3,244,140,140,244,148,244,140,244,140,20,141,244,140,244,148,20, + 141,20,149,244,140,20,141,20,141,244,140,4,244,148,7,20,149,130,244,148, + 20,141,5,20,149,129,21,149,4,20,149,146,21,149,21,149,20,149,20,149, + 21,149,20,149,20,149,21,149,20,149,21,149,20,149,21,149,20,149,20,149, + 21,149,20,149,20,141,20,141,6,244,140,143,20,141,20,141,20,149,244,140, + 21,141,20,149,20,149,21,141,20,149,21,149,21,149,53,149,21,149,53,149, + 53,149,3,21,149,132,20,149,21,149,20,141,21,141,3,21,149,5,20,149, + 146,21,149,20,149,20,141,21,141,20,141,20,141,21,149,21,149,20,149,21, + 149,21,149,20,149,21,149,20,149,21,141,21,149,21,149,20,149,5,21,149, + 145,53,149,20,149,21,149,21,149,20,149,20,149,21,141,20,149,20,141,21, + 141,244,140,20,149,244,148,244,140,21,149,53,149,21,149,5,53,149,132,21, + 149,53,149,21,149,21,149,5,53,149,134,21,149,21,149,53,149,21,149,21, + 149,20,149,8,21,149,130,53,149,21,149,5,53,149,133,53,157,85,157,85, + 149,85,157,85,157,3,85,149,134,53,157,53,157,85,149,53,149,85,149,85, + 149,36,53,149,129,53,157,7,53,149,130,85,149,53,149,3,85,149,6,53, + 149,133,21,149,53,149,21,149,53,149,21,149,9,53,149,168,85,157,53,157, + 53,149,85,157,53,149,85,157,53,149,85,149,53,157,53,157,53,149,85,149, + 53,157,53,149,53,157,53,149,85,157,85,157,85,149,53,149,85,157,85,157, + 53,157,21,149,20,141,212,132,146,124,17,108,144,91,14,75,108,50,169,25, + 72,17,137,25,43,50,172,66,13,83,143,99,208,107,240,115,11,240,123,163, + 207,115,208,123,240,123,239,115,207,115,207,115,45,91,172,74,204,74,204,82, + 236,82,13,83,13,91,13,91,13,83,237,82,45,99,110,99,142,107,142,107, + 175,107,143,107,175,107,110,107,77,107,239,123,77,107,175,107,236,82,4,33, + 8,58,235,90,77,107,45,107,77,115,5,109,115,138,77,107,109,115,109,107, + 77,115,109,115,77,107,13,91,208,115,208,115,240,115,3,208,115,153,240,115, + 240,115,208,107,240,115,240,115,240,107,208,115,240,115,240,107,208,115,208,107, + 208,107,208,115,208,107,208,107,208,115,208,107,208,107,240,115,175,107,130,8, + 0,0,65,0,110,91,16,116,3,240,107,132,208,115,240,107,240,107,241,107, + 3,240,115,142,17,116,240,115,17,116,240,115,16,116,17,116,240,115,240,107, + 240,107,240,115,240,115,208,115,240,107,240,115,3,240,107,130,208,107,240,115, + 3,208,107,134,240,115,208,115,240,115,240,115,176,107,178,148,6,178,156,151, + 211,156,144,148,112,148,110,140,143,148,144,156,211,156,210,156,211,156,178,148, + 178,156,210,156,211,156,84,173,85,173,12,99,4,33,32,0,0,0,0,0, + 101,41,0,0,33,8,8,65,8,3,33,8,136,32,8,33,8,33,0,33, + 8,33,8,65,8,65,8,33,8,5,65,8,146,97,8,33,0,66,0,196, + 16,228,24,196,16,163,16,131,16,131,16,131,8,163,16,196,16,70,25,9, + 34,204,58,45,83,13,83,204,82,226,2,145,203,90,235,90,235,98,236,98, + 12,99,44,99,77,107,109,107,142,107,174,115,207,115,16,124,48,124,81,124, + 81,132,113,132,114,132,7,146,132,132,147,132,179,132,178,132,179,140,9,179, + 132,131,211,140,211,140,211,132,4,211,140,134,212,140,211,140,244,140,212,140, + 244,140,212,140,12,244,140,138,20,149,244,140,20,141,244,140,244,140,244,148, + 244,148,20,149,20,149,244,140,3,20,149,129,244,148,9,20,149,131,21,149, + 20,149,21,149,3,20,149,132,21,149,21,149,20,149,21,149,5,20,149,133, + 53,149,21,149,21,149,20,149,21,149,3,20,141,131,244,140,20,141,244,148, + 5,244,140,132,20,141,20,149,21,141,20,141,3,21,149,138,20,149,21,149, + 53,149,53,149,21,149,53,149,21,149,53,149,21,149,53,149,3,21,149,129, + 53,149,3,21,149,5,20,149,131,20,141,20,141,245,148,3,20,149,134,21, + 149,20,149,20,149,21,149,21,149,20,149,11,21,149,129,53,149,3,21,149, + 141,20,149,20,149,20,141,20,149,20,141,20,141,244,140,244,148,20,141,20, + 149,53,149,21,149,21,149,4,53,149,134,21,149,21,149,52,149,21,149,53, + 149,21,149,4,53,149,130,21,149,53,149,11,21,149,132,53,149,21,149,53, + 149,21,149,4,53,149,134,53,157,85,149,53,157,85,157,53,157,85,157,3, + 53,157,9,53,149,129,53,157,30,53,149,129,85,149,7,53,149,132,85,157, + 53,149,53,149,85,149,7,53,149,129,21,149,11,53,149,140,85,149,53,149, + 85,157,85,149,53,149,53,157,85,149,85,157,53,157,53,157,85,157,85,157, + 3,53,157,155,53,149,53,149,53,157,85,157,53,157,85,157,85,157,86,157, + 86,157,53,149,21,149,244,140,212,132,147,124,49,108,111,83,238,74,108,50, + 169,25,104,17,136,17,10,42,140,66,13,75,111,99,176,107,240,115,5,240, + 123,129,239,123,5,240,123,148,239,115,240,123,240,123,207,115,239,115,207,115, + 45,91,204,74,204,74,204,82,13,91,13,91,45,91,237,82,237,82,13,83, + 45,99,110,107,110,107,143,107,3,142,107,139,110,107,109,107,239,123,77,99, + 175,107,13,91,4,25,8,58,203,90,77,107,44,99,9,109,115,141,77,115, + 109,115,12,99,4,25,139,66,78,99,208,107,240,115,240,115,208,115,208,115, + 208,107,208,107,6,240,115,129,208,115,4,208,107,141,240,115,208,107,240,115, + 208,107,208,107,17,116,138,74,65,0,0,0,199,41,240,107,240,107,208,107, + 6,240,107,130,240,115,240,107,3,240,115,139,240,107,16,116,240,115,240,115, + 16,108,240,107,240,115,240,107,208,107,208,115,208,107,3,240,107,140,240,115, + 240,115,240,107,208,107,240,107,240,107,208,107,240,107,240,115,208,115,178,148, + 146,148,7,178,156,150,179,156,178,156,110,148,143,148,179,156,109,140,143,148, + 210,156,211,156,178,156,178,148,178,148,210,156,52,165,52,165,142,115,40,66, + 98,8,65,8,65,8,32,0,33,8,7,65,8,3,33,8,131,65,8,33, + 8,33,8,8,65,8,148,97,8,66,16,98,8,130,8,228,24,102,33,9, + 50,204,66,237,74,204,74,204,74,172,66,237,74,13,75,77,83,45,83,45, + 83,12,83,236,82,204,74,26,3,144,203,90,235,90,235,98,236,98,12,99, + 12,99,77,107,77,107,142,107,174,115,207,115,240,123,16,124,49,124,81,124, + 114,124,4,114,132,4,146,132,134,147,132,146,132,146,132,147,132,179,132,179, + 140,5,179,132,137,179,140,179,132,211,132,179,132,211,140,179,132,211,132,211, + 140,211,140,5,212,140,11,244,140,148,20,141,244,140,244,148,20,141,20,141, + 244,140,244,140,20,141,244,140,244,148,20,149,244,140,20,149,244,148,20,149, + 244,148,244,148,20,149,20,149,244,148,3,20,149,133,21,149,20,149,21,149, + 20,149,21,149,3,20,149,132,21,149,21,149,20,149,21,149,4,20,149,3, + 21,149,133,20,149,21,149,21,149,20,149,21,141,3,20,141,145,244,148,244, + 148,20,141,244,140,244,140,20,149,20,141,244,140,21,149,21,149,21,141,21, + 149,20,149,21,149,21,149,53,149,20,149,4,53,149,130,21,149,53,149,4, + 21,149,132,53,149,21,149,53,149,21,149,3,20,149,143,244,148,20,149,21, + 149,244,148,20,149,20,141,21,149,20,149,20,149,20,141,20,149,21,149,20, + 149,21,149,20,149,5,21,149,130,21,141,53,149,5,21,149,153,20,149,21, + 149,20,141,20,141,21,149,21,149,20,141,20,149,20,141,20,149,21,149,53, + 149,21,149,53,149,21,149,53,149,53,149,21,149,53,149,21,149,53,149,21, + 149,53,149,21,149,21,149,5,53,149,8,21,149,135,53,149,20,149,21,149, + 21,149,53,149,21,149,21,149,4,53,149,136,53,157,53,157,85,157,85,157, + 53,157,53,157,85,149,53,157,13,53,149,129,85,149,23,53,149,132,85,149, + 53,149,53,149,85,149,8,53,149,134,85,149,53,157,85,149,53,149,53,149, + 85,149,5,53,149,129,21,149,6,53,149,129,53,157,5,53,149,134,85,157, + 53,149,85,149,85,149,53,149,85,149,3,53,157,132,85,157,85,157,53,149, + 85,149,3,53,149,153,53,157,53,149,53,157,86,157,85,157,86,157,85,157, + 53,149,21,149,244,140,211,132,115,124,17,116,111,83,238,74,108,50,169,25, + 104,9,104,17,10,42,139,58,237,74,78,99,207,107,240,115,6,240,123,129, + 207,123,3,240,123,132,240,115,239,115,240,123,240,115,3,207,115,129,77,99, + 3,236,82,152,237,82,13,91,45,91,13,91,236,90,237,82,45,99,110,107, + 110,107,142,107,142,107,143,107,142,107,110,107,77,107,239,123,109,107,143,107, + 13,91,4,25,8,58,203,90,109,107,77,107,3,109,115,154,77,115,109,115, + 109,115,77,115,109,115,109,115,77,107,109,115,44,107,0,0,130,8,37,33, + 171,74,110,99,208,115,240,115,241,115,240,115,240,115,208,115,208,107,240,115, + 240,115,208,115,240,107,240,107,4,208,107,132,208,115,240,115,208,107,208,115, + 3,208,107,134,134,41,0,0,98,8,236,82,241,115,208,107,6,240,107,3, + 240,115,134,16,116,16,108,240,115,16,116,240,107,16,116,4,240,115,132,208, + 115,240,115,208,107,208,107,10,240,107,136,208,107,16,116,178,156,146,148,113, + 148,178,148,178,156,146,156,3,178,156,151,178,148,178,156,178,156,178,148,178, + 156,110,148,74,132,74,132,109,140,211,156,211,156,179,148,178,156,178,148,178, + 148,243,156,243,156,178,148,236,90,98,16,0,0,0,0,33,0,7,65,8, + 3,33,8,11,65,8,135,98,16,130,16,196,24,196,24,42,42,110,83,110, + 91,3,78,91,131,77,91,45,91,45,83,3,13,83,131,236,82,236,82,204, + 82,26,3,129,171,90,3,203,90,144,235,90,236,90,12,99,77,99,77,107, + 142,107,175,115,207,115,240,115,16,124,49,124,49,124,81,124,81,124,113,124, + 114,132,3,114,124,132,114,132,114,132,146,124,146,132,6,147,132,131,179,132, + 179,132,147,132,5,179,132,3,211,132,129,211,140,3,212,140,135,244,140,212, + 140,244,140,212,140,244,140,244,140,212,140,5,244,140,129,20,141,7,244,140, + 130,20,141,20,141,3,20,149,140,20,141,20,141,20,149,20,149,244,148,244, + 140,20,149,20,149,244,140,20,149,20,149,21,149,3,20,149,4,21,149,155, + 20,149,20,149,21,149,21,149,20,149,21,149,20,149,20,149,21,149,20,149, + 20,149,21,149,52,149,20,141,20,149,21,149,20,149,21,149,20,149,20,141, + 244,148,244,140,20,141,244,140,20,149,21,141,21,141,3,20,141,131,20,149, + 20,141,21,141,3,21,149,134,53,149,21,149,21,149,53,149,21,149,21,149, + 5,53,149,129,20,149,3,21,149,143,20,149,244,140,20,149,244,140,20,149, + 20,141,245,140,244,140,20,141,20,141,21,141,21,149,20,149,21,149,20,149, + 7,21,149,135,20,149,21,149,21,149,53,149,53,149,21,149,21,141,4,21, + 149,135,20,141,21,149,20,141,20,141,21,141,21,149,21,149,9,53,149,130, + 21,149,21,149,9,53,149,130,21,149,53,149,3,21,149,129,53,149,5,21, + 149,6,53,149,139,53,157,54,157,53,157,86,157,53,157,85,149,53,149,53, + 157,53,149,85,149,85,149,7,53,149,129,53,157,3,53,149,129,85,149,3, + 53,149,129,53,157,16,53,149,131,85,149,53,149,85,149,10,53,149,135,53, + 157,85,157,53,157,85,157,85,157,53,149,85,149,6,53,149,129,21,149,14, + 53,149,176,85,149,85,149,53,149,85,157,85,149,85,157,53,149,85,149,53, + 149,85,157,85,157,53,149,85,149,85,149,53,157,85,157,86,157,86,149,86, + 157,85,157,53,149,21,149,244,140,211,132,115,124,17,116,111,91,237,74,75, + 50,169,25,72,9,72,9,201,33,107,50,205,74,78,91,143,107,208,115,208, + 115,240,123,240,123,239,115,240,123,208,115,208,115,239,115,240,123,240,123,3, + 207,123,144,207,115,207,115,175,115,175,107,77,99,236,82,237,82,236,82,13, + 91,45,99,45,99,13,91,236,90,236,82,45,91,78,99,4,110,107,141,143, + 107,110,107,77,107,240,123,77,107,143,107,203,82,37,25,8,58,235,90,77, + 107,45,107,77,107,7,109,115,142,77,115,109,115,141,115,77,107,134,41,130, + 8,0,0,0,0,163,16,167,33,138,74,13,91,143,107,208,107,8,240,115, + 129,208,107,3,208,115,144,208,107,208,107,208,115,208,107,207,107,17,116,143, + 107,228,16,0,0,37,25,143,107,240,115,240,107,240,115,240,115,241,115,7, + 240,107,135,16,116,240,115,16,116,240,107,16,108,16,116,240,115,6,240,107, + 132,208,115,208,107,240,107,240,107,3,208,107,134,208,115,240,107,208,107,49, + 132,146,148,178,148,3,145,148,131,146,148,178,156,178,156,4,178,148,150,179, + 156,144,148,109,148,143,148,110,148,76,140,42,132,109,148,177,148,179,156,179, + 156,178,156,146,148,146,148,178,156,20,165,117,173,81,132,69,33,65,8,0, + 0,33,8,11,65,8,129,33,8,5,65,8,149,65,0,65,8,97,8,98, + 8,163,24,196,16,176,91,78,83,78,91,46,91,77,83,45,91,45,91,45, + 83,45,91,13,91,13,83,13,83,236,82,236,82,204,74,225,2,143,138,82, + 170,82,170,82,171,82,203,90,203,90,236,90,12,91,45,99,77,99,110,99, + 142,107,175,107,207,107,240,115,3,16,116,135,49,124,49,124,81,124,81,116, + 81,124,82,124,82,124,3,114,124,131,146,132,114,124,146,124,4,146,132,133, + 147,132,146,132,147,132,147,132,147,124,3,179,132,134,211,132,211,140,211,140, + 211,132,212,140,211,140,4,212,140,132,212,132,212,140,212,132,212,132,12,244, + 140,142,20,141,20,141,244,148,20,149,20,141,20,141,244,148,244,140,244,148, + 20,141,20,141,20,149,20,149,21,149,7,20,149,137,21,149,21,149,20,149, + 21,149,20,149,21,149,20,149,21,149,20,149,6,21,149,133,20,149,20,149, + 21,141,20,149,20,149,4,20,141,130,20,149,21,149,7,20,141,133,21,141, + 21,141,21,149,53,149,21,149,4,53,149,129,21,149,4,53,149,133,21,149, + 21,149,53,149,21,149,21,149,3,20,141,132,244,148,244,140,244,148,244,140, + 3,20,141,129,244,140,3,21,149,132,20,141,21,141,20,141,21,141,5,21, + 149,129,20,149,5,21,149,129,53,149,4,21,149,134,20,149,20,149,21,149, + 20,149,21,149,21,149,9,53,149,132,21,149,53,149,53,149,21,149,12,53, + 149,135,21,149,53,149,21,149,53,149,21,149,53,149,21,149,6,53,149,134, + 85,149,85,149,53,149,85,157,53,149,53,157,49,53,149,130,53,157,53,157, + 3,85,149,129,53,157,3,85,149,20,53,149,171,85,157,85,157,53,157,53, + 157,85,157,85,149,53,149,53,149,85,149,53,149,53,157,53,149,85,149,85, + 157,53,157,85,157,85,157,86,157,86,157,85,149,53,149,21,149,244,140,211, + 132,115,124,49,108,111,91,238,74,108,50,169,25,72,9,71,9,169,25,75, + 50,204,74,78,91,143,99,207,107,208,115,207,115,207,123,240,123,239,115,3, + 207,115,149,208,115,239,123,240,123,207,115,207,115,208,115,208,115,175,115,175, + 115,77,99,236,82,236,82,237,82,13,91,45,99,45,99,13,91,236,82,204, + 82,45,91,77,99,6,110,107,136,109,107,239,123,77,107,142,115,74,66,37, + 25,232,57,203,90,3,77,107,5,109,115,129,77,115,5,109,115,143,110,107, + 106,74,36,33,65,0,0,0,0,0,98,8,228,24,102,33,9,58,139,66, + 236,82,78,99,143,107,207,107,5,240,115,150,208,115,240,115,208,107,208,115, + 208,107,176,107,208,107,208,107,17,116,204,74,0,0,65,0,73,66,17,124, + 240,107,240,107,240,115,240,107,240,107,240,115,240,115,240,107,3,240,115,178, + 240,107,17,116,240,107,240,107,240,115,240,115,240,107,240,115,240,107,240,115, + 208,107,208,107,240,107,208,107,240,107,208,107,208,107,240,107,208,107,240,107, + 208,115,208,107,208,107,113,140,146,148,146,148,113,148,178,148,146,156,146,148, + 145,148,145,148,178,148,178,156,178,156,178,148,178,148,110,148,75,140,109,140, + 109,140,143,148,143,148,76,140,74,132,108,140,143,148,178,156,211,148,178,148, + 3,146,148,135,211,156,52,165,48,132,138,82,130,16,0,0,32,0,18,65, + 8,136,98,8,130,8,42,42,143,91,78,91,45,83,45,91,77,91,3,45, + 91,129,13,91,4,13,83,130,237,82,204,74,41,3,152,138,74,170,82,170, + 82,171,82,171,82,203,82,236,82,236,90,236,90,12,91,45,91,77,99,110, + 99,110,99,142,107,174,107,175,107,207,107,207,107,240,107,240,107,16,108,16, + 116,16,116,3,49,116,131,81,116,81,124,81,116,8,114,124,132,146,124,146, + 124,146,132,146,132,4,179,132,5,211,132,129,211,140,4,211,132,130,212,140, + 212,132,3,212,140,130,244,140,212,140,4,244,140,137,20,141,244,140,244,140, + 20,149,20,141,244,140,20,149,20,149,244,140,3,20,141,142,20,149,20,149, + 244,148,20,149,20,149,21,149,20,149,244,148,20,141,20,149,21,149,20,149, + 21,149,21,149,4,20,149,3,21,149,156,53,149,21,149,21,149,20,149,21, + 149,20,149,20,149,21,149,20,141,20,141,244,140,20,141,20,141,20,149,20, + 141,20,141,244,140,20,141,20,141,244,140,20,141,21,149,20,141,21,141,21, + 141,20,149,53,149,21,149,4,53,149,131,21,149,53,149,21,149,5,53,149, + 148,20,149,20,149,21,141,20,141,20,149,244,148,244,140,20,149,244,140,20, + 141,244,148,20,141,244,140,245,140,20,141,21,141,21,141,20,141,21,149,20, + 149,5,21,149,132,20,149,21,149,21,149,20,141,6,21,149,139,20,149,21, + 141,21,141,21,149,20,149,21,149,21,149,53,149,21,149,53,149,21,149,4, + 53,149,134,21,149,53,149,21,149,53,149,53,149,21,149,13,53,149,4,21, + 149,131,53,149,21,149,21,149,5,53,149,131,85,149,85,149,85,157,40,53, + 149,129,85,149,12,53,149,137,85,149,53,149,53,149,85,149,53,149,85,149, + 85,149,53,157,85,149,10,53,149,129,21,149,4,53,149,180,85,149,53,149, + 85,149,53,157,53,149,85,149,53,157,85,157,53,149,85,157,53,157,85,157, + 85,149,53,157,85,149,53,149,53,157,85,157,85,157,85,149,85,149,54,157, + 53,149,53,149,21,149,20,141,180,132,115,124,18,108,144,91,14,75,75,50, + 169,25,71,9,39,9,169,33,42,50,172,74,45,91,143,99,207,115,208,115, + 207,115,207,123,207,115,240,123,207,115,207,115,239,115,208,115,239,123,208,115, + 5,207,115,143,175,115,77,99,236,90,237,90,12,91,45,91,45,99,45,99, + 237,90,204,82,204,82,13,91,77,99,78,99,110,99,3,110,107,140,78,107, + 109,107,240,123,109,107,78,107,134,33,36,25,232,57,203,90,109,107,109,107, + 44,107,3,109,115,131,77,115,109,115,77,115,3,109,115,151,77,107,77,107, + 208,115,176,115,45,99,232,57,228,24,65,0,0,0,65,8,162,24,195,24, + 163,16,162,16,4,25,70,33,232,49,106,66,236,82,78,99,175,107,208,107, + 208,115,5,240,115,142,208,107,240,107,240,115,16,124,69,33,0,0,163,16, + 175,107,241,115,240,115,240,107,240,107,240,115,240,115,3,240,107,134,16,108, + 240,107,16,108,17,116,240,107,240,107,4,240,115,132,240,107,240,115,240,107, + 208,107,3,240,107,140,208,115,240,107,208,107,240,107,208,107,240,115,240,107, + 208,115,113,140,146,148,146,148,113,148,4,146,148,3,145,148,156,146,148,178, + 156,178,148,109,140,42,132,109,140,42,132,141,140,76,140,143,148,142,148,77, + 140,75,140,74,132,110,140,178,156,179,156,178,148,146,148,146,148,178,148,178, + 156,243,156,113,140,236,90,32,0,0,0,33,8,4,65,8,132,33,8,65, + 8,65,8,33,8,8,65,8,132,130,8,229,16,45,75,110,91,3,78,91, + 133,77,91,78,91,77,91,45,91,45,91,3,13,83,131,237,82,236,82,204, + 74,254,2,129,171,82,6,203,82,4,236,82,137,13,91,45,91,45,91,77, + 91,77,91,110,91,77,91,110,99,110,99,4,143,99,3,175,99,131,207,99, + 208,107,208,107,3,240,107,4,17,108,133,17,116,49,116,49,116,82,116,82, + 116,3,114,124,3,146,124,131,147,124,179,132,179,124,5,179,132,8,211,132, + 131,212,140,244,140,212,140,4,244,140,129,20,141,13,244,140,5,20,141,130, + 20,149,21,149,3,20,149,131,21,149,20,149,21,149,4,20,149,132,20,141, + 21,149,20,149,21,149,5,20,141,4,244,140,129,20,141,3,244,140,138,20, + 141,244,140,20,141,21,141,21,149,20,149,21,149,21,149,53,149,21,149,4, + 53,149,130,21,149,21,149,4,53,149,144,21,149,53,149,53,149,21,149,20, + 149,20,141,20,149,244,140,20,141,20,141,244,140,20,141,21,141,20,141,20, + 141,21,141,3,20,149,130,21,149,20,149,3,21,149,130,20,141,245,140,4, + 21,149,129,21,141,3,21,149,135,20,149,21,149,21,149,20,149,21,149,21, + 149,20,149,4,21,149,4,53,149,132,21,149,53,149,53,149,21,149,10,53, + 149,129,21,149,5,53,149,130,21,149,53,149,4,21,149,136,53,149,53,149, + 21,149,21,149,53,149,53,157,53,149,85,149,3,53,149,129,53,157,8,53, + 149,132,21,149,21,149,53,149,21,149,22,53,149,130,85,149,85,149,3,53, + 149,129,85,149,11,53,149,131,85,149,53,149,85,149,3,53,149,132,85,149, + 53,149,53,149,85,149,4,53,149,131,21,149,53,149,21,149,11,53,149,4, + 85,149,142,85,157,85,157,53,157,53,157,85,149,85,157,53,157,85,149,53, + 157,53,157,85,157,85,157,85,149,85,157,3,53,149,149,21,149,212,140,147, + 124,50,116,176,99,14,75,75,50,169,17,71,9,39,9,168,25,42,42,172, + 66,45,91,142,99,175,107,240,115,207,115,207,115,207,123,208,115,4,207,115, + 129,208,115,5,207,115,141,175,115,175,115,77,99,236,90,236,90,12,91,13, + 91,45,99,45,99,12,91,204,82,204,82,13,91,3,78,99,144,110,99,110, + 107,110,99,110,107,109,107,16,124,142,107,203,90,130,8,37,33,199,57,203, + 90,77,107,109,107,109,107,77,115,5,109,115,129,77,115,4,77,107,140,175, + 107,208,107,240,115,208,115,110,107,171,82,199,41,69,41,69,41,37,41,195, + 32,98,16,4,65,8,138,97,8,130,16,4,25,134,41,232,57,106,66,204, + 82,45,91,143,107,176,107,3,208,115,141,240,115,110,99,228,16,0,0,232, + 41,240,115,241,115,240,115,208,107,240,107,240,107,241,107,240,107,3,240,115, + 141,16,116,240,115,17,116,240,115,240,115,240,107,240,115,240,115,240,107,240, + 115,240,107,208,107,208,107,3,240,107,130,208,107,208,115,5,208,107,133,207, + 115,48,140,81,140,80,140,113,148,3,146,148,149,113,148,146,148,178,148,145, + 148,113,148,146,148,178,156,112,148,179,148,144,148,76,140,75,140,41,132,109, + 140,143,148,143,140,111,140,43,132,41,132,107,140,144,148,6,146,148,134,211, + 156,84,165,73,66,65,8,0,0,33,8,4,65,8,133,33,8,33,8,65, + 8,65,8,65,0,4,65,8,147,97,8,131,16,74,42,143,91,110,91,78, + 91,78,91,46,91,78,91,78,91,45,91,78,91,45,83,45,83,13,83,13, + 83,236,82,236,82,204,82,199,2,140,236,82,236,82,12,83,12,83,12,91, + 12,91,12,83,12,83,12,91,13,91,12,91,13,91,4,45,91,130,77,91, + 77,91,3,78,91,7,110,91,129,142,91,3,143,99,4,175,99,137,208,99, + 208,99,207,107,208,107,240,99,240,107,16,108,17,108,17,116,3,49,116,132, + 82,116,82,116,114,116,82,116,4,114,124,3,146,124,134,147,124,179,124,147, + 132,147,124,147,132,179,132,3,211,132,131,212,132,212,132,212,140,3,244,140, + 129,212,140,12,244,140,4,20,141,129,244,140,3,20,141,138,244,140,20,141, + 21,149,20,149,20,141,21,141,21,149,21,149,20,141,20,149,4,20,141,135, + 244,140,244,140,20,141,20,141,244,140,20,141,20,141,6,244,140,135,20,149, + 21,149,20,141,21,141,21,149,53,149,21,149,3,53,149,129,21,149,8,53, + 149,133,21,149,21,149,20,149,21,149,21,149,4,20,141,129,244,140,3,20, + 141,148,21,141,21,141,20,141,20,141,20,149,20,149,21,141,21,149,20,149, + 21,141,20,149,21,141,20,141,20,149,21,149,21,149,20,149,21,149,21,149, + 20,149,6,21,149,129,20,149,3,21,149,137,53,149,21,149,21,149,53,149, + 21,149,53,149,53,149,21,149,21,149,14,53,149,131,21,149,21,149,53,149, + 4,21,149,131,53,149,21,149,21,149,13,53,149,136,21,149,21,149,53,149, + 21,149,53,149,21,149,53,149,21,149,13,53,149,129,21,149,52,53,149,135, + 85,149,53,149,85,149,85,157,53,149,85,157,85,149,3,53,149,137,53,157, + 53,149,53,149,85,149,85,157,85,157,85,149,85,157,85,157,3,53,149,145, + 21,149,244,140,179,124,82,116,144,91,14,75,107,50,169,25,71,9,7,9, + 136,25,10,42,139,66,13,83,110,99,175,107,208,115,13,207,115,3,175,115, + 129,78,99,3,236,90,135,13,91,45,99,45,99,236,82,204,82,204,74,12, + 91,4,45,99,139,77,99,78,99,110,107,142,107,239,123,174,115,41,66,33, + 0,37,33,231,57,171,82,4,77,107,131,77,115,109,115,109,115,3,77,115, + 180,77,107,77,107,109,107,77,107,175,107,207,107,175,107,175,107,208,115,208, + 115,142,107,77,99,236,82,106,74,232,57,102,41,4,25,227,24,163,16,130, + 16,130,8,98,8,97,8,97,8,98,8,130,16,195,16,4,25,102,41,232, + 49,73,66,203,82,45,91,111,99,208,115,106,66,33,0,98,8,171,74,241, + 115,240,107,240,107,240,115,240,107,241,115,240,107,240,115,240,115,240,107,240, + 115,16,116,16,108,5,240,115,132,240,107,240,115,240,107,240,115,3,208,107, + 131,240,107,208,107,240,107,6,208,107,134,207,115,239,131,239,131,16,140,80, + 140,81,140,3,113,148,3,146,148,146,145,148,145,148,146,148,178,148,211,156, + 210,156,177,156,110,140,109,140,77,140,144,148,112,140,110,140,110,140,108,140, + 74,132,76,140,110,140,4,146,148,137,113,148,113,140,210,156,239,123,232,57, + 0,0,0,0,65,8,33,8,10,65,8,132,98,8,103,25,110,83,142,91, + 6,78,91,131,45,91,45,91,45,83,4,13,83,130,237,82,204,82,225,2, + 3,45,91,137,77,91,45,91,45,91,77,91,77,91,45,91,77,91,45,91, + 45,91,4,77,91,3,78,91,132,110,91,78,91,110,91,110,91,9,78,91, + 6,110,91,137,143,91,142,91,143,99,143,99,175,99,208,99,175,99,208,107, + 208,107,3,240,107,132,16,108,17,108,17,108,17,116,4,49,116,131,82,116, + 81,116,81,116,3,82,116,133,114,124,114,124,146,124,147,124,146,124,7,179, + 132,129,211,132,3,179,132,136,211,132,179,132,211,132,212,140,211,132,212,132, + 212,140,212,140,6,244,140,131,20,141,244,140,244,140,4,20,141,129,21,141, + 4,20,141,130,244,140,20,149,14,244,140,3,20,141,138,21,141,21,141,21, + 149,53,141,21,141,21,149,52,149,21,149,53,149,21,149,4,53,149,140,21, + 149,53,149,21,149,53,149,21,149,53,149,53,149,21,149,20,149,20,141,244, + 140,21,141,6,20,141,135,20,149,21,149,244,140,21,141,20,141,20,141,20, + 149,3,20,141,137,21,149,20,141,21,149,20,149,20,141,21,149,20,149,20, + 141,21,141,10,21,149,130,53,149,21,149,4,53,149,129,21,149,8,53,149, + 136,21,149,53,149,53,149,21,149,53,149,21,149,21,149,53,149,3,21,149, + 129,53,141,3,21,149,10,53,149,140,21,149,53,149,53,149,21,149,21,149, + 53,149,53,149,21,149,53,149,53,149,21,149,21,149,14,53,149,129,21,149, + 36,53,149,129,85,149,4,53,149,129,21,149,5,53,149,129,85,149,6,53, + 149,132,85,149,53,157,53,149,85,149,4,53,149,135,85,149,53,149,85,149, + 53,149,85,157,53,149,85,157,4,53,149,145,21,141,244,140,179,132,82,116, + 176,99,14,75,107,50,169,25,104,17,7,9,104,25,10,42,139,58,13,83, + 110,99,175,107,240,115,11,207,115,130,175,115,207,115,3,175,115,156,78,99, + 236,90,236,82,236,82,13,91,45,91,45,99,236,90,203,82,203,82,13,91, + 45,99,110,107,77,99,77,99,110,99,110,107,110,107,77,107,16,124,239,123, + 101,41,0,0,69,33,231,57,203,90,77,107,109,107,3,77,107,157,76,107, + 76,115,44,107,77,107,76,107,77,107,76,107,109,107,77,107,143,107,175,107, + 175,107,207,107,175,107,175,107,208,107,208,115,208,115,208,107,175,107,143,107, + 77,99,236,82,138,66,8,58,134,41,36,25,195,16,130,8,4,65,8,141, + 98,8,98,16,130,16,195,16,227,16,69,33,232,49,8,58,130,16,32,0, + 228,24,78,91,49,116,4,17,116,132,240,115,240,115,241,115,240,107,3,240, + 115,130,16,116,240,115,6,240,107,4,208,107,132,240,107,208,107,240,107,240, + 115,3,208,107,132,208,115,208,107,208,107,207,123,3,239,131,166,48,132,48, + 132,16,132,48,140,81,140,146,148,113,140,113,148,178,148,178,148,145,148,145, + 148,81,140,174,123,110,115,109,107,76,107,109,107,141,115,141,107,141,115,206, + 123,238,123,13,124,44,132,43,132,77,140,178,148,146,148,146,148,113,148,81, + 140,146,148,178,148,174,115,195,24,0,0,0,0,3,33,0,6,65,8,136, + 98,8,228,8,111,75,142,91,110,91,78,91,78,91,78,99,3,78,91,3, + 45,91,134,13,83,45,83,13,83,12,75,236,82,204,74,9,3,3,77,91, + 130,109,99,110,99,7,110,91,131,142,99,110,99,110,99,3,142,91,134,142, + 99,142,91,142,91,142,99,110,99,142,91,3,110,91,131,110,99,110,91,110, + 91,3,78,91,134,77,91,77,91,78,91,78,91,78,83,77,91,3,78,91, + 4,110,91,130,143,99,142,91,4,143,99,3,175,99,142,208,99,208,107,207, + 99,208,99,208,107,208,99,208,107,240,99,240,107,16,108,17,108,17,108,49, + 108,49,116,3,81,116,138,82,116,82,116,114,116,82,116,82,116,82,124,82, + 124,114,124,114,124,114,116,3,114,124,132,146,124,147,124,147,124,179,124,5, + 179,132,132,211,132,211,132,212,132,244,140,3,244,132,129,212,132,13,244,140, + 129,244,132,4,212,132,129,244,132,3,244,140,131,20,141,244,140,244,140,3, + 20,141,129,21,141,3,20,141,5,21,149,129,53,149,7,21,149,137,20,149, + 21,149,20,141,20,141,245,140,244,140,20,141,20,141,21,141,3,20,141,137, + 244,140,20,141,244,140,244,148,20,141,20,141,20,149,20,141,244,140,3,20, + 141,139,20,149,244,140,20,141,20,141,21,149,20,141,21,149,21,149,20,149, + 20,149,53,149,6,21,149,129,21,141,3,21,149,3,53,149,129,21,149,4, + 53,149,131,21,149,21,149,53,149,3,21,149,129,53,149,4,21,149,130,53, + 149,21,141,5,21,149,130,53,149,21,149,4,53,149,3,21,149,129,21,141, + 3,21,149,130,21,141,21,141,6,21,149,12,53,149,131,21,149,53,149,21, + 149,6,53,149,129,21,149,25,53,149,131,85,149,53,149,85,149,12,53,149, + 131,85,149,53,149,53,149,4,85,149,4,53,149,129,85,149,3,53,149,129, + 85,149,3,53,149,4,85,149,150,53,149,53,149,53,141,244,140,179,132,82, + 116,176,99,14,75,108,50,169,33,104,17,39,9,72,17,234,33,107,58,13, + 83,110,91,143,107,240,115,207,115,207,115,175,115,4,207,115,133,207,123,175, + 115,207,115,175,115,207,115,4,175,115,140,77,99,236,90,236,90,204,82,236, + 90,12,91,236,90,171,82,107,74,106,74,171,82,204,90,3,236,90,148,204, + 90,204,82,236,90,109,107,240,123,239,123,36,33,130,16,36,33,167,49,203, + 90,109,107,109,107,110,107,109,107,109,107,77,107,77,107,109,107,109,115,4, + 109,107,136,77,107,142,115,175,107,175,107,207,107,207,107,175,107,207,115,3, + 207,107,144,208,115,208,115,240,115,241,115,17,116,17,116,240,115,207,115,78, + 99,236,82,138,66,232,57,101,41,228,24,162,16,98,8,6,65,8,138,130, + 16,65,8,32,0,195,16,73,58,139,74,236,82,110,99,175,107,175,107,3, + 17,116,130,16,108,17,116,3,240,107,5,240,115,132,240,107,240,115,240,107, + 240,107,3,208,107,129,240,107,3,208,107,134,207,107,208,107,240,115,208,107, + 207,115,207,123,3,239,123,179,239,131,16,132,239,123,48,132,239,131,236,98, + 138,82,236,90,174,115,16,132,142,115,12,99,12,99,12,91,236,90,12,91, + 12,91,236,90,12,91,13,91,236,90,13,99,13,99,45,99,109,107,108,107, + 207,123,81,140,146,148,146,148,113,140,81,140,48,140,81,140,243,156,207,115, + 102,41,228,24,163,16,130,16,98,8,66,8,65,8,65,8,97,8,131,16, + 163,16,232,41,240,99,110,99,110,91,4,78,91,133,78,99,78,91,45,91, + 77,91,77,91,4,13,83,130,236,82,172,74,219,2,3,77,91,3,110,91, + 132,142,91,110,91,142,99,142,91,3,142,99,130,143,99,142,99,6,175,99, + 3,143,99,136,142,99,143,99,142,91,143,99,142,91,142,91,110,99,142,91, + 18,110,91,138,110,99,110,99,110,91,142,91,143,99,143,99,142,91,142,91, + 143,91,110,91,4,143,91,3,175,99,131,207,99,208,99,208,107,7,240,107, + 131,241,107,240,107,16,108,4,17,108,130,49,116,49,116,3,82,116,129,114, + 116,4,114,124,129,146,124,4,147,124,131,179,124,179,132,179,124,5,179,132, + 130,211,132,180,132,5,211,132,133,212,132,212,132,211,132,180,132,211,132,4, + 212,132,144,244,132,244,140,244,132,244,140,244,140,244,132,244,140,244,140,20, + 141,244,140,20,141,20,141,20,149,21,141,20,141,21,141,3,21,149,129,21, + 141,6,21,149,133,20,141,20,141,244,140,20,141,20,141,12,244,140,157,20, + 141,244,140,244,140,20,141,244,140,244,140,20,141,244,140,244,140,20,149,20, + 141,21,149,21,141,21,149,21,149,21,141,21,141,20,141,21,149,21,149,20, + 141,21,141,21,149,20,141,21,149,21,149,53,149,53,149,21,149,4,53,149, + 23,21,149,138,53,149,21,149,21,149,245,148,244,140,20,141,244,140,245,140, + 245,140,20,141,4,21,141,130,21,149,21,141,3,21,149,10,53,149,130,21, + 149,21,149,5,53,149,129,21,149,13,53,149,129,21,149,21,53,149,131,22, + 149,21,149,21,149,3,53,149,134,85,149,53,149,85,149,53,149,85,149,85, + 149,14,53,149,129,85,149,5,53,149,150,21,149,212,132,147,132,50,116,176, + 91,46,83,107,58,201,33,104,17,7,9,39,17,201,33,107,50,237,74,78, + 91,143,99,208,115,207,115,175,115,174,115,207,115,175,115,5,207,115,131,175, + 115,175,115,207,115,3,175,115,136,45,99,74,74,74,66,41,58,9,58,8, + 58,232,49,200,49,3,167,41,129,167,49,5,167,41,140,8,58,109,107,16, + 124,207,115,199,49,69,33,37,33,199,49,203,90,77,107,109,115,110,107,4, + 109,107,4,142,115,134,142,107,142,115,142,115,45,91,78,91,78,91,3,110, + 99,130,143,107,143,107,4,175,107,3,208,107,144,208,115,240,115,240,115,241, + 115,17,116,240,115,208,115,175,107,78,99,203,82,106,66,232,49,101,33,228, + 24,163,16,97,8,4,65,8,141,33,8,97,8,130,16,163,16,36,33,102, + 41,200,49,106,74,236,82,78,91,207,107,240,115,241,115,3,17,116,132,240, + 115,16,116,240,107,240,115,4,240,107,133,208,107,240,107,208,107,208,107,240, + 107,5,208,107,147,240,107,208,107,175,107,207,123,239,123,207,123,239,131,16, + 132,16,132,239,123,12,99,171,82,139,74,138,74,138,74,12,91,203,90,171, + 82,204,90,4,12,91,163,13,91,13,91,12,91,13,91,13,91,45,91,13, + 91,13,91,12,91,12,91,110,107,240,123,81,132,16,132,207,123,175,115,175, + 115,174,115,239,123,240,123,45,99,138,66,232,49,167,49,70,41,4,33,195, + 24,162,16,98,16,33,8,0,0,207,99,110,91,110,91,110,99,3,78,91, + 139,78,99,46,91,46,91,45,91,45,83,45,91,45,83,13,83,237,82,236, + 82,204,74,15,3,132,45,91,77,91,77,91,78,91,5,110,91,131,142,91, + 142,99,142,99,4,143,99,11,175,99,131,143,99,175,99,175,99,6,143,99, + 153,175,91,143,99,142,91,143,99,142,99,143,99,142,91,142,91,143,99,142, + 91,142,91,142,99,142,91,142,99,142,99,142,91,142,91,110,91,142,91,142, + 99,142,91,110,99,110,91,110,91,78,91,6,110,91,130,110,99,110,91,7, + 143,99,7,175,99,134,208,99,240,107,240,99,240,107,240,107,241,107,3,17, + 108,137,49,108,49,108,81,116,49,116,82,108,82,116,82,116,82,108,114,116, + 4,82,116,131,114,116,114,116,146,116,3,146,124,9,147,124,129,179,124,3, + 179,132,134,212,132,180,132,212,132,212,132,244,132,212,132,3,244,132,3,244, + 140,5,20,141,136,21,141,21,141,20,149,21,149,21,141,21,149,21,141,21, + 141,3,20,141,13,244,140,129,20,141,5,244,140,144,20,141,244,140,20,141, + 244,140,20,141,244,140,20,141,20,141,21,149,21,141,20,141,21,141,21,149, + 21,141,244,140,20,141,3,21,141,132,53,149,21,149,53,149,53,149,3,21, + 149,134,53,149,21,149,21,149,20,149,21,149,21,149,4,21,141,135,245,148, + 21,141,20,141,21,149,21,149,21,141,21,141,5,21,149,132,21,141,21,149, + 21,149,21,141,3,244,140,129,245,140,5,244,140,131,21,141,245,140,20,141, + 3,21,141,132,21,149,21,141,21,149,21,149,5,53,149,129,85,149,5,53, + 149,129,21,149,12,53,149,132,21,149,53,149,53,149,21,149,15,53,149,129, + 85,149,8,53,149,138,21,149,53,149,21,149,53,149,53,149,85,149,85,149, + 53,149,53,157,85,149,3,53,149,129,85,149,11,53,149,129,85,149,6,53, + 149,153,21,141,212,132,147,124,50,116,176,99,45,83,140,58,201,33,103,17, + 39,9,7,17,169,33,42,50,204,74,45,83,111,99,207,107,207,115,175,115, + 174,115,175,115,175,115,207,115,207,115,207,123,3,207,115,5,175,115,133,171, + 82,37,33,102,33,70,33,69,25,4,37,33,3,69,33,149,37,33,69,33, + 69,33,69,25,37,33,167,49,77,107,16,124,239,123,232,57,69,33,37,33, + 199,49,203,90,77,107,109,115,109,107,142,115,142,115,109,107,141,107,3,142, + 115,147,174,115,142,115,142,115,174,115,138,74,41,58,74,66,74,58,106,66, + 106,66,139,74,171,74,204,82,236,74,236,82,13,83,45,91,45,91,78,99, + 3,110,99,149,143,107,143,107,175,107,208,107,208,115,208,115,240,115,240,115, + 208,107,174,107,77,99,236,82,73,66,199,49,69,33,163,16,98,8,33,0, + 65,8,98,8,98,8,4,65,8,141,98,8,163,16,36,33,167,49,73,66, + 13,91,110,99,207,115,16,116,17,116,49,124,49,116,17,116,3,240,107,135, + 208,107,240,107,208,107,208,107,240,107,208,107,240,107,5,208,107,140,240,107, + 207,107,175,115,174,115,142,115,109,107,110,115,236,98,106,82,138,74,139,74, + 138,74,4,106,74,150,106,66,138,74,171,74,236,90,12,91,237,90,236,82, + 12,83,236,90,237,90,236,90,13,91,13,91,45,91,45,91,45,99,110,99, + 142,107,143,107,142,107,110,107,77,99,3,45,99,147,110,107,109,99,45,91, + 236,82,171,74,41,66,199,57,69,41,163,24,65,8,0,0,73,50,175,99, + 110,99,78,99,110,99,110,91,110,91,78,91,5,45,91,133,45,83,13,83, + 236,82,236,82,203,74,228,2,129,13,83,3,45,91,4,77,91,130,110,91, + 77,91,3,110,91,139,110,99,110,99,142,91,142,99,143,99,142,99,143,99, + 174,99,142,99,143,99,143,99,20,175,99,129,207,99,6,175,99,133,143,99, + 175,99,143,99,175,99,175,99,4,143,99,135,110,91,111,91,110,91,110,91, + 110,99,110,91,142,91,3,110,91,130,110,99,110,91,3,110,99,3,110,91, + 130,78,91,110,99,4,110,91,130,111,91,111,99,3,143,99,5,175,99,130, + 208,99,208,107,4,208,99,149,240,99,208,99,208,99,240,99,240,107,240,107, + 241,107,17,108,17,108,49,108,17,116,49,116,50,108,49,116,50,116,50,108, + 49,108,50,116,50,116,82,108,82,116,4,114,116,139,114,124,115,124,147,116, + 146,124,147,124,147,124,179,124,179,124,179,132,179,124,211,132,4,212,132,135, + 243,132,212,132,212,132,244,132,244,132,244,140,244,132,6,244,140,130,244,132, + 244,140,3,212,132,132,212,140,212,140,244,132,244,132,16,244,140,135,21,141, + 244,140,245,140,21,141,20,141,244,140,20,141,4,244,140,131,21,141,21,141, + 20,141,5,21,149,3,21,141,133,20,141,20,141,21,141,20,141,244,140,5, + 20,141,129,244,140,3,21,141,136,21,149,21,141,20,141,21,149,21,141,244, + 140,245,140,245,140,3,244,140,129,212,140,6,244,140,134,245,140,245,140,244, + 140,245,140,21,141,21,141,4,21,149,13,53,149,129,21,149,11,53,149,129, + 21,149,5,53,149,130,21,149,21,149,11,53,149,129,85,149,13,53,149,133, + 85,149,85,149,85,157,53,149,85,149,5,53,149,129,85,149,5,53,149,129, + 85,149,9,53,149,146,20,141,212,132,147,124,82,116,176,99,45,83,107,58, + 201,33,104,17,39,9,6,9,136,33,10,50,172,66,13,83,110,99,175,107, + 207,115,4,175,115,4,207,115,7,175,115,139,73,66,0,0,131,16,195,16, + 4,25,4,25,37,33,5,33,37,33,37,33,37,25,3,37,33,141,69,33, + 69,33,37,33,134,49,109,107,240,123,239,123,232,57,5,25,4,25,167,49, + 170,82,77,107,3,109,107,140,141,115,142,107,109,107,109,107,174,115,142,115, + 174,115,142,115,174,115,174,115,170,74,167,41,4,232,49,129,9,58,3,41, + 58,139,73,58,41,58,73,58,74,58,41,58,74,58,106,58,106,66,138,66, + 139,66,139,74,4,139,66,163,204,74,237,74,13,83,45,91,78,91,110,99, + 110,99,45,91,171,74,41,66,167,41,65,8,33,8,65,8,98,8,163,16, + 37,33,135,41,135,41,102,33,37,25,227,16,163,8,130,8,163,8,227,16, + 134,41,8,50,138,66,13,91,110,99,175,107,240,107,241,115,16,116,3,240, + 107,13,208,107,136,176,107,143,107,110,99,13,91,204,82,139,66,106,74,74, + 66,3,41,66,150,9,66,41,66,138,74,171,82,204,82,13,91,77,99,110, + 107,110,107,175,107,175,115,207,115,240,115,240,123,207,115,111,107,110,99,77, + 99,45,91,13,99,236,90,204,90,3,204,82,145,203,82,235,82,236,90,12, + 91,236,90,237,82,204,82,171,82,73,66,232,57,101,41,37,25,143,99,110, + 99,78,91,78,99,110,91,3,78,91,3,45,91,134,45,83,45,83,13,83, + 237,82,236,82,204,74,18,3,137,12,83,236,82,12,83,12,83,13,83,13, + 83,45,83,45,91,45,91,5,77,91,3,110,91,134,142,99,110,91,142,91, + 110,91,142,99,142,91,4,142,99,3,143,99,131,175,99,143,99,143,99,6, + 175,99,134,207,99,175,99,207,99,207,99,175,99,175,99,5,207,99,134,175, + 99,207,99,207,99,175,99,175,99,207,99,9,175,99,129,175,91,3,175,99, + 144,143,99,175,99,143,99,143,99,142,99,143,99,143,99,142,91,142,99,142, + 91,143,91,142,99,142,91,142,91,110,99,110,99,3,110,91,135,142,99,143, + 91,142,91,143,91,143,91,143,99,143,99,5,175,99,136,143,91,143,91,143, + 99,143,91,175,99,143,99,175,99,175,99,3,208,99,137,208,107,208,99,208, + 99,208,107,208,99,240,99,241,107,241,99,241,107,5,17,108,3,49,108,129, + 50,108,3,82,116,3,114,116,132,146,116,147,116,147,124,146,124,4,147,124, + 3,179,132,129,179,124,14,179,132,9,212,132,133,244,132,212,132,244,132,244, + 140,244,132,4,244,140,131,20,141,244,140,21,141,5,244,140,133,20,141,20, + 141,244,140,21,141,20,141,3,21,141,3,20,141,3,21,141,3,244,140,142, + 244,132,244,140,20,141,244,140,20,141,21,141,245,140,20,141,20,141,244,140, + 21,141,21,141,244,140,20,141,6,244,140,132,212,140,212,140,212,132,212,132, + 4,244,140,133,245,140,244,140,21,141,20,141,244,140,4,21,141,130,21,149, + 21,149,11,53,149,129,21,149,3,53,149,4,21,149,3,53,149,130,21,149, + 21,149,8,53,149,129,21,149,6,53,149,129,85,149,7,53,149,136,53,141, + 21,149,53,149,21,141,21,141,53,149,53,149,53,141,4,53,149,129,85,149, + 22,53,149,147,53,141,21,141,212,140,147,132,82,116,175,99,46,83,108,58, + 233,33,136,25,39,17,6,9,103,25,233,41,139,66,13,83,78,91,143,107, + 207,115,5,175,115,3,207,115,162,175,115,207,115,175,115,175,115,174,107,175, + 115,175,115,106,74,0,0,33,0,0,0,65,0,65,8,98,8,130,8,163, + 16,196,16,69,33,167,49,8,58,106,74,106,74,138,74,138,74,8,66,77, + 99,16,124,207,123,170,82,41,66,101,33,166,49,170,82,77,107,4,109,107, + 131,142,115,142,115,141,115,3,142,115,139,174,115,174,115,207,123,138,82,37, + 25,134,33,167,33,167,41,167,41,199,49,200,49,3,232,49,143,8,50,8, + 58,9,50,9,58,41,50,41,58,41,58,74,58,74,66,74,66,42,66,41, + 50,9,50,9,50,41,50,3,74,58,3,106,66,158,138,66,171,66,139,66, + 139,66,135,41,130,16,65,8,65,8,98,8,195,24,102,33,232,49,73,58, + 139,74,139,74,171,74,171,74,106,66,8,50,134,41,69,33,4,17,228,16, + 36,25,102,41,8,58,138,74,236,90,143,107,207,107,3,240,115,129,240,107, + 7,208,107,131,207,107,208,107,175,107,3,208,107,157,240,107,240,107,207,107, + 175,99,110,99,45,91,236,82,172,74,106,66,41,58,9,58,9,66,106,74, + 171,82,77,99,142,107,142,107,175,115,240,123,48,124,49,132,16,124,174,115, + 77,99,77,91,45,91,236,90,236,82,204,82,3,171,82,148,171,74,171,74, + 171,82,171,74,171,82,203,82,203,82,204,82,236,90,236,90,12,91,235,90, + 105,74,110,99,142,99,110,99,78,99,78,91,78,91,77,91,4,45,91,134, + 13,83,13,91,13,83,12,83,236,82,171,74,51,3,138,203,74,204,74,204, + 74,236,74,236,74,12,75,236,82,12,83,13,83,12,83,3,45,83,130,45, + 91,45,91,3,77,91,129,78,91,6,110,91,141,142,91,110,99,110,91,142, + 91,142,91,142,99,110,99,110,91,142,91,142,91,142,99,143,99,143,99,7, + 175,99,140,207,99,175,99,175,99,207,107,175,99,207,99,175,99,175,99,207, + 99,207,99,208,99,208,99,5,207,99,130,175,99,175,99,4,207,99,129,208, + 99,3,207,99,133,208,99,207,99,207,99,175,99,207,99,6,175,99,131,143, + 99,143,99,175,99,6,143,99,134,143,91,143,99,143,99,143,91,142,99,143, + 99,4,143,91,4,110,91,134,143,91,143,99,143,91,143,91,143,99,143,99, + 5,175,99,134,176,99,208,99,176,99,207,99,208,99,208,107,7,208,99,130, + 241,99,17,100,3,17,108,134,49,108,49,108,50,108,50,108,49,108,50,116, + 4,82,116,3,114,116,140,115,116,115,124,114,116,114,124,146,124,114,116,114, + 116,147,116,146,116,115,116,115,124,146,124,3,147,124,139,179,124,147,124,147, + 124,179,124,147,132,179,132,179,124,179,132,179,132,211,132,211,132,4,212,132, + 135,244,132,212,132,244,132,244,132,244,140,244,132,244,140,4,244,132,7,244, + 140,137,20,141,244,140,21,141,244,140,244,132,244,140,244,140,244,132,244,140, + 3,244,132,138,244,140,245,140,244,132,244,132,244,140,244,140,21,141,20,141, + 244,140,245,140,4,244,140,129,244,132,8,212,132,131,244,140,244,140,245,140, + 3,244,140,129,245,140,3,21,141,130,21,149,21,141,8,53,149,131,21,149, + 21,141,53,149,4,21,149,146,21,141,53,149,53,149,21,149,53,149,21,149, + 53,149,53,149,21,149,53,149,53,149,21,149,53,149,53,149,21,149,53,149, + 53,149,21,149,14,53,149,7,21,141,26,53,149,149,53,141,53,149,53,141, + 21,141,212,132,147,124,50,116,175,99,46,83,140,58,201,33,136,25,71,9, + 6,9,39,17,201,33,107,58,236,74,45,91,142,107,175,107,6,175,115,3, + 207,115,161,175,115,174,115,175,115,142,107,175,115,175,115,138,74,0,0,33, + 0,32,0,32,8,33,8,33,0,32,0,33,0,33,0,65,0,98,8,196, + 16,102,33,199,49,73,66,106,74,135,41,109,107,16,124,207,123,236,90,106, + 74,69,33,134,41,170,82,44,99,3,109,107,165,142,115,142,115,109,107,142, + 115,142,115,141,115,142,115,141,115,174,115,207,123,138,82,98,0,196,16,196, + 16,228,16,228,16,4,25,37,25,37,25,70,33,70,25,70,25,70,33,102, + 33,102,33,135,41,135,33,167,41,199,41,200,41,200,41,232,49,232,41,233, + 49,9,50,233,41,9,50,3,41,58,137,9,58,41,58,41,50,41,58,41, + 50,41,58,74,58,200,49,195,16,4,65,8,136,98,16,163,16,37,25,232, + 49,171,74,235,90,236,90,203,82,3,171,74,148,74,66,8,50,167,41,69, + 25,4,25,4,25,37,25,166,41,8,58,236,82,78,99,175,107,208,115,241, + 115,240,107,240,107,208,107,207,107,208,107,207,107,3,208,107,130,207,107,176, + 107,3,208,107,130,207,107,207,107,3,208,107,145,176,99,207,107,175,99,78, + 91,13,83,171,74,134,49,73,74,138,74,170,82,171,82,236,90,45,99,77, + 107,77,99,44,99,12,91,3,236,90,134,203,82,203,82,171,82,138,74,138, + 74,106,74,5,138,74,145,171,82,171,82,203,82,45,91,77,99,109,107,174, + 107,207,115,174,115,142,107,110,99,77,91,78,91,77,91,45,91,45,83,45, + 83,3,13,83,131,236,82,236,82,171,74,68,3,134,139,66,171,66,171,66, + 203,66,204,66,171,66,3,204,74,3,236,74,132,236,82,12,83,12,83,13, + 83,6,45,83,151,77,83,45,83,77,83,77,91,77,91,78,83,77,91,78, + 91,78,83,78,91,110,91,110,91,78,91,110,91,110,91,142,91,110,91,142, + 91,142,99,142,91,142,91,143,99,142,99,5,143,99,133,175,99,143,99,175, + 99,175,99,143,99,6,175,99,137,207,99,175,99,207,99,175,99,207,99,207, + 99,208,99,208,99,207,99,3,240,99,152,208,107,208,99,240,107,240,107,208, + 107,240,107,208,107,208,107,240,107,240,99,208,99,240,99,208,99,207,99,240, + 99,208,99,207,107,207,99,208,99,207,99,207,99,175,99,175,99,207,99,4, + 175,99,132,143,99,175,99,143,91,143,91,4,143,99,130,175,99,175,99,7, + 143,99,130,143,91,143,99,6,175,99,133,143,91,175,99,143,91,175,99,175, + 99,4,176,99,129,208,99,3,176,99,136,208,99,208,99,176,99,208,99,208, + 99,240,107,240,107,240,99,3,241,99,129,241,107,5,17,108,129,17,100,3, + 17,108,131,50,108,49,108,50,116,5,82,116,5,114,116,4,147,124,131,179, + 124,179,124,147,124,5,179,124,138,179,132,179,124,179,124,179,132,180,132,212, + 132,211,124,211,132,212,124,211,132,5,212,132,129,244,132,12,212,132,131,244, + 132,244,132,212,140,3,244,140,5,212,132,129,180,132,7,212,132,136,244,140, + 244,132,244,140,244,140,244,132,244,140,21,141,20,141,4,21,141,133,21,149, + 53,149,21,141,53,149,53,149,3,21,149,131,21,141,53,141,53,141,4,21, + 141,145,21,149,21,141,21,149,21,141,21,141,21,149,21,141,21,141,21,149, + 53,149,53,149,21,149,53,149,21,149,53,149,21,149,21,141,8,53,149,132, + 53,141,53,149,53,149,53,141,3,21,141,129,21,133,6,21,141,129,53,141, + 22,53,149,153,21,149,53,149,21,141,53,149,21,141,20,141,212,132,146,124, + 50,116,176,99,14,83,108,58,233,33,136,25,39,17,6,9,38,17,136,33, + 74,50,172,66,13,83,110,99,175,107,175,115,175,115,3,174,115,150,175,115, + 175,115,207,115,207,115,174,115,142,107,175,115,142,107,142,107,175,115,139,74, + 0,0,33,8,65,8,33,8,33,8,32,8,32,8,32,0,33,0,33,8, + 32,0,5,0,0,155,65,8,44,99,239,123,16,132,41,66,65,0,228,24, + 166,49,170,82,77,107,142,115,109,115,109,115,110,115,109,107,109,107,77,107, + 109,115,142,115,174,115,142,115,174,115,207,123,138,74,0,0,33,8,32,8, + 4,33,8,4,65,8,135,66,0,98,8,98,8,97,8,98,8,130,8,130, + 8,3,163,8,134,163,16,195,16,195,16,228,24,4,17,5,25,3,37,25, + 131,38,25,69,33,70,25,3,69,25,131,70,33,37,33,130,16,3,97,8, + 159,98,16,97,16,4,33,73,66,235,98,44,107,11,99,137,82,199,65,167, + 49,232,57,138,66,203,74,236,74,236,82,236,82,204,74,171,74,73,58,8, + 50,166,33,134,33,167,41,73,58,171,74,13,83,142,99,175,107,176,107,208, + 107,207,107,4,208,107,131,176,99,208,107,176,107,3,208,107,131,175,99,175, + 99,208,107,3,240,107,174,16,108,16,116,82,116,74,66,0,0,33,8,98, + 16,195,24,4,33,36,41,102,49,166,49,8,66,73,74,138,74,171,82,203, + 82,236,90,204,82,203,82,171,82,138,74,138,74,106,74,105,74,105,66,74, + 74,106,74,73,66,73,66,106,74,106,74,171,82,45,99,142,107,207,115,207, + 123,207,123,174,115,77,99,12,91,236,82,13,83,45,83,45,91,45,91,3, + 13,83,130,45,83,204,82,21,3,133,139,58,138,58,139,66,171,66,139,66, + 4,171,66,129,204,66,3,204,74,3,236,74,131,12,75,236,82,12,75,4, + 13,83,130,45,83,13,83,6,45,83,130,77,83,45,91,3,77,83,132,77, + 91,77,91,110,91,78,91,12,110,91,140,142,91,110,91,142,91,110,91,142, + 91,143,91,143,99,143,91,143,99,143,99,175,99,143,99,5,175,99,3,207, + 99,137,208,99,208,99,208,107,208,99,208,99,207,107,208,99,208,107,240,99, + 9,240,107,3,240,99,131,208,99,240,99,208,99,3,240,99,3,208,99,130, + 207,99,208,99,3,207,99,136,208,99,208,99,207,99,175,99,207,99,207,99, + 175,99,207,99,5,175,99,129,207,99,18,175,99,136,143,99,143,99,175,99, + 175,99,143,99,175,99,175,99,176,99,4,175,99,4,176,99,133,176,91,207, + 91,207,99,175,99,176,99,3,208,99,134,209,107,240,99,240,107,240,107,241, + 107,241,107,3,17,108,3,49,108,131,82,116,82,116,114,108,5,82,116,3, + 114,116,134,115,116,115,124,115,124,147,124,147,124,115,124,7,147,124,129,179, + 124,3,147,124,3,179,124,129,147,124,3,179,124,141,180,124,180,124,179,124, + 179,124,180,132,180,132,211,132,212,132,211,132,180,132,180,132,179,132,179,132, + 4,179,124,131,180,124,180,124,180,132,3,212,132,136,244,132,212,132,212,132, + 212,140,244,132,244,140,244,132,244,140,4,20,141,14,21,141,137,20,141,21, + 141,21,141,20,141,21,141,20,141,20,141,21,149,20,141,3,21,149,131,53, + 149,21,149,53,141,3,21,141,5,53,141,131,21,141,53,141,53,149,5,21, + 141,129,245,140,4,245,132,133,21,133,21,133,21,141,21,141,53,141,5,53, + 149,132,21,149,53,141,53,149,21,149,9,53,149,3,53,141,156,21,149,53, + 141,53,141,21,141,21,141,244,140,212,132,114,124,50,116,143,99,14,83,140, + 58,201,33,136,25,71,17,6,9,6,17,104,25,42,50,171,66,237,82,78, + 99,143,107,175,115,174,115,175,115,175,115,174,115,4,175,115,143,174,115,174, + 115,175,115,142,107,174,115,174,115,171,82,0,0,33,0,33,8,33,0,33, + 8,33,0,32,0,32,0,4,33,0,146,33,8,33,0,33,8,33,8,65, + 8,77,107,240,123,16,132,40,66,0,0,228,24,166,49,170,82,77,107,109, + 107,109,107,109,115,109,115,3,109,107,140,109,115,142,115,174,115,142,115,142, + 115,207,123,138,82,97,8,163,24,163,16,162,16,162,16,6,130,16,130,98, + 8,130,8,16,98,8,194,130,8,163,8,163,16,196,16,196,24,196,16,195, + 16,163,16,130,8,163,16,228,24,228,24,195,16,162,16,163,24,73,66,44, + 99,239,123,80,140,15,132,141,115,137,82,166,57,228,32,195,24,36,33,134, + 41,232,49,41,58,105,66,171,74,171,74,236,74,204,82,204,74,171,66,139, + 66,106,58,106,58,171,74,236,74,45,91,78,99,110,91,110,99,142,99,143, + 99,143,107,143,99,143,107,175,99,143,99,175,99,175,99,142,99,143,99,175, + 99,175,99,143,99,143,99,142,99,110,99,78,91,110,99,102,41,0,8,6, + 33,8,142,65,16,98,16,162,24,228,32,69,41,134,49,8,66,73,74,138, + 74,170,74,138,74,138,74,106,74,74,66,3,73,66,3,41,66,147,73,66, + 106,74,236,90,77,107,142,115,174,115,207,115,142,115,109,107,12,91,12,83, + 45,91,45,91,204,82,203,74,204,74,236,82,236,82,171,74,61,3,129,74, + 58,4,106,58,133,138,66,107,66,139,66,171,66,139,66,3,171,66,129,172, + 74,3,204,74,5,236,74,142,13,83,236,74,12,75,12,75,12,83,12,75, + 12,75,13,75,13,75,13,83,12,83,13,83,45,83,13,83,4,45,83,137, + 77,83,45,83,77,83,45,83,77,91,78,83,77,91,78,91,77,83,4,78, + 91,131,110,91,78,91,78,91,7,110,91,4,142,91,131,142,99,143,99,143, + 99,7,175,99,3,207,99,129,175,99,3,208,107,129,240,99,3,208,99,134, + 240,107,240,99,240,107,240,107,240,99,208,107,3,240,107,133,240,99,240,107, + 240,99,240,99,208,99,3,240,99,131,240,107,240,107,240,99,4,240,107,135, + 240,99,240,107,240,99,240,107,208,99,240,107,240,107,3,208,107,131,207,107, + 208,107,208,99,4,207,99,4,175,99,129,207,99,6,175,99,132,143,99,143, + 99,175,99,143,91,5,143,99,4,143,91,135,142,99,111,99,143,91,143,91, + 142,91,143,99,143,91,3,143,99,148,175,91,143,91,175,91,175,99,175,99, + 176,99,208,99,176,99,208,99,208,99,240,99,240,99,241,107,240,99,17,100, + 240,107,241,107,240,107,241,107,241,107,3,17,108,140,49,108,49,108,50,108, + 50,108,49,108,49,108,50,108,49,116,82,116,82,108,82,116,82,116,3,114, + 116,131,82,116,114,116,82,116,4,114,116,130,115,116,115,116,3,114,116,130, + 115,116,115,124,5,147,124,134,115,116,147,124,147,124,147,116,147,124,146,124, + 5,147,124,3,179,124,131,212,124,180,124,212,124,3,212,132,139,244,132,244, + 132,212,132,212,132,244,140,244,132,244,132,245,140,245,140,244,140,20,141,9, + 244,140,132,20,141,244,140,20,141,244,140,4,20,141,129,21,141,4,21,149, + 131,21,141,21,141,21,149,3,21,141,129,53,141,8,21,141,8,245,132,6, + 21,141,133,53,149,53,149,53,141,21,149,21,149,3,21,141,138,53,149,53, + 149,21,149,53,149,53,141,53,149,53,141,53,141,53,149,53,149,6,21,141, + 146,244,132,179,132,114,124,17,116,143,99,14,83,140,66,233,41,136,25,71, + 17,38,9,6,17,103,25,233,41,107,66,204,74,77,99,142,107,3,175,115, + 130,174,115,174,115,4,175,115,139,174,115,142,115,174,115,142,107,142,115,174, + 115,203,82,0,8,33,8,33,0,0,0,3,32,0,6,33,0,141,65,8, + 65,0,33,0,32,0,109,107,240,123,16,132,73,74,0,0,195,24,166,49, + 138,82,44,99,4,109,107,151,109,115,141,115,142,115,142,115,110,107,142,115, + 141,115,142,115,206,115,12,99,4,33,134,49,166,49,167,49,167,57,199,49, + 199,49,167,49,199,49,167,49,166,49,166,49,134,49,3,134,41,143,102,41, + 102,41,102,33,102,41,102,33,101,33,69,33,37,33,37,33,4,33,228,24, + 163,16,195,16,196,24,196,24,3,195,16,160,163,16,163,16,131,16,131,16, + 163,16,195,16,228,24,102,33,70,33,228,24,105,74,109,107,113,140,19,157, + 19,165,242,164,47,148,141,123,170,90,69,49,130,16,65,8,97,8,130,16, + 163,16,228,24,37,33,102,41,199,49,41,58,106,66,171,74,18,204,74,143, + 203,74,203,74,204,74,171,74,171,66,171,74,171,66,171,74,204,74,204,74, + 195,16,0,0,65,8,65,8,33,8,3,65,8,4,33,8,162,65,8,98, + 16,162,16,227,24,69,41,166,49,231,57,73,66,73,66,105,74,73,66,73, + 66,41,66,41,66,9,66,9,66,41,66,41,66,106,74,203,90,12,99,45, + 107,77,107,77,107,45,99,45,91,13,91,12,91,12,83,12,83,236,82,203, + 82,203,82,139,74,30,3,137,41,50,42,50,41,50,42,50,74,50,74,50, + 74,58,106,58,74,58,3,106,58,131,139,66,171,66,139,66,3,171,66,133, + 203,66,171,74,171,66,204,74,204,66,3,204,74,129,236,74,3,204,74,7, + 236,74,133,237,74,12,75,236,74,13,75,12,75,4,13,75,3,13,83,134, + 45,83,45,83,13,83,45,83,45,83,13,83,6,45,83,4,77,83,131,77, + 91,78,91,78,91,3,110,91,133,142,91,110,91,142,99,110,99,142,91,3, + 143,91,3,175,99,130,175,91,175,91,9,175,99,134,207,99,175,99,175,99, + 208,99,208,99,207,99,6,208,99,131,240,99,208,107,240,99,8,240,107,130, + 240,99,240,99,3,240,107,132,16,108,240,107,240,107,240,99,6,240,107,138, + 208,107,240,107,240,99,240,99,208,107,240,107,240,107,207,107,208,99,208,99, + 3,207,99,5,175,99,130,143,99,175,99,6,143,99,130,142,99,143,91,3, + 143,99,129,142,91,3,143,91,132,142,91,111,91,111,91,111,99,3,143,99, + 9,175,99,129,143,99,4,176,99,4,208,99,130,175,99,176,99,4,208,99, + 131,241,107,208,107,240,99,4,241,99,133,17,100,17,100,241,99,17,108,241, + 107,3,17,108,130,17,100,18,108,3,49,108,3,50,108,129,49,108,4,50, + 108,132,82,108,50,108,50,108,82,108,3,82,116,134,114,116,82,116,82,116, + 114,116,115,116,147,116,6,147,124,144,179,124,147,124,180,124,179,124,179,132, + 211,132,180,132,211,124,211,124,212,124,179,124,212,124,180,132,179,132,211,132, + 211,132,5,212,132,129,244,132,4,244,140,131,20,141,21,141,20,141,4,244, + 140,130,20,141,21,141,3,245,140,137,245,132,21,141,21,133,245,132,21,133, + 244,132,245,132,244,132,245,132,4,244,132,133,245,132,21,133,245,132,21,141, + 20,141,6,21,141,129,245,140,5,21,141,129,21,149,11,21,141,148,20,141, + 244,132,212,132,179,132,82,124,241,107,111,91,13,83,140,66,233,41,136,25, + 71,25,39,17,6,17,71,25,201,41,106,58,204,74,45,91,142,107,4,175, + 115,3,174,115,132,175,115,175,115,174,115,174,115,3,142,115,135,174,115,203, + 90,65,16,98,16,97,8,65,8,65,8,3,33,0,150,32,0,32,0,33, + 0,32,0,0,8,33,8,33,0,33,0,0,0,12,91,16,124,48,132,170, + 82,0,0,195,24,166,49,138,82,76,99,109,115,109,107,109,115,109,115,4, + 109,107,4,142,115,144,174,115,203,90,32,0,65,8,98,16,98,16,130,16, + 163,16,163,24,195,24,195,24,228,24,4,33,4,33,37,33,37,33,3,69, + 33,3,69,41,129,70,41,5,69,33,134,5,33,4,25,228,24,228,24,196, + 16,196,24,3,195,24,152,195,16,196,16,195,16,195,16,228,24,4,25,37, + 33,5,33,101,33,138,74,174,107,177,140,51,157,148,173,212,189,180,197,114, + 189,17,181,78,156,76,131,40,82,4,41,163,24,130,16,4,98,16,141,98, + 8,98,8,130,16,195,24,4,25,69,33,134,41,200,49,8,58,41,58,73, + 58,74,58,106,66,3,106,58,3,106,66,4,106,58,139,106,66,74,58,73, + 58,41,58,41,50,41,58,41,50,41,58,106,66,98,8,33,0,3,65,8, + 132,130,16,65,8,33,8,33,8,5,65,8,140,33,8,33,8,65,8,33, + 8,98,16,163,24,228,32,69,41,134,49,199,49,232,57,8,58,4,232,57, + 132,8,66,40,66,73,74,106,74,3,138,82,130,170,82,171,74,5,171,82, + 1,171,74,4,3,132,9,42,233,49,9,42,9,42,3,9,50,133,42,50, + 41,50,42,50,74,50,74,58,3,106,58,3,139,58,132,139,66,139,66,171, + 66,139,66,4,171,66,133,172,66,172,66,171,66,172,66,172,66,4,204,66, + 136,236,66,204,66,236,74,236,74,204,74,204,74,236,74,204,74,11,236,74, + 138,12,75,236,74,237,74,13,75,13,75,13,83,13,83,13,75,13,83,13, + 83,5,45,83,134,77,83,77,83,77,91,78,83,78,91,78,91,6,110,91, + 4,142,91,133,143,91,142,91,142,91,143,91,143,99,6,143,91,134,143,99, + 175,99,175,91,175,91,175,99,175,91,3,175,99,132,207,99,175,99,207,99, + 175,99,3,207,99,5,208,99,132,208,107,208,99,240,99,240,99,11,240,107, + 133,240,99,16,108,240,107,240,107,16,108,8,240,107,130,208,99,240,99,6, + 208,99,130,207,99,207,99,10,175,99,7,143,99,133,175,99,143,99,175,99, + 143,99,175,99,4,143,99,129,175,99,3,143,99,4,175,99,137,143,99,143, + 99,175,99,143,99,175,99,143,99,143,99,175,99,176,99,4,175,99,131,176, + 99,176,99,176,91,5,176,99,132,176,91,176,91,176,99,176,91,5,208,99, + 129,208,91,4,208,99,143,241,99,240,99,240,99,209,99,240,99,241,99,241, + 99,241,107,241,107,17,108,17,108,18,108,50,108,49,108,50,108,7,82,116, + 131,114,116,115,116,115,116,3,114,124,135,115,116,115,124,115,116,115,124,115, + 116,115,124,146,124,5,147,124,130,179,124,179,124,3,179,132,130,211,132,211, + 132,13,212,132,133,212,124,212,132,212,124,212,124,212,132,4,212,124,3,212, + 132,130,244,132,244,132,3,244,140,129,20,141,5,244,140,133,245,140,21,141, + 244,140,20,141,20,141,3,21,141,129,20,141,4,21,141,160,20,141,21,141, + 21,141,20,141,244,132,212,132,179,132,146,124,82,116,241,107,110,91,237,74, + 107,66,233,41,136,25,103,25,71,25,38,25,71,25,233,41,74,58,172,74, + 45,91,110,99,175,115,207,115,175,115,175,115,174,115,174,115,175,115,175,115, + 4,174,115,133,142,115,142,107,174,115,12,91,33,8,6,65,8,133,65,0, + 65,8,33,8,65,0,33,8,4,33,0,147,0,0,236,90,16,124,48,132, + 170,82,0,0,195,24,134,49,73,66,109,107,142,115,142,115,109,107,141,115, + 141,115,109,107,142,115,141,115,142,115,4,174,115,131,12,99,97,16,130,24, + 7,130,16,129,98,16,3,98,8,136,97,8,98,8,98,16,98,16,130,16, + 130,16,162,24,163,16,6,195,24,135,195,16,195,24,195,24,228,24,228,24, + 228,32,4,33,3,37,33,151,36,33,4,33,37,33,69,33,69,33,70,33, + 199,49,105,74,77,99,81,132,19,157,116,173,213,189,244,197,244,205,211,197, + 147,197,82,189,176,172,43,123,166,65,195,24,130,16,6,98,16,167,97,16, + 97,8,97,8,97,16,98,16,130,16,162,16,195,24,228,24,36,33,37,33, + 69,33,102,41,102,41,135,41,167,41,135,41,167,41,199,41,168,41,167,41, + 135,41,167,41,134,33,102,33,102,33,69,33,69,33,37,33,4,25,98,8, + 65,8,98,8,196,16,102,33,228,24,65,8,33,8,33,0,12,65,8,136, + 98,16,130,16,163,24,228,24,69,41,135,49,199,49,200,57,5,232,57,130, + 8,66,8,66,3,41,66,130,73,74,74,74,3,106,74,53,3,144,201,41, + 201,41,232,41,232,41,233,41,9,42,233,41,233,41,9,42,9,42,41,50, + 41,50,73,50,74,50,74,50,74,58,5,106,58,138,107,58,139,66,139,58, + 139,58,139,66,139,58,139,58,139,66,139,58,171,58,3,171,66,134,171,58, + 171,58,204,66,171,66,171,66,203,66,3,171,66,134,204,66,171,66,203,66, + 204,66,203,66,172,66,4,204,66,130,171,66,236,74,3,204,74,140,236,74, + 236,74,204,74,236,74,204,74,236,74,237,74,236,74,12,75,12,75,13,75, + 13,83,5,45,83,142,77,83,77,83,78,83,77,83,78,91,78,91,110,83, + 78,83,110,83,78,91,110,91,110,91,110,83,110,83,8,110,91,134,143,91, + 142,91,111,91,143,91,143,91,142,91,4,143,91,146,175,91,175,91,175,99, + 143,91,175,99,175,91,175,99,175,99,207,99,207,99,175,99,175,99,207,99, + 175,99,207,99,207,99,208,99,207,99,6,208,99,133,240,107,240,99,240,107, + 240,107,240,99,8,240,107,129,16,100,9,240,107,3,240,99,130,240,107,240, + 99,6,208,99,133,207,99,175,99,207,107,208,99,207,99,12,175,99,135,143, + 99,143,99,175,99,175,99,143,99,175,99,175,99,3,143,99,129,175,99,8, + 143,99,129,143,91,4,143,99,132,143,91,143,91,175,99,143,99,3,143,91, + 133,143,99,143,91,175,99,143,99,143,99,5,143,91,141,143,99,144,91,143, + 99,143,91,143,91,175,91,144,91,144,91,176,91,144,99,176,99,176,91,176, + 99,3,208,99,130,241,99,208,107,3,241,107,130,17,108,241,107,3,17,108, + 3,49,108,136,50,108,49,108,18,108,50,116,50,108,50,116,50,116,50,108, + 5,82,116,134,114,116,114,124,146,124,114,124,114,124,146,124,6,147,124,129, + 179,124,3,147,124,3,147,116,130,147,124,179,124,6,147,124,134,179,124,179, + 124,180,124,180,124,212,124,211,132,12,212,132,130,244,140,244,140,3,244,132, + 129,244,140,8,244,132,149,212,124,179,124,147,124,82,116,17,116,208,107,78, + 83,237,74,140,66,10,42,201,33,168,33,103,25,71,25,103,25,233,41,107, + 58,172,74,13,91,110,99,142,107,3,207,115,129,174,115,4,207,115,137,175, + 115,175,115,174,115,142,107,142,115,175,115,12,99,66,8,66,8,7,98,8, + 131,97,8,98,8,97,8,4,98,8,139,0,0,105,74,239,115,239,115,203, + 90,0,0,37,41,235,90,8,58,77,107,109,107,3,77,107,4,109,107,154, + 141,115,142,115,142,115,174,115,174,115,45,107,163,24,228,32,4,33,228,32, + 4,33,4,33,36,33,36,33,36,41,36,41,4,33,227,24,195,24,162,24, + 130,16,130,16,98,16,130,16,98,16,130,16,7,98,16,133,98,8,98,16, + 98,16,98,8,98,16,3,130,16,155,163,16,163,16,195,16,195,24,195,16, + 196,16,228,24,4,25,199,49,203,82,109,99,206,115,145,140,19,157,116,173, + 212,189,20,198,21,206,20,214,20,206,146,197,176,164,141,123,40,74,228,32, + 130,16,66,8,3,65,8,134,97,8,98,16,98,16,97,16,98,16,98,16, + 7,130,16,131,162,24,162,24,163,24,3,195,24,151,195,32,227,32,195,24, + 195,24,227,24,195,32,195,24,227,24,227,24,195,24,195,24,163,24,195,24, + 163,16,130,8,130,8,130,16,163,16,130,16,98,8,65,8,65,0,65,0, + 4,66,8,129,97,8,3,98,8,141,66,8,98,8,98,8,65,8,65,8, + 196,24,102,41,167,49,231,57,8,58,8,58,232,65,232,57,3,199,57,129, + 231,57,3,232,57,133,8,58,9,58,9,66,8,66,41,66,16,3,132,168, + 33,168,33,168,41,168,33,4,200,33,130,233,41,233,41,3,9,42,152,9, + 50,10,50,41,50,41,50,74,50,73,50,74,50,41,50,74,50,74,50,74, + 58,106,58,74,58,74,58,74,50,106,50,106,50,106,58,107,58,107,58,106, + 58,107,58,139,58,106,58,6,139,58,129,171,58,4,139,58,135,171,66,139, + 66,171,66,139,66,171,66,171,66,139,66,10,171,66,131,204,74,204,74,204, + 66,6,236,74,130,13,75,12,75,3,13,75,130,13,83,13,83,4,45,83, + 129,45,75,4,45,83,133,77,83,45,83,77,83,46,83,45,83,8,78,83, + 133,110,83,110,83,78,91,110,83,110,83,5,110,91,135,142,91,143,91,143, + 91,142,91,142,91,143,91,142,91,3,143,91,132,175,99,143,91,175,91,143, + 99,4,175,99,129,175,91,4,175,99,132,207,99,208,99,207,99,208,99,3, + 207,99,3,208,99,132,240,99,208,99,208,107,208,107,3,240,99,5,240,107, + 132,240,99,240,107,240,99,240,107,3,240,99,134,240,107,240,107,240,99,240, + 107,240,99,240,99,5,240,107,129,208,107,3,240,107,130,208,99,240,99,3, + 208,107,3,208,99,134,208,107,208,99,208,99,175,99,207,99,176,99,13,175, + 99,5,143,99,131,143,91,143,99,143,91,3,143,99,134,143,91,111,99,111, + 91,111,91,142,91,143,91,6,111,91,129,110,91,4,111,91,3,143,91,4, + 143,99,136,175,99,143,99,175,99,175,99,176,99,176,99,175,99,175,99,6, + 176,99,134,208,99,176,99,208,99,208,107,208,107,240,107,3,241,107,6,17, + 108,129,50,108,3,50,116,136,50,108,82,108,50,108,82,116,82,108,50,108, + 82,116,82,108,3,50,108,153,82,116,82,108,82,108,82,116,82,108,82,116, + 114,116,114,116,115,116,115,116,115,124,115,116,146,124,147,124,115,124,147,124, + 147,124,115,124,115,124,147,124,147,116,147,124,147,116,147,124,147,124,5,179, + 124,130,179,132,179,132,6,179,124,150,147,124,114,116,82,116,18,108,241,107, + 144,99,46,83,205,74,139,66,42,50,233,41,201,33,168,33,136,33,136,33, + 9,50,106,58,171,74,13,83,77,91,142,107,174,107,8,175,115,139,174,115, + 175,115,174,115,175,115,175,115,45,99,196,24,195,16,195,16,196,16,196,24, + 4,228,24,3,5,33,3,4,25,140,4,33,196,24,70,33,207,115,142,107, + 110,107,73,74,170,82,109,107,105,74,45,107,175,115,4,142,115,142,109,115, + 109,107,142,115,142,107,142,115,142,115,109,107,109,107,77,107,163,16,130,16, + 163,24,163,24,163,16,4,163,24,131,195,24,163,24,163,24,4,163,16,6, + 130,16,129,131,16,4,130,16,137,131,16,130,16,163,16,130,8,131,16,130, + 16,131,16,130,16,130,16,6,163,16,155,228,24,232,49,44,91,174,107,239, + 115,239,123,15,124,112,140,209,156,50,173,147,189,20,206,20,206,179,197,18, + 173,79,148,109,115,138,82,9,58,167,41,102,33,37,25,228,24,195,16,163, + 16,130,8,130,8,6,130,16,130,162,16,162,16,3,163,24,131,130,16,163, + 16,162,16,16,130,16,3,98,8,148,98,16,130,16,98,8,130,16,98,8, + 98,8,131,16,131,8,130,16,130,16,131,16,130,8,131,8,131,16,131,16, + 130,8,131,8,163,16,162,16,130,16,5,98,16,141,130,16,130,16,163,24, + 195,24,228,32,37,33,69,41,102,41,167,49,167,49,199,49,200,57,200,57, + 22,3,131,136,33,168,33,136,33,5,168,33,130,201,41,201,41,3,233,41, + 130,9,42,233,41,3,9,42,4,41,50,133,42,50,42,50,74,50,41,50, + 42,50,8,74,50,4,106,50,131,107,58,106,50,106,50,3,106,58,137,106, + 50,106,58,107,58,107,58,106,58,106,58,107,58,107,58,138,58,8,139,58, + 130,171,66,171,58,5,171,66,133,172,66,204,66,204,74,204,66,204,74,7, + 236,74,137,13,75,13,75,237,74,237,74,13,75,236,74,237,74,13,75,237, + 74,7,13,75,131,45,83,13,75,45,75,3,45,83,129,45,75,3,45,83, + 129,77,83,6,78,83,6,110,83,129,78,83,4,110,91,134,110,83,110,91, + 142,91,143,91,142,91,142,91,6,143,91,4,175,91,130,175,99,175,91,5, + 175,99,134,207,99,207,99,175,99,208,99,207,99,176,99,3,207,99,3,208, + 99,129,208,107,4,208,99,139,208,107,208,107,240,99,208,99,208,99,208,107, + 240,99,240,99,240,107,240,99,240,99,10,240,107,131,241,99,240,107,240,99, + 7,240,107,136,240,99,240,107,208,107,208,107,240,99,208,107,208,107,207,107, + 6,208,99,134,207,99,207,99,175,99,175,99,176,99,208,99,3,175,99,6, + 143,99,134,143,91,143,91,142,91,143,91,143,91,111,91,4,110,91,142,142, + 91,111,91,143,91,143,91,143,99,143,99,143,91,142,91,143,99,143,99,143, + 91,143,99,143,99,175,99,3,143,99,129,175,99,5,143,99,4,175,99,3, + 176,99,5,208,99,149,208,107,240,99,208,107,209,107,241,99,241,99,241,107, + 241,107,241,99,17,100,241,99,241,99,17,100,241,99,241,99,241,107,241,107, + 17,100,17,108,17,108,17,100,3,50,108,142,50,116,50,116,82,116,50,116, + 82,116,82,116,50,116,82,116,50,116,50,116,49,108,50,108,82,108,82,108, + 4,82,116,5,114,116,176,115,116,115,116,115,124,115,116,146,116,114,116,114, + 116,82,116,50,108,17,108,209,107,176,99,111,91,13,83,204,74,139,66,74, + 58,9,42,233,41,200,41,200,41,201,41,41,50,107,58,172,74,236,82,45, + 91,78,99,142,107,142,107,110,107,110,107,142,107,142,107,110,107,142,107,142, + 107,110,107,110,107,142,107,110,107,142,107,236,82,102,41,134,41,102,33,102, + 33,102,41,3,134,41,3,135,41,3,167,41,143,135,41,167,41,135,41,70, + 33,12,91,142,107,174,115,113,140,113,140,81,132,113,140,81,132,80,132,81, + 132,80,132,4,81,132,137,80,132,48,132,81,132,48,132,77,107,109,107,44, + 99,228,24,130,16,5,163,16,134,195,16,163,16,195,16,163,16,195,16,163, + 16,4,195,16,4,163,16,131,195,16,195,16,163,16,11,195,16,132,195,24, + 196,24,195,24,196,24,3,228,24,169,4,25,232,49,44,91,174,107,15,116, + 239,123,206,115,174,115,238,123,47,140,144,148,50,181,115,189,115,181,18,173, + 112,148,173,123,170,82,9,58,200,49,200,49,168,41,168,41,167,41,135,41, + 102,33,102,33,38,33,37,25,5,25,228,16,227,16,195,16,195,16,163,16, + 163,16,162,16,163,16,130,16,163,16,162,16,5,163,16,135,195,24,163,16, + 195,16,163,16,195,24,195,16,195,16,9,163,16,133,195,16,163,16,131,16, + 163,16,131,16,8,163,16,129,195,16,4,228,24,146,227,24,228,24,228,24, + 196,24,228,24,228,24,227,24,227,24,228,24,195,24,228,24,228,24,228,32, + 4,33,4,33,37,41,70,41,102,41,198,2,3,135,25,135,135,33,135,25, + 135,25,136,33,136,33,168,33,168,33,4,200,33,130,200,41,200,33,4,233, + 41,3,9,42,129,9,50,6,9,42,130,42,50,41,50,5,42,50,132,42, + 42,42,50,74,50,74,50,5,42,50,130,74,50,42,50,9,74,50,149,74, + 58,74,50,74,50,106,50,107,58,106,58,107,58,107,58,138,58,139,58,139, + 58,139,66,139,58,171,66,139,58,171,66,172,66,172,66,171,66,172,66,172, + 66,7,204,66,129,204,74,5,204,66,143,204,74,204,66,204,74,204,74,236, + 74,236,66,236,74,236,74,236,66,236,74,237,74,236,74,237,74,236,74,237, + 74,4,13,75,6,45,75,6,45,83,129,46,83,10,78,83,133,110,83,110, + 83,110,91,110,83,110,83,7,110,91,130,143,91,111,91,7,143,91,134,143, + 99,143,91,175,91,175,99,175,99,175,91,5,175,99,130,175,91,175,91,6, + 175,99,129,207,99,6,208,99,130,240,107,208,99,7,240,107,129,240,99,5, + 240,107,129,16,108,5,240,107,134,240,99,16,108,240,107,16,108,240,107,241, + 107,14,240,107,129,208,107,3,208,99,131,207,99,208,99,176,99,8,175,99, + 129,143,99,6,175,99,16,143,99,131,143,91,143,99,143,99,6,175,99,132, + 143,99,144,99,175,99,175,99,5,176,99,129,208,99,8,176,99,5,208,99, + 131,209,99,241,99,208,107,3,241,107,129,17,108,4,241,107,130,240,107,208, + 107,3,208,99,132,240,107,241,99,240,107,241,107,5,17,108,130,49,108,17, + 108,4,49,108,167,17,108,17,108,241,99,208,99,208,99,143,99,111,91,46, + 83,237,74,204,74,171,66,107,58,42,50,9,58,41,50,9,50,9,50,74, + 58,139,66,171,74,236,74,13,83,45,91,45,91,45,99,13,91,45,91,45, + 91,13,91,13,91,45,99,45,99,45,91,45,91,13,91,12,83,237,90,139, + 74,8,58,3,41,58,175,73,66,105,66,41,58,73,66,73,66,73,58,73, + 58,73,66,41,58,41,58,73,66,41,58,41,58,41,66,9,58,235,90,109, + 107,142,107,174,115,207,115,174,115,174,115,207,115,207,115,175,115,207,115,207, + 115,239,123,207,115,239,115,207,115,239,123,175,115,109,107,109,107,142,107,232, + 57,134,41,134,41,102,41,102,33,69,33,37,33,37,33,5,33,5,25,4, + 33,3,4,25,130,5,33,5,25,10,4,25,133,228,24,4,25,228,24,4, + 25,4,25,3,228,24,5,4,25,177,5,25,5,33,69,33,167,41,106,66, + 77,91,142,99,206,107,239,115,174,115,142,107,141,107,141,107,141,115,15,132, + 112,148,144,156,144,156,80,140,206,123,235,98,106,74,232,49,167,41,167,33, + 168,33,168,41,168,33,168,41,167,41,168,41,167,33,168,33,167,33,168,33, + 167,33,167,33,135,33,135,33,103,33,102,33,102,25,70,25,70,33,70,25, + 69,25,70,25,37,25,4,33,13,228,24,138,37,25,102,33,102,33,69,33, + 37,25,5,25,228,24,196,16,196,16,196,24,14,228,24,131,196,24,228,24, + 227,24,3,228,24,131,196,24,228,24,196,24,4,195,24,130,196,24,228,24 +}; +const GuiConst_PTR const GuiStruct_BitmapPtrList[GuiStruct_BitmapCnt] = +{ + (GuiConst_PTR)&GuiBitmap_0 +}; + +const GuiConst_INTCOLOR GuiStruct_ColorTable[GuiStruct_ColorTableCnt] = +{ + 27437 +}; + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiStruct.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiStruct.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,123 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// Ensure that this header file is only included once +#ifndef __GUISTRUCT_H +#define __GUISTRUCT_H + +// -------------------------- INCLUDE SECTION -------------------------- + +#include "GuiConst.h" +#include "GuiLib.h" + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + +// CLASS Base +// ========== + +#define GuiStruct_Demo_0 0 +// Internal sub-assemblies +// ======================= + +#define GuiStructCOMP_CBFLAT 1 +#define GuiStructCOMP_CBFLATTRANSP 2 +#define GuiStructCOMP_CB3D 3 +#define GuiStructCOMP_CB3DINNER 4 +#define GuiStructCOMP_CBMCHSMALL 5 +#define GuiStructCOMP_CBMCHBIG 6 +#define GuiStructCOMP_CBMCRFLSMALL 7 +#define GuiStructCOMP_CBMCR3DSMALL 8 +#define GuiStructCOMP_CBMCRBIG 9 +#define GuiStructCOMP_CBMFIFLAT 10 +#define GuiStructCOMP_CBMFI3D 11 +#define GuiStructCOMP_RBFLAT 12 +#define GuiStructCOMP_RBFLATTRANSP 13 +#define GuiStructCOMP_RB3D 14 +#define GuiStructCOMP_RB3DINNER 15 +#define GuiStructCOMP_RBMFLAT 16 +#define GuiStructCOMP_RBM3D 17 +#define GuiStructCOMP_RBMSQUA 18 +#define GuiStructCOMP_BUFLAT0 19 +#define GuiStructCOMP_BUFLAT1 20 +#define GuiStructCOMP_BUFLAT2 21 +#define GuiStructCOMP_BUFLATR0 22 +#define GuiStructCOMP_BUFLATR1 23 +#define GuiStructCOMP_BUFLATR2 24 +#define GuiStructCOMP_BU3D0 25 +#define GuiStructCOMP_BU3D1 26 +#define GuiStructCOMP_BU3D2 27 +#define GuiStructCOMP_BU3DR0 28 +#define GuiStructCOMP_BU3DR1 29 +#define GuiStructCOMP_BU3DR2 30 +#define GuiStructCOMP_EBFLAT 31 +#define GuiStructCOMP_EB3D 32 +#define GuiStructCOMP_PAFLAT 33 +#define GuiStructCOMP_PAFLATR 34 +#define GuiStructCOMP_PAFLATTRANSP 35 +#define GuiStructCOMP_PAFLATTRANSPR 36 +#define GuiStructCOMP_PA3DRAIS 37 +#define GuiStructCOMP_PA3DRAISR 38 +#define GuiStructCOMP_PA3DLOW 39 +#define GuiStructCOMP_PA3DLOWR 40 +#define GuiStructCOMP_PA3DINNER 41 +#define GuiStructCOMP_PA3DINNERR 42 +#define GuiStructCOMP_PAEMBRAIS 43 +#define GuiStructCOMP_PAEMBLOW 44 +#define GuiStructCOMP_MMFLAT 45 +#define GuiStructCOMP_MM3D 46 +#define GuiStructCOMP_LBFLAT 47 +#define GuiStructCOMP_LB3D 48 +#define GuiStructCOMP_COFLAT 49 +#define GuiStructCOMP_CO3D 50 +#define GuiStructCOMP_SAFLAT 51 +#define GuiStructCOMP_SA3D 52 +#define GuiStructCOMP_PBFLAT 53 +#define GuiStructCOMP_PB3D 54 + +#define GuiStruct_StructCnt 1 +extern const GuiConst_PTR const GuiStruct_StructPtrList[GuiStruct_StructCnt]; +extern const GuiConst_INT16U GuiStruct_StructNdxList[GuiStruct_StructCnt]; + +#define GuiStruct_VarPtrCnt 1 +extern const GuiConst_PTR const GuiStruct_VarPtrList[GuiStruct_VarPtrCnt]; + +extern const GuiConst_INT8U GuiStruct_VarTypeList[GuiStruct_VarPtrCnt]; + +#define GuiStruct_Bitmap_DSC_1836ReducedBy75Percent 0 + +#define GuiStruct_BitmapCnt 1 +extern const GuiConst_PTR const GuiStruct_BitmapPtrList[GuiStruct_BitmapCnt]; + +#define GuiStruct_ColorTableCnt 1 +extern const GuiConst_INTCOLOR GuiStruct_ColorTable[GuiStruct_ColorTableCnt]; + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +#endif + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiVar.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiVar.c Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,43 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// -------------------------- INCLUDE SECTION -------------------------- + +#include "GuiConst.h" +#include "GuiLib.h" + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + + +GuiConst_INT16S GuiVarCompInt1; +GuiConst_INT16S GuiVarCompInt2; +GuiConst_INT16S GuiVarCompInt3; +GuiConst_INT16S GuiVarCompInt4; +GuiConst_INT16S GuiVarCompInt5; + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/GuiVar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/GuiVar.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,58 @@ +// My own header is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- +// +// *** ATTENTION *** +// +// This file is maintained by the easyGUI Graphical User Interface +// program. Modifications should therefore not be made directly in +// this file, as the changes will be lost next time easyGUI creates +// the file. +// +// *** ATTENTION *** +// +// ----------------------------------------------------------------------- + +// +// Generated by easyGUI version 6.0.9.005 +// Generated for project SinglePhoto +// in project file C:\Single Photo EasyGUI Application\SinglePhoto.gui +// + +// Ensure that this header file is only included once +#ifndef __GUIVAR_H +#define __GUIVAR_H + +// -------------------------- INCLUDE SECTION -------------------------- + +#include "GuiConst.h" +#include "GuiLib.h" + +// --------------------- GLOBAL DECLARATION SECTION -------------------- + +// Positions +// ========= + + +// Variables +// ========= + + +extern GuiConst_INT16S GuiVarCompInt1; +extern GuiConst_INT16S GuiVarCompInt2; +extern GuiConst_INT16S GuiVarCompInt3; +extern GuiConst_INT16S GuiVarCompInt4; +extern GuiConst_INT16S GuiVarCompInt5; + + +// -------------------------- CUSTOM SECTION --------------------------- + +// My own code is inserted here - edit it in the C code generation window + +// ----------------------------------------------------------------------- + +#endif + +// ----------------------------------------------------------------------- + +// My own footer is inserted here - edit it in the C code generation window
diff -r 000000000000 -r 9140ec6aa604 easyGUIUpdated/VarInit.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyGUIUpdated/VarInit.h Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,3 @@ +// Variable initialization values for project: +// C:\Single Photo EasyGUI Application\SinglePhoto.gui +
diff -r 000000000000 -r 9140ec6aa604 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jul 28 14:19:12 2017 +0000 @@ -0,0 +1,142 @@ +#include "mbed.h" +#include "DMBoard.h" +#include "lpc_swim.h" +#include "lpc_swim_font.h" + +#include "GuiLib.h" +#include "GuiDisplay.h" + +/* + Bodge so GuiDisplay.c ('easyGUIFixed' file) can call Thread::wait + (giving it an accurate millisecond timer) +*/ +extern "C" { + void EasyGUIWaitMs(GuiConst_INT32U msec) + { + Thread::wait(msec); + } +} + +// Defined in GuiDisplay.c - set the display frame address at runtime +extern "C" { + void GuiDisplay_SetFrameAddress(void *newFrameAddress); +} + +/* + Displays the specified easyGUI 'structure' (or page, to use a more easily understood term). + + Args are: the index of the structure to be displayed, + + No return code. +*/ +void DisplayEasyGuiStructure(int structureIndex) +{ + GuiLib_Clear(); // Don't need this if we have drawn the background bitmap - it covers the entire screen + + GuiLib_ShowScreen(structureIndex, GuiLib_NO_CURSOR, GuiLib_RESET_AUTO_REDRAW); + + GuiLib_Refresh(); + +} // End of "DisplayEasyGUIStructure" + +/* + Sets up the easyGUI user interface in an acceptable initial state. + + No return code. +*/ +void InitEasyGUIDisplay(int initialEasyGUIPage) +{ + // easyGUI stuff - note function calls require 'extern "C"' in relevant header + + GuiDisplay_Lock(); + + GuiLib_Init(); + + DisplayEasyGuiStructure(initialEasyGUIPage); + +// GuiLib_ShowBitmap(GuiStruct_Bitmap_DSC_1836Reduced, 40, 0, -1); + + GuiDisplay_Unlock(); +} + + +void InitialiseLPC4088(DMBoard* board, void **frameBufferAddress1, void **frameBufferAddress2) +{ + RtosLog* log = board->logger(); + Display* disp = board->display(); + + DMBoard::BoardError err; + + do { + err = board->init(); + if (err != DMBoard::Ok) { + log->printf("Failed to initialize the board, got error %d\r\n", err); + break; + } + + +#define COLOR_FLICKERING_FIX_1 +#ifdef COLOR_FLICKERING_FIX_1 + // Possible fix for display flickering on LPC4088 + uint32_t* reg = ((uint32_t*)0x400fc188); + *reg |= (3<<10); +#undef COLOR_FLICKERING_FIX_1 +#endif + log->printf("\n\nHello World!\n\n"); + + void* fb = disp->allocateFramebuffer(); + if (fb == NULL) { + log->printf("Failed to allocate memory for a frame buffer\r\n"); + err = DMBoard::MemoryError; + break; + } + + *frameBufferAddress1 = fb; + + // Allocate a second frame buffer - what will its address be? + void* fb2 = disp->allocateFramebuffer(); + *frameBufferAddress2 = fb2; + + Display::DisplayError disperr; +// disperr = disp->powerUp(fb, Display::Resolution_24bit_rgb888); + // Start display in default mode (16-bit) (24-bit uses too much memory) +#define COLOR_FLICKERING_FIX_2 +#ifdef COLOR_FLICKERING_FIX_2 + // Second possible fix for colour flickering problem, + // suggested by Embedded Artists - specify low frame rate + disp->powerDown(); + disperr = disp->powerUp(fb, Display::Resolution_16bit_rgb565, FrameRate_Low); +#undef COLOR_FLICKERING_FIX_2 +#else + disperr = disp->powerUp(fb); +#endif + if (disperr != Display::DisplayError_Ok) { + log->printf("Failed to initialize the display, got error %d\r\n", disperr); + break; + } + + } while(false); + + if (err != DMBoard::Ok) { + log->printf("\nTERMINATING\n"); + wait_ms(2000); // allow RtosLog to flush messages + mbed_die(); + } +} + +int main() +{ + DMBoard* board = &DMBoard::instance(); + RtosLog* log = board->logger(); + Display* disp = board->display(); + + void *frameBuffer1; + void *frameBuffer2; + InitialiseLPC4088(board, &frameBuffer1, &frameBuffer2); + GuiDisplay_SetFrameAddress(frameBuffer1); + + InitEasyGUIDisplay(GuiStruct_Demo_0); + + while(true) { + } +}