diff --git a/10.3.3/Activator/Activator.bdsproj b/10.3.3/Activator/Activator.bdsproj new file mode 100644 index 0000000..295953f --- /dev/null +++ b/10.3.3/Activator/Activator.bdsproj @@ -0,0 +1,183 @@ + + + + + + + + + + + + Activator.dpr + + + 7.0 + + + 8 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + True + True + Classes=;mirror= + + False + + False + True + False + True + True + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\Release + ..\Dcu + + + ..\KOL + vcl;rtl + KOL_MCK;NOT_USE_RICHEDIT;USE_MHTOOLTIP;xDEBUGMODE + + False + + + + + + False + + + True + False + + + False + + + True + False + 26 + 0 + 36039 + 7899 + False + False + False + False + False + 1033 + 1252 + + + Lsuper + + 26.0.36039.7899 + + + + Activator.exe + + 26.0 + + + + + diff --git a/10.3.3/Activator/Activator.dpr b/10.3.3/Activator/Activator.dpr new file mode 100644 index 0000000..c9992d9 --- /dev/null +++ b/10.3.3/Activator/Activator.dpr @@ -0,0 +1,32 @@ +{ KOL MCK } // Do not remove this line! +program Activator; + +uses +KOL, + FileUtils in 'FileUtils.pas', + PatchData in 'PatchData.pas', + WinUtils in 'WinUtils.pas', + + AnsiStrings in '..\Keygen\AnsiStrings.pas', + FGInt in '..\Keygen\FGInt.pas', + RadKeygen in '..\Keygen\RadKeygen.pas', + RadLicense in '..\Keygen\RadLicense.pas', + RadVersion in '..\Keygen\RadVersion.pas', + Sha1 in '..\Keygen\Sha1.pas', + + MainFrm in 'MainFrm.pas' {MainForm}; + +{$R *.res} + +begin // PROGRAM START HERE -- Please do not remove this comment + +{$IF Defined(KOL_MCK)} {$I Activator_0.inc} {$ELSE} + + Application.Initialize; + Application.MainFormOnTaskbar := True; + Application.CreateForm(TMainForm, MainForm); + Application.Run; + +{$IFEND} + +end. diff --git a/10.3.3/Activator/Activator.res b/10.3.3/Activator/Activator.res new file mode 100644 index 0000000..360d124 Binary files /dev/null and b/10.3.3/Activator/Activator.res differ diff --git a/10.3.3/Activator/Activator_0.inc b/10.3.3/Activator/Activator_0.inc new file mode 100644 index 0000000..8fa625f --- /dev/null +++ b/10.3.3/Activator/Activator_0.inc @@ -0,0 +1,20 @@ +{ KOL MCK } // Do not remove this line! +{ Activator_0.inc + Do not edit this file manually - it is generated automatically. + You can only modify Activator_1.inc and Activator_3.inc + files. } + +{$IFDEF Pcode} + InstallCollapse; +{$ENDIF Pcode} + NewMainForm( MainForm, nil ); +{$I Activator_1.inc} + +{$I Activator_2.inc} + +{$I Activator_3.inc} + + Run( MainForm.Form ); + +{$I Activator_4.inc} + diff --git a/10.3.3/Activator/Activator_1.inc b/10.3.3/Activator/Activator_1.inc new file mode 100644 index 0000000..e19f111 --- /dev/null +++ b/10.3.3/Activator/Activator_1.inc @@ -0,0 +1,9 @@ +{ Activator_1.inc + This file is for you. Place here any code to run it + just following Applet creation (if it present) but + before creating other forms. E.g., You can place here + statement, which prevents running of application + in some cases. TIP: always use Applet for such checks + and make it invisible until final decision if to run + application or not. } + diff --git a/10.3.3/Activator/Activator_2.inc b/10.3.3/Activator/Activator_2.inc new file mode 100644 index 0000000..830ed7f --- /dev/null +++ b/10.3.3/Activator/Activator_2.inc @@ -0,0 +1,4 @@ +{ KOL MCK } // Do not remove this line! +{ Activator_2.inc + Do not modify this file manually - it is generated automatically. } + diff --git a/10.3.3/Activator/Activator_3.inc b/10.3.3/Activator/Activator_3.inc new file mode 100644 index 0000000..5f758d7 --- /dev/null +++ b/10.3.3/Activator/Activator_3.inc @@ -0,0 +1,4 @@ +{ Activator_3.inc + This file is for you. Place here any code to run it + after forms creating, but before Run call, if necessary. } + diff --git a/10.3.3/Activator/Activator_4.inc b/10.3.3/Activator/Activator_4.inc new file mode 100644 index 0000000..3e4c27b --- /dev/null +++ b/10.3.3/Activator/Activator_4.inc @@ -0,0 +1,4 @@ +{ Activator_4.inc + This file is for you. Place here any code to be inserted + after Run call, if necessary. } + diff --git a/10.3.3/Activator/Admin.res b/10.3.3/Activator/Admin.res new file mode 100644 index 0000000..5e2a64c Binary files /dev/null and b/10.3.3/Activator/Admin.res differ diff --git a/10.3.3/Activator/FileUtils.pas b/10.3.3/Activator/FileUtils.pas new file mode 100644 index 0000000..a99e226 --- /dev/null +++ b/10.3.3/Activator/FileUtils.pas @@ -0,0 +1,65 @@ +{ *********************************************************************** } +{ } +{ ߵԪ } +{ } +{ ƣLsuper 2013.02.16 } +{ ע } +{ ˣ } +{ } +{ Copyright (c) 1998-2014 Super Studio } +{ } +{ *********************************************************************** } + +unit FileUtils; + +interface + +uses + SysUtils, Classes; + +function LoadDataFromFile(const AFile: string): AnsiString; +procedure SaveDataToFile(const AFile: string; const ABuffer; ASize: Integer); + +implementation + +uses + Windows; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2010.01.19 +//ܣļ +// +//////////////////////////////////////////////////////////////////////////////// +function LoadDataFromFile(const AFile: string): AnsiString; +begin + with TFileStream.Create(AFile, fmOpenRead or fmShareDenyWrite) do + try + SetLength(Result, Size); + ReadBuffer(PAnsiChar(Result)^, Size); + finally + Free; + end; +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2010.01.19 +//ܣļ +// +//////////////////////////////////////////////////////////////////////////////// +procedure SaveDataToFile(const AFile: string; const ABuffer; + ASize: Integer); +var + F: string; +begin + F := ExtractFileDir(AFile); + ForceDirectories(F); + with TFileStream.Create(AFile, fmCreate or fmShareDenyWrite) do + try + Position := 0; + WriteBuffer(ABuffer, ASize); + finally + Free; + end; +end; + +end. diff --git a/10.3.3/Activator/MainFrm.dfm b/10.3.3/Activator/MainFrm.dfm new file mode 100644 index 0000000..14236af --- /dev/null +++ b/10.3.3/Activator/MainFrm.dfm @@ -0,0 +1,425 @@ +object MainForm: TMainForm + Left = 0 + Top = 0 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Delphi 10.3.3 Activator' + ClientHeight = 122 + ClientWidth = 534 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = True + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object btnExit: TKOLButton + Tag = 0 + Left = 428 + Top = 16 + Width = 90 + Height = 90 + Hint = 'Exit' + HelpType = htKeyword + HelpContext = 0 + IgnoreDefault = True + AnchorLeft = False + AnchorTop = False + AnchorRight = False + AnchorBottom = False + AcceptChildren = False + MouseTransparent = False + TabOrder = 2 + MinWidth = 0 + MinHeight = 0 + MaxWidth = 0 + MaxHeight = 0 + PlaceDown = False + PlaceRight = False + PlaceUnder = False + Visible = True + Enabled = True + DoubleBuffered = False + Align = caNone + CenterOnParent = False + Caption = '&Exit' + Ctl3D = True + Color = clBtnFace + parentColor = False + Font.Color = clWindowText + Font.FontStyle = [] + Font.FontHeight = 0 + Font.FontWidth = 0 + Font.FontWeight = 0 + Font.FontName = 'System' + Font.FontOrientation = 0 + Font.FontCharset = 1 + Font.FontPitch = fpDefault + Font.FontQuality = fqDefault + parentFont = True + OnClick = btnExitClick + EraseBackground = False + Localizy = loForm + Border = 2 + TextAlign = taCenter + VerticalAlign = vaCenter + TabStop = True + autoSize = False + DefaultBtn = False + CancelBtn = False + windowed = True + Flat = False + WordWrap = False + LikeSpeedButton = False + end + object btnAbout: TKOLButton + Tag = 0 + Left = 325 + Top = 16 + Width = 90 + Height = 90 + Hint = 'About' + HelpType = htKeyword + HelpContext = 0 + IgnoreDefault = True + AnchorLeft = False + AnchorTop = False + AnchorRight = False + AnchorBottom = False + AcceptChildren = False + MouseTransparent = False + TabOrder = 0 + MinWidth = 0 + MinHeight = 0 + MaxWidth = 0 + MaxHeight = 0 + PlaceDown = False + PlaceRight = False + PlaceUnder = False + Visible = True + Enabled = True + DoubleBuffered = False + Align = caNone + CenterOnParent = False + Caption = '&About' + Ctl3D = True + Color = clBtnFace + parentColor = False + Font.Color = clWindowText + Font.FontStyle = [] + Font.FontHeight = 0 + Font.FontWidth = 0 + Font.FontWeight = 0 + Font.FontName = 'System' + Font.FontOrientation = 0 + Font.FontCharset = 1 + Font.FontPitch = fpDefault + Font.FontQuality = fqDefault + parentFont = True + OnClick = btnAboutClick + EraseBackground = False + Localizy = loForm + Border = 2 + TextAlign = taCenter + VerticalAlign = vaCenter + TabStop = True + autoSize = False + DefaultBtn = False + CancelBtn = False + windowed = True + Flat = False + WordWrap = False + LikeSpeedButton = False + end + object btnReset: TKOLButton + Tag = 0 + Left = 222 + Top = 16 + Width = 90 + Height = 90 + Hint = 'Reset Delphi 10.3.2' + HelpType = htKeyword + HelpContext = 0 + IgnoreDefault = True + AnchorLeft = False + AnchorTop = False + AnchorRight = False + AnchorBottom = False + AcceptChildren = False + MouseTransparent = False + TabOrder = 1 + MinWidth = 0 + MinHeight = 0 + MaxWidth = 0 + MaxHeight = 0 + PlaceDown = False + PlaceRight = False + PlaceUnder = False + Visible = True + Enabled = True + DoubleBuffered = False + Align = caNone + CenterOnParent = False + Caption = 'Re&set' + Ctl3D = True + Color = clBtnFace + parentColor = False + Font.Color = clWindowText + Font.FontStyle = [] + Font.FontHeight = 0 + Font.FontWidth = 0 + Font.FontWeight = 0 + Font.FontName = 'System' + Font.FontOrientation = 0 + Font.FontCharset = 1 + Font.FontPitch = fpDefault + Font.FontQuality = fqDefault + parentFont = True + OnClick = btnResetClick + EraseBackground = False + Localizy = loForm + Border = 2 + TextAlign = taCenter + VerticalAlign = vaCenter + TabStop = True + autoSize = False + DefaultBtn = False + CancelBtn = False + windowed = True + Flat = False + WordWrap = False + LikeSpeedButton = False + end + object btnRunBds: TKOLButton + Tag = 0 + Left = 119 + Top = 16 + Width = 90 + Height = 90 + Hint = 'Run Delphi 10.3.2' + HelpType = htKeyword + HelpContext = 0 + IgnoreDefault = True + AnchorLeft = False + AnchorTop = False + AnchorRight = False + AnchorBottom = False + AcceptChildren = False + MouseTransparent = False + TabOrder = 3 + MinWidth = 0 + MinHeight = 0 + MaxWidth = 0 + MaxHeight = 0 + PlaceDown = False + PlaceRight = False + PlaceUnder = False + Visible = True + Enabled = True + DoubleBuffered = False + Align = caNone + CenterOnParent = False + Caption = '&Run' + Ctl3D = True + Color = clBtnFace + parentColor = False + Font.Color = clWindowText + Font.FontStyle = [] + Font.FontHeight = 0 + Font.FontWidth = 0 + Font.FontWeight = 0 + Font.FontName = 'System' + Font.FontOrientation = 0 + Font.FontCharset = 1 + Font.FontPitch = fpDefault + Font.FontQuality = fqDefault + parentFont = True + OnClick = btnRunBdsClick + EraseBackground = False + Localizy = loForm + Border = 2 + TextAlign = taCenter + VerticalAlign = vaCenter + TabStop = True + autoSize = False + DefaultBtn = False + CancelBtn = False + windowed = True + Flat = False + WordWrap = False + LikeSpeedButton = False + end + object btnActive: TKOLButton + Tag = 0 + Left = 16 + Top = 16 + Width = 90 + Height = 90 + Hint = 'Active Delphi 10.3.2' + HelpType = htKeyword + HelpContext = 0 + IgnoreDefault = True + AnchorLeft = False + AnchorTop = False + AnchorRight = False + AnchorBottom = False + AcceptChildren = False + MouseTransparent = False + TabOrder = 4 + MinWidth = 0 + MinHeight = 0 + MaxWidth = 0 + MaxHeight = 0 + PlaceDown = False + PlaceRight = False + PlaceUnder = False + Visible = True + Enabled = True + DoubleBuffered = False + Align = caNone + CenterOnParent = False + Caption = '&Active' + Ctl3D = True + Color = clBtnFace + parentColor = False + Font.Color = clWindowText + Font.FontStyle = [] + Font.FontHeight = 0 + Font.FontWidth = 0 + Font.FontWeight = 0 + Font.FontName = 'System' + Font.FontOrientation = 0 + Font.FontCharset = 1 + Font.FontPitch = fpDefault + Font.FontQuality = fqDefault + parentFont = True + OnClick = btnActiveClick + EraseBackground = False + Localizy = loForm + Border = 2 + TextAlign = taCenter + VerticalAlign = vaCenter + TabStop = True + autoSize = False + DefaultBtn = False + CancelBtn = False + windowed = True + Flat = False + WordWrap = False + LikeSpeedButton = False + end + object kolActivator: TKOLProject + Locked = False + Localizy = False + projectName = 'Activator' + projectDest = 'Activator' + sourcePath = 'F:\LITE\D10.3\15.3\Crack\Activator\' + outdcuPath = '0"..\Dcu\' + dprResource = True + protectFiles = True + showReport = False + isKOLProject = True + autoBuild = True + autoBuildDelay = 500 + BUILD = False + consoleOut = False + SupportAnsiMnemonics = 0 + PaintType = ptWYSIWIG + ShowHint = True + ReportDetailed = False + GeneratePCode = False + NewIF = True + DefaultFont.Color = clWindowText + DefaultFont.FontStyle = [] + DefaultFont.FontHeight = 0 + DefaultFont.FontWidth = 0 + DefaultFont.FontWeight = 0 + DefaultFont.FontName = 'System' + DefaultFont.FontOrientation = 0 + DefaultFont.FontCharset = 1 + DefaultFont.FontPitch = fpDefault + DefaultFont.FontQuality = fqDefault + FormCompactDisabled = False + Left = 32 + Top = 8 + end + object kolMainForm: TKOLForm + Tag = 0 + ForceIcon16x16 = False + Caption = 'Delphi 10.3.3 Activator' + Visible = True + OnMessage = kolMainFormMessage + OnDestroy = kolMainFormDestroy + AllBtnReturnClick = False + Tabulate = False + TabulateEx = False + UnitSourcePath = 'F:\LITE\D10.3\15.3\Crack\Activator\' + Locked = False + formUnit = 'MainFrm' + formMain = True + Enabled = True + defaultSize = False + defaultPosition = False + MinWidth = 0 + MinHeight = 0 + MaxWidth = 0 + MaxHeight = 0 + HasBorder = True + HasCaption = True + StayOnTop = False + CanResize = False + CenterOnScreen = True + Ctl3D = True + WindowState = wsNormal + minimizeIcon = False + maximizeIcon = False + closeIcon = True + helpContextIcon = False + borderStyle = fbsSingle + HelpContext = 0 + Color = clBtnFace + Font.Color = clWindowText + Font.FontStyle = [] + Font.FontHeight = 0 + Font.FontWidth = 0 + Font.FontWeight = 0 + Font.FontName = 'System' + Font.FontOrientation = 0 + Font.FontCharset = 1 + Font.FontPitch = fpDefault + Font.FontQuality = fqDefault + FontDefault = True + Brush.Color = clBtnFace + Brush.BrushStyle = bsSolid + DoubleBuffered = False + PreventResizeFlicks = False + Transparent = False + AlphaBlend = 255 + Border = 2 + MarginLeft = 0 + MarginRight = 0 + MarginTop = 0 + MarginBottom = 0 + MinimizeNormalAnimated = False + RestoreNormalMaximized = False + zOrderChildren = False + statusSizeGrip = True + Localizy = False + ShowHint = True + KeyPreview = False + OnShow = kolMainFormShow + OnFormCreate = kolMainFormFormCreate + EraseBackground = False + supportMnemonics = False + FormCompact = False + GenerateCtlNames = False + Unicode = False + OverrideScrollbars = False + AssignTabOrders = False + Left = 64 + Top = 8 + end +end diff --git a/10.3.3/Activator/MainFrm.pas b/10.3.3/Activator/MainFrm.pas new file mode 100644 index 0000000..316ea0f --- /dev/null +++ b/10.3.3/Activator/MainFrm.pas @@ -0,0 +1,736 @@ +{ KOL MCK } // Do not remove this line! +{$DEFINE KOL_MCK} +unit MainFrm; + +interface + +{$IFDEF KOL_MCK} +uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes, Controls, mckCtrls, mckObjs, Graphics {$IFEND (place your units here->)}; +{$ELSE} +{$I uses.inc} + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, mirror; +{$ENDIF} + +type + {$IF Defined(KOL_MCK)} + {$I MCKfakeClasses.inc} + {$IFDEF KOLCLASSES} {$I TMainFormclass.inc} {$ELSE OBJECTS} PMainForm = ^TMainForm; {$ENDIF CLASSES/OBJECTS} + {$IFDEF KOLCLASSES}{$I TMainForm.inc}{$ELSE} TMainForm = object(TObj) {$ENDIF} + Form: PControl; + {$ELSE not_KOL_MCK} + TMainForm = class(TForm) + {$IFEND KOL_MCK} + btnAbout: TKOLButton; + btnActive: TKOLButton; + btnExit: TKOLButton; + btnReset: TKOLButton; + btnRunBds: TKOLButton; + kolActivator: TKOLProject; + kolMainForm: TKOLForm; + procedure btnAboutClick(Sender: PObj); + procedure btnActiveClick(Sender: PObj); + procedure btnExitClick(Sender: PObj); + procedure btnResetClick(Sender: PObj); + procedure btnRunBdsClick(Sender: PObj); + procedure kolMainFormDestroy(Sender: PObj); + procedure kolMainFormFormCreate(Sender: PObj); + function kolMainFormMessage(var Msg: TMsg; var Rslt: Integer): Boolean; + procedure kolMainFormShow(Sender: PObj); + private + FAppPath, + FBdsPath: string; + FCurFileBuild: Integer; + FSerialNumber, + FRegCode, + FInformation: string; + private + function FindBdsPath: Boolean; + + function GetSystemHostsFile: string; + + procedure BeginCursor; + procedure EndCursor; + + procedure CopyFile(const ASrcFile, ADestFile: string); + + procedure DeleteFile(const AFile: string); + procedure DeleteFiles(const AFileMask: string); + private + procedure BuildNormalCglmFile; + procedure BuildNormalSlipFile; + + procedure GenerateRegistrationCode; + procedure GenerateKeyGenLicense; + + procedure PatchLicenseHostsFile; + procedure RestoreLicenseHostsFile; + + procedure PatchBdsFile; + procedure RestoreBdsFile; + + procedure DeleteTrialFiles; + procedure DeleteTrialRegKeys; + private + procedure DoActive; + procedure DoReset; + procedure DoRunBds; + + procedure ShowAboutMessage; + + procedure Execute; + end; + +var + MainForm {$IFDEF KOL_MCK} : PMainForm {$ELSE} : TMainForm {$ENDIF} ; + +{$IFDEF KOL_MCK} +procedure NewMainForm( var Result: PMainForm; AParent: PControl ); +{$ENDIF} + +implementation + +{.$DEFINE DEBUGMODE} + +uses + SysUtils, ShellAPI, Registry, FileUtils, PatchData, WinUtils, RadKeygen, RadVersion; + +{$IF Defined(KOL_MCK)}{$ELSE}{$R *.DFM}{$IFEND} + +{$IFDEF KOL_MCK} +{$I MainFrm_1.inc} +{$ENDIF} + +const + CSIDL_APPDATA = $001A; // Application Data, new for NT4, \Application Data + CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data + + UM_SHOWABOUT = 100; + +const + defAppMessage = 'Many thanks to elseif, tonzi, freecat, unis, x-force, cjack and others who worked for this keygen!'; + defAppVersion = '15.3'; + + defAppHelperFileName = 'SHFolder.dll'; + + defBdsVersion = '20.0'; + + defBdsLicenseFile = 'RADStudio10_2.slip'; + defBdsLicenseManager = '"%s" -reg -skey 8220_21 -loadKey 2026 -a'; + + defBdsPatchFileName = 'SHFolder.dll'; + + defLicenseHosts: array[0..17] of string = ( + '127.0.0.1 appanalytics.embarcadero.com', + '127.0.0.1 comapi.embarcadero.com', + '127.0.0.1 embt.usertility.com', + '127.0.0.1 external.ws.sanctx.embarcadero.com', + '127.0.0.1 getit.embarcadero.com', + '127.0.0.1 installers.codegear.com', + '127.0.0.1 installers.embarcadero.com', + '127.0.0.1 license-stage.codegear.com', + '127.0.0.1 license.codegear.com', + '127.0.0.1 license.embarcadero.com', + '127.0.0.1 object.ws.sanctx.embarcadero.com', + '127.0.0.1 services.server.v8.srs.sanctuary.codegear.com', + '127.0.0.1 themindelectric.com', + '127.0.0.1 track.embarcadero.com', + '127.0.0.1 www.themindelectric.com', + + '127.0.0.1 LicenseRenewalServicesImpl.services.server.v8.srs.sanctuary.codegear.com', + '127.0.0.1 LicenseUsageServicesImpl.services.server.v8.srs.sanctuary.codegear.com', + '127.0.0.1 RegistrationServicesImpl.services.server.v8.srs.sanctuary.codegear.com' + ); + +{ TMainForm } + +procedure TMainForm.BeginCursor; +begin + SetCursor(LoadCursor(0, IDC_WAIT)); +end; + +procedure TMainForm.btnAboutClick(Sender: PObj); +begin +{$IFDEF DEBUGMODE} + LogMessage('About'); +{$ENDIF} + ShowAboutMessage; +end; + +procedure TMainForm.btnActiveClick(Sender: PObj); +begin +{$IFDEF DEBUGMODE} + LogMessage('Active'); +{$ENDIF} + BeginCursor; + try + DoActive; + finally + EndCursor; + end; +end; + +procedure TMainForm.btnExitClick(Sender: PObj); +begin +{$IFDEF DEBUGMODE} + LogMessage('Exit'); +{$ENDIF} + Self.Form.Close; +end; + +procedure TMainForm.btnResetClick(Sender: PObj); +begin +{$IFDEF DEBUGMODE} + LogMessage('Reset'); +{$ENDIF} + BeginCursor; + try + DoReset; + finally + EndCursor; + end; +end; + +procedure TMainForm.btnRunBdsClick(Sender: PObj); +begin +{$IFDEF DEBUGMODE} + LogMessage('Run'); +{$ENDIF} + BeginCursor; + try + DoRunBds; + finally + EndCursor; + end; +end; + +procedure TMainForm.BuildNormalCglmFile; +var + S: string; +begin + S := FBdsPath + 'Bin\cglm.ini'; + SaveDataToFile(S, defCglmFileDatas, Length(defCglmFileDatas)); + S := GetShellFolderPath(CSIDL_COMMON_APPDATA) + 'Embarcadero\Studio\' + defBdsVersion + '\cglm.ini'; + SaveDataToFile(S, defCglmFileDatas, Length(defCglmFileDatas)); +end; + +procedure TMainForm.BuildNormalSlipFile; +var + S: string; +begin + S := FBdsPath + 'License\*.slip'; + DeleteFiles(S); + S := FBdsPath + 'License\' + defBdsLicenseFile; + SaveDataToFile(S, defSlipFileDatas, Length(defSlipFileDatas)); +end; + +procedure TMainForm.CopyFile(const ASrcFile, ADestFile: string); +{$IFDEF DEBUGMODE} +var + bRet: Boolean; +{$ENDIF} +begin +{$IFDEF DEBUGMODE} + bRet := Windows.CopyFile(PChar(ASrcFile), PChar(ADestFile), False); + if bRet then + LogMessage('CopyFile.OK: ' + ADestFile) + else LogMessage('CopyFile.Error: ' + ADestFile + ', ' + SysErrorMessage(GetLastError)); +{$ELSE} + Windows.CopyFile(PChar(ASrcFile), PChar(ADestFile), False); +{$ENDIF} +end; + +procedure TMainForm.DeleteFile(const AFile: string); +{$IFDEF DEBUGMODE} +var + bRet: Boolean; +{$ENDIF} +begin +{$IFDEF DEBUGMODE} + LogMessage('DeleteFile: ' + AFile + ' ...'); + bRet := Windows.DeleteFile(PChar(AFile)); + if bRet then + LogMessage('DeleteFile.OK: ' + AFile) + else LogMessage('DeleteFile.Error: ' + AFile + ', ' + SysErrorMessage(GetLastError)); +{$ELSE} + Windows.DeleteFile(PChar(AFile)); +{$ENDIF} +end; + +procedure TMainForm.DeleteFiles(const AFileMask: string); + //////////////////////////////////////////////////////////////////////////////// + //: Lsuper 2005.09.21 + //: жļ + // + //////////////////////////////////////////////////////////////////////////////// + function IsDirNotation(const AName: string): Boolean; + begin + Result := (AName = '.') or (AName = '..'); + end; +var + cSearchRec: TSearchRec; + strFilePath: string; +begin +{$IFDEF DEBUGMODE} + LogMessage('DeleteFiles: ' + AFileMask + ' ...'); +{$ENDIF} + strFilePath := ExtractFilePath(AFileMask); + if FindFirst(AFileMask, faAnyFile, cSearchRec) = 0 then + repeat + if (cSearchRec.Name <> '') and not IsDirNotation(cSearchRec.Name) then + begin +{$IFDEF DEBUGMODE} + LogMessage('DeleteFiles, File: ' + strFilePath + cSearchRec.Name); +{$ENDIF} + SysUtils.DeleteFile(strFilePath + cSearchRec.Name); + end; + until FindNext(cSearchRec) <> 0; + SysUtils.FindClose(cSearchRec); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2011.01.05 +//ܣȨϢ +// +//////////////////////////////////////////////////////////////////////////////// +procedure TMainForm.DeleteTrialFiles; +var + AllUsersPath, UserPath: string; +begin +{$IFDEF DEBUGMODE} + LogMessage('DeleteTrialFiles'); +{$ENDIF} + AllUsersPath := GetShellFolderPath(CSIDL_COMMON_APPDATA) + 'Embarcadero\'; + UserPath := GetShellFolderPath(CSIDL_APPDATA) + 'Embarcadero\'; + +{$IFDEF DEBUGMODE} + LogMessage('DeleteTrialFiles.AllUsersPath: ' + AllUsersPath); + LogMessage('DeleteTrialFiles.UserPath: ' + UserPath); +{$ENDIF} + + DeleteFile(UserPath + '.cgb_license'); + DeleteFile(AllUsersPath + '.cgb_license'); + + DeleteFile(UserPath + '.licenses\.cg_license'); + DeleteFile(AllUsersPath + '.licenses\.cg_license'); + + DeleteFile(AllUsersPath + 'RAD Studio Activation.slip'); + + DeleteFiles(AllUsersPath + '.82*.slip'); +end; + +procedure TMainForm.DeleteTrialRegKeys; +begin +{$IFDEF DEBUGMODE} + LogMessage('DeleteTrialRegKeys'); +{$ENDIF} +end; + +procedure TMainForm.DoActive; +var + S: string; + nBuild: Integer; +begin +{$IFDEF DEBUGMODE} + LogMessage('DoActive'); +{$ENDIF} + if not FindBdsPath then + begin + ShowError('No BDS find!'); + Exit; + end; + S := FBdsPath + 'Bin\bds.exe'; + nBuild := GetFileBuildVersion(S); + if nBuild <> FCurFileBuild then + begin + ShowError('BDS version not support!'); + Exit; + end; + BuildNormalCglmFile; + BuildNormalSlipFile; + RestoreBdsFile; + + GenerateRegistrationCode; + GenerateKeyGenLicense; + PatchBdsFile; + PatchLicenseHostsFile; +{ + ShowMessage('Active', 'OK!'); +} + ShowMessage('Active', 'OK! Code: ' + FRegCode + ', Serial: ' + FSerialNumber); +end; + +procedure TMainForm.DoReset; +begin +{$IFDEF DEBUGMODE} + LogMessage('DoReset'); +{$ENDIF} + if not FindBdsPath then + begin + ShowError('No BDS find!'); + Exit; + end; + DeleteTrialFiles; + DeleteTrialRegKeys; + BuildNormalCglmFile; + BuildNormalSlipFile; + RestoreBdsFile; + RestoreLicenseHostsFile; + ShowMessage('Reset', 'OK!'); +end; + +procedure TMainForm.DoRunBds; +var + BdsExe: string; +begin +{$IFDEF DEBUGMODE} + LogMessage('DoRunBds'); +{$ENDIF} + if not FindBdsPath then + begin + ShowError('No BDS find!'); + Exit; + end; + FBdsPath := FBdsPath + 'Bin'; + BdsExe := FBdsPath + '\bds.exe'; + ShellExecute(0, 'open', PChar(BdsExe), '-pDelphi', PChar(FBdsPath), SW_NORMAL); + Delay(20); +end; + +procedure TMainForm.EndCursor; +begin + SetCursor(LoadCursor(0, IDC_ARROW)); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2011.09.20 +//ܣֱִ Lite İװ +// +//////////////////////////////////////////////////////////////////////////////// +procedure TMainForm.Execute; +var + S: string; + nBuild: Integer; +begin + if not FindBdsPath then + begin + LogMessage('No BDS find!'); + Exit; + end; + S := FBdsPath + 'Bin\bds.exe'; + nBuild := GetFileBuildVersion(S); + if nBuild <> FCurFileBuild then + begin + LogMessage('BDS version not support!'); + Exit; + end; + + GenerateRegistrationCode; + GenerateKeyGenLicense; + BuildNormalCglmFile; + BuildNormalSlipFile; + PatchBdsFile; + PatchLicenseHostsFile; +{ + LogMessage('Done.'); +} + LogMessage('Done. Code: ' + FRegCode + ', Serial: ' + FSerialNumber); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2013.02.15 +//ܣ Delphi +// +//////////////////////////////////////////////////////////////////////////////// +function TMainForm.FindBdsPath: Boolean; +begin + Result := False; + with TRegistry.Create do + try + Access := KEY_READ; + RootKey := HKEY_LOCAL_MACHINE; + if OpenKeyReadOnly('SOFTWARE\Embarcadero\BDS\' + defBdsVersion) then + begin + FBdsPath := ReadString('RootDir'); + CloseKey; + end; + finally + Free; + end; + if FBdsPath <> '' then + begin + FBdsPath := IncludeTrailingPathDelimiter(FBdsPath); + Result := FileExists(FBdsPath + 'Bin\bds.exe'); + end; +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2013.05.01 +//ܣ +// +//ע⣺û IPC ֪ͨͨѶ +//////////////////////////////////////////////////////////////////////////////// +procedure TMainForm.GenerateKeyGenLicense; + + function CurrentRadStudioVersion: PRadStudioVersion; inline; + begin + Assert(RadStudioVersionList.Count > 0); + Result := PRadStudioVersion(RadStudioVersionList.Objects[0]); + end; +begin +{$IFDEF DEBUGMODE} + LogMessage('GenerateKeyGenLicense'); +{$ENDIF} + FSerialNumber := RadKeygen.GenerateSerialNumber; + FRegCode := RadKeygen.GetRegistrationCode; + RadKeygen.GenerateLicenseFile(FSerialNumber, FRegCode, CurrentRadStudioVersion, FInformation); +end; + +//////////////////////////////////////////////////////////////////////////////// +//: Lsuper 2006.09.19 +//: ע +// +//ע⣺û IPC ֪ͨͨѶ +//////////////////////////////////////////////////////////////////////////////// +procedure TMainForm.GenerateRegistrationCode; +var + si: TStartupInfo; + pi: TProcessInformation; + nExitCode: LongWord; + strHelper, strCommandLine, strWorkDir: string; +begin +{$IFDEF DEBUGMODE} + LogMessage('GenerateRegistrationCode'); +{$ENDIF} + strHelper := FAppPath + defAppHelperFileName; + if not FileExists(strHelper) then + SaveDataToFile(strHelper, defHelperDatas, Length(defHelperDatas)); + strWorkDir := FBdsPath + 'Bin'; + strCommandLine := Format('%s\LicenseManager.exe', [strWorkDir]); + if not FileExists(strCommandLine) then + raise Exception.CreateFmt('File %s not exists!', [strCommandLine]); + strCommandLine := Format(defBdsLicenseManager, [strCommandLine]); + FillChar(si, SizeOf(TStartupInfo), 0); + with si do + begin + cb := SizeOf(TStartupInfo); + dwFlags := STARTF_USESHOWWINDOW + STARTF_FORCEONFEEDBACK; + wShowWindow := SW_HIDE; + end; + if CreateProcessEx(nil, PChar(strCommandLine), nil, nil, False, 0, nil, PChar(strWorkDir), si, pi, AnsiString(strHelper)) then + try + WaitForSingleObject(pi.hProcess, INFINITE); + GetExitCodeProcess(pi.hProcess, nExitCode); + if nExitCode <> 0 then + raise Exception.Create('BdsReg error!'); + finally + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + end + else RaiseLastOSError; +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2009.01.30 +//ܣȡWindowsϵͳĿ¼ +// +//////////////////////////////////////////////////////////////////////////////// +function TMainForm.GetSystemHostsFile: string; +const + defHostsFilePath = 'drivers\etc\hosts'; +var + nRet: LongWord; +begin + SetLength(Result, MAX_PATH); + nRet := GetSystemDirectory(PChar(Result), MAX_PATH); + if nRet = 0 then + Result := '' + else begin + SetLength(Result, nRet); + Result := IncludeTrailingPathDelimiter(Result) + defHostsFilePath; + end; +end; + +procedure TMainForm.kolMainFormDestroy(Sender: PObj); +begin + LogMessage('Destroy'); +{$IFNDEF DEBUGMODE} + DeleteFiles(FAppPath + '*.*'); + RemoveDirectory(PChar(FAppPath)); +{$ENDIF} +end; + +procedure TMainForm.kolMainFormFormCreate(Sender: PObj); +var + S: string; +begin + LogMessage('Create'); + + FAppPath := GetShellFolderPath(CSIDL_APPDATA); + FAppPath := IncludeTrailingPathDelimiter(FAppPath) + 'Activator\' + defAppVersion + '\'; + ForceDirectories(FAppPath); + S := GetModuleName(HInstance); + FCurFileBuild := GetFileBuildVersion(S); + + SetEnvironmentVariable('SESSIONNAME', 'Conso1e'); + + if ParamStr(1) = '-process' then + begin + Execute; + Halt(1); + end; +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2003.09.21 +//ܣϵͳ˵ +// +//////////////////////////////////////////////////////////////////////////////// +function TMainForm.kolMainFormMessage(var Msg: TMsg; + var Rslt: Integer): Boolean; +begin + if (Msg.message = WM_SYSCOMMAND) and (Msg.WParam = UM_SHOWABOUT) then + ShowAboutMessage; + Result := False; +end; + +procedure TMainForm.kolMainFormShow(Sender: PObj); +var + hMain : HMENU; +begin + LogMessage('Show'); + + hMain := GetSystemMenu(Self.Form.Handle, False); + AppendMenu(hMain, MF_SEPARATOR, 0, nil); + AppendMenu(hMain, MF_STRING{ or MF_CHECKED}, UM_SHOWABOUT, 'About ...'); + SetMainFormHandle(Self.Form.Handle); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2011.09.21 +//ܣ޸ BDS.exe ļ +// +//////////////////////////////////////////////////////////////////////////////// +procedure TMainForm.PatchBdsFile; +var + S: string; +begin +{$IFDEF DEBUGMODE} + LogMessage('PatchBdsFile'); +{$ENDIF} + S := FBdsPath + 'Bin\' + defBdsPatchFileName; +{$IFDEF DEBUGMODE} + LogMessage('Patch: ' + S); +{$ENDIF} + SaveDataToFile(S, defBdsPatchDllDatas, SizeOf(defBdsPatchDllDatas)); +end; + +procedure TMainForm.PatchLicenseHostsFile; +var + F, S: string; + nIndex, I: Integer; + pList, pHosts: PStrListEx; +begin +{$IFDEF DEBUGMODE} + LogMessage('PatchLicenseHostsFile'); +{$ENDIF} + F := GetSystemHostsFile; + pHosts := NewStrListEx; + with pHosts^ do + try + if FileExists(F) then + LoadFromFile(F); + pList := NewStrListEx; + for S in defLicenseHosts do + pList.Add(S); + for I := 0 to Count - 1 do + begin + S := Trim(Items[I]); + nIndex := pList.IndexOf(S); + if nIndex >= 0 then + pList.Delete(nIndex); + end; + if pList.Count > 0 then + try +{$IFDEF DEBUGMODE} + LogMessage('PatchLicenseHostsFile, SaveToFile: ' + F); +{$ENDIF} + AddStrings(pList); + FileSetReadOnly(F, False); + SaveToFile(F); + except + on E: Exception do + LogMessage('Disable Hosts Error: ' + E.Message); + end; + pList.Free; + finally + Free; + end; +end; + +procedure TMainForm.RestoreBdsFile; +var + S: string; +begin +{$IFDEF DEBUGMODE} + LogMessage('RestoreBdsFile'); +{$ENDIF} + S := FBdsPath + 'Bin\' + defBdsPatchFileName; +{$IFDEF DEBUGMODE} + LogMessage('Restore: ' + S); +{$ENDIF} + Self.DeleteFile(S);; +end; + +procedure TMainForm.RestoreLicenseHostsFile; +var + F, S: string; + nIndex, nRet, I: Integer; + pList, pHosts: PStrListEx; +begin +{$IFDEF DEBUGMODE} + LogMessage('RestoreLicenseHostsFile'); +{$ENDIF} + F := GetSystemHostsFile; + if not FileExists(F) then + Exit; + pHosts := NewStrListEx; + with pHosts^ do + try + LoadFromFile(F); + pList := NewStrListEx; + for S in defLicenseHosts do + pList.Add(S); + nRet := 0; + for I := Count - 1 downto 0 do + begin + S := Trim(Items[I]); + nIndex := pList.IndexOf(S); + if nIndex < 0 then + Continue; + pHosts.Delete(I); + Inc(nRet); + end; + if nRet > 0 then + try +{$IFDEF DEBUGMODE} + LogMessage('RestoreLicenseHostsFile, SaveToFile: ' + F); +{$ENDIF} + FileSetReadOnly(F, False); + SaveToFile(F); + except + on E: Exception do + LogMessage('Disable Hosts Error: ' + E.Message); + end; + pList.Free; + finally + Free; + end; +end; + +procedure TMainForm.ShowAboutMessage; +begin + with Self.Form^ do + ShellAbout(Handle, PChar(string(Caption) + ', Lsuper'), PAnsiChar(AnsiString(defAppMessage)), Icon); +end; + +end. diff --git a/10.3.3/Activator/MainFrm_1.inc b/10.3.3/Activator/MainFrm_1.inc new file mode 100644 index 0000000..c8c0c90 --- /dev/null +++ b/10.3.3/Activator/MainFrm_1.inc @@ -0,0 +1,49 @@ +{ KOL MCK } // Do not remove this line! + +procedure NewMainForm( var Result: PMainForm; AParent: PControl ); +begin + + {$IFDEF KOLCLASSES} + Result := PMainForm.Create; + {$ELSE OBJECTS} + New( Result, Create ); + {$ENDIF KOL CLASSES/OBJECTS} + Result.Form := NewForm( AParent, 'Delphi 10.3.3 Activator' ).SetPosition( 8, 8 ); + Applet := Result.Form; + Result.Form.Add2AutoFree( Result ); + Result.Form.Style := Result.Form.Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX); + Result.Form.SetClientSize( 534, 122 ); + Result.Form.OnMessage := Result.kolMainFormMessage; + Result.Form.OnShow := Result.kolMainFormShow; + Result.Form.OnDestroy := Result.kolMainFormDestroy; + Result.btnAbout := NewButton( Result.Form, '&About' ).SetPosition( 325, 16 ).SetSize( 90, 90 ); + {$IFDEF USE_MHTOOLTIP} + Result.btnAbout.Hint.Text := 'About'; + {$ENDIF USE_MHTOOLTIP} + Result.btnReset := NewButton( Result.Form, 'Re&set' ).SetPosition( 222, 16 ).SetSize( 90, 90 ); + {$IFDEF USE_MHTOOLTIP} + Result.btnReset.Hint.Text := 'Reset Delphi 10.3.2'; + {$ENDIF USE_MHTOOLTIP} + Result.btnExit := NewButton( Result.Form, '&Exit' ).SetPosition( 428, 16 ).SetSize( 90, 90 ); + {$IFDEF USE_MHTOOLTIP} + Result.btnExit.Hint.Text := 'Exit'; + {$ENDIF USE_MHTOOLTIP} + Result.btnRunBds := NewButton( Result.Form, '&Run' ).SetPosition( 119, 16 ).SetSize( 90, 90 ); + {$IFDEF USE_MHTOOLTIP} + Result.btnRunBds.Hint.Text := 'Run Delphi 10.3.2'; + {$ENDIF USE_MHTOOLTIP} + Result.btnActive := NewButton( Result.Form, '&Active' ).SetPosition( 16, 16 ).SetSize( 90, 90 ); + {$IFDEF USE_MHTOOLTIP} + Result.btnActive.Hint.Text := 'Active Delphi 10.3.2'; + {$ENDIF USE_MHTOOLTIP} + Result.btnAbout.OnClick := Result.btnAboutClick; + Result.btnReset.OnClick := Result.btnResetClick; + Result.btnExit.OnClick := Result.btnExitClick; + Result.btnRunBds.OnClick := Result.btnRunBdsClick; + Result.btnActive.OnClick := Result.btnActiveClick; + Result.Form.CenterOnParent.CanResize := False; + Result.Form.Perform( WM_INITMENU, 0, 0 ); + Result.kolMainFormFormCreate( Result ); + +end; + diff --git a/10.3.3/Activator/PatchData.inc b/10.3.3/Activator/PatchData.inc new file mode 100644 index 0000000..eda62b4 --- /dev/null +++ b/10.3.3/Activator/PatchData.inc @@ -0,0 +1,3415 @@ + defCglmFileDatas: array[0..255] of Byte = ( + $5B, $45, $6D, $62, $61, $72, $63, $61, $64, $65, $72, $6F, $20, $4C, $69, $63, + $65, $6E, $73, $65, $20, $4D, $61, $6E, $61, $67, $65, $6D, $65, $6E, $74, $5D, + $0D, $0A, $52, $6F, $6F, $74, $44, $69, $72, $3D, $24, $7B, $4D, $4F, $44, $55, + $4C, $45, $5F, $44, $49, $52, $7D, $5C, $2E, $2E, $0D, $0A, $4C, $69, $63, $65, + $6E, $73, $65, $44, $69, $72, $3D, $24, $7B, $52, $4F, $4F, $54, $44, $49, $52, + $7D, $5C, $4C, $69, $63, $65, $6E, $73, $65, $0D, $0A, $49, $6E, $66, $6F, $44, + $69, $72, $3D, $24, $7B, $43, $4F, $4D, $4D, $4F, $4E, $5F, $41, $50, $50, $44, + $41, $54, $41, $7D, $5C, $45, $6D, $62, $61, $72, $63, $61, $64, $65, $72, $6F, + $5C, $2E, $6C, $69, $63, $65, $6E, $73, $65, $73, $0D, $0A, $53, $6C, $69, $70, + $44, $69, $72, $3D, $24, $7B, $43, $4F, $4D, $4D, $4F, $4E, $5F, $41, $50, $50, + $44, $41, $54, $41, $7D, $5C, $45, $6D, $62, $61, $72, $63, $61, $64, $65, $72, + $6F, $5C, $0D, $0A, $52, $65, $67, $45, $78, $65, $3D, $4C, $69, $63, $65, $6E, + $73, $65, $4D, $61, $6E, $61, $67, $65, $72, $2E, $65, $78, $65, $0D, $0A, $4C, + $6F, $63, $6B, $54, $79, $70, $65, $3D, $35, $0D, $0A, $5B, $45, $6D, $62, $61, + $72, $63, $61, $64, $65, $72, $6F, $20, $53, $4C, $49, $50, $20, $46, $69, $6C, + $65, $73, $5D, $0D, $0A, $53, $4C, $49, $50, $46, $69, $6C, $65, $3D, $0D, $0A + ); + + defSlipFileDatas: array[0..1919] of Byte = ( + $CC, $8F, $F6, $42, $00, $00, $07, $78, $D6, $E1, $23, $6F, $D7, $83, $D2, $45, + $8F, $73, $42, $E9, $D6, $CF, $61, $F1, $5D, $6B, $8B, $F9, $9C, $46, $CC, $77, + $1E, $DF, $BB, $D4, $40, $F4, $70, $2B, $CA, $EB, $BB, $5D, $BD, $52, $59, $99, + $C3, $E9, $17, $E8, $3B, $49, $92, $A3, $91, $44, $8B, $34, $03, $DF, $B3, $9A, + $25, $A2, $09, $54, $85, $AC, $A4, $2D, $DC, $0E, $5C, $B4, $F6, $8B, $09, $C4, + $5B, $67, $F3, $B3, $F8, $6E, $9F, $49, $7C, $F8, $C1, $FC, $52, $DD, $7D, $51, + $A6, $9B, $8D, $39, $F3, $30, $64, $93, $FC, $A9, $16, $9A, $2C, $5F, $97, $D4, + $F1, $38, $88, $40, $05, $AC, $82, $BC, $68, $D6, $59, $20, $B1, $AF, $B1, $61, + $9B, $4B, $07, $A6, $AD, $EC, $28, $A2, $07, $39, $99, $EB, $A2, $5D, $CD, $08, + $63, $BC, $9B, $CC, $46, $E2, $14, $5C, $8B, $E2, $86, $1C, $84, $77, $46, $9B, + $C0, $F9, $6C, $A7, $17, $51, $A2, $A4, $B0, $1B, $88, $00, $7C, $BD, $8B, $AD, + $39, $CE, $74, $7F, $DA, $D1, $D3, $61, $F9, $5A, $69, $AD, $85, $83, $3F, $F5, + $21, $43, $E8, $DB, $AC, $5A, $EB, $78, $04, $B7, $8F, $86, $74, $C1, $15, $5C, + $AF, $83, $A0, $0E, $FC, $75, $11, $F0, $A7, $D5, $44, $F0, $55, $7D, $AE, $BC, + $95, $3E, $A6, $28, $1C, $B9, $D0, $83, $1E, $C5, $51, $71, $95, $F7, $DD, $5B, + $DD, $49, $4B, $C7, $FD, $A2, $5E, $8F, $35, $65, $FA, $AC, $D0, $3C, $BD, $6E, + $6A, $DF, $FA, $EA, $3F, $9C, $06, $37, $97, $A4, $E6, $44, $D6, $7D, $6C, $8B, + $E9, $F2, $09, $DD, $63, $0A, $C5, $FF, $B4, $1A, $E3, $7D, $5E, $FD, $EB, $E0, + $76, $F3, $7E, $62, $A7, $B9, $D3, $0C, $FB, $68, $06, $E4, $9D, $99, $36, $AB, + $08, $53, $B1, $88, $FD, $00, $C3, $0D, $41, $F4, $E5, $D0, $7C, $EE, $78, $53, + $8D, $E4, $B5, $02, $AC, $17, $77, $96, $8A, $94, $3D, $80, $34, $5E, $83, $E8, + $A4, $14, $83, $09, $7C, $98, $89, $F8, $35, $E8, $60, $04, $FA, $8C, $A2, $3A, + $9B, $28, $1A, $BA, $A0, $CB, $25, $F1, $63, $15, $D8, $9B, $9F, $2E, $B2, $0C, + $76, $B6, $84, $8E, $07, $DA, $19, $50, $9E, $CB, $E1, $14, $F1, $1B, $57, $FF, + $AD, $96, $0A, $9B, $62, $24, $D1, $C2, $B8, $5B, $E5, $6A, $02, $97, $A4, $AF, + $2B, $AE, $10, $7A, $F2, $C9, $91, $57, $CC, $6F, $1D, $A7, $D9, $D7, $7D, $B6, + $6E, $50, $F7, $D6, $E0, $3A, $C1, $0D, $1D, $DC, $FD, $E4, $05, $C5, $0A, $2D, + $82, $FB, $D8, $49, $D9, $3B, $4B, $9D, $EA, $89, $6F, $F8, $5F, $32, $CA, $AC, + $81, $39, $BC, $26, $48, $8E, $E1, $CC, $27, $FA, $56, $55, $E6, $B7, $F5, $55, + $8F, $33, $33, $D4, $84, $D0, $5B, $D2, $59, $72, $B2, $FB, $C6, $2A, $A9, $78, + $41, $8C, $DE, $DB, $7D, $B7, $33, $77, $F4, $B9, $92, $6F, $83, $0A, $2C, $C5, + $92, $D2, $03, $E5, $5B, $1B, $D5, $BC, $80, $29, $8D, $52, $6F, $8E, $ED, $AF, + $15, $A6, $7D, $1F, $90, $EF, $EA, $7C, $ED, $1C, $31, $95, $B0, $C2, $7F, $D1, + $6A, $74, $AB, $A3, $DD, $42, $8E, $7A, $55, $94, $F4, $D9, $38, $C0, $71, $52, + $F5, $B0, $DC, $04, $AF, $37, $61, $8A, $CD, $86, $6C, $C2, $3D, $16, $9B, $FB, + $B9, $78, $B4, $16, $40, $B0, $89, $A5, $7C, $81, $05, $0B, $8E, $CD, $CF, $6C, + $8E, $70, $48, $D1, $EE, $E5, $73, $E7, $5E, $3D, $EE, $9D, $D9, $61, $E9, $53, + $4B, $D6, $B4, $F9, $7A, $DC, $5B, $75, $AE, $E2, $96, $4B, $BE, $13, $62, $90, + $B6, $97, $53, $D7, $3F, $23, $C5, $FE, $EA, $11, $A1, $52, $6B, $BD, $94, $87, + $4C, $CD, $0A, $6A, $9D, $DC, $87, $43, $A3, $46, $5D, $B4, $81, $FE, $73, $9F, + $10, $70, $EC, $88, $91, $21, $9A, $15, $40, $F0, $EB, $F5, $21, $EF, $7B, $7F, + $A1, $96, $FB, $26, $C6, $2F, $3E, $E6, $F1, $B3, $3D, $E2, $5F, $08, $86, $D8, + $B0, $1E, $FF, $06, $48, $F6, $B9, $BB, $4F, $AF, $49, $6F, $E5, $FF, $DB, $75, + $B3, $5A, $04, $FC, $D1, $C9, $50, $96, $73, $0E, $93, $9B, $86, $10, $B7, $78, + $7E, $AB, $DE, $F4, $34, $9B, $41, $6D, $C9, $D7, $B6, $18, $9F, $79, $57, $90, + $98, $99, $63, $A2, $32, $37, $9B, $CE, $B0, $2D, $B1, $7A, $64, $81, $DC, $80, + $5A, $F9, $32, $41, $F7, $9E, $E1, $5E, $FD, $29, $2D, $AA, $B2, $AB, $06, $F1, + $1A, $41, $EE, $87, $FA, $28, $8B, $1B, $7D, $DD, $86, $9A, $4C, $BD, $25, $2A, + $E2, $97, $CA, $37, $E1, $68, $0E, $D4, $B0, $FC, $46, $85, $0D, $18, $AD, $8D, + $FB, $51, $B1, $31, $06, $A4, $BA, $F0, $1D, $A3, $15, $7C, $BB, $A7, $8D, $35, + $F2, $43, $01, $9E, $E7, $82, $58, $C6, $25, $7F, $F0, $E6, $B4, $6B, $E4, $43, + $1C, $97, $AF, $A6, $4E, $C7, $62, $31, $89, $A5, $D6, $6B, $DF, $3F, $03, $EC, + $A7, $D1, $2B, $F4, $2A, $58, $B1, $DB, $9C, $0D, $82, $59, $78, $F1, $9D, $87, + $09, $E9, $5D, $2C, $8E, $B1, $9F, $46, $D7, $30, $30, $BA, $F8, $F5, $62, $87, + $0D, $03, $8D, $9D, $F3, $1F, $8E, $79, $04, $FF, $AB, $D4, $44, $90, $79, $65, + $DF, $D2, $A1, $17, $B5, $73, $0F, $FB, $B9, $FD, $5B, $E2, $3E, $41, $B5, $D2, + $95, $09, $82, $41, $0C, $D4, $BA, $A3, $48, $D2, $7E, $14, $86, $AE, $9D, $13, + $9C, $49, $60, $E0, $95, $B1, $7F, $96, $26, $39, $C2, $A5, $F1, $03, $A2, $54, + $66, $87, $F2, $D8, $67, $EE, $2D, $4B, $95, $8E, $DF, $1A, $E5, $4F, $6E, $D7, + $A8, $C1, $38, $95, $77, $03, $C6, $FA, $F3, $63, $A8, $13, $00, $89, $C2, $F3, + $7C, $A8, $48, $2B, $8E, $84, $EE, $18, $A4, $01, $08, $BF, $CB, $A7, $3B, $CA, + $54, $59, $BA, $C2, $A4, $64, $A9, $61, $3F, $B5, $F3, $C2, $55, $F6, $36, $2B, + $A0, $CB, $F5, $74, $92, $37, $68, $EE, $A9, $B4, $21, $AD, $02, $6C, $C3, $F1, + $87, $40, $DB, $35, $3B, $90, $ED, $EA, $5C, $86, $12, $58, $C1, $8D, $FA, $71, + $B5, $71, $3B, $9A, $D2, $85, $68, $D6, $67, $18, $BD, $D0, $A0, $3F, $A4, $0F, + $58, $FD, $84, $92, $65, $E0, $2B, $4D, $91, $B3, $AC, $4A, $FF, $3D, $1D, $A4, + $CE, $E0, $47, $B5, $32, $59, $C2, $BC, $8C, $6F, $DF, $68, $5F, $E5, $B7, $B4, + $04, $FF, $60, $6E, $F1, $F7, $CC, $06, $D3, $62, $39, $EC, $CC, $FD, $26, $E6, + $54, $47, $FA, $8B, $89, $21, $B4, $3B, $32, $F6, $B5, $CA, $58, $DF, $45, $51, + $D2, $A1, $8F, $46, $E7, $52, $67, $FA, $DA, $D3, $6B, $DD, $02, $74, $AD, $FE, + $86, $31, $AF, $55, $47, $E4, $EB, $B9, $02, $CB, $39, $3C, $94, $84, $99, $68, + $EB, $34, $2E, $81, $F7, $E7, $75, $AE, $39, $64, $C4, $83, $A5, $4E, $C1, $00, + $49, $CB, $FB, $DD, $1C, $8B, $77, $59, $B4, $C1, $C4, $75, $9B, $7E, $0F, $D4, + $8E, $F5, $65, $E6, $25, $49, $98, $DC, $93, $28, $B9, $46, $52, $99, $F0, $F7, + $7C, $96, $56, $3D, $D0, $AB, $F3, $4A, $D1, $1F, $73, $9F, $DF, $BB, $01, $B6, + $56, $41, $A8, $E6, $C1, $19, $D7, $25, $7B, $90, $C9, $CA, $60, $FA, $47, $3A, + $8E, $BE, $9B, $58, $F9, $24, $24, $DD, $D9, $A2, $42, $C0, $29, $26, $F5, $B4, + $B6, $43, $AA, $01, $13, $FA, $9D, $EC, $0E, $E4, $7C, $1C, $ED, $E6, $84, $14, + $EE, $62, $79, $85, $DD, $A2, $57, $94, $4D, $51, $BD, $B3, $AD, $1F, $C8, $24, + $6A, $D7, $90, $8C, $2B, $B4, $59, $5F, $D1, $E1, $C0, $4B, $E8, $21, $31, $F8, + $A0, $DE, $0F, $FC, $3B, $29, $BD, $CB, $D4, $51, $AE, $1F, $3A, $A2, $D8, $EB, + $5B, $D8, $76, $48, $DA, $AE, $E3, $4B, $B4, $45, $4E, $E5, $EF, $9F, $74, $90, + $30, $2E, $BA, $C8, $B6, $2F, $E6, $16, $33, $B7, $F4, $A8, $3B, $D9, $4B, $60, + $F3, $9F, $CA, $7D, $F8, $07, $2E, $88, $9A, $95, $27, $F5, $09, $5A, $AC, $B4, + $F7, $5C, $D4, $71, $0E, $D6, $EF, $FE, $3C, $C2, $17, $20, $E9, $B4, $88, $6D, + $CC, $58, $4E, $F4, $F9, $FE, $2E, $A4, $6A, $26, $EC, $9E, $CD, $23, $8E, $40, + $08, $C1, $90, $CF, $2B, $C8, $0F, $65, $F5, $C4, $86, $76, $F7, $41, $1C, $8E, + $8C, $A2, $06, $C8, $22, $59, $F7, $8F, $E7, $4F, $C6, $35, $39, $8C, $E2, $E8, + $24, $D0, $59, $77, $CE, $B7, $91, $04, $D9, $48, $6F, $CC, $8A, $D5, $4D, $D0, + $1F, $3E, $CB, $F7, $E0, $4A, $83, $4A, $3B, $CC, $D8, $95, $05, $FA, $71, $77, + $F7, $8D, $C3, $7F, $EE, $6F, $0D, $D6, $C9, $AB, $66, $A7, $44, $22, $DA, $AF, + $CC, $52, $D6, $71, $5A, $C4, $FB, $89, $0F, $C5, $63, $62, $DD, $B8, $E8, $3E, + $DC, $09, $56, $98, $92, $FD, $5F, $F0, $7E, $46, $B8, $90, $D1, $2A, $C8, $4B, + $13, $D8, $83, $CC, $5C, $B3, $4D, $01, $8E, $E9, $A4, $1E, $C4, $1B, $05, $E1, + $D9, $EB, $10, $FC, $70, $56, $AB, $8C, $9F, $5B, $A7, $6D, $6B, $A3, $B0, $E1, + $3B, $E2, $44, $27, $C3, $A0, $F3, $44, $E5, $42, $27, $E2, $C0, $9A, $26, $DF, + $52, $3D, $B2, $F7, $81, $1F, $FA, $11, $61, $F9, $E9, $87, $4C, $FA, $7F, $33, + $8C, $85, $D8, $66, $F2, $48, $38, $F0, $BD, $84, $2B, $FF, $7F, $6B, $D5, $9E, + $BF, $69, $B6, $3E, $57, $CA, $96, $93, $09, $BB, $7D, $3C, $D9, $DC, $D1, $58, + $83, $12, $7C, $C7, $E8, $C9, $13, $B4, $53, $64, $FB, $8C, $C9, $63, $E6, $14, + $26, $C4, $C9, $F7, $56, $AE, $6B, $26, $D6, $C2, $B2, $77, $D0, $13, $1A, $E8, + $C4, $B5, $0E, $D8, $66, $44, $D0, $B7, $CB, $63, $94, $68, $0F, $E2, $E3, $9E, + $5D, $A0, $6B, $2C, $EB, $88, $BB, $33, $9F, $28, $7F, $A8, $A2, $B9, $33, $EC, + $54, $62, $D9, $BE, $86, $1A, $8E, $08, $55, $F5, $B6, $A8, $5C, $DD, $3E, $6E, + $B7, $9C, $97, $40, $FB, $31, $17, $DD, $F7, $9C, $21, $AD, $5E, $2B, $AE, $D1, + $8E, $6B, $8C, $60, $1B, $C7, $F0, $85, $13, $F3, $6D, $62, $BE, $C6, $B3, $76, + $87, $09, $7B, $A3, $ED, $AC, $2D, $D9, $7C, $18, $DE, $FC, $97, $00, $A0, $32, + $64, $99, $F7, $CA, $38, $A8, $58, $6E, $AA, $C9, $AC, $58, $A6, $59, $68, $9D, + $C5, $F2, $5F, $9C, $53, $68, $A8, $B3, $95, $64, $8B, $3F, $07, $ED, $BF, $F4, + $0E, $8C, $44, $12, $81, $E5, $A6, $16, $8A, $17, $11, $A7, $F6, $81, $14, $D8, + $14, $55, $C8, $E5, $9E, $60, $FA, $79, $24, $BD, $AA, $AB, $79, $FC, $06, $3C, + $FC, $DC, $98, $7B, $E5, $2F, $7D, $DA, $9B, $CA, $7B, $83, $44, $29, $E9, $BC, + $D3, $05, $C1, $14, $68, $87, $8B, $A5, $0B, $EC, $2E, $57, $E5, $CB, $90, $45, + $DE, $47, $62, $9B, $C8, $93, $3C, $C7, $3C, $08, $AE, $BC, $FE, $5D, $FC, $6A, + $4E, $A8, $A4, $DF, $06, $F5, $52, $29, $95, $A5, $D8, $1D, $F4, $16, $4E, $B5, + $A6, $C8, $10, $EF, $77, $34, $C9, $99, $A4, $7E, $A2, $3C, $22, $A2, $85, $FB, + $65, $D8, $68, $1E, $EC, $F6, $DD, $3E, $D7, $70, $62, $83, $E9, $E1, $27, $AF, + $2F, $39, $F4, $BD, $80, $3E, $F3, $3A, $0F, $C1, $F0, $F0, $16, $CE, $45, $42, + $B1, $BA, $C1, $57, $B1, $7C, $27, $EA, $F4, $9E, $15, $E1, $2A, $29, $9D, $FA, + $C0, $16, $DD, $3D, $70, $CB, $C2, $94, $7B, $FE, $4F, $0A, $9B, $DA, $9A, $0B + ); + + defBdsPatchDllDatas: array[0..13823] of Byte = ( + $4D, $5A, $90, $00, $03, $00, $00, $00, $04, $00, $00, $00, $FF, $FF, $00, $00, + $B8, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $D8, $00, $00, $00, + $0E, $1F, $BA, $0E, $00, $B4, $09, $CD, $21, $B8, $01, $4C, $CD, $21, $54, $68, + $69, $73, $20, $70, $72, $6F, $67, $72, $61, $6D, $20, $63, $61, $6E, $6E, $6F, + $74, $20, $62, $65, $20, $72, $75, $6E, $20, $69, $6E, $20, $44, $4F, $53, $20, + $6D, $6F, $64, $65, $2E, $0D, $0D, $0A, $24, $00, $00, $00, $00, $00, $00, $00, + $C9, $E7, $94, $1A, $8D, $86, $FA, $49, $8D, $86, $FA, $49, $8D, $86, $FA, $49, + $68, $DF, $FE, $48, $88, $86, $FA, $49, $84, $FE, $69, $49, $88, $86, $FA, $49, + $8D, $86, $FB, $49, $A7, $86, $FA, $49, $7F, $DF, $F3, $48, $8A, $86, $FA, $49, + $7F, $DF, $FA, $48, $8C, $86, $FA, $49, $7F, $DF, $05, $49, $8C, $86, $FA, $49, + $7F, $DF, $F8, $48, $8C, $86, $FA, $49, $52, $69, $63, $68, $8D, $86, $FA, $49, + $00, $00, $00, $00, $00, $00, $00, $00, $50, $45, $00, $00, $4C, $01, $05, $00, + $E1, $70, $F1, $55, $00, $00, $00, $00, $00, $00, $00, $00, $E0, $00, $02, $21, + $0B, $01, $0E, $00, $00, $1C, $00, $00, $00, $18, $00, $00, $00, $00, $00, $00, + $80, $18, $00, $00, $00, $10, $00, $00, $00, $30, $00, $00, $00, $00, $00, $10, + $00, $10, $00, $00, $00, $02, $00, $00, $05, $00, $01, $00, $00, $00, $00, $00, + $05, $00, $01, $00, $00, $00, $00, $00, $00, $70, $00, $00, $00, $04, $00, $00, + $FD, $77, $00, $00, $02, $00, $40, $05, $00, $00, $10, $00, $00, $10, $00, $00, + $00, $00, $10, $00, $00, $10, $00, $00, $00, $00, $00, $00, $10, $00, $00, $00, + $B0, $36, $00, $00, $6B, $00, $00, $00, $28, $38, $00, $00, $3C, $00, $00, $00, + $00, $50, $00, $00, $E0, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $00, $00, $E0, $01, $00, $00, + $30, $36, $00, $00, $1C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $50, $36, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $30, $00, $00, $B0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $2E, $74, $65, $78, $74, $00, $00, $00, $0D, $1A, $00, $00, $00, $10, $00, $00, + $00, $1C, $00, $00, $00, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $20, $00, $00, $60, $2E, $72, $64, $61, $74, $61, $00, $00, + $32, $0C, $00, $00, $00, $30, $00, $00, $00, $0E, $00, $00, $00, $20, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $40, + $2E, $64, $61, $74, $61, $00, $00, $00, $8C, $05, $00, $00, $00, $40, $00, $00, + $00, $04, $00, $00, $00, $2E, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $40, $00, $00, $C0, $2E, $72, $73, $72, $63, $00, $00, $00, + $E0, $01, $00, $00, $00, $50, $00, $00, $00, $02, $00, $00, $00, $32, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $40, + $2E, $72, $65, $6C, $6F, $63, $00, $00, $E0, $01, $00, $00, $00, $60, $00, $00, + $00, $02, $00, $00, $00, $34, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $40, $00, $00, $42, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $51, $53, $56, $33, $F6, $56, $68, $80, $00, $00, $00, $6A, $03, $56, $6A, $01, + $68, $00, $00, $00, $80, $51, $FF, $15, $00, $30, $00, $10, $8B, $D8, $83, $FB, + $FF, $0F, $84, $81, $00, $00, $00, $57, $8D, $44, $24, $0C, $89, $74, $24, $0C, + $50, $53, $FF, $15, $04, $30, $00, $10, $8B, $F8, $83, $FF, $FF, $74, $61, $39, + $74, $24, $0C, $75, $5B, $55, $56, $56, $56, $6A, $02, $56, $53, $FF, $15, $08, + $30, $00, $10, $8B, $E8, $83, $FD, $FF, $74, $45, $56, $56, $56, $6A, $04, $55, + $FF, $15, $0C, $30, $00, $10, $8B, $D0, $85, $D2, $74, $2C, $83, $CE, $FF, $8B, + $CA, $85, $FF, $74, $1A, $0F, $B6, $01, $8D, $49, $01, $33, $C6, $C1, $EE, $08, + $0F, $B6, $C0, $33, $34, $85, $D0, $30, $00, $10, $83, $EF, $01, $75, $E6, $52, + $F7, $D6, $FF, $15, $10, $30, $00, $10, $55, $FF, $15, $14, $30, $00, $10, $5D, + $53, $FF, $15, $14, $30, $00, $10, $5F, $8B, $C6, $5E, $5B, $59, $C3, $CC, $CC, + $C7, $44, $24, $10, $00, $00, $00, $00, $C7, $44, $24, $0C, $00, $00, $00, $00, + $FF, $25, $A4, $30, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $FF, $25, $A8, $30, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $33, $C0, $40, $C2, $04, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $51, $81, $B9, $F0, $0F, $00, $00, $78, $56, $34, $12, $53, $8D, $99, $F0, $0F, + $00, $00, $74, $52, $56, $57, $8B, $3D, $18, $30, $00, $10, $8D, $44, $24, $0C, + $50, $6A, $40, $8D, $B1, $40, $F6, $02, $00, $6A, $02, $56, $FF, $D7, $B8, $B3, + $01, $00, $00, $66, $89, $06, $8D, $44, $24, $0C, $50, $FF, $74, $24, $10, $6A, + $02, $56, $FF, $D7, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $04, $53, $FF, $D7, + $8D, $44, $24, $0C, $C7, $03, $78, $56, $34, $12, $50, $FF, $74, $24, $10, $6A, + $04, $53, $FF, $D7, $5F, $5E, $5B, $59, $C3, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $53, $8B, $5C, $24, $14, $56, $57, $8B, $7C, $24, $18, $53, $57, $FF, $74, $24, + $1C, $FF, $74, $24, $1C, $FF, $15, $44, $45, $00, $10, $8B, $F0, $85, $F6, $75, + $5C, $85, $DB, $74, $58, $F7, $C7, $00, $00, $FF, $FF, $74, $50, $66, $39, $07, + $74, $4B, $8B, $57, $04, $F7, $C2, $00, $00, $FF, $FF, $74, $40, $8B, $CA, $66, + $39, $02, $74, $13, $66, $8B, $01, $83, $C1, $02, $66, $83, $F8, $5C, $0F, $44, + $D1, $66, $83, $39, $00, $75, $ED, $0F, $B7, $02, $83, $F8, $73, $74, $05, $83, + $F8, $53, $75, $17, $68, $D0, $34, $00, $10, $52, $FF, $15, $1C, $30, $00, $10, + $85, $C0, $75, $07, $8B, $0B, $E8, $15, $FF, $FF, $FF, $8B, $C6, $5F, $5E, $5B, + $C2, $10, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $50, $A1, $54, $45, $00, $10, $3B, $44, $24, $04, $75, $06, $8B, $45, $2C, $C6, + $00, $01, $58, $FF, $25, $58, $45, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $53, $8B, $5C, $24, $08, $56, $8B, $74, $24, $10, $57, $56, $53, $FF, $15, $3C, + $45, $00, $10, $8B, $F8, $85, $FF, $75, $77, $3B, $1D, $5C, $45, $00, $10, $75, + $6F, $F7, $C6, $00, $00, $FF, $FF, $74, $67, $B9, $F4, $34, $00, $10, $8B, $C6, + $8A, $10, $3A, $11, $75, $1A, $84, $D2, $74, $12, $8A, $50, $01, $3A, $51, $01, + $75, $0E, $83, $C0, $02, $83, $C1, $02, $84, $D2, $75, $E4, $33, $C0, $EB, $05, + $1B, $C0, $83, $C8, $01, $85, $C0, $74, $32, $B8, $10, $35, $00, $10, $66, $90, + $8A, $0E, $3A, $08, $75, $1A, $84, $C9, $74, $12, $8A, $4E, $01, $3A, $48, $01, + $75, $0E, $83, $C6, $02, $83, $C0, $02, $84, $C9, $75, $E4, $33, $C0, $EB, $05, + $1B, $C0, $83, $C8, $01, $85, $C0, $8B, $C7, $75, $05, $B8, $E0, $10, $00, $10, + $5F, $5E, $5B, $C2, $08, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $53, $55, $8B, $6C, $24, $0C, $8B, $5C, $24, $10, $8B, $4C, $24, $14, $8B, $44, + $24, $18, $8B, $54, $24, $1C, $F0, $0F, $C7, $4D, $00, $5D, $5B, $C2, $14, $00, + $74, $67, $60, $8B, $4D, $0C, $03, $C8, $8D, $51, $02, $81, $3A, $49, $6E, $74, + $65, $75, $4F, $81, $7A, $04, $72, $6C, $6F, $63, $75, $46, $81, $7A, $08, $6B, + $65, $64, $43, $75, $3D, $81, $7A, $0C, $6F, $6D, $70, $61, $75, $34, $81, $7A, + $10, $72, $65, $45, $78, $75, $2B, $81, $7A, $14, $63, $68, $61, $6E, $75, $22, + $81, $7A, $18, $67, $65, $36, $34, $75, $19, $80, $7A, $1C, $00, $75, $13, $B8, + $B0, $12, $00, $10, $8B, $55, $14, $89, $02, $61, $33, $C0, $FF, $25, $4C, $45, + $00, $10, $61, $FF, $25, $50, $45, $00, $10, $B8, $7A, $00, $00, $C0, $FF, $25, + $4C, $45, $00, $10, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $51, $56, $8B, $35, $24, $30, $00, $10, $68, $30, $35, $00, $10, $FF, $D6, $68, + $4C, $35, $00, $10, $A3, $60, $45, $00, $10, $FF, $D6, $8B, $35, $28, $30, $00, + $10, $68, $3C, $45, $00, $10, $68, $64, $35, $00, $10, $FF, $35, $60, $45, $00, + $10, $A3, $5C, $45, $00, $10, $FF, $D6, $BA, $10, $12, $00, $10, $8B, $C8, $E8, + $1A, $0B, $00, $00, $68, $74, $35, $00, $10, $FF, $35, $64, $45, $00, $10, $FF, + $D6, $85, $C0, $0F, $84, $6F, $01, $00, $00, $83, $3D, $60, $45, $00, $10, $00, + $0F, $84, $62, $01, $00, $00, $8B, $0D, $64, $45, $00, $10, $53, $55, $8D, $98, + $00, $FC, $FF, $FF, $8B, $51, $3C, $57, $8D, $78, $C0, $8B, $6C, $0A, $2C, $03, + $E9, $8B, $4C, $0A, $1C, $03, $CD, $3B, $DD, $89, $4C, $24, $10, $0F, $42, $DD, + $3B, $FB, $0F, $86, $2D, $01, $00, $00, $8D, $77, $03, $0F, $1F, $44, $00, $00, + $8B, $07, $25, $FF, $F8, $FF, $00, $3D, $C1, $E8, $1F, $00, $0F, $85, $E4, $00, + $00, $00, $8D, $56, $08, $8B, $CE, $3B, $F2, $0F, $83, $D7, $00, $00, $00, $90, + $8B, $01, $25, $FF, $F8, $FF, $00, $3D, $80, $E0, $01, $00, $74, $0A, $41, $3B, + $CA, $72, $ED, $E9, $BE, $00, $00, $00, $3B, $CA, $0F, $83, $B6, $00, $00, $00, + $83, $C1, $03, $8D, $51, $08, $3B, $CA, $0F, $83, $A8, $00, $00, $00, $66, $90, + $8B, $01, $25, $FF, $C7, $FF, $00, $3D, $88, $45, $13, $00, $74, $0A, $41, $3B, + $CA, $72, $ED, $E9, $8E, $00, $00, $00, $3B, $CA, $0F, $83, $86, $00, $00, $00, + $83, $C1, $03, $8D, $41, $08, $3B, $C8, $0F, $83, $78, $00, $00, $00, $BA, $0F, + $85, $00, $00, $66, $39, $11, $74, $07, $41, $3B, $C8, $72, $F6, $EB, $67, $3B, + $C8, $73, $63, $83, $C1, $06, $8D, $51, $08, $3B, $CA, $73, $59, $0F, $1F, $00, + $8B, $01, $25, $FF, $C7, $FF, $00, $3D, $8B, $45, $0C, $00, $74, $07, $41, $3B, + $CA, $72, $ED, $EB, $41, $3B, $CA, $73, $3D, $83, $C1, $03, $8D, $41, $08, $3B, + $C8, $73, $33, $BA, $0F, $84, $00, $00, $66, $39, $11, $74, $07, $41, $3B, $C8, + $72, $F6, $EB, $22, $3B, $C8, $73, $1E, $8D, $51, $06, $03, $51, $02, $3B, $D5, + $72, $14, $3B, $54, $24, $10, $73, $0E, $80, $3A, $B8, $75, $09, $81, $7A, $01, + $7A, $00, $00, $C0, $74, $10, $4F, $4E, $3B, $FB, $0F, $87, $00, $FF, $FF, $FF, + $5F, $5D, $5B, $5E, $59, $C3, $8D, $41, $06, $A3, $50, $45, $00, $10, $8D, $42, + $05, $68, $40, $45, $00, $10, $BA, $D0, $12, $00, $10, $A3, $4C, $45, $00, $10, + $E8, $99, $09, $00, $00, $5F, $5D, $5B, $5E, $59, $C3, $CC, $CC, $CC, $CC, $CC, + $81, $EC, $14, $01, $00, $00, $53, $8B, $1D, $50, $30, $00, $10, $55, $56, $57, + $33, $FF, $33, $ED, $57, $6A, $01, $68, $68, $45, $00, $10, $FF, $D3, $8B, $35, + $6C, $30, $00, $10, $85, $C0, $74, $1D, $83, $FF, $20, $73, $04, $6A, $00, $EB, + $02, $6A, $01, $FF, $D6, $6A, $00, $6A, $01, $68, $68, $45, $00, $10, $47, $FF, + $D3, $85, $C0, $75, $E3, $39, $2D, $6C, $45, $00, $10, $75, $1A, $6A, $00, $6A, + $00, $6A, $00, $FF, $15, $44, $30, $00, $10, $A3, $6C, $45, $00, $10, $85, $C0, + $75, $0A, $8D, $68, $09, $EB, $05, $BD, $01, $00, $00, $00, $6A, $00, $68, $68, + $45, $00, $10, $FF, $15, $40, $30, $00, $10, $85, $ED, $0F, $85, $BC, $00, $00, + $00, $68, $8C, $35, $00, $10, $FF, $15, $24, $30, $00, $10, $68, $44, $45, $00, + $10, $68, $A0, $35, $00, $10, $50, $A3, $64, $45, $00, $10, $FF, $15, $28, $30, + $00, $10, $BA, $60, $11, $00, $10, $8B, $C8, $E8, $E0, $08, $00, $00, $85, $C0, + $0F, $85, $87, $00, $00, $00, $32, $C0, $8D, $7C, $24, $10, $B9, $14, $01, $00, + $00, $F3, $AA, $8D, $44, $24, $10, $C7, $44, $24, $10, $14, $01, $00, $00, $50, + $FF, $15, $20, $30, $00, $10, $85, $C0, $74, $13, $83, $7C, $24, $20, $02, $75, + $07, $83, $7C, $24, $14, $05, $77, $05, $E8, $43, $FD, $FF, $FF, $33, $FF, $57, + $6A, $01, $68, $68, $45, $00, $10, $FF, $D3, $85, $C0, $74, $20, $0F, $1F, $00, + $83, $FF, $20, $73, $04, $6A, $00, $EB, $02, $6A, $01, $FF, $D6, $6A, $00, $6A, + $01, $68, $68, $45, $00, $10, $47, $FF, $D3, $85, $C0, $75, $E3, $83, $3D, $6C, + $45, $00, $10, $00, $74, $0A, $B9, $01, $00, $00, $00, $E8, $ED, $06, $00, $00, + $6A, $00, $68, $68, $45, $00, $10, $FF, $15, $40, $30, $00, $10, $5F, $5E, $5D, + $5B, $81, $C4, $14, $01, $00, $00, $C3, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $53, $8B, $1D, $50, $30, $00, $10, $56, $33, $F6, $56, $6A, $01, $68, $68, $45, + $00, $10, $FF, $D3, $85, $C0, $74, $26, $57, $8B, $3D, $6C, $30, $00, $10, $90, + $83, $FE, $20, $73, $04, $6A, $00, $EB, $02, $6A, $01, $FF, $D7, $6A, $00, $6A, + $01, $68, $68, $45, $00, $10, $46, $FF, $D3, $85, $C0, $75, $E3, $5F, $83, $3D, + $6C, $45, $00, $10, $00, $5E, $5B, $74, $07, $33, $C9, $E8, $7D, $06, $00, $00, + $6A, $00, $68, $68, $45, $00, $10, $FF, $15, $40, $30, $00, $10, $E9, $51, $07, + $00, $00, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $51, $57, $68, $AC, $35, $00, $10, $FF, $15, $2C, $30, $00, $10, $8B, $F8, $85, + $FF, $0F, $84, $80, $00, $00, $00, $53, $56, $68, $C8, $35, $00, $10, $57, $FF, + $15, $28, $30, $00, $10, $8B, $1D, $18, $30, $00, $10, $8B, $F0, $85, $F6, $74, + $24, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $05, $56, $FF, $D3, $8D, $44, $24, + $0C, $C7, $06, $33, $C0, $C2, $0C, $50, $FF, $74, $24, $10, $C6, $46, $04, $00, + $6A, $FF, $56, $FF, $D3, $68, $D8, $35, $00, $10, $57, $FF, $15, $28, $30, $00, + $10, $8B, $F0, $85, $F6, $74, $24, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $05, + $56, $FF, $D3, $8D, $44, $24, $0C, $C7, $06, $33, $C0, $C2, $0C, $50, $FF, $74, + $24, $10, $C6, $46, $04, $00, $6A, $FF, $56, $FF, $D3, $5E, $5B, $C6, $05, $48, + $45, $00, $10, $00, $5F, $59, $C3, $C6, $05, $48, $45, $00, $10, $01, $5F, $59, + $C3, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, $CC, + $81, $EC, $14, $04, $00, $00, $53, $56, $57, $6A, $00, $FF, $15, $24, $30, $00, + $10, $8B, $D8, $8D, $44, $24, $10, $68, $08, $02, $00, $00, $50, $53, $FF, $15, + $30, $30, $00, $10, $66, $83, $7C, $24, $10, $00, $8D, $4C, $24, $10, $8B, $F1, + $74, $13, $66, $8B, $01, $83, $C1, $02, $66, $83, $F8, $5C, $0F, $44, $F1, $66, + $83, $39, $00, $75, $ED, $8B, $3D, $1C, $30, $00, $10, $68, $EC, $35, $00, $10, + $56, $FF, $D7, $85, $C0, $75, $25, $8D, $4C, $24, $10, $E8, $10, $F8, $FF, $FF, + $3D, $CE, $3E, $ED, $D4, $74, $07, $3D, $E2, $F5, $99, $11, $75, $72, $8D, $83, + $6C, $F7, $01, $00, $8D, $BB, $FC, $3F, $12, $00, $EB, $28, $68, $FC, $35, $00, + $10, $56, $FF, $D7, $85, $C0, $75, $58, $8D, $4C, $24, $10, $E8, $DF, $F7, $FF, + $FF, $3D, $F0, $16, $41, $5B, $75, $48, $8D, $83, $50, $B1, $1F, $00, $8D, $BB, + $30, $38, $63, $00, $8B, $35, $18, $30, $00, $10, $A3, $54, $45, $00, $10, $8B, + $07, $A3, $58, $45, $00, $10, $8D, $44, $24, $0C, $50, $6A, $40, $6A, $04, $57, + $FF, $D6, $8D, $44, $24, $0C, $C7, $07, $F0, $11, $00, $10, $50, $FF, $74, $24, + $10, $6A, $04, $57, $FF, $D6, $E8, $75, $FE, $FF, $FF, $E8, $B0, $FC, $FF, $FF, + $5F, $5E, $5B, $81, $C4, $14, $04, $00, $00, $C3, $CC, $CC, $CC, $CC, $CC, $CC, + $8B, $44, $24, $08, $83, $F8, $03, $77, $2F, $FF, $24, $85, $C0, $18, $00, $10, + $E8, $FB, $FE, $FF, $FF, $B8, $01, $00, $00, $00, $C2, $0C, $00, $80, $3D, $48, + $45, $00, $10, $00, $74, $12, $E8, $35, $FE, $FF, $FF, $B8, $01, $00, $00, $00, + $C2, $0C, $00, $E8, $B8, $FD, $FF, $FF, $B8, $01, $00, $00, $00, $C2, $0C, $00, + $B3, $18, $00, $10, $90, $18, $00, $10, $9D, $18, $00, $10, $9D, $18, $00, $10, + $56, $8B, $35, $88, $45, $00, $10, $33, $C0, $85, $F6, $74, $12, $8B, $15, $80, + $45, $00, $10, $3B, $0A, $74, $0B, $40, $83, $C2, $28, $3B, $C6, $72, $F4, $83, + $C8, $FF, $5E, $C3, $8B, $0D, $80, $45, $00, $10, $85, $C9, $75, $2B, $68, $00, + $05, $00, $00, $51, $FF, $35, $6C, $45, $00, $10, $C7, $05, $84, $45, $00, $10, + $20, $00, $00, $00, $FF, $15, $74, $30, $00, $10, $8B, $C8, $89, $0D, $80, $45, + $00, $10, $85, $C9, $75, $3D, $33, $C0, $C3, $8B, $15, $88, $45, $00, $10, $A1, + $84, $45, $00, $10, $3B, $D0, $72, $31, $6B, $C0, $50, $50, $51, $6A, $00, $FF, + $35, $6C, $45, $00, $10, $FF, $15, $70, $30, $00, $10, $8B, $C8, $85, $C9, $74, + $D5, $A1, $84, $45, $00, $10, $03, $C0, $89, $0D, $80, $45, $00, $10, $A3, $84, + $45, $00, $10, $8B, $15, $88, $45, $00, $10, $6B, $C2, $28, $03, $C1, $42, $89, + $15, $88, $45, $00, $10, $C3, $55, $8B, $EC, $81, $EC, $D8, $02, $00, $00, $A1, + $04, $40, $00, $10, $33, $C5, $89, $45, $FC, $8B, $C1, $C7, $85, $30, $FD, $FF, + $FF, $01, $00, $01, $00, $56, $8D, $8D, $30, $FD, $FF, $FF, $89, $85, $28, $FD, + $FF, $FF, $51, $50, $8B, $F2, $FF, $15, $7C, $30, $00, $10, $85, $C0, $0F, $84, + $C3, $00, $00, $00, $53, $83, $FE, $FF, $75, $0A, $8B, $1D, $88, $45, $00, $10, + $33, $F6, $EB, $03, $8D, $5E, $01, $3B, $F3, $0F, $83, $A7, $00, $00, $00, $6B, + $D6, $28, $2B, $DE, $57, $8B, $BD, $28, $FD, $FF, $FF, $89, $95, $2C, $FD, $FF, + $FF, $8B, $35, $80, $45, $00, $10, $8B, $45, $08, $03, $F2, $83, $E8, $00, $74, + $1A, $83, $E8, $01, $74, $10, $83, $E8, $01, $75, $12, $8B, $7E, $14, $C1, $E7, + $1D, $C1, $FF, $1F, $EB, $07, $33, $FF, $47, $EB, $02, $33, $FF, $8B, $56, $14, + $8B, $C2, $C1, $E0, $1E, $C1, $F8, $1F, $3B, $C7, $74, $41, $85, $FF, $74, $70, + $C1, $EA, $03, $33, $C9, $83, $E2, $0F, $76, $14, $0F, $B6, $44, $0E, $18, $03, + $06, $39, $85, $E8, $FD, $FF, $FF, $74, $4D, $41, $3B, $CA, $72, $EC, $33, $C9, + $85, $C9, $74, $19, $8D, $85, $30, $FD, $FF, $FF, $89, $8D, $E8, $FD, $FF, $FF, + $50, $FF, $B5, $28, $FD, $FF, $FF, $FF, $15, $88, $30, $00, $10, $8B, $95, $2C, + $FD, $FF, $FF, $83, $C2, $28, $89, $95, $2C, $FD, $FF, $FF, $83, $EB, $01, $0F, + $85, $6C, $FF, $FF, $FF, $5F, $5B, $8B, $4D, $FC, $33, $CD, $5E, $E8, $50, $0E, + $00, $00, $8B, $E5, $5D, $C3, $0F, $B6, $4C, $31, $20, $03, $4E, $08, $EB, $B0, + $F6, $C2, $01, $74, $0D, $8B, $0E, $8D, $41, $FB, $39, $85, $E8, $FD, $FF, $FF, + $74, $9E, $C1, $EA, $03, $33, $C9, $83, $E2, $0F, $76, $92, $0F, $B6, $44, $0E, + $20, $03, $46, $08, $39, $85, $E8, $FD, $FF, $FF, $74, $0A, $41, $3B, $CA, $72, + $EB, $E9, $78, $FF, $FF, $FF, $0F, $B6, $4C, $31, $18, $03, $0E, $E9, $6E, $FF, + $FF, $FF, $55, $8B, $EC, $83, $EC, $20, $A1, $04, $40, $00, $10, $33, $C5, $89, + $45, $FC, $56, $57, $6A, $00, $6A, $04, $8B, $F1, $FF, $15, $68, $30, $00, $10, + $8B, $F8, $83, $FF, $FF, $0F, $84, $AE, $00, $00, $00, $8D, $45, $E0, $C7, $45, + $E0, $1C, $00, $00, $00, $50, $57, $FF, $15, $58, $30, $00, $10, $E9, $88, $00, + $00, $00, $83, $7D, $E0, $10, $72, $70, $FF, $15, $80, $30, $00, $10, $39, $45, + $EC, $75, $65, $FF, $15, $5C, $30, $00, $10, $39, $45, $E8, $74, $5A, $83, $3E, + $00, $75, $22, $68, $00, $02, $00, $00, $6A, $00, $FF, $35, $6C, $45, $00, $10, + $C7, $46, $04, $80, $00, $00, $00, $FF, $15, $74, $30, $00, $10, $89, $06, $85, + $C0, $74, $4F, $EB, $25, $8B, $46, $04, $39, $46, $08, $72, $1D, $C1, $E0, $03, + $50, $FF, $36, $6A, $00, $FF, $35, $6C, $45, $00, $10, $FF, $15, $70, $30, $00, + $10, $85, $C0, $74, $2D, $D1, $66, $04, $89, $06, $8B, $56, $08, $8B, $0E, $8B, + $45, $E8, $89, $04, $91, $FF, $46, $08, $8D, $45, $E0, $C7, $45, $E0, $1C, $00, + $00, $00, $50, $57, $FF, $15, $54, $30, $00, $10, $85, $C0, $0F, $85, $70, $FF, + $FF, $FF, $57, $FF, $15, $14, $30, $00, $10, $8B, $4D, $FC, $5F, $33, $CD, $5E, + $E8, $1D, $0D, $00, $00, $8B, $E5, $5D, $C3, $55, $8B, $EC, $51, $53, $56, $8B, + $F1, $89, $55, $FC, $33, $DB, $89, $1E, $89, $5E, $04, $89, $5E, $08, $E8, $FF, + $FE, $FF, $FF, $39, $1E, $74, $42, $57, $8B, $FB, $39, $5E, $08, $76, $39, $8B, + $06, $FF, $34, $B8, $53, $6A, $5A, $FF, $15, $8C, $30, $00, $10, $8B, $D8, $85, + $DB, $74, $1C, $53, $FF, $15, $60, $30, $00, $10, $FF, $75, $08, $8B, $55, $FC, + $8B, $CB, $E8, $6F, $FD, $FF, $FF, $59, $53, $FF, $15, $14, $30, $00, $10, $47, + $6A, $00, $5B, $3B, $7E, $08, $72, $C7, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $56, + $8B, $F1, $83, $3E, $00, $74, $44, $57, $33, $FF, $39, $7E, $08, $76, $2B, $53, + $8B, $06, $FF, $34, $B8, $6A, $00, $6A, $5A, $FF, $15, $8C, $30, $00, $10, $8B, + $D8, $85, $DB, $74, $0E, $53, $FF, $15, $64, $30, $00, $10, $53, $FF, $15, $14, + $30, $00, $10, $47, $3B, $7E, $08, $72, $D7, $5B, $FF, $36, $6A, $00, $FF, $35, + $6C, $45, $00, $10, $FF, $15, $48, $30, $00, $10, $5F, $5E, $C3, $55, $8B, $EC, + $83, $EC, $10, $53, $6B, $D9, $28, $56, $57, $6A, $05, $8B, $F2, $03, $1D, $80, + $45, $00, $10, $58, $89, $75, $F0, $89, $45, $FC, $F6, $43, $14, $01, $8B, $3B, + $89, $7D, $F8, $74, $0B, $2B, $F8, $6A, $07, $58, $89, $7D, $F8, $89, $45, $FC, + $8D, $4D, $F4, $51, $6A, $40, $50, $57, $FF, $15, $18, $30, $00, $10, $85, $C0, + $75, $05, $6A, $0A, $58, $EB, $7F, $85, $F6, $74, $1D, $C6, $07, $E9, $8B, $43, + $04, $2B, $C7, $83, $E8, $05, $89, $47, $01, $F6, $43, $14, $01, $74, $29, $8B, + $03, $66, $C7, $00, $EB, $F9, $EB, $20, $F6, $43, $14, $01, $74, $0F, $8D, $73, + $0C, $A5, $66, $A5, $A4, $8B, $7D, $F8, $8B, $75, $F0, $EB, $0B, $8B, $43, $0C, + $89, $07, $8A, $43, $10, $88, $47, $04, $8D, $45, $F4, $50, $FF, $75, $F4, $FF, + $75, $FC, $57, $FF, $15, $18, $30, $00, $10, $FF, $75, $FC, $57, $FF, $15, $4C, + $30, $00, $10, $50, $FF, $15, $84, $30, $00, $10, $83, $E6, $01, $8B, $CE, $83, + $E1, $FD, $8D, $04, $36, $0B, $C8, $8B, $43, $14, $03, $C9, $83, $E0, $F9, $0B, + $C8, $33, $C0, $89, $4B, $14, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $55, $8B, $EC, + $83, $EC, $10, $53, $8B, $1D, $88, $45, $00, $10, $8B, $D1, $56, $57, $33, $FF, + $89, $55, $FC, $8B, $F7, $85, $DB, $0F, $84, $83, $00, $00, $00, $8B, $0D, $80, + $45, $00, $10, $83, $C1, $14, $8B, $01, $C1, $E0, $1E, $C1, $F8, $1F, $3B, $C2, + $75, $0A, $46, $83, $C1, $28, $3B, $F3, $72, $EC, $EB, $64, $83, $FE, $FF, $74, + $5F, $33, $C0, $8D, $4D, $F0, $85, $D2, $0F, $95, $C0, $83, $CA, $FF, $50, $E8, + $25, $FE, $FF, $FF, $8B, $15, $88, $45, $00, $10, $59, $3B, $F2, $73, $39, $8B, + $4D, $FC, $6B, $DE, $28, $A1, $80, $45, $00, $10, $8B, $44, $03, $14, $C1, $E0, + $1E, $C1, $F8, $1F, $3B, $C1, $74, $18, $8B, $D1, $8B, $CE, $E8, $AC, $FE, $FF, + $FF, $8B, $F8, $85, $FF, $75, $11, $8B, $15, $88, $45, $00, $10, $8B, $4D, $FC, + $46, $83, $C3, $28, $3B, $F2, $72, $CD, $8D, $4D, $F0, $E8, $3F, $FE, $FF, $FF, + $8B, $C7, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $56, $33, $F6, $EB, $12, $83, $FE, + $20, $73, $04, $6A, $00, $EB, $02, $6A, $01, $FF, $15, $6C, $30, $00, $10, $46, + $6A, $00, $6A, $01, $68, $68, $45, $00, $10, $FF, $15, $50, $30, $00, $10, $85, + $C0, $75, $DB, $5E, $C3, $6A, $00, $68, $68, $45, $00, $10, $FF, $15, $40, $30, + $00, $10, $C3, $57, $E8, $C0, $FF, $FF, $FF, $83, $3D, $6C, $45, $00, $10, $00, + $74, $70, $33, $C9, $E8, $04, $FF, $FF, $FF, $8B, $F8, $85, $FF, $75, $66, $A1, + $74, $45, $00, $10, $53, $33, $DB, $89, $1D, $74, $45, $00, $10, $85, $C0, $74, + $17, $56, $8B, $30, $68, $00, $80, $00, $00, $53, $50, $FF, $15, $90, $30, $00, + $10, $8B, $C6, $85, $F6, $75, $EB, $5E, $FF, $35, $80, $45, $00, $10, $53, $FF, + $35, $6C, $45, $00, $10, $FF, $15, $48, $30, $00, $10, $FF, $35, $6C, $45, $00, + $10, $FF, $15, $78, $30, $00, $10, $89, $1D, $6C, $45, $00, $10, $89, $1D, $80, + $45, $00, $10, $89, $1D, $84, $45, $00, $10, $89, $1D, $88, $45, $00, $10, $5B, + $EB, $03, $6A, $02, $5F, $E8, $6B, $FF, $FF, $FF, $8B, $C7, $5F, $C3, $55, $8B, + $EC, $83, $EC, $30, $A1, $04, $40, $00, $10, $33, $C5, $89, $45, $FC, $8B, $45, + $08, $53, $56, $57, $8B, $FA, $89, $45, $D0, $89, $7D, $D4, $8B, $F1, $33, $DB, + $E8, $14, $FF, $FF, $FF, $39, $1D, $6C, $45, $00, $10, $0F, $84, $EB, $00, $00, + $00, $8B, $CE, $E8, $8A, $04, $00, $00, $85, $C0, $0F, $84, $D8, $00, $00, $00, + $8B, $CF, $E8, $7B, $04, $00, $00, $85, $C0, $0F, $84, $C9, $00, $00, $00, $8B, + $CE, $E8, $CA, $F9, $FF, $FF, $83, $F8, $FF, $0F, $85, $B5, $00, $00, $00, $E8, + $9D, $03, $00, $00, $8B, $F8, $85, $FF, $0F, $84, $A2, $00, $00, $00, $8B, $45, + $D4, $8D, $4D, $D8, $89, $75, $D8, $89, $45, $DC, $89, $7D, $E0, $E8, $E2, $00, + $00, $00, $85, $C0, $74, $7E, $E8, $B9, $F9, $FF, $FF, $8B, $D0, $85, $D2, $74, + $6F, $8B, $45, $D8, $8B, $4D, $E8, $8B, $7D, $E0, $83, $E1, $0F, $89, $02, $8B, + $45, $DC, $89, $42, $04, $8B, $45, $E4, $83, $E0, $01, $C1, $E1, $03, $0B, $C8, + $89, $7A, $08, $8B, $42, $14, $83, $E0, $80, $0B, $C8, $8B, $45, $EC, $89, $42, + $18, $8B, $45, $F0, $89, $42, $1C, $8B, $45, $F4, $89, $42, $20, $8B, $45, $F8, + $89, $4A, $14, $89, $42, $24, $39, $5D, $E4, $74, $0F, $83, $C6, $FB, $8D, $7A, + $0C, $A5, $66, $A5, $A4, $8B, $7D, $E0, $EB, $0B, $8B, $06, $89, $42, $0C, $8A, + $46, $04, $88, $42, $10, $8B, $45, $D0, $85, $C0, $74, $23, $89, $38, $EB, $1F, + $6A, $09, $EB, $02, $6A, $08, $5B, $8B, $CF, $E8, $67, $03, $00, $00, $EB, $0F, + $6A, $09, $EB, $0A, $6A, $03, $EB, $06, $6A, $07, $EB, $02, $6A, $02, $5B, $E8, + $41, $FE, $FF, $FF, $8B, $4D, $FC, $8B, $C3, $5F, $5E, $33, $CD, $5B, $E8, $EF, + $08, $00, $00, $8B, $E5, $5D, $C2, $04, $00, $56, $8B, $F1, $8A, $06, $84, $C0, + $74, $0C, $3C, $90, $74, $08, $3C, $CC, $74, $04, $33, $C0, $5E, $C3, $33, $C9, + $41, $3B, $D1, $76, $0A, $38, $04, $31, $75, $F0, $41, $3B, $CA, $72, $F6, $33, + $C0, $40, $5E, $C3, $55, $8B, $EC, $83, $EC, $58, $A1, $04, $40, $00, $10, $33, + $C5, $89, $45, $FC, $53, $33, $DB, $C6, $45, $AC, $E8, $56, $8B, $F1, $89, $5D, + $AD, $8A, $C3, $89, $75, $C4, $57, $C6, $45, $BC, $E9, $89, $5D, $BD, $66, $C7, + $45, $B4, $0F, $80, $89, $5D, $B6, $88, $45, $DF, $89, $5D, $D8, $89, $5D, $D4, + $89, $5E, $0C, $89, $5E, $10, $0F, $B6, $C8, $8D, $55, $E0, $8B, $46, $08, $0F, + $B6, $FB, $03, $C1, $03, $3E, $89, $4D, $A8, $8B, $CF, $89, $45, $C8, $E8, $2C, + $03, $00, $00, $F7, $45, $F8, $00, $10, $00, $00, $8B, $C8, $89, $4D, $D0, $0F, + $85, $19, $02, $00, $00, $89, $7D, $CC, $80, $FB, $05, $0F, $82, $84, $00, $00, + $00, $8B, $C7, $33, $D2, $2B, $45, $C8, $83, $E8, $05, $42, $6A, $05, $89, $45, + $BD, $8D, $45, $BC, $59, $89, $45, $CC, $89, $4D, $D0, $89, $55, $D4, $8B, $45, + $D8, $3B, $F8, $73, $0C, $0F, $B6, $45, $E0, $3B, $C8, $0F, $85, $DD, $01, $00, + $00, $8B, $45, $A8, $03, $C1, $83, $F8, $20, $0F, $87, $CF, $01, $00, $00, $8B, + $46, $10, $83, $F8, $08, $0F, $83, $C3, $01, $00, $00, $8A, $55, $DF, $88, $5C, + $30, $14, $8B, $46, $10, $02, $5D, $E0, $88, $54, $30, $1C, $8A, $C2, $8B, $7E, + $08, $FF, $46, $10, $03, $7D, $A8, $02, $45, $D0, $8B, $75, $CC, $8B, $55, $D4, + $88, $45, $DF, $F3, $A4, $85, $D2, $0F, $85, $2E, $01, $00, $00, $8B, $75, $C4, + $E9, $41, $FF, $FF, $FF, $8A, $55, $E6, $80, $FA, $E8, $75, $23, $0F, $B6, $45, + $E0, $2B, $45, $C8, $83, $C0, $FB, $03, $45, $F0, $03, $C7, $89, $45, $AD, $8D, + $45, $AC, $6A, $05, $59, $89, $45, $CC, $89, $4D, $D0, $E9, $6E, $FF, $FF, $FF, + $8A, $C2, $24, $FD, $3C, $E9, $75, $50, $0F, $B6, $4D, $E0, $03, $CF, $80, $FA, + $EB, $75, $08, $0F, $BE, $45, $F0, $03, $C8, $EB, $03, $03, $4D, $F0, $8B, $06, + $3B, $C1, $77, $1D, $83, $C0, $05, $3B, $C8, $73, $16, $8B, $45, $D8, $3B, $C1, + $0F, $83, $BD, $00, $00, $00, $89, $4D, $D8, $8B, $4D, $D0, $E9, $2D, $FF, $FF, + $FF, $2B, $4D, $C8, $8D, $45, $BC, $83, $E9, $05, $89, $45, $CC, $6A, $05, $89, + $4D, $BD, $59, $89, $4D, $D0, $EB, $29, $8A, $75, $E7, $8A, $E2, $80, $E4, $F0, + $80, $FC, $70, $74, $2C, $8A, $C2, $24, $FC, $3C, $E0, $74, $24, $8A, $C6, $24, + $F0, $3C, $80, $74, $1C, $80, $E2, $FE, $80, $FA, $C2, $0F, $85, $ED, $FE, $FF, + $FF, $8B, $45, $D8, $3B, $F8, $1B, $D2, $42, $89, $55, $D4, $E9, $E0, $FE, $FF, + $FF, $8A, $45, $E0, $0F, $B6, $C8, $03, $CF, $80, $FC, $70, $74, $0D, $8A, $C2, + $24, $FC, $3C, $E0, $74, $05, $03, $4D, $F0, $EB, $06, $0F, $BE, $45, $F0, $03, + $C8, $8B, $06, $3B, $C1, $77, $0B, $83, $C0, $05, $3B, $C8, $0F, $82, $69, $FF, + $FF, $FF, $8A, $C2, $24, $FC, $3C, $E0, $0F, $84, $90, $00, $00, $00, $0F, $B6, + $C2, $80, $FA, $0F, $75, $03, $0F, $B6, $C6, $2B, $4D, $C8, $24, $0F, $0C, $80, + $83, $E9, $06, $88, $45, $B5, $8D, $45, $B4, $89, $4D, $B6, $6A, $06, $E9, $01, + $FF, $FF, $FF, $8B, $4D, $D0, $E9, $76, $FE, $FF, $FF, $80, $FB, $05, $73, $59, + $8B, $7D, $C4, $0F, $B6, $F3, $6A, $05, $5A, $8B, $07, $2B, $D6, $03, $C6, $8B, + $C8, $89, $45, $C4, $E8, $90, $FD, $FF, $FF, $85, $C0, $75, $3C, $80, $FB, $02, + $73, $11, $8B, $4D, $C4, $6A, $02, $5A, $2B, $D6, $E8, $7A, $FD, $FF, $FF, $85, + $C0, $74, $2B, $8B, $0F, $83, $C1, $FB, $E8, $F5, $00, $00, $00, $85, $C0, $74, + $1D, $8B, $0F, $6A, $05, $83, $E9, $05, $5A, $E8, $5B, $FD, $FF, $FF, $85, $C0, + $74, $0C, $C7, $47, $0C, $01, $00, $00, $00, $33, $C0, $40, $EB, $02, $33, $C0, + $8B, $4D, $FC, $5F, $5E, $33, $CD, $5B, $E8, $25, $06, $00, $00, $8B, $E5, $5D, + $C3, $8B, $15, $74, $45, $00, $10, $56, $33, $F6, $EB, $07, $39, $72, $04, $75, + $4F, $8B, $12, $85, $D2, $75, $F5, $6A, $40, $68, $00, $30, $00, $00, $68, $00, + $10, $00, $00, $56, $FF, $15, $94, $30, $00, $10, $8B, $D0, $85, $D2, $74, $41, + $8D, $4A, $20, $89, $72, $04, $89, $72, $08, $8B, $F1, $2B, $F2, $8B, $42, $04, + $83, $C6, $20, $89, $01, $89, $4A, $04, $83, $C1, $20, $81, $FE, $E0, $0F, $00, + $00, $76, $EA, $A1, $74, $45, $00, $10, $89, $02, $89, $15, $74, $45, $00, $10, + $85, $D2, $74, $0D, $8B, $42, $04, $5E, $8B, $08, $FF, $42, $08, $89, $4A, $04, + $C3, $33, $C0, $5E, $C3, $8B, $15, $74, $45, $00, $10, $8B, $C1, $56, $33, $F6, + $25, $00, $F0, $FF, $FF, $EB, $08, $3B, $D0, $74, $0A, $8B, $F2, $8B, $12, $85, + $D2, $75, $F4, $5E, $C3, $8B, $42, $04, $89, $01, $83, $6A, $08, $01, $89, $4A, + $04, $75, $1D, $8B, $02, $85, $F6, $74, $04, $89, $06, $EB, $05, $A3, $74, $45, + $00, $10, $68, $00, $80, $00, $00, $6A, $00, $52, $FF, $15, $90, $30, $00, $10, + $5E, $C3, $55, $8B, $EC, $83, $EC, $1C, $6A, $1C, $8D, $45, $E4, $50, $51, $FF, + $15, $98, $30, $00, $10, $81, $7D, $F4, $00, $10, $00, $00, $75, $0B, $F6, $45, + $F8, $F0, $74, $05, $33, $C0, $40, $EB, $02, $33, $C0, $8B, $E5, $5D, $C3, $55, + $8B, $EC, $83, $EC, $24, $8B, $C1, $89, $55, $E8, $53, $57, $89, $45, $DC, $8B, + $D8, $33, $C0, $C7, $45, $EC, $10, $40, $00, $10, $6A, $1C, $89, $45, $F0, $8B, + $FA, $88, $45, $FF, $32, $C0, $59, $F3, $AA, $B5, $10, $8A, $0B, $43, $0F, $B6, + $C1, $88, $4D, $FE, $83, $F8, $66, $7F, $30, $74, $25, $83, $F8, $26, $74, $17, + $83, $F8, $2E, $74, $12, $83, $F8, $36, $74, $0D, $83, $F8, $3E, $74, $08, $83, + $C0, $9C, $83, $F8, $01, $77, $50, $80, $4D, $FF, $40, $88, $4A, $03, $EB, $42, + $80, $4D, $FF, $08, $88, $4A, $04, $EB, $39, $83, $E8, $67, $74, $2D, $2D, $89, + $00, $00, $00, $74, $1D, $48, $83, $E8, $01, $74, $0E, $83, $E8, $01, $75, $27, + $80, $4D, $FF, $04, $88, $4A, $01, $EB, $19, $80, $4D, $FF, $02, $88, $4A, $01, + $EB, $10, $80, $4D, $FF, $20, $88, $4A, $02, $EB, $07, $80, $4D, $FF, $10, $88, + $4A, $05, $80, $ED, $01, $75, $84, $8A, $6D, $FF, $0F, $B6, $C5, $C1, $E0, $17, + $89, $42, $18, $84, $ED, $75, $05, $FE, $C5, $88, $6D, $FF, $88, $4A, $06, $80, + $F9, $0F, $75, $12, $8A, $0B, $43, $88, $4D, $FE, $88, $4A, $07, $C7, $45, $EC, + $5A, $40, $00, $10, $EB, $18, $8A, $C1, $04, $60, $3C, $03, $77, $10, $F6, $C5, + $10, $74, $05, $80, $CD, $08, $EB, $03, $80, $E5, $F7, $88, $6D, $FF, $0F, $B6, + $F9, $56, $8B, $F7, $8B, $C7, $C1, $EE, $02, $25, $03, $00, $00, $80, $79, $05, + $48, $83, $C8, $FC, $40, $8B, $55, $EC, $89, $45, $E4, $8B, $45, $EC, $0F, $B6, + $04, $06, $03, $45, $E4, $8A, $04, $10, $8B, $55, $E8, $89, $45, $F4, $3C, $FF, + $75, $1F, $81, $4A, $18, $00, $30, $00, $00, $8B, $C7, $83, $E0, $FD, $C6, $45, + $F4, $00, $83, $F8, $24, $75, $07, $B0, $01, $89, $45, $F4, $EB, $03, $8B, $45, + $F4, $C6, $45, $E0, $00, $84, $C0, $79, $19, $8B, $55, $EC, $0F, $B6, $C0, $83, + $E0, $7F, $0F, $B7, $04, $10, $8B, $55, $E8, $89, $45, $F4, $C1, $E8, $08, $89, + $45, $E0, $8A, $42, $07, $84, $C0, $74, $1A, $0F, $B6, $86, $40, $41, $00, $10, + $8B, $75, $E4, $84, $AC, $30, $40, $41, $00, $10, $74, $07, $81, $4A, $18, $00, + $30, $00, $00, $8B, $45, $F4, $A8, $01, $0F, $84, $C2, $02, $00, $00, $83, $4A, + $18, $01, $8A, $03, $8A, $E0, $88, $42, $08, $C0, $EC, $06, $88, $65, $FB, $88, + $62, $09, $8A, $E0, $C0, $E8, $03, $80, $E4, $07, $24, $07, $88, $65, $FC, $88, + $62, $0B, $88, $45, $FD, $88, $42, $0A, $8B, $45, $E0, $84, $C0, $74, $16, $8A, + $4D, $FD, $0F, $B6, $C0, $D3, $E0, $8A, $4D, $FE, $84, $C0, $79, $07, $81, $4A, + $18, $00, $30, $00, $00, $8A, $62, $07, $84, $E4, $75, $43, $8A, $C1, $04, $27, + $3C, $06, $77, $3B, $80, $C1, $27, $80, $7D, $FB, $03, $75, $13, $0F, $B6, $45, + $FD, $0F, $B6, $C9, $8A, $84, $C8, $08, $41, $00, $10, $8A, $4D, $FC, $EB, $0C, + $0F, $B6, $C1, $8A, $4D, $FD, $8A, $80, $01, $41, $00, $10, $8A, $6D, $FF, $8A, + $62, $07, $D2, $E0, $84, $C0, $79, $07, $81, $4A, $18, $00, $30, $00, $00, $BE, + $DB, $41, $00, $10, $F6, $C5, $20, $74, $5E, $80, $7D, $FB, $03, $75, $09, $81, + $4A, $18, $00, $90, $00, $00, $EB, $4F, $8A, $45, $FE, $8A, $C8, $84, $E4, $74, + $0E, $BE, $C9, $41, $00, $10, $C7, $45, $E0, $DB, $41, $00, $10, $EB, $11, $8A, + $C8, $C7, $45, $E0, $C9, $41, $00, $10, $BE, $B1, $41, $00, $10, $80, $E1, $FE, + $38, $0E, $74, $0A, $83, $C6, $02, $3B, $75, $E0, $75, $F4, $EB, $0D, $0F, $B6, + $46, $01, $8A, $4D, $FD, $D3, $E0, $84, $C0, $79, $07, $81, $4A, $18, $00, $90, + $00, $00, $BE, $DB, $41, $00, $10, $8A, $4A, $07, $8B, $C7, $84, $C9, $74, $43, + $83, $E8, $20, $74, $22, $83, $E8, $01, $74, $0A, $83, $E8, $01, $74, $18, $83, + $E8, $01, $75, $3C, $8A, $45, $FD, $C6, $45, $FB, $03, $3C, $04, $0F, $84, $A6, + $00, $00, $00, $3C, $05, $EB, $11, $8A, $45, $FD, $C6, $45, $FB, $03, $3C, $04, + $0F, $87, $93, $00, $00, $00, $3C, $01, $0F, $85, $92, $00, $00, $00, $E9, $86, + $00, $00, $00, $2D, $8C, $00, $00, $00, $74, $79, $48, $83, $E8, $01, $74, $68, + $80, $7D, $FB, $03, $75, $39, $84, $C9, $74, $0C, $BE, $EA, $41, $00, $10, $BF, + $14, $42, $00, $10, $EB, $05, $BF, $EA, $41, $00, $10, $8A, $4D, $FE, $38, $0E, + $74, $09, $83, $C6, $03, $3B, $F7, $75, $F5, $EB, $58, $84, $6E, $01, $74, $53, + $0F, $B6, $46, $02, $8A, $4D, $FD, $D3, $E0, $84, $C0, $79, $3C, $EB, $41, $84, + $C9, $74, $3D, $83, $EF, $50, $74, $14, $83, $EF, $75, $74, $2C, $83, $EF, $11, + $74, $0F, $83, $EF, $01, $74, $05, $83, $EF, $20, $75, $24, $F6, $C5, $09, $EB, + $03, $F6, $C5, $06, $75, $13, $EB, $18, $8A, $45, $FD, $3C, $01, $74, $0A, $3C, + $05, $EB, $04, $80, $7D, $FD, $05, $76, $07, $81, $4A, $18, $00, $10, $01, $00, + $8A, $4D, $FE, $8A, $43, $01, $83, $C3, $02, $80, $7D, $FD, $01, $88, $45, $FA, + $77, $14, $80, $F9, $F6, $75, $06, $80, $4D, $F4, $02, $EB, $09, $80, $F9, $F7, + $75, $04, $80, $4D, $F4, $10, $8A, $4D, $FB, $0F, $B6, $C1, $83, $E8, $00, $74, + $65, $83, $E8, $01, $74, $57, $83, $E8, $01, $8A, $45, $FC, $75, $0D, $C6, $45, + $F0, $02, $F6, $C5, $10, $75, $04, $C6, $45, $F0, $04, $80, $F9, $03, $74, $5C, + $3C, $04, $75, $58, $F6, $C5, $10, $75, $53, $8A, $4D, $FA, $83, $4A, $18, $02, + $8A, $C1, $C0, $E8, $06, $43, $88, $42, $0D, $8A, $C1, $C0, $E8, $03, $24, $07, + $88, $4A, $0C, $88, $42, $0E, $0F, $B6, $C1, $83, $E0, $07, $88, $42, $0F, $3C, + $05, $75, $29, $F6, $45, $FB, $01, $75, $23, $FE, $C8, $EB, $22, $8A, $45, $FC, + $C6, $45, $F0, $01, $EB, $B5, $8A, $45, $FC, $F6, $C5, $10, $74, $0A, $3C, $06, + $75, $A9, $C6, $45, $F0, $02, $EB, $A3, $3C, $05, $EB, $99, $8B, $45, $F0, $0F, + $B6, $F0, $4B, $8B, $C6, $83, $E8, $01, $74, $26, $83, $E8, $01, $74, $14, $48, + $83, $E8, $01, $75, $24, $81, $4A, $18, $80, $00, $00, $00, $8B, $03, $89, $42, + $14, $EB, $16, $83, $4A, $18, $40, $66, $8B, $03, $66, $89, $42, $14, $EB, $09, + $83, $4A, $18, $20, $8A, $03, $88, $42, $14, $8B, $45, $F4, $03, $DE, $EB, $0C, + $F6, $C5, $20, $74, $07, $81, $4A, $18, $00, $90, $00, $00, $5E, $A8, $10, $74, + $44, $A8, $40, $74, $1F, $F6, $C5, $08, $0F, $84, $84, $00, $00, $00, $81, $4A, + $18, $08, $01, $00, $00, $66, $8B, $03, $83, $C3, $02, $66, $89, $42, $10, $E9, + $91, $00, $00, $00, $F6, $C5, $08, $74, $10, $83, $4A, $18, $08, $66, $8B, $03, + $83, $C3, $02, $66, $89, $42, $10, $EB, $0C, $83, $4A, $18, $10, $8B, $03, $83, + $C3, $04, $89, $42, $10, $8B, $4D, $F4, $F6, $C1, $04, $74, $31, $8B, $42, $18, + $A8, $10, $74, $05, $83, $C8, $08, $EB, $09, $A8, $08, $74, $11, $0D, $00, $08, + $00, $00, $89, $42, $18, $66, $8B, $03, $66, $89, $42, $14, $EB, $0D, $83, $C8, + $08, $89, $42, $18, $66, $8B, $03, $66, $89, $42, $10, $83, $C3, $02, $F6, $C1, + $02, $74, $0A, $83, $4A, $18, $04, $8A, $03, $43, $88, $42, $10, $F6, $C1, $40, + $74, $11, $81, $4A, $18, $10, $01, $00, $00, $8B, $03, $83, $C3, $04, $89, $42, + $10, $EB, $12, $F6, $C1, $20, $74, $0D, $81, $4A, $18, $04, $01, $00, $00, $8A, + $03, $43, $88, $42, $10, $2B, $5D, $DC, $5F, $88, $1A, $80, $FB, $0F, $5B, $76, + $0A, $81, $4A, $18, $00, $50, $00, $00, $C6, $02, $0F, $0F, $B6, $02, $8B, $E5, + $5D, $C3, $3B, $0D, $04, $40, $00, $10, $F2, $75, $02, $F2, $C3, $F2, $E9, $28, + $00, $00, $00, $55, $8B, $EC, $6A, $00, $FF, $15, $38, $30, $00, $10, $FF, $75, + $08, $FF, $15, $3C, $30, $00, $10, $68, $09, $04, $00, $C0, $FF, $15, $4C, $30, + $00, $10, $50, $FF, $15, $34, $30, $00, $10, $5D, $C3, $55, $8B, $EC, $81, $EC, + $24, $03, $00, $00, $6A, $17, $E8, $EB, $00, $00, $00, $85, $C0, $74, $05, $6A, + $02, $59, $CD, $29, $A3, $20, $43, $00, $10, $89, $0D, $1C, $43, $00, $10, $89, + $15, $18, $43, $00, $10, $89, $1D, $14, $43, $00, $10, $89, $35, $10, $43, $00, + $10, $89, $3D, $0C, $43, $00, $10, $66, $8C, $15, $38, $43, $00, $10, $66, $8C, + $0D, $2C, $43, $00, $10, $66, $8C, $1D, $08, $43, $00, $10, $66, $8C, $05, $04, + $43, $00, $10, $66, $8C, $25, $00, $43, $00, $10, $66, $8C, $2D, $FC, $42, $00, + $10, $9C, $8F, $05, $30, $43, $00, $10, $8B, $45, $00, $A3, $24, $43, $00, $10, + $8B, $45, $04, $A3, $28, $43, $00, $10, $8D, $45, $08, $A3, $34, $43, $00, $10, + $8B, $85, $DC, $FC, $FF, $FF, $C7, $05, $70, $42, $00, $10, $01, $00, $01, $00, + $A1, $28, $43, $00, $10, $A3, $2C, $42, $00, $10, $C7, $05, $20, $42, $00, $10, + $09, $04, $00, $C0, $C7, $05, $24, $42, $00, $10, $01, $00, $00, $00, $C7, $05, + $30, $42, $00, $10, $01, $00, $00, $00, $6A, $04, $58, $6B, $C0, $00, $C7, $80, + $34, $42, $00, $10, $02, $00, $00, $00, $6A, $04, $58, $6B, $C0, $00, $8B, $0D, + $04, $40, $00, $10, $89, $4C, $05, $F8, $6A, $04, $58, $C1, $E0, $00, $8B, $0D, + $00, $40, $00, $10, $89, $4C, $05, $F8, $68, $C0, $30, $00, $10, $E8, $E1, $FE, + $FF, $FF, $8B, $E5, $5D, $C3, $FF, $25, $9C, $30, $00, $10, $C3, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $14, $39, $00, $00, $22, $39, $00, $00, $30, $39, $00, $00, $46, $39, $00, $00, + $56, $39, $00, $00, $68, $39, $00, $00, $76, $39, $00, $00, $88, $39, $00, $00, + $94, $39, $00, $00, $A4, $39, $00, $00, $B8, $39, $00, $00, $CA, $39, $00, $00, + $DA, $39, $00, $00, $02, $3C, $00, $00, $E4, $3B, $00, $00, $C8, $3B, $00, $00, + $32, $3A, $00, $00, $48, $3A, $00, $00, $56, $3A, $00, $00, $62, $3A, $00, $00, + $76, $3A, $00, $00, $94, $3A, $00, $00, $A4, $3A, $00, $00, $B4, $3A, $00, $00, + $CA, $3A, $00, $00, $DA, $3A, $00, $00, $EA, $3A, $00, $00, $06, $3B, $00, $00, + $0E, $3B, $00, $00, $1C, $3B, $00, $00, $28, $3B, $00, $00, $36, $3B, $00, $00, + $4A, $3B, $00, $00, $60, $3B, $00, $00, $78, $3B, $00, $00, $8C, $3B, $00, $00, + $9A, $3B, $00, $00, $A8, $3B, $00, $00, $B8, $3B, $00, $00, $16, $3C, $00, $00, + $00, $00, $00, $00, $FE, $39, $00, $00, $12, $3A, $00, $00, $00, $00, $00, $00, + $0C, $2A, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $20, $42, $00, $10, $70, $42, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $96, $30, $07, $77, $2C, $61, $0E, $EE, $BA, $51, $09, $99, + $19, $C4, $6D, $07, $8F, $F4, $6A, $70, $35, $A5, $63, $E9, $A3, $95, $64, $9E, + $32, $88, $DB, $0E, $A4, $B8, $DC, $79, $1E, $E9, $D5, $E0, $88, $D9, $D2, $97, + $2B, $4C, $B6, $09, $BD, $7C, $B1, $7E, $07, $2D, $B8, $E7, $91, $1D, $BF, $90, + $64, $10, $B7, $1D, $F2, $20, $B0, $6A, $48, $71, $B9, $F3, $DE, $41, $BE, $84, + $7D, $D4, $DA, $1A, $EB, $E4, $DD, $6D, $51, $B5, $D4, $F4, $C7, $85, $D3, $83, + $56, $98, $6C, $13, $C0, $A8, $6B, $64, $7A, $F9, $62, $FD, $EC, $C9, $65, $8A, + $4F, $5C, $01, $14, $D9, $6C, $06, $63, $63, $3D, $0F, $FA, $F5, $0D, $08, $8D, + $C8, $20, $6E, $3B, $5E, $10, $69, $4C, $E4, $41, $60, $D5, $72, $71, $67, $A2, + $D1, $E4, $03, $3C, $47, $D4, $04, $4B, $FD, $85, $0D, $D2, $6B, $B5, $0A, $A5, + $FA, $A8, $B5, $35, $6C, $98, $B2, $42, $D6, $C9, $BB, $DB, $40, $F9, $BC, $AC, + $E3, $6C, $D8, $32, $75, $5C, $DF, $45, $CF, $0D, $D6, $DC, $59, $3D, $D1, $AB, + $AC, $30, $D9, $26, $3A, $00, $DE, $51, $80, $51, $D7, $C8, $16, $61, $D0, $BF, + $B5, $F4, $B4, $21, $23, $C4, $B3, $56, $99, $95, $BA, $CF, $0F, $A5, $BD, $B8, + $9E, $B8, $02, $28, $08, $88, $05, $5F, $B2, $D9, $0C, $C6, $24, $E9, $0B, $B1, + $87, $7C, $6F, $2F, $11, $4C, $68, $58, $AB, $1D, $61, $C1, $3D, $2D, $66, $B6, + $90, $41, $DC, $76, $06, $71, $DB, $01, $BC, $20, $D2, $98, $2A, $10, $D5, $EF, + $89, $85, $B1, $71, $1F, $B5, $B6, $06, $A5, $E4, $BF, $9F, $33, $D4, $B8, $E8, + $A2, $C9, $07, $78, $34, $F9, $00, $0F, $8E, $A8, $09, $96, $18, $98, $0E, $E1, + $BB, $0D, $6A, $7F, $2D, $3D, $6D, $08, $97, $6C, $64, $91, $01, $5C, $63, $E6, + $F4, $51, $6B, $6B, $62, $61, $6C, $1C, $D8, $30, $65, $85, $4E, $00, $62, $F2, + $ED, $95, $06, $6C, $7B, $A5, $01, $1B, $C1, $F4, $08, $82, $57, $C4, $0F, $F5, + $C6, $D9, $B0, $65, $50, $E9, $B7, $12, $EA, $B8, $BE, $8B, $7C, $88, $B9, $FC, + $DF, $1D, $DD, $62, $49, $2D, $DA, $15, $F3, $7C, $D3, $8C, $65, $4C, $D4, $FB, + $58, $61, $B2, $4D, $CE, $51, $B5, $3A, $74, $00, $BC, $A3, $E2, $30, $BB, $D4, + $41, $A5, $DF, $4A, $D7, $95, $D8, $3D, $6D, $C4, $D1, $A4, $FB, $F4, $D6, $D3, + $6A, $E9, $69, $43, $FC, $D9, $6E, $34, $46, $88, $67, $AD, $D0, $B8, $60, $DA, + $73, $2D, $04, $44, $E5, $1D, $03, $33, $5F, $4C, $0A, $AA, $C9, $7C, $0D, $DD, + $3C, $71, $05, $50, $AA, $41, $02, $27, $10, $10, $0B, $BE, $86, $20, $0C, $C9, + $25, $B5, $68, $57, $B3, $85, $6F, $20, $09, $D4, $66, $B9, $9F, $E4, $61, $CE, + $0E, $F9, $DE, $5E, $98, $C9, $D9, $29, $22, $98, $D0, $B0, $B4, $A8, $D7, $C7, + $17, $3D, $B3, $59, $81, $0D, $B4, $2E, $3B, $5C, $BD, $B7, $AD, $6C, $BA, $C0, + $20, $83, $B8, $ED, $B6, $B3, $BF, $9A, $0C, $E2, $B6, $03, $9A, $D2, $B1, $74, + $39, $47, $D5, $EA, $AF, $77, $D2, $9D, $15, $26, $DB, $04, $83, $16, $DC, $73, + $12, $0B, $63, $E3, $84, $3B, $64, $94, $3E, $6A, $6D, $0D, $A8, $5A, $6A, $7A, + $0B, $CF, $0E, $E4, $9D, $FF, $09, $93, $27, $AE, $00, $0A, $B1, $9E, $07, $7D, + $44, $93, $0F, $F0, $D2, $A3, $08, $87, $68, $F2, $01, $1E, $FE, $C2, $06, $69, + $5D, $57, $62, $F7, $CB, $67, $65, $80, $71, $36, $6C, $19, $E7, $06, $6B, $6E, + $76, $1B, $D4, $FE, $E0, $2B, $D3, $89, $5A, $7A, $DA, $10, $CC, $4A, $DD, $67, + $6F, $DF, $B9, $F9, $F9, $EF, $BE, $8E, $43, $BE, $B7, $17, $D5, $8E, $B0, $60, + $E8, $A3, $D6, $D6, $7E, $93, $D1, $A1, $C4, $C2, $D8, $38, $52, $F2, $DF, $4F, + $F1, $67, $BB, $D1, $67, $57, $BC, $A6, $DD, $06, $B5, $3F, $4B, $36, $B2, $48, + $DA, $2B, $0D, $D8, $4C, $1B, $0A, $AF, $F6, $4A, $03, $36, $60, $7A, $04, $41, + $C3, $EF, $60, $DF, $55, $DF, $67, $A8, $EF, $8E, $6E, $31, $79, $BE, $69, $46, + $8C, $B3, $61, $CB, $1A, $83, $66, $BC, $A0, $D2, $6F, $25, $36, $E2, $68, $52, + $95, $77, $0C, $CC, $03, $47, $0B, $BB, $B9, $16, $02, $22, $2F, $26, $05, $55, + $BE, $3B, $BA, $C5, $28, $0B, $BD, $B2, $92, $5A, $B4, $2B, $04, $6A, $B3, $5C, + $A7, $FF, $D7, $C2, $31, $CF, $D0, $B5, $8B, $9E, $D9, $2C, $1D, $AE, $DE, $5B, + $B0, $C2, $64, $9B, $26, $F2, $63, $EC, $9C, $A3, $6A, $75, $0A, $93, $6D, $02, + $A9, $06, $09, $9C, $3F, $36, $0E, $EB, $85, $67, $07, $72, $13, $57, $00, $05, + $82, $4A, $BF, $95, $14, $7A, $B8, $E2, $AE, $2B, $B1, $7B, $38, $1B, $B6, $0C, + $9B, $8E, $D2, $92, $0D, $BE, $D5, $E5, $B7, $EF, $DC, $7C, $21, $DF, $DB, $0B, + $D4, $D2, $D3, $86, $42, $E2, $D4, $F1, $F8, $B3, $DD, $68, $6E, $83, $DA, $1F, + $CD, $16, $BE, $81, $5B, $26, $B9, $F6, $E1, $77, $B0, $6F, $77, $47, $B7, $18, + $E6, $5A, $08, $88, $70, $6A, $0F, $FF, $CA, $3B, $06, $66, $5C, $0B, $01, $11, + $FF, $9E, $65, $8F, $69, $AE, $62, $F8, $D3, $FF, $6B, $61, $45, $CF, $6C, $16, + $78, $E2, $0A, $A0, $EE, $D2, $0D, $D7, $54, $83, $04, $4E, $C2, $B3, $03, $39, + $61, $26, $67, $A7, $F7, $16, $60, $D0, $4D, $47, $69, $49, $DB, $77, $6E, $3E, + $4A, $6A, $D1, $AE, $DC, $5A, $D6, $D9, $66, $0B, $DF, $40, $F0, $3B, $D8, $37, + $53, $AE, $BC, $A9, $C5, $9E, $BB, $DE, $7F, $CF, $B2, $47, $E9, $FF, $B5, $30, + $1C, $F2, $BD, $BD, $8A, $C2, $BA, $CA, $30, $93, $B3, $53, $A6, $A3, $B4, $24, + $05, $36, $D0, $BA, $93, $06, $D7, $CD, $29, $57, $DE, $54, $BF, $67, $D9, $23, + $2E, $7A, $66, $B3, $B8, $4A, $61, $C4, $02, $1B, $68, $5D, $94, $2B, $6F, $2A, + $37, $BE, $0B, $B4, $A1, $8E, $0C, $C3, $1B, $DF, $05, $5A, $8D, $EF, $02, $2D, + $73, $00, $61, $00, $6E, $00, $63, $00, $74, $00, $75, $00, $61, $00, $72, $00, + $79, $00, $6C, $00, $69, $00, $62, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00, + $00, $00, $00, $00, $41, $64, $64, $43, $6C, $69, $70, $62, $6F, $61, $72, $64, + $46, $6F, $72, $6D, $61, $74, $4C, $69, $73, $74, $65, $6E, $65, $72, $00, $00, + $52, $65, $6D, $6F, $76, $65, $43, $6C, $69, $70, $62, $6F, $61, $72, $64, $46, + $6F, $72, $6D, $61, $74, $4C, $69, $73, $74, $65, $6E, $65, $72, $00, $00, $00, + $6B, $00, $65, $00, $72, $00, $6E, $00, $65, $00, $6C, $00, $33, $00, $32, $00, + $2E, $00, $64, $00, $6C, $00, $6C, $00, $00, $00, $00, $00, $75, $00, $73, $00, + $65, $00, $72, $00, $33, $00, $32, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00, + $00, $00, $00, $00, $47, $65, $74, $50, $72, $6F, $63, $41, $64, $64, $72, $65, + $73, $73, $00, $00, $4C, $64, $72, $47, $65, $74, $50, $72, $6F, $63, $65, $64, + $75, $72, $65, $41, $64, $64, $72, $65, $73, $73, $00, $00, $6E, $00, $74, $00, + $64, $00, $6C, $00, $6C, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00, $00, $00, + $4C, $64, $72, $4C, $6F, $61, $64, $44, $6C, $6C, $00, $00, $77, $00, $69, $00, + $6E, $00, $74, $00, $72, $00, $75, $00, $73, $00, $74, $00, $2E, $00, $64, $00, + $6C, $00, $6C, $00, $00, $00, $00, $00, $57, $69, $6E, $56, $65, $72, $69, $66, + $79, $54, $72, $75, $73, $74, $00, $00, $57, $69, $6E, $56, $65, $72, $69, $66, + $79, $54, $72, $75, $73, $74, $45, $78, $00, $00, $00, $00, $62, $00, $64, $00, + $73, $00, $2E, $00, $65, $00, $78, $00, $65, $00, $00, $00, $4C, $00, $69, $00, + $63, $00, $65, $00, $6E, $00, $73, $00, $65, $00, $4D, $00, $61, $00, $6E, $00, + $61, $00, $67, $00, $65, $00, $72, $00, $2E, $00, $65, $00, $78, $00, $65, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $E1, $70, $F1, $55, $00, $00, $00, $00, $0D, $00, $00, $00, + $0C, $01, $00, $00, $1C, $37, $00, $00, $1C, $27, $00, $00, $00, $00, $00, $00, + $5C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $40, $00, $10, + $00, $00, $00, $00, $00, $00, $00, $00, $B0, $30, $00, $10, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $E1, $70, $F1, $55, $00, $00, $00, $00, $EC, $36, $00, $00, + $01, $00, $00, $00, $02, $00, $00, $00, $02, $00, $00, $00, $D8, $36, $00, $00, + $E0, $36, $00, $00, $E8, $36, $00, $00, $B0, $10, $00, $00, $D0, $10, $00, $00, + $F9, $36, $00, $00, $0A, $37, $00, $00, $00, $00, $01, $00, $73, $68, $66, $6F, + $6C, $64, $65, $72, $2E, $64, $6C, $6C, $00, $53, $48, $47, $65, $74, $46, $6F, + $6C, $64, $65, $72, $50, $61, $74, $68, $41, $00, $53, $48, $47, $65, $74, $46, + $6F, $6C, $64, $65, $72, $50, $61, $74, $68, $57, $00, $00, $47, $43, $54, $4C, + $00, $10, $00, $00, $0D, $1A, $00, $00, $2E, $74, $65, $78, $74, $24, $6D, $6E, + $00, $00, $00, $00, $00, $30, $00, $00, $B0, $00, $00, $00, $2E, $69, $64, $61, + $74, $61, $24, $35, $00, $00, $00, $00, $B0, $30, $00, $00, $04, $00, $00, $00, + $2E, $30, $30, $63, $66, $67, $00, $00, $C0, $30, $00, $00, $EC, $05, $00, $00, + $2E, $72, $64, $61, $74, $61, $00, $00, $B0, $36, $00, $00, $6B, $00, $00, $00, + $2E, $65, $64, $61, $74, $61, $00, $00, $1C, $37, $00, $00, $0C, $01, $00, $00, + $2E, $72, $64, $61, $74, $61, $24, $7A, $7A, $7A, $64, $62, $67, $00, $00, $00, + $28, $38, $00, $00, $28, $00, $00, $00, $2E, $69, $64, $61, $74, $61, $24, $32, + $00, $00, $00, $00, $50, $38, $00, $00, $14, $00, $00, $00, $2E, $69, $64, $61, + $74, $61, $24, $33, $00, $00, $00, $00, $64, $38, $00, $00, $B0, $00, $00, $00, + $2E, $69, $64, $61, $74, $61, $24, $34, $00, $00, $00, $00, $14, $39, $00, $00, + $1E, $03, $00, $00, $2E, $69, $64, $61, $74, $61, $24, $36, $00, $00, $00, $00, + $00, $40, $00, $00, $14, $02, $00, $00, $2E, $64, $61, $74, $61, $00, $00, $00, + $20, $42, $00, $00, $6C, $03, $00, $00, $2E, $62, $73, $73, $00, $00, $00, $00, + $00, $50, $00, $00, $58, $00, $00, $00, $2E, $72, $73, $72, $63, $24, $30, $31, + $00, $00, $00, $00, $60, $50, $00, $00, $80, $01, $00, $00, $2E, $72, $73, $72, + $63, $24, $30, $32, $00, $00, $00, $00, $64, $38, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $F0, $39, $00, $00, $00, $30, $00, $00, $08, $39, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $26, $3A, $00, $00, $A4, $30, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $14, $39, $00, $00, $22, $39, $00, $00, $30, $39, $00, $00, + $46, $39, $00, $00, $56, $39, $00, $00, $68, $39, $00, $00, $76, $39, $00, $00, + $88, $39, $00, $00, $94, $39, $00, $00, $A4, $39, $00, $00, $B8, $39, $00, $00, + $CA, $39, $00, $00, $DA, $39, $00, $00, $02, $3C, $00, $00, $E4, $3B, $00, $00, + $C8, $3B, $00, $00, $32, $3A, $00, $00, $48, $3A, $00, $00, $56, $3A, $00, $00, + $62, $3A, $00, $00, $76, $3A, $00, $00, $94, $3A, $00, $00, $A4, $3A, $00, $00, + $B4, $3A, $00, $00, $CA, $3A, $00, $00, $DA, $3A, $00, $00, $EA, $3A, $00, $00, + $06, $3B, $00, $00, $0E, $3B, $00, $00, $1C, $3B, $00, $00, $28, $3B, $00, $00, + $36, $3B, $00, $00, $4A, $3B, $00, $00, $60, $3B, $00, $00, $78, $3B, $00, $00, + $8C, $3B, $00, $00, $9A, $3B, $00, $00, $A8, $3B, $00, $00, $B8, $3B, $00, $00, + $16, $3C, $00, $00, $00, $00, $00, $00, $FE, $39, $00, $00, $12, $3A, $00, $00, + $00, $00, $00, $00, $8F, $00, $43, $72, $65, $61, $74, $65, $46, $69, $6C, $65, + $57, $00, $F0, $01, $47, $65, $74, $46, $69, $6C, $65, $53, $69, $7A, $65, $00, + $8C, $00, $43, $72, $65, $61, $74, $65, $46, $69, $6C, $65, $4D, $61, $70, $70, + $69, $6E, $67, $57, $00, $00, $57, $03, $4D, $61, $70, $56, $69, $65, $77, $4F, + $66, $46, $69, $6C, $65, $00, $D6, $04, $55, $6E, $6D, $61, $70, $56, $69, $65, + $77, $4F, $66, $46, $69, $6C, $65, $00, $52, $00, $43, $6C, $6F, $73, $65, $48, + $61, $6E, $64, $6C, $65, $00, $EF, $04, $56, $69, $72, $74, $75, $61, $6C, $50, + $72, $6F, $74, $65, $63, $74, $00, $00, $45, $05, $6C, $73, $74, $72, $63, $6D, + $70, $69, $57, $00, $A4, $02, $47, $65, $74, $56, $65, $72, $73, $69, $6F, $6E, + $45, $78, $57, $00, $18, $02, $47, $65, $74, $4D, $6F, $64, $75, $6C, $65, $48, + $61, $6E, $64, $6C, $65, $57, $00, $00, $45, $02, $47, $65, $74, $50, $72, $6F, + $63, $41, $64, $64, $72, $65, $73, $73, $00, $00, $3F, $03, $4C, $6F, $61, $64, + $4C, $69, $62, $72, $61, $72, $79, $57, $00, $00, $14, $02, $47, $65, $74, $4D, + $6F, $64, $75, $6C, $65, $46, $69, $6C, $65, $4E, $61, $6D, $65, $57, $00, $00, + $4B, $45, $52, $4E, $45, $4C, $33, $32, $2E, $64, $6C, $6C, $00, $00, $BF, $00, + $53, $48, $47, $65, $74, $46, $6F, $6C, $64, $65, $72, $50, $61, $74, $68, $41, + $00, $00, $C3, $00, $53, $48, $47, $65, $74, $46, $6F, $6C, $64, $65, $72, $50, + $61, $74, $68, $57, $00, $00, $53, $48, $45, $4C, $4C, $33, $32, $2E, $64, $6C, + $6C, $00, $EC, $02, $49, $6E, $74, $65, $72, $6C, $6F, $63, $6B, $65, $64, $45, + $78, $63, $68, $61, $6E, $67, $65, $00, $CD, $02, $48, $65, $61, $70, $43, $72, + $65, $61, $74, $65, $00, $00, $CF, $02, $48, $65, $61, $70, $46, $72, $65, $65, + $00, $00, $C0, $01, $47, $65, $74, $43, $75, $72, $72, $65, $6E, $74, $50, $72, + $6F, $63, $65, $73, $73, $00, $E9, $02, $49, $6E, $74, $65, $72, $6C, $6F, $63, + $6B, $65, $64, $43, $6F, $6D, $70, $61, $72, $65, $45, $78, $63, $68, $61, $6E, + $67, $65, $00, $00, $C4, $04, $54, $68, $72, $65, $61, $64, $33, $32, $4E, $65, + $78, $74, $00, $00, $C3, $04, $54, $68, $72, $65, $61, $64, $33, $32, $46, $69, + $72, $73, $74, $00, $C5, $01, $47, $65, $74, $43, $75, $72, $72, $65, $6E, $74, + $54, $68, $72, $65, $61, $64, $49, $64, $00, $00, $BA, $04, $53, $75, $73, $70, + $65, $6E, $64, $54, $68, $72, $65, $61, $64, $00, $13, $04, $52, $65, $73, $75, + $6D, $65, $54, $68, $72, $65, $61, $64, $00, $00, $BE, $00, $43, $72, $65, $61, + $74, $65, $54, $6F, $6F, $6C, $68, $65, $6C, $70, $33, $32, $53, $6E, $61, $70, + $73, $68, $6F, $74, $00, $00, $B2, $04, $53, $6C, $65, $65, $70, $00, $D2, $02, + $48, $65, $61, $70, $52, $65, $41, $6C, $6C, $6F, $63, $00, $CB, $02, $48, $65, + $61, $70, $41, $6C, $6C, $6F, $63, $00, $CE, $02, $48, $65, $61, $70, $44, $65, + $73, $74, $72, $6F, $79, $00, $86, $02, $47, $65, $74, $54, $68, $72, $65, $61, + $64, $43, $6F, $6E, $74, $65, $78, $74, $00, $00, $C1, $01, $47, $65, $74, $43, + $75, $72, $72, $65, $6E, $74, $50, $72, $6F, $63, $65, $73, $73, $49, $64, $00, + $58, $01, $46, $6C, $75, $73, $68, $49, $6E, $73, $74, $72, $75, $63, $74, $69, + $6F, $6E, $43, $61, $63, $68, $65, $00, $91, $04, $53, $65, $74, $54, $68, $72, + $65, $61, $64, $43, $6F, $6E, $74, $65, $78, $74, $00, $00, $85, $03, $4F, $70, + $65, $6E, $54, $68, $72, $65, $61, $64, $00, $00, $EC, $04, $56, $69, $72, $74, + $75, $61, $6C, $46, $72, $65, $65, $00, $E9, $04, $56, $69, $72, $74, $75, $61, + $6C, $41, $6C, $6C, $6F, $63, $00, $00, $F1, $04, $56, $69, $72, $74, $75, $61, + $6C, $51, $75, $65, $72, $79, $00, $00, $D3, $04, $55, $6E, $68, $61, $6E, $64, + $6C, $65, $64, $45, $78, $63, $65, $70, $74, $69, $6F, $6E, $46, $69, $6C, $74, + $65, $72, $00, $00, $A5, $04, $53, $65, $74, $55, $6E, $68, $61, $6E, $64, $6C, + $65, $64, $45, $78, $63, $65, $70, $74, $69, $6F, $6E, $46, $69, $6C, $74, $65, + $72, $00, $C0, $04, $54, $65, $72, $6D, $69, $6E, $61, $74, $65, $50, $72, $6F, + $63, $65, $73, $73, $00, $00, $04, $03, $49, $73, $50, $72, $6F, $63, $65, $73, + $73, $6F, $72, $46, $65, $61, $74, $75, $72, $65, $50, $72, $65, $73, $65, $6E, + $74, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $B1, $19, $BF, $44, $4E, $E6, $40, $BB, $00, $00, $00, $00, $00, $00, $00, $00, + $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, $A3, $A8, + $AA, $AA, $AA, $AA, $AA, $AA, $AA, $AA, $AC, $AA, $B2, $AA, $9F, $9F, $9F, $9F, + $B5, $A3, $A3, $A4, $AA, $AA, $BA, $AA, $96, $AA, $A8, $AA, $C3, $C3, $96, $96, + $B7, $AE, $D6, $BD, $A3, $C5, $A3, $A3, $9F, $C3, $9C, $AA, $AA, $AC, $AA, $BF, + $03, $7F, $11, $7F, $01, $7F, $01, $3F, $01, $01, $90, $82, $7D, $97, $59, $59, + $59, $59, $59, $7F, $59, $59, $60, $7D, $7F, $7F, $59, $59, $59, $59, $59, $59, + $59, $59, $59, $59, $59, $59, $9A, $88, $7D, $59, $50, $50, $50, $50, $59, $59, + $59, $59, $61, $94, $61, $9E, $59, $59, $85, $59, $92, $A3, $60, $60, $59, $59, + $59, $59, $59, $59, $59, $59, $59, $59, $59, $9F, $01, $03, $01, $04, $03, $D5, + $03, $CC, $01, $BC, $03, $F0, $10, $10, $10, $10, $50, $50, $50, $50, $14, $20, + $20, $20, $20, $01, $01, $01, $01, $C4, $02, $10, $00, $00, $00, $00, $01, $01, + $C0, $C2, $10, $11, $02, $03, $11, $03, $03, $04, $00, $00, $14, $00, $02, $00, + $00, $C6, $C8, $02, $02, $02, $02, $00, $00, $FF, $FF, $FF, $FF, $00, $00, $00, + $FF, $CA, $01, $01, $01, $00, $06, $00, $04, $00, $C0, $C2, $01, $01, $03, $01, + $FF, $FF, $01, $00, $03, $C4, $C4, $C6, $03, $01, $01, $01, $FF, $03, $03, $03, + $C8, $40, $00, $0A, $00, $04, $00, $00, $00, $00, $7F, $00, $33, $01, $00, $00, + $00, $00, $00, $00, $FF, $BF, $FF, $FF, $00, $00, $00, $00, $07, $00, $00, $FF, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FF, $FF, + $00, $00, $00, $BF, $00, $00, $00, $00, $00, $00, $00, $00, $7F, $00, $00, $FF, + $4A, $4A, $4A, $4A, $4B, $52, $4A, $4A, $4A, $4A, $4F, $4C, $4A, $4A, $4A, $4A, + $4A, $4A, $4A, $4A, $55, $45, $40, $4A, $4A, $4A, $45, $59, $4D, $46, $4A, $5D, + $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $4A, $61, $63, + $67, $4E, $4A, $4A, $6B, $6D, $4A, $4A, $45, $6D, $4A, $4A, $44, $45, $4A, $4A, + $00, $00, $00, $02, $0D, $06, $06, $06, $06, $0E, $00, $00, $00, $00, $06, $06, + $06, $00, $06, $06, $02, $06, $00, $0A, $0A, $07, $07, $06, $02, $05, $05, $02, + $02, $00, $00, $04, $04, $04, $04, $00, $00, $00, $0E, $05, $06, $06, $06, $01, + $06, $00, $00, $08, $00, $10, $00, $18, $00, $20, $00, $28, $00, $30, $00, $80, + $01, $82, $01, $86, $00, $F6, $CF, $FE, $3F, $AB, $00, $B0, $00, $B1, $00, $B3, + $00, $BA, $F8, $BB, $00, $C0, $00, $C1, $00, $C7, $BF, $62, $FF, $00, $8D, $FF, + $00, $C4, $FF, $00, $C5, $FF, $00, $FF, $FF, $EB, $01, $FF, $0E, $12, $08, $00, + $13, $09, $00, $16, $08, $00, $17, $09, $00, $2B, $09, $00, $AE, $FF, $07, $B2, + $FF, $00, $B4, $FF, $00, $B5, $FF, $00, $C3, $01, $00, $C7, $FF, $BF, $E7, $08, + $00, $F0, $02, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, + $18, $00, $00, $00, $18, $00, $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $01, $00, $02, $00, $00, $00, $30, $00, $00, $80, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, + $09, $04, $00, $00, $48, $00, $00, $00, $60, $50, $00, $00, $7D, $01, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $3C, $3F, $78, $6D, $6C, $20, $76, $65, $72, $73, $69, $6F, $6E, $3D, $27, $31, + $2E, $30, $27, $20, $65, $6E, $63, $6F, $64, $69, $6E, $67, $3D, $27, $55, $54, + $46, $2D, $38, $27, $20, $73, $74, $61, $6E, $64, $61, $6C, $6F, $6E, $65, $3D, + $27, $79, $65, $73, $27, $3F, $3E, $0D, $0A, $3C, $61, $73, $73, $65, $6D, $62, + $6C, $79, $20, $78, $6D, $6C, $6E, $73, $3D, $27, $75, $72, $6E, $3A, $73, $63, + $68, $65, $6D, $61, $73, $2D, $6D, $69, $63, $72, $6F, $73, $6F, $66, $74, $2D, + $63, $6F, $6D, $3A, $61, $73, $6D, $2E, $76, $31, $27, $20, $6D, $61, $6E, $69, + $66, $65, $73, $74, $56, $65, $72, $73, $69, $6F, $6E, $3D, $27, $31, $2E, $30, + $27, $3E, $0D, $0A, $20, $20, $3C, $74, $72, $75, $73, $74, $49, $6E, $66, $6F, + $20, $78, $6D, $6C, $6E, $73, $3D, $22, $75, $72, $6E, $3A, $73, $63, $68, $65, + $6D, $61, $73, $2D, $6D, $69, $63, $72, $6F, $73, $6F, $66, $74, $2D, $63, $6F, + $6D, $3A, $61, $73, $6D, $2E, $76, $33, $22, $3E, $0D, $0A, $20, $20, $20, $20, + $3C, $73, $65, $63, $75, $72, $69, $74, $79, $3E, $0D, $0A, $20, $20, $20, $20, + $20, $20, $3C, $72, $65, $71, $75, $65, $73, $74, $65, $64, $50, $72, $69, $76, + $69, $6C, $65, $67, $65, $73, $3E, $0D, $0A, $20, $20, $20, $20, $20, $20, $20, + $20, $3C, $72, $65, $71, $75, $65, $73, $74, $65, $64, $45, $78, $65, $63, $75, + $74, $69, $6F, $6E, $4C, $65, $76, $65, $6C, $20, $6C, $65, $76, $65, $6C, $3D, + $27, $61, $73, $49, $6E, $76, $6F, $6B, $65, $72, $27, $20, $75, $69, $41, $63, + $63, $65, $73, $73, $3D, $27, $66, $61, $6C, $73, $65, $27, $20, $2F, $3E, $0D, + $0A, $20, $20, $20, $20, $20, $20, $3C, $2F, $72, $65, $71, $75, $65, $73, $74, + $65, $64, $50, $72, $69, $76, $69, $6C, $65, $67, $65, $73, $3E, $0D, $0A, $20, + $20, $20, $20, $3C, $2F, $73, $65, $63, $75, $72, $69, $74, $79, $3E, $0D, $0A, + $20, $20, $3C, $2F, $74, $72, $75, $73, $74, $49, $6E, $66, $6F, $3E, $0D, $0A, + $3C, $2F, $61, $73, $73, $65, $6D, $62, $6C, $79, $3E, $0D, $0A, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $10, $00, $00, $54, $01, $00, $00, $18, $30, $34, $30, $4F, $30, $62, $30, + $86, $30, $94, $30, $9B, $30, $A3, $30, $C2, $30, $D2, $30, $08, $31, $77, $31, + $C5, $31, $CC, $31, $F2, $31, $05, $32, $1F, $32, $2B, $32, $3A, $32, $6A, $32, + $9C, $32, $20, $33, $2E, $33, $35, $33, $40, $33, $54, $33, $59, $33, $60, $33, + $65, $33, $6D, $33, $72, $33, $77, $33, $7D, $33, $82, $33, $89, $33, $95, $33, + $9B, $33, $AB, $33, $B8, $33, $FA, $34, $02, $35, $07, $35, $0C, $35, $29, $35, + $38, $35, $40, $35, $5A, $35, $67, $35, $75, $35, $7A, $35, $8F, $35, $95, $35, + $A2, $35, $A8, $35, $AD, $35, $B2, $35, $B8, $35, $BE, $35, $C3, $35, $F2, $35, + $13, $36, $32, $36, $3F, $36, $53, $36, $59, $36, $73, $36, $7E, $36, $8B, $36, + $A2, $36, $B0, $36, $C3, $36, $C9, $36, $E3, $36, $E9, $36, $FA, $36, $01, $37, + $07, $37, $36, $37, $3D, $37, $6F, $37, $79, $37, $9D, $37, $B0, $37, $D7, $37, + $DC, $37, $0D, $38, $36, $38, $3B, $38, $42, $38, $58, $38, $8C, $38, $9F, $38, + $C0, $38, $C4, $38, $C8, $38, $CC, $38, $D3, $38, $DF, $38, $F6, $38, $06, $39, + $0C, $39, $16, $39, $1E, $39, $2B, $39, $30, $39, $41, $39, $47, $39, $52, $39, + $5A, $39, $5F, $39, $65, $39, $71, $39, $80, $39, $A8, $39, $BC, $39, $E3, $39, + $59, $3A, $D9, $3A, $EC, $3A, $09, $3B, $1A, $3B, $25, $3B, $3C, $3B, $49, $3B, + $67, $3B, $6D, $3B, $96, $3B, $A5, $3B, $E9, $3B, $F6, $3B, $0B, $3C, $3B, $3C, + $48, $3C, $4F, $3C, $60, $3C, $66, $3C, $7F, $3C, $AA, $3C, $05, $3D, $0F, $3D, + $16, $3D, $46, $3D, $5F, $3D, $96, $3D, $A6, $3D, $C9, $3D, $FB, $3D, $05, $3E, + $0B, $3E, $18, $3E, $1E, $3E, $2B, $3E, $40, $3E, $49, $3E, $5D, $3E, $6A, $3E, + $71, $3E, $77, $3E, $7D, $3E, $83, $3E, $89, $3E, $8F, $3E, $95, $3E, $9B, $3E, + $B5, $3E, $D7, $3E, $00, $20, $00, $00, $78, $00, $00, $00, $1B, $30, $B3, $32, + $D6, $32, $04, $33, $0C, $33, $27, $33, $5E, $33, $6C, $33, $81, $33, $B6, $33, + $70, $34, $0C, $35, $16, $35, $97, $35, $A8, $35, $C0, $35, $E2, $35, $E9, $35, + $F4, $35, $F9, $35, $23, $36, $8B, $36, $90, $36, $97, $36, $D4, $38, $EA, $38, + $F3, $38, $FE, $38, $05, $39, $25, $39, $2B, $39, $31, $39, $37, $39, $3D, $39, + $43, $39, $4A, $39, $51, $39, $58, $39, $5F, $39, $66, $39, $6D, $39, $74, $39, + $7C, $39, $84, $39, $8C, $39, $98, $39, $A1, $39, $A6, $39, $AC, $39, $B6, $39, + $C0, $39, $D0, $39, $E0, $39, $F0, $39, $F9, $39, $08, $3A, $00, $30, $00, $00, + $14, $00, $00, $00, $B0, $30, $C0, $30, $C4, $30, $8C, $36, $98, $36, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + ); + + defHelperDatas: array[0..38439] of Byte = ( + $4D, $5A, $50, $00, $02, $00, $00, $00, $04, $00, $0F, $00, $FF, $FF, $00, $00, + $B8, $00, $00, $00, $00, $00, $00, $00, $40, $00, $1A, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, + $BA, $10, $00, $0E, $1F, $B4, $09, $CD, $21, $B8, $01, $4C, $CD, $21, $90, $90, + $54, $68, $69, $73, $20, $70, $72, $6F, $67, $72, $61, $6D, $20, $6D, $75, $73, + $74, $20, $62, $65, $20, $72, $75, $6E, $20, $75, $6E, $64, $65, $72, $20, $57, + $69, $6E, $33, $32, $0D, $0A, $24, $37, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $50, $45, $00, $00, $4C, $01, $08, $00, $E5, $FD, $D3, $5D, $00, $00, $00, $00, + $00, $00, $00, $00, $E0, $00, $8E, $A1, $0B, $01, $02, $19, $00, $46, $00, $00, + $00, $24, $00, $00, $00, $00, $00, $00, $D4, $60, $00, $00, $00, $10, $00, $00, + $00, $70, $00, $00, $00, $00, $40, $00, $00, $10, $00, $00, $00, $02, $00, $00, + $04, $00, $00, $00, $00, $00, $00, $00, $04, $00, $00, $00, $00, $00, $00, $00, + $00, $F0, $00, $00, $00, $04, $00, $00, $6B, $9B, $00, $00, $02, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $00, $00, $10, $00, $00, + $00, $00, $00, $00, $10, $00, $00, $00, $00, $C0, $00, $00, $6B, $00, $00, $00, + $00, $B0, $00, $00, $12, $06, $00, $00, $00, $E0, $00, $00, $00, $06, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $6E, $00, $00, $28, $28, $00, $00, + $00, $D0, $00, $00, $38, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $74, $B1, $00, $00, $E8, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $2E, $74, $65, $78, $74, $00, $00, $00, + $48, $42, $00, $00, $00, $10, $00, $00, $00, $44, $00, $00, $00, $04, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $00, $00, $60, + $2E, $69, $74, $65, $78, $74, $00, $00, $EC, $00, $00, $00, $00, $60, $00, $00, + $00, $02, $00, $00, $00, $48, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $20, $00, $00, $60, $2E, $64, $61, $74, $61, $00, $00, $00, + $04, $0D, $00, $00, $00, $70, $00, $00, $00, $0E, $00, $00, $00, $4A, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $C0, + $2E, $62, $73, $73, $00, $00, $00, $00, $1C, $28, $00, $00, $00, $80, $00, $00, + $00, $00, $00, $00, $00, $58, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $C0, $2E, $69, $64, $61, $74, $61, $00, $00, + $12, $06, $00, $00, $00, $B0, $00, $00, $00, $08, $00, $00, $00, $58, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $C0, + $2E, $65, $64, $61, $74, $61, $00, $00, $6B, $00, $00, $00, $00, $C0, $00, $00, + $00, $02, $00, $00, $00, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $40, $00, $00, $40, $2E, $72, $65, $6C, $6F, $63, $00, $00, + $38, $04, $00, $00, $00, $D0, $00, $00, $00, $06, $00, $00, $00, $62, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $42, + $2E, $72, $73, $72, $63, $00, $00, $00, $00, $06, $00, $00, $00, $E0, $00, $00, + $00, $06, $00, $00, $00, $68, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $40, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $F0, $00, $00, $00, $00, $00, $00, $00, $6E, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $00, $40, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $FF, $25, $CC, $B1, $40, $00, $8B, $C0, $FF, $25, $C8, $B1, $40, $00, $8B, $C0, + $FF, $25, $C4, $B1, $40, $00, $8B, $C0, $FF, $25, $C0, $B1, $40, $00, $8B, $C0, + $FF, $25, $BC, $B1, $40, $00, $8B, $C0, $FF, $25, $B8, $B1, $40, $00, $8B, $C0, + $FF, $25, $8C, $B1, $40, $00, $8B, $C0, $FF, $25, $B4, $B1, $40, $00, $8B, $C0, + $FF, $25, $B0, $B1, $40, $00, $8B, $C0, $FF, $25, $AC, $B1, $40, $00, $8B, $C0, + $FF, $25, $7C, $B1, $40, $00, $8B, $C0, $FF, $25, $78, $B1, $40, $00, $8B, $C0, + $FF, $25, $74, $B1, $40, $00, $8B, $C0, $FF, $25, $A8, $B1, $40, $00, $8B, $C0, + $FF, $25, $A4, $B1, $40, $00, $8B, $C0, $53, $83, $C4, $BC, $BB, $0A, $00, $00, + $00, $54, $E8, $C1, $FF, $FF, $FF, $F6, $44, $24, $2C, $01, $74, $05, $0F, $B7, + $5C, $24, $30, $8B, $C3, $83, $C4, $44, $5B, $C3, $8B, $C0, $FF, $25, $A0, $B1, + $40, $00, $8B, $C0, $FF, $25, $9C, $B1, $40, $00, $8B, $C0, $FF, $25, $98, $B1, + $40, $00, $8B, $C0, $FF, $25, $88, $B1, $40, $00, $8B, $C0, $FF, $FF, $FF, $FF, + $57, $00, $00, $00, $46, $61, $73, $74, $4D, $4D, $20, $42, $6F, $72, $6C, $61, + $6E, $64, $20, $45, $64, $69, $74, $69, $6F, $6E, $20, $A9, $20, $32, $30, $30, + $34, $2C, $20, $32, $30, $30, $35, $20, $50, $69, $65, $72, $72, $65, $20, $6C, + $65, $20, $52, $69, $63, $68, $65, $20, $2F, $20, $50, $72, $6F, $66, $65, $73, + $73, $69, $6F, $6E, $61, $6C, $20, $53, $6F, $66, $74, $77, $61, $72, $65, $20, + $44, $65, $76, $65, $6C, $6F, $70, $6D, $65, $6E, $74, $00, $F0, $0F, $B0, $11, + $C3, $8D, $40, $00, $8B, $08, $89, $0A, $8B, $48, $04, $8B, $40, $08, $89, $4A, + $04, $89, $42, $08, $C3, $8D, $40, $00, $8B, $08, $89, $0A, $8B, $48, $04, $89, + $4A, $04, $8B, $48, $08, $89, $4A, $08, $8B, $48, $0C, $8B, $40, $10, $89, $4A, + $0C, $89, $42, $10, $C3, $8D, $40, $00, $8B, $08, $89, $0A, $8B, $48, $04, $89, + $4A, $04, $8B, $48, $08, $89, $4A, $08, $8B, $48, $0C, $89, $4A, $0C, $8B, $48, + $10, $89, $4A, $10, $8B, $48, $14, $8B, $40, $18, $89, $4A, $14, $89, $42, $18, + $C3, $8D, $40, $00, $DF, $28, $DF, $68, $08, $DF, $68, $10, $DF, $68, $18, $8B, + $48, $20, $89, $4A, $20, $DF, $7A, $18, $DF, $7A, $10, $DF, $7A, $08, $DF, $3A, + $C3, $8D, $40, $00, $DF, $28, $DF, $68, $08, $DF, $68, $10, $DF, $68, $18, $DF, + $68, $20, $8B, $48, $28, $89, $4A, $28, $DF, $7A, $20, $DF, $7A, $18, $DF, $7A, + $10, $DF, $7A, $08, $DF, $3A, $C3, $90, $DF, $28, $DF, $68, $08, $DF, $68, $10, + $DF, $68, $18, $DF, $68, $20, $DF, $68, $28, $8B, $48, $30, $89, $4A, $30, $DF, + $7A, $28, $DF, $7A, $20, $DF, $7A, $18, $DF, $7A, $10, $DF, $7A, $08, $DF, $3A, + $C3, $8D, $40, $00, $DF, $28, $DF, $68, $08, $DF, $68, $10, $DF, $68, $18, $DF, + $68, $20, $DF, $68, $28, $DF, $68, $30, $8B, $48, $38, $89, $4A, $38, $DF, $7A, + $30, $DF, $7A, $28, $DF, $7A, $20, $DF, $7A, $18, $DF, $7A, $10, $DF, $7A, $08, + $DF, $3A, $C3, $90, $DF, $28, $DF, $68, $08, $DF, $68, $10, $DF, $68, $18, $DF, + $68, $20, $DF, $68, $28, $DF, $68, $30, $DF, $68, $38, $8B, $48, $40, $89, $4A, + $40, $DF, $7A, $38, $DF, $7A, $30, $DF, $7A, $28, $DF, $7A, $20, $DF, $7A, $18, + $DF, $7A, $10, $DF, $7A, $08, $DF, $3A, $C3, $8D, $40, $00, $83, $E9, $0C, $01, + $C8, $01, $CA, $F7, $D9, $79, $13, $DF, $2C, $01, $DF, $6C, $01, $08, $DF, $7C, + $11, $08, $DF, $3C, $11, $83, $C1, $10, $78, $ED, $DF, $2C, $01, $DF, $3C, $11, + $8B, $44, $01, $08, $89, $44, $11, $08, $C3, $8D, $40, $00, $83, $E9, $04, $01, + $C8, $01, $CA, $F7, $D9, $DF, $2C, $01, $DF, $3C, $11, $83, $C1, $08, $78, $F5, + $8B, $04, $01, $89, $04, $11, $C3, $90, $8B, $48, $04, $8B, $10, $39, $D1, $89, + $11, $89, $4A, $04, $74, $02, $C3, $90, $81, $E9, $90, $87, $40, $00, $89, $CA, + $C1, $E9, $03, $0F, $B6, $D6, $B8, $FE, $FF, $FF, $FF, $D3, $C0, $21, $04, $95, + $10, $87, $40, $00, $75, $E0, $B8, $FE, $FF, $FF, $FF, $89, $D1, $D3, $C0, $21, + $05, $0C, $87, $40, $00, $C3, $8B, $C0, $81, $EA, $30, $0B, $00, $00, $C1, $EA, + $08, $81, $EA, $FF, $03, $00, $00, $19, $C9, $21, $CA, $81, $C2, $FF, $03, $00, + $00, $8D, $0C, $D5, $90, $87, $40, $00, $8B, $51, $04, $39, $CA, $89, $08, $89, + $50, $04, $89, $02, $89, $41, $04, $74, $03, $C3, $90, $90, $81, $E9, $90, $87, + $40, $00, $89, $CA, $C1, $E9, $03, $0F, $B6, $D6, $B8, $01, $00, $00, $00, $D3, + $E0, $09, $04, $95, $10, $87, $40, $00, $B8, $01, $00, $00, $00, $89, $D1, $D3, + $E0, $09, $05, $0C, $87, $40, $00, $C3, $83, $3D, $08, $87, $40, $00, $00, $75, + $03, $C3, $90, $90, $A1, $04, $87, $40, $00, $F6, $40, $FC, $01, $75, $25, $83, + $48, $FC, $08, $8B, $15, $08, $87, $40, $00, $29, $D0, $8D, $4A, $03, $89, $48, + $FC, $89, $54, $02, $F8, $81, $FA, $30, $0B, $00, $00, $0F, $83, $67, $FF, $FF, + $FF, $C3, $90, $90, $BA, $F0, $FF, $FF, $FF, $23, $50, $FC, $81, $FA, $30, $0B, + $00, $00, $72, $12, $E8, $0F, $FF, $FF, $FF, $A1, $04, $87, $40, $00, $BA, $F0, + $FF, $FF, $FF, $23, $50, $FC, $8B, $0D, $08, $87, $40, $00, $29, $C8, $01, $CA, + $EB, $B9, $C3, $90, $53, $8B, $D8, $E8, $8C, $FF, $FF, $FF, $6A, $04, $68, $00, + $10, $00, $00, $68, $F0, $FF, $13, $00, $6A, $00, $E8, $CD, $FC, $FF, $FF, $85, + $C0, $74, $4D, $8B, $15, $F4, $86, $40, $00, $8B, $C8, $C7, $01, $F0, $86, $40, + $00, $A3, $F4, $86, $40, $00, $89, $51, $04, $89, $02, $8B, $D0, $81, $C2, $F0, + $FF, $13, $00, $8B, $CA, $83, $E9, $04, $C7, $01, $02, $00, $00, $00, $B9, $E0, + $FF, $13, $00, $2B, $CB, $89, $0D, $08, $87, $40, $00, $2B, $D3, $8B, $C2, $A3, + $04, $87, $40, $00, $83, $CB, $02, $8B, $D0, $83, $EA, $04, $89, $1A, $5B, $C3, + $33, $C0, $A3, $08, $87, $40, $00, $33, $C0, $5B, $C3, $90, $80, $3D, $35, $80, + $40, $00, $00, $74, $3D, $EB, $29, $80, $3D, $9D, $85, $40, $00, $00, $75, $20, + $6A, $00, $E8, $65, $FC, $FF, $FF, $B9, $90, $A7, $40, $00, $B2, $01, $33, $C0, + $E8, $C7, $FC, $FF, $FF, $84, $C0, $74, $19, $6A, $0A, $E8, $4C, $FC, $FF, $FF, + $B9, $90, $A7, $40, $00, $B2, $01, $33, $C0, $E8, $AE, $FC, $FF, $FF, $84, $C0, + $75, $C5, $C3, $90, $53, $56, $57, $55, $8B, $E8, $8D, $B5, $10, $00, $01, $00, + $4E, $83, $C6, $04, $81, $E6, $00, $00, $FF, $FF, $6A, $04, $68, $00, $10, $10, + $00, $56, $6A, $00, $E8, $03, $FC, $FF, $FF, $8B, $D8, $85, $DB, $74, $30, $8B, + $FB, $89, $6F, $08, $83, $CE, $04, $89, $77, $0C, $E8, $7D, $FF, $FF, $FF, $A1, + $98, $A7, $40, $00, $C7, $07, $94, $A7, $40, $00, $89, $1D, $98, $A7, $40, $00, + $89, $47, $04, $89, $18, $C6, $05, $90, $A7, $40, $00, $00, $83, $C3, $10, $8B, + $C3, $5D, $5F, $5E, $5B, $C3, $8B, $C0, $53, $56, $57, $55, $83, $C4, $DC, $8B, + $F0, $83, $EE, $10, $E8, $43, $FF, $FF, $FF, $8B, $C6, $8B, $10, $89, $14, $24, + $8B, $50, $04, $89, $54, $24, $04, $8B, $50, $0C, $F6, $C2, $08, $75, $1A, $68, + $00, $80, $00, $00, $6A, $00, $56, $E8, $98, $FB, $FF, $FF, $85, $C0, $74, $04, + $33, $FF, $EB, $3F, $83, $CF, $FF, $EB, $3A, $8B, $DE, $8B, $EA, $83, $E5, $F0, + $33, $FF, $6A, $1C, $8D, $44, $24, $0C, $50, $53, $E8, $39, $FB, $FF, $FF, $68, + $00, $80, $00, $00, $6A, $00, $53, $E8, $68, $FB, $FF, $FF, $85, $C0, $75, $05, + $83, $CF, $FF, $EB, $0E, $8B, $74, $24, $14, $3B, $EE, $76, $06, $2B, $EE, $01, + $F3, $EB, $CF, $85, $FF, $75, $13, $8B, $44, $24, $04, $8B, $14, $24, $89, $10, + $8B, $04, $24, $8B, $54, $24, $04, $89, $50, $04, $C6, $05, $90, $A7, $40, $00, + $00, $8B, $C7, $83, $C4, $24, $5D, $5F, $5E, $5B, $C3, $90, $53, $56, $57, $55, + $83, $C4, $E0, $8B, $F2, $8B, $F8, $8B, $C7, $83, $E8, $04, $8B, $00, $8B, $D8, + $83, $E3, $F0, $83, $EB, $14, $3B, $DE, $0F, $83, $E1, $00, $00, $00, $8B, $D3, + $C1, $EA, $02, $03, $D3, $3B, $D6, $76, $04, $8B, $EA, $EB, $02, $8B, $EE, $8B, + $D7, $83, $EA, $10, $83, $E0, $F0, $03, $D0, $89, $14, $24, $6A, $1C, $8D, $44, + $24, $08, $50, $8B, $44, $24, $08, $50, $E8, $9B, $FA, $FF, $FF, $81, $7C, $24, + $14, $00, $00, $01, $00, $75, $70, $81, $64, $24, $10, $00, $00, $FF, $FF, $8B, + $D6, $2B, $D3, $8B, $44, $24, $10, $3B, $D0, $73, $5C, $8B, $D5, $2B, $D3, $81, + $C2, $00, $00, $01, $00, $4A, $81, $E2, $00, $00, $FF, $FF, $8B, $DA, $3B, $C3, + $73, $02, $8B, $D8, $6A, $04, $68, $00, $20, $00, $00, $53, $8B, $44, $24, $0C, + $50, $E8, $86, $FA, $FF, $FF, $85, $C0, $74, $2D, $6A, $04, $68, $00, $10, $00, + $00, $53, $8B, $44, $24, $0C, $50, $E8, $70, $FA, $FF, $FF, $85, $C0, $74, $17, + $8B, $C7, $83, $E8, $10, $89, $70, $08, $8B, $D0, $03, $5A, $0C, $83, $CB, $08, + $89, $5A, $0C, $8B, $DF, $EB, $77, $8B, $C5, $E8, $7A, $00, $00, $00, $8B, $D8, + $85, $DB, $74, $6A, $81, $FD, $2C, $0A, $04, $00, $76, $08, $8B, $C3, $83, $E8, + $10, $89, $70, $08, $8B, $C7, $83, $E8, $10, $8B, $40, $08, $8B, $D3, $8B, $CF, + $91, $E8, $E6, $FB, $FF, $FF, $8B, $C7, $E8, $CF, $03, $00, $00, $EB, $3F, $D1, + $EB, $3B, $F3, $72, $0A, $8B, $DF, $83, $EF, $10, $89, $77, $08, $EB, $2F, $8B, + $C6, $E8, $32, $00, $00, $00, $8B, $D8, $85, $DB, $74, $22, $81, $FE, $2C, $0A, + $04, $00, $76, $08, $8B, $C7, $83, $E8, $10, $89, $70, $08, $8B, $D3, $8B, $C7, + $8B, $CE, $E8, $D5, $FB, $FF, $FF, $8B, $C7, $E8, $8E, $03, $00, $00, $8B, $C3, + $83, $C4, $20, $5D, $5F, $5E, $5B, $C3, $8D, $50, $03, $C1, $EA, $03, $3D, $2C, + $0A, $00, $00, $53, $8A, $0D, $35, $80, $40, $00, $0F, $87, $48, $02, $00, $00, + $84, $C9, $0F, $B6, $82, $A8, $85, $40, $00, $8D, $1C, $C5, $28, $70, $40, $00, + $75, $56, $8B, $53, $04, $8B, $42, $08, $B9, $F8, $FF, $FF, $FF, $39, $DA, $74, + $17, $83, $42, $0C, $01, $23, $48, $FC, $89, $4A, $08, $89, $50, $FC, $74, $28, + $C6, $03, $00, $5B, $C3, $90, $90, $90, $8B, $53, $10, $0F, $B7, $4B, $02, $01, + $C1, $3B, $43, $0C, $77, $76, $83, $42, $0C, $01, $89, $4B, $08, $C6, $03, $00, + $89, $50, $FC, $5B, $C3, $90, $90, $90, $8B, $4A, $04, $89, $59, $14, $89, $4B, + $04, $C6, $03, $00, $5B, $C3, $90, $90, $B8, $00, $01, $00, $00, $F0, $0F, $B0, + $23, $74, $9F, $83, $C3, $20, $B8, $00, $01, $00, $00, $F0, $0F, $B0, $23, $74, + $91, $83, $C3, $20, $B8, $00, $01, $00, $00, $F0, $0F, $B0, $23, $74, $83, $83, + $EB, $40, $F3, $90, $80, $3D, $9D, $85, $40, $00, $00, $75, $CB, $6A, $00, $E8, + $28, $F9, $FF, $FF, $B8, $00, $01, $00, $00, $F0, $0F, $B0, $23, $0F, $84, $5F, + $FF, $FF, $FF, $6A, $0A, $E8, $12, $F9, $FF, $FF, $EB, $AC, $56, $57, $80, $3D, + $35, $80, $40, $00, $00, $74, $39, $B8, $00, $01, $00, $00, $F0, $0F, $B0, $25, + $00, $87, $40, $00, $74, $2A, $F3, $90, $80, $3D, $9D, $85, $40, $00, $00, $75, + $E6, $6A, $00, $E8, $E4, $F8, $FF, $FF, $B8, $00, $01, $00, $00, $F0, $0F, $B0, + $25, $00, $87, $40, $00, $74, $09, $6A, $0A, $E8, $CE, $F8, $FF, $FF, $EB, $C7, + $0F, $BE, $73, $01, $23, $35, $0C, $87, $40, $00, $74, $70, $0F, $BC, $C6, $8D, + $34, $C5, $00, $00, $00, $00, $8B, $0C, $85, $10, $87, $40, $00, $0F, $BC, $C9, + $8D, $0C, $B1, $8D, $3C, $CD, $90, $87, $40, $00, $8B, $77, $04, $8B, $56, $04, + $89, $57, $04, $89, $3A, $39, $D7, $75, $17, $BA, $FE, $FF, $FF, $FF, $D3, $C2, + $21, $14, $85, $10, $87, $40, $00, $75, $07, $0F, $B3, $05, $0C, $87, $40, $00, + $BF, $F0, $FF, $FF, $FF, $23, $7E, $FC, $81, $FF, $60, $0A, $01, $00, $72, $6C, + $89, $FA, $0F, $B7, $7B, $1A, $29, $FA, $8D, $04, $37, $8D, $4A, $03, $89, $48, + $FC, $89, $54, $02, $F8, $E8, $8E, $FA, $FF, $FF, $EB, $55, $0F, $B7, $4B, $18, + $8B, $3D, $08, $87, $40, $00, $39, $CF, $72, $26, $8B, $35, $04, $87, $40, $00, + $0F, $B7, $4B, $1A, $8D, $91, $30, $0B, $00, $00, $39, $D7, $72, $02, $89, $CF, + $29, $FE, $29, $3D, $08, $87, $40, $00, $89, $35, $04, $87, $40, $00, $EB, $21, + $0F, $B7, $43, $1A, $89, $C7, $E8, $19, $FB, $FF, $FF, $89, $C6, $85, $C0, $75, + $10, $A2, $00, $87, $40, $00, $88, $03, $5F, $5E, $5B, $C3, $80, $64, $37, $FC, + $F7, $8D, $4F, $06, $89, $4E, $FC, $31, $C0, $A2, $00, $87, $40, $00, $89, $1E, + $89, $46, $08, $C7, $46, $0C, $01, $00, $00, $00, $89, $73, $10, $8D, $46, $20, + $0F, $B7, $4B, $02, $8D, $14, $01, $89, $53, $08, $01, $F7, $29, $CF, $89, $7B, + $0C, $C6, $03, $00, $89, $70, $FC, $5F, $5E, $5B, $C3, $90, $B8, $00, $01, $00, + $00, $F0, $0F, $B0, $25, $00, $87, $40, $00, $74, $4B, $F3, $90, $80, $3D, $9D, + $85, $40, $00, $00, $75, $E6, $6A, $00, $E8, $9F, $F7, $FF, $FF, $B8, $00, $01, + $00, $00, $F0, $0F, $B0, $25, $00, $87, $40, $00, $74, $2A, $6A, $0A, $E8, $89, + $F7, $FF, $FF, $EB, $C7, $90, $90, $90, $3D, $2C, $0A, $04, $00, $0F, $87, $0D, + $01, $00, $00, $8D, $98, $D3, $00, $00, $00, $81, $E3, $00, $FF, $FF, $FF, $83, + $C3, $30, $84, $C9, $75, $A6, $8D, $93, $D0, $F4, $FF, $FF, $89, $D1, $C1, $EA, + $0D, $C1, $E9, $08, $B8, $FF, $FF, $FF, $FF, $D3, $E0, $23, $04, $95, $10, $87, + $40, $00, $74, $0C, $83, $E1, $E0, $0F, $BC, $C0, $09, $C1, $EB, $5E, $90, $90, + $B8, $FE, $FF, $FF, $FF, $89, $D1, $D3, $E0, $23, $05, $0C, $87, $40, $00, $74, + $17, $0F, $BC, $D0, $8B, $04, $95, $10, $87, $40, $00, $0F, $BC, $C8, $89, $D0, + $C1, $E0, $05, $09, $C1, $EB, $35, $90, $8B, $0D, $08, $87, $40, $00, $29, $D9, + $72, $1A, $A1, $04, $87, $40, $00, $29, $D8, $A3, $04, $87, $40, $00, $89, $0D, + $08, $87, $40, $00, $83, $CB, $02, $89, $58, $FC, $EB, $07, $89, $D8, $E8, $F1, + $F9, $FF, $FF, $C6, $05, $00, $87, $40, $00, $00, $5B, $C3, $56, $57, $8D, $3C, + $CD, $90, $87, $40, $00, $8B, $77, $04, $8B, $46, $04, $89, $47, $04, $89, $38, + $39, $C7, $75, $17, $B8, $FE, $FF, $FF, $FF, $D3, $C0, $21, $04, $95, $10, $87, + $40, $00, $75, $07, $0F, $B3, $15, $0C, $87, $40, $00, $BF, $F0, $FF, $FF, $FF, + $23, $7E, $FC, $89, $FA, $29, $DA, $74, $1F, $8D, $04, $33, $8D, $4A, $03, $89, + $48, $FC, $89, $54, $02, $F8, $81, $FA, $30, $0B, $00, $00, $72, $0F, $E8, $C5, + $F8, $FF, $FF, $EB, $08, $90, $90, $90, $80, $64, $37, $FC, $F7, $8D, $4B, $02, + $89, $4E, $FC, $C6, $05, $00, $87, $40, $00, $00, $89, $F0, $5F, $5E, $5B, $C3, + $5B, $85, $C0, $0F, $89, $2B, $FA, $FF, $FF, $31, $C0, $C3, $8B, $50, $FC, $F6, + $C2, $07, $89, $C1, $53, $8A, $1D, $35, $80, $40, $00, $0F, $85, $E3, $00, $00, + $00, $84, $DB, $8B, $1A, $75, $61, $83, $6A, $0C, $01, $8B, $42, $08, $74, $2C, + $85, $C0, $89, $4A, $08, $8D, $40, $01, $89, $41, $FC, $74, $07, $31, $C0, $88, + $03, $5B, $C3, $90, $8B, $4B, $04, $89, $5A, $14, $89, $4A, $04, $89, $51, $14, + $89, $53, $04, $C6, $03, $00, $31, $C0, $5B, $C3, $90, $90, $85, $C0, $74, $13, + $8B, $42, $14, $8B, $4A, $04, $89, $48, $04, $89, $41, $14, $31, $C0, $39, $53, + $10, $75, $03, $89, $43, $0C, $88, $03, $89, $D0, $8B, $52, $FC, $8A, $1D, $35, + $80, $40, $00, $E9, $85, $00, $00, $00, $B8, $00, $01, $00, $00, $F0, $0F, $B0, + $23, $74, $94, $F3, $90, $80, $3D, $9D, $85, $40, $00, $00, $75, $EA, $51, $52, + $6A, $00, $E8, $C5, $F5, $FF, $FF, $5A, $59, $B8, $00, $01, $00, $00, $F0, $0F, + $B0, $23, $0F, $84, $6F, $FF, $FF, $FF, $51, $52, $6A, $0A, $E8, $AB, $F5, $FF, + $FF, $5A, $59, $EB, $C3, $90, $90, $90, $B8, $00, $01, $00, $00, $F0, $0F, $B0, + $25, $00, $87, $40, $00, $74, $42, $F3, $90, $80, $3D, $9D, $85, $40, $00, $00, + $75, $E6, $6A, $00, $E8, $83, $F5, $FF, $FF, $B8, $00, $01, $00, $00, $F0, $0F, + $B0, $25, $00, $87, $40, $00, $74, $21, $6A, $0A, $E8, $6D, $F5, $FF, $FF, $EB, + $C7, $90, $90, $90, $F6, $C2, $05, $0F, $85, $E7, $00, $00, $00, $83, $E2, $F0, + $84, $DB, $89, $D3, $56, $89, $C6, $75, $AF, $F7, $44, $33, $FC, $01, $00, $00, + $00, $8B, $4C, $33, $FC, $75, $35, $83, $C9, $08, $89, $4C, $33, $FC, $F6, $46, + $FC, $08, $75, $40, $81, $FB, $E0, $FF, $13, $00, $74, $50, $8D, $43, $03, $89, + $46, $FC, $89, $5C, $33, $F8, $89, $F0, $89, $DA, $E8, $59, $F7, $FF, $FF, $C6, + $05, $00, $87, $40, $00, $00, $31, $C0, $5E, $5B, $C3, $90, $8D, $04, $33, $83, + $E1, $F0, $01, $CB, $81, $F9, $30, $0B, $00, $00, $72, $C2, $E8, $F7, $F6, $FF, + $FF, $EB, $BB, $90, $8B, $4E, $F8, $29, $CE, $01, $CB, $81, $F9, $30, $0B, $00, + $00, $72, $B1, $89, $F0, $E8, $DE, $F6, $FF, $FF, $EB, $A8, $81, $3D, $08, $87, + $40, $00, $E0, $FF, $13, $00, $75, $2C, $83, $EE, $10, $8B, $06, $8B, $56, $04, + $89, $50, $04, $89, $02, $C6, $05, $00, $87, $40, $00, $00, $68, $00, $80, $00, + $00, $6A, $00, $56, $E8, $AB, $F4, $FF, $FF, $83, $F8, $01, $19, $C0, $5E, $5B, + $C3, $90, $90, $90, $8D, $9E, $E0, $FF, $13, $00, $E8, $39, $F7, $FF, $FF, $C7, + $43, $FC, $02, $00, $00, $00, $C7, $05, $08, $87, $40, $00, $E0, $FF, $13, $00, + $89, $1D, $04, $87, $40, $00, $C6, $05, $00, $87, $40, $00, $00, $31, $C0, $5E, + $5B, $C3, $90, $90, $5B, $F6, $C2, $03, $0F, $84, $9A, $F8, $FF, $FF, $B8, $FF, + $FF, $FF, $FF, $C3, $8B, $48, $FC, $F6, $C1, $07, $53, $56, $89, $C6, $0F, $85, + $88, $00, $00, $00, $8B, $19, $0F, $B7, $4B, $02, $83, $E9, $04, $39, $D1, $72, + $37, $8D, $1C, $95, $40, $00, $00, $00, $39, $CB, $72, $04, $5E, $5B, $C3, $90, + $89, $D3, $89, $D0, $E8, $4F, $FA, $FF, $FF, $85, $C0, $74, $16, $89, $D9, $89, + $C2, $89, $C3, $89, $F0, $E8, $02, $F6, $FF, $FF, $89, $F0, $E8, $BB, $FD, $FF, + $FF, $89, $D8, $5E, $5B, $C3, $90, $90, $8D, $4C, $09, $20, $57, $89, $D7, $31, + $C0, $29, $D1, $83, $D0, $FF, $21, $C8, $01, $D0, $E8, $19, $FA, $FF, $FF, $85, + $C0, $74, $24, $81, $FF, $2C, $0A, $04, $00, $76, $03, $89, $78, $F8, $0F, $B7, + $4B, $02, $83, $E9, $04, $89, $C2, $89, $C7, $89, $F0, $FF, $53, $1C, $89, $F0, + $E8, $77, $FD, $FF, $FF, $89, $F8, $5F, $5E, $5B, $C3, $90, $F6, $C1, $05, $0F, + $85, $67, $02, $00, $00, $89, $CB, $83, $E1, $F0, $57, $8D, $3C, $01, $83, $E9, + $04, $83, $E3, $0F, $39, $CA, $55, $0F, $87, $0F, $01, $00, $00, $8D, $2C, $12, + $39, $CD, $72, $08, $5D, $5F, $5E, $5B, $C3, $90, $90, $90, $81, $FA, $2C, $0B, + $00, $00, $73, $15, $81, $FA, $CC, $02, $00, $00, $0F, $82, $C4, $00, $00, $00, + $BA, $2C, $0B, $00, $00, $39, $D1, $76, $DB, $8D, $AA, $D3, $00, $00, $00, $81, + $E5, $00, $FF, $FF, $FF, $83, $C5, $30, $83, $C1, $04, $29, $E9, $80, $3D, $35, + $80, $40, $00, $00, $74, $46, $B8, $00, $01, $00, $00, $F0, $0F, $B0, $25, $00, + $87, $40, $00, $74, $2F, $F3, $90, $80, $3D, $9D, $85, $40, $00, $00, $75, $E6, + $51, $6A, $00, $E8, $44, $F3, $FF, $FF, $59, $B8, $00, $01, $00, $00, $F0, $0F, + $B0, $25, $00, $87, $40, $00, $74, $0C, $51, $6A, $0A, $E8, $2C, $F3, $FF, $FF, + $59, $EB, $C3, $90, $BB, $0F, $00, $00, $00, $23, $5E, $FC, $09, $EB, $89, $5E, + $FC, $89, $CB, $8B, $57, $FC, $F6, $C2, $01, $75, $09, $83, $CA, $08, $89, $57, + $FC, $EB, $17, $90, $89, $F8, $83, $E2, $F0, $01, $D3, $01, $D7, $81, $FA, $30, + $0B, $00, $00, $72, $05, $E8, $EE, $F4, $FF, $FF, $89, $5F, $F8, $8D, $43, $03, + $89, $44, $2E, $FC, $81, $FB, $30, $0B, $00, $00, $72, $0A, $8D, $04, $2E, $89, + $DA, $E8, $12, $F5, $FF, $FF, $C6, $05, $00, $87, $40, $00, $00, $89, $F0, $5D, + $5F, $5E, $5B, $C3, $89, $D7, $89, $D0, $E8, $DB, $F8, $FF, $FF, $85, $C0, $74, + $16, $89, $C5, $89, $C2, $89, $F0, $89, $F9, $E8, $8E, $F4, $FF, $FF, $89, $F0, + $E8, $47, $FC, $FF, $FF, $89, $E8, $5D, $5F, $5E, $5B, $C3, $8B, $47, $FC, $A8, + $01, $0F, $84, $ED, $00, $00, $00, $83, $E0, $F0, $8D, $2C, $01, $39, $EA, $0F, + $87, $DF, $00, $00, $00, $80, $3D, $35, $80, $40, $00, $00, $74, $5B, $B8, $00, + $01, $00, $00, $F0, $0F, $B0, $25, $00, $87, $40, $00, $74, $33, $F3, $90, $80, + $3D, $9D, $85, $40, $00, $00, $75, $E6, $51, $52, $6A, $00, $E8, $5B, $F2, $FF, + $FF, $5A, $59, $B8, $00, $01, $00, $00, $F0, $0F, $B0, $25, $00, $87, $40, $00, + $74, $0E, $51, $52, $6A, $0A, $E8, $41, $F2, $FF, $FF, $5A, $59, $EB, $BF, $90, + $BB, $0F, $00, $00, $00, $23, $5E, $FC, $8B, $47, $FC, $A8, $01, $74, $7E, $83, + $E0, $F0, $8D, $2C, $01, $39, $EA, $77, $74, $3D, $30, $0B, $00, $00, $72, $0B, + $89, $F8, $51, $52, $E8, $0F, $F4, $FF, $FF, $5A, $59, $89, $C8, $C1, $E8, $02, + $01, $C8, $31, $FF, $29, $D0, $83, $D7, $FF, $21, $F8, $8D, $84, $02, $D3, $00, + $00, $00, $25, $00, $FF, $FF, $FF, $83, $C0, $30, $8D, $55, $04, $29, $C2, $77, + $0B, $83, $24, $2E, $F7, $83, $C5, $04, $EB, $1E, $90, $90, $89, $54, $2E, $FC, + $8D, $7A, $03, $89, $7C, $30, $FC, $89, $C5, $81, $FA, $30, $0B, $00, $00, $72, + $07, $01, $F0, $E8, $00, $F4, $FF, $FF, $09, $DD, $89, $6E, $FC, $C6, $05, $00, + $87, $40, $00, $00, $89, $F0, $5D, $5F, $5E, $5B, $C3, $90, $90, $C6, $05, $00, + $87, $40, $00, $00, $89, $C8, $C1, $E8, $02, $01, $C8, $31, $FF, $29, $D0, $83, + $D7, $FF, $21, $F8, $01, $D0, $89, $C5, $89, $CF, $52, $E8, $A8, $F7, $FF, $FF, + $5A, $85, $C0, $74, $D1, $81, $FD, $2C, $0A, $04, $00, $76, $03, $89, $50, $F8, + $89, $C5, $89, $C2, $89, $F0, $89, $F9, $E8, $1F, $F3, $FF, $FF, $89, $F0, $E8, + $08, $FB, $FF, $FF, $89, $E8, $5D, $5F, $5E, $5B, $C3, $90, $5E, $5B, $F6, $C1, + $03, $0F, $84, $25, $F6, $FF, $FF, $31, $C0, $C3, $8B, $C0, $53, $8D, $58, $FF, + $83, $E3, $FC, $E8, $60, $F7, $FF, $FF, $83, $F8, $01, $19, $C9, $8D, $14, $03, + $09, $CB, $81, $FB, $2C, $0A, $04, $00, $73, $10, $F7, $DB, $D9, $EE, $DD, $14, + $13, $83, $C3, $08, $78, $F8, $89, $0A, $DD, $C0, $5B, $C3, $8B, $C8, $8B, $D1, + $83, $EA, $04, $8B, $12, $83, $E2, $F0, $03, $D1, $8B, $C2, $8B, $D0, $83, $EA, + $04, $8B, $12, $83, $E2, $F0, $85, $D2, $75, $02, $33, $C0, $C3, $8D, $40, $00, + $83, $3D, $08, $87, $40, $00, $00, $74, $1A, $8B, $15, $04, $87, $40, $00, $3B, + $D0, $72, $10, $8B, $D0, $81, $C2, $F0, $FF, $13, $00, $3B, $15, $04, $87, $40, + $00, $73, $04, $83, $C0, $10, $C3, $81, $3D, $08, $87, $40, $00, $E0, $FF, $13, + $00, $74, $07, $A1, $04, $87, $40, $00, $EB, $02, $33, $C0, $C3, $8D, $40, $00, + $53, $56, $8B, $D8, $83, $C3, $20, $89, $1A, $8B, $10, $3B, $42, $10, $75, $08, + $8B, $5A, $08, $3B, $5A, $0C, $76, $19, $8B, $F0, $8B, $DE, $83, $EB, $04, $8B, + $1B, $83, $E3, $F0, $03, $DE, $0F, $B7, $42, $02, $2B, $D8, $89, $19, $5E, $5B, + $C3, $8B, $42, $08, $48, $89, $01, $5E, $5B, $C3, $8B, $C0, $57, $89, $D7, $83, + $C0, $01, $BA, $41, $5F, $70, $89, $F7, $E2, $C1, $E8, $1E, $89, $D1, $81, $E2, + $FF, $FF, $FF, $1F, $C1, $E9, $1D, $8D, $14, $92, $01, $C2, $89, $C8, $83, $C8, + $30, $88, $07, $89, $D0, $83, $F9, $01, $83, $DF, $FF, $C1, $E8, $1C, $81, $E2, + $FF, $FF, $FF, $0F, $09, $C1, $83, $C8, $30, $88, $07, $8D, $04, $92, $8D, $14, + $92, $83, $F9, $01, $83, $DF, $FF, $C1, $E8, $1B, $81, $E2, $FF, $FF, $FF, $07, + $09, $C1, $83, $C8, $30, $88, $07, $8D, $04, $92, $8D, $14, $92, $83, $F9, $01, + $83, $DF, $FF, $C1, $E8, $1A, $81, $E2, $FF, $FF, $FF, $03, $09, $C1, $83, $C8, + $30, $88, $07, $8D, $04, $92, $8D, $14, $92, $83, $F9, $01, $83, $DF, $FF, $C1, + $E8, $19, $81, $E2, $FF, $FF, $FF, $01, $09, $C1, $83, $C8, $30, $88, $07, $8D, + $04, $92, $8D, $14, $92, $83, $F9, $01, $83, $DF, $FF, $C1, $E8, $18, $81, $E2, + $FF, $FF, $FF, $00, $09, $C1, $83, $C8, $30, $88, $07, $8D, $04, $92, $8D, $14, + $92, $83, $F9, $01, $83, $DF, $FF, $C1, $E8, $17, $81, $E2, $FF, $FF, $7F, $00, + $09, $C1, $83, $C8, $30, $88, $07, $8D, $04, $92, $8D, $14, $92, $83, $F9, $01, + $83, $DF, $FF, $C1, $E8, $16, $81, $E2, $FF, $FF, $3F, $00, $09, $C1, $83, $C8, + $30, $88, $07, $8D, $04, $92, $8D, $14, $92, $83, $F9, $01, $83, $DF, $FF, $C1, + $E8, $15, $81, $E2, $FF, $FF, $1F, $00, $09, $C1, $83, $C8, $30, $88, $07, $8D, + $04, $92, $83, $F9, $01, $83, $DF, $FF, $C1, $E8, $14, $83, $C8, $30, $88, $07, + $8D, $47, $01, $5F, $C3, $8D, $40, $00, $53, $56, $8B, $F1, $8B, $DA, $8B, $D3, + $8B, $CE, $E8, $45, $0B, $00, $00, $8B, $C3, $03, $C6, $5E, $5B, $C3, $8B, $C0, + $55, $8B, $EC, $53, $8B, $D0, $81, $FA, $FF, $FF, $00, $00, $76, $68, $F6, $C2, + $03, $75, $63, $8B, $55, $08, $8B, $52, $E4, $8B, $C8, $3B, $D1, $77, $10, $8B, + $5D, $08, $8B, $5D, $08, $03, $53, $F0, $83, $C1, $04, $3B, $D1, $73, $17, $8B, + $55, $08, $33, $C9, $89, $4A, $F0, $6A, $1C, $8B, $55, $08, $83, $C2, $E4, $52, + $50, $E8, $C2, $EE, $FF, $FF, $8B, $45, $08, $83, $78, $F0, $04, $72, $1E, $8B, + $45, $08, $81, $78, $F4, $00, $10, $00, $00, $75, $12, $8B, $45, $08, $F6, $40, + $F8, $F6, $74, $09, $8B, $45, $08, $F6, $40, $F9, $01, $74, $04, $33, $C0, $EB, + $07, $B0, $01, $5B, $5D, $C3, $33, $C0, $5B, $5D, $C3, $90, $55, $8B, $EC, $53, + $56, $57, $8B, $FA, $8B, $D8, $81, $FF, $E8, $03, $00, $00, $7D, $65, $8B, $45, + $08, $50, $8B, $C3, $83, $C0, $B4, $E8, $64, $FF, $FF, $FF, $59, $84, $C0, $74, + $52, $8B, $45, $08, $50, $8B, $C3, $83, $C0, $DC, $E8, $51, $FF, $FF, $FF, $59, + $84, $C0, $74, $3F, $8B, $C3, $83, $C0, $DC, $8B, $30, $8B, $C3, $83, $C0, $B4, + $3B, $18, $75, $27, $85, $F6, $74, $27, $8B, $45, $08, $50, $8B, $C6, $E8, $2D, + $FF, $FF, $FF, $59, $84, $C0, $74, $13, $8B, $45, $08, $50, $8D, $57, $01, $8B, + $06, $E8, $96, $FF, $FF, $FF, $59, $84, $C0, $75, $04, $33, $C0, $EB, $06, $B0, + $01, $EB, $02, $33, $C0, $5F, $5E, $5B, $5D, $C3, $8B, $C0, $55, $8B, $EC, $83, + $C4, $E4, $53, $8B, $18, $33, $C0, $89, $45, $F0, $55, $33, $D2, $8B, $C3, $E8, + $68, $FF, $FF, $FF, $59, $84, $C0, $75, $02, $33, $DB, $8B, $C3, $5B, $8B, $E5, + $5D, $C3, $8B, $C0, $80, $3D, $35, $80, $40, $00, $00, $74, $3D, $EB, $29, $80, + $3D, $9D, $85, $40, $00, $00, $75, $20, $6A, $00, $E8, $0D, $EE, $FF, $FF, $B9, + $A8, $A7, $40, $00, $B2, $01, $33, $C0, $E8, $6F, $EE, $FF, $FF, $84, $C0, $74, + $19, $6A, $0A, $E8, $F4, $ED, $FF, $FF, $B9, $A8, $A7, $40, $00, $B2, $01, $33, + $C0, $E8, $56, $EE, $FF, $FF, $84, $C0, $75, $C5, $83, $3D, $A4, $A7, $40, $00, + $00, $75, $18, $6A, $04, $68, $00, $10, $00, $00, $68, $00, $00, $01, $00, $6A, + $00, $E8, $B6, $ED, $FF, $FF, $A3, $A4, $A7, $40, $00, $83, $3D, $A4, $A7, $40, + $00, $00, $0F, $95, $C0, $C3, $8B, $C0, $53, $8B, $D8, $E8, $84, $FF, $FF, $FF, + $84, $C0, $74, $29, $A1, $A4, $A7, $40, $00, $81, $38, $FE, $3F, $00, $00, $7D, + $1C, $A1, $A4, $A7, $40, $00, $8B, $00, $8B, $15, $A4, $A7, $40, $00, $89, $5C, + $82, $04, $A1, $A4, $A7, $40, $00, $FF, $00, $B0, $01, $EB, $02, $33, $C0, $C6, + $05, $A8, $A7, $40, $00, $00, $5B, $C3, $53, $56, $57, $8B, $F0, $BF, $A4, $A7, + $40, $00, $33, $DB, $83, $3F, $00, $74, $3F, $E8, $36, $FF, $FF, $FF, $84, $C0, + $74, $36, $8B, $07, $8B, $10, $4A, $85, $D2, $7C, $26, $42, $33, $C0, $8B, $0F, + $3B, $74, $81, $04, $75, $17, $8B, $17, $8B, $12, $8B, $0F, $8B, $14, $91, $8B, + $0F, $89, $54, $81, $04, $8B, $17, $FF, $0A, $B3, $01, $EB, $04, $40, $4A, $75, + $DD, $C6, $05, $A8, $A7, $40, $00, $00, $8B, $C3, $5F, $5E, $5B, $C3, $8B, $C0, + $55, $8B, $EC, $83, $C4, $E0, $53, $56, $57, $89, $45, $FC, $8B, $45, $FC, $8B, + $00, $81, $E8, $28, $70, $40, $00, $C1, $E8, $05, $C1, $E0, $08, $8B, $55, $08, + $8D, $B4, $C2, $00, $48, $FE, $FF, $8D, $4D, $E4, $8D, $55, $E8, $8B, $45, $FC, + $E8, $2B, $FC, $FF, $FF, $E9, $FD, $00, $00, $00, $8B, $45, $E8, $83, $E8, $04, + $F6, $00, $01, $0F, $85, $E2, $00, $00, $00, $8B, $45, $E8, $E8, $57, $FF, $FF, + $FF, $84, $C0, $0F, $85, $D2, $00, $00, $00, $8B, $45, $08, $C6, $80, $FF, $47, + $FE, $FF, $00, $33, $DB, $8B, $45, $E8, $E8, $5F, $FE, $FF, $FF, $8B, $F8, $85, + $FF, $0F, $85, $88, $00, $00, $00, $8B, $45, $E8, $81, $38, $00, $01, $00, $00, + $0F, $83, $A1, $00, $00, $00, $8B, $45, $E8, $83, $C0, $04, $8B, $00, $89, $45, + $F4, $83, $7D, $F4, $00, $0F, $8E, $8C, $00, $00, $00, $8B, $45, $FC, $8B, $00, + $0F, $B7, $40, $02, $83, $E8, $0D, $3B, $45, $F4, $7C, $7B, $8B, $45, $E8, $83, + $C0, $08, $89, $45, $F0, $C6, $45, $EF, $01, $8B, $45, $F4, $85, $C0, $7E, $2A, + $89, $45, $E0, $80, $7D, $EF, $00, $74, $10, $8B, $45, $F0, $80, $38, $20, $72, + $08, $8B, $45, $F0, $80, $38, $80, $72, $04, $33, $C0, $EB, $02, $B0, $01, $88, + $45, $EF, $FF, $45, $F0, $FF, $4D, $E0, $75, $D9, $80, $7D, $EF, $00, $74, $37, + $8B, $45, $F0, $80, $38, $00, $75, $2F, $BB, $01, $00, $00, $00, $EB, $28, $BB, + $02, $00, $00, $00, $3B, $3C, $DE, $74, $0F, $83, $3C, $DE, $00, $74, $09, $43, + $81, $FB, $FF, $00, $00, $00, $7E, $EC, $81, $FB, $FF, $00, $00, $00, $7F, $05, + $89, $3C, $DE, $EB, $02, $33, $DB, $FF, $44, $DE, $04, $8B, $45, $FC, $8B, $00, + $0F, $B7, $40, $02, $01, $45, $E8, $8B, $45, $E8, $3B, $45, $E4, $0F, $86, $F7, + $FE, $FF, $FF, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $8B, $C0, $55, $8B, $EC, $50, + $B8, $27, $00, $00, $00, $81, $C4, $04, $F0, $FF, $FF, $50, $48, $75, $F6, $8B, + $45, $FC, $81, $C4, $DC, $F6, $FF, $FF, $53, $56, $57, $8D, $85, $00, $48, $FE, + $FF, $33, $C9, $BA, $00, $B8, $01, $00, $E8, $E7, $08, $00, $00, $8D, $85, $D8, + $07, $FE, $FF, $33, $C9, $BA, $00, $40, $00, $00, $E8, $D5, $08, $00, $00, $33, + $C0, $89, $85, $F8, $47, $FE, $FF, $C6, $85, $FF, $47, $FE, $FF, $01, $8B, $3D, + $F4, $86, $40, $00, $E9, $82, $00, $00, $00, $8B, $C7, $E8, $70, $FA, $FF, $FF, + $8B, $D8, $85, $DB, $74, $72, $8B, $C3, $83, $E8, $04, $8B, $30, $F7, $C6, $01, + $00, $00, $00, $75, $56, $F7, $C6, $04, $00, $00, $00, $74, $0B, $55, $8B, $C3, + $E8, $2B, $FE, $FF, $FF, $59, $EB, $43, $81, $BD, $F8, $47, $FE, $FF, $00, $10, + $00, $00, $7D, $37, $83, $E6, $F0, $83, $EE, $04, $89, $B5, $EC, $47, $FE, $FF, + $8B, $C3, $E8, $B1, $FD, $FF, $FF, $84, $C0, $75, $20, $C6, $85, $FF, $47, $FE, + $FF, $00, $8B, $85, $F8, $47, $FE, $FF, $8B, $95, $EC, $47, $FE, $FF, $89, $94, + $85, $D8, $07, $FE, $FF, $FF, $85, $F8, $47, $FE, $FF, $8B, $C3, $E8, $DA, $F9, + $FF, $FF, $8B, $D8, $85, $DB, $75, $8E, $8B, $7F, $04, $81, $FF, $F0, $86, $40, + $00, $0F, $85, $72, $FF, $FF, $FF, $8B, $1D, $98, $A7, $40, $00, $EB, $37, $8B, + $C3, $83, $C0, $10, $E8, $5F, $FD, $FF, $FF, $84, $C0, $75, $26, $C6, $85, $FF, + $47, $FE, $FF, $00, $8B, $73, $0C, $83, $E6, $F0, $83, $EE, $04, $83, $EE, $10, + $8B, $85, $F8, $47, $FE, $FF, $89, $B4, $85, $D8, $07, $FE, $FF, $FF, $85, $F8, + $47, $FE, $FF, $8B, $5B, $04, $81, $FB, $94, $A7, $40, $00, $74, $0C, $81, $BD, + $F8, $47, $FE, $FF, $00, $10, $00, $00, $7C, $B5, $80, $BD, $FF, $47, $FE, $FF, + $00, $0F, $85, $58, $02, $00, $00, $C6, $85, $F7, $47, $FE, $FF, $00, $33, $C0, + $89, $85, $E8, $47, $FE, $FF, $8D, $95, $D8, $87, $FD, $FF, $B8, $88, $28, $40, + $00, $B9, $28, $00, $00, $00, $E8, $FD, $FA, $FF, $FF, $8B, $D8, $C7, $85, $F0, + $47, $FE, $FF, $37, $00, $00, $00, $C7, $85, $DC, $47, $FE, $FF, $2A, $70, $40, + $00, $8D, $85, $FC, $4F, $FE, $FF, $89, $85, $D8, $47, $FE, $FF, $8B, $85, $DC, + $47, $FE, $FF, $0F, $B7, $00, $83, $E8, $04, $89, $85, $E4, $47, $FE, $FF, $C6, + $85, $F6, $47, $FE, $FF, $00, $BF, $FF, $00, $00, $00, $8B, $85, $D8, $47, $FE, + $FF, $8B, $F0, $8D, $85, $D7, $FF, $FD, $FF, $3B, $D8, $0F, $87, $09, $01, $00, + $00, $83, $3E, $00, $0F, $86, $F3, $00, $00, $00, $80, $BD, $F7, $47, $FE, $FF, + $00, $75, $1A, $B8, $B4, $28, $40, $00, $B9, $27, $00, $00, $00, $8B, $D3, $E8, + $84, $FA, $FF, $FF, $8B, $D8, $C6, $85, $F7, $47, $FE, $FF, $01, $80, $BD, $F6, + $47, $FE, $FF, $00, $75, $4F, $C6, $03, $0D, $43, $C6, $03, $0A, $43, $8B, $85, + $E8, $47, $FE, $FF, $40, $8B, $D3, $E8, $40, $F9, $FF, $FF, $8B, $D8, $C6, $03, + $20, $43, $C6, $03, $2D, $43, $C6, $03, $20, $43, $8B, $D3, $8B, $85, $E4, $47, + $FE, $FF, $E8, $25, $F9, $FF, $FF, $8B, $D8, $B8, $DC, $28, $40, $00, $B9, $08, + $00, $00, $00, $8B, $D3, $E8, $2E, $FA, $FF, $FF, $8B, $D8, $C6, $85, $F6, $47, + $FE, $FF, $01, $EB, $08, $C6, $03, $2C, $43, $C6, $03, $20, $43, $8B, $C7, $83, + $E8, $01, $72, $04, $74, $17, $EB, $2A, $B8, $E8, $28, $40, $00, $B9, $07, $00, + $00, $00, $8B, $D3, $E8, $FF, $F9, $FF, $FF, $8B, $D8, $EB, $39, $B8, $F0, $28, + $40, $00, $B9, $06, $00, $00, $00, $8B, $D3, $E8, $EA, $F9, $FF, $FF, $8B, $D8, + $EB, $24, $8D, $95, $D8, $86, $FD, $FF, $8B, $46, $FC, $E8, $38, $08, $00, $00, + $0F, $B6, $8D, $D8, $86, $FD, $FF, $8D, $85, $D9, $86, $FD, $FF, $8B, $D3, $E8, + $C4, $F9, $FF, $FF, $8B, $D8, $C6, $03, $20, $43, $C6, $03, $78, $43, $C6, $03, + $20, $43, $8B, $06, $8B, $D3, $E8, $91, $F8, $FF, $FF, $8B, $D8, $4F, $83, $EE, + $08, $83, $FF, $FF, $0F, $85, $E9, $FE, $FF, $FF, $8B, $85, $E4, $47, $FE, $FF, + $89, $85, $E8, $47, $FE, $FF, $81, $85, $D8, $47, $FE, $FF, $00, $08, $00, $00, + $83, $85, $DC, $47, $FE, $FF, $20, $FF, $8D, $F0, $47, $FE, $FF, $0F, $85, $9A, + $FE, $FF, $FF, $83, $BD, $F8, $47, $FE, $FF, $00, $7E, $7A, $80, $BD, $F7, $47, + $FE, $FF, $00, $74, $10, $C6, $03, $0D, $43, $C6, $03, $0A, $43, $C6, $03, $0D, + $43, $C6, $03, $0A, $43, $B8, $F8, $28, $40, $00, $B9, $3C, $00, $00, $00, $8B, + $D3, $E8, $42, $F9, $FF, $FF, $8B, $D8, $8B, $BD, $F8, $47, $FE, $FF, $4F, $85, + $FF, $72, $43, $47, $C7, $85, $E0, $47, $FE, $FF, $00, $00, $00, $00, $8D, $B5, + $D8, $07, $FE, $FF, $83, $BD, $E0, $47, $FE, $FF, $00, $74, $08, $C6, $03, $2C, + $43, $C6, $03, $20, $43, $8B, $06, $8B, $D3, $E8, $EE, $F7, $FF, $FF, $8B, $D8, + $8D, $85, $D7, $FF, $FD, $FF, $3B, $D8, $77, $0C, $FF, $85, $E0, $47, $FE, $FF, + $83, $C6, $04, $4F, $75, $CE, $B8, $38, $29, $40, $00, $B9, $03, $00, $00, $00, + $8B, $D3, $E8, $E1, $F8, $FF, $FF, $68, $10, $20, $00, $00, $68, $3C, $29, $40, + $00, $8D, $85, $D8, $87, $FD, $FF, $50, $6A, $00, $E8, $B1, $E7, $FF, $FF, $5F, + $5E, $5B, $8B, $E5, $5D, $C3, $00, $00, $41, $6E, $20, $75, $6E, $65, $78, $70, + $65, $63, $74, $65, $64, $20, $6D, $65, $6D, $6F, $72, $79, $20, $6C, $65, $61, + $6B, $20, $68, $61, $73, $20, $6F, $63, $63, $75, $72, $72, $65, $64, $2E, $20, + $00, $00, $00, $00, $54, $68, $65, $20, $75, $6E, $65, $78, $70, $65, $63, $74, + $65, $64, $20, $73, $6D, $61, $6C, $6C, $20, $62, $6C, $6F, $63, $6B, $20, $6C, + $65, $61, $6B, $73, $20, $61, $72, $65, $3A, $0D, $0A, $00, $20, $62, $79, $74, + $65, $73, $3A, $20, $00, $00, $00, $00, $55, $6E, $6B, $6E, $6F, $77, $6E, $00, + $53, $74, $72, $69, $6E, $67, $00, $00, $54, $68, $65, $20, $73, $69, $7A, $65, + $73, $20, $6F, $66, $20, $75, $6E, $65, $78, $70, $65, $63, $74, $65, $64, $20, + $6C, $65, $61, $6B, $65, $64, $20, $6D, $65, $64, $69, $75, $6D, $20, $61, $6E, + $64, $20, $6C, $61, $72, $67, $65, $20, $62, $6C, $6F, $63, $6B, $73, $20, $61, + $72, $65, $3A, $20, $00, $00, $00, $00, $0D, $0A, $00, $00, $55, $6E, $65, $78, + $70, $65, $63, $74, $65, $64, $20, $4D, $65, $6D, $6F, $72, $79, $20, $4C, $65, + $61, $6B, $00, $00, $56, $57, $33, $C0, $33, $F6, $BA, $2A, $70, $40, $00, $80, + $3D, $EE, $86, $40, $00, $00, $74, $05, $F6, $02, $0F, $75, $1D, $0F, $B7, $3A, + $C1, $EF, $03, $8B, $CE, $03, $C9, $03, $C9, $3B, $F8, $76, $0B, $88, $88, $A8, + $85, $40, $00, $40, $3B, $F8, $77, $F5, $8B, $C7, $46, $83, $C2, $20, $83, $FE, + $37, $75, $CC, $5F, $5E, $C3, $8B, $C0, $53, $56, $57, $BE, $37, $00, $00, $00, + $BB, $44, $70, $40, $00, $83, $3B, $00, $75, $06, $C7, $03, $5C, $12, $40, $00, + $8D, $43, $E4, $89, $43, $F8, $8D, $43, $E4, $89, $43, $E8, $33, $C0, $89, $43, + $F0, $C7, $43, $EC, $01, $00, $00, $00, $0F, $B7, $43, $E6, $03, $C0, $03, $C0, + $8D, $04, $40, $05, $EF, $00, $00, $00, $25, $00, $FF, $FF, $FF, $83, $C0, $30, + $3D, $30, $0B, $00, $00, $73, $05, $B8, $30, $0B, $00, $00, $05, $D0, $04, $00, + $00, $C1, $E8, $0D, $83, $F8, $07, $76, $05, $B8, $07, $00, $00, $00, $8B, $C8, + $B2, $FF, $D2, $E2, $88, $53, $E5, $C1, $E0, $0D, $66, $05, $30, $0B, $66, $89, + $43, $FC, $0F, $B7, $7B, $E6, $0F, $B7, $C7, $8B, $C8, $C1, $E1, $04, $8D, $0C, + $49, $81, $C1, $EF, $00, $00, $00, $81, $E1, $00, $FF, $FF, $FF, $83, $C1, $30, + $81, $F9, $30, $73, $00, $00, $73, $05, $B9, $30, $73, $00, $00, $81, $F9, $30, + $FF, $00, $00, $76, $05, $B9, $30, $FF, $00, $00, $8B, $C1, $83, $E8, $20, $0F, + $B7, $D7, $8B, $CA, $33, $D2, $F7, $F1, $66, $F7, $EF, $66, $05, $EF, $00, $66, + $25, $00, $FF, $66, $83, $C0, $30, $66, $89, $43, $FE, $83, $C3, $20, $4E, $0F, + $85, $30, $FF, $FF, $FF, $E8, $DA, $FE, $FF, $FF, $C7, $05, $F0, $86, $40, $00, + $F0, $86, $40, $00, $C7, $05, $F4, $86, $40, $00, $F0, $86, $40, $00, $BE, $00, + $04, $00, $00, $BA, $90, $87, $40, $00, $8B, $C2, $89, $00, $89, $40, $04, $83, + $C2, $08, $4E, $75, $F3, $C7, $05, $94, $A7, $40, $00, $94, $A7, $40, $00, $C7, + $05, $98, $A7, $40, $00, $94, $A7, $40, $00, $5F, $5E, $5B, $C3, $8D, $40, $00, + $53, $56, $57, $55, $BB, $F0, $86, $40, $00, $BE, $94, $A7, $40, $00, $8B, $7B, + $04, $EB, $12, $8B, $6F, $04, $68, $00, $80, $00, $00, $6A, $00, $57, $E8, $C1, + $E5, $FF, $FF, $8B, $FD, $3B, $FB, $75, $EA, $BA, $37, $00, $00, $00, $B8, $28, + $70, $40, $00, $8B, $C8, $89, $48, $14, $8B, $C8, $89, $48, $04, $C7, $40, $08, + $01, $00, $00, $00, $33, $C9, $89, $48, $0C, $83, $C0, $20, $4A, $75, $E4, $89, + $1B, $89, $5B, $04, $BA, $00, $04, $00, $00, $B9, $90, $87, $40, $00, $8B, $C1, + $89, $00, $89, $40, $04, $83, $C1, $08, $4A, $75, $F3, $8B, $5E, $04, $EB, $12, + $8B, $7B, $04, $68, $00, $80, $00, $00, $6A, $00, $53, $E8, $64, $E5, $FF, $FF, + $8B, $DF, $3B, $DE, $75, $EA, $89, $36, $89, $76, $04, $5D, $5F, $5E, $5B, $C3, + $83, $3D, $AC, $A7, $40, $00, $00, $74, $12, $A1, $AC, $A7, $40, $00, $50, $E8, + $50, $E5, $FF, $FF, $33, $C0, $A3, $AC, $A7, $40, $00, $80, $3D, $9C, $85, $40, + $00, $00, $74, $05, $E8, $63, $F9, $FF, $FF, $83, $3D, $A4, $A7, $40, $00, $00, + $74, $19, $68, $00, $80, $00, $00, $6A, $00, $A1, $A4, $A7, $40, $00, $50, $E8, + $10, $E5, $FF, $FF, $33, $C0, $A3, $A4, $A7, $40, $00, $E8, $20, $FF, $FF, $FF, + $C3, $8D, $40, $00, $85, $C0, $7E, $13, $FF, $15, $08, $77, $40, $00, $85, $C0, + $74, $02, $F3, $C3, $B0, $01, $E9, $C5, $00, $00, $00, $31, $C0, $F3, $C3, $90, + $85, $C0, $74, $0A, $FF, $15, $0C, $77, $40, $00, $85, $C0, $75, $02, $F3, $C3, + $B0, $02, $E9, $A9, $00, $00, $00, $C3, $8B, $08, $85, $C9, $74, $32, $85, $D2, + $74, $18, $50, $89, $C8, $FF, $15, $10, $77, $40, $00, $59, $09, $C0, $74, $19, + $89, $01, $C3, $B0, $02, $E9, $86, $00, $00, $00, $89, $10, $89, $C8, $FF, $15, + $0C, $77, $40, $00, $09, $C0, $75, $EB, $C3, $B0, $01, $E9, $70, $00, $00, $00, + $85, $D2, $74, $10, $50, $89, $D0, $FF, $15, $08, $77, $40, $00, $59, $09, $C0, + $74, $E7, $89, $01, $C3, $8D, $40, $00, $89, $15, $04, $70, $40, $00, $E8, $95, + $0C, $00, $00, $C3, $53, $56, $8B, $F2, $8B, $D8, $80, $E3, $7F, $83, $3D, $08, + $80, $40, $00, $00, $74, $0A, $8B, $D6, $8B, $C3, $FF, $15, $08, $80, $40, $00, + $84, $DB, $75, $0D, $E8, $33, $13, $00, $00, $8B, $98, $04, $00, $00, $00, $EB, + $0F, $80, $FB, $18, $77, $0A, $0F, $B6, $C3, $0F, $B6, $98, $20, $77, $40, $00, + $0F, $B6, $C3, $8B, $D6, $E8, $AE, $FF, $FF, $FF, $5E, $5B, $C3, $8D, $40, $00, + $83, $E0, $7F, $8B, $14, $24, $E9, $A9, $FF, $FF, $FF, $C3, $53, $8B, $D8, $E8, + $F8, $12, $00, $00, $89, $98, $04, $00, $00, $00, $5B, $C3, $39, $D0, $74, $31, + $83, $F9, $20, $77, $7C, $83, $E9, $08, $7F, $07, $FF, $24, $8D, $F4, $2C, $40, + $00, $DF, $2C, $01, $DF, $28, $83, $F9, $08, $7E, $11, $DF, $68, $08, $83, $F9, + $10, $7E, $06, $DF, $68, $10, $DF, $7A, $10, $DF, $7A, $08, $DF, $3A, $DF, $3C, + $11, $C3, $90, $90, $D1, $2C, $40, $00, $52, $2D, $40, $00, $58, $2D, $40, $00, + $5F, $2D, $40, $00, $6C, $2D, $40, $00, $71, $2D, $40, $00, $7C, $2D, $40, $00, + $89, $2D, $40, $00, $94, $2D, $40, $00, $52, $DF, $28, $8D, $44, $01, $F8, $8D, + $4C, $0A, $F8, $DF, $28, $51, $F7, $D9, $83, $E2, $F8, $8D, $4C, $0A, $08, $5A, + $DF, $2C, $01, $DF, $3C, $11, $83, $C1, $08, $7C, $F5, $DF, $3A, $5A, $DF, $3A, + $C3, $7E, $2E, $39, $D0, $77, $D1, $29, $CA, $39, $D0, $8D, $14, $11, $76, $C8, + $83, $E9, $08, $51, $DF, $2C, $01, $DF, $28, $01, $D1, $83, $E1, $F8, $29, $D1, + $DF, $2C, $01, $DF, $3C, $11, $83, $E9, $08, $7F, $F5, $59, $DF, $3A, $DF, $3C, + $11, $C3, $0F, $B6, $08, $88, $0A, $C3, $0F, $B7, $08, $66, $89, $0A, $C3, $66, + $8B, $08, $8A, $40, $02, $66, $89, $0A, $88, $42, $02, $C3, $8B, $08, $89, $0A, + $C3, $8B, $08, $8A, $40, $04, $89, $0A, $88, $42, $04, $C3, $8B, $08, $66, $8B, + $40, $04, $89, $0A, $66, $89, $42, $04, $C3, $8B, $08, $8B, $40, $03, $89, $0A, + $89, $42, $03, $C3, $DF, $28, $DF, $3A, $C3, $8D, $40, $00, $53, $56, $8B, $D8, + $33, $F6, $0F, $B7, $43, $04, $66, $3D, $B1, $D7, $72, $2F, $66, $3D, $B3, $D7, + $77, $29, $66, $25, $B2, $D7, $66, $3D, $B2, $D7, $75, $07, $8B, $C3, $FF, $53, + $1C, $8B, $F0, $85, $F6, $75, $07, $8B, $C3, $FF, $53, $24, $8B, $F0, $85, $F6, + $74, $1B, $8B, $C6, $E8, $B3, $FE, $FF, $FF, $EB, $12, $81, $FB, $38, $80, $40, + $00, $74, $0A, $B8, $67, $00, $00, $00, $E8, $9F, $FE, $FF, $FF, $8B, $C6, $5E, + $5B, $C3, $8B, $C0, $83, $FA, $20, $88, $CD, $7C, $3D, $66, $89, $08, $66, $89, + $48, $02, $66, $89, $48, $04, $66, $89, $48, $06, $83, $EA, $10, $DD, $00, $DD, + $14, $02, $DD, $54, $02, $08, $89, $C1, $83, $E1, $07, $83, $E9, $08, $29, $C8, + $01, $CA, $01, $D0, $F7, $DA, $DD, $14, $02, $DD, $54, $02, $08, $83, $C2, $10, + $7C, $F4, $DD, $C0, $C3, $90, $90, $90, $85, $D2, $7E, $50, $88, $4C, $02, $FF, + $83, $E2, $FE, $F7, $DA, $8D, $14, $55, $8C, $2E, $40, $00, $FF, $E2, $90, $90, + $66, $89, $48, $1C, $66, $89, $48, $1A, $66, $89, $48, $18, $66, $89, $48, $16, + $66, $89, $48, $14, $66, $89, $48, $12, $66, $89, $48, $10, $66, $89, $48, $0E, + $66, $89, $48, $0C, $66, $89, $48, $0A, $66, $89, $48, $08, $66, $89, $48, $06, + $66, $89, $48, $04, $66, $89, $48, $02, $66, $89, $08, $C3, $C3, $8D, $40, $00, + $FF, $25, $84, $B1, $40, $00, $8B, $C0, $53, $33, $DB, $6A, $00, $E8, $EE, $FF, + $FF, $FF, $83, $F8, $07, $75, $1C, $6A, $01, $E8, $E2, $FF, $FF, $FF, $25, $00, + $FF, $00, $00, $3D, $00, $0D, $00, $00, $74, $07, $3D, $00, $04, $00, $00, $75, + $02, $B3, $01, $8B, $C3, $5B, $C3, $90, $55, $8B, $EC, $83, $C4, $F4, $0F, $B7, + $05, $0C, $70, $40, $00, $89, $45, $F8, $8D, $45, $FC, $50, $6A, $01, $6A, $00, + $68, $60, $2F, $40, $00, $68, $02, $00, $00, $80, $E8, $69, $E1, $FF, $FF, $85, + $C0, $75, $4D, $33, $C0, $55, $68, $39, $2F, $40, $00, $64, $FF, $30, $64, $89, + $20, $C7, $45, $F4, $04, $00, $00, $00, $8D, $45, $F4, $50, $8D, $45, $F8, $50, + $6A, $00, $6A, $00, $68, $7C, $2F, $40, $00, $8B, $45, $FC, $50, $E8, $3E, $E1, + $FF, $FF, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $40, $2F, $40, $00, $8B, + $45, $FC, $50, $E8, $18, $E1, $FF, $FF, $C3, $E9, $F6, $02, $00, $00, $EB, $EF, + $0F, $B7, $05, $0C, $70, $40, $00, $66, $25, $C0, $FF, $0F, $B7, $55, $F8, $66, + $83, $E2, $3F, $66, $0B, $C2, $66, $A3, $0C, $70, $40, $00, $8B, $E5, $5D, $C3, + $53, $4F, $46, $54, $57, $41, $52, $45, $5C, $42, $6F, $72, $6C, $61, $6E, $64, + $5C, $44, $65, $6C, $70, $68, $69, $5C, $52, $54, $4C, $00, $46, $50, $55, $4D, + $61, $73, $6B, $56, $61, $6C, $75, $65, $00, $00, $00, $00, $DB, $E3, $9B, $D9, + $2D, $0C, $70, $40, $00, $C3, $8B, $C0, $B0, $05, $E9, $E1, $FC, $FF, $FF, $C3, + $8B, $00, $89, $C2, $8B, $C2, $C3, $90, $56, $57, $89, $D7, $8B, $70, $D4, $31, + $C9, $8A, $0E, $41, $F3, $A4, $5F, $5E, $C3, $8D, $40, $00, $85, $C0, $74, $07, + $B2, $01, $8B, $08, $FF, $51, $FC, $C3, $53, $56, $57, $31, $C9, $31, $FF, $8A, + $1A, $EB, $02, $8B, $00, $8B, $70, $CC, $85, $F6, $74, $15, $66, $8B, $3E, $83, + $C6, $02, $8A, $4E, $06, $38, $D9, $74, $15, $66, $8B, $0E, $01, $CE, $4F, $75, + $F1, $8B, $40, $DC, $85, $C0, $75, $DB, $EB, $18, $8A, $1A, $EB, $EB, $B5, $00, + $8A, $5C, $31, $06, $32, $1C, $11, $80, $E3, $DF, $75, $EE, $49, $75, $F1, $8B, + $46, $02, $5F, $5E, $5B, $C3, $8B, $C0, $80, $3D, $10, $70, $40, $00, $01, $76, + $11, $6A, $00, $6A, $00, $6A, $00, $68, $DF, $FA, $ED, $0E, $FF, $15, $10, $80, + $40, $00, $C3, $90, $80, $3D, $10, $70, $40, $00, $00, $74, $17, $50, $50, $52, + $54, $6A, $02, $6A, $00, $68, $E4, $FA, $ED, $0E, $FF, $15, $10, $80, $40, $00, + $83, $C4, $08, $58, $C3, $8D, $40, $00, $54, $6A, $01, $6A, $00, $68, $E0, $FA, + $ED, $0E, $FF, $15, $10, $80, $40, $00, $83, $C4, $04, $58, $C3, $8D, $40, $00, + $80, $3D, $10, $70, $40, $00, $01, $76, $07, $50, $53, $E9, $D8, $FF, $FF, $FF, + $C3, $8D, $40, $00, $85, $C9, $74, $19, $8B, $41, $01, $80, $39, $E9, $74, $0C, + $80, $39, $EB, $75, $0C, $0F, $BE, $C0, $41, $41, $EB, $03, $83, $C1, $05, $01, + $C1, $C3, $8B, $C0, $80, $3D, $10, $70, $40, $00, $01, $76, $1D, $50, $52, $51, + $E8, $CF, $FF, $FF, $FF, $51, $54, $6A, $01, $6A, $00, $68, $E1, $FA, $ED, $0E, + $FF, $15, $10, $80, $40, $00, $59, $59, $5A, $58, $C3, $90, $80, $3D, $10, $70, + $40, $00, $01, $76, $12, $52, $54, $6A, $01, $6A, $00, $68, $E2, $FA, $ED, $0E, + $FF, $15, $10, $80, $40, $00, $5A, $C3, $50, $52, $80, $3D, $10, $70, $40, $00, + $01, $76, $10, $54, $6A, $02, $6A, $00, $68, $E3, $FA, $ED, $0E, $FF, $15, $10, + $80, $40, $00, $5A, $58, $C3, $8B, $C0, $8B, $44, $24, $04, $F7, $40, $04, $06, + $00, $00, $00, $0F, $85, $13, $01, $00, $00, $81, $38, $DE, $FA, $ED, $0E, $8B, + $50, $18, $8B, $48, $14, $74, $6E, $FC, $E8, $5F, $FE, $FF, $FF, $8B, $15, $0C, + $80, $40, $00, $85, $D2, $0F, $84, $F1, $00, $00, $00, $FF, $D2, $85, $C0, $0F, + $84, $E7, $00, $00, $00, $8B, $54, $24, $0C, $8B, $4C, $24, $04, $81, $39, $CE, + $FA, $EF, $0E, $74, $37, $E8, $DA, $FE, $FF, $FF, $80, $3D, $14, $70, $40, $00, + $00, $76, $29, $80, $3D, $10, $70, $40, $00, $00, $77, $20, $8D, $4C, $24, $04, + $50, $51, $E8, $A1, $DE, $FF, $FF, $83, $F8, $00, $58, $0F, $84, $AB, $00, $00, + $00, $89, $C2, $8B, $44, $24, $04, $8B, $48, $0C, $EB, $30, $89, $C2, $8B, $44, + $24, $04, $8B, $48, $0C, $80, $3D, $14, $70, $40, $00, $01, $76, $1E, $80, $3D, + $10, $70, $40, $00, $00, $77, $15, $50, $8D, $44, $24, $08, $52, $51, $50, $E8, + $64, $DE, $FF, $FF, $83, $F8, $00, $59, $5A, $58, $74, $70, $83, $48, $04, $02, + $53, $31, $DB, $56, $57, $55, $64, $8B, $1B, $53, $50, $52, $51, $8B, $54, $24, + $28, $6A, $00, $50, $68, $E0, $31, $40, $00, $52, $FF, $15, $14, $80, $40, $00, + $8B, $7C, $24, $28, $E8, $A3, $0D, $00, $00, $FF, $B0, $00, $00, $00, $00, $89, + $A0, $00, $00, $00, $00, $8B, $6F, $08, $8B, $5F, $04, $C7, $47, $04, $0C, $32, + $40, $00, $83, $C3, $05, $E8, $66, $FE, $FF, $FF, $FF, $E3, $E9, $CB, $00, $00, + $00, $E8, $76, $0D, $00, $00, $8B, $88, $00, $00, $00, $00, $8B, $11, $89, $90, + $00, $00, $00, $00, $8B, $41, $08, $E9, $90, $FD, $FF, $FF, $B8, $01, $00, $00, + $00, $C3, $8B, $C0, $8B, $44, $24, $04, $F7, $40, $04, $06, $00, $00, $00, $0F, + $84, $8F, $00, $00, $00, $53, $31, $DB, $56, $57, $55, $55, $68, $B4, $32, $40, + $00, $64, $FF, $33, $64, $89, $23, $64, $8B, $1B, $8B, $50, $18, $8B, $48, $14, + $53, $50, $52, $51, $8B, $7C, $24, $34, $E8, $1F, $0D, $00, $00, $FF, $B0, $00, + $00, $00, $00, $89, $A0, $00, $00, $00, $00, $8B, $4F, $04, $8B, $6F, $08, $C7, + $47, $04, $B4, $32, $40, $00, $83, $C1, $05, $E8, $16, $FE, $FF, $FF, $FF, $D1, + $E8, $F7, $0C, $00, $00, $8B, $88, $00, $00, $00, $00, $8B, $11, $89, $90, $00, + $00, $00, $00, $83, $C4, $14, $31, $C0, $5A, $59, $59, $64, $89, $10, $5D, $5F, + $5E, $5B, $EB, $20, $E9, $23, $00, $00, $00, $E8, $CE, $0C, $00, $00, $8B, $88, + $00, $00, $00, $00, $8B, $11, $89, $90, $00, $00, $00, $00, $8B, $41, $08, $E9, + $E8, $FC, $FF, $FF, $B8, $01, $00, $00, $00, $C3, $8B, $C0, $8B, $44, $24, $04, + $8B, $54, $24, $08, $F7, $40, $04, $06, $00, $00, $00, $74, $1F, $8B, $4A, $04, + $C7, $42, $04, $0C, $33, $40, $00, $53, $56, $57, $55, $8B, $6A, $08, $83, $C1, + $05, $E8, $9E, $FD, $FF, $FF, $FF, $D1, $5D, $5F, $5E, $5B, $B8, $01, $00, $00, + $00, $C3, $8B, $C0, $8B, $44, $24, $30, $C7, $40, $04, $5F, $33, $40, $00, $E8, + $68, $0C, $00, $00, $8B, $90, $00, $00, $00, $00, $8B, $0A, $89, $88, $00, $00, + $00, $00, $8B, $42, $0C, $83, $60, $04, $FD, $81, $38, $DE, $FA, $ED, $0E, $74, + $0D, $8B, $42, $08, $E8, $73, $FC, $FF, $FF, $E8, $CA, $FC, $FF, $FF, $31, $C0, + $83, $C4, $14, $64, $8B, $10, $59, $8B, $12, $89, $11, $5D, $5F, $5E, $5B, $B8, + $01, $00, $00, $00, $C3, $8D, $40, $00, $E8, $1F, $0C, $00, $00, $8B, $90, $00, + $00, $00, $00, $8B, $0A, $89, $88, $00, $00, $00, $00, $8B, $42, $08, $E8, $39, + $FC, $FF, $FF, $5A, $8B, $64, $24, $2C, $31, $C0, $59, $64, $89, $08, $58, $5D, + $E8, $37, $FD, $FF, $FF, $FF, $E2, $C3, $31, $D2, $8B, $4C, $24, $08, $8B, $44, + $24, $04, $83, $C1, $05, $64, $89, $02, $FF, $D1, $C2, $0C, $00, $C3, $8B, $C0, + $55, $8B, $EC, $8B, $55, $08, $8B, $02, $3D, $92, $00, $00, $C0, $7F, $2C, $74, + $5C, $3D, $8E, $00, $00, $C0, $7F, $15, $74, $57, $2D, $05, $00, $00, $C0, $74, + $5C, $2D, $87, $00, $00, $00, $74, $3D, $48, $74, $4E, $EB, $60, $05, $71, $FF, + $FF, $3F, $83, $E8, $02, $72, $36, $74, $30, $EB, $52, $3D, $96, $00, $00, $C0, + $7F, $11, $74, $3D, $2D, $93, $00, $00, $C0, $74, $2E, $48, $74, $13, $48, $74, + $24, $EB, $3A, $2D, $FD, $00, $00, $C0, $74, $2F, $83, $E8, $3D, $74, $26, $EB, + $2C, $B0, $C8, $EB, $2A, $B0, $C9, $EB, $26, $B0, $CD, $EB, $22, $B0, $CF, $EB, + $1E, $B0, $C8, $EB, $1A, $B0, $D7, $EB, $16, $B0, $CE, $EB, $12, $B0, $D8, $EB, + $0E, $B0, $DA, $EB, $0A, $B0, $D9, $EB, $06, $B0, $CA, $EB, $02, $B0, $FF, $0F, + $B6, $C0, $8B, $52, $0C, $E8, $DE, $F7, $FF, $FF, $5D, $C2, $04, $00, $8B, $C0, + $8B, $44, $24, $04, $F7, $40, $04, $06, $00, $00, $00, $0F, $85, $89, $00, $00, + $00, $80, $3D, $10, $70, $40, $00, $00, $77, $0F, $8D, $44, $24, $04, $50, $E8, + $A4, $DB, $FF, $FF, $83, $F8, $00, $74, $71, $8B, $44, $24, $04, $FC, $E8, $09, + $FB, $FF, $FF, $8B, $54, $24, $08, $6A, $00, $50, $68, $96, $34, $40, $00, $52, + $FF, $15, $14, $80, $40, $00, $8B, $5C, $24, $04, $81, $3B, $DE, $FA, $ED, $0E, + $8B, $53, $14, $8B, $43, $18, $74, $1D, $8B, $15, $0C, $80, $40, $00, $85, $D2, + $0F, $84, $FA, $FE, $FF, $FF, $89, $D8, $FF, $D2, $85, $C0, $0F, $84, $EE, $FE, + $FF, $FF, $8B, $53, $0C, $E8, $1E, $FC, $FF, $FF, $8B, $0D, $04, $80, $40, $00, + $85, $C9, $74, $02, $FF, $D1, $8B, $4C, $24, $04, $B8, $D9, $00, $00, $00, $8B, + $51, $14, $89, $14, $24, $E9, $EA, $03, $00, $00, $31, $C0, $C3, $8D, $40, $00, + $31, $D2, $8D, $45, $F4, $64, $8B, $0A, $64, $89, $02, $89, $08, $C7, $40, $04, + $50, $34, $40, $00, $89, $68, $08, $A3, $B4, $A7, $40, $00, $C3, $8D, $40, $00, + $31, $D2, $A1, $B4, $A7, $40, $00, $85, $C0, $74, $1C, $64, $8B, $0A, $39, $C8, + $75, $08, $8B, $00, $64, $89, $02, $C3, $8B, $09, $83, $F9, $FF, $74, $08, $39, + $01, $75, $F5, $8B, $00, $89, $01, $C3, $55, $8B, $EC, $53, $56, $57, $A1, $B8, + $A7, $40, $00, $85, $C0, $74, $4E, $8B, $1D, $BC, $A7, $40, $00, $8B, $78, $04, + $33, $C0, $55, $68, $81, $35, $40, $00, $64, $FF, $30, $64, $89, $20, $85, $DB, + $7E, $15, $4B, $89, $1D, $BC, $A7, $40, $00, $8B, $74, $DF, $04, $85, $F6, $74, + $02, $FF, $D6, $85, $DB, $7F, $EB, $33, $C0, $5A, $59, $59, $64, $89, $10, $EB, + $14, $E9, $82, $FB, $FF, $FF, $E8, $AD, $FF, $FF, $FF, $E8, $84, $FD, $FF, $FF, + $E8, $D3, $FD, $FF, $FF, $5F, $5E, $5B, $5D, $C3, $8B, $C0, $55, $8B, $EC, $51, + $53, $56, $57, $A1, $B8, $A7, $40, $00, $85, $C0, $74, $51, $8B, $38, $33, $DB, + $8B, $40, $04, $89, $45, $FC, $33, $C0, $55, $68, $E9, $35, $40, $00, $64, $FF, + $30, $64, $89, $20, $3B, $FB, $7E, $17, $8B, $45, $FC, $8B, $34, $D8, $43, $89, + $1D, $BC, $A7, $40, $00, $85, $F6, $74, $02, $FF, $D6, $3B, $FB, $7F, $E9, $33, + $C0, $5A, $59, $59, $64, $89, $10, $EB, $14, $E9, $1A, $FB, $FF, $FF, $E8, $45, + $FF, $FF, $FF, $E8, $1C, $FD, $FF, $FF, $E8, $6B, $FD, $FF, $FF, $5F, $5E, $5B, + $59, $5D, $C3, $90, $51, $56, $57, $BE, $B0, $A7, $40, $00, $8D, $7D, $C4, $B9, + $0B, $00, $00, $00, $F3, $A5, $8F, $05, $D0, $A7, $40, $00, $8F, $05, $CC, $A7, + $40, $00, $89, $2D, $C4, $A7, $40, $00, $89, $1D, $C8, $A7, $40, $00, $A3, $B8, + $A7, $40, $00, $89, $15, $C0, $A7, $40, $00, $8D, $4D, $C4, $89, $0D, $B0, $A7, + $40, $00, $31, $C9, $83, $7D, $0C, $00, $75, $02, $8B, $08, $89, $0D, $BC, $A7, + $40, $00, $B8, $08, $10, $40, $00, $A3, $10, $80, $40, $00, $B8, $10, $10, $40, + $00, $A3, $14, $80, $40, $00, $E8, $85, $FE, $FF, $FF, $8B, $45, $0C, $40, $A2, + $D8, $A7, $40, $00, $48, $59, $8B, $11, $89, $15, $D4, $A7, $40, $00, $74, $07, + $3C, $03, $7D, $03, $FF, $14, $81, $51, $8B, $4C, $24, $08, $85, $C9, $74, $08, + $8B, $45, $0C, $8B, $55, $10, $FF, $D1, $59, $8B, $45, $0C, $3C, $03, $7C, $03, + $FF, $14, $81, $83, $3D, $1C, $80, $40, $00, $00, $75, $0D, $C6, $05, $24, $80, + $40, $00, $01, $D9, $3D, $0C, $70, $40, $00, $8B, $45, $0C, $48, $0F, $85, $29, + $01, $00, $00, $E8, $D4, $FE, $FF, $FF, $C2, $04, $00, $C3, $53, $56, $57, $BF, + $44, $77, $40, $00, $B3, $10, $8B, $35, $00, $70, $40, $00, $8B, $C6, $B9, $0A, + $00, $00, $00, $99, $F7, $F9, $80, $C2, $30, $0F, $B6, $C3, $88, $14, $07, $B9, + $0A, $00, $00, $00, $8B, $C6, $99, $F7, $F9, $89, $C6, $4B, $85, $F6, $75, $DC, + $B3, $1C, $8B, $35, $04, $70, $40, $00, $8B, $C6, $83, $E0, $0F, $0F, $B6, $80, + $64, $77, $40, $00, $0F, $B6, $D3, $88, $04, $17, $B9, $10, $00, $00, $00, $8B, + $C6, $33, $D2, $F7, $F1, $89, $C6, $4B, $85, $F6, $75, $DC, $5F, $5E, $5B, $C3, + $31, $C0, $87, $05, $00, $70, $40, $00, $F7, $D8, $19, $C0, $40, $BF, $B0, $A7, + $40, $00, $8B, $5F, $18, $8B, $6F, $14, $FF, $77, $1C, $FF, $77, $20, $8B, $37, + $B9, $0B, $00, $00, $00, $F3, $A5, $5F, $5E, $C9, $C2, $0C, $00, $C3, $8B, $C0, + $51, $80, $3D, $34, $80, $40, $00, $00, $74, $57, $66, $81, $3D, $08, $82, $40, + $00, $B2, $D7, $75, $14, $83, $3D, $10, $82, $40, $00, $00, $76, $0B, $B8, $04, + $82, $40, $00, $FF, $15, $20, $82, $40, $00, $6A, $00, $8D, $44, $24, $04, $50, + $6A, $1E, $68, $44, $77, $40, $00, $6A, $F5, $E8, $62, $D8, $FF, $FF, $50, $E8, + $7C, $D8, $FF, $FF, $6A, $00, $8D, $44, $24, $04, $50, $6A, $02, $68, $E8, $37, + $40, $00, $6A, $F5, $E8, $47, $D8, $FF, $FF, $50, $E8, $61, $D8, $FF, $FF, $5A, + $C3, $80, $3D, $18, $70, $40, $00, $00, $75, $13, $6A, $00, $68, $3C, $77, $40, + $00, $68, $44, $77, $40, $00, $6A, $00, $E8, $53, $D8, $FF, $FF, $5A, $C3, $00, + $FF, $FF, $FF, $FF, $02, $00, $00, $00, $0D, $0A, $00, $00, $53, $56, $57, $55, + $BB, $B0, $A7, $40, $00, $BF, $30, $80, $40, $00, $80, $7B, $28, $00, $75, $14, + $83, $3F, $00, $74, $0F, $8B, $07, $89, $C6, $33, $C0, $89, $07, $FF, $D6, $83, + $3F, $00, $75, $F1, $83, $3D, $04, $70, $40, $00, $00, $74, $11, $E8, $AA, $FE, + $FF, $FF, $E8, $39, $FF, $FF, $FF, $33, $C0, $A3, $04, $70, $40, $00, $80, $7B, + $28, $02, $75, $0E, $83, $3D, $00, $70, $40, $00, $00, $75, $05, $33, $C0, $89, + $43, $0C, $E8, $F1, $FC, $FF, $FF, $80, $7B, $28, $01, $76, $09, $83, $3D, $00, + $70, $40, $00, $00, $74, $23, $8B, $7B, $10, $85, $FF, $74, $1C, $8B, $C7, $E8, + $40, $05, $00, $00, $8B, $6B, $10, $8B, $75, $10, $3B, $75, $04, $74, $0A, $85, + $F6, $74, $06, $56, $E8, $BF, $D7, $FF, $FF, $E8, $92, $FC, $FF, $FF, $80, $7B, + $28, $01, $75, $03, $FF, $53, $24, $80, $7B, $28, $00, $74, $05, $E8, $9E, $FE, + $FF, $FF, $83, $3B, $00, $75, $1A, $83, $3D, $18, $80, $40, $00, $00, $74, $06, + $FF, $15, $18, $80, $40, $00, $A1, $00, $70, $40, $00, $50, $E8, $77, $D7, $FF, + $FF, $8B, $03, $8B, $F0, $8B, $FB, $B9, $0B, $00, $00, $00, $F3, $A5, $E9, $6B, + $FF, $FF, $FF, $5D, $5F, $5E, $5B, $C3, $A3, $00, $70, $40, $00, $E8, $1A, $FF, + $FF, $FF, $C3, $90, $8F, $05, $04, $70, $40, $00, $E9, $E9, $FF, $FF, $FF, $C3, + $8B, $10, $85, $D2, $74, $1C, $C7, $00, $00, $00, $00, $00, $8B, $4A, $F8, $49, + $7C, $10, $F0, $FF, $4A, $F8, $75, $0A, $50, $8D, $42, $F8, $E8, $BF, $F2, $FF, + $FF, $58, $C3, $90, $53, $56, $89, $C3, $89, $D6, $8B, $13, $85, $D2, $74, $1A, + $C7, $03, $00, $00, $00, $00, $8B, $4A, $F8, $49, $7C, $0E, $F0, $FF, $4A, $F8, + $75, $08, $8D, $42, $F8, $E8, $96, $F2, $FF, $FF, $83, $C3, $04, $4E, $75, $DA, + $5E, $5B, $C3, $90, $85, $D2, $74, $24, $8B, $4A, $F8, $41, $7F, $1A, $50, $52, + $8B, $42, $FC, $E8, $30, $00, $00, $00, $89, $C2, $58, $52, $8B, $48, $FC, $E8, + $48, $F3, $FF, $FF, $5A, $58, $EB, $04, $F0, $FF, $42, $F8, $87, $10, $85, $D2, + $74, $14, $8B, $4A, $F8, $49, $7C, $0E, $F0, $FF, $4A, $F8, $75, $08, $8D, $42, + $F8, $E8, $4A, $F2, $FF, $FF, $C3, $90, $85, $C0, $7E, $24, $50, $83, $C0, $0A, + $83, $E0, $FE, $50, $E8, $1B, $F2, $FF, $FF, $5A, $66, $C7, $44, $02, $FE, $00, + $00, $83, $C0, $08, $5A, $89, $50, $FC, $C7, $40, $F8, $01, $00, $00, $00, $C3, + $31, $C0, $C3, $90, $53, $56, $57, $89, $C3, $89, $D6, $89, $CF, $89, $F8, $E8, + $C4, $FF, $FF, $FF, $89, $F9, $89, $C7, $85, $F6, $74, $09, $89, $C2, $89, $F0, + $E8, $D7, $F2, $FF, $FF, $89, $D8, $E8, $14, $FF, $FF, $FF, $89, $3B, $5F, $5E, + $5B, $C3, $8B, $C0, $52, $89, $E2, $B9, $01, $00, $00, $00, $E8, $C3, $FF, $FF, + $FF, $5A, $C3, $90, $57, $50, $51, $89, $D7, $31, $C0, $F2, $AE, $75, $02, $F7, + $D1, $58, $01, $C1, $58, $5F, $E9, $A9, $FF, $FF, $FF, $C3, $85, $D2, $74, $46, + $8B, $08, $85, $C9, $0F, $84, $2A, $FF, $FF, $FF, $53, $56, $57, $89, $C3, $89, + $D6, $8B, $79, $FC, $8B, $56, $FC, $01, $FA, $70, $26, $39, $CE, $74, $17, $E8, + $A8, $02, $00, $00, $89, $F0, $8B, $4E, $FC, $8B, $13, $01, $FA, $E8, $6A, $F2, + $FF, $FF, $5F, $5E, $5B, $C3, $E8, $91, $02, $00, $00, $8B, $03, $89, $F9, $EB, + $E8, $E9, $52, $F5, $FF, $FF, $C3, $90, $53, $56, $57, $52, $50, $89, $D3, $31, + $FF, $8B, $4C, $94, $14, $85, $C9, $74, $0C, $39, $08, $75, $08, $89, $CF, $8B, + $41, $FC, $4A, $EB, $02, $31, $C0, $8B, $4C, $94, $14, $85, $C9, $74, $0B, $03, + $41, $FC, $70, $5F, $39, $CF, $75, $02, $31, $FF, $4A, $75, $EA, $85, $FF, $74, + $17, $89, $C2, $8B, $04, $24, $8B, $77, $FC, $E8, $3E, $02, $00, $00, $8B, $3C, + $24, $FF, $37, $03, $37, $4B, $EB, $08, $E8, $DB, $FE, $FF, $FF, $50, $89, $C6, + $8B, $44, $9C, $18, $89, $F2, $85, $C0, $74, $0A, $8B, $48, $FC, $01, $CE, $E8, + $E8, $F1, $FF, $FF, $4B, $75, $E9, $5A, $58, $85, $FF, $75, $0C, $85, $D2, $74, + $03, $FF, $4A, $F8, $E8, $6B, $FE, $FF, $FF, $5A, $5F, $5E, $5B, $58, $8D, $24, + $94, $FF, $E0, $E9, $C0, $F4, $FF, $FF, $C3, $8D, $40, $00, $39, $D0, $74, $30, + $85, $D0, $74, $40, $0F, $B6, $08, $2A, $0A, $75, $25, $53, $8B, $58, $FC, $2B, + $5A, $FC, $53, $83, $D1, $FF, $21, $D9, $2B, $48, $FC, $29, $C8, $29, $CA, $8B, + $1C, $01, $33, $1C, $11, $75, $0A, $83, $C1, $04, $78, $F3, $58, $01, $C0, $5B, + $C3, $0F, $BC, $DB, $C1, $EB, $03, $01, $D9, $79, $F1, $8A, $04, $01, $3A, $04, + $11, $5B, $5B, $C3, $85, $C0, $74, $08, $85, $D2, $75, $B8, $39, $50, $FC, $C3, + $3B, $42, $FC, $C3, $85, $C0, $74, $0A, $C3, $FF, $FF, $FF, $FF, $00, $00, $00, + $00, $00, $B8, $41, $3B, $40, $00, $C3, $53, $85, $C0, $74, $2D, $8B, $58, $FC, + $85, $DB, $74, $26, $4A, $7C, $1B, $39, $DA, $7D, $1F, $29, $D3, $85, $C9, $7C, + $19, $39, $D9, $7F, $11, $01, $C2, $8B, $44, $24, $08, $E8, $34, $FE, $FF, $FF, + $EB, $11, $31, $D2, $EB, $E5, $89, $D9, $EB, $EB, $8B, $44, $24, $08, $E8, $5D, + $FD, $FF, $FF, $5B, $C2, $04, $00, $C3, $53, $56, $83, $C4, $F0, $85, $D2, $74, + $4E, $85, $C0, $74, $4A, $8B, $72, $FC, $8B, $58, $FC, $39, $DE, $7C, $40, $85, + $DB, $7E, $3C, $4B, $01, $D6, $01, $DA, $89, $74, $24, $08, $01, $D8, $89, $54, + $24, $04, $F7, $DB, $0F, $B6, $08, $89, $1C, $24, $0F, $85, $99, $00, $00, $00, + $83, $EE, $02, $89, $74, $24, $0C, $3A, $0A, $74, $41, $3A, $4A, $01, $74, $4C, + $83, $C2, $02, $3B, $54, $24, $0C, $72, $0A, $3B, $54, $24, $08, $72, $E8, $31, + $C0, $EB, $30, $3A, $0A, $74, $25, $3A, $4A, $01, $74, $30, $3A, $4A, $02, $74, + $18, $3A, $4A, $03, $74, $23, $83, $C2, $04, $3B, $54, $24, $0C, $72, $E4, $3B, + $54, $24, $08, $72, $C2, $31, $C0, $EB, $0A, $83, $C2, $02, $42, $89, $D0, $2B, + $44, $24, $04, $83, $C4, $10, $5E, $5B, $C3, $83, $C2, $02, $83, $C2, $02, $31, + $C0, $3B, $54, $24, $08, $77, $06, $89, $D0, $2B, $44, $24, $04, $83, $C4, $10, + $5E, $5B, $C3, $3A, $0A, $74, $75, $3A, $4A, $01, $74, $43, $3A, $4A, $02, $74, + $68, $3A, $4A, $03, $74, $36, $83, $C2, $04, $3B, $54, $24, $0C, $72, $E4, $3B, + $54, $24, $08, $72, $0B, $31, $C0, $EB, $4A, $83, $EE, $02, $89, $74, $24, $0C, + $3A, $0A, $74, $48, $3A, $4A, $01, $74, $16, $83, $C2, $02, $3B, $54, $24, $0C, + $72, $C1, $3B, $54, $24, $08, $72, $E8, $31, $C0, $EB, $27, $83, $C2, $02, $8B, + $34, $24, $0F, $B7, $1C, $30, $66, $3B, $5C, $32, $01, $75, $DC, $83, $C6, $02, + $7C, $F0, $83, $C2, $02, $31, $C0, $3B, $54, $24, $08, $77, $06, $89, $D0, $2B, + $44, $24, $04, $83, $C4, $10, $5E, $5B, $C3, $83, $C2, $02, $8B, $34, $24, $0F, + $B7, $1C, $30, $66, $3B, $1C, $32, $75, $AB, $83, $C6, $02, $7C, $F1, $42, $89, + $D0, $2B, $44, $24, $04, $83, $C4, $10, $5E, $5B, $C3, $90, $53, $56, $57, $89, + $C3, $89, $D6, $31, $FF, $85, $D2, $7E, $48, $8B, $03, $85, $C0, $74, $23, $83, + $78, $F8, $01, $75, $1D, $83, $E8, $08, $83, $C2, $09, $50, $89, $E0, $E8, $E5, + $EE, $FF, $FF, $58, $83, $C0, $08, $89, $03, $89, $70, $FC, $C6, $04, $06, $00, + $EB, $28, $89, $D0, $E8, $6F, $FC, $FF, $FF, $89, $C7, $8B, $03, $85, $C0, $74, + $10, $89, $FA, $8B, $48, $FC, $39, $F1, $7C, $02, $89, $F1, $E8, $7B, $EF, $FF, + $FF, $89, $D8, $E8, $B8, $FB, $FF, $FF, $89, $3B, $5F, $5E, $5B, $C3, $8B, $C0, + $B0, $11, $E9, $49, $EF, $FF, $FF, $C3, $55, $8B, $EC, $83, $C4, $F8, $53, $56, + $57, $89, $45, $FC, $A1, $20, $70, $40, $00, $89, $45, $F8, $83, $7D, $F8, $00, + $74, $39, $33, $C0, $55, $68, $73, $3D, $40, $00, $64, $FF, $30, $64, $89, $20, + $8B, $5D, $F8, $8B, $45, $FC, $FF, $53, $04, $33, $C0, $5A, $59, $59, $64, $89, + $10, $EB, $0A, $E9, $90, $F3, $FF, $FF, $E8, $EB, $F5, $FF, $FF, $8B, $45, $F8, + $8B, $00, $89, $45, $F8, $83, $7D, $F8, $00, $75, $C7, $5F, $5E, $5B, $59, $59, + $5D, $C3, $8B, $C0, $8B, $15, $1C, $70, $40, $00, $89, $10, $A3, $1C, $70, $40, + $00, $C3, $8B, $C0, $55, $8B, $EC, $51, $89, $45, $FC, $33, $D2, $55, $68, $08, + $3E, $40, $00, $64, $FF, $32, $64, $89, $22, $8B, $45, $FC, $8B, $40, $04, $E8, + $74, $FF, $FF, $FF, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $0F, $3E, $40, + $00, $8B, $45, $FC, $3B, $05, $1C, $70, $40, $00, $75, $0C, $8B, $45, $FC, $8B, + $00, $A3, $1C, $70, $40, $00, $EB, $1F, $A1, $1C, $70, $40, $00, $85, $C0, $74, + $16, $8B, $10, $3B, $55, $FC, $75, $09, $8B, $55, $FC, $8B, $12, $89, $10, $EB, + $06, $8B, $00, $85, $C0, $75, $EA, $C3, $E9, $27, $F4, $FF, $FF, $EB, $C2, $59, + $5D, $C3, $8B, $C0, $FF, $25, $94, $B1, $40, $00, $8B, $C0, $55, $8B, $EC, $33, + $C0, $55, $68, $70, $3E, $40, $00, $64, $FF, $30, $64, $89, $20, $FF, $05, $A0, + $85, $40, $00, $75, $2D, $B8, $38, $80, $40, $00, $E8, $5D, $EF, $FF, $FF, $B8, + $04, $82, $40, $00, $E8, $53, $EF, $FF, $FF, $B8, $D0, $83, $40, $00, $E8, $49, + $EF, $FF, $FF, $E8, $F8, $EC, $FF, $FF, $B8, $24, $70, $40, $00, $E8, $7E, $FA, + $FF, $FF, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $77, $3E, $40, $00, $C3, + $E9, $BF, $F3, $FF, $FF, $EB, $F8, $5D, $C3, $8D, $40, $00, $FF, $25, $E8, $B1, + $40, $00, $8B, $C0, $FF, $25, $E4, $B1, $40, $00, $8B, $C0, $FF, $25, $E0, $B1, + $40, $00, $8B, $C0, $FF, $25, $DC, $B1, $40, $00, $8B, $C0, $FF, $25, $D8, $B1, + $40, $00, $8B, $C0, $FF, $25, $D4, $B1, $40, $00, $8B, $C0, $50, $6A, $40, $E8, + $C8, $FF, $FF, $FF, $C3, $8D, $40, $00, $B8, $08, $00, $00, $00, $C3, $8B, $C0, + $53, $E8, $F2, $FF, $FF, $FF, $8B, $D8, $85, $DB, $74, $36, $83, $3D, $74, $77, + $40, $00, $FF, $75, $0A, $B8, $E2, $00, $00, $00, $E8, $F5, $F9, $FF, $FF, $8B, + $C3, $E8, $C6, $FF, $FF, $FF, $85, $C0, $75, $0C, $B8, $E2, $00, $00, $00, $E8, + $E0, $F9, $FF, $FF, $EB, $0C, $50, $A1, $74, $77, $40, $00, $50, $E8, $A2, $FF, + $FF, $FF, $5B, $C3, $B8, $08, $00, $00, $00, $85, $C0, $74, $1F, $E8, $7A, $FF, + $FF, $FF, $A3, $74, $77, $40, $00, $E8, $A4, $FF, $FF, $FF, $A1, $74, $77, $40, + $00, $50, $E8, $75, $FF, $FF, $FF, $A3, $E8, $A7, $40, $00, $C3, $8D, $40, $00, + $B8, $08, $00, $00, $00, $85, $C0, $74, $2B, $83, $3D, $74, $77, $40, $00, $FF, + $74, $22, $A1, $74, $77, $40, $00, $50, $E8, $4F, $FF, $FF, $FF, $85, $C0, $74, + $13, $50, $E8, $2D, $FF, $FF, $FF, $6A, $00, $A1, $74, $77, $40, $00, $50, $E8, + $40, $FF, $FF, $FF, $C3, $8D, $40, $00, $B8, $08, $00, $00, $00, $85, $C0, $74, + $19, $E8, $BA, $FF, $FF, $FF, $83, $3D, $74, $77, $40, $00, $FF, $74, $0B, $A1, + $74, $77, $40, $00, $50, $E8, $0A, $FF, $FF, $FF, $C3, $90, $8A, $0D, $DC, $A7, + $40, $00, $A1, $74, $77, $40, $00, $84, $C9, $75, $26, $64, $8B, $15, $2C, $00, + $00, $00, $8B, $04, $82, $C3, $E8, $15, $FF, $FF, $FF, $A1, $74, $77, $40, $00, + $50, $E8, $E6, $FE, $FF, $FF, $85, $C0, $74, $01, $C3, $A1, $E8, $A7, $40, $00, + $C3, $50, $E8, $D5, $FE, $FF, $FF, $85, $C0, $74, $DB, $C3, $B8, $78, $77, $40, + $00, $E8, $BE, $FD, $FF, $FF, $C3, $90, $BA, $78, $77, $40, $00, $83, $7D, $0C, + $01, $75, $2A, $50, $52, $C6, $05, $DC, $A7, $40, $00, $01, $8B, $4D, $08, $89, + $0D, $E0, $A7, $40, $00, $89, $4A, $04, $C7, $42, $08, $00, $00, $00, $00, $C7, + $42, $0C, $00, $00, $00, $00, $E8, $C1, $FF, $FF, $FF, $5A, $58, $FF, $35, $E4, + $A7, $40, $00, $B9, $90, $77, $40, $00, $E8, $E7, $F5, $FF, $FF, $C3, $8B, $C0, + $FF, $25, $54, $B2, $40, $00, $8B, $C0, $FF, $25, $50, $B2, $40, $00, $8B, $C0, + $FF, $25, $4C, $B2, $40, $00, $8B, $C0, $FF, $25, $48, $B2, $40, $00, $8B, $C0, + $FF, $25, $44, $B2, $40, $00, $8B, $C0, $FF, $25, $40, $B2, $40, $00, $8B, $C0, + $FF, $25, $3C, $B2, $40, $00, $8B, $C0, $FF, $25, $38, $B2, $40, $00, $8B, $C0, + $FF, $25, $34, $B2, $40, $00, $8B, $C0, $FF, $25, $30, $B2, $40, $00, $8B, $C0, + $FF, $25, $2C, $B2, $40, $00, $8B, $C0, $FF, $25, $28, $B2, $40, $00, $8B, $C0, + $FF, $25, $24, $B2, $40, $00, $8B, $C0, $FF, $25, $20, $B2, $40, $00, $8B, $C0, + $FF, $25, $1C, $B2, $40, $00, $8B, $C0, $FF, $25, $18, $B2, $40, $00, $8B, $C0, + $FF, $25, $14, $B2, $40, $00, $8B, $C0, $FF, $25, $10, $B2, $40, $00, $8B, $C0, + $FF, $25, $08, $B2, $40, $00, $8B, $C0, $FF, $25, $04, $B2, $40, $00, $8B, $C0, + $FF, $25, $00, $B2, $40, $00, $8B, $C0, $FF, $25, $FC, $B1, $40, $00, $8B, $C0, + $FF, $25, $F8, $B1, $40, $00, $8B, $C0, $FF, $25, $F4, $B1, $40, $00, $8B, $C0, + $FF, $25, $F0, $B1, $40, $00, $8B, $C0, $92, $E8, $AE, $EB, $FF, $FF, $C3, $90, + $55, $8B, $EC, $33, $C0, $55, $68, $2B, $41, $40, $00, $64, $FF, $30, $64, $89, + $20, $FF, $05, $EC, $A7, $40, $00, $75, $14, $83, $3D, $F0, $A7, $40, $00, $00, + $74, $0B, $A1, $F0, $A7, $40, $00, $50, $E8, $0B, $FF, $FF, $FF, $33, $C0, $5A, + $59, $59, $64, $89, $10, $68, $32, $41, $40, $00, $C3, $E9, $04, $F1, $FF, $FF, + $EB, $F8, $5D, $C3, $55, $8B, $EC, $83, $C4, $EC, $53, $56, $57, $55, $68, $E6, + $43, $40, $00, $64, $FF, $35, $00, $00, $00, $00, $64, $89, $25, $00, $00, $00, + $00, $8B, $F8, $85, $C0, $0F, $84, $7D, $02, $00, $00, $C6, $45, $FF, $00, $33, + $D2, $C7, $45, $F8, $04, $00, $00, $00, $33, $C9, $89, $4D, $EC, $0F, $B6, $30, + $40, $66, $83, $FE, $66, $75, $09, $C7, $45, $F8, $02, $00, $00, $00, $EB, $26, + $66, $83, $FE, $67, $75, $06, $C6, $45, $FF, $01, $EB, $1A, $8B, $CE, $66, $81, + $E1, $E7, $00, $66, $83, $F9, $26, $74, $0D, $8B, $CE, $83, $C1, $9C, $66, $83, + $E9, $02, $72, $02, $B2, $01, $84, $D2, $74, $C3, $66, $83, $FE, $0F, $75, $16, + $0F, $B6, $30, $0F, $B7, $D6, $0F, $B7, $0C, $55, $A0, $79, $40, $00, $66, $81, + $C6, $00, $0F, $40, $EB, $0B, $0F, $B7, $D6, $0F, $B7, $0C, $55, $A0, $77, $40, + $00, $F6, $C1, $38, $0F, $84, $9A, $01, $00, $00, $0F, $B6, $10, $8B, $DA, $80, + $E3, $07, $0F, $B6, $DB, $89, $5D, $F4, $40, $8B, $DA, $80, $E3, $C0, $80, $EB, + $40, $74, $07, $80, $EB, $40, $74, $0B, $EB, $21, $C7, $45, $F0, $01, $00, $00, + $00, $EB, $1D, $80, $7D, $FF, $00, $74, $09, $C7, $45, $F0, $02, $00, $00, $00, + $EB, $0E, $C7, $45, $F0, $04, $00, $00, $00, $EB, $05, $33, $DB, $89, $5D, $F0, + $8B, $DA, $80, $E3, $C0, $80, $FB, $C0, $0F, $95, $C3, $22, $5D, $FF, $75, $31, + $83, $7D, $F4, $04, $75, $16, $8B, $DA, $80, $E3, $C0, $80, $FB, $C0, $74, $0C, + $0F, $B6, $18, $80, $E3, $07, $0F, $B6, $DB, $89, $5D, $F4, $F6, $C2, $C0, $75, + $0D, $83, $7D, $F4, $05, $75, $07, $C7, $45, $F0, $04, $00, $00, $00, $03, $45, + $F0, $8B, $D9, $83, $E3, $38, $83, $FB, $08, $0F, $85, $05, $01, $00, $00, $0F, + $B7, $CE, $81, $C1, $28, $FF, $FF, $FF, $83, $F9, $1F, $0F, $87, $B0, $00, $00, + $00, $0F, $B6, $89, $8F, $42, $40, $00, $FF, $24, $8D, $AF, $42, $40, $00, $03, + $04, $05, $06, $07, $08, $09, $0A, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $02, $31, + $43, $40, $00, $DB, $42, $40, $00, $E2, $42, $40, $00, $EB, $42, $40, $00, $F4, + $42, $40, $00, $FD, $42, $40, $00, $06, $43, $40, $00, $0F, $43, $40, $00, $18, + $43, $40, $00, $21, $43, $40, $00, $2A, $43, $40, $00, $33, $C9, $89, $4D, $EC, + $EB, $4F, $C7, $45, $EC, $01, $00, $00, $00, $EB, $46, $C7, $45, $EC, $02, $00, + $00, $00, $EB, $3D, $C7, $45, $EC, $03, $00, $00, $00, $EB, $34, $C7, $45, $EC, + $04, $00, $00, $00, $EB, $2B, $C7, $45, $EC, $05, $00, $00, $00, $EB, $22, $C7, + $45, $EC, $06, $00, $00, $00, $EB, $19, $C7, $45, $EC, $07, $00, $00, $00, $EB, + $10, $C7, $45, $EC, $08, $00, $00, $00, $EB, $07, $C7, $45, $EC, $09, $00, $00, + $00, $8B, $CA, $80, $E1, $C0, $80, $F9, $C0, $74, $1D, $0F, $B6, $D2, $C1, $EA, + $03, $83, $E2, $07, $8B, $4D, $EC, $03, $C9, $03, $C9, $8D, $0C, $CD, $A0, $7B, + $40, $00, $0F, $B7, $0C, $51, $EB, $1C, $0F, $B6, $D2, $C1, $EA, $03, $83, $E2, + $07, $8B, $4D, $EC, $03, $C9, $03, $C9, $8D, $0C, $CD, $A0, $7B, $40, $00, $0F, + $B7, $4C, $51, $10, $81, $E1, $00, $0C, $00, $00, $81, $E9, $00, $04, $00, $00, + $74, $12, $81, $E9, $00, $04, $00, $00, $74, $0D, $81, $E9, $00, $04, $00, $00, + $74, $0A, $EB, $0D, $40, $EB, $41, $83, $C0, $02, $EB, $3C, $03, $45, $F8, $EB, + $37, $66, $81, $EE, $9A, $00, $74, $15, $83, $C6, $FA, $66, $83, $EE, $04, $72, + $19, $66, $83, $EE, $24, $74, $0E, $66, $83, $EE, $22, $75, $1B, $03, $45, $F8, + $83, $C0, $02, $EB, $13, $83, $C0, $03, $EB, $0E, $80, $7D, $FF, $00, $74, $05, + $83, $C0, $02, $EB, $03, $83, $C0, $04, $8B, $D8, $2B, $DF, $33, $C0, $5A, $59, + $59, $64, $89, $10, $EB, $0C, $E9, $1D, $ED, $FF, $FF, $33, $DB, $E8, $76, $EF, + $FF, $FF, $8B, $C3, $5F, $5E, $5B, $8B, $E5, $5D, $C3, $90, $53, $56, $57, $55, + $51, $8B, $EA, $89, $04, $24, $33, $DB, $8B, $34, $24, $8B, $C6, $E8, $22, $FD, + $FF, $FF, $8B, $F8, $03, $F7, $03, $DF, $83, $FB, $05, $72, $EE, $8B, $CB, $8B, + $14, $24, $8B, $C5, $E8, $BF, $FC, $FF, $FF, $8B, $C5, $8B, $D0, $03, $D3, $C6, + $02, $E9, $2B, $F0, $2B, $F3, $83, $EE, $05, $42, $89, $32, $8B, $C3, $5A, $5D, + $5F, $5E, $5B, $C3, $55, $8B, $EC, $83, $C4, $F0, $53, $56, $57, $89, $4D, $F8, + $89, $55, $FC, $C6, $45, $F7, $00, $8B, $D0, $66, $81, $3A, $FF, $25, $75, $07, + $8B, $42, $02, $8B, $18, $EB, $02, $8B, $D8, $8D, $45, $F0, $50, $6A, $40, $6A, + $05, $53, $E8, $31, $FC, $FF, $FF, $85, $C0, $74, $7C, $33, $D2, $55, $68, $E9, + $44, $40, $00, $64, $FF, $32, $64, $89, $22, $6A, $40, $68, $00, $10, $00, $00, + $68, $00, $10, $00, $00, $6A, $00, $E8, $FC, $FB, $FF, $FF, $8B, $F0, $8B, $FB, + $89, $3E, $8B, $D6, $83, $C2, $05, $8B, $C3, $E8, $4E, $FF, $FF, $FF, $8B, $D6, + $83, $C2, $04, $88, $02, $C6, $03, $E9, $8B, $45, $FC, $2B, $C7, $83, $E8, $05, + $47, $89, $07, $8D, $45, $F0, $50, $8B, $45, $F0, $50, $6A, $05, $53, $E8, $D5, + $FB, $FF, $FF, $83, $C6, $05, $8B, $45, $F8, $89, $30, $C6, $45, $F7, $01, $33, + $C0, $5A, $59, $59, $64, $89, $10, $EB, $0E, $E9, $1A, $EC, $FF, $FF, $C6, $45, + $F7, $00, $E8, $71, $EE, $FF, $FF, $0F, $B6, $45, $F7, $5F, $5E, $5B, $8B, $E5, + $5D, $C3, $8B, $C0, $55, $8B, $EC, $83, $C4, $F8, $53, $56, $57, $8B, $F8, $B3, + $01, $33, $D2, $55, $68, $75, $45, $40, $00, $64, $FF, $32, $64, $89, $22, $8B, + $C7, $8B, $D0, $83, $EA, $05, $8B, $32, $48, $0F, $B6, $00, $89, $45, $F8, $8D, + $45, $FC, $50, $6A, $40, $6A, $05, $56, $E8, $6B, $FB, $FF, $FF, $8B, $4D, $F8, + $8B, $D7, $8B, $C6, $E8, $9F, $FB, $FF, $FF, $8D, $45, $FC, $50, $8B, $45, $FC, + $50, $6A, $05, $56, $E8, $4F, $FB, $FF, $FF, $8B, $C7, $83, $E8, $05, $68, $00, + $80, $00, $00, $6A, $00, $50, $E8, $35, $FB, $FF, $FF, $33, $C0, $5A, $59, $59, + $64, $89, $10, $EB, $0C, $E9, $8E, $EB, $FF, $FF, $33, $DB, $E8, $E7, $ED, $FF, + $FF, $8B, $C3, $5F, $5E, $5B, $59, $59, $5D, $C3, $8B, $C0, $85, $C0, $74, $75, + $85, $D2, $74, $6D, $57, $53, $31, $FF, $8B, $58, $FC, $89, $D9, $2B, $5A, $FC, + $83, $D7, $FF, $53, $21, $FB, $89, $C7, $29, $CB, $7D, $13, $29, $DF, $29, $DA, + $8B, $04, $1F, $8B, $0C, $1A, $31, $C8, $75, $13, $83, $C3, $04, $7C, $F1, $58, + $5B, $5F, $C3, $8B, $04, $1F, $8B, $0C, $1A, $31, $C8, $74, $ED, $A9, $DF, $DF, + $DF, $DF, $75, $3E, $01, $C0, $01, $C0, $85, $C8, $75, $36, $81, $E1, $5F, $5F, + $5F, $5F, $81, $C1, $3F, $3F, $3F, $3F, $81, $E1, $7F, $7F, $7F, $7F, $81, $C1, + $66, $66, $66, $66, $85, $C1, $75, $1A, $83, $C3, $04, $7C, $C6, $58, $5B, $5F, + $C3, $8B, $40, $FC, $C3, $85, $D2, $74, $03, $2B, $42, $FC, $C3, $83, $C3, $01, + $7D, $EB, $0F, $B6, $04, $1F, $0F, $B6, $0C, $1A, $83, $E8, $61, $83, $E9, $61, + $3C, $19, $77, $03, $83, $E8, $20, $80, $F9, $19, $77, $03, $83, $E9, $20, $29, + $C8, $74, $DA, $59, $5B, $5F, $C3, $90, $39, $D0, $74, $19, $09, $C0, $74, $17, + $09, $D2, $74, $14, $8B, $48, $FC, $3B, $4A, $FC, $75, $0C, $E8, $3B, $FF, $FF, + $FF, $85, $C0, $75, $03, $B0, $01, $C3, $31, $C0, $C3, $90, $55, $8B, $EC, $83, + $C4, $F8, $53, $56, $57, $33, $C9, $89, $4D, $F8, $8B, $F2, $89, $45, $FC, $33, + $C0, $55, $68, $CB, $46, $40, $00, $64, $FF, $30, $64, $89, $20, $8B, $C6, $85, + $C0, $74, $05, $83, $E8, $04, $8B, $00, $8B, $F8, $85, $FF, $7E, $27, $0F, $B6, + $5C, $3E, $FF, $84, $DB, $74, $1E, $8D, $45, $F8, $8B, $D3, $E8, $33, $F3, $FF, + $FF, $8B, $45, $F8, $8B, $55, $FC, $E8, $DC, $F4, $FF, $FF, $85, $C0, $75, $05, + $4F, $85, $FF, $7F, $D9, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $D2, $46, + $40, $00, $8D, $45, $F8, $E8, $16, $F2, $FF, $FF, $C3, $E9, $64, $EB, $FF, $FF, + $EB, $F0, $8B, $C7, $5F, $5E, $5B, $59, $59, $5D, $C3, $90, $53, $56, $57, $8B, + $FA, $8B, $D8, $8B, $D3, $B8, $10, $47, $40, $00, $E8, $6D, $FF, $FF, $FF, $8B, + $F0, $57, $8D, $56, $01, $B9, $FF, $FF, $FF, $7F, $8B, $C3, $E8, $47, $F4, $FF, + $FF, $5F, $5E, $5B, $C3, $00, $00, $00, $FF, $FF, $FF, $FF, $01, $00, $00, $00, + $5C, $00, $00, $00, $53, $56, $57, $55, $81, $C4, $00, $FC, $FF, $FF, $8B, $F2, + $8B, $F8, $8B, $C6, $E8, $B7, $F1, $FF, $FF, $68, $00, $04, $00, $00, $8D, $44, + $24, $04, $50, $8B, $C7, $E8, $FA, $F3, $FF, $FF, $8B, $E8, $55, $E8, $FE, $F8, + $FF, $FF, $8B, $D8, $81, $FB, $00, $04, $00, $00, $7D, $0D, $8B, $D4, $8B, $C6, + $8B, $CB, $E8, $4D, $F2, $FF, $FF, $EB, $19, $8B, $D3, $4A, $8B, $C6, $E8, $69, + $F5, $FF, $FF, $53, $8B, $06, $E8, $C9, $F3, $FF, $FF, $50, $55, $E8, $CE, $F8, + $FF, $FF, $81, $C4, $00, $04, $00, $00, $5D, $5F, $5E, $5B, $C3, $8D, $40, $00, + $53, $56, $81, $C4, $F8, $FE, $FF, $FF, $8B, $F2, $8B, $D8, $68, $05, $01, $00, + $00, $8D, $44, $24, $04, $50, $53, $E8, $AC, $F8, $FF, $FF, $8B, $C8, $8B, $D4, + $8B, $C6, $E8, $FD, $F1, $FF, $FF, $81, $C4, $08, $01, $00, $00, $5E, $5B, $C3, + $FF, $FF, $FF, $FF, $02, $00, $00, $00, $00, $00, $00, $00, $55, $8B, $EC, $83, + $C4, $F8, $53, $56, $57, $8B, $F1, $8B, $FA, $8B, $D8, $C6, $45, $FF, $00, $8B, + $C3, $E8, $5E, $F3, $FF, $FF, $50, $6A, $00, $6A, $02, $E8, $A0, $F8, $FF, $FF, + $89, $45, $F8, $83, $7D, $F8, $00, $74, $64, $83, $7D, $F8, $FF, $74, $5E, $33, + $C0, $55, $68, $46, $48, $40, $00, $64, $FF, $30, $64, $89, $20, $56, $6A, $00, + $6A, $00, $6A, $02, $8B, $45, $F8, $50, $E8, $6B, $F8, $FF, $FF, $8B, $D8, $85, + $DB, $75, $07, $E8, $80, $EB, $FF, $FF, $EB, $33, $8B, $D3, $8B, $C7, $8B, $CE, + $E8, $77, $E4, $FF, $FF, $53, $E8, $65, $F8, $FF, $FF, $C6, $45, $FF, $01, $33, + $C0, $5A, $59, $59, $64, $89, $10, $68, $4D, $48, $40, $00, $8B, $45, $F8, $50, + $E8, $DB, $F7, $FF, $FF, $C3, $E9, $E9, $E9, $FF, $FF, $EB, $EF, $0F, $B6, $45, + $FF, $5F, $5E, $5B, $59, $59, $5D, $C3, $55, $8B, $EC, $83, $C4, $F8, $53, $56, + $8B, $F2, $8B, $D8, $C6, $45, $FF, $00, $8B, $C3, $E8, $C5, $F2, $FF, $FF, $50, + $6A, $00, $6A, $02, $E8, $07, $F8, $FF, $FF, $89, $45, $F8, $83, $7D, $F8, $00, + $74, $64, $83, $7D, $F8, $FF, $74, $5E, $33, $C0, $55, $68, $DF, $48, $40, $00, + $64, $FF, $30, $64, $89, $20, $56, $6A, $00, $6A, $00, $6A, $02, $8B, $45, $F8, + $50, $E8, $D2, $F7, $FF, $FF, $8B, $D8, $85, $DB, $75, $07, $E8, $E7, $EA, $FF, + $FF, $EB, $33, $8B, $C3, $33, $C9, $8B, $D6, $E8, $36, $E5, $FF, $FF, $53, $E8, + $CC, $F7, $FF, $FF, $C6, $45, $FF, $01, $33, $C0, $5A, $59, $59, $64, $89, $10, + $68, $E6, $48, $40, $00, $8B, $45, $F8, $50, $E8, $42, $F7, $FF, $FF, $C3, $E9, + $50, $E9, $FF, $FF, $EB, $EF, $0F, $B6, $45, $FF, $5E, $5B, $59, $59, $5D, $C3, + $55, $8B, $EC, $33, $C0, $55, $68, $21, $49, $40, $00, $64, $FF, $30, $64, $89, + $20, $FF, $05, $F4, $A7, $40, $00, $75, $0A, $B8, $E0, $7C, $40, $00, $E8, $CD, + $EF, $FF, $FF, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $28, $49, $40, $00, + $C3, $E9, $0E, $E9, $FF, $FF, $EB, $F8, $5D, $C3, $8B, $C0, $FF, $25, $00, $A8, + $40, $00, $C3, $90, $FF, $25, $04, $A8, $40, $00, $C3, $90, $55, $8B, $EC, $6A, + $00, $53, $33, $C0, $55, $68, $FC, $49, $40, $00, $64, $FF, $30, $64, $89, $20, + $8D, $45, $FC, $BA, $04, $01, $00, $00, $E8, $6F, $F3, $FF, $FF, $68, $04, $01, + $00, $00, $8B, $45, $FC, $E8, $CA, $F1, $FF, $FF, $50, $E8, $F0, $F6, $FF, $FF, + $8B, $D8, $8D, $45, $FC, $8B, $D3, $E8, $50, $F3, $FF, $FF, $8B, $45, $FC, $80, + $7C, $18, $FF, $5C, $74, $0D, $8D, $45, $FC, $BA, $10, $4A, $40, $00, $E8, $69, + $F0, $FF, $FF, $8D, $45, $FC, $BA, $1C, $4A, $40, $00, $E8, $5C, $F0, $FF, $FF, + $8B, $45, $FC, $E8, $8C, $F1, $FF, $FF, $50, $E8, $C2, $F6, $FF, $FF, $A3, $FC, + $A7, $40, $00, $83, $3D, $FC, $A7, $40, $00, $00, $76, $2A, $68, $2C, $4A, $40, + $00, $A1, $FC, $A7, $40, $00, $50, $E8, $8C, $F6, $FF, $FF, $A3, $00, $A8, $40, + $00, $68, $40, $4A, $40, $00, $A1, $FC, $A7, $40, $00, $50, $E8, $77, $F6, $FF, + $FF, $A3, $04, $A8, $40, $00, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $03, + $4A, $40, $00, $8D, $45, $FC, $E8, $E5, $EE, $FF, $FF, $C3, $E9, $33, $E8, $FF, + $FF, $EB, $F0, $5B, $59, $5D, $C3, $00, $FF, $FF, $FF, $FF, $01, $00, $00, $00, + $5C, $00, $00, $00, $FF, $FF, $FF, $FF, $0C, $00, $00, $00, $73, $68, $66, $6F, + $6C, $64, $65, $72, $2E, $64, $6C, $6C, $00, $00, $00, $00, $53, $48, $47, $65, + $74, $46, $6F, $6C, $64, $65, $72, $50, $61, $74, $68, $41, $00, $00, $00, $00, + $53, $48, $47, $65, $74, $46, $6F, $6C, $64, $65, $72, $50, $61, $74, $68, $57, + $00, $00, $00, $00, $A1, $FC, $A7, $40, $00, $50, $E8, $C9, $F5, $FF, $FF, $C3, + $55, $8B, $EC, $33, $C0, $55, $68, $8C, $4A, $40, $00, $64, $FF, $30, $64, $89, + $20, $FF, $05, $F8, $A7, $40, $00, $75, $05, $E8, $D6, $FF, $FF, $FF, $33, $C0, + $5A, $59, $59, $64, $89, $10, $68, $93, $4A, $40, $00, $C3, $E9, $A3, $E7, $FF, + $FF, $EB, $F8, $5D, $C3, $8D, $40, $00, $55, $8B, $EC, $83, $C4, $EC, $53, $56, + $89, $45, $FC, $E8, $90, $F5, $FF, $FF, $8B, $F0, $B8, $0E, $00, $00, $00, $BA, + $F4, $7C, $40, $00, $8D, $4D, $EE, $0F, $B6, $1A, $88, $19, $41, $42, $48, $75, + $F6, $33, $C0, $8B, $C8, $03, $C9, $03, $C9, $8B, $D6, $D3, $EA, $83, $E2, $0F, + $0F, $B6, $92, $E4, $7C, $40, $00, $B9, $0D, $00, $00, $00, $2B, $C8, $88, $54, + $0D, $EE, $40, $83, $F8, $08, $75, $DB, $8B, $45, $FC, $8D, $55, $EE, $B9, $0E, + $00, $00, $00, $E8, $EC, $EE, $FF, $FF, $5E, $5B, $8B, $E5, $5D, $C3, $8B, $C0, + $55, $8B, $EC, $83, $C4, $F8, $53, $56, $33, $D2, $89, $55, $FC, $8B, $D8, $33, + $C0, $55, $68, $75, $4B, $40, $00, $64, $FF, $30, $64, $89, $20, $33, $F6, $85, + $DB, $74, $3C, $8D, $45, $F8, $50, $53, $E8, $AB, $F5, $FF, $FF, $85, $C0, $74, + $2E, $E8, $02, $F5, $FF, $FF, $3B, $45, $F8, $75, $24, $8D, $45, $FC, $E8, $55, + $FF, $FF, $FF, $8B, $45, $FC, $E8, $E9, $EF, $FF, $FF, $50, $E8, $17, $F5, $FF, + $FF, $8B, $F0, $0F, $B7, $C6, $50, $53, $E8, $63, $F5, $FF, $FF, $8B, $F0, $33, + $C0, $5A, $59, $59, $64, $89, $10, $68, $7C, $4B, $40, $00, $8D, $45, $FC, $E8, + $6C, $ED, $FF, $FF, $C3, $E9, $BA, $E6, $FF, $FF, $EB, $F0, $8B, $C6, $5E, $5B, + $59, $59, $5D, $C3, $53, $56, $81, $C4, $F8, $FE, $FF, $FF, $8B, $F2, $8B, $D8, + $68, $05, $01, $00, $00, $8D, $44, $24, $04, $50, $53, $E8, $18, $F5, $FF, $FF, + $8B, $C8, $8B, $D4, $8B, $C6, $E8, $F9, $ED, $FF, $FF, $81, $C4, $08, $01, $00, + $00, $5E, $5B, $C3, $53, $56, $81, $C4, $F8, $FE, $FF, $FF, $8B, $F2, $8B, $D8, + $68, $05, $01, $00, $00, $8D, $44, $24, $04, $50, $53, $E8, $00, $F5, $FF, $FF, + $8B, $C8, $8B, $D4, $8B, $C6, $E8, $C9, $ED, $FF, $FF, $81, $C4, $08, $01, $00, + $00, $5E, $5B, $C3, $55, $8B, $EC, $6A, $00, $53, $56, $8B, $5D, $08, $33, $C0, + $55, $68, $69, $4C, $40, $00, $64, $FF, $30, $64, $89, $20, $83, $CE, $FF, $8D, + $55, $FC, $8B, $C3, $E8, $7B, $FF, $FF, $FF, $BA, $84, $4C, $40, $00, $8B, $45, + $FC, $E8, $22, $FA, $FF, $FF, $84, $C0, $74, $22, $83, $3D, $10, $A8, $40, $00, + $00, $75, $08, $89, $1D, $10, $A8, $40, $00, $EB, $28, $83, $3D, $14, $A8, $40, + $00, $00, $75, $1F, $89, $1D, $14, $A8, $40, $00, $EB, $17, $BA, $94, $4C, $40, + $00, $8B, $45, $FC, $E8, $EF, $F9, $FF, $FF, $84, $C0, $74, $06, $89, $1D, $18, + $A8, $40, $00, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $70, $4C, $40, $00, + $8D, $45, $FC, $E8, $78, $EC, $FF, $FF, $C3, $E9, $C6, $E5, $FF, $FF, $EB, $F0, + $8B, $C6, $5E, $5B, $59, $5D, $C2, $08, $00, $00, $00, $00, $FF, $FF, $FF, $FF, + $05, $00, $00, $00, $54, $45, $64, $69, $74, $00, $00, $00, $FF, $FF, $FF, $FF, + $05, $00, $00, $00, $54, $4D, $65, $6D, $6F, $00, $00, $00, $55, $8B, $EC, $83, + $C4, $E0, $6A, $00, $68, $E4, $4B, $40, $00, $8B, $45, $08, $8B, $40, $08, $50, + $E8, $FB, $F3, $FF, $FF, $83, $3D, $10, $A8, $40, $00, $00, $74, $09, $83, $3D, + $14, $A8, $40, $00, $00, $75, $04, $33, $C0, $EB, $02, $B0, $01, $84, $C0, $74, + $5D, $8D, $45, $F0, $50, $A1, $10, $A8, $40, $00, $50, $E8, $E8, $F3, $FF, $FF, + $8D, $45, $E0, $50, $A1, $14, $A8, $40, $00, $50, $E8, $D9, $F3, $FF, $FF, $8B, + $45, $E4, $3B, $45, $F4, $7D, $16, $A1, $14, $A8, $40, $00, $8B, $15, $10, $A8, + $40, $00, $89, $15, $14, $A8, $40, $00, $A3, $10, $A8, $40, $00, $83, $3D, $10, + $A8, $40, $00, $00, $74, $12, $83, $3D, $14, $A8, $40, $00, $00, $74, $09, $83, + $3D, $18, $A8, $40, $00, $00, $75, $04, $33, $C0, $EB, $02, $B0, $01, $8B, $E5, + $5D, $C3, $8B, $C0, $55, $8B, $EC, $6A, $00, $53, $56, $8B, $F0, $33, $C0, $55, + $68, $9F, $4D, $40, $00, $64, $FF, $30, $64, $89, $20, $8D, $55, $FC, $B8, $B4, + $4D, $40, $00, $E8, $BC, $F9, $FF, $FF, $83, $7D, $FC, $00, $74, $2B, $BA, $00, + $04, $00, $00, $8B, $45, $FC, $E8, $ED, $FA, $FF, $FF, $8B, $DE, $85, $DB, $74, + $05, $83, $EB, $04, $8B, $1B, $8B, $C6, $E8, $B7, $ED, $FF, $FF, $8B, $D0, $8B, + $CB, $8B, $45, $FC, $E8, $33, $FA, $FF, $FF, $33, $C0, $5A, $59, $59, $64, $89, + $10, $68, $A6, $4D, $40, $00, $8D, $45, $FC, $E8, $42, $EB, $FF, $FF, $C3, $E9, + $90, $E4, $FF, $FF, $EB, $F0, $5E, $5B, $59, $5D, $C3, $00, $FF, $FF, $FF, $FF, + $07, $00, $00, $00, $4D, $65, $6D, $46, $69, $6C, $65, $00, $55, $8B, $EC, $53, + $8B, $D8, $53, $8B, $45, $08, $8B, $40, $08, $50, $FF, $15, $0C, $A8, $40, $00, + $8B, $55, $08, $89, $42, $FC, $5B, $5D, $C3, $8D, $40, $00, $55, $8B, $EC, $33, + $C9, $51, $51, $51, $51, $51, $53, $56, $57, $33, $C0, $55, $68, $83, $4F, $40, + $00, $64, $FF, $30, $64, $89, $20, $8D, $55, $F8, $8B, $45, $08, $E8, $82, $FD, + $FF, $FF, $BA, $A0, $4F, $40, $00, $8B, $45, $F8, $E8, $29, $F8, $FF, $FF, $84, + $C0, $75, $22, $BA, $BC, $4F, $40, $00, $8B, $45, $F8, $E8, $18, $F8, $FF, $FF, + $84, $C0, $75, $11, $BA, $D8, $4F, $40, $00, $8B, $45, $F8, $E8, $07, $F8, $FF, + $FF, $84, $C0, $74, $1E, $55, $33, $C0, $E8, $7F, $FF, $FF, $FF, $59, $68, $BB, + $07, $00, $00, $E8, $E8, $F1, $FF, $FF, $50, $E8, $3A, $F2, $FF, $FF, $E9, $15, + $01, $00, $00, $BA, $F4, $4F, $40, $00, $8B, $45, $F8, $E8, $D8, $F7, $FF, $FF, + $84, $C0, $74, $49, $8D, $55, $F8, $8B, $45, $08, $E8, $45, $FD, $FF, $FF, $8B, + $45, $F8, $BA, $04, $50, $40, $00, $E8, $60, $EC, $FF, $FF, $75, $20, $55, $33, + $C0, $E8, $36, $FF, $FF, $FF, $59, $6A, $00, $6A, $06, $68, $11, $01, $00, $00, + $8B, $45, $08, $50, $E8, $47, $F2, $FF, $FF, $E9, $CA, $00, $00, $00, $55, $8B, + $45, $0C, $E8, $15, $FF, $FF, $FF, $59, $E9, $BB, $00, $00, $00, $BA, $20, $50, + $40, $00, $8B, $45, $F8, $E8, $7E, $F7, $FF, $FF, $84, $C0, $0F, $84, $9C, $00, + $00, $00, $55, $33, $C0, $E8, $F2, $FE, $FF, $FF, $59, $8B, $45, $08, $E8, $2D, + $FC, $FF, $FF, $8B, $D8, $8B, $C3, $E8, $C4, $E0, $FF, $FF, $8B, $F0, $BA, $2C, + $50, $40, $00, $8B, $C6, $E8, $DE, $E0, $FF, $FF, $89, $C7, $33, $D2, $8B, $C3, + $FF, $D7, $55, $E8, $A4, $FD, $FF, $FF, $59, $84, $C0, $74, $6B, $8D, $55, $F4, + $A1, $10, $A8, $40, $00, $E8, $AA, $FC, $FF, $FF, $8D, $55, $F0, $A1, $14, $A8, + $40, $00, $E8, $9D, $FC, $FF, $FF, $8D, $55, $EC, $A1, $18, $A8, $40, $00, $E8, + $90, $FC, $FF, $FF, $FF, $75, $F4, $68, $44, $50, $40, $00, $FF, $75, $F0, $68, + $44, $50, $40, $00, $FF, $75, $EC, $8D, $45, $F8, $BA, $05, $00, $00, $00, $E8, + $04, $EB, $FF, $FF, $8B, $45, $F8, $E8, $E8, $FD, $FF, $FF, $68, $BB, $07, $00, + $00, $E8, $DA, $F0, $FF, $FF, $50, $E8, $2C, $F1, $FF, $FF, $EB, $0A, $55, $8B, + $45, $0C, $E8, $55, $FE, $FF, $FF, $59, $33, $C0, $5A, $59, $59, $64, $89, $10, + $68, $8A, $4F, $40, $00, $8D, $45, $EC, $BA, $04, $00, $00, $00, $E8, $82, $E9, + $FF, $FF, $C3, $E9, $AC, $E2, $FF, $FF, $EB, $EB, $8B, $45, $FC, $5F, $5E, $5B, + $8B, $E5, $5D, $C2, $08, $00, $00, $00, $FF, $FF, $FF, $FF, $10, $00, $00, $00, + $54, $54, $72, $69, $61, $6C, $57, $69, $7A, $61, $72, $64, $46, $6F, $72, $6D, + $00, $00, $00, $00, $FF, $FF, $FF, $FF, $12, $00, $00, $00, $54, $41, $64, $76, + $61, $6E, $63, $65, $64, $4C, $69, $63, $65, $6E, $73, $65, $55, $49, $00, $00, + $FF, $FF, $FF, $FF, $10, $00, $00, $00, $54, $53, $69, $6D, $70, $6C, $65, $4C, + $69, $63, $65, $6E, $73, $65, $55, $49, $00, $00, $00, $00, $FF, $FF, $FF, $FF, + $06, $00, $00, $00, $23, $33, $32, $37, $37, $30, $00, $00, $FF, $FF, $FF, $FF, + $11, $00, $00, $00, $52, $61, $64, $20, $53, $74, $75, $64, $69, $6F, $20, $4B, + $65, $79, $67, $65, $6E, $00, $00, $00, $FF, $FF, $FF, $FF, $08, $00, $00, $00, + $54, $46, $72, $6D, $4D, $61, $69, $6E, $00, $00, $00, $00, $0C, $42, $75, $74, + $74, $6F, $6E, $31, $43, $6C, $69, $63, $6B, $00, $00, $00, $FF, $FF, $FF, $FF, + $01, $00, $00, $00, $2C, $00, $00, $00, $55, $8B, $EC, $6A, $00, $6A, $00, $33, + $C0, $55, $68, $EF, $50, $40, $00, $64, $FF, $30, $64, $89, $20, $8D, $55, $F8, + $33, $C0, $E8, $19, $F7, $FF, $FF, $8B, $45, $F8, $8D, $55, $FC, $E8, $6A, $F6, + $FF, $FF, $BA, $04, $51, $40, $00, $8B, $45, $FC, $E8, $B9, $F5, $FF, $FF, $84, + $C0, $75, $11, $BA, $20, $51, $40, $00, $8B, $45, $FC, $E8, $A8, $F5, $FF, $FF, + $84, $C0, $74, $40, $8D, $55, $FC, $B8, $3C, $51, $40, $00, $E8, $73, $F6, $FF, + $FF, $8B, $45, $FC, $BA, $50, $51, $40, $00, $E8, $2E, $EA, $FF, $FF, $75, $24, + $68, $58, $51, $40, $00, $E8, $96, $EF, $FF, $FF, $68, $64, $51, $40, $00, $50, + $E8, $93, $EF, $FF, $FF, $B9, $0C, $A8, $40, $00, $BA, $DC, $4D, $40, $00, $E8, + $70, $F3, $FF, $FF, $33, $C0, $5A, $59, $59, $64, $89, $10, $68, $F6, $50, $40, + $00, $8D, $45, $F8, $BA, $02, $00, $00, $00, $E8, $16, $E8, $FF, $FF, $C3, $E9, + $40, $E1, $FF, $FF, $EB, $EB, $59, $59, $5D, $C3, $00, $00, $FF, $FF, $FF, $FF, + $12, $00, $00, $00, $4C, $69, $63, $65, $6E, $73, $65, $4D, $61, $6E, $61, $67, + $65, $72, $2E, $65, $78, $65, $00, $00, $FF, $FF, $FF, $FF, $13, $00, $00, $00, + $52, $61, $64, $53, $74, $75, $64, $69, $6F, $4B, $65, $79, $67, $65, $6E, $2E, + $65, $78, $65, $00, $FF, $FF, $FF, $FF, $0B, $00, $00, $00, $53, $45, $53, $53, + $49, $4F, $4E, $4E, $41, $4D, $45, $00, $FF, $FF, $FF, $FF, $07, $00, $00, $00, + $43, $6F, $6E, $73, $6F, $31, $65, $00, $75, $73, $65, $72, $33, $32, $2E, $64, + $6C, $6C, $00, $00, $53, $68, $6F, $77, $57, $69, $6E, $64, $6F, $77, $00, $00, + $A1, $0C, $A8, $40, $00, $85, $C0, $74, $05, $E8, $86, $F3, $FF, $FF, $C3, $90, + $55, $8B, $EC, $33, $C0, $55, $68, $AC, $51, $40, $00, $64, $FF, $30, $64, $89, + $20, $FF, $05, $08, $A8, $40, $00, $75, $05, $E8, $D2, $FF, $FF, $FF, $33, $C0, + $5A, $59, $59, $64, $89, $10, $68, $B3, $51, $40, $00, $C3, $E9, $83, $E0, $FF, + $FF, $EB, $F8, $5D, $C3, $8D, $40, $00, $55, $8B, $EC, $33, $C0, $55, $68, $D7, + $51, $40, $00, $64, $FF, $30, $64, $89, $20, $33, $C0, $5A, $59, $59, $64, $89, + $10, $68, $DE, $51, $40, $00, $C3, $E9, $58, $E0, $FF, $FF, $EB, $F8, $5D, $C3, + $0C, $00, $00, $00, $E8, $51, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $60, $40, $00, $1C, $3E, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $98, $60, $40, $00, $F0, $40, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $AC, $60, $40, $00, $F0, $48, $40, $00, + $B4, $60, $40, $00, $60, $4A, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $C4, $60, $40, $00, $80, $51, $40, $00, + $00, $00, $00, $00, $B8, $51, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $83, $2D, $A0, $85, $40, $00, $01, $0F, $83, $87, $00, $00, $00, $E8, $86, $C9, + $FF, $FF, $C6, $05, $08, $70, $40, $00, $02, $C7, $05, $10, $80, $40, $00, $08, + $10, $40, $00, $C7, $05, $14, $80, $40, $00, $10, $10, $40, $00, $C6, $05, $36, + $80, $40, $00, $02, $C7, $05, $00, $80, $40, $00, $30, $3D, $40, $00, $E8, $55, + $CE, $FF, $FF, $84, $C0, $74, $05, $E8, $7C, $CE, $FF, $FF, $E8, $3B, $CF, $FF, + $FF, $66, $C7, $05, $3C, $80, $40, $00, $B0, $D7, $66, $C7, $05, $08, $82, $40, + $00, $B0, $D7, $66, $C7, $05, $D4, $83, $40, $00, $B0, $D7, $E8, $CF, $AF, $FF, + $FF, $A3, $2C, $80, $40, $00, $E8, $FD, $AF, $FF, $FF, $A3, $28, $80, $40, $00, + $E8, $8F, $DD, $FF, $FF, $A3, $A4, $85, $40, $00, $E8, $E1, $AF, $FF, $FF, $A3, + $20, $80, $40, $00, $C3, $8D, $40, $00, $83, $2D, $EC, $A7, $40, $00, $01, $73, + $07, $33, $C0, $A3, $F0, $A7, $40, $00, $C3, $8D, $40, $00, $83, $2D, $F4, $A7, + $40, $00, $01, $C3, $83, $2D, $F8, $A7, $40, $00, $01, $73, $05, $E8, $7A, $E8, + $FF, $FF, $C3, $90, $83, $2D, $08, $A8, $40, $00, $01, $73, $05, $E8, $76, $EF, + $FF, $FF, $C3, $90, $55, $8B, $EC, $83, $C4, $C4, $B8, $E0, $51, $40, $00, $E8, + $F4, $DE, $FF, $FF, $E8, $03, $D7, $FF, $FF, $8D, $40, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $02, $8D, $40, $00, $32, $13, $8B, $C0, + $00, $8D, $40, $00, $00, $8D, $40, $00, $00, $8D, $40, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $C4, $10, $40, $00, $00, $00, $10, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $24, $11, $40, $00, $00, $00, $18, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $38, $11, $40, $00, $00, $00, $20, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $58, $11, $40, $00, $00, $00, $28, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $84, $11, $40, $00, $00, $00, $30, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $A4, $11, $40, $00, $00, $00, $38, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $C8, $11, $40, $00, $00, $00, $40, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $F4, $11, $40, $00, $00, $00, $48, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $24, $12, $40, $00, $00, $00, $50, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $58, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $68, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $70, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $78, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $88, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $90, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $98, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $A0, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $B0, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $C0, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $D0, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $E0, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $F0, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $A0, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $C0, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $E0, $01, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $02, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $02, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $70, $02, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $A0, $02, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $E0, $02, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $03, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $70, $03, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $C0, $03, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $04, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $04, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $F0, $04, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $60, $05, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $E0, $05, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $70, $06, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $07, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $C0, $07, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, $08, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $50, $09, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $0A, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $0A, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $30, $0A, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $C8, $16, $40, $00, $4C, $1A, $40, $00, + $44, $1C, $40, $00, $5C, $1F, $40, $00, $F8, $22, $40, $00, $38, $23, $40, $00, + $00, $CB, $CC, $C8, $C9, $D7, $CF, $C8, $CD, $CE, $DB, $D8, $DA, $D9, $CA, $DC, + $DD, $DE, $DF, $E0, $E1, $E3, $00, $E4, $E5, $8D, $40, $00, $45, $72, $72, $6F, + $72, $00, $8B, $C0, $52, $75, $6E, $74, $69, $6D, $65, $20, $65, $72, $72, $6F, + $72, $20, $20, $20, $20, $20, $61, $74, $20, $30, $30, $30, $30, $30, $30, $30, + $30, $00, $8B, $C0, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $41, $42, + $43, $44, $45, $46, $FF, $FF, $FF, $FF, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $68, $3F, $40, $00, $04, $3F, $40, $00, $C0, $3E, $40, $00, $30, $3F, $40, $00, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $00, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $00, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $00, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $00, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $80, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $80, + $11, $42, $E4, $42, $11, $20, $E4, $20, $01, $84, $42, $8C, $00, $00, $00, $80, + $11, $02, $E4, $02, $11, $00, $E4, $00, $01, $04, $42, $0C, $00, $00, $00, $80, + $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, + $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, + $45, $00, $45, $00, $45, $00, $45, $00, $45, $00, $45, $00, $45, $00, $45, $00, + $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, $45, $60, + $00, $00, $00, $80, $E4, $00, $1A, $42, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $0C, $E4, $2C, $00, $04, $E4, $24, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, + $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, $00, $14, + $10, $05, $A0, $0D, $10, $05, $A0, $05, $11, $02, $E4, $02, $11, $A2, $E4, $A2, + $11, $42, $E4, $42, $11, $20, $E4, $20, $E3, $42, $E4, $20, $E3, $00, $A0, $01, + $00, $00, $46, $E0, $46, $E0, $46, $E0, $46, $E0, $46, $E0, $46, $E0, $46, $E0, + $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $80, + $01, $81, $42, $81, $01, $03, $42, $03, $00, $00, $00, $00, $00, $00, $00, $00, + $01, $04, $42, $0C, $00, $00, $00, $00, $00, $80, $00, $80, $00, $00, $00, $00, + $04, $64, $04, $64, $04, $64, $04, $64, $04, $64, $04, $64, $04, $64, $04, $64, + $45, $6C, $45, $6C, $45, $6C, $45, $6C, $45, $6C, $45, $6C, $45, $6C, $45, $6C, + $10, $45, $A0, $45, $00, $08, $00, $00, $E4, $20, $E4, $20, $10, $45, $A0, $4D, + $00, $00, $00, $00, $00, $08, $00, $00, $00, $00, $00, $04, $00, $00, $00, $00, + $10, $41, $A0, $41, $10, $41, $A0, $41, $00, $84, $00, $84, $00, $00, $00, $80, + $08, $00, $08, $00, $08, $00, $08, $00, $08, $00, $08, $00, $08, $00, $08, $00, + $00, $14, $00, $14, $00, $14, $00, $14, $01, $84, $42, $84, $01, $06, $42, $06, + $00, $1C, $00, $1C, $00, $00, $00, $14, $07, $80, $47, $80, $07, $02, $47, $02, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $08, $00, $08, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $10, $41, $A0, $01, + $18, $01, $20, $01, $E4, $20, $E4, $20, $FF, $FF, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $FF, $FF, $FF, $FF, $FF, $FF, $10, $01, $00, $00, $2D, $05, + $3F, $00, $3F, $02, $3F, $00, $3F, $02, $3F, $00, $3F, $00, $3F, $00, $3F, $02, + $10, $01, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, + $23, $40, $23, $40, $23, $02, $23, $02, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, + $3F, $00, $3F, $02, $2F, $00, $3F, $02, $3D, $00, $3D, $00, $3F, $00, $3F, $00, + $00, $00, $00, $80, $00, $80, $00, $80, $00, $00, $00, $00, $FF, $FF, $FF, $FF, + $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, + $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, + $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, $E4, $20, + $27, $42, $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, + $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, $3F, $00, + $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, + $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $65, $00, $ED, $00, + $ED, $04, $A8, $04, $A8, $04, $A8, $04, $ED, $00, $ED, $00, $ED, $00, $00, $00, + $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $65, $02, $ED, $02, + $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, + $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, $00, $1C, + $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, + $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, $10, $41, + $00, $00, $00, $00, $00, $80, $E4, $02, $E4, $47, $E4, $43, $11, $C2, $E4, $C2, + $00, $00, $00, $00, $00, $00, $E4, $42, $E4, $47, $E4, $43, $20, $00, $E4, $20, + $11, $C2, $E4, $C2, $E4, $20, $E4, $42, $E4, $20, $E4, $22, $54, $21, $1C, $21, + $FF, $FF, $FF, $FF, $A0, $05, $E4, $42, $E4, $20, $E4, $20, $54, $21, $1C, $21, + $11, $A2, $E4, $A2, $3F, $04, $24, $02, $65, $04, $AC, $24, $3F, $04, $28, $81, + $05, $60, $05, $60, $05, $60, $05, $60, $05, $60, $05, $60, $05, $60, $05, $60, + $FF, $FF, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $02, $AC, $20, + $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, + $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $3F, $00, $ED, $02, + $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, + $FF, $FF, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, + $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $ED, $00, $00, $00, + $10, $05, $FF, $FF, $10, $41, $10, $41, $10, $81, $10, $81, $10, $81, $10, $81, + $10, $05, $FF, $FF, $10, $41, $10, $41, $10, $81, $10, $81, $10, $81, $10, $81, + $A0, $0D, $FF, $FF, $A0, $41, $A0, $41, $A0, $81, $A0, $81, $A0, $81, $A0, $81, + $A0, $0D, $FF, $FF, $A0, $41, $A0, $41, $A0, $81, $A0, $81, $A0, $81, $A0, $81, + $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, + $36, $00, $36, $00, $30, $00, $30, $00, $36, $00, $36, $00, $36, $00, $36, $00, + $20, $01, $FF, $FF, $20, $01, $20, $01, $10, $01, $18, $01, $10, $01, $18, $01, + $30, $00, $30, $00, $00, $00, $30, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, $20, $01, + $36, $00, $36, $00, $36, $00, $36, $00, $FF, $FF, $00, $00, $FF, $FF, $FF, $FF, + $20, $01, $FF, $FF, $20, $01, $20, $01, $FF, $FF, $30, $01, $FF, $FF, $30, $01, + $36, $00, $36, $00, $36, $00, $36, $00, $00, $00, $36, $00, $36, $00, $00, $00, + $28, $01, $28, $01, $28, $01, $28, $01, $28, $01, $28, $01, $28, $01, $28, $01, + $36, $02, $36, $02, $30, $00, $30, $00, $36, $02, $36, $02, $36, $02, $36, $02, + $28, $01, $FF, $FF, $28, $01, $28, $01, $10, $01, $FF, $FF, $10, $01, $18, $01, + $30, $00, $30, $00, $30, $00, $30, $00, $30, $00, $30, $00, $FF, $FF, $FF, $FF, + $18, $01, $18, $01, $18, $01, $18, $01, $18, $01, $18, $01, $18, $01, $18, $01, + $36, $02, $36, $02, $30, $00, $36, $02, $36, $02, $36, $02, $36, $02, $36, $02, + $18, $01, $FF, $FF, $18, $01, $18, $01, $30, $01, $28, $01, $30, $01, $28, $01, + $30, $00, $30, $00, $30, $00, $30, $00, $00, $00, $36, $00, $36, $00, $FF, $FF, + $B8, $47, $40, $00, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $41, $42, + $43, $44, $45, $46, $44, $65, $6C, $70, $68, $69, $30, $30, $30, $30, $30, $30, + $30, $30, $8B, $C0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $8C, $B0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $5C, $B2, $00, $00, + $74, $B1, $00, $00, $9C, $B0, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $9C, $B2, $00, $00, $84, $B1, $00, $00, $AC, $B0, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $D8, $B2, $00, $00, $94, $B1, $00, $00, $EC, $B0, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $D2, $B3, $00, $00, $D4, $B1, $00, $00, + $08, $B1, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $2C, $B4, $00, $00, + $F0, $B1, $00, $00, $28, $B1, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $B6, $B4, $00, $00, $10, $B2, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $6A, $B2, $00, $00, + $7E, $B2, $00, $00, $8E, $B2, $00, $00, $00, $00, $00, $00, $A8, $B2, $00, $00, + $BA, $B2, $00, $00, $CA, $B2, $00, $00, $00, $00, $00, $00, $E6, $B2, $00, $00, + $F0, $B2, $00, $00, $F8, $B2, $00, $00, $06, $B3, $00, $00, $16, $B3, $00, $00, + $2C, $B3, $00, $00, $3C, $B3, $00, $00, $4E, $B3, $00, $00, $60, $B3, $00, $00, + $6E, $B3, $00, $00, $7C, $B3, $00, $00, $88, $B3, $00, $00, $A4, $B3, $00, $00, + $B0, $B3, $00, $00, $C2, $B3, $00, $00, $00, $00, $00, $00, $E0, $B3, $00, $00, + $EE, $B3, $00, $00, $FC, $B3, $00, $00, $06, $B4, $00, $00, $12, $B4, $00, $00, + $1E, $B4, $00, $00, $00, $00, $00, $00, $38, $B4, $00, $00, $48, $B4, $00, $00, + $64, $B4, $00, $00, $76, $B4, $00, $00, $86, $B4, $00, $00, $92, $B4, $00, $00, + $A2, $B4, $00, $00, $00, $00, $00, $00, $C4, $B4, $00, $00, $D6, $B4, $00, $00, + $E4, $B4, $00, $00, $F4, $B4, $00, $00, $06, $B5, $00, $00, $1A, $B5, $00, $00, + $2E, $B5, $00, $00, $3E, $B5, $00, $00, $4E, $B5, $00, $00, $60, $B5, $00, $00, + $76, $B5, $00, $00, $88, $B5, $00, $00, $9C, $B5, $00, $00, $B2, $B5, $00, $00, + $CC, $B5, $00, $00, $E2, $B5, $00, $00, $F6, $B5, $00, $00, $04, $B6, $00, $00, + $00, $00, $00, $00, $6A, $B2, $00, $00, $7E, $B2, $00, $00, $8E, $B2, $00, $00, + $00, $00, $00, $00, $A8, $B2, $00, $00, $BA, $B2, $00, $00, $CA, $B2, $00, $00, + $00, $00, $00, $00, $E6, $B2, $00, $00, $F0, $B2, $00, $00, $F8, $B2, $00, $00, + $06, $B3, $00, $00, $16, $B3, $00, $00, $2C, $B3, $00, $00, $3C, $B3, $00, $00, + $4E, $B3, $00, $00, $60, $B3, $00, $00, $6E, $B3, $00, $00, $7C, $B3, $00, $00, + $88, $B3, $00, $00, $A4, $B3, $00, $00, $B0, $B3, $00, $00, $C2, $B3, $00, $00, + $00, $00, $00, $00, $E0, $B3, $00, $00, $EE, $B3, $00, $00, $FC, $B3, $00, $00, + $06, $B4, $00, $00, $12, $B4, $00, $00, $1E, $B4, $00, $00, $00, $00, $00, $00, + $38, $B4, $00, $00, $48, $B4, $00, $00, $64, $B4, $00, $00, $76, $B4, $00, $00, + $86, $B4, $00, $00, $92, $B4, $00, $00, $A2, $B4, $00, $00, $00, $00, $00, $00, + $C4, $B4, $00, $00, $D6, $B4, $00, $00, $E4, $B4, $00, $00, $F4, $B4, $00, $00, + $06, $B5, $00, $00, $1A, $B5, $00, $00, $2E, $B5, $00, $00, $3E, $B5, $00, $00, + $4E, $B5, $00, $00, $60, $B5, $00, $00, $76, $B5, $00, $00, $88, $B5, $00, $00, + $9C, $B5, $00, $00, $B2, $B5, $00, $00, $CC, $B5, $00, $00, $E2, $B5, $00, $00, + $F6, $B5, $00, $00, $04, $B6, $00, $00, $00, $00, $00, $00, $61, $64, $76, $61, + $70, $69, $33, $32, $2E, $64, $6C, $6C, $00, $00, $00, $00, $52, $65, $67, $51, + $75, $65, $72, $79, $56, $61, $6C, $75, $65, $45, $78, $41, $00, $00, $00, $00, + $52, $65, $67, $4F, $70, $65, $6E, $4B, $65, $79, $45, $78, $41, $00, $00, $00, + $52, $65, $67, $43, $6C, $6F, $73, $65, $4B, $65, $79, $00, $75, $73, $65, $72, + $33, $32, $2E, $64, $6C, $6C, $00, $00, $00, $00, $47, $65, $74, $4B, $65, $79, + $62, $6F, $61, $72, $64, $54, $79, $70, $65, $00, $00, $00, $44, $65, $73, $74, + $72, $6F, $79, $57, $69, $6E, $64, $6F, $77, $00, $00, $00, $4D, $65, $73, $73, + $61, $67, $65, $42, $6F, $78, $41, $00, $6B, $65, $72, $6E, $65, $6C, $33, $32, + $2E, $64, $6C, $6C, $00, $00, $00, $00, $47, $65, $74, $41, $43, $50, $00, $00, + $00, $00, $53, $6C, $65, $65, $70, $00, $00, $00, $56, $69, $72, $74, $75, $61, + $6C, $46, $72, $65, $65, $00, $00, $00, $56, $69, $72, $74, $75, $61, $6C, $41, + $6C, $6C, $6F, $63, $00, $00, $00, $00, $47, $65, $74, $43, $75, $72, $72, $65, + $6E, $74, $54, $68, $72, $65, $61, $64, $49, $64, $00, $00, $00, $00, $56, $69, + $72, $74, $75, $61, $6C, $51, $75, $65, $72, $79, $00, $00, $00, $00, $47, $65, + $74, $53, $74, $61, $72, $74, $75, $70, $49, $6E, $66, $6F, $41, $00, $00, $00, + $47, $65, $74, $43, $6F, $6D, $6D, $61, $6E, $64, $4C, $69, $6E, $65, $41, $00, + $00, $00, $46, $72, $65, $65, $4C, $69, $62, $72, $61, $72, $79, $00, $00, $00, + $45, $78, $69, $74, $50, $72, $6F, $63, $65, $73, $73, $00, $00, $00, $57, $72, + $69, $74, $65, $46, $69, $6C, $65, $00, $00, $00, $55, $6E, $68, $61, $6E, $64, + $6C, $65, $64, $45, $78, $63, $65, $70, $74, $69, $6F, $6E, $46, $69, $6C, $74, + $65, $72, $00, $00, $00, $00, $52, $74, $6C, $55, $6E, $77, $69, $6E, $64, $00, + $00, $00, $52, $61, $69, $73, $65, $45, $78, $63, $65, $70, $74, $69, $6F, $6E, + $00, $00, $00, $00, $47, $65, $74, $53, $74, $64, $48, $61, $6E, $64, $6C, $65, + $00, $00, $6B, $65, $72, $6E, $65, $6C, $33, $32, $2E, $64, $6C, $6C, $00, $00, + $00, $00, $54, $6C, $73, $53, $65, $74, $56, $61, $6C, $75, $65, $00, $00, $00, + $54, $6C, $73, $47, $65, $74, $56, $61, $6C, $75, $65, $00, $00, $00, $54, $6C, + $73, $46, $72, $65, $65, $00, $00, $00, $54, $6C, $73, $41, $6C, $6C, $6F, $63, + $00, $00, $00, $00, $4C, $6F, $63, $61, $6C, $46, $72, $65, $65, $00, $00, $00, + $4C, $6F, $63, $61, $6C, $41, $6C, $6C, $6F, $63, $00, $00, $75, $73, $65, $72, + $33, $32, $2E, $64, $6C, $6C, $00, $00, $00, $00, $53, $65, $6E, $64, $4D, $65, + $73, $73, $61, $67, $65, $41, $00, $00, $00, $00, $47, $65, $74, $57, $69, $6E, + $64, $6F, $77, $54, $68, $72, $65, $61, $64, $50, $72, $6F, $63, $65, $73, $73, + $49, $64, $00, $00, $00, $00, $47, $65, $74, $57, $69, $6E, $64, $6F, $77, $54, + $65, $78, $74, $41, $00, $00, $00, $00, $47, $65, $74, $57, $69, $6E, $64, $6F, + $77, $52, $65, $63, $74, $00, $00, $00, $47, $65, $74, $50, $72, $6F, $70, $41, + $00, $00, $00, $00, $47, $65, $74, $43, $6C, $61, $73, $73, $4E, $61, $6D, $65, + $41, $00, $00, $00, $45, $6E, $75, $6D, $43, $68, $69, $6C, $64, $57, $69, $6E, + $64, $6F, $77, $73, $00, $00, $6B, $65, $72, $6E, $65, $6C, $33, $32, $2E, $64, + $6C, $6C, $00, $00, $00, $00, $56, $69, $72, $74, $75, $61, $6C, $50, $72, $6F, + $74, $65, $63, $74, $00, $00, $00, $00, $56, $69, $72, $74, $75, $61, $6C, $46, + $72, $65, $65, $00, $00, $00, $56, $69, $72, $74, $75, $61, $6C, $41, $6C, $6C, + $6F, $63, $00, $00, $00, $00, $55, $6E, $6D, $61, $70, $56, $69, $65, $77, $4F, + $66, $46, $69, $6C, $65, $00, $00, $00, $54, $65, $72, $6D, $69, $6E, $61, $74, + $65, $50, $72, $6F, $63, $65, $73, $73, $00, $00, $00, $00, $4F, $70, $65, $6E, + $46, $69, $6C, $65, $4D, $61, $70, $70, $69, $6E, $67, $41, $00, $00, $00, $00, + $4D, $61, $70, $56, $69, $65, $77, $4F, $66, $46, $69, $6C, $65, $00, $00, $00, + $4C, $6F, $61, $64, $4C, $69, $62, $72, $61, $72, $79, $41, $00, $00, $00, $00, + $47, $6C, $6F, $62, $61, $6C, $46, $69, $6E, $64, $41, $74, $6F, $6D, $41, $00, + $00, $00, $47, $65, $74, $53, $79, $73, $74, $65, $6D, $44, $69, $72, $65, $63, + $74, $6F, $72, $79, $41, $00, $00, $00, $47, $65, $74, $50, $72, $6F, $63, $41, + $64, $64, $72, $65, $73, $73, $00, $00, $00, $00, $47, $65, $74, $4D, $6F, $64, + $75, $6C, $65, $48, $61, $6E, $64, $6C, $65, $41, $00, $00, $00, $00, $47, $65, + $74, $4D, $6F, $64, $75, $6C, $65, $46, $69, $6C, $65, $4E, $61, $6D, $65, $41, + $00, $00, $00, $00, $47, $65, $74, $45, $6E, $76, $69, $72, $6F, $6E, $6D, $65, + $6E, $74, $56, $61, $72, $69, $61, $62, $6C, $65, $41, $00, $00, $00, $47, $65, + $74, $43, $75, $72, $72, $65, $6E, $74, $50, $72, $6F, $63, $65, $73, $73, $49, + $64, $00, $00, $00, $47, $65, $74, $43, $75, $72, $72, $65, $6E, $74, $50, $72, + $6F, $63, $65, $73, $73, $00, $00, $00, $46, $72, $65, $65, $4C, $69, $62, $72, + $61, $72, $79, $00, $00, $00, $43, $6C, $6F, $73, $65, $48, $61, $6E, $64, $6C, + $65, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $3C, $C0, $00, $00, + $01, $00, $00, $00, $02, $00, $00, $00, $02, $00, $00, $00, $28, $C0, $00, $00, + $30, $C0, $00, $00, $38, $C0, $00, $00, $34, $49, $00, $00, $2C, $49, $00, $00, + $49, $C0, $00, $00, $5A, $C0, $00, $00, $01, $00, $00, $00, $53, $48, $46, $6F, + $6C, $64, $65, $72, $2E, $64, $6C, $6C, $00, $53, $48, $47, $65, $74, $46, $6F, + $6C, $64, $65, $72, $50, $61, $74, $68, $41, $00, $53, $48, $47, $65, $74, $46, + $6F, $6C, $64, $65, $72, $50, $61, $74, $68, $57, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $10, $00, $00, $E0, $00, $00, $00, $02, $30, $0A, $30, $12, $30, $1A, $30, + $22, $30, $2A, $30, $32, $30, $3A, $30, $42, $30, $4A, $30, $52, $30, $5A, $30, + $62, $30, $6A, $30, $72, $30, $9E, $30, $A6, $30, $AE, $30, $B6, $30, $BA, $32, + $D0, $32, $E1, $32, $04, $33, $1E, $33, $34, $33, $43, $33, $4A, $33, $55, $33, + $65, $33, $9A, $33, $A8, $33, $D5, $33, $DD, $33, $E2, $33, $07, $34, $10, $34, + $23, $34, $2E, $34, $39, $34, $48, $34, $61, $34, $B0, $34, $B6, $34, $BC, $34, + $C7, $34, $6C, $35, $D6, $36, $E5, $36, $EC, $36, $76, $37, $A0, $37, $B0, $37, + $BA, $37, $D1, $37, $E6, $37, $F9, $37, $06, $38, $23, $38, $2C, $38, $62, $38, + $6C, $38, $84, $38, $8A, $38, $A2, $38, $BA, $38, $F5, $38, $FF, $38, $16, $39, + $5E, $39, $7B, $39, $87, $39, $9A, $39, $A3, $39, $AA, $39, $B0, $39, $C5, $39, + $D1, $39, $EE, $39, $F7, $39, $35, $3A, $57, $3A, $BF, $3A, $D7, $3A, $11, $3B, + $1B, $3B, $32, $3B, $91, $3B, $CE, $3B, $E7, $3B, $18, $3C, $22, $3C, $28, $3C, + $3F, $3D, $4F, $3D, $59, $3D, $72, $3D, $D8, $3D, $27, $3E, $37, $3E, $41, $3E, + $5C, $3E, $EF, $3E, $FF, $3E, $B2, $3F, $BB, $3F, $CD, $3F, $D9, $3F, $E4, $3F, + $00, $20, $00, $00, $B0, $00, $00, $00, $86, $32, $91, $32, $A0, $32, $B9, $32, + $CC, $32, $E7, $32, $ED, $32, $05, $33, $12, $33, $1A, $33, $23, $33, $31, $33, + $3E, $33, $83, $33, $A3, $33, $30, $35, $BD, $35, $C9, $35, $08, $36, $3D, $36, + $5D, $36, $B4, $36, $0A, $37, $39, $37, $4E, $37, $F6, $37, $57, $38, $6D, $38, + $5B, $39, $61, $39, $7F, $39, $A1, $39, $AC, $39, $7C, $3A, $80, $3A, $86, $3A, + $8A, $3A, $94, $3A, $A7, $3A, $AB, $3A, $B1, $3A, $B5, $3A, $C5, $3A, $CA, $3A, + $EF, $3A, $1A, $3B, $52, $3B, $5A, $3B, $67, $3B, $6D, $3B, $7B, $3B, $8A, $3B, + $97, $3B, $AA, $3B, $C6, $3B, $E7, $3B, $00, $3C, $19, $3C, $2A, $3C, $3F, $3C, + $4C, $3C, $6C, $3C, $AD, $3C, $D4, $3C, $D8, $3C, $DC, $3C, $E0, $3C, $E4, $3C, + $E8, $3C, $EC, $3C, $F0, $3C, $F4, $3C, $DD, $3D, $48, $3E, $92, $3E, $D1, $3E, + $E1, $3E, $F7, $3E, $15, $3F, $2B, $3F, $43, $3F, $58, $3F, $91, $3F, $00, $00, + $00, $30, $00, $00, $04, $01, $00, $00, $1A, $30, $2E, $30, $36, $30, $4C, $30, + $64, $30, $72, $30, $A6, $30, $C2, $30, $CE, $30, $E2, $30, $EC, $30, $FF, $30, + $2F, $31, $5C, $31, $65, $31, $97, $31, $A0, $31, $D5, $31, $DC, $31, $FE, $31, + $4D, $32, $82, $32, $F3, $32, $1B, $33, $63, $34, $8B, $34, $92, $34, $AA, $34, + $CC, $34, $00, $35, $08, $35, $13, $35, $3F, $35, $49, $35, $54, $35, $65, $35, + $A4, $35, $BA, $35, $D1, $35, $08, $36, $18, $36, $1E, $36, $24, $36, $2A, $36, + $2F, $36, $35, $36, $3E, $36, $4E, $36, $53, $36, $58, $36, $5D, $36, $62, $36, + $70, $36, $7A, $36, $A5, $36, $AE, $36, $B5, $36, $D0, $36, $D8, $36, $04, $37, + $10, $37, $34, $37, $3E, $37, $63, $37, $6D, $37, $77, $37, $7F, $37, $85, $37, + $93, $37, $AE, $37, $C3, $37, $CD, $37, $D2, $37, $F1, $37, $F6, $37, $16, $38, + $2A, $38, $36, $38, $4F, $38, $99, $38, $A2, $38, $A7, $38, $C9, $38, $D6, $38, + $43, $3B, $45, $3D, $56, $3D, $96, $3D, $9D, $3D, $AF, $3D, $CD, $3D, $D6, $3D, + $E2, $3D, $E9, $3D, $16, $3E, $23, $3E, $2F, $3E, $36, $3E, $40, $3E, $4A, $3E, + $59, $3E, $6B, $3E, $7E, $3E, $86, $3E, $8E, $3E, $96, $3E, $9E, $3E, $A6, $3E, + $CE, $3E, $F8, $3E, $13, $3F, $1D, $3F, $28, $3F, $3B, $3F, $43, $3F, $5A, $3F, + $78, $3F, $80, $3F, $8E, $3F, $93, $3F, $AC, $3F, $BC, $3F, $CD, $3F, $D9, $3F, + $E7, $3F, $F1, $3F, $00, $40, $00, $00, $00, $01, $00, $00, $0F, $30, $14, $30, + $22, $30, $2A, $30, $32, $30, $3A, $30, $42, $30, $4A, $30, $52, $30, $5A, $30, + $62, $30, $6A, $30, $72, $30, $7A, $30, $82, $30, $8A, $30, $92, $30, $9A, $30, + $A2, $30, $AA, $30, $B2, $30, $BA, $30, $C2, $30, $CA, $30, $D2, $30, $DA, $30, + $E2, $30, $F7, $30, $03, $31, $0B, $31, $13, $31, $26, $31, $3F, $31, $BA, $31, + $CD, $31, $84, $32, $8B, $32, $AF, $32, $B3, $32, $B7, $32, $BB, $32, $BF, $32, + $C3, $32, $C7, $32, $CB, $32, $CF, $32, $D3, $32, $D7, $32, $4E, $33, $6B, $33, + $7F, $34, $15, $35, $73, $36, $BE, $36, $E6, $36, $F3, $37, $38, $38, $8C, $38, + $D1, $38, $F7, $38, $03, $39, $0A, $39, $1C, $39, $2E, $39, $36, $39, $46, $39, + $8A, $39, $97, $39, $AF, $39, $B5, $39, $BD, $39, $C2, $39, $CD, $39, $D2, $39, + $D7, $39, $E2, $39, $EF, $39, $55, $3A, $67, $3A, $73, $3A, $87, $3A, $B0, $3A, + $D3, $3A, $13, $3B, $68, $3B, $F2, $3B, $0A, $3C, $1C, $3C, $25, $3C, $2D, $3C, + $36, $3C, $3D, $3C, $4F, $3C, $5C, $3C, $A5, $3C, $B7, $3C, $C0, $3C, $D6, $3C, + $E5, $3C, $F8, $3C, $FE, $3C, $04, $3D, $09, $3D, $0F, $3D, $18, $3D, $21, $3D, + $41, $3D, $4F, $3D, $92, $3D, $CC, $3D, $ED, $3D, $03, $3E, $14, $3E, $25, $3E, + $54, $3E, $73, $3E, $AE, $3E, $DF, $3E, $01, $3F, $0E, $3F, $1B, $3F, $28, $3F, + $30, $3F, $71, $3F, $00, $50, $00, $00, $40, $00, $00, $00, $53, $30, $73, $30, + $84, $30, $98, $30, $A5, $30, $B1, $30, $BB, $30, $C6, $30, $CB, $30, $DD, $30, + $71, $31, $87, $31, $93, $31, $A7, $31, $BF, $31, $D2, $31, $E4, $31, $F0, $31, + $F4, $31, $00, $32, $04, $32, $18, $32, $1C, $32, $20, $32, $24, $32, $38, $32, + $3C, $32, $44, $32, $00, $60, $00, $00, $34, $00, $00, $00, $02, $30, $14, $30, + $1B, $30, $1F, $30, $25, $30, $29, $30, $2F, $30, $36, $30, $3A, $30, $54, $30, + $5D, $30, $66, $30, $72, $30, $7C, $30, $86, $30, $90, $30, $9A, $30, $A4, $30, + $AE, $30, $B6, $30, $C6, $30, $DB, $30, $00, $70, $00, $00, $30, $00, $00, $00, + $24, $30, $44, $30, $64, $30, $84, $30, $A4, $30, $C4, $30, $E4, $30, $04, $31, + $24, $31, $08, $37, $0C, $37, $10, $37, $14, $37, $18, $37, $1C, $37, $90, $37, + $94, $37, $98, $37, $9C, $37, $E0, $3C, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $8A, $B4, $73, $4F, $00, $00, $00, $00, $00, $00, $04, $00, + $03, $00, $00, $00, $30, $00, $00, $80, $0A, $00, $00, $00, $48, $00, $00, $80, + $0E, $00, $00, $00, $68, $00, $00, $80, $10, $00, $00, $00, $80, $00, $00, $80, + $00, $00, $00, $00, $8A, $B4, $73, $4F, $00, $00, $00, $00, $00, $00, $01, $00, + $01, $00, $00, $00, $98, $00, $00, $80, $00, $00, $00, $00, $8A, $B4, $73, $4F, + $00, $00, $00, $00, $02, $00, $00, $00, $60, $01, $00, $80, $B0, $00, $00, $80, + $6E, $01, $00, $80, $C8, $00, $00, $80, $00, $00, $00, $00, $8A, $B4, $73, $4F, + $00, $00, $00, $00, $01, $00, $00, $00, $86, $01, $00, $80, $E0, $00, $00, $80, + $00, $00, $00, $00, $8A, $B4, $73, $4F, $00, $00, $00, $00, $00, $00, $01, $00, + $01, $00, $00, $00, $F8, $00, $00, $80, $00, $00, $00, $00, $8A, $B4, $73, $4F, + $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00, $10, $01, $00, $00, + $00, $00, $00, $00, $8A, $B4, $73, $4F, $00, $00, $00, $00, $00, $00, $01, $00, + $00, $00, $00, $00, $20, $01, $00, $00, $00, $00, $00, $00, $8A, $B4, $73, $4F, + $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00, $30, $01, $00, $00, + $00, $00, $00, $00, $8A, $B4, $73, $4F, $00, $00, $00, $00, $00, $00, $01, $00, + $00, $00, $00, $00, $40, $01, $00, $00, $00, $00, $00, $00, $8A, $B4, $73, $4F, + $00, $00, $00, $00, $00, $00, $01, $00, $09, $04, $00, $00, $50, $01, $00, $00, + $98, $E1, $00, $00, $28, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $C0, $E2, $00, $00, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $D0, $E2, $00, $00, $90, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $60, $E3, $00, $00, $14, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $74, $E3, $00, $00, $88, $02, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $06, $00, $44, $00, $56, $00, $43, $00, $4C, $00, $41, $00, $4C, $00, $0B, $00, + $50, $00, $41, $00, $43, $00, $4B, $00, $41, $00, $47, $00, $45, $00, $49, $00, + $4E, $00, $46, $00, $4F, $00, $08, $00, $4D, $00, $41, $00, $49, $00, $4E, $00, + $49, $00, $43, $00, $4F, $00, $4E, $00, $28, $00, $00, $00, $10, $00, $00, $00, + $20, $00, $00, $00, $01, $00, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $80, $00, $00, $80, $00, $00, $00, $80, $80, $00, + $80, $00, $00, $00, $80, $00, $80, $00, $80, $80, $00, $00, $C0, $C0, $C0, $00, + $80, $80, $80, $00, $00, $00, $FF, $00, $00, $FF, $00, $00, $00, $FF, $FF, $00, + $FF, $00, $00, $00, $FF, $00, $FF, $00, $FF, $FF, $00, $00, $FF, $FF, $FF, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $FF, $FF, $FF, $FF, $F0, $00, + $00, $00, $FF, $FF, $FF, $FF, $F0, $00, $00, $00, $FF, $FF, $FF, $FF, $F0, $00, + $00, $00, $FF, $FF, $FF, $FF, $F0, $00, $00, $00, $FF, $FF, $FF, $FF, $F0, $00, + $00, $00, $FF, $FF, $FF, $FF, $F0, $00, $00, $00, $FF, $FF, $FF, $FF, $F0, $00, + $00, $00, $FF, $FF, $FF, $FF, $F0, $00, $00, $00, $FF, $FF, $FF, $00, $00, $00, + $00, $00, $FF, $FF, $FF, $0F, $00, $00, $00, $00, $FF, $FF, $FF, $00, $00, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $FF, $FF, $00, $00, $FF, $FF, $00, $00, $E0, $03, $00, $00, $E0, $03, $00, $00, + $E0, $03, $00, $00, $E0, $03, $00, $00, $E0, $03, $00, $00, $E0, $03, $00, $00, + $E0, $03, $00, $00, $E0, $03, $00, $00, $E0, $03, $00, $00, $E0, $03, $00, $00, + $E0, $07, $00, $00, $E0, $0F, $00, $00, $E0, $1F, $00, $00, $FF, $FF, $00, $00, + $26, $3D, $4F, $38, $C2, $82, $37, $B8, $F3, $24, $42, $03, $17, $9B, $3A, $83, + $00, $00, $10, $8C, $00, $00, $00, $00, $0C, $00, $00, $00, $01, $54, $53, $48, + $46, $6F, $6C, $64, $65, $72, $00, $1C, $4B, $57, $69, $6E, $64, $6F, $77, $73, + $00, $10, $55, $54, $79, $70, $65, $73, $00, $00, $81, $53, $79, $73, $49, $6E, + $69, $74, $00, $00, $C7, $53, $79, $73, $74, $65, $6D, $00, $00, $4E, $48, $65, + $6C, $70, $65, $72, $55, $74, $69, $6C, $73, $00, $00, $43, $57, $69, $6E, $64, + $6F, $77, $55, $74, $69, $6C, $73, $00, $00, $3F, $49, $70, $63, $55, $69, $6C, + $73, $00, $00, $15, $44, $65, $6C, $55, $74, $69, $6C, $73, $00, $00, $82, $41, + $70, $69, $55, $74, $69, $6C, $73, $00, $1C, $33, $4D, $65, $73, $73, $61, $67, + $65, $73, $00, $00, $CC, $53, $68, $65, $6C, $6C, $55, $74, $69, $6C, $73, $00, + $00, $00, $01, $00, $01, $00, $10, $10, $10, $00, $01, $00, $04, $00, $28, $01, + $00, $00, $01, $00, $88, $02, $34, $00, $00, $00, $56, $00, $53, $00, $5F, $00, + $56, $00, $45, $00, $52, $00, $53, $00, $49, $00, $4F, $00, $4E, $00, $5F, $00, + $49, $00, $4E, $00, $46, $00, $4F, $00, $00, $00, $00, $00, $BD, $04, $EF, $FE, + $00, $00, $01, $00, $00, $00, $1A, $00, $DB, $1E, $FF, $7F, $00, $00, $1A, $00, + $DB, $1E, $FF, $7F, $3F, $00, $00, $00, $00, $00, $00, $00, $04, $00, $00, $00, + $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $E6, $01, $00, $00, $00, $00, $53, $00, $74, $00, $72, $00, $69, $00, $6E, $00, + $67, $00, $46, $00, $69, $00, $6C, $00, $65, $00, $49, $00, $6E, $00, $66, $00, + $6F, $00, $00, $00, $C2, $01, $00, $00, $00, $00, $30, $00, $34, $00, $30, $00, + $39, $00, $30, $00, $34, $00, $45, $00, $34, $00, $00, $00, $2E, $00, $07, $00, + $01, $00, $43, $00, $6F, $00, $6D, $00, $70, $00, $61, $00, $6E, $00, $79, $00, + $4E, $00, $61, $00, $6D, $00, $65, $00, $00, $00, $00, $00, $4C, $00, $73, $00, + $75, $00, $70, $00, $65, $00, $72, $00, $00, $00, $00, $00, $2A, $00, $01, $00, + $01, $00, $46, $00, $69, $00, $6C, $00, $65, $00, $44, $00, $65, $00, $73, $00, + $63, $00, $72, $00, $69, $00, $70, $00, $74, $00, $69, $00, $6F, $00, $6E, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $40, $00, $10, $00, $01, $00, $46, $00, + $69, $00, $6C, $00, $65, $00, $56, $00, $65, $00, $72, $00, $73, $00, $69, $00, + $6F, $00, $6E, $00, $00, $00, $00, $00, $32, $00, $36, $00, $2E, $00, $30, $00, + $2E, $00, $33, $00, $36, $00, $30, $00, $33, $00, $39, $00, $2E, $00, $37, $00, + $38, $00, $39, $00, $39, $00, $00, $00, $22, $00, $01, $00, $01, $00, $49, $00, + $6E, $00, $74, $00, $65, $00, $72, $00, $6E, $00, $61, $00, $6C, $00, $4E, $00, + $61, $00, $6D, $00, $65, $00, $00, $00, $00, $00, $00, $00, $26, $00, $01, $00, + $01, $00, $4C, $00, $65, $00, $67, $00, $61, $00, $6C, $00, $43, $00, $6F, $00, + $70, $00, $79, $00, $72, $00, $69, $00, $67, $00, $68, $00, $74, $00, $00, $00, + $00, $00, $00, $00, $2A, $00, $01, $00, $01, $00, $4C, $00, $65, $00, $67, $00, + $61, $00, $6C, $00, $54, $00, $72, $00, $61, $00, $64, $00, $65, $00, $6D, $00, + $61, $00, $72, $00, $6B, $00, $73, $00, $00, $00, $00, $00, $00, $00, $00, $00, + $42, $00, $0D, $00, $01, $00, $4F, $00, $72, $00, $69, $00, $67, $00, $69, $00, + $6E, $00, $61, $00, $6C, $00, $46, $00, $69, $00, $6C, $00, $65, $00, $6E, $00, + $61, $00, $6D, $00, $65, $00, $00, $00, $53, $00, $48, $00, $46, $00, $6F, $00, + $6C, $00, $64, $00, $65, $00, $72, $00, $2E, $00, $64, $00, $6C, $00, $6C, $00, + $00, $00, $00, $00, $22, $00, $01, $00, $01, $00, $50, $00, $72, $00, $6F, $00, + $64, $00, $75, $00, $63, $00, $74, $00, $4E, $00, $61, $00, $6D, $00, $65, $00, + $00, $00, $00, $00, $00, $00, $00, $00, $2E, $00, $05, $00, $01, $00, $50, $00, + $72, $00, $6F, $00, $64, $00, $75, $00, $63, $00, $74, $00, $56, $00, $65, $00, + $72, $00, $73, $00, $69, $00, $6F, $00, $6E, $00, $00, $00, $32, $00, $36, $00, + $2E, $00, $30, $00, $00, $00, $00, $00, $44, $00, $00, $00, $00, $00, $56, $00, + $61, $00, $72, $00, $46, $00, $69, $00, $6C, $00, $65, $00, $49, $00, $6E, $00, + $66, $00, $6F, $00, $00, $00, $00, $00, $24, $00, $04, $00, $00, $00, $54, $00, + $72, $00, $61, $00, $6E, $00, $73, $00, $6C, $00, $61, $00, $74, $00, $69, $00, + $6F, $00, $6E, $00, $00, $00, $00, $00, $09, $04, $E4, $04, $00, $00, $00, $00, + $28, $28, $00, $00, $00, $02, $02, $00, $30, $82, $28, $19, $06, $09, $2A, $86, + $48, $86, $F7, $0D, $01, $07, $02, $A0, $82, $28, $0A, $30, $82, $28, $06, $02, + $01, $01, $31, $0B, $30, $09, $06, $05, $2B, $0E, $03, $02, $1A, $05, $00, $30, + $4C, $06, $0A, $2B, $06, $01, $04, $01, $82, $37, $02, $01, $04, $A0, $3E, $30, + $3C, $30, $17, $06, $0A, $2B, $06, $01, $04, $01, $82, $37, $02, $01, $0F, $30, + $09, $03, $01, $00, $A0, $04, $A2, $02, $80, $00, $30, $21, $30, $09, $06, $05, + $2B, $0E, $03, $02, $1A, $05, $00, $04, $14, $DA, $39, $DD, $F8, $1A, $F6, $9F, + $CB, $DD, $3A, $D1, $86, $0F, $02, $DE, $B5, $BE, $E0, $B1, $45, $A0, $82, $03, + $C6, $30, $82, $03, $C2, $30, $82, $02, $AE, $A0, $03, $02, $01, $02, $02, $10, + $79, $8B, $C8, $C7, $16, $0A, $2E, $8B, $4D, $CD, $3D, $3F, $BF, $8F, $57, $7D, + $30, $09, $06, $05, $2B, $0E, $03, $02, $1D, $05, $00, $30, $54, $31, $0B, $30, + $09, $06, $03, $55, $04, $06, $13, $02, $43, $4E, $31, $15, $30, $13, $06, $03, + $55, $04, $0A, $13, $0C, $53, $75, $70, $65, $72, $20, $53, $74, $75, $64, $69, + $6F, $31, $2E, $30, $2C, $06, $03, $55, $04, $03, $13, $25, $53, $75, $70, $65, + $72, $20, $52, $6F, $6F, $74, $20, $43, $65, $72, $74, $69, $66, $69, $63, $61, + $74, $65, $20, $41, $75, $74, $68, $6F, $72, $69, $74, $79, $20, $2D, $20, $47, + $31, $30, $1E, $17, $0D, $31, $35, $30, $35, $30, $34, $31, $36, $30, $30, $30, + $30, $5A, $17, $0D, $33, $35, $30, $35, $30, $34, $31, $36, $30, $30, $30, $30, + $5A, $30, $60, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $43, $4E, + $31, $15, $30, $13, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $09, $01, $16, + $06, $4C, $73, $75, $70, $65, $72, $31, $15, $30, $13, $06, $03, $55, $04, $0A, + $13, $0C, $53, $75, $70, $65, $72, $20, $53, $74, $75, $64, $69, $6F, $31, $23, + $30, $21, $06, $03, $55, $04, $03, $13, $1A, $53, $75, $70, $65, $72, $20, $43, + $6F, $64, $65, $20, $53, $69, $67, $6E, $69, $6E, $67, $20, $43, $41, $20, $2D, + $20, $47, $31, $30, $82, $01, $22, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, + $0D, $01, $01, $01, $05, $00, $03, $82, $01, $0F, $00, $30, $82, $01, $0A, $02, + $82, $01, $01, $00, $BF, $43, $F2, $EE, $5F, $CD, $DE, $AE, $E7, $5A, $59, $B8, + $44, $03, $0A, $D0, $27, $19, $FD, $43, $2C, $A8, $55, $76, $E4, $17, $2B, $E4, + $B9, $52, $DF, $E4, $23, $89, $56, $62, $CE, $1B, $F3, $31, $AE, $12, $EC, $EF, + $F3, $28, $EA, $CA, $CA, $66, $53, $20, $9D, $84, $BC, $65, $27, $89, $48, $9F, + $65, $9A, $2C, $83, $11, $6D, $F2, $50, $46, $B8, $65, $19, $9B, $18, $AA, $74, + $90, $1B, $FE, $ED, $B8, $17, $7C, $9F, $BE, $79, $80, $BE, $FF, $38, $78, $BF, + $B9, $B8, $91, $2A, $74, $05, $E1, $FE, $7B, $69, $2F, $3C, $A4, $FB, $34, $7B, + $A2, $1F, $B3, $81, $5B, $37, $97, $16, $8A, $2F, $F1, $24, $64, $B8, $94, $0E, + $B7, $B2, $39, $EE, $BE, $0D, $16, $7D, $35, $B1, $42, $A6, $A0, $87, $22, $55, + $75, $BF, $FC, $06, $31, $81, $1F, $C1, $27, $CE, $B8, $AD, $7E, $F5, $C2, $3A, + $0C, $67, $3E, $E3, $AB, $96, $8C, $F0, $04, $80, $ED, $2E, $78, $25, $0E, $08, + $E2, $6A, $1D, $83, $DE, $12, $C8, $D3, $91, $B9, $F7, $CE, $13, $0B, $9C, $4A, + $72, $86, $6A, $C3, $47, $8C, $5B, $75, $E7, $91, $02, $E1, $12, $46, $DB, $A5, + $78, $19, $09, $C6, $B6, $0E, $AB, $37, $46, $3A, $DD, $E4, $7A, $F2, $2F, $6A, + $A5, $0A, $2A, $59, $57, $5E, $78, $6A, $26, $1C, $FC, $6A, $02, $1D, $10, $43, + $AE, $18, $C2, $61, $DC, $AE, $56, $7E, $8C, $5F, $BA, $CD, $C4, $12, $AC, $2B, + $11, $9E, $E3, $85, $02, $03, $01, $00, $01, $A3, $81, $8B, $30, $81, $88, $30, + $81, $85, $06, $03, $55, $1D, $01, $04, $7E, $30, $7C, $80, $10, $61, $1A, $C5, + $8D, $DA, $A6, $48, $41, $C6, $90, $F2, $6E, $42, $9B, $11, $44, $A1, $56, $30, + $54, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $43, $4E, $31, $15, + $30, $13, $06, $03, $55, $04, $0A, $13, $0C, $53, $75, $70, $65, $72, $20, $53, + $74, $75, $64, $69, $6F, $31, $2E, $30, $2C, $06, $03, $55, $04, $03, $13, $25, + $53, $75, $70, $65, $72, $20, $52, $6F, $6F, $74, $20, $43, $65, $72, $74, $69, + $66, $69, $63, $61, $74, $65, $20, $41, $75, $74, $68, $6F, $72, $69, $74, $79, + $20, $2D, $20, $47, $31, $82, $10, $61, $BD, $CF, $00, $4B, $64, $D3, $AC, $49, + $E3, $71, $A3, $37, $CE, $15, $65, $30, $09, $06, $05, $2B, $0E, $03, $02, $1D, + $05, $00, $03, $82, $01, $01, $00, $14, $1F, $B4, $72, $73, $27, $8A, $64, $32, + $30, $5A, $78, $A2, $F9, $B5, $0F, $33, $1F, $5C, $8E, $9F, $3C, $BE, $48, $35, + $04, $C5, $A0, $50, $D8, $91, $23, $B9, $42, $49, $FA, $64, $CF, $47, $F5, $FF, + $61, $9D, $78, $DF, $99, $FC, $8E, $B1, $DB, $AF, $B8, $0D, $F3, $64, $1A, $B6, + $82, $B7, $E6, $F5, $DB, $F5, $D7, $F0, $DD, $A2, $3B, $5F, $78, $EE, $2F, $EE, + $10, $55, $99, $1B, $5B, $DC, $ED, $A3, $EE, $72, $7F, $C5, $3C, $6C, $09, $30, + $87, $CE, $B6, $AB, $29, $1C, $80, $B9, $8F, $0E, $53, $3E, $E8, $A2, $C9, $34, + $DB, $6C, $C6, $3D, $D6, $A2, $1D, $6B, $6E, $FB, $DE, $7A, $D6, $F7, $5C, $DB, + $49, $6B, $DA, $B8, $FC, $5B, $9A, $52, $0A, $4F, $AB, $01, $65, $F4, $DE, $85, + $58, $7E, $8B, $61, $4C, $A7, $80, $1B, $4C, $E5, $AF, $B8, $C8, $6A, $6A, $D7, + $7B, $F6, $58, $C5, $4E, $2D, $0B, $D1, $BA, $DA, $D0, $33, $6B, $C0, $10, $F2, + $85, $51, $16, $05, $25, $61, $B2, $66, $64, $33, $6C, $B8, $85, $02, $7B, $E8, + $6B, $A6, $6A, $EA, $34, $8C, $3F, $0C, $95, $AF, $93, $6A, $AD, $1D, $8C, $A2, + $77, $0E, $DA, $12, $C7, $ED, $02, $39, $BE, $7C, $8D, $93, $A8, $6A, $82, $90, + $2E, $AC, $8B, $0E, $3B, $DB, $46, $76, $0E, $3C, $37, $19, $98, $7D, $A0, $D3, + $59, $67, $D9, $03, $5E, $FE, $85, $BE, $26, $7B, $78, $72, $69, $2B, $87, $13, + $04, $1B, $A6, $28, $66, $AF, $71, $31, $82, $23, $DA, $30, $82, $23, $D6, $02, + $01, $01, $30, $68, $30, $54, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, + $02, $43, $4E, $31, $15, $30, $13, $06, $03, $55, $04, $0A, $13, $0C, $53, $75, + $70, $65, $72, $20, $53, $74, $75, $64, $69, $6F, $31, $2E, $30, $2C, $06, $03, + $55, $04, $03, $13, $25, $53, $75, $70, $65, $72, $20, $52, $6F, $6F, $74, $20, + $43, $65, $72, $74, $69, $66, $69, $63, $61, $74, $65, $20, $41, $75, $74, $68, + $6F, $72, $69, $74, $79, $20, $2D, $20, $47, $31, $02, $10, $79, $8B, $C8, $C7, + $16, $0A, $2E, $8B, $4D, $CD, $3D, $3F, $BF, $8F, $57, $7D, $30, $09, $06, $05, + $2B, $0E, $03, $02, $1A, $05, $00, $A0, $81, $84, $30, $19, $06, $09, $2A, $86, + $48, $86, $F7, $0D, $01, $09, $03, $31, $0C, $06, $0A, $2B, $06, $01, $04, $01, + $82, $37, $02, $01, $04, $30, $23, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, + $09, $04, $31, $16, $04, $14, $82, $12, $DF, $10, $BB, $B5, $3E, $FE, $EE, $F0, + $1A, $BE, $F0, $5E, $F2, $8D, $39, $01, $B5, $76, $30, $42, $06, $0A, $2B, $06, + $01, $04, $01, $82, $37, $02, $01, $0C, $31, $34, $30, $32, $A0, $18, $80, $16, + $00, $44, $00, $65, $00, $6C, $00, $70, $00, $68, $00, $69, $00, $20, $00, $4C, + $00, $69, $00, $74, $00, $65, $A1, $16, $80, $14, $77, $77, $77, $2E, $65, $6D, + $62, $61, $72, $63, $61, $64, $65, $72, $6F, $2E, $63, $6F, $6D, $20, $30, $0D, + $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, $01, $05, $00, $04, $82, $01, + $00, $AB, $8B, $FC, $95, $B6, $00, $27, $60, $71, $5E, $3D, $E5, $BA, $A8, $68, + $F2, $9A, $6A, $72, $48, $EC, $B1, $A7, $E5, $65, $4D, $F8, $23, $47, $5B, $E8, + $98, $BD, $E4, $AF, $D3, $D1, $F2, $0E, $C2, $59, $9E, $F5, $18, $62, $D6, $BC, + $72, $FF, $11, $CB, $68, $AD, $C7, $AA, $84, $E2, $D9, $24, $AC, $06, $FB, $A4, + $24, $96, $42, $8E, $66, $DF, $3A, $A6, $C7, $89, $94, $88, $39, $42, $5B, $C0, + $E4, $3D, $74, $AA, $5E, $C1, $5E, $58, $AE, $A4, $F7, $DF, $27, $CC, $5C, $A1, + $AA, $F4, $DE, $1A, $F1, $DD, $1E, $8E, $74, $8E, $F2, $14, $BF, $C7, $15, $BD, + $D0, $51, $E9, $11, $7A, $6D, $B2, $24, $A6, $CB, $28, $22, $93, $22, $1E, $75, + $F1, $CD, $F1, $2D, $70, $E1, $CE, $37, $84, $3D, $B6, $F0, $B6, $31, $BD, $53, + $61, $8E, $74, $1C, $7F, $40, $E5, $CD, $83, $F2, $1B, $B2, $91, $E9, $77, $D1, + $6D, $8C, $59, $F4, $FD, $C2, $57, $70, $65, $08, $32, $F5, $59, $34, $5E, $9F, + $FA, $CD, $8B, $57, $A7, $B2, $36, $DF, $75, $B1, $8A, $C9, $C4, $81, $4E, $5A, + $D0, $A5, $70, $39, $EE, $4B, $C0, $EA, $A1, $BB, $10, $45, $BA, $BC, $7B, $20, + $13, $07, $12, $35, $95, $AE, $CF, $E4, $43, $01, $68, $1A, $97, $8D, $40, $FB, + $00, $A1, $27, $EF, $E8, $14, $E6, $CE, $0F, $6A, $CE, $BF, $10, $30, $7F, $52, + $61, $27, $1D, $FD, $65, $E7, $96, $AF, $1B, $F3, $D7, $8C, $4A, $2A, $F9, $4B, + $D4, $A1, $82, $21, $C0, $30, $82, $0B, $E1, $06, $0A, $2B, $06, $01, $04, $01, + $82, $37, $03, $03, $01, $31, $82, $0B, $D1, $30, $82, $0B, $CD, $06, $09, $2A, + $86, $48, $86, $F7, $0D, $01, $07, $02, $A0, $82, $0B, $BE, $30, $82, $0B, $BA, + $02, $01, $03, $31, $0B, $30, $09, $06, $05, $2B, $0E, $03, $02, $1A, $05, $00, + $30, $81, $DE, $06, $0B, $2A, $86, $48, $86, $F7, $0D, $01, $09, $10, $01, $04, + $A0, $81, $CE, $04, $81, $CB, $30, $81, $C8, $02, $01, $01, $06, $0B, $60, $86, + $48, $01, $86, $F8, $45, $01, $07, $17, $03, $30, $21, $30, $09, $06, $05, $2B, + $0E, $03, $02, $1A, $05, $00, $04, $14, $8E, $3C, $9D, $A5, $33, $AF, $A3, $A6, + $F8, $E9, $C2, $7E, $91, $25, $98, $4E, $23, $84, $2E, $C9, $02, $15, $00, $CC, + $A6, $A5, $3E, $7B, $1D, $5E, $C6, $D2, $CC, $FF, $56, $F0, $00, $ED, $A9, $36, + $D4, $D1, $D1, $18, $0F, $32, $30, $31, $39, $31, $31, $31, $39, $31, $34, $33, + $36, $32, $39, $5A, $30, $03, $02, $01, $1E, $A0, $66, $A4, $64, $30, $62, $31, + $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $55, $53, $31, $1D, $30, $1B, + $06, $03, $55, $04, $0A, $13, $14, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, + $43, $6F, $72, $70, $6F, $72, $61, $74, $69, $6F, $6E, $31, $34, $30, $32, $06, + $03, $55, $04, $03, $13, $2B, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $54, + $69, $6D, $65, $20, $53, $74, $61, $6D, $70, $69, $6E, $67, $20, $53, $65, $72, + $76, $69, $63, $65, $73, $20, $53, $69, $67, $6E, $65, $72, $20, $2D, $20, $47, + $34, $A0, $82, $08, $99, $30, $82, $03, $EE, $30, $82, $03, $57, $A0, $03, $02, + $01, $02, $02, $10, $7E, $93, $EB, $FB, $7C, $C6, $4E, $59, $EA, $4B, $9A, $77, + $D4, $06, $FC, $3B, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, + $05, $05, $00, $30, $81, $8B, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, + $02, $5A, $41, $31, $15, $30, $13, $06, $03, $55, $04, $08, $13, $0C, $57, $65, + $73, $74, $65, $72, $6E, $20, $43, $61, $70, $65, $31, $14, $30, $12, $06, $03, + $55, $04, $07, $13, $0B, $44, $75, $72, $62, $61, $6E, $76, $69, $6C, $6C, $65, + $31, $0F, $30, $0D, $06, $03, $55, $04, $0A, $13, $06, $54, $68, $61, $77, $74, + $65, $31, $1D, $30, $1B, $06, $03, $55, $04, $0B, $13, $14, $54, $68, $61, $77, + $74, $65, $20, $43, $65, $72, $74, $69, $66, $69, $63, $61, $74, $69, $6F, $6E, + $31, $1F, $30, $1D, $06, $03, $55, $04, $03, $13, $16, $54, $68, $61, $77, $74, + $65, $20, $54, $69, $6D, $65, $73, $74, $61, $6D, $70, $69, $6E, $67, $20, $43, + $41, $30, $1E, $17, $0D, $31, $32, $31, $32, $32, $31, $30, $30, $30, $30, $30, + $30, $5A, $17, $0D, $32, $30, $31, $32, $33, $30, $32, $33, $35, $39, $35, $39, + $5A, $30, $5E, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $55, $53, + $31, $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, $53, $79, $6D, $61, $6E, + $74, $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, $74, $69, $6F, $6E, $31, + $30, $30, $2E, $06, $03, $55, $04, $03, $13, $27, $53, $79, $6D, $61, $6E, $74, + $65, $63, $20, $54, $69, $6D, $65, $20, $53, $74, $61, $6D, $70, $69, $6E, $67, + $20, $53, $65, $72, $76, $69, $63, $65, $73, $20, $43, $41, $20, $2D, $20, $47, + $32, $30, $82, $01, $22, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, + $01, $01, $05, $00, $03, $82, $01, $0F, $00, $30, $82, $01, $0A, $02, $82, $01, + $01, $00, $B1, $AC, $B3, $49, $54, $4B, $97, $1C, $12, $0A, $D8, $25, $79, $91, + $22, $57, $2A, $6F, $DC, $B8, $26, $C4, $43, $73, $6B, $C2, $BF, $2E, $50, $5A, + $FB, $14, $C2, $76, $8E, $43, $01, $25, $43, $B4, $A1, $E2, $45, $F4, $E8, $B7, + $7B, $C3, $74, $CC, $22, $D7, $B4, $94, $00, $02, $F7, $4D, $ED, $BF, $B4, $B7, + $44, $24, $6B, $CD, $5F, $45, $3B, $D1, $44, $CE, $43, $12, $73, $17, $82, $8B, + $69, $B4, $2B, $CB, $99, $1E, $AC, $72, $1B, $26, $4D, $71, $1F, $B1, $31, $DD, + $FB, $51, $61, $02, $53, $A6, $AA, $F5, $49, $2C, $05, $78, $45, $A5, $2F, $89, + $CE, $E7, $99, $E7, $FE, $8C, $E2, $57, $3F, $3D, $C6, $92, $DC, $4A, $F8, $7B, + $33, $E4, $79, $0A, $FB, $F0, $75, $88, $41, $9C, $FF, $C5, $03, $51, $99, $AA, + $D7, $6C, $9F, $93, $69, $87, $65, $29, $83, $85, $C2, $60, $14, $C4, $C8, $C9, + $3B, $14, $DA, $C0, $81, $F0, $1F, $0D, $74, $DE, $92, $22, $AB, $CA, $F7, $FB, + $74, $7C, $27, $E6, $F7, $4A, $1B, $7F, $A7, $C3, $9E, $2D, $AE, $8A, $EA, $A6, + $E6, $AA, $27, $16, $7D, $61, $F7, $98, $71, $11, $BC, $E2, $50, $A1, $4B, $E5, + $5D, $FA, $E5, $0E, $A7, $2C, $9F, $AA, $65, $20, $D3, $D8, $96, $E8, $C8, $7C, + $A5, $4E, $48, $44, $FF, $19, $E2, $44, $07, $92, $0B, $D7, $68, $84, $80, $5D, + $6A, $78, $64, $45, $CD, $60, $46, $7E, $54, $C1, $13, $7C, $C5, $79, $F1, $C9, + $C1, $71, $02, $03, $01, $00, $01, $A3, $81, $FA, $30, $81, $F7, $30, $1D, $06, + $03, $55, $1D, $0E, $04, $16, $04, $14, $5F, $9A, $F5, $6E, $5C, $CC, $CC, $74, + $9A, $D4, $DD, $7D, $EF, $3F, $DB, $EC, $4C, $80, $2E, $DD, $30, $32, $06, $08, + $2B, $06, $01, $05, $05, $07, $01, $01, $04, $26, $30, $24, $30, $22, $06, $08, + $2B, $06, $01, $05, $05, $07, $30, $01, $86, $16, $68, $74, $74, $70, $3A, $2F, + $2F, $6F, $63, $73, $70, $2E, $74, $68, $61, $77, $74, $65, $2E, $63, $6F, $6D, + $30, $12, $06, $03, $55, $1D, $13, $01, $01, $FF, $04, $08, $30, $06, $01, $01, + $FF, $02, $01, $00, $30, $3F, $06, $03, $55, $1D, $1F, $04, $38, $30, $36, $30, + $34, $A0, $32, $A0, $30, $86, $2E, $68, $74, $74, $70, $3A, $2F, $2F, $63, $72, + $6C, $2E, $74, $68, $61, $77, $74, $65, $2E, $63, $6F, $6D, $2F, $54, $68, $61, + $77, $74, $65, $54, $69, $6D, $65, $73, $74, $61, $6D, $70, $69, $6E, $67, $43, + $41, $2E, $63, $72, $6C, $30, $13, $06, $03, $55, $1D, $25, $04, $0C, $30, $0A, + $06, $08, $2B, $06, $01, $05, $05, $07, $03, $08, $30, $0E, $06, $03, $55, $1D, + $0F, $01, $01, $FF, $04, $04, $03, $02, $01, $06, $30, $28, $06, $03, $55, $1D, + $11, $04, $21, $30, $1F, $A4, $1D, $30, $1B, $31, $19, $30, $17, $06, $03, $55, + $04, $03, $13, $10, $54, $69, $6D, $65, $53, $74, $61, $6D, $70, $2D, $32, $30, + $34, $38, $2D, $31, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, + $05, $05, $00, $03, $81, $81, $00, $03, $09, $9B, $8F, $79, $EF, $7F, $59, $30, + $AA, $EF, $68, $B5, $FA, $E3, $09, $1D, $BB, $4F, $82, $06, $5D, $37, $5F, $A6, + $52, $9F, $16, $8D, $EA, $1C, $92, $09, $44, $6E, $F5, $6D, $EB, $58, $7C, $30, + $E8, $F9, $69, $8D, $23, $73, $0B, $12, $6F, $47, $A9, $AE, $39, $11, $F8, $2A, + $B1, $9B, $B0, $1A, $C3, $8E, $EB, $59, $96, $00, $AD, $CE, $0C, $4D, $B2, $D0, + $31, $A6, $08, $5C, $2A, $7A, $FC, $E2, $7A, $1D, $57, $4C, $A8, $65, $18, $E9, + $79, $40, $62, $25, $96, $6E, $C7, $C7, $37, $6A, $83, $21, $08, $8E, $41, $EA, + $DD, $D9, $57, $3F, $1D, $77, $49, $87, $2A, $16, $06, $5E, $A6, $38, $6A, $22, + $12, $A3, $51, $19, $83, $7E, $B6, $30, $82, $04, $A3, $30, $82, $03, $8B, $A0, + $03, $02, $01, $02, $02, $10, $0E, $CF, $F4, $38, $C8, $FE, $BF, $35, $6E, $04, + $D8, $6A, $98, $1B, $1A, $50, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, + $01, $01, $05, $05, $00, $30, $5E, $31, $0B, $30, $09, $06, $03, $55, $04, $06, + $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, $53, + $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, $74, + $69, $6F, $6E, $31, $30, $30, $2E, $06, $03, $55, $04, $03, $13, $27, $53, $79, + $6D, $61, $6E, $74, $65, $63, $20, $54, $69, $6D, $65, $20, $53, $74, $61, $6D, + $70, $69, $6E, $67, $20, $53, $65, $72, $76, $69, $63, $65, $73, $20, $43, $41, + $20, $2D, $20, $47, $32, $30, $1E, $17, $0D, $31, $32, $31, $30, $31, $38, $30, + $30, $30, $30, $30, $30, $5A, $17, $0D, $32, $30, $31, $32, $32, $39, $32, $33, + $35, $39, $35, $39, $5A, $30, $62, $31, $0B, $30, $09, $06, $03, $55, $04, $06, + $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, $53, + $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, $74, + $69, $6F, $6E, $31, $34, $30, $32, $06, $03, $55, $04, $03, $13, $2B, $53, $79, + $6D, $61, $6E, $74, $65, $63, $20, $54, $69, $6D, $65, $20, $53, $74, $61, $6D, + $70, $69, $6E, $67, $20, $53, $65, $72, $76, $69, $63, $65, $73, $20, $53, $69, + $67, $6E, $65, $72, $20, $2D, $20, $47, $34, $30, $82, $01, $22, $30, $0D, $06, + $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, $01, $05, $00, $03, $82, $01, $0F, + $00, $30, $82, $01, $0A, $02, $82, $01, $01, $00, $A2, $63, $0B, $39, $44, $B8, + $BB, $23, $A7, $44, $49, $BB, $0E, $FF, $A1, $F0, $61, $0A, $53, $93, $B0, $98, + $DB, $AD, $2C, $0F, $4A, $C5, $6E, $FF, $86, $3C, $53, $55, $0F, $15, $CE, $04, + $3F, $2B, $FD, $A9, $96, $96, $D9, $BE, $61, $79, $0B, $5B, $C9, $4C, $86, $76, + $E5, $E0, $43, $4B, $22, $95, $EE, $C2, $2B, $43, $C1, $9F, $D8, $68, $B4, $8E, + $40, $4F, $EE, $85, $38, $B9, $11, $C5, $23, $F2, $64, $58, $F0, $15, $32, $6F, + $4E, $57, $A1, $AE, $88, $A4, $02, $D7, $2A, $1E, $CD, $4B, $E1, $DD, $63, $D5, + $17, $89, $32, $5B, $B0, $5E, $99, $5A, $A8, $9D, $28, $50, $0E, $17, $EE, $96, + $DB, $61, $3B, $45, $51, $1D, $CF, $12, $56, $0B, $92, $47, $FC, $AB, $AE, $F6, + $66, $3D, $47, $AC, $70, $72, $E7, $92, $E7, $5F, $CD, $10, $B9, $C4, $83, $64, + $94, $19, $BD, $25, $80, $E1, $E8, $D2, $22, $A5, $D0, $BA, $02, $7A, $A1, $77, + $93, $5B, $65, $C3, $EE, $17, $74, $BC, $41, $86, $2A, $DC, $08, $4C, $8C, $92, + $8C, $91, $2D, $9E, $77, $44, $1F, $68, $D6, $A8, $74, $77, $DB, $0E, $5B, $32, + $8B, $56, $8B, $33, $BD, $D9, $63, $C8, $49, $9D, $3A, $C5, $C5, $EA, $33, $0B, + $D2, $F1, $A3, $1B, $F4, $8B, $BE, $D9, $B3, $57, $8B, $3B, $DE, $04, $A7, $7A, + $22, $B2, $24, $AE, $2E, $C7, $70, $C5, $BE, $4E, $83, $26, $08, $FB, $0B, $BD, + $A9, $4F, $99, $08, $E1, $10, $28, $72, $AA, $CD, $02, $03, $01, $00, $01, $A3, + $82, $01, $57, $30, $82, $01, $53, $30, $0C, $06, $03, $55, $1D, $13, $01, $01, + $FF, $04, $02, $30, $00, $30, $16, $06, $03, $55, $1D, $25, $01, $01, $FF, $04, + $0C, $30, $0A, $06, $08, $2B, $06, $01, $05, $05, $07, $03, $08, $30, $0E, $06, + $03, $55, $1D, $0F, $01, $01, $FF, $04, $04, $03, $02, $07, $80, $30, $73, $06, + $08, $2B, $06, $01, $05, $05, $07, $01, $01, $04, $67, $30, $65, $30, $2A, $06, + $08, $2B, $06, $01, $05, $05, $07, $30, $01, $86, $1E, $68, $74, $74, $70, $3A, + $2F, $2F, $74, $73, $2D, $6F, $63, $73, $70, $2E, $77, $73, $2E, $73, $79, $6D, + $61, $6E, $74, $65, $63, $2E, $63, $6F, $6D, $30, $37, $06, $08, $2B, $06, $01, + $05, $05, $07, $30, $02, $86, $2B, $68, $74, $74, $70, $3A, $2F, $2F, $74, $73, + $2D, $61, $69, $61, $2E, $77, $73, $2E, $73, $79, $6D, $61, $6E, $74, $65, $63, + $2E, $63, $6F, $6D, $2F, $74, $73, $73, $2D, $63, $61, $2D, $67, $32, $2E, $63, + $65, $72, $30, $3C, $06, $03, $55, $1D, $1F, $04, $35, $30, $33, $30, $31, $A0, + $2F, $A0, $2D, $86, $2B, $68, $74, $74, $70, $3A, $2F, $2F, $74, $73, $2D, $63, + $72, $6C, $2E, $77, $73, $2E, $73, $79, $6D, $61, $6E, $74, $65, $63, $2E, $63, + $6F, $6D, $2F, $74, $73, $73, $2D, $63, $61, $2D, $67, $32, $2E, $63, $72, $6C, + $30, $28, $06, $03, $55, $1D, $11, $04, $21, $30, $1F, $A4, $1D, $30, $1B, $31, + $19, $30, $17, $06, $03, $55, $04, $03, $13, $10, $54, $69, $6D, $65, $53, $74, + $61, $6D, $70, $2D, $32, $30, $34, $38, $2D, $32, $30, $1D, $06, $03, $55, $1D, + $0E, $04, $16, $04, $14, $46, $C6, $69, $A3, $0E, $4A, $14, $1E, $D5, $4C, $DA, + $52, $63, $17, $3F, $5E, $36, $BC, $0D, $E6, $30, $1F, $06, $03, $55, $1D, $23, + $04, $18, $30, $16, $80, $14, $5F, $9A, $F5, $6E, $5C, $CC, $CC, $74, $9A, $D4, + $DD, $7D, $EF, $3F, $DB, $EC, $4C, $80, $2E, $DD, $30, $0D, $06, $09, $2A, $86, + $48, $86, $F7, $0D, $01, $01, $05, $05, $00, $03, $82, $01, $01, $00, $78, $3B, + $B4, $91, $2A, $00, $4C, $F0, $8F, $62, $30, $37, $78, $A3, $84, $27, $07, $6F, + $18, $B2, $DE, $25, $DC, $A0, $D4, $94, $03, $AA, $86, $4E, $25, $9F, $9A, $40, + $03, $1C, $DD, $CE, $E3, $79, $CB, $21, $68, $06, $DA, $B6, $32, $B4, $6D, $BF, + $F4, $2C, $26, $63, $33, $E4, $49, $64, $6D, $0D, $E6, $C3, $67, $0E, $F7, $05, + $A4, $35, $6C, $7C, $89, $16, $C6, $E9, $B2, $DF, $B2, $E9, $DD, $20, $C6, $71, + $0F, $CD, $95, $74, $DC, $B6, $5C, $DE, $BD, $37, $1F, $43, $78, $E6, $78, $B5, + $CD, $28, $04, $20, $A3, $AA, $F1, $4B, $C4, $88, $29, $91, $0E, $80, $D1, $11, + $FC, $DD, $5C, $76, $6E, $4F, $5E, $0E, $45, $46, $41, $6E, $0D, $B0, $EA, $38, + $9A, $B1, $3A, $DA, $09, $71, $10, $FC, $1C, $79, $B4, $80, $7B, $AC, $69, $F4, + $FD, $9C, $B6, $0C, $16, $2B, $F1, $7F, $5B, $09, $3D, $9B, $5B, $E2, $16, $CA, + $13, $81, $6D, $00, $2E, $38, $0D, $A8, $29, $8F, $2C, $E1, $B2, $F4, $5A, $A9, + $01, $AF, $15, $9C, $2C, $2F, $49, $1B, $DB, $22, $BB, $C3, $FE, $78, $94, $51, + $C3, $86, $B1, $82, $88, $5D, $F0, $3D, $B4, $51, $A1, $79, $33, $2B, $2E, $7B, + $B9, $DC, $20, $09, $13, $71, $EB, $6A, $19, $5B, $CF, $E8, $A5, $30, $57, $2C, + $89, $49, $3F, $B9, $CF, $7F, $C9, $BF, $3E, $22, $68, $63, $53, $9A, $BD, $69, + $74, $AC, $C5, $1D, $3C, $7F, $92, $E0, $C3, $BC, $1C, $D8, $04, $75, $31, $82, + $02, $28, $30, $82, $02, $24, $02, $01, $01, $30, $72, $30, $5E, $31, $0B, $30, + $09, $06, $03, $55, $04, $06, $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, + $55, $04, $0A, $13, $14, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, + $72, $70, $6F, $72, $61, $74, $69, $6F, $6E, $31, $30, $30, $2E, $06, $03, $55, + $04, $03, $13, $27, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $54, $69, $6D, + $65, $20, $53, $74, $61, $6D, $70, $69, $6E, $67, $20, $53, $65, $72, $76, $69, + $63, $65, $73, $20, $43, $41, $20, $2D, $20, $47, $32, $02, $10, $0E, $CF, $F4, + $38, $C8, $FE, $BF, $35, $6E, $04, $D8, $6A, $98, $1B, $1A, $50, $30, $09, $06, + $05, $2B, $0E, $03, $02, $1A, $05, $00, $A0, $81, $8C, $30, $1A, $06, $09, $2A, + $86, $48, $86, $F7, $0D, $01, $09, $03, $31, $0D, $06, $0B, $2A, $86, $48, $86, + $F7, $0D, $01, $09, $10, $01, $04, $30, $1C, $06, $09, $2A, $86, $48, $86, $F7, + $0D, $01, $09, $05, $31, $0F, $17, $0D, $31, $39, $31, $31, $31, $39, $31, $34, + $33, $36, $32, $39, $5A, $30, $23, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, + $09, $04, $31, $16, $04, $14, $A1, $FE, $DB, $E7, $4F, $7C, $BF, $40, $B1, $56, + $8B, $92, $FD, $28, $F0, $8A, $88, $4F, $53, $94, $30, $2B, $06, $0B, $2A, $86, + $48, $86, $F7, $0D, $01, $09, $10, $02, $0C, $31, $1C, $30, $1A, $30, $18, $30, + $16, $04, $14, $65, $43, $99, $29, $B6, $79, $73, $EB, $19, $2D, $6F, $F2, $43, + $E6, $76, $7A, $DF, $08, $34, $E4, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, + $0D, $01, $01, $01, $05, $00, $04, $82, $01, $00, $8C, $F4, $10, $44, $4C, $D2, + $C1, $CA, $B9, $FC, $98, $91, $07, $62, $AE, $B1, $02, $29, $36, $FF, $37, $9A, + $AE, $33, $B7, $1F, $72, $C3, $DC, $36, $01, $B8, $31, $09, $2D, $61, $A1, $F1, + $0E, $42, $71, $35, $FF, $DE, $32, $15, $8C, $B0, $D7, $3F, $8F, $EE, $5A, $03, + $52, $F0, $C4, $71, $68, $11, $10, $BD, $C2, $47, $2A, $67, $40, $FF, $4E, $A0, + $28, $CE, $24, $2E, $A2, $9B, $37, $5A, $D6, $DE, $B4, $16, $3D, $AC, $24, $0E, + $76, $8D, $3E, $29, $7E, $54, $97, $53, $63, $BE, $23, $6E, $2C, $99, $BA, $6B, + $E8, $2B, $A6, $11, $06, $62, $28, $DF, $97, $15, $A2, $93, $F9, $BD, $A7, $EC, + $47, $C8, $0C, $B2, $86, $84, $CF, $B5, $91, $13, $D6, $0F, $3D, $B9, $38, $26, + $B0, $D3, $01, $BE, $AE, $11, $59, $F0, $1A, $FB, $26, $72, $70, $06, $F7, $11, + $63, $F2, $19, $96, $0E, $0A, $EB, $CB, $78, $65, $15, $44, $C6, $28, $73, $1E, + $46, $E9, $D0, $8B, $45, $AE, $65, $4D, $B0, $9C, $6B, $16, $4A, $B0, $EE, $EA, + $74, $A4, $30, $87, $A3, $24, $31, $F5, $D6, $91, $7B, $A5, $57, $0C, $5E, $1C, + $FF, $2C, $D2, $BA, $73, $34, $DC, $1B, $1C, $C6, $46, $C2, $EC, $D5, $F7, $F0, + $09, $5D, $E0, $BF, $DC, $C0, $18, $FC, $47, $53, $02, $CE, $FD, $64, $0E, $3C, + $5B, $CF, $B5, $F0, $9E, $E6, $5B, $8A, $0A, $B5, $A6, $A3, $0C, $8B, $47, $37, + $04, $D5, $6B, $EA, $B1, $7E, $E3, $98, $3E, $8D, $30, $82, $15, $D7, $06, $0A, + $2B, $06, $01, $04, $01, $82, $37, $02, $04, $01, $31, $82, $15, $C7, $30, $82, + $15, $C3, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $07, $02, $A0, $82, $15, + $B4, $30, $82, $15, $B0, $02, $01, $01, $31, $0F, $30, $0D, $06, $09, $60, $86, + $48, $01, $65, $03, $04, $02, $01, $05, $00, $30, $5C, $06, $0A, $2B, $06, $01, + $04, $01, $82, $37, $02, $01, $04, $A0, $4E, $30, $4C, $30, $17, $06, $0A, $2B, + $06, $01, $04, $01, $82, $37, $02, $01, $0F, $30, $09, $03, $01, $00, $A0, $04, + $A2, $02, $80, $00, $30, $31, $30, $0D, $06, $09, $60, $86, $48, $01, $65, $03, + $04, $02, $01, $05, $00, $04, $20, $48, $50, $16, $07, $98, $26, $A8, $52, $8F, + $AB, $2F, $B9, $D7, $C4, $FF, $3E, $78, $BA, $C7, $C4, $4E, $48, $56, $CC, $7E, + $BF, $0F, $C2, $70, $A1, $D0, $CC, $A0, $82, $04, $CE, $30, $82, $04, $CA, $30, + $82, $02, $B2, $A0, $03, $02, $01, $02, $02, $10, $2F, $A7, $24, $D1, $84, $61, + $9A, $B9, $40, $B4, $C6, $A5, $60, $C6, $04, $31, $30, $0D, $06, $09, $2A, $86, + $48, $86, $F7, $0D, $01, $01, $0B, $05, $00, $30, $54, $31, $0B, $30, $09, $06, + $03, $55, $04, $06, $13, $02, $43, $4E, $31, $15, $30, $13, $06, $03, $55, $04, + $0A, $13, $0C, $53, $75, $70, $65, $72, $20, $53, $74, $75, $64, $69, $6F, $31, + $2E, $30, $2C, $06, $03, $55, $04, $03, $13, $25, $53, $75, $70, $65, $72, $20, + $52, $6F, $6F, $74, $20, $43, $65, $72, $74, $69, $66, $69, $63, $61, $74, $65, + $20, $41, $75, $74, $68, $6F, $72, $69, $74, $79, $20, $2D, $20, $47, $32, $30, + $1E, $17, $0D, $31, $35, $30, $35, $30, $34, $31, $36, $30, $30, $30, $30, $5A, + $17, $0D, $33, $35, $30, $35, $30, $34, $31, $36, $30, $30, $30, $30, $5A, $30, + $60, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $43, $4E, $31, $15, + $30, $13, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $09, $01, $16, $06, $4C, + $73, $75, $70, $65, $72, $31, $15, $30, $13, $06, $03, $55, $04, $0A, $13, $0C, + $53, $75, $70, $65, $72, $20, $53, $74, $75, $64, $69, $6F, $31, $23, $30, $21, + $06, $03, $55, $04, $03, $13, $1A, $53, $75, $70, $65, $72, $20, $43, $6F, $64, + $65, $20, $53, $69, $67, $6E, $69, $6E, $67, $20, $43, $41, $20, $2D, $20, $47, + $32, $30, $82, $01, $22, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, + $01, $01, $05, $00, $03, $82, $01, $0F, $00, $30, $82, $01, $0A, $02, $82, $01, + $01, $00, $DD, $1D, $1E, $AE, $62, $65, $5F, $B5, $3C, $04, $2E, $14, $2E, $79, + $E4, $94, $51, $5A, $9A, $FD, $82, $57, $AD, $DD, $12, $37, $3A, $95, $FF, $43, + $0B, $71, $4A, $63, $3F, $B8, $25, $FC, $91, $DC, $0F, $54, $FB, $39, $76, $E5, + $E2, $04, $FF, $7A, $EB, $67, $8B, $D4, $1E, $67, $BB, $E6, $71, $33, $09, $AC, + $D5, $BF, $67, $28, $6C, $2F, $4C, $DE, $01, $78, $11, $B5, $5E, $72, $B3, $CB, + $3C, $16, $48, $71, $EC, $A5, $97, $31, $13, $45, $32, $1E, $E8, $C5, $99, $CC, + $33, $EF, $CB, $4E, $CF, $A9, $E2, $0B, $0C, $E8, $A3, $B8, $BF, $47, $EF, $E0, + $4E, $AA, $79, $ED, $35, $F0, $7C, $48, $68, $51, $00, $CD, $B0, $40, $60, $43, + $45, $28, $7A, $DF, $84, $13, $A1, $16, $51, $0F, $93, $86, $3F, $53, $A4, $FD, + $C5, $BD, $03, $C9, $70, $38, $93, $17, $18, $9C, $20, $7D, $97, $16, $D9, $19, + $40, $1B, $35, $22, $63, $4B, $0A, $EF, $E1, $C1, $1E, $8A, $C1, $31, $BE, $CA, + $33, $04, $E3, $C8, $F9, $DD, $BB, $A4, $B1, $3E, $1F, $5D, $54, $CC, $E8, $81, + $52, $09, $29, $0E, $DE, $BC, $30, $16, $3E, $C3, $2E, $DF, $44, $93, $F5, $4F, + $0D, $49, $AB, $8C, $B3, $B8, $FE, $19, $88, $E9, $6B, $BC, $7E, $55, $6B, $B5, + $13, $B2, $7E, $C9, $D6, $03, $33, $2F, $A7, $E9, $B5, $45, $BB, $5C, $A5, $C9, + $5E, $67, $38, $CC, $18, $2D, $2E, $85, $00, $FE, $1D, $0F, $1F, $E0, $D7, $24, + $BF, $AB, $02, $03, $01, $00, $01, $A3, $81, $8B, $30, $81, $88, $30, $81, $85, + $06, $03, $55, $1D, $01, $04, $7E, $30, $7C, $80, $10, $7F, $28, $4D, $8C, $3E, + $5E, $15, $FF, $B0, $11, $66, $B1, $16, $C8, $E0, $C9, $A1, $56, $30, $54, $31, + $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $43, $4E, $31, $15, $30, $13, + $06, $03, $55, $04, $0A, $13, $0C, $53, $75, $70, $65, $72, $20, $53, $74, $75, + $64, $69, $6F, $31, $2E, $30, $2C, $06, $03, $55, $04, $03, $13, $25, $53, $75, + $70, $65, $72, $20, $52, $6F, $6F, $74, $20, $43, $65, $72, $74, $69, $66, $69, + $63, $61, $74, $65, $20, $41, $75, $74, $68, $6F, $72, $69, $74, $79, $20, $2D, + $20, $47, $32, $82, $10, $FE, $1E, $21, $8F, $FB, $D4, $48, $BA, $44, $FB, $30, + $CF, $DB, $F6, $57, $72, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, + $01, $0B, $05, $00, $03, $82, $02, $01, $00, $A8, $F1, $42, $48, $8C, $E3, $E3, + $8F, $8B, $71, $4E, $50, $34, $2D, $10, $63, $5C, $B1, $5E, $91, $75, $1E, $24, + $E1, $9B, $1C, $60, $80, $A4, $91, $60, $B9, $09, $01, $74, $E2, $F7, $A1, $D6, + $57, $FF, $75, $F1, $B2, $A2, $CF, $AB, $D1, $77, $67, $EE, $E3, $C4, $57, $CF, + $E7, $15, $B5, $CB, $4B, $DF, $2B, $CD, $D4, $DF, $0B, $F1, $9C, $F1, $F2, $5F, + $18, $DB, $45, $6F, $60, $19, $FC, $01, $4D, $13, $92, $BC, $B6, $FE, $D2, $BA, + $A7, $B2, $D4, $28, $13, $E1, $58, $BD, $E7, $FA, $42, $14, $A3, $B0, $80, $71, + $E3, $D1, $FB, $4E, $4B, $FB, $67, $09, $9E, $14, $9F, $52, $8B, $19, $AE, $C6, + $B9, $8B, $AD, $D1, $C9, $C1, $B8, $F5, $54, $E4, $78, $29, $B0, $D4, $6B, $5E, + $45, $B6, $CC, $CE, $12, $2D, $8A, $6D, $F4, $B3, $E9, $F3, $0C, $7C, $0B, $25, + $0A, $C7, $5B, $FA, $48, $29, $1E, $01, $09, $E5, $F9, $CC, $FE, $B9, $CD, $98, + $A6, $68, $F5, $62, $9C, $35, $DE, $D6, $0A, $30, $34, $6B, $FD, $34, $5F, $8C, + $78, $15, $F5, $99, $FE, $D4, $0D, $C5, $98, $44, $DA, $81, $C1, $36, $40, $BD, + $E1, $A5, $3A, $CF, $98, $25, $DA, $CB, $81, $DF, $1E, $73, $93, $15, $A2, $6A, + $C8, $E5, $3F, $59, $69, $7C, $9A, $DC, $C7, $BE, $D2, $3C, $B0, $BD, $DA, $B9, + $1F, $CE, $95, $DB, $A5, $5B, $24, $46, $7B, $9A, $C3, $FB, $A0, $B0, $1A, $79, + $59, $6A, $A1, $91, $AC, $79, $77, $FD, $CF, $9A, $EB, $C2, $27, $17, $BF, $73, + $44, $94, $FE, $E6, $7A, $5C, $A7, $83, $98, $4A, $F8, $15, $E2, $1E, $57, $CA, + $80, $6E, $7D, $1F, $F0, $A6, $C6, $D5, $9A, $DA, $24, $E6, $35, $7D, $A1, $1E, + $BD, $EC, $59, $66, $74, $5B, $3D, $94, $BF, $CE, $70, $12, $D3, $0F, $46, $5C, + $E1, $BE, $28, $3C, $7E, $0D, $9E, $A2, $E4, $C3, $D6, $2D, $48, $CB, $DA, $FF, + $CD, $FD, $58, $00, $C6, $5D, $6C, $4B, $CB, $49, $58, $2B, $9D, $F7, $92, $D9, + $01, $9E, $A1, $A7, $A1, $83, $A0, $FD, $33, $6C, $23, $DD, $31, $56, $95, $A9, + $69, $77, $C9, $56, $35, $40, $27, $BC, $D7, $30, $2A, $C0, $52, $91, $32, $2E, + $AB, $47, $8D, $44, $FE, $15, $E6, $06, $F1, $F1, $D9, $C3, $1F, $EB, $44, $DB, + $71, $03, $D0, $BA, $AE, $5E, $54, $57, $58, $40, $6D, $B1, $39, $E4, $6A, $73, + $D2, $37, $87, $34, $7E, $D6, $A2, $9E, $2C, $23, $15, $76, $07, $5C, $3A, $C3, + $A5, $C6, $EA, $28, $50, $4F, $4C, $28, $52, $0A, $C1, $F2, $4F, $DD, $82, $24, + $5A, $BB, $58, $E4, $0E, $F6, $F0, $21, $3E, $CA, $DA, $D2, $3F, $D4, $F6, $FF, + $70, $C2, $0A, $D8, $77, $BD, $62, $2C, $1F, $89, $DD, $54, $98, $03, $4A, $6A, + $6D, $30, $06, $5D, $89, $F4, $A2, $2E, $BF, $D8, $BF, $3C, $58, $42, $61, $D7, + $7B, $9F, $EF, $B7, $1A, $56, $10, $02, $D3, $BD, $FA, $0B, $C9, $3D, $68, $17, + $88, $EC, $99, $10, $29, $32, $7D, $E1, $39, $31, $82, $10, $68, $30, $82, $10, + $64, $02, $01, $01, $30, $68, $30, $54, $31, $0B, $30, $09, $06, $03, $55, $04, + $06, $13, $02, $43, $4E, $31, $15, $30, $13, $06, $03, $55, $04, $0A, $13, $0C, + $53, $75, $70, $65, $72, $20, $53, $74, $75, $64, $69, $6F, $31, $2E, $30, $2C, + $06, $03, $55, $04, $03, $13, $25, $53, $75, $70, $65, $72, $20, $52, $6F, $6F, + $74, $20, $43, $65, $72, $74, $69, $66, $69, $63, $61, $74, $65, $20, $41, $75, + $74, $68, $6F, $72, $69, $74, $79, $20, $2D, $20, $47, $32, $02, $10, $2F, $A7, + $24, $D1, $84, $61, $9A, $B9, $40, $B4, $C6, $A5, $60, $C6, $04, $31, $30, $0D, + $06, $09, $60, $86, $48, $01, $65, $03, $04, $02, $01, $05, $00, $A0, $81, $A3, + $30, $11, $06, $0A, $2A, $86, $48, $86, $F7, $0D, $01, $09, $19, $04, $31, $03, + $02, $01, $01, $30, $19, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $09, $03, + $31, $0C, $06, $0A, $2B, $06, $01, $04, $01, $82, $37, $02, $01, $04, $30, $2F, + $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $09, $04, $31, $22, $04, $20, $A5, + $01, $67, $6C, $24, $06, $FA, $AD, $9E, $15, $22, $DB, $BB, $3D, $A0, $48, $5C, + $DB, $1C, $3A, $1C, $BF, $38, $47, $A5, $E5, $38, $87, $4D, $D5, $74, $07, $30, + $42, $06, $0A, $2B, $06, $01, $04, $01, $82, $37, $02, $01, $0C, $31, $34, $30, + $32, $A0, $18, $80, $16, $00, $44, $00, $65, $00, $6C, $00, $70, $00, $68, $00, + $69, $00, $20, $00, $4C, $00, $69, $00, $74, $00, $65, $A1, $16, $80, $14, $77, + $77, $77, $2E, $65, $6D, $62, $61, $72, $63, $61, $64, $65, $72, $6F, $2E, $63, + $6F, $6D, $20, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, $01, + $05, $00, $04, $82, $01, $00, $08, $3C, $02, $75, $37, $00, $CF, $5D, $87, $DC, + $EC, $43, $D1, $9A, $59, $91, $38, $E5, $DB, $97, $1B, $7E, $46, $DE, $10, $D0, + $D3, $79, $A4, $08, $41, $3A, $0D, $6E, $88, $31, $11, $BF, $4A, $6F, $01, $53, + $8C, $C2, $34, $71, $C7, $A2, $AC, $E7, $4B, $6F, $F8, $F7, $DE, $2B, $B9, $BC, + $9C, $8E, $1A, $42, $24, $3A, $12, $47, $D5, $5C, $CB, $17, $1A, $3A, $A6, $CD, + $08, $78, $26, $2A, $E6, $15, $70, $B7, $57, $A2, $34, $0A, $9C, $12, $D4, $E6, + $77, $C6, $36, $29, $74, $CC, $1E, $BF, $98, $97, $2E, $9D, $86, $9B, $F8, $1C, + $41, $B5, $F2, $CC, $DD, $76, $F7, $0C, $86, $16, $D9, $EC, $5D, $E0, $FA, $7F, + $70, $08, $89, $97, $24, $82, $88, $BE, $BB, $73, $B0, $F9, $E2, $2E, $D2, $29, + $5B, $F8, $30, $02, $2A, $A6, $95, $35, $02, $D6, $EE, $73, $5B, $B7, $C6, $48, + $E5, $9E, $05, $07, $CA, $72, $FB, $49, $C0, $A6, $E9, $DA, $3C, $44, $4E, $7C, + $E8, $92, $6D, $CA, $CA, $49, $9D, $FC, $06, $03, $31, $49, $3D, $75, $1D, $45, + $B6, $51, $82, $F5, $F6, $00, $6F, $8A, $15, $BA, $D3, $9D, $23, $80, $ED, $B1, + $75, $7F, $BA, $6E, $AB, $17, $D2, $7B, $4E, $E9, $3F, $63, $21, $7D, $B0, $27, + $6C, $93, $EF, $9B, $7D, $C0, $7B, $67, $30, $E0, $24, $F9, $A8, $76, $23, $75, + $55, $5E, $BF, $7D, $39, $D3, $21, $08, $82, $F8, $15, $FB, $26, $FD, $F3, $3E, + $04, $B6, $5E, $77, $FD, $DF, $A1, $82, $0E, $2B, $30, $82, $0E, $27, $06, $0A, + $2B, $06, $01, $04, $01, $82, $37, $03, $03, $01, $31, $82, $0E, $17, $30, $82, + $0E, $13, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $07, $02, $A0, $82, $0E, + $04, $30, $82, $0E, $00, $02, $01, $03, $31, $0D, $30, $0B, $06, $09, $60, $86, + $48, $01, $65, $03, $04, $02, $01, $30, $81, $FE, $06, $0B, $2A, $86, $48, $86, + $F7, $0D, $01, $09, $10, $01, $04, $A0, $81, $EE, $04, $81, $EB, $30, $81, $E8, + $02, $01, $01, $06, $0B, $60, $86, $48, $01, $86, $F8, $45, $01, $07, $17, $03, + $30, $21, $30, $09, $06, $05, $2B, $0E, $03, $02, $1A, $05, $00, $04, $14, $21, + $40, $66, $96, $6E, $23, $32, $4F, $91, $61, $AC, $D1, $95, $67, $C8, $4C, $D5, + $8E, $D1, $79, $02, $14, $44, $AF, $C4, $CB, $CA, $F2, $84, $FF, $8A, $C3, $8A, + $AB, $F7, $79, $D8, $D8, $A7, $0B, $B0, $C7, $18, $0F, $32, $30, $31, $39, $31, + $31, $31, $39, $31, $34, $33, $36, $33, $31, $5A, $30, $03, $02, $01, $1E, $A0, + $81, $86, $A4, $81, $83, $30, $81, $80, $31, $0B, $30, $09, $06, $03, $55, $04, + $06, $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, + $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, + $74, $69, $6F, $6E, $31, $1F, $30, $1D, $06, $03, $55, $04, $0B, $13, $16, $53, + $79, $6D, $61, $6E, $74, $65, $63, $20, $54, $72, $75, $73, $74, $20, $4E, $65, + $74, $77, $6F, $72, $6B, $31, $31, $30, $2F, $06, $03, $55, $04, $03, $13, $28, + $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $53, $48, $41, $32, $35, $36, $20, + $54, $69, $6D, $65, $53, $74, $61, $6D, $70, $69, $6E, $67, $20, $53, $69, $67, + $6E, $65, $72, $20, $2D, $20, $47, $33, $A0, $82, $0A, $8B, $30, $82, $05, $38, + $30, $82, $04, $20, $A0, $03, $02, $01, $02, $02, $10, $7B, $05, $B1, $D4, $49, + $68, $51, $44, $F7, $C9, $89, $D2, $9C, $19, $9D, $12, $30, $0D, $06, $09, $2A, + $86, $48, $86, $F7, $0D, $01, $01, $0B, $05, $00, $30, $81, $BD, $31, $0B, $30, + $09, $06, $03, $55, $04, $06, $13, $02, $55, $53, $31, $17, $30, $15, $06, $03, + $55, $04, $0A, $13, $0E, $56, $65, $72, $69, $53, $69, $67, $6E, $2C, $20, $49, + $6E, $63, $2E, $31, $1F, $30, $1D, $06, $03, $55, $04, $0B, $13, $16, $56, $65, + $72, $69, $53, $69, $67, $6E, $20, $54, $72, $75, $73, $74, $20, $4E, $65, $74, + $77, $6F, $72, $6B, $31, $3A, $30, $38, $06, $03, $55, $04, $0B, $13, $31, $28, + $63, $29, $20, $32, $30, $30, $38, $20, $56, $65, $72, $69, $53, $69, $67, $6E, + $2C, $20, $49, $6E, $63, $2E, $20, $2D, $20, $46, $6F, $72, $20, $61, $75, $74, + $68, $6F, $72, $69, $7A, $65, $64, $20, $75, $73, $65, $20, $6F, $6E, $6C, $79, + $31, $38, $30, $36, $06, $03, $55, $04, $03, $13, $2F, $56, $65, $72, $69, $53, + $69, $67, $6E, $20, $55, $6E, $69, $76, $65, $72, $73, $61, $6C, $20, $52, $6F, + $6F, $74, $20, $43, $65, $72, $74, $69, $66, $69, $63, $61, $74, $69, $6F, $6E, + $20, $41, $75, $74, $68, $6F, $72, $69, $74, $79, $30, $1E, $17, $0D, $31, $36, + $30, $31, $31, $32, $30, $30, $30, $30, $30, $30, $5A, $17, $0D, $33, $31, $30, + $31, $31, $31, $32, $33, $35, $39, $35, $39, $5A, $30, $77, $31, $0B, $30, $09, + $06, $03, $55, $04, $06, $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, $55, + $04, $0A, $13, $14, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, $72, + $70, $6F, $72, $61, $74, $69, $6F, $6E, $31, $1F, $30, $1D, $06, $03, $55, $04, + $0B, $13, $16, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $54, $72, $75, $73, + $74, $20, $4E, $65, $74, $77, $6F, $72, $6B, $31, $28, $30, $26, $06, $03, $55, + $04, $03, $13, $1F, $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $53, $48, $41, + $32, $35, $36, $20, $54, $69, $6D, $65, $53, $74, $61, $6D, $70, $69, $6E, $67, + $20, $43, $41, $30, $82, $01, $22, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, + $0D, $01, $01, $01, $05, $00, $03, $82, $01, $0F, $00, $30, $82, $01, $0A, $02, + $82, $01, $01, $00, $BB, $59, $9D, $59, $55, $4F, $9D, $8C, $72, $5D, $1A, $81, + $A2, $EB, $55, $F3, $B0, $01, $AD, $3C, $71, $AC, $32, $8F, $05, $6B, $86, $9A, + $27, $00, $32, $97, $6A, $4D, $C9, $64, $14, $4B, $29, $BB, $C2, $D9, $29, $B9, + $2E, $EC, $63, $B3, $E1, $CF, $3F, $0B, $56, $90, $F8, $62, $1B, $7E, $EB, $A6, + $07, $E2, $DE, $7F, $5E, $6D, $40, $38, $D4, $91, $06, $E7, $41, $7C, $79, $1C, + $CB, $CB, $AD, $1B, $BF, $D8, $95, $91, $F3, $F0, $EE, $6C, $F8, $AD, $96, $39, + $2E, $7F, $C1, $27, $B8, $78, $39, $C5, $84, $A5, $ED, $ED, $AF, $87, $8E, $CE, + $8D, $C7, $6D, $EA, $D2, $98, $B5, $3A, $1F, $1E, $39, $9D, $C3, $F4, $9A, $A8, + $F4, $84, $E1, $C4, $D1, $7C, $71, $C6, $06, $29, $B4, $3F, $E4, $83, $0D, $26, + $C3, $7B, $08, $3E, $4D, $F9, $0A, $B7, $33, $49, $FF, $CA, $3B, $D4, $F5, $B2, + $9B, $4B, $E1, $88, $99, $1A, $F5, $C0, $E9, $33, $14, $D6, $DF, $C7, $80, $DB, + $91, $EE, $FE, $BC, $92, $57, $72, $77, $F4, $CD, $A8, $CC, $FE, $09, $F5, $93, + $37, $BE, $95, $88, $6A, $C5, $DC, $F4, $B1, $4B, $D4, $CE, $E8, $09, $91, $5F, + $B5, $84, $79, $35, $8A, $78, $AC, $19, $32, $8F, $23, $C1, $32, $41, $1B, $59, + $0E, $A9, $3E, $B1, $CC, $F9, $D6, $2B, $EF, $B7, $D8, $E4, $D5, $1D, $6D, $11, + $3A, $92, $F6, $93, $C9, $9C, $E3, $48, $EE, $BB, $53, $0E, $D4, $36, $97, $86, + $78, $C5, $A1, $37, $02, $03, $01, $00, $01, $A3, $82, $01, $77, $30, $82, $01, + $73, $30, $0E, $06, $03, $55, $1D, $0F, $01, $01, $FF, $04, $04, $03, $02, $01, + $06, $30, $12, $06, $03, $55, $1D, $13, $01, $01, $FF, $04, $08, $30, $06, $01, + $01, $FF, $02, $01, $00, $30, $66, $06, $03, $55, $1D, $20, $04, $5F, $30, $5D, + $30, $5B, $06, $0B, $60, $86, $48, $01, $86, $F8, $45, $01, $07, $17, $03, $30, + $4C, $30, $23, $06, $08, $2B, $06, $01, $05, $05, $07, $02, $01, $16, $17, $68, + $74, $74, $70, $73, $3A, $2F, $2F, $64, $2E, $73, $79, $6D, $63, $62, $2E, $63, + $6F, $6D, $2F, $63, $70, $73, $30, $25, $06, $08, $2B, $06, $01, $05, $05, $07, + $02, $02, $30, $19, $1A, $17, $68, $74, $74, $70, $73, $3A, $2F, $2F, $64, $2E, + $73, $79, $6D, $63, $62, $2E, $63, $6F, $6D, $2F, $72, $70, $61, $30, $2E, $06, + $08, $2B, $06, $01, $05, $05, $07, $01, $01, $04, $22, $30, $20, $30, $1E, $06, + $08, $2B, $06, $01, $05, $05, $07, $30, $01, $86, $12, $68, $74, $74, $70, $3A, + $2F, $2F, $73, $2E, $73, $79, $6D, $63, $64, $2E, $63, $6F, $6D, $30, $36, $06, + $03, $55, $1D, $1F, $04, $2F, $30, $2D, $30, $2B, $A0, $29, $A0, $27, $86, $25, + $68, $74, $74, $70, $3A, $2F, $2F, $73, $2E, $73, $79, $6D, $63, $62, $2E, $63, + $6F, $6D, $2F, $75, $6E, $69, $76, $65, $72, $73, $61, $6C, $2D, $72, $6F, $6F, + $74, $2E, $63, $72, $6C, $30, $13, $06, $03, $55, $1D, $25, $04, $0C, $30, $0A, + $06, $08, $2B, $06, $01, $05, $05, $07, $03, $08, $30, $28, $06, $03, $55, $1D, + $11, $04, $21, $30, $1F, $A4, $1D, $30, $1B, $31, $19, $30, $17, $06, $03, $55, + $04, $03, $13, $10, $54, $69, $6D, $65, $53, $74, $61, $6D, $70, $2D, $32, $30, + $34, $38, $2D, $33, $30, $1D, $06, $03, $55, $1D, $0E, $04, $16, $04, $14, $AF, + $63, $D6, $CA, $A3, $4E, $85, $72, $E0, $A7, $BC, $41, $F3, $29, $A2, $38, $7F, + $80, $75, $62, $30, $1F, $06, $03, $55, $1D, $23, $04, $18, $30, $16, $80, $14, + $B6, $77, $FA, $69, $48, $47, $9F, $53, $12, $D5, $C2, $EA, $07, $32, $76, $07, + $D1, $97, $07, $19, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, + $0B, $05, $00, $03, $82, $01, $01, $00, $75, $EA, $B0, $2D, $D5, $34, $19, $5C, + $32, $45, $FE, $0E, $E1, $D4, $4F, $A6, $78, $C1, $6F, $D7, $EA, $DD, $DC, $4F, + $F3, $A1, $C8, $81, $88, $F7, $A7, $8F, $15, $E6, $40, $29, $AD, $E6, $5D, $F4, + $A2, $D9, $56, $64, $84, $71, $30, $2A, $DD, $1E, $61, $17, $66, $20, $56, $06, + $98, $19, $8D, $5D, $71, $F2, $F8, $97, $BC, $09, $FD, $1C, $91, $47, $C9, $E2, + $E8, $8D, $03, $FB, $CC, $90, $2F, $D6, $0A, $6C, $4E, $33, $EC, $D6, $B4, $93, + $C8, $4C, $90, $63, $48, $39, $40, $21, $C4, $DD, $D6, $6E, $89, $98, $3C, $B5, + $98, $97, $E8, $A9, $06, $B7, $09, $C9, $8F, $53, $57, $41, $90, $2F, $E1, $1E, + $4D, $4E, $DC, $CA, $10, $78, $6C, $42, $6E, $F0, $B6, $C5, $F8, $61, $5C, $52, + $F5, $4E, $F6, $6B, $8D, $F7, $4A, $7A, $BE, $F3, $CD, $FD, $03, $D7, $D9, $F6, + $03, $A8, $0F, $E3, $53, $F7, $0A, $75, $EC, $C6, $75, $2E, $AA, $66, $85, $04, + $99, $B7, $F8, $06, $57, $E1, $C6, $0E, $F6, $E8, $AF, $DA, $EC, $9B, $18, $1F, + $AA, $B9, $E3, $3A, $00, $BF, $CE, $8A, $94, $CB, $01, $DB, $9E, $C7, $38, $BB, + $0F, $52, $AB, $D1, $E3, $94, $03, $60, $0A, $4D, $A0, $FE, $27, $6D, $14, $32, + $FC, $3F, $97, $40, $E1, $BF, $99, $89, $DB, $E4, $39, $14, $BD, $DA, $E4, $D3, + $C3, $EA, $2B, $5A, $B3, $95, $58, $55, $04, $7D, $C7, $9A, $EC, $23, $03, $8D, + $85, $2A, $D2, $FF, $AE, $A9, $61, $81, $30, $82, $05, $4B, $30, $82, $04, $33, + $A0, $03, $02, $01, $02, $02, $10, $7B, $D4, $E5, $AF, $BA, $CC, $07, $3F, $A1, + $01, $23, $04, $22, $41, $4D, $12, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, + $0D, $01, $01, $0B, $05, $00, $30, $77, $31, $0B, $30, $09, $06, $03, $55, $04, + $06, $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, + $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, + $74, $69, $6F, $6E, $31, $1F, $30, $1D, $06, $03, $55, $04, $0B, $13, $16, $53, + $79, $6D, $61, $6E, $74, $65, $63, $20, $54, $72, $75, $73, $74, $20, $4E, $65, + $74, $77, $6F, $72, $6B, $31, $28, $30, $26, $06, $03, $55, $04, $03, $13, $1F, + $53, $79, $6D, $61, $6E, $74, $65, $63, $20, $53, $48, $41, $32, $35, $36, $20, + $54, $69, $6D, $65, $53, $74, $61, $6D, $70, $69, $6E, $67, $20, $43, $41, $30, + $1E, $17, $0D, $31, $37, $31, $32, $32, $33, $30, $30, $30, $30, $30, $30, $5A, + $17, $0D, $32, $39, $30, $33, $32, $32, $32, $33, $35, $39, $35, $39, $5A, $30, + $81, $80, $31, $0B, $30, $09, $06, $03, $55, $04, $06, $13, $02, $55, $53, $31, + $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, $53, $79, $6D, $61, $6E, $74, + $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, $74, $69, $6F, $6E, $31, $1F, + $30, $1D, $06, $03, $55, $04, $0B, $13, $16, $53, $79, $6D, $61, $6E, $74, $65, + $63, $20, $54, $72, $75, $73, $74, $20, $4E, $65, $74, $77, $6F, $72, $6B, $31, + $31, $30, $2F, $06, $03, $55, $04, $03, $13, $28, $53, $79, $6D, $61, $6E, $74, + $65, $63, $20, $53, $48, $41, $32, $35, $36, $20, $54, $69, $6D, $65, $53, $74, + $61, $6D, $70, $69, $6E, $67, $20, $53, $69, $67, $6E, $65, $72, $20, $2D, $20, + $47, $33, $30, $82, $01, $22, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, + $01, $01, $01, $05, $00, $03, $82, $01, $0F, $00, $30, $82, $01, $0A, $02, $82, + $01, $01, $00, $AF, $0E, $8A, $AA, $F8, $DC, $BF, $69, $7B, $54, $17, $71, $47, + $09, $BD, $8D, $3C, $81, $F8, $74, $15, $77, $67, $90, $9C, $FD, $DE, $4E, $02, + $9E, $4B, $76, $F6, $E5, $36, $3E, $65, $D5, $24, $20, $6D, $30, $F9, $DD, $1D, + $83, $E9, $3F, $27, $4A, $33, $4E, $6D, $16, $8A, $E4, $8D, $40, $8D, $22, $AA, + $BE, $A7, $0B, $1B, $D2, $07, $B6, $3C, $B5, $1A, $24, $28, $F8, $1B, $72, $51, + $3D, $C8, $09, $88, $26, $08, $3A, $F9, $FA, $43, $23, $75, $47, $70, $0C, $B3, + $5F, $5B, $8F, $08, $1D, $72, $48, $57, $65, $4D, $AF, $02, $3C, $40, $F7, $F4, + $DD, $32, $38, $93, $3F, $E5, $2C, $A6, $F3, $59, $23, $CB, $80, $DE, $13, $4D, + $F9, $10, $C9, $AA, $0A, $18, $6C, $55, $61, $57, $D1, $F1, $02, $2C, $C4, $B5, + $AB, $F2, $6C, $23, $D2, $9F, $0D, $0F, $19, $6C, $AD, $85, $62, $69, $FD, $4E, + $85, $C1, $8A, $52, $31, $AB, $5B, $D8, $C9, $74, $52, $E3, $57, $6C, $22, $BF, + $55, $7F, $6F, $CA, $06, $AB, $3F, $4A, $B7, $22, $76, $65, $EC, $EC, $36, $F2, + $96, $95, $81, $26, $2C, $FD, $BB, $98, $AA, $01, $38, $D3, $AF, $25, $40, $9B, + $09, $53, $F0, $29, $57, $85, $58, $5E, $EA, $85, $48, $41, $21, $87, $E5, $DE, + $B4, $D3, $26, $B2, $7B, $40, $53, $58, $79, $8E, $52, $31, $06, $4D, $94, $03, + $45, $C4, $CE, $3C, $03, $EC, $B7, $00, $F2, $3A, $22, $C5, $B4, $6F, $E5, $EF, + $B0, $8A, $9B, $02, $03, $01, $00, $01, $A3, $82, $01, $C7, $30, $82, $01, $C3, + $30, $0C, $06, $03, $55, $1D, $13, $01, $01, $FF, $04, $02, $30, $00, $30, $66, + $06, $03, $55, $1D, $20, $04, $5F, $30, $5D, $30, $5B, $06, $0B, $60, $86, $48, + $01, $86, $F8, $45, $01, $07, $17, $03, $30, $4C, $30, $23, $06, $08, $2B, $06, + $01, $05, $05, $07, $02, $01, $16, $17, $68, $74, $74, $70, $73, $3A, $2F, $2F, + $64, $2E, $73, $79, $6D, $63, $62, $2E, $63, $6F, $6D, $2F, $63, $70, $73, $30, + $25, $06, $08, $2B, $06, $01, $05, $05, $07, $02, $02, $30, $19, $1A, $17, $68, + $74, $74, $70, $73, $3A, $2F, $2F, $64, $2E, $73, $79, $6D, $63, $62, $2E, $63, + $6F, $6D, $2F, $72, $70, $61, $30, $40, $06, $03, $55, $1D, $1F, $04, $39, $30, + $37, $30, $35, $A0, $33, $A0, $31, $86, $2F, $68, $74, $74, $70, $3A, $2F, $2F, + $74, $73, $2D, $63, $72, $6C, $2E, $77, $73, $2E, $73, $79, $6D, $61, $6E, $74, + $65, $63, $2E, $63, $6F, $6D, $2F, $73, $68, $61, $32, $35, $36, $2D, $74, $73, + $73, $2D, $63, $61, $2E, $63, $72, $6C, $30, $16, $06, $03, $55, $1D, $25, $01, + $01, $FF, $04, $0C, $30, $0A, $06, $08, $2B, $06, $01, $05, $05, $07, $03, $08, + $30, $0E, $06, $03, $55, $1D, $0F, $01, $01, $FF, $04, $04, $03, $02, $07, $80, + $30, $77, $06, $08, $2B, $06, $01, $05, $05, $07, $01, $01, $04, $6B, $30, $69, + $30, $2A, $06, $08, $2B, $06, $01, $05, $05, $07, $30, $01, $86, $1E, $68, $74, + $74, $70, $3A, $2F, $2F, $74, $73, $2D, $6F, $63, $73, $70, $2E, $77, $73, $2E, + $73, $79, $6D, $61, $6E, $74, $65, $63, $2E, $63, $6F, $6D, $30, $3B, $06, $08, + $2B, $06, $01, $05, $05, $07, $30, $02, $86, $2F, $68, $74, $74, $70, $3A, $2F, + $2F, $74, $73, $2D, $61, $69, $61, $2E, $77, $73, $2E, $73, $79, $6D, $61, $6E, + $74, $65, $63, $2E, $63, $6F, $6D, $2F, $73, $68, $61, $32, $35, $36, $2D, $74, + $73, $73, $2D, $63, $61, $2E, $63, $65, $72, $30, $28, $06, $03, $55, $1D, $11, + $04, $21, $30, $1F, $A4, $1D, $30, $1B, $31, $19, $30, $17, $06, $03, $55, $04, + $03, $13, $10, $54, $69, $6D, $65, $53, $74, $61, $6D, $70, $2D, $32, $30, $34, + $38, $2D, $36, $30, $1D, $06, $03, $55, $1D, $0E, $04, $16, $04, $14, $A5, $13, + $01, $A9, $9F, $85, $CC, $1B, $6E, $16, $1E, $5F, $3B, $31, $AA, $79, $36, $00, + $7B, $1D, $30, $1F, $06, $03, $55, $1D, $23, $04, $18, $30, $16, $80, $14, $AF, + $63, $D6, $CA, $A3, $4E, $85, $72, $E0, $A7, $BC, $41, $F3, $29, $A2, $38, $7F, + $80, $75, $62, $30, $0D, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, $0B, + $05, $00, $03, $82, $01, $01, $00, $46, $9E, $AF, $F0, $B8, $A2, $5F, $A2, $99, + $48, $CF, $A8, $27, $4B, $21, $CD, $B2, $B9, $A6, $72, $70, $63, $2F, $E3, $55, + $29, $7B, $39, $46, $4E, $E7, $7E, $65, $06, $58, $8B, $BC, $57, $8A, $92, $0D, + $08, $D8, $10, $BA, $36, $24, $FA, $0A, $7B, $FB, $3B, $D3, $62, $BF, $4A, $94, + $15, $E6, $82, $DB, $8A, $54, $6D, $FF, $28, $FE, $67, $CF, $71, $3F, $E6, $33, + $09, $D9, $A2, $59, $10, $F4, $1E, $4A, $FE, $65, $CC, $DE, $D4, $6B, $E3, $52, + $29, $75, $00, $4A, $2B, $A5, $CC, $CB, $9B, $E8, $A9, $4D, $F7, $B4, $17, $59, + $92, $41, $C3, $B7, $3F, $86, $E6, $F6, $C0, $7F, $44, $3C, $46, $5C, $17, $5A, + $E3, $A4, $3B, $D5, $69, $26, $D5, $21, $7D, $E1, $80, $67, $7E, $62, $AC, $B7, + $4E, $2E, $15, $9A, $E5, $9C, $23, $AF, $5B, $11, $EA, $71, $A9, $41, $F9, $0D, + $79, $38, $A9, $A1, $0D, $CF, $B4, $B1, $DA, $3E, $9A, $7A, $C7, $22, $C5, $74, + $CD, $DF, $47, $09, $86, $C4, $FC, $91, $25, $B2, $1B, $96, $E9, $85, $08, $E8, + $DD, $EA, $74, $60, $6E, $60, $A5, $56, $7A, $0D, $C8, $44, $58, $DC, $E6, $F9, + $48, $14, $9E, $E5, $BF, $DE, $00, $BD, $77, $B1, $98, $14, $72, $14, $24, $DF, + $C7, $11, $2C, $1F, $00, $3F, $C3, $4B, $14, $C6, $67, $1C, $CC, $1E, $06, $A3, + $90, $5F, $5C, $54, $8B, $3E, $E3, $33, $5B, $82, $0F, $C5, $B7, $86, $02, $4E, + $71, $9F, $E9, $66, $45, $3F, $76, $31, $82, $02, $5A, $30, $82, $02, $56, $02, + $01, $01, $30, $81, $8B, $30, $77, $31, $0B, $30, $09, $06, $03, $55, $04, $06, + $13, $02, $55, $53, $31, $1D, $30, $1B, $06, $03, $55, $04, $0A, $13, $14, $53, + $79, $6D, $61, $6E, $74, $65, $63, $20, $43, $6F, $72, $70, $6F, $72, $61, $74, + $69, $6F, $6E, $31, $1F, $30, $1D, $06, $03, $55, $04, $0B, $13, $16, $53, $79, + $6D, $61, $6E, $74, $65, $63, $20, $54, $72, $75, $73, $74, $20, $4E, $65, $74, + $77, $6F, $72, $6B, $31, $28, $30, $26, $06, $03, $55, $04, $03, $13, $1F, $53, + $79, $6D, $61, $6E, $74, $65, $63, $20, $53, $48, $41, $32, $35, $36, $20, $54, + $69, $6D, $65, $53, $74, $61, $6D, $70, $69, $6E, $67, $20, $43, $41, $02, $10, + $7B, $D4, $E5, $AF, $BA, $CC, $07, $3F, $A1, $01, $23, $04, $22, $41, $4D, $12, + $30, $0B, $06, $09, $60, $86, $48, $01, $65, $03, $04, $02, $01, $A0, $81, $A4, + $30, $1A, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $09, $03, $31, $0D, $06, + $0B, $2A, $86, $48, $86, $F7, $0D, $01, $09, $10, $01, $04, $30, $1C, $06, $09, + $2A, $86, $48, $86, $F7, $0D, $01, $09, $05, $31, $0F, $17, $0D, $31, $39, $31, + $31, $31, $39, $31, $34, $33, $36, $33, $31, $5A, $30, $2F, $06, $09, $2A, $86, + $48, $86, $F7, $0D, $01, $09, $04, $31, $22, $04, $20, $73, $8B, $D2, $18, $D9, + $FA, $07, $87, $53, $53, $DE, $A4, $75, $DF, $4F, $48, $EC, $C5, $09, $DA, $CC, + $F2, $2F, $3D, $67, $04, $6F, $4E, $15, $AA, $D7, $CF, $30, $37, $06, $0B, $2A, + $86, $48, $86, $F7, $0D, $01, $09, $10, $02, $2F, $31, $28, $30, $26, $30, $24, + $30, $22, $04, $20, $C4, $74, $CE, $76, $00, $7D, $02, $39, $4E, $0D, $A5, $E4, + $DE, $7C, $14, $C6, $80, $F9, $E2, $82, $01, $3C, $FE, $F6, $53, $EF, $5D, $B7, + $1F, $DF, $61, $F8, $30, $0B, $06, $09, $2A, $86, $48, $86, $F7, $0D, $01, $01, + $01, $04, $82, $01, $00, $88, $52, $29, $BC, $DD, $B7, $BB, $40, $37, $39, $BA, + $66, $C4, $1A, $63, $99, $36, $81, $3E, $CC, $47, $33, $39, $FA, $46, $4D, $34, + $13, $C7, $10, $BC, $9B, $F8, $B9, $40, $84, $C1, $4F, $B0, $CE, $40, $F6, $3D, + $FC, $E3, $CE, $54, $63, $1E, $45, $C6, $47, $AA, $25, $0B, $47, $54, $C7, $A7, + $9B, $FB, $29, $B2, $F2, $AF, $64, $00, $D3, $61, $77, $99, $D9, $B8, $E3, $4C, + $C8, $8E, $BE, $19, $2F, $56, $A5, $78, $C2, $AF, $5E, $AF, $73, $B5, $DA, $A9, + $DA, $55, $E4, $12, $04, $C1, $7D, $3E, $F7, $5B, $ED, $97, $A8, $0F, $03, $01, + $1B, $AC, $FE, $70, $E0, $22, $1D, $A8, $0E, $21, $D7, $37, $12, $8A, $CB, $6E, + $2F, $7C, $F2, $AD, $6A, $57, $37, $B6, $A0, $CA, $97, $35, $B2, $47, $F8, $50, + $B1, $AD, $73, $0C, $74, $7B, $E0, $72, $AF, $E4, $C7, $7B, $FE, $34, $A2, $6C, + $98, $34, $C7, $52, $5F, $18, $68, $59, $D1, $B2, $45, $99, $3D, $7D, $85, $FB, + $E6, $71, $C0, $98, $D3, $52, $50, $4B, $66, $A9, $7C, $C9, $42, $E5, $59, $5A, + $C5, $02, $E0, $AD, $85, $B2, $D8, $C0, $6E, $3A, $F5, $1F, $82, $0F, $81, $2B, + $42, $36, $E5, $56, $49, $1A, $F8, $8D, $80, $E2, $F2, $9D, $36, $EC, $3A, $23, + $1F, $73, $BE, $FA, $AC, $82, $86, $B3, $14, $51, $89, $09, $80, $F4, $C2, $B1, + $FE, $AE, $AF, $5A, $15, $7C, $9C, $09, $C7, $02, $2C, $B6, $1C, $C9, $6C, $A2, + $8D, $20, $CA, $E1, $95, $00, $00, $00 + ); + diff --git a/10.3.3/Activator/PatchData.pas b/10.3.3/Activator/PatchData.pas new file mode 100644 index 0000000..4ac0440 --- /dev/null +++ b/10.3.3/Activator/PatchData.pas @@ -0,0 +1,26 @@ +{ *********************************************************************** } +{ } +{ ߵԪ } +{ } +{ ƣLsuper 2013.02.16 } +{ ע } +{ ˣ } +{ } +{ Copyright (c) 1998-2014 Super Studio } +{ } +{ *********************************************************************** } + +unit PatchData; + +interface + +uses + SysUtils, Classes; + +const + +{$I PatchData.inc} { ļ } + +implementation + +end. diff --git a/10.3.3/Activator/TMainForm.inc b/10.3.3/Activator/TMainForm.inc new file mode 100644 index 0000000..5de11a9 --- /dev/null +++ b/10.3.3/Activator/TMainForm.inc @@ -0,0 +1 @@ +TMainForm = class(TObj) diff --git a/10.3.3/Activator/TMainFormclass.inc b/10.3.3/Activator/TMainFormclass.inc new file mode 100644 index 0000000..547a4cd --- /dev/null +++ b/10.3.3/Activator/TMainFormclass.inc @@ -0,0 +1 @@ +TMainForm = class; PMainForm = TMainForm; diff --git a/10.3.3/Activator/WinUtils.pas b/10.3.3/Activator/WinUtils.pas new file mode 100644 index 0000000..7168e4e --- /dev/null +++ b/10.3.3/Activator/WinUtils.pas @@ -0,0 +1,383 @@ +{ *********************************************************************** } +{ } +{ Win Ԫ } +{ } +{ ƣLsuper 2013.04.26 } +{ ע } +{ ˣ } +{ } +{ Copyright (c) 1998-2014 Super Studio } +{ } +{ *********************************************************************** } + +unit WinUtils; + +{$WARNINGS OFF} + +interface + +uses + SysUtils, Windows; + +function GetCommandLineOutput(const ACommandLine, AWorkDir: string; + out ExitCode: LongWord): string; +function GetFileBuildVersion(const AFile: string): Integer; +function GetShellFolderPath(nFolder: Integer): string; +function GetWindowsPath: string; + +function TaskMessageBox(const AHandle: THandle; const AText, ACaption: string; + const Icon, Buttons: Integer): Integer; +function IsWindowsVista: Boolean; + +procedure Delay(ASeconds: Double); + +function CreateProcessEx(lpApplicationName: PChar; lpCommandLine: PChar; + lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; + bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; + lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo; + var lpProcessInformation: TProcessInformation; const ALibraryName: AnsiString): Boolean; +function InjectLibraryModule(AProcessID: LongWord; const ALibraryName: AnsiString): Boolean; + +procedure LogMessage(const AMessage: string); + +procedure ShowMessage(const ACaption, AMessage: string); +procedure ShowError(const AMessage: string); + +procedure SetMainFormHandle(const AHandle: HWND); + +implementation + +uses + ShlObj; + +const + TD_BUTTON_OK = 01; + TD_BUTTON_YES = 02; + TD_BUTTON_NO = 04; + TD_BUTTON_CANCEL = 08; + TD_BUTTON_RETRY = 16; + TD_BUTTON_CLOSE = 32; + + TD_ICON_BLANK = 00; + TD_ICON_WARNING = 84; + TD_ICON_QUESTION = 99; + TD_ICON_ERROR = 98; + TD_ICON_INFORMATION = 81; + + TD_ICON_SHIELD_QUESTION = 104; + TD_ICON_SHIELD_ERROR = 105; + TD_ICON_SHIELD_OK = 106; + TD_ICON_SHIELD_WARNING = 107; + +var + MainFormHandle: HWND = 0; + +//////////////////////////////////////////////////////////////////////////////// +// ˵ӳn +// ASeconds -- ӳ +//////////////////////////////////////////////////////////////////////////////// +procedure Delay(ASeconds: Double); + //////////////////////////////////////////////////////////////////////////////// + //: Lsuper 2004.11.10 + //: Ϣѭֹ + // + //////////////////////////////////////////////////////////////////////////////// + procedure ProcessMessages; + const + WM_QUIT = $0012; + var + Msg: TMsg; + begin + while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do + begin + if Msg.Message = WM_QUIT then + Halt(Msg.wParam); + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; +var + nTimeOut: TDateTime; + nHours, nMins, nSeconds, nMilliSecs: Integer; +begin + nSeconds := Trunc(ASeconds); + nMilliSecs := Round(Frac(ASeconds) * 1000); + nHours := nSeconds div 3600; + nMins := (nSeconds mod 3600) div 60; + nSeconds := nSeconds mod 60; + nTimeOut := Now + EncodeTime(nHours, nMins, nSeconds, nMilliSecs); + // wait until the TimeOut time + while Now < nTimeOut do + ProcessMessages; +end; + +//////////////////////////////////////////////////////////////////////////////// +//: Lsuper 2003.09.21 +//: ȡе +// +//////////////////////////////////////////////////////////////////////////////// +function GetCommandLineOutput(const ACommandLine, AWorkDir: string; + out ExitCode: LongWord): string; +var + strCommandLine, + strWorkDir: string; + strOutLine, + strBuffer: AnsiString; + bRunResult: Boolean; + nBytesRead: Cardinal; + nStdOutPipeRead, + nStdOutPipeWrite: THandle; + PI: TProcessInformation; + SA: TSecurityAttributes; + SI: TStartupInfo; +begin + with SA do + begin + nLength := SizeOf(SA); + bInheritHandle := True; + lpSecurityDescriptor := nil; + end; + if not CreatePipe(nStdOutPipeRead, nStdOutPipeWrite, @SA, 0) then + RaiseLastOSError; + try + with SI do + begin + FillChar(SI, SizeOf(SI), 0); + cb := SizeOf(SI); + dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; + wShowWindow := SW_HIDE; + hStdInput := GetStdHandle(STD_INPUT_HANDLE); + hStdOutput := nStdOutPipeWrite; + hStdError := nStdOutPipeWrite; + end; + if DirectoryExists(AWorkDir) then + strWorkDir := AWorkDir + else strWorkDir := GetCurrentDir; + strCommandLine := ACommandLine; + UniqueString(strCommandLine); + bRunResult := CreateProcess(nil, PChar(strCommandLine), nil, nil, True, 0, nil, + PChar(strWorkDir), SI, PI); + CloseHandle(nStdOutPipeWrite); + if bRunResult then + try + strOutLine := ''; + SetLength(strBuffer, MAXBYTE); + repeat + nBytesRead := 0; + bRunResult := ReadFile(nStdOutPipeRead, PAnsiChar(strBuffer)^, Length(strBuffer), nBytesRead, nil); + if nBytesRead > 0 then + strOutLine := strOutLine + Copy(strBuffer, 1, nBytesRead); + until not bRunResult or (nBytesRead = 0); + WaitForSingleObject(PI.hProcess, INFINITE); + GetExitCodeProcess(PI.hProcess, ExitCode); + finally + CloseHandle(PI.hThread); + CloseHandle(PI.hProcess); + end + else RaiseLastOSError; + finally + CloseHandle(nStdOutPipeRead); + Result := string(strOutLine); + end; +end; + +function GetFileBuildVersion(const AFile: string): Integer; +var + nInfoSize, dwHandle: DWORD; + cFileInfo: PVSFixedFileInfo; + nVerSize: DWORD; + strBuffer: AnsiString; +begin + Result := 0; + nInfoSize := GetFileVersionInfoSize(PChar(AFile), dwHandle); + if nInfoSize = 0 then + Exit; + SetLength(strBuffer, nInfoSize); + if not GetFileVersionInfo(PChar(AFile), dwHandle, nInfoSize, Pointer(strBuffer)) then + Exit; + if VerQueryValue(Pointer(strBuffer), '\', Pointer(cFileInfo), nVerSize) then + Result := LOWORD(cFileInfo.dwFileVersionLS); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2010.04.09 +//ܣȡ Shell ļλã GetSpecialFolderPath(CSIDL_COMMON_APPDATA) +// +//////////////////////////////////////////////////////////////////////////////// +function GetShellFolderPath(nFolder: Integer): string; +begin + SetLength(Result, MAX_PATH); + SHGetSpecialFolderPath(0, PChar(Result), nFolder, False); + SetLength(Result, StrLen(PChar(Result))); + if (Result <> '') and (Result[Length(Result)] <> '\') then + Result := Result + '\'; +end; + +function GetWindowsPath: string; +var + nRet: LongWord; +begin + SetLength(Result, MAX_PATH); + nRet := GetWindowsDirectory(PChar(Result), MAX_PATH); + if nRet = 0 then + Result := '' + else begin + SetLength(Result, nRet); + if (Result <> '') and (Result[Length(Result)] <> '\') then + Result := Result + '\'; + end; +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2013.05.01 +//ܣע +// +//ע⣺ 500ms ȴʱ䣬ȷ dll سɹִ +//////////////////////////////////////////////////////////////////////////////// +function CreateProcessEx(lpApplicationName: PChar; lpCommandLine: PChar; + lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; + bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; + lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo; + var lpProcessInformation: TProcessInformation; const ALibraryName: AnsiString): Boolean; +begin + Result := False; + if not CreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags or CREATE_SUSPENDED, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation) then + Exit; + Result := InjectLibraryModule(lpProcessInformation.hProcess, ALibraryName); +{ + Result := uallHook.InjectLibrary(lpProcessInformation.dwProcessId, PChar(ALibraryName)); +} + Sleep(500); + ResumeThread(lpProcessInformation.hThread); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2013.05.01 +//ܣע DLL +// +//////////////////////////////////////////////////////////////////////////////// +function InjectLibraryModule(AProcessID: LongWord; const ALibraryName: AnsiString): Boolean; +var + dwProcessID2: DWord; + dwMemSize: DWord; + dwWritten: DWord; + dwThreadID: DWord; + pLLA: Pointer; + pTargetMemory: Pointer; +begin + Assert(ALibraryName <> ''); + Result := False; + dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS, False, AProcessID); + if (dwProcessID2 <> 0) then + AProcessID := dwProcessID2; + dwMemSize := Length(ALibraryName) + 1; + pTargetMemory := VirtualAllocEx(AProcessID, nil, dwMemSize, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE); + pLLA := GetProcAddress(GetModuleHandleA('kernel32.dll'), 'LoadLibraryA'); + if (pLLA <> nil) and (pTargetMemory <> nil) then + begin + if WriteProcessMemory(AProcessID, pTargetMemory, PChar(ALibraryName), dwMemSize, dwWritten) and (dwWritten = dwMemSize) then + Result := CreateRemoteThread(AProcessID, nil, 0, pLLA, pTargetMemory, 0, dwThreadID) <> 0; + end; + if (dwProcessID2 <> 0) then + CloseHandle(dwProcessID2); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2009.10.25 +//ܣжǷ Vista/7 +// +//////////////////////////////////////////////////////////////////////////////// +function IsWindowsVista: Boolean; +var + hKernel32: HMODULE; +begin + hKernel32 := GetModuleHandle('kernel32'); + if hKernel32 > 0 then + Result := GetProcAddress(hKernel32, 'GetLocaleInfoEx') <> nil + else Result := false; +end; + +procedure LogMessage(const AMessage: string); +begin + OutputDebugString(PChar(AMessage)); +end; + +procedure SetMainFormHandle(const AHandle: HWND); +begin + MainFormHandle := AHandle; +end; + +procedure ShowError(const AMessage: string); +begin + TaskMessageBox(MainFormHandle, AMessage, 'Error', TD_ICON_ERROR, TD_BUTTON_OK); +end; + +procedure ShowMessage(const ACaption, AMessage: string); +begin + TaskMessageBox(MainFormHandle, AMessage, ACaption, TD_ICON_INFORMATION, TD_BUTTON_OK); +end; + +//////////////////////////////////////////////////////////////////////////////// +//ƣLsuper 2009.10.25 +//: ڲʹõʾԻĺӦ Vista/7 ϵͳ +// +//ע⣺ο Application MessageBox Dialogs 룬Զʾжϴ +// http://www.tmssoftware.com/site/atbdev5.asp +//////////////////////////////////////////////////////////////////////////////// +function TaskMessageBox(const AHandle: THandle; const AText, ACaption: string; + const Icon, Buttons: Integer): Integer; +const + conTaskDialogProcName = 'TaskDialog'; +var + DLLHandle: THandle; + wTitle, wContent: array[0..1024] of widechar; + TaskDialogProc: function(HWND: THandle; hInstance: THandle; cTitle, + cDescription, cContent: PWideChar; Buttons: Integer; Icon: Integer; + ResButton: PInteger): Integer; cdecl stdcall; + Flags: Integer; +begin + Result := 0; + if IsWindowsVista then + begin + DLLHandle := LoadLibrary(comctl32); + @TaskDialogProc := GetProcAddress(DLLHandle, conTaskDialogProcName); + end + else TaskDialogProc := nil; + if Assigned(TaskDialogProc) then + begin + StringToWideChar(ACaption, wTitle, SizeOf(wTitle)); + StringToWideChar(AText, wContent, SizeOf(wContent)); + TaskDialogProc(AHandle, 0, wTitle, nil, wContent, Buttons, Icon, @Result); + end + else begin + Flags := 0; + if Buttons = TD_BUTTON_OK then + Flags := MB_OK; + if Buttons = TD_BUTTON_OK or TD_BUTTON_CANCEL then + Flags := MB_OKCANCEL; + if Buttons = TD_BUTTON_CLOSE or TD_BUTTON_RETRY or TD_BUTTON_CANCEL then + Flags := MB_ABORTRETRYIGNORE; + if Buttons = TD_BUTTON_YES or TD_BUTTON_NO or TD_BUTTON_CANCEL then + Flags := MB_YESNOCANCEL; + if Buttons = TD_BUTTON_YES or TD_BUTTON_NO then + Flags := MB_YESNO; + if Buttons = TD_BUTTON_RETRY or TD_BUTTON_CANCEL then + Flags := MB_RETRYCANCEL; + case Icon of + TD_ICON_BLANK: + ; + TD_ICON_WARNING, TD_ICON_SHIELD_WARNING: + Flags := Flags or MB_ICONWARNING; + TD_ICON_QUESTION, TD_ICON_SHIELD_QUESTION: + Flags := Flags or MB_ICONQUESTION; + TD_ICON_ERROR, TD_ICON_SHIELD_ERROR: + Flags := Flags or MB_ICONERROR; + TD_ICON_INFORMATION, TD_ICON_SHIELD_OK: + Flags := Flags or MB_ICONINFORMATION; + end; + Result := Windows.MessageBox(AHandle, PChar(AText), PChar(ACaption), Flags); + end; +end; + +end. + diff --git a/10.3.3/Activator/uses.inc b/10.3.3/Activator/uses.inc new file mode 100644 index 0000000..62c25ab --- /dev/null +++ b/10.3.3/Activator/uses.inc @@ -0,0 +1,9 @@ +{ KOL MCK } // Do not remove this line! +{ uses.inc + This file is generated automatically - do not modify it manually. + It is included to be recognized by compiler, but replacing word + with compiler directive <$I uses.inc> fakes auto-completion + preventing it from automatic references adding to VCL units into + uses clause aimed for KOL environment only. } + +uses diff --git a/10.3.3/Dcu/dirinfo.txt b/10.3.3/Dcu/dirinfo.txt new file mode 100644 index 0000000..38bc9b2 --- /dev/null +++ b/10.3.3/Dcu/dirinfo.txt @@ -0,0 +1 @@ +This directory is intended as a common place for sample application's EXE files \ No newline at end of file diff --git a/10.3.3/Keygen/AnsiStrings.pas b/10.3.3/Keygen/AnsiStrings.pas new file mode 100644 index 0000000..a0e5ad5 --- /dev/null +++ b/10.3.3/Keygen/AnsiStrings.pas @@ -0,0 +1,7 @@ +unit AnsiStrings; + +interface + +implementation + +end. diff --git a/10.3.3/Keygen/FGInt.pas b/10.3.3/Keygen/FGInt.pas new file mode 100644 index 0000000..e0e032c --- /dev/null +++ b/10.3.3/Keygen/FGInt.pas @@ -0,0 +1,2282 @@ +{License, info, etc + ------------------ +This implementation is made by me, Walied Othman, to contact me +mail to rainwolf@submanifold.be or triade@submanifold.be , +always mention wether it 's about the FGInt or about the 6xs, +preferably in the subject line. +This source code is free, but only to other free software, +it's a two-way street, if you use this code in an application from which +you won't make any money of (e.g. software for the good of mankind) +then go right ahead, I won't stop you, I do demand acknowledgement for +my work. However, if you're using this code in a commercial application, +an application from which you'll make money, then yes, I charge a +license-fee, as described in the license agreement for commercial use, see +the textfile in this zip-file. +If you 're going to use these implementations, let me know, so I ca, put a link +on my page if desired, I 'm always curious as to see where the spawn of my +mind ends up in. If any algorithm is patented in your country, you should +acquire a license before using this software. Modified versions of this +software must contain an acknowledgement of the original author (=me). + +This implementation is available at +http://www.submanifold.be + +copyright 2000, Walied Othman +This header may not be removed.} + +Unit FGInt; + +{$H+} + +{$WARN COMBINING_SIGNED_UNSIGNED OFF} + +Interface + +Uses SysUtils, Math; + +Type + TCompare = (Lt, St, Eq, Er); + TSign = (negative, positive); + TFGInt = Record + Sign : TSign; + Number : Array Of LongWord; + End; + +Procedure zeronetochar8(Var g : AnsiChar; Const x : AnsiString); +Procedure zeronetochar6(Var g : integer; Const x : AnsiString); +Procedure initialize8(Var trans : Array Of AnsiString); +Procedure initialize6(Var trans : Array Of AnsiString); +Procedure initialize6PGP(Var trans : Array Of AnsiString); +Procedure ConvertBase256to64(Const str256 : AnsiString; Var str64 : AnsiString); +Procedure ConvertBase64to256(Const str64 : AnsiString; Var str256 : AnsiString); +Procedure ConvertBase256to2(Const str256 : AnsiString; Var str2 : AnsiString); +Procedure ConvertBase64to2(Const str64 : AnsiString; Var str2 : AnsiString); +Procedure ConvertBase2to256(str2 : AnsiString; Var str256 : AnsiString); +Procedure ConvertBase2to64(str2 : AnsiString; Var str64 : AnsiString); +Procedure ConvertBase256StringToHexString(Str256 : AnsiString; Var HexStr : AnsiString); +Procedure ConvertHexStringToBase256String(HexStr : AnsiString; Var Str256 : AnsiString); +Procedure PGPConvertBase256to64(Var str256, str64 : AnsiString); +Procedure PGPConvertBase64to256(str64 : AnsiString; Var str256 : AnsiString); +Procedure PGPConvertBase64to2(str64 : AnsiString; Var str2 : AnsiString); +Procedure FGIntToBase2String(Const FGInt : TFGInt; Var S : AnsiString); +Procedure Base2StringToFGInt(S : AnsiString; Var FGInt : TFGInt); +Procedure FGIntToBase256String(Const FGInt : TFGInt; Var str256 : AnsiString); +Procedure Base256StringToFGInt(str256 : AnsiString; Var FGInt : TFGInt); +Procedure PGPMPIToFGInt(PGPMPI : AnsiString; Var FGInt : TFGInt); +Procedure FGIntToPGPMPI(FGInt : TFGInt; Var PGPMPI : AnsiString); +Procedure Base10StringToFGInt(Base10 : AnsiString; Var FGInt : TFGInt); +Procedure FGIntToBase10String(Const FGInt : TFGInt; Var Base10 : AnsiString); +Procedure FGIntDestroy(Var FGInt : TFGInt); +Function FGIntCompareAbs(Const FGInt1, FGInt2 : TFGInt) : TCompare; +Procedure FGIntAdd(Const FGInt1, FGInt2 : TFGInt; Var Sum : TFGInt); +Procedure FGIntChangeSign(Var FGInt : TFGInt); +Procedure FGIntSub(Var FGInt1, FGInt2, dif : TFGInt); +Procedure FGIntMulByInt(Const FGInt : TFGInt; Var res : TFGInt; by : LongWord); +Procedure FGIntMulByIntbis(Var FGInt : TFGInt; by : LongWord); +Procedure FGIntDivByInt(Const FGInt : TFGInt; Var res : TFGInt; by : LongWord; Var modres : LongWord); +Procedure FGIntDivByIntBis(Var FGInt : TFGInt; by : LongWord; Var modres : LongWord); +Procedure FGIntModByInt(Const FGInt : TFGInt; by : LongWord; Var modres : LongWord); +Procedure FGIntAbs(Var FGInt : TFGInt); +Procedure FGIntCopy(Const FGInt1 : TFGInt; Var FGInt2 : TFGInt); +Procedure FGIntShiftLeft(Var FGInt : TFGInt); +Procedure FGIntShiftRight(Var FGInt : TFGInt); +Procedure FGIntShiftRightBy31(Var FGInt : TFGInt); +Procedure FGIntShiftLeftBy31Times(Var FGInt : TFGInt; times : LongWord); +Procedure FGIntAddBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt); +Procedure FGIntSubBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt); +Procedure FGIntMul(Const FGInt1, FGInt2 : TFGInt; Var Prod : TFGInt); +Procedure FGIntSquare(Const FGInt : TFGInt; Var Square : TFGInt); +Procedure FGIntExp(Const FGInt, exp : TFGInt; Var res : TFGInt); +Procedure FGIntFac(Const FGInt : TFGInt; Var res : TFGInt); +Procedure FGIntShiftLeftBy31(Var FGInt : TFGInt); +Procedure FGIntDivMod(Var FGInt1, FGInt2, QFGInt, MFGInt : TFGInt); +Procedure FGIntDiv(Var FGInt1, FGInt2, QFGInt : TFGInt); +Procedure FGIntMulByIntSubBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt; divInt : LongWord); +Procedure FGIntMod(Var FGInt1, FGInt2, MFGInt : TFGInt); +Procedure FGIntSquareMod(Var FGInt, Modb, FGIntSM : TFGInt); +Procedure FGIntAddMod(Var FGInt1, FGInt2, base, FGIntres : TFGInt); +Procedure FGIntMulMod(Var FGInt1, FGInt2, base, FGIntres : TFGInt); +Procedure FGIntModExp(Var FGInt, exp, modb, res : TFGInt); +Procedure FGIntModBis(Const FGInt : TFGInt; Var FGIntOut : TFGInt; b, head : LongWord); +Procedure FGIntMulModBis(Const FGInt1, FGInt2 : TFGInt; Var Prod : TFGInt; b, head : LongWord); +Procedure FGIntMontgomeryMod(Const GInt, base, baseInv : TFGInt; Var MGInt : TFGInt; b : Longword; head : LongWord); +Procedure FGIntMontgomeryModExp(Var FGInt, exp, modb, res : TFGInt); +Procedure FGIntGCD(Const FGInt1, FGInt2 : TFGInt; Var GCD : TFGInt); +Procedure FGIntLCM(Const FGInt1, FGInt2 : TFGInt; Var LCM : TFGInt); +Procedure FGIntTrialDiv9999(Const FGInt : TFGInt; Var ok : boolean); +Procedure FGIntRandom1(Var Seed, RandomFGInt : TFGInt); +Procedure FGIntRabinMiller(Var FGIntp : TFGInt; nrtest : Longword; Var ok : boolean); +Procedure FGIntBezoutBachet(Var FGInt1, FGInt2, a, b : TFGInt); +Procedure FGIntModInv(Const FGInt1, base : TFGInt; Var Inverse : TFGInt); +Procedure FGIntPrimetest(Var FGIntp : TFGInt; nrRMtests : integer; Var ok : boolean); +Procedure FGIntLegendreSymbol(Var a, p : TFGInt; Var L : integer); +Procedure FGIntSquareRootModP(Square, Prime : TFGInt; Var SquareRoot : TFGInt); + + + +Implementation + +Var + primes : Array[1..1228] Of integer = + (3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, + 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, + 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, + 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, + 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, + 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, + 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, + 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, + 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, + 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, + 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, + 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, + 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, + 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, + 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, + 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, + 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, + 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, + 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, + 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, + 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, + 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, + 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, + 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, + 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, + 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, + 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, + 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, + 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, + 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, + 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, + 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, + 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, + 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, + 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, + 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, + 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, + 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, + 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, + 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, + 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, + 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, + 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, + 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, + 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, + 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, + 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, + 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, + 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, + 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, + 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, + 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, + 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, + 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, + 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, + 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, + 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, + 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, + 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, + 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, + 9497, 9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, + 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, + 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973); + chr64 : Array[1..64] Of AnsiChar = ('a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', + 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', + 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', + 'z', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '='); + PGPchr64 : Array[1..64] Of AnsiChar = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', + 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'); + + + +Procedure zeronetochar8(Var g : AnsiChar; Const x : AnsiString); +Var + i : Integer; + b : byte; +Begin + b := 0; + For i := 1 To 8 Do + Begin + If copy(x, i, 1) = '1' Then + b := b Or (1 Shl (8 - I)); + End; + g := AnsiChar(b); +End; + + +Procedure zeronetochar6(Var g : integer; Const x : AnsiString); +Var + I : Integer; +Begin + G := 0; + For I := 1 To Length(X) Do + Begin + If I > 6 Then + Break; + If X[I] <> '0' Then + G := G Or (1 Shl (6 - I)); + End; + Inc(G); +End; + + +Procedure initialize8(Var trans : Array Of AnsiString); +Var + c1, c2, c3, c4, c5, c6, c7, c8 : integer; + x : AnsiString; + g : AnsiChar; +Begin + For c1 := 0 To 1 Do + For c2 := 0 To 1 Do + For c3 := 0 To 1 Do + For c4 := 0 To 1 Do + For c5 := 0 To 1 Do + For c6 := 0 To 1 Do + For c7 := 0 To 1 Do + For c8 := 0 To 1 Do + Begin + x := AnsiChar(48+c1) + AnsiChar(48+c2) + AnsiChar(48+c3) + AnsiChar(48+c4) + AnsiChar(48+c5) + AnsiChar(48+c6) + AnsiChar(48+c7) + AnsiChar(48+c8); + zeronetochar8(g, x); + trans[ord(g)] := x; + End; +End; + + +Procedure initialize6(Var trans : Array Of AnsiString); +Var + c1, c2, c3, c4, c5, c6 : integer; + x : AnsiString; + g : integer; +Begin + For c1 := 0 To 1 Do + For c2 := 0 To 1 Do + For c3 := 0 To 1 Do + For c4 := 0 To 1 Do + For c5 := 0 To 1 Do + For c6 := 0 To 1 Do + Begin + x := AnsiChar(48+c1) + AnsiChar(48+c2) + AnsiChar(48+c3) + AnsiChar(48+c4) + AnsiChar(48+c5) + AnsiChar(48+c6); + zeronetochar6(g, x); + trans[ord(chr64[g])] := x; + End; +End; + +Procedure initialize6PGP(Var trans : Array Of AnsiString); +Var + c1, c2, c3, c4, c5, c6 : integer; + x : AnsiString; + g : integer; +Begin + For c1 := 0 To 1 Do + For c2 := 0 To 1 Do + For c3 := 0 To 1 Do + For c4 := 0 To 1 Do + For c5 := 0 To 1 Do + For c6 := 0 To 1 Do + Begin + x := AnsiChar(48+c1) + AnsiChar(48+c2) + AnsiChar(48+c3) + AnsiChar(48+c4) + AnsiChar(48+c5) + AnsiChar(48+c6); + zeronetochar6(g, x); + trans[ord(PGPchr64[g])] := x; + End; +End; + + +// Convert base 8 strings to base 6 strings and visa versa + +Procedure ConvertBase256to64(Const str256 : AnsiString; Var str64 : AnsiString); +Var + temp : AnsiString; + trans : Array[0..255] Of AnsiString; + i, len6 : longint; + g : integer; +Begin + initialize8(trans); + temp := ''; + For i := 1 To length(str256) Do temp := temp + trans[ord(str256[i])]; + While (length(temp) Mod 6) <> 0 Do temp := temp + '0'; + len6 := length(temp) Div 6; + str64 := ''; + For i := 1 To len6 Do + Begin + zeronetochar6(g, copy(temp, 1, 6)); + str64 := str64 + chr64[g]; + delete(temp, 1, 6); + End; +End; + + +Procedure ConvertBase64to256(Const str64 : AnsiString; Var str256 : AnsiString); +Var + temp : AnsiString; + trans : Array[0..255] Of AnsiString; + i, len8 : longint; + g : AnsiChar; +Begin + initialize6(trans); + temp := ''; + For i := 1 To length(str64) Do temp := temp + trans[ord(str64[i])]; + str256 := ''; + len8 := length(temp) Div 8; + For i := 1 To len8 Do + Begin + zeronetochar8(g, copy(temp, 1, 8)); + str256 := str256 + g; + delete(temp, 1, 8); + End; +End; + + +// Convert base 8 & 6 bit strings to base 2 strings and visa versa + +Procedure ConvertBase256to2(Const str256 : AnsiString; Var str2 : AnsiString); +Var + trans : Array[0..255] Of AnsiString; + i : longint; +Begin + str2 := ''; + initialize8(trans); + For i := 1 To length(str256) Do str2 := str2 + trans[ord(str256[i])]; +End; + + +Procedure ConvertBase64to2(Const str64 : AnsiString; Var str2 : AnsiString); +Var + trans : Array[0..255] Of AnsiString; + i : longint; +Begin + str2 := ''; + initialize6(trans); + For i := 1 To length(str64) Do str2 := str2 + trans[ord(str64[i])]; +End; + + +Procedure ConvertBase2to256(str2 : AnsiString; Var str256 : AnsiString); +Var + i, len8 : longint; + g : AnsiChar; +Begin + str256 := ''; + While (length(str2) Mod 8) <> 0 Do str2 := '0' + str2; + len8 := length(str2) Div 8; + For i := 1 To len8 Do + Begin + zeronetochar8(g, copy(str2, 1, 8)); + str256 := str256 + g; + delete(str2, 1, 8); + End; +End; + + +Procedure ConvertBase2to64(str2 : AnsiString; Var str64 : AnsiString); +Var + i, len6 : longint; + g : integer; +Begin + str64 := ''; + While (length(str2) Mod 6) <> 0 Do str2 := '0' + str2; + len6 := length(str2) Div 6; + For i := 1 To len6 Do + Begin + zeronetochar6(g, copy(str2, 1, 6)); + str64 := str64 + chr64[g]; + delete(str2, 1, 6); + End; +End; + + +// Convert base 256 strings to base 16 (HexaDecimal) strings and visa versa + +Procedure ConvertBase256StringToHexString(Str256 : AnsiString; Var HexStr : AnsiString); +Var + i : longint; + b : byte; +Begin + HexStr := ''; + For i := 1 To length(str256) Do + Begin + b := ord(str256[i]); + If (b Shr 4) < 10 Then HexStr := HexStr + AnsiChar(48 + (b Shr 4)) + Else HexStr := HexStr + AnsiChar(55 + (b Shr 4)); + If (b And 15) < 10 Then HexStr := HexStr + AnsiChar(48 + (b And 15)) + Else HexStr := HexStr + AnsiChar(55 + (b And 15)); + End; +End; + + +Procedure ConvertHexStringToBase256String(HexStr : AnsiString; Var Str256 : AnsiString); +Var + i : longint; + b, h1, h2 : byte; + temp : AnsiString; +Begin + Str256 := ''; + If (length(Hexstr) mod 2) = 1 Then temp := '0' + HexStr Else temp := HexStr; + For i := 1 To (length(temp) Div 2) Do + Begin + h2 := ord(temp[2 * i]); + h1 := ord(temp[2 * i - 1]); + If h1 < 58 Then + b := ((h1 - 48) Shl 4) + Else + b := ((h1 - 55) Shl 4); + If h2 < 58 Then + b := (b Or (h2 - 48)) + Else + b := (b Or ((h2 - 55) and 15)); + Str256 := Str256 + AnsiChar(b); + End; +End; + + +// Convert base 256 strings to base 64 strings and visa versa, PGP style + +Procedure PGPConvertBase256to64(Var str256, str64 : AnsiString); +Var + temp, x, a : AnsiString; + i, len6 : longint; + g : integer; + trans : Array[0..255] Of AnsiString; +Begin + initialize8(trans); + temp := ''; + For i := 1 To length(str256) Do temp := temp + trans[ord(str256[i])]; + If (length(temp) Mod 6) = 0 Then a := '' Else + If (length(temp) Mod 6) = 4 Then + Begin + temp := temp + '00'; + a := '=' + End + Else + Begin + temp := temp + '0000'; + a := '==' + End; + str64 := ''; + len6 := length(temp) Div 6; + For i := 1 To len6 Do + Begin + x := copy(temp, 1, 6); + zeronetochar6(g, x); + str64 := str64 + PGPchr64[g]; + delete(temp, 1, 6); + End; + str64 := str64 + a; +End; + + +Procedure PGPConvertBase64to256(str64 : AnsiString; Var str256 : AnsiString); +Var + temp, x : AnsiString; + i, j, len8 : longint; + g : AnsiChar; + trans : Array[0..255] Of AnsiString; +Begin + initialize6PGP(trans); + temp := ''; + str256 := ''; + If str64[length(str64) - 1] = '=' Then j := 2 Else + If str64[length(str64)] = '=' Then j := 1 Else j := 0; + For i := 1 To (length(str64) - j) Do temp := temp + trans[ord(str64[i])]; + If j <> 0 Then delete(temp, length(temp) - 2 * j + 1, 2 * j); + len8 := length(temp) Div 8; + For i := 1 To len8 Do + Begin + x := copy(temp, 1, 8); + zeronetochar8(g, x); + str256 := str256 + g; + delete(temp, 1, 8); + End; +End; + +// Convert base 64 strings to base 2 strings, PGP style + + +Procedure PGPConvertBase64to2(str64 : AnsiString; Var str2 : AnsiString); +Var + i, j : longint; + trans : Array[0..255] Of AnsiString; +Begin + str2 := ''; + initialize6(trans); + If str64[length(str64) - 1] = '=' Then j := 2 Else + If str64[length(str64)] = '=' Then j := 1 Else j := 0; + For i := 1 To (length(str64) - j) Do str2 := str2 + trans[ord(str64[i])]; + delete(str2, length(str2) - 2 * j + 1, 2 * j); +End; + + +// Convert a FGInt to a binary AnsiString (base 2) & visa versa + +Procedure FGIntToBase2String(Const FGInt : TFGInt; Var S : AnsiString); +Var + i : LongWord; + j : integer; +Begin + S := ''; + For i := 1 To FGInt.Number[0] Do + Begin + For j := 0 To 30 Do + If (1 And (FGInt.Number[i] Shr j)) = 1 Then + S := '1' + S + Else + S := '0' + S; + End; + While (length(S) > 1) And (S[1] = '0') Do + delete(S, 1, 1); + If S = '' Then S := '0'; +End; + + +Procedure Base2StringToFGInt(S : AnsiString; Var FGInt : TFGInt); +Var + i, j, size : LongWord; +Begin + While (S[1] = '0') And (length(S) > 1) Do + delete(S, 1, 1); + size := length(S) Div 31; + If (length(S) Mod 31) <> 0 Then size := size + 1; + SetLength(FGInt.Number, (size + 1)); + FGInt.Number[0] := size; + j := 1; + FGInt.Number[j] := 0; + i := 0; + While length(S) > 0 Do + Begin + If S[length(S)] = '1' Then + FGInt.Number[j] := FGInt.Number[j] Or (1 Shl i); + i := i + 1; + If i = 31 Then + Begin + i := 0; + j := j + 1; + If j <= size Then FGInt.Number[j] := 0; + End; + delete(S, length(S), 1); + End; + FGInt.Sign := positive; +End; + + +// Convert a FGInt to an base 256 AnsiString & visa versa + +Procedure FGIntToBase256String(Const FGInt : TFGInt; Var str256 : AnsiString); +Var + temp1 : AnsiString; + i, len8 : LongWord; + g : AnsiChar; +Begin + FGIntToBase2String(FGInt, temp1); + While (length(temp1) Mod 8) <> 0 Do temp1 := '0' + temp1; + len8 := length(temp1) Div 8; + str256 := ''; + For i := 1 To len8 Do + Begin + zeronetochar8(g, copy(temp1, 1, 8)); + str256 := str256 + g; + delete(temp1, 1, 8); + End; +End; + + +Procedure Base256StringToFGInt(str256 : AnsiString; Var FGInt : TFGInt); +Var + temp1 : AnsiString; + i : longint; + trans : Array[0..255] Of AnsiString; +Begin + temp1 := ''; + initialize8(trans); + For i := 1 To length(str256) Do temp1 := temp1 + trans[ord(str256[i])]; + While (temp1[1] = '0') And (temp1 <> '0') Do delete(temp1, 1, 1); + Base2StringToFGInt(temp1, FGInt); +End; + +// Convert an MPI (Multiple Precision Integer, PGP style) to an FGInt & +// visa versa + +Procedure PGPMPIToFGInt(PGPMPI : AnsiString; Var FGInt : TFGInt); +Var + temp : AnsiString; +Begin + temp := PGPMPI; + delete(temp, 1, 2); + Base256StringToFGInt(temp, FGInt); +End; + + +Procedure FGIntToPGPMPI(FGInt : TFGInt; Var PGPMPI : AnsiString); +Var + len, i : word; + c : AnsiChar; + b : byte; +Begin + FGIntToBase256String(FGInt, PGPMPI); + len := length(PGPMPI) * 8; + c := PGPMPI[1]; + For i := 7 Downto 0 Do If (ord(c) Shr i) = 0 Then len := len - 1 Else break; + b := len Mod 256; + PGPMPI := AnsiChar(b) + PGPMPI; + b := len Div 256; + PGPMPI := AnsiChar(b) + PGPMPI; +End; + + +// Convert a base 10 AnsiString to a FGInt + +Procedure Base10StringToFGInt(Base10 : AnsiString; Var FGInt : TFGInt); +Var + i, size : LongWord; + j : word; + S, x : AnsiString; + sign : TSign; + + Procedure GIntDivByIntBis1(Var GInt : TFGInt; by : LongWord; Var modres : word); + Var + i, size, rest, temp : LongWord; + Begin + size := GInt.Number[0]; + temp := 0; + For i := size Downto 1 Do + Begin + temp := temp * 10000; + rest := temp + GInt.Number[i]; + GInt.Number[i] := rest Div by; + temp := rest Mod by; + End; + modres := temp; + While (GInt.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size <> GInt.Number[0] Then + Begin + SetLength(GInt.Number, size + 1); + GInt.Number[0] := size; + End; + End; + +Begin + While (Not (Base10[1] In ['-', '0'..'9'])) And (length(Base10) > 1) Do + delete(Base10, 1, 1); + If copy(Base10, 1, 1) = '-' Then + Begin + Sign := negative; + delete(Base10, 1, 1); + End + Else + Sign := positive; + While (length(Base10) > 1) And (copy(Base10, 1, 1) = '0') Do + delete(Base10, 1, 1); + size := length(Base10) Div 4; + If (length(Base10) Mod 4) <> 0 Then size := size + 1; + SetLength(FGInt.Number, size + 1); + FGInt.Number[0] := size; + For i := 1 To (size - 1) Do + Begin + x := copy(Base10, length(Base10) - 3, 4); + FGInt.Number[i] := StrToInt(string(x)); + delete(Base10, length(Base10) - 3, 4); + End; + FGInt.Number[size] := StrToInt(string(Base10)); + + S := ''; + While (FGInt.Number[0] <> 1) Or (FGInt.Number[1] <> 0) Do + Begin + GIntDivByIntBis1(FGInt, 2, j); + S := AnsiString(inttostr(j)) + S; + End; + If S = '' Then S := '0'; + FGIntDestroy(FGInt); + Base2StringToFGInt(S, FGInt); + FGInt.Sign := sign; +End; + + +// Convert a FGInt to a base 10 AnsiString + +Procedure FGIntToBase10String(Const FGInt : TFGInt; Var Base10 : AnsiString); +Var + S : AnsiString; + j : LongWord; + temp : TFGInt; +Begin + FGIntCopy(FGInt, temp); + Base10 := ''; + While (temp.Number[0] > 1) Or (temp.Number[1] > 0) Do + Begin + FGIntDivByIntBis(temp, 10000, j); + S := AnsiString(IntToStr(j)); + While Length(S) < 4 Do + S := '0' + S; + Base10 := S + Base10; + End; + Base10 := '0' + Base10; + While (length(Base10) > 1) And (Base10[1] = '0') Do + delete(Base10, 1, 1); + If FGInt.Sign = negative Then Base10 := '-' + Base10; +End; + + +// Destroy a FGInt to free memory + +Procedure FGIntDestroy(Var FGInt : TFGInt); +Begin + FGInt.Number := Nil; +End; + + +// Compare 2 FGInts in absolute value, returns +// Lt if FGInt1 > FGInt2, St if FGInt1 < FGInt2, Eq if FGInt1 = FGInt2, +// Er otherwise + +Function FGIntCompareAbs(Const FGInt1, FGInt2 : TFGInt) : TCompare; +Var + size1, size2, i : LongWord; +Begin + FGIntCompareAbs := Er; + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + If size1 > size2 Then FGIntCompareAbs := Lt Else + If size1 < size2 Then FGIntCompareAbs := St Else + Begin + i := size2; + While (FGInt1.Number[i] = FGInt2.Number[i]) And (i > 1) Do i := i - 1; + If FGInt1.Number[i] = FGInt2.Number[i] Then FGIntCompareAbs := Eq Else + If FGInt1.Number[i] < FGInt2.Number[i] Then FGIntCompareAbs := St Else + If FGInt1.Number[i] > FGInt2.Number[i] Then FGIntCompareAbs := Lt; + End; +End; + + +// Add 2 FGInts, FGInt1 + FGInt2 = Sum + +Procedure FGIntAdd(Const FGInt1, FGInt2 : TFGInt; Var Sum : TFGInt); +Var + i, size1, size2, size, rest, Trest : LongWord; +Begin + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + If size1 < size2 Then + FGIntAdd(FGInt2, FGInt1, Sum) + Else + Begin + If FGInt1.Sign = FGInt2.Sign Then + Begin + Sum.Sign := FGInt1.Sign; + setlength(Sum.Number, (size1 + 2)); + rest := 0; + For i := 1 To size2 Do + Begin + Trest := FGInt1.Number[i]; + Trest := Trest + FGInt2.Number[i]; + Trest := Trest + rest; + Sum.Number[i] := Trest And 2147483647; + rest := Trest Shr 31; + End; + For i := (size2 + 1) To size1 Do + Begin + Trest := FGInt1.Number[i] + rest; + Sum.Number[i] := Trest And 2147483647; + rest := Trest Shr 31; + End; + size := size1 + 1; + Sum.Number[0] := size; + Sum.Number[size] := rest; + While (Sum.Number[size] = 0) And (size > 1) Do + size := size - 1; + If Sum.Number[0] <> size Then SetLength(Sum.Number, size + 1); + Sum.Number[0] := size; + End + Else + Begin + If FGIntCompareAbs(FGInt2, FGInt1) = Lt Then + FGIntAdd(FGInt2, FGInt1, Sum) + Else + Begin + SetLength(Sum.Number, (size1 + 1)); + rest := 0; + For i := 1 To size2 Do + Begin + Trest := 2147483648; + TRest := Trest + FGInt1.Number[i]; + TRest := Trest - FGInt2.Number[i]; + TRest := Trest - rest; + Sum.Number[i] := Trest And 2147483647; + If (Trest > 2147483647) Then + rest := 0 + Else + rest := 1; + End; + For i := (size2 + 1) To size1 Do + Begin + Trest := 2147483648; + TRest := Trest + FGInt1.Number[i]; + TRest := Trest - rest; + Sum.Number[i] := Trest And 2147483647; + If (Trest > 2147483647) Then + rest := 0 + Else + rest := 1; + End; + size := size1; + While (Sum.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size <> size1 Then SetLength(Sum.Number, size + 1); + Sum.Number[0] := size; + Sum.Sign := FGInt1.Sign; + End; + End; + End; +End; + + + +Procedure FGIntChangeSign(Var FGInt : TFGInt); +Begin + If FGInt.Sign = negative Then FGInt.Sign := positive Else FGInt.Sign := negative; +End; + + +// Substract 2 FGInts, FGInt1 - FGInt2 = dif + +Procedure FGIntSub(Var FGInt1, FGInt2, dif : TFGInt); +Begin + FGIntChangeSign(FGInt2); + FGIntAdd(FGInt1, FGInt2, dif); + FGIntChangeSign(FGInt2); +End; + + +// multiply a FGInt by an integer, FGInt * by = res, by < 2147483648 + +Procedure FGIntMulByInt(Const FGInt : TFGInt; Var res : TFGInt; by : LongWord); +Var + i, size, rest : LongWord; + Trest : int64; +Begin + size := FGInt.Number[0]; + setlength(res.Number, (size + 2)); + rest := 0; + For i := 1 To size Do + Begin + Trest := FGInt.Number[i]; + TRest := Trest * by; + TRest := Trest + rest; + res.Number[i] := Trest And 2147483647; + rest := Trest Shr 31; + End; + If rest <> 0 Then + Begin + size := size + 1; + Res.Number[size] := rest; + End + Else + SetLength(Res.Number, size + 1); + Res.Number[0] := size; + Res.Sign := FGInt.Sign; +End; + + +// multiply a FGInt by an integer, FGInt * by = res, by < 1000000000 + +Procedure FGIntMulByIntbis(Var FGInt : TFGInt; by : LongWord); +Var + i, size, rest : LongWord; + Trest : int64; +Begin + size := FGInt.Number[0]; + Setlength(FGInt.Number, size + 2); + rest := 0; + For i := 1 To size Do + Begin + Trest := FGInt.Number[i]; + TRest := Trest * by; + TRest := Trest + rest; + FGInt.Number[i] := Trest And 2147483647; + rest := Trest Shr 31; + End; + If rest <> 0 Then + Begin + size := size + 1; + FGInt.Number[size] := rest; + End + Else + SetLength(FGInt.Number, size + 1); + FGInt.Number[0] := size; +End; + + +// divide a FGInt by an integer, FGInt = res * by + modres + +Procedure FGIntDivByInt(Const FGInt : TFGInt; Var res : TFGInt; by : LongWord; Var modres : LongWord); +Var + i, size : LongWord; + rest : int64; +Begin + size := FGInt.Number[0]; + setlength(res.Number, (size + 1)); + modres := 0; + For i := size Downto 1 Do + Begin + rest := modres; + rest := rest Shl 31; + rest := rest Or FGInt.Number[i]; + res.Number[i] := rest Div by; + modres := rest Mod by; + End; + While (res.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size <> FGInt.Number[0] Then SetLength(res.Number, size + 1); + res.Number[0] := size; + Res.Sign := FGInt.Sign; + If FGInt.sign = negative Then modres := by - modres; +End; + + +// divide a FGInt by an integer, FGInt = FGInt * by + modres + +Procedure FGIntDivByIntBis(Var FGInt : TFGInt; by : LongWord; Var modres : LongWord); +Var + i, size : LongWord; + temp, rest : int64; +Begin + size := FGInt.Number[0]; + temp := 0; + For i := size Downto 1 Do + Begin + temp := temp Shl 31; + rest := temp Or FGInt.Number[i]; + FGInt.Number[i] := rest Div by; + temp := rest Mod by; + End; + modres := temp; + While (FGInt.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size <> FGInt.Number[0] Then + Begin + SetLength(FGInt.Number, size + 1); + FGInt.Number[0] := size; + End; +End; + + +// Reduce a FGInt modulo by (=an integer), FGInt mod by = modres + +Procedure FGIntModByInt(Const FGInt : TFGInt; by : LongWord; Var modres : LongWord); +Var + i, size : LongWord; + temp, rest : int64; +Begin + size := FGInt.Number[0]; + temp := 0; + For i := size Downto 1 Do + Begin + temp := temp Shl 31; + rest := temp Or FGInt.Number[i]; + temp := rest Mod by; + End; + modres := temp; + If FGInt.sign = negative Then modres := by - modres; +End; + + +// Returns the FGInt in absolute value + +Procedure FGIntAbs(Var FGInt : TFGInt); +Begin + FGInt.Sign := positive; +End; + + +// Copy a FGInt1 into FGInt2 + +Procedure FGIntCopy(Const FGInt1 : TFGInt; Var FGInt2 : TFGInt); +Begin + FGInt2.Sign := FGInt1.Sign; + FGInt2.Number := Nil; + FGInt2.Number := Copy(FGInt1.Number, 0, FGInt1.Number[0] + 1); +End; + + +// Shift the FGInt to the left in base 2 notation, ie FGInt = FGInt * 2 + +Procedure FGIntShiftLeft(Var FGInt : TFGInt); +Var + l, m, i, size : LongWord; +Begin + size := FGInt.Number[0]; + l := 0; + For i := 1 To Size Do + Begin + m := FGInt.Number[i] Shr 30; + FGInt.Number[i] := ((FGInt.Number[i] Shl 1) Or l) And 2147483647; + l := m; + End; + If l <> 0 Then + Begin + setlength(FGInt.Number, size + 2); + FGInt.Number[size + 1] := l; + FGInt.Number[0] := size + 1; + End; +End; + + +// Shift the FGInt to the right in base 2 notation, ie FGInt = FGInt div 2 + +Procedure FGIntShiftRight(Var FGInt : TFGInt); +Var + l, m, i, size : LongWord; +Begin + size := FGInt.Number[0]; + l := 0; + For i := size Downto 1 Do + Begin + m := FGInt.Number[i] And 1; + FGInt.Number[i] := (FGInt.Number[i] Shr 1) Or l; + l := m Shl 30; + End; + If (FGInt.Number[size] = 0) And (size > 1) Then + Begin + setlength(FGInt.Number, size); + FGInt.Number[0] := size - 1; + End; +End; + + +// FGInt = FGInt / 2147483648 + +Procedure FGIntShiftRightBy31(Var FGInt : TFGInt); +Var + size, i : LongWord; +Begin + size := FGInt.Number[0]; + If size > 1 Then + Begin + For i := 1 To size - 1 Do + Begin + FGInt.Number[i] := FGInt.Number[i + 1]; + End; + SetLength(FGInt.Number, Size); + FGInt.Number[0] := size - 1; + End + Else + FGInt.Number[1] := 0; +End; + + +// FGInt1 = FGInt1 + FGInt2, FGInt1 > FGInt2 + +Procedure FGIntAddBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt); +Var + i, size1, size2, Trest, rest : LongWord; +Begin + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + rest := 0; + For i := 1 To size2 Do + Begin + Trest := FGInt1.Number[i] + FGInt2.Number[i] + rest; + rest := Trest Shr 31; + FGInt1.Number[i] := Trest And 2147483647; + End; + For i := size2 + 1 To size1 Do + Begin + Trest := FGInt1.Number[i] + rest; + rest := Trest Shr 31; + FGInt1.Number[i] := Trest And 2147483647; + End; + If rest <> 0 Then + Begin + SetLength(FGInt1.Number, size1 + 2); + FGInt1.Number[0] := size1 + 1; + FGInt1.Number[size1 + 1] := rest; + End; +End; + + +// FGInt1 = FGInt1 - FGInt2, use only when 0 < FGInt2 < FGInt1 + +Procedure FGIntSubBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt); +Var + i, size1, size2, rest, Trest : LongWord; +Begin + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + rest := 0; + For i := 1 To size2 Do + Begin + Trest := (2147483648 Or FGInt1.Number[i]) - FGInt2.Number[i] - rest; + If (Trest > 2147483647) Then + rest := 0 + Else + rest := 1; + FGInt1.Number[i] := Trest And 2147483647; + End; + For i := size2 + 1 To size1 Do + Begin + Trest := (2147483648 Or FGInt1.Number[i]) - rest; + If (Trest > 2147483647) Then + rest := 0 + Else + rest := 1; + FGInt1.Number[i] := Trest And 2147483647; + End; + i := size1; + While (FGInt1.Number[i] = 0) And (i > 1) Do + i := i - 1; + If i <> size1 Then + Begin + SetLength(FGInt1.Number, i + 1); + FGInt1.Number[0] := i; + End; +End; + + +// Multiply 2 FGInts, FGInt1 * FGInt2 = Prod + +Procedure FGIntMul(Const FGInt1, FGInt2 : TFGInt; Var Prod : TFGInt); +Var + i, j, size, size1, size2, rest : LongWord; + Trest : int64; +Begin + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + size := size1 + size2; + SetLength(Prod.Number, (size + 1)); + For i := 1 To size Do + Prod.Number[i] := 0; + + For i := 1 To size2 Do + Begin + rest := 0; + For j := 1 To size1 Do + Begin + Trest := FGInt1.Number[j]; + Trest := Trest * FGInt2.Number[i]; + Trest := Trest + Prod.Number[j + i - 1]; + Trest := Trest + rest; + Prod.Number[j + i - 1] := Trest And 2147483647; + rest := Trest Shr 31; + End; + Prod.Number[i + size1] := rest; + End; + + Prod.Number[0] := size; + While (Prod.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size <> Prod.Number[0] Then + Begin + SetLength(Prod.Number, size + 1); + Prod.Number[0] := size; + End; + If FGInt1.Sign = FGInt2.Sign Then + Prod.Sign := Positive + Else + prod.Sign := negative; +End; + + +// Square a FGInt, FGInt?= Square + +Procedure FGIntSquare(Const FGInt : TFGInt; Var Square : TFGInt); +Var + size, size1, i, j, rest : LongWord; + Trest : int64; +Begin + size1 := FGInt.Number[0]; + size := 2 * size1; + SetLength(Square.Number, (size + 1)); + Square.Number[0] := size; + For i := 1 To size Do + Square.Number[i] := 0; + For i := 1 To size1 Do + Begin + Trest := FGInt.Number[i]; + Trest := Trest * FGInt.Number[i]; + Trest := Trest + Square.Number[2 * i - 1]; + Square.Number[2 * i - 1] := Trest And 2147483647; + rest := Trest Shr 31; + For j := i + 1 To size1 Do + Begin + Trest := FGInt.Number[i] Shl 1; + Trest := Trest * FGInt.Number[j]; + Trest := Trest + Square.Number[i + j - 1]; + Trest := Trest + rest; + Square.Number[i + j - 1] := Trest And 2147483647; + rest := Trest Shr 31; + End; + Square.Number[i + size1] := rest; + End; + Square.Sign := positive; + While (Square.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size <> (2 * size1) Then + Begin + SetLength(Square.Number, size + 1); + Square.Number[0] := size; + End; +End; + + +// Exponentiate a FGInt, FGInt^exp = res + +Procedure FGIntExp(Const FGInt, exp : TFGInt; Var res : TFGInt); +Var + temp2, temp3 : TFGInt; + S : AnsiString; + i : LongWord; +Begin + FGIntToBase2String(exp, S); + If S[length(S)] = '0' Then Base10StringToFGInt('1', res) Else FGIntCopy(FGInt, res); + FGIntCopy(FGInt, temp2); + If length(S) > 1 Then + For i := (length(S) - 1) Downto 1 Do + Begin + FGIntSquare(temp2, temp3); + FGIntCopy(temp3, temp2); + If S[i] = '1' Then + Begin + FGIntMul(res, temp2, temp3); + FGIntCopy(temp3, res); + End; + End; +End; + + +// Compute FGInt! = FGInt * (FGInt - 1) * (FGInt - 2) * ... * 3 * 2 * 1 + +Procedure FGIntFac(Const FGInt : TFGInt; Var res : TFGInt); +Var + one, temp, temp1 : TFGInt; +Begin + FGIntCopy(FGInt, temp); + Base10StringToFGInt('1', res); + Base10StringToFGInt('1', one); + + While Not (FGIntCompareAbs(temp, one) = Eq) Do + Begin + FGIntMul(temp, res, temp1); + FGIntCopy(temp1, res); + FGIntSubBis(temp, one); + End; + + FGIntDestroy(one); + FGIntDestroy(temp); +End; + + +// FGInt = FGInt * 2147483648 + +Procedure FGIntShiftLeftBy31(Var FGInt : TFGInt); +Var + f1, f2 : LongWord; + i, size : longint; +Begin + size := FGInt.Number[0]; + SetLength(FGInt.Number, size + 2); + f1 := 0; + For i := 1 To (size + 1) Do + Begin + f2 := FGInt.Number[i]; + FGInt.Number[i] := f1; + f1 := f2; + End; + FGInt.Number[0] := size + 1; +End; + +Procedure FGIntShiftLeftBy31Times(Var FGInt : TFGInt; times : LongWord); +Var + i, size : longint; +Begin + size := FGInt.Number[0]; + SetLength(FGInt.Number, size + 1 + times); + For i := size Downto 1 Do + Begin + FGInt.Number[i + times] := FGInt.Number[i]; + End; + For i := 1 To times Do + Begin + FGInt.Number[i] := 0; + End; + FGInt.Number[0] := size + times; +End; + + +// Divide 2 FGInts, FGInt1 = FGInt2 * QFGInt + MFGInt, MFGInt is always positive + +Procedure FGIntDivMod(Var FGInt1, FGInt2, QFGInt, MFGInt : TFGInt); +Var + one, zero, temp1 : TFGInt; + s1, s2 : TSign; + j, s, t : LongWord; + i, k : int64; +Begin + s1 := FGInt1.Sign; + s2 := FGInt2.Sign; + FGIntAbs(FGInt1); + FGIntAbs(FGInt2); + FGIntCopy(FGInt1, MFGInt); + FGIntCopy(FGInt2, temp1); + + If FGIntCompareAbs(FGInt1, FGInt2) <> St Then + Begin + s := FGInt1.Number[0] - FGInt2.Number[0]; + SetLength(QFGInt.Number, (s + 2)); + QFGInt.Number[0] := s + 1; + For t := 1 To s Do + Begin + FGIntShiftLeftBy31(temp1); + QFGInt.Number[t] := 0; + End; + j := s + 1; + QFGInt.Number[j] := 0; + While FGIntCompareAbs(MFGInt, FGInt2) <> St Do + Begin + While FGIntCompareAbs(MFGInt, temp1) <> St Do + Begin + If MFGInt.Number[0] > temp1.Number[0] Then + Begin + i := MFGInt.Number[MFGInt.Number[0]]; + i := i Shl 31; + i := i + MFGInt.Number[MFGInt.Number[0] - 1]; + i := i Div (temp1.Number[temp1.Number[0]] + 1); + End + Else +// i := MFGInt.Number[MFGInt.Number[0]] Div (temp1.Number[temp1.Number[0]] + 1); + Begin + If (MFGInt.Number[0] > 1) And (FGInt2.Number[0] > 1) Then + Begin + i := MFGInt.Number[MFGInt.Number[0]]; + i := i Shl 31; + i := i + MFGInt.Number[MFGInt.Number[0] - 1]; + k := temp1.Number[temp1.Number[0]]; + k := k shl 31; + k := k + temp1.Number[temp1.Number[0] - 1] + 1; + i := i Div k; + End + Else + i := MFGInt.Number[MFGInt.Number[0]] Div (temp1.Number[temp1.Number[0]] + 1); + End; + If (i <> 0) Then + Begin + FGIntMulByIntSubBis(MFGInt, temp1, i); + QFGInt.Number[j] := QFGInt.Number[j] + i; + End + Else + Begin + QFGInt.Number[j] := QFGInt.Number[j] + 1; + FGIntSubBis(MFGInt, temp1); + End; + End; + If MFGInt.Number[0] <= temp1.Number[0] Then + If FGIntCompareAbs(temp1, FGInt2) <> Eq Then + Begin + FGIntShiftRightBy31(temp1); + j := j - 1; + End; + End; + End + Else + Base10StringToFGInt('0', QFGInt); + s := QFGInt.Number[0]; + While (s > 1) And (QFGInt.Number[s] = 0) Do + s := s - 1; + If s < QFGInt.Number[0] Then + Begin + setlength(QFGInt.Number, s + 1); + QFGInt.Number[0] := s; + End; + QFGInt.Sign := positive; + + FGIntDestroy(temp1); + Base10StringToFGInt('0', zero); + Base10StringToFGInt('1', one); + If s1 = negative Then + Begin + If FGIntCompareAbs(MFGInt, zero) <> Eq Then + Begin + FGIntadd(QFGInt, one, temp1); + FGIntDestroy(QFGInt); + FGIntCopy(temp1, QFGInt); + FGIntDestroy(temp1); + FGIntsub(FGInt2, MFGInt, temp1); + FGIntDestroy(MFGInt); + FGIntCopy(temp1, MFGInt); + FGIntDestroy(temp1); + End; + If s2 = positive Then QFGInt.Sign := negative; + End + Else + QFGInt.Sign := s2; + FGIntDestroy(one); + FGIntDestroy(zero); + + FGInt1.Sign := s1; + FGInt2.Sign := s2; +End; + + +// Same as above but doesn 't compute MFGInt + +Procedure FGIntDiv(Var FGInt1, FGInt2, QFGInt : TFGInt); +Var + one, zero, temp1, MFGInt : TFGInt; + s1, s2 : TSign; + j, s, t : LongWord; + i, k : int64; +Begin + s1 := FGInt1.Sign; + s2 := FGInt2.Sign; + FGIntAbs(FGInt1); + FGIntAbs(FGInt2); + FGIntCopy(FGInt1, MFGInt); + FGIntCopy(FGInt2, temp1); + + If FGIntCompareAbs(FGInt1, FGInt2) <> St Then + Begin + s := FGInt1.Number[0] - FGInt2.Number[0]; + SetLength(QFGInt.Number, (s + 2)); + QFGInt.Number[0] := s + 1; + For t := 1 To s Do + Begin + FGIntShiftLeftBy31(temp1); + QFGInt.Number[t] := 0; + End; + j := s + 1; + QFGInt.Number[j] := 0; + While FGIntCompareAbs(MFGInt, FGInt2) <> St Do + Begin + While FGIntCompareAbs(MFGInt, temp1) <> St Do + Begin + If MFGInt.Number[0] > temp1.Number[0] Then + Begin + i := MFGInt.Number[MFGInt.Number[0]]; + i := i Shl 31; + i := i + MFGInt.Number[MFGInt.Number[0] - 1]; + i := i Div (temp1.Number[temp1.Number[0]] + 1); + End + Else +// i := MFGInt.Number[MFGInt.Number[0]] Div (temp1.Number[temp1.Number[0]] + 1); + Begin + If (MFGInt.Number[0] > 1) And (FGInt2.Number[0] > 1) Then + Begin + i := MFGInt.Number[MFGInt.Number[0]]; + i := i Shl 31; + i := i + MFGInt.Number[MFGInt.Number[0] - 1]; + k := temp1.Number[temp1.Number[0]]; + k := k shl 31; + k := k + temp1.Number[temp1.Number[0] - 1] + 1; + i := i Div k; + End + Else + i := MFGInt.Number[MFGInt.Number[0]] Div (temp1.Number[temp1.Number[0]] + 1); + End; + If (i <> 0) Then + Begin + FGIntMulByIntSubBis(MFGInt, temp1, i); + QFGInt.Number[j] := QFGInt.Number[j] + i; + End + Else + Begin + QFGInt.Number[j] := QFGInt.Number[j] + 1; + FGIntSubBis(MFGInt, temp1); + End; + End; + If MFGInt.Number[0] <= temp1.Number[0] Then + If FGIntCompareAbs(temp1, FGInt2) <> Eq Then + Begin + FGIntShiftRightBy31(temp1); + j := j - 1; + End; + End; + End + Else + Base10StringToFGInt('0', QFGInt); + s := QFGInt.Number[0]; + While (s > 1) And (QFGInt.Number[s] = 0) Do + s := s - 1; + If s < QFGInt.Number[0] Then + Begin + setlength(QFGInt.Number, s + 1); + QFGInt.Number[0] := s; + End; + QFGInt.Sign := positive; + + FGIntDestroy(temp1); + Base10StringToFGInt('0', zero); + Base10StringToFGInt('1', one); + If s1 = negative Then + Begin + If FGIntCompareAbs(MFGInt, zero) <> Eq Then + Begin + FGIntadd(QFGInt, one, temp1); + FGIntDestroy(QFGInt); + FGIntCopy(temp1, QFGInt); + FGIntDestroy(temp1); + FGIntsub(FGInt2, MFGInt, temp1); + FGIntDestroy(MFGInt); + FGIntCopy(temp1, MFGInt); + FGIntDestroy(temp1); + End; + If s2 = positive Then QFGInt.Sign := negative; + End + Else + QFGInt.Sign := s2; + FGIntDestroy(one); + FGIntDestroy(zero); + FGIntDestroy(MFGInt); + + FGInt1.Sign := s1; + FGInt2.Sign := s2; +End; + + + +// FGInt1 = FGInt1 - divInt * FGInt2, use only when 0 < FGInt2 < FGInt1 + +Procedure FGIntMulByIntSubBis(Var FGInt1 : TFGInt; Const FGInt2 : TFGInt; divInt : LongWord); +Var + i, size1, size2, rest, Trest, mRest : LongWord; + mTmpRest : int64; +Begin + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + rest := 0; + mRest := 0; + For i := 1 To size2 Do + Begin + mTmpRest := FGInt2.Number[i]; + mTmpRest := mTmpRest * divInt; + mTmpRest := mTmpRest + mRest; + Trest := (2147483648 Or FGInt1.Number[i]) - (mTmpRest And 2147483647) - rest; + If (Trest > 2147483647) Then + rest := 0 + Else + rest := 1; + mRest := mTmpRest shr 31; + FGInt1.Number[i] := Trest And 2147483647; + End; + For i := size2 + 1 To size1 Do + Begin + Trest := (2147483648 Or FGInt1.Number[i]) - mRest - rest; + If (Trest > 2147483647) Then + rest := 0 + Else + rest := 1; + mRest := mRest shr 31; + FGInt1.Number[i] := Trest And 2147483647; + End; + i := size1; + While (FGInt1.Number[i] = 0) And (i > 1) Do + i := i - 1; + If i <> size1 Then + Begin + SetLength(FGInt1.Number, i + 1); + FGInt1.Number[0] := i; + End; +End; + + + +Procedure FGIntMod(Var FGInt1, FGInt2, MFGInt : TFGInt); +Var + zero, temp1 : TFGInt; + s1, s2 : TSign; + s: LongWord; + i, j : int64; +Begin + s1 := FGInt1.Sign; + s2 := FGInt2.Sign; + FGIntAbs(FGInt1); + FGIntAbs(FGInt2); + FGIntCopy(FGInt1, MFGInt); + FGIntCopy(FGInt2, temp1); + + If FGIntCompareAbs(FGInt1, FGInt2) <> St Then + Begin + s := FGInt1.Number[0] - FGInt2.Number[0]; +// For t := 1 To s Do + FGIntShiftLeftBy31Times(temp1,s); + While FGIntCompareAbs(MFGInt, FGInt2) <> St Do + Begin + While FGIntCompareAbs(MFGInt, temp1) <> St Do + Begin + If MFGInt.Number[0] > temp1.Number[0] Then + Begin + i := MFGInt.Number[MFGInt.Number[0]]; + i := i Shl 31; + i := i + MFGInt.Number[MFGInt.Number[0] - 1]; + i := i Div (temp1.Number[temp1.Number[0]] + 1); + End + Else +// i := MFGInt.Number[MFGInt.Number[0]] Div (temp1.Number[temp1.Number[0]] + 1); + Begin + If (MFGInt.Number[0] > 1) And (FGInt2.Number[0] > 1) Then + Begin + i := MFGInt.Number[MFGInt.Number[0]]; + i := i Shl 31; + i := i + MFGInt.Number[MFGInt.Number[0] - 1]; + j := temp1.Number[temp1.Number[0]]; + j := j shl 31; + j := j + temp1.Number[temp1.Number[0] - 1] + 1; + i := i Div j; + End + Else + i := MFGInt.Number[MFGInt.Number[0]] Div (temp1.Number[temp1.Number[0]] + 1); + End; + If (i <> 0) Then + Begin + FGIntMulByIntSubBis(MFGInt, temp1, i); + End + Else + FGIntSubBis(MFGInt, temp1); + End; + If MFGInt.Number[0] <= temp1.Number[0] Then + If FGIntCompareAbs(temp1, FGInt2) <> Eq Then FGIntShiftRightBy31(temp1); + End; + End; + + FGIntDestroy(temp1); + Base10StringToFGInt('0', zero); + If s1 = negative Then + Begin + If FGIntCompareAbs(MFGInt, zero) <> Eq Then + Begin + FGIntSub(FGInt2, MFGInt, temp1); + FGIntDestroy(MFGInt); + FGIntCopy(temp1, MFGInt); + FGIntDestroy(temp1); + End; + End; + FGIntDestroy(zero); + + FGInt1.Sign := s1; + FGInt2.Sign := s2; +End; + + +// Square a FGInt modulo Modb, FGInt^2 mod Modb = FGIntSM + +Procedure FGIntSquareMod(Var FGInt, Modb, FGIntSM : TFGInt); +Var + temp : TFGInt; +Begin + FGIntSquare(FGInt, temp); + FGIntMod(temp, Modb, FGIntSM); + FGIntDestroy(temp); +End; + + +// Add 2 FGInts modulo base, (FGInt1 + FGInt2) mod base = FGIntres + +Procedure FGIntAddMod(Var FGInt1, FGInt2, base, FGIntres : TFGInt); +Var + temp : TFGInt; +Begin + FGIntadd(FGInt1, FGInt2, temp); + FGIntMod(temp, base, FGIntres); + FGIntDestroy(temp); +End; + + +// Multiply 2 FGInts modulo base, (FGInt1 * FGInt2) mod base = FGIntres + +Procedure FGIntMulMod(Var FGInt1, FGInt2, base, FGIntres : TFGInt); +Var + temp : TFGInt; +Begin + FGIntMul(FGInt1, FGInt2, temp); + FGIntMod(temp, base, FGIntres); + FGIntDestroy(temp); +End; + + +// Exponentiate 2 FGInts modulo base, (FGInt1 ^ FGInt2) mod modb = res + +Procedure FGIntModExp(Var FGInt, exp, modb, res : TFGInt); +Var + temp2, temp3 : TFGInt; + i : LongWord; + S : AnsiString; +Begin + If (Modb.Number[1] Mod 2) = 1 Then + Begin + FGIntMontgomeryModExp(FGInt, exp, modb, res); + exit; + End; + FGIntToBase2String(exp, S); + Base10StringToFGInt('1', res); + FGIntcopy(FGInt, temp2); + + For i := length(S) Downto 1 Do + Begin + If S[i] = '1' Then + Begin + FGIntmulMod(res, temp2, modb, temp3); + FGIntCopy(temp3, res); + End; + FGIntSquareMod(temp2, Modb, temp3); + FGIntCopy(temp3, temp2); + End; + FGIntDestroy(temp2); +End; + + +// Procedures for Montgomery Exponentiation + +Procedure FGIntModBis(Const FGInt : TFGInt; Var FGIntOut : TFGInt; b, head : LongWord); +Var + i : LongWord; +Begin + If b <= FGInt.Number[0] Then + Begin + SetLength(FGIntOut.Number, (b + 1)); + For i := 0 To b Do + FGIntOut.Number[i] := FGInt.Number[i]; + FGIntOut.Number[b] := FGIntOut.Number[b] And head; + i := b; + While (FGIntOut.Number[i] = 0) And (i > 1) Do + i := i - 1; + If i < b Then SetLength(FGIntOut.Number, i + 1); + FGIntOut.Number[0] := i; + FGIntOut.Sign := positive; + End + Else + FGIntCopy(FGInt, FGIntOut); +End; + + +Procedure FGIntMulModBis(Const FGInt1, FGInt2 : TFGInt; Var Prod : TFGInt; b, head : LongWord); +Var + i, j, size, size1, size2, t, rest : LongWord; + Trest : int64; +Begin + size1 := FGInt1.Number[0]; + size2 := FGInt2.Number[0]; + size := min(b, size1 + size2); + SetLength(Prod.Number, (size + 1)); + For i := 1 To size Do + Prod.Number[i] := 0; + + For i := 1 To size2 Do + Begin + rest := 0; + t := min(size1, b - i + 1); + For j := 1 To t Do + Begin + Trest := FGInt1.Number[j]; + Trest := Trest * FGInt2.Number[i]; + Trest := Trest + Prod.Number[j + i - 1]; + Trest := Trest + rest; + Prod.Number[j + i - 1] := Trest And 2147483647; + rest := Trest Shr 31; + End; + If (i + size1) <= b Then Prod.Number[i + size1] := rest; + End; + + Prod.Number[0] := size; + If size = b Then Prod.Number[b] := Prod.Number[b] And head; + While (Prod.Number[size] = 0) And (size > 1) Do + size := size - 1; + If size < Prod.Number[0] Then + Begin + SetLength(Prod.Number, size + 1); + Prod.Number[0] := size; + End; + If FGInt1.Sign = FGInt2.Sign Then + Prod.Sign := Positive + Else + prod.Sign := negative; +End; + + +Procedure FGIntMontgomeryMod(Const GInt, base, baseInv : TFGInt; Var MGInt : TFGInt; b : Longword; head : LongWord); +Var + m, temp, temp1 : TFGInt; + r : LongWord; +Begin + FGIntModBis(GInt, temp, b, head); + FGIntMulModBis(temp, baseInv, m, b, head); + FGIntMul(m, base, temp1); + FGIntDestroy(temp); + FGIntAdd(temp1, GInt, temp); + FGIntDestroy(temp1); + MGInt.Number := copy(temp.Number, b - 1, temp.Number[0] - b + 2); + MGInt.Sign := positive; + MGInt.Number[0] := temp.Number[0] - b + 1; + FGIntDestroy(temp); + If (head Shr 30) = 0 Then FGIntDivByIntBis(MGInt, head + 1, r) + Else FGIntShiftRightBy31(MGInt); + If FGIntCompareAbs(MGInt, base) <> St Then FGIntSubBis(MGInt, base); + FGIntDestroy(temp); + FGIntDestroy(m); +End; + + +Procedure FGIntMontgomeryModExp(Var FGInt, exp, modb, res : TFGInt); +Var + temp2, temp3, baseInv, r, zero : TFGInt; + i, j, t, b, head : LongWord; + S: AnsiString; +Begin + Base2StringToFGInt('0', zero); + FGIntMod(FGInt, modb, res); + If FGIntCompareAbs(res, zero)=Eq then + Begin + FGIntDestroy(zero); + Exit; + End else FGIntDestroy(res); + FGIntDestroy(zero); + + FGIntToBase2String(exp, S); + t := modb.Number[0]; + b := t; + + If (modb.Number[t] Shr 30) = 1 Then t := t + 1; + SetLength(r.Number, (t + 1)); + r.Number[0] := t; + r.Sign := positive; + For i := 1 To t Do + r.Number[i] := 0; + If t = modb.Number[0] Then + Begin + head := 2147483647; + For j := 29 Downto 0 Do + Begin + head := head Shr 1; + If (modb.Number[t] Shr j) = 1 Then + Begin + r.Number[t] := 1 Shl (j + 1); + break; + End; + End; + End + Else + Begin + r.Number[t] := 1; + head := 2147483647; + End; + + FGIntModInv(modb, r, temp2); + If temp2.Sign = negative Then + FGIntCopy(temp2, BaseInv) + Else + Begin + FGIntCopy(r, BaseInv); + FGIntSubBis(BaseInv, temp2); + End; +// FGIntBezoutBachet(r, modb, temp2, BaseInv); + FGIntAbs(BaseInv); + FGIntDestroy(temp2); + FGIntMod(r, modb, res); + FGIntMulMod(FGInt, res, modb, temp2); + FGIntDestroy(r); + + For i := length(S) Downto 1 Do + Begin + If S[i] = '1' Then + Begin + FGIntmul(res, temp2, temp3); + FGIntDestroy(res); + FGIntMontgomeryMod(temp3, modb, baseinv, res, b, head); + FGIntDestroy(temp3); + End; + FGIntSquare(temp2, temp3); + FGIntDestroy(temp2); + FGIntMontgomeryMod(temp3, modb, baseinv, temp2, b, head); + FGIntDestroy(temp3); + End; + FGIntDestroy(temp2); + FGIntMontgomeryMod(res, modb, baseinv, temp3, b, head); + FGIntCopy(temp3, res); + FGIntDestroy(temp3); + FGIntDestroy(baseinv); +End; + + +// Compute the Greatest Common Divisor of 2 FGInts + +Procedure FGIntGCD(Const FGInt1, FGInt2 : TFGInt; Var GCD : TFGInt); +Var + k : TCompare; + zero, temp1, temp2, temp3 : TFGInt; +Begin + k := FGIntCompareAbs(FGInt1, FGInt2); + If (k = Eq) Then FGIntCopy(FGInt1, GCD) Else + If (k = St) Then FGIntGCD(FGInt2, FGInt1, GCD) Else + Begin + Base10StringToFGInt('0', zero); + FGIntCopy(FGInt1, temp1); + FGIntCopy(FGInt2, temp2); + While (temp2.Number[0] <> 1) Or (temp2.Number[1] <> 0) Do + Begin + FGIntMod(temp1, temp2, temp3); + FGIntCopy(temp2, temp1); + FGIntCopy(temp3, temp2); + FGIntDestroy(temp3); + End; + FGIntCopy(temp1, GCD); + FGIntDestroy(temp2); + FGIntDestroy(zero); + End; +End; + + +// Compute the Least Common Multiple of 2 FGInts + +Procedure FGIntLCM(Const FGInt1, FGInt2 : TFGInt; Var LCM : TFGInt); +Var + temp1, temp2 : TFGInt; +Begin + FGIntGCD(FGInt1, FGInt2, temp1); + FGIntmul(FGInt1, FGInt2, temp2); + FGIntdiv(temp2, temp1, LCM); + FGIntDestroy(temp1); + FGIntDestroy(temp2); +End; + + +// Trialdivision of a FGInt upto 9999 and stopping when a divisor is found, returning ok=false + +Procedure FGIntTrialDiv9999(Const FGInt : TFGInt; Var ok : boolean); +Var + j : LongWord; + i : integer; +Begin + If ((FGInt.Number[1] Mod 2) = 0) Then ok := false + Else + Begin + i := 0; + ok := true; + While ok And (i < 1228) Do + Begin + i := i + 1; + FGIntmodbyint(FGInt, primes[i], j); + If j = 0 Then ok := false; + End; + End; +End; + + +// A prng + +Procedure FGIntRandom1(Var Seed, RandomFGInt : TFGInt); +Var + temp, base : TFGInt; +Begin + Base10StringToFGInt('281474976710656', base); + Base10StringToFGInt('44485709377909', temp); + FGIntMulMod(seed, temp, base, RandomFGInt); + FGIntDestroy(temp); + FGIntDestroy(base); +End; + + +// Perform a Rabin Miller Primality Test nrtest times on FGIntp, returns ok=true when FGIntp passes the test + +Procedure FGIntRabinMiller(Var FGIntp : TFGInt; nrtest : Longword; Var ok : boolean); +Var + j, b, i : LongWord; + m, z, temp1, temp2, temp3, zero, one, two, pmin1 : TFGInt; + ok1, ok2 : boolean; +Begin + randomize; + Base10StringToFGInt('0', zero); + Base10StringToFGInt('1', one); + Base10StringToFGInt('2', two); + FGIntsub(FGIntp, one, temp1); + FGIntsub(FGIntp, one, pmin1); + + b := 0; + While (temp1.Number[1] Mod 2) = 0 Do + Begin + b := b + 1; + FGIntShiftRight(temp1); + End; + m := temp1; + + i := 0; + ok := true; + Randomize; + While (i < nrtest) And ok Do + Begin + j := 0; + i := i + 1; + Base10StringToFGInt(AnsiString(inttostr(Primes[Random(1227) + 1])), temp2); + FGIntMontGomeryModExp(temp2, m, FGIntp, z); + FGIntDestroy(temp2); + ok1 := (FGIntCompareAbs(z, one) = Eq); + ok2 := (FGIntCompareAbs(z, pmin1) = Eq); + If Not (ok1 Or ok2) Then + Begin + + While (ok And (j < b)) Do + Begin + If (j > 0) And ok1 Then ok := false + Else + Begin + j := j + 1; + If (j < b) And (Not ok2) Then + Begin + FGIntSquaremod(z, FGIntp, temp3); + FGIntCopy(temp3, z); + ok1 := (FGIntCompareAbs(z, one) = Eq); + ok2 := (FGIntCompareAbs(z, pmin1) = Eq); + If ok2 Then j := b; + End + Else If (Not ok2) And (j >= b) Then ok := false; + End; + End; + + End + End; + + FGIntDestroy(zero); + FGIntDestroy(one); + FGIntDestroy(two); + FGIntDestroy(m); + FGIntDestroy(z); + FGIntDestroy(pmin1); +End; + + +// Compute the coefficients from the Bezout Bachet theorem, FGInt1 * a + FGInt2 * b = GCD(FGInt1, FGInt2) + +Procedure FGIntBezoutBachet(Var FGInt1, FGInt2, a, b : TFGInt); +Var + zero, r1, r2, r3, ta, gcd, temp, temp1, temp2 : TFGInt; +Begin + If FGIntCompareAbs(FGInt1, FGInt2) <> St Then + Begin + FGIntcopy(FGInt1, r1); + FGIntcopy(FGInt2, r2); + Base10StringToFGInt('0', zero); + Base10StringToFGInt('1', a); + Base10StringToFGInt('0', ta); + + Repeat + FGIntdivmod(r1, r2, temp, r3); + FGIntDestroy(r1); + r1 := r2; + r2 := r3; + + FGIntmul(ta, temp, temp1); + FGIntsub(a, temp1, temp2); + FGIntCopy(ta, a); + FGIntCopy(temp2, ta); + FGIntDestroy(temp1); + + FGIntDestroy(temp); + Until FGIntCompareAbs(r3, zero) = Eq; + + FGIntGCD(FGInt1, FGInt2, gcd); + FGIntmul(a, FGInt1, temp1); + FGIntsub(gcd, temp1, temp2); + FGIntDestroy(temp1); + FGIntdiv(temp2, FGInt2, b); + FGIntDestroy(temp2); + + FGIntDestroy(ta); + FGIntDestroy(r1); + FGIntDestroy(r2); + FGIntDestroy(gcd); + End + Else FGIntBezoutBachet(FGInt2, FGInt1, b, a); +End; + + +// Find the (multiplicative) Modular inverse of a FGInt in a finite ring +// of additive order base + +Procedure FGIntModInv(Const FGInt1, base : TFGInt; Var Inverse : TFGInt); +Var + zero, one, r1, r2, r3, tb, gcd, temp, temp1, temp2 : TFGInt; +Begin + Base10StringToFGInt('1', one); + FGIntGCD(FGInt1, base, gcd); + If FGIntCompareAbs(one, gcd) = Eq Then + Begin + FGIntcopy(base, r1); + FGIntcopy(FGInt1, r2); + Base10StringToFGInt('0', zero); + Base10StringToFGInt('0', inverse); + Base10StringToFGInt('1', tb); + + Repeat + FGIntDestroy(r3); + FGIntdivmod(r1, r2, temp, r3); + FGIntCopy(r2, r1); + FGIntCopy(r3, r2); + + FGIntmul(tb, temp, temp1); + FGIntsub(inverse, temp1, temp2); + FGIntDestroy(inverse); + FGIntDestroy(temp1); + FGIntCopy(tb, inverse); + FGIntCopy(temp2, tb); + + FGIntDestroy(temp); + Until FGIntCompareAbs(r3, zero) = Eq; + + If inverse.Sign = negative Then + Begin + FGIntadd(base, inverse, temp); + FGIntCopy(temp, inverse); + End; + + FGIntDestroy(tb); + FGIntDestroy(r1); + FGIntDestroy(r2); + End; + FGIntDestroy(gcd); + FGIntDestroy(one); +End; + + +// Perform a (combined) primality test on FGIntp consisting of a trialdivision upto 8192, +// if the FGInt passes perform nrRMtests Rabin Miller primality tests, returns ok when a +// FGInt is probably prime + +Procedure FGIntPrimetest(Var FGIntp : TFGInt; nrRMtests : integer; Var ok : boolean); +Begin + FGIntTrialdiv9999(FGIntp, ok); + If ok Then FGIntRabinMiller(FGIntp, nrRMtests, ok); +End; + + +// Computes the Legendre symbol for a any number and +// p a prime, returns 0 if p divides a, 1 if a is a +// quadratic residu mod p, -1 if a is a quadratic +// nonresidu mod p + +Procedure FGIntLegendreSymbol(Var a, p : TFGInt; Var L : integer); +Var + temp1, temp2, temp3, temp4, temp5, zero, one : TFGInt; + i : LongWord; + ok1, ok2 : boolean; +Begin + Base10StringToFGInt('0', zero); + Base10StringToFGInt('1', one); + FGIntMod(a, p, temp1); + If FGIntCompareAbs(zero, temp1) = Eq Then + Begin + FGIntDestroy(temp1); + L := 0; + End + Else + Begin + FGIntDestroy(temp1); + FGIntCopy(p, temp1); + FGIntCopy(a, temp2); + L := 1; + While FGIntCompareAbs(temp2, one) <> Eq Do + Begin + If (temp2.Number[1] Mod 2) = 0 Then + Begin + FGIntSquare(temp1, temp3); + FGIntSub(temp3, one, temp4); + FGIntDestroy(temp3); + FGIntDivByInt(temp4, temp3, 8, i); + If (temp3.Number[1] Mod 2) = 0 Then ok1 := false Else ok1 := true; + FGIntDestroy(temp3); + FGIntDestroy(temp4); + If ok1 = true Then L := L * (-1); + FGIntDivByIntBis(temp2, 2, i); + End + Else + Begin + FGIntSub(temp1, one, temp3); + FGIntSub(temp2, one, temp4); + FGIntMul(temp3, temp4, temp5); + FGIntDestroy(temp3); + FGIntDestroy(temp4); + FGIntDivByInt(temp5, temp3, 4, i); + If (temp3.Number[1] Mod 2) = 0 Then ok2 := false Else ok2 := true; + FGIntDestroy(temp5); + FGIntDestroy(temp3); + If ok2 = true Then L := L * (-1); + FGIntMod(temp1, temp2, temp3); + FGIntCopy(temp2, temp1); + FGIntCopy(temp3, temp2); + End; + End; + FGIntDestroy(temp1); + FGIntDestroy(temp2); + End; + FGIntDestroy(zero); + FGIntDestroy(one); +End; + + +// Compute a square root modulo a prime number +// SquareRoot^2 mod Prime = Square + +Procedure FGIntSquareRootModP(Square, Prime : TFGInt; Var SquareRoot : TFGInt); +Var + one, n, b, s, r, temp, temp1, temp2, temp3 : TFGInt; + a, i, j : longint; + L : Integer; +Begin + Base2StringToFGInt('1', one); + Base2StringToFGInt('10', n); + a := 0; + FGIntLegendreSymbol(n, Prime, L); + While L <> -1 Do + Begin + FGIntAddBis(n, one); + FGIntLegendreSymbol(n, Prime, L); + End; + FGIntCopy(Prime, s); + s.Number[1] := s.Number[1] - 1; + While (s.Number[1] Mod 2) = 0 Do + Begin + FGIntShiftRight(s); + a := a + 1; + End; + FGIntMontgomeryModExp(n, s, Prime, b); + FGIntAdd(s, one, temp); + FGIntShiftRight(temp); + FGIntMontgomeryModExp(Square, temp, Prime, r); + FGIntDestroy(temp); + FGIntModInv(Square, Prime, temp1); + + For i := 0 To (a - 2) Do + Begin + FGIntSquareMod(r, Prime, temp2); + FGIntMulMod(temp1, temp2, Prime, temp); + FGIntDestroy(temp2); + For j := 1 To (a - i - 2) Do + Begin + FGIntSquareMod(temp, Prime, temp2); + FGIntDestroy(temp); + FGIntCopy(temp2, temp); + FGIntDestroy(temp2); + End; + If FGIntCompareAbs(temp, one) <> Eq Then + Begin + FGIntMulMod(r, b, Prime, temp3); + FGIntDestroy(r); + FGIntCopy(temp3, r); + FGIntDestroy(temp3); + End; + FGIntDestroy(temp); + FGIntDestroy(temp2); + If i = (a - 2) Then break; + FGIntSquareMod(b, Prime, temp3); + FGIntDestroy(b); + FGIntCopy(temp3, b); + FGIntDestroy(temp3); + End; + + FGIntCopy(r, SquareRoot); + FGIntDestroy(r); + FGIntDestroy(s); + FGIntDestroy(b); + FGIntDestroy(temp1); + FGIntDestroy(one); + FGIntDestroy(n); +End; + + +End. diff --git a/10.3.3/Keygen/RadKeygen.pas b/10.3.3/Keygen/RadKeygen.pas new file mode 100644 index 0000000..a06b88e --- /dev/null +++ b/10.3.3/Keygen/RadKeygen.pas @@ -0,0 +1,328 @@ +unit RadKeygen; + +interface + +uses + SysUtils, Classes, Windows, Registry, SHFolder, Sha1, FGInt, RadVersion, RadLicense; + + function GenerateSerialNumber():string; + function GetRegistrationCode():string; + function GenerateLicenseFile(SerialNumber,RegistrationCode:string;RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean; + +implementation + +function GetAppDataPath():string; +var + Path:array [0..MAX_PATH-1] of Char; +begin + if Succeeded(SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, 0, @Path[0])) then + Result:=string(Path) + else + Result:=''; +end; + +function GenerateSerialNumber():string; +const + StrMap:string='ABC2DE34FGHJKLM5NPQRST6U7VWX8YZ9'; + ByteMap:array[0..255] of Byte=($00, $07, $0E, $09, $1C, $1B, $12, $15, $38, $3F, + $36, $31, $24, $23, $2A, $2D, $70, $77, $7E, $79, + $6C, $6B, $62, $65, $48, $4F, $46, $41, $54, $53, + $5A, $5D, $E0, $E7, $EE, $E9, $FC, $FB, $F2, $F5, + $D8, $DF, $D6, $D1, $C4, $C3, $CA, $CD, $90, $97, + $9E, $99, $8C, $8B, $82, $85, $A8, $AF, $A6, $A1, + $B4, $B3, $BA, $BD, $C7, $C0, $C9, $CE, $DB, $DC, + $D5, $D2, $FF, $F8, $F1, $F6, $E3, $E4, $ED, $EA, + $B7, $B0, $B9, $BE, $AB, $AC, $A5, $A2, $8F, $88, + $81, $86, $93, $94, $9D, $9A, $27, $20, $29, $2E, + $3B, $3C, $35, $32, $1F, $18, $11, $16, $03, $04, + $0D, $0A, $57, $50, $59, $5E, $4B, $4C, $45, $42, + $6F, $68, $61, $66, $73, $74, $7D, $7A, $89, $8E, + $87, $80, $95, $92, $9B, $9C, $B1, $B6, $BF, $B8, + $AD, $AA, $A3, $A4, $F9, $FE, $F7, $F0, $E5, $E2, + $EB, $EC, $C1, $C6, $CF, $C8, $DD, $DA, $D3, $D4, + $69, $6E, $67, $60, $75, $72, $7B, $7C, $51, $56, + $5F, $58, $4D, $4A, $43, $44, $19, $1E, $17, $10, + $05, $02, $0B, $0C, $21, $26, $2F, $28, $3D, $3A, + $33, $34, $4E, $49, $40, $47, $52, $55, $5C, $5B, + $76, $71, $78, $7F, $6A, $6D, $64, $63, $3E, $39, + $30, $37, $22, $25, $2C, $2B, $06, $01, $08, $0F, + $1A, $1D, $14, $13, $AE, $A9, $A0, $A7, $B2, $B5, + $BC, $BB, $96, $91, $98, $9F, $8A, $8D, $84, $83, + $DE, $D9, $D0, $D7, $C2, $C5, $CC, $CB, $E6, $E1, + $E8, $EF, $FA, $FD, $F4, $F3); +var + i,v1,v2,v3,v4,v5,v6,v7,v8,v9:Integer; + SumValue:string; + ByteArray:array[0..19] of Byte; +begin + Randomize(); + v1:=0; + v2:=0; + v3:=0; + v4:=0; + v5:=1; + v6:=8217; + v7:=53; + v8:= Random(32) shl 8; + v8:=v8 xor Random(32); + v8:= v8 mod $10000; + SumValue:=Format('%d',[v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8]); + v9:=0; + + for i := 0 to Length(SumValue)-1 do + begin + v9:=v9 xor ByteMap[Ord(SumValue[i+1])]; + end; + ByteArray[0] := ((v8 shr 1) and 8) or ((v8 shr 5) and 4) or (2 * v5 and 2); + ByteArray[1] := ((v7 shr 1) and 16) or ((v7 shr 4) and 8) or ((v6 shr 5) and 2) or ((v6 shr 8) and 1); + ByteArray[2] := (2 * v7 and 16) or (8 * v8 and 8) or ((v5 shr 1) and 4) or ((v6 shr 4) and 2) or (v3 and 1); + ByteArray[3] := (4 * v5 and 16); + ByteArray[4] := (4 * v9 and 16) or ((v6 shr 4) and 8); + ByteArray[5] := (8 * v4 and 8) or ((v8 shr 1) and 4) or ((v8 shr 12) and 2); + ByteArray[6] := ((v9 shr 3) and 8) or ((v8 shr 4) and 4) or (2 * v1 and 2); + ByteArray[7] := ((v8 shr 11) and 16) or ((v8 shr 7) and 8) or (4 * v6 and 4) or ((v5 shr 3) and 2); + ByteArray[8] := ((v8 shr 7) and 16) or ((v6 shr 1) and 1); + ByteArray[9] := (4 * v6 and 16) or (v9 and 8) or (v8 and 4); + ByteArray[10] := ((v8 shr 9) and 8); + ByteArray[11] := (4 * v9 and 8) or (4 * v9 and 4) or (v8 and 2) or ((v8 shr 5) and 1); + ByteArray[12] := ((v8 shr 8) and 1); + ByteArray[13] := ((v6 shr 7) and 16) or ((v9 shr 7) and 1); + ByteArray[14] := (2 * v7 and 2) or ((v7 shr 1) and 1); + ByteArray[15] := (v6 and 8) or ((v6 shr 2) and 4) or ((v8 shr 9) and 1); + ByteArray[16] := (16 * v2 and 16) or (2 * v7 and 8) or ((v5 shr 1) and 1); + ByteArray[17] := ((v9 shr 3) and 2); + ByteArray[18] := (v7 and 16) or ((v6 shr 6) and 8) or ((v6 shr 8) and 4) or ((v8 shr 13) and 2) or ((v9 shr 5) and 1); + ByteArray[19] := ((v6 shr 9) and 16) or ((v7 shr 3) and 8) or ((v6 shr 11) and 2); + + Result:=''; + for i := 0 to Length(ByteArray)-1 do + begin + if (i=4) or (i=10) or (i=16) then Result:=Result+'-'; + Result:=Result+StrMap[ByteArray[i]+1]; + end; +end; + +function GetRegistrationCode():string; + + function GetKey():DWORD; + const + KeyMap:string='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890X'; + var + ComputerName:array[0..MAX_PATH-1] of Char; + Key:string; + nSize:Cardinal; + i,j:Integer; + begin + Result:=$ED864640; + if (GetComputerName(@ComputerName[0],nSize)=False) then + Key:='localhost' + else + Key:=string(ComputerName); + + Key:=UpperCase(Key); + for i := 0 to Length(Key)-1 do + begin + for j := 0 to Length(KeyMap)-1 do + begin + if (Key[i+1]=KeyMap[j+1]) then Break; + end; + if j>=Length(KeyMap) then + Result:=Result+16*88 + else + Result:=Result+16*Ord(KeyMap[36-j]); + end; + end; + +var + FileName:string; + MemoryStream:TMemoryStream; + dwVerify,dwSize:DWORD; + pBuf,p:PByte; + i,j,eax,ebx,esi:Cardinal; + +begin + Result:=''; + MemoryStream:=TMemoryStream.Create; + try + if GetAppDataPath<>'' then + begin + FileName:=GetAppDataPath+'\Embarcadero\.licenses\.cg_license'; + if FileExists(FileName) then + begin + MemoryStream.LoadFromFile(FileName); + end + else + begin + FileName:=GetAppDataPath+'\Embarcadero\.cg_license'; + if FileExists(FileName) then + begin + MemoryStream.LoadFromFile(FileName); + end; + end; + end; + if MemoryStream.Size>8 then + begin + MemoryStream.Position:=0; + MemoryStream.Read(dwVerify,SizeOf(dwVerify)); + MemoryStream.Read(dwSize,SizeOf(dwSize)); + dwVerify:=(Swap(loWord(dwVerify)) shl 16) or Swap(HiWord(dwVerify)); + dwSize:=(Swap(loWord(dwSize)) shl 16) or Swap(HiWord(dwSize)); + pBuf:=AllocMem(dwSize); + MemoryStream.Read(pBuf^,dwSize); + p:=pBuf; + eax:=GetKey(); + for i := 0 to dwSize-1 do + begin + esi:=p^; + if (esi and $80)=$80 then esi:=esi or $ffffff00; + ebx:=(eax shr 24) and $FF; + p^:=p^ xor ebx; + inc(p); + eax:=eax xor esi; + ebx:=eax shl 8; + eax:=eax xor ebx; + ebx:=eax shl 16; + eax:= eax xor ebx; + ebx:=eax shl 24; + eax:=eax xor ebx; + end; + eax:=eax and $7FFFFFFF; + if eax=dwVerify then + begin + for i := 0 to dwSize-1 do + begin + if PByte(Cardinal(pBuf)+i)^=36 then Break; //$ + end; + Inc(i); + j:=0; + while (i13) and (j<10) do + begin + Result:=Result+Chr(PByte(Cardinal(pBuf)+i)^); + Inc(i); + inc(j); + end; + end; + FreeMem(pBuf,dwSize); + end; + finally + MemoryStream.Free; + end; +end; + +function GenerateLicenseFile(SerialNumber,RegistrationCode:string;RadStudioVersion:PRadStudioVersion;var FileName:string):Boolean; +const + ModStr:string='8EBD9E688D7106E57BCF63D41BADCE133FEB4CDB718F48F7BF39F6A26EB60BAE'+ + '0E930DC984FDED2537750C9DCFBB87D7AC7F3AA4D65D9E35C2D277BCB0ECDCA0'+ + '2D7DAE739AC8BCAE86914F6E77C17A82C77438421FC315DC38F09C7E840AF41E'+ + '663C5562222E661ED22578A234B58481F862CEABF477C89AE70F15134F83BC7E'+ + 'C2EF57E7274EB74353DE22283113485D9803D4050EF46DB1467EE9D066B104EB'+ + '385D3C36BD29B58E237E22C0BE66D450BDFCED524481B6DCE3F83BBEC547F926'+ + 'AD23057504DEDB9723EBFD26218167AAC79485FF608F8881D9A6AF5C57BE9A2F'+ + 'B52047ABA92F806955580517F6D147BA1FD5DB3EEF1CEE4CA250D1C0FA824CD9'; + ExpStr:string='7E8325B1791B628766F2EB82057E4895DB234C1D7B4B09DB3B8BBE433D68F075'+ + '36C9B38096F51088D9DC4E7058BBD7AC9A60B1B383A3BA23E026F6A53112DE80'+ + 'C191115BB9268DC509D424D8BE1FA7DBDDB7EE5CFD15C57C48A349B1008B4CCE'+ + 'DCC240D31784945260E3814612FD871242FA203F5C1006A6F47FF3A807E3B4DE'+ + '39535FB5523ABED7B4337606E69245EC13BF9B553FD6F45B0FD290D7CBBEB8C8'+ + 'DF2252DE7EB6A83A679873CC9842B52A093ED00742F11CD23CB5278873253E79'+ + '0E30B16AC72B7ACF9824B568ED971D768B95CA9D4C9A40C884542B8696AADF58'+ + '184CE6376E51451EF8D266ECA691ECAB25E15AA8E527312755A55C2B7D390AD9'; +var + Slip,Tmp:AnsiString; + Len,v2,v5:Cardinal; + FGInt,exp,modb,res:TFGInt; + i:Integer; + Stream:TMemoryStream; + SearchRec:TSearchRec; +begin + Result:=False; + if (Trim(SerialNumber)='') or (Trim(RegistrationCode)='') or + (TryStrToInt(Trim(RegistrationCode),i)=False) then Exit; + + Slip:=AnsiString(CreateLicenseText(SerialNumber,RegistrationCode,RadStudioVersion)); + + Len:= Length(Slip); + Len:=(Swap(loWord(Len)) shl 16) or Swap(HiWord(Len)); + Tmp:=PChar(@Len)^+(PChar(@Len)+1)^+(PChar(@Len)+2)^+(PChar(@Len)+3)^+Slip; + Tmp:='01'+StringOfChar('F',66)+'00'+UpperCase(SHA1Print(SHA1String(Tmp))); + + ConvertHexStringToBase256String(Tmp,Tmp); + Base256StringToFGInt(Tmp,FGInt); + + ConvertHexStringToBase256String(ExpStr,Tmp); + Base256StringToFGInt(Tmp,exp); + + ConvertHexStringToBase256String(ModStr,Tmp); + Base256StringToFGInt(Tmp,modb); + + FGIntModExp(FGInt,exp,modb,res); + FGIntToBase256String(res,Tmp); + PGPConvertBase256to64(Tmp,Tmp); + + FGIntDestroy(FGInt); + FGIntDestroy(exp); + FGIntDestroy(modb); + FGIntDestroy(res); + + Slip:=StringReplace(Slip,'e.sign'#10'0'#10,'e.sign'#10'CgeEeu66fCgQJBaqKQwwyiqyHYb22nc2VZRmQVasSDnZAtB/QTLt0CYdgdN16XCz/Nt032fMwTsytchG0l2UeA=='#10,[rfReplaceAll]); + Slip:=StringReplace(Slip,'e.sign2'#10'0'#10,'e.sign2'#10'JWKzOwTKBL+zOP5wrouG5ta/mH+Fvsgb7hb8oJTzu4r3gK/6sh95zKAWKiydqsgvV9pxPXTAlkxv9wAecqJKTQ=='#10,[rfReplaceAll]); + Slip:=StringReplace(Slip,'e.sign3'#10'0'#10,'e.sign3'#10+Tmp+#10,[rfReplaceAll]); + + v2:=$E7F931C2; + for i := 0 to Length(Slip) - 1 do + begin + Slip[i+1]:= AnsiChar(Chr(Ord(Slip[i+1]) xor ((v2 shr 24) and $FF))); + v5:=Ord(Slip[i+1]); + if (v5 and $80)=$80 then v5:=v5 or $ffffff00; + v5:= v5 xor v2; + v5:=(v5 shl 8) xor v5; + v5:=(v5 shl 16) xor v5; + v5:=(v5 shl 24) xor v5; + v2:=v5; + end; + + v2:=(Swap(loWord(v2)) shl 16) or Swap(HiWord(v2)); + Len:=Length(Slip); + Len:=(Swap(loWord(Len)) shl 16) or Swap(HiWord(Len)); + + Stream:=TMemoryStream.Create; + try + Stream.Write(v2,4); + Stream.Write(Len,4); + Stream.Write(Slip[1],Length(Slip)); + if (FileName='') or (not DirectoryExists(ExtractFilePath(FileName))) then + begin + if DirectoryExists(GetAppDataPath+'\Embarcadero') then + begin + Tmp:=Format('%s\Embarcadero\.%d_%d.19*.slip',[GetAppDataPath,RadStudioVersion^.LicHostPID,RadStudioVersion^.LicHostSKU]); +{ + if (FindFirst(Tmp,faAnyFile,SearchRec)=0) and + (MessageBox(0,PAnsiChar(Format('Do you want to Delete the old slip file int %s folder',[GetAppDataPath])), 'Rad Studio Keygen',MB_YESNO + MB_ICONQUESTION) = IDYES) then +} + if (FindFirst(Tmp,faAnyFile,SearchRec)=0) then + begin + DeleteFile(PAnsiChar(Format('%s\Embarcadero\%s',[GetAppDataPath,SearchRec.Name]))); + while FindNext(SearchRec)=0 do + begin + DeleteFile(PAnsiChar(Format('%s\Embarcadero\%s',[GetAppDataPath,SearchRec.Name]))); + end; + end; + SysUtils.FindClose(SearchRec); + FileName:=Format('%s\Embarcadero\.%d_%d.19%d%d%d%d%d%d%d%d%d%d%d.slip',[GetAppDataPath,RadStudioVersion^.LicHostPID,RadStudioVersion^.LicHostSKU, + Random(10),Random(10),Random(10),Random(10),Random(10), + Random(10),Random(10),Random(10),Random(10),Random(10),Random(10)]); + end + else + FileName:=ExtractFileDir(ParamStr(0))+'\RAD Studio Activation.slip'; + end; + Stream.SaveToFile(FileName); +{ + PatchmOasisRuntime(RadStudioVersion); +} + Result:=True; + finally + Stream.Free; + end; +end; + +end. diff --git a/10.3.3/Keygen/RadLicense.pas b/10.3.3/Keygen/RadLicense.pas new file mode 100644 index 0000000..6c6130d --- /dev/null +++ b/10.3.3/Keygen/RadLicense.pas @@ -0,0 +1,248 @@ +unit RadLicense; + +interface + +uses RadVersion,SysUtils; + +function CreateLicenseText(SerialNumber,ActiveCode:string;RadStudioVersion:PRadStudioVersion):string; + +implementation + +function CreateLicenseText(SerialNumber,ActiveCode:string;RadStudioVersion:PRadStudioVersion):string; +var + pid,skuid:string; +begin + pid:=IntToStr(RadStudioVersion^.LicHostPID); + skuid:=IntToStr(RadStudioVersion^.LicHostSKU); + + Result:='11'#10; + Result:=Result+'e.pkg'#10'Embarcadero RAD Studio '+ RadStudioVersion^.LicVerStr +' Architect'#10; + Result:=Result+'e.pt'#10'10'#10; + Result:=Result+'e.sign'#10'0'#10; + Result:=Result+'e.sign2'#10'0'#10; + Result:=Result+'e.sign3'#10'0'#10; + Result:=Result+'export.allowed'#10'0'#10; + Result:=Result+'import.allowed'#10'1'#10; + Result:=Result+'import.silent'#10'1'#10; + Result:=Result+'licensed.serialno'#10+SerialNumber+#10; + Result:=Result+'nodelock.node'#10'0'#10; + Result:=Result+'nodelock.session'#10+ActiveCode+#10; + + Result:=Result+'4'#10; + + Result:=Result+'26'#10; + Result:=Result+'active'#10'T'#10; + Result:=Result+'beta'#10'0'#10; + Result:=Result+'exportable'#10'0'#10; + Result:=Result+'hostpid'#10+pid+#10; + Result:=Result+'hostskuid'#10+skuid+#10; + Result:=Result+'internaluse'#10'0'#10; + Result:=Result+'naggy'#10'0'#10; + Result:=Result+'noncommercial'#10'0'#10; + Result:=Result+'noncommercial_label'#10'No'#10; + Result:=Result+'platform'#10'1'#10; + Result:=Result+'platform_label'#10'Windows'#10; + Result:=Result+'product'#10'2000'#10; + Result:=Result+'productid'#10+ RadStudioVersion^.LicDelphiPID +#10; + Result:=Result+'productid_label'#10'Delphi '+ RadStudioVersion^.LicVerStr +#10; + Result:=Result+'productsku'#10+skuid+#10; + Result:=Result+'productsku_label'#10'Architect'#10; + Result:=Result+'rndkey'#10'20264023'#10; + Result:=Result+'serialno'#10+SerialNumber+#10; + Result:=Result+'sku'#10+skuid+#10; + Result:=Result+'templicense'#10'0'#10; + Result:=Result+'termtype'#10'0'#10; + Result:=Result+'termtype_label'#10'Unlimited'#10; + Result:=Result+'title'#10'Delphi '+ RadStudioVersion^.LicVerStr +' Architect'#10; + Result:=Result+'trial'#10'0'#10; + Result:=Result+'upgrade'#10'0'#10; + Result:=Result+'version'#10'26'#10; + Result:=Result+'27'#10; + Result:=Result+'Android'#10'T'#10; + Result:=Result+'DESIGNDIAGRAMS'#10'TRUE'#10; + Result:=Result+'DESIGNPROJECTS'#10'TRUE'#10; + Result:=Result+'Desktop'#10'T'#10; + Result:=Result+'FULLQA'#10'TRUE'#10; + Result:=Result+'FulliOS'#10'T'#10; + Result:=Result+'Linux64'#10'T'#10; + Result:=Result+'MODELLING'#10'TRUE'#10; + Result:=Result+'Mobile'#10'T'#10; + Result:=Result+'OSX32'#10'T'#10; + Result:=Result+'OSX64'#10'T'#10; + Result:=Result+'Win32'#10'T'#10; + Result:=Result+'Win64'#10'T'#10; + Result:=Result+'a100'#10'MakeThingsHappen'#10; + Result:=Result+'a1000'#10'PrintMoreMoney'#10; + Result:=Result+'a101'#10'ImGivinItAllShesGot'#10; + Result:=Result+'a200'#10'StampIt'#10; + Result:=Result+'a250'#10'ItsToolTimeBaby'#10; + Result:=Result+'a300'#10'TheMalteseFalcon'#10; + Result:=Result+'a301'#10'GlueSolvent'#10; + Result:=Result+'hostsuite'#10+pid+#10; + Result:=Result+'iOSDevice'#10'T'#10; + Result:=Result+'iOSDevice32'#10'T'#10; + Result:=Result+'iOSDevice64'#10'T'#10; + Result:=Result+'iOSSimulator'#10'T'#10; + Result:=Result+'updatelevel'#10'0.0'#10; + Result:=Result+'updates'#10'1'#10; + + Result:=Result+'26'#10; + Result:=Result+'active'#10'T'#10; + Result:=Result+'beta'#10'0'#10; + Result:=Result+'exportable'#10'0'#10; + Result:=Result+'hostpid'#10+pid+#10; + Result:=Result+'hostskuid'#10+skuid+#10; + Result:=Result+'internaluse'#10'0'#10; + Result:=Result+'naggy'#10'0'#10; + Result:=Result+'noncommercial'#10'0'#10; + Result:=Result+'noncommercial_label'#10'No'#10; + Result:=Result+'platform'#10'1'#10; + Result:=Result+'platform_label'#10'Windows'#10; + Result:=Result+'product'#10'4000'#10; + Result:=Result+'productid'#10+ RadStudioVersion^.LicCBuilderPID +#10; + Result:=Result+'productid_label'#10'C++Builder '+ RadStudioVersion^.LicVerStr +#10; + Result:=Result+'productsku'#10+skuid+#10; + Result:=Result+'productsku_label'#10'Architect'#10; //Architect + Result:=Result+'rndkey'#10'20264023'#10; + Result:=Result+'serialno'#10+SerialNumber+#10; + Result:=Result+'sku'#10+skuid+#10; + Result:=Result+'templicense'#10'0'#10; + Result:=Result+'termtype'#10'0'#10; + Result:=Result+'termtype_label'#10'Unlimited'#10; + Result:=Result+'title'#10'C++Builder '+ RadStudioVersion^.LicVerStr +' Architect'#10; + Result:=Result+'trial'#10'0'#10; + Result:=Result+'upgrade'#10'0'#10; + Result:=Result+'version'#10'20'#10; + Result:=Result+'26'#10; + Result:=Result+'Android'#10'T'#10; + Result:=Result+'DESIGNDIAGRAMS'#10'TRUE'#10; + Result:=Result+'DESIGNPROJECTS'#10'TRUE'#10; + Result:=Result+'Desktop'#10'T'#10; + Result:=Result+'FULLQA'#10'TRUE'#10; + Result:=Result+'FulliOS'#10'T'#10; + Result:=Result+'MODELLING'#10'TRUE'#10; + Result:=Result+'Mobile'#10'T'#10; + Result:=Result+'OSX32'#10'T'#10; + Result:=Result+'OSX64'#10'T'#10; + Result:=Result+'Win32'#10'T'#10; + Result:=Result+'Win64'#10'T'#10; + Result:=Result+'a100'#10'MakeThingsHappen'#10; + Result:=Result+'a1000'#10'PrintMoreMoney'#10; + Result:=Result+'a101'#10'ImGivinItAllShesGot'#10; + Result:=Result+'a200'#10'StampIt'#10; + Result:=Result+'a250'#10'ItsToolTimeBaby'#10; + Result:=Result+'a300'#10'TheMalteseFalcon'#10; + Result:=Result+'a301'#10'GlueSolvent'#10; + Result:=Result+'hostsuite'#10+pid+#10; + Result:=Result+'iOSDevice'#10'T'#10; + Result:=Result+'iOSDevice32'#10'T'#10; + Result:=Result+'iOSDevice64'#10'T'#10; + Result:=Result+'iOSSimulator'#10'T'#10; + Result:=Result+'updatelevel'#10'0.0'#10; + Result:=Result+'updates'#10'1'#10; + + Result:=Result+'26'#10; + Result:=Result+'active'#10'T'#10; + Result:=Result+'beta'#10'0'#10; + Result:=Result+'exportable'#10'0'#10; + Result:=Result+'hostpid'#10+pid+#10; + Result:=Result+'hostskuid'#10+skuid+#10; + Result:=Result+'internaluse'#10'0'#10; + Result:=Result+'naggy'#10'0'#10; + Result:=Result+'noncommercial'#10'0'#10; + Result:=Result+'noncommercial_label'#10'No'#10; + Result:=Result+'platform'#10'0'#10; + Result:=Result+'platform_label'#10'Cross Platform'#10; + Result:=Result+'product'#10'7000'#10; + Result:=Result+'productid'#10'7113'#10; + Result:=Result+'productid_label'#10'InterBase 2020'#10; //InterBase 2020 + Result:=Result+'productsku'#10'0'#10; + Result:=Result+'productsku_label'#10'Server'#10; //Server + Result:=Result+'rndkey'#10'20264023'#10; + Result:=Result+'serialno'#10+SerialNumber+#10; + Result:=Result+'sku'#10'0'#10; + Result:=Result+'templicense'#10'0'#10; + Result:=Result+'termtype'#10'0'#10; + Result:=Result+'termtype_label'#10'Unlimited'#10; + Result:=Result+'title'#10'InterBase 2020 Server'#10; //InterBase 2020 Server + Result:=Result+'trial'#10'0'#10; + Result:=Result+'upgrade'#10'0'#10; + Result:=Result+'version'#10'8'#10; + Result:=Result+'21'#10; + Result:=Result+'changeView'#10'1'#10; + Result:=Result+'connectionMonitoring'#10'1'#10; + Result:=Result+'connectionsPerUser'#10'200'#10; + Result:=Result+'customVarId'#10' '#10; + Result:=Result+'databaseAccess'#10'1'#10; + Result:=Result+'dbEncryption'#10'1'#10; + Result:=Result+'ddlOperations'#10'1'#10; + Result:=Result+'devLicense'#10'1'#10; + Result:=Result+'externalFileAccess'#10'1'#10; + Result:=Result+'internetAccess'#10'1'#10; + Result:=Result+'languages'#10'ALL'#10; + Result:=Result+'licensedCpus'#10'32'#10; + Result:=Result+'licensedUsers'#10'5000'#10; + Result:=Result+'nodeID'#10' '#10; + Result:=Result+'otwEncryption'#10'1'#10; + Result:=Result+'remoteAccess'#10'1'#10; + Result:=Result+'serverAccess'#10'1'#10; + Result:=Result+'togoAccess'#10'0'#10; + Result:=Result+'updatelevel'#10'0.0'#10; + Result:=Result+'useAddons'#10'0'#10; + Result:=Result+'version'#10'14.0'#10; + + Result:=Result+'26'#10; + Result:=Result+'active'#10'T'#10; + Result:=Result+'beta'#10'0'#10; + Result:=Result+'exportable'#10'0'#10; + Result:=Result+'hostpid'#10+pid+#10; + Result:=Result+'hostskuid'#10+skuid+#10; + Result:=Result+'internaluse'#10'0'#10; + Result:=Result+'naggy'#10'0'#10; + Result:=Result+'noncommercial'#10'0'#10; + Result:=Result+'noncommercial_label'#10'No'#10; + Result:=Result+'platform'#10'0'#10; + Result:=Result+'platform_label'#10'All'#10; + Result:=Result+'product'#10'7000'#10; + Result:=Result+'productid'#10'7113'#10; + Result:=Result+'productid_label'#10'InterBase 2020'#10; //InterBase 2020 + Result:=Result+'productsku'#10'16'#10; + Result:=Result+'productsku_label'#10'ToGo Edition'#10; //ToGo Edition + Result:=Result+'rndkey'#10'20264023'#10; + Result:=Result+'serialno'#10+SerialNumber+#10; + Result:=Result+'sku'#10'16'#10; + Result:=Result+'templicense'#10'0'#10; + Result:=Result+'termtype'#10'0'#10; + Result:=Result+'termtype_label'#10'Unlimited'#10; + Result:=Result+'title'#10'InterBase 2020 ToGo Edition'#10; //InterBase 2020 ToGo Edition + Result:=Result+'trial'#10'0'#10; + Result:=Result+'upgrade'#10'0'#10; + Result:=Result+'version'#10'8'#10; + Result:=Result+'21'#10; + Result:=Result+'changeView'#10'1'#10; + Result:=Result+'connectionMonitoring'#10'1'#10; + Result:=Result+'connectionsPerUser'#10'200'#10; + Result:=Result+'customVarId'#10' '#10; + Result:=Result+'databaseAccess'#10'1'#10; + Result:=Result+'dbEncryption'#10'1'#10; + Result:=Result+'ddlOperations'#10'1'#10; + Result:=Result+'devLicense'#10'1'#10; + Result:=Result+'externalFileAccess'#10'1'#10; + Result:=Result+'internetAccess'#10'1'#10; + Result:=Result+'languages'#10'ALL'#10; + Result:=Result+'licensedCpus'#10'32'#10; + Result:=Result+'licensedUsers'#10'5000'#10; + Result:=Result+'nodeID'#10' '#10; + Result:=Result+'otwEncryption'#10'1'#10; + Result:=Result+'remoteAccess'#10'1'#10; + Result:=Result+'serverAccess'#10'1'#10; + Result:=Result+'togoAccess'#10'1'#10; + Result:=Result+'updatelevel'#10'0.0'#10; + Result:=Result+'useAddons'#10'0'#10; + Result:=Result+'version'#10'14.0'#10; + + Result:=Result+'1'#10; + Result:=Result+'updatelevel'#10'0.0'#10; +end; + +end. diff --git a/10.3.3/Keygen/RadVersion.pas b/10.3.3/Keygen/RadVersion.pas new file mode 100644 index 0000000..8f48572 --- /dev/null +++ b/10.3.3/Keygen/RadVersion.pas @@ -0,0 +1,85 @@ +unit RadVersion; + +interface +uses Windows,Classes,SysUtils; +type + TPatchInfo=record + Crc:DWORD; + Sha1:string; + PatchOffset:DWORD; + FinalizeArrayOffset:DWORD; + end; + + TRadStudioVersion=record + Name:string; // Rad Studio 10.2 Tokyo Update2 + Ver:string; // 25.0.29039.2004 + BDSVersion:string; // 19.0 + LicVerStr:string; // 10.2 Tokyo + LicHostPID:Integer; // 8219 + LicHostSKU:Integer; // 52 + LicDelphiPID:string; // 2025 + LicCBuilderPID:string; // 4022 +// BdsPatchInfo:TPatchInfo; +// LicenseManagerPatchInfo:TPatchInfo; +// mOasisRuntimePatchInfo:TPatchInfo; +// SetupGUID:string; +// ISOUrl:string; +// ISOMd5:string; + end; + PRadStudioVersion=^TRadStudioVersion; +var + RadStudioVersionList:TStringList; +implementation + +procedure InitRadStudioVersion(VerList:TStringList); +var + RadStudioVersion:PRadStudioVersion; +begin + New(RadStudioVersion); + with RadStudioVersion^ do + begin + Name := 'Rad Studio 10.3.3 Rio 7899 Architect'; + Ver := '26.0.36039.7899'; + BDSVersion := '20.0'; + LicVerStr := '10.3'; + LicHostPID := 8220; + LicHostSKU := 53; + LicDelphiPID := '2026'; + LicCBuilderPID := '4023'; +// BdsPatchInfo.Crc := $C426EC4A; +// BdsPatchInfo.Sha1 := '43BB879FE9EFD7B8752F2B5D99DF31F7CD948D68'; +// BdsPatchInfo.PatchOffset := $1F724; +// BdsPatchInfo.FinalizeArrayOffset := $11EF7C; +// LicenseManagerPatchInfo.Crc := $0D512F70; +// LicenseManagerPatchInfo.Sha1 := '8D16D4521BCC12D537EB20B33864654E7A5B81C0'; +// LicenseManagerPatchInfo.PatchOffset := $1F002C; +// LicenseManagerPatchInfo.FinalizeArrayOffset := $6227A4; +// mOasisRuntimePatchInfo.Sha1 := '101FC6D71A1DDEAF3B079477560DD0307ADE3C80'; +// mOasisRuntimePatchInfo.PatchOffset := $0016CFE9; +// SetupGUID := '{426A3606-6CB8-4CF8-87A8-44388377C47D}'; +// ISOUrl := 'http://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_0_94364.iso'; +// ISOMd5 := '0882D58CB53A7D0A828CC45D06C6ECD0'; + end; + VerList.AddObject(RadStudioVersion^.Name, TObject(RadStudioVersion)); +end; + +procedure FinallyRadStudioVersion(VerList:TStringList); +var + RadStudioVersion:PRadStudioVersion; +begin + while VerList.Count>0 do + begin + RadStudioVersion:=PRadStudioVersion(VerList.Objects[0]); + if RadStudioVersion<>nil then Dispose(RadStudioVersion); + VerList.Delete(0); + end; +end; + +initialization + RadStudioVersionList:= TStringList.Create; + InitRadStudioVersion(RadStudioVersionList); +finalization + FinallyRadStudioVersion(RadStudioVersionList); + FreeAndNil(RadStudioVersionList); + +end. diff --git a/10.3.3/Keygen/Sha1.pas b/10.3.3/Keygen/Sha1.pas new file mode 100644 index 0000000..2029e4f --- /dev/null +++ b/10.3.3/Keygen/Sha1.pas @@ -0,0 +1,251 @@ +{ + +*************************************************** +* A binary compatible SHA1 implementation * +* written by Dave Barton (davebarton@bigfoot.com) * +*************************************************** +* 160bit hash size * +*************************************************** + +} +unit SHA1; + +interface +uses + Windows,SysUtils; + +type + TSHA1Digest = array[0..19] of byte; + TSHA1Context = record + Hash: array[0..4] of DWord; + Hi, Lo: integer; + Buffer: array[0..63] of byte; + Index: integer; + end; + +procedure SHA1Init(var Context: TSHA1Context); +procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer); +procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest); + + +function SHA1String(M: AnsiString): TSHA1Digest; +function SHA1File(N: string): TSHA1Digest; +function SHA1Print(Digest: TSHA1Digest): AnsiString; + +//****************************************************************************** +implementation +{ +$R- +} + +function LRot16(X: Word; c: longint): Word; +begin + LRot16 := (X shl c) or (X shr (16 - c)); +end; + + +function RRot16(X: Word; c: longint): Word; +begin + RRot16 := (X shr c) or (X shl (16 - c)); +end; + + +function LRot32(X: DWord; c: longint): DWord; +begin + LRot32 := (X shl c) or (X shr (32 - c)); +end; + + +function RRot32(X: DWord; c: longint): DWord; +begin + RRot32 := (X shr c) or (X shl (32 - c)); +end; + + + +//****************************************************************************** + +function F1(x, y, z: DWord): DWord; +begin + Result := z xor (x and (y xor z)); +end; + +function F2(x, y, z: DWord): DWord; +begin + Result := x xor y xor z; +end; + +function F3(x, y, z: DWord): DWord; +begin + Result := (x and y) or (z and (x or y)); +end; + +//****************************************************************************** + +function RB(A: DWord): DWord; +begin + Result := (A shr 24) or ((A shr 8) and $FF00) or ((A shl 8) and $FF0000) or (A shl 24); +end; + +procedure SHA1Compress(var Data: TSHA1Context); +var + A, B, C, D, E, T: DWord; + W: array[0..79] of DWord; + i: integer; +begin + Move(Data.Buffer, W, Sizeof(Data.Buffer)); + for i := 0 to 15 do + W[i] := RB(W[i]); + for i := 16 to 79 do + W[i] := LRot32(W[i - 3] xor W[i - 8] xor W[i - 14] xor W[i - 16], 1); + A := Data.Hash[0]; B := Data.Hash[1]; C := Data.Hash[2]; D := Data.Hash[3]; E := Data.Hash[4]; + for i := 0 to 19 do + begin + T := LRot32(A, 5) + F1(B, C, D) + E + W[i] + $5A827999; + E := D; D := C; C := LRot32(B, 30); B := A; A := T; + end; + for i := 20 to 39 do + begin + T := LRot32(A, 5) + F2(B, C, D) + E + W[i] + $6ED9EBA1; + E := D; D := C; C := LRot32(B, 30); B := A; A := T; + end; + for i := 40 to 59 do + begin + T := LRot32(A, 5) + F3(B, C, D) + E + W[i] + $8F1BBCDC; + E := D; D := C; C := LRot32(B, 30); B := A; A := T; + end; + for i := 60 to 79 do + begin + T := LRot32(A, 5) + F2(B, C, D) + E + W[i] + $CA62C1D6; + E := D; D := C; C := LRot32(B, 30); B := A; A := T; + end; + Data.Hash[0] := Data.Hash[0] + A; + Data.Hash[1] := Data.Hash[1] + B; + Data.Hash[2] := Data.Hash[2] + C; + Data.Hash[3] := Data.Hash[3] + D; + Data.Hash[4] := Data.Hash[4] + E; + FillChar(W, Sizeof(W), 0); + FillChar(Data.Buffer, Sizeof(Data.Buffer), 0); +end; + +//****************************************************************************** + +procedure SHA1Init(var Context: TSHA1Context); +begin + Context.Hi := 0; Context.Lo := 0; + Context.Index := 0; + FillChar(Context.Buffer, Sizeof(Context.Buffer), 0); + Context.Hash[0] := $67452301; + Context.Hash[1] := $EFCDAB89; + Context.Hash[2] := $98BADCFE; + Context.Hash[3] := $10325476; + Context.Hash[4] := $C3D2E1F0; +end; + +//****************************************************************************** + +procedure SHA1UpdateLen(var Context: TSHA1Context; Len: integer); +var + i, k: integer; +begin + for k := 0 to 7 do + begin + i := Context.Lo; + Inc(Context.Lo, Len); + if Context.Lo < i then + Inc(Context.Hi); + end; +end; + +//****************************************************************************** + +procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer); +type + PByte = ^Byte; +begin + SHA1UpdateLen(Context, Len); + while Len > 0 do + begin + Context.Buffer[Context.Index] := PByte(Buffer)^; + Inc(PByte(Buffer)); + Inc(Context.Index); + Dec(Len); + if Context.Index = 64 then + begin + Context.Index := 0; + SHA1Compress(Context); + end; + end; +end; + +//****************************************************************************** + +procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest); +type + PDWord = ^DWord; +begin + Context.Buffer[Context.Index] := $80; + if Context.Index >= 56 then + SHA1Compress(Context); + PDWord(@Context.Buffer[56])^ := RB(Context.Hi); + PDWord(@Context.Buffer[60])^ := RB(Context.Lo); + SHA1Compress(Context); + Context.Hash[0] := RB(Context.Hash[0]); + Context.Hash[1] := RB(Context.Hash[1]); + Context.Hash[2] := RB(Context.Hash[2]); + Context.Hash[3] := RB(Context.Hash[3]); + Context.Hash[4] := RB(Context.Hash[4]); + Move(Context.Hash, Digest, Sizeof(Digest)); + FillChar(Context, Sizeof(Context), 0); +end; + + +function SHA1String(M: AnsiString): TSHA1Digest; +var + Context: TSHA1Context; +begin + SHA1Init(Context); + SHA1Update(Context, PAnsiChar(M), length(M)); + SHA1Final(Context, Result); +end; + +function SHA1File(N: string): TSHA1Digest; +var + FileHandle: THandle; + MapHandle: THandle; + ViewPointer: pointer; + Context: TSHA1Context; +begin + SHA1Init(Context); + FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, + nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0); + if FileHandle <> INVALID_HANDLE_VALUE then try + MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil); + if MapHandle <> 0 then try + ViewPointer := MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0); + if ViewPointer <> nil then try + SHA1Update(Context, ViewPointer, GetFileSize(FileHandle, nil)); + finally + UnmapViewOfFile(ViewPointer); + end; + finally + CloseHandle(MapHandle); + end; + finally + CloseHandle(FileHandle); + end; + SHA1Final(Context, Result); +end; + +function SHA1Print(Digest: TSHA1Digest): AnsiString; +var + I: byte; +const + Digits: array[0..15] of AnsiChar = + ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); +begin + Result := ''; + for I := 0 to 19 do Result := Result + Digits[(Digest[I] shr 4) and $0F] + Digits[Digest[I] and $0F]; +end; + +end. \ No newline at end of file diff --git a/10.3.3/Release/Activator.exe b/10.3.3/Release/Activator.exe new file mode 100644 index 0000000..26783af Binary files /dev/null and b/10.3.3/Release/Activator.exe differ diff --git a/10.3.3/Release/Readme.txt b/10.3.3/Release/Readme.txt new file mode 100644 index 0000000..2956f35 --- /dev/null +++ b/10.3.3/Release/Readme.txt @@ -0,0 +1,41 @@ +为了便于在 Lite 15.x 中使用大侠们的特别补丁,初步写成这个:Activator.exe + +他的主要作用: + +1、整合各位大虾的 Keygen +2、相对原始部署方式,这个 Activator 实现“一键激活”! + +使用方法: + +1、执行 Activator.exe + +发布历史: + +2019.11.19 - v15.3 + +1、根据 26.0.36039.7899 原版制作,基于 RADStudioKeyPatch.exe 的成果 + +2019.07.22 - v15.2.1 + +1、根据 26.0.34749.6593 原版制作,基于 RADStudioKeyPatch.exe 的成果 +2、根据 wg961423 的反馈完善对 macOS64 的支持 + +2019.02.16 - v15.1 + +1、根据 26.0.33219.4899 原版制作,基于 RADStudioKeyPatch_Lite.exe 的成果 + +2018.11.26 - v15.0 + +1、根据 26.0.32429.4364 原版制作,基于 RadStudioKeygenSourceCodeV10.3.4364.rar 的成果 + +已知问题: + +1、在一些操作系统上如果出现安全提示,直接确定即可。 + +特别感谢: + +1、elseif, tonzi, freecat, unis, x-force, cjack, c5soft 等大侠的特别补丁,感谢诸位我知道的不知道的的大虾们的辛勤劳动! +2、iny、nevergrief、snakejiao、star5、tintin1943、ti9er、wang_80919、wuxiangyang、wg961423 等等我知道的不知道的的网友们的热情测试! +3、andreas hausladen 等大虾们的无私贡献! + +O(∩_∩)O~