QQ四国军旗刷分外挂开发

时间:2024-02-21 12:32:18

  作为一名四国军旗的爱好者,军旗也陪伴我一起度过了许多时间,让我不至过于无聊、郁闷。。也因此对她产生了不一般的感情。。于是乎有了下面的进一步接触过程(研究写刷分软件)。。。

效果图:

一、数据准备

QQ四国军旗刷分外挂数据准备
                  ——BlackSnake  2011.06.19

1. 游戏版本号:(进入游戏时的窗口标题)
 QQ游戏-四国军旗角色版 2.1 Beta06 Build020

2. QQ号地址:(用CE内存查看器获得)
   004C7BE0 或00494520

3. 座位号内存地址:(用CE内存查看器获得)
   004C7BEC 或00C54579 (下(蓝)、左(绿)、上(紫)、右(黄) 分别对应0、1、2、3)

4. 从棋盘布局文件分析得各子的代码(16进制):(用二进制编辑工具UltraEdit)
军旗: 02   地雷: 03    炸弹: 04    司令: 05    军长: 06   师长: 07    旅长: 08    团长: 09 

营长: 0A   连长:0B    排长:0C    工兵:0D     军营: 00

5. 分析得到棋盘是17*17的数组(行列最小最大值及每格棋子的间距)(借助SPY++工具)
       xMin:200, xMax: 840,  xsep:40
       ymin:70 , yMax: 710  ,ystep:40

6. 各按钮位置:(借助SPY++工具)
    开局:xPos:863,yPos:607; Lparam:x025F035F
    投降:XPos:856,yPos:659; LParam:x02930358

7. 重复下棋的位置测定:
 (初测每格差 40 相素)
       棋子第一格的位置: xPos:428,yPos:498; 左上营:xPos:470,yPos:539;
           第一格的上一格:xPos:431,yPos:462  上格的左边格:xPos:391,yPos:459;
           第二格:xPos:436,yPos:502
           第三格:xPos:434,yPos:540
           第四格:xPos:432,yPos:581


8. 下棋的步数地址(用来控制30步以上即可投降):(用CE内存查看器获得)
    $004C7C30

9. 计时器地址(可以确定轮到谁下棋):(用CE内存查看器获得)
    $00494D40


10. 投降时产生的窗口(是一级窗口),其中的投降待确认提示文本:您确定要投降吗?

11. 投降后产生的窗口(是游戏窗口的子窗口),投降后提示文本:投降,全军覆没

二、原代码(因为以前写过老版本的,所以就先套下来了,试了下能用,就先贴上来)

             ——望路过的大哥多指点一二!!!

//工程文件

1 program pMain;
2
3 uses
4 Forms,
5 uMain in \'uMain.pas\' {frmMain},
6 uCustomProc in \'uCustomProc.pas\',
7 uHelp in \'uHelp.pas\' {frmHelp},
8 uRegister in \'uRegister.pas\' {frmRegister};
9
10 {$R *.res}
11
12 begin
13 Application.Initialize;
14 fInst := ExistsInst;
15 Application.Title := \'QQ四国军旗刷分器\';
16 Application.CreateForm(TfrmMain, frmMain);
17 Application.Run;
18 end.

//主单元文件

unit uMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls, Registry;

type
TfrmMain
= class(TForm)
Label1: TLabel;
edtDir: TEdit;
btnAutoPlay: TButton;
cbbWinner: TComboBox;
cbAutoContinuous: TCheckBox;
cbHide: TCheckBox;
pnlTitle: TPanel;
cbSmart: TCheckBox;
odSetDir: TOpenDialog;
sbSetDir: TSpeedButton;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
rgModel: TRadioGroup;
Label2: TLabel;
cbbLoser: TComboBox;
btnExit: TButton;
cbAddSpeed: TCheckBox;
bbtnHelp: TBitBtn;
Image1: TImage;
sbRegister: TStatusBar;
bbtnRegister: TBitBtn;
procedure bbtnHelpClick(Sender: TObject);
procedure bbtnRegisterClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnAutoPlayClick(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure cbAddSpeedClick(Sender: TObject);
procedure cbAutoContinuousClick(Sender: TObject);
procedure cbbLoserDropDown(Sender: TObject);
procedure cbbLoserKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure cbbLoserKeyPress(Sender: TObject; var Key: Char);
procedure cbbWinnerDropDown(Sender: TObject);
procedure cbbWinnerKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure cbbWinnerKeyPress(Sender: TObject; var Key: Char);
procedure cbHideClick(Sender: TObject);
procedure cbSmartClick(Sender: TObject);
procedure rgModelClick(Sender: TObject);
procedure sbSetDirClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmMain: TfrmMain;
hThread1, hThread2: THandle;
bVerfyed : Boolean;
WinnerQQ, LoserQQ: Int64;

implementation

{$R *.dfm}

uses uCustomProc, uHelp, uRegister;


{线程入口函数}
function MyThreadFun(p: Pointer): DWORD; stdcall;
begin
cTimes1 :
= 0; //控制两组下棋速度的同步
cTimes2 :
= 0;
if Integer(p) = 1 then
begin
while True do
begin
Inc(cTimes1);
AutoPlay(
1);
if ChessFlag = False then Break;
if Length(hChess) = 4 then
begin
if cTimes1 - cTimes2 >= 2 then
Sleep(
1000);
end;
end;
end else
if Integer(p) = 2 then
begin
while True do
begin
Inc(cTimes1);
SmartPlay(hChess[
0],hChess[1],0);
if ChessFlag = False then Break; //控制是否连续刷分
if Length(hChess) = 4 then
begin
if cTimes1 - cTimes2 >= 2 then
Sleep(
1000);
end;
end;
end else
if Integer(p) = 11 then
begin
while True do
begin
Inc(cTimes2);
AutoPlay(
2);
if ChessFlag = False then Break; //控制是否连续刷分
if Length(hChess) = 4 then
begin
if cTimes2 - cTimes1 >= 2 then
Sleep(
1000);
end;
end;
end else
if Integer(p) = 22 then
begin
while True do
begin
Inc(cTimes2);
SmartPlay(hChess[
2],hChess[3],1);
if ChessFlag = False then Break;
if Length(hChess) = 4 then
begin
if cTimes2 - cTimes1 >= 2 then
Sleep(
1000);
end;
end;
end;
//恢复设置
frmmain.btnAutoPlay.Enabled :
= True;
frmMain.cbbWinner.Enabled :
= True;
frmMain.cbbWinner.Text :
= \'\';
frmMain.cbSmart.Enabled :
= True;
frmMain.rgModel.Enabled :
= True;
if frmMain.rgModel.ItemIndex = 1 then frmMain.cbbLoser.Enabled := True;
Result :
= 0;
if (Integer(p) <= 2 ) then CloseHandle(hThread1);
if (Integer(p) >= 11) then CloseHandle(hThread2);
end;

procedure TfrmMain.bbtnHelpClick(Sender: TObject);
begin
with TfrmHelp.Create(nil) do
try
ShowModal;
finally
free;
end;
end;

procedure TfrmMain.bbtnRegisterClick(Sender: TObject);
begin
with TfrmRegister.Create(nil) do
try
bVerfyed :
= (ShowModal = 1);
if bVerfyed then
begin
sbRegister.Panels[
0].Text := \'已注册,可使用全部功能\';
cbSmart.Enabled :
= True;
cbAddSpeed.Enabled :
= True;
cbAutoContinuous.Enabled :
= True;
cbHide.Enabled :
= True;
bbtnRegister.Enabled :
= False;
end;
finally
free;
end;
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
CloseHandle(hThread1);
CloseHandle(hThread2);
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var
reg: TRegistry;
sUser, sPsw :
string;
begin
bVerfyed :
= False;
reg :
= TRegistry.Create;
try
reg.RootKey :
= HKEY_CURRENT_USER;
reg.OpenKey(
\'\Software\ShiGuoSF\',True);
sUser :
= reg.ReadString(\'user\');
sPsw :
= reg.ReadString(\'password\');
finally
reg.CloseKey;
reg.Free;
end;
if (Length(Trim(sUser)) <> 8) or (Length(Trim(sPsw)) <> 16) then bVerfyed := False
else if Encrypt(sUser) = Trim(sPsw) then bVerfyed := True;

//设置状态栏
if not bVerfyed then
begin
sbRegister.Panels[
0].Text := \'未注册,功能受限...\';
cbSmart.Enabled :
= False;
cbAddSpeed.Enabled :
= False;
cbAutoContinuous.Enabled :
= False;
cbHide.Enabled :
= False;
end else
begin
sbRegister.Panels[
0].Text := \'已注册,可使用全部功能\';
cbSmart.Enabled :
= True;
cbAddSpeed.Enabled :
= True;
cbAutoContinuous.Enabled :
= True;
cbHide.Enabled :
= True;
bbtnRegister.Enabled :
= False;
end;
sbRegister.Panels[
1].Text := \' 作者:BlackSnake\';
SendMessage(Handle, MB_TOPMOST,
0, 0);
cbbWinner.Style :
= csDropDown;
edtDir.Enabled :
= False;
sbSetDir.Enabled :
= False;
cbbLoser.Enabled :
= False;
fSpeed :
= False;
//初始化是否存在已运行实例
if fInst then GetHwnd(Handle);

end;

procedure TfrmMain.btnAutoPlayClick(Sender: TObject);
var
ID: DWORD;
begin
if rgModel.ItemIndex = 0 then
begin
if cbbWinner.Text = \'\' then
begin
ShowMessage(
\'请选择要赢分的QQ号后再继续!\');
Exit;
end;
end else
if (cbbWinner.Text = \'\') or (cbbLoser.Text = \'\') then
begin
ShowMessage(
\'请设置好输赢分的QQ号后再继续!\');
Exit;
end;

WinnerQQ :
= StrToInt64(cbbWinner.Text);
cbbWinner.Enabled :
= False;
//键状态设置
if rgModel.ItemIndex = 1 then
begin
LoserQQ :
= StrtoInt64(cbbLoser.Text);
cbbLoser.Enabled :
= False;
end;
rgModel.Enabled :
= false;
cbSmart.Enabled :
= False;
btnAutoPlay.Enabled :
= False;
fPause :
= false;
if cbAutoContinuous.Checked then Chessflag := True else ChessFlag := False;
//确定每个游戏窗口句柄
EnsureHwnd(WinnerQQ, LoserQQ);
//单组两人游戏
if rgModel.ItemIndex = 0 then
begin
if not cbSmart.Checked then hThread1 := CreateThread(nil, 0, @MyThreadFun, Ptr(1), 0, ID)
else hThread1 := CreateThread(nil, 0, @MyThreadFun, Ptr(2), 0, ID);
end else
begin
if not cbSmart.Checked then
begin
hThread1 :
= CreateThread(nil, 0, @MyThreadFun, Ptr(1), 0, ID);
Sleep(
1500);
hThread2 :
= CreateThread(nil, 0, @MyThreadFun, Ptr(11), 0, ID);
end else
begin
hThread1 :
= CreateThread(nil, 0, @MyThreadFun, Ptr(2), 0, ID);
Sleep(
1500);
hThread2 :
= CreateThread(nil, 0, @MyThreadFun, Ptr(22), 0, ID);
end;
end;

end;

procedure TfrmMain.btnExitClick(Sender: TObject);
begin
Close;
end;

procedure TfrmMain.cbAddSpeedClick(Sender: TObject);
begin
fSpeed :
= cbAddSpeed.Checked;
end;

{测试按钮2}
procedure TfrmMain.cbAutoContinuousClick(Sender: TObject);
begin
ChessFlag :
= cbAutoContinuous.Checked;
end;

procedure TfrmMain.cbbLoserDropDown(Sender: TObject);
var
id, i : Byte;
dwQQNum: Cardinal;
begin
if cbbWinner.Text = \'\' then
begin
ShowMessage(
\'请先设置赢分的QQ号!\');
Exit;
end;
if rgModel.ItemIndex = 0 then id := 2 else id := 4;
//初始化玩家
cbbLoser.Items.Clear;
for i := 0 to id-1 do
begin
GetNumber(hChess[i], BASEADDRQQ, @dwQQNum, SizeOf(dwQQNum));
cbbLoser.Items.Add(IntToStr(dwQQNum));
end;
end;

procedure TfrmMain.cbbLoserKeyDown(Sender: TObject; var Key: Word; Shift:
TShiftState);
begin
if Key = $2E then Key := 0;
end;

procedure TfrmMain.cbbLoserKeyPress(Sender: TObject; var Key: Char);
begin
Key :
= #0;
end;

procedure TfrmMain.cbbWinnerDropDown(Sender: TObject);
var
i, id : Byte;
dwQQNum: Cardinal;
begin
if rgModel.ItemIndex = 0 then id := 2 else id := 4;
Prepare(handle, id);
if rgModel.ItemIndex = 0 then
begin
//如果有一方为空,则提示双方均须进入游戏
if (hChess[0] = 0) or (hChess[1] = 0) then
begin
MessageBox(
0, \'双方均须进入游戏后再开始!\', \'提示\', MB_OK);
Exit;
end;
end else
begin
//如果有一方为空,则提示双方均须进入游戏
if (hChess[0] = 0) or (hChess[1] = 0) or (hChess[2] = 0) or (hChess[3] = 0) then
begin
MessageBox(
0, \'两组双方均须进入游戏后再开始!\', \'提示\', MB_OK);
Exit;
end;
end;

//初始化玩家
cbbWinner.Items.Clear;
for i := 0 to id-1 do
begin
GetNumber(hChess[i], BASEADDRQQ, @dwQQNum, SizeOf(dwQQNum));
cbbWinner.Items.Add(IntToStr(dwQQNum));
end;
end;

procedure TfrmMain.cbbWinnerKeyDown(Sender: TObject; var Key: Word; Shift:
TShiftState);
begin
if Key = $2E then Key := 0;
end;

procedure TfrmMain.cbbWinnerKeyPress(Sender: TObject; var Key: Char);
begin
Key :
= #0;
end;

procedure TfrmMain.cbHideClick(Sender: TObject);
var
i, id : Byte;
begin
if rgModel.ItemIndex = 0 then id := 2 else id:= 4;

if rgModel.ItemIndex = 0 then
begin
//如果有一方为空,则提示双方均须进入游戏
if (hChess[0] = 0) or (hChess[1] = 0) then
begin
MessageBox(
0, \'双方均须进入游戏后再开始!\', \'提示\', MB_OK);
Exit;
end;
end else
begin
//如果有一方为空,则提示双方均须进入游戏
if (hChess[0] = 0) or (hChess[1] = 0) or (hChess[2] = 0) or (hChess[3] = 0) then
begin
MessageBox(
0, \'两组双方均须进入游戏后再开始!\', \'提示\', MB_OK);
Exit;
end;
end;
if cbHide.Checked then
begin
for i := 0 to id-1 do
begin
//SendMessage(hChess[i], WM_SYSCOMMAND, SC_MINIMIZE, 0);
ShowWindow(hChess[i], SW_HIDE);
end;
end else
begin
for i := 0 to id-1 do
begin
//SendMessage(hChess[i], WM_SYSCOMMAND, SC_RESTORE, 0);
ShowWindow(hChess[i], SW_SHOW);
end;
end;

end;

procedure TfrmMain.cbSmartClick(Sender: TObject);
begin
edtDir.Enabled :
= cbSmart.Checked;
sbSetDir.Enabled :
= cbSmart.Checked;
end;

procedure TfrmMain.rgModelClick(Sender: TObject);
begin
if not bVerfyed then rgModel.ItemIndex := 0;
if rgModel.ItemIndex = 0 then cbbLoser.Enabled := False else cbbLoser.Enabled := true;
end;

procedure TfrmMain.sbSetDirClick(Sender: TObject);
begin
if odSetDir.Execute then
begin
edtDir.Enabled :
= True;
edtDir.Text :
= odSetDir.FileName;
sFileName :
= odSetDir.FileName;
// edtDir.Text := ExtractFilePath(odSetDir.FileName);
edtDir.Enabled :
= False;
end;
end;

end.

//自定义过程文件

unit uCustomProc;

interface

uses Windows, Messages, SysUtils;

procedure GetHWND(thewnd: HWND);
function ExistsInst: Boolean;
procedure Prepare(thewnd: HWND; id: Byte);//初始化游戏窗口句柄
procedure Start(h:HWND);
procedure AutoClick(hGameWin: HWND; bFlag: Boolean);
procedure AutoPlay(id: Byte);
procedure PlayLastStep(h1,h2:HWND);
procedure EnsureHwnd(Winner, Loser : Int64);
procedure ClickStep(hGamewin: HWND);     //点跳过,胜方不得分
function GetNumber(hGameWin: HWND; const lpBase: Pointer; pBuf: PDWORD; bSize: Cardinal): Boolean;
function GetSpecificWnd(theWnd: HWND; sTip: string): HWND;
//function GetChildWnd(theWnd: HWND; sTip: string): HWND;
procedure SmartPlay(h1,h2: HWND; id: Byte);//根据复盘数据智能化下棋
procedure CustomPlay(h1,h2:HWND; id: Byte);
procedure CustomClick(hGameWin: HWND; pt1,pt2: TPoint);
procedure ReadChessFile(sFileName: string);
function ConvertXY(hX, hY: Integer; t: Byte): TPoint;
function ToXYPos(pt: TPoint): TPoint;
procedure InputChess(h: HWND; parr: Pointer);//导入复盘数据
procedure SetXY(x, y: PByte; t: Byte);//布局易位时修改坐标

var
  hChess, hTmp: array of HWND; //两个人的游戏窗口句柄
  ChessFlag, fSpeed, fPause, fInst: Boolean;
  countOrders, fCount, Steps, fid, cTimes1, cTimes2, cHwnd:Integer;
  bufPos: array of array of Byte;
  bufChess1, bufChess2: array[1..30] of Byte;
  pt3,pt4:TPoint;
  sFileName: string;

const
  BaseAddrQQ = Pointer($004C7BE0);    //qq号地址
  BaseAddrTimer = Pointer($00494D40); //计时器地址
  BaseAddrSetNum = Pointer($004C7BEC);//座位号地址

implementation

function ExistsInst: Boolean;
var
  h: HWND;
begin
  Result := False;
  h := FindWindow(\'TfrmMain\', \'QQ四国军旗刷分器\');
  if h <> 0  then Result := True;
end;

procedure GetHWND(thewnd: HWND);
var
  i: Byte;
  h: HWND;
  buf: array[Byte] of Char;
begin
  i := 0;
  h := GetWindow(thewnd, GW_HWNDFIRST);
  while h <> 0 do
  begin
    GetWindowText(h, buf, Length(buf));
    if buf = \'四国军棋角色版\' then
    begin
      SetLength(hTmp, i + 1);
      hTmp[i] := h;
      Inc(i);
    end;
    h := GetWindow(h, GW_HWNDNEXT);
  end;
 cHwnd := i;
end;

procedure Prepare(thewnd: HWND; id: Byte);
var
  founded: Boolean;
  i, j, k, sum: Byte;
  h: HWND;
  buf: array[Byte] of Char;
  arrTmp: array of HWND;
begin
  SetLength(hChess, id);
  //取得 已开游戏句柄  hTmp[cHwnd]
  i := 0;
  h := GetWindow(thewnd, GW_HWNDFIRST);
  while h <> 0 do
  begin
    GetWindowText(h, buf, Length(buf));
    if buf = \'四国军棋角色版\' then
    begin
      SetLength(arrTmp, i + 1);
      arrTmp[i] := h;
      Inc(i);
    end;
    h := GetWindow(h, GW_HWNDNEXT);
  end;
  sum := i;

  if (cHwnd + id) <> sum then
  begin
    if not fInst then
    begin
      MessageBox(0, \'请先运行游戏!\', \'出错提示\', 0);
      Exit;
    end else
    begin
      MessageBox(0, \'请先运行刷分器再运行游戏,并确保所开游戏客户端个数符合刷分要求!\', \'出错提示\', 0);
      Exit;
    end;
  end;
  //找出新开的游戏窗口句柄
  k := 0;
  founded := false;
  if fInst = False then
  begin
    for i := 0 to id - 1  do  hChess[i] := arrTmp[i];
  end else
  begin
    for i := 0 to  sum - 1 do
    begin
      for j := 0 to cHwnd - 1 do
      begin
        if arrTmp[i] = hTmp[j] then
        begin
          founded := True;
          Break;
        end;
      end;
      if not founded then
      begin
        hChess[k] := arrTmp[i];
        Inc(k);
        founded := False;
      end;
    end;
  end;
end;

procedure EnsureHwnd(Winner, Loser : Int64);
var
  i: integer;
  h: HWND;
  dwQQNum, dwTimer0,dwTimer1: Cardinal;
begin
  if Length(hChess) = 4 then
  begin
    //如果是4个窗口,将相同号码的两个放在hChess[1]\hChess[2]
    for i := 0 to 3 do
    begin
      GetNumber(hChess[i], BASEADDRQQ, @dwQQNum, SizeOf(dwQQNum));
      if Winner = dwQQNum then
      begin
        h := hChess[0];
        hChess[0] := hChess[i];
        hChess[i] := h;
      end else
      if Loser = dwQQNum then
      begin
        h := hChess[3];
        hChess[3] := hChess[i];
        hChess[i] := h;
      end;
    end;
    //确定两两组合
    Start(hChess[0]);
    Sleep(100);
    Start(hChess[1]);
    Sleep(300);
    GetNumber(hChess[0], BaseAddrTimer, @dwTimer0, SizeOf(dwTimer0));
    GetNumber(hChess[1], BaseAddrTimer, @dwTimer1, SizeOf(dwTimer1));
    //如果没计时器信息,说明hChess[0]和hChess[1]不是同桌,需交换相同QQ号的句柄 ;
    if (dwTimer0 = 0) and (dwTimer1 = 0) then
    begin
      h := hChess[1];
      hChess[1] := hChess[2];
      hChess[2] := h;
    end;
  end else
  if Length(hChess)=2 then
  begin
    GetNumber(hChess[1], BASEADDRQQ, @dwQQNum, SizeOf(dwQQNum));
    if Winner = dwQQNum then
    begin
      h := hChess[0];
      hChess[0] := hChess[1];
      hChess[1] := h;
    end;
  end else
  begin
    MessageBox(0, \'打开游戏客户端数不符!\', \'出错提示\', 0);
    Exit;
  end;
end;

procedure Start(h: HWND);
begin
  //BringWindowToTop(h);
  EnableWindow(h, True);
  //摸拟鼠标点击 开始
  SendMessage(h, WM_LBUTTONDOWN, 1, MakeLParam(863, 607));
  SendMessage(h, WM_LBUTTONUP, 0, MakeLParam(863, 607));
end;

procedure AutoClick(hGamewin: HWND; bFlag: Boolean);
begin
  if bFlag then
  begin
    PostMessage(hGameWin, WM_LBUTTONDOWN, 1, MakeLParam(430, 500));
    PostMessage(hGameWin, WM_LBUTTONUP, 1, MakeLParam(430, 500));
    Sleep(100);
    PostMessage(hGameWin, WM_LBUTTONDOWN, 1, MakeLParam(430, 460));
    PostMessage(hGameWin, WM_LBUTTONUP, 1, MakeLParam(430, 460));
  end else
  begin
    PostMessage(hGameWin, WM_LBUTTONDOWN, 1, MakeLParam(430, 460));
    PostMessage(hGameWin, WM_LBUTTONUP, 1, MakeLParam(430, 460));
    Sleep(100);
    PostMessage(hGameWin, WM_LBUTTONDOWN, 1, MakeLParam(430, 500));
    PostMessage(hGameWin, WM_LBUTTONUP, 1, MakeLParam(430, 500));
  end;
end;

{*********************************************************
** 功能:实现双方自动下棋
**
** 传入参数:赢分的玩家QQ号
**
**
***********************************************************}
procedure AutoPlay(id: Byte);
var
  i: Byte;
  hGame: array[0..1] of HWND;
  dwTimer: Cardinal;
begin
  //两组赋不同的句柄
  if id = 1 then
  begin
    hGame[0] := hChess[0];
    hGame[1] := hChess[1];
  end else
  if id = 2 then
  begin
    hGame[0] := hChess[2];
    hGame[1] := hChess[3];
  end;
    //提示不保存时   xPos:= 547; yPos:= 457;
  PostMessage(hGame[0], WM_LBUTTONDOWN, 1, MakeLParam(540, 460));
  PostMessage(hGame[0], WM_LBUTTONUP, 0, MakeLParam(540, 460));
  PostMessage(hGame[1], WM_LBUTTONDOWN, 1, MakeLParam(540, 460));
  PostMessage(hGame[1], WM_LBUTTONUP, 0, MakeLParam(540, 460));
  Start(hGame[0]);
  Start(hGame[1]);
  Sleep(500);
  //如果不是hGame[0]先下,则跳过
  GetNumber(hGame[0], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
  if dwTimer = 0 then  ClickStep(hGame[1]);
  Sleep(500);
  //自动下棋
  i := 1;
  while i< 9 do
  begin
    AutoClick(hGame[0], True);
    while True do
    begin
      Sleep(200);
      dwTimer := 0;
      GetNumber(hGame[1], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
      if dwTimer > 0 then Break;
    end;

    AutoClick(hGame[1], True);
    while True do
    begin
      Sleep(200);
      dwTimer := 0;
      GetNumber(hGame[0], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
      if dwTimer > 0 then Break;
    end;

    AutoClick(hGame[0], False);
    while True do
    begin
      Sleep(200);
      dwTimer := 0;
      GetNumber(hGame[1], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
      if dwTimer > 0 then Break;
    end;

    AutoClick(hGame[1], False);
    while True do
    begin
      Sleep(200);
      dwTimer := 0;
      GetNumber(hGame[0], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
      if dwTimer > 0 then Break;
    end;

    Inc(i);
  end;
  
  //最后一步
  PlayLastStep(hGame[0], hGame[1]);

end;

procedure PlayLastStep(h1,h2:HWND);
var
  //i : Byte;
  dwTimer: Cardinal;
  h, hBtn: HWND;
  hGame: array[0..1] of HWND;
begin
  hGame[0]:= h1;
  hGame[1]:= h2;
  //最后一步
  //i := 1;   //hGame[0]赢分时
  Sleep(200);
  clickstep(hGame[0]);
  Sleep(500);
  dwTimer := 0;
  while True do
  begin
    Sleep(1000);
    GetNumber(hGame[1], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
    if dwTimer > 0 then Break;
  end;
  //hGame[1]点击投降
  PostMessage(hGame[1], WM_LBUTTONDOWN, 1, MakeLParam(856, 659));
  PostMessage(hGame[1], WM_LBUTTONUP, 0, MakeLParam(856, 659));

  Sleep(300);
  //投降确认
  h := GetspecificWnd(hGame[0], \'要投降吗\');   //文本提示的窗口句柄
  hBtn := FindWindowEx(h, 0, \'Button\', nil);  //右上角关闭按钮
  hBtn := FindWindowEx(h, hBtn, \'Button\', nil); //确定按钮
  PostMessage(hBtn, BM_CLICK, 0, 0);
  Sleep(600);
  //全军覆没确认
  h := GetspecificWnd(hGame[0], \'投降,全军覆没\');
  if h = 0 then h := GetspecificWnd(hGame[0], \'投降,全军覆没\');
  hBtn := FindWindowEx(h, 0, \'Button\', nil); //确定按钮
  hBtn := FindWindowEx(h, hBtn, \'Button\', nil);
  PostMessage(hBtn, BM_CLICK, 0, 0);
  Sleep(500);
  //提示不保存时   xPos:= 547; yPos:= 457;
  h := GetspecificWnd(hGame[0], \'是否需要保存\');
  if h <> 0 then
  begin
    hBtn := FindWindowEx(h, 0, \'Button\', nil); //确定按钮
    hBtn := FindWindowEx(h, hBtn, \'Button\', nil);
    PostMessage(hBtn, BM_CLICK, 0, 0);
  end;
  
  h := GetspecificWnd(hGame[1], \'是否需要保存\');
  if h <> 0 then
  begin
    hBtn := FindWindowEx(h, 0, \'Button\', nil); //确定按钮
    hBtn := FindWindowEx(h, hBtn, \'Button\', nil);
    PostMessage(hBtn, BM_CLICK, 0, 0);
  end;

  Sleep(100);
  PostMessage(hGame[0], WM_LBUTTONDOWN, 1, MakeLParam(540, 460));
  PostMessage(hGame[0], WM_LBUTTONUP, 0, MakeLParam(540, 460));
  Sleep(100);
  PostMessage(hGame[1], WM_LBUTTONDOWN, 1, MakeLParam(540, 460));
  PostMessage(hGame[1], WM_LBUTTONUP, 0, MakeLParam(540, 460));
  //Sleep(800);
end;

{据复盘数据下棋}
procedure SmartPlay(h1,h2: HWND; id: Byte);
var
  dwSitNum: Cardinal;
  hGame: array[0..1] of HWND;
begin
  hGame[0] := h1;
  hGame[1] := h2;
  //分析复盘数据 文件名如T-1-3,意思为第1位先下,第3位赢
  ReadChessFile(sFileName);
  //读入布局数据
  GetNumber(hGame[0], BaseAddrSetNum, @dwSitNum, SizeOf(dwSitNum));
  //右,下,左,上的座位分别对应0,1,2,3
  if dwSitNum in [0, 3] then
  begin
    InputChess(hGame[0], @bufChess1);
  end else  InputChess(hGame[0], @bufChess2);

  GetNumber(hGame[1], BaseAddrSetNum, @dwSitNum, SizeOf(dwSitNum));
  //右,下,左,上的座位分别对应0,1,2,3
  if dwSitNum in [0, 3] then
  begin
    InputChess(hGame[1], @bufChess1);
  end else  InputChess(hGame[1], @bufChess2);

  Sleep(100);
  //开始
  start(hGame[0]);
  Start(hGame[1]);
  Sleep(500);
  CustomPlay(hGame[0],hGame[1], id);
end;

procedure CustomPlay(h1,h2:HWND; id: Byte);
var
  i, j : Integer;
  pt1, pt2: TPoint;
  dwTimer, dwSitNum1, dwSitNum2: Cardinal;
  hGame: array[0..1] of HWND;
  hTmp : HWND;
  PosXY : array of array of array of Byte;
begin
  Randomize;
  hGame[0]:= h1;
  hGame[1]:= h2;
  //查座位方位
  //右,下,左,上的座位分别对应0,1,2,3
  GetNumber(hGame[0], BaseAddrSetNum, @dwSitNum1, SizeOf(dwSitNum1));
  GetNumber(hGame[1], BaseAddrSetNum, @dwSitNum2, SizeOf(dwSitNum2));
  //如果是hGame[1]先下,则交换两个句柄
  if dwSitNum1 in [1,2] then
  begin
    hTmp := hGame[0];
    hGame[0] := hGame[1];
    hGame[1] := hTmp;
    GetNumber(hGame[0], BaseAddrSetNum, @dwSitNum1, SizeOf(dwSitNum1));
    GetNumber(hGame[1], BaseAddrSetNum, @dwSitNum2, SizeOf(dwSitNum2));
  end;

  SetLength(PosXY, 2, countOrders, 6);
  for i := 0 to countOrders - 1 do
  begin
    for j := 0 to 5 do
    begin
      PosXY[0][i,j] := bufPos[i,j];
      PosXY[1][i,j] := bufPos[i,j];
    end;
  end;

  //确保是偶数步,便于最后的判断
  if Odd(countOrders) then Dec(countOrders);
  //如果加速,则定为30步
  if fSpeed then Steps := 30 else Steps := countOrders;

  //布局易位时,需转换起止坐标
  if (dwSitNum1 in [1,3]) and (fid = 0) or (dwSitNum1 in [0,2]) and (fid = 1) then
  begin
    for i := 0 to Steps - 1 do
    begin
      SetXY(@PosXY[id][i,2], @PosXY[id][i,3], fid);
      SetXY(@PosXY[id][i,4], @PosXY[id][i,5], fid);
    end;
  end;
  //开始循环
  for i := 0 to Steps - 1 do
  begin
    if Odd(i) then  j := 1 else j := 0;
    if bufPos[i,1]=$5F then
    begin
      //摸拟点起终两点
      if j = 0 then
      begin
        pt1 := ConvertXY(PosXY[id][i,2], PosXY[id][i,3], dwSitNum1);
        pt2 := ConvertXY(PosXY[id][i,4], PosXY[id][i,5], dwSitNum1);
      end else
      begin
        pt1 := ConvertXY(PosXY[id][i,2], PosXY[id][i,3], dwSitNum2);
        pt2 := ConvertXY(PosXY[id][i,4], PosXY[id][i,5], dwSitNum2);
      end;
      //转为像素坐标
      pt1 := ToXYPos(pt1);
      pt2 := ToXYPos(pt2);
      Sleep(1000+Random(4000));
      CustomClick(hGame[j], pt1, pt2);
    end else
    begin
    //点跳过
      Sleep(1000);
      clickstep(hGame[j]);
    end;

    //据计时器判断是否要继续的“死循环”
    while True do
    begin
      Sleep(100);
      dwTimer := 0;
      GetNumber(hGame[1-j], BaseAddrTimer, @dwTimer, SizeOf(dwTimer));
      if dwTimer > 0 then Break;
    end;
  end;
  //最后一步
  PlayLastStep(h1,h2);
end;

procedure CustomClick(hGameWin: HWND; pt1,pt2: TPoint);
begin
  PostMessage(hGameWin, WM_LBUTTONDOWN, 1, MakeLParam(pt1.X, pt1.Y));
  PostMessage(hGameWin, WM_LBUTTONUP, 1, MakeLParam(pt1.X, pt1.Y));
  PostMessage(hGameWin, WM_LBUTTONDOWN, 1, MakeLParam(pt2.X, pt2.Y));
  PostMessage(hGameWin, WM_LBUTTONUP, 1, MakeLParam(pt2.X, pt2.Y));
end;

{--------------读文件
//根据复盘文件读入相关数据
//文件前28H字节为文件头;接下来4个玩家信息(从开始下的一方始顺时针存储),每个58H
//字节(前14H为用户名,接下来1E字节为布局)
//再下来是执行指令,每10字节为一组(其中第3字节为起始行列,第4字节为目的行列——
//以先保存的玩家方位开始计算,10H*10H数组)
//棋盘布局文件数据 Char[30]
//执行指令 5F 开始的10字节,控制(程序)指令F5开始    在19Ch(412)字节后开始 结
//尾1Ch(28)字节是系统或保留的
--------------------------}
procedure ReadChessFile(sFileName: string);
var
  f: file;
  buf1,buf2,buf3,buf4: array[1..30] of Byte;
  bufOrder: array of array of Byte;
  i, fsize: integer;
begin
  try
    AssignFile(f, sFileName);
    Reset(f,1);
    fsize := FileSize(f);
    fsize := fsize - 412 - 28;
    countOrders := fsize div 10;
    if countOrders < 31 then
    begin
      MessageBox(0, \'步数小于指定步数,请重试!\', \'提示\', Mb_Ok);
      Exit;
    end;
    //读棋盘布局
    Seek(f,40+20+88*0);
    BlockRead(f, buf1, 30);
    if buf1[1] <> 0 then
    begin
      fid := 0;  //0-2位对战  左右位
      for i := 1 to 30 do bufchess1[i] := buf1[i];
      //读对方布阵 即左位
      Seek(f,40+20+88*2);
      BlockRead(f, buf3, 30);
      if buf3[1] <> 0 then
      begin
        for i := 1 to 30 do bufchess2[i] := buf3[i];
      end else
      begin
        MessageBox(0, \'复盘数据有误!\', \'提示\', mb_ok);
        exit;
      end;
    end else
    begin
      Seek(f,40+20+88*1);
      BlockRead(f, buf2, 30);
      if buf2[1] <> 0 then
      begin
        fid := 1; //1-3位对战  上下位
        for i := 1 to 30 do bufchess2[i] := buf2[i];
        //读对方布阵,即上位
        Seek(f,40+20+88*3);
        BlockRead(f, buf4, 30);
        if buf4[1] <> 0 then
        begin
          for i := 1 to 30 do bufchess1[i] := buf4[i];
        end else
        begin
          MessageBox(0, \'复盘数据有误!\', \'提示\', mb_ok);
          exit;
        end;
      end;
    end;


    //读指令
    SetLength(bufOrder, countOrders, 10);
    Seek(f, 412);
    for i := 0 to countOrders-1 do
    begin
      BlockRead(f, bufOrder[i, 0], 10);
    end;

    //从指令序数组中读出需要的,指令头,起始和目的行列
    SetLength(bufPos, countOrders, 6);
    for i := 0 to countOrders-1 do
    begin
      bufPos[i, 0] := i + 1;          //步数
      bufPos[i, 1] := bufOrder[i, 0]; //系统
      bufPos[i, 2] := bufOrder[i, 2]; //起始X
      bufPos[i, 3] := bufOrder[i, 3]; //起始y
      bufPos[i, 4] := bufOrder[i, 4]; //终点x
      bufPos[i, 5] := bufOrder[i, 5]; //终点y
    end;
  finally
    CloseFile(f);
  end;
end;

procedure InputChess(h: HWND; parr: Pointer);
var
  pid, dwRead: Cardinal;
  hProcess: THandle;
begin
  GetWindowThreadProcessId(h, @pid);
  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
  WriteProcessMemory(hProcess, Pointer(Integer(BaseAddrSetNum)+4), parr, 30, dwRead);
  CloseHandle(hProcess);
end;

function ConvertXY(hX, hY: Integer; t: Byte): TPoint;
begin
  //保存的复盘,棋子定位均是以紫方(上座-3位)为基准来定位的的
  //(从右往左0-16,从下往上0-16)
  //转到0位
  if t = 0 then
  begin
    Result.X := 16 - hY;
    Result.Y := hX;
  end else
  if t = 1 then
  begin
  //转到1位    //转到2位
    Result.X := hX;
    Result.Y := hY;
  end else
  if t = 2 then
  begin
    //转到2位
    Result.X := hY;
    Result.Y := 16 - hX;
  end else
  begin
  //转到3位
    Result.X := 16 - hX;
    Result.Y := 16 - hY;
  end;


 { // id 为坐位标识,留着待用
  //下面仅考虑任何两人复盘 转到2-4位(即上下位)下棋时的情况
  if fid = 0 then
  begin
    if id=0 then
    begin
      //1-3改坐2-4先后不易位时
      //1转到2 ;1转到4
      Result.X := 16 - hY;
      Result.Y := hX;
    end else
    begin
      Result.X := hY;
      Result.Y := 16 - hX;
    end;
  end else
  begin
    if id=0 then
    begin
      Result.X := 16 - hx;
      Result.Y := 16 - hY;
    end else
    begin
      Result.X := hX;
      Result.y := hY;
    end;
  end;  }
end;

function ToXYPos(pt: TPoint): TPoint;
begin
  Result.X := 200 + 39*pt.x;
  Result.Y := 70 + 39*pt.y;
end;

{点跳过,胜方不得分}
procedure ClickStep(hGamewin: HWND);
begin
  PostMessage(hGamewin, WM_LBUTTONDOWN, 1, MakeLParam(850, 585));
  PostMessage(hGamewin, WM_LBUTTONUP, 0, MakeLParam(850, 585));
end;

function GetNumber(hGameWin: HWND; const lpBase: Pointer; pBuf: PDWORD; bSize: Cardinal): Boolean;
var
  pid, dwRead: Cardinal;
  hProcess: THandle;
begin
  GetWindowThreadProcessId(hGameWin, @pid);
  hProcess := OpenProcess(PROCESS_VM_READ, False, pid);
  ReadProcessMemory(hProcess, lpBase, pBuf, bSize, dwRead);
  CloseHandle(hProcess);
  Result := (pBuf^ <> 0);
end;

function GetSpecificWnd(theWnd: HWND; sTip: string): HWND;
var
  h, hChild: HWND;
  buf: array[Byte] of Char;
begin
  Result := 0;
  h := GetWindow(theWnd, GW_HWNDFIRST);
  while h <> 0 do
  begin
    hChild := FindWindowEx(h, 0, \'Static\', nil);
    GetWindowText(hChild, buf, Length(buf));
    if Pos(sTip, buf) > 0 then
    begin
      Result := h;
      Exit;
    end;
    h := GetWindow(h, GW_HWNDNEXT);
  end;
end;

procedure SetXY(x, y: PByte; t: Byte);
var
  i : integer;
begin
  if t = 0 then
  begin
    i := x^;
    x^ := y^;
    y^ := 16 - i;
  end else
  begin
    i := x^;
    x^ := 16 - y^;
    y^ := i;
  end;
end;
{function GetChildWnd(theWnd: HWND; sTip: string): HWND;
var
  h, hChild: HWND;
  buf: array[Byte] of Char;
begin
  Result := 0;
  h := GetWindow(theWnd, GW_CHILD);
  while h <> 0 do
  begin
    hChild := FindWindowEx(h, 0, \'Static\', nil);
    GetWindowText(hChild, buf, Length(buf));
    if Pos(sTip, buf) > 0 then
    begin
      Result := h;
      Exit;
    end;
    h := GetWindow(h, GW_HWNDNEXT);
  end;
end;}

end.
 

//注册单元文件(只是为了功能完善,所以没用算法)

unit uRegister;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Registry;

type
TfrmRegister
= class(TForm)
bbtnOK: TBitBtn;
Label1: TLabel;
Label2: TLabel;
edtUser: TEdit;
edtPsw: TEdit;
procedure bbtnOKClick(Sender: TObject);
procedure edtPswKeyPress(Sender: TObject; var Key: Char);
procedure edtUserKeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

function Encrypt(const s: string): string;

var
frmRegister: TfrmRegister;

implementation

{$R *.dfm}

procedure TfrmRegister.bbtnOKClick(Sender: TObject);
var
reg: TRegistry;

begin
//如果不符合验证条件则退出
if (Length(Trim(edtUser.Text)) <> 8) or (Length(Trim(edtPsw.Text)) <> 16) then
begin
ModalResult :
= mrCancel;
end;

reg :
= TRegistry.Create;
try
reg.RootKey :
= HKEY_CURRENT_USER;
if Trim(edtPsw.Text) = Encrypt(Trim(edtUser.Text)) then
begin
if reg.OpenKey(\'\Software\ShiGuoSF\', True) then
begin
reg.WriteString(
\'user\', Trim(edtUser.Text));
reg.WriteString(
\'password\', Trim(edtPsw.Text));
ModalResult :
= mrOk;
end;
end;
finally
reg.CloseKey;
reg.Free;
end;
end;

procedure TfrmRegister.edtPswKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then bbtnOKClick(Self);
end;

procedure TfrmRegister.edtUserKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then bbtnOKClick(Self);
end;

procedure TfrmRegister.FormShow(Sender: TObject);
begin
edtUser.SetFocus;
end;

function Encrypt(const s: string): string;
var
i : Integer;
const ss = \'zjdygddg\';
begin
for i := 1 to Length(s) do
begin
Result :
= Result+ s[i] + ss[i];
end;
end;

end.

//帮助提示(用了一个默认窗口)

unit uHelp;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TfrmHelp
= class(TForm)
reHelp: TRichEdit;
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmHelp: TfrmHelp;

implementation

{$R *.dfm}

end.

//主窗体文件

object frmMain: TfrmMain
  Left = 433
  Top = 150
  BorderIcons = [biSystemMenu, biMinimize]
  BorderStyle = bsSingle
  Caption = \'QQ\'#22235#22269#20891#26071#21047#20998#22120\'1.1\'
  ClientHeight = 319
  ClientWidth = 450
  Color = clMoneyGreen
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = \'Tahoma\'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 3
    Top = 91
    Width = 124
    Height = 13
    Caption = #36873#25321#36194#20998#30340#29609#23478\'QQ\'#21495#65306
  end
  object sbSetDir: TSpeedButton
    Left = 323
    Top = 162
    Width = 23
    Height = 22
    Caption = #23548#20837
    Enabled = False
    Flat = True
    NumGlyphs = 2
    OnClick = sbSetDirClick
  end
  object Bevel1: TBevel
    Left = 1
    Top = 148
    Width = 348
    Height = 3
  end
  object Bevel2: TBevel
    Left = 1
    Top = 206
    Width = 347
    Height = 3
  end
  object Bevel3: TBevel
    Left = 3
    Top = 245
    Width = 343
    Height = 3
  end
  object Label2: TLabel
    Left = 4
    Top = 119
    Width = 124
    Height = 13
    Caption = #36873#25321#36755#20998#30340#29609#23478\'QQ\'#21495#65306
  end
  object Image1: TImage
    Left = 353
    Top = 40
    Width = 140
    Height = 211
    Picture.Data = {
      07544269746D6170A2660000424DA26600000000000032040000280000004600
      00005E010000010008000000000070620000120B0000120B0000FF000000FF00
      000000000000FFFFFF001C4B2F003A7C5600AAC6B6002C744C003C7455002358
      3C002A634500357B550034755200316D4D003B7E5A0041805E004C8768004B7E
      630046755C008AB39D003C6C5300538B6E0095B8A6002E765300448464003666
      4E00588E73005D92780064967D006B99830076A38D00AECABC00B2CABE00EAF2
      EE00E6EEEA00E2EAE600DEE6E2006D9F880080AA9600A5C3B5007CA69300739B
      8A0085AC9C0095BBAB008BAD9F0092B4A600586B63009BB3A900BED3CA00BACF
      C6008DB2A3009BBBAE00C6DAD20039735D00829D9300A7BDB500CBDBD5002D7C
      600092ACA300A3B4AE00478E7700A1BDB40093A6A000B5CBC400C2D4CE00DEEA
      E600DAE6E200D6E2DE00D2DEDA0095B5AB00ACC4BD0034856E005A776F00687E
      7800A5C3BB009AB6AE0023715D00B6C6C200C6D6D200BECECA006CA89B008BA2
      9D00B2C6C200BACECA006D8883001A675B00207A6B002B8B7C004296880074B4
      A90083BAB10084A29D00579F950072908C0093C5BF00BAD6D300ADC6C30098AA
      A8005D868200587B7800A1C7C400C0CAC9003AA59E009EB8B600BEDAD8009DAE
      AD00BECFCE005AAEAA0088A7A600B2C7C6001B898800A9CFCE0047BCBD006CF0
      F10078C2C2007799990023292900353D3D00A5BCBC00B9CFCF00B6CACA004D55
      5500B0C2C200BACACA00B6C6C600C6D6D600C2D2D200CEDBDB00DAE6E600D6E2
      E200D2DEDE00C7D2D200DAE2E200D6DEDE00D2DADA00E6EEEE00E2EAEA00DEE6
      E600EAEEEE00E6EAEA00DEE2E200DADEDE00D6DADA00D2D6D6005CC9D0008FA3
      A40014DAE9001B9FA8002CB0B9007F9FA200B8E6EA0091ACAE00A4B3B40019B7
      C9008ACDD400A1D2D70037CDE100B0D6DB00C9E4E80061D3E8007CD4E40098B0
      B40095D7E400ABBBBE00ACD8E300B1C2C600B6C6CA00BACACE00D6E6EA00AAB3
      B500B7C0C200B4BCBE00BADAE300D1DEE20082959C009FAFB500C1D2D800C6D2
      D600BECACE00CAD6DA00DAE6EA00CAD3D600BBC3C600C3CBCE008E949600E2E5
      E600C5DCE500A5B4BA00B0BDC20073858D007C8C930094A4AB00CAD9E000D0DF
      E600BECCD2006A7E88008B9BA300A2AAAE00CED6DA00999FA200DEE6EA00DAE2
      E600D6DEE200D2DADE00E6EEF200E2EAEE00EEF2F400C3D5DF00ABB6BC006175
      81009BA8B000B6C0C600516573005B6C7800C4CDD300BCC5CB003A5060004459
      68004B5F6E00D2DAE200CED6DE00CAD2DA00DAE2EA00D6DEE600DADEE200D6DA
      DE00D2D6DA00EAEEF200E6EAEE00E2E6EA00DEE2E600D2DAE600D6DEEA00CED2
      DA00DEE2EA00DADEE600D6DAE200D2D6DE00E2E6EE00D2D6E200DADEEA00D6DA
      E600F2F3F600C8CEE200CED2E100BAC1E400979ED800ACB2E100878CED00999E
      EA007074F1005A5CF500E6E6EE00E2E2EA00EEEEF200EAEAEE00E6E6EA000708
      3345150B12101852271C271C303B4965744324242427271A0E1202024A91916C
      0E131827285B5B9A6F9D9AA0C8F29E9A9D9DAFAEA2BEDAC9EBC9D9C8C8C9EBEB
      C4E7C4E7EA00170708330A0B12060F19191B2727262A2443432B282A2A24261A
      1B16080708919791450F0E1C11529F99A29A9AA0ABF19D9A9AA2AEA09EA2DAC9
      EBC9D9EAEAC9EBEBC4E7C4E7EA0012333333330612121013521B271A1923231B
      2B652B2B2B241C1B1A130A054A919791530806183B5226BA9D9D9AA2C8F29D9A
      9DCDAEA09EA2DAC9EBC9D9C8C8C9EBEBC4E7C4E7EA00084A3333330612061010
      13181813181B1B27243B494343241B18130E0515549197974A07080E281B1A95
      9A9D9ABEC8F299A0A0B1DB9B9BBEEBC9EBC9D9EAEAC9EBEBC4E7C4E7EA000708
      3333330A121206101010130E18271C2830302B2B2A1A19131816050537979791
      0907070D1A1C236A9A9AA0EAC8D9C0CDDAC4E7DBDAC9EBC9EBC9D9C8C8C9EBEB
      C4E7C4E7EA0007070B330A17121212060A100F0F191B26382A2A285923191813
      13050505156C91450C0507161A231C4E8E9DB8EAEAEDB3C4EBC4E7DBC4C9EBC9
      EBC9D9EAEAC9EBEBC4E7C4E7EA00170733333312061206121210100F1B601C4F
      2A5924261A181316050515050937450C090A0A16191C1B1A586DC8EAC8C9DBC4
      EBC4E7DBDAC9DAC9EBC9D9C8C8C9EBEBC4C4C4E7EA0007070B12121233333317
      120F100F522734382B28261B1813160505051515150909090C0C0D0D18231B19
      6A7AC8EAEAEBDBC4EBC4B3DBE7BEAABEDAEBC9EAEAC9EBEBE7C4C4E7EA000202
      080B173333331212101010135B2734592A591B1A0E16050505090909090D0C0D
      0D0C0C0D0E181A192343C8EAEAC9DBC4EBE7DBDBDBA2A0A2DAEBC9C8C8C9EBEB
      C4C4C4E7EA001707070817121717171212124647525B27344F59181916160505
      05050C0C0909090C0903090C0E1818191A26AFEAEAC9DBC4EBC4DBAEA2A09EA2
      DAEBC9EAEAC9DAEBE7C4C4E7EA000D067302081717171712122C464647525252
      5B341A0E0D090505051509091515051515090916161319181B2A2AEAEAC9DBC4
      EBE7DB9B9E9EA0CDDAEBC9C8C8C9DAEBC4C4C4E7EA0045101707071717177710
      2C2C2C4647474747525B270D0C150505150A150915150A05050A150D0D0E1918
      27301C44EAC9DBC4EBE7DBAEA09DA2C9EBEBC9EAEAC9DAEBE7C4C4E7EA001606
      0B0873081717102C2C2C2C4746474646471B1A0D030D0C0E130E160905050A0A
      05050B150D0E13131B262678C8C9E7C4EBCD9999A2A2CDC9EBEBC9C8C8C9DAEB
      C4C4C4E7EA000F0A0B17081717122C2C2C2C2C472C4746461A5B1B191B192323
      19181913090A1505050807080D160E1823232879C8D9DBEBDAA29E9EA2BEEBC9
      EBEBC9EAEAC9DAEBE7C4C4E7EA000D0B0B17171212100F2C2C2C2C2C462C4746
      1A461B1B272726241A181A19130F0B0B0702075564563A181C2A2A7CC8EADBDA
      C9AEA09E9BC9EBC9EBEBC9EAEAC9DAEBC4C4C4E7EA0012080B0B1712122C2C2C
      2C2C2C2C462C4652471B1A19271B26271A1A1A130E0F0A07020253979797561A
      1C3078EAC8D9DBDAEBDBAE9BCDC9EBC9EBEBC9EAEAC9DAEBE7C4C4C4EA000B08
      0A0B1712121010122C2C2C2C462C4647181A19181A27272719471A52130F0F08
      02026C979797561B262B4979BFA2999BDADAE7B3EBC9EBEBEBEBC9EAEAC9DAEB
      DAC4E0C4EA000537370B1217171077122C2C2C2C47474652195B1C1B27341C1C
      1C1B1A191852130F0853919797975626433044686D9E9D9EAAC4DBDBDAC9C9C9
      C9EBC9EAEAC9DAEBDAC4E0C4EA00536C450B0817171212172C2C2C2C2C474718
      4727341C1C2A241C2434275218180F0E12456C9797975A303B35C4EAB8A09D9D
      A2C4DBB3EBD9EBC9EBEBC9EAEAC9DAEBDAC4E0C4EA0054544A0B08171717122C
      2C2C2C2C2C475247522734342A382A2A26261C271A470F1010166C9197641B43
      353B6BC8D9AA9EA0CDC4DBDBDAD9C9C9EBC9C9EAEAC9DAEBDAC4E0C4EA005353
      530B17121717100F2C46462C464747525BBC1C59382B312B241C1B1B34270F10
      060F455464231C43313B447CC8D9AECDDAC4E7B3EBD9EBC9EBC9D9C8C8C9EBEB
      DAC4E0C4EA005353150B0B33121210612C2C462C46474752344F4F2A2D2B313B
      261C27271C272C1012100F161A2424434951B1C4C4D9E7C9C9C4E7DBEBD9C9C9
      EBC9D9EAC8C9EBC9EBC4E0C4EA0055540B0B0B3333104656602C474747475252
      344F5F2B492D493B312A2428241B0E10101046134E4E262B447CDDC8C8EAE7EB
      C9C4E7DBEBD9EBC9EBC9D9C8DDC9EBC9EBC4E0C4EA006C55373733333310C16E
      6460525247475B52343867393B3B313B48432A241C1A0E0E1318180F192326A1
      A36DA2B8DDEAE7C9C9DAE7DBEBEAC9C9EBC9D9EAC8C9EBC9EBDAE0C4EA009790
      6C55333333D29297975A52525B2C525B3438393BA1443B3B3B31302423130D0D
      131B1918121323BA6D9A9AA0DDEAC4D9C9DAE7DBEBEAC9C9EBC9D9C8DDC9EBEB
      C9EB84C4EA009790975545450F565A929A5A525BBC525B5B594339394435312B
      312B241C190D030D1327181346171A629E9090A0DDEAE7C9C9DAE7DBEBEAC9C9
      C9C9EAEAC8C9EBEBC9EBC9C4EA009791916C91556156565A694EBCB634343427
      4F38382A2B30282B142A261A16160D0C181B13191B5226F59A9090A2DDC8C4EA
      C9EBC4E7EBEAD9C9C9C9EAC8DDC9EBEBC9EBC9C4EA0091549797916C45615669
      69933434344F34342B381B261C231C28112A1C13160E13181B271A1A1A2449A2
      90909DB8E9EAE7C9C9EBC4E7EBEAC9D9C9C9EAEAC8C9EBC9C9EBC9C4EA004A54
      976C544545565A93714FB63C4F3C344FAD24271C231B1A1B231A131813131818
      1A27231C1C2465F3909AA0ABE9C8C4EAC9EBC4E7EBEAC9D9C9C9EAC8C8C9EBC9
      EBEBC9C4EA0007536C5307D755565A57714F344FBC3C1C3428432A241C1A1819
      0E160E0E0E1818131A1C1B262B2843AA9D9DBFC8E9EAC4C9C9DAC4E7EBEADFD9
      D9C9EAC8EAC9C9C9C9C9C9C4EA00076C6C54545555565A714FB64F3434341B1B
      1C2B43281C1B1313160C16160E1913131A271B1C2B2A49D9A2BFC9C8E9C8C4DA
      D9DACDDBC9EAC9EAC9C9EAC8C8C9EBC9EBEBC9E0EA004A6C6C5455976C56605B
      3434BC3434271A1B262B2B241A26190E0E0316160E1818131A231B262B2A43C8
      C8DDD9AABEBE9BAABE9B9E9BDAC8C9EAEAC9EAC8C8C9C9C9C9C9C9E0EA006C6C
      54545591975646472771594F2434271C2849432A261C180E18160C0D160E0E0E
      181B1A1C302843C8C8DD9C6F94AAA0A0AAA09EA0BEC8C9EAC9C9EAC8C8C9C9C9
      C9C9DFE0EA00976C545445556C164661696E59593C2A2626283830302A281B13
      0E160C030C0D0D060F1A191B1C2843EAC8C7DDB8E5AAA0A0A2A29E99DAC8C9EA
      C9C9EAEAEFC9EBEAD9C9DF84EA00546C4A55545533104760979A6A4F2A591B23
      302B2B494330241C0E0C0C030306120B101A19231C2328C8C8E99CAAAA9B9BAA
      BECD9BAEEBC8C9EAC9C9C8C8C8C9C9D9D9C9DF84EA0007535454373312104692
      90901C594F1B1B1C28243031432B11281A0E0F030A0A0B0B12181A2323231C78
      C8DDA29E9E99DAC8D9C9C4E7EBC8EAEAC9C9EAEADDEBC9EAEAD9DFC9EA000802
      53544A33100F465697972727342628282828433131494328261B18160A0A120B
      120F19231B1B1C43E99C9E9D9DA2DAC8EAEBC4E7EBC8EAEAEAC9C8C8DEC9C9EA
      D9D9DFC9EA0009080B6C0B10100F46565A69344F2A3828592428302A43292B2A
      261B1813060A0D06121013521A181C31DDAA9E9D9DA2DAC8EAC9C4C4EBC8EAEA
      EAC9EAC8DDC9C9EAEAEADFC9EA00151545370B100F0F613A5A6A5F382D2D2A28
      282A2A2A49313126241B18181616130D0610131B19181C35C09CA09DA0AAEBC8
      EAC9C4E7C9C8C8EAEAC9C8C8C8C9C9C8EAEADFC9EA0016030C0C0D060F463A60
      5A345F382D2D492B302B2A142B313028265B18461813181612100F195219283B
      B3BFB8A2AAABB5C4EAC9E0C4EBEAC8C8EAC9EAC8C8EAEBC8EAEADFC9EA000D0E
      0D0D0D030F0F3A5A60523467592B2D30492B492A2431282A261B19181B19180F
      100F4619191A2849DEDCDDABE6C8EBC8C8C9E0E7C9C8EAC8EAC9C8DEC8EAC9C8
      EAC883C9EA00160E0D160D0C0F333A6957594F6767382B492B30302B2A35282A
      281B0E191B180E0D0F0F0F1A1B1A2431E9C7C7DEC7DEC9C8EAC9E0E7C9C8EAC8
      EAC9EAC8C8EAC9EAC8EA83C9EA00160D03030D13186064976957593839672D3B
      432B2B2B493B2B1128261918190E0F0F0F0F0E1B1B232430B1E4C7DEC7DEEBEA
      C8C9EBE7C9C8EAC8EAC9C8E9C8EAC9C8EAC883C9EA00160C090C16181A5A9A9A
      6E694E2867393B65314331253B2A2A11281C130E0E03030C0E0E161A1C1C283B
      44DDC7DEDCDEC9C8C8C9EBC4C9C8EAC8EADFEAC8C8EAC9EAC8EA83C9EA00130C
      0D16130E165A9090909A6957599635963B493B44491C1C1C30261C19090A0D03
      0E130D1826262B3135C8C7DEE4DEEBABB8CDDAC4DFC8C8EAEAEAC8E9C8EAC9C8
      EAC8C8DFEA0018090C1809053755979090908E574335A1353B443D4425282331
      112424230C16130C0E1616181C26582343C9C8E9E4DEC9B89E9EAAC4C9C8C8C8
      C8EAC8C8C8EAC9C8EAC8C8DFEA00180A020609080755909090908E583B787878
      445E5050351126432B1C2826130E190E0E0D161923696E692B7CE4E9E4E9C9AA
      9D9D99B1D9DEC8EAC8EAC8E9DEEADFC8C8DEC8DFEA000C090808050C15549790
      909770583B743551503B48443B3B2550312A2A28231318160E160E1A5A9A906E
      57447BE9C7E9D9A29D9D9ECDDFDEC8C8C8EAC8DEDEEADFC8EAC8C8DFEA000D0C
      0A0B090C0C459797906457625E3B3B683D3B252531251E0429313143261B1C0E
      160C45195A8E9A6E285068E9E4E9C9AA9E9D98CDEADEC8EAC8EAC8E9C8EAEAC8
      C8C8DEDFEA00160A05080A030C3A9297923A2770584448442B35253B31445148
      3B443B1428241C1A134564645A58704E24501EB1E4E9C9B8A09EA0CDDFDEDEC8
      C8EAC8E9C8C8EADEC8C8DEDFEA000D05080705030E136492561061978E29443B
      4325442531442525253D432B2A591C19133A64645A11112324253B50E4E9EAAB
      B8A2CDDAC9E9C8C8C8EAC8E9C8EAC8E9DEDEDE83EA000305070708030D0E183A
      180F6C9A9A3011303B443B313B442544503E252A3824270F0F163A561A244328
      303549314DC7DFDEC8EAC9EBC9E9E9C8EAEAC8E9DEEAC8DEDEDEDE83EA000C07
      0202081516160D16131391976E1A191A2A3B2B2A313B251E3E684B312B241B12
      100F161B24242B303031314481C7EAE9DEEAC9E0DFE9DEDEC8C8C8E9DEEAC8E9
      E9E9DEC8EA00090702074A5555450C0D0F3A91975A2313131C2611243B503D3D
      813E51442D27270613100E27282A30302A3B3DC7E4C7EAE9DEEAC9EBDFE9E9DE
      C8EAC8E9DEEAC8E9E9E9DEC8EA00090702539197979109030E1691921B1A1818
      1C262824354850513E3D764B2D261C160F0F1A23262A2A2A2B253150E4C7EAE9
      DEC8C9EBDFE9DEDEC8C8DEE9DEEAC8E9E9E9DEC8EA0009070254909090910C0C
      063364561B1319231C1C1C232A3125504D2F3D3B28342319161A696E4E302630
      43482B2BE4C7EAE9DEEAC9EBDFE9E9DEEAC8DEE9DEEAC8E9E9C7DEC8EA000908
      5391979097560C0F0C10130E18181B24261B231A28293B1E2F503149341B1B1A
      0D5A90906E572A2B43252B2A68C7EAE9DEC8C9EBEAC7DEDEC8C8DEC7DEC8C8E9
      E9E982C8EA0009055397979097450C180F2C173345181C1C231A1C1C2B314844
      48312A27271913130D4E9A909A70302A433B2A2B7CC7C8C7DEEADFC9EAC7E9DE
      DEC8DEC7E9C8C8E9E9C7DEC8EA000315536C9197910D0D130F46176C643A1A18
      0E181B263B25041D3531381B1B13130E0E3A6E909A70302831252B7BE8C7EAC7
      E9C8DFEBEAC7E9DEDEC8DEC7E9DEC8E9E9E982C8EA00091537546C9145161616
      120F91919716133A3A5618262A1E504B443538341B1A180E13135A6E575C2A2A
      25503B76E4E4C8E9E9C8DFC9DFC7E9E9DEC8DEC7E9C8C8E9E9C7E9C8EA000909
      0D0C453A1616160E12619791910E0E5692921A231C48443B312D4F34191A1A13
      131A1B234E3B28294B7B6881E4C7DEE9E9C8DFC9DFC7E9E9DEC8DEC7E9DEC8E9
      C7E9C7C8EA0009160C0D160E0E0D13190F919797530D18929792231C2A5C582A
      2A24342734271913131B231C2344144BE4E3C6E4E8E4DEE9E9C8DFC9DFC7E9E9
      DEC8E9C7E9DEDEC7E9C7E9DEEA000D16160D0C0D0E130E131A97979717185A9A
      9792191C2598983B3934343434341B181B1C1B111CAA946DC7E8C6E4E8E4DEC7
      DEC8DFC9EAC7E9E9DEC8DEE9C7DEDEE9C7C7C7DEEA000E0C160E09150E180E18
      4E97929223195697975A1826506D6D4B1E5F342A34341C191C261C245A6F6F94
      A6E3C6E4E8E4DEC7DEDEDFC9EAC7C7C7DEDEDEE9C7DEDEE9C7C7C7DEEA001609
      160E0A050E0E0C1B5797975A1C1A3A926E4E282B512E4C68B4444F343C2A1B1B
      1C303B25706F906F9CC6C6E4C6E4DEC7E9DEEAC9EAC7E9E9C7DEDEC7C7DEE9E9
      C7E4C7DEEA000E030D0D09150D0D0D1A1C9269283019136469263B502F4C363E
      634B393C4F3C1B1C2A242911576F6FA09CE3C6E4C6E4DEC7E9DEEAC9EAC7C7E9
      C7E9DEE9C7DEE9C7C7E4C7DEEA000D0C0D0A0A030C03161818232624241A1923
      2328504444665D68634B35394F383424241C2A113062A0B8B2C6E3E4C6E4DEE9
      C7DEC8C9EAE4C7E9C7DEE9C7C7DEE9E4C7E4C7DEEA000D03100B0B0A0C0E1A18
      18131C262423231C2328443148989E9B684B3538382D2A261C26262829427CB1
      87C6E3E4E8E8DEE9C7DEEADFEAE4E4E9C7DEE9C7E9DEE9C7C7E4C7DEEA000E0A
      060808080A0F1A1913132326241C242A1C28293048989E9B7D814B2D382D4326
      1B232326303D3EC487C6E3E4C6E4C7E4C7DEC8DFC8E4C7E9C7DEE9C7C7DEE9C7
      E4E4C7DEEA0013060B080808080B101618191C1C4E1C262B262A2A3B25626D80
      807D63352D2A2D3026231B2A2A4B3EC887E3E3E4C6E4E9C7E9E9EADFC8E4E4C7
      C7DEE9E9C7DEE9C7E4E4C7C7EA000D060B070807020805375656236969281C24
      26142B1D4D3D51808042B34D2D2A492428261C3149444D84B7E3E3E8C6E4E9E9
      C7C7C8DFC8E4C7E4C7DEE9C7C7E9C7C7E4E4E4C7EA00090B0707070202025397
      90646497921C2326312B25793E2F688380807D4C35282B28241C303B393C68C4
      87E3E3E8C6E4C7E4C7E9C8DFC8E4E4E4C7E9C7C7C7E9E9E4E8E4E4C7EA00030A
      0202020202026C9090979797921B2B143B3B482F513D3E7D7DB14C2F3B282A30
      2627302D5F474DC484E3E3E8C6E4C7E9E4C7C8DFC8E4E4E4C7E9E9E4E9E9C7E4
      E4E4E4C7EA00090A0702020707076C9790649797641A2B3131253B2F8151817D
      36364D44312811302426242A3452A76883E3E3FBC6E4C7C7E4E9DEDFC8E4E4E4
      E4E9C7E4C7C7C7E4E4E4E4C7EA0009150A07020808539197915692973A133130
      29045E2F364D4CC436362E353124302A1B1A1C24523CA98183E3E3C6C6E4E4E9
      E4C7DEDFC8E4C7E4E4C7E9E4C7E9C7E4E4E8E4C7EA00090C0D030A0A0B549191
      0C569264192314303B3D3D502F4C847D4283682F3D2543142426261C523979B3
      E3E3E3FBE8E4E4E9E4C7DEDFDEE4E4E4E4E4C7E4C7C7E4E4E4E8E4C7EA00030C
      16090A090A4A540707559264262A3131313D512F7936B336837F4C3E681E4825
      492B2434274B2F81B7E3E3C6C6C6E4E9E4E4DEDFDEE4E4E4E4C7C7E4C7E9E4E4
      E4E8E4C7EA00160D160C15090D060802079197971C1129253B1E5151443E4C7B
      428280B14C4D253B31432A38383D4B36E3E3E3E3E3E8E4C7E4E4DEDFDEE4E4E4
      E4E4C7E4E4C7E4E4E4E4E4C7EA0013160D09090316030B02539797971B30302B
      25445C623D5D995D3E80423636683B31142B2B353B353D7DE3E3E3E3FBC6E4E4
      E4E4DEDFDEE4E4E4E4E4E4E8E4C7E4E8E4E4E4C7EA000F3A45450C0C160D0A07
      6C9797972324313148708E9E5C989E997C42807DB33E25492949313544441E36
      E3E3E3E3E8C6E4E4E4E4DEDFDEC6E4E4E4E4C7E4E4C7E4E4E4E8E4C7EA000E55
      5655090D0C0D09076C97909126283125629A908E8E9999664C364184364C3E2F
      3131253D4C4D1E84E3E3E3E3C6C6E4E4E4E4E9DFDEC6E4E8E4E4C7E8E4C7E4E8
      E4E8E4C7EA00606491550909090315085490906E6E573144989A9A9A5C62687D
      7B36807D364C682F1D25444D3E362F3EE3E3E3E3E3E3E4E4E4E4DEEADEC6E4C6
      E4E4C7E4E4E4E4E4E4E8E4E4EA004592916C150505091508539792929A8E3B3B
      9D9A9A8E4462626D364C367D4C4C4C2F50501E3D3E4C427F86E3E3E3E3E3E4E4
      E4E4E4EADEC6E4E8C6E4E4E8E4E4E4E8E4E8E4E4EA0033919791370B0A0A1507
      05456497977044299D9A9A9875989D99683E4D7D7D364C681D501D3E80E389E3
      E386E3E3E3E3E4E4E4E4C7EADEC6E4E8C6E4E4E4E4E4E4E4E4C6E4E4EA001692
      979153080A0909080D166E9A9A5C51318E9A9A486D989E994D3E4D68427D364C
      3D043B1EB32289E38686E3E3E3E3B7E4E4E4E4EADEC6E4FBC6E4E4E8E4E4E8E8
      E4C6E4E4EA00569797974A080B0A030E181897979A31683D98A098445E6D6D5D
      36363E36364CB14C4D483B1E7DCB8989E3E386E3E3E3E4E4E4E4C7DEDEC6E4E8
      C6E4E4C6E8E4C6E8E8C6E4E4EA003A9797921608080A0C0E1A1A9A9A70252F51
      48753D1D2F3E3D2FB14C367D4C4C36B151303B3B3E8389E38689E3E3E3E3C6E4
      E4E4C7DEDEC6E4FBC6E4E4E8C6E4E8C6E8C6E4E4EA003A64925613030705150D
      23196E9A5C484D2E3E362F2F3E4D3D442F2E4D4C7D363E3E4D1E143B7D3E42E3
      89E386E3E3E3E8E4E4B7E4DEDEE3E4E8C6E4E4E8C6E4C6E8E8C6E8E4EA001919
      45130E0C0505150C1B1C585C251E2F3E3E423D442E3E4D502E362F4C7D2E3D2F
      2E502950854C3689E38689E3E3E3E3E4E4C6E4DEDEE387E3C6E4E4E8C6E4E8C6
      C6C6E8E4EA0013160D0E130C051505091A23313D1E3D2F3E4C361D1E3E2E3E5D
      6D5D3D1D442F4D254444314487847DFE8986E2E3E3E3E3E4E4E8E4DEDEE3B7E3
      E3E4E4FBC6E4E3E8E8E8C6E4EA0019130D0E1309050509150E26253D3D3D3680
      4C414D25514C7B6D9E991E443B2F3D481D3D441E41863EFA898989E3E3E3E3E4
      E4C6E4DE82E3E8E3E3E4E4E8C6E4E8C6C6C6C6E4EA001A190C160E0915050505
      1623442E3E3E80417D417D2F3D5D9BA09E993D443B3E6804503D4D3E83417D89
      89FEE286E3E3E3E4E4E3E4DE82E3C6E3E387E4FBC6E4E3E8FBE8C6E4EA001319
      160C160C0905050905131E3D2F3641807D80803E2F629E9D98752F04313B2504
      442F513641418387FE89E286E3E3E3E4B7E3E4DEC7E3E8E3FBC6E4C6C6E8C6C6
      C6E3C6E4EA0018180E030D090505050505231D3D2E4C8041427D427D3666989D
      99511E1E3B3B2B3B1E3E3E7D7F2236428989FA86E3E3E3E4E4E3E4DEC7E3E3E3
      E3C6E4E3E8E8E3E3E8FBC6E4EA00180E16090C05080805050D1A3B1D2F3E4280
      41424266A2999B98753E1E44313D4C4D51687D7D7E837D368989E286E3E3E3E4
      E4E3E4DEE4E3E3E3E3C6E4E3E3C6FBC6C6E3C6E8EA00130E030A090707070505
      0E0D1C253D4C7D82828083999E9E9976251E367D1E418283364C4C427D808380
      E289E289E3E3E3E4E4E3E4DEE4E3E3E3E3C6E4E3E3E8E3E3FBE3E8C6EA001813
      0308080207546C543A132328043D3641877F4166A09E9951443E83427E7E4083
      7F7D4C7D414242368989E2E2E3E3E3E4B7E3E8DEE4E3E3E3E3E887E3E3E3E3E3
      E3E3C6C6EA0019180F07020253979797551A26243144367D7F4042325D9B6B7C
      4C4CE33641827FC7877D7D3680364C428989E2E2E3E3E3E4B7E3B7E9E4E3E3E3
      E3E3B7E3E3E3E3E3E3E3E8C6EA001A190E1707026C97979755161C31251D669B
      A2AA682F3D1E1E1E2F864282E3877D7F834C3E4C7D3636368989E2E2E3E3E3E4
      B7E3B7C7E4E3E3E3E3E3E4E3E3E3E3E3E3E3E8C6EA001B18130F075391919797
      551529253D3E669E9D9E9B2E3E363D143E7D80E286867E8342362E3E3E7D7F83
      E289E2E2E3E3E3E4E3E3E4E4E4E3E3E3E3E3C6E3E3E3E3E3C6E3FBC6EA001B13
      0F0E0B4A6C979797371C31252F32B8A09D9E9B7D42363B3D8041868588868783
      42832F3E3E3682868989E2E2E3E3E387E3E3B7E4E4E3E3E3E3FBC6E3E3E3E3E3
      E3E3E8E8EA001A13100F0F376C9197562324313B3D3E7D9BA0A0B8417D4425E3
      E1E18888E18886C88287C42E7D42E3E28989E2FA89E3E3B7E3E3FBE4E4E3E3E3
      E3E3C6E3E3E3E3E3E3E3C6C6EA00191306170B3337536C3A1B113131442E8080
      9C9C80424C1D3D4CE1E1E188E1E1E1E286868680828285E2E289E2E286E3E3E3
      B7E3E3E4E4E3E3E3E3FBE3E3E3E3E3E3E3E3E3C6EA001813120808080B050913
      1C2629251E3E7D824122838332363E1E42E1E1E1E1E1E1FD88FD88E1858988FD
      8989E2E286E3E3E3E3E3E3E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3FBC6EA00160D
      0D0B0708080537561C2630253D4C4241414183422E4C322EE1E1E1E1E1E1E1E1
      E1FD88E1E18888E28589E2E286FEE3E3E3E3E3E4E4E3E3E3E3E3E3E3E3E3E3E3
      E3E3E3C6EA000C030D0C080705080518191B2431985D42427D4142423E4C7D80
      FCE1E1E1E1E1E1E1E1FD88E1E1FD88FDE288E2E289E3E3E3E3E3E3E4E4E3E3FA
      E3E3E3E386E3E3E3E3E3FBC6EA0009150D0D0508050502101A1A5A979A983636
      36827F41327D4282E1E1E1E1E1E1E1E1E1E188E1E188FD85E285E2E2FAE3E3E3
      E3E3E3E4E4E3E386E3E3E3E386E3E3E3E3E3E3C6EA0009090C03150505080802
      1819929090702E3636404082424242427DFCE1E1E1FCE1E1E1FDE1E1E1888888
      E288E2E2FA89E3E3E3E3E3E4FB86E3FA86E3E3E386E386E3E3E3E3C6EA000C09
      030C090A05080508153A979090702F7D428287414180414187E1E1E1FCE1FCE1
      E188E1E1E188FDE2E285E2E28989E3E3E386E3E4E486E3E386E3E3E3CBE386E3
      E3E3E3E3EA00160C0D03090905090515155490909230043E4222827F41428340
      FCFCFCE1E1E1E1E1E1E1E1FCE18888888588E2E2FA89E3E3E386E3E4FB86E3FA
      86E3E3FACBE386E3E3E3E3E3EA000D0D0D0D0C0D090C0309055497906424303E
      418241828241428287FCE1FCE1CCFCE1E1E1E1E1E188FDFDE2FD85E2E289E3E3
      E386E387FB89FEE386E3E3E3CBE386E3E3E3E3E3EA00090C0C0D0909030D0C15
      054A97921924242F364232427D7D3687FCCCFCE1E1E1CCE1E1E1E1FCE1E18888
      888888E2E2E2E3E3E389E3B7B7E2E3EC89E3E386E2FACBE3E3E3E3E3EA000909
      05150505150C0315050537451323303D324C3E32663242E2CCCCFCE1CCCCFCE1
      E1E1E1E1E18888FDFDFD88E2E2FA86E3E389E3B7E3FA89E389E3E3E3E2E3E2E3
      E3E3E3E3EA000A0915050A05150909090905150C163A291D99625D9BA0998086
      CCFCCCE1CCFCCCFCE1E1E1FCE1E18888888888E2E289FAE3E386E3B7E3E386FA
      86E3E386E2E3CBE3E3E3E3E3EA00090A05090A0505090E19191316134592585C
      9E7099999DA07F8288FCCCFCCCFCCCFCE1E1E1CCE188888888FD8888E2FA89E3
      E389E3E3E3FA86FA89E3E3E3E286FA86E3E3E3E3EA000A05050B0B0A03182323
      2324281C11572599989899999EA28087CCFCCCFCCCFCCCFCE1E1E1CCE1E18888
      85E3E3E2E28989FEE389E3E3E389E38989E3E386E2E3E286E3E3E3E3EA000305
      08080B0F191B1C231131142929585C5C5C6D66759B5D4242FCCCE1CCFCFCCCFC
      FCE1E1CCE1888888B7878786E2FA89E3E389E3E3E3FA89E2FAE3E389E2E2FA86
      E3E3E3E3EA000A0B08080B0E181B241114313B29708E8E5C312E4C3E42367D42
      228686CCFCCCCCFCFCE1FCCCFCE188FD878787E4E2E289E3E3FA89E3E389FA89
      FA86E3E2E2FAE286E3E3E3E3EA000A0A080A100F1A1C11241131315C8E9D9D70
      142E363E42424242418786FCCCCCCCCCFCE1FCCCFCE18888B787C687E2FA8986
      E389FAE3E3E289E2E286E3E2E2E2FA86E386E3E3EA000C0D0F1813461A27262A
      1431315C8E9D8E98142F363682427D7D3E7D86CCFCCCFCCCFCE1CCCCFCE18885
      87B787C6E2E2FA89E38989E3E3E289E2FA89E3E2E2E2E2E2E386E3E3EA000D19
      18180E46181B2A3814140462989D9E6D3B0436414142367D2E4C4C86CCCCCCCC
      FCE1FCCCFCE1888687C68786E289FA89E3E289E3E3E2E2FAE286E3E2E2E2FAE2
      E386E3E3EA000D191313131A1A34282A141D1D5D6D996D3D041D364141427D40
      2E2F3E42FCCCCCFCFCFCCCCCFCE1888687E3E4E2E2E28989E3E289E3E3E2E2E2
      E289E3E2E2E2E2E2E386E3E3EA00161A131A471C3427342814043E322E3D3D3E
      2F2F3E42424236412E3236FCCCCCCCCCCCFCFCFCCCE1FC8687E387E2E2E2E289
      E3E2E2E3E3E2E2E2E2FA86E2E2E2E2E2E386E3E3EA001A1A181A1A1B341C2624
      142E2E3E322F2E323E1E2F3E3E4232364C1E2FCCCCCCCCFCFCFCCCCCCCE1E186
      87B787E2E2E289FA86E2E2E3E3E2E2E2FA89E3E2E2E2E2E2E3E2E3E3EA001C1A
      1A0E131B11142A311E2E1E2E3E4C36362E253E3E2E323E42413641CCCCCCCCCC
      CCCCFCFCCCFC888787B78688E2E2898986E2E2FEE3E2E2E2E2E286E2E2E2E2E2
      E3E2E3E3EA0023261A130E23241114252E2F3D3E323636363D1D322E2F324142
      8588CCCCCCCCCCCCFCFCCCCCCCFCE287E3C68688FDE289FA89E2E2E3E3E2E2E2
      FA89E3E2E2E2E2E2E3E2E3E3EA00232619160E182630311D3D3D2F3642424236
      2E3D626D2E2E42364221CCCCCCCCCCCCCCCCCCCCCCFCE287E387E2E188E2E2E2
      89E2E2FEE3E2E2E2E2E286E2E2E2E2E2E3E2E3E3EA00232619160D0E1A111429
      62251D2E423236362F5C9E9E9B423E2E4221F0CCCCCCCCCCFCFCCCCCCCFC86E3
      87E3E2E188E2E2FA89E2E2E386E2E2E2E2E2FAE2E2E2E2E286E2E3E3EA001A1C
      1A16160E0E2358708E7029251D252F2E3D5C9D9DA04140868888CCF0CCF0CCCC
      CCCCCCCCCCE187B7E386E1E188E289E289E2E2FE89E2E2E2E2E289E2E2E2E2E2
      E3E2E3E3EA002324231A1A180E18578E908E57281114112F32999D9DA0AB4086
      F0CCCCCCCCCCCCCCFCFCCCCCCC88E3B7E3E3E1E188E289E289E2E2FA89E2E2E2
      E2FA89E2E2E2E2E286E2E3E3EA001C261B1A1A19561A566E906E231C24113004
      419B9E9DA09C822141F0CCF0CCF0CCCCCCCCCCCCCCE2E3E38789E1E188E289E2
      89E289FA89E2E2E2E2E289E2E2E2E2E2E3E2E3E3EA001C261B19195A6464563A
      5623191C11311D322E5DA09EA0AB7F2140F0CCCCCCF0F0CCFCFCCCCCCC86E3E3
      8788E1E188E289E289E2E2FA89E2E2E2E2FA89E2E2E2E2E286E286E3EA001C26
      1A13181A64643A161313191C11312F2F2E3EAAAA9C7E822285F0F0CCF0CCCCCC
      CCCCCCCCE186E3E386E1E1E188E2E2E289E2E28989E2E2E2E2E2E2E2E2E2E2E2
      FAE2E3E3EA001C261A0F1319563A0E0D130E1B3026312F2E3D2E4240416B4476
      7FF0F0CCF0F0CCCCFCFCCCCC88E3E38789E188E288E2E2E289E2E2E289E2E2E2
      E2E2E2E2E2E2E2E289E286E3EA001C1C1A10100E0E0E0D0E19131911141D3E36
      3E42822251A36B447DF0F0F0CCCCCCCCE1CCCCCCE286E3E389FD86E7DEE2E2E2
      89E2E28989E2E2E2E2E2E2E285E2E2E2FAE286E3EA00231C18060F0D0C0D160E
      13191C31251E2F2E3E42407FA15E76767CCCF0F0F0CCCCCCFCCCCCFC8686C686
      8280C4B5D5DFE2E2E2FDE289E2E2E2E2E2E2E2E285E2E2E289FA86E3EA001B1C
      130D0F0D090D16160E242B251E2F324242324C3274747876A5F0F0F0CCCCCCCC
      FCCCCC858686E3858283B3B3B4D1E4E2E2E2E289E2E2FDE2E2E2E2E285E2E2E2
      E2E286E3EA001B1B0E0D0E1655643A181C1431253D3E2F2F42322E2E7448446B
      A5CCF0F0CCCCCCCCFCCCCC85E28686E28283C8C8B3B0B0E4E2FDE289E2E2E2FD
      E2E2E2E285E2E2E2E2FA86E3EA001A1A160D0E5597906E4E11141D1E2E2E322E
      3242417648746B6B5188F0F0CCCCCCFCCCCCCC88E2E4888680C8C8C883C4B581
      E4E2E2E2E2FDE2E2E2E2E2E288E2E2E2E2E289E3EA0019190E0D0E5697909057
      2B3B1E1E1E042F2E3D3E42783B74766B5186F0F0F0CCCCCCFCCCCCCC8686FC84
      B3C8C8C88384B3C4C482E2E2E2E2E2FDE2E2E2E288E2E2E2E2E289E3EA001A19
      0E16133A64909A5714293D3D2F251D2F1E3D3674446B76744C3FE1F0CCCCCCCC
      CCCCCCCC8688E1C9807FC88383C9C4C4C4B382E2E2FDE2E2E2E2E2E288E2E2E2
      E2E289E3EA001818160E18185A6969581431253D043D1D2E2F2F7D4944765E49
      3E2188F0CCCCCCCCFCCCCCCC85CC887F83DE808083C9C980C4C4B3C8E2E2E2FD
      E2E2E2E288E2E2E2E2E2E2E3EA001918130E191A234E24111431142F14043E3D
      3E1E36433B5E7443418688CCF0CCCCCCCCCCCCE1FCCC888383C8808383C984C9
      C984C481E4FDE2E2E2E2E2E288E2E2E2E2E28986EA001818131313181C231A24
      3131312E251D1D1E2F3E2F49745E3B49872188F0CCCCF0CCFCCCCCE2E2CCFCE3
      838083C880C9C9C9C9C9C9B183E2E2FDE2E2E2E288E2E2E2E2E2FA86EA000F13
      13130E131A1923585C5C252E2E3D1E3D2F363D747848745E3F8620F0CCCCF0F0
      CCCCCCE286CCCCFC89B7B7E2B7C98483C9C9C9C482E2E2E2E2E2E2E288E2E2E2
      E2E2E286EA00100F0E0D0C0C1313648E9A70292536362E1E3E3225745048747C
      3F2188F0CCF0F0CCCCCCCCE2E2FCCCFCE3C782B7E2E3C9C9C9C9C9C9E3888888
      E2E2E2E288E2E2E2E2E2FA86EA00030F0E031603031A579A908E57112E413E2F
      32326548445E74364086CCF0CCF0F0CCCCCCCCFD85CCE28588FDE4C7B7E2B7C9
      84C9C47DE3E2FD88E2E2E2E288E2E2E2E2E2E286EA00060D0F0C190E1624588E
      9A9E57313642404236427478445E7840218686CCCCF0F0CCCCCCCC8588E1C8B3
      B5B5DFC78289E2B7C4C9C4B1B788FD88E2E2E2E288E2E2E2E2E2FA86EA00100D
      0E131A1318112957985C112532413F873F7D786B5E6B76211F88202088CCF0CC
      CCCCE18588887FC4B5B584DEEBDEE2FD82B3B3C4FA88FD88E2FDE2E288E2E2E2
      E2E2E286EA000F0D160E1A1A2614313B1D322E3E2E42223F3F686B767A767D1F
      CC8585858689CCCCCCCCFD85888882B0D48083C8E4C4DFE2E2E483B7E288FD88
      FDE2E2E288E2E2E2E2E2FA86EA000F0D0D1324261125041D042F363E2E424122
      3F787668A56B86F0CC8888E12121CCFCCCCC85E288E2C8B4D4848383C8E3E0DE
      E288FA89E288FD88E2E2FDE288FDE2E2E2E2E287EA000E0D132328141425042F
      2F2E41413236424122787951686BCCF0CCCC1F888640CCCCCCE1E285E1FC83D1
      B0C4C9808083E3DEC9E28889E2E188FDFDE2E2E288E2E2E2E2E2DE76EA000E13
      192311143131392F2F2E36363E3641874276A568A5B3F0F0F0CC1F208687FCCC
      CCE18588E1CCB7D1D5C4C9C9C9C983E2DFE4E2E2FDE2E2E2E2E2FAE2FDFDE2E2
      86C9A479EA000E0E191C241431312D39322E323636364286795168687621F0F0
      F0F0CC8622827ECCCCE18888E189B3B46381B38483C9C4DE89C789E4D4D1D1BA
      BABABABABABABAA1D0C2D0CEEA0013191A0E241425353947683E2E2E42323622
      4451C0687AE1F0F0F0F0CC85212287CCCCE1E1888587D4B0B5D4B5B3C9C984C4
      8389E2E2E2FAFD88E2E2FDE2FDE2E3C0A3C9FA89EA001919231311243504395B
      A14D4D4C422F42365E7668B0AFCCF0F0F0F0CC88868787E1E1E1E188E2E384E7
      81B5B0D5B5B1C9808483E2E2E2FDFD88FDE2E2E28887C079C8E2E289EA001C19
      18132414351EB63C4450442E361D2E3B5076687687F0F0CCCCF0CCE185224088
      E1E1E1888889E0B3D4B5A4BAB4D48483C9C987FDE288FD88E2E2FDE2E3A579E4
      E2E2FA89EA0011261323241114354F353D7449041D29312A6B51A5A31FF0F0E3
      82CCCC8885408285E1E1E188E1E4E7B3B3B0D1BAD1B0C484C9C983E2E288E188
      FDE2E2E3C0B0E4E2E2E2E289EA00242413232624282A34254B3B2A3131283043
      5E766BAF8988FCB3BAD4E32021414085FCE1888888C9B3C9DFB0BAD1D1D5D4D4
      84808389E288FD88E2E2E37CB087E2E2E2E2FA89EA0024240E1A191A26272631
      3B2B2A31042926495078744279A381B4ADC2B9E387368788E1E18888E1DFB3E4
      DFD4D5B4D1B5B58184C9C982E2E1FDFDE289C07CE3E2E2E2E2E2E289EA00231A
      181819191C1B2A43316A59313D43284944446BB7AF68A18FBDC2BC8122428285
      FCE18888CCDFE7DEE0D4B0D5B3C4C9C9B3C4DEC48988E18886AFD4E388E2E2E2
      E2E2FA89EA00231A1A191A23275930654328593B1D261C493B3B80827C79BA79
      7AC2BBBC4C7D4185E1E18588E1C9E7C484DFE7B3B381DEE3B7E4E0B3FDDE88E2
      C4AFE388E2E2E2E2E2E2E289EA001C23191A231C1A26283028237143281C2A2B
      493B2184687AC07C68785FC2AC3D4188E1E1E28888C9DE82DEC481C9E0D4D5B5
      E488E7DFE2B3FD80C486E2E2E2E2E2E2E289FA89EA0026261A1A232424231C24
      1C601A30242B2B43493E874C4D79B06868A57874BC59B58588E1E288FDE08382
      828283C9C9C9C4D5B589E386E3B37DC989E2FDE2E2E2E2E2E2E2E289EA001C24
      1C1B242826271C2493601C494343433149412265B979686868687A742B43A1B3
      88E185E189C4C4C484C9C88283C98482C9C9FDB7DED5C9E2E2E2E288E2E2E2E2
      E2E2FA89EA002411282330281C712328715B716A3B3B3B652E4121C27A79B0B0
      4DA57A74B97A76ADAF85888886C4C48484B3C4C88383C9C987E3E2E3C9B0FA88
      E2FDE288E2E2E2E2E2E2E289EA001D31111C243071272793715B716A44445E44
      42403696B0686879797976B07AB9A1A3ADD485E1FCE4E0C980C4C484C980C9C9
      E488FDE2E4C4FDFD88E2E288E2E2E2E2E2E2FA89EA002511292826281C714E71
      71605B9F4450A14240224C7AB0B06878767676B0B0B07A78A3ADB585CCDEDBE0
      84C4C484C484C8C6E2E288E2FEC8E188E2FDE288E2E2E2E2E2E2E289EA001424
      11142B28271C71715B605B49447451213F217C7A51B076BA76797979B06879A3
      BAA367AFE2C9B38484848484C4C9E3E188FD88E2E4DEFD88FDE2FDE2E2E2E2E2
      E2E2FA89EA00112824113B6A1A61525A606071659F6A42213F21794479797A50
      796868B076A47979A37A78AD82C9B3B3C4C484808384C9E388FD88E2DEC7E188
      E2E2E2FDE2E2E2E2E2E2E289EA00261C1C111D2A1860605B606071656A746820
      8588823EA1A1785050A36868B0B0797979A47A78B3EBB3B3B3B3C484C9C984C8
      E2FD88E2C4E4FD88E2FDE2E2E2E2E2E2E2E2FA89EA001C261125042660606060
      606071439576A1211F1F2021838481837D7DA37968B07979A4A4A478C4DFB3B3
      8181B3B3C4847DDEE288FDE2B3B7E188FDE2E288E2E2E2E2E2E2E289EA002811
      141425261A5B60606060936AA176448720882020B581C4B3422285B0797979A4
      79767A7A8AC9B3B381B581C484C4B17FE389FDE2B3E3FD88E2E2FDE2E2E2E2E2
      E2E2FA89EA0031241129311C525B6060607193437651783F20888587C4B5B5B5
      63DECC89B0A4797979A478B1E3C9B381D4B0B5C4C9C4C480C9C980E4B389FD88
      E2E2E2FDE2E2E2E2E2E2E289EA00312411312B1C1B5B60606093443B79765E21
      2282408D8285DE81D181E1E1E37AA47979BA787989C9D4B5D5B4B0B3B1B3C4C9
      8484C482DBE2FD88E2FDE2E2E2E2E2E2E2E2E2E2EA00142811293026521B603A
      609378747651782041765F71C267A1C484AFDEE18882A1A4A4A1A1A3E1DFD4D4
      B4BAB4B0B0B0D4AFD4AFC8E4E7888888E2E2E2E2E2E2E2E2E2E2E2E2EA00111B
      23142B1C1A1A61606171496A78796B2041763B8FBCBB8FB9BAB5E48988857D78
      A3A19676CCE4D4B5D5D1D1D1D1D5D5B581DFE4C9EB88FD88E2E2FDE2E2E2E2E2
      E2E2E2E2EA00113011253149275B60606171749595766B20426B5F59595F7478
      C4B4CEDEFD8886B5B974AD84CCB7B5B4BABAA9D1D1D1D1D1D5C4DED4E0E18888
      FDE2E2E2E2E2E2E2E2E2E2E2EA001425251D1D3B34276060619365436A6BA320
      427AAC5B8F35A1787AE4D4A7D4E288E3C9A5AFB7E1C9D5CEADADADB9A8BABABA
      D1B0B3B4E088FD88E2E2FDE2E2E2E2E2E2E2E2E2EA00250404041D5059346060
      6071656A93505E2168505952C2AD4479A4A489C8B9D58885E287C786FCDEB3BA
      D0D0BDD0C3BAD1D1D1D5D4CEEBE18888E2E2E2E2E2E2E2E2E2E2E2E2EA000425
      2525253D4F596060617149956A4444414274ACBBAC67B9A4A57979E2DEBAD4FE
      85E2B7E28887C8B3B3D5CED0C2BDCED1B4C4DFBADF8888E2E2E2FDE2E289E2E2
      E2E2E2E2EA001E042525042F4F595260609343955965437D223DACC1BC6778BA
      7AD579B0868AD1D5E285E4E28683B5D5D4C4C4D4BAD0BDC3CEE0FAB5DEE188FD
      E2E2E2E2E289E2E2E2E2E2E2EA002F1D043E32513C59526060936A6A71436540
      2122BCC1BCBDA1BABA78A4A47C8982D1C488E285E3C4D5BABA7AB0AFB3B0BAAD
      D0D4FADFE4FD88E2E2E2FDE2E289FAFAE2E2E2E2EA002E1E2E3E3E2F4F595B60
      6093285959493B4042A15B5BBC8FAD96A1A37A767A7C86DED48788C7D0C2C2C2
      C2BD8FBDBD8FC2ACACBCC2C2C2BDD0C3B9CECEB9B996ADADC3B9B9B4EA002E3E
      2E3E32504F595B6060717128593B7441356ACFBBBCC2BDD0B94B79A4A3A37C86
      E4B7E1DFC2C1C1D3D3D3D3D3D3D3D3CFCFC1CFC1BBBBBBBBC1C1C1BBC1BBC1BB
      C1BBBBACEA002E2E2E3636503C595B606026936A6A3B654D747160BCACC2ACC2
      D0B9A4797A78BAB586E388E286B3D5A8BAA1BACEA1A1CEBAD5B584DEFAFDFDE2
      FDFDE2E2E2FA89E2E2E2FA89EA001D2F3E36365038595B606093593059434976
      3B52C1BCBBBCACBCACC2ADBA797A7AD1768988E389E0D1BABABABAD1BAB9B9D1
      C4FBE3DF89E188E2E2E2E2E2FA89FA89E2E2E289EA001D1E364236443C285261
      61276A6A9343313649BBCFCFC1BCBCBBC1BBBDA1A47979797A80E27EE4B0B9CE
      BABABACED1B4B5C8E2FDE3E4E28888E2E2E2E2E2E286FA89E2E2FA89EA001D31
      324132353C6A5261615B26955949314265CFD2D3BBBCBBC1CFBBC2AD7AA47979
      797ACB82C7B3CEC3AD96B9B4C4E289E2E2FDE2E2E2FD88E2E2E2E2E2FA86FA89
      E2E2E289EA00312E36363E35384F520F616093386A7444C4C2CFD8C1BCBBC1C1
      C1BBACD078CE7A79A5788782C78883B0B0D483E3E3B7FD8888E2E2E2E2E188E2
      E2E2E2E2FA86EC89E2E3C8C4EA003B2E362E3D2D2D4F6061611A59956A4950B5
      C1D8CFD0ADBCCFCFC1BBAC67D0D0CE797976B1C77F8889E486898987E3B786E2
      E4DEC8DF84E7DBB3D4D481D4D4D4B5D1A1A178A4EA00252F2F252F382A4F6061
      615B6A956A6579B3C1D8BCD1BDACC2BBBBC1ACBDBDADB97979A4A57F8089E3B7
      B7E386E480E489E2B7DEDEDEC8DFE0C4C4E7C4E7D4A3B9AD74C0C8E4EA006D2E
      2F1D1E3859346161615B95436A4332DEBBD2D0BABCACC2ACACC2CECED0B9A179
      7678BAB37FE389E3B7E482C880C4E48888E2E2E2E28888E2E2E3C87CA479AFC7
      E3E2E289EA00323E2E1D3D3C24596161615B95956A74E2DEBBD8BCC2C5D0C2C2
      ACD0B4D1E084A1A196B3BD81E48786E3B7DE84B384C484E288FDE2E2E2FDFD86
      C9C0A5D4C9E4E386E2E2FA86EA0032323D1D2F4F4F4F6161605B95956A50CCB5
      C1CFD3BCD0B4B4CEC3CEADA9C6C982C8C4AFACC9C6D1D489E483B3D4B0B3C487
      FDE2E2E2E2E380AF7CC487E289E3FEE3E2E2E286EA0042362F043D38384F6061
      615B439F9F79CCBAC1D08FC2D0BDACBAB5D1B9ACC2D0C9E289A9C2E3E2BDCE85
      E483DBB3B5AFC4C9E2E2E282B1C4C9C7E3E2E2E289E3E386E2E2FA86EA002236
      32323E38388F5261615B9FB96576FCBACFD0ADA3797AA196D0D181D5D0BBBC82
      89B3D5FD88BDBAB7E3DE84E0C8C8E0B3B7B7E3C9C88688E2E2E2E2E289E3FEE3
      E2E2FA86EA004241413F36392D3C5B46615B656565A4CCCED3ACBC8FA17AB068
      68A378A3B0B5C2D0E4B7B785E4BDD1E38682C8D4D1DFE4EBDEEB8986E288E2E2
      E2E2E2E286E3E386E2E2FA86EA00422286228196674F59D2615BADB965A4CCBD
      D3C1BBBCAC96D1B0686868B07AD5C4B4D1E2C7B3EBBDD58786E382C9B3B5E489
      C9C9E289E288E2E2E2E2E2E2E3E3FEE3E2E2FAE3EA00402288214B39394F5961
      465B9F6565A4E1C2D3D3C1BBACC2ADA3A5B068B06876B0E3D4C7E2B3B4BDB082
      E4E38783C483E3FAAFE0E289E2E2E2E2E2E2E2E2E3E3E3E3E2E2E2E3EA004242
      21223596674FC261D271656565A4E196ACC1BCACC2BDADB9A3B0B06868B07886
      89E288E3DBBDAFC7C787C7C8C4C7E2FDEA83E289E2FDE2E2E2E2E2E2E3E3FEE3
      E2E289E3EA00364122223535673C596146719F6574A5E288B9CFBBACBDADB9A1
      BA7879B0D576B0EC86E28588E4ADE0C782878783C6E3898582E4E289E2E2E2E2
      E289E2E2E3E3E3E3E2E2E2E3EA003E21224096966767AC614671659FB97C89E3
      BCCFC1BBAC5F96A1A1BABA78B380E3E2E2E2E28886BAC8C78287E3B1B3838282
      DBC9C7C7C7E487C7C7C7C7C78282C7E4C6E3E480EA00411F8622CE3567673461
      465B9F65747BB7B1BBD3C1ACC2D0B9A1BAA1A1C8E1FCE1E188E2E288C9B487B7
      E382C782B1D9C8C8AF7DC9C9C9C98080C9C9C9C9C9DAC97DAFC0A374EA00CCFC
      E341CEA16796716146719F9FB97D83D5CFD2D3C1C2ADA1BAA3A4A4787D88E1E1
      FD8588FDB3B5E2E2E28782E3C7E3E2E2DFE487E4C6C6C7C883C8C8C8C4D4A4BA
      A1BA76D4EA00F0FC89DF39CE5F96BC6046719F9F74C8D4C4CFD2D3C1C2ADB978
      A3A4D579A479FDE188E18889B0B5FD8885E3C0D4C882DEC6DE89E2FAE2E2E2FA
      89E3C7B37AA376AFC97FC7C7EA00F088898A5FA15F6734614671959FB982B5C4
      C1D2D3C1ACD0ADCEA17A76A54D6BB7E1E1E1E1C6CEB38888FD7BA3A37CDE82B7
      E4E2E28989FDE289C8C0A3A4AFC8B7E386E2E3E3EA00F089898B67965F5FBC60
      4671959F65E4D5E7BBD2D2C1BC8FD0AD67A17A79797A87E1E185E2E4BDE088FD
      8876A4A4A383E3E3B7E2E2FA89E2C7C07879C4C6E3E3E3E386E286E3EA00F089
      898CCE8F96BD5B614671959F6582B5D4C1D2D2BBBCC2BD9FB9A178787879E2E1
      88E285FB8FDEFD88867976A4A3C9E4E4B7E2E28987B3A4A5DA87E2E2E3E3E3E3
      E3E2E3E3EA00F088898DCE3CA18F526146719F6565EAB5B5BBD3CFBBBCACC2D0
      B9BAA378BAB0B1807FC7C6E3C2E388E2C8A4A5A4B0DE82C8E389E2DE76A3C9C6
      86E3FA89E3E3E3E386E2E3E3EA00F0FD898DA84FA4C25246619365659FDFE0D1
      BBCFD8C1BCBCACD0B9A1A3D1BA7AA47AA3787CE3C28988887DA4A57AB1E4E3E4
      FB86C97A79C7E289FA86E289E3E3E3E3E3E2E3E3EA00F0898A8DA85F6734C146
      466A65AD9FC9DFD1BBD2D7D2C1BCBC8F9FB974A1BAA37AA37AA478E98F89E285
      B3A468A380E4E386E47C78AFE4E2E289E3E3E2FAE3E3E3E386E2E3E3EA00F086
      878DB4674F5B4746616A65659583E2D4BCD8D8D3D3C1BCC2BD8FBDADB9CEA1CE
      BA787CC7ADE2E2E2AFA4A5A382E3E3B7C0A3C4E389E2E286FE86E289E3E3E3E3
      E3E2E3E3EA00CC89E38DB55F4FBB6046616AAD6595DECCE4ACD8D3BBCFCFBBBC
      BCBCACC2BDBDBDBDADAF82D4CE88E2897CA4A5A382E3C7B076C8E2E3FAE2E289
      E3E3E2E3E3E3E3E3E3E2E3E3EA0088B7B7B3635F4F5BCF46619565659583E1E3
      ADD2D2C1C1BBBBC1C1BBBCACACBDADBAD483DAA1D588E2877979A4C087E4A5A4
      8289898986E2E286E386E286E3FBE3E3E3E2E3E3EA00888484B4A85F4F5B4746
      6195AD659FB1CCFBB3D2D8D3C1C1BBBCBCC1C1BCBCBCBCD0B0B3B5BDB588E280
      78A5A4B1B7A5A5C789FAFAE3E3E2E289E3E3FAE3E3E3E3E3E3E2E3E3EA00B7A8
      B4A7A85F4F5B6146619565659FC0FCE4D0D7D6D8D3CFC1C1BBBCBBC1C1BBBCAC
      BDD5BABCB3E185C9A3A5A4B1C0A5E4E2FA8989FE86E2E2E3E3E3E286E3E4E3E3
      E386E3E3EA008BB4A9A7A8675F5B6146479565659FA3FCDFCFD6D6D6D8D8D2D3
      CFC1BBBBBBC1BBBC8FBDD0C1E7E188AF76A57676C087FAE289FA86E3E3E2E2FE
      E3E3FAE3E3E4E3E3E386E3E3EA0022B5CEA9B4395FBB6146609FAD659F74CC86
      D0BCACD7D6D6D6D7D2D2C1C1BBBCBCBCC2D0ACD3DFE1E26BA5A4747C87FA89E2
      E3FA86FEE3E2E2E3E3E3E2E3E3E4E3E3E386E3E3EA00B78A81B4A8CE5F5BCF46
      609F65659F9FE1DEDBD4CEADC2BBD2D7D7D6D6D3BBBBBCC2A1D5C2D3C78887A4
      A574A1E3E289FAE2E386E3E3E3E2E2E3E3E386E3E3E4E3E3E386FBE3EA00B782
      63B581B4675B4746609565659F9FB374C2ACACBAB3E0D4D0C1D7D6D6D7D3C1BC
      D1E7BAC1E388B176BA74C8FDE2FA8989E389E3E3E3E2E2E3E3E386E3E3E4FBE3
      E3E3E3E3EA00B78B4B63B56367524746C19FAD659F95A178BDBCBCBBACC296D1
      B0BAD0C1D8D7D7CFD1C8B1C285887674A16BE2858989E389E3EC86E3E389E2E3
      E3E386E3E3E4C6E3E386FBE3EA008B8DB4A9B5B567525246529565659F6A74BA
      C1D3CFBBBBACC2D0B9BA74ADBDBBD7D3B9D484CE88E478A1A4B188E2FA86FE86
      E3FE86E3E3E3E2E3E3E3E3E3E3E4E8E3E3E3E3C6EA008D63A8A78181395BBB61
      5B6AAD659F9565ADCFCFC1CFBBBC8F8FADA3BAB98FD0C2C1CFD0C8D5E1B1BA76
      A38288FADE86E389E3E386E3E3E3E2E3E3E3E3E3E3E4B7E8E3E3FBC6EA008DB4
      A8B48B81C35B52615B6A9F656595A195C1C1C1CFC1BBBBBCC28FC28FB9C2BDA5
      BDBCB0B385A576A4A57F87EAB9B0E3E3E3FEE3E3E3E3E2E3E3E3E3E3E3E4B7C6
      E3E3E3C6EA0081A8A88488B567BC52615B959F9F9F95A4BAC1CFC1C1C1C1C1C1
      CFBBBCBBACAC71BDACBCBAE082A379A37CB0A3CEC2BCB4E3E3E3E3E3E3E3E2E3
      E3E3E3E3C6E4B7E8E3E3E3B7EA00B4A9C38385635F5BBB615B6A9F9F936AA3EA
      C2C1C1CFC1CFC1C1C1C1BCBCACC1ACBCACD0D5D4C0A5A4A484687AADADACBCEB
      E3E3E3E3E3E3E2E3E3E3E3E3B7E4E487E3E3C6B7EA00A9A7B683B7633C525B61
      5B959F95939374DEC2BBBCBCBBBBBBBBC1BBBCC1BBACACBDA4C0A4B0A3C0A47C
      C979D1797AADC2C2C4E3E3E3E3E3E2E3E3E3E3E3B7E4E4B7E3E3E887EA00A9C3
      348489B58F525B475B6A9F9593939FB0CFCFC1BCBCBCBCBCBBBCBBBCACD1A4C0
      7BDAB9D4C0C0A487C47879A4A46BBABDADC4E3E3E3E3E2E3E3E3E3E3B7E4E8E4
      E3E3E8E4EA00675FB684FC8D8F52BB605B6A959F939393B9D2D2D3CFBBC1C1CF
      D3BBADCEEAE4B1C07CC8DB8480A5B385A1AD79797A7AA3B9A1A1D4E3E3E3E3E3
      E3E3E3E3E4E4E487C6E3C6E4EA00B65BBC83CCFD5F5B5B475B59959F939371B0
      ACD2D2D2D8D2D8C18FB4E2E1E27EAFA5C4C7B1C8C8A5C686BA7879A4A3D17AA1
      B9A1ADD4E3E386E3FBE3E3E3E4E4E8E4C6E3C6E4EA00BCBB348BFC883C5BBC47
      5B93959F939371C0C9BA8FBBBCACB9D4E988E1E188C7A5C0C8C87C82C9C9FD87
      79A479A3A37AA37A7ABAA1ADB0C6E3E3C6E3E3E3E4E4E4E4E8E3C6E4EA005BBB
      C582E1FD8FBC71525B93959F6A93937488FD8CB5B4B581DF88FDE1E188C7C0C9
      C7B380C7B386E2877A7AA4A3A37A7AA3A3A3BAA1ADC486E3E4E3E3E3E4E4E4E4
      C6E3C6E4EA00BC52678A88893C3434475B716A9595939393E388B4A7C5B6B6C5
      A7A98CE185C8C4C7C6C97FC7C0C888867D7AA3A37AA3A37AA37A7AA374B0E3E3
      B7E3E3E387E4E4E4C6E3C6E4EA0034BB39B788B7674FAC52527193959F939371
      E4FDB5C3C5B6B6B6B6C5C5A8E2C8C786E2C7C7C87CC4E2E2E2DFE7DBC8B1A3A3
      A3D1A3A3A1AFE3E887E3E3E3E4E4E4E4C6E3E8E4EA00AC3CA78A8822AD8F5952
      5271939F9F939371AFFD63B6C5C5B6B6B6B6C5C5B4DFE3E2E3C7E3C77CC9E2E2
      E284B5B5D4DE83A378A3A3BAA3C8E3C6E4E3E3E3E4E4E4E4E8E3E4E4EA00B563
      A98AFD22968F4F525271719F9F6A93939F89FD63C5BBB6C5B6BCB6B6A7B4E3E3
      DFC6CBC77CC9E2DEC8B7E4D4D5B3E4C9BAA3A3A178C8E3C6E4C6E3C6E4E4E4E4
      E4E3E4E4EA00898BB3B785B7CE5F8F525234716A959F939371C7FDFD8CC5BBBC
      B6B6B6BC472CA9B7C5A786C4DB80877A9FC2C2BAD5B0DEE8B3A1BAB974C9E3B7
      E4E8E3C6E4C7E4E4E4E3E4E4EA00FC888288FD86A967BD5B5B719393659F9393
      71C0E2FDFD63BBB6BCB6B6B62C72D363BCBBB6B6DB7FE476B9C2C2B9D1CEB5E4
      E4D4B9ADA1C7E3C6E4C6FBC6E4E4E4E4E4E3E4E4EA00FCFC888888864B965F5B
      5B715993659595939395E3FDFE8AB6B6B6C5B6B6777277D37747C5A88287E4B0
      AC8FBA78A3D4CEB4C7E4DBD5C4E4E3B7E4E8E3C6E4E4E4E4E4E3E4E4EA00FCFC
      FCFCE28681965FAC4F7159936A959F939371B1E2FDFEBC47B6BCB6B673722C77
      7377C5A982C6E4B0AC8FA1BABA7AC9CED5E4E3E9DEE4E387E487E3E8E4C7E4E4
      E4E3E4E4EA00E1E188FCE28583A7674F5F34936A93659F959371B987FEFEC5BB
      BCB6B6527372BB737373D3C382E38681ACC2B9A1A1BAA480B4D1FBC6DEE4E3E4
      E4E4E3C6E4C7E4E4E4C6E4E4EA00E188E188FD88E396965F9F4F349559956A9F
      939395C986FE8CC3C5C5B677722C637373722CD182E3E2C8C2C2ADA1B9BAA1D5
      DED581E4E4E4E8E4E4E4E8E8E4C7E4E4E8C6E4E4EA00E188E188E18889A7A767
      5F8F71496A93959F95937178E489B7B5A8C3D37372BCB3737373732CDFE3E4D4
      ADD0ADD0B9A3BAA1D5C8D4EAAFBDBBBBC1C1C1C1C1C1C1C1C1C1C1C1EA00E1E1
      E1E1E1888863A7398F5F6A7495939F959F9371ADD9E3E2FDFEC5737373A79673
      73727277C387C8D5B9CEAD8FD0A1BAA17479C8DEE4C7E9E4E4E4E4E4E4C7E4E4
      E4C6E4C7EA008888E1E188E1888296398F4F9F749F596A9F9F959393A3E4E2E2
      FA477373BCB3C37373727377A8C7C8B0A1CEB98FAC8FB9BABABAA4E4E4E4E4E4
      E4E4E8E4E4E9E4E4E4E8E4C7EA00E188E1E188FD8889D5675F595965656A9565
      959F6A71A1C9E2E2FEBC772CB481BC737372722CC9C6DEB5BACEB9C2C1BBBDBA
      A3A378B3E4E4C6E4E4E4E4E4E4E9E4C7E4E8E4C7EA00888888888888888941A1
      8FAC5965956A749F9F9F957174A4E3E2E28AA7B583B5D373737377D5C7E384D5
      BACED0ACC1BBC2B9A1A3787AE4E4C6E4E4E4E8E4E4E9C7C7E4E8C7C7EA00E188
      E1888888FD8682B1789665496A95A3A1B9959F936578C8E2E2FAFA86C981B673
      7377CEC9C7E4D4D1D1D1C2BBC1C1ACBDBDBAA3A3DFE4C6E4E4E4E4E4E4DEE4E9
      C7E8E4C7EA00FD8888888888FD86827D7C7A749F6A957A7C6595956A65A3A586
      E2E2E2C6C4B5967777C5C9C9C7E4D5D0D1ADACACBBBCC28FBDBAA3BAD4E9C6E4
      E4E4E8E4E4DEC7E4C7C6E9C7EA008888FDE1FD8888FE8280B37978656A9F76AF
      D4AF74C0DABABAC7FAE2E2E4D463BA96A1AFDA7DC7E3B9BBD0C2C2ACBCBDCEBA
      BAB9A1B0CEDEC6E4C7E4E4E4E4C7E9C7C7E4E9C7EA00FD88888888FD8589E4C8
      B16878659574B1DE87E3E487B7C078C889FAE28779BA968F95A3C0D4C9C8BCCF
      C1C2B9D0BDD0D0B0B3B1B3CEADE9D5E4C7E4E4E4E4C7E9E9C7E4E9C7EA0088FD
      88888888E289B7C7807C7A74655082E389E3E3E3E3C7D4C7E3E389E3B4968F5B
      5295A174AFB3BBBDBDADBD8FB9CEBDBCACB3E4ADD1DED0E4E9E4E4E4C7E9C7E9
      C7E4E9C7EA00FD8888FDFD88E2E2E3877FB17978A17987FA86E3E3E3B7E3C6E3
      E286E2E3D167C26061AC9F9FC0B5CFAC8FA1A3BAA1CEBACEACC2EAC4EAC9D0E4
      C7E4E4E4C7DEC7E9C7E4E9C7EA0088FDFD85E288E2E2E3E3E4C9C06B6B7CE4EC
      86E3E3E387E3E2E2E3E3E282BA67C26046939F9FC0D1D3CFC1ACADA3A3BAA1A1
      D5BABAC7DBD5D0E4E9E4E4E4C7DEC7E9C7E4E9E9EA00FD858588E2E28989E286
      8780AF7979B3E486E3E3E3E3E4E3E2E2E3ECE383CE67C26061719F9FA5A1CFCF
      BBBCC2ADA1A3A3BAA1AFC9DEEBBAD0C7C7E4E4E4C7DEC7DEC7E4E9E9EA0085E2
      FDE285E2E2E289E2E3C8B3C07CB1C7E3E3E3E3E3E4E3FAE2E3FAE3C4965F8F60
      D2719F9FC0C4BDC1BCC2BDADB9A178BA74D4E4E4E4D4B9C7E9C7E4E4C7DEC7DE
      C7E4E9E9EA00FDE28585E2E2E2E289E28682C47CAF7DC7E3E3E3E3E3E4E3FA86
      E3E386C4675F8F6046939F9FD4E4C2D3C1ACBDADADB9CEA4D4C8E4E4C7E7D1C7
      E9E9E4C7C7DEC7DEE9E4E9E9EA00E2E285E2E2E2E2E289E289E4C9B3B1C9E4E3
      E3E3E3E3E4E3FA86E3E3E3B3965FBD4761AC9F9FAFAFBBD2BBACBD96B9ADA1C4
      DEDEE4E4E9D4B0C7DEE4C7E4C7DEC7DEE9E4DEDEEA00E2E2E2E2E2E2E2E289E2
      89C6C87DC9C887E3E3E3FBE3E4E486E3E3C6C8B4675FBD60617195ADAFB5C1D2
      D3ACADB974BA74BA81DEE4E4E9B4D5C7DEE9C7E9C7DEE9DEE9C7DEDEEA00E2E2
      E2E2E2E2898989E289E382C8C7E4E3E3E3E3E3C6E4B7FAE3E3E4DED15F5F8F52
      61719565AFB0BBD8D3BCBD9FB9A1BAA1A3DEE4E4DEB9B5C7DEE9C7E4C7DEE9DE
      DEC7E9DEEA00E2E2E2E2E2E2898989E2ECE38787E3C6E3E3E3E3E3B7E4B7ECE3
      E3C7C8B43CBD4F52617195ADAFD5BCD8CFBBC2BD95ADA174A3DEE4E4EABDB3E9
      DEE9C7E9C7DEE9E9DEC7DEDEEA00E2E2E2E2E2E289FA89FECBE3C6E3E3E3E3E3
      E3E3FBB7E4E4E3E3E3E483D58F67AC614693959FAFB4BBD2CFBCACC2ADB9B9AD
      D1C4C8E9E9D0C4E9DEE9E4E9C7DEE9DEDEC7E9DEEA00E2E2E2E2E289E289E3E2
      E3E3E3FA86FBE3E3E3E8C6E481C4E3E3E3E484D53CB9AC4661939F9FB3D1BCD2
      D3BBBCC2D074B9B974BABAA3DBD0C9E9DEE9C7E9C7DEDEDEDEC7DEDEEA00E289
      E2E2E2E2898986E2E2E3E3CBE3E3E3E3E3B7E884A7B5E4E3E382C4D55F8F5B46
      61939F9FC4B5BBD7D8CFBBACBDD0ADADB9B9A1B9B0D0DFE9DEE9C7E9C7E9DEDE
      DEC7E9DEEA00E289E2E2E28989E3E3E2E2E3E389E3E3E3E3E3B7E463CEB3C8C7
      E8DEC9B596AC5246616A9F95C9EAACD7D3CFCFBBACACC28FBDBDD0D1D4B9C8DE
      DEE9E9C7E9DEDEC8DEC7DEDEEA008989E2E2FA89E386E3E3CBE3E3ECE3E3E3E3
      E3E8E4B4CEC4DFC9E4C8C46367AC524661959F95C9E4ADD8D3C1C1C1C1C1BCAC
      C2BDBAB3BACEDEDEDEE9C7E9E9E9DEC8DEC7DEC8EA00FAE28989E2898986E3E3
      CBE3E3E3E3E8E3E3E3E4E4B4A8C9C9C8C7D4B4CE6734C14661BD9F95DBE4BAD7
      D8CFC1BBBBC1C1BBBBACCED5BDB9E9DEDEDEE9E9E9DEDEC8DEC7C8C8EA008989
      8689E386E3E3E3FA86E3E3E3E3E8E3FBC6E8E4A8D5C484E4DEB49696674F5246
      47959F95B0DEBCD6D6D8D2D3CFC1C1C1C1BBACADBCCEE9DEDEDEE9E9E9DEE9C8
      DEE9DEC8EA00FA8689CB8686E3E3E38686E3E3E3E3E4C6FBC6E4E481A9B4C9E4
      DE6396CE96C2C14660959F95A3E4BDBBD3D6D6D6D8D2CFBBBBBBACC2CFCEDEDE
      E9DEE9E9E9DEDEDEC8C7C8C8EA0086E3CB86E386E3E3E3E3E3E3E3E3E3E4C6E8
      C6E4E4B3A7A884C9C9C4B4BACE5F524660959F95A1DBBA96D0ADACCFD7D6D6D3
      C1BCB9BAC1BAE9DEDEDEE9E9E9E9DEC8C8E9DEC8EA00E386E386E386E3E3E3EC
      E3E3E3E3E3E4C6B7B7E4E48496CEB581C4C4A9A8A8BD5261C1959F959F74C2BB
      ACBDB9A1D0BBD3D6D7D3CEEAC2D5DEDEC8E9E9DEE9DEDEC8C8E9C8C8EA0086E3
      8686E3E3E3E3E3E3E3E3E3E3E3E4E4C6E4E4E4DE81CEB481B381A1CEB45F5261
      526A9F9595B9BCD3C1C1BC8FB9A19FACD3D7BDEAD1D4DEC8C8E9E9DEE9E9DEEA
      C8DEC8C8EA00E3E386E386E3E3E3E3E3E3E3E3E3E3E8E4E4E4E4E4C7C9A7D181
      D4B4A7CEB55F5247526A9F95959FC1CFCFC1BCACBDADD0BDBDACBBCED4B3C8DE
      C8E9DEDEE9DEDEC8C8DEC8C8EA00E3E386E386E3E3E3C6E3E3E3E3E3E3E4E4E4
      E4E4E4E9C9A7B4B381A9CEB5AF5F5B615B6A9F9595B9C1CFCFCFC1C1C1BBBBC2
      ACADD0BDB0EBC8C8C8DEE9DEE9E9DEEAC8DEEAC8EA00E3E386E3E3E3E3E387E3
      E3C6C6E3E3E4E8E4E4E4E4E984A7B5D4A8CE67E0D48FBB615B6A959395D4C2CF
      C1CFCFCFCFC1BBBBBBACC2CED5E0C8DEC8DEDEDEE9DEDEEAC8DEC8C8EA00E3E3
      E3E3E3E3E3E3B7E3E3E3E8E8E3E4E4E4E4E4E4DEC9CEA7C39696B6C4B54F52C1
      5295959393B0ACC1BBBBBBC1C1C1C1C1C2B9B3E7D1EBC8C8C8DEE9DEDEE9C8C8
      EADEEAC8EA00E3E3E3E3E3E3C6C6B7E3E3E8C6E3C6E4E4E4E4E4E4DEDEC8CE5B
      C25F34C4E7C25260526A959371B9CFD2CFBBBBC1D3BBACB9E7DFC8E7D4DFC8EA
      C8DEDEDEE9DEC8EAEADEC8C8EA00E3E3E3E3E3E3C6C687E3E3E3E8E8C6E4E4E4
      E4E4E4DEDEE4B4BCBCBCBCC4E45F52C15B6A9593719FBCD8D2D8D2D3BCBAC4DF
      C8C8C8DEDEDFC8EAC8DEE9C8DEDEC8EAEAC8EAC8EA00E3E3C6E3E3E3B7B787E3
      E3E8C6E8E3C7E4E4E4E4C7DEC8C7C95FBC52AC84E95F5B52526A9593719FE7BA
      BDC2D0D5EBEAEAEAC8EAC8DEC8DFC8EAC8C8DEC8E9DEC8EAEAC8EAC8EA00E3E3
      C6E3C6C6B7C687E3E3E4E8E8C6E9E4E4C7C7E9DEC8E9E4D54F478FC9DE5FBC52
      529395939393B1E4E4E4E9C7DEC8DFEAC8EAC8DEC8DFEAC8DEC8C8C8DEDEC8EA
      EAC8EAC8EA00C6C6E3C6C6C68787E4E3C6E4E4E4C6E9C7C7C7E4C7DEC8E9C683
      C3C13CDFC867AC5252716A6A9371C082E4E4C7E9DEC8DFEAC8EAC8DEDEC9EAEA
      C8C8DEC8E9C8C8EAEAC8EAC8EA00C6C6C6C6E3C6E4E887C6C6E4E4E4C6E9E4E9
      E4E9C7DEEAC7E8E4A94FADC9DFAD4F5B52716A959371A182E4E4C7C7DEC8DFC8
      C8EAEADEC8C9EAC8EAC8C8C8C8C8C8EAEAC8EAC8EA00E3C6C6C6C6B7C687E4FB
      C6E4E4E4E8E9C7C7E9E9C7DEC8E9E8C7C9B5D1C9EA968F5B527193956A716AC8
      E4C7E9C7DEC8EBDFEAEAEADEC8C9EAEAC8C8C8C8DDEAC8EAEAC8EAC8EA00C6B7
      87878787E4E487E8C6E4E4E4E4E9E9E9C7C7E9DEEAE9E4E4C7DEE7C883A15FBC
      527171956A7171D4E482DEE9C8EAC9C9C8C9EADEC8C9EAEAEAC8C8C8C8DEC8EA
      DFC8EAC8EA00E487C687C687E487E4C6E8E4E4E4E8DEC7C7E9E9E9C8EAE9E4C7
      E9C7E9DEC8D15FAC5B719395959371ADE4C7DEE9DEDFEBC9EAC9EAC8C8C9DFEA
      C8C8EADEC8DEC8DFC9C8EAEAEA00C68787E48787E487E4C6E4E4E4E4E4DEE9E9
      E9E9DEC8DFDEE4E9C7E9C7DEC8D4674F4F71936A956A7193B182DEE9E9C9C9C9
      EAC9EADEC8C9DFEAEAC8C8C8C8C8C8EAC9C8EAEAEA00E4C6E487E8878787E4C6
      E4E4E4C7E4DEE9E9DEDEDEC8DFE9E4E9C7DEC7DEE9C467BDBDAC59936A959371
      BAC7DEC7DEC9EBC9C8C9EAC8EAC9DFEAEAEAC8C8C8C8C8C9C9C8EAC8EA008787
      87878787E4E4E4E8E4C7C7C7E4DEDEE9DEE9DEC8DFDEE4C7C7DEE9E9E9C99667
      8F596A6A93956A7195C9DEE9C8C9EBC9EAC9DFC8C8C9DFEAEAC8C8C8C8C8C8EA
      C9EAEAC8EA00E487E487E487E4C7C7E8E4C7E4C7E4E9DEDEDEDEDEC8DFE9E4E9
      E9E9E9E9E9C7D15F8F8F65955995959393A4DEE9C8C9EBC9EAC9DFC8EAC9C9EA
      EAC8C8C8C8EAC8C9C9EAC9C8EA00E487E487E487C7E4C7E8E4C7E9E9C7DEDEE9
      DEE9E9C8EADEE4E9E9E9DEE9E9C7C4AD4F71959F6A95959571ADC4E9C8C9EBC9
      EAEBC9C8EAC9C9DFC8C8C8EAC8C8EAEAC9EAC9C8EA00E487C787E487C7C7C7E4
      E4C7C7C7C7DEDEDEDEDEDEC8DFDEE4E9E9E9DEDEE9E9C8D58FC26A69589F9595
      9395A4E9EAC9DAEAC8C9C9EAC8EBC9DFC8C8C8EAC8C8C8C9C9EAC9C8EA00E487
      C787E487C7E4C7E4E4E9E9E9C7DEDEE9DEE9DEC8EADEE4E9E9E9C8C8C8E9C8DB
      A4B98E9A707A9F6A6A95BADAEAC9EBEAEAEBC9EAC8EBEBC9C8EAC8EAC8C8EAC9
      C9EAC9EAEA00C77EE4C7C7C7C7C7C7E4E4C7C7C7E4C8DEDEDEDEDEEADFDEC8C9
      C8C93EB3B3DEC8DBC05C9A977079A4A174C0B9A5EAC9EBEAEAC9C9EAC8EBC9C9
      EAEAC8EAC8C8C8C9C9EAC9EAEA00C7E4C7C7E4C7C7C7C7E4C7E9E9E9E9C8DEDE
      C8E9DEC8C9C9B1B38468504D81C9C8DAD4989A9A62C4DFC8DE7FA4A4EAC9EBEA
      EAEBC9EAC8EBC9C9EAC8EAC8EAC8EAC9C9EAC9EAEA00C7C7C7C7C7C7C7C7C7E4
      C7E9E9E9C7C8DEC8C8DEDEC9B1B1B37C7B44507A68C4C8C9F1989A8EA5DEDE82
      C7DEC9B1EAEBC9DFEAEBC9EAC8EBC9C9EAEAC8EAC8C8C8EBC9EAC9EAEA00C7E4
      C7C7C7C7C7C7C7E4C7E9E9E9E9C8C8DEC8DEC8CDCD7B7B7C6850505068B3B3DD
      F29D9A5CD4DEDEC8C7DEC8C8EAC9EBDFD9EBC9C8EAEBC9C9EAC8EAC8EAC8EAC9
      C9D9C9EAEA00C7C7C7C7C7C7C7C7C7E4C7E9E9E9C7EAC8C8C8DED9CDAE517BAE
      517676684D687CE9ED9E986BB3C8C8C88282EAC8D9EBC4C4C4E0EBEAEAEBEBC9
      EAEAC8EAEAC8EAEBC9D9C9EAEA00C7C7C7C7C7C7C7C7C7E4C7E9DEDEE9C8DEC8
      DEC8BEAE7CAFC4B17C68797C684D7BE9C8CDA5A5B1C8C8C882DEC8EAEAEBE7B1
      DBAFC9EAEAEBEBC9EAC8EAEAEAC8EAEBC9D9C9EAEA00C7C7C7C7C7C7C7C7C7E9
      C7DEE9DEE9DFC8C9C483BEAEAE7B7B7B7C76767568817CC7E9C9D4D4C4C8C8C8
      8282DFC8C8DADBC4E7D4B3EAEAEBEBC9EAEAEAEAEAC8EAEBC9D9C9EAEA00C7C7
      C7C7C7C7828282C7C7DEDEDEE9C8EAB181C4B17568B37B51766B6D706D5D7BDD
      E9EAB1DB80C8C8C882DEC8EAEAC4C4DADAD4D4C4C9EBEBC9EAEAEAEAEAC8EAC9
      EBC9C9EAEA00C7C7C7C7C7C782C782E9C7DEE9DEE9EADFB381B1B16B503D5044
      5E6D70928E9E75BFDDC8C9C8DEC8C8C882DEEAC8EAE7B1C4E7AFAFB3DBC4EBC9
      EAEAEAEAEAC8EAEBC9C9C9D9EA00C7C782C7C7C7828282C7C7DEDEC9C8B3B37C
      7CB17B5E7A742974A35C6E979A9A99BFE9DDC8E9E9C8C8DEC782EAC8EAC4DBE7
      E7AFAFDBAFD4C4C9EAEAEAC8EAC8EAC9EBEBC9D9EA00C7C782C7C7C782C7DEE9
      C7DEC44D81AF81817CB3C04450443B3B485C9297979A99DDE9E9E9E9E9C8C8DE
      C782EAC8EAC4DBC4B1D4AFDBDBD4DBC9EAC8C8EAEAC8EAEBEBC9C9D9EA00E9C7
      82C7C7C782DE82C7E9C86879B3B3B3AFB5AF76354B503B7448746E97979299DD
      E9C7E9E9C7DEC8C88282C9C8C8EBE7DAEBAFAFDBDBD4DBC9EAEAEAC8EAC8EAEB
      EBEBC9D9EA00C7C782C782C7DEC7C8C7DE7C3579B3AF817C81515E487A483B25
      6ABB606C919299E9E9C7E9C7C7DEC8C88282C9C8EAC9C4C4B6B5B3DBDBD4E7C9
      EAC8C8EAEAC8EAEBEBC9C9D9EA00DEC7DE828282C87FC8C7E97950687C4DB068
      81686B50445F730000000000726EAAE9E9C7E9E9C7C8C8C882DEDFE9C9DBB3EB
      72A9C4DBDBD4E7C9EAEAEAEAD9C8D9EBEBEBC9D9EA0082827FC782827F82C8C7
      E97944687C7944797C4D764D960072775B60BB5A004ED9E9E9E9C7C7C7C8C8C8
      82DED4C5C5C3D4A800E7DADAB62CC4C9EAEAEAEAD9C8D9EBEBC9C9C9EA00DE82
      C882C782DEC87FE9C476797C6850446B797979632C7276503528586272C2C8E9
      E9C7E9E9CE730000007273737373B67777DBDBEA7300A9EBEAEAEAEAD9C8D9EB
      EBEBC9C9EA00C7827F82C8C87F7FC8766844447A687A4DD4687C754BBB727C44
      472B2B6200D9DE8BC147C7C7E9DEC8C882DEC9EAE7D4E700A7DBDBA800A7C4EB
      D9EAEAEAD9C8D9EBEBC9EBC9EA00DE82C8C8C77FC8C83E3D815035504DB07C81
      7CC07551A82C792C727372C572EAE9EA7273E9E9C7DEEAC882C8C9C8EBD4CE73
      E7D4E7BCA7C4D4D4B3AFD4B5D5B0D5D5D5D5D5D5EA00DD7FC87FC8C87F7D447A
      7C4B35766879B0684D7575B079792FBC435B357777EADE6300BBE9E9C7C8C8C8
      DEC8C9EBE7D4C3D3D3B6B5C3EBE7B3AFDBDBDBD4D4D4B5B0D5D5B0B5EA00C882
      C8C882C87F6850687C764B79797A7979797C7C6879797200000000000000B4BB
      00E7E9E9C7C8DFC882C8A7777773772CC5B6D1C0DBC4C4EBD9EAEAEAC9EADFDA
      EBEBEBC9EA00C87FC8C87F7F7D51687BAF68765078507A6868AFB57A7A3D4F52
      732DB6737681E7472CE9E9E9C7C8C9C8DEB3D4EBE7D4B3D4D5D5B0C0D4DBC4EB
      D9EAC8EAC9EAC9DADAEBEBC9EA00C87FC8C87F807C684CB3814D444450767CD4
      68AF7C797A505E7377352C676878D5BCC3E9E9E9E9C8C983828BC9E0B5D5D4BC
      2CC2BAB0C0AFC4EBC9EAEAEAC9EAC9EBDAEBEBC9EA00C8C8C8C8C87D7C4C7BB3
      687A443B7663AF68B0817C794B6B445B5B3B527678656DAABEE9E9E9C7C8C983
      DEC8EBEB77D372000047D1D5C0B0C4EBC9EAEAEAC9EAC9DADAEBEBC9EA00C8C8
      C8C880B17DC97BAF7644764468AFB5B07C816879BB7352302B4335659F708E70
      9BDDE9E9E9C8EA83DE83DFB5000077C372A9D4AFD4D1DBDBDFD9EAEAC9EAC9EB
      DAEBEBC9EA00C8C8C8B1B17DC97C7C7C4D8168797CB5B07981D468793C000072
      722C7465576E976E99DDE9E9E9C8C983C8EADFDF47C381D3BCD1CED4DBB0D4B5
      C9D9EAEAC9EAC9DADAEBEBC9EA00C8C8C87B7BB17C4D7C68B3B1AF4468684D7C
      B37C687A443B2B432B2A436A7092928E99DDE9E9DDC8D983C8C8DFC3D3727272
      B4C0D5D1DBDBB0D4C9D9EAEAC9EAC9EBDAEBEBC9EA00C8C8B17B4C7B3E7C7C81
      B1B1B37CAFD46881AF797A5E6549492B30242859706E6E98CDDDDDDDE9C8C9DF
      C8C8DFA77372000000B6D5AFC4DBD1B5C9D9EAEAC9EAC9DADAEBEBC9EA00C8C8
      4CB17B813E7C7B7CB3C4B37C81AFB0688150447443303026261C2430749862AA
      E5DDE9DDE9C8C9C8C8C8D9EBE7E7AFB4C5A7B0DBEBE7B5D4C9D9EAEAC9EAC9EB
      DAEBEBC9EA00C8807BB17D4C684C81AFB3B1B1B181B0B0B0B05E65302628281A
      191C282B78A5AFC9E9DDDDDDE9C8C9C8C8C8C9C4E7DBAFDBAFB5C4C9EBDAD4B3
      C9D9EAEAC9EAC9DADAEBEBC9EA0080B1C47D7DB17BB37B7CB3B3B1B17C68B079
      4D503B302624281C1C2630307A68C0C9E9E9E9E9C7C8DFC8C8C8C9C4E7D4AFDB
      DBD4D4EBC9E7B0DBC9D9EAEAC9D9C9EBDAEBEBC9EA00B14CC4C97DB1C4B14C7C
      AFAFB3B1B079B04DB079504326282A1C232A433B7A68B1B1E9E9E9E9E9C8DF83
      C8C8C9E7DBB3D4B3DBD4B0DAEBDBD5DBC9D9EAEAC9D9C9DADAEBEBC9EA00C47C
      B17D7DB1B1B1B1B37C7CB3B37C68AF7C7C7C68492438282623283B50447AAFE9
      E9E9E9E9DEC8C983C8C8C9C4DBD4D4DBDBB5B0DBDADBD5C4C9D9EAEAC9D9C9EB
      DAEBEBC9EA00B17CB17DB17B7B7BB1B3AF7CB1C468D4B3D47CB579492A492428
      1C2749657876AFC8E9E9E9E9C8C8C983C883C9E7DBD4D4AFB3C0D5B0B0C0D5DA
      C9D9EAEAC9D9C9DADAEBEBC9EA00B17CB1B1B17B4C7B7DC4B3B3B1B37CAF81D4
      7CA544492A433026231A24286B79DBC8E9E9DDDDC7EDF1F1F2D9C9DBF3D4D4C0
      D5F5BABAD5B0D5EBDAEDD9EAC9D9C9EBDAEBEBC9EA00B3B17D7D7DB14C7B7BB1
      B3B3C4B381D4D481B06B3B434943261A1B1B1C285E76B5EADDDDDDEEF3F8F8F8
      F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F6F1C9D9C9DADAEBEBC9EA0080B1
      B3B1C97D7B4C7CD4AFAFD4C07CD46868765E314349302623231C2628C0767CEA
      EFDDDDF1F8F6F6F6F6F7F7F7F8F4F4F5F5CEF4F4F4F6F4F6F8F8F8F8C9D9C9EB
      DAEBEBC9EA007DB1B17DC97DC47B7C7C7C8168797CB079B06BA344434324244E
      69694E575C62AEEADDDDE6F5F8F1F1DF8380DFE7DBB0D5B5D4C0B4D1BAADD1F3
      F5F6F8F9C9D9C9DADAEBEBC9EA00C4C4B1C9D97D7D7B68686868687968C079A5
      6B443B492B274E9297924E5A5C99CDD9EFDDEFF7F8F8C9F1F7F8F9F6F3D4B3F9
      B0D1F6F8F9F8F5DAD9EDF6F8C9D9C9EBDAEBEBC9EA007D7DB1C9807DB17B5179
      68B57679797976796B4949492B235A9797976E577098CDDAD9DDDDF6F8F8F5F9
      F8F5F5F6F9F7D4F8F5F9F8F4F5F6F9F7C9EAF6F8C9D9C9DADAEBEBC9EA007D7D
      7D7DC97D7D7B5150505044507A4444764443652A282664979797925A6E98CDDA
      EDC8EFF3F8F7F9F5DEC8EBDAD5F9B5F6F9F5B3AFD4B5F1F9EBC8F6F9C9D9C9EB
      DAEBEBC9EA00C9C9C9C97D7DB17B4D44443B654444356535492B3828241B6497
      90909092979874DAD9C8EAF2F8F2F983C8C8C9C4D4F8F5D5F9D4D4DBDBD4DBF6
      F5D9F6F8C9D9C9DADAEBEBC9EA0080C9C9C97DC97B4C79443B49652B492A282A
      433024281C566497909097976E5744DADAD9D9E5F8C8F9DFC8C8C9C4D4F8F581
      F9D4D4DBC4DBC4F8F3EAF6F8C9D9C9EBDAEBEBC9EA0080C980C980C9C4AF3D74
      492B24243B3B49493149301B1B5A64979797926957262B78796B68F3F8C8F8F7
      C883C4B3F5F9B5B5F8F6C4DFC9E7F5F9EDF3F6F9C9D9C9DADAEBEBC9EA008080
      80C9C9C97DB33D4474242A654835A1357449301C1B569197979297695828283B
      744978F1F8F3F2F9F9F6F6F9F9F5D4DBD4F9F9F6F6F9F9F3C9F6F7F8C9D9C9EB
      DAEBEBC9EA00C9C9C9C980C97D7C4D793538303B3B653B3B4343261C133A6492
      91976469572A28493B2AB0E5F8F8F3D9F5F6F6F7DAE7C4EBDAE7F5F6F6F7E7F1
      F7F8F8F8C9D9C9DADAEBEBC9EA00C9C9C9C9C97DB17C4D683530284343316565
      4328261C1913566464925A6957282843652830A5F7F8F8F6F6F7F7F7F6F7F7F7
      F7F7F7F6F6F6F6F8F8F8F8F8C9D9C9EBDAEBEBC9EA007DC9C9C9C97DB17BAF68
      742A1C2A2B4935444449492423235A3A5A5A5A694E2830433B2A2851E6F5F6F6
      F7F5F7F7F6F7F7F7F7F7F7F7F7F6F6F6F7F8F6EDC9D9C9DADAEBEBC9EA00C9C9
      7DC9C97DB1B1B17C652A2849653174507878442826235A0E234E5A5A28242A2B
      3B302BC8E9EAC983D9D9C9EBDAE0C4C9E0C4C4EBF2DBC4DAEBC9D9D9C9D9C9EB
      DAEBEBC9EA007DC97DC9807DC97D817C503549444444787A4478784326233A0E
      0E1B232324282A303B4344DDE9C8C9DF83C8C9DADAC4C4C9DAC4C4EBEBE7C4DA
      C9C9EAD9C9D9C9DADAEBEBC9EA00C9C9C9C9C9C9C9C47B7C68503B7A507A7A79
      4B784843271C161A1313232628282A284950DDDDE9C8C98383C8C9DAC4DAC4EB
      C4E7C4EBEBE7C4DAEBC9D9C9D9C9C9C4C47D7DC9EA00C9C9C9C980C97D7DB1AF
      7C5044504444787A5044493024230E19130E1A1C1C302A2A49314468E9C8C9C9
      83C8C9DAC4E7DAC9C4E7C4EBEBE7C4DAC9C9C9C97D7D363632363636EA00C9C9
      C9C9807DC9C9B1B3817A50787A7844787A652B2A261C1A180E1613192630242A
      3B494976E9C8C9C983C8C9DAE7DBC4EBC4E7C4EBEBE7C4DAC9C98036367D3636
      3636367DEA00C9C9C9C9C9C97DB1B1AF68795074505035354449302824261B18
      130E131A28281B24744844DDE9C8DF848083C9DAE7DBC4C9C4E7C4EBEBE7C4DA
      7D7D36367D367D363636367DEA007DC9C9C980C9B1B17BAF797A78447679743B
      A149382826261A13163A131A2A2B2324785EB1DDE9C8EA80DF80C9DAC4DBDBDA
      C4E7C4DAEBE7C4363636367D367D36363636367DEA00B1C97D7D7DC4B17BB37C
      687950357478352B49433026231C0E16555518192A492328444DDDDDE9C8C8DF
      80C9C9C9EBC4DBC4C4E7C4DAC97B3232367D7D7D7D367D363636367DEA00B37D
      B1B1B17C4C7B817CB5687A35483BA149302A2623131816919164561A1C282728
      747CE9DDE9C8C8C88380EBC9EBC4DAEBC4DBC4DA3632323636363636367D3636
      3636367DEA00C47D7CB14C687C7C687C7C68794430262B301C28260E0E185697
      9797561B1C241C4368DDDDDDE9C8C88383C9C9C9EBC4DAC9C4DBC43636323636
      367D36367D7D36363636367DEA00}
  end
  object edtDir: TEdit
    Left = 168
    Top = 162
    Width = 152
    Height = 21
    ImeName = #20013#25991\' (\'#31616#20307\') - \'#19975#33021#20116#31508#20869#32622#36755#20837#27861
    TabOrder = 0
  end
  object cbbWinner: TComboBox
    Left = 142
    Top = 87
    Width = 188
    Height = 24
    BevelInner = bvLowered
    Ctl3D = False
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -13
    Font.Name = \'Tahoma\'
    Font.Style = [fsBold]
    ImeName = #20013#25991\' (\'#31616#20307\') - \'#19975#33021#20116#31508#20869#32622#36755#20837#27861
    ParentCtl3D = False
    ParentFont = False
    TabOrder = 1
    OnDropDown = cbbWinnerDropDown
    OnKeyDown = cbbWinnerKeyDown
    OnKeyPress = cbbWinnerKeyPress
  end
  object cbAutoContinuous: TCheckBox
    Left = 5
    Top = 223
    Width = 97
    Height = 17
    Caption = #36830#32493#33258#21160#21047
    TabOrder = 2
    OnClick = cbAutoContinuousClick
  end
  object cbHide: TCheckBox
    Left = 180
    Top = 222
    Width = 97
    Height = 17
    Caption = #38544#34255#28216#25103#31383#21475
    TabOrder = 3
    OnClick = cbHideClick
  end
  object pnlTitle: TPanel
    Left = 0
    Top = 0
    Width = 450
    Height = 41
    Align = alTop
    BevelInner = bvRaised
    BevelOuter = bvLowered
    BorderWidth = 2
    BorderStyle = bsSingle
    Caption = \'QQ\'#22235#22269#20891#26071#21047#20998#22120\'v1.1\'
    Color = clTeal
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -19
    Font.Name = \'Courier New\'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 4
  end
  object cbSmart: TCheckBox
    Left = 5
    Top = 165
    Width = 161
    Height = 17
    Caption = #26234#33021#23545#22869\'   \'#38656#25351#23450#22797#30424#25991#20214
    TabOrder = 5
    OnClick = cbSmartClick
  end
  object rgModel: TRadioGroup
    Left = 1
    Top = 46
    Width = 351
    Height = 39
    Align = alCustom
    Caption = #36873#25321#21047#20998#27169#24335
    Columns = 2
    ItemIndex = 0
    Items.Strings = (
      \'1\'#32452#20004#20154#23545#25112
      \'2\'#32452#20004#20154#23545#25112)
    TabOrder = 6
    OnClick = rgModelClick
  end
  object cbbLoser: TComboBox
    Left = 142
    Top = 117
    Width = 188
    Height = 24
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = \'Tahoma\'
    Font.Style = []
    ImeName = #20013#25991\' (\'#31616#20307\') - \'#19975#33021#20116#31508#20869#32622#36755#20837#27861
    ParentFont = False
    TabOrder = 7
    OnDropDown = cbbLoserDropDown
    OnKeyDown = cbbLoserKeyDown
    OnKeyPress = cbbLoserKeyPress
  end
  object btnAutoPlay: TButton
    Left = 15
    Top = 254
    Width = 79
    Height = 39
    BiDiMode = bdLeftToRight
    Caption = #24320#22987#21047#20998
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clMenuHighlight
    Font.Height = -11
    Font.Name = \'Tahoma\'
    Font.Style = []
    ParentBiDiMode = False
    ParentFont = False
    TabOrder = 8
    OnClick = btnAutoPlayClick
  end
  object btnExit: TButton
    Left = 229
    Top = 254
    Width = 79
    Height = 39
    Caption = #36864\'    \'#20986
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clInactiveCaption
    Font.Height = -11
    Font.Name = \'Tahoma\'
    Font.Style = []
    ParentFont = False
    TabOrder = 9
    OnClick = btnExitClick
  end
  object cbAddSpeed: TCheckBox
    Left = 38
    Top = 187
    Width = 61
    Height = 12
    Caption = \' \'#21152\'    \'#36895
    Color = clMoneyGreen
    Ctl3D = False
    ParentColor = False
    ParentCtl3D = False
    TabOrder = 10
    OnClick = cbAddSpeedClick
  end
  object bbtnHelp: TBitBtn
    Left = 336
    Top = 253
    Width = 79
    Height = 39
    Cursor = crHelp
    Hint = #21047#20998#22120#20351#29992#35828#26126
    BiDiMode = bdRightToLeft
    Caption = #24110\'  \'#21161
    DoubleBuffered = True
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = \'Tahoma\'
    Font.Style = []
    Layout = blGlyphRight
    ParentBiDiMode = False
    ParentDoubleBuffered = False
    ParentFont = False
    ParentShowHint = False
    ShowHint = True
    TabOrder = 11
    WordWrap = True
    OnClick = bbtnHelpClick
  end
  object sbRegister: TStatusBar
    Left = 0
    Top = 292
    Width = 450
    Height = 27
    BorderWidth = 2
    Color = clMoneyGreen
    Panels = <
      item
        Width = 170
      end
      item
        Width = 100
      end
      item
        Text = \'//\'#35282#33394#29256\' 2.1 Beta06 Build020\'
        Width = 150
      end>
  end
  object bbtnRegister: TBitBtn
    Left = 122
    Top = 253
    Width = 79
    Height = 39
    Caption = #27880\'  \'#20876
    DoubleBuffered = True
    ParentDoubleBuffered = False
    TabOrder = 13
    OnClick = bbtnRegisterClick
  end
  object odSetDir: TOpenDialog
    DefaultExt = \'jgs\'
    Left = 328
    Top = 119
  end
end

//注册窗体文件

object frmRegister: TfrmRegister
  Left = 504
  Top = 235
  BorderStyle = bsDialog
  BorderWidth = 3
  Caption = #27880#20876
  ClientHeight = 122
  ClientWidth = 208
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = \'Tahoma\'
  Font.Style = []
  OldCreateOrder = False
  Position = poMainFormCenter
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 10
    Top = 16
    Width = 48
    Height = 13
    Caption = #29992#25143#21517#65306
  end
  object Label2: TLabel
    Left = 12
    Top = 53
    Width = 48
    Height = 13
    Caption = #27880#20876#30721#65306
  end
  object bbtnOK: TBitBtn
    Left = 66
    Top = 87
    Width = 77
    Height = 31
    Caption = #30830\'  \'#23450
    DoubleBuffered = True
    ParentDoubleBuffered = False
    TabOrder = 0
    OnClick = bbtnOKClick
  end
  object edtUser: TEdit
    Left = 60
    Top = 13
    Width = 121
    Height = 21
    ImeName = #20013#25991\' (\'#31616#20307\') - \'#19975#33021#20116#31508#20869#32622#36755#20837#27861
    TabOrder = 1
    OnKeyPress = edtUserKeyPress
  end
  object edtPsw: TEdit
    Left = 61
    Top = 50
    Width = 121
    Height = 21
    ImeName = #20013#25991\' (\'#31616#20307\') - \'#19975#33021#20116#31508#20869#32622#36755#20837#27861
    TabOrder = 2
    OnKeyPress = edtPswKeyPress
  end
end

//帮助提示窗体文件

object frmHelp: TfrmHelp
  Left = 526
  Top = 320
  BorderStyle = bsDialog
  Caption = #21047#20998#22120#20351#29992#35828#26126
  ClientHeight = 236
  ClientWidth = 450
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = \'Tahoma\'
  Font.Style = []
  OldCreateOrder = False
  Position = poMainFormCenter
  PixelsPerInch = 96
  TextHeight = 13
  object reHelp: TRichEdit
    Left = 2
    Top = 3
    Width = 446
    Height = 233
    BevelInner = bvLowered
    BevelWidth = 2
    BorderWidth = 1
    Color = clSkyBlue
    Font.Charset = GB2312_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = \'Tahoma\'
    Font.Style = []
    ImeName = #20013#25991\' (\'#31616#20307\') - \'#19975#33021#20116#31508#20869#32622#36755#20837#27861
    Lines.Strings = (
      \'                 \'#21047#20998#22120#20351#29992#35828#26126#65288\'BlackSnake     2010.06.06\'#65289
      \'1. \'#21047#20998#22120#26377#20004#31181#27169#24335#65288#30446#21069#20165#25903#25345#20004#20154#29609#65289#65306#21363\'1\'#32452#20004#20154#29609#21644\'2\'#32452#20004#20154#29609
      \'2. 1\'#32452#20004#20154#23545#25112#26102#65292#36873#25321#35201#36194#20998#30340\'QQ\'#21495#65292#21363#21487#20197#23454#29616#21047#20998#65307#22914#26524#21246#36873#8220#36830#32493#33258#21160#21047#8221
      #21017#21487#20197#23454#29616#36830#32493#21047#20998#65307#22914#26524#24819#38544#34255#28216#25103#31383#21475#65292#21017#21487#20197#21246#36873#8220#38544#34255#28216#25103#31383#21475#8221#12290
      \'3. 2\'#32452#20004#20154#23545#25112#65292#21363\'ABC\'#21047#20998#27169#24335#65292#29992\'3\'#20010#21495#65292#20551#35774#23567#21495#65288\'C\'#65289#22312#20302#20998#21306#36127#36131#36755#20998#65292#20013
      #21495#65288\'B\'#65289#24320#20004#20010#25151#38388#20998#21035#36827#20837#39640#20998#21306#21644#20302#20998#21306#36127#36131#36716#20998\'(\'#20998#25968#22312\'50-59\'#20998\')\'#65292#22823#21495#65288\'A\'#65289
      #22312#39640#20998#21306#12290#24320\'2\'#32452#65292\'1\'#32452#20026\'A\'#23545#25112\'B\'#65292\'1\'#32452#20026\'B\'#23545#25112\'C\'#65292#21482#35201#36873#23450#35201#36194#20998#30340\'QQ\'#65288\'A\'#65289#21644#36755
      #20998#30340\'QQ\'#65288\'C\'#65289#65292#37027#20040\'A\'#21487#20197#30452#25509#21047#21040#21496#20196#20197#19978#12290
      \'4. \'#20026#22686#21152#36259#21619#24615#65292#26412#21047#20998#22120#22686#21152#20102#26234#33021#23545#22869#21151#33021#65292#20027#35201#21033#29992#20004#20154#22797#30424#25968#25454#23454#29616#65292#25152
      #20197#19968#23450#35201#35774#23450#22797#30424#25991#20214#12290#21246#36873#8220#21152#36895#8221#21151#33021#26159#25351#36798#21040#35268#23450#27493#25968#21363#25552#21069#32456#27490#12290
      #27880#24847#65306#30446#21069#20165#25903#25345#19978#19979#20301#30340#24773#24418#65292#21363#21452#26041#20998#21035#22352#22312#19978#20301#21644#19979#20301#65288#24038#21491#20301#21047#19981#20102#65289#12290
      \'5. \'#22914#35201#25171#24320#22810#20010#21047#20998#22120#36827#34892#21047#20998#26102#65292#24517#39035#20808#36816#34892#21047#20998#22120#20877#36827#20837#28216#25103#12290
      \'6. \'#26412#21047#20998#22120#20165#20379#23398#20064#20132#27969#20043#29992#65292#19981#24471#29992#20110#21830#19994#30446#30340#65292#21542#21017#21518#26524#33258#36127#12290
      \' \')
    ParentFont = False
    TabOrder = 0
  end
end