diff --git a/.gitignore b/.gitignore
index 9ce2c5b..307cc90 100644
--- a/.gitignore
+++ b/.gitignore
@@ -44,11 +44,13 @@
*.a
*.o
*.ocx
+*.res
# Delphi autogenerated files (duplicated info)
*.cfg
*.hpp
-*Resource.rc
+
+#*Resource.rc
# Delphi local files (user-specific info)
*.local
diff --git a/build/AErender_Launcher.ciproj b/build/AErender_Launcher.ciproj
new file mode 100644
index 0000000..69a7982
--- /dev/null
+++ b/build/AErender_Launcher.ciproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/README.md b/build/README.md
new file mode 100644
index 0000000..96f5930
--- /dev/null
+++ b/build/README.md
@@ -0,0 +1,39 @@
+# Building AErender Launcher
+## Step 1
+To build **Launcher** you first of all need to install a RAD Studio *(Delphi, we don't need C++Builder here).* There is three options how to do it:
+### Option 1 - Legal, Free, but outdated
+1) Go to https://www.embarcadero.com/
+2) Go to Free Tools -> Delphi Community Ed.
+3) Click on "Get community edition free"
+4) Complete form, download and install Delphi Community Edition 10.3.3 with macOS/OSX dev tools
+
+**Downsides:** You will have outdated version of Delphi. If you try to build **Launcher**, it will build, but I won't guarantee you 100% functionality and error-free expirience. Community Edition was recently updated to RAD Studio 10.4.2 Seattle and the code was migrated to RAD Studio 11.0 Alexandria. Compability-wise I left previoius versions of libs untouched, so it should be possible to compile it in the Community Edition
+
+### Option 2 - Legal, but Trial
+1) Go to https://www.embarcadero.com/
+2) Go to Products -> RAD Studio
+3) Click on "Start a Free Trial"
+4) Complete form, download and install RAD Studio Trial 11.0 with macOS/OSX dev tools
+
+### Option 3 - Illegal, but no Trial
+1) Find whereever a pirated version of RAD Studio Architect 11.0
+2) ...
+3) Install and crack RAD Studio Architect 11.0
+
+*btw, I don't support this, but oh well...*
+
+## Step 2
+### If you have MSBuild installed and you want to build for Windows
+To build only Windows versions of **Launcher**, go to `/build/` folder at the root of the repository and start a `build.bat` file. Both x64 and x32 versions will be built into the following folders:
+```text
+/src/Win32/Beta/AErender_Launcher.exe
+```
+```text
+/src/Win64/Beta/AErender_Launcher.exe
+```
+
+### If you don't have MSBuild installed or you want to build for macOS
+1) Open `/src/AErender_Launcher.dproj`
+2) Change project's **Build Configurations** to "Beta" (if it's not already)
+3) Select needed platform by changing it in project's **Target Platforms** (double click)
+4) Compile project by `Shift+F9` or going into `Project` -> `Build AErender_Launcher`
\ No newline at end of file
diff --git a/build/build.bat b/build/build.bat
new file mode 100644
index 0000000..4ab4d4f
--- /dev/null
+++ b/build/build.bat
@@ -0,0 +1,7 @@
+@ECHO off
+set "msbuild_path=%WINDIR%\Microsoft.NET\Framework\v4.0.30319"
+set "BDS=C:\Program Files (x86)\Embarcadero\Studio\21.0\"
+
+::"%msbuild_path%\msbuild.exe" /t:build src\AErender_Launcher.dproj
+
+"%msbuild_path%\msbuild.exe" /t:build AErender_Launcher.ciproj
\ No newline at end of file
diff --git a/src/AErender CC/AErender Launcher_Premiere/Adobe After Effects Auto-Save/Intro auto-save 6.aep b/src/AErender CC/AErender Launcher_Premiere/Adobe After Effects Auto-Save/Intro auto-save 6.aep
deleted file mode 100644
index 6c56d8d..0000000
Binary files a/src/AErender CC/AErender Launcher_Premiere/Adobe After Effects Auto-Save/Intro auto-save 6.aep and /dev/null differ
diff --git a/src/AErender CC/AErender.icns b/src/AErender CC/AErender.icns
deleted file mode 100644
index 8b9e578..0000000
Binary files a/src/AErender CC/AErender.icns and /dev/null differ
diff --git a/src/AErender CC/AErender.ico b/src/AErender CC/AErender.ico
deleted file mode 100644
index e4bb8b6..0000000
Binary files a/src/AErender CC/AErender.ico and /dev/null differ
diff --git a/src/AErender CC/Style/bg.png b/src/AErender CC/Style/bg.png
deleted file mode 100644
index 1e898f6..0000000
Binary files a/src/AErender CC/Style/bg.png and /dev/null differ
diff --git a/src/AErender CC/Style/bg15x.png b/src/AErender CC/Style/bg15x.png
deleted file mode 100644
index 7a42f5a..0000000
Binary files a/src/AErender CC/Style/bg15x.png and /dev/null differ
diff --git a/src/AErender CC/Style/bg20x.png b/src/AErender CC/Style/bg20x.png
deleted file mode 100644
index 9590269..0000000
Binary files a/src/AErender CC/Style/bg20x.png and /dev/null differ
diff --git a/src/AErender CC/Style/style.png b/src/AErender CC/Style/style.png
deleted file mode 100644
index 91bde62..0000000
Binary files a/src/AErender CC/Style/style.png and /dev/null differ
diff --git a/src/AErender CC/Style/style15x.png b/src/AErender CC/Style/style15x.png
deleted file mode 100644
index cec0210..0000000
Binary files a/src/AErender CC/Style/style15x.png and /dev/null differ
diff --git a/src/AErender CC/Style/style20x.png b/src/AErender CC/Style/style20x.png
deleted file mode 100644
index e4f4cb5..0000000
Binary files a/src/AErender CC/Style/style20x.png and /dev/null differ
diff --git a/src/AErender CC/icon_128.png b/src/AErender CC/icon_128.png
deleted file mode 100644
index 2c358c3..0000000
Binary files a/src/AErender CC/icon_128.png and /dev/null differ
diff --git a/src/AErender CC/icon_128@2x.png b/src/AErender CC/icon_128@2x.png
deleted file mode 100644
index 4c7a574..0000000
Binary files a/src/AErender CC/icon_128@2x.png and /dev/null differ
diff --git a/src/AErender CC/icon_16.png b/src/AErender CC/icon_16.png
deleted file mode 100644
index 67ab6ba..0000000
Binary files a/src/AErender CC/icon_16.png and /dev/null differ
diff --git a/src/AErender CC/icon_16@2x.png b/src/AErender CC/icon_16@2x.png
deleted file mode 100644
index 0ce5b1b..0000000
Binary files a/src/AErender CC/icon_16@2x.png and /dev/null differ
diff --git a/src/AErender CC/icon_256.png b/src/AErender CC/icon_256.png
deleted file mode 100644
index 4c7a574..0000000
Binary files a/src/AErender CC/icon_256.png and /dev/null differ
diff --git a/src/AErender CC/icon_256@2x.png b/src/AErender CC/icon_256@2x.png
deleted file mode 100644
index 8e2a353..0000000
Binary files a/src/AErender CC/icon_256@2x.png and /dev/null differ
diff --git a/src/AErender CC/icon_32.png b/src/AErender CC/icon_32.png
deleted file mode 100644
index 0ce5b1b..0000000
Binary files a/src/AErender CC/icon_32.png and /dev/null differ
diff --git a/src/AErender CC/icon_32@2x.png b/src/AErender CC/icon_32@2x.png
deleted file mode 100644
index e29e7b6..0000000
Binary files a/src/AErender CC/icon_32@2x.png and /dev/null differ
diff --git a/src/AErender CC/icon_48.ico b/src/AErender CC/icon_48.ico
deleted file mode 100644
index e6bd7e5..0000000
Binary files a/src/AErender CC/icon_48.ico and /dev/null differ
diff --git a/src/AErender CC/icon_48.png b/src/AErender CC/icon_48.png
deleted file mode 100644
index 3382bb4..0000000
Binary files a/src/AErender CC/icon_48.png and /dev/null differ
diff --git a/src/AErender CC/icon_512.png b/src/AErender CC/icon_512.png
deleted file mode 100644
index 8e2a353..0000000
Binary files a/src/AErender CC/icon_512.png and /dev/null differ
diff --git a/src/AErender CC/icon_512@2x.png b/src/AErender CC/icon_512@2x.png
deleted file mode 100644
index 1c96b17..0000000
Binary files a/src/AErender CC/icon_512@2x.png and /dev/null differ
diff --git a/src/AErender CC/icon_UWP_150.png b/src/AErender CC/icon_UWP_150.png
deleted file mode 100644
index 4c38394..0000000
Binary files a/src/AErender CC/icon_UWP_150.png and /dev/null differ
diff --git a/src/AErender CC/icon_UWP_44.png b/src/AErender CC/icon_UWP_44.png
deleted file mode 100644
index 746a63d..0000000
Binary files a/src/AErender CC/icon_UWP_44.png and /dev/null differ
diff --git a/src/AErender CC/icons8-info-512.png b/src/AErender CC/icons8-info-512.png
deleted file mode 100644
index 049b3e5..0000000
Binary files a/src/AErender CC/icons8-info-512.png and /dev/null differ
diff --git a/src/AErender CC/icons8-settings-26.png b/src/AErender CC/icons8-settings-26.png
deleted file mode 100644
index 40e4fd4..0000000
Binary files a/src/AErender CC/icons8-settings-26.png and /dev/null differ
diff --git a/src/AErender CC/icons8-settings-512.png b/src/AErender CC/icons8-settings-512.png
deleted file mode 100644
index fea7bd6..0000000
Binary files a/src/AErender CC/icons8-settings-512.png and /dev/null differ
diff --git a/src/AErender_Launcher.deployproj b/src/AErender_Launcher.deployproj
index 293c6bc..a088167 100644
--- a/src/AErender_Launcher.deployproj
+++ b/src/AErender_Launcher.deployproj
@@ -3,33 +3,37 @@
12
-
+
+
+
+
+
+
-
+
AErender_Launcher\
- AErender_Launcher.exe
- ProjectOutput
+ ru-RU.aerlang
+ ProjectFile
0
True
- True
-
+
AErender_Launcher\
- ru-RU.aerlang
+ aeparser_win.exe
ProjectFile
0
True
-
- AErender_Launcher\Assets\
- Logo44x44.png
- UWP_DelphiLogo44
- 1
+
+ AErender_Launcher\
+ ru-RU.aerlang
+ ProjectFile
+ 0
True
@@ -43,6 +47,15 @@
True
+
+ AErender_Launcher\
+ aeparser_mac
+ ProjectFile
+ 0
+
+
+ True
+
AErender_Launcher\
en-US.aerlang
@@ -62,18 +75,16 @@
True
True
-
-
-
+
AErender_Launcher\Assets\
- Logo150x150.png
- UWP_DelphiLogo150
+ Logo44x44.png
+ UWP_DelphiLogo44
1
True
-
+
AErender_Launcher\
en-US.aerlang
ProjectFile
@@ -82,6 +93,27 @@
True
+
+ AErender_Launcher\
+ AErender_Launcher.exe
+ ProjectOutput
+ 0
+
+
+ True
+ True
+
+
+
+
+ AErender_Launcher\
+ ru-RU.aerlang
+ ProjectFile
+ 0
+
+
+ True
+
AErender_Launcher\Assets\
Logo44x44.png
@@ -91,6 +123,51 @@
True
+
+ AErender_Launcher\
+ aeparser_win.exe
+ ProjectFile
+ 0
+
+
+ True
+
+
+ AErender_Launcher\Assets\
+ Logo150x150.png
+ UWP_DelphiLogo150
+ 1
+
+
+ True
+
+
+ AErender_Launcher\
+ en-US.aerlang
+ ProjectFile
+ 0
+
+
+ True
+
+
+ AErender_Launcher\
+ aeparser_mac
+ ProjectFile
+ 0
+
+
+ True
+
+
+ AErender_Launcher\
+ en-US.aerlang
+ ProjectFile
+ 0
+
+
+ True
+
AErender_Launcher\
ru-RU.aerlang
@@ -130,6 +207,15 @@
True
+
+ AErender_Launcher.app\Contents\Resources\
+ AErender_Launcher.icns
+ ProjectOSXResource
+ 1
+
+
+ True
+
AErender_Launcher.app\Contents\Resources\StartUp\
ru-RU.aerlang
@@ -149,15 +235,6 @@
True
True
-
- AErender_Launcher.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\
- AErender_Launcher
- ProjectOSXDebug
- 1
-
-
- True
-
AErender_Launcher.app\Contents\Resources\StartUp\
ru-RU.aerlang
@@ -177,15 +254,6 @@
True
True
-
- AErender_Launcher.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\
- AErenderLauncher
- ProjectOSXDebug
- 1
-
-
- True
-
AErender_Launcher.app\Contents\Resources\
AErender_Launcher.icns
@@ -195,15 +263,6 @@
True
-
- AErender_Launcher.app\Contents\Resources\
- AErender_Launcher.icns
- ProjectOSXResource
- 1
-
-
- True
-
AErender_Launcher.app\Contents\
Info.plist
@@ -213,15 +272,6 @@
True
-
- AErender_Launcher.app\Contents\MacOS\
- libcgsqlite3.dylib
- DependencyModule
- 1
-
-
- True
-
AErender_Launcher.app\Contents\Resources\StartUp\
en-US.aerlang
@@ -231,16 +281,25 @@
True
-
- AErender_Launcher.app\..\
- AErenderLauncher.entitlements
- ProjectOSXEntitlements
+
+ AErender_Launcher.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\
+ AErender_Launcher
+ ProjectOSXDebug
1
True
-
+
+ AErender_Launcher.app\..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF\
+ AErender_Launcher
+ ProjectOSXDebug
+ 1
+
+
+ True
+
+
AErender_Launcher.app\..\
AErender_Launcher.entitlements
ProjectOSXEntitlements
@@ -249,7 +308,16 @@
True
-
+
+ AErender_Launcher.app\Contents\Resources\StartUp\
+ aeparser_win.exe
+ ProjectFile
+ 0
+
+
+ True
+
+
AErender_Launcher.app\Contents\
Info.plist
ProjectOSXInfoPList
@@ -258,6 +326,42 @@
True
+
+ AErender_Launcher.app\Contents\Resources\StartUp\
+ aeparser_mac
+ ProjectFile
+ 0
+
+
+ True
+
+
+ AErender_Launcher.app\Contents\Resources\
+ AErender_Launcher.icns
+ ProjectOSXResource
+ 1
+
+
+ True
+
+
+ AErender_Launcher.app\Contents\MacOS\
+ libcgsqlite3.dylib
+ DependencyModule
+ 1
+
+
+ True
+
+
+ AErender_Launcher.app\..\
+ AErender_Launcher.entitlements
+ ProjectOSXEntitlements
+ 1
+
+
+ True
+
diff --git a/src/AErender_Launcher.dpr b/src/AErender_Launcher.dpr
index 35adf59..8115656 100644
--- a/src/AErender_Launcher.dpr
+++ b/src/AErender_Launcher.dpr
@@ -2,10 +2,10 @@ program AErender_Launcher;
(* AErender Launcher *)
(* AErenderLauncher.dpr *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -31,8 +31,25 @@ uses
System.StartUpCopy,
System.SysUtils,
FMX.Forms,
- FMX.Graphics in 'lib\FMX.Graphics.pas',
- FMX.Ani in 'lib\FMX.Ani.pas',
+
+ /// RAD Studio 10.4 Sydney
+ {$IF CompilerVersion = 34.0}
+ FMX.Graphics in 'lib\FMX\DX 10.4\FMX.Graphics.pas',
+ FMX.Ani in 'lib\FMX\DX 10.4\FMX.Ani.pas',
+ FMX.TreeView in 'lib\FMX\DX 10.4\FMX.TreeView.pas',
+
+ /// RAD Studio 11.0 Alexandria
+ ///
+ /// Bug with double animation on text fields in FMX.Ani was fixed,
+ /// no need to include it anymore
+ {$ELSE CompilerVersion = 35.0}
+ FMX.Graphics in 'lib\FMX\DX 11.0\FMX.Graphics.pas',
+ FMX.TreeView in 'lib\FMX\DX 11.0\FMX.TreeView.pas',
+
+ {$ENDIF}
+
+ FMX.CompLabel in 'lib\Components\TCompLabel\Package\FMX.CompLabel.pas',
+ FMX.RenderProgress in 'lib\Components\TRenderProgress\Package\FMX.RenderProgress.pas',
SplashScreenUnit in 'SplashScreenUnit.pas' {SplashScreenForm},
MainUnit in 'MainUnit.pas' {MainForm},
SettingsUnit in 'SettingsUnit.pas' {SettingsForm},
@@ -44,14 +61,19 @@ uses
OutputModuleEditorUnit in 'OutputModuleEditorUnit.pas' {OutputModuleEditorForm},
{$IFDEF MACOS}
Mac.CodeBlocks in 'lib\Mac.CodeBlocks.pas',
+ MacApi.Dialogs in 'lib\MacApi.Dialogs.pas',
{$ENDIF MACOS}
{$IFDEF MSWINDOWS}
- FMX.Taskbar in 'lib\FMX.Taskbar.pas',
+ FMX.Taskbar in 'lib\FMX\FMX.Taskbar.pas',
{$ENDIF MSWINDOWS}
- MathExpParser in 'MathExpParser.pas',
- AErenderDataParser in '..\..\AErender Parser\AErenderDataParser.pas',
- AErenderLauncherLocalization in 'lib\AErenderLauncherLocalization.pas',
- MacApi.Dialogs in 'lib\MacApi.Dialogs.pas';
+ AErenderLauncher.Localization in 'lib\AErenderLauncher.Localization.pas',
+ AErenderLauncher.AerenderParser in 'lib\AErenderLauncher.AerenderParser.pas',
+ AErenderLauncher.Math.ExpParser in 'lib\AErenderLauncher.Math.ExpParser.pas',
+ AErenderLauncher.Rendering in 'lib\AErenderLauncher.Rendering.pas',
+ AErenderLauncher.IO in 'lib\AErenderLauncher.IO.pas',
+ AErenderLauncher.Math in 'lib\AErenderLauncher.Math.pas' {/System.Types.Nullable in 'lib\System.Types.Nullable.pas';},
+ AErenderLauncher.SysUtils in 'lib\AErenderLauncher.SysUtils.pas',
+ AErenderLauncher.Types in 'lib\AErenderLauncher.Types.pas';
{$R *.res}
diff --git a/src/AErender_Launcher.dproj b/src/AErender_Launcher.dproj
index 2f07a0d..5f3d023 100644
--- a/src/AErender_Launcher.dproj
+++ b/src/AErender_Launcher.dproj
@@ -2,29 +2,13 @@
True
Application
- Beta
+ Debug
FMX
AErender_Launcher.dpr
Win32
{C2DB1030-533B-41FD-8468-632CB85028C7}
- 19.0
- 4099
-
-
- true
- Base
- true
- ..\icons\platform\Launcher2020.icns
- true
- 5
- 8
- 0
- (None)
- true
- Debug
- CFBundleVersion=0.8.5;NSHighResolutionCapable=true;NSLocationUsageDescription=;CFBundleShortVersionString=0.8.5;NSCalendarsUsageDescription=Not used;NSRemindersUsageDescription=Not used;NSCameraUsageDescription=Not used;NSMicrophoneUsageDescription=Not used;NSMotionUsageDescription=Not used;NSDesktopFolderUsageDescription=Not used;NSDocumentsFolderUsageDescription=Not used;NSDownloadsFolderUsageDescription=Not used;NSNetworkVolumesUsageDescription=Not used;NSRemovableVolumesUsageDescription=Not used;NSSpeechRecognitionUsageDescription=Not used
- ..\icons\platform\Launcher2020.ico
- /usr/X11/bin/xterm -e "%debuggee%"
+ 19.3
+ 135171
true
@@ -34,6 +18,11 @@
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -55,6 +44,12 @@
true
true
+
+ true
+ Cfg_1
+ true
+ true
+
true
Cfg_1
@@ -78,6 +73,12 @@
true
true
+
+ true
+ Cfg_2
+ true
+ true
+
true
Cfg_2
@@ -101,6 +102,12 @@
true
true
+
+ true
+ Cfg_3
+ true
+ true
+
true
Cfg_3
@@ -124,6 +131,12 @@
true
true
+
+ true
+ Cfg_4
+ true
+ true
+
true
Cfg_4
@@ -156,6 +169,39 @@
$(BDS)\bin\delphi_PROJECTICNS.icns
$(BDS)\bin\delphi_PROJECTICON.ico
+
+ true
+ Base
+ true
+ ..\icons\platform\Launcher2020.icns
+ true
+ 9
+ 8
+ 0
+ (None)
+ true
+ Debug
+ CFBundleVersion=0.8.9;NSHighResolutionCapable=true;NSLocationUsageDescription=;CFBundleShortVersionString=0.8.9;NSCalendarsUsageDescription=Not used;NSRemindersUsageDescription=Not used;NSCameraUsageDescription=Not used;NSMicrophoneUsageDescription=Not used;NSMotionUsageDescription=Not used;NSDesktopFolderUsageDescription=Not used;NSDocumentsFolderUsageDescription=Not used;NSDownloadsFolderUsageDescription=Not used;NSNetworkVolumesUsageDescription=Not used;NSRemovableVolumesUsageDescription=Not used;NSSpeechRecognitionUsageDescription=Not used
+ ..\icons\platform\Launcher2020.ico
+ /usr/X11/bin/xterm -e "%debuggee%"
+
+
+ CFBundleVersion=0.8.9;NSHighResolutionCapable=true;NSLocationUsageDescription=;CFBundleShortVersionString=0.8.9;NSCalendarsUsageDescription=Not used;NSRemindersUsageDescription=Not used;NSCameraUsageDescription=Not used;NSMicrophoneUsageDescription=Not used;NSMotionUsageDescription=Not used;NSDesktopFolderUsageDescription=Not used;NSDocumentsFolderUsageDescription=Not used;NSDownloadsFolderUsageDescription=Not used;NSNetworkVolumesUsageDescription=Not used;NSRemovableVolumesUsageDescription=Not used;NSSpeechRecognitionUsageDescription=Not used
+ Debug
+ true
+ true
+ Base
+ true
+ true
+ ..\icons\platform\Launcher2020.icns
+ 9
+ 8
+ 0
+ (None)
+ true
+ ..\icons\platform\Launcher2020.ico
+ /usr/X11/bin/xterm -e "%debuggee%"
+
PerMonitorV2
Debug
@@ -172,27 +218,26 @@
..\icons\png\resized_uwp\icon_uwp_44.png
true
true
- CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.8.5.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.8.5.0;Comments=
+ CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.9.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=org.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.9.0.0;Comments=
1033
0
- 8
+ 9
true
- 5
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
- (None)
+ $(BDS)\bin\default_app.manifest
..\icons\png\resized_uwp\icon_uwp_150.png
..\icons\png\resized_uwp\icon_uwp_44.png
true
true
- FileVersion=0.8.5.0;ProductVersion=0.8.5.0
+ FileVersion=0.9.0.0;ProductVersion=0.9.0.0
1033
0
- 8
+ 9
true
- 5
+ PerMonitorV2
true
@@ -209,7 +254,20 @@
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
..\(None)
- 5
+ 6
+ true
+ 0
+ 8
+
+
+ true
+ Cfg_1
+ true
+ true
+ ..\icons\platform\Launcher2020.icns
+ ..\icons\platform\Launcher2020.ico
+ ..\(None)
+ 6
true
0
8
@@ -220,24 +278,26 @@
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
true
- 1
+ 5
true
true
- CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.8.5.1;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.8.5.0;Comments=
+ CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.8.6.5;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.8.5.0;Comments=
1033
0
8
true
- 5
+ 6
+ 65001
+ true
Debug
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
true
- 1
+ 5
true
- FileVersion=1.0.0.1;ProductVersion=1.0.0.0
+ FileVersion=1.0.0.5;ProductVersion=1.0.0.0
1033
true
@@ -259,6 +319,19 @@
0
8
+
+ true
+ Cfg_2
+ true
+ true
+ ..\icons\platform\Launcher2020.icns
+ ..\icons\platform\Launcher2020.ico
+ ..\(None)
+ 5
+ true
+ 0
+ 8
+
true
..\icons\platform\Launcher2020.icns
@@ -268,9 +341,9 @@
true
1033
0
- 8
+ 9
true
- 5
+ 65001
..\icons\platform\Launcher2020.icns
@@ -297,27 +370,42 @@
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
..\(None)
- 5
true
- CFBundleVersion=0.8.5;NSHighResolutionCapable=true;NSCalendarsUsageDescription=Not used;NSRemindersUsageDescription=Not used;NSCameraUsageDescription=Not used;NSMicrophoneUsageDescription=Not used;NSMotionUsageDescription=Not used;NSDesktopFolderUsageDescription=Not used;NSDocumentsFolderUsageDescription=Data saving;NSDownloadsFolderUsageDescription=Not used;NSNetworkVolumesUsageDescription=Not used;NSRemovableVolumesUsageDescription=Not used;NSSpeechRecognitionUsageDescription=Not used;CFBundleShortVersionString=0.8.5
+ CFBundleVersion=0.9.0;NSHighResolutionCapable=true;NSCalendarsUsageDescription=Not used;NSRemindersUsageDescription=Not used;NSCameraUsageDescription=Not used;NSMicrophoneUsageDescription=Not used;NSMotionUsageDescription=Not used;NSDesktopFolderUsageDescription=Not used;NSDocumentsFolderUsageDescription=Data saving;NSDownloadsFolderUsageDescription=Not used;NSNetworkVolumesUsageDescription=Not used;NSRemovableVolumesUsageDescription=Not used;NSSpeechRecognitionUsageDescription=Not used;CFBundleShortVersionString=0.9.0
0
- 8
+ 9
+
+
+ true
+ true
+ Cfg_3
+ true
+ true
+ true
+ true
+ true
+ true
+ ..\icons\platform\Launcher2020.icns
+ ..\icons\platform\Launcher2020.ico
+ ..\(None)
+ true
+ CFBundleVersion=0.9.0;NSHighResolutionCapable=true;NSCalendarsUsageDescription=Not used;NSRemindersUsageDescription=Not used;NSCameraUsageDescription=Not used;NSMicrophoneUsageDescription=Not used;NSMotionUsageDescription=Not used;NSDesktopFolderUsageDescription=Not used;NSDocumentsFolderUsageDescription=Data saving;NSDownloadsFolderUsageDescription=Not used;NSNetworkVolumesUsageDescription=Not used;NSRemovableVolumesUsageDescription=Not used;NSSpeechRecognitionUsageDescription=Not used;CFBundleShortVersionString=0.9.0
+ 0
+ 9
true
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
true
- 23
- true
+ 26
true
- CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.8.5.23;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.8.0;Comments=;PrivateBuild=v0.8.0-beta
+ CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.9.0.26;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.9.0;Comments=;PrivateBuild=v0.9.0-beta
1033
0
- 8
+ 9
true
true
- 5
PerMonitorV2
@@ -327,14 +415,14 @@
..\icons\platform\Launcher2020.ico
$(BDS)\bin\default_app.manifest
true
- 7
true
- CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.8.5.7;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.8.5;Comments=;PrivateBuild=v0.8.5-beta
1033
0
- 8
+ 9
true
- 5
+ true
+ 1
+ CompanyName=Night Sky Studio;FileDescription=AErender Launcher;FileVersion=0.9.0.1;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.NightSkyStudio.AErenderLauncher;ProductName=AErender Launcher;ProductVersion=0.9.0;Comments=;PrivateBuild=v0.9.0-beta
..\icons\platform\Launcher2020.icns
@@ -344,6 +432,18 @@
0
8
+
+ true
+ true
+ Cfg_4
+ true
+ ..\icons\platform\Launcher2020.icns
+ ..\icons\platform\Launcher2020.ico
+ 5
+ true
+ 0
+ 8
+
..\icons\platform\Launcher2020.icns
..\icons\platform\Launcher2020.ico
@@ -372,6 +472,9 @@
+
+
+
@@ -401,9 +504,16 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
ResourceItem
@@ -415,6 +525,16 @@
RCDATA
Language_RU
+
+ ResourceItem
+ RCDATA
+ AEPARSER_MAC
+
+
+ ResourceItem
+ RCDATA
+ AEPARSER_WIN
+
Base
@@ -449,28 +569,16 @@
-
-
- true
-
-
-
-
- AErender_Launcher.icns
- true
-
-
-
-
- Assets\
- Logo150x150.png
+
+
+ AErender_Launcher.exe
true
-
+
Assets\
- Logo150x150.png
+ Logo44x44.png
true
@@ -481,287 +589,1083 @@
true
-
-
- Assets\
- Logo44x44.png
+
+
+ false
true
-
+
- .\
+ false
+ AErender_Launcher.exe
true
-
-
- .\
+
+
+ false
+ AErender_Launcher.exe
true
-
-
- Contents\Resources\StartUp\
+
+
+ .\
true
-
+
- Contents\Resources\StartUp\
+ AErender_Launcher
true
-
+
.\
true
-
-
- .\
- true
-
-
-
+
Contents\Resources\StartUp\
true
-
+
- Contents\Resources\StartUp\
+ AErender_Launcher
true
-
+
- AErender_Launcher.icns
true
-
-
- C:\ProgramData\AErender\Docs
- false
+
+
+ Contents\Resources\StartUp\
true
-
+
C:\ProgramData\AErender\Docs
false
true
-
-
- C:\ProgramData\AErender\Docs
- false
+
+
+ Assets\
+ Logo150x150.png
true
-
-
- C:\ProgramData\AErender\Docs
- false
+
+
+ .\
true
-
-
- C:\ProgramData\AErender\Docs
- false
+
+
+ Contents\Resources\StartUp\
true
-
+
- C:\ProgramData\AErender\Docs
- false
true
-
-
- C:\ProgramData\AErender\Docs
- false
+
+
true
-
+
- AErender_Launcher
+ Contents\Resources\StartUp\
true
-
+
- AErender_Launcher
true
-
+
+ AErender_Launcher
true
-
+
+
+ C:\ProgramData\AErender\Docs
+ false
+ true
+
+
+
- Info.plist
+ AErender_Launcher.icns
true
-
+
- AErenderLauncher
+ AErender_Launcher.icns
+ true
+
+
+
+
+ .\
true
-
+
+ Contents\Resources\StartUp\
+ true
+
+
+
+
+ C:\ProgramData\AErender\Docs
+ false
+ true
+
+
+
+
+ true
+
+
+
+
+ .\
true
-
+
Info.plist
true
-
+
- AErender_Launcher
+ Contents\Resources\StartUp\
true
-
+
+
+ AErender_Launcher.rsm
+ true
+
+
+
+ .\
+ true
+
+
+
+
+ true
+
+
+
+
AErender_Launcher.exe
true
-
+
+
+ .\
+ true
+
+
+
+
+ true
+
+
+
+
+ .\
+ true
+
+
+
+
+ .\
+ true
+
+
+
+
+ .\
+ true
+
+
+
+
+ AErender_Launcher.icns
+ true
+
+
+
+ .\
true
-
+
+
+ AErender_Launcher
+ true
+
+
+
+
+ Assets\
+ Logo150x150.png
+ true
+
+
+
- false
AErender_Launcher.exe
true
-
+
+ C:\ProgramData\AErender\Docs
false
- AErender_Launcher.exe
true
-
+
+
+ Info.plist
+ true
+
+
+
+
+ .\
+ true
+
+
+
+ C:\ProgramData\AErender\Docs
false
true
-
-
- AErender_Launcher.exe
+
+
+ C:\ProgramData\AErender\Docs
+ false
true
-
-
- AErender_Launcher.exe
+
+
+ C:\ProgramData\AErender\Docs
+ false
true
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
0
-
-
- 0
+
+
+ classes
+ 64
+
+
+ classes
+ 64
-
-
- Contents\MacOS
+
+
+ classes
1
- .framework
-
- 0
+
+ classes
+ 1
-
-
- Contents\MacOS
+
+
+ res\xml
1
- .dylib
-
- 0
- .dll;.bpl
+
+ res\xml
+ 1
-
-
- Contents\MacOS
+
+
+ library\lib\armeabi-v7a
1
- .dylib
-
- 0
- .bpl
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
-
-
- Contents\Resources\StartUp\
- 0
+
+
+ library\lib\armeabi-v7a
+ 1
-
- 0
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
-
-
- ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
1
-
-
- ..\
+
+
+ library\lib\armeabi-v7a
1
-
-
- Contents
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
1
-
-
- Contents\Resources
+
+
+ res\values
+ 1
+
+
+ res\values
1
-
-
- Contents\MacOS
+
+
+ res\values-v21
1
-
- 0
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ Contents
+ 1
+
+
+ Contents
+ 1
+
+
+ Contents
+ 1
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
@@ -792,12 +1696,24 @@
1
+
+
+
+
+
+
+
+
+ False
+ False
+ False
True
+ True
True
True
diff --git a/src/AErender_Launcher.res b/src/AErender_Launcher.res
index f552737..4673884 100644
Binary files a/src/AErender_Launcher.res and b/src/AErender_Launcher.res differ
diff --git a/src/AErender_LauncherResource.rc b/src/AErender_LauncherResource.rc
new file mode 100644
index 0000000..073496c
--- /dev/null
+++ b/src/AErender_LauncherResource.rc
@@ -0,0 +1,4 @@
+Language_EN RCDATA "..\\lang\\en-US.aerlang"
+Language_RU RCDATA "..\\lang\\ru-RU.aerlang"
+AEPARSER_MAC RCDATA "lib\\plugins\\AEP Parser\\aeparser_mac"
+AEPARSER_WIN RCDATA "lib\\plugins\\AEP Parser\\aeparser_win.exe"
diff --git a/src/AboutUnit.fmx b/src/AboutUnit.fmx
index 3ebb333..d173870 100644
--- a/src/AboutUnit.fmx
+++ b/src/AboutUnit.fmx
@@ -53,107 +53,107 @@ object AboutForm: TAboutForm
PNG = {
89504E470D0A1A0A0000000D4948445200000080000000800806000000C33E61
CB000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 0C7449444154785EED9D096C14E715C7DFFAD85DEFAEBDB6B131D86073D998D3
- E0636D5AB551E8212135A92A4551D52A6D1AA95552D284400285025112B5AADA
- 4AA44D507AA9A952A557AA44254DA3465481A815B5F16D739F36E0D8D8E0737D
- EDD5EFCD1163F0CE7C33DEF5CC7ADE4F7AECBCCFCBACE5F7DFF7DDDF00411004
- 411004411004411004411016C026BDCE05F267CDE567262291BB5EE34ABC8381
- F7474B924CF689E860E0D1C292C97E5C884730E42027334B6196CACC0DAEDC0D
- 9096550C49F645906473B232E26EC29171084F76C358FF0518ED6D63257E6601
- 66416621663117432C0520071E836E078723173CCB1E82CCC20758F07DEC470E
- 7C13C14B648289A00E063ADF8591AB7F8389895E5638C90CC5103321C44A0053
- 81B7DB0B2077D33390B9FC11484A710B3F25664738E887812B7F80DEE6433039
- 798395DC298459110B0160DD8E69DE05D9258FC2A2CD0721392553F809115B42
- C101E86E7A116E9FFF3DF3469961F580ED04DDCC5600187C96DA9D0BA1A8E655
- C828F892584CC495E1EBEFC1D5DAED00E3379937C14CB70866230031F8767B11
- 147EF1AF90E6DD20161373C2D8601B747EF030AB123A98A75B04D852D783187C
- 87A300967DE11D7066AE178B893923D59907E9055B61A4F33D0885B03A90BB8C
- 9AD02300CC1A76665E28DAFA26A42DA8144A89B927C5990BCE9CCDD07FF908F3
- 74B507F408005BFB1EC82BFB3E642DFFAA58441886DD5D04B6241BF87BFEC73C
- CD22C054AE0529F57BCB2077ED5362116138180B8C89D020D716532D6FC6D48F
- 19C3058B2B0F30D561D78F3003180B8C09C6468C1177E35EAB00ECE0CAA984F4
- 455BC522C234604C303662FB2C2E0240653921BBF89BA24B980E313638CFC2DD
- B6E315809CFE33C0BB749B5042980F313619CCB8AB012D02480577BE0F9252F1
- 03083382B1C1188943F3311500BE2F153C0BAA4497302D628C50005CB1E57913
- 2A092D05EC99AB8512C2BC38324BD8BF385623C74D112D550013807BB1E812A6
- 25D59DCFFE9505A00A6F06C0F72543B2DD2B9410E625D92E3702316631CB0088
- 980508B3C3DD0044B40880988790002C0E09C0E290002C0E09C0E290002C4EC2
- 09203535155C2E17B72527734F8C59129EFE228A04E7981742C983C7C191BE4C
- 283588A777ED81B5EBF91720373736C06BAF1C923C0B30317C15CE1FB98F5DE1
- 9271DC40A2B8442CE13280D3A96D5BE1868D65E0F678248FB89B84138037334B
- BAE2233925052AABAA258FB89B8412407A7A06642F582079FCF8B67C4ABA22EE
- 26A104B0A9BC026C36EE61EE4F58B9AA0416E4E4481E71270925804A5F8D74A5
- 0D148DAF86B2C04C248C00BCDE4C28295D2379DA2101CC4CC208A0C2570D4949
- FA7FDDFC8225B0B4B048F20899841180AF7A8B7435336DADCDD25574A831782F
- 0921809CDC85B07CE52AC9BB9770380CFFF8FB3B92179D2A26229B2D61343F27
- 24C45F0303A7C4B5CE0EB87AF912DCEAC36374A2939595CDDA11A592A79FF48C
- 0CC8F07AA39ADD8E03A7D171B9DC505EE583AF3CF4303CF6ED27E0F1277740DE
- 2263965B26C450F0F32FFD18F2972C91BC7BF9D73FDF85B7DFFA0B7CFD1BDF82
- CFDEFF39A97466FEFBD13178E3F5DF4A9E7630C03F7DF9B0E4CDCCE0E0001CD8
- B30B2626F0DC86290A583B64DB035F86CD15559092327D751D0E57E3B0F5AC99
- 6F43C1054B962A061F696F6D155FDB5A845725CA2B7DC284925E468687852A47
- 09ECB1AC5937355FE14C4B83AF3DF228EC7FF1474236BB3BF846627A01A8A5FF
- 919111B878E19C707DE6F429080450F4D14973B96043D926C9D30E061F3F538D
- C22231512E292C84FD2FFC10EEDBFAF959F562E285A9058003386A02686B69FA
- E41B39C952EE9953EDC2B512BE9A4F4B57FA181F1B93AEA28343D6AB4BD7C073
- 7B0F422E6BC49A15530B60F98A95AC07902B7933D3D234BDDE6C6AA897AEA283
- 19001B627A51CB32C80AD66BD9BEE359CDB397738DA90550A5327A170804E074
- 3B9EA83A454B73A36A1D8D7530B6C2F5A2767F045BF50E071ED8616E4C2B00AC
- 2FD5A671CF9E6EBFA7A5ED67F5F385F3629B4089EA590C0DA3F0E60BA615C0EA
- 356B852E9712D1BA4DCD8DEAD540F1EA52C8CAD63EB58C044900F147ADF11789
- 8485743F133CFD69618650E533A2110CE231BDB1251EF7E4C19402C03A1A074B
- 94B87CE9120C0F0D49DE746EDFEA83EBD73A252F3A7AE70622117D67347775DD
- 80A31FBC0FBF7EED1578E9E03E78F6E9EFC233DBBF033BBFF738B4B7AA8F61C4
- 03530A60FDC6326145AF12A754FE603C5960C9D24261A0299E04830138FEE1BF
- E1C5037BE1851FEC81B7FEF42634D4D50A0245018F8E8E0AED16A330A500D4D2
- 3FD2CAFAFF4A34359C94AE9489E73A81C6FA3AD8BF6717FCF18DD7E1C6F56B52
- A9B9309D001CACDFBC7153B9E4CDCC2D96E271024809FC86F574774B5E745000
- 7A9699A9D1DF7F1B7E75F817D07FFBB654624E4C27804D9B2B5467D378067B90
- 8693B5D2557470C46E5571EC4FBE0987D4C70ACC80E904C093FE1BEAF0585C75
- 78BA8348B585178A986A3AD8E3F1C04F5E3EACB89D0B5BE00D27EBB85AE298DA
- 2BAA7CAA29DEEF1F81DD3B9EE4EE8A3DB57337ACDBB051F266E6565F1FEC7B6E
- 87E4CD21893C1D8C53B56A7BF9309895BE6A96296A540DDFC753BFBBDD1E1650
- 3C6BD97A984A003CE93F5E58B51A308D0032B3B285E159A3C09E475A5A9AE459
- 07D308A0CA571397EE182FB84A486DF4713E621E01D41897FE657C5B66B75024
- 1131850016E62D82A265CB25CF3870054FA6C6DDC7898E29046064E3EF4E8435
- 08ACF760254C21009F09D2BF4CB5C5AA01C3078270BF1EAE9A55E397AFFE1C3A
- 3BAE4A9E767077D1CEDD7B254F99E7F7ED86EE8FBB24EF5E68202886F0CCC60D
- 0D0D0A8B3F71E78F5E3B77E61474DDB82EDD51192B65014305208EEAA9D7B92D
- 8D0D5C0B31D5A8E79C43C02AC9C82EE95C62A800561697701DF9D2C839FBA7C6
- C95A3E01607581CBBAAD80A102E069FD8F8EFA59FA3E2D79B3E3664F37773BC2
- 2A5BC90D13004EFAE04C9D1AADCD4D100AC56EC1E4C9DA13D29532583559E190
- 49C30450BA769D70EA971ABC4BBB78A9AFABE59A4AF678D2351D4899A8182600
- 9EF48F9B3E4EB54DDFF9335B70C5F0E54B17254F192BF4060C11406AAA1D3697
- AB3F751E974AF3ECC3D34A3D6763B06C73B9B046713E638800707326EE995723
- D6E95FA6A1BE96AB5B69B73BB8849AC81822005CF7AF06A6FFB616F5839FF430
- 383000E7CEF2F52CCACA2BA4AB2978968EE17E8044C090A16097DB0D1919CAFB
- FE46FD7E6104305EE0B66D5C84A2066EDA181E9EBE03090F99C0534094C0EEEB
- D060FC7EFFA8681C0A367C2E808831F3FDB87822B690002C0E09C0E290002C0E
- 09C0E290002C0E09C0E290002C0E09C0E290002C8E560118739619A1054D31D2
- 2280080427673E978D300F628CB8CFB1E31100DE0C2D0C8111F5539708631163
- 84134072DC14E1CD0078A3204C0CF2ADA5228C438C115603AAC1477833002A2A
- 0823BD339FCD4A980731462800390B28C29B01F0660118BDD500E1E0B0584498
- 0E8C0DC6086325C64C152D5500BB69601886AE1D158B08D321C486C5481440CC
- AA00194C2B63D07BFECFA24B980E3136F83C1BEEAEA0960C8029650CC6FB9A60
- B8EB3F4229611E3026181B51005CF53FA22503E04D718DD930F4341E827044D3
- 80031147301618138C0DC73AC03BD1B7F92D38310249B63470E7CDEF45F38942
- 6FFB6F60A0F36D7635C00C9FA113570188A9C5DF73163C791560F714083E610C
- FE9E3AB87EE220BBEA6336CA2C84C5BCE815002A2CCCEA9D7A48CFFF0CA438D5
- 17D813B1677CE022741CDFCEBA7F78F489A6D6BF8C5E01A085D8078FC360E709
- F0E46F8154A7BE273011FA181B3807578E3E01A1894BCCC31D289A52BF8CDE0D
- F0B208821009F961E8CA71B07B5780D34B9B46E682C16BC7E0DAB11D100A5C66
- 9E5CEF6B4AFD327A0580A00050710108875926E8F80882E303E0595806B664F3
- 3F313111090786A1ABE1107437FD8CFDCD6FB09259051F99ED4948F8FFB12B89
- 01C767B16641B263192C5CFF1864153F08C9C9D63B7D391E844263D07FE108DC
- 6CFF1D4BF978C64D3F333F3339EDE3975117B13A0A0B4580CF64C7CDF4E9CC32
- 98101683B7681B780BEF0777EE7AB025293F0786984E243C09FEDE76D6C6FA90
- 65D7F759E03F66A558D7E323C6C699718FF72B112B0120782FAC526421E0B71F
- B3820B2025035C99A5E0C8288214770ED86C983162F9D9F3810844221310F4F7
- C1C450078C0E9C654D2C5CDC815D3BFCB6E3089F1C784CF9BABFF577128F20C8
- 4290C580DF7C0C385EA361B6A0E0CFCC54BB4A344CF138B227073D6681978967
- 20F0DE681870341404055F1D5904186C7C95EBF898065E66AE82217F0E059F0F
- 39D871093A411004411004411004411004613900FE0FC9CFE14B9BFF54F80000
- 000049454E44AE426082}
+ 0C7E49444154785EED9D096C1CE515C7FF3E76ED3DBCB6933897133B24E48224
+ 4EEC78EDB46A11F490504BAB4A0855AD6829522B6828842B29148200B5AADA4A
+ A105442F958A8A5E54A0425354042241AD208E8F2476424248489CC424B1139F
+ BBBEF6E8F7E6209777E79BF1AE67D6F37ED2CBCEFBBC99B5FCFEFBBEFB1B300C
+ C3300CC3300CC3300CC3300CE302F2B4D7A940FFACA9FCCC5C2479D96B56C976
+ 30E8FE64F99AE93E931A0A3C594233DDCF0AD908861EE4026185C23CC202F057
+ AC86AF7C29F2BD73919F572CCA98CB49244790183B8DE1DEC38876B78B9288B0
+ 7161316171611917432605A0079E82EE45515105828B6E46D9C29BE09F1D163F
+ 2AA23731B22447113DDB84BE13AF61E8D83F303ADA2D0AC78491183226844C09
+ E042E0BDDE4A54ACBD17BECA5BE1F307949F329363381AC1F0A93FA17BCF368C
+ 8D9D1225170B615264420054B7539AF763C6B2DB50B16E2BBC8565CA4F98CC32
+ 16EB4377DB1338FFC11F85171546D503B5132C33590150F0456A2F9E8DEAC667
+ 10AAFCB25ACC6495C113DB71AC692330725678A3C22C8B6032025083EFF556A3
+ EA8B7F87AF74B55ACC4C09C3FDEDE87CE31651251C179E6511504BDD0A6AF08B
+ 8A2AB1E80BAFA0B86C955ACC4C199EE23928A9BC01439DDB118F5375A077194D
+ 6145009435BCC24A517DFD8BF0CD5AAF9432534F6171058A67AE43EFD1578567
+ A93D604500D4DA0F624ECD0F51BEF8EB6A11631BDE6035F2F2F31039F39EF04C
+ 8B8052B919B4D45F5A83D092BBD522C67628161413A5416E2EA666DE4CA99F32
+ 861FF3D63F8A621F75FD182740B1A098506CD4184937EECD0AC00BBFA8F34BE6
+ DEA016318E816242B151DB6759110029AB18E54BBFADBA8CE3506343F32CD26D
+ 3B5901E8E93F84B2B9372A258CF350631312265D0D9811800781F961E4FBE903
+ 182742B1A118A943F3191500BDCF83E0CC7AD5651C8B1A231280546C65DE444A
+ 222B84A76CB952C23897A2B265E25F1AABD1E39616335540218A02F35497712C
+ 9EC07CF1AF2E0043643300BDAF0005DE52A584712EF95EBD114831CB580620F2
+ 108F93B2182793884B370009330260A6212C0097C30270392C0097C30270392C
+ 0097937302F0783CF0FBFDD25650203D31E64A64FA8B24129A639E8D255FDA09
+ 7FD922A5D426EEB97F0BAE5925BF00794F6B0B9E7B7A9BE6B98068DF311CD97E
+ 9DB8A225E3B48124ED12B19CCB00C5C5E6B615AE5E53834030A879CCE5E49C00
+ 4ACBCAB52B390A0A0BB1BEBE41F398CBC929019494843063E64CCD9327BCE153
+ DA157339392580B5B575C8CB931EE6FE8425572FC3CC59B3348FB9989C12C0FA
+ 70A376650E124DB891B3C044E48C004A4BCBB06CC54ACD330F0B606272460075
+ E106E4E75BFF75E7572EC0C2AA6ACD6374724600E1860DDAD5C4B4EFDBA35DA5
+ 861B83579213029855311B572DB95AF3AE249148E05FFF7C45F352532F449497
+ 97339A9F1272E2AF41814BC789CEE33876F408CEF5D0313AA9292F9F21DA112B
+ 34CF3A25A11042A5A529CDEBA581D3D4F8FD01D4D687F1B59B6FC1EDDFBD1377
+ DCB50973E6DAB3DC322786821F7BF2A798BF6081E65DC97FFEFD1A5E7EE96FF8
+ E6B7BE83CF5EFF39AD7462FEF7CE0EBCF0FCEF35CF3C14E09F3FF5ACE64D4C7F
+ 7F1F1EDD723F4647E9DC860B548A76C88D377D15EBEAEA515878E9EA3A1AAEA6
+ 61EB4933DD86822B172C4C1B7CA263DF3EF5B57DAFF29A8EDAF5616542C92A43
+ 83834A95930EEAB1ACBCF6C27C45B1CF876FDC7A1B1E79E2274A36BB3CF876E2
+ 780118A5FFA1A1217C78F89072FDFE81FD181F27D1A7C6E7F76375CD5ACD330F
+ 059F3ED388AA6A35512EA8AAC2238FFF18D7DDF0F949F562B285A30540033846
+ 0268DFDBF6C937724CA4DCF7F77728D7E908377E5ABBB2C6C8F0B076951A1AB2
+ 5EBE62251E7C682B2A4423D6A9385A00572D5E227A00159A37317BDB2EAD37DB
+ 5A9AB5ABD45006A08698558CB20CB158F45A366E7AC0F4ECE554E36801D41B8C
+ DE8D8F8FE340079DA87A81BD7B5A0DEB68AA83A9156E15A3FB13D4AA2F2AA203
+ 3B9C8D630540F5A5D134EEC1031D57B4B423A27E3EFC81DA264847C324868649
+ 78D305C70A60F9CA6B942E573A52759BF6B41A57034B97AF40F90CF353CB448C
+ 05907D8C1A7FC9644249F71321D39F5666080D3E2315B1181DD39B59B2714F19
+ 1C2900AAA369B0241D478F1CC1E0C080E65DCAF9733D3879A253F35263756E20
+ 99B476467357D729BCF9C6EBF8ED734FE3C9AD0FE3817BBE8F7B377E0FF7FDE0
+ 0E74EC331EC3C8068E14C0AA3535CA8ADE74EC37F883C96481050BAB9481A66C
+ 128B8D63E7DB6FE189471FC2E33FDA8297FEF2225A9A762902250147A351A5DD
+ 62178E148051FA27F689FE7F3ADA5A766B57E9C9E63A81D6E6263CB2E57EFCF9
+ 85E771EAE409ADD459384E0045A2DFBC666DADE64DCC3991E26902281DF40D3B
+ 73FAB4E6A586046065999911BDBDE7F19B677F85DEF3E7B51267E23801AC5D57
+ 67389B2633D843B4ECDEA55DA58646ECAE5E9AF9936F1271E3B10227E03801C8
+ A4FF96263A16D71899EE20D1E0E285228E9A0E0E0683F8D953CFA6DDCE452DF0
+ 96DD4D522D714AED75F561C3141F890C61F3A6BBA4BB6277DFB719D7AE5EA379
+ 1373AEA7070F3FB849F3A6905C9E0EA6A95AA3BD7C14CCF5E10691291A0D8DDE
+ 2753BF07024111503A6BD97D384A0032E93F5BB8B51A708C00CACA6728C3B376
+ 413D0F9FCFA779EEC13102A80F3766A53B260BAD12321A7D9C8E3847008DF6A5
+ 7F9DF086C92D14C9451C2180D973E6A27AD1559A671FB482A7CCE4EEE35CC711
+ 02B0B3F17731CA1A04D17B70138E1040D801E95FA7C165D580ED0341B45F8F56
+ CD1AF1EB677E89CEE3C734CF3CB4BBE8BECD0F695E7A1E7B78334E7FDCA57957
+ C20341194466366E60A05F59FC493B7FACDAA1F7F7A3EBD449ED8EE9715316B0
+ 5500EAA89E719DBBB7B5456A21A611CD9273085425D9D9259D4A6C15C092A5CB
+ A48E7C69959CFD3362F72E3901507541CBBADD80AD029069FD47A31191BE0F68
+ DEE4387BE6B4743BC22D5BC96D13004DFAD04C9D11FBF6B4211ECFDC82C9DDBB
+ DED5AED24355931B0E99B44D002BAEB95639F5CB08D9A55DB23437ED929A4A0E
+ 064B4C1D4899ABD8260099F44F9B3EF6B75FBAF367B2D08AE1A3473ED4BCF4B8
+ A137608B003C1E2FD6D51A3F759E964ACBECC3334BB36463B0665DADB246713A
+ 638B00687326ED993722D3E95FA7A5799754B7D2EB2D92126A2E638B0068DDBF
+ 1194FEDBF71A1FFC6485FEBE3E1C3A28D7B3A8A9ADD3AE2E20B3748CF603E402
+ B60C05FB03018442E9F7FD4523116504305BD0B66D5A8462046DDA181CBC7407
+ 121D3241A780A483BAAF03FDD9FBFD53627228D8F6B90026C34CF7E3E299CCC2
+ 0270392C0097C30270392C0097C30270392C0097C30270392C0097C3027039E6
+ 04505060CF59668C3C2663644600498C8F4D7C2E1BE31CD418499F63272300BA
+ 195902B121E35397187B51634413407ADCD2229B01E846318CF6CBADA562EC43
+ 8D11550386C127643300292A86A1EE89CF66659C831A2312809E05D2229B01E8
+ 66E3889E6B412236A816318E83624331A258A93133C44C15206E3A3E8881136F
+ AA458CE350622362A40A206355800EA59561747FF057D5651C871A1B7A9E8D74
+ 57D04C06A094328C919E360C74FD5729659C03C58462A30A40AAFE27CC6400BA
+ 29AD311BC4D9D66D184E9A1A7060B208C5826242B19158077831D636BFC54687
+ E0810F8139D37BD17CAED0DBFE3BF475BE2CAEFA84D13374B22A0035B544CE1E
+ 44704E1DBCC14AC567EC2172A60927DFDB2AAE7A844585C5A95816AB02208525
+ 30D8D58C92799F41A1CF78813D9379467A3FC4F19D1B45F78F8E3E31D5FAD7B1
+ 2A00B2B8F8E011F477BE8BE0FC0DF0145B7B0213638D68DF217CF4D69D888F1E
+ 111EED403195FA75AC6E80D7451043321EC1C0473BE1092D4671296F1A990AFA
+ 3A77E0E48E4D888F1F254F1805DF54EAD7B12A008204408A1B4722318281CE77
+ 101BE94370760DF20A9CFFC4C45C24313E88AE966D38D3F60BF1373F254A2615
+ 7C62B22721D1FFA7AE24059C9EC55A8E82A245A858753B662CFD0A0A0ADC77FA
+ 723688C78771FEF0ABE8EEF88348F974C64DAFB088303DEDD397D112993A0A8B
+ 4440CF64A7CDF425C2424208F3505A7D234AABAE47A06215F2F2D33F0786B994
+ 64620C91EE0ED1C67A1BFDC75F1781FF5894525D4F8F181B11263DDE9F8E4C09
+ 80A07B5195A20B81BEFD9415FC406108FEB215280A55A330300B7979943132F9
+ D9D3812492C951C4223D181D382E1A790745138B167750D78EBEED34C2A7079E
+ 52BEE56FFDC5642308BA107431D0379F024ED764942D38F81373A15DA51AA578
+ 1AD9D3839EB1C0EB643310746F320A38190982836F8C2E020A36BDEA757C4603
+ AF3355C1D03F87832F871EECAC049D611886611886611886611886711DC0FF01
+ 5322E5446696053F0000000049454E44AE426082}
FileName =
'C:\YandexDisk\Development\Delphi\AErender Launcher\icons\png\ps\' +
'icon_128.png'
@@ -165,215 +165,215 @@ object AboutForm: TAboutForm
PNG = {
89504E470D0A1A0A0000000D49484452000001000000010008060000005C72A8
66000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 19F249444154785EEDDD09741D577907F0EF6979DA2C3DADB66559B6E45D5E14
- CBB66C67C1092127349400871E68819EF67481362DD05087E034244058439B42
- E1140870A0A50D5BA1C0A14081903DCDE2459B37BCC4B622D9962D6B7F929EB6
- D7FBCDDC8BC6CF92FDDE9B3B6FE6BDF9FFCEB999B963D97E72F4FDE7CE768700
+ 19F749444154785EEDDD09745C577907F04FD268345A47AB6D59926D795FE555
+ B6B3E004C8090D25C0A1075AA0A73D5DA0A5050A7500A721010201429B42E114
+ 0870A0A50D5BA1C0A14081900DD28478D1E60D2F516CCB8BBC681FCD8CD6DEEF
+ BD7BD1F358B267E6DD37EFCDBCFFEF9C9BF7EEB36C8F1C7DFF77DF761F010000
0000000000000000000000000000000000000000000000000000000000000000
- 000000000000000020B50272992962BF9F4CFBFEC01D51B95462FB692BDD0B44
- 7D7EEBF7C1EB736D0748962A785E5A8BDFBA3D2DA56381C416372F635B96684C
- F515EB3AC07C628B5CF56744537D6B63B1CBB4904E05612D662E70D5E7F5F99A
- F5F7A825403CAC05CD8D8B7FBE66FD1AA6FA9E970E45A18A583555DCD957B482
- 8A5A2A2ADF42C1D2060A16AFA6BC921ACA29A8A6AC4048FCD67CF13500718A8E
- D34C7490A6C6CE5164A89B26868FD3C4C0110AF71DA0B14BAF8A2F989EA3C506
- 82E783C0CB013057D173CBF95DCBCB5B4045B5B75271CDED54B4F846CACEA911
- DB019C353DD54DE1F3CFD370F7AF28FCEA1314898C88AD5396A68220360C3CC7
- 8B013057E1F31E5E157E2E85965E4FA52BDF49C54BDE4081AC22B10DC01DD199
- 300D9FFD390D9CFC360D76BD20B64C8AA68260BE518167782D00620B7FB6E889
- F2A862CD5BA8B2E12E0A2ED828FA00DE323172907A8F7C892E1DFB89E84544B3
- 86416C10788257024015BE2A7EB5C70F1AAD7CD51DB470D37D945BB85AF401BC
- 6D72F4385DE8F834F59DF885E84DC8661D11786634E08500B016BF2A7CDEE307
- 29BF6C0DD5ECFC241596DF2CFA00E965B4EF69EA7EF17E1AEF3F267A1C026A44
- C041E08910E08273932A7C35DCE7C2E7B3F585B4B0F1AF69D90D5F157BFD55A2
- 0F907E720BEAA862E53BC58F7784C23D1D72ABEB7B7D2B2E3EB758F7FADCCCE3
- FCDCA26A5AFE9A2F5041C52DA20F9019467B9FA6CEE7DE4793E173A2A7CE0FA8
- CB87AE8D04DC1A01588B5F1DEB175061D5165AF9BAEF53B0A451F40132476E61
- 1D95D5BD89C2BD7B6972B4576CB116BC6BA302370260EEE22FADBF9D96EFFA16
- 65E5568A3E40E6C9CA29A1B2FAB7D044F8288D0F748A2DD63DBF2F460073157F
- 3E85EADF48B5D77F8D025905A20F90B9028120952CBD932223C72932F08AD8E2
- 6A08A43200E62BFE3B45F17F59FCC3F0390080CC1708648B10B84384C009B743
- 205501A08A5F9DED3787FD25B537D3F21BC59E5FA422809F70088496BE5E1C0A
- B418CF1AB8749350AA02800B9F036076CF9F5FDA4075B77E1BB7F2827F0572C4
- 48E0761AEE7A9CA6C6FBC50615002A041C0F032E4CA7C50EFDF32818ACA0BAD7
- 7E8DB2B243A20FE05F5C035C0B5C135C1B668D70ADA8BA7194D323006BF19BD7
- F9F9269FDA9B3E4B051537897500C8CEADA0BC50350D9C795CF4527AABB0D301
- C0238CCB8FFB2B56BD892AD77F50AC03809257B29EA6C78ED358DF49D1B33E38
- C41C0B02270F01D4DE7F3600720B17D2E22D1F17EB00108B6B23B7A84AACF1CE
- 926B866B47D59123521100B3C3FFC54DBB71A30FC03CB836166FBE47ACF1A132
- D78CE3E7029C0A00F5A167F7FE45E5EB2854F74EB10E00F3E11AE15A49D128C0
- E90098DDFB576DFE80D8E2F4390780F4C635C2B592A251801301A03EECECDEBF
- 50245A71F51D621D00AE856B856B2605A30027038093CB0C80CAF57F21B701C0
- B50564CDA800706C14A03B00D407E43FD71CFEE7169651C9B23B8DAD00101FAE
- 19AE9DD9C30055AB5A43C0A91100FFB9E6DE3F54F7660A04F0941F4022B866B8
- 76AE3C0CD04A7700A8E25701904BA5CBDF2096009028B3767804A002407B08E8
- 0C00F5C178691EFFE7142FA482B266632B0024866B876BC80C00751E80690B01
- 9D01C0F883CD064068F12ED1D5FD7700F884A81DA3862E0B006DC5CF9C0800FE
- 33CD00285ABC9337024092CC1A5201C0B5E5D90050E9640980CA26B104806499
- 35141B00DA42406700B0D900C82D2CA19CC23A632B0024876B886BC9E3230095
- 4A2A00B28CD7736BFEB0003E1410B5C42FC731EBEAF25AB34D5700282A00B229
- BF0C7B7F001DF2CBB996D2EA1C4016E5E454F34600B029277B89F8AF5957B375
- A685CE0060B321100CF11C67006097594BDA8B9FE90A00F5C154CBA2AC5C3E71
- 01007699B5640D00D56CD33D0260E6870B040ACD2E00D8623E4BA3ADE8AD9C08
- 005320C0D72E01C02E07DF9AE5DC080000744A8B11000A1FC0595A6BCCB94300
- 00F03C0400808F2100007C0C0100E0630800001F430000F8180200C0C7100000
- 3E860000F0310400808F2100007C0C0100E063BA1E2CE020E139CBF89DE645A2
- 85A8FED6476941F52D62DDF7CA2B2A28E0D0FB51C6C7C6281C1E913DC84823E7
- 9EA2534FFC95581B142D2C5A44B469D16644B30501E0B05DB7DC4AEFFAD33F97
- 3DFD666666E8331FFF089D397D4A6E818CE36000E010C061A1D252B9E68CACAC
- 2CDA79C34DB20790180480C3B8409DB66DC7CE94FC3D9079F053E3B0A2050BE4
- 9A734A4A42D4B06193EC01C40F01E0B050A84CAE396BC7F537C83580F821001C
- 56595525D79CB579CB560A06F91C2C40FC10000ECAC9CDA5458B53F382A4BCBC
- 7CDADCB445F600E2830070D07A715C9E2B422055765C7FA35C03880F02C0415B
- 9BB7CBB5D468D8B8898A8BF14226881F02C021D9D9D9D4785D93ECA506FF9DA9
- 0E1D486F0800876CD8D84885457C53646AE1300012810070C8F69DEE5C965BB1
- 6A3555562D943D80AB430038802FC73536A576F86FE556F840FA410038E0BAA6
- 2DC66539B7E03000E285007040F38EEBE59A3B165757D3B2E575B207303F0480
- 667CE26FC3A646D9730F4601100F0480665BB636534E4E8EEC25AEBDAD85A6A6
- A6642F79CD784210E2809F10CD9A77DA1BFE1F3ED841278EFD56F692172A2DA3
- 750DEB650F606E08008D78F28F356B1B642F39A74E9EA08EF636D9B3A7195703
- E01A10001A6D6BDE616BD81D8944E8D5CE3374E460BBDC624F93381C090683B2
- 077025048046CD3BECED7179E83F3D3D4DDDDD5DD4DFD727B726AFA0A0801A37
- BB773F82977150F3A3DAABD7AC351EA5E669D5F8FE89BC7CF72EDFBA0193826A
- 52B570117DE2E147642F393FFAC1F7E87F7FF65363FD4FFEEC2FE9C65DF6FFF9
- DA5A0ED097BEF0CFB2E79EEA2535B64E8E4E4E4CD0F9F3E7642F715CF05CEC1B
- 1B37D32AB1AC5DB68C7273AF1C1D3DFECB5FD07F7DF731D9F308CC0AEC7D77BC
- F14DF4963F78BBEC25E7531F7BE077B3FB6EDDB69DDEF3B7EF37D6EDE02B0AF7
- DEFD5E57A70EAFAB5F41F73DF890EC25EFB9679EA2FFF8E6D7652F3EE5E515B4
- EBB5AFA31B5EB38B42A16B4FD0FAC2F3CFD2BF7DFD51D9F308CC0AEC7D766FBF
- 1D1919A6CE33A7658FE8C8E143C694DF76F15ED7ED2704C7C7C7E59A3D378911
- 51CDD25AD9BB3A3E21CBD3B1F3A88CC3399EE2F723048006FC43B9A466A9EC25
- E750473B45A351D9231A1D0DD3C913C765CF9EED2EDF14D477A957AED9B775FB
- 0EB936379E85E90D77BE993EF199478C773264DB38ECF0030480063A1EBE39D8
- D62AD7661D6CBF725B32F8D8B7A2B252F6526F421CBF47348D0256AF5E2BD7AE
- 54BF62253DF0B14FD19BDFFA360AE6F1D1285C0B02C0A6402040DBB6EF94BDE4
- 4C4F4F5147C795D7FEDB5B5BE49A7D6E3F9F3038C887AFF6D5CEF18C03FF3FE0
- 61FEBDF77FC4780E02E28700B089F73A7667FE3D7AE4308D8D8ECADEACB3DD5D
- 74F1428FECD9E3F6B301A39A4E42F2A5CDD2B272D923E3B2DD5DEFFB80710216
- B73E270EFF62366DD7301F7FEB81FD72ED4A7C194F073E47B1B47699ECA59EAE
- 1381ACBCDC0C009EFFF09E3D1F361EBF86E420006CE03DCED66D573F29158FF6
- AB1479CB817D72CD3E3747013A0380DFB654120AD1EE3DF7E3B1679B100036AC
- 5DB7DEF841B4E3F4A9576860A05FF6AE74F2F83171FC3C207BF6F0834A7CBCEC
- 061D973495CACA2ABAFB9E3DC6CD45600F02C006BB4FFEB1B696F987FF8C2F0D
- EA3A0C2813C7CE6BD6AE93BDD48A44F48D00DEFAF677C47D3F005C1D0220497C
- BD79CB36FB37D85C2B0058EB7E7D87016EDF13A0031E70D2070190A48D9B1A8D
- 33D276F45EBC48DD5D5DB237BFA3470ED1D8D898ECD9C3B7187378A59ACE4300
- D0070190241DD7D5E3D9FB337E42B0638E1B8592515058489B1A37CB5EEA8C8F
- EB0930D00B019004BEF6ACE3D253BC01C0DA5A341E0668387791B0D9BB9CC143
- 100049D8DCB475CE474913111E19A1E3094CFD75B0BD4DCB5C81AC71F3166324
- 904A636357DEE804EE43002461BB86E13F4FFE99C871315F473F7AF890ECD963
- 3C21A8E10426A43F0440828A8A16186FE1B5AB35891B7C5AF6EF956BF6E9B883
- 31113CDD19780F022041FC382ABF85D70E7E3A8E67FF4D148F1AAC8F0CDBC193
- 975AEFA9771A9FC84C0783037A6EBA4A1798112841BBF77CD8F6CD34BCF7FFF2
- 173F2F7B89D9F3C047A97EC52AD9B3E787DFFF0EFDEA173F933D67BDEEF6DFA3
- B7BFE38F652FB52627278CC9563A4F9FA69EF3E7A8B7F7220D0F0D19732E4C4F
- 9B8761598180317700FFBAAE90D50633027903EF31F9D97ABB78F28F64B5B5E8
- 7B4478478A0F0352A9BBEB55FAF94F7F4CFFF8A987E8EEBF790F7DF6930FD177
- 1FFB163DF99B5F1B9754F916EC0B3D3D74498401B78B172FD0F97367BD57FC0E
- 43002480DFB6A3E35EFA83360220997307F3595ABBDCF64C465E32323C6C8C68
- 3E7AFF87E8A107EEA39FFCF70FE8C4F163DAAE9E642204400274DCFCC3CFF8DB
- 9922EBDCD96E6398AA4B26BC43B0AFEF123DF6AD6FD29EDDEF370E6BF8DF08E2
- 830088D3A2C5D5B4BCAE5EF692D7D1667F087FB5F90312C5A1E6D61382768D8C
- 8CD077FEF3DFE9810FEDA6679EFC8D38D69F94BF02F14200C4699B18FEEBA063
- 9AAFFD7B5F926BF6F15C812B57AD91BDF4C14F487EE4BE7BE829714C8F217EF2
- 100071DA6EF3AD3F6C686850CB4CBF7C469BCF64EBB2E386F43A0CE8EA3C435F
- FEE2E78C1100D8830088034F44A963B249DE6BE938CBCC7FC6FE97F58D02F89D
- 8676EF6D48A5D1D151DF9DAD770A02200E3A6EFD652D1A9FEBD7791850585444
- 1B1BAF933DF01304C035F009321DC7FFA3E1301D3D7C50F6ECE35788F1F56B5D
- 74BCDB00D20F02E01A56AD5E63BC5FCE2E9EDC53F7EDB03A270CE5C79BED4E70
- 02E90701700DBA5EA8B1EFA517E49A3E579B4D3851FC7873D3D666D903BFC0B3
- 0057C127C61EFEDC178DF9E7EDE0EBD3DFF8EA97B44F8B9595954DEFBEEBBDDA
- 5E8871E450077DFE9F1E963DBD743E0B70ECE8117AE4E14FCA9E0FE0F5E0EED8
- B0E93A7AFFDF7F50F6321F0714DF4DE7C4137108001BF030903B5C993ACB453C
- 9268DEEEAFEFD9EF1000F3E0A9A7AF6BDA2A7BFE91EA8942C05D0880796C6CDC
- ECCBB3E2FCBCC3E2EA25B207990E01300FBF0DFFAD704F807F2000E6C033E6F2
- 08C0AFF830205D9F1084C42000E6604EFB9DFAB7E7784555D5426DD38E81B721
- 00E6A0E3A59FE90E2703FD010110A3B8A4841AD66F943DFFDAA661F663F03E04
- 408CADCD3BB4DD5997CEF8EEC7F51BECBFFF00BC0D3FE93174DDFB9F093261BE
- 40B83A0480457945A5F1F41F98F809417E112A642E0480859FAFFDCF25989767
- 5C1181CC8500B0E079FFE172380CC86C0800896F7FE51765C0E51A366C34AE8C
- 406642004899FC9A2C3B8C270471623463210024FC90CF4FC794E8E04D981044
- A8AB5F41F73DF890ECD9D3D1DE9AB237EECE87473337ED7AADECE9F1C09EDDC6
- CB34938509416CC08C40CE7ADB1FBD8B6E7BFD1DB267CFA3FFFA2F7460DF5ED9
- 7347CDD25A7AF0E39F963D3D7EFAE31FD2FFFCE447B2973804800D9811C839FC
- D49BAEB3FFFC1E7A3BAFFED6855F8DADFB0599B81A90997C1F006BD63550A8B4
- 4CF6EC39D8DE46910887B3FBF66A9E8578E1A2C5C6A1126416DF0740F3767DD7
- FE75BEB5D7AE7D1A5F1DA6E009C1CCE3EB00E0A7DDF8E11F1DA6A7A7A8AD55DF
- 3CFD76F59C3F67BC4454279E30140F4A65165FFFDFDCB0B1D1782F9E0E478F1C
- A6B1D151D9F306DDA3809250088F4A67185F0780CEB9EF0EEC7D59AE7987EEF3
- 000C870199C5B701100CE651635393ECD9C32FD4F0D2F05FE9BBD44BA74E9E94
- 3D3D366FD9664C990E99C1B701603CEA9AA7E751D713C77E4BC34343B2E72D2F
- BFF8BC5CD3233F3FDF97EF4BC854BE0D009DB7FEB6EC77F7C69FABE19B92A2D1
- A8ECE9817B0232872F03804FFC6DD8D4287BF6E97C4DB76E0303FDF4DBA38765
- 4F8FF51B37D182E262D98374E6CB00D8B2B59972727264CF1E3EC6EEEFEB933D
- 6FDAAFF904A571F974DB76D98374E6CB00D039ED77AB87F7FE0A5FA1989EE65B
- C7F5C1614066F05D00844A4B69CDDA06D9B36FFF3EEF5DFE8B3532324C478F1C
- 923D3D56AE5E43955555B207E9CA7701B04DE3B4DFFCD0CDC50BC93F229B4A7B
- 5F74E09E00BC4330EDF92E009A354E6E910E7B7FA5B5653F4D4D4DC99E1E0880
- F4E7AB00A85AB888EA57AE943DFB5AF77BFFF85FE1DB940F76B4C99E1ED54B6A
- A876799DEC413AF25500F0EBAE74E1876DF810209DEC7BE945B9A6CF0E8C02D2
- 9AAF0240E790D54B8FFEC6ABBDAD85229171D9D383DFA5805789A72FDF0440CD
- D2A5B4A466A9ECD977208D8EFF95C8F83875B4B5CA9E1E3C99CABA86F5B207E9
- C63701505A562ED7ECEB7AB593CE9C3E257BE9E5F9679F916BFAD4D42E936BF3
- 1B1CE8976BF60D0C0CC835B0CB379382F23075EDBA06CA2F28905B9233333D43
- C78F1DA5B1B131B925FD2CAF5F4165657AA641E31B8C7892CE78A6425BBD761D
- 15D99C7F81FFFD4F9C3846A3619E1BD327302B30808F6156600070020200C0C7
+ 0000000000004066E5C965AE48FC7E72EDFB03774CCBA592D8CF5AD95E20EAF3
+ 5BBF0F5E9F6D3B40BA54C1F3D25AFCD6ED59291B0B24B1B87999D8F24563AAAF
+ 58D701E69258E4AA3F259AEA5B1B4B5C66856C2A086B317381AB3EAFCFD5ACBF
+ 472D0192612D686E5CFC7335EBD730D5F7BC6C280A55C4AAA9E22EB8A615D734
+ 5169F5160A56AEA160F90A2AAA68A0E9E27A2A1A0B138542E26B0092148B513C
+ 384879D1F3141F3A4B63C3C7696CE00845FA0E50F4CA19F10593B3B4C440F07C
+ 10783900662B7A6E81DFB5A2A2322A6D7A059537DC49A50B6EA1824083D80EE0
+ ACC989B314B9F02C0D9FFD3945CE3C41F1F888D83A61692A0812C3C073BC1800
+ B3153EEFE155E11752B8F126AA5CF6160AD6BC9A42C5A5621B803B62D1088D5D
+ F9090D9CFC060DF63C27B68C8BA68260AE518167782D00120B7FA6E8898AA866
+ E5EBA97AF53B2854BE5EF401BC25367C90FA8E7E9EAE1CFBA1E8C545B3864162
+ 10788257024015BE2A7EB5C70F1AAD7AF95D54B3EE5E0A95AD107D006F8B8D1C
+ A72B873E417D277E2A7A63B25947049E190D782100ACC5AF0A9FF7F8410A55AD
+ A4853B1FA2D2EADB441F20BB44FA9EA673CFDF47B1FE63A2C721A046041C049E
+ 08012E3837A9C257C37D2E7C3E5B5F42F35AFE9A166DFD12052B968B3E40F609
+ 162FA19AC6B7881FEB38457ABBE456D7F7FA565C7C6EB1EEF5B999C7F985A5F5
+ B4F8659FA5E29ADB451F2037442E3D4D679E7D178D47CE8B9E3A3FA02E1FBA36
+ 12706B04602D7E75AC5F4C25755B68D9EDDFA160B845F4017247B074095535BD
+ 962257F6D2F8E865B1C55AF0AE8D0ADC0880D98BBFB2F94E5ABCEBEB945F542B
+ FA00B9273F584155CDAFA7B1C8518A0D9C165BAC7B7E5F8C00662BFE10859B5F
+ 43F3B67C990A0B8B451F2077E5E505A9A8EE6E9A8C1DA7F8C08B628BAB2190C9
+ 0098ABF8EF16C5FF050A85F81C0040EE0B040A4408DC2542E084DB2190A90050
+ C5AFCEF69BC3FE8AA6DB68F12D5FA64021F701FC834320DCF82A7128D0663C6B
+ E0D24D42990A002E7C0E80993D7FA8720D2D7EC537283F1FB7F2824FE505A8BC
+ F14E1AEE799C2662FD62830A0015028E870117A6D31287FE45140CD650D36D5F
+ A68282B0E803F817D700D702D704D78659235C2BAA6E1CE5F408C05AFCE6757E
+ BEC9A7E9964F5169DDAD621D0002A2F88B2AEA69E0D4E3A297D15B859D0E001E
+ 615C7DDC5FB3FCB554BBF67D621D0094A2F05A9A8C1EA768DF49D1B33E38C41C
+ 0B02270F01D4DE7F26000A4BE6D182968F8A750048C4B551585A27D67867C935
+ C3B5A3EAC81199088099E1FFFC4DBB29BF1837FA00CC866B63FEC67BC41A1F2A
+ 73CD387E2EC0A900501F7A66EF5F5ABD9A2A9ADF22D601602E5C235C2B191A05
+ 381D00337BFFBA4DEF153DA7CF39006437AE11AE950C8D029C0800F56167F6FE
+ 2522D1CAEBEF12EB0070235C2B5C331918053819009C5C6600D4AEFD0BB90D00
+ 6E2C4FD68C0A00C74601BA03407D40FE73CDE17F614915952DBADBD80A00C9E1
+ 9AE1DA99390C50B5AA35049C1A01F09F6BEEFDC34B5E47057978CA0F20155C33
+ 5C3BD71E0668A53B0054F1AB0028A48AA6578B2500A4CAAC1D1E01A800D01E02
+ 3A03407D305E9AC7FF81F279545AD66A6C0580D470ED700D9901A0CE03306D21
+ A03300187FB09900082FD84514D2FD7700F884A81DA386AE0A006DC5CF9C0800
+ FE33CD002899BF933702409ACC1A5201C0B5E5D90050E934130065759BC51200
+ D265D6506200680B019D01C06602A0B0A48202254B8CAD00901EAE21AE258F8F
+ 00542AA900C8375ECFADF9C302F8509EA8257E398E595757D79A6DBA02405101
+ 5040A12AECFD01740855732D65D539807C0A04EA792300D814285828FE6BD6D5
+ 4C9D69A13300D84C0804C33CC71900D865D692F6E267BA02407D30D5F2293FC0
+ 272E00C02EB396AC01A09A6DBA47004C7EB8FC12B30B00F618CFD2682B7A2B27
+ 02C0946F5CBB0400BBF2F3F879004738380200008DB2620480C2077096D61A73
+ EE1000003C0F0100E0630800001F430000F8180200C0C71000003E860000F031
+ 0400808F2100007C0C0100E0630800001F430000F898AE070B384878CE327EA7
+ 79A968616A7EF9A354B6F076B1EE7BD535359497E74CD6C6A2518A4446640F72
+ D2C8B9A7A8FBC9BF126B83A245448B8B3629DA9468B620001CB6EBF657D05BFF
+ F4CF654FBFA9A929FAE4473F44A75EEA965B20E738180038047058B8B252AE39
+ 233F3F9F76DE7CABEC01A40601E0302E50A76DDBB133237F0FE41EFCD438ACB4
+ AC4CAE39A7A2224C6BD66D903D80E421001C160E57C93567EDB8E966B906903C
+ 0480C36AEBEAE49AB3366DD94AC1209F8305481E02C04181C2429ABF20332F48
+ 2A2A0AD1A6CD5B640F2039080007AD15C7E58522043265C74DB7C83580E42000
+ 1CB4B575BB5CCB8C35EB375079395EC804C9430038A4A0A0805A366E96BDCCE0
+ BF33D3A103D90D01E09075EB5BA8A4946F8ACC2C1C06402A10000ED9BED39DCB
+ 724B97AFA0DABA79B207707D080007F0E5B896CD991DFE5BB9153E907D10000E
+ D8B8798B7159CE2D380C806421001CD0BAE326B9E68E05F5F5B468F112D90398
+ 1B0240333EF1B76E438BECB907A30048060240B32D5B5B291008C85EEA3A3BDA
+ 68626242F6D2D78A27042109F809D1AC75A7BDE1FFE1835D74E2D86F652F7DE1
+ CA2A5ABD66ADEC01CC0E01A0114FFEB172D51AD94B4FF7C913D4D5D9217BF6B4
+ E26A00DC000240A36DAD3B6C0DBBE3F1389D397D8A8E1CEC945BECD92C0E4782
+ C1A0EC015C0B01A051EB0E7B7B5C1EFA4F4E4ED2D9B33DD4DFD727B7A6AFB8B8
+ 985A36B9773F82977150F3A3DA2B56AE321EA5E669D5F8FE89A2907B976FDD80
+ 494135A99B379F3EF6F023B2979EEF7FF7DBF4BF3FFE91B1FE277FF69774CB2E
+ FBFF7C1D6D07E8F39FFD67D9734FFDC2065B2747C7C7C6E8C285F3B2973A2E78
+ 2EF6F52D9B68B958362D5A448585D78E8E1EFFD94FE9BFBEF598EC79046605F6
+ BEBB5EF35A7AFD1FBC49F6D2F3F18FDCFFBBD97DB76EDB4E6FFFDB771BEB76F0
+ 1585F7BFE79DAE4E1DBEA47929DDFBC083B297BE5F3FF314FDC7D7BE227BC9A9
+ AEAEA15D2F7F25DDFCB25D140EDF7882D6E79EFD15FDDB571E953D8FC0ACC0DE
+ 67F7F6DB9191613A7DEA25D9233A72F89031E5B75DBCD775FB09C1582C26D7EC
+ B9558C881A1A9B64EFFAF8842C4FC7CEA3320EE7648ADF8F10001AF00FE5C286
+ 46D94BCFA1AE4E9A9E9E963DA2D1D1089D3C715CF6ECD9EEF24D417D572ECB35
+ FBB66EDF21D766C7B330BDFAEED7D1C73EF988F14E86021B871D7E8000D040C7
+ C337073BDAE5DA8C839DD76E4B071FFBD6D4D6CA5EE68D89E3F7B8A651C08A15
+ ABE4DAB59A972EA3FB3FF2717ADD1BDE48C1223E1A851B4100D894979747DBB6
+ EF94BDF44C4E4E5057D7B5D7FE3BDBDBE49A7D6E3F9F3038C887AFF635CDF28C
+ 03FF3FE061FEFBEFFB90F11C04240F016013EF75ECCEFC7BF4C8618A8E8ECADE
+ 8C73677BE8D2C55ED9B3C7ED670346359D84E44B9B9555D5B247C665BB77BCEB
+ BDC60958DCFA9C3AFC8BD9B45DC37CFCED07F6CBB56BF1653C1DF81C4563D322
+ D9CB3C5D27025975B519003CFFE13D7B3E683C7E0DE94100D8C07B9CADDBAE7F
+ 522A199DD729F2B603FBE49A7D6E8E02740600BF6DA9221CA6DD7BEEC363CF36
+ 21006C58B57AADF18368C74BDD2FD2C040BFEC5DEBE4F163E2F87940F6ECE107
+ 95F878D90D3A2E692AB5B575F49E7BF6183717813D08001BEC3EF9C73ADAE61E
+ FE33BE34A8EB30A04A1C3BAF5CB55AF6322B1ED7370278C39BDE9CF4FD00707D
+ 088034F1F5E62DDBECDF6073A30060EDFBF51D06B87D4F800E78C0491F04409A
+ D66F6831CE48DB71F9D2253ADBD3237B733B7AE41045A351D9B3876F31E6F0CA
+ 349D8700A00F02204D3AAEAB27B3F767FC8460D72C370AA5A3B8A48436B46C92
+ BDCC89C5F40418E8850048035F7BD671E929D900601D6D1A0F03349CBB48D9CC
+ 5DCEE0210880346CDABC75D6474953111919A1E3294CFD75B0B343CB5C81AC65
+ D31663249049D1E8B5373A81FB100069D8AE61F8CF937FA6725CCCD7D18F1E3E
+ 247BF6184F086A388109D90F0190A2D2D232E32DBC76B5A771834FDBFEBD72CD
+ 3E1D7730A682A73B03EF4100A4881F47E5B7F0DAC14FC7F1ECBFA9E25183F591
+ 613B78F252EB3DF54EE31399D9607040CF4D57D9023302A568F79E0FDABE9986
+ F7FE5FF8DC67642F357BEEFF30352F5D2E7BF67CEF3BDFA49FFFF4C7B2E7AC57
+ DEF97BF4A637FFB1EC65D6F8F89831D9CAE9975EA2DE0BE7E9F2E54B343C3464
+ CCB93039691E86E5E7E5197307F0AFEB0A596D30239037F01E939FADB78B27FF
+ 4857479BBE47847764F8302093CEF69CA19FFCE807F48F1F7F90DEF3376FA74F
+ 3DF4207DEBB1AFD393BFFC857149956FC1BED8DB4B57441870BB74E9225D387F
+ CE7BC5EF3004400AF86D3B3AEEA53F682300D239773097C6A6C5B66732F29291
+ E1616344F3E1FB3E400FDE7F2FFDF0BFBF4B278E1FD376F52417210052A0E3E6
+ 1F7EC6DFCE1459E7CF9D3586A9BAE4C23B04FBFAAED0635FFF1AEDD9FD6EE3B0
+ 86FF8D2039088024CD5F504F8B9734CB5EFABA3AEC0FE1AF377F40AA38D4DC7A
+ 42D0AE919111FAE67FFE3BDDFF81DDF4CC93BF14C7FAE3F25720590880246D13
+ C37F1D744CF3B57FEF6FE49A7D3C57E0B2E52B652F7BF013921FBAF71E7A4A1C
+ D363889F3E044092B6DB7CEB0F1B1A1AD432D32F9FD1E633D9BAECB839BB0E03
+ 7A4E9FA22F7CEED3C60800EC4100248127A2D431D924EFB5749C65E63F63FF0B
+ FA4601FC4E43BBF73664D2E8E8A8EFCED63B050190041DB7FEB2368DCFF5EB3C
+ 0C28292DA5F52D1B650FFC040170037C824CC7F1FF682442470F1F943DFBF815
+ 627CFD5A171DEF3680EC8300B881E52B561AEF97B38B27F7D47D3BACCE0943F9
+ F166BB139C40F64100DC80AE176AECFBCD73724D9FEBCD269C2A7EBC79F3D656
+ D903BFC0B300D7C127C61EFEF4E78CF9E7EDE0EBD35FFDD2E7B54F8B959F5F40
+ 6F7BC73BB5BD10E3C8A12EFACC3F3D2C7B7AE97C16E0D8D123F4C8C30FC99E0F
+ E0F5E0EE58B76123BDFBEFDF277BB98F038AEFA673E2893804800D7818C81DAE
+ 4C9DE5221E49B46EF7D7F7EC77088039F0D4D31B376F953DFFC8F44421E02E04
+ C01CD6B76CF2E559717EDE6141FD42D9835C87009883DF86FF56B827C03F1000
+ B3E019737904E0577C1890AD4F08426A1000B330A7FDCEFCDB73BCA2AE6E9EB6
+ 69C7C0DB1000B3D0F1D2CF6C879381FE800048505E51416BD6AE973DFFDAA661
+ F663F03E044082ADAD3BB4DD5997CDF8EEC7B5EBECBFFF00BC0D3FE90974DDFB
+ 9F0B7261BE40B83E048045754DADF1F41F98F809417E112AE42E0480859FAFFD
+ CF265854645C1181DC8500B0E079FFE16A380CC86D0800896F7FE51765C0D5D6
+ AC5B6F5C1981DC84009072F9355976184F08E2C468CE420048F8219F9B8E29D1
+ C19B302188B0A47929DDFBC083B2674F57677BC6DEB83B171ECDDCBAEBE5B2A7
+ C7FD7B761B2FD34C172604B101330239EB8D7FF456BAE35577C99E3D8FFEEBBF
+ D0817D7B65CF1D0D8D4DF4C0473F217B7AFCE807DFA3FFF9E1F7652F7508001B
+ 30239073F8A9375D67FFF93DF4765EFDAD0BBF1A5BF70B3271352037F93E0056
+ AE5E43E1CA2AD9B3E7606707C5E31CCEEEDBAB7916E279F31718874A905B7C1F
+ 00ADDBF55DFBD7F9D65EBBF6697C7598822704738FAF03809F76E3877F74989C
+ 9CA08E767DF3F4DBD57BE1BCF112519D78C2503C28955B7CFD7F73DDFA16E3BD
+ 783A1C3D7298A2A3A3B2E70DBA470115E1301E95CE31BE0E009D73DF1DD8FB82
+ 5CF30EDDE701180E03728B6F0320182CA296CD9B65CF1E7EA1869786FF4ADF95
+ CBD47DF2A4ECE9B169CB3663CA74C80DBE0D00E351D7223D8FBA9E38F65B1A1E
+ 1A923D6F79E1F967E59A1EA150C897EF4BC855BE0D009DB7FEB6ED77F7C69FEB
+ E19B92A6A7A7654F0FDC13903B7C19007CE26FDD8616D9B34FE76BBA751B18E8
+ A7DF1E3D2C7B7AAC5DBF81CACACB650FB2992F0360CBD6560A0402B2670F1F63
+ F7F7F5C99E37EDD77C82D2B87CBA6DBBEC4136F36500E89CF6BBDDC37B7F85AF
+ 504C4EF2ADE3FAE0302037F82E00C29595B472D51AD9B36FFF3EEF5DFE4B3432
+ 324C478F1C923D3D96AD5849B57575B207D9CA7701B04DE3B4DFFCD0CDA58BE9
+ 3F229B497B9F77E09E00BC4330EBF92E005A354E6E910D7B7FA5BD6D3F4D4C4C
+ C89E1E0880ECE7AB00A89B379F9A972D933DFBDAF77BFFF85FE1DB940F7675C8
+ 9E1EF50B1BA869F112D9836CE4AB00E0D75DE9C20FDBF0214036D9F79BE7E59A
+ 3E3B300AC86ABE0A009D43562F3DFA9BACCE8E368AC763B2A707BF4B01AF12CF
+ 5EBE098086C6465AD8D0287BF61DC8A2E37F251E8B515747BBECE9C193A9AC5E
+ B356F620DBF826002AABAAE59A7D3D674ED3A997BA652FBB3CFBAB67E49A3E0D
+ 4D8BE4DADC0607FAE59A7D030303720DECF2CDA4A03C4C5DB57A0D858A8BE596
+ F44C4D4ED1F16347291A8DCA2DD96771F352AAAAD2330D1ADF60C49374263315
+ DA8A55ABA9D4E6FC0BFCEF7FE2C4311A8DF0DC983E815981017C0CB302038013
1000003E860000F0310400808F2100007C0C0100E0630800001F430000F81802
00C0C71000003E860000F0310400808F2100007C0C0100E0630800001F430000
- F8180200C0C71000003E860000F0310400808F2100007C4C770044E552AC45F5
- BE8A16C0AF2EAFA5D91AD3C0B91140349ABE6FCE00F012076BC98900E0848AD2
- CCE490D905005BCC5A32EB4A33A74600518A0CE97B191C809F4586FAC47FB517
- 3FD315002A9D66DBCCC479B10400BBCC5ABAB2C63470E22420B7191AEB3F636C
- 01007BCC5AE2F7006A2B7CC5894300FEA03362D872522CB57E58001FE2C3E957
- C4D2AC2BCD740680B9E7576D6A7C84A6C6300A00B0836B886BC95A5B1A77ACBA
- 0380F107E457174F53F8429BB105009263D690594F666D31CF0580B5F855004C
- D148CF3EDE080049326B886F045201A035049C3A07600640F8ECFF89CFA93E30
- 002444D48E514397058056BA0F01B8CD064024DC4B637D07C43A00248A6B876B
- E8F2005075A685EE1180FA706600104DD2C0995F8B250024CAAC9D49D1540068
- 2D7EE6EC08C0088053BF149BC6C53A00C44DD48C513B970540DA8C00F883F287
- 9EA0A9F17E1AECE46F0400E2C535C3B5C33564D692F6E2674E9C04B40600A757
- 842E1E794C6E07806B8BCA9A8988A646002A00B4727A04C01F7E82C6FA8ED3F0
- D927C43A005C0BD70AD78CB9F78F0D00AD21E0E408808F59CC00E024EB697B54
- FC0A6F0380F9708D70AD987B7F1500D6E37FAD9C0800661D05F037316E24DAC0
- A91F897500980FD788B9F7E713E7B1C7FFDA393502B08E02CC11007F43E7F67F
- 85A626F9D9660088C5B5C1356216BF1A013872F65FC9964BDD0272C9789D8326
- 8BA2D333343D76814A6A6F337E0500669D7DF9211AED6D176B61D1781A30EB08
- C0114E05402C0E013308C6FBCF527EE952CA0FAD367E0500F8B2DFCFC5B1FF37
- C41A3FF9372A1A8F02D4F1BF237B7FE66400A851802A7E3300B88DF4B453E9F2
- 5D941D2C137D007F9B0C9FA2D34FEF1123E401D153C56F1DFE3B26552300C50C
- 023E1418E969A3B2FAD753202BCFFC25001F9A991AA6534FFC1D4D8E748A1EEF
- FD79E8AFAEFF3B76ECAFA42200D448403143802739880C1E172381DB4437D541
- 04E001D109EA7CE65E0A5F6C151D3EEE4FD9D05F71B3F0021419BA4093439D54
- 5C7B0B05024E5D9204F01E7ED947F7F30FD260D733A2C77B7EEB893FEB997F47
- B911002AD5CC91C1F860374D881028A9BD192100BEC0C5DF258A7FE0CCE3A2A7
- 4EFA7173FCB25F2C374700B3DFDCF86097180D9CA0E29A9B2890952BB702649E
- 99E951EA7AEE1F68B0F349D1537B7E55FC7CC92F657B7F96EA00E0BDBEF51B9B
- FD462383E728DCB35F84C04ECACE59606C03C82493E33D74E6A9DD34726EAFE8
- 71F1ABBDBFB5F8B91E5252FCCCAD11C05C2110A5C9D13EEA3FF3041556ACA260
- 518DF1AB0099207CE1657AE589DD34317842F462F7FC7CD28F0320A5C5CFBC70
- 08A0BE69B34527C7A9FF151E1E8D52D1C2EB2810C811EB00E9291A8DD0858EAF
- 50D70B8F889FED4B628B2A7E75B98F0BDF5AFCDC52C6CD0060EA9BE5258F0454
- 8B8AC43C4243AF3E4B0565CB2817A3014843A317F78A21FF7DE278FF69D1B30E
- F9ADB7F9BA56FC2CF61A7D2A99F703988D8388F7F47C02305FB642D10A8C565A
- 7F0B2D6A7C3705172C177D006F9B1839433DED5FA581535CF85CECDCB8F0F91A
- BFBACECF856F3DE64F79F133370340E1CF60DE226C860037BE3B901B07811902
- 1C08652B6FA3CA0D7F48F9C5788E00BC677CF838F51EFA1EF59FE4CB7B6A4FCF
- 8D8B9E87FBD621FFEC68D7455E0800A646021C02D6D180350854CBA3E29A262A
- ABFF7D2AAE7D0D6565713800B86366668C86C5A16AFFA99FD170778BD8A28A5D
- EDED55E15BF7FAAAF05D2D7EE69500602A04B87108C40641502E550B52765EB1
- 71D9B064C9F554B47833E5E42D12DB019C3515E9A1F0F9561A3AFB8228FA1769
- 3A322CB6F231BD2A76D5AC67F8B9F05D1FF2C7F2520030F57978A94603D620E0
- C641606D6A7B2EE597555341F97ACA2B594179A165145CB09082459594955D2C
- FE48FE5A8038452334333D4213E15E714C7F8122839DC65B7AC7FA0ED378FF39
- F1055CD8AA71A15B9BDA3EDF70DF13C5CFBC16000A7F2ED5D4F9011506AAE0AD
- A1A0FADCD4D771E3DF67FDB300E265DD5373F1AA3D383755D8D6105005CF4BF5
- 75D6C257CD53BC5E14D6E255C56C2D706BD1C7163F376B0030B504B81A55A8AA
- 686303801B17BB5AAA75D5D4EF51BF9F9B27A54B41A822564D15B61A19A8A55A
- B736A67E1F40BCAC85ABF6E4AAA94257EBBCE4AF554B6BF3B4742B0A6B21AB75
- 6E5CE8732D55636A09100F55BCD6628E2DF4D88267D675CF4BE7A298ABB8D5B6
- D8EDCCBA0E702DD6228E2D6E6B5F2DD57A5AC994A298AFD051F4A083B5B8E75B
- 4F4B995A20287C7042DA173C0000000000000000000000000000000000000000
- 000000000000000000000000000000780FD1FF0383AC3BC58CEEDD9200000000
- 49454E44AE426082}
+ F8180200C0C71000003E860000F0310400808F2100007C0C0100E063BA03605A
+ 2E79C262BDAFA205F0ABAB6B69A6C634707004309DBD6FCE00F014E76AC98900
+ E0849AA6A9F121B30B00B698B564D695664E8D00A6293EA4EF6570007E161FEA
+ 13FFD55EFC4C5700A8749A69536317C41200EC326BE9DA1AD3C0899380DCA628
+ DA7FCAD80200F698B5C4EF01D456F88A138700FC41A7C4B0E5A4586AFDB0003E
+ C487D32F8AA559579AE90C0073CFAFDA446C8426A2180500D8C135C4B564AD2D
+ 8D3B56DD01C0F803F2AB8B2729D2DB616C0180F4983564D693595BCC7301602D
+ 7E1500133472711F6F0480349935C43702A900D01A024E9D0330032072EEFF88
+ 62EA0303404A44ED183574550068A5FB1080DB4C00C42397293A7240AC0340AA
+ B876B886AE0E0055675AE81E01A80F670600D1380D9CFE85580240AACCDA1917
+ 4D0580D6E267CE8E008C00E8FE9988B298580780A4899A316AE7AA00C89A1100
+ 7F50FED0633411EBA7C15EFE460020595C335C3B5C43662D692F7EE6C449406B
+ 00707AC5E9D291C7E47600B8B169593371D1D408400580564E8F00F8C38F51B4
+ EF380D9F7B42AC03C08D70AD70CD987BFFC400D01A024E8E00F898C50C004EB2
+ DE8E47C516DE060073E11AE15A31F7FE2A00ACC7FF5A391100CC3A0AE06F2266
+ 24DA50F7F7C53A00CC856BC4DCFBF389F3C4E37FED9C1A01584701E60880BFA1
+ F3FBBF48A3E3FC6C330024E2DAE01A318B5F8D001C39FBAF14C8A56E7972C978
+ 9D83269FA627C53712BD48154D7718BF0200337A5F7890462F778AB588683C0D
+ 987504E008A702201187801904B1FE7354146EA450E50AE357008068E0D44FC4
+ B1FF57C51A3FF9372A1A8F02D4F1BF237B7FE66400A851802A7E3300B8457A3B
+ A972F12E2A0856893E80BF8D47BAE9D4D37BC4087940F454F15B87FF8EC9D408
+ 403183800F05467A3BA8AAF95594975F64FE12800F4D4D0C53F7137F47E323A7
+ 458FF7FE3CF457D7FF1D3BF6573211006A24A09821C0931CC4078F8B91C01DA2
+ 9BE92002F080E9313AFDCCFB2972A95D74F8B83F63437FC5CDC2CBA3F8D0451A
+ 1F3A4DC1A6DB2990E7D4254900EF894D4FD085671FA0C19E67448FF7FCD6137F
+ D633FF8E72230054AA992383D8E0599A122150D4741B42007C818BFF9228FE81
+ 538F8B9E3AE9C7CDF1CB7E89DC1C01CC7C73B1C11E9A1C3A41A1865B29905F28
+ B702E49EF8E4285DFCF53FD0E0E927454FEDF955F1F325BF8CEDFD59A60380F7
+ FAD66F6CE61B8D0F9EA768EF7E2A6DD849814099B10D2097C463BDD4F3D46E1A
+ 39BF57F4B8F8D5DEDF5AFC5C0F19297EE6D60860B61098A6F1D13E312C7A824A
+ AA9753B0ACC1F855805C10E97D81BA9FDC4D638327442F71CFCF27FD3800325A
+ FCCC0B8700EA9B36DBF4788CFA5FE4E1D12895CEDB48797901B10E909DA6A7E3
+ 74B1EB8BD4F3FC23E267FB8AD8A28A5F5DEEE3C2B7163FB78C71330098FA6679
+ C92301D5A62972F1080D9DF91515572EA2C2528C0620FB8C5EDC4BA79EBE571C
+ EF3F2D7AD621BFF5365FD78A9F255EA3CF24F37E00B37110F19E9E4F0086642B
+ 11ADD86895CDB753DD86B751A87CB1E803785B6CF8145DEAFA120D7473E173B1
+ 73E3C2E76BFCEA3A3F17BEF5983FE3C5CFDC0C00853F83798BB01902DCF8EE40
+ 6E1C0466087020542DBB836AD7FDA108023C4700DE131B3E4E970F7D9BFA4FF2
+ E53DB5A7E7C645CFC37DEB907F66B4EB222F04005323010E01EB68C01A04AA15
+ 5179C366AA6AFE7D2A6B7A1915E4733800B863722A4A23E250B5BFFBC7347CB6
+ 4D6C51C5AEF6F6AAF0AD7B7D55F8AE163FF34A00301502DC38041283202897AA
+ 05A9A0A85C84C14EAAA8BF89420B36515168BED80EE02CBE9C17BBD04E43E79F
+ 1345FF3C4DC687C5563EA657C5AE9AF50C3F17BEEB43FE445E0A00A63E0F2FD5
+ 68C01A04DC3808AC4D6D2FA450553D1557AFA560C5520A851751A0741E85CA6A
+ 29BFA05CFC91FCB500499A8ED3D4E408C5462ED344E422C5064FD3D8D08B14ED
+ 3B4CB1FEF3E20BB8B055E342B736B57DAEE1BE278A9F792D0014FE5CAAA9F303
+ 2A0C54C15B4341F5B9A9AFE3C6BFCFFA670124CBBAA7E6E2557B706EAAB0AD21
+ A00A9E97EAEBAC85AF9AA778BD28ACC5AB8AD95AE0D6A24F2C7E6ED600606A09
+ 703DAA5055D1260600372E76B554EBAAA9DFA37E3F374FCA96825045AC9A2A6C
+ 3532504BB56E6D4CFD3E8064590B57EDC9555385AED679C95FAB96D6E669D956
+ 14D64256EBDCB8D0675BAAC6D4122019AA78ADC59C58E88905CFACEB9E97CD45
+ 315B71AB6D89DB99751DE046AC459C58DCD6BE5AAAF5AC922B453157A1A3E841
+ 076B71CFB59E9572B54050F8E084AC2F78000000000000000000000000000000
+ 0000000000000000000000000000000000000000F01EA2FF072EBB36B6686FC3
+ 4A0000000049454E44AE426082}
FileName =
'C:\YandexDisk\Development\Delphi\AErender Launcher\icons\png\ps\' +
'icon_256.png'
@@ -385,462 +385,463 @@ object AboutForm: TAboutForm
PNG = {
89504E470D0A1A0A0000000D4948445200000200000002000806000000F478D4
FA000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 38EA49444154785EEDDD09745D577DEFF1BFAE46CB8306CB63EC7876E278942D
- D991ED8404021DD65BEDEB6BF35A4A0BB4A5B4D042A1616A6820CCA581426115
- FABABA586D7985D2BCA604286D19D2308490D8F1183B89E3788E675B1E65C91A
- FCCEFFDEBDAB7D8FEFD560DD7BCF3EF77C3F6B6DEFBDCF55827224FCFB9F710B
+ 38EC49444154785EEDDD09745DD75DEFF1BF862BC9B23CC896C7789E12CF962D
+ 59F1903469DA32ACB7E0F1200F4AA12D500A2D505AD28940DB74A684D252162D
+ 8FC5EA02FA68297984A62D054A87A46D9AC18EC7D8491CC7F33CC9832CC9D6E0
+ 77FEF7EE8DF63DBE578375EF3DFBDCF3FD746DEFBD8F94443E52F5FB9F710B00
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000C03315A6
- 87FFF85901888B6BA687C70815FFE4FB99F0B3021017F90A000A038F102AD1CB
- F53318C9367E76007C110EF65C413FD26D281142241AC385B99D8FF4EB00202A
- C385BF9D8FF4EB50220448E9B8FB3A5F90877B35D26D0010855C013F926DEE67
- 2AD7D7A2880890E2CA15DA2A1CE06E1FFEBA5C9F857BE58E01A0987285B5DBE7
- 1AABF067B97A956F8C0222348A235F30EBD8CEED383C57EE67B99A0AF7CA1D03
- 4031E40A67B71FAAA95CE35C9FA97C631400815138F98258C7766EC7B9E6DA52
- 436C533A56F63315EE01A0D8DCC0B6BD1D0F985EE73AB69FD9966B9BCA37B7F2
- 8D7183088DB173F761AE50B6631BDE6E6F3FD77178EEF699D63067AA548FBB55
- 2AAAE64ADDA459327EEA54A9AC9E2552D51CFCFFA15E2A2A67045F55197C2D00
- 14DE35E9976BFDC782BF8EBA44FACE4A7FEF11B97CF2A4745F3822D7FA0E48EF
- 95E7E5FCC193E9AF1C6C36F0DDE0D77178AEC2BDFD5C857BE58E314A1A2CB831
- EEBEB3631BD6CA8EDD160E76ED6D73E715D234E766A91ABF5AC64D592D13A6AD
- 90CACAC5C1479382CF00C0630317A4BF7F8F5C3AB143AE9CDA227D97B748E7C1
- 43C1071AD66EF0DBB13B77FB7053E1B1E58E31421A3A183DBBDFDC3E3CD66683
- DD8EF3B78619D3A476F25DD230AF43EA266E0CFE91E9C176002803D78E4BF7C5
- 1FCBF9FD4F4ACF99C7E5FCB113C146B700C8D56CD8BB631BF4E1B1DB63843498
- 3072767FB9BD3BD630B7DBECD886BC9E9AB7E34C6B9C375F26CEF8059934EB55
- 92AA6E0DB60140F91BE8DD2A178E7C5F2E1EFB869CDBBF4FB7845ABF33D660B7
- BD3B56769B0AF718860D2F0CCDEE27777F69882B37ECEDD86D36F8337D7D638B
- 342CFA5FD234FF97A4B26A79B00D0092ABBF6FA774EEFB5739FFE223D275EE74
- B0C52D00DC42C0361BFA76AC746C51088C901B68C8CDEE23B7779B86BBED7387
- BEF62D4B36C8E4456F909A89AF0CE6B54103000CEA91AB171F93332FFEBD9C7E
- EE89601E2E02C2C5805B04B84D857BE4A0C185DCECBE71FB7073433F3BF0B5D5
- 4EAA97C90B7F519A16BF59527A131F00605803FD7BA473CFDFC8995D8F484F4F
- 4FB045C33F5F2190AB08B0C11FEEE1D010C3F5EC7E717B1BF8E17E30F0DDE06F
- B9EDF5D234FF2D5251D1126C03008CD6B56BA7A573DF17E5F4EE7F909E0B5DC1
- 165B08B805812D00C27D38FC6D0FC3061C32ECFE707BB7D9C0CF13FCB5B532A5
- F537A571FEDB087E0028102D04CEEDFBBC9CDAFAE5D019817021609B2D006C53
- E13EF16CD061705FB8BD0D7DDBBBC1AF7D951957C9F455FF435A6E7DAF5454CE
- 09E6008042BBD67F504E3FFF4939BEED5BC1AC2F681AFEDA6BE8870B010D7AB7
- 185014010E1B7649E786BEB2A11F0E7E6DF6885FC3BF4A1A6E5E2C33D77C58AA
- EA3704730040B1F5753D21479FF9809C3FB44767A60D773640C78A22C0A000C8
- 0E7FB7D9C0D7B10DFDC1F0AF99385E66ACFE239938EBF783AFD06D008052D1D7
- 125F3CF2D7726CCB5FCAD58B97832D6E11609B0D7EB710B04DD93E9134DC92CC
- 86BDB2631BFAE123FE4CF0A78FFAE7B7CBACF64F49AA6A7E3007004465A06F9F
- 1CD9F42E39BF6F53300B9F0DD0E616006E21A0DC71E224F5C8D586BD3665C7E1
- D0CF04BE4875BAD5D6D6C9EC8DEF91294BFF5C52A9C9C1360040942A524D3269
- F6AF487D739D5C39BE49FA35F3B3FE6E77FBB0E13E2F6B49FC8F0EFFC0ED11BF
- B67C47FDD5523765AECCBBF3F35255B72A9803007CD3DFB353F6FDE0ADD27DEA
- 4030EB0DDA506703B4E958B967041243032E49F2857F38F407835FA446A62DFD
- 19B9B9E3CB92AAE60E7F00F055AA6A9A4C9E77AF545CDB2B97D34540983DD8B3
- 74ACA16FB7B99F95BD241500E11FB01BFEB66507BFB639AFB84F9A177F2CF852
- 5EDF0B00DE0BFEAE1E3FFD17645C73A59C3FA8F7050C17EAFA79228B80A41400
- E11FECF0E15F33A15116DCF345193FEDB5C11C001027B593D649E3EC6572F1D8
- E3D27F552F050C45F320714540120A80F00F341CFEBA0F6CF86BAB91719367CA
- BC57FD9DD44C5C1FCC01007154356EBE34CCD920974F3E2E7D57AE045BDC6BFC
- E190D779A28A80722F00C23FC8A1C23F73E43F7EEA2D32F7957F2F55B54B8239
- 0020CE2AABA70745C0ABA4EBD493D27BF99CD99A8FE643628A80241400F60798
- 2FFCB5651EF31B3FF5569977CF3F49AAF2A6600E002807A9CA26699CFFF372F9
- C40F8222A0D36C75CF06B83427DC22A06C957301309AF0D7237F0DFFAFB2880F
- 0094A18A8A7AA708B06702125D04946B0140F80300B2651701893F13508E0580
- FD6169EF06BF5B00B8D7FC35FCBF42F8034002648A809FCB5104E42B04ACB22B
- 04CAAD000887BF5B00D8A37E1BFED532AE79A6CC7BF55725959A1ECC010049A0
- 4540C3BC57CAA5A3DF96BE2B5D66AB6BA8B30265A39C0A8091867FE651BFEAF1
- 8DB2F067BF26A9AAB9C11C009024151593A471EE5D72EEC0A332D0ABAF0D1EEE
- 0C8055364540B91500F6076383DF2D00068FFC6B6AEA65FE6BFE46AAC6B50673
- 00401255544E9649372D978BFBBF2DFDFDEEBA00B98A01DD5636E1AFCAA500B0
- 3F14ED35F06D6F8FFCB565C25F8FFE676FBC5FEAA7FCCF600C0048B2CADA3952
- DB502FE70E3E11CC6CF0BB05801D6BAEB8E3D82B8702C00D7F1BFCE123FFCC69
- 7F2D0066B6FF8A34CE7B5F300600405F1BBC5AAAEA8EC8C5A32F982DB90A81B0
- D81701E55200B82D57F8678EFE27DEB44C66ACFEA25454E81C00808C71CD1BE5
- CAD9C7E5EAC5D3C14C83DF2D02862A04622BEE05800D7DA5A1AF63FD6FD2B11B
- FE3552DDD824F3EFFE92A42AB9E31F00904D0F0C27DDB456CEBDFC0D19E8BE1A
- 6C091701E1DE664F6CC5B900B03BDF1601F6C83F1CFE9902604EC707A5B6F115
- C1180080EBE94D8175139AE4DC81C78359BEF00F8B6D2110F702C06D1AFCFADF
- 63DBE0D1FFD4E5AF96E6857F128C0100C8AF66E2B2E0CFDD72F9E481A0D7D0B7
- CDCA5708C44E5C0B005B71D9E0D75EFF5B6C113078F45FDF30596EDAF0B75251
- 312198030030B4FA296BE5F2E147A4B7A73B98B945800DFF706F332956E25C00
- D8664FFB5F1FFEDAE6BCF2A35253DF168C0100189E1E308E6B992A67F77E2F98
- B9E16F5B59D0D08C1B1BFC2A5C086801608B802A99BC60838C6BFEA5600C00C0
- C86976342D5A178C327932982F9A356EF628771C1B712C002CF707A0FF1D6E01
- 502935357532ADFD43C1180080D19BB1E663E92C71B365306FDC0C8AA5B81500
- EECEB6E370F867AAB529AB7E5D2A2BE705630000464F3344B324F75900B70850
- EE3816E25600587647DB965D00D437344BF38277046300006E9C668966CAF505
- 40388762274E0580BB93ED58BF7FDB32E1AF7DCBCA3F08364D0CC600008C4190
- 25E94C7132263B7B7265532CE8371F377607DB66C33FD3EA9AA64BC3ECD70563
- 0000C64E3345B3C5CD9AECF0B72D56E25200B83BD78EF57BCF0E7FADCEA6ADF8
- BDA0D7857F000028841A932DEE65006D3687726594F7E252005876C7DA965D04
- 68853669D6AF056300000A47B325FB2C4038FC6D8B8D381400EE0EB53B383BF8
- 33AD4AA62C7D63D073F40F0028B41A933123390BA0DCB197E2500028BB63DD96
- 5D0454374C92C6D9BF1A8C0100283CCD18CD9AFCE1EF36EFF95E00B83BD1DDB1
- D9E1AF1559CB825F0E3671E73F00A048F48900CD9AACB300B98A00CB1D7BC7F7
- 0240B93BD48E6DF80F1601CD8B38FA07001457266BDCF0B77DAEACF25A1C0A00
- CBEE50BBA307C3BF69FE6A49552D0CC60000148F668D664E7611E06693B658F0
- B9007077A2DDA9DA6CF00F1600CD0B7E25E8010028BE4CE6B805805B08D866B9
- 63AFF85C00287767DAA6DFF360F857D7D7CBB8293F1F8C0100283ECD1CCD9EEC
- 22205C00D8E62DDF0B006577A0BB43EDCE4E49E3DC3BA5A2625C300600A0F834
- 73347BDC2CCACE28657B6FE937EDA3F08EB33BD5DDD999CAAB61DECF043D0000
- A593C99EF019006D36AF5CE1B917F49BF595DD896E7377722A7D0AA6AEE195C1
- 180080D2D1ECC95C06C8CEA5DCD9E525FD66E3C0DD91FA3D67AAAE49B3D771FA
- 1F0050729A3D9A41D96701DCACF29EEF0580BB33F57BCD6EE3A7BD22E8010028
- BD4C065D9F4DD9D9E52DFD467D13DE71EEDCDDC19532716647D00300507A990C
- CA770F8036159E7B43BF599FE5DA81999D3C61FA544955CE0DC60000949E6690
- 6691CDA5ECAC52B6F792CF0580BB03B5D91D9C69E39AD6063D0000D1C9645176
- 3E0DE696B2BD77F41BF599DD89E19692BAC92B831E0080E864B2C80DFD70F396
- 6F05407867D9B9F6B6B2CAB449335B831E0080E864B2283B9FB2B3CB159E474A
- BF51DFE80EB24DB9F3CCCEADAEAE9654358BFF0000A2A559A49964F3293BB354
- 78EE0D1F0B0097DD69EE4E4D49FDEC05415F13340000A2546332293BA706C7DE
- F2B50070779A1D0FEED09ADA45E92D000044ADAA6E7EF0A70D7C9BABB972CC2B
- BE1600CAEE4CBB436D9F92AAF1F3821E0080E8D5D4EB25E94C3E6567966D5ED2
- 6FD277EE4ED4969289336E0E7A0000A297C9A470E86BF39A4F054078A7E59F57
- D751000000FC50593B33F8337F666584E791F3F50C80BBC36CAFCD545895FAE6
- 250000A25759392DF8D3C9A87453E1DE2BBE16002EBB33075B8A020000E0898A
- AA19FA678EE6359F0B805C3BB342C64F9B12F40000F823934DB973CB53713803
- A0EC0EAC90EADA7A330600C00F996C1ACCAA18F0B100702BA6EBC71575D33353
- 00003C91C9A6A1F3CB33BE5F02B0BCDC7900008484F3CADBEC8ACB4D80568554
- 5670090000E09754AA36F83316C16FC5E91E00B3332B1B333D00009EA8484DB6
- 23D3BCE77B0110DE89B1D8A90080448A5566C5ED1200000071E07D76C5E51280
- B23B93820000E09BD865549C0A00000050201400000024100500000009440100
- 0040025100000090401400000024100500000009440100004002510000009040
- 1400000024100500000009440100004002510000009040140000002410050000
- 0009440100004002510000009040140000002410050000000944010000400251
- 0000009040140000002410050000000944010000400251000000904014000000
- 241005000000094401000040025598DE07FABD68D3A2445B65D0AA8356635A5D
- BAB5DC76AFCC687D301803FF6DFE8285525DADBF2EF1D23F3020470E1D94EEEE
- 6EB305402C1DDBFAA09CDEFD7030D2FF336BBB6A5A6FD0FA833660DA35D32247
- 0180D87BE39B7E4F3A36DC6166F173A5AB4B3EFDC98FC9E1A010001053312C00
- B80480D85BD7B1C18CE2695C7DBDDC7DCFABCD0C004A830200B1974AC5FFD778
- 656B9B5457EB892E00280D0A00C00313264C90A5CB57981900141F0500E089B8
- 5FCA00102F140088B5BA3ABD37B43CAC58B9AAACFE7B00F88D0200B1367EC244
- 338ABFAAEA6A695BD7616600505C140088B5868606332A0FED6B6F372300282E
- 0A00C45A4343A31995875B6F5B2A4DCDCD660600C5430180586B2CC3B06CE732
- 008012A00040AC4D9D3ACD8CCA074F030028050A00C4DA9469E55700CC9A7DB3
- CC9831D3CC00A0382800106B3367CE32A3F2B2763D67010014170500624B6F96
- 9BDCD26266E565DDED1400008A8B0200B1B5A66DAD19951F2D6C162EBEC5CC00
- A0F02800105BAD655C00286E0604504C140088253DFDBF70D162332B4FAB8302
- A7B2B2D2CC00A0B02800104BAB56B79951F9D2150297AF6C353300282C0A00C4
- D2AAD6356654DE56B797F7650E00D1A10040EC4C98385116DFBAC4CCCADB9A35
- EDAC1008A0282800103BFAAADC542A19BFBABA42E0CAD5C938DB01A0B4280010
- 3B6D095B316FFD863BCD08000A870200B19284BBFFC3F47247B9AD7A08207A14
- 0088958E8DC93B1AD6CB1DEDEB9275D60340F151002056CAF9ED7F4359CB4B81
- 0014180500624357C8D395F29268CEDC793275DA74330380B1A300406C247D85
- BC8E8D779811008C1D050062A33D6177FF8725FDBF1F406151002016E6CE9B2F
- 53A64E33B364D2FFFEF90B169919008C0D0500628195F132781A0040A1500020
- 1674653C649E066085400085400100EF2D59BA4C1A9B9ACC2CD97485C025B72D
- 333300B8711400F05ED4A7BD9FF8E10FCCC80F497F1A0240615000C06B7ABA7B
- 656BB46BFFFFD7F7BF23E73A3BCD2C7ABA14322B0402182B0A00786DF9CAD6F4
- 69EFA8F4F4F4C8E1430765D7B3DBCD96E8D5D6D6B242208031A30080D756B747
- 7BF3DFC103FBD3FDAE9D3BD2BD2F6EEFD868460070632800E0ADEAEA9AF4E9EE
- 28ED7F696FBAD702606060203DF6C1ADB72D950913279A19008C1E0500BCB5BA
- BD3D7DBA3B4A7B5F7C21DD77777707E33DE9B10F322B04769819008C1E0500BC
- E5C3CA7F7BF70C86FE73BB9F35233FB4F16A6000634001002FE9E9EDA5CB5698
- 59348E1C3E245D5D97CDCCBFFB00162E5ACC0A81006E180500BCB46A759B5455
- 579B5934F63CFF9C19651CDCBF4F2E9C3F6F667E68E3D5C0006E904FEF14AD08
- 352D4EF4FBB3AD2ADDEAA72C958933EE0AC62863BFFCBF5F2B2D53A69A5934FE
- F3DBDF92E3C78E9A59C6EC397365D6ACD96616BDC99327CB63DFFB8E9901C3D3
- 7748CC9879932C5A748BDCB66CB9AC58D92A1D1BEE4817DD1BEFBC5BEEB8EB6E
- 59BFF14E59B67CA59C3A79C2BBA2D75B978E3F2E5DA77607A33ED3FA4DD3BB87
- AF39CD1B1AB4BE7083DF86BF1E02D698A66F3EA99396DBEE9519AD0F066394A9
- A6E666F9F8439F4DDFE816A577FEC1EF655D0250EBD66F90DFFEDDB798991F3E
- F1E10FC881FDFBCC0CC8367FC1429917B48541E0CFBEF9E651ADAA79E9D22579
- FFBBDF91BE0916C338B6F54139BDFBE160A43B4BDB55D37A83660B01B718881C
- 0500BC73CF6B7E56EE7DED6F985934F4FAFF473E70BF990DD27B133EFDB92F9A
- 991F1EFBEE7FCAD7BEF265334BB6A5C1516B4343839945E36470D4BC774FE6E9
- 9128E811FECAD635E97DB162E52A19575F6F3EB9319FFAC447E4C508FF7B6283
- 02604C280090F6EEFB3F90BEC12D4A7AFAFF9187FFC9CCB2DDFFC18FC89CB9F3
- CC2C7AFA9AE2FB83A3B4FE7EFD3B26B9D6B4AF9537BFF5ED6616ADE777EF922F
- 7EFE33253D72BEE5D625B2E1CEBB654D5B7B41EF9FF98B4F7E4C5E08DD0F831C
- 625800447B8E1508D1BBDAA30E7F35D4237FBB9EF5EB69005D297171F0977FD2
- CDBC699619454F5FD4F49BBFF526332B1E7D59D6DDAF7A8D7CF8130FC91FBFF7
- FDB2AE637DE437CF223E2800E0151FEE6AEFEBEDCD7AFE3FCCB7C701D5BA0E56
- 083C73FAB419F941DFD33075DAC8AFB78F8606FF3DAFF939F9F8439F915FFB8D
- D7CBB4E933CC27C0C85100C02BED1EBCDC66CF0BCF496FAF9EB9CB4D5F0F7CA5
- ABCBCCFCB0BA6D6D3A1492ECCCE95366E40F3D3A2F245D1D53EFD0D7E0BFF7B5
- AF934911DFEF8078A300803766DF3CC78BD3B83BB66F33A3DCF45ABB6F9701F4
- 95C9AB12BE42E069CFCE00282DCC0A65C9D265F2A71FFA98BCE177DE4CF0A320
- 2800E08DA857FEB346728ADFC7CB00ED097F29908FCFABEBFD193366CC34B31B
- A38FC5FEEE5BFE50DEF1AEF779759F03E28F0200DE58777BF4D7B1F5C527274F
- 1C37B3FC7C2C0096AF6C4DF40A817AD9C6B74B336AC1E25BCC68F4EEBEE735F2
- A18F3FC4BA0F280A0A00786161F097E4E49616338BCE96CD9BCC6868E7CF9F93
- FDFB5E32333FE88B937C5840294AFAE21ADFE88B78464B8FFAEF7BDFFBE5D75E
- F7FAC857C444F9A20080177C09AE1DDBB79AD1F046F3B5A5B236E14F0374769E
- 31237FCC9A7DB3198D8CBECFE0831FF933597C0B8F76A2B828001039BDB3D987
- 539C7A0D79346F70DBB9CDBF0240DFA1A0478F49E5E319809B4678DD5EFF7FF0
- DADF7843FA6546637D7B1F30121400889CBEC4C687BB9A77EE185DA01F3E7450
- CE7A78E779C7C63BCD28797A3C7C67BDBE9867B8659B1B1A1AD36FC0BCEB55AF
- 365B80E2A30040E47CB97B7DD3533F35A391DBB6F51933F2870FEF52888AAF2B
- D74D1D62011E7DFCF5FE0F7E58E6CD5F60B600A541018048E9CB6BDAD6769859
- 747A7A7A867CFB5F3E3EDE07A08F8A69A824D1502F708A52BE335CFA6CBF1EF9
- 373625F7B20DA2430180482D5DBEC28BBB9CF548FE46C263CFF3CF7979DD5997
- 2D4E222DE47C94EB099735EDEBE4ED7FFC1EEEF24764280010295F4EFFEFDAB9
- DD8C4647DF0AB8D3C3B300ED1E9C5589C2A58B17CDC82FB575BA98E9A0DBD76F
- 9437FDFE1FA41FDD04A2C26F1F22A3EB96AF6A8DFEF5B5030303B27DCB8D5FCB
- DF36867FB658F40D747A7A197E983061F0054DEB82F0FFADDFFD7DC21F91E337
- 109159B97A8D174B97EA69FCB1ACDBAE6F05F4F1D473D25F0DEC137B06404FFB
- BFF177DE9C1E0351A30040647C394D3DD63BF9F5DE011F2F03E8CD95495B21D0
- C75701AB091326A4CFC870DA1F3EE1371191D077D6EB0D803ED8B665B319DD38
- 1F9F06D09BCB7CD9C7A5D2D575D98CFCA28F01BEE56DEF24FCE1157E1B118955
- ABDBBCF8CBF0C8E143D279F6AC99DD38BD87A0AFB7D7CCFCB17EE31D668428E9
- 637EDCED0FDF500020121D1BFC08A642DDC0A7F710EC79E13933F3C7D2652BA4
- BE7EBC9901C0200A00949CBEAB5EDF59EF83429CFEB79E19E14A82A5A43759AE
- 6E4FF60A810072A30040C9F9B2F2DFB9CECEF4FBFC0BA590C54421AD4BF80A81
- 0072A30040C9F9B258CDB6AD850D6C7D09CDDE1747FF3AE1625B7CCBAD895921
- D0D73701023EA2004049E9AA68A35D1FBD588AF1029FED1E2E0EA4D6756C34A3
- F276D1D33701023EA2004049B579F2721A3D52D41700159A8F6F0554BC140840
- 1805004A6ABD2F77FF0747EAFA1EFF423B79E2B81C7DF98899F943CFBADC346B
- B699010005004A4897A89D32C4BAE8A574A38BFF8CC458DF2C582CBE9C7D2926
- 5DD701C0C85000A0647C59A2565FD83396C57F86E3EB6580F51BFCB8F9B2983A
- CF9E312300C3A10040C9F8F2EE7FBD537F2C8BFF0CE7E0FE7DE9470C7DA32B04
- 2E5C7C8B9901483A0A009484068F06900F363DFD53332A9E423F625828BC1A18
- 8045018092F0E96534C5BCFE6FF97A1960656B5BE2560804901B05008AAEB2B2
- 52567BF2F63F3DFD5F88C57F86A38F185EBA74C9CCFCA1CBD296FB0A81BC0C08
- 18190A0014DDE25B97A483C707BB9EDD6146C5A58F186EF7F43240B9BF1A58DF
- C80860781400283A5F5EFDAB363F55FCEBFFD68E6DDBCCC82F2B56AE92BABA3A
- 330386C6A395E58B020045A5D79B57B5AE31B3689D38762CFDA29E52797EF7B3
- E9470E7D935E21D0934B32F0DBF1E3C7E4C0FEFD66867253617A1FE8F7A24D8B
- 126D9541AB0E9ADEB1A44D0F59EAA4E5B67B6546EB83C11831B0A67DADBCF9AD
- 6F37B3687DFB5B8FCAA3FFF2B09995C61FDDF71EB96D997FD7DC9FDFBD4B3EF3
- D027CCACBC7CFCA1CFCAE49616334B36BD0FE5C4B1A372FAF4A9F4A3A97A79E4
- D2A58BD2D5D52557BA2E9BAFCAA645FBA486063913FC33FB5E7A497A7BAF9A4F
- 30A4635B1F94D3BBF52F187DC6589BEE386D7A14A0AF1DD55329DAAE9916390A
- 0014D55BDFFE4E59E9C919804F7EF4C1E02FB4BD66561AAFB8FB55F2EBAFFF2D
- 33F3879ED6BDFFDDEF28C90D91A596D402E0D4C913E9C03E78605FD0F6CBD123
- 4782A0CF1DF228821816005C0240D1E875E6A59E1CFD5E098E78F42FC552DBB1
- 7DAB19F925954AC91A2E03C4DA99D3A7E5878F3F267FFBD77F25EF79C71FCA9F
- BEF73EF9D2DF7C41BEFF9DFF90BD7B5E20FC312C0A00148D5E67D6EBCD3ED0BB
- FF8BB1F8CF70F4083B8AC263247CBA39132373E4F021F9C623FF4F3EFCC09FA4
- CFE0FCE3DF7F49363DF5A49C3F7FCE7C0530721400281ABF5EFE539AC7FF72F1
- 7571205D2170C68C9966065FE991FEBF7FF35179E07DEF928F7CE07EF9B76F7E
- 5D5E3E72D87C0ADC380A0014C5848913D3CFFFFB22CA02A0980B0F8DD55A4F16
- 684236BD47637B50387EEE2F1E4A1FE97FFD91874BFA040B9281020045D1BEAE
- 237D9DD9077A0A3ECA53A47AB4A63768F968DDED14003ED1C7461FFBEE7FCA03
- EFBD4FBEF0B9CF94E4B5D5482E0A001445DB5A7FD69E2FD5DBFF86B265F32633
- F28BDE2DCF0A81D1B3C17FFFBBDF295FFBCA97D38FED01C5460180826B6A6E96
- 858B169B59F4766E8BFE4E7C5F9F0650EDEBFC29D692261CFCDCCC8752A20040
- C1F97477F985F3E74BFEEC7F2EFA5896BE88C5476D6B3BD20B36A1B4F4E6D00F
- 3DF03E821F91A10040C1F9F47CF9CE1DFE1C796FD9FCB419F925092B04FA448B
- D2BFFACB4FCB173FF7193979C2CF7B43900C140028287DAC4C1F2FF3854F0BF2
- 3CE36901A0DAD67598118A4997A3FEE807DF1FFC5EFA7B4908C941018082F2E9
- B1325D173ECAC7FFC2F6BFB437FD6E761FAD59D3CE0A8145B6E785E7E5B30FFD
- 19A7FBE10D0A001454BB4777FFEB6A7C3E2D64A26F227CFAC927CCCC2FFAC6C6
- 95ABFD58B3A15CED797E370BEBC02B14002898B9F3E6CB94A9D3CC2C7A3E9E72
- F7F932C0FA0DBC1A1848120A00148C4FAFFED537A9EDF4E8FABFE5F3D300FAE6
- 467D83238064A00040C1E8E23FBED8F3FC73DEAE86E6EBD300FAE6C6DB3D2AE2
- 00141705000A62C9D265D2D8D46466D1DBF4F44FCDC83F3C0D00C00714002808
- 9FDE26A7A7FFB76DD96C66FEF1F932C0BCF90B64EAB4E96606A09C510060CCF4
- 2D722B5BDBCC2C7A7AFAFFD2C58B66E6A79D1EBF1AD8A77B3900140F0500C66C
- F9CAD6F4DBE47CE1F3E97FCBE7CB00EB3AD69B118072460180315BDDEECFCD7F
- BE9FFEB7F42CC595AE2E33F38B3ECA397FC122330350AE28003026D5D535B2AA
- D59F17C83CBF7B97F7A7FF95BE1468C70EFF1E53B4582110287F14001893D5ED
- ED525B5B6B66D1FBE9933F3623FFEDDAB9DD8CFCB3B663032B0402658E020063
- E2D3CA7FBAB6FAF62DCF9899FFF445457AC9C2477A4F87BE180840F9AA30BD0F
- F47BD1A64589363DFCA80E5A8D69BA52499DB4DC76AFCC687D30182362FAD6B8
- 4F7EFA73E9F7C8FB409759DDF5AC3F8BFF8C84BE3CC9A73328AEA77EFA13F9D2
- FFF98299C5C7C71FFAAC4C6E6931337F7CEBD147E49B5F7FC4CC50768E6D7D50
- 4EEF7E3818759BA60B3F68EB0D5A7FD0B4DAD776CDB4C85100E0866D7CC5DDF2
- 9B6FFC1D3343B9D1D514EF7BDB5B62B7800D05002211C302804B00B8613EADFC
- 87C2D333137A8F0780F24401801BD2D4DCCC35E204685FCBAB8181724501801B
- A237FFE9E231286F4B97AF608540A04CF137386E48AB4777FFA378B4C86B6781
- 20A02C510060D474B198858B169B19CA5D1BF77A0065890200A3D6C65BE21245
- 8B3D560804CA0F0500468DBBFF9387A20F283F14001895D937CF919937CD3233
- 24C5ED2C110C941D0A008C8A4F2BFFA174A64D9F912EFE00940F0A008CCABADB
- 39124CAAF51BEF342300E580020023B670F12D5EBE6215A5A1EB16B04220503E
- 280030623EADFC87D26B6C6AE2ED8F4019A100C088E8911FCF83631D37030265
- 83020023A2477E931A1ACC0C49A59701AAAB75714E00714701801169E7397004
- 7485C015AB5699198038A300C0B0F488AF8D55E160701900280F14001896AE08
- A7477E805ABA8C150281724001806171FA1FAEAAEA6A59B5BACDCC00C4150500
- 8654575727AB5AD7981990D1B1E10E33021057140018D2CAD56BD2477C804B57
- 086C6A6E3633007144018021B573F31FF2E8E0D5C040AC5100202FBDD14B6F00
- 047261596820DE28009097DEE8954AF12B82DC745968560804E28BBFDD911737
- 7A6138EDEBB84404C415050072D21BBCF4462F6028BC1408882F0A00E4C4CA7F
- 18095D21F0965B6F333300714201809CB8C31B23B56EFD7A330210271400B8CE
- D469D365D6EC9BCD0C18DAEA35AC1008C4110500AED3C6AB7F310AE3EAEB795C
- 1488210A005C673D77FF6394D66FE47706881B0A0064D1E7BAA74C9D6666C0C8
- E80A81F5F5E3CD0C401C500020CBBAF53CD685D1D3F52256B7F3E40810271400
- C8C2BBFF71A3783530102F15A6F7817E2FDAB428D15619345D864E6F2FD65697
- 6E2DB7DD2B335A1F0CC628B0858B6F9177FFC90366E68FED5B9F91C3870E9A59
- 328DAB1F2FAF7AF5CF9899BFDE77DFDBA5F3EC59338BC6C71FFAAC4C6E693133
- 7F7CEBD147E49B5F7FC4CC50768E6D7D504EEF7E3818759B76D5B4DEA0F5076D
- C0B46BA6458E0200FFED756FF86DB9F3AE579A993F1E78DFBBE4E489E366965C
- 1FFDE4A7BDBF3FE35FFEF9ABF29D7FFF37338B0605002211C302804B0048ABAC
- AC94D51EBEFDEFC8E14384BFB1E9E99F9A91BF783530101F1400485B7CEB1299
- 30618299F9E399CD4F9B11B66CF27F5FE80BA46E9A35DBCC00F88C020069BEBE
- FA77FB9667CC087A1FC4A99327CCCC5FBC480A88070A00A45FE3BAAA758D99F9
- 43C3EEE52387CD0CEA274FFCC88CFCB57E03EB48007140010059B16A95D4D6D6
- 9A993FE270CDBBD4363FE5FF3ED11502F58912007EA30080B7376EC5E19A77A9
- E90D917A63A4EFB81910F01F0540C2D5D5D5A55FE3EA9B739D9D897FF63F9F38
- DC18A94F94E8932500FC45019070FA17B5BEC6D5375BB8FB3FAF277FFC4333F2
- 973E51B27C65AB9901F0110540C2F97AAA96C7FFF2D337EDED7D718F99F9AB9D
- A70100AF510024D8848913D3CFFFFBE6C2F9F3B277CF0B66865CB6C6A040D227
- 4BF41213003F51002458FBBA0E49A5FCFB15D8B963AB19219F389C2149AF10E8
- E1DB250164500024589BA7ABB76D8AC1A36E51D3CB007B5E78DECCFCC5D30080
- BF280012AAA9B959162E5A6C66FEB874E992EC79FE3933C3509E7AF20933F297
- 5E62D2DF3500FEA10048285F5FFDBB73FB56E9EFD785B3309C6D5B36CBC0802E
- 2EE62FBDC4B486CB008097280012CAD7BF94B7F1EEFF11BB74F1622CCE96ACE5
- 3200E0250A80049A3163667AD536DFF4F4F4C8AE9D3BCC0C231187D725CF993B
- 4FA64E9B6E66007C410190406BD7FB7944B66DEB33D2DB7BD5CC30129B9F7A52
- FA7A7BCDCC5F1D1BEF302300BEA00048A0764FEFFEDFB573BB1961A4BABBBB65
- D7B3FE9F35F1F5770E48320A8084993B6FBE4C993ACDCCFCA147B1ACFD7F63E2
- F04E00FD9D638540C02F140009E3EB73D97A14AB47B3183D2D9CE27019805703
- 037EA10048185FDFCCC6BBFF6F9C164ECF3CB3C9CCFCD5B6B6831502018F5000
- 24C892A5CBA4B1A9C9CCFCA1CFB273F7FFD86CD9E47F01A52B042E5DEEDFD2D3
- 405251002488AFA760F559767DA61D374E0B287D8CD2776DEB3ACC0840D42800
- 12424FBDAE6C6D3333BFC4E15976DFE9E393FA18A5EF582110F0070540422C5F
- D99A3E05EBA39DDB58FDAF109EFE89FF6B03D4D6D6CACAD56BCC0C4094280012
- 6275BB9F37FFED7D718F9C3F7FCECC3016CFED7E36BD9892EF6EEFD8684600A2
- 44019000D5D535E953AF3EDACADDFF05A38B286DDFBAD9CCFC75EB6D4B65C2C4
- 896606202A140009B0BABD3D7DEAD5473CFE57589B9EF2FF7E0A5D21F0761608
- 022247019000BEAEFC77F0C07EE93C7BD6CC5008FA44C585F3E7CDCC5F3C0D00
- 448F02A0CCE9A9D6A5CBFC7CF63A0E77ADC78D5E06D81C83A72AE6CD5FC00A81
- 40C42800CADCAAD56D52555D6D667ED91C83D3D5711497CB2A6DBC1A18881405
- 4099F37515B6A32F1F9193278E9B190A69EF9E17E45C67A799F96BFD06960806
- A2440150C69A9A9B65F1AD4BCCCC2F9CFE2FAE2D3159215057A704100D0A8032
- A637FFE91DD73E8AC3BBEBE3EC273FFEA119F9CDD7D5298124A0002863AD9EDE
- FD7FEAE409397CE8A099A11874FFEA7EF65DDBDADB5921108808054099D23BAC
- 172E5A6C667ED9B2D9FFA56BCB411CD65898D4D0E0ED652AA0DC510094299FEF
- B0DEB19D77FF97425C2EB3746CBCD38C009412054099F2F5EE7FBD3B5DEF5247
- F1E9658023870F9999BFF435D5FABA6A00A54501508666DF3C4766DE34CBCCFC
- 1287BBD3CB491CDE09A0AFA9D6D75503282D0A8032A42FFFF115A7FF4B2B2E2F
- 5BF2F575D54039A3002843935B5ACCC82FBA54ADBEAB1EA5A32F5B8AC3658079
- F3179AD1D80D0C0C98915FE2B04603928502A00C9D397DDA8CFCA17F29FFF357
- FF6FFA5DF528AD471F79D8DB50B47A7A7ACC68EC9E7CC2CF7720EC7BE9253302
- FC50617A1FE8F7A24D8B126DFA70B0BEC45EEF0ED256976E2DB7DD2B335A1F0C
- C6C8436FA8DA78E75D32FBE69B25E5C133D65D5D5DB2F9A92783BF00F79A2D28
- B5858B6F49DF185A5BA7FF37F2CBA58B1783D0FE91BC7CE4B0D93276EBD66F90
- 5B6E59E2CDEFFFCEED5BE5B95DCF9A2D284BC7B63E28A7773F1C8CBA4DBB6A5A
- 6FD0F4C847AB706DD74C8B1C050000006315C302804B00000024100500000009
- 4401000040025100000090401400000024100500000009440100004002510000
- 0090401400000024100500000009440100004002510000009040140000002410
+ 000000000000000000000000000000000000000000000000000000C03315A687
+ FFF85E01888B1BA687C70815FFE4FB9EF0BD021017F90A000A038F102AD1CBF5
+ 3D18CE36BE77007C110EF65C413FDC6D281142241A4385B99D0FF7F300202A43
+ 85BF9D0FF7F350220448E9B8FB3A5F90877B35DC6D0010855C013F9C6DEEC754
+ AECF45111120C5952BB45538C0DD3EFC79B93E16EE953B068062CA15D66E9F6B
+ ACC21FCBD5AB7C631410A1511CF98259C7766EC7E1B9723F96ABA970AFDC3100
+ 1443AE7076FBC19ACA35CEF531956F8C0220300A275F10EBD8CEED38D75C5BE5
+ 20DB948E95FD980AF700506C6E60DBDE8EFB4DAF731DDB8FD9966B9BCA37B7F2
+ 8D718B088DD173F761AE50B6631BDE6E6F3FAEE3F0DCED336DC2DCA9921A7387
+ 5454CF93BAF1B364ECD4A952553D4B243549FAFAEAA5323543AA82FF014031F4
+ 05FFEBEF392955559D223D17A4AFF7985C3D7346BA2F1F931BBD87A4A7EB45B9
+ 74F84CF09936BCB5D9C077835FC7E1B90AF7F6E32ADC2B778C11D260C1AD71F7
+ 9D1DDBB05676ECB670B06B6F9B3BAF90C6B973A47AEC5AA99BB2561AA6AE92EA
+ BE252263C6071F03008F755D96DEAA7DD2716697749FDD26BD57B749FBE123C1
+ 0734ACDDE0B76377EEF6E1A6C263CB1D63983474307276BFB97D78ACCD06BB1D
+ E76F13664C93DAC9F7C884F91BA46EDCE6E01F991E6C07803270E394745FF991
+ 5C3AF8945C3BFFB85C3A793AD8E81600B99A0D7B776C833E3C767B0C93061386
+ CFEE2FB777C71AE6769B1DDB90D753F3769C6913E72F9071337E46C6DF769F54
+ D63407DB00A0FCF55FDF2E978F7F57AE9CFCBA5C3C7840B7845A9F33D660B7BD
+ 3B56769B0AF718820D2F0CCEEE27777F69882B37ECEDD86D36F8337DFDC42699
+ B0F87F49E3829F93AAEA95C1360048AEBEDEDDD27EE05FE5D2CB8F4AE7C573C1
+ 16B700700B01DB6CE8DBB1D2B14521304C6EA02137BB8FDCDE6D1AEEB6CF1DFA
+ DA372DDD249317BF496AC6BD3A98D7060D0030E09A5CBFF23D39FFF2DFCBB917
+ 9E0CE6E122205C0CB84580DB54B8470E1A5CC8CDEE1BB70F3737F4B3035F5BED
+ F87A99BCE867A571C95BA5B26A49B00D003094FEBE7DD2BEEF6FE4FC9E47E5DA
+ B56BC1160DFF7C8540AE22C0067FB88743430C37B3FBC5ED6DE087FB81C07783
+ BF69D91BA571C1DBA4A2A229D8060018A91B37CE49FB812FC8B9BDFF20D72E77
+ 065B6C21E01604B60008F7E1F0B73D0C1B70C8B0FBC3EDDD66033F4FF0D7D6CA
+ 94E65F95890B7E8FE0078002D142E0E281BF94B3DBBF143A23102E046CB30580
+ 6D2ADC279E0D3A0CEC0BB7B7A16F7B37F8B5AF36E36A99BEE67F48D392F74945
+ 6A6E30070014DA8D9EC3726EDFA7E4D48E6F06B3DEA069F86BAFA11F2E0434E8
+ DD62405104386CD8259D1BFACA867E38F8B5D9237E0DFF6A99306789CC6CFE88
+ 54376C0AE6008062EBED78524E6CFFA05C3AB24F67A60D753640C78A22C0A000
+ C80E7FB7D9C0D7B10DFD81F0AF19375666ACFD7D193BEBB7832DBA0D00502AFA
+ 5AE2ABC7FE5A4E6EFB0BB97EE56AB0C52D026CB3C1EF1602B629DB2792865B92
+ D9B057766C433F7CC49F09FEF451FF825699D9F267529D5A10CC010051E9ED39
+ 2027B6BE5B2E1DD8A233D3DC22C02D00DC4240B9E3C449EA91AB0D7B6DCA8EC3
+ A19F097C9154BAD5D6D6C9ECCDEF95C9CBFF54AAAB2607DB000051AAAC6A9486
+ D9BF206327D549D7A92DD2A7999FF5BBDDEDC386FA78594BE25F3AFC0DB747FC
+ DAF21DF5A7A46ECA3C997BD75F4ACD9835C11C00E09BBEAEDD72E0876F97EEB3
+ 8782594FD0063B1BA04DC7CA3D2390181A7049922FFCC3A13F10FC2235326DF9
+ 4FC89C3BBF245535DCE10F00BEAA4C4D93C9F3EE978A1BFBE56ABA0808B3077B
+ 968E35F4ED36F763652F490540F81BEC86BF6DD9C1AF6DEEAB1E90494B3E1E7C
+ 98D7F70280F782DFD563A7FF8C8C995425970EEB7D014385BA7E3C914540520A
+ 80F03776E8F0AF6998280BEFFB828C9DF6FA600E008893DAF16D3271D60AB972
+ EA71E9BBAE970206A37990B82220090540F81B1A0E7FDD0736FCB5D5C898C933
+ 65DE7D7F17FC006D0CE6008038AA1EB340C6CFDD249D671E97DEAEAE608B7B8D
+ 3F1CF23A4F541150EE0540F81B3958F8678EFCC74EBD5DE6BEFAEF2555BB3498
+ 0300E2AC2A353D2802EE93AEB34F49CFD58B666B3E9A0F892902925000D86F60
+ BEF0D79679CC6FECD43B64FE6BFE49AAAA6E0BE6008072A08F0A4E5CF0D372F5
+ F4134111D06EB6BA67035C9A136E1150B6CAB9001849F8EB91BF86FF5758C407
+ 00CA504545BD5304D83301892E02CAB50020FC0100D9B28B80C49F0928C702C0
+ 7EB3B47783DF2D00DC6BFE1AFE5F26FC0120013245C04FE52802F2150256D915
+ 02E5560084C3DF2D00EC51BF0DFF948C993453E6BDF62B5259393D9803009240
+ 8B80F1F35F2D1D27BE25BD5D9D66AB6BB0B30265A39C0A80E1867FE651BFD4D8
+ 89B2E827BF2A55D5F382390020492A2BC6CBC479F7C8C5438F497F8FBE3678A8
+ 330056D91401E55600D86F8C0D7EB7001838F2AFA9A99705AFFD1BA9AE6F0EE6
+ 008024AAA89A2CE367AE942B87BE257D7DEEBA00B98A01DD5636E1AFCAA500B0
+ DF14ED35F06D6F8FFCB565C25F8FFE676F7E50EAA7FCCF600C0048B2AADAB952
+ 3BA15E2E1E7E3298D9E0770B003BD65C71C7B1570E05801BFE36F8C347FE99D3
+ FE5A00CC6CFD059938FFFDC11800007D6DF05AA9AE3B26574EBC64B6E42A04C2
+ 625F04944B01E0B65CE19F39FA1F77DB0A99DCFC05A9AED039000019558D9BE5
+ 7AFBE372FDCAB960A6C1EF1601831502B115F702C086BED2D0D7B1FE9D74EC86
+ 7F8DA42636CA827BBF28A96AEEF8070064D303C3F1B7AD978BC7BF2EFDDDD783
+ 2DE12220DCDBEC89AD38170076E7DB22C01EF987C33F5300CCDDF021A99DF8AA
+ 600C00C0CDF4A6C0BA8646B978E8F160962FFCC3625B08C4BD00709B06BFFE7D
+ 6C1B38FA9FBAF2B53269D11F06630000F2AB19B722F873AF5C3D7328E835F46D
+ B3F21502B1A3A119476EC5E516006E2190390B503F61924C5CF191600C00C0D0
+ 3433343B06CE266BA6B8196373C772C7B1A17FA938B23B5F9B7E336C738FFC33
+ 6DEEAB3F2675F52DC1180080A1555734C898A6A97261FF7782997B16C0B6B2A0
+ A1193736F855B810D00260E0E87FF2C24D3266D2CF05630000864FB3A371715B
+ 3072CF0268D3AC71B347B9E3D888630160B9DF00FD7BB8054095D4D4D4C9B4D6
+ 0F07630000466EC6BA8FA7B3C4CD9681BC71332896E25600B83BDB8EC3E19FA9
+ D6A6ACF965A9AA9A1F8C01001839CD10CD92DC6701DC2240B9E358885B0160D9
+ 1D6D5B7601A0376F4C5AF0CE600C00C0ADD32C19B821D02D00C239143B712A00
+ DC9D6CC7FAF5DB96097FED9B56FD4ED08D0BC600008C429025E94C7132263B7B
+ 7265532CE8171F377607DB66C33FD3EA1AA7CB84396F08C600008C9E668A668B
+ 9B35D9E16F5BACC4A5007077AE1DEBD79E1DFE5A9D4D5BF55B41AF0BFF000050
+ 0835265BDCCB00DA6C0EE5CA28EFC5A500B0EC8EB52DBB08D00A6DFCAC5F0AC6
+ 0000148E664BF6598070F8DB161B712800DC1D6A777076F0675AB54C59F6E6A0
+ E7E81F00506835266386731640B9632FC5A1005076C7BA2DBB08484D182F1367
+ FF62300600A0F03463346BF287BFDBBCE77B01E0EE4477C76687BF56644D0B7F
+ 3E1872E73F00A048F48900CD9AACB300B98A00CB1D7BC7F70240B93BD48E6DF8
+ 0F1401931673F40F0028AE4CD6B8E16FFB5C59E5B538140096DDA176470F847F
+ E382B55259BD28180300503C9A359A39D945809B4DDA62C1E702C0DD8976A76A
+ B3C13F50004C5AF80B410F0040F16532C72D00DC42C036CB1D7BC5E70240B93B
+ D336FD9A07C23F555F2FB5537E3A180300507C9A399A3DD94540B800B0CD5BBE
+ 1700CAEE407787DA9D5D2913E7DD2D55156382310000C5A799A3D9E366517646
+ 29DB7B4BBF681F85779CDDA9EECECE545EE3E7FF44D00300503A99EC099F01D0
+ 66F3CA159E7B41BF585FD99DE836772757664EFF4F7875300600A074347B3297
+ 01B2732977767949BFD8387077A47ECDE6E87F761BA7FF010025A7D9A319947D
+ 16C0CD2AEFF95E00B83B53BFD6EC3676EAAB821E0080D2CB64D0CDD9949D5DDE
+ D22FD437E11DE7CEDD1D5C25E36EDB10F40000945E2683F2DD03A04D85E7DED0
+ 2FD667B976606627374C9F2A9555F382310000A5A719A4596473293BAB94EDBD
+ E47301E0EE406D760767DA98C6F5410F0040743259949D4F03B9A56CEF1DFD42
+ 7D667762B8554ADDE4D5410F0040743259E4867EB879CBB70220BCB3EC5C7B5B
+ 5965DAF899CD410F0040743259949D4FD9D9E50ACF23A55FA86F7407D9A6DC79
+ 66E7A65229A94CB1F80F00205A9A459A49369FB2334B85E7DEF0B10070D99DE6
+ EED44AA99FBD30E86B82060040946A4C2665E7D4C0D85BBE1600EE4EB3E3811D
+ 5A53BB38BD050080A855D72D08FEB4816F7335578E79C5D70240D99D6977A8ED
+ 2BA57AECFCA00700207A35F57A493A934FD999659B97F48BF49DBB13B555CAB8
+ 1973821E0080E86532291CFADABCE6530110DE69F9E7A95A0A0000801F2A5233
+ F54FA7A9A1E691F3F50C80BBC36CAF2D5361F555EA9B970000885EAA7A5AF0E7
+ 4046659A0AF75EF1B50070D99D39D052290A0000801F2A5233F4CF1CCD6B3E17
+ 00B97666858C9D3625E80100F047269B72E796A7E2700640D91DA8D7FFEBCD18
+ 00003F64B26920AB62C0C702C0AD986E1E57D44DCF4C0100F044269B06CF2FCF
+ F87E09C0F272E701001012CE2B6FB32B2E37015A155255C1250000805F2A2B6B
+ 833F6311FC569CEE01303BB36A62A60700C013159593EDC834EFF95E00847762
+ 2C762A00209162955971BB040000401C789F5D71B904A0ECCEA4200000F82676
+ 1915A70200000014080500000009440100004002510000009040140000002410
0500000009440100004002510000009040140000002410050000000944010000
4002510000009040140000002410050000000944010000400251000000904014
0000002410050000000944010000400251000000904014000000241005000000
0944010000400251000000904014000000241005000000094401000040025100
- 0000904014000000241005000000094401000040025100000090401400000024
- 1005000000094401000040025100000090401400000024100500000009440100
- 004002C5B000E83F6706000078227ED914C30260A0CB0C0000F044FCB2294E05
- C035D30300E0ABD864551C0A80EC9DD9D77DD28C0000F0C3F5D9E47D21E07B01
- 10DE81D7A4B7874B000000BF64B2E9FACCF2585C2E01E84ECCECC8CB27CFA47B
- 00007C31984D8379E5B9B85D02C8ECD88181539929000011BBD6774CFF34CDF2
- BE08F0B900B83EF833AE053B9BFB0000007EE8EFD74C1ACCA8C1B172C75EF1B1
- 0070775EAEF135E9BD7238BD050080A8F575BB6700C299A5DCB137E2740F80ED
- AFC9C5A347325300002296C92437E4BD0BFB5C7CBF0490BBF55D3910F4000044
- AFB7EBA5E0CFDC7995695E8ACB4D80D9EDEA95BD410F0040F47ABBF7077F5E9F
- 559EF3B500B03BCEEDB50DA4FBAE237A06E06AD0000088D2559349831995692A
- DC7BC5A702C0EE347787E59EF7F5F54ADFD57DE9AD00004445B34833C9CDA88C
- E1E6918BE325804C8575F9D8F6A00700203A992C1ACCA6ECE6B5B8DC046877AC
- F699D6756667D00300109D4C160D66537666D9E625DFEF015076ECEED0A00038
- B54537020010994C1665E75386CD2EE58EBDE1FB25007787BAE3A000387D4A06
- FA0E056300004A4F3348B3C8E652EECCF2968F0580DD6976C7B973BB9333EDD2
- D1A7831E0080D2CB6450762E6567960ACFBDE15B0110DE41EE0E0CEFE401B97C
- E289A00700A0F43219747D366567972B3C8F545C2E01849BEEE07E397768B35C
- BB7625180300503A9A3D9A419A4583A19FAB79CBE702C0EE38BB13DDEA2AD3FA
- BABBE5CA991F056300004A47B347332857366587BFEDBD13873300B6B7CDDDC9
- FD726EFFF7831E0080D2C9648F3DFAB7CDCD2A657B2FC5F926C0CC8E3F7FE849
- 2E0300004A463347B3C7CDA2C1E666960ACFBD11A77B00DC1D6C5BBFF4755F91
- AE13DF0BC60000149F668E66CFF5E16F9B9B5DDEF2BD00B0DC9DA93B5777FA60
- EBDCF78DA00700A0F83299939D43310A7ECBF79B00C3CDADB0060B81CEFD3BA5
- BF5797630400A078346B3473B283DF6DB9B2CB4BBE1600E11D6677A2BB93EDCE
- D7D62767F6FC6BD00300503C99ACE90B9A9B416E36E50AFDF0DC0B71B8046077
- 9CDDA9DADC9D9DF9019C7BF1DF828F2E056300008A20C89874D60C19FCDA94ED
- BD15A79B006DCB0E7EDB7A2E5F9473FB1F0DC60000149E668C664D387F721701
- B679CBF77B002C7767DAF0778B003D1DD327279EFBA7A0BF1A3400000AE9AAC9
- 984CDE6487BFEDDDACB2DCB157E27009C0B23BD5EE64B700C8B4ABE74ECA8543
- 9C0500001496668B664C3877B233C9E6542CC4E51E00BB43EDD886BF5B0464AA
- B2633BBF1CF49C05000014CA55932D2339FA57EED85B71B807C0B23B549BEEEC
- 70F867FAABE74EC8F9438F04630000C64E3345B3C5CD9AC1FCB179E46694E58E
- BD13974B00EE8EB52D7F117062FBDF055FC213010080310AB2249D29230E7FDB
- BC57697ADF5598A6DCDE362D646C9F92FE9E3E49D5F4CAF896DB8339000037E6
- D40B5F90F307360523BDB4DC6B7A2D026CB3854038F8BD2F02E27206C0B23BD8
- B65C670132EDF4F64764A0F75030060060F43443344BDC6C19FEE83F36E27609
- 40D97138FCB30B80BEBE6E79F9E94F05630000464F3344B3C4CD96ECCC091701
- CA1D7B2D6E670094DDB9B6E52F02CE1DD82C974FFE4730060060E4343B3443DC
- 4CC9CE1A37F86D8B95381500EE0EB6635B7DD922C0FE80F43A4DE607F6F2537F
- 2903FDA782310000C3D3CCD0EC180C7ECD143763DCECC9954DB110979B002D7B
- D39FB2E37C4D8B9B0AE9EFE99581BEE33271E63DC11C0080A11DDBFA51B9F8F2
- 73C1C8BDF16FF0C032BB088855E8BBE25600581AF0F9FA704BC995D32FCBB8E6
- 29523BE996600E00406E178E7C438E3DF395606483DF86BF5B00C4FEE85FC5F1
- 1E00CBEE6C6DF687A155996DF60795F9C11DDFF457D2DF7D20180300703DCD08
- CD8AEB03DFCD9670F86B8BA5B89E01507A746F7B3B5676EEB694F4F7F64B77E7
- B3D238F767834D55C13600008C816E39F4C3774957E7D160A2E13FD4D17F38FC
- 635908C4FD1280B2E35CBD367B962325572F9D9754E519193FF50EB30D000091
- 53BBFE5CCEBEF4D360A4A1DF13341BFCB6D933001AF49C0188980D7897BBCD8E
- B50D1601974EEC97718D13A4B661A9D9060048B20B87FE595E7EFA1F83911BFE
- E1A37F7BEADF0D7F2B964540395C02B0DCB91BFECA9D57C8A597B7CB849B964A
- F5B89BF4430040425DE9DC24871EFF845CBBA62FFC714FFB6B1FBE07207CE41F
- CBE0B7E25C00A870C8E7EBB3DBB5E06776F9E527A571DE4649553506DB000049
- D3DBFD921CFCDEBBA5F7AA2E1E67C3DF1600F6C83FDFA97F2BB64540DC0B00CB
- 867D98BBDD1600AA42FA7BFBE4D2D127A461DE5D92AA9C60B6030092A0BFF784
- 1CF8EE1F49F7A533C1CC0D7EDB878FFCC3E11F2E0462A71C0A8070F8BB41AF06
- 433FDCF7F574CBE5E39BA571EE5D52911A67B60300CAD9405FA71CF8FE1FCB95
- CEC3C12C1CFE1AFC3A76C3DF86BDDB62AF1CCF00E41BBB068B80DE2B17E4F2B1
- A7A5711E450000943B0DFFFDDF7D87749D7D299885C35F7BF7E8DF1EF9878B00
- 15FB22A05C0A00A5A1AE4D7F28761C16DE969953040040F9CB1DFE6E11A0C11F
- 3EF56F435FC756ECC35F955B01E0F6AE5CC1EF6EE34C000094B3FCE16F8FFAF3
- 1DF9DB22409545F05BE55400A85CE13F528345C0A4D96D92AA6A30DB010071D6
- D77D580E3E765F10FEFB839986BE3EEB1F2E02721DFDDBF0B74D954D11506E05
- 801AEE68DF75FDD7A68B80A33F960933564865ED14B31D001047572F3E2707FF
- EB3DD2D5F9B2CE82E6867FBEA37F37F46D53B62F0BE558002837F4AF0FF90CFB
- 830C7F1EFC1AF45C918B877F20E3A6CE939AFAD9662B00204EBA4EFD480E3EFE
- 80F4643DEAE786BFEDF39DF67703BFACC25F956B016069B8EB0FEDFA90CFC85F
- 04E87B023AF7FE406A26A6645CD34AB3150010079DFBFF2108FFCF047F977705
- B3E1C23FD7697FED958ECB2EFC55B917006AA44580953DBF707887F475EF9509
- D3D74945AAC66C0500F868A0FFB21CDDFC6139B1FDD1603654F0273AFC5512CE
- 00D85E7F88232D02ACCCF62B678FC8C5233F9449372D95CA9A96F43600805F7A
- 2F3F2FFBBFF76EB9787467300B87BE1BFC230DFFB296943300B6CF5704D81FB4
- FBB98E077F01FABA2F49E78BDF95EAF15552D7B834F8B27CC50400A0A4AE0DC8
- B9035F95838F7D5C7AAFE8F57E37F4DDE0D7B1BDDB5F837EB8F01FCC80329484
- 02408DA408B0C23F709D67B65D0B7EC92E1CDE26DD9D5B64C2CC1592AA9C94DE
- 0E0088465FCF6139FCC403726AD7BF077F47DB3BFC6D6F83DF36F7513F1BFC89
- 0C7F959402408DB408D0CFDC1FBCFBCB90693D174E49E74BFF21D5E3529C0D00
- 802898A3FE038F7F2C382873DFE96F83DF1DDBF00F9FF24F6CF8ABA405975B04
- A854D074ACBDDBB430AA32AD7AC83671DA3C99D1FE36A96D680DE6008062EB39
- BF558E6DFABC5C3CB12F9869B0DB90CFD5F21DF5273AFC55128F5CF315016E21
- A005806DB608081703EEBC4AA62CB95BA62E7F93A4AA6704730040A10DF41E93
- 933BFF564E3DF75FC1CC0DFE701160E736F8C347FE1AF2890E7F95C40240858B
- 807001102E04ECD9805CC5C0E0B6CACA3A99BAE217A479F1AF4BAAAA29D80600
- 182B7D8FFFD93D5F91933BBE21FDFDDDC11637E07385BE6DE1E00F17002A91E1
- AF925A005836F8955B04D8DE2D02DC42C006BF3B1EDC5659532F53970585C0A2
- 5FA51000801B940EFE17BF26279F0D82FFAABED0C7067B38F0F3057FF8A83F57
- F8272EF82D1B7E49162E006CB305808EDD22C02D04B2833FDC2A2B6BA5E5B6D7
- 48F3E25F92AABAF9C13600C070FABAF70547FCFF2AA7777F2738E2D73BFADD70
- B72D1CFADADCE0D76643DF0D7E37F46D9F481A6E18DC0FB6B7C1AFCD1602B685
- 8B80A10A82C1CF9A16B4CAE485BF2875CDFA4641FD1A0080756DA057BACF3E25
- 67F63E2A9D2F6D0DB684C33D5FD3A0B7BD361BF8E1E0D7B122FC0D0A8041E122
- C02D006CEF1601DABB211F2E04C2DB32E39A8666699A774F5010BC52AAEB1605
- DB0020B97ABB5F0C02FF31E9DCFF3DB97AFE6CB0C50DF570C887E76E9F2BF86D
- 1F0EFDC487BFB261870C37FC6DEF36B708B08540B8B9C16FFBF0B64C9B386DB6
- 4C987D9734CE59275575B706DB00A0FCF5753F2FE70E3E25970E3F2E174FE833
- FC1AE0B6B9C19E2FEC6DD3B986BC8E7385BE6D2ADC279E0D3A64B3FBC5ED6D01
- 10EE872B04861ADB9692BAA6169938BD5D26CE5A198C574865F5D4603B00C45F
- 7FEF49E9EEDC21178F6C978BC73705E3D3C1561BDCE1401F6EEC36FD77B8C11F
- 0E7F15EE61D880C3F5ECBE71FB70B305805B08E42B086C730B00F76BDD7F3E25
- F5D367487DC312193779898C9FB6582A6BE748AA727CF01900F84B57E3EBEF39
- 28974FEC912B679E93AEF3413B7E4C3F31CD06B71BE2769C2FE86D73FF79B7B9
- A16F9B0AF77068886168761FB9BDDB34B06D6F5B38D06DC8DB966F9BFBCFD836
- F8BF51D73259C635CE0B8A8199523B7E9AD435364B75D0A7AA26051F8F93CAAA
- 96A0D7AF0580C2D31BF506FA3B83C11519E8BB20BD974F48F7B9B3D213F4FD3D
- 47E5CAB9FDD27D5A17E3D1C0B5C1EC06B51BDE6EB0DBEDF9B685FF596DEEFF86
- DB54B8470E1A2E189EDD4FEEFEB2413B18D08363B7D9400F877C78BBFB79AE16
- FEDFB14DD95EB9630028243750DD90759B1BCEF95AAE70CF15F4EED8B6F0FF8E
- 6DCAF6CA1D2307C26274C281ABBD3B7603DA0D6D6DB9023EBC2DD7D7B8FF0EFB
- EF0E37657BE58E01A0107285ABF6B99A1BD6766C5B38D4879BDB7F87FBEFD65E
- D96D2ADC631804C58D0987AEF6E1B13637B46D888FB485FF995CFF4EE58E953B
- 06804272C3351CBEDAC2416D5B783E9296EBDFA94D85C76E8F11222C6E5CAED0
- D53E3C769B1BECB6B7CD9DE7FADAF0D836E58E01A0D8C201ECB65CE1EDF6E1B1
- 3B77FB7053E1B1E58E314284C6D8B9FBD00D64DBDBB18677B8B79FEB383C77FB
- A19A65C7EE360028A47CE13B54CB15EC3A0ECF55B8B79F6BB3F28D314A8445E1
- E40A63A5633BB7E35C736DB902DF6E533A56F63315EE01A0D86CF0BABD1DBBE1
- ED86BC6DB9B6A97C732BDF183788D0280E77BF86C7766EC7E1B9723FCBD554B8
- 57EE18008A215710BBFD504DE51AE7FA4CE51BA300088CE2CA17CE769CAB0F7F
- 5DAECFC2BD72C700504CB982D9ED738D55F8B35CBDCA374601111AA5335458DB
- 79B85723DD060051182AC087DAE67EA6727D2D8A8800894678BFE79B8FF4EB00
- 202A4305B9B2F3917E1D4A8400895EAE9FC148B6F1B303E08B9184F948B7A144
- 0811FFE4FB99F0B3021017F9829DC0F788BE7A1600804222E801000000000000
+ 0000904015A6F7817E2DDAB428D15615B454D06A4CAB4BB7A665F7CB8CE68782
+ 31F0DF162C5C24A994FEB8C44B5F7FBF1C3B7258BABBBBCD1600B17472FB4372
+ 6EEF23C148FFCFACEDBA693D41EB0B5ABF69374C8B1C050062EFCD6FF92DD9B0
+ E92E338B9FAECE4EF9F4A73E2E47834200404CC5B000E0120062AF6DC326338A
+ A731F5F572EF6B5E6B6600501A140088BDCACAF8FF18AF6E6E91544A4F740140
+ 695000001E68686890E52B57991900141F0500E089B85FCA00102F140088B5BA
+ 3ABD37B43CAC5ABDA6ACFE3E00FC460180581BDB30CE8CE2AF3A959296B60D66
+ 0600C5450180589B306182199587D6F5779A110014170500626DC2848966541E
+ EE58B65C1A274D323300281E0A00C4DAC4320CCB562E030028010A00C4DAD4A9
+ D3CCA87CF034008052A00040AC4D99567E05C0ACD97364C68C99660600C54101
+ 80589B397396199597F51B390B00A0B82800105B7AB3DCE4A626332B2F6D7752
+ 0000282E0A00C4D6BA96F566547EB4B059B4E476330380C2A300406C35977101
+ A0B81910403151002096F4F4FFA2C54BCCAC3CAD0D0A9CAAAA2A330380C2A200
+ 402CAD59DB6246E54B57085CB9BAD9CC00A0B02800104B6B9AD79951795BDB5A
+ DE97390044870200B1D3306E9C2CB963A99995B775EB5A592110405150002076
+ F455B99595C9F8D1D5150257AF4DC6D90E00A5450180D86949D88A791B37DD6D
+ 460050381400889524DCFD1FA6973BCA6DD54300D1A30040AC6CD89CBCA361BD
+ DCD1DA96ACB31E008A8F0200B152CE6FFF1BCC7A5E0A04A0C02800101BBA429E
+ AE94974473E7CD97A9D3A69B19008C1E05006223E92BE46DD87C971901C0E851
+ 0020365A1376F77F58D2FFFE000A8B0200B1306FFE029932759A992593FEFD17
+ 2C5C6C6600303A1400880556C6CBE06900008542018058D095F190791A801502
+ 0114020500BCB774F90A99D8D86866C9A62B042E5DB6C2CC00E0D65100C07B51
+ 9FF67EF2074F98911F92FE340480C2A00080D7F474F7EAE668D7FEFFFE77BF2D
+ 17DBDBCD2C7ABA14322B0402182D0A00786DE5EAE6F469EFA85CBB764D8E1E39
+ 2C7B9EDF69B644AFB6B6961502018C1A0500BCB6B635DA9BFF0E1F3A98EEF7EC
+ DE95EE7D71E786CD660400B7860200DE4AA56AD2A7BBA374F095FDE95E0B80FE
+ FEFEF4D807772C5B2E0DE3C69919008C1C0500BCB5B6B5357DBA3B4AFB5F7E29
+ DD77777707E37DE9B10F322B046E30330018390A0078CB8795FFF6EF1B08FD17
+ F63E6F467E68E1D5C000468102005ED2D3DBCB57AC32B3681C3B7A443A3BAF9A
+ 997FF7012C5ABC84150201DC320A007869CDDA16A94EA5CC2C1AFB5E7CC18C32
+ 0E1F3C20972F5D32333FB4F06A6000B7C8A7778A56849A1627FAF5D9569D6EF5
+ 5396CBB819F7046394B19FFFDFAF97A62953CD2C1AFFF9AD6FCAA99327CC2C63
+ F6DC79326BD66C338BDEE4C993E57BDFF9B6990143D37748CC98799B2C5E7CBB
+ 2C5BB15256AD6E960D9BEE4A17DD9BEFBE57EEBAE75ED9B8F96E59B172B59C3D
+ 73DABBA2D75B1DA71E97CEB37B8351AF697DA6E9DDC3379CE60D0D5A5FB8C16F
+ C35F0F016B4CD3379FD449D3B2FB6546F343C11865AA71D224F9C4C39F4DDFE8
+ 16A577FDCE6F655D02506D1B37C9AFFFE6DBCCCC0F9FFCC807E5D0C103660664
+ 5BB07091CC0FDAA220F067CF9933A255353B3A3AE48FDEF3CEF44DB018C2C9ED
+ 0FC9B9BD8F0423DD59DAAE9BD613345B08B8C540E42800E09DD7BCEE27E5FED7
+ FF8A994543AFFF7FF4830F9AD900BD37E1D39FFB8299F9E17BFFF59FF2D52F7F
+ C9CC926D7970D43A61C204338BC699E0A879FFBECCD32351D023FCD5CDEBD2FB
+ 62D5EA3532A6BEDE7CE4D6FCD9273F2A2F47F8F7890D0A8051A10040DA7B1EFC
+ 60FA06B728E9E9FF471FF92733CBF6E0873E2A73E7CD37B3E8E96B8A1F0C8ED2
+ FAFAF4774C72AD6B5D2F6F7DFB3BCC2C5A2FEEDD235FF8CBCF94F4C8F9F63B96
+ CAA6BBEF95752DAD05BD7FE6CF3FF5717929743F0C7288610110ED39562044EF
+ 6A8F3AFCD5608FFCED79DEAFA70174A5C425C12FFFA49B79DB2C338A9EBEA8E9
+ 577FED2D66563CFAB2AC7BEF7B9D7CE4930FCB1FBCEF8FA46DC3C6C86F9E457C
+ 5000C02B3EDCD5DEDBD393F5FC7F986F8F03AAB60DAC1078FEDC3933F283BEA7
+ 61EAB4E15F6F1F090DFED7BCEEA7E4130F7F467EE957DE28D3A6CF301F01868F
+ 02005E69F5E0E536FB5E7A417A7AF4CC5D6EFA7AE0AECE4E33F3C3DA96F5E950
+ 48B2F3E7CE9A913FF4E8BC9074754CBD435F83FFFED7BF41C6477CBF03E28D02
+ 00DE983D67AE17A77177EDDC6146B9E9B576DF2E03E82B93D7247C85C0739E9D
+ 01505A9815CAD2E52BE48F3FFC7179D36FBC95E047415000C01B51AFFC670DE7
+ 14BF8F97015A13FE52201F9F57D7FB3366CC986966B7461F8BFDCDB7FDAEBCF3
+ DDEFF7EA3E07C41F0500BCD17667F4D7B1F5C527674E9F32B3FC7C2C0056AE6E
+ 4EF40A817AD9C6B74B336AE192DBCD68E4EE7DCDEBE4C39F7898751F50141400
+ F0C2A2E097E4E4A626338BCEB6AD5BCC6870972E5D9483075E31333FE88B937C
+ 5840294AFAE21ADFE88B78464A8FFA1F78FF1FC92FBDE18D91AF8889F2450100
+ 2FF8125CBB766E37A3A18DE4734B657DC29F06686F3F6F46FE98357B8E190D8F
+ BECFE0431FFD1359723B8F76A2B828001039BDB3D987539C7A0D79246F70DBBD
+ C3BF0240DFA1A0478F49E5E31980DB8679DD5EFF7FF0FA5F7953FA6546A37D7B
+ 1F301C1400889CBEC4C687BB9A77EF1A59A01F3D72582E7878E7F986CD779B51
+ F25CF3F09DF5FA629EA1966D9E306162FA0D98F7DCF75AB305283E0A0044CE97
+ BBD7B73CF3B4190DDF8EEDCF99913F7C789742547C5DB96EEA200BF0E8E3AF0F
+ 7EE823327FC142B305280D0A00444A5F5ED3B27E839945E7DAB56B83BEFD2F1F
+ 1FEF03D047C534549268B017384529DF192E7DB65F8FFC273626F7B20DA24301
+ 80482D5FB9CA8BBB9CF548FE56C263DF8B2F7879DD59972D4E222DE47C94EB09
+ 9775AD6DF28E3F782F77F92332140088942FA7FFF7ECDE694623A36F05DCEDE1
+ 5980560FCEAA44A1E3CA1533F24B6D9D2E663AE0CE8D9BE52DBFFD3BE9473781
+ A8F0D387C8E8BAE56B9AA37F7D6D7F7FBFECDC76EBD7F2778CE29F2D167D039D
+ 9E5E861F1A1A065ED0D41684FFAFFDE66F13FE881C3F8188CCEAB5EBBC58BA54
+ 4FE38F66DD767D2BA08FA79E93FE6A609FD833007ADAFFCDBFF1D6F418881A05
+ 0022E3CB69EAD1DEC9AFF70EF87819406FAE4CDA0A813EBE0A58353434A4CFC8
+ 70DA1F3EE1271191D077D6EB0D803ED8B16DAB19DD3A1F9F06D09BCB7CD9C7A5
+ D2D979D58CFCA28F01BEEDF7DE45F8C32BFC3422126BD6B678F1CBF0D8D123D2
+ 7EE18299DD3ABD87A0B7A7C7CCFCB171F35D668428E9637EDCED0FDF50002012
+ 1B36F9114C85BA814FEF21D8F7D20B66E68FE52B56497DFD5833038001140028
+ 397D57BDBEB3DE078538FD6F3D37CC95044B496FB25CDB9AEC150201E4460180
+ 92F365E5BF8BEDEDE9F7F9174A218B89426A4BF80A810072A30040C9F9B258CD
+ 8EED850D6C7D09CDFE9747FE3AE1625B72FB1D895921D0D73701023EA2004049
+ E9AA68235D1FBD588AF1029F9D1E2E0EA4DA366C36A3F276C5D33701023EA200
+ 4049B578F2721A3D52D41700159A8F6F0554BC1408401805004A6AA32F77FF07
+ 47EAFA1EFF423B73FA949C387ECCCCFCA1675D6E9B35DBCC0080020025A44BD4
+ 4E19645DF452BAD5C57F8663B46F162C165FCEBE1493AEEB00607828005032BE
+ 2C51AB2FEC19CDE23F43F1F532C0C64D7EDC7C594CED17CE9B1180A15000A064
+ 7C79F7BFDEA93F9AC57F8672F8E081F42386BED11502172DB9DDCC00241D0500
+ 4A42834703C8075B9E7DDA8C8AA7D08F18160AAF0606605100A0247C7A194D31
+ AFFF5BBE5E0658DDDC92B8150201E4460180A2ABAAAA92B59EBCFD4F4FFF1762
+ F19FA1E823861D1D1D66E60F5D96B6DC5708E46540C0F05000A0E896DCB1341D
+ 3C3ED8F3FC2E332A2E7DC470A7A79701CAFDD5C0FA46460043A30040D1F9F2EA
+ 5FB5F599E25FFFB776EDD861467E59B57A8DD4D5D5991930381EAD2C5F140028
+ 2ABDDEBCA6799D9945EBF4C993E917F594CA8B7B9F4F3F72E89BF40A819E5C92
+ 81DF4E9D3A29870E1E3433949B0AD3FB40BF166D5A9468AB0A5A2A687AC79236
+ 3D64A993A665F7CB8CE687823162605DEB7A79EBDBDF6166D1FAD6371F93C7FE
+ E511332B8DDF7FE0BDB26C857FD7DC5FDCBB473EF3F027CDACBC7CE2E1CFCAE4
+ A626334B36BD0FE5F4C91372EEDCD9F4A3A97A79A4A3E38A7476764A57E755F3
+ 59D9B4681F3F61829C0FFE9903AFBC223D3DD7CD4730A893DB1F92737BF5178C
+ 3E63AC4D779C363D0AD0D78EEAA9146D374C8B1C05008AEAEDEF7897ACF6E40C
+ C0A73EF650F00B6DBF9995C6ABEEBD4F7EF98DBF6666FED0D3BA0FBEE79D25B9
+ 21B2D4925A009C3D733A1DD8870F1D08DA413971EC5810F4B9431E4510C30280
+ 4B00281ABDCEBCDC93A3DFAEE088477F2996DAAE9DDBCDC82F959595B28ECB00
+ B176FEDC39F9C1E3DF93BFFDEBBF92F7BEF377E58FDFF7807CF16F3E2FDFFDF6
+ 7FC8FE7D2F11FE181205008A46AF33EBF5661FE8DDFFC558FC67287A841D45E1
+ 311C3EDD9C89E13976F4887CFDD1FF271FF9C01FA6CFE0FCE3DF7F51B63CF394
+ 5CBA74D17C06307C1400281ABF5EFE539AC7FF72F17571205D2170C68C996606
+ 5FE991FEBF7FE331F9C0FBDF2D1FFDE083F26FDFF89A1C3F76D47C14B8751400
+ 288A8671E3D2CFFFFB22CA02A0980B0F8DD67A4F16684236BD47636750387EEE
+ CF1F4E1FE97FEDD1474AFA040B9281020045D1DAB6217D9DD9077A0A3ECA53A4
+ 7AB4A63768F9A8ED4E0A009FE863A3DFFBAFFF940FBCEF01F9FCE73E5392D756
+ 23B9280050142DEBFD597BBE546FFF1BCCB6AD5BCCC82F7AB73C2B0446CF06FF
+ 83EF79977CF5CB5F4A3FB607141B05000AAE71D22459B4788999456FF78EE8EF
+ C4F7F56900D5DAE64FB19634E1E0E7663E941205000ACEA7BBCB2F5FBA54F267
+ FF73D1C7B2F4452C3E6A59BF21BD60134A4B6F0EFDF007DE4FF0233214002838
+ 9F9E2FDFBDCB9F23EF6D5B9F3523BF246185409F6851FA577FF169F9C2E73E23
+ 674EFB796F089281020005A58F95E9E365BEF069419EE73C2D00544BDB063342
+ 31E972D41FFBD01F053F97FE5E1242725000A0A07C7AAC4CD7858FF2F1BFB083
+ AFEC4FBF9BDD47EBD6B5B2426091ED7BE945F9ECC37FC2E97E7883020005D5EA
+ D1DDFFBA1A9F4F0B99E89B089F7DEA4933F38BBEB171F55A3FD66C2857FB5EDC
+ CBC23AF00A05000A66DEFC053265EA34338B9E8FA7DC7DBE0CB07113AF060692
+ 84020005E3D3AB7FF54D6ABB3DBAFE6FF9FC3480BEB951DFE008201928005030
+ BAF88F2FF6BDF882B7ABA1F9FA3480BEB9F14E8F8A3800C54501808258BA7C85
+ 4C6C6C34B3E86D79F66933F20F4F0300F00105000AC2A7B7C9E9E9FF1DDBB69A
+ 997F7CBE0C307FC142993A6DBA99012867140018357D8BDCEAE616338B9E9EFE
+ EFB872C5CCFCB4DBE35703FB742F0780E2A100C0A8AD5CDD9C7E9B9C2F7C3EFD
+ 6FF97C19A06DC346330250CE2800306A6B5BFDB9F9CFF7D3FF969EA5E8EAEC34
+ 33BFE8A39C0B162E363300E58A0200A3924AD5C89A667F5E20F3E2DE3DDE9FFE
+ 57FA52A05DBBFC7B4CD1628540A0FC51006054D6B6B64A6D6DAD9945EFE9A77E
+ 6446FEDBB37BA719F967FD864DAC100894390A008C8A4F2BFFE9DAEA3BB73D67
+ 66FED31715E9250B1FE93D1DFA622000E5ABC2F43ED0AF459B1625DAF4F02315
+ B41AD374A5923A695A76BFCC687E28182362FAD6B84F7DFA73E9F7C8FB409759
+ DDF3BC3F8BFF0C87BE3CC9A73328AE679EFEB17CF1FF7CDECCE2E3130F7F5626
+ 373599993FBEF9D8A3F28DAF3D6A66283B27B73F24E7F63E128CBA4DD3851FB4
+ F504AD2F685AED6BBB615AE4280070CB36BFEA5EF9D537FF8699A1DCE86A8A0F
+ FCDEDB62B7800D05002211C302804B00B8653EADFC87C2D333137A8F0780F244
+ 01805BD2386912D78813A0753DAF0606CA1505006E89DEFCA78BC7A0BC2D5FB9
+ 8A15028132C56F70DC92668FEEFE47F16891D7CA02414059A200C088E962318B
+ 162F313394BB16EEF500CA12050046AC85B7C4258A167BAC1008941F0A008C18
+ 77FF270F451F507E28003022B3E7CC9599B7CD323324C59D2C110C941D0A008C
+ 884F2BFFA174A64D9F912EFE00940F0A008C48DB9D1C0926D5C6CD779B118072
+ 400180615BB4E4762F5FB18AD2D0750B582110281F140018369F56FE43E94D6C
+ 6CE4ED8F4019A100C0B0E8911FCF83A38D9B0181B241018061D123BFF1132698
+ 19924A2F03A452BA382780B8A300C0B0B4F21C3802BA42E0AA356BCC0C409C51
+ 0060487AC4D7C2AA7030B80C0094070A000C495784D3233F402D5FC10A814039
+ A000C09038FD0F57752A256BD6B6981980B8A200C0A0EAEAEA644DF33A330332
+ 366CBACB8C00C415050006B57AEDBAF4111FE0D215021B274D32330071440180
+ 41B572F31FF2D8C0AB818158A300405E7AA397DE0008E4C2B2D040BC5100202F
+ BDD1ABB2921F11E4A6CB42B34220105FFC76475EDCE885A1B4B6718908882B0A
+ 00E4A43778E98D5EC060782910105F1400C88995FF301CBA42E0ED772C333300
+ 714201809CB8C31BC3D5B671A3190188130A00DC64EAB4E9326BF61C330306B7
+ 761D2B0402714401809BB4F0EA5F8CC098FA7A1E17056288020037D9C8DDFF18
+ A18D9BF99901E286020059F4B9EE2953A79919303CBA42607DFD583303100714
+ 00C8D2B691C7BA3072BA5EC4DA569E1C01E28402005978F73F6E15AF0606E2A5
+ C2F43ED0AF459B1625DAAA82A6CBD0E9EDC5DAEAD2AD69D9FD32A3F9A1608C02
+ 5BB4E47679CF1F7EC0CCFCB173FB7372F4C861334BA631F563E5BED7FE8499F9
+ EBFD0FBC43DA2F5C30B3687CE2E1CFCAE4A62633F3C7371F7B54BEF1B547CD0C
+ 65E7E4F687E4DCDE478251B769D74DEB095A5FD0FA4DBB615AE42800F0DFDEF0
+ A65F97BBEF79B599F9E303EF7FB79C397DCACC92EB639FFAB4F7F767FCCB3F7F
+ 45BEFDEFFF6666D1A000402462580070090069555555B2D6C3B7FF1D3B7A84F0
+ 37B63CFBB419F98B570303F1410180B425772C9586860633F3C7735B9F35236C
+ DBE2FFBED01748DD366BB69901F0190500D27C7DF5EFCE6DCF9911F43E88B367
+ 4E9B99BF789114100F140048BFC6754DF33A33F38786DDF16347CD0CEAC74FFE
+ D08CFCB57113EB48007140010059B5668DD4D6D69A993FE270CDBBD4B63EE3FF
+ 3ED11502F58912007EA30080B7376EC5E19A77A9E90D917A63A4EFB81910F01F
+ 0540C2D5D5D5A55FE3EA9B8BEDED897FF63F9F38DC18A94F94E8932500FC4501
+ 9070FA8B5A5FE3EA9B6DDCFD9FD7533FFA8119F94B9F2859B9BAD9CC00F88802
+ 20E17C3D55CBE37FF9E99BF6F6BFBCCFCCFCD5CAD30080D7280012AC61DCB8F4
+ F3FFBEB97CE992ECDFF792992197ED312890F4C912BDC404C04F140009D6DAB6
+ 412A2BFDFB11D8BD6BBB19219F389C2149AF10E8E1DB250164500024588BA7AB
+ B76D89C1A36E51D3CB00FB5E7AD1CCFCC5D30080BF280012AA71D22459B47889
+ 99F9A3A3A343F6BDF882996130CF3CF5A419F94B2F31E9CF1A00FF50002494AF
+ AFFEDDBD73BBF4F5E9C25918CA8E6D5BA5BF5F1717F3975E625AC76500C04B14
+ 0009E5EB2FE51DBCFB7FD83AAE5C89C5D992F55C0600BC440190403366CC4CAF
+ DAE69B6BD7AEC99EDDBBCC0CC31187D725CF9D375FA64E9B6E66007C41019040
+ EB37FA7944B663FB73D2D373DDCC301C5B9F794A7A7B7ACCCC5F1B36DF654600
+ 7C41019040AD9EDEFDBF67F74E33C270757777CB9EE7FD3F6BE2EBCF1C906414
+ 0009336FFE029932759A99F9438F6259FBFFD6C4E19D00FA33C70A81805F2800
+ 12C6D7E7B2F528568F6631725A38C5E13200AF0606FC42019030BEBE998D77FF
+ DF3A2D9C9E7B6E8B99F9AB65FD065608043C420190204B97AF90898D8D66E60F
+ 7D969DBBFF4767DB16FF0B285D2170F94AFF969E06928A0220417C3D05ABCFB2
+ EB33EDB8755A40E96394BE6B69DB604600A2460190107AEA7575738B99F9250E
+ CFB2FB4E1F9FD4C7287DC70A81803F28001262E5EAE6F429581FEDDEC1EA7F85
+ F0EC8FFD5F1BA0B6B65656AF5D676600A2440190106B5BFDBCF96FFFCBFBE4D2
+ A58B6686D17861EFF3E9C5947C77E786CD6604204A140009904AD5A44FBDFA68
+ 3B77FF178C2EA2B473FB5633F3D71DCB964BC3B8716606202A140009B0B6B535
+ 7DEAD5473CFE57585B9EF1FF7E0A5D21F04E1608022247019000BEAEFC77F8D0
+ 4169BF70C1CC5008FA44C5E54B97CCCC5F3C0D00448F02A0CCE9A9D6E52BFC7C
+ F63A0E77ADC78D5E06D81A83A72AE62F58C80A8140C42800CADC9AB52D529D4A
+ 99995FB6C6E074751CC5E5B24A0BAF060622450150E67C5D85EDC4F16372E6F4
+ 29334321EDDFF7925C6C6F37337F6DDCC412C140942800CA58E3A449B2E48EA5
+ 66E6174EFF17D7B698AC10A8AB53028806054019D39BFFF48E6B1FC5E1DDF571
+ F6E31FFDC08CFCE6EBEA944012500094B1664FEFFE3F7BE6B41C3D72D8CC500C
+ BA7F753FFBAE65FD9DAC1008448402A04CE91DD68B162F3133BF6CDBEAFFD2B5
+ E5200E6B2C8C9F30C1DBCB5440B9A30028533EDF61BD6B27EFFE2F85B85C66D9
+ B0F96E3302504A140065CAD7BBFFF5EE74BD4B1DC5A797018E1D3D6266FED2D7
+ 54EBEBAA0194160540199A3D67AECCBC6D9699F9250E77A7979338BC13405F53
+ ADAFAB06505A140065485FFEE32B4EFF97565C5EB6E4EBEBAA81724601508626
+ 373599915F74A95A7D573D4A475FB61487CB00F3172C32A3D1EBEFEF3723BFC4
+ 618D06240B0540193A7FEE9C19F9437F29FFF357FE6FFA5DF528ADC71E7DC4DB
+ 50B4AE5DBB6646A3F7D4937EBE03E1C02BAF9811E0870AD3FB40BF166D5A9468
+ D38783F525F67A7790B6BA746B5A76BFCC687E2818230FBDA16AF3DDF7C8EC39
+ 73A4D28367AC3B3B3B65EB334F05BF00F79B2D28B5454B6E4FDF185A5BA7FF37
+ F24BC7952B4168FF508E1F3B6AB68C5EDBC64D72FBED4BBDF9F9DFBD73BBBCB0
+ E779B30565E9E4F687E4DCDE478251B769D74DEB099A1EF96815AEED866991A3
+ 00000060B4625800700900008004A200000020812800000048200A0000001288
+ 0200008004A200000020812800000048200A00000012880200008004A2000000
+ 20812800000048200A00000012880200008004A200000020812800000048200A
+ 00000012880200008004A200000020812800000048200A000000128802000080
+ 04A200000020812800000048200A00000012880200008004A200000020812800
+ 000048200A00000012880200008004A200000020812800000048200A00000012
+ 880200008004A200000020812800000048200A00000012880200008004A20000
+ 0020812800000048200A00000012880200008004A20000002081280000004820
+ 0A00000012880200008004A200000020812800000048A01816007D17CD000000
+ 4FC42F9B625800F4779A0100009E885F36C5A900B8617A00007C159BAC8A4301
+ 90BD337BBBCF981100007EB8399BBC2F047C2F00C23BF086F45CE3120000C02F
+ 996CBA39B33C16974B00BA13333BF2EA99F3E91E00005F0C64D3405E792E6E97
+ 00323BB6AFFF6C660A0040C46EF49CD43F4DB3BC2F027C2E006E0EFE8CA0EFE5
+ 3E0000801F7AFB35939C8CFAEFB172C75EF1B10070775EAEF10DE9E93A9ADE02
+ 0040D4FABADD3300E1CC52EED81B71BA07C0F637E4CAF1639929000011CB6492
+ 1BF2DE857D2EBE5F02C8DD7ABB0F053D0000D1EBE97A25F833775E659A97E272
+ 136076BBDEB53FE80100885E4FF7C1E0CF9BB3CA73BE160076C7B9BDB6FE74DF
+ 794CCF005C0F1A000051BA6E326920A3324D857BAFF85400D89DE6EEB0DCF3DE
+ DE1EE9BD7E20BD150080A868166926B9199531D43C7271BC0490A9B0AE9EDC19
+ F400004427934503D994DDBC16979B00ED8ED53ED33ACFEF0E7A0000A293C9A2
+ 816CCACE2CDBBCE4FB3D00CA8EDD1D1A140067B7E94600002293C9A2EC7CCAB0
+ D9A5DCB1377CBF04E0EE50771C1400E7CE4A7FEF91600C0040E969066916D95C
+ CA9D59DEF2B100B03BCDEE38776E7772A6759C7836E8010028BD4C0665E75276
+ 66A9F0DC1BBE1500E11DE4EEC0F04EEE97ABA79F0C7A00004A2F934137675376
+ 76B9C2F348C5E51240B8E90EEE938B47B64ADF8DAE600C0040E968F668066916
+ 0D847EAEE62D9F0B00BBE3EC4E74ABAB4CEBEDEE96EEF33F0CC60000948E668F
+ 6650AE6CCA0E7FDB7B270E67006C6F9BBB93FBE4D2C1EF063D0000A593C91E7B
+ F46F9B9B55CAF65E8AF34D80991D7FE9C8535C060000948C668E668F9B4503CD
+ CD2C159E7B234EF700B83BD8B63EE9EDEE92EED3DF09C60000149F668E66CFCD
+ E16F9B9B5DDEF2BD00B0DC9DA93B5777FA406B3FF0F5A00700A0F83299939D43
+ 310A7ECBF79B00C3CDADB0060A81F683BBA5AF4797630400A078346B3473B283
+ DF6DB9B2CB4BBE1600E11D6677A2BB93EDCED7D62BE7F7FD6BD00300503C99AC
+ E90D9A9B416E36E50AFDF0DC0B71B80460779CDDA9DADC9D9DF9065C7CF9DF82
+ 0F75046300008A20C89874D60C1AFCDA94EDBD15A79B006DCB0E7EDBAE5DBD22
+ 170F3E168C0100283CCD18CD9A70FEE42E026CF396EFF70058EECEB4E1EF1601
+ 7A3AA6574EBFF04F417F3D68000014D275933199BCC90E7FDBBB5965B963AFC4
+ E112806577AADDC96E019069D72F9E91CB47380B0000282CCD16CD9870EE6467
+ 92CDA95888CB3D007687DAB10D7FB708C8546527777F29E8390B00002894EB26
+ 5B8673F4AFDCB1B7E2700F806577A836DDD9E1F0CFF4D72F9E964B471E0DC600
+ 008C9E668A668B9B3503F963F3C8CD28CB1D7B272E9700DC1D6B5BFE22E0F4CE
+ BF0B3E8527020000A31464493A53861DFEB679AFCAF4BEAB304DB9BD6D5AC8D8
+ BE52FAAEF54A454D8F8C6DBA33980300706BCEBCF479B974684B30D24BCB3DA6
+ D722C0365B088483DFFB22202E67002CBB836DCB751620D3CEEF7C54FA7B8E04
+ 630000464E3344B3C4CD96A18FFE63236E9700941D87C33FBB00E8EDED96E3CF
+ FE5930060060E43443344BDC6CC9CE9C7011A0DCB1D7E2760640D99D6B5BFE22
+ E0E2A1ADD271E63F82310000C3A7D9A119E2664A76D6B8C16F5BACC4A9007077
+ B01DDBEACB1601F61BA4D76932DFB013CFFC85F4F59D0DC600000C4D3343B363
+ 20F83553DC8C71B3275736C5425C6E02B4EC4D7FCA8EF3352D6E2AA4EF5A8FF4
+ F79E9271335F13CC010018DCA9ED1F932BC75F0846EE8D7F030796D94540AC42
+ DF15B702C0D280CFD7875BA5749D3B2E63264D91DAF1B70773000072BB7CECEB
+ 72F2B92F07231BFC36FCDD0220F647FF2A8EF7005876676BB3DF0CADCA6CB3DF
+ A8CC37EED496BF92BEEE43C11800809B69466856DC1CF86EB684C35F5B2CC5F5
+ 0C80D2A37BDBDBB1B273B7554A5F4F9F74B73F2F1367FCA448AA3AD8060080D1
+ D52D477EFC6EE96C3F114C34FC073BFA0F877F2C0B81B85F0250769CABD766CF
+ 7254CAF58E4B5259735EC64EBDCB6C030040E4EC4B7F2A175E793A1869E85F0B
+ 9A0D7EDBEC19000D7ACE0044CC06BCCBDD66C7DA068A808ED30765CC8406A99D
+ B8DC6C030024D9E5C3FF2CC7B7FC633072C33F7CF46F4FFDBBE16FC5B2082887
+ 4B00963B77C35FB9F30AE938BE531A6E5B2EA931B7E907010009D5D5BE458E3C
+ FE49B971435FF8E39EF6D73E7C0F40F8C83F96C16FC5B90050E190CFD767B71B
+ C1F7ECEAF1A764E2FCCD52593D31D80600489A9EEE57E4F077DE233DD775F138
+ 1BFEB600B047FEF94EFD5BB12D02E25E005836ECC3DCEDB6005015D2D7D32B1D
+ 279E94B173EE91EAEA06B31D009004D7BA4FCB91EFFCBE74779C0F666EF0DB3E
+ 7CE41F0EFF7021103BE5500084C3DF0D7A3510FAE1BEF75AB7749DD92AF5B705
+ 45406A8CD90E002867DD5DED72FC893F90AEF6A3C12C1CFE1AFC3A76C3DF86BD
+ DB62AF1CCF00E41BBB068A809EAECBD27DFA59A99F45110000E52E1DFE8FBF53
+ 3A2FBC12CCC2E1AFBD7BF46F8FFCC345808A7D11502E0580D250D7A6DF143B0E
+ 0B6FCBCC290200A0FCE50E7FB708D0E00F9FFAB7A1AF632BF6E1AFCAAD00707B
+ 57AEE077B771260000CA59FEF0B747FDF98EFC6D11A0CA22F8AD722A0054AEF0
+ 1FAE8122A061768B54554F30DB01007176BDFBA81C7FE28120FC0FEA2C68FAAC
+ 7FB808C875F46FC3DF3655364540B915006AA8A37DD7CD9FAB4540E7891F49C3
+ F45552553BC56C0700C4D1F5CB2FC891EFBF573ADB8FEB2C686EF8E73BFA7743
+ DF3665FBB2508E05807243FFE690CFB0DFC8F0C7831F836B5D72E5D813523B75
+ BED4D6CF365B010071D279FA8772F8071F906B598FFAB9E16FFB7CA7FDDDC02F
+ ABF057E55A00581AEEFA4DBB39E433F21701FA9E808BFB9F909A719532A671B5
+ D90A008883F683FF20879FF84CF0BBBC33980D15FEB94EFB6BAF745C76E1AFCA
+ BD0050C32D02ACECF9E5A3BBA4B77BBFA41ADB2495AA315B01003EEAEABC2A67
+ B67F444EEF7C2C980D16FC890E7F95843300B6D76FE2708B002BB3BDEBC231E9
+ 3CF503193F73B954D534A5B70100FCD2D3F1A21C79FC3D72E5C4EE60160E7D37
+ F8871BFE652D2967006C9FAF08B0DF68F7E33A1EF801E8EDEE90F6FDFF25A9B1
+ D5523766B94875BE6202005052DDFD72F1E857E4F0F73F213D5D7ABDDF0D7D37
+ F8756CEFF6D7A01F2AFC0732A00C25A10050C32902ACF0375CE7996D376EF4CB
+ E5A33BA4FBCA36193B739554558D4F6F070044431FF13BF6CC07E4EC9E7F0F7E
+ 47DB3BFC6D6F83DF36F7513F1BFC890C7F959402400DB708D08FB9DF78F78721
+ D3AE5D3E2BEDAFFC87A4C65472360000A2608FFA9FF8B87467BDD3DF06BF3BB6
+ E11F3EE59FD8F057492A00D4708A804CC80F3415DE76436EF4F5A6CF06745DF8
+ A18C993447AAEB6604DB0100C576EDE27639F6F41FCBD917BF13FC2E76D7F177
+ 9B0D7E37FCDDE04F74F8AB241EB9BA4580AA0C9A8EB5E9589B1646B655072DE5
+ F4B6B9F36A99B2F45E99BAF22D5299A210008062E8EF39296776FFAD9C7DE1FB
+ C14C43DD0DF870E0DBDE1EF5BB05803D984B6CF8AB2416002A5C04840B807021
+ A0616FDBCDE16FFBAAAABAA008F8196958F0CB5237A631D80600182D7D8F7FC7
+ 812F07E1FF75E94B1FF1BB019F2BF46D0B077FB80050890C7F95D402C0B2C1AF
+ DC22C0F66E11E0160236F8DDF1C0B6AA9A7A99BA222804E6FD22850000DCA274
+ F01FFAAA9C793E08FEEBFA421F1BECE1C0CF17FCE1A3FE5CE19FB8E0B76CF825
+ 59B800B0CD16003A768B00B710C80EFE70ABAAAA95A665AF93494B7E4EAAEB16
+ 04DB000043E9ED3E2017F6FDAB9CDBFBEDE0885FEFE877C3DDB670E86B73835F
+ 9B0D7D37F8DDD0B77D2269B861603FD8DE06BF365B08D8162E02062B08063ED6
+ B8B059262FFC59A9686893BA31FA390000ABBBAB476E743C23E75F794CDA5FD9
+ 1E6C09877BBEA6416F7B6D36F0C3C1AF6345F81B140003C245805B00D8DE2D02
+ B477433E5C0884B765C635132649E3FCD7C8F885AF96BABAC5C1360048AEEEEE
+ 97E5F22BDF93F683DF91EB972E045BDC500F877C78EEF6B982DFF6E1D04F7CF8
+ 2B1B76C870C3DFF66E738B005B08849B1BFCB60F6FCBB471D3664BC3EC7B64E2
+ DC36A9AEBB23D80600E5AFB7FB45B978F819E938FAB85C39ADCFF06B80DBE606
+ 7BBEB0B74DE71AF23ACE15FAB6A9709F7836E890CDEE17B7B70540B81FAA1018
+ 6C6C5BA5D43536C9B8E9AD326ED66AA9695C25A9D4D4603B00C45F4FCF19B9DE
+ BE4BAE1CDB29574E6D91EEF673C1561BDCE1401F6AEC36FD77B8C11F0E7F15EE
+ 61D880C3CDECBE71FB70B305805B08E42B086C730B00F773DD7FBE52EAA7CF90
+ FAF14B654CD352A99FB624F8519F2B63EAC7061F03007FE96A7C5572583A4FEF
+ 93AE732F48E7E5A09D3A197CC406B40D6E37C4ED385FD0DBE6FEF36E7343DF36
+ 15EEE1D010C3E0EC3E727BB76960DBDEB670A0DB90B72DDF36F79FB16DE0BF51
+ D73459C64C9C2F95B533A56EEC34A99B3049520DD3A4B27ABCF4578C91545F93
+ 489D7E2E00149EDEA85755DD2E9537BAA4BFF7B2F4749C96EE4B17A4FBEA69E9
+ BF7642BA2E1E94EE73BA188F06AE0D6637A8DDF07683DD6ECFB72DFCCF6A73FF
+ 1B6E53E11E3968B86068763FB9FBCB06ED40400F8CDD66033D1CF2E1EDEEC773
+ B5F07FC736657BE58E01A090DC407543D66D6E38E76BB9C23D57D0BB63DBC2FF
+ 1DDB94ED953B460E84C5C88403577B77EC06B41BDADA72057C785BAECF71FF1D
+ F6DF1D6ECAF6CA1D034021E40A57ED733537ACEDD8B670A80F35B7FF0EF7DFAD
+ BDB2DB54B8C710088A5B130E5DEDC3636D6E68DB101F6E0BFF33B9FE9DCA1D2B
+ 770C0085E4866B387CB58583DAB6F07C382DD7BF539B0A8FDD1EC34458DCBA5C
+ A1AB7D78EC3637D86D6F9B3BCFF5B9E1B16DCA1D0340B18503D86DB9C2DBEDC3
+ 6377EEF6E1A6C263CB1D6398088DD173F7A11BC8B6B7630DEF706F3FAEE3F0DC
+ ED076B961DBBDB00A090F285EF602D57B0EB383C57E1DE7E5C9B956F8C11222C
+ 0A2757182B1DDBB91DE79A6BCB15F8769BD2B1B21F53E11E008ACD06AFDBDBB1
+ 1BDE6EC8DB966B9BCA37B7F28D718B088DE270F76B786CE7761C9E2BF763B99A
+ 0AF7CA1D034031E40A62B71FACA95CE35C1F53F9C6280002A3B8F285B31DE7EA
+ C39F97EB63E15EB9630028A65CC1ECF6B9C62AFCB15CBDCA374601111AA53358
+ 58DB79B857C3DD060051182CC007DBE67E4CE5FA5C141101128DF07ECF371FEE
+ E7014054060B7265E7C3FD3C94080112BD5CDF83E16CE37B07C017C309F3E16E
+ 43891022FEC9F73DE17B05202EF2053B81EF117DF52C00008544D00300000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
- 00000000000000888EC8FF07E56367B80631B8280000000049454E44AE426082}
+ 000000000000000000101D91FF0FE47B6F59FFDB0BC70000000049454E44AE42
+ 6082}
FileName =
'C:\YandexDisk\Development\Delphi\AErender Launcher\icons\png\ps\' +
'icon_512.png'
@@ -852,11 +853,11 @@ object AboutForm: TAboutForm
PNG = {
89504E470D0A1A0A0000000D49484452000004000000040008060000007F1D2B
83000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 738C49444154785EEDFD0BB465D75918E8AE7AA9ACB2F5AC12B664A9846D9025
- 1BA82A6130A592743BA914527A241D028671E9011DB866E09BD1971E18C2E036
- A69BE4764C9A3834DC6664D070318F847B1983102021B8FD883B69CB42066CA9
- 6483F5F053926DD95649D65B964A5575F77FF69E3EF3CC33D77E9CB3CF3E7BEF
- F57D63FC99FF9C6B1F39A95ABB72FE7FCDB55603000000000000000000000000
+ 73A949444154785EEDFD0BB465D75918E8AE7AA954A5A755256CBDC10659328F
+ AA1206BB54926E2795424A8FA443C0309A1ED0816B06DC8CBEF4C01006B771BA
+ 496EC7A48943C36D46060D17F348B8CD1884100881183B1E21966599604B2503
+ B2243FF5B0655B25590FEB592AD5DDFFD97BFACC33CF5CFB71CE3EFBECBDD7F7
+ 8D3199FF9C6B9F129C33D7E1FCFF9A6BAD060000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -866,908 +867,909 @@ object AboutForm: TAboutForm
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000000000000000000080CE
+ D831E881D970CE0100AC7576D0035B4C3202D3E59C0200982E05029812C90A6C
+ CC66CE1DE71D0040DF66927B850198904404469BF43C715E01004CC7A449BEA2
+ 000C215181F5C63D2F367AFE38EF0000FA369AB08FFB750A02909188C078E7C1
+ 24E7CAA8CF3AEF0000FA4625E89324F0E37C5641804E9388D045D34AF8DB3E33
+ AD7F1F0060996D26619F56B2AF2040A74842E88A516B7D23C7877DCDA49F6FB3
+ 91AF0100D84E1B49AA6B5F33ECDF99F4F361B3C761E1492E58669326E8B9F278
+ DBE737FAB9D0F6590080653749025FCE6FF673C9B0E3A3BE161692048465336C
+ 4D4F72ACF6D97C6EB3C793DA1C00C032AB25D7A3E6367B3CD43E936CF4182C14
+ C907CB60D83A1EF758ED73696E9263F978D8D785DAF1716CF4EB0000A66DA3C9
+ 71FE75B57F63D8F1341EF675C38E85DAF164A3C760EE492458646DEB77DCF9B6
+ F166E6DBE230EC586ED831008045326E325D7EAEED588ADB3E3FE97C528E9349
+ E761AE493458346D6B769CF9F233693CCEFC34E6421E27E3CE01002C925A923C
+ 6AAE164F6B2E8C9A0FE5B164D279983B920C1645DB5A1D355F1EAFCD8F3337AA
+ 0FE37C26D4BEA666D831008079362C291E966CA7715B1F467DA6ECC3B873A16D
+ 3E99741EE686048379D6B63EC799AFC5C3E66A7D8A433E1ED58788CB71DE27A3
+ C600008BAE2DC14ED2389F8FB81C8FEA531CF2F1A83E0C9B0B799C9B741EB695
+ 648379D4B62E6BF3F95C2D2EE7DAC6B5BE2D2EFB61C7F23ED4E69272AEF61900
+ 80455026C0B58438CDE5C7CAB95A3FEEB1DAF1D4A738D4C6791FDAE2A43617DA
+ E6615B483098276DEB7158B25C1E8B713E376C3CCDB8ECDB8E35CDE547AE6ACE
+ 3970D54ABCF7FCA32BFD8E1D1736BBF6BEE12BFF3F62E7E95EBCEFC2FE000060
+ D13CFF74F3CA9E7BFB71EFCFA0332FDEDB9C3DFBF4CAF0C52FDFB9D2BFF4F8C3
+ CDE7EE7E7825EE4BC972DED7E6523FED388C1A87342EE7436D2EB4CDC34CAD26
+ 25B07D6AEB70D45C2D1ED68F1BD7E6427EAC9C0B6BE3CB8F5CB992E44782BF92
+ DC9FF386E6CCD92B9B3D7BAE1C7C06008070FAF423CDAE1D8F34675EEA1709A2
+ 40D02F0E3CD23B9A27DBC3E2DA5CC88F957361583CAC0F6D7132EE1CCC4C4A58
+ 603BD4D6DFB0B9F2588CF3B97C3C2A9EDEDC57FF8DA3CDDEF3DED0ECD8FDF5CD
+ AEDD57363B77BF79700C0080CD78E5E50F35675E7EA439FBF25F352F3E7B6FF3
+ 99FF18BB0752121D7DDEC234E6425B1CCA71C83F5B1A770EB65C4A6260966AEB
+ 6ED85C7EAC9C8BBE6DAE364E733B077D792CB5B07EFEF2C35735E75FF9E666E7
+ 9EAF6F76EF7D73B363D71B7AF30000CCCAD933F7362FBFF8A1E695D37FD57CF9
+ 910F359F3B19B71144425DB6509B8F165E19F4B563B571EA6B73496D2E19770E
+ B64C4A7460166AEB6DD85C7EAC9C8B7E585CB6302AE95FDF22E13FEF8AA3CDEE
+ FDDFD69CDDF1065BF80100E64CDC42B0E3ECBDCDCBCFBDA779F6B3770E2908B4
+ B5D0560C482D0C8BF33ED4E69271E760EA22C9815928D75A6DEDA5B9FC58C4B5
+ 719A2BC7E326F9E97379BFA379D56B2F6A2E79FDD1664F2FE16F76BD59C20F00
+ B060A220D09CF95073FAB9F7344FDC7F67F3A54F3DD59B8D043B25F9791FF3C3
+ 5AA8150742390EB571DEE7CAB9DA6760AA221182AD545B63E55C1AE7F31197F3
+ 69AE361EA7AD4DF6538BABFC175C736BB3F39C3737BBCFE925FE00002C8D975F
+ 7A4FF3CA4B1F6A9E79F04F2ABB03262906942DD4C6A94F71288F27E538D4E660
+ 2A220182AD505B5BE55C1AE7F311E7F3B53825F2692EB5B589FDDA5649FAAFBE
+ ADD9B3FF3BDDC70F00D011F1FC80D3CFFD9BE69987DEDD520CC8C779AB1D0BE5
+ EE80D016877C3E578E436D0E3625922198A6DA9A2AE7D2389F8F389F2FE37C6E
+ FC443F9F8BEDFD07AFBBADD97BE10F48FA01003A2E8A012F3EFDEBCDA9FBDE5D
+ DC26107DDE46150642391FDAE290CFE7CA71A8CDC186447204D352AEA7DAFA4A
+ 4979928F6BF1A85626FCEBC7AFFB9BB7367B2FF8AE66D79E13BD310000AC75E6
+ F47B9B179FF9D7CD27FFC39FF44665C23F6A3CAC85B63894E3A49CAB7D062616
+ 09126C566D1D9573695CEB530BF9B8AD0D4BFAFBF16587AE6E2E7AEDFFBD69F6
+ 7C9B07F9010030969507089E7E4FF3D4A77EAD79F49E877A339178E709FF468B
+ 01A136AEF549390EB539185B244CB019E51A6A1B0FEBC769EB93FC5AFCBA6FBB
+ ADD97BF15B5CED070060535676053CF9BBCD27DFF3EEDEA8AD0830AC3830AC85
+ 517D326A0C638BA40936A2B676CAB9949827F938C5A35A2DD95FDB5FFC351737
+ AFFEC6EF6A769CFB03AEF603003055B12BE0EC0BBFDE7CE12FFE75F3E4A79FEC
+ CD44029E92FDB22FE3512DE47128C7A11C87DA1C0C1549144CAA5C376DE3BC2F
+ E37C2E4FF2531B95F8EF6C2E3B745573D16BBFABD9B3E3079A66DF85BD390000
+ D822CF3FDD9C3EFBEBCDE74FBEAB79F2D3F1D0C048F4272D04C45C28E74319E7
+ 7D326A0C43453205E3AAAD977C2EC5B53EB5908FA3D592FD3C5E9FF85FFC756F
+ 6B76EFFDCEDE18000066EBE517FF4DF3E4C77FBE79F49E78956024F56501204F
+ FEDBE2D4426D5CEB431E27B5395827922A1847B956DAC6795FC66DAD96E8977D
+ 2FF1FFA6AB9B8BAFFD51893F00007361A510F0C02F348F7E341E1818C97D5900
+ 68EB87B550C6799F8C1AC33A915CC128E53AC9C729AEF5A35A4AF0532CF10700
+ 60F18C5708C893FF3C1ED6425B1FF23894635823922C6853AE8FB671DE97716A
+ 79B29F8FEB497FB478B8DF6B8EFC68B367DF0FF4C6000030DF4E3FFFEBCDE7EF
+ FE85C1C30253D29F92FDB63EB5721C2D9471DE27A3C6B022122EA829D7466D9C
+ E6F2BEADA5043F8FD727FD315E49FC0FBFD5C3FD0000583C6B1E1698BF3520B5
+ 34CEFB32AEB590F7294E468D6125F98252B92EF2718AF3BE8C534B097E2D5E4D
+ F8F3F1D7FDD7DFD5ECB9E8479B5D3BAFE88D010060319D79E5B3CDE9A77EA1F9
+ F81FFFEBDE2825FF79E29F8FD35C2D4E2D9471487DC8E3508EE9B848BE20A9AD
+ 877C2EC5793FACA5043FC565C2BF1A5F71E33734175FF1BF343BCF79536F0C00
+ 00CBE19597FEAC79F2B3FFEFE6B31FFCCB180D5A24E66D711AA7B8AD85B20F79
+ 9CD4E6E8A048C020946BA1364E73B538B594D8E7F1DA643F6FEEF30700A00BDA
+ 9F0F905A24E9655FC6A985B6381935A683222983721DE4E314E77DDE424AF0A3
+ 95716AE57867F3BA6FBBB5D97FFE3BDDE70F0040373CFF74F3DC977FA2F9E47B
+ FEA43748897F6A91A097E33497C7218D530B651FF23894633A269232BAAD5C03
+ F938C579DFD6F224BFECD7B678ADDF25AFFFE7B6FB0300D049715BC013F7FF83
+ E2B581798B44BDAD6F6BA1EC431E87724C87EC1AF4745324E8B97C1C71DE5242
+ 5F9B2F5BACABD4E76D7773EDDFFEC1E6C24BFF8F66C7B9AFEB8D0100A07B76EC
+ BAB2D97FE15B9A8BBFF6E5E6F107EE49B3590BA90FB5B95CEDB3C9A8311DE287
+ DF5DA37E49A4B93C8EA43EF5693EC5D197F16ABBEC1BAF692EB9EE9DAEFA0300
+ 40666537C07D3FD13CFA170FC6A8D2E28A7D19479FE290FA341FF238C9C7E531
+ 3A20AECAD22D29714FCA383F9E8FF3E43EF5A9C53ACAE3BCED6EBEEEBFFEEEE6
+ C257FF9FAEFA030040A1BF1BE03B9B8BBEE689E6898FDF9766B396D4E2B2CFD5
+ 8E9571EDEB58627EE0DD52FEBCCB5F00655F6B91E4977DBDC513FE2FFF967FDE
+ ECDA73A237060000863973FABDCDE7FEFC1F0C7953406A71F5BEEC6B2D947DC8
+ E3508E595291C0D10DE5CF3A1FA738FAD4428A23A12FE394E8A738DF05B0B3B9
+ E6AFDDD89CF79A7736BB765ED11B0300006379FEE9E6E92FFD3F9A07FFD3077B
+ 833CE93F33E823594F73298EBE8C438AF37192C7A11CB384226963F945929ECB
+ C711972DE4C97D9A5F4DF0575BBEDDBFDFAEFB3B3FD6EC3FF0CF9A9D3BBCDE0F
+ 000026B2676FB3F782EF6C2E79EDCEE6D4FD7FD69BC8FF464F7DD2368E3E12FA
+ FCF8B85FCB12F3435E7EC34EEC88D338C5B516897EEADBDBC55FFDAAE68A6FF9
+ 650FFA030080298807047EF6CF7FB879F2335F8AD18816097FEADB5AC8E390C7
+ A11CB34422A96379953FDF7C1C711AA7B86C91D8977DD9E2AAFFCEE6EAA3DFD0
+ 5C74D9FFD534FB5CF5070080A979FEE9E6A947FFBBE6A13BFFB23788043FDD0A
+ 50B648DCCBBED6421E873C0EE5982511C91BCB2912F65C3E8E388D535CB648EE
+ 539F12FDB2ED5EE9E329FFE75FFEEB2BDB9500008029EAFD8D7DEEABFEBBE6A2
+ AB3ED73CF1F18FF526E26FF490FFED9EE692725C1AF5F9515FCF828A248EE533
+ EC048E388D535CB694F4D7DADA22C0F56FF9B9E69CF3FFC75E0C00006C95DDFB
+ 4E34075E7F7573EADEFF3898497FBBD7B4CDE7CACF8C1AB304FC5097CFB01337
+ E2344E71DE22C14F7D1E47B29FE6FAE38BBFFAE2E6CA37FF76B363D7F5BD3100
+ 00300B67CF7CAC79E443DFD33CF999785560793BC0386F0AC85BC8E390C7A11C
+ B3C0EC00582E91B0E7F271C4699CE2D452629FC7FD447F6DF2DF1FC7FDFE07BE
+ F1B79B9DBB5EDB1B030000B3B263E7A5CDF957FEED66DF05FFA579EA915331D3
+ 3FB022FD7D5F6A9B0FE5FCA8310B4C0160790C3B51234EE314A716897D1ED75A
+ 2A04F493FF78D8DFCE732EED8D010080598BD76D9F7BEEDF6ACEBDF8F6411120
+ C4DFF3A3B47DA69C1F35664129002C87612768C4699CE2D422B94F7D5B5B4DFE
+ BFF66F7AD81F0000CC85C1C3012FBCF2D1E6894FE40F076C938EB77DAE9C1F35
+ 660129002CBE612766C4699CE2D422B92FFBBCAD26FE318EE47FDF253FDB8B01
+ 008079B167DF894111E0DEDE28FEAE0FA92F8D7B3C193566C128002CB6612764
+ C4699CE2D4F2A43FF579CB93FFFE93FEF75EE049FF0000308FA208B0FE0D016D
+ D2B1B6CF94F3A3C62C100580C535EC448C388D539C5A9EF4A7BE96F8F7C7D7BF
+ E59F37BBF77E472F060000E6D5CEDDD737075E7F55A50890FADCB063A19C1F35
+ 664128002CAEFCA42BE3344E716A79D29FFAD45693FED44BFE01006071CCB608
+ C0025200584CF9C957C6699CE2D422A92FFBD424FF0000B00C66570468FB1AE6
+ 9802C0E2693BE9224EE314A716497DD9A79627FFD1764BFE01006081AD1601DE
+ 379849221728A5B9DAB150CEE7E3B6AF614E29002C96B6932DE2344E716A79D2
+ 9FFAD4CAE43FAEFCBF53F20F00000B6EFD4E80247282529AAB1D0BE57C3E6EFB
+ 1AE69002C0E2683BC9224EE314A79627FDA94F4DF20F0000CB4C11808202C062
+ 683BD9F2BED66A897F4AFA532FF907008065355911601C6D5FB7D17F8F195200
+ 580CF9C994E2BCAFB548F0539F37C93F000074C9E44580B6F9241D1FF539E68C
+ 02C0FCCB4FAA32CE5B88C43E8DF3A43F6F29F18F787773EDB7FF6873CEBEEFEF
+ C50000C0B28A22C0C5AFDBD93C7EDF7FE98DCEF65ACA21C631ECF3F9FC24FF26
+ DB400160BEB59D4C11A77124F2A94FF329D92F5B9EFCEF6ABEF66F7E5773EE45
+ 6FEFC50000C0B2DB7DCE9B9A0BAFFC5CF3C4273E3698C9738C61E273A908502B
+ 06E4E371FF4DB68102C0FC6A3B89224EE31447429FC7B5B63EF9DF77C9CFF662
+ 0000A02BF6EC3BB1C92240527E5D3E1EF7DF64C61400E653DBC9147D19A79612
+ FD3C4E097F8AFBEDF2377F4373E16BFE3FBDE9BDBD310000D0257BCE7973B3FB
+ FC0F34CF3C726A3053AA25FAF95C928ED50C3BC6365100984FF9C992E2BC2F5B
+ 99F8E7497FEAFBED35DF707573F0DADFED8517F4C6000040E7ECDCDBECBFE86F
+ F532853F6EBEFCC5670693A344BED1261D1BF619E68002C0FCC94F9A32AEB548
+ F0535FB6B505808BAE795573D937FF5AB363D715BD310000D0595104B8F44DCD
+ 8BCFFC71F3E2532F0E264789BC6394FC33E37C9E198AE490F9D176B2449CC679
+ DFD6D627FFD1AEF8967FD64BFEAFEFC5000040D7456E1039429E33ACCD256AB9
+ 466A21EF531CDA62B659FC60991FB51325FA32CE4FC688CB969FBCBB57FA6BFF
+ CEDB9A3DFBFFDB5E0C0000D0B773F76B9B8B5FBBB379FCFE3FEB8D22BFA8DDEB
+ 5F537E36C6CC390580F9919F3029CEFBB295497FDE5201A0DFBEE6F8ADCDFE4B
+ FE712F060000586BF739DFDA9CF755F7374F7EFA53839971B4150A2257C9FB90
+ C76C230580F9D07672445C6B91E4A73E4FFAF3E43FE2DDCD556FFA86E6C22B7E
+ A937F4C47F0000A0EE9C7DB7347BCFFB40F3F467E3CD0091DC47BE912B13FEF2
+ 784DFE99713ECF165300980FE964284F90348E643EF531177DD9CA02C0AEE6A2
+ AB5FD51CF8865F6A76EEF6D03F000060889D7B9BDD171C694E4FF450C024150C
+ 6A858372CC365200D87EF90991E2E8CB3892FB3CCE5B4AFAF37877F3DABFF1BF
+ 36BBF7DEDC8B01000086DBB9EB6073DEABBFAA39F5B1F7F546B52DFEB5B91039
+ 4A7E2CC6356DF3CC8802C0F6CA4F8032AEB532F14F2D25FDABED6B6F7B4BB3F7
+ C21FE9C5000000E3D9B9FBFAE6C22B3ED73CF189FB0633E3682B0C2491CB2479
+ CC8C29006CAFB4F8CB13228D23B94FE31497897FEA57DB65DFFA8DCD4597FD7C
+ EF90FBFE010080C9ECD9FBA666D7FE3B9A2F7FF6B1C14CA94CF853FE92C4F172
+ AE1CB30D2279647BD44E80984BF3795FB6BC0890B77E01E0E2AFFEDF7ADD05BD
+ 1800006042BD5C6225A7F8CA45C65AEE11AD96AB84BC4F71AE36C70CC40F93D9
+ CB177C19D75AED64CB4FC678D77F7FFCFA6FFF9F9B3DE71EEFC50000001B13CF
+ 0378D5EB2E6A1EBFEFF6C14CC8AFFCD7B6FDBB1560CE29006C8FDAC28F3EC591
+ D4A7718AF3C43FF56BE3ABFF6F479BF30E7ADF3F0000B079BBCE39D49C7BC99F
+ 374F3DF8D9C1CCA8A43FE533491C2BE7D846913C325BF90990E2B6B9B2C5CF2B
+ F5A9F58B00175EF5AAE6FCCB639B0E0000C074448E11B9469E7BACB63C47295B
+ 487D1836C78CC40F8BED512EF618E72DA4B83CC1D6B7CBBEF9479A5D3BBDEF1F
+ 0000989EC83122D7A8E520FD56E62BD1428AF3B9A41C332351C16176F2859EE2
+ FC84C84F9AF2645ABBDD7FB5ED1E6CFDFF47BD18000060BAFAB7027C78702B40
+ DB7DFE1BBD15A06D9E2D100925B3912FECDA224F73D19771590C586D175E7571
+ 73FEE5FFB4170300006C8DC83922F7A8E5246B739668A18C4BF95CED385B207E
+ 486C9F7452E42D445F3BA1CAB6CBD67F000060CBADDE0A90762697AD96C384E8
+ CBC636891F0C5B2F5FE429AE2DFE3497B7FC24CA5B2FF9FFD6AF6FCE39EFBFEF
+ C50000005B2B728FC841DA8B00D16A394D2E9FCB8F959F630BC40F88D9A92DEA
+ 74020C6BE944CA4FAC9DCDC55F6DEB3F0000303B175DFD53BDFFB9362F599BB3
+ 8C6AA5DA1C5B242A376CAD7C41A7385FFC292E4F9EB2AA16E3D5F6B57FEB079A
+ BDFBFF6E2F060000988D5DBBAF682EBCE6CBCD130F9C1CCC8478C85F6A491E87
+ 7C9C72A152DB3C53128925B3515BCC3197B7908FF302C06ABBF0CA5735FBCEFF
+ 7FF662000080D98A5C2472925AAED26F794E13F2719ACBD5E6D802F1C361EBB4
+ 2DEE349FE2D46A274D3ED76F97BDB197FCEFBAA017030000CC582F1759C9492A
+ B9CAF0DC26B590C7B9DA1C53123F0CB6DEB0859D167ED9F21366B57DD5F5577B
+ F01F0000B0AD222789DCA496B3F45B2DC78916529FABCD3165F183616BB42DEA
+ 7CD197716AF94993E27EBBE4EB3DF80F0000D87EFDDC646DBEB23E9FC95B688B
+ 73B539A6207E286CAD610B3A2DF8BCE5274A3A71FAEDAA5BDEDCECD9FB2DBD18
+ 0000607B456E12394A99B7D4739BBC85D4E76A734C51FC4098BEB6C59C2FF632
+ CE5B79F2F4E3F35FF33FF57A000080F9D0CF51D6E72EABE3B285B638579B6393
+ E287C2D619B690D342CF5B7992AC9E3CAFBBF53B9BDD7BAEEBC5000000F32172
+ 94C855F2DC657D4E938F530BA9CFD5E69892F861305D6D8B385FE4651C2D9D18
+ E9A459DBF65DE2B57F0000C0FCE9E72AF53C666DAE935A688B73B53936217E10
+ 6C8D610B382DF0D4F213637D7BDDADDFD1ECD879792F060000982F91AB44CE52
+ CB65FA2DCF79F216529FABCD3105F143607ADA166FBEB8CBB8ADAD9E30AEFE03
+ 0000F36CFD2E805A8E93B7D016E76A736C50FC6098BE610B372DECD4D2C9919F
+ 2CABCDD57F000060DED905B010E207C074B42DDA7C5197715B5B3D495CFD0700
+ 0016413F77599BCF0C6FA12DCED5E6D8000580E91BB660D3824E2D9D14E90459
+ DB5CFD07000016855D00732FBEF96C5EDB62CD177319B7B5D513C4D57F000060
+ 917816C05C8B1F085BAB5CC865CB4F8ED576D5CD6F72F51F0000582891C3442E
+ 53CB71FAAD9613450BA9678BC40F80E9C917EEB0B8ADAD9E18E7BDFA7FE8F500
+ 00008BA59FCBACE636F5DC276F6158CC94C40F83CD19B620F3636911A7964E84
+ FCC4E8B72BBFE5FA66CFDE6FE9C50000008B257299C8696AB9CEDA5C286F491E
+ 97861D630CF18D673A462DD45ACB17FE6A7CFE557FAFD70300002CA67E4E333C
+ EF59DFDA0C3BC604140036A7B610F3059CB790E272D1A7F1CEE6C22B2F6AF6EC
+ FB3BBD1800006031454E13B94D9EEBD473A068213F96B7526D8E31C5379DAD95
+ 166EDB82CFFB9DCDAB0FC56B33000000165B3FB7E9E739F51C28B57CCC168A6F
+ 349B97166ABE686B0B38CDA5969F00FDB6F7C2EFEBF50000008BAD9FDBACE63A
+ 6B73A0BCE5F2B9326693E29BCFC60C5B80E5826D6BF989B0A3B9EAE66FF5EA3F
+ 00006029F45F09F8AD110DDADAFCA7BD85D4D70C3BC6100A009B575B7CE5C2AD
+ 8DF385DF3F11CEBBF4EFF67A000080E5D0CF71CAC43F8F438ACB71A936C704E2
+ 1BCF74A4459A2FCA7C2E5A5AE8E5E2DFD95C708587FF010000CB25729CC87552
+ DE333C374A2DA9CDB109F1CD6672E32CC07CB1E6AD5CF4FDF6555FFF377A3D00
+ 00C072E9E73AABB94F3D372ADB28E37C86427CC3D9B8B4E8F2459AC7499ACBDB
+ DAC5BEF7551EFE0700002C9F7EAED39E0BADB65C3E57C66C9002C074950BB4AD
+ A5051FFDCEE6D2AFBFAAD9B5FBF5BD18000060B944AE13394FCA7FD6E644C35A
+ 483D5310DF742633EE02AC2DDC7ABBF8EABFDEEB01000096533FE7A9E743FD16
+ CAF128E37E8E0105808D2B1769C8E324CD952D55BF76367B2EFCF65E0F0000B0
+ 9CFA39CF6A0E54CF91A2E5F2B9326603E21BCF74940BB3ADAD5DF0977EFD95B6
+ FF0300004BAD7F1BC095BDA89E17B5B7907A3649016032E32EBCDA828D962FF0
+ FE82BFF89AE3BD1E000060B9F5739F32F1CFE390E2341E65DCCFD113DF6C2657
+ 2ECE90C7498CD382CE17F66ADB738177FF030000CBAF9FFBACCF89D6E74CB9F4
+ 9950C64C4801603ACA0599B790F7F13DEF2FEC4BAEB3FD1F0000E886C87D2207
+ 2AF3A2BEBC2F5B483D9BA00030BE71175C6DA1464B8B7B757CE0B5B6FF030000
+ DDD1CF81D6E746AB71C88F8D63DCCF759E02C0E46A8BABB638D35C7BDBBDFF5B
+ 7A3D00004037F473A07A7EB4B6E56A73A136C7100A001B971661BEE8F2B95A5B
+ 5BE9DABDF7AFF57A0000806EE8E740ED3952BD25B53926A000303DF9624C0BB2
+ 7DEEABFF2BDBFF010080EEE9E742EB73A4D1736C9202C07836B2E0CA051B2DBE
+ DFFDB6E7A26FEDF5000000DDD2CF855673A37AEE34A98D7C4DE7C4379BF1A545
+ 952FCA14D7C6ED6DCFB96FECF5000000DDD2CF85EA79D2FA16DAC621F58C4101
+ 6073CA4557EBD7B70B2EBFD0EBFF0000804E8A5C2872A25AAED46F6154CF0628
+ 004C4F2CC4D442DEAF6D07AEB3FD1F0000E8AE7E4EB43E57EACBFB7C9E4D5200
+ 186DD8626B5B8C69BEDEF65CE0F57F00004077F573A27ABEB4DA4A6DF3C9B063
+ F428008C2F2DA6DAA24B73E3B49DEEFF0700003AAD9F13453E5ACB99DA5A2E9F
+ 2B8FD1420160E36A8B2D2DC2BC85B563F7FF0300005DB69A13ADCD95D68EF3F9
+ 90E27C8E0928004C47B9309398CBAB5A3B9B2B8FB9FF1F0000A09F1BADCD97FA
+ 7D291D67931400A62F2DCE7C91AEC6FB2F71FF3F0000C06A6E54CB9DF239A644
+ 0160B8610BAE5C90693CACED6C76EDB5FD1F0000A09F1BE53B0086B5A41C9786
+ 1DEB3C0580F1A445545B6CF95CED7329EE8F77ED510000000058CD8DD6E64CEB
+ E3D4A738A97D8E21140036A6B6C8CAB9E8D7B6F32FBBA8D9B1F3F25E0C0000D0
+ 6D911B458E54E64DFD16CA3ED4E6189302C0E6C5C2CB1761DB784773F16B5DFD
+ 07000048FA39D2DABCA9AF6DCC2628006C5CB9F86A8B736DDB7BE175BD1E0000
+ 80D0CF91EAF9535F1E27E598312900B41BB6A8CAC5987FB676ACDFF6ECB30300
+ 000020D9794EDC22BD3E77EA4B7D1876AC34EC58A729008C962FB0711659DBE7
+ 76343B775F3188010000D8B337ED0028E57955ED7832EEE7E85100985C6D7195
+ 73D1AF6F3B775EDBEB01000008FD1CA99E3FF5957DA8CD31060580CD8905972F
+ BEB671BC01E08266C7AE0BE2000000003D912345AE54E64F7D6D6336480160FA
+ EA8BF4E2D77A0020000040A99F2BADCFA156C74C8902C0C6940BB15CA0EBFB5D
+ BB2F1CC400000024FD5CA93D975A6DB972CC181400EA862DA6742C2DC2B6CFAE
+ 3DBEF7426F0000000028ADE64A6B73A8F5CAE36D9F0BC38E759602C070F9C21A
+ 6771A5CFE59FED8F77EE8ED75B000000B056FE0C80248DD35C7EAC34EEE73A4F
+ 016032B54555CEE5FD6AAC00000000B0DEEE736307403D8FAAF7A136C7080A00
+ 1B170BAD6DB1A563AB9FD9F18A3700000000B45B9F47AD37EC182328004CC7E8
+ 45BAF3DC78BF25000000B95DE77C73EF7FB6E752C3732D26A000305DF9E2CC1B
+ 000000C3D572A9684C8902C0E4CA05582ECCF5C70F7EDD158318000080523F67
+ AAE55AA94F2D578E1941016073DA16DCDA057AEEA51E00080000D06635675A9B
+ 4BADD736CF181400D61BB6A0D2B1B60559FFDAB343FF4D0000806E6BCF99DAF2
+ AE343F2CD71A76AC931400366FD8C28BB91DCDEE3DE7F787000000ACD3CF99FA
+ F9D37AC3722E26A000305ADB22CCE5C7D3E7D3DC8E66EF05D70D620000004AFD
+ 9C6935875A9B53853CAE293F4F850240BB72F1D416D3A8CF5880000000E3DB48
+ 8E250F1B9302C0E4D2626A5B54319F1A00000093199553A57939D784140036A6
+ 5C68C316270000001B57CBB7E45F1BA000B079A3169E85090000309ADC6A8B29
+ 006CADFE02DD75CEEB577A0000002AF65C3E0824F95B480160BAF2C5BA1AEFD8
+ E535800000006D76EFBE6C10857A5EC5A629004C4F5A98D15BB00000009329F3
+ A83496534D890200000000748002C0E6E455A91A952A000080F18DCAAFE4589B
+ A000000000001DA0003099B66A539ACF8FAB4C0100004CAE9657B5E557F2AE09
+ 28004C5F2CC062119EB5280100005AADCB992A79159BA500000000001DA00000
+ 0000001DA000000000001DA000000000001DA000B071E33E90C2832B00000046
+ 93636D310500000000E8000500000000E8000500000000E8000500000000E800
+ 0500000000E8000500000000E8000500000000E8000500000000E80005000000
+ 00E8000500000000E8000500000000E8000500000000E8000500000000E80005
+ 00000000E8000500000000E8000500000000E8000500000000E8000500000000
+ E8000500000000E8000500000000E8000500000000E8000500000000E8000500
+ 000000E8000500000000E8000500000000E8000500000000E8000500000000E8
+ 000500000000E8000500000000E8000500000000E8000500000000E800050000
+ 0000E8000500000000E8000500000000E8000500000000E8000500000000E800
+ 0500000000E8000500000000E8000500000000E8000500000000E80005000000
+ 00E8000500000000E8000500000000E8000500000000E8000500000000E80005
+ 00000000E8000500000000E8000500000000E8000500000000E8000500000000
+ E8000500000000E8000500000000E8000500000000E8801D839E55E97B92F7A9
+ 45C124F5BBB23EB5DD95B6A779C35B7EB5D9B5F7865E0CD0EAE84DB734070F1E
+ 1C8C9885E79E7BAE79E0BE8F350F3FF4E0600600D816675EBCABB9F7777FB017
+ 9DEEB5972BED4CD65EC9FAB38371F4A985B2A72725B9AC4ADF93BC4F4D010098
+ BAFDFBF7373FF6936F6FAEBAFA9AC10CB31645805FFAC59F5F29080000DB4001
+ 6026228105601B7DF7F77C9FE47F9B5D7BDDF5CDDF7BEB0F0F460000CB490100
+ 609B1DBAE19B0711DBE970EFE710BB31000096950200C0369374CE8F4337BC71
+ 1001002C1F05000018387CC46E0C006079290000C040DC0670E0E0A5831100C0
+ 72510000804C140100009691020000648E1EBB791001002C17050000C8C42B19
+ DD0600002C23050000281C3F71EB200200581E0A00005038EC758000C0125200
+ 00D846B1DD9CF973E0E0413F1B0060E92800006CA37DFBF70F22E6CDF113B70D
+ 220080E5A00000001587BC0E100058320A0000DBC8D3E6E7D7FEFDFB9BC38A00
+ 00C012510000D846070F1E1C44CCA3C3473C0C1000581E0A0000D0E2E84D37AF
+ EC04000058060A0000DBE8DAD75F3F88985787BC12100058120A000030C4E123
+ 9E0300002C070500806D74A577CDCFBD7810A087350200CB400100601BB9BF7C
+ 31781B0000B00C140000B6C9B5D7B9FF7F511C3D76F3200200585C0A0000DBC4
+ D5FFC571D5D5D7B80D000058780A0000DB24924A16C78D37D90500002C360500
+ 806D72E5550A008BE4E8B15B061100C062520000D826070E1E1C442C82F879D9
+ B501002C320500806D10F7FF4B26178F870102008B4C0100601B1CBAE18D8388
+ 4572F426B70100008B4B0100601B1C3EE2BDF28B28766E1CBEC1CF0E00584C0A
+ 00003326895C6C878FD8BD01002C2605008019B3FD7FB11DBAE19B578A380000
+ 8B46010060C66CFF5F6C91FC2BE200008B48010060866CFF5F0E8A3800C02252
+ 00009821578E97431471DC0600002C1A0500801972E5787978252000B0681400
+ 0066C8F6FFE571F4D8CD8308006031280000CC88E47FB95C75F535CD8183970E
+ 460000F34F01006046BC3F7EF928EA00008B4401006046E2FDF12C97E3276E1B
+ 440000F34F010060063C357E391D387870E55600008045A000003003B6FF2F2F
+ 0F03040016850200C0168B2BFF476F92242EABC33728EE00008B410100608B1D
+ 92202EB5B80DC0C300018045A00000B0C50E1F911C2E3BB77800008B40010060
+ 0BC5F67F5787979F373C00008B400100600BD9FEDF0DFDE73CDC32180100CC27
+ 0500802D74FCC4AD838865E7560F0060DE2900006C9103072FF58EF80E895B3D
+ 62270000C0BC520000D822EEFDEF1EB77C0000F34C0100608B1C3DE6DDFF5DE3
+ 960F00609E2900006C01DBFFBB297EE6F1B3070098470A00005BE0C69B5CFDEF
+ 2AB77E0000F34A0100600B1C3DE695705D75FCC46D83080060BE2800004C597F
+ 1BF8C1C188AE899FBDDB3F008079A4000030651EFE87350000CC23050080293B
+ EC55709D670D0000F3480100608A6CFF27C41AB8F6BAEB07230080F9A0000030
+ 451E004772A30741020073460100608A0E79051C03D60200306F140000A624DE
+ FFBE7FFFFEC188AE8BB5106B0200605E2800004CC9E1231EFCC65A47DD060000
+ CC1105008029B1E59B925D2100C03C5100009882A337DD22D1A3EA9057020200
+ 73420100600A0E1F71F59FBA1B8FDD3C880000B6970200C02675FD616FCF3DF7
+ 5C73E7076E1F8C285D7BDDF5CD8183970E460000DB4701006093BABEC5FB81FB
+ 3ED6BCEFBDEF1E8CA8F1360000601E2800006C52D7B7FF3FF2F083CDC30F3DB8
+ B21380BAA36E030000E6800200C02678D77BD3DC7FDFC756FA7BEEFAC84ACF7A
+ 575D7DCD4A0300D84E0A00009B104FFFEFBAB80520DC7F7FBFA7CE2E000060BB
+ 2900006C42D793BAD8FA9FDC73D78707113587BD0E1000D8660A00001B144F76
+ EFFAB6EE471E7A6810F5DF0690170458EBC0C1832B6F040000D82E0A00001BE4
+ C9EEEBB7FDDF73B7E7000C73E331B78C0000DB4701006083DCD31D3B00D65EF1
+ 3FE94180431D52340200B6910200C006D8FE5FDFF2EF7580C3796B0400B09D14
+ 000036E0F8895B075177A5A7FF97BC0E70B8C3473C0C1000D81E0A00001BE089
+ EE4DF3C8C3F507FE791DE070476FBA7965270000C0AC2900004C28B6FEC713DD
+ BBEEFE961D006D3B03587548010900D8060A000013F2F0BFBEB644FFF1538F79
+ 1DE008878F780E0000307B0A000013B2FD7FF4557EBB00868B0701C683240100
+ 664901006002FDC4CDF6FF0746DCE77FF26E0F021CC5DB000080595300009880
+ 27B8F7B5DDFF9FC40E00AF031CCEAD2400C0AC2900004CE090ABB62BC6D9E2EF
+ 3680E1FA0F93741B0000303BBB063DAB7654FA5A8BE249EA87B55DCDA56FF86F
+ 9A9DBB2FEBC5C0028B2DDB37DE74CB60D45D91D8DF79C7ED8351BB8B2EBEB8F9
+ FA6FFCA6C188367FF5971F1D4400B317AF25FD9AD77DED4A4132B528507ECB9B
+ 8E36AFBFEEFA352DE65F3E7DBA79FAA9A7065F0D5374F6CCA3CD63F7FEBB5EF4
+ 4A4B3BDBD242EA19211258D64ADF93BC4F2D12FAD447F124F5A9EDAEB43DCD1B
+ DEF2ABCDAEBD37F46260817DFF5B7F78E51DEE5DF7EFFFE0F79A3FFCFDDF1B8C
+ DAC51F913FF3CE9F1F8CA879FCD4A9E6A77EE247072380E98BA47D5F2FC98F04
+ 7EDFBEFD2BE3706D6FBC5127EFFA48F39BEFFA65B77A315D675EBCABB9F7777F
+ B0179DEEB5972BED4CD6A22090FA48FECB0241287B7A5292CBAAF43DC9FBD414
+ 00A0A3E20AC93BDEF90B2B7DD7FDDCCFBE63ECEDFD3FD3FB9E7968E270FFE4A7
+ DFEEB589C05444521F09FE55575DD35C79F5D55F49F6B74214017EE917157999
+ 2205809988041680110EDDF046C9FFC024F7F69FBCEBC3838836C74FDC368800
+ 2613B7A67DF7F77C6FF3E33FF9F6E6977FFDB756FA18C76EB5AD4CFE43FCB7B7
+ FABF014C9F0200C0180E1FF1F0BF30E983FD46BD2E100F9604C617B7561DFFB6
+ DBBE92F0FFFD1F79DBCA7833DBF93763BBFEBBC0C6A56DEEAC4ADF93BC4FCD2D
+ 00D04171E5FFE7FFC5AF0C46DD36EEFDFFB9F82395E1621B6D6CA785E4E84DB7
+ 34377A55E4CA73324EDEFDE14E9F1F71953D5E1B7AF88637CEDD2D551BF9FF09
+ D0CA2D003391925C56A5EF49DEA7A600001D147F887FFF5B7F6830EAB68DDCAF
+ 1E57AA5C251AEECE0FDCDEFCC6BB7E7930A2EBE28A6E6CE36655FCDEF9CD77FD
+ 4A679E971157FA638B7DDC2234CFCF51510060AA1400662212580086B0FDBF2F
+ 9EF6BC913FBE4FDEEDCAF628711B80674C90782EC47A7115FCC77EF2ED4B7FCF
+ 7924FDB1AD3FDEA01245200F5105A64D01006088741586C9EFFF4F36FA755D12
+ C97F3C681282A4AF2ECE9328022C5BB12CFEEFF9DBDFFE1D2B6F4D89E4DFFFCF
+ 01B6920200C010FE105BB5D12BF9B16B20EEE365383B4D60B44896BFFB7BBE6F
+ 305A6C5160FEFEB7FEF0CA3366FED6DFF90E851F60261400008688072FD1B799
+ 2BF976018C16C5A665BBB2C9C6385F868B57DC2DF2B99212FFD8E61FFFB700CC
+ 920200408BF823CD3B8EFBE20AFEE3A71E1B8C26174FF166B478E024305A3C28
+ 71D148FC8179A00000D0C2F6FF5527EFDA5C02EF8AE678EC38213C70BFF36594
+ BFBE400F4A8CDD0A127F605E280000B4F024EE559B4D48E20D028A00A3C58E93
+ B84A080C1749F5BC1769E37FC778B8DF3BDEF90B127F606E28000054F413310F
+ 644A4EDEB5F957F9791DE0786E942874DEFD8A6563397C647EDF9C11B7F344E2
+ 1F0FF7F36C0F609E28000054D88ABD6A1AC97FB003603C478F790E008CE3D01C
+ EE00B8F6BAEB9B7FF88FDFD17CFF5B7F48E20FCC250500808AC3DEC9FE15D3BA
+ 1FD9EB00C7133B4F3C7CB2DB9C27E389047B5ECE95F8DF25EEF3FFF19F7CBBF3
+ 17986B0A000005DBFFD79AD60E806017C078EC40E9B6CDBC71A36BE28AFB768B
+ 3712B8CF1F58140A000005C9D7AACDBEFEAFE47580E3F13A4018CFB5AFDFBE02
+ 40148B63BBFF777FCFF7DAEE0F2C0C05008082E46BD5665FFF57B203603C914C
+ 780D65B73957C6B35DDBEDE3E9FE91FCDBEE0F2C1A0500804C245DAEE4ACBAF3
+ 8EDB07D174C4EB00A7794BC1329BE7279CC3BC88DBB566F9EACC74D53F9EEE0F
+ B0881400003292AE5591ACC783FBA66D5A0F155C76F18473C5A8EE8AF38FF15C
+ 75F5D583686BC5BDFEAEFA038B4E010020338FAF95DA2EF76CD1957A3B00C613
+ C9FF216FA3E8AC471E9E7EF16D596D75421EE7623CDD3FEEF50758740A000003
+ B6FFAFB5550FEC8B870A6EC5CE826574F88882148C72E5555B570088FFBF104F
+ F89F87B70D004C830200C080EDFFABB6FA5E7D0F381B8FA25477B905607C5BB5
+ 0320AEF8FFFD1F799B7310582A0A00003DF1079E7738AFDAEA047DDA0F175C66
+ 6E03E826BB64C6170F029CA6B4E53FEEF90758360A00003D92ACB54EDEBDB5F7
+ E94772F3F8A9538311C31C3F71EB2002DA4C6B8B7EEC26B0E51F58660A00003D
+ EEB55EEB9EBBB6E6FEFF9CDB00C61309C92C5F73068B681ADBF48FDE74CBCA53
+ FE6DF90796990200D079F1C75EDC6B4D5FDCFB3F8BFB8FB7EA2183CBC8FAEC1E
+ 3B6426B3D9E700C4FDFEDFFFD61F1A8C0096970200D079B6FFAFB5D5DBFF9359
+ 151A96C1F113EE45EE9A785B06E33B706063BB64A2001C0FFA73BF3FD0150A00
+ 40E7B9C77AAD596ECD771BC078E221675BFDAE7358641B79106024FF3FF6936F
+ B7C306E8140500A0D3E2DE6A89D5AAFEC3F96677E57156BB0D96C1D163DE5201
+ D312BFF723F9F7FB1FE81A0500A0D35CF9596BD6AFE79BC5C30697C561B7AA40
+ AB499EDA2FF907BA4C0100E8345755D78AFBF267299E0130EBFFE6A28A2DCE0A
+ 56DD123B7298AE94FC7BD23FD0550A004067D9FEBF563C757C3B1E3CE63680F1
+ 1D3E621740973CEF21995325F9075000003AECC69B5CFDCF9DDCA6EDF81E0438
+ BE43760040AB6105DDD83D23F9075000003AECE8B15B061161D6F7FF27B1EBC0
+ 56E7F144F272F426EB166AF6B524F791FCC7ABFE24FF000A004047C595A28DBC
+ 366A59C5BDF8DB99846F57F161111D3E6217008C2B7ED7FFBDB7FEF060048002
+ 00D0491EFEB7D63DDBFC203E0F021C5F5CCD7425134673CF3FC07A0A00402779
+ A5DA5A27EFDEDED7F1B90D603287AC5F58277F0680E41FA04E0100E81CDBFFD7
+ 9B872BF06E0318DFF113B70E222049C9BEE41FA09D0200D039C74FDC368808F3
+ B2FDDEDB00C6D72F625D3A18B1AC1EB8DF3931A948FAFFDE5B7F48F20FD04201
+ 00E81CAF525B6B5EDEC31FB7003C7EEAD460C428F12C0060D5BE7DFB57AEFCE7
+ B70200B0960200D0291EA0B6DE3D776DEFFDFFB99373F4BFCBBCF3204B58EBF8
+ B7DD26F90718410100E894C3473C3C2D1757DDE31580F3C27300C617898E6407
+ 0098840200D029B6FFAF356F09B7DB00266317000030090500A0338EDE748BED
+ FF85797CFFBEDB00C6E7759600C024140080CE387CC4D5FF5C5C698FF7EFCF1B
+ 4F3E1F5FBCCEF2DAEBAE1F8C0000865300003A21AEFC7B6AFA5AF37AA53D7625
+ CCD37309E6DD8DC76E19440000C32900009D70C856E975E6F9817BF7CCE1AD09
+ F3CA732D0080712900009D60FBFF5A71853D1EB837AF4EDEED3900E3B2BB0500
+ 18970200B0F42448EBCDFB15F6797C38E13C3BEA360000600C0A00C0D28BA7FF
+ B3D6225C615704185F14B8BCE1020018450100587ADE95BEDE2224D727EF5600
+ 9884E75C2C9F79BE4D0780C5A400002CB503072F6DAEBAFA9AC188B02857D6EF
+ 99D3B714CCAB1B15BA968EB76100306D0A00C05273EFFF7A8B72653D929F07EE
+ FBD860C428D75E77FD4AC10B00A08D0200B0D46CFF5F6F91AEACBB0D60320A5E
+ 00C0300A00C0D2B2FD7FBDB8A77891B6157B10E06414BC008061140080A575FC
+ C4AD8388E4CE3B6E1F448BE1F1538F7910DA04A2E0E5360000A08D0200B0B40E
+ 7B2AFA3A8B7845FD1EB7014C44E10B0068A300002CA5FE95D0838311E1F153A7
+ 56AEA82F1AB7014C46E10B0068A300002C25F742AF7772415FAB17B70044F182
+ F144E1CBB32F96C3F35E0308C0942900004BC955D0F516EDFEFFDCA2162FB6CB
+ F113B70D221699E75F00306D0A00C0D28957A1D9FEBF565C415FE464C2EB0027
+ 73C8EB0001800A050060E91C3EE2EA7FE981FB3E36881653FCEFBF48AF2FDC6E
+ FBF7EF5F29840100E4140080A5E3EAE77A27EF5EFC2DF4F77818E04414C20080
+ 920200B054E2AA675CFD64555C395F8627E92F431163968EDE74B37301005843
+ 0100582AAE7AAEB72C57CEBD0E7072873C0C1300C82800004B23AE76DAFEBFDE
+ FDF72FF6FDFF394580C91C3EE27C0000562900004B23AE76DAF2BCDE3D4BF40A
+ 3D6F03984CFF8D18970E460040D72900004BC3D5CEF5E28AF9323D3D7F998A19
+ B3E26D000040A200002C05AF3DAB5BB62BE6CBF240C3593A7AECE641C4227AF8
+ A1070711006C9E0200B0143CECAC2EDE9FBF6CDC063099ABAEBEC66D000BECF9
+ 25DAC103C0F65300009682EDFFEBC595C3C74F3D36182D0FB7014CEEF8895B07
+ 1100D0650A00C0C28BAB9BB6FFAF77E71DB70FA2E512B701D8163D99C376C800
+ 003D0A00C0C293FCD72DF3BDF2CB5ADCD82A070E1E5CB91500609A96E921B3D0
+ 150A00C0C2F390B3F59675FB7FB28CCF36D86ACE1360DA3C9415168F0200B0D0
+ 62FBBF2B9BEB2D7B82DC2F709C1A8C18C7D19B6E1944009BF71BEFFA95A52E34
+ C3B2DA31E85995BE27799F5A144C52BF2BEB53DB5D697B9A37BCE5579B5D7B6F
+ E8C5C0941DFFB6DB9AEFFE9EEF1D8C48FEC94FBF7DE9EF938F9F7BFCFC19DF2F
+ FDE2CFBB62B7607EFC27DFDE5C7BDDF583118C2FFE7F40FE168907EEDF5861F8
+ C0814B576E230A2BC5D7C74FADFC1E91FC3375675EBCABB9F7777FB0179DEEB5
+ 972BED4CD65EC9FAB3599F5A287B7A5292CBAAF43DC9FBD4140060CEFCCC3B7F
+ E12B7F98D01757C67FEA277E74305A5EF1EC87BFFF236F1B8C18C79D1FB8BDF9
+ 8D77FDF260C4225000A026EEBD7FA4978CAF24F9CFF71F8C1A73F1FB5F62CEC2
+ 5200988994E4B22A7D4FF23E3505009823B1F5FF1FFEE3770C4624EF7BCFBB9B
+ DFF9EDDF1A8C96DBCFFF8B5F69F6EFDF3F18314A24086FFF891FF5E0AE05A200
+ 40DCD21509FEC30F3FB492DC7B060A4B4B01602622810558481E6A56B7D16D9E
+ 8BC81FC2938962C921AF0484B915897E7FA7CEAFACDCCAF5C33FF0BDCDCFFDEC
+ 3B568ABA777EE0FD7EE7019BA600002C2CEF36AFEBD21F8827EF763FFBA40E1F
+ F1DA4C981791F0C7AEAD783EC7DBFE871F5A49FAE3369D48F6E318C0B4290000
+ 0B29B6FFBBF77FBD48FEBBB4BDFB9EBB3E3C8818573C3BC16D13B03DE21EFDB8
+ C29F27FC71753F1EAAE7D61C60161400808564FB7F5DD7AE88C71FCCB6C44ECE
+ 2B016176E24AFEBFFF83DF5B49F6E301AD71855FC20F6C17050060214960EABA
+ 980CBB0D60720A68B0B522E98F2BFB3FF5136F5B49FCFFF0F77FCF967E602E28
+ 00000BC716E6BAD85ADAC53F30BDD77E72FD5B682E1D8C806988DFC179D21FF7
+ F67B251F306F1400808573F88887FFD574752B7CFC81EDCADAE46EBCC92E00D8
+ ACD8C61F897EDADE2FE907E69D0200B0700EDDE029E63527EFEEEE03F1EE711B
+ C0C48E1E731B0D6C54145CE3557DF120BFB8EAAF08092C0A050060A1D8FEDFAE
+ CB0FC3731BC0E4E22D1A712B00309EB8DA1F4FF08F2DFEF16EFE78551FC0A251
+ 0000168AEDFF7591FC77F989D271F52DEEBF65321E0608A3A57BFBDF3E7882BF
+ 2DFEC02253000016465CF93FEABEE52A4FC28F5D00DDBD0562A3BC4D03DA45E2
+ 1FDBFCD3BDFD5EDB072C03050060611CBAC1D5FF365DDEFE9FDC79C7ED838871
+ 45512D6EAB0156E589BF6DFEC0B251000016C6E12312959AF863D503A8FAB701
+ B8423739B7D5409FC41FE80205006021B852D9CED6F755F77818E0C4BC5583AE
+ 93F8035DA200002C04DBFFDB3D70BFEDFF49975F85B851FD676B781600DD23F1
+ 07BA4801005808C74FDC3A88C8C59677AFC05B15DF0BB7014CCEED357449FC8E
+ F8F77FF07BCD3FF9E99F92F8039DA30000CCBD03072FF5BEF2161EFEB79EDB00
+ 2617B7D7C44E0058765124FC273FFDF6E60F7FFFF7140B814E520000E69E7BFF
+ DB79FDDF7A6E03D818B7D9B0CC62BBFFCFFDEC3B9A5FFAC59FEFC5DEE30F7497
+ 020030F78E1EF3EEFF36F77800E03A6E03D818B7D9B0ACEEFCC0ED2BDBFDED98
+ 02500000E69CEDFFEDBCF6AE9DDB002617E7599C6FB02CE2F7633CE4EF37DEF5
+ CB7E57020C28000073EDC69B5CFD6F73E71DB70F224A6E03D818B7DBB02C22E1
+ FFDF7FF61D1EF20750500000E6DAD1635E4FD6C6D3FFDBD9EABB31C74FDC3688
+ 6071C5EEA878D05FF400ACA50000CCADFE96E4838311B9F8C3D683ACDAC5D53F
+ 0592C9C5F9E6961B16DD6FBEEB57FC7E0468A10000CC2D0FFF6BE70AF76877DE
+ 61EBEF4638EF5874AEFC03B4530000E6D661AF256BE5FEFFD1BC0D60639C7700
+ B0BC140080B964FB7FBB789FB52B5CE3F13680C9C579E7618000B09C140080B9
+ E46164ED4E7AF7FFD8BC0D60630E1FB10B00009691020030970EB902D9EAE4DD
+ AE6A8FCB6D001BE3FC0380E5A40000CC9DD87EBC7FFFFEC1885C24B31E003819
+ B7014C2ECE3FB70100C0F2510000E68EEDC7ED24B393731BC0C61C3D76CB2002
+ 009685020030776C3F6E27999D9CDB0036C64E1C00583E0A00C05C397AD32D92
+ 8E1691C44632CBE4EC9CD898435E0908004B450100982B878FB8FADF4612BB71
+ 764E6CCC8DC76E1E4400C032500000E686078F0D2789DD38B7016CCCB5D75DDF
+ 1C3878E96004002C3A0500606ED86EDCCEF6FFCDB383626314E5006079280000
+ 73C3F6FF7692D7CDB38362638EBA0D00009686020030176CFF1F4EF2BA790FDC
+ F7B141C424AEBAFA9A9506002C3E0500602EC4D3FFA9B3FD7F3A7C1F37CE2E00
+ 00580E0A00C05C9060B4B3FD7F7A4EDEED7BB911873D9F030096820200B0EDE2
+ 29E3B618B7B3FD7F7AEEB9CBF772230E1C3CB8F246000060B1290000DBCEBDFF
+ ED6C5B9FAEF87E7A16C0C6DC78CC6D3A00B0E81400806D67FB7F3BDBFFA7CF6D
+ 001B7348A10E00169E0200B0AD6CFF1FEE8377BC7F10312D76546C8C377500C0
+ E2530000B6D5F113B70E224A8F9F3A65BBFA1678FCD4632BDF5B2677D46D0000
+ B0D01400806DE5E9E2ED4E7A60DD96F1BDDD98D801103B010080C5A400006C9B
+ D8FA1F4F17A7EECE3B6E1F444C9BE7006CDC21453B0058580A00C0B6F1F0BF76
+ B145FDE1871E1C8C98B6B8B522DE08C0E40E1FF11C000058543B063DABD2F724
+ EF538B8249EA77657D6ABB2B6D4FF386B7FC6AB36BEF0DBD18C8FCCC3B7FC10E
+ 8016777EE0760F00DC62DFFD3DDFEB01941BF4533FF1B6956729B0F57EFC27DF
+ DE5C7BDDF58311E3F8E11FF8DE41042C94332FDED5DCFBBB3FD88B4EF7DACB95
+ 76266BAF64FDD9AC4F2D943D3D29C96555FA9EE47D6A0A003025712FF1DFFF91
+ B70D46C022F99DDFFEADE67DEF79F760C4565200989C02002C28058099880416
+ 60E60E1F711F312C2AB7EF00C062520000B6C521EF138785D57F80E7A5831100
+ B02814008099F32A31587CC74FDC3A88008045A10000CC9CEDFFB0F80E7B1D20
+ 002C1C050060A6E2CABFEDFFB0F8E20D1EDEA200008B45010098A94337BCD1F6
+ 7F5812C74FDC3688008045A00000CCD4E123AEFEC3B2B09B0700168B02003033
+ 71E53F1E00082C07E734002C160500606662FB3FB05C3CD41300168702003033
+ B6FFC3F2397AD3CD9EEB01000B420100988903072FB555189694DD3D00B01814
+ 00809990FCC3F2B2BB0700168302003013478FDD3C8880651305BED8E50300CC
+ 37050060CB456270D5D5D70C46C032B2CB0700E69F0200B0E52406B0FCECF201
+ 80F9A700006CB9E3276E1B44C0B28A5D3E6E030080F9A600006CA97E52707030
+ 0296D98D37D9050000F34C0100D852B60543771C3D76CB200200E6910200B0A5
+ 0E7B3F387446ECF6F1C04F00985F0A00C096B1FD1FBAC7AE1F00985F0A00C096
+ 910840F71CBDC96D000030AF1400802D231180EED9BF7FBF577F02C09C520000
+ B6442400910800DD73F888677F00C03C520000B6840400BAEB90022000CC2505
+ 00604B440200745324FF87BC010400E68E02003075B6FF03878F280202C0BC51
+ 0000A6CEF67F40211000E68F02003055F107FFD19BBCFE0FF026100098370A00
+ C054B9EF17488E1E530C048079A200004C95FB7E81E4AAABAF690E1CBC743002
+ 00B69B02003035B1FD3FEEFB0548FC4E0080F9A100004C8DEDFF40E9F889DB06
+ 1100B0DD140080A9397EE2D64104D077E0E0C1955B010080EDA700004C45DCE7
+ EB8F7CA0C6C30001603E28000053E13E5FA0CD61B70701C05C500000A6C2153E
+ A04DDC06A0480800DB4F0100D834DBFF81510E1FB10B0000B69B0200B06937DE
+ E4EA3F30DC213B000060DB2900009B76F4D82D8308A06EFFFEFDCDD19BFCAE00
+ 80EDA400006C4A6CFD8FFB7B0146397CC42E0000D84E0A00C0A678F81F30AE78
+ 1060EC040000B6870200B0295EEF054CE290DF1900B06D1400800DB3FD1F98D4
+ F113B70E220060D61400800D3B7EE2B64104309E7EE1F0D2C108009825050060
+ C3BCD60BD88878160000307B0A00C086789817B051760F01C0F650000036E4F0
+ 110FF20236269E1D12B7020000B3A500006C88EDFFC06678852800CC9E020030
+ B1A337DD62FB3FB0295E210A00B3A700004CECF01157FF81CD89DB00AEBDEEFA
+ C1080098050500602271E5DF13BC8169B8F1D82D830800980505006022876CDB
+ 05A6C4B3440060B614008089D8FE0F4C8B1D4500305B0A00C0D8FCB10E4CDB51
+ B70100C0CC280000638BA7FF034C531415BD55040066430100189BF776035BC1
+ B345006036140080B11C38786973D5D5D70C4600D373A3E22200CC8402003016
+ F7FE035BE5DAEBAE5F293202005B4B0100188BEDFFC05652640480ADA700008C
+ 64FB3FB0D514190160EB290000231D3F71EB2002D81A516454680480ADA50000
+ 8C74D813BA8119B00B0000B696020030545C913B70F0E06004B075141B01606B
+ 29000043B92207CC4A141BE38D0000C0D65000008672450E98A51B8FDD328800
+ 80695300005AC56BB96CFF0766E990D70102C0965100005A1D3EE2EA3F305BFB
+ F7EF5F293E0200D3A70000B472250ED80E8A8F00B035140080AAB8021757E200
+ 66EDE84D37FBFD03005B60C7A06755FA9EE47D6A513049FDAEAC4F6D77A5ED69
+ DEF0965F6D76EDBDA117C3C2F8FEB7FEF0CA1FE18CF6C07D1F6B7EEE67DF3118
+ D165F104FB1FFFC9B70F466CC66FBCEB579A3B3FF0FEC1A8BB623D7933C2647E
+ F807BE7710010BE5CC8B7735F7FEEE0FF6A2D3BDF672A59DC9DA2B597F36EB53
+ 0B654F8F1D00C03A71E5CDF6FFF19DBCFB238388AE8B62D0E3A74E0D466CC6E1
+ 237E0701C0B4290000EB1CBAE18DB6DF4EE0E45D0A00AC3A79D78707119BD17F
+ 0BC9A5831100300D0A00C03AAEBC8DEFE1871E6C1E3FF5D860044D73E71DB70F
+ 2236CBDB000060BA14008035BC826B32923D4AFDA290DB00A6E1E831CF210180
+ 69520000D688EDFF8CCFF67F6ADC06301D575D7D8DDB0000608A140080356CFF
+ 1F9FEDFFB4B133647A8E9FB8751001009BA500007C455C69B3FD7F7CF778FA3F
+ 2DDC06303D87ED4A0280A9510000BE42F23F19DBFF19C66D00D371E0E0C1955B
+ 010080CD530000BEC203B7C6175777E32A2FB479DF7BFF6410B159C74FDC3688
+ 0080CD50000056C4F67F57D9C6E7EA2EA3C4F3211489A6E390DD490030150A00
+ C00ADBFF27E3216F8CC33A990EAF270580E950000056D8623B3EDBFF1997E744
+ 4CCFE1231E0608009BA500000CDEB57D70306214DBFF1997DB00A6276E03889D
+ 0000C0C62900001EFE3721DBBA9984F5321D91FC1FF24A4000D8140500C07BB6
+ 27F0DC73CFB9A2CB44DC06303D878F780E00006C860200749CEDFF93B94732C7
+ 84DC06303DF12040B70100C0C6290040C7D9FE3F999377BBFF9FC9BDEFBD7F32
+ 88D8ACA337DD3288008049290040C7F9637A7CB1FDDF766E36E21E0F8E9C1A45
+ 4B00D8380500E830DB692763FB3F1BA578343DFDDB962E1D8C00804928004087
+ 79AFF6646CFF67334EDEAD00302D37DE641700006C8402007458BC579BF1B882
+ CB66B90D607A8E1E73EB12006C8402007494EDFF9379E0BE8F0D22D81845A4E9
+ 893797C4AD0000C0641400A0A36CFF9F8CEDDB4C8375343D1E06080093530080
+ 0E8A2BFF47DD433B11DBB79906EB687ABCC1040026A700001D74E80657FF2711
+ DBB663FB366C96DB00A6270A99712B1300303E0500E8A0C347FCD13C09DBB699
+ A63BEF78FF2062B3DCCA0400935100808E71D56C72B66D334D76944C4FBCC9C4
+ C34C01607C0A00D031B6FF4F46B2C656B8C76D005311C9BFDF6900303E0500E8
+ 98E3276E1D448CC3F67FB6C2C9BBED2A9916B73401C0F81400A0430E1CBCD4BB
+ B327F4C07D1F1B44303D76964C4FDCD2E4360000188F020074887BFF27F3F043
+ 0F368F9F7A6C3082E9721BC0F4B80D0000C6A300001D72F49877FF4FE2CE3B6E
+ 1F44307D6E03981EB73601C0781400A0236CFF9F9CF7B5B395DC06303DF1BB2D
+ 7EC70100C329004047DC7893ABFF93B0FD9F59701BC0F4B8C50900465300808E
+ 387AEC9641C4386CFF6716DEF7DE770F2236EBF889DB061100D04601003AA0BF
+ 3DF6E060C4386CFF6716FA3B4D4E0D466C46FC8E739B13000CA700001DE0E17F
+ 938984CCF67F66E5E45D1E06382D7ED701C0700A00D00187BD226B22123266C9
+ ED26D3E3771D000CA700004BCEF6FFC949C89825B7014C4FFCAEF330400068A7
+ 00004BCE83B1261389582464304B769D4CCFE123760100401B05005872875C0D
+ 9B88448CED60D7C9F4F89D0700ED14006089C556D8FDFBF70F468C4322C67670
+ 1BC0F4C4EFBCA33779ED2900D42800C012B3157632B6FFB39DDEF7DE770F2236
+ EBF011BB0000A04601009698ADB093B1FD9FED74F2AE8F0C2236CBEE2700A853
+ 008025155B60FD013C9907EEFFD82082D97BFCD46376A04CD121AF0404807514
+ 006049D9023B99E79E7BCE1558B69D67504CCFF113B70E220020510080251457
+ FEBD0B7B32F748FE99038A50D373D5D5D734070E5E3A1801004101009690ADAF
+ 933B79B7FBFFD97E6E03982E855000584B01009690EDFF93B1FD9F79E23680E9
+ 397AECE64104000405005832B6FF4FCEF67FE68962D4F4C46D00D100803E0500
+ 5832F1F47F2663FB3FF3246E0378E03E6FA49816BB0000609502002C197FEC4E
+ 4EB2C5BCF9A0DB00A6E6B067A200C0572800C01289275EDBEE3A99D86E1DCF00
+ 807972CF5D76A54CCB8183079B6BAFBB7E3002806E53008025E2DEFFC99DBCDB
+ FDD6CC1F0FA69CAE1B8FB9350A008202002C11DBFF27E74A2BF34A716A7A0E29
+ 8E02C00A05005812B6FF4FCEF67FE699E2D4F4783B0A00F42900C092387EE2D6
+ 41C4B85C61659EB90D60BA8EBA0D00001400605978D2F5E45C6165DE29524D4F
+ EC00889D0000D0650A00B00462EB7F3CE99AF1C5ABFF6CFF67DE29524DD72185
+ 52003A4E0100968087FF4DCE9555164114A9EEFCC0ED83119B75A3DF9500749C
+ 02002C01DBFF27E7DE6A16C5C9BBED0298966BAFBB7EE581A900D0550A00B0E0
+ E2BE56DBFF27F3F0430F368F9F7A6C3082F9E66D15D3E56D0000749902002CB8
+ C3475CFD9FD49D77D852CD62B9C78E95A971CB14005DA600000BEE90AB5913B3
+ FD9F45E33680E9E93F34D56D0000749302002C30AFB59A9CEDFF2C22B7014CD7
+ F113B70E2200E81605005860B6FF4FEE1E4FFF6741B90D607A3C381580AE5200
+ 80051557FE6DFF9F9CEDFF2C2AB7014C4F3C38356E050080AE5100800575E886
+ 37DAFE3FA1C74F9D5AB905001691DB00A6EBF889DB061100748702002CA8C347
+ 5CFD9FD4C9BB5C4165B1DDF981F70F2236CB0E2A00BA48010016505CF9F72EEB
+ C979FD1F8BCE1A9E1EBF4701E82205005840B1FD9FC9D8FECF32E8BFC5E2D460
+ C46679902A005DA300000BC8F6FFC9D9FECFB2B096A7E7E84D377B960A009DA2
+ 00000BE6C0C14B6D5BDD005BA75916D6F274D9510540972800C08291FC4F2E9E
+ 9C6EFB3FCBC26D00D3654715005DA200000BE6E8B19B0711E3BAC7BBFF59326E
+ 03989E28AAC6CE2A00E80205005820F147EA55575F331831AE93774B96582E6E
+ 03982E3BAB00E80A05005820FE489D5C6CFF3F6907004B266E03705BCBF4D859
+ 0540572800C002397EE2B641C4B86CFF6759D905303DB1B3CA6D000074810200
+ 2C88FE1FA8070723C665FB3FCBCACE96E93A7EE2D6410400CB4B010016842DAA
+ 93B3FD9F65F6F8A9C7DC06304587BD0E10800E50008005E18FD3C93D70DFC706
+ 112C27B7014C4FECB0F2905500969D02002C80B837D5F6FFC99DBCDBD57F969B
+ 1D2ED365A71500CB4E01001680E47F63EEF1AE74969CDB00A6CB0E80C5F7F8A9
+ 538308801A05006029C595D17806002C3BB7014CCF3CBE09C0EFB1C944510C80
+ 760A00B0009EF707E044E20FE6DFF9EDDF1A8C60B9DDF981F74B12A7E4B9E79E
+ 1D44F3E3CE3BDE3F8818871D0000C32900C002882DBEB6F98E2725FFAE02D115
+ B1E6FFF79F7D8722C0143CF2D04383687EC46EA63B3F6097C7B8FEF00F7E6F10
+ 0150B36BD0B36A47A5AFB5289EA47E58DBD55CFA86FFA6D9B9FBB25E0C1BF657
+ 7FF9172BDB535F73D9E583194AF187F26FBEEB579ABFFA8B8F0E66A01B9E7EEA
+ A9E6DEBFFCE8CAEF8779DCC6BE0822C9FE9DDFFE57CDE9D3A70733F3231E68BA
+ A3F717C795575FD3ECD9B367304B2E8AE4BFFA7FFE8BE611C572585C67CF3CDA
+ 3C76EFBFEB45AFB4B4B32D2DA49E11228165ADF43DC9FBD422A14F7D144F529F
+ DAEE4ADBD3BCE12DBFDAECDA7B432F86A9880755EDDBBF7F302278E51FF4EDEF
+ FD6E884491F1C42D568BB4C3CAEFFFF5FCFE872571E6C5BB9A7B7FF7077B5154
+ 625FAEB433598B8240EA23F92F0B04A1ECE949492EABD2F724EF535300000000
+ 983605809988041600000058720A00000000D0010A00000000D0010A00000000
+ D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A00
+ 000000D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0
+ 010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A0000
+ 0000D0010A00000000D0010A00000000D0010A00000000D0010A00000000D001
+ 0A00000000D0010A00000000D0010A00000000D0010A00000000D0010A000000
+ 00D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A
+ 00000000D0010A00000000D0010A00000000D0010A00000000D0010A00000000
+ D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A00
+ 000000D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0
+ 010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A0000
+ 0000D0010A00000000D0010A00000000D0010A00000000D0010A00000000D001
+ 0A00000000D0010A00000000D0010A00000000D0010A00000000D0010A000000
+ 00D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A
+ 00000000D0010A00000000D0010A00000000D0010A00000000D0010A00000000
+ D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A00
+ 000000D0010A00000000D0010A00000000D0010A00000000D0010A00000000D0
+ 010A00000000D0010A00000000D0010A00000000D0010A00000000D0010A0000
+ 0000D0010A00000000D0010A00000000D0010A00000000D0010A00000000D001
+ 0A00000000D0010A00000000D0010A00000000D0010A00000000D0010A000000
+ 00D0010A00000000D0010A00000000D0010A00000000D0010A001B7776D08F32
+ EEE7000000BA4C8EB5C5140066E1EC2BCF0C220000004A72A69950009885D32F
+ 3C308800000028C999664201000000003A4001000000003A400160FAE28114C5
+ 43297C9B010000DAADCB992A79159B25339D4CDB024CF3F9718B1500006072B5
+ BCAA2DBF92774D400160164E3F7DFF20020000A024679A090580CD896AD3B08A
+ 53FFD8CB2F7D79A507000060BDD59C69547E35EC38232800000000400728004C
+ 4FAA449555A9B3CD0BA73E378801000028F573A6B579D4EA389F67131400A6AB
+ 5CB07D8F7FE2D14104000040696DCE54CFABD8340580AD9516AB450B0000D04E
+ EE34030A009B376A81F68FBF72FAE32B3D000000ABCEBC78D7201A2FB762C314
+ 0036A65C78311EB618CF36675F796610030000B0D6F07C6AFDF1619FA78502C0
+ E4D2426B5B706971AE3D7EE6B4E70000000094CEBCF0C0204AEA39D5AA34DF76
+ 9C160A00EDCAC5545B5CA33EB33A3EF3B20200000040E9CCD92F0FA2307E8EB5
+ 6A9CCFD0A300305A2C9E510B283F9E3E9FE6FAF14B4F97552D000000FAB9D2FA
+ 1C6A751CF2B8A6FC3C150A009B9716596DB1AD2EC2974F7B0600000040693557
+ 5ACD9FD64A73B5634C400160BD618B2A5F78B5CFB57DEDD9E6A94FDB01000000
+ 50EAE74AEDB9D47A793ED6F67561D8B14E5200D89CB6059516E4EAF167BFF074
+ 7376CDBD2D000000DD163952E44AABD6E7526BB5CD33060580C9950BAE5CA06D
+ C79BE69597EC02000000485673A43CA74AD2381D6B3BCE981400A62B5F98790B
+ 67BD0A10000020F3D28B1FEFFDCFD59CA9DE98120580E918B538FBC75E7E2116
+ 37000000E1EC4B719174742ED57E9C0928006CDCB88B74F533CF3F75FF200200
+ 00606D8E54CFA3D61A768C1114002693165ABEE0CAB9BC5F1B3FF5293B000000
+ 00927E8EB43E77EA6BEB436D8E11140086CB17D5B085557E2EFFECEADCB35F7C
+ BA39EB39000000002BB951E44879CEB4AA9CCB8F95C6FD5CE72900D48D5A5CA9
+ 4FADA676FC6C73FA8C5D00000000FDDC686DBEB43E87CA95C7DB3E17861DEB2C
+ 05808D2917535A8469BED6F7E3573C0810000020CB8D56F3A57A9F1F4FCA3163
+ 500098BE7281E6E3B3CDB3A73E12930000009DD6CF8DD6E64B7DE598295100D8
+ 9C618B341FAFCE7DEECF1400000000FAB9D1F0FCA93E6683140026972FBEA49C
+ 8BBEBDBD72DA6D0000004077F573A27ABEB4DA42D987DA1C635000182D5F5CC3
+ 16D8A8CFA5F9B3CD8BCFDFB532030000D045FD9C6835475A2F9FAF1D4FC6FD1C
+ 3D0A00ED462DB2D4A796D48EE5AD695EFA9202000000D05DAB39512D678A1652
+ 1F861D2B0D3BD6690A001B572EAA7231B6B7C71F5000000000BAAB9F13D5F3A5
+ D516F23829C78C490160F36A8BB3365E9D7BF68B4F7B0E000000D049910B454E
+ 94E7486B5B681BB3090A001B932FC2A49C8BBE6CAF7C25F61C000000A08BD6DE
+ FFBF9A23AD6DA1EC436D8E3129008C275F64E542CBE76A9F4BF1DAB1E7000000
+ 005DD4CF85D6E748EBC7A13697D43EC7100A00C30D5B44F9620B693CACAD56B7
+ 1EFAC07FEEF5000000DDD2CF85D6E748C35B528E4BC38E759E02C0F4A505992F
+ CC5A7CB679E9D9F7AFCC00000074413F075ACD89FA6A713EC79428004C47DBE2
+ 8CB9BCA215F1EAF8E5E7EEEEF5000000DDD0CF81EAF9D16A5C4AC7D92405808D
+ 4B0B305F886961E62DD4C75FFA84DB00000080EEE8E740EB73A3FA389F0F29CE
+ E7988002C0F8F2C5562EB834374E5BAD723DF1A9CF791D200000D00991FB440E
+ 54E645E3B75C3E571EA38502C068C31653BEE872697E747BE1C93FEEF5000000
+ CBAD9FFBD4F3A27A2BB5CD27C38ED1A300303D6931A64597F7B5D6AF767DE913
+ 1E040800002CBF7EEEB39A0BD55BC8FB7C9E4D5200D89CDA022DFB61ED15B701
+ 0000004B6F75FBFF38DBFEC3A89E0D5000984CBEE8CAB8361EA7BDE236000000
+ 60A9F5739E49EFF98F16DAC621F58C4101603C1B59546951E62D167CDEFAF36E
+ 0300000096D9EAF6FFF6BC686D9BD446BEA6731400A6A7B660C799F336000000
+ 6079AD7DFA7FD9C2B8736C9202C0C6D516633E576B65756BB5EAF5EC63FFBAD7
+ 0300002C977EAEB39AFBACCF89F271AD25B53926A00030B9DA62AB2DC234375E
+ 7BECAFFEB4D70300002C977EAE53CF83DA5BAE36176A730CA10030BE7117575A
+ 9CE9F3291E5EE97AF68BCF342F3DF31F7A310000C072881C27729D3CF7199E1B
+ 85FCD838C6FD5CE729004C476DA1A616F23E16775AE029EEB7673EFF47BD1E00
+ 006039F4739CB579CFFABC28E47DD942EAD90405808DC917612D4E629C2FF0F4
+ 997AFBDC7FB9AB397BE6F3BD18000060B1456E13394E99F7AC6F65CE944B9F09
+ 65CC8414002633EE224B0B335F9CD1F22240C479EBCF3FFFC4EFF47A000080C5
+ D6CF6D86E73F6BE390E2341E65DCCFD1A300303DB5055B6BE5825F3BFFE8DD6E
+ 03000000165F3FB7199EFFAC9F2F5B483D9BA400B071F962ACC5499A2B5B5AF0
+ 6BDB738F3DED61800000C0428B9C26729B5ACED36FB51C295A2E9F2B63364001
+ 6072E32EB6B440F3453A5E7BE2D36E0300000016573FA7A9E73BF516CAF128E3
+ 7E8E010580E9AA2DDC5A4B15AFB20AD66F8FFDC5FDCD4BCF9FECC50000008B25
+ 7299C8696AB94EBFE539D1B01652CF1428006C4EBE286B7192E6F2367CC13FFD
+ F0AFF57A000080C5D2CF65EA794EBFB5E542B97CAE8CD92005808D1967D1A545
+ 5AB67CB1475C6F8FFEF9479A57BC12100000582091C3442E53E6376B5B2D372A
+ DB28E37C868202C0F4D4166B3E172D2DF072D1D7DBB35FB00B000000581CFD1C
+ A69EDFF4DBB0DC28B5A436C72628006C5E6D31E68B34C5E5B85CFCEBDB67FED3
+ 1FD9050000002C84C85D228729F39AD556CB85428ACB71A936C7041400366ED8
+ E22B176E5B2B4F84F5CD2E0000006011F473977A5ED36FA3F39F7E0BA9AF1976
+ 8C211400A6235FA4B5384973A9A5C59F4E84F5ED33FFE98FED02000000E65AFF
+ EAFF1F4734A4E53950DE72F95C19B3490A005B2F2DDA72A1972740F4F5F6ECE7
+ 7FBDD7030000CCA77ECE52CF67FAAD9603A5968FD9420A009B535BA069E1962D
+ A4B86DC147BFBE7DE64F3D0B000000984F2B57FF7B394B99C7ACB6613950B490
+ 1FCB5BA936C7981400A667D842CC1770DEF2455FC66B9B5D000000C03C6ABFFA
+ DF96EBA4B86C6D861D63020A009B37EE424D8B3AB5B4F0D3C991B7F5F32BBB00
+ 4E7FA217030000CC87C851EA57FF47E53AD1E72DC9E3D2B0638C410160BAD282
+ CC17712D6E6BE5C9B1B63DF1E95FECF5000000F3A19FA3D4F397D556CB7DF216
+ 86C54C8902C0D62B1771D96A2748B4F5C71EFDF38F342F3D7FB2170300006CAF
+ C84D224729F396D1794EAD85D4B3451400A6A3B650CB855CC66DAD7692ACB6C7
+ EEFE995E0F0000B0BDFAB9493D6F596DB59C276FA12DCED5E6989002C0F40D5B
+ AC6931A7964E88F224696F4F7CFA73CD0B4FFD6E2F060000D81E9193446E52CB
+ 59DA5B9E03E52DA43E579B63131400A6A76DC1E60BBA8CDB5A7982AC6D9FFDB3
+ 773567CF7EB917030000CC56E4229193D47295F5F9CCB016DAE25C6D8E0D5000
+ D81AC3166D5AD4A99527C9E8F6DC634F37CF3EE6B5800000C0EC452E1239492D
+ 57696F79EE93B790FA5C6D8E4D520098AEB6859B2FEC326E6BE50993DA9995FE
+ D3EFFD1DAF05040000662A7290C845F2DCA4DE6A394EDE425B9CABCDB1410A00
+ 5B67D8E24D8B3BB574829427CDF0F6857BFF69AF070000988D7E0E52CF4FDA5B
+ 9EF3E42DA43E579B630A1400A6AF6D01E70BBC8CA3E527465B5B5B613BF5970F
+ 78202000003013917B440E92E724C3770144CB739DD4425B9CABCDB1090A005B
+ 6BD8224E8B3C6FE589919F38F513EBB31FFAB5E695339FEFC50000005B23728E
+ C83DCA7CA4DFCA5CA5CC69F2716A21F5B9DA1C53B26BD0337D3B8A3EC9C7F967
+ F216521C459AFC58DE9AE6F473A79BDDE77EAAD97FF0B695310000C0B43DFEF1
+ 7FD87CE9139FEE4529D98F3E6F29F9CFE348E6539F5A688B73B53936490160EB
+ F413F4BE14AF26EEEB8F97C7CAB86CA11F7FF9739F6F2EBAE6C266F7B96FE84F
+ 0300004C496CFD7FF04FFF6D2F4A097E4AF2539C27FD1147F29EC629C1CF5B48
+ 7DAE36C714B90560EBB42DE87CC197716AF9C992E2BC952758DC0AF0EB6E0500
+ 0000A6AABFF53F5E415ECF43D6B7329FC95B688B73B539A6C00E80AD95AED487
+ B557EDFBCAE3790BE55C391FFAB15B0100008069EB6FFDFF4C2F8A843FB548EE
+ CB3825FDA9A5E4BE6C21F5B9DA1C53A600B0F5F2443D37CE38FFDAB285B5E32F
+ 7FEE0BCD45D75CE05600000060D3FA5BFF7FBF1795497F99F8A73E25FE29CEE7
+ F216F238579B634A1400B65E4AD64399B8E7F2B9F2781AE7F3B571D33CF1C087
+ 9B4BAEBDA5D9B5FB9295310000C0A44EBFF0C9E6813F787B2FAA25FBA9A5043F
+ 8FA345129FFA9092FDD44AB539B68067006CBDB6055ECEA7B9D4F293271FE72D
+ 3FF1564FBA2FDDF74F9BB3AF7CB9170300004C267289C829D6E61D65FE51B6B6
+ 3C26B55C6D2ED4E698223B0066235DA50FF915FB7C3E94C7F2CF9473790BABF1
+ B38F7DA9D977E0C966EF8537AD8C010000C6F5CC677FBEF9EC9F7FA817D512FF
+ B2CF5B24F0A96F6BA5DA1C5B4401607652A21ECA783579EF1B3597E6F37EEDDC
+ 530F7EB2B9E8AB2F6F76EFFDDA95310000C0282F3CFD27CDA7DEF36BBDA896F0
+ 0F4BFE532B13FE32C1CFE7F263E5E7D8020A00B39312F490C7A5DAB13CB9CF5B
+ A8F5FDF885273EDA5C70E59B3C0F0000001829EEFB7FE403FFB839FDDCF3BD51
+ 24F329E91F27F98F04BE1C87E8CBC636510098AD94A487F5097BFBF1B2AFB5B0
+ 363EFDDC4BCDCE9DF735E77DD55F6F76EC3867300F0000B056DCF77FEAAFFEE7
+ E6C9073FDB1B45029F27FC79D25F2B0044529FFA94E09771299FAB1D670B2800
+ CC5E9EACE7CA7148097D7E2C9FABCD87D5FED9C79E68CEB9E09166DFABFEFA60
+ 0E000060AD273FFDBF368FDEF5915E14897C9EFCA73EB518D75A4AF8A395E390
+ C7B9DA1C5B440160F6CAA43DEF73B563F95CAD25F97847F3F4230F37175EBEAB
+ D9B3FFD0600E0000A0EFF953FFB2F9CCCAFBFE23716F4BFADB92FF48E0F33825
+ F429CEE79272CC8C28006C8F32594F7D1E27E55CDE9773A1FEB9273E794F73C9
+ 6BBFAED975CED5FD690000A0F34E7FF98EE6813FFAB95E14097C9EF4E7897F1E
+ A7643F5A24F2A92F5B487D1836C78C28006C8F5AC29E94E3D04FE2D77F5D1A97
+ C7EBFD738F7FD8430101008015F1D0BF876EFF878387FED512FD32E12FC7D122
+ 894FAD1C873C669B29006C9F949C873C51CFE7437E2CA9CD8518B77DBEFF50C0
+ 33CF4511E0360F050400800E8B87FE3DFA676F6B9E79F4B1DE2812F75400A825
+ FFF97C6A91D4E77199F0A7712E9FAB1D678B29006CAF5AB21EDA92F8BC0FF95C
+ 6D3EE49F699A179E7AB679E5958F34E7BFFAAF29020000400745F2FFF97B7EAC
+ 79E2139FE98D52729F12FCB6B8D6F2643FB590F729CED5E698010580EDD596B4
+ 87721C622E6FC9B0F924C53B9AE71E7BA2D977E0C966EF85370DE6000080AE88
+ 27FE7FFEEEBB7A514AF0F316897D1ED75A4AEC532BE7421E873C669B28006CBF
+ 7A92BE763E94E3DCA8CFAF8F9F7AF093CDBE4B1E6BF65E786C650C00002CBFA7
+ 1FF967CDC31FF88FBD284FFA53B25F8BD3B8AD95097F2DD1CFE76AC799110580
+ F99012F4B6243EFA3851F271DE42792C698FA30870E1E53BBD1E1000003A205E
+ F7F7E9F7FD4E2F8AC4BD96EC9771D952825FB63816224E7D8A73B53966480160
+ 3EB425E9218D877D26E49FAB7D4D583F1FAF07BCE8AB2F6B76EFFDDAC10C0000
+ B06C5E78FA4F9A4FFCF12FF6A25AB29FB7349F92FEB69692FC94D4E77D8A431E
+ B3CD1400E6479EACB725F0B93896B7D2A8B9D5F889073ED85CFC359737BBF7BE
+ 6E300300002C8B179F794FF3F13FFCDF7A519EE8BF5C8CF316097E1E97097FB4
+ DA5CB45C3E2E8FB10D1400E64B2D418F3E9F0FE5B8947F4DD987F5F1E3F7DFA1
+ 080000004B2692FF07FEDD3FED45B5C4BE8CF37E584BC97C4AFA6B897E6D8E6D
+ A600305FDA92F490C6D1C709948F4B3197CFB77D26E9C78A000000B03CD626FF
+ D1F2ABFEE50E8048EC53DFD6220F492DC62125F7699E39A600307F8625EE695C
+ FB4CF4A925799C6BFF8C220000002CBEF5C97F9EE49771DED27C99F0972DE47D
+ 8A435BCC365300984FB504BD2D990F6DC7F2AFCD5B69ED9C220000002CAE7AF2
+ 1FAD76D57FDC16897CEACB96CBC7E531B69902C07C2A93F4346E4BE043ED58DB
+ 6773F5CF28020000C0E2694FFE53C25F9B4F2D4FF8534B497E1EA796A4389F63
+ 0E2900CCAF3C311F95D8979F4D2D579B4B6AF33B140100006081AC26FF91ACD7
+ 12FCDA93FFF3643FB53CC94FE390CF873C2EB5CDB38D1400E65B9E98D712FAD4
+ C7C9554BE26BDA3E579F5704000080F9F7DC53BFD77CE20F7FAE1795097E6A6D
+ C97F1ED75A4AF2230E29B14FF3495BCC1C5100987F79625E26E9691C7D9C64F5
+ 247EBDFCEB52DFFEF55104D8F7AAC79ABD171D1BCC000000F3E2E987DFD97CFA
+ BDFFBF5E9427F7798BE43F12F888CB3EC5B5163942B488434AECD37CD2163367
+ 140016439E9897C97B326A9C945F1F7D9CA479BFDE530F7E5211000000E64C24
+ FF0FBEFF8F7B514AE6CB9692FFB62240AD455E90B7508E937C5C1E63CE28002C
+ 863229CF93F761DA8ED7FEBD3859F37EBD2802BC72E6CEE6FC57FFB566C78E73
+ 06B30000C0AC9D7DE5CBCDE74FFE48F3E8873FD41BE5097FDE6AC97F6A699C92
+ FED4221F487DAD85B2674128002C8E3C292FE37AC2BE3A5F3B5ECEC5384EE0BC
+ 5FEFB9C7BED4BCF2CA879B735EF5ADCDEEDDE70F660100805939FDC2279B2FFE
+ E5FFD29CBAF7E3BD519ED4E76DD2E43F7280612DC9E35CDB3C73440160B1E449
+ 792D81AF49F3B5E3B57F233F71D3786D1F4580E7BEF8DEE6822BBFB5D9B5FB92
+ DE1C0000300B91FC3FF8A73FD63CFDD0E77AA394C497C97EF465B25F8EA34F2D
+ FED62FFBBC853C0E6D31734C0160F1E4497B1E87729CA4F9DAF171FF8DB55E7E
+ FEA5E6D4C7FEA8B9F86B2EF386000000988178CDDFFDBFFFFFEAFD2DFE7C6F94
+ 27F56D2D92F9DA38FAD422792FFBBC853C0E6D31734E016031E549FAB8097C9A
+ AF1DCFE7263B811FBFFF83CDBE577DD1C3010100600BC5C3FE3EF59EDFEC4579
+ 423F4E8BA4BEEC538BBFFDCB3E6F218F435BCC025000585C79D25E26F5B5243F
+ A4F9DAF161C7727192C767564FF67838E099958703FE571E0E08000053140FFB
+ 7BF4E4FFD83CFAE13FEB8DCAC4BE767F7FDED2B1BC4F2DFE9E2FFBBC853C0E6D
+ 310B420160719589FAA87192E66BC7DB8EC5C91D73ED27F9F38F3DD13CF3E81F
+ 37175EF68666E739AF1ECC0200001BF5F2B31F6D3EFD9F7EA479FAA1CFF64691
+ A4E7C97DDEE258590C4871DEA7167FD7977DDE421E873C664129002CB632511F
+ 354ED27CDBF1901F8BB876C2C7DCEAB195E702DCF79EE6FC2B7636E7EC3FB432
+ 0700004CEED9C7FF55F3F17FFFB3BDBFB15FE88DF2A4BEEDAA7F3E57C6798BBF
+ DDCB3E6F218F431E8772CC825000587C65123F6A9CA4F9B6E3B9DA09DE3EF7A5
+ 4F7CB4D9B9E72F9ADD171CF2AA40000098C08B2F7CA1F9D2C7FF51F3F0EDEFEE
+ 8D6A09FD3873799FB7F87BBDECF316F238E47128C72C100580E5B0D54580F278
+ EDA45FFB4BE2CB8F7EA179EE8BFFB1B9E0F2AB9B5D7BAE1ACC0300006D4E3FF7
+ C1E6A1FFFC53CD939FFA4C6F9427F2655C9B2BE3B2C5DFEB659FB790C7218F43
+ 3966C128002C8F51497F5B923F2AF92F0DFB851056E75E7EFEC5E6D47DFF79E5
+ 2D01AFEC39D4ECD9E301810000507AFEB9679BE73FFF7F349FFC93FFEFE0157F
+ 91A0D712FBDA5C8AF3BED6E2EFF468799C5AC8E390C7A11CB380140096CBAC8A
+ 0061D82F8790E6CEAEBC25E095E7FEB439EFE0D77A4020000064E2417F5FBCEB
+ 7F6ABEF0D1BB7BA35A429FB77CAEFC5CF46D2DFE368F96C7A9853C0E791CCA31
+ 0B4A0160F96CB40810CA63E9441FF6356DBF28D6C62F3CF5ECCA0302CFFBAAE7
+ 9A333BAFB71B0000804E8BABFE2F9C7A57F389FFF00BBDBF959FEECD94097EDE
+ F2F914E77D6A691C7F8BA7B914475FB690C7218F4339668129002CA7CD140146
+ 69FBDAB65F1A29EEF74F7EFA6376030000D069E9AAFFE74FFE97DE284FDCF37E
+ 549C5A398E167F7BE771AD853C0E791CCA310B6E338920F36D58D21F711AA7B8
+ 6C3BB3BEAD4501298FD3B88C6BFDCEE68AA33737FB5EF30F9A7DFBCFEB8D0100
+ 60B9F5EFF5FFE7CD67EFBCBD374A097A5B729F8F6BC7525C6B91B8A7BED6421E
+ 873C0EE5982510C918CB2B12F8DCA871293F5EFB05D0F64BA2ECC3FAB9671E79
+ A879FEB13F6AF65DB2B7D9B3EFFAC12C00002C9FE79FF8B7CD673FF8D3CD130F
+ 3CD01BA5443D25F629A1CFC7F95CAD2F5BFC9D5DF6B516F238E47128C72C0905
+ 80E5B7D922C0B8F25F26791F22AE8F5F7EFEA5E6894F7CB817DCD99C7BE1D56E
+ 0B000060A9C476FFC7FEF21F350FDFF9EEDEDFBE2FF46652729F5A24EBB571AD
+ 1FD6E2EFEBD4B7B590C7218F433966894C2BF963BE0D4BFA234EE33C8E6DFAA9
+ 4FF3FDADFB6BE3D456B7F6AF1D8FEAD7C6D7DC726BB3F7D2EF6BF69EAB100000
+ C0E27AF1852F342F3EF6AF9A07DFFF27BD514AD26B097D5BB29F7FA6368E16C9
+ 7A1EA771487D9A0F791CF2389463964C4AF6587EE5CF3A1FA738FAD4428A2339
+ 2FE394BCA7384FE8CBF1B0A4BFFCBA9DCDBE031736977DF377363BCFFBBB9E0F
+ 0000C04289FBFC5F79F6DF368F7EE4DF34CF3F1E4FF74F097A6AB5047FD85C19
+ 47925EC6D1977148713E4EF23894639650246F7447F9F3CEC729CEFB5A8B24BD
+ EC87B54992FFB5E37D975CD85CF1E6FFBED9F7AA6FEF8D010060BE3DFFA5DF6F
+ 3EFBA17FD93CFF449EF8E7C97B39AEC5E5E76B2D92F5B2AFB550F6218F433966
+ 49450247B7943FF37C9CE2BC6F6B91A4A7BE8CF3D696E40F4FFEF3F105575FD6
+ 5C76F8FB9ABD179CE88D010060BEBCF8CC7B9B2F9EFC97CD930F7DBE378A847C
+ 58D29F8F477D2E6F91A49771F46D2D947DC8E3508E596291B4D14DF9CFBE5C07
+ 314E73791C0979EAD37C8AFBC9FADA386F79823F7EF29F3785000000E64924FE
+ 8F9EFC57CD330F3DDA1BA5E43C6F79423F2CD91F96F8478B24BDEC531C529FE6
+ 431E27F9B83C4607A4C48E6E2A7FFEF938E234AEC5A945725EF6659C5A2DB11F
+ 2FF9CF9B42000000DB6974E29FDAB0A47FD85CB448D0CB719A4B716AA12D0E79
+ 1CCA311D11491ADD56AE817C9CE2BC6F6B919CB7F56D6DF2E43F6FF18C80CBDE
+ F8773D2C1000802DF79587FB7DF8DF16F7F88F6AE31401CA16097ADEA778580B
+ 651FF23894633A24123428D7413E4E71DEE72D44429EC6659C5A39CEDB64897F
+ D9A21070F00D3736FB5EFDBD5E1F0800C054C5EBFC9EFFC26F35A7EEFDE08489
+ 7FDEC649FAA345729EC7699CC7218D530B651FF23894633A26923208E55AA88D
+ D35C2D4E2D92F232CEFB8DB4B240D0F66FED68AE78D34DCD79979F68F6EE3FDA
+ 1B0300C0C6BCF8DC9DCDB39F7B6FF3D93FFB406F1489734ACCB7AAA5FF46DE97
+ 716AA12D4E468DE9A048A420A9AD877C2EC5793FACF593F2D5388D6B715B6BDB
+ 1D50FBDAD5B90BAE7E4DF3EA6FF88E66E7BEA3760500003096B8DAFFCAF37736
+ 5FF8CBDF6B9EF9CA13FDF3A47C9A2DFF37531C7D19B7B550F6218F93DA1C1D14
+ 091394CA75918F539CF7659C5A4ACA6B716AE578DCD6F675F97FAB3F77C59B8E
+ D915000040ABD5ABFD77F446B5A43CCD0D6BE37E2E5AFED9FCBF935A398E16CA
+ 38EF431E87724CC745920435E5DAA88DD35CDEB7B59494E7F1DA44BD3E6E6B6D
+ 9FCBE7D7FE37F65D724173E9D71F6BCE7BCDB737BBCF796D6F0E0080AE7AF9A5
+ 4F35CF7EFEF79BC7FEEA8EE6F9279EE9CD94C978F4655C6B1B391E73E57F6354
+ 0B799FE264D4185612236853AE8FB671DE97716A29112FC7B53E6FB5B971E7CB
+ 388D77ACDC2270F0EB8E35E75E7242310000A02322E97FE189F736A73E7EC760
+ 8B7F24C92901AFF5655CB6B663E57CDBBF9BCFD75A28E3BC4F468D6145244430
+ 4AB94EF2718A6BFDA85626E6699CF7E57CDBB89CAF7DBE3CD69FBBF8AACB9A57
+ 5D7B63B3E7C26F729B0000C09289EDFDA79FFE68F3A5073ED83CF970BCB73F92
+ E368B5C43CF5C3E2B6B9619FC9FB5A1C529FE6A385B63EE47128C7B046244030
+ 8E72ADB48DF3BE8CDB5A9994D7FAD4F271792C9FAB7D6E58DF6F719BC0255F77
+ A839EFD5479B66CF3779802000C0828907F935A73FDA3CFB853B9B273E7ECF60
+ 7B7F24C6A9950979AD1F168F7BACFC4C3E3FAC8532CEFB64D418D689A407C655
+ 5B2FF95C8A6B7D6A211F47CB93F05A9CF7C3E27C5CFBCCB03E6FAB73175FF59A
+ E6C2AF3ED49C7BD13735CDDE6F5410000098332B09FF8B7FD1BCF0D4479BA73F
+ 734FF3E4C3696B7FB45AC29D27E76DFDB0381FD73E53EB532BC7D1426D2EE4C7
+ 933C4E6A73B04E243930A972DDB48DF3BE8CF3B9E149F8FA643DFACDCC453F6E
+ BCB6A582C03917BCB6D973DE37797E0000C08CC57DFCA79FFD68F3D2339FAA24
+ FC65CB13EE5171DEB7CDD5E66B7D19E77321F5693E9471DE27A3C630542435B0
+ 11B5B553CEA5C439C9C7291ED56A89F9247D8ADBC6A3E251AD695E7DC3A166FF
+ AB5ED7ECD9F7BA66D739AF6E76EFFBC69579000036E7E5E7FFA239F3D2179AD3
+ CF7FB279EE4B9F6CBE70D73D832391F88ED3DA12F2326E1BE77DDB67F2CF95F1
+ A816F23894E3508E436D0E86EA2730B071E51A6A1B0FEBC769E326EEA3C6B5BE
+ 8C87CD952DAC9F8B9D027B0FBEA639FFABBEA9D9B1EBBC66CFB9AF6BCEECF82A
+ B710000014620BFFAEB35F6C4EBFF0C9E6EC99679B2F7FF1A3CD8BA73E3FB8B2
+ 1F52429C5A28E7CA564BC26B497AD9A778D438EFCBF9715AC8E390CFE7468D61
+ 6C298181CDA8ADA3722E8D6B7D6A211FB7B53231AF25F2653FEA586AE5E743ED
+ 73211DAF1D2BE3D57EA53870E9AB7BBFBB77AC1408C24A91206E27D8D9FFCCE9
+ B3AF6DF6ED3F6F250600583429A95FF1CAD9E6F44B9F5A49EE4324F8CD8EB3CD
+ 8B8F7DA148F2CBBE8CF3B948B643792CCDE7C9782D314F73653FEEB1321EA785
+ 32AEF549390EB539185B4A4C601ACAF5545B5F3197CFE7E35A3CAA95C979DB38
+ 9F6F8B6BE3BCC5B190FADA67A285321ED627E538D4E60000E6D938896B1A0FEB
+ CBB86C2192F0D4D73E13AD3CD696C4A7B8EDF8B0B9B61686C5799F94E3509B83
+ 89492E98B67192D834CEE723CEE7CB389F1B95A40F9B2B8F8F1A4FD2426D9CFA
+ 1487729C9473B5CF0000CCB37113DA7C3E1FE77D39BF915626ECC3C6A33E5BB6
+ 381ECAF9D016877C3E376A0C9B22B960AB4C92DCE6F311E7F3B53892F490E652
+ 1B96BCD78EB5CD8561FF56D9C2B0B930AACF8D3B0700304F6AC9EAB0B9617D19
+ 0F9B6B6B2939AF25F193CC85DAB1908EE7736D71C8E773E538D4E6605324156C
+ B57192D934CEE7232EE7D35C6D3C4E1B27B99FA4001046CD85723E298FE76A73
+ B951C70100B6DAA8047558529B1F8BB89C4F73B571DB5CD98625EFA98DF399B6
+ 166AE3D4A73894C793721C6A733015920866A55C6BC392DEFC58C4B5719A2BC7
+ 2981CFE76B2D4FF4535FFB5CAD85DA7CB4302CCEFB509BCBB5CD0300CCABB604
+ B696049773D10F8BCB166AF3B59627FBA9AF7D2E6F217DBE9C2FC7A136CEFB5C
+ 3957FB0C4C95E48259AAADB76173F9B1722EFA6171D9C2B8C581512D4C3237AC
+ 0F6D719B713E0300300BE324ADF9676AF1B03E6F619CB9495BA825F9790BC3E2
+ BC0FB5B964DC39983A8904DBA1B6EE86CDE5C7CAB9E8DBE66AE33437AA18106A
+ F3D1C2B0B9D016877C3E698B010016592D290E292EE7F2F961F1B0B9D4426D3E
+ 5A684BFA43DB38B4F5A136978C3B075B46A2C176AAADBF6173E5B118E773F978
+ 543CEDB9304E1CF2F9DCA83100C0A22813DBB6713E1F713E3F6E3CEDB9D01687
+ DA38C9E364DC39D872120CE6416D1D8E9AABC5C3FA71E3DA5CC88F9573A18CCB
+ 3EC5A13C9E1B770E00601E4D9A00E7C7222EE7F37E585C9B0BF9B1722E0C8B87
+ F5A13697ABCDB77D16664262C13C695B8FC392E2F2588CF3B961E369C665DF76
+ 2CD4E69271E70000E6D1B8496F9ACB8F9573D1D7E6523FED388C1A87342EE743
+ 6D2EB4CDC34C492C98476DEB7254725C8BCBB9B671AD6F8BCB7ED8B1BC0FB5B9
+ A49CAB7D06006011B425CDB934971F2BE76AFDB8C76AC7539FE2501BE77D688B
+ 93DA5C689B876D21C1609EB5ADCF71E66BF1B0B95A9FE2908F47F521E2729CF7
+ C9A83100C0A22B93E0B6713E1F71391ED5A738E4E3517D183617F23837E93C6C
+ 2BC9068BA26DAD8E9A2F8FD7E6C7991BD587713E136A5F5333EC1800C03C1B96
+ 000F4BACD3B8AD0FA33E53F661DCB9D0369F4C3A0F734382C1A2695BB3E3CC97
+ 9F49E371E6A73117F23819770E006091D412E25173B5785A7361D47C288F2593
+ CEC3DC9164B0C8DAD6EFB8F36DE3CDCCB7C561D8B1DCB06300008B6458723C2C
+ E96E3B96E2B6CF4F3A9F94E364D279986B120D96C14693E9FC58ED73696E9263
+ F978D8D785DAF1716CF4EB0000A66DA38970FE75B57F63D8F1341EF675C38E85
+ DAF164A3C760EE49245836C3D6F424C76A9FCDE7367B3CA9CD01002CB351C979
+ 92CF6DF678A87D26D9E8315828920F96D9B0F53D6AED97C7DB3EBFD1CF85B6CF
+ 02002CBB7112F6A49CDFECE79261C7477D2D2C2409085D316AAD6FE4F8B0AF99
+ F4F36D36F2350000DB6923C973ED6B264DD047FD77377B1C169EE4822E1A67DD
+ 6FE633D3FAF7010096D9380977DB6736F3B539493F9DB26BD04397CD3A6197FC
+ 0300F48D4AC02749D025FC30820200AC376E822E910700D89C8D26E4E37E9D84
+ 1F321218186DD2F3C4790500301D9326F0127E1842A2021BB39973C7790700D0
+ B799845DB20F139288C07439A70000A64BA20F53225981D972CE0100AC25C107
0000000000000000000000000000000000000000000000000000000000000000
- 4067EC188CC06CF8CE0100AC756E30025B4C3102D3E53B0500305D1A0430258A
- 15D898CD7C777CEF0000FA3653DC6B0CC084142230DAA4DF13DF2B0080E998B4
- C8D7148021142AB0DEB8DF8B8D7E7F7CEF0000FA365AB08FFB731A02905188C0
- 78DF8349BE2BA33EEB7B0700D037AA409FA4801FE7B31A02749A42842E9A56C1
- DFF69969FDF7010096D9660AF66915FB1A02748A2284AE1875AE6FE4F8B09F99
- F4F36D36F2330000DB69234575ED6786FD7726FD7CD8EC7158788A0B96D9A405
- 7AAE3CDEF6F98D7E2EB47D160060D94D52C097EB9BFD5C32ECF8A89F8585A400
- 61D90C3BA7273956FB6CBEB6D9E3496D0D006099D58AEB516B9B3D1E6A9F4936
- 7A0C168AE2836530EC3C1EF758ED73696D9263F97CD8CF85DAF1716CF4E70000
- A66DA3C571FE73B5FFC6B0E3693EECE7861D0BB5E3C9468FC1DC5348B0C8DACE
- DF71D7DBE69B596FCBC3B063B961C7000016C9B8C574F9B9B663296FFBFCA4EB
- 49394F265D87B9A6D060D1B49DB3E3AC979F49F371D6A7B116F23C19770D0060
- 91D48AE4516BB57C5A6B61D47A288F2593AEC3DC5164B028DACED551EBE5F1DA
- FA386BA3C630CE6742ED676A861D03009867C38AE261C5769AB78D61D467CA31
- 8CBB16DAD69349D7616E283098676DE7E738EBB57CD85A6D4C79C8E7A3C61079
- 39CFC764D41C0060D1B515D8499AE7EB9197F35163CA433E1F3586616B21CF73
- 93AEC3B6526C308FDACECBDA7ABE56CBCBB5B6796D6CCBCB71D8B17C0CB5B5A4
- 5CAB7D06006011940570AD204E6BF9B172AD368E7BAC763C8D290FB5793E86B6
- 3CA9AD85B675D8160A0CE649DBF938AC582E8FC53C5F1B369F665E8E6DC79AE6
- 8A235735E7EDBF6A25DFFBB2A32BE38E9D1736BBCE7BDDD7FEFF889D3B7B796F
- 0D0060219D7DB2397BF6E3FDBCF76BD099173EDE9CEBAD85E79FBE63657CE1D1
- 879A2FDCF5D04ADE978AE57CACADA571DA7918350F695EAE87DA5A685B87995A
- 2D4A60FBD4CEC3516BB57CD8386E5E5B0BF9B1722DACCDAF3872E54A911F05FE
- 4A71BFA757D0EFB8B2D9B9EBCAC16700000867CF7CAE571F7FAE3973BADF2488
- 0641BF39D05B5F536C0FCB6B6B213F56AE8561F9B031B4E5C9B86B3033A96081
- ED503BFF86AD95C7629EAFE5F351F9F4D6BEFE6F1D6DF6BEF475CDCE3DAF5F29
- F077EEFE8EC131000036E3EC8B1F5A69109C3DFDD7CDF3CF7CBCF9EC7F8CDD03
- A9888E318F308DB5D09687721EF2CF96C65D832D978A1898A5DA79376C2D3F56
- AEC5D8B6569BA7B59D83B13C9622AC5FBFE2F055CDCBAEFC8E66E779AF6F769F
- F71DCD8E5DAFEBAD0300302BE7CE7CBC79F1850F35675FF8EBE6E9CF7DA8F9C2
- C9B88D200AEA32426D3D229C1D8CB563B5791A6B6B496D2D19770DB64C2A7460
- 166AE7DBB0B5FC58B916E3B0BC8C30AAE85F1F51F0BFF495479B3DFBBE73A5D8
- B7851F0060BEC40E81680A9C7EF6BDCD339FBF634843A02D425B3320451896E7
- 63A8AD25E3AEC1D4459103B3509E6BB5732FADE5C722AFCDD35A391FB7C84F9F
- CBC71DCD25AFBEA8B9F4B5479BF35EFA9D2B5BF915FC00008B65E59681173FD4
- BCF0CC7B9BC7EEBBA3F9CAA79FE8AD46819D8AFC7C8CF561116ACD8150CE436D
- 9E8FB972ADF61998AA2884602BD5CEB1722DCDF3F5C8CBF5B4569B8F136B8BFD
- 147195FF82AB6F69769DF71DBDF8CEF80000004BE2CC0BEFEDC5879AA71E784F
- 6577C024CD8032426D9EC69487F27852CE436D0DA6220A20D80AB573AB5C4BF3
- 7C3DF27CBD96A7423EADA5585BD8AF8D4AD17FF0D666CFBEEF711F3F004047F4
- 6F15F8B7CD530FBEBBA51990CFF3A81D0BE5EE80D096877C3D57CE436D0D3625
- 8A2198A6DA3955AEA579BE1E79BE5EE6F9DAF8857EBE16DBFB0F5C7B6BB3F7C2
- 1F56F40300745C34039E7FF2B79A53F7BEBBB84D20C63C46350642B91EDAF290
- AFE7CA79A8ADC186447104D3529E4FB5F32B15E5493EAFE5A3A22CF8D7CF5FF3
- B76F69F65EF0BDCDAE3D277A73000058EBCCE9F735CF3FF56F9A4FFDEFEFE9CD
- CA827FD47C5884B63C94F3A45CAB7D06261605126C56ED3C2AD7D2BC36A608F9
- BC2D8615FDFDFCF243079B8B5EF37F5BB9A7DF83FC000018473C40309E19F0C4
- A77EB379F8EE077B2B5178E705FF469B01A136AF8D49390FB535185B144CB019
- E539D4361F368E13EB8BFC5AFE9AEFBCB5D97BF19B5CED070060535676053CFE
- 07CDA7DEFBEEDEACAD0930AC39302CC2A831193587B145D1041B513B77CAB554
- 9827F93CE5A3A256ECAF1D2F7ED5C5CDCBBFF97B9BDDFB7ED8D57E0000A62A76
- 05BCF8EC6F355FFAD8BF691EFFCCE3BD9528C053B15F8E653E2A429E87721ECA
- 79A8ADC1505144C1A4CAF3A66D9E8F659EAFE5457E8A5185FFCEE6F243573517
- BDFA7B9B3D2FF9E1DEF4C2DE1A00006C91B34F36A7BFFA5BCD174FBEB379FC33
- F1D0C028F4276D04C45A28D74399E763326A0E43453105E3AA9D2FF95ACA6B63
- 8A90CF236AC57E9EAF2FFC2FFEC6B736BBF77E4F6F0E0000B3F5E2F3FFB679FC
- 13BFD43C7C77BC4A308AFAB2019017FF6D798A509BD7C690E7496D0DD689A20A
- C6519E2B6DF37C2CF3B6A815FAE5D82BFCBFE56073F1353FAEF00700602EAC34
- 02EEFFE5E6E18FC60303A3B82F1B006DE3B008659E8FC9A839AC13C5158C529E
- 27F93CE5B57154A4023FE50A7F000016CF788D80BCF8CFF36111DAC690E7A19C
- C31A5164419BF2FC689BE76399A7C88BFD7C5E2FFA23E2E17EAF38F2E3CD9EF3
- 7FB837070080F976FAB9DF6ABE78D72F0F1E16988AFE54ECB78D29CA794428F3
- 7C4C46CD6145145C50539E1BB5795ACBC7B648057E9EAF2FFA63BE52F81F7EB3
- 87FB0100B078D63C2C307F6B408A34CFC732AF45C8C79427A3E6B0527C41A93C
- 2FF279CAF3B1CC53A402BF96AF16FCF9FC1BFFCBEF6DCEBBE8C79B9D3B5FD99B
- 0300C0623A7BF6F3CD0B4FFC72F38977FD9B9865118579394F6BB53C4528F390
- C690E7A19CD371517C41523B1FF2B594E7E3B048057ECACB827F357FE50DDFD4
- 5C7CE5FFD8ECDCF3C6DE1C000096C3D9D37FDE3CFEB9FF57F3F93FFBAB980D22
- 0AF3B63CCD53DE16A11C439E27B5353A280A3008E5B9509BA7B55A9E2215F679
- BEB6D8CFC37DFE00007441FBF3015244915E8E659E22B4E5C9A8391D14451994
- E7413E4F793EE61152811F51E629CAF9CEE635DF794BB36FFF3B7AA9FBFC0100
- E880B34F36CF3EFA53CDA7DEFB9E981411057A394F6B791ED23C4528C790E7A1
- 9CD3315194D16DE53990CF539E8F6D9117F9E5B836E2B57E975EFB2F6CF70700
- A093E2B680C7EEFD47C56B03F38842BD6D6C8B508E21CF4339A743760D46BA29
- 0AF45C3E8F3C8F54D0D7D6CB88F32A8D79EC6EAEF9BB3FD25C78E5FFDAECD8FD
- 9ADE1C0000BA67C7AE2B9B7D97BDA9B9F8552F368FDE7F775ACD22A431D4D672
- B5CF26A3E67488BFFCEE1AF58F445ACBF328EAD398D6531E6399AFC6E5DF7C75
- 73E975EF70D51F0000322BBB01EEF9A9E6E18F3D10B34AC415FB328F31E5218D
- 693DE47992CFCB6374405C95A55B52E19E94797E3C9FE7C57D1A53C47994E779
- EC6EBEF1BFFCBEE6C283FF9BABFE000050E8EF06F89EE6A2838F358F7DE2DEB4
- 9A4552CBCB31573B56E6B59F6389F90BEF96F2EFBBFC07A01C6B11457E39D623
- 9EF07FC5B7FD8B66D79E13BD39000030CC99D3EF6BBEF097FF68C89B0252C4D5
- FB72AC4528C790E7A19CB3A4A280A31BCABFEB7C9EF21853849447415FE6A9D0
- 4F79BE0B606773F5DFB8A179D92BDED1ECDCF9CADE1C000018CBD9279B27BFF8
- 7F6F1EF84F7F16932CCE0CC628D6D35ACA632CF390F27C9EE47928E72CA128DA
- 587E51A4E7F279E46584BCB84FEBAB05FE6AE4DBFDFB71EDDFFB8966DFFE7FDE
- ECD8E1F57E000030911D7B9BBD177C4F73E9AB7736A7EEFBF35818444863D236
- 8F310AFAFCF8B83FCB12F397BCFC867DB1234FF394D7220AFD34B6C7C55F7F49
- F3CA6FFF350FFA030080298807047EFE2FDED23CFED9AFC46C4444C19FC6B608
- 791EF23C9473964814752CAFF2EF379F479EE6292F230AFB722C23AEFAEF6C0E
- 1EFDA6E6A2AFFFFFF55257FD0100606ACE3ED93CF1D9FFBA79F08EBF8A492FD2
- AD006544E15E8EB508791EF23C94739644146F2CA728D873F93CF2344F791951
- DCA73115FA65EC5E19E329FF2FBBE2B77A1FDFDB9B03000053D3FB1DFB2597FC
- D7CD45577DA179EC13F7C4427F7DCDEFEE692D29E7A5519F1FF5F32CA828E258
- 3EC3BEC091A779CACB48457F2DD63601AE7BD32F36E7BDECBFEBE50000C056D9
- 7DFE8966FF6B0F36A73EFE1F072BE977F79AB6F55CF99951739680BFD4E533EC
- 8B1B799AA73C8F28F0D398E751ECA7B5FEFCE2AFBFB8B9F23B7EAFD9B1EBBADE
- 1C000098857367EE693EF7A1EF6F1EFF6CBC2AB0BC1D609C3705E411F23CE479
- 28E72C303B00964B14ECB97C1E799AA73C452AECF3BC5FE8AF2DFEFBF3B8DFFF
- C037FF5EB373D7AB7B730000605676ECBCACB9E0CABFDB9C7FC15F344F7CEE54
- ACF40FAC48BFDF97DAD643B93E6ACE02D300581EC3BEA891A779CA5344619FE7
- B5488D807EF11F0FFB8B7F78000080D98BD76DBFE4A2BFD3BCE482DB064D8095
- D5C1384CDB67CAF55173169406C07218F6058D3CCD539E228AFB34B6C56AF1FF
- 0D7FDBC3FE0000602E0C1E0E78E1950F378F7D327F38609B74BCED73E5FAA839
- 0B480360F10DFB62469EE6294F11C57D39E6B15AF8C73C8AFFF32FFD855E0E00
- 00CC8B3DE79F1834013EDE9BC5EFF5218DA5718F27A3E62C180D80C536EC0B19
- 799AA73C455EF4A7318FBCF8EF3FE97FEF059EF40F0000F3289A00EBDF10D026
- 1D6BFB4CB93E6ACE02D100585CC3BE8891A779CA53E4457F1A6B857F7F7EDD9B
- FE45B37BEF77F7720000605EEDDC7D5DB3FFB557559A0069CC0D3B16CAF55173
- 168406C0E2CABF74659EE6294F9117FD694CB15AF4A751F10F00008B63B64D00
- 169006C062CABF7C659EE6294F11457D39A650FC0300C032985D13A0ED679863
- 1A008BA7ED4B17799AA73C4514F5E598222FFE23762BFE01006081AD3601DE3F
- 5849A21628A5B5DAB150AEE7F3B69F614E69002C96B62F5BE4699EF21479D19F
- C61465F11F57FEDFA1F807008005B77E274012354129ADD58E85723D9FB7FD0C
- 7348036071B47DC9224FF394A7C88BFE34A650FC0300C032D304A0A001B018DA
- BE6CF9588B5AE19F8AFE342AFE010060594DD6041847DBCF6DF4BFC70C69002C
- 86FCCB94F27CAC4514F869CC43F10F00005D327913A06D3D49C7477D8E39A301
- 30FFF22F5599E711A2B04FF3BCE8CF2315FE91EF6EAEF9AE1F6FCE3BFF877A39
- 0000B0ACA20970F16B76368FDEFB17BDD9B95EA41A621CC33E9FAF4FF2DF641B
- 6800CCB7B62F53E4691E857C1AD37A2AF6CBC88BFF5DCD37FCEDEF6D5E72D1DB
- 7A390000B0EC769FF7C6E6C22BBFD03CF6C97B062B798D314C7C2E35016ACD80
- 7C3EEE7F936DA00130BFDABE4491A779CAA3A0CFF35AAC2FFECFBFF4177A3900
- 00D0157BCE3FB1C9264052FE5C3E1FF7BFC98C6900CCA7B62F538C659E2215FA
- 799E0AFE94F7E38AEFF8A6E6C2CBFFDFBD8FEEEDCD0100802ED9B3F73B9ADD2F
- FB60F3D4E74E0D564AB5423F5F4BD2B19A61C7D8261A00F329FFB2A43C1FCB28
- 0BFFBCE84F633F5EF14D079B03AFFD83DEF205BD390000D0393BF636FB2EFE3B
- BD4AE15DCDD35F7E6AB0384AD41B6DD2B1619F610E6800CC9FFC4B53E6B58802
- 3F8D65AC6D005C74F525CDE5DFFA9BCD8E5DAFECCD010080CE8A26C0656F6C9E
- 7FEA5DCDF34F3C3F581C25EA8E51F2CF8CF37966288A43E647DB9725F234CFC7
- B6585FFC47BCF2DBFE79AFF8BFAE970300005D17B541D40879CDB0B696A8D51A
- 29423EA63CB4E56CB3F88B657ED4BE28319679FE658CBC8CFCCBBB7B65BCE6EF
- BDB5D9B3EFFFDACB010000FA76EE7E7573F1AB77368FDEF7E7BD59D417B57BFD
- 6BCACFC69C39A701303FF22F4CCAF3B18CB2E8CF233500FAF1AAE3B734FB2EFD
- 27BD1C000060ADDDE77D7BF3D2AFBBAF79FC339F1EAC8CA3AD5110B54A3E863C
- 671B6900CC87B62F47E4B588223F8D79D19F17FF91EF6EAE7AE33735175EF9AB
- BD8F7BE23F00005077DEBE9B9BBD2FFD60F3E4E7E3CD0051DC47BD912B0BFEF2
- 784DFE99713ECF16D300980FE9CB507E41D23C8AF934C65A8C65940D805DCD45
- 072F690E7CF3AF363B3DF40F00001866C7DE66CF85479A17267A2860921A06B5
- C64139671B69006CBFFC0B91F218CB3C8AFB3CCF2315FD79BEBB79F5DFFA9F9A
- DDE7DDD4CB01000086DBB9F340F3D2977F5D73EA9EF7F766B52DFEB5B510354A
- 7E2CE6356DEBCC8806C0F6CABF00655E8BB2F04F918AFED5F8865BDFD4ECBDF0
- C77A390000C07876EEBEAEB9F0955F681EFBE4BD839571B4350692A865923C67
- C63400B6573AF9CB2F449A47719FE6292F0BFF34AEC6E5DFFECDCD4557FC52EF
- E3EEFB07000026B3E7256F6C76EDBBBD79FAF38F0C564A65C19FEA97248E976B
- E59C6D10C523DBA3F60588B5B49E8F65E44D803CFA0D804B5EF53FF7A617F472
- 00008009F56A89959AE26B17196BB54744AD5609F998F25C6D8D1988BF4C662F
- 3FE1CBBC16B52F5BFE658C77FDF7E7AFFDAEFFA1D9F392E3BD1C00006063E279
- 0097BCE6A2E6D17B6F1BAC84FCCA7F6DDBBF5B01E69C06C0F6A89DF831A63C8A
- FA344F795EF8A7716D7EF0FF72B479E901EFFB070000366FD779879A975CFA97
- CD130F7C7EB032AAE84FF54C12C7CA35B651148FCC56FE054879DB5A19F1F795
- C614FD26C085575DD25C70456CD3010000988EA831A2D6C86B8FD5C86B943242
- 1AC3B0356624FEB2D81EE5C91EF33C42CACB2FD8FAB8FC5B7FACD9B9D3FBFE01
- 0080E9891A236A8DB2FE588DB25E890829CFD79272CE8C440787D9C94FF494E7
- 5F88FC4B537E99D66EF75F8DDD83ADFFFFB8970300004C57FF56800F0F6E0568
- BBCF7FA3B702B4ADB305A2A06436F213BB7692A7B518CBBC6C06ACC685575DDC
- 5C70C53FEBE50000005B236A8EA83D6A35C9DA9A25229479295FAB1D670BC45F
- 12DB277D29F20831D6BE5065ECB2F51F0000D872ABB702A49DC965D46A981063
- 196C93F88B61EBE52779CA6B277F5ACB23FF12E5D12BFEBFFDF5CD792FFD6F7A
- 390000C0D68ADA236A90F6264044ADA6C9E56BF9B1F2736C81F80B62766A2775
- FA020C8BF445CABF583B9B4B5E65EB3F0000303B975CFD33BDFF736D5DB2B666
- 1915A5DA1A5B243A376CADFC844E797EF2A7BCFCF2945DB598AFC637FC9D1F6E
- CEDBF7F77B390000C06CECDCF5CAE6C2AB9F6E1EBBFFE46025C443FE5224791E
- F279AA854A6DEB4C491496CC46ED648EB53C423ECF1B00AB71E1959734E75FF0
- FFE8E5000000B315B548D424B55AA51F794D13F2795ACBD5D6D802F197C3D669
- 3BB9D37ACA53D4BE34F95A3F2E7F43AFF8DF79412F07000098B15E2DB2529354
- 6A95E1B54D8A90E7B9DA1A53127F196CBD6127763AF1CBC8BF30ABF175D71DF4
- E03F0000605B454D12B549AD66E947ADC6890869CCD5D698B2F88B616BB49DD4
- F9495FE629F22F4DCAFB71E09B3CF80F0000D87EFDDA646DBDB2BE9EC923B4E5
- B9DA1A53107F296CAD6127743AE1F3C8BF28E98BD38FAB6EFE8E66D779DFD6CB
- 010000B657D42651A394754BBDB6C923A431575B638AE22F84E96B3B99F393BD
- CCF328BF3CFDFC82CBFFFBDE080000301FFA35CAFADA65755E4668CB73B53536
- 29FE52D83AC34EE474A2E7517E4956BF3CAFB9E57B9A5DBBAFEDE5000000F321
- 6A94A855F2DA657D4D93CF538434E66A6B4C49FC65305D6D27717E92977944FA
- 62A42FCDDA38FF52AFFD030000E64FBF56A9D7316B6B9D14A12DCFD5D6D884F8
- 8B606B0C3B81D3099E22FF62AC8FD7DCF2DDCD8E9D57F472000080F912B54AD4
- 2CB55AA61F79CD93474863AEB6C614C45F02D3D376F2E6277799B7C5EA17C6D5
- 7F0000609EADDF0550AB71F2086D79AEB6C606C55F0CD337ECC44D27768AF4E5
- C8BF2CABE1EA3F000030EFEC025808F117C074B49DB4F9495DE66DB1FA2571F5
- 1F00005804FDDA656D3D333C425B9EABADB1011A00D337EC844D27748AF4A548
- 5F90B5E1EA3F0000B028EC02987BF187CFE6B59DACF9C95CE66DB1FA0571F51F
- 000058249E0530D7E22F84AD559EC865E45F8ED5B8EAA637BAFA0F00002C94A8
- 61A296A9D538FDA8D54411218D6C91F80B607AF2137758DE16AB5F8C0B5EF1DF
- F646000080C5D2AF65566B9B7AED934718963325F197C1E60C3B21F363E9244E
- 91BE08F917A31F577EDB75CDAEF3BEAD970300002C96A865A2A6A9D53A6B6BA1
- 3C923C2F0D3BC618E20F9EE91875A2D6223FF157F3975DF50F7A230000C062EA
- D734C3EB9EF5D166D83126A001B039B513313F81F308292F4FFA34DFD95C78E5
- 45CD9EF3FF5E2F070000584C51D3446D93D73AF51A2822E4C7F228D5D61853FC
- A1B3B5D289DB76C2E7E3CEE6E587E2B5190000008BAD5FDBF4EB9C7A0D94229F
- B385E20F9ACD4B276A7ED2D64EE0B49622FF02F463EF853FD81B010000165BBF
- B659AD75D6D64079E4F2B5326793E20F9F8D19760296276C5BE45F841DCD5537
- 7DBB57FF0100004BA1FF4AC06F8F6C106BEB9FF60869AC19768C21340036AF76
- F295276E6D9E9FF8FD2FC24B2FFBFBBD1100006039F46B9CB2F0CFF390F2725E
- AAAD3181F883673AD2499A9F94F95A443AD1CB937F6773C12B3DFC0F0000582E
- 51E344AD93EA9EE1B5518AA4B6C626C41F36931BE704CC4FD63CCA93BE1F5FF7
- FABFD51B010000964BBFD659AD7DEAB55119A38CF3190AF107CEC6A5932E3F49
- F33C496B79AC3DD9F75EE2E17F0000C0F2E9D73AEDB5D06AE4F2B53267833400
- A6AB3C41DB229DF031EE6C2E7BFD55CDAEDDAFEDE5000000CB256A9DA87952FD
- B3B6261A16218D4C41FCA13399714FC0DA895B8F8B0FFECDDE080000B09CFA35
- 4FBD1EEA4728E7A38CFB3906340036AE3C49439E2769AD8CD4FDDAD9ECB9F0BB
- 7A230000C072EAD73CAB3550BD468AC8E56B65CE06C41F3CD3519E986DB1F684
- BFECF557DAFE0F00002CB5FE6D0057F6B27A5DD41E218D6C9206C064C63DF16A
- 276C447E82F74FF88BAF3EDE1B010000965BBFF6290BFF3C0F294FF351C6FD1C
- 3DF187CDE4CA9333E47912F37442E727F66AECB9C0BBFF010080E5D7AF7DD6D7
- 44EB6BA65CFA4C287326A401301DE5099947C8C7F833EF9FD8975E6BFB3F0000
- D00D51FB440D54D6457DF9584648239BA00130BE714FB8DA891A914EEED5F9FE
- 57DBFE0F00007447BF065A5F1BADE6213F368E713FD7791A0093AB9D5CB59333
- ADB5C7EE7DDFD61B010000BAA15F03D5EBA3B591ABAD85DA1A4368006C5C3A09
- F3932E5FABC5DA4ED7EEBD7FA3370200007443BF066AAF91EA91D4D6988006C0
- F4E427633A21DBD7BEFEBFB0FD1F0000E89E7E2DB4BE461ABDC62669008C6723
- 275C79C246C49F773FCEBBE8DB7B23000040B7F46BA1D5DAA85E3B4D6A233FD3
- 39F187CDF8D249959F9429AFCDDB63F74BDED01B010000BAA55F0BD5EBA4F511
- DAE6218D8C41036073CA93AE36AE8F0BAEB8D0EBFF0000804E8A5A286AA25AAD
- D48F306A64033400A6274EC414211FD7C6FE6B6DFF070000BAAB5F13ADAF95FA
- F2315F67933400461B76B2B59D8C69BD1EE75DE0F57F00004077F56BA27ABDB4
- 1AA5B6F564D8317A3400C6974EA6DA4997D6C6899DEEFF0700003AAD5F13453D
- 5AAB99DA2297AF95C768A101B071B5932D9D847984B573F7FF0300005DB65A13
- ADAD95D6CEF3F590F27C8D0968004C47796226B19677B57636571E73FF3F0000
- 40BF365A5B2FF5C7523ACE2669004C5F3A39F3937435DF77A9FBFF010000566B
- A35AED94AF31251A00C30D3BE1CA1332CD87C5CE66D75EDBFF010000FAB551BE
- 03605824E5BC34EC58E769008C279D44B5932D5FAB7D2EE5FDF9AE3D1A000000
- 00ABB5D1DA9A697D9EC69427B5CF318406C0C6D44EB2722DC6B5F1B2CB2F6A76
- ECBCA297030000745BD44651239575533F423986DA1A63D200D8BC38F1F293B0
- 6DBEA3B9F8D5AEFE03000024FD1A696DDDD4D7366713340036AE3CF96A27E7DA
- D87BE1B5BD11000080D0AF91EAF5535F9E27E59C316900B41B7652952763FED9
- DAB17EEC39DF0E0000008064D779718BF4FADAA92F8D61D8B1D2B0639DA60130
- 5A7E828D7392B57D6E47B373F72B0739000000BBF7A61D00A5BCAEAA1D4FC6FD
- 1C3D1A0093AB9D5CE55A8CEB63E7AE6B7A23000000A15F23D5EBA7BE720CB535
- C6A001B03971C2E5275FDB3CDE007041B363E70571000000809EA891A2562AEB
- A7BEB6391BA401307DF593F4E2577B0020000040A95F2BADAFA156E74C8906C0
- C69427627982AE1F77EDBE709003000090F46BA5F65A6A3572E59C316800D40D
- 3B99D2B17412B67D76EDF1BD177A030000004069B5565A5B43AD571E6FFB5C18
- 76ACB3340086CB4FAC714EAEF4B9FCB3FDF9CEDDF17A0B000000D6D8913F0320
- 49F3B4961F2B8DFBB9CED300984CEDA42AD7F27135D700000000586FF7DED801
- 50AFA3EA63A8AD318206C0C6C589D676B2A563AB9FD9B1D2D5020000A06E7D1D
- B5DEB0638CA001301DA34FD29D7BE2FD96000000E4769DF7ADBDFFB3BD961A5E
- 6B31010D80E9CA4FCE3C00000018AE564B4530251A00932B4FC0F2C45C7FFCC0
- 37BE729003000050EAD74CB55A2B8D2972E59C11340036A7ED845B7B82BEE432
- 0F0004000068B35A33ADADA5D66B5B670C1A00EB0D3BA1D2B1B613B2FEB3E786
- FE37010000BAADBD666AABBBD2FAB05A6BD8B14ED200D8BC61275EACED6876EF
- 79597F0A0000C03AFD9AA95F3FAD37ACE662021A00A3B59D84B9FC78FA7C5ADB
- D1ECBDE0DA410E000040A95F33ADD6506B6BAA90E735E5E7A9D00068579E3CB5
- 9369D4679C80000000E3DB488DA50E1B9306C0E4D2C9D47652C57A0A00000026
- 33AAA64AEB6AAE0969006C4C79A20D3B39010000D8B85ABDA5FEDA000D80CD1B
- 75E2393101000046535B6D310D80ADD53F41779DF7DA9511000080F576ECB922
- 6583912DA001305DF9C9BA9AEFD8E535800000006D76EDBE7C90857A5DC5A669
- 004C4F3A316374C20200004CA6ACA3D25C4D35251A00000000D0011A009B9377
- A56A74AA000000C637AABE52636D820600000000748006C064DABA4D693D3FAE
- 3305000030B95A5DD5565FA9BB26A001307D71021627E1392725000040AB7535
- 53A5AE62B33400000000A0033400000000A0033400000000A0033400000000A0
- 033400366EDC07527870050000C0686AAC2DA601000000001DA001000000001D
- A001000000001DA001000000001DA001000000001DA001000000001DA0010000
- 00001DA001000000001DA001000000001DA001000000001DA001000000001DA0
- 01000000001DA001000000001DA001000000001DA001000000001DA001000000
- 001DA001000000001DA001000000001DA001000000001DA001000000001DA001
- 000000001DA001000000001DA001000000001DA001000000001DA00100000000
- 1DA001000000001DA001000000001DA001000000001DA001000000001DA00100
- 0000001DA001000000001DA001000000001DA001000000001DA001000000001D
- A001000000001DA001000000001DA001000000001DA001000000001DA0010000
- 00001DA001000000001DA001000000001DA001000000001DA001000000001DA0
- 01000000001DA001000000001DA001000000001DA001000000001DA001000000
- 001DA001000000001DA001000000001DA001000000001DA001000000001DA001
- 000000001DB06330B22AFD99E4638A6898A4715736A6D85D893DCDEBDEF41BCD
- AEBDD7F7728056476FBCB93970E0C060C62C3CFBECB3CDFDF7DED33CF4E00383
- 1500605B9C79FECEE6E37FF023BDEC742F5EACC4992CCE66E3B9C13CC614A11C
- E949452EABD29F493EA6D00000A66EDFBE7DCD4FFCF4DB9AAB0E5E3D5861D6A2
- 09F0ABBFF24B2B0D0100601B6800CC4414B0006CA3EFFBFE1F54FC6FB36BAEBD
- AEF9076F7ECB600600B09C340000B6D9A1EBBF7590B19D0EF7FE1E62370600C0
- B2D20000D8668ACEF971E8FA370C320080E5A301000003878FD88D01002C2F0D
- 00001888DB00F61FB86C300300582E1A00009089260000C032D2000080CCD163
- 370D320080E5A2010000997825A3DB00008065A401000085E3276E19640000CB
- 430300000A87BD0E100058421A0000DB28B69B337FF61F38E0EF0600583A1A00
- 00DBE8FC7DFB0619F3E6F8895B071900C072D00000808A435E0708002C190D00
- 806DE469F3F36BDFBE7DCD614D000060896800006CA303070E0C32E6D1E1231E
- 0608002C0F0D00006871F4C69B56760200002C030D00806D74CD6BAF1B64CCAB
- 435E0908002C090D000018E2F011CF01000096830600C036BAD2BBE6E75E3C08
- D0C31A018065A00100B08DDC5FBE18BC0D000058061A0000DBE49A6BDDFFBF28
- 8E1EBB699001002C2E0D00806DE2EAFFE2B8EAE0D56E030000169E0600C03689
- A292C571C38D760100008B4D0300609B5C799506C022397AECE6410600B09834
- 0000B6C9FE030706198B20FEBEECDA000016990600C03688FBFF15938BC7C300
- 018045A60100B00D0E5DFF8641C622397AA3DB000080C5A50100B00D0E1FF15E
- F945143B370E5FEFEF0E00584C1A000033A6885C6C878FD8BD01002C260D0080
- 19B3FD7FB11DBAFE5B579A3800008B46030060C66CFF5F6C51FC6BE200008B48
- 030060866CFF5F0E9A3800C022D200009821578E97433471DC0600002C1A0D00
- 801972E5787978252000B06834000066C8F6FFE571F4D84D830C006031680000
- CC88E27FB95C75F0EA66FF81CB06330080F9A701003023DE1FBF7C3475008045
- A201003023F1FE7896CBF113B70E320080F9A7010030039E1ABF9CF61F38B072
- 2B0000C022D000009801DBFF9797870102008B420300608BC595FFA3372A1297
- D5E1EB35770080C5A00100B0C50E2910975ADC06E0618000C022D00000D86287
- 8F280E979D5B3C008045A00100B08562FBBFABC3CBCF1B1E008045A00100B085
- 6CFFEF86FE731E6E1ECC0000E6930600C0163A7EE29641C6B273AB070030EF34
- 0000B6C8FE039779477C87C4AD1EB1130000605E6900006C11F7FE778F5B3E00
- 8079A60100B0458E1EF3EEFFAE71CB070030CF340000B680EDFFDD147FE7F177
- 0F00308F340000B6C00D37BAFADF556EFD0000E6950600C016387ACC2BE1BAEA
- F8895B071900C07CD1000098B2FE36F00383195D137FF76EFF0000E6910600C0
- 9479F81FCE0100601E6900004CD961AF82EB3CE70000308F340000A6C8F67F42
- 9C03D75C7BDD600600301F340000A6C803E0486EF020480060CE6800004CD121
- AF8063C0B90000CC1B0D00802989F7BFEFDBB76F30A3EBE25C88730200605E68
- 00004CC9E1231EFCC65A47DD060000CC110D008029B1E59B925D2100C03CD100
- 009882A337DEACD0A3EA905702020073420300600A0E1F71F59FBA1B8EDD34C8
- 0000B6970600C02675FD616FCF3EFB6C73C7076F1BCC285D73ED75CDFE03970D
- 660000DB4703006093BABEC5FBFE7BEF69DEFFBE770F66D4781B0000300F3400
- 0036A9EBDBFF3FF7D003CD430F3EB0B21380BAA36E030000E6800600C02678D7
- 7BD3DC77EF3D2BE3DD777E646564BDAB0E5EBD120000DB4903006013E2E9FF5D
- 17B70084FBEEEB8FD4D90500006C370D00804DE87A51175BFF93BBEFFCF020A3
- E6B0D7010200DB4C03006083E2C9EE5DDFD6FDB9071F1C64FDB701E40D01D6DA
- 7FE0C0CA1B010000B68B0600C00679B2FBFA6DFF77DFE53900C3DC70CC2D2300
- C0F6D10000D820F774C70E80B557FC4F7A10E05087348D00806DA40100B001B6
- FFD7B7FC7B1DE070DE1A01006C270D00800D387EE29641D65DE9E9FF25AF031C
- EEF0110F030400B6870600C00678A27BD37CEEA1FA03FFBC0E70B8A337DEB4B2
- 13000060D634000026145BFFE389EE5D775FCB0E80B69D01AC3AA48104006C03
- 0D00800979F85F5F5BA1FFE8A947BC0E7084C3473C070000983D0D008009D9FE
- 3FFA2ABF5D00C3C58300E341920000B3A4010030817EE166FBFFFD23EEF33F79
- 9707018EE26D0000C0AC6900004CC013DCFBDAEEFF4F620780D7010EE7561200
- 60D63400002670C855DB15E36CF1771BC070FD8749BA0D0000989D5D8391553B
- 2A632DA27992C661B1ABB9EC75FF55B373F7E5BD1C5860B165FB861B6F1ECCBA
- 2B0AFB3B6EBF6D306B77D1C51737AFFFE66F19CC68F3D77FF5D14106307BF15A
- D257BDE61B561A9229A241F96D6F3CDABCF6DAEBD644ACBF78FA74F3E4134F0C
- 7E1AA6E8DC99879B473EFEEF7BD9D99638D712218D8C10052C6BA53F937C4C11
- 057D1AA37992C614BB2BB1A779DD9B7EA3D9B5F7FA5E0E2CB01F7AF35B56DEE1
- DE75FFE1DFFD61F3277FFC878359BBF825F2E7DFF14B8319358F9E3AD5FCCC4F
- FDF86006307D51B49FDF2BF2A3803FFFFC7D2BF3704D6FBE5127EFFC48F33BEF
- FC35B77A315D679EBFB3F9F81FFC482F3BDD8B172B71268B6808A4318AFFB241
- 10CA919E54E4B22AFD99E4630A0D00E8A8B842F2F677FCF2CAD875BFF80B6F1F
- 7B7BFFCFF7FECC3C3471B87FFA736FF3DA44602AA2A88F02FFAAABAE6EAE3C78
- F06BC5FE568826C0AFFE8A262F53A401301351C00230C2A1EBDFA0F81F98E4DE
- FE93777E7890D1E6F8895B0719C064E2D6B4EFFBFE1F687EF2A7DFD6FCDA6FFD
- EECA18F3D8ADB695C57F88FFEDADFEDF00A64F0300600C878F78F85F98F4C17E
- A35E1788074B02E38B5BAB8E7FE7AD5F2BF8FFE18FBD7565BE99EDFC9BB15DFF
- BBC0C6A56DEEAC4A7F26F998C22D00D04171E5FF97FEE5AF0F66DD36EEFDFFB9
- F82595E1621B6D6CA785E4E88D3737377855E4CA73324EDEF5E14E7F3FE22A7B
- BC36F4F0F56F98BB5BAA36F2FF27402BB700CC442A725995FE4CF23185060074
- 50FC22FE436FFED1C1ACDB3672BF7A5CA9729568B83B3E785BF3DBEFFCB5C18C
- AE8B2BBAB18D9B55F1EFCEEFBCF3D73BF3BC8CB8D21F5BECE316A1797E8E8A06
- 0053A501301351C0023084EDFF7DF1B4E78DFCF27DF22E57B64789DB003C6382
- C47321D68BABE03FF1D36F5BFA7BCEA3E88F6DFDF10695680279882A306D1A00
- 0043A4AB304C7EFF7FB2D19FEB9228FEE3419310147D75F13D8926C0B235CBE2
- FF3D7FF7BBBE7BE5AD2951FCFBFF7380ADA4010030845FC4566DF44A7EEC1A88
- FB7819CE4E13182D8AE5EFFBFE1F1CCC165B34987FE8CD6F5979C6CCDFF97BDF
- ADF103CC840600C010F1E025FA367325DF2E80D1A2D9B46C5736D918DF97E1E2
- 15778BFC5D49857F6CF38FFFB700CC920600408BF825CD3B8EFBE20AFEA3A71E
- 19CC26174FF166B478E024305A3C2871D128FC8179A00100D0C2F6FF5527EFDC
- 5C01EF8AE678EC3821DC7F9FEFCB287F73811E9418BB1514FEC0BCD0000068E1
- 49DCAB365B90C41B043401468B1D27719510182E8AEA796FD2C6FF1DE3E17E6F
- 7FC72F2BFC81B9A1010050D12FC43C90293979E7E65FE5E77580E3B941A1D079
- F769968DE5F091F97D7346DCCE13857F3CDCCFB33D8079A2010050612BF6AA69
- 14FFC10E80F11C3DE63900308E4373B803E09A6BAF6B7EF69FBCBDF9A137FFA8
- C21F984B1A00001587BD93FD6BA6753FB2D7018E27769E78F864B7F99E8C270A
- EC79F9AEC4FF5DE23EFF9FFCE9B7F9FE02734D0300A060FBFF5AD3DA0110EC02
- 188F1D28DDB699376E744D5C71DF6EF14602F7F9038B420300A0A0F85AB5D9D7
- FF95BC0E703C5E0708E3B9E6B5DBD7008866716CF7FFBEEFFF01DBFD8185A101
- 0050507CADDAECEBFF4A76008C278A09AFA1EC36DF95F16CD776FB78BA7F14FF
- B6FB038B460300201345972B39ABEEB8FDB641361DF13AC069DE52B0CCE6F909
- E7302FE276AD59BE3A335DF58FA7FB032C220D00808CA26B5514EBF1E0BE699B
- D64305975D3CE15C33AABBE2FBC778AE3A7870906DADB8D7DF557F60D1690000
- 64E6F1B552DBE5EE2DBA526F07C078A2F83FE46D149DF5B987A6DF7C5B565B5D
- 90C777319EEE1FF7FA032C3A0D008001DBFFD7DAAA07F6C54305B76267C1323A
- 7C44430A46B9F2AAAD6B00C4FFBF104FF89F87B70D004C830600C080EDFFABB6
- FA5E7D0F381B8FA65477B905607C5BB50320AEF8FFC31F7BABEF20B054340000
- 7AE2173CEF705EB5D505FAB41F2EB8CCDC06D04D76C98C2F1E04384D69CB7FDC
- F30FB06C3400007A14596B9DBC6B6BEFD38FE2E6D153A7063386397EE2964106
- B499D616FDD84D60CB3FB0CC3400007ADC6BBDD6DD776ECDFDFF39B7018C270A
- 9259BEE60C16D134B6E91FBDF1E695A7FCDBF20F2C330D00A0F3E297BDB8D79A
- BEB8F77F16F71F6FD543069791F3B37BEC9099CC669F0310F7FBFFD09B7F7430
- 03585E1A0040E7D9FEBFD6566FFF4F66D5685806C74FB817B96BE26D198C6FFF
- FE8DED928906703CE8CFFDFE40576800009DE71EEBB566B935DF6D00E389879C
- 6DF5BBCE61916DE4418051FCFFC44FBFCD0E1BA0533400804E8B7BAB1556ABFA
- 0FE79BDD95C759ED365806478F794B054C4BFCBB1FC5BF7FFF81AED100003ACD
- 959FB566FD7ABE593C6C70591C76AB0AB49AE4A9FD8A7FA0CB3400804E735575
- ADB82F7F96E21900B3FEDF5C54B1C559C3AA5B62470ED3958A7F4FFA07BA4A03
- 00E82CDBFFD78AA78E6FC783C7DC0630BEC347EC02E892E73C2473AA14FF001A
- 004087DD70A3ABFFB993DBB41DDF8300C777C80E006835ACA11BBB6714FF001A
- 0040871D3D76F32023CCFAFEFF24761DD8EA3C9E285E8EDEE8BC859AF35B8AFB
- 28FEE3557F8A7F000D00A0A3E24AD1465E1BB5ACE25EFCED2CC2B7ABF9B0880E
- 1FB10B00C615FFD6FF8337BF653003400300E8240FFF5BEBEE6D7E109F07018E
- 2FAE66BA9209A3B9E71F603D0D00A093BC526DAD93776DEFEBF8DC06309943CE
- 5F58277F0680E21FA04E0300E81CDBFFD79B872BF06E0318DFF113B70C322049
- C5BEE21FA09D0600D039C74FDC3AC808F3B2FDDEDB00C6D76F625D3698B1ACEE
- BFCF77625251F4FF8337FFA8E21FA0850600D0395EA5B6D6BCBC873F6E0178F4
- D4A9C18C51E25900C0AAF3CFDFB772E53FBF150080B53400804EF100B5F5EEBE
- 737BEFFFCF9D9CA3FFBBCC3B0FB284B58E7FE7AD8A7F80113400804E397CC4C3
- D37271D53D5E01382F3C07607C51E828760080496800009D62FBFF5AF35670BB
- 0D60327601000093D000003AE3E88D37DBFE5F98C7F7EFBB0D607C5E6709004C
- 420300E88CC3475CFDCFC595F678FFFEBCF1E4F3F1C5EB2CAFB9F6BAC10C0060
- 380D00A013E2CABFA7A6AF35AF57DA6357C23C3D9760DEDD70ECE6410600309C
- 0600D009876C955E679E1FB877F71CDE9A30AF3CD7020018970600D009B6FFAF
- 1557D8E3817BF3EAE45D9E03302EBB5B0080716900004B4F81B4DEBC5F619FC7
- 8713CEB3A36E030000C6A001002CBD78FA3F6B2DC215764D80F14583CB1B2E00
- 8051340080A5E75DE9EB2D42717DF22E0D804978CEC5F299E7DB7400584C1A00
- C052DB7FE0B2E6AA83570F668445B9B27EF79CBEA5605EDDA0D1B574BC0D0380
- 69D30000969A7BFFD75B942BEB51FCDC7FEF3D8319A35C73ED752B0D2F008036
- 1A00C052B3FD7FBD45BAB2EE3680C968780100C36800004BCBF6FFF5E29EE245
- DA56EC418093D1F0020086D1000096D6F113B70C32923B6EBF6D902D86474F3D
- E2416813888697DB000080361A00C0D23AECA9E8EB2CE215F5BBDD0630118D2F
- 00A08D0600B094FA57420F0C6684474F9D5AB9A2BE68DC0630198D2F00A08D06
- 00B094DC0BBDDEC9057DAD5EDC0210CD0BC6138D2FCFBE580ECF790D200053A6
- 01002C255741D75BB4FBFF738BDABCD82EC74FDC3AC858649E7F01C0B4690000
- 4B275E8566FBFF5A71057D918B09AF039CCC21AF0304002A340080A573F888AB
- FFA5FBEFBD67902DA6F8BFFF22BDBE70BBEDDBB76FA511060090D30000968EAB
- 9FEB9DBC6BF1B7D0DFED618013D10803004A1A00C05289AB9E71F5935571E57C
- 199EA4BF0C4D8C593A7AE34DBE0B00C01A1A00C05271D573BD65B972EE758093
- 3BE461980040460300581A71B5D3F6FFF5EEBB6FB1EFFFCF69024CE6F011DF07
- 0060950600B034E26AA72DCFEBDDBD44AFD0F33680C9F4DF8871D9600600749D
- 0600B0345CED5C2FAE982FD3D3F397A999312BDE060000241A00C052F0DAB3BA
- 65BB62BE2C0F349CA5A3C76E1A642CA2871E7C609001C0E66900004BC1C3CEEA
- E2FDF9CBC66D0093B9EAE0D56E035860CF2DD10E1E00B69F0600B0146CFF5F2F
- AE1C3E7AEA91C16C79B80D6072C74FDC32C800802ED30000165E5CDDB4FD7FBD
- 3B6EBF6D902D97B80DC0B6E8C91CB6430600E8D10000169EE2BF6E99EF955FD6
- E6C656D97FE0C0CAAD0000D3B44C0F9985AED00000169E879CADB7ACDBFF9365
- 7CB6C156F33D01A6CD435961F16800000B2DB6FFBBB2B9DEB217C8FD06C7A9C1
- 8C711CBDF1E64106B079BFFDCE5F5FEA46332CAB1D839155E9CF241F5344C324
- 8DBBB231C5EE4AEC695EF7A6DF6876EDBDBE97035376FC3B6F6DBEEFFB7F6030
- 23F9A73FF7B6A5BF4F3EFEDEE3EF9FF1FDEAAFFC922B760BE6277FFA6DCD35D7
- 5E3798C1F8E2FF0FC8DF2271FF7D1B6B0CEFDF7FD9CA6D4461A5F9FAE8A9957F
- 4714FF4CDD99E7EF6C3EFE073FD2CB4EF7E2C54A9CC9E26C369ECBC614A11CE9
- 49452EABD29F493EA6D0008039F3F3EFF8E5AFFD62425F5C19FF999FFAF1C16C
- 79C5B31FFEE18FBD7530631C777CF0B6E6B7DFF96B83198B4003809AB8F7FE73
- BD627CA5C87FAEFF60D4588B7FFF15E62C2C0D809948452EABD29F493EA6D000
- 8039125BFF7FF69FBC7D302379FF7BDFDDFCFEEFFDEE60B6DC7EE95FFE7AB36F
- DFBEC18C51A24078DB4FFDB807772D100D00E296AE28F01F7AE8C195E2DE3350
- 585A1A003311052CC042F250B3BA8D6EF35C447E119E4C344B0E792520CCAD28
- F4FB3B757E7DE556AEB7FCF00F34BFF80B6F5F69EADEF1C10FF8370FD8340D00
- 606179B7795D977E413C7997FBD92775F888D766C2BC88823F766DC5F339DEFA
- DFFEE84AD11FB7E944B11FC700A64D03005848B1FDDFBDFFEB45F1DFA5EDDD77
- DFF9E141C6B8E2D9096E9B80ED11F7E8C715FEBCE08FABFBF1503DB7E600B3A0
- 01002C24DBFFEBBA76453C7E61B62576725E0908B31357F2FFC3BFFBC395623F
- 1ED01A57F815FCC076D10000169202A6AE8BC5B0DB0026A781065B2B8AFEB8B2
- FF333FF5D695C2FF4FFEF80F6DE907E6820600B0706C61AE8BADA55DFC05D37B
- ED27D7BF85E6B2C10C9886F837382FFAE3DE7EAFE403E68D0600B0700E1FF1F0
- BF9AAE6E858F5FB05D599BDC0D37DA05009B15DBF8A3D04FDBFB15FDC0BCD300
- 0016CEA1EB3DC5BCE6E45DDD7D20DEDD6E0398D8D1636EA3818D8A866BBCAA2F
- 1EE41757FD35218145A101002C14DBFFDB75F961786E03985CBC45236E0500C6
- 1357FBE309FEB1C53FDECD1FAFEA0358341A00C042B1FDBF2E8AFF2E3F513AAE
- BEC5FDB74CC6C30061B4746FFFDB064FF0B7C51F58641A00C0C2882BFF47DDB7
- 5CE549F8B10BA0BBB7406C94B76940BB28FC639B7FBAB7DF6BFB8065A001002C
- 8C43D7BBFADFA6CBDBFF933B6EBF6D9031AE68AAC56D35C0AABCF0B7CD1F5836
- 1A00C0C2387C44A15213BFAC7A0055FF360057E826E7B61AE853F8035DA00100
- 2C04572ADBD9FABEEA6E0F039C98B76AD0750A7FA04B3400808560FB7FBBFBEF
- B3FD3FE9F2AB1037AAFF6C0DCF02A07B14FE40176900000BE1F8895B0619B9D8
- F2EE1578ABE2CFC26D0093737B0D5D12FF46FC877FF787CD3FFDB99F51F8039D
- A30100CCBDFD072EF3BEF2161EFEB79EDB002617B7D7C44E005876D124FCA73F
- F7B6E64FFEF80F350B814ED20000E69E7BFFDB79FDDF7A6E03D818B7D9B0CC62
- BBFF2FFEC2DB9B5FFD955FEAE5DEE30F7497060030F78E1EF3EEFF36777B00E0
- 3A6E03D818B7D9B0ACEEF8E06D2BDBFDED9802D00000E69CEDFFEDBCF6AE9DDB
- 002617DFB3F8BEC1B2887F1FE3217FBFFDCE5FF36F25C080060030D76EB8D1D5
- FF3677DC7EDB20A3E436808D71BB0DCB220AFEFFE517DEEE217F00050D0060AE
- 1D3DE6F5646D3CFDBF9DADBE1B73FCC4AD830C1657EC8E8A07FDC508C05A1A00
- C0DCEA6F493E3098918B5F6C3DC8AA5D5CFDD320995C7CDFDC72C3A2FB9D77FE
- BA7F1F015A68000073CBC3FFDAB9C23DDA1DB7DBFABB11BE772C3A57FE01DA69
- 000073EBB0D792B572FFFF68DE06B031BE7700B0BC340080B964FB7FBB789FB5
- 2B5CE3F13680C9C5F7CEC30001603969000073C9C3C8DA9DF4EEFFB1791BC0C6
- 1C3E621700002C230D00602E1D7205B2D5C9BB5CD51E97DB0036C6F70F009693
- 0600307762FBF1BE7DFB06337251CC7A00E064DC0630B9F8FEB90D0000968F06
- 0030776C3F6EA7989D9CDB0036E6E8B19B071900B02C340080B963FB713BC5EC
- E4DC06B03176E200C0F2D10000E6CAD11B6F5674B48822368A592667E7C4C61C
- F24A4000582A1A00C05C397CC4D5FF368AD88DB37362636E3876D32003009681
- 060030373C786C3845ECC6B90D6063AEB9F6BA66FF81CB06330060D169000073
- C376E376B6FF6F9E1D141BA3290700CB430300981BB6FFB753BC6E9E1D141B73
- D46D0000B034340080B960FBFF708AD7CDBBFFDE7B061993B8EAE0D52B01002C
- 3E0D00602EC4D3FFA9B3FD7F3AFC396E9C5D0000B01C340080B9A0C06867FBFF
- F49CBCCB9FE5461CF67C0E00580A1A00C0B68BA78CDB62DCCEF6FFE9B9FB4E7F
- 961BB1FFC08195370200008B4D0300D876EEFD6F67DBFA74C59FA767016CCC0D
- C7DCA603008B4E0300D876B6FFB7B3FD7FFADC06B0318734EA0060E1690000DB
- CAF6FFE1FEECF60F0C32A6C58E8A8DF1A60E00587C1A00C0B63A7EE2964146E9
- D153A76C57DF028F9E7A64E5CF96C91D751B00002C340D00605B79BA78BB931E
- 58B765FCD96E4CEC00889D0000C062D20000B64D6CFD8FA78B5377C7EDB70D32
- A6CD730036EE90A61D002C2C0D0060DB78F85FBBD8A2FED0830F0C664C5BDC5A
- 116F046072878F780E00002CAA1D839155E9CF241F5344C3248DBBB231C5EE4A
- EC695EF7A6DF6876EDBDBE9703999F7FC72FDB01D0E28E0FDEE601805BECFBBE
- FF073C8072837EE6A7DEBAF22C05B6DE4FFEF4DB9A6BAEBD6E30631C6FF9E11F
- 1864C04239F3FC9DCDC7FFE0477AD9E95EBC588933599CCDC673D9982294233D
- A9C86555FA33C9C7141A003025712FF13FFCB1B70E66C022F9FDDFFBDDE6FDEF
- 7DF760C656D200989C06002C280D809988021660E60E1F711F312C2AB7EF00C0
- 62D20000B6C521EF138785D57F80E765831900B02834008099F32A31587CC74F
- DC32C8008045A10100CC9CEDFFB0F80E7B1D20002C1C0D0060A6E2CABFEDFFB0
- F8E20D1EDEA200008B45030098A943D7BFC1F67F5812C74FDC3AC8008045A001
- 00CCD4E123AEFEC3B2B09B0700168B0600303371E53F1E00082C07DF6900582C
- 1A00C0CCC4F67F60B978A827002C0E0D0060666CFF87E573F4C69B3CD7030016
- 8406003013FB0F5C66AB302C29BB7B00603168000033A1F887E565770F002C06
- 0D0060268E1EBB699001CB261A7CB1CB0700986F1A00C0968BC2E0AA83570F66
- C032B2CB0700E69F0600B0E51406B0FCECF20180F9A701006CB9E3276E1D64C0
- B28A5D3E6E030080F9A601006CA97E517060300396D90D37DA050000F34C0300
- D852B60543771C3D76F3200300E6910600B0A50E7B3F387446ECF6F1C04F0098
- 5F1A00C096B1FD1FBAC7AE1F00985F1A00C096510840F71CBDD16D000030AF34
- 00802DA31080EED9B76F9F577F02C09CD20000B6441400510800DD73F888677F
- 00C03CD20000B6840200BAEB90062000CC250D00604B440100745314FF87BC01
- 0400E68E06003075B6FF03878F680202C0BCD10000A6CEF67F40231000E68F06
- 003055F10BFFD11BBDFE0FF026100098371A00C054B9EF17488E1ED30C048079
- A201004C95FB7E81E4AA835737FB0F5C36980100DB4D0300989AD8FE1FF7FD02
- 24FE4D0080F9A101004C8DEDFF40E9F8895B071900B0DD340080A9397EE29641
- 06D0B7FFC081955B010080EDA701004C45DCE7EB977CA0C6C30001603E680000
- 53E13E5FA0CD61B70701C05CD00000A6C2153EA04DDC06A0490800DB4F0300D8
- 34DBFF81510E1FB10B0000B69B0600B06937DCE8EA3F30DC213B000060DB6900
- 009B76F4D8CD830CA06EDFBE7DCDD11BFD5B0100DB490300D894D8FA1FF7F702
- 8C72F8885D0000B09D3400804DF1F03F605CF120C0D80900006C0F0D006053BC
- DE0B98C421FF6600C0B6D1000036CCF67F6052C74FDC32C8008059D3000036EC
- F8895B0719C078FA8DC3CB06330060963400800DF35A2F6023E2590000C0EC69
- 00001BE2615EC046D93D0400DB430300D890C3473CC80BD898787648DC0A0000
- CC960600B021B6FF039BE115A200307B1A00C0C48EDE78B3EDFFC0A678852800
- CC9E060030B1C3475CFD0736276E03B8E6DAEB063300601634008089C4957F4F
- F006A6E18663370F32006016340080891CB26D179812CF120180D9D200002662
- FB3F302D761401C06C69000063F3CB3A306D47DD06000033A301008C2D9EFE0F
- 304DD154F4561100980D0D00606CDEDB0D6C05CF160180D9D00000C6B2FFC065
- CD5507AF1ECC00A6E706CD450098090D00602CEEFD07B6CA35D75EB7D2640400
- B69606003016DBFF81ADA4C908005B4F030018C9F67F60AB693202C0D6D30000
- 463A7EE2964106B035A2C9A8D108005B4B030018E9B027740333601700006C2D
- 0D0060A8B822B7FFC081C10C60EB683602C0D6D200008672450E98956836C61B
- 010080ADA101000CE58A1C304B371CBB79900100D3A60100B48AD772D9FE0FCC
- D221AF0304802DA30100B43A7CC4D57F60B6F6EDDBB7D27C0400A64F030068E5
- 4A1CB01D341F01606B6800005571052EAEC401CCDAD11B6FF2EF0F006C811D83
- 9155E9CF241F5344C3248DBBB231C5EE4AEC695EF7A6DF6876EDBDBE97C3C2F8
- A137BF65E5977046BBFFDE7B9A5FFC85B70F6674593CC1FE277FFA6D83199BF1
- DBEFFCF5E68E0F7E6030EBAE389FBC1961326FF9E11F1864C04239F3FC9DCDC7
- FFE0477AD9E95EBC588933599CCDC673D9982294233D760000EBC49537DBFFC7
- 77F2AE8F0C32BA2E9A418F9E3A3598B119878FF8370800A64D030058E7D0F56F
- B0FD760227EFD40060D5C93B3F3CC8D88CFE5B482E1BCC008069D00000D671E5
- 6D7C0F3DF840F3E8A9470633689A3B6EBF6D90B159DE060000D3A50100ACE115
- 5C9351EC51EA3785DC06300D478F790E09004C930600B0466CFF677CB6FF53E3
- 3680E9B8EAE0D56E03008029D20000D6B0FD7F7CB6FFD3C6CE90E9397EE29641
- 06006C960600F03571A5CDF6FFF1DDEDE9FFB4701BC0F41CB62B0900A6460300
- F81AC5FF646CFF6718B7014CC7FE0307566E050000364F0300F81A0FDC1A5F5C
- DD8DABBCD0E6FDEF7BCF2063B38E9FB8759001009BA10100AC88EDFFAEB28DCF
- D55D4689E74368124DC721BB9300602A34008015B6FF4FC643DE1887F3643ABC
- 9E1400A643030058618BEDF86CFF675C9E13313D878F781820006C9606003078
- D7F681C18C516CFF675C6E03989EB80D20760200001BA7010078F8DF846CEB66
- 12CE97E988E2FF90570202C0A6680000DEB33D81679F7DD6155D26E23680E939
- 7CC473000060333400A0E36CFF9FCCDD8A3926E43680E9890701BA0D0000364E
- 03003ACEF6FFC99CBCCBFDFF4CEEFDEF7BCF2063B38EDE78F320030026A50100
- 1DE797E9F1C5F67FDBB9D988BB3D38726A342D0160E33400A0C36CA79D8CEDFF
- 6C94E6D1F4F46F5BBA6C30030026A101001DE6BDDA93B1FD9FCD38799706C0B4
- DC70A35D0000B0111A00D061F15E6DC6E30A2E9BE53680E9397ACCAD4B00B011
- 1A00D051B6FF4FE6FE7BEF1964B0319A48D3136F2E895B010080C968004047D9
- FE3F19DBB79906E7D1F4781820004C4E03003A28AEFC1F750FED446CDF661A9C
- 47D3E30D260030390D00E8A043D7BBFA3F89D8B61DDBB761B3DC06303DD1C88C
- 5B990080F1690040071D3EE297E649D8B6CD34DD71FB0706199BE5562600988C
- 0600748CAB6693B36D9B69B2A3647AE24D261E660A00E3D300808EB1FD7F328A
- 35B6C2DD6E03988A28FEFD9B0600E3D300808E397EE29641C6386CFF672B9CBC
- CBAE9269714B13008C4F03003A64FF81CBBC3B7B42F7DF7BCF2083E9B1B3647A
- E29626B70100C0783400A043DCFB3F99871E7CA079F4D42383194C97DB00A6C7
- 6D0000301E0D00E890A3C7BCFB7F1277DC7EDB2083E9731BC0F4B8B50900C6A3
- 01001D61FBFFE4BCAF9DADE43680E9897FDBE2DF380060380D00E8881B6E74F5
- 7F12B6FF330B6E03981EB73801C0681A00D011478FDD3CC81887EDFFCCC2FBDF
- F7EE41C6661D3F71EB200300DA68004007F4B7C71E18CC1887EDFFCC427FA7C9
- A9C18CCD887FE3DCE60400C36900400778F8DF64A220B3FD9F593979A787014E
- 8B7FEB0060380D00E880C35E9135110519B3E47693E9F16F1D000CA701004BCE
- F6FFC929C89825B7014C4FFC5BE7618000D04E0300969C07634D260AB128C860
- 96EC3A999EC347EC020080361A00B0E40EB91A36118518DBC1AE93E9F16F1E00
- B4D3008025165B61F7EDDB3798310E8518DBC16D00D313FFE61DBDD16B4F01A0
- 4603009698ADB093B1FD9FEDF4FEF7BD7B90B159878FD8050000351A00B0C46C
- 859D8CEDFF6CA793777E6490B159763F01409D06002CA9D802EB17E0C9DC7FDF
- 3D830C66EFD1538FD881324587BC121000D6D1008025650BEC649E7DF6595760
- D9769E41313DC74FDC32C8008044030096505CF9F72EECC9DCADF8670E68424D
- CF5507AF6EF61FB86C3003008206002C215B5F2777F22EF7FFB3FDDC06305D1A
- A100B09606002C21DBFF2763FB3FF3C46D00D373F4D84D830C00081A00B0646C
- FF9F9CEDFFCC13CDA8E989DB002200803E0D005832F1F47F2663FB3FF3246E03
- B8FF5E6FA49816BB0000609506002C19BFEC4E4EB1C5BCF933B7014CCD61CF44
- 0180AFD1008025124FBCB6DD7532B1DD3A9E0100F3E4EE3BED4A9996FD070E34
- D75C7BDD600600DDA601004BC4BDFF933B7997FBAD993F1E4C395D371C736B14
- 00040D005822B6FF4FCE9556E695E6D4F41CD21C0580151A00B0246CFF9F9CED
- FFCC33CDA9E9F1761400E8D300802571FCC42D838C71B9C2CA3C731BC0741D75
- 1B00006800C0B2F0A4EBC9B9C2CABCD3A49A9ED801103B0100A0CB34006009C4
- D6FF78D235E38B57FFD9FECFBCD3A49AAE431AA500749C06002C010FFF9B9C2B
- AB2C826852DDF1C1DB063336EB06FF5602D0711A00B0046CFF9F9C7BAB591427
- EFB20B605AAEB9F6BA9507A60240576900C0828BFB5A6DFF9FCC430F3ED03C7A
- EA91C10CE69BB7554C97B70100D0651A00B0E00E1F71F57F5277DC6E4B358BE5
- 6E3B56A6C62D5300749906002CB843AE664DCCF67F168DDB00A6A7FFD054B701
- 00D04D1A00B0C0BCD66A72B6FFB388DC06305DC74FDC32C800A05B34006081D9
- FE3FB9BB3DFD9F05E53680E9F1E05400BA4A030016545CF9B7FD7F72B6FFB3A8
- DC06303DF1E0D4B8150000BA46030016D4A1EBDF60FBFF841E3D756AE5160058
- 446E0398AEE3276E1D6400D01D1A00B0A00E1F71F57F5227EF740595C576C707
- 3F30C8D82C3BA800E8220D00584071E5DFBBAC27E7F57F2C3AE7F0F4F8771480
- 2ED200800514DBFF998CEDFF2C83FE5B2C4E0D666C9607A902D0351A00B0806C
- FF9F9CEDFF2C0BE7F2F41CBDF126CF5201A053340060C1EC3F70996DAB1B60EB
- 34CBC2B93C5D765401D0251A00B06014FF938B27A7DBFECFB2701BC074D95105
- 40976800C082397AECA641C6B8EEF6EE7F968CDB00A6279AAAB1B30A00BA4003
- 001648FC927AD5C1AB0733C675F22EC512CBC56D00D3656715005DA101000BC4
- 2FA9938BEDFF27ED0060C9C46D006E6B991E3BAB00E80A0D005820C74FDC3AC8
- 1897EDFF2C2BBB00A6277656B90D00802ED0008005D1FF05F5C060C6B86CFF67
- 59D9D9325DC74FDC32C80060796900C082B0457572B6FFB3CC1E3DF588DB00A6
- E8B0D70102D0011A00B020FC723AB9FBEFBD6790C172721BC0F4C40E2B0F5905
- 60D96900C002887B536DFF9FDCC9BB5CFD67B9D9E1325D765A01B0EC34006001
- 28FE37E66EEF4A67C9B90D60BAEC00587C8F9E3A35C800A8D1000096525C198D
- 6700C0B2731BC0F4CCE39B00FC3B3699688A01D04E030016C0737E019C48FCC2
- FCFBBFF7BB83192CB73B3EF80145E2943CFBEC33836C7EDC71FB070619E3B003
- 0060380D005800B1C5D736DFF1A4E2DF5520BA22CEF9FFE517DEAE0930059F7B
- F0C141363F6237D31D1FB4CB635C7FF2EFFE70900150B36B30B26A4765AC4534
- 4FD2382C763597BDEEBF6A76EEBEBC97C386FDF55F7D6C657BEA2B2EBF62B042
- 297E51FE9D77FE7AF3D71FFBE86005BAE1C9279E683EFE571F5DF9F7611EB7B1
- 2F8228B27FFFF7FE7573FAF4E9C1CAFC88079AEEE8FDC671E5C1AB9B3D7BF60C
- 56C94593FC37FEB77FD97C4EB31C16D7B9330F378F7CFCDFF7B2B32D71AE2542
- 1A19210A58D64A7F26F998220AFA3446F3248D297657624FF3BA37FD46B36BEF
- F5BD1CA6221E5475FEBE7D8319C12BFFA06F5FEFDF862814194FDC62B5483BAC
- FCFBBF9E7FFF61499C79FECEE6E37FF023BD2C3AB12F56E24C16D110486314FF
- 65832094233DA9C86555FA33C9C7141A00000000D3A601301351C0020000004B
- 4E03000000003A4003000000003A4003000000003A4003000000003A40030000
- 00003A4003000000003A4003000000003A4003000000003A4003000000003A40
- 03000000003A4003000000003A4003000000003A4003000000003A4003000000
- 003A4003000000003A4003000000003A4003000000003A4003000000003A4003
- 000000003A4003000000003A4003000000003A4003000000003A400300000000
- 3A4003000000003A4003000000003A4003000000003A4003000000003A400300
- 0000003A4003000000003A4003000000003A4003000000003A4003000000003A
- 4003000000003A4003000000003A4003000000003A4003000000003A40030000
- 00003A4003000000003A4003000000003A4003000000003A4003000000003A40
- 03000000003A4003000000003A4003000000003A4003000000003A4003000000
- 003A4003000000003A4003000000003A4003000000003A4003000000003A4003
- 000000003A4003000000003A4003000000003A4003000000003A400300000000
- 3A4003000000003A4003000000003A4003000000003A4003000000003A400300
- 0000003A4003000000003A4003000000003A4003000000003A4003000000003A
- 4003000000003A4003000000003A4003000000003A4003000000003A40030000
- 00003A4003000000003A4003000000003A4003000000003A4003000000003A40
- 03000000003A4003000000003A4003000000003A4003000000003A4003000000
- 003A4003000000003A4003000000003A4003000000003A4003000000003A4003
- 000000003A4003000000003A4003000000003A4003000000003A400300000000
- 3A4003000000003A4003000000003A4003000000003A4003000000003A400300
- 0000003A4003000000003A400360E3CE0DC651C6FD1C00004097A9B1B69806C0
- 2C9C3BFBD420030000A0A4669A090D805938FDD5FB07190000002535D34C6800
- 00000040076800000000400768004C5F3C90A27828853F6600008076EB6AA64A
- 5DC566A94C27D37602A6F5FCB8931500006072B5BAAAADBE52774D400360164E
- 3F79DF20030000A0A4669A090D80CD896ED3B08E53FFD88B2F3CBD32020000B0
- DE6ACD34AABE1A769C113400000000A0033400A62775A2CAAED4B9E6ABA7BE30
- C801000028F56BA6B575D4EA3C5F67133400A6AB3C61FB1EFDE4C3830C000080
- D2DA9AA95E57B1691A005B2B9DAC4E5A000080766AA719D000D8BC512768FFF8
- D9D39F58190100005875E6F93B07D978B5151BA601B031E58917F36127E3B9E6
- DCD9A706390000006B0DAFA7D61F1FF6795A68004C2E9D686D275C3A39D71E3F
- F3A2E70000000094CE3C7FFF204BEA35D5AAB4DE769C161A00EDCA93A976728D
- FACCEAFCCC690D00000080D299B34F0FB2307E8DB56A9CCFD0A301305A9C3CA3
- 4EA0FC78FA7C5AEBE72F3C5976B5000000E8D74AEB6BA8D579C8F39AF2F35468
- 006C5E3AC96A27DBEA49F8E269CF0000000028ADD64AABF5D35A69AD768C0968
- 00AC37ECA4CA4FBCDAE7DA7EF65CF3C467EC0000000028F56BA5F65A6ABDBC1E
- 6BFBB930EC582769006C4EDB09954EC8D5E3CF7CE9C9E6DCB9FCDE160000806E
- 8B1A296AA555EB6BA9B5DAD6198306C0E4CA13AE3C41DB8E37CDD917EC020000
- 0048566BA4BCA64AD23C1D6B3BCE983400A62B3F31F308E7BC090000002073FA
- F94FF4FECFD59AA91E4C8906C0748C3A39FBC75EFC6A9CDC00000084B32FC445
- D2D1B554FB7126A001B071E39EA4AB9F79EE89FB06190000006B6BA47A1DB5D6
- B0638CA001309974A2E5275CB9968F6BF3273E6D0700000040D2AF91D6D74E7D
- 6D63A8AD318206C070F94935ECC42A3F977F7675ED992F3FD99C7BD173000000
- 00A2368A1A29AF9956956BF9B1D2B89FEB3C0D80BA5127571A53D4D48E9F6B5E
- 7CD12E000000807E6DB4B65E5A5F43E5CAE36D9F0BC38E759606C0C69427533A
- 09D37A6DECE7673C0810000020AB8D56EBA5FA981F4FCA3963D00098BEF204CD
- E7E79A674E7D24160100003AAD5F1BADAD97FACA3953A201B039C34ED27CBEBA
- F6853FD700000000E8D746C3EBA7FA9C0DD200985C7EF225E55A8CED71F6B4DB
- 00000080EEEAD744F57A6935423986DA1A63D000182D3FB9869D60A33E97D6CF
- 352F3C77E7CA0A00004017F56BA2D51A69BD7CBD763C19F773F46800B41B7592
- A53145523B9647D33CFF150D000000A0BB566BA25ACD1411D218861D2B0D3BD6
- 691A001B579E54E5C9D81E8FDEAF010000007457BF26AAD74BAB11F23C29E78C
- 490360F36A27676DBEBAF6CC979FF41C000000A093A2168A9A28AF91D646689B
- B3091A001B939F8449B916631967BF967B0E000000D0456BEFFF5FAD91D64628
- C7505B634C1A00E3C94FB2F244CBD76A9F4BF9DAB9E7000000005DD4AF85D6D7
- 48EBE7A1B696D43EC7101A00C30D3B89F2932DA4F9B058ED6E3DF8C1FFB33702
- 0000744BBF165A5F230D8FA49C97861DEB3C0D80E94B27647E62D6F273CDE967
- 3FB0B2020000D005FD1A68B526EAABE5F91A53A201301D6D2767ACE51DADC857
- E7A79FB9AB370200007443BF06AAD747AB79291D67933400362E9D80F989984E
- CC3C427DFE954FBA0D000000E88E7E0DB4BE36AACFF3F590F27C8D0968008C2F
- 3FD9CA132EAD8D13AB5DAEC73EFD05AF030400003A216A9FA881CABA68FCC8E5
- 6BE5315A68008C36EC64CA4FBA5C5A1F1D5F7DFC5DBD11000060B9F56B9F7A5D
- 548F52DB7A32EC183D1A00D3934EC674D2E5632DFADDAEAF7CD28300010080E5
- D7AF7D566BA17A847CCCD7D9240D80CDA99DA0E5382CCEBA0D000000587AABDB
- FFC7D9F61F468D6C8006C064F293AECC6BF371E2ACDB00000080A5D6AF7926BD
- E73F22B4CD431A198306C078367252A593328F38E1F3E8AFBB0D0000005866AB
- DBFFDBEBA2B531A98DFC4CE768004C4FED841D67CDDB00000080E5B5F6E9FF65
- 8471D7D8240D808DAB9D8CF95A2DCAEED66AD7EB9947FE4D6F040000582EFD5A
- 67B5F6595F13E5F35A24B53526A00130B9DAC9563B09D3DA78F1C85FFFE7DE08
- 0000B05CFAB54EBD0E6A8F5C6D2DD4D6184203607CE39E5CE9E44C9F4FF9F04E
- D7335F7EAA79E1E9FFBD970300002C87A871A2D6C96B9FE1B551C88F8D63DCCF
- 759E06C074D44ED414211FE3E44E2778CAFBF1D4C37FDA1B0100009643BFC659
- 5BF7ACAF8B423E9611D2C82668006C4C7E12D6F224E6F9099E3E538F2FFCC59D
- CDB9335FECE50000008B2D6A9BA871CABA677D9435532E7D26943913D20098CC
- B827593A31F39333226F02449E477FFDB9C77EBF370200002CB67E6D33BCFE59
- 9B8794A7F928E37E8E1E0D80E9A99DB0B5284FF8B5EB0FDFE53600000060F1F5
- 6B9BE1F5CFFAF532421AD9240D808DCB4FC65A9EA4B532D209BF369E7DE4490F
- 03040000165AD43451DBD46A9E7ED46AA4885CBE56E66C8006C0E4C63DD9D209
- 9A9FA4E3C5639F761B000000B0B8FA354DBDDEA94728E7A38CFB39063400A6AB
- 76E2D62275BCCA2E583F1EF9D87DCD8B5F3DD9CB010000164BD43251D3D46A9D
- 7EE435D1B00869640A340036273F296B7992D6F2187EC23FFEE06FF646000080
- C5D2AF65EA754E3FDA6AA15CBE56E66C9006C0C68C73D2A593B48CFC648FBC1E
- 0FFFE5479AB35E090800002C90A861A29629EB9BB551AB8DCA18659CCF50D000
- 989EDAC99AAF45A413BC3CE9EBF1CC97EC020000001647BF86A9D737FD18561B
- A5486A6B6C8206C0E6D54EC6FC244D79392F4FFEF5F1D9FFF4A776010000000B
- 216A97A861CABA66356AB5504879392FD5D6988006C0C60D3BF9CA13B72DCA2F
- C2FAB00B0000005804FDDAA55ED7F46374FDD38F90C69A61C7184203603AF293
- B49627692D453AF9D317617D7CF63FBDCB2E00000060AEF5AFFEBF2BB22191D7
- 4079E4F2B53267933400B65E3A69CB13BDFC02C4588F67BEF85BBD110000603E
- F56B967A3DD38F5A0D94229FB385340036A77682A613B78C90F2B6133EC6F5F1
- D9FFEC59000000C07C5AB9FADFAB59CA3A663586D54011213F9647A9B6C69834
- 00A667D889989FC079E4277D99AF0DBB0000008079D47EF5BFADD64979196D86
- 1D63021A009B37EE899A4EEA14E9C44F5F8E3CD6AFAFEC0238FDC95E0E000030
- 1FA246A95FFD1F55EBC4984792E7A561C7188306C074A513323F896B795B945F
- 8EB5F1D8677EA537020000CC877E8D52AF5F56A356FBE41186E54C8906C0D62B
- 4FE2326A5F9088F5C71EFECB8F342F7EF5642F070000D85E519B448D52D62DA3
- EB9C5A8434B2453400A6A376A296277299B745ED4BB21A5FBAF3E77B230000C0
- F6EAD726F5BA65356A354F1EA12DCFD5D6989006C0F40D3B59D3C99C227D21CA
- 2F497B3CF6992F345F7DE20F7A390000C0F6889A246A935ACDD21E790D944748
- 63AEB6C62668004C4FDB099B9FD065DE16E517646D7CFECFDFD99C3BF7742F07
- 000098ADA845A226A9D52AEBEB996111DAF25C6D8D0DD000D81AC34EDA7452A7
- 28BF24A3E3D9479E6C9E79C46B01010080D98B5A246A925AADD21E79ED934748
- 63AEB6C62669004C57DB899B9FD865DE16E51726C59995F133EFFB7DAF050400
- 00662A6A90A845F2DAA41EB51A278FD096E76A6B6C9006C0D61976F2A6933B45
- FA82945F9AE1F1A58FFFB3DE080000301BFD1AA45E9FB4475EF3E411D298ABAD
- 31051A00D3D77602E727789947E45F8CB658DB613BF557F77B20200000301351
- 7B440D92D724C3770144E4B54E8AD096E76A6B6C8206C0D61A7612A7933C8FF2
- 8B917F71EA5FACCF7FE8379BB367BED8CB010000B646D41C517B94F5483FCA5A
- A5AC69F2798A90C65C6D8D29D9351899BE1DC598E4F3FC337984944793263F96
- 47D39C7EF674B3FB259F6EF61DB875650E0000306D8F7EE2679BAF7CF233BD2C
- 15FB31E6918AFF3C8F623E8D29425B9EABADB1491A005BA75FA0F7A57CB5705F
- 7FBC3C56E665847EFEF417BED85C74F585CDEE97BCAEBF0C00003025B1F5FF81
- FFFC47BD2C15F8A9C84F795EF4471EC57B9AA7023F8F90C65C6D8D29720BC0D6
- 693BA1F313BECC53E45F9694E7517EC1E25680DF722B0000003055FDADFFF10A
- F27A1DB23ECA7A268FD096E76A6B4C811D005B2B5DA90F6BAFDAF795C7F308E5
- 5AB91EFAB95B0100008069EB6FFDFF6C2F8B823F4514F7659E8AFE14A9B82F23
- A431575B63CA3400B65E5EA8E7C699E73F5B46583B7FFA0B5F6A2EBAFA02B702
- 0000009BD6DFFAFFC7BDAC2CFACBC23F8DA9F04F79BE9647C8F35C6D8D29D100
- D87AA9580F65E19ECBD7CAE3699EAFD7E64DF3D8FD1F6EF65F7B73B373D7A52B
- 7300008049BDF8C2A79AFBFEF86DBDAC56ECA748057E9E4744119FC6908AFD14
- A5DA1A5B40036036D616E9AB52015F1ECF3F571ECF23ACCF77EDB8A7D9F7757F
- B3D9B1E3BCFE320000C098CE9D7DBA79F4AF7EB679E69153BD595EEC97792AF8
- 238F223ECD23F282BF2CF06B6BA1B6C6146900CC462AD043AD704FCA63F967CA
- B53CC26AFECC235F69CEDFFF78B3F7C21B57E6000000E37AEAF3BFD47CFE2F3F
- D4CB8615FE69CC230AF834B645A9B6C616D100989D54A887325F2DDEFB46ADA5
- F57C5CBBF6C4039F6A2E7ED515CDEEBDDFB03207000018E5F9A7DED37CFABDBF
- D9CB6A05FFB0E23F4559F097057EBE961F2B3FC716D000989D54A0873C2FD58E
- E5C57D1EA136F6F3E71EFD6873E1C1377A1E0000003052DCF7FFD06DFFA439FD
- EC73BD5914F3A9E81FA7F88F02BE9C8718CB609B6800CC562AD2C3FA82BDFD78
- 39D622ACCD4F3FFB42B373C7BDCD4B3D0F0000001822EEFB3FF557FF43F3F803
- 9FEFCDA280CF0BFEBCE8AF3500A2A84F632AF0CBBC94AFD58EB3053400662F2F
- D673E53CA4823E3F96AFD5D6C3EAF8CC238F35E75DF0B9E6FC4BFEE6600D0000
- 60ADC73FF33F350FDFF9915E16857C5EFCA73145CC6B910AFE88721EF23C575B
- 638B6800CC5E59B4E763AE762C5FAB4592CF77344F7EEEA1E6C22B76357BF61D
- 1AAC010000F43D77EA5F359F5D79DF7F14EE6D457F5BF11F057C9EA7823EE5F9
- 5A52CE99110D80ED5116EB69CCF3A45CCBC7722DD43FF7D8A7EE6E2E7DCD3736
- BBCE3BD85F0600003AEFF433B737F7FFE92FF6B228E0F3A23F2FFCF33C15FB11
- 51C8A7B18C90C6306C8D19D100D81EB5823D29E7A15FC4AFFFB9342F8FD7C767
- 4F7DD8430101008015F1D0BF073FF0B38387FED50AFDB2E02FE71151C4A728E7
- 21CFD9661A00DB2715E7212FD4F3F5901F4B6A6B21E66D9FEF3F14F0CC331F6E
- 2EB8F2560F050400800E8B87FE3DFCA1B7364F3DFC486F16857B6A00D48AFF7C
- 3D4514F5795E16FC699ECBD76AC7D9621A00DBAB56AC87B6223E1F43BE565B0F
- F9679AE6AB4F3CD39C3DFB91E6652FFF1B9A000000D04151FC7FF1EE9F681EFB
- E4677BB354DCA702BF2DAF455EECA708F998F25C6D8D19D000D85E6D457B28E7
- 21D6F24886AD2729DFD13CFBC863CDF9FB1F6FF65E78E3600D0000E88A78E2FF
- 17EFBAB397A5023F8F28ECF3BC16A9B04F51AE853C0F79CE36D100D87EF5227D
- ED7A28E7B9519F5F9F3FF1C0A79AF32F7DA4D97BE1B195390000B0FC9EFCDC3F
- 6F1EFAE07FEC6579D19F8AFD5A9EE66D5116FCB5423F5FAB1D67463400E6432A
- D0DB8AF818E38B92CFF308E5B1A43D8F26C08557ECF47A400000E88078DDDF67
- DEFFFBBD2C0AF75AB15FE665A402BF8C3816224F63CA73B535664803603EB415
- E921CD877D26E49FABFD4C58BF1EAF07BCF8559737BBF77EC3600500005836CF
- 3FF59EE613EFFA955E562BF6F348EBA9E86F8B54E4A7A23E1F531EF29C6DA601
- 303FF262BDAD80CFC5B13C4AA3D656F347EFFBB3E6E2575DD1ECDEFB9AC10A00
- 00B02C9E7FEABDCDFDFFFE7FEE6579A1FF6231CF230AFC3C2F0BFE88DA5A442E
- 9F97C7D8061A00F3A556A0C798AF87725ECA7FA61CC3FAFCD1FB6ED704000080
- 25D32FFEFF592FAB15F6659E8FC32215F3A9E8AF15FAB535B69906C07C692BD2
- 439AC7185FA07C5E8AB57CBDED33493FD704000080E5B1B6F88FC8AFFA973B00
- A2B04F635B441D9222E62115F7699D39A601307F8615EE695EFB4C8C29923CCF
- B57F461300000016DFFAE23F2FF2CB3C8FB45E16FC65847C4C7968CBD9661A00
- F3A956A0B715F3A1ED58FEB37994D6AE69020000C0E2AA17FF11B5ABFEE34614
- F2692C2397CFCB636C330D80F95416E969DE56C087DAB1B6CFE6EA9FD1040000
- 80C5D35EFCA782BFB69E222FF853A4223FCF532429CFD798431A00F32B2FCC47
- 15F6E56753E46A6B496D7D87260000002C90D5E23F8AF55A815F7BF27F5EECA7
- C88BFC340FF97AC8F352DB3ADB480360BEE58579ADA04F637CB96A457C4DDBE7
- EAEB9A00000030FF9E7BE20F9B4FFCC92FF6B2B2C04FD156FCE7792D52911F79
- 48857D5A4FDA72E68806C0FCCB0BF3B2484FF318E34B562FE2D7CB7F2E8DED3F
- 1F4D80F32F79A4D97BD1B1C10A0000302F9E7CE81DCD67DEF7FFED6579719F47
- 14FF51C0475E8E29AF45D40811918754D8A7F5A42D67CE68002C86BC302F8BF7
- 64D43C297F3EC6F892E6E37A4F3CF0294D000000983351FC3FF08177F5B254CC
- 97918AFFB626402DA22EC82394F3249F97C798331A008BA12CCAF3E27D98B6E3
- B5FF5E7C59F371BD68029C3D7347F3B297FF8D66C78EF306AB0000C0AC9D3BFB
- 74F3C5933FD63CFCE10FF56679C19F47ADF84F91E6A9E84F11F5401A6B11CA91
- 05A101B038F2A2BCCCEB05FBEA7AED78B916F3F802E7E37ACF3EF295E6ECD90F
- 37FB2EFBF666E7CE970D560100805979F1854F355FFED8FFD89CFAF8277AB3BC
- A8CF63D2E23F6A806191E479AE6D9D39A201B058F2A2BC56C0D7A4F5DAF1DA7F
- 23FFE2A6F9DA319A004F7FF17DCD8507BFBDD9B9EBD2DE1A0000300B51FC7FF6
- FFF889E6C907BFD09BA522BE2CF6632C8BFD721E638AF85DBF1CF308791EDA72
- E69806C0E2C98BF63C0FE53C49EBB5E3E3FE37D67AF1B9179A531FFFD3E6E257
- 5DEE0D0100003003F19ABFFBFEE8FFD9FB5DFCB9DE2C2FEADB228AF9DA3CC614
- 51BC97631E21CF435BCE9CD300584C79913E6E019FD66BC7F3B5C9BEC08FDEF7
- 67CDF9977CD9C3010100600BC5C3FE3EFDDEDFE96579413F4E44515F8E29E277
- FF72CC23E47968CB59001A008B2B2FDACBA2BE56E487B45E3B3EEC582EBEE4F1
- 99D52F7B3C1CF0CCCAC301FF0B0F07040080298A87FD3D7CF2BF6B1EFEF09FF7
- 6665615FBBBF3F8F742C1F53C4EFF3E59847C8F3D096B3203400165759A88F9A
- 2769BD76BCED587CB963ADFD4BFEDC238F354F3DFCAEE6C257BEAED9B9E7E583
- 55000060A35E7CEEA3CD67FE8F1F6B9E7CF0F3BD5914E979719F471C2B9B0129
- CFC714F17B7D39E611F23CE4390B4A0360B19585FAA87992D6DB8E87FC58E4B5
- 2F7CACAD1E5B792EC03DEF6D5EF6CA9DCD79FB0EADAC010000937BE6D17FDD7C
- E24F7EA1F73BF6577BB3BCA86FBBEA9FAF95791EF1BB7B39E611F23CE47928E7
- 2C080D80C55716F1A3E6495A6F3B9EAB7DC1DBD7BEF2C98F363BF77CAC79C925
- 87BC2A1000002670E6C52F358FDEF78F9B876E7B77CC0611857ACAC759CBC73C
- E2F7F572CC23E479C8F350CE59201A00CB61AB9B00E5F1DA977EED3F124F3FFC
- A5E6E92FFEC7E6822B0E36BBF65C3558070000DA9C7EF6CF9ACFFEA79F691EFF
- F4677BB3BC902FF3DA5A999711BFAF97631E21CF439E8772CE82D100581EA38A
- FEB6227F54F15F1AF60F42585D7BF1B9E79B53F7FE9F2B6F09D8F3B243CD8E9D
- 1E10080000A5B3679E699EFAFCFFDA7CEA3DFF9FC12BFEA240AF15F6B5B594E7
- 632DE2F7F4883C4F11F23CE47928E72C200D80E532AB264018F68F43486BE756
- DE1270FAC9FFDCBCF4EBBEC10302010020130FFAFBC29FFFF7CD973E7A576F56
- 2BE8F3C8D7CACFC5D816F1BB79449EA708791EF23C9473169406C0F2D9681320
- 94C7D2177DD8CFB4FD43B136FFEA13CFAC3C20F0A55FF76CB3FBFCEBEC060000
- A0D3E2AAFFD35F7E67F3C977FD72EF77E5277B2B65819F47BE9EF27C4C91E6F1
- BB785A4B798C65843C0F791ECA390B4C0360396DA609304ADBCFB6FDA391F2FE
- F8F867EEB11B0000804E4B57FDBF78F22F7AB3BC70CFC751798A721E11BF7BE7
- 792D429E873C0FE59C05B7994290F936ACE88F3CCD535EC6CE6C6C8B6820E579
- 9A97796DDCD9BCF2E84DCDC557FFA366E7AE97F6E60000B0DCE2AAFFE30FFC8B
- E6F377DC16B341B415F7F9BC762CE5B588C23D8DB508791EF23C947396401463
- 2CAF28E073A3E6A5FC78ED1F80B67F24CA31AC5F7BEA730F364F3FFCA7CDF9FB
- F7367BCEBF6EB00A0000CBE7B9AFFC51F3E0077EAE79ECFEFB7BB354A8A7C23E
- 15F4F93C5FAB8D65C4EFD9E5588B90E721CF4339674968002CBFCD3601C695FF
- 63928F21F2FAFCC5E75E681EFBC4877BC91DCD4B2E3EE8B6000000964A6CF77F
- E463FFB879E88E77F7F2AFF65652719F228AF5DABC360E8BF8FD3A8D6D11F23C
- E47928E72C9169157FCCB761457FE4699EE7B14D3F8D69BDBF757F6D9E62756B
- FFDAF9A8716D7EF5CDB7342F7DC50F36BB340200005860674E7FA979E68BFFBA
- 79E003EFE9CD52915E2BE8DB8AFDFC33B5794414EB799EE6218D693DE479C8F3
- 50CE5932A9D863F9957FD7F93CE531A608298FE2BCCC53F19EF2BCA02FE7C38A
- FEF2E77636E7EFBFB0B9FC5BBFA739FFD2BFEFF90000002C94B8CFFFB9C7FEA8
- 79F823FFB679EED178BA7F2AD053D40AFC616B651E457A99C758E621E5F93CC9
- F350CE594251BCD11DE5DF773E4F793ED6228AF4721C169314FF6BE7E75F7A61
- F3CAEFF86F9AF32FF9AEDE1C0000E6DB735FF9E3E6F31FFA57CD738FE5857F5E
- BC97F35A5E7EBE1651AC97632D4239863C0FE59C2515051CDD52FE9DE7F394E7
- 635B44919EC632CFA3ADC81F5EFCE7F30B0E5EDE5C7EF8079BBD179CE8CD0100
- 60BE3CFFD4FB9A2F9FFC57CDE30F7EB1378B827C58D19FCF477D2E8F28D2CB3C
- C6B608E518F23C94739658146D7453FE775F9E07314F6B791E05791AD37ACAFB
- C5FADA3C8FBCC01FBFF8CF4323000080791285FFC327FF75F3D4830FF766A938
- CF232FE88715FBC30AFF8828D2CB31E5218D693DE47992CFCB6374402AECE8A6
- F2EF3F9F479EE6B53C4514E7E558E6296A85FD78C57F1E1A0100006CA7D1857F
- 8A6145FFB0B58828D0CB795A4B798AD096873C0FE59C8E88228D6E2BCF817C9E
- F27C6C8B28CEDBC6B698BCF8CF239E1170F91BFEBE87050200B0E5BEF670BF0F
- FF51718FFFA818A709504614E8F998F26111CA31E47928E774481468509E07F9
- 3CE5F9984788823CCDCB3C4539CF63B2C2BF8C68045CF6FA1B9A975DFE035E1F
- 0800C054C5EBFC9E7EF8779B47FEFACF262CFCF318A7E88F88E23CCFD33CCF43
- 9AA708E518F23C94733A268A3208E5B9509BA7B55A9E228AF232CFC78D44D920
- 68FB6FED685EF9C61B9B975D71A2396FDFD1DE1C000036E68567EF689EFEC2FB
- 9ACFFFF9077BB3289C5361BE5591FE37F2B1CC5384B63C1935A783A29082A476
- 3EE46B29CFC761D12FCA57F334AFE56DD1B63BA0F6B3AB6B171C7C45F3F26FFA
- EEE6BC971DB52B000080B1C4D5FE179EBEA3F9D25FFD61F3D4D79EE89F17E5D3
- 8CFCBF99F218CBBC2D4239863C4F6A6B7450144C502ACF8B7C9EF27C2CF314A9
- 28AFE529CAF9B8D1F673F9FF567FED956F3C6657000000AD56AFF6DFDE9BD58A
- F2B4362CC6FD5C44FED9FC7F2745398F08659E8F21CF4339A7E3A248829AF2DC
- A8CDD35A3EB6452ACAF37C6DA15E9FB745DBE7F2F5B5FF1BE75F7A4173D9EB8F
- 352F7DC57735BBCF7B756F0D0080AE7AF1854F37CF7CF18F9B47FEFAF6E6B9C7
- 9EEAAD94C5788C655E8B8D1C8FB5F27F6354847C4C79326A0E2B8511B429CF8F
- B6793E96798A548897F3DA98476D6DDCF5324FF31D2BB7081CF8C663CD4B2E3D
- A1190000D01151F47FF5B1F735A73E71FB608B7F14C9A900AF8D655E46DBB172
- BDEDBF9BAFD72294793E26A3E6B0220A2218A53C4FF279CA6BE3A8280BF334CF
- C772BD6D5EAED73E5F1EEBAF5D7CD5E5CD25D7DCD09C77E1B7B84D000060C9C4
- F6FE179EFC68F395FBFFAC79FCA1786F7F14C711B5C23C8DC3F2B6B5619FC9C7
- 5A1ED298D62342DB18F23C947358230A20184779AEB4CDF3B1CCDBA22CCA6B63
- 8A7C5E1ECBD76A9F1B36F6236E13B8F41B0F352F7DF9D166F74BBEC503040100
- 164C3CC8EFC5AF7EB479E64B77348F7DE2EEC1F6FE288C539405796D1C968F7B
- ACFC4CBE3E2C4299E763326A0EEB44D103E3AA9D2FF95ACA6B638A90CF23F222
- BC96E7E3B03C9FD73E336CCC6375EDE2AB5ED15CF8F5879A975CFC2DCDEEF3BF
- 5943000060CEAC14FCCF7DACF9EAE31F6D9EFCECDDCDE30FA5ADFD11B5823B2F
- CEDBC661793EAF7DA636A628E711A1B616F2E3499E27B53558278A1C985479DE
- B4CDF3B1CCF3B5E145F8FA623DC6CDACC5386EBE365243E0BC0B5EDDEC79E9B7
- 787E0000C08CC57DFCA79FF968F3C2539FAE14FC65E405F7A83C1FDBD66AEBB5
- B1CCF3B590C6B41ECA3C1F935173182A8A1AD888DAB953AEA5C239C9E7291F15
- B5C27C9231E56DF351F9A8689A975F7FA8D977C96B9A3DFB5EB3B24320760A00
- 00B07971653FAEF09F7EF653CDB35FF954F3A53BEF1E1C89C2779C682BC8CBBC
- 6D9E8F6D9FC93F57E6A322E47928E7A19C87DA1A0CD52F6060E3CA73A86D3E6C
- 1C27C62DDC47CD6B63990F5B2B23AC5F8B9D027B0FBCA279D9D77D4BB363D74B
- 9B3D2F794DB363F7D7B9850000A01005FEB917BFDC9CFEEAA79A73679E699EFE
- F2479BE74F7D7170653FA482384528D7CAA815E1B522BD1C533E6A9E8FE5FA38
- 11F23CE4EBB95173185B2A6060336AE751B996E6B53145C8E76D5116E6B542BE
- 1C471D4B517E3ED43E17D2F1DAB1325F1D579A0397BDBCF76FF78E950641E837
- 09E27682FE67769EF7EA66676F0D006011A5A2BEEF5CAFB8FFF44A711FA2C06F
- 769C6B9E7FE44B45915F8E659EAF45B11DCA63693D2FC66B85795A2BC7718F95
- F93811CABC3626E53CD4D6606CA930816928CFA7DAF9156BF97A3EAFE5A3A22C
- CEDBE6F97A5B5E9BE711C7421A6B9F8908653E6C4CCA79A8AD0100CCB3710AD7
- 341F36967919218AF034D63E13511E6B2BE253DE767CD85A5B8461793E26E53C
- D4D660628A0BA66D9C2236CDF3F5C8F3F532CFD74615E9C3D6CAE3A3E69344A8
- CDD398F250CE9372ADF619008079366E419BAFE7F37C2CD7371265C13E6C3EEA
- B365C4F150AE87B63CE4EBB95173D814C5055B6592E2365F8F3C5FAFE551A487
- B4966258F15E3BD6B61686FDB7CA08C3D6C2A83137EE1A00C03CA915ABC3D686
- 8D653E6CAD2D52715E2BE227590BB563211DCFD7DAF290AFE7CA79A8ADC1A628
- 2AD86AE314B3699EAF475EAEA7B5DA7C9C18A7B89FA4011046AD85723D298FE7
- 6A6BB951C70100B6DAA8027558519B1F8BBC5C4F6BB579DB5A19C38AF714E37C
- A62D426D9EC69487F27852CE436D0DA64211C1AC94E7DAB0A2373F16796D9ED6
- CA792AE0F3F55AE4857E1A6B9FAB45A8AD478461793E86DA5AAE6D1D00605EB5
- 15B0B522B85C8B71585E46A8ADD7222FF6D358FB5C1E217DBE5C2FE7A136CFC7
- 5CB956FB0C4C95E28259AA9D6FC3D6F263E55A8CC3F232C2B8CD81511126591B
- 3686B6BCCD389F01009885718AD6FC33B57CD8984718676DD208B5223F8F302C
- CFC7505B4BC65D83A95348B01D6AE7DDB0B5FC58B91663DB5A6D9ED646350342
- 6D3D220C5B0B6D79C8D793B61C006091D58AE290F2722D5F1F960F5B4B116AEB
- 11A1ADE80F6DF3D03686DA5A32EE1A6C198506DBA976FE0D5B2B8FC53C5FCBE7
- A3F269AF8571F290AFE746CD0100164559D8B6CDF3F5C8F3F571F369AF85B63C
- D4E6499E27E3AEC1965360300F6AE7E1A8B55A3E6C1C37AFAD85FC58B916CABC
- 1C531ECAE3B971D70000E6D1A405707E2CF2723D1F87E5B5B5901F2BD7C2B07C
- D8186A6BB9DA7ADB6761261416CC93B6F37158515C1E8B79BE366C3ECDBC1CDB
- 8E85DA5A32EE1A00C03C1AB7E84D6BF9B1722DC6DA5A1AA79D8751F390E6E57A
- A8AD85B67598298505F3A8EDBC1C551CD7F272AD6D5E1BDBF2721C762C1F436D
- 2D29D76A9F010058046D45732EADE5C7CAB5DA38EEB1DAF134A63CD4E6F918DA
- F2A4B616DAD6615B283098676DE7E738EBB57CD85A6D4C79C8E7A3C6107939CF
- C764D41C0060D1954570DB3C5F8FBC9C8F1A531EF2F9A8310C5B0B799E9B741D
- B695628345D176AE8E5A2F8FD7D6C7591B3586713E136A3F5333EC1800C03C1B
- 56000F2BACD3BC6D0CA33E538E61DCB5D0B69E4CBA0E734381C1A2693B67C759
- 2F3F93E6E3AC4F632DE47932EE1A00C022A915C4A3D66AF9B4D6C2A8F5501E4B
- 265D87B9A3C86091B59DBFE3AEB7CD37B3DE968761C772C38E01002C9261C5F1
- B0A2BBED58CADB3E3FE97A52CE9349D761AE293458061B2DA6F363B5CFA5B549
- 8EE5F3613F176AC7C7B1D19F030098B68D16C2F9CFD5FE1BC38EA7F9B09F1B76
- 2CD48E271B3D06734F21C1B219764E4F72ACF6D97C6DB3C793DA1A00C0321B55
- 9C27F9DA668F87DA67928D1E8385A2F860990D3BBF479DFBE5F1B6CF6FF473A1
- EDB30000CB6E9C823D29D737FBB964D8F1513F0B0B490142578C3AD737727CD8
- CF4CFAF9361BF9190080EDB491E2B9F6339316E8A3FE77377B1C169EE2822E1A
- E7BCDFCC67A6F5DF07005866E314DC6D9FD9CCCFE614FD74CAAEC1085D36EB82
- 5DF10F00D037AA009FA44057F0C3081A00B0DEB805BA421E006073365A908FFB
- 730A7EC8286060B449BF27BE570000D3316901AFE08721142AB0319BF9EEF8DE
- 0100F46DA66057ECC3841422305DBE530000D3A5D0872951ACC06CF9CE0100AC
- A5C0070000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1776,8 +1778,7 @@ object AboutForm: TAboutForm
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
- 000000000000000060DB35CDFF1FBFD8662D22A241D30000000049454E44AE42
- 6082}
+ 000000000060DB35CDFF1F71B080365A1F75440000000049454E44AE426082}
FileName =
'C:\YandexDisk\Development\Delphi\AErender Launcher\icons\png\ps\' +
'icon_512@2x.png'
@@ -1809,11 +1810,6 @@ object AboutForm: TAboutForm
Value = 100.000000000000000000
end>
ControlCollection = <
- item
- Column = 0
- Control = LauncherLabel
- Row = 1
- end
item
Column = 0
Control = AuthorsLabel
@@ -1843,6 +1839,11 @@ object AboutForm: TAboutForm
Column = 0
Control = FFmpegLabel
Row = 7
+ end
+ item
+ Column = 0
+ Control = Layout1
+ Row = 1
end>
RowCollection = <
item
@@ -1891,20 +1892,6 @@ object AboutForm: TAboutForm
item
Value = 50.000000000000010000
end>
- object LauncherLabel: TLabel
- Align = Client
- AutoSize = True
- StyledSettings = [FontColor]
- Margins.Left = 20.000000000000000000
- Size.Width = 535.000000000000000000
- Size.Height = 50.000000000000000000
- Size.PlatformDefault = False
- TextSettings.Font.Family = 'Nexa'
- TextSettings.Font.Size = 26.000000000000000000
- TextSettings.Font.StyleExt = {00070000000000000004000000}
- Text = 'AErender Launcher'
- TabOrder = 0
- end
object AuthorsLabel: TLabel
Align = Client
AutoSize = True
@@ -1916,7 +1903,7 @@ object AboutForm: TAboutForm
TextSettings.Font.Size = 16.000000000000000000
TextSettings.Font.StyleExt = {00070000000000000004000000}
Text = 'Created by Lin Stilson // Further Development by Lily Stilson'
- TabOrder = 1
+ TabOrder = 0
end
object DescriptionLabel: TLabel
Align = Client
@@ -1929,7 +1916,7 @@ object AboutForm: TAboutForm
TextSettings.Font.Size = 14.000000000000000000
TextSettings.Font.StyleExt = {00070000000000000004000000}
Text = 'An advanced GUI for Adobe After Effects Render Engine'
- TabOrder = 2
+ TabOrder = 1
end
object FromRussiaWithLoveLabel: TLabel
Align = Client
@@ -1942,7 +1929,7 @@ object AboutForm: TAboutForm
TextSettings.Font.Size = 16.000000000000000000
TextSettings.Font.StyleExt = {00070000000000000004000000}
Text = 'From Russia with '#55357#56473
- TabOrder = 3
+ TabOrder = 2
end
object CopyrightsLabel: TLabel
Align = Client
@@ -1956,7 +1943,7 @@ object AboutForm: TAboutForm
Text =
'Adobe After Effects and Adobe After Effects Render Engine are pr' +
'operty of Adobe Systems inc.'
- TabOrder = 4
+ TabOrder = 3
end
object WebsiteLabel: TLabel
Align = Client
@@ -1971,7 +1958,7 @@ object AboutForm: TAboutForm
TextSettings.Font.StyleExt = {00060000000000000004000000}
TextSettings.FontColor = claWhite
Text = 'aerenderlauncher.com'
- TabOrder = 5
+ TabOrder = 4
OnClick = WebsiteLabelClick
end
object FFmpegLabel: TLabel
@@ -1987,7 +1974,180 @@ object AboutForm: TAboutForm
TextSettings.FontColor = xFFDDDDDD
TextSettings.WordWrap = False
Text = 'FFMPEG: Undetected. Feature will be disabled.'
+ TabOrder = 5
+ end
+ object Layout1: TLayout
+ Align = Client
+ Size.Width = 555.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
TabOrder = 6
+ object Path2: TPath
+ Align = Left
+ Data.Path = {
+ 730100000000000085EB6C4233336342010000003E0AB5413333634201000000
+ CDCC644100008C42010000000000000000008C4201000000C3F52E4200000000
+ 010000005C8F6842000000000100000066669A4200008C420100000033337B42
+ 00008C420100000085EB6C42333363420300000085EB6C423333634200000000
+ 6666414233336B4101000000CDCCF04100003242010000006666604200003242
+ 010000006666414233336B41030000006666414233336B4100000000CD4C0643
+ 00008C4201000000CDCCA34200008C42020000001F05AC42CDCC3A4202000000
+ 9042B4426666BA4102000000E27ABC420000000001000000D8A3124300000000
+ 0100000049611043CDCC4C4101000000F828D242CDCC4C4101000000E47ACC42
+ 3433E74101000000D8230C433433E7410100000053F80943CDCC244201000000
+ D923C842CDCC2442010000007B94C24200006442010000000A97084300006442
+ 01000000CD4C064300008C4203000000CD4C064300008C42000000000A972343
+ 9A99A54101000000707D23433433D34102000000B85E28436766A24102000000
+ B89E2D4334339B4102000000B89E324334339B410200000052B8374334339B41
+ 020000001E453C433433AB4102000000707D3E43CECCC04101000000B81E3743
+ CECC0A420200000070FD3443686602420200000047E132430200FC4102000000
+ 47E12E430200FC4102000000E17A28430200FC4102000000E1FA21439B990B42
+ 02000000476120430100304201000000CCCC1B4300008C420100000099990F43
+ 00008C42010000003D4A18439A99A541010000000A9723439A99A54103000000
+ 0A9723439A99A54100000000E1FA4843CDCC464202000000C2B5484333335F42
+ 02000000E13A4D43CDCC7042020000007BD45543CDCC7042020000007B545A43
+ CDCC704202000000AE87604300006A42020000000AD7634367665E4201000000
+ AE476A4334337D4202000000482164436766894202000000852B5B439A998E42
+ 0200000085AB53439A998E420200000085AB42439A998E4202000000856B3A43
+ 3433734202000000C2353D43010034420200000028DC3F430200F04102000000
+ C2F54B439C99994102000000C2F55B439C99994102000000C2756C439C999941
+ 02000000C2F574433633EB4102000000E17A6F43CECC464201000000E1FA4843
+ CECC464203000000E1FA4843CDCC4642000000005C8F654366661E4202000000
+ D7E36543CCCC04420200000033736143FFFFEF410200000033735A43FFFFEF41
+ 0200000099D95343FFFFEF4102000000D7E34D43CCCC044202000000C2F54A43
+ 66661E42010000005C8F654366661E42030000005C8F654366661E4200000000
+ CDCC8C4300008C420100000033138F43CDCC30420200000029BC8F43CDCC1242
+ 02000000A4308E430000F841020000003D4A8A430000F841020000003D8A8643
+ 0000F841020000005C6F8343333315420200000066C682433333334201000000
+ CD8C804300008C42010000000000754300008C4201000000C3B57D43CCCCA441
+ 01000000154E8443CCCCA44101000000711D84436666DA4102000000850B8743
+ 3333B341020000001FC5894333339F4102000000B9DE8C4333339F4102000000
+ 86AB924333339F4102000000158E9643CCCCE441020000005D2F954366663042
+ 0100000066E6924300008C4201000000CDCC8C4300008C4203000000CDCC8C43
+ 00008C4200000000F6E8B743CDCCCC3D0100000000C0B14300008C4201000000
+ CD0CAC4300008C42010000000040AC43CDCC7C42020000007BD4A94333338A42
+ 02000000E19AA64333338E4202000000E19AA34333338E4202000000E15A9C43
+ 33338E420200000000C097430000764202000000142E99433333354202000000
+ 14AE9A436666E2410200000014CEA04300009C41020000004701A84300009C41
+ 02000000E19AAA4300009C4102000000F568AE436666B24102000000F568AF43
+ 3333DB4101000000A3D0B14300CDCC3D01000000F6E8B74300CDCC3D03000000
+ F6E8B743CDCCCC3D0000000066469F433333354202000000D7839E439A995742
+ 020000005218A14333336F4202000000B8FEA44333336F420200000052D8A843
+ 33336F4202000000D7A3AC43CDCC584202000000CC6CAD433333354202000000
+ 5B2FAE43CCCC1242020000001E65AB433333F74102000000848BA7433333F741
+ 020000001FA5A3433333F741020000005C0FA0439A9911420200000066469F43
+ 333335420300000066469F433333354200000000C395BE43CDCC464202000000
+ 3473BE4333335F4202000000C3B5C043CDCC7042020000009002C543CDCC7042
+ 020000009042C743CDCC7042020000002A5CCA4300006A4202000000D803CC43
+ 67665E42010000002A3CCF4334337D4202000000F728CC436766894202000000
+ 16AEC7439A998E420200000016EEC3439A998E4202000000166EBB439A998E42
+ 02000000164EB743343373420200000035B3B84301003442020000006806BA43
+ 0200F041020000003513C0439C999941020000003513C8439C99994102000000
+ 3553D0439C999941020000003593D4433633EB4102000000C4D5D143CECC4642
+ 01000000C395BE43CECC464203000000C395BE43CDCC46420000000048E1CC43
+ 66661E4202000000850BCD43CCCC04420200000034D3CA43FFFFEF4102000000
+ 3453C743FFFFEF41020000006706C443FFFFEF4102000000860BC143CCCC0442
+ 020000007C94BF4366661E420100000048E1CC4366661E420300000048E1CC43
+ 66661E4200000000B8BEDE439A99A54101000000EBB1DE433433D34102000000
+ 8F22E1436766A241020000008FC2E34334339B41020000008F42E64334339B41
+ 020000005CCFE84334339B4102000000C215EB433433AB4102000000EB31EC43
+ CECCC041010000008F82E843CECC0A4202000000EB71E7436866024202000000
+ D763E6430200FC4102000000D763E4430200FC4102000000A430E1430200FC41
+ 02000000A4F0DD439B990B4202000000D723DD4301003042010000009AD9DA43
+ 00008C420100000000C0D44300008C42010000005218D9439A99A54101000000
+ B8BEDE439A99A54103000000B8BEDE439A99A541000000008FE2004400000000
+ 01000000CCACFC433333674201000000665607443333674201000000CDCC0644
+ 00008C42010000000000F54300008C4201000000852BFB430000000001000000
+ 8FE2004400000000030000008FE200440000000000000000F65815449A99A541
+ 01000000C34518449A99A54101000000F618164400008C4201000000F6381344
+ 00008C4201000000D763134433337B42020000005C6F12443333894202000000
+ 8F621044CDCC8E420200000048010F4400008F42020000009A590B4433338F42
+ 02000000290C094466667A42020000005CCF094433333542020000005C8F0A44
+ 6666E241020000000AC70D4433339B41020000005C5F114400009C4102000000
+ C205134400009C4102000000C2751444CDCCB44102000000EBF114440000DC41
+ 01000000F65815449A99A54103000000F65815449A99A54100000000CDDC0C44
+ 333335420200000090720C44CCCC5A420200000033D30D443333714202000000
+ 3EDA0F4433337142020000000BA71444333371420200000052F815443333F341
+ 02000000862B11443333F341020000007B240F443333F3410200000066460D44
+ 9A990F4202000000CDDC0C443333354203000000CDDC0C443333354200000000
+ 5C5F1D449A99A54101000000293C1C4400003A4202000000AEE71B4400005842
+ 0200000071AD1C44CDCC6E4202000000A4A01E44CDCC6E4202000000A4802044
+ CDCC6E4202000000150E22449A99554202000000336322449A99374201000000
+ 5C7F23449A99A54101000000C28526449A99A541010000005158244434338C42
+ 01000000B79E214434338C420100000009B721449B997D420200000051382044
+ CECC884202000000FFEF1E449A998D420200000065361D449A998D4202000000
+ 32431A449A998D4202000000468118449A99774202000000132E194467663A42
+ 010000008E521A449B99A541010000005C5F1D449B99A541030000005C5F1D44
+ 9A99A541000000005C1F304400008C42010000008F423144CDCC304202000000
+ 0A973144CDCC12420200000047D130440000F8410200000014DE2E440000F841
+ 0200000014FE2C440000F84102000000A3702B443333154202000000281C2B44
+ 33333342010000005CFF294400008C4201000000F6F8264400008C4201000000
+ 67262944CCCCA4410100000001E02B44CCCCA44101000000AFC72B446666DA41
+ 02000000B93E2D443333B34102000000E29A2E4433339F4102000000AF273044
+ 33339F4102000000150E334433339F41020000005DFF3444CCCCE44102000000
+ 015034446666304201000000292C334400008C42010000005C1F304400008C42
+ 030000005C1F304400008C420000000066A64044CDCC7E42020000003DFA3E44
+ 9A998A420200000047613D4400008F4202000000148E3B4400008F4202000000
+ E1FA374400008F4202000000EB6135449A997B4202000000AE2736449A993542
+ 0200000071ED36443433DF4102000000AE473A4467669A4102000000E1DA3D44
+ 67669A4102000000E19A3F4467669A410200000014DE40446766AA4102000000
+ 85FB4144CECCD4410100000033B33F44CECC0A42020000000A173F4468660042
+ 020000005C3F3E446966F64102000000C2653D446966F64102000000F5583B44
+ 6966F641020000001E9539443433134202000000D63339449B99354202000000
+ 99C9384434335B4202000000E02A3A4434336F420200000047113C4434336F42
+ 02000000E10A3D4434336F4202000000A3103E44CECC6A42020000008FF23E44
+ CECC5E420100000066A64044CDCC7E420300000066A64044CDCC7E4200000000
+ 85DB4744000000000100000066A646443333DB4102000000A30048449A99AD41
+ 02000000706D49440000A04102000000D7D34A440000A04102000000D7534E44
+ 0000A04102000000C3754F440000EC4102000000EBD14E440000304201000000
+ CCAC4D4400008C4201000000FF9F4A4400008C42010000007AC44B4466663042
+ 020000003D2A4C4466660C420200000051284B446666FA410200000051884944
+ 6666FA410200000084BB47446666FA4102000000653646449999154202000000
+ 32E345443333334201000000C3C5444400008C4201000000F6B8414400008C42
+ 01000000B9CE4444000000000100000085DB4744000000000300000085DB4744
+ 000000000000000014BE5344CDCC464202000000CCAC534433335F4202000000
+ 14CE5444CDCC7042020000007AF45644CDCC7042020000007A145844CDCC7042
+ 0200000047A1594400006A42020000001E755A4467665E420100000047115C44
+ 34337D4202000000AD875A4467668942020000003D4A58449A998E4202000000
+ 3D6A56449A998E42020000003D2A52449A998E42020000003D1A504434337342
+ 02000000CCCC50440100344202000000667651440200F04102000000CC7C5444
+ 9C99994102000000CC7C58449C99994102000000CC9C5C449C99994102000000
+ CCBC5E443633EB4102000000145E5D44CECC46420100000014BE5344CECC4642
+ 0300000014BE5344CDCC46420000000033E35A4466661E420200000052F85A44
+ CCCC04420200000029DC5944FFFFEF4102000000291C5844FFFFEF4102000000
+ C3755644FFFFEF410200000052F85444CCCC044202000000CD3C544466661E42
+ 0100000033E35A4466661E420300000033E35A4466661E4200000000ECD16344
+ 9A99A5410100000086CB63443433D34102000000D80365446766A24102000000
+ D853664434339B4102000000D893674434339B41020000003EDA684434339B41
+ 0200000072FD69443433AB4102000000868B6A44CECCC04101000000D8B36844
+ CECC0A4202000000862B684468660242020000007CA467440200FC4102000000
+ 7CA466440200FC4102000000E20A65440200FC4102000000E26A63449B990B42
+ 020000007C04634401003042010000005DDF614400008C420100000090D25E44
+ 00008C4201000000B9FE60449A99A54101000000ECD163449A99A54103000000
+ ECD163449A99A541}
+ Fill.Color = claWhite
+ Margins.Left = 20.000000000000000000
+ Position.X = 20.000000000000000000
+ Size.Width = 320.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ object LauncherLabel: TLabel
+ Align = Client
+ AutoSize = True
+ StyledSettings = [FontColor]
+ Margins.Left = 8.000000000000000000
+ Margins.Bottom = 12.000000000000000000
+ Size.Width = 207.000000000000000000
+ Size.Height = 38.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 14.000000000000000000
+ TextSettings.VertAlign = Trailing
+ Text = '(v0.8.6-beta)'
+ TabOrder = 0
+ end
end
end
end
diff --git a/src/AboutUnit.pas b/src/AboutUnit.pas
index 4ba7be7..acb3316 100644
--- a/src/AboutUnit.pas
+++ b/src/AboutUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* AboutUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -44,6 +44,10 @@ interface
FMX.Layouts,
FMX.Ani,
FMX.Effects,
+
+ AErenderLauncher.IO,
+ AErenderLauncher.Types,
+
{$IFDEF MSWINDOWS}
FMX.Platform.Win, Winapi.ShellAPI, Winapi.Windows;
{$ENDIF MSWINDOWS}
@@ -64,6 +68,8 @@ TAboutForm = class(TForm)
GridPanelLayout1: TGridPanelLayout;
GridPanelLayout2: TGridPanelLayout;
LogoRotationAnim: TFloatAnimation;
+ Path2: TPath;
+ Layout1: TLayout;
procedure WebsiteLabelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
@@ -71,9 +77,9 @@ TAboutForm = class(TForm)
procedure SetLanguage(LanguageCode: Integer);
private
{ Private declarations }
- {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
public
{ Public declarations }
+ {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
end;
var
@@ -111,16 +117,16 @@ procedure TAboutForm.SetLanguage(LanguageCode: Integer);
procedure TAboutForm.FormShow(Sender: TObject);
begin
- LauncherLabel.Text := 'AErender Launcher (' + APPVERSION + ')';
+ LauncherLabel.Text := '(' + APPVERSION + ')';
if MainUnit.FFMPEG then
begin
FFmpegLabel.FontColor := $FF1E90FF;
- FFmpegLabel.Text := Language[LANG].AboutForm.FFMPEG + MainUnit.ffmpegPath;
+ FFmpegLabel.Text := Language[Settings.Language].AboutForm.FFMPEG + MainUnit.ffmpegPath;
end
else
begin
FFmpegLabel.FontColor := $FFDDDDDD;
- FFmpegLabel.Text := Language[LANG].AboutForm.FFMPEGNotFound;
+ FFmpegLabel.Text := Language[Settings.Language].AboutForm.FFMPEGNotFound;
end;
end;
@@ -131,12 +137,7 @@ procedure TAboutForm.Image1DblClick(Sender: TObject);
procedure TAboutForm.WebsiteLabelClick(Sender: TObject);
begin
- {$IFDEF MSWINDOWS}
- ShellExecute(0, 'open', PWideChar('http://aerenderlauncher.com'), nil, nil, SW_SHOW);
- {$ENDIF MSWINDOWS}
- {$IFDEF MACOS}
- _system(PAnsiChar('open ' + AnsiString('"' + 'http://aerenderlauncher.com' + '"')));
- {$ENDIF MACOS}
+ Open('https://aerenderlauncher.com', []);
end;
procedure TAboutForm.LogoRotationAnimFinish(Sender: TObject);
diff --git a/src/FFMPEGUnit.pas b/src/FFMPEGUnit.pas
index a3dcf0b..f280801 100644
--- a/src/FFMPEGUnit.pas
+++ b/src/FFMPEGUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* FFMPEGUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
diff --git a/src/HelpUnit.fmx b/src/HelpUnit.fmx
index 442eac6..59827dc 100644
--- a/src/HelpUnit.fmx
+++ b/src/HelpUnit.fmx
@@ -40,8 +40,8 @@ object HelpForm: THelpForm
DefaultItemStyles.GroupHeaderStyle = ''
DefaultItemStyles.GroupFooterStyle = ''
OnChange = ContentsChange
- Viewport.Width = 200.000000000000000000
- Viewport.Height = 567.000000000000000000
+ Viewport.Width = 196.000000000000000000
+ Viewport.Height = 563.000000000000000000
object ListBoxGroupHeader1: TListBoxGroupHeader
Selectable = False
TabOrder = 0
diff --git a/src/HelpUnit.pas b/src/HelpUnit.pas
index 532d401..91ca972 100644
--- a/src/HelpUnit.pas
+++ b/src/HelpUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* HelpUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -47,6 +47,8 @@ interface
FMX.Memo,
FMX.WebBrowser,
+ AErenderLauncher.Types,
+
{$IFDEF MSWINDOWS}
FMX.Platform.Win, Winapi.Windows, Winapi.TlHelp32;
{$ENDIF MSWINDOWS}
diff --git a/src/ImportUnit.fmx b/src/ImportUnit.fmx
index a50d7aa..02f758b 100644
--- a/src/ImportUnit.fmx
+++ b/src/ImportUnit.fmx
@@ -17,47 +17,47 @@ object ImportForm: TImportForm
object topLayout: TLayout
Align = Top
Size.Width = 640.000000000000000000
- Size.Height = 33.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 3
object importLabel: TLabel
Align = Client
StyledSettings = [Family, FontColor]
- Margins.Left = 20.000000000000000000
- Size.Width = 322.000000000000000000
- Size.Height = 33.000000000000000000
+ Margins.Left = 16.000000000000000000
+ Size.Width = 328.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 14.000000000000000000
TextSettings.Font.StyleExt = {00070000000000000004000000}
Text = 'Import After Effects Project'
TabOrder = 0
end
- object XMLFile: TEdit
+ object ImportedFile: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Align = Right
TabOrder = 1
ReadOnly = True
- Position.X = 342.000000000000000000
- Position.Y = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
+ Position.X = 344.000000000000000000
+ Position.Y = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
Size.Width = 288.000000000000000000
- Size.Height = 23.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
end
end
object projectPathLayout: TLayout
Align = Top
- Position.Y = 33.000000000000000000
+ Position.Y = 32.000000000000000000
Size.Width = 640.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 4
object aerProjectPathLabel: TLabel
Align = Left
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
Size.Width = 120.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
@@ -69,34 +69,34 @@ object ImportForm: TImportForm
Align = Client
TabOrder = 1
ReadOnly = True
- Margins.Top = 5.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 500.000000000000000000
- Size.Height = 22.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 504.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
end
end
object compLayout: TGroupBox
Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 326.000000000000000000
- Size.Height = 335.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Size.Width = 328.000000000000000000
+ Size.Height = 338.000000000000000000
Size.PlatformDefault = False
Text = 'Compositions'
TabOrder = 5
object GridPanelLayout1: TGridPanelLayout
Align = Bottom
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 10.000000000000000000
- Position.X = 10.000000000000000000
- Position.Y = 298.000000000000000000
- Size.Width = 306.000000000000000000
- Size.Height = 27.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 302.000000000000000000
+ Size.Width = 312.000000000000000000
+ Size.Height = 28.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
ColumnCollection = <
@@ -126,9 +126,9 @@ object ImportForm: TImportForm
end>
object selectallButton: TButton
Align = Client
- Margins.Right = 3.000000000000000000
- Size.Width = 150.000000000000000000
- Size.Height = 27.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Size.Width = 154.000000000000000000
+ Size.Height = 28.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Text = 'Select All'
@@ -136,121 +136,117 @@ object ImportForm: TImportForm
end
object deselallButton: TButton
Align = Client
- Margins.Left = 3.000000000000000000
- Size.Width = 150.000000000000000000
- Size.Height = 27.000000000000000000
+ Margins.Left = 2.000000000000000000
+ Size.Width = 154.000000000000000000
+ Size.Height = 28.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = 'Deselect All'
OnClick = deselallButtonClick
end
end
- object BufferedLayout1: TBufferedLayout
+ object compListBox: TListBox
Align = Client
- Size.Width = 326.000000000000000000
- Size.Height = 298.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 20.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 312.000000000000000000
+ Size.Height = 278.000000000000000000
Size.PlatformDefault = False
- object compositions: TListBox
- Align = Client
- Margins.Left = 10.000000000000000000
- Margins.Top = 20.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 306.000000000000000000
- Size.Height = 273.000000000000000000
- Size.PlatformDefault = False
- DisableFocusEffect = True
- DefaultItemStyles.ItemStyle = ''
- DefaultItemStyles.GroupHeaderStyle = ''
- DefaultItemStyles.GroupFooterStyle = ''
- ShowCheckboxes = True
- OnChange = compositionsChange
- OnChangeCheck = compositionsChangeCheck
- Viewport.Width = 306.000000000000000000
- Viewport.Height = 273.000000000000000000
- end
+ AlternatingRowBackground = True
+ DisableFocusEffect = True
+ DefaultItemStyles.ItemStyle = ''
+ DefaultItemStyles.GroupHeaderStyle = ''
+ DefaultItemStyles.GroupFooterStyle = ''
+ ShowCheckboxes = True
+ OnChange = compListBoxChange
+ OnChangeCheck = compListBoxChangeCheck
+ Viewport.Width = 308.000000000000000000
+ Viewport.Height = 274.000000000000000000
end
end
object compImportLayout: TLayout
Align = Right
- Position.X = 336.000000000000000000
- Position.Y = 65.000000000000000000
- Size.Width = 304.000000000000000000
- Size.Height = 345.000000000000000000
+ Position.X = 352.000000000000000000
+ Position.Y = 64.000000000000000000
+ Size.Width = 288.000000000000000000
+ Size.Height = 354.000000000000000000
Size.PlatformDefault = False
TabOrder = 7
object compProp: TGroupBox
Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 10.000000000000000000
- Size.Width = 289.000000000000000000
- Size.Height = 213.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Size.Width = 264.000000000000000000
+ Size.Height = 338.000000000000000000
Size.PlatformDefault = False
Text = 'Composition Properties'
TabOrder = 0
object compName: TLabel
Align = Top
- Margins.Left = 10.000000000000000000
+ Margins.Left = 12.000000000000000000
Margins.Top = 20.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 10.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 12.000000000000000000
Position.Y = 20.000000000000000000
- Size.Width = 269.000000000000000000
- Size.Height = 17.000000000000000000
+ Size.Width = 236.000000000000000000
+ Size.Height = 16.000000000000000000
Size.PlatformDefault = False
Text = 'Name: '
- TabOrder = 5
+ TabOrder = 6
end
object compResolution: TLabel
Align = Top
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 10.000000000000000000
- Position.Y = 42.000000000000000000
- Size.Width = 269.000000000000000000
- Size.Height = 17.000000000000000000
+ Margins.Left = 12.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 12.000000000000000000
+ Position.Y = 40.000000000000000000
+ Size.Width = 236.000000000000000000
+ Size.Height = 16.000000000000000000
Size.PlatformDefault = False
Text = 'Resolution: '
TabOrder = 3
end
object compFramerate: TLabel
Align = Top
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 10.000000000000000000
- Position.Y = 64.000000000000000000
- Size.Width = 269.000000000000000000
- Size.Height = 17.000000000000000000
+ Margins.Left = 12.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 12.000000000000000000
+ Position.Y = 60.000000000000000000
+ Size.Width = 236.000000000000000000
+ Size.Height = 16.000000000000000000
Size.PlatformDefault = False
Text = 'Framerate: '
TabOrder = 2
end
object compRangeIn: TLabel
Align = Top
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 10.000000000000000000
- Position.Y = 86.000000000000000000
- Size.Width = 269.000000000000000000
- Size.Height = 17.000000000000000000
+ Margins.Left = 12.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 12.000000000000000000
+ Position.Y = 80.000000000000000000
+ Size.Width = 236.000000000000000000
+ Size.Height = 16.000000000000000000
Size.PlatformDefault = False
Text = 'Range start: '
TabOrder = 1
end
object compRangeOut: TLabel
Align = Top
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 10.000000000000000000
- Position.Y = 108.000000000000000000
- Size.Width = 269.000000000000000000
- Size.Height = 17.000000000000000000
+ Margins.Left = 12.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 12.000000000000000000
+ Position.Y = 100.000000000000000000
+ Size.Width = 236.000000000000000000
+ Size.Height = 16.000000000000000000
Size.PlatformDefault = False
Text = 'Range end: '
TabOrder = 0
@@ -258,48 +254,67 @@ object ImportForm: TImportForm
end
object importProp: TGroupBox
Align = Bottom
- Margins.Left = 5.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 218.000000000000000000
- Size.Width = 289.000000000000000000
+ Enabled = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 224.000000000000000000
+ Size.Width = 264.000000000000000000
Size.Height = 122.000000000000000000
Size.PlatformDefault = False
Text = 'Import Properties'
+ Visible = False
TabOrder = 1
- object splitRenderCheckbox: TCheckBox
+ object SplitRenderLayout: TLayout
Align = Top
- Margins.Left = 10.000000000000000000
+ Margins.Left = 8.000000000000000000
Margins.Top = 20.000000000000000000
- Margins.Right = 10.000000000000000000
- Position.X = 10.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
Position.Y = 20.000000000000000000
- Size.Width = 269.000000000000000000
- Size.Height = 19.000000000000000000
+ Size.Width = 248.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
- TabOrder = 0
- Text = 'Prepare for split rendering'
+ TabOrder = 3
+ object SplitRenderCheckbox: TCheckBox
+ Align = Client
+ Size.Width = 248.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 0
+ Text = 'Prepare for split rendering'
+ end
end
end
end
object StatusBar1: TStatusBar
- Position.Y = 410.000000000000000000
+ Position.Y = 418.000000000000000000
ShowSizeGrip = True
Size.Width = 640.000000000000000000
- Size.Height = 40.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 10
object importButton: TButton
Align = Center
- Size.Width = 114.000000000000000000
- Size.Height = 30.000000000000000000
+ Size.Width = 128.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Text = 'Import'
OnClick = importButtonClick
end
end
+ object Splitter1: TSplitter
+ Align = Right
+ Cursor = crHSplit
+ MinSize = 20.000000000000000000
+ Position.X = 344.000000000000000000
+ Position.Y = 64.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 354.000000000000000000
+ Size.PlatformDefault = False
+ end
object XMLDocument: TXMLDocument
Left = 8
Top = 416
@@ -311,9 +326,9 @@ object ImportForm: TImportForm
Top = 416
object LinkControlToPropertyShowCheckboxes: TLinkControlToProperty
Category = 'Quick Bindings'
- Control = splitRenderCheckbox
+ Control = SplitRenderCheckbox
Track = True
- Component = compositions
+ Component = compListBox
ComponentProperty = 'ShowCheckboxes'
CustomFormat = 'IfThen(IsChecked, False, True)'
InitializeControlValue = False
diff --git a/src/ImportUnit.pas b/src/ImportUnit.pas
index 0a422de..747e7bb 100644
--- a/src/ImportUnit.pas
+++ b/src/ImportUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* ImportUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -33,6 +33,11 @@ interface
System.UITypes,
System.Classes,
System.Variants,
+ System.JSON,
+ System.Generics.Collections,
+ System.Rtti,
+ System.Bindings.Outputs,
+
FMX.Types,
FMX.Controls,
FMX.Forms,
@@ -50,20 +55,26 @@ interface
FMX.Edit,
FMX.DialogService.Sync,
FMX.BufferedLayout,
+ Fmx.Bind.Editors,
+ Fmx.Bind.DBEngExt,
+ FMX.ListBox,
+
Xml.xmldom,
Xml.XMLIntf,
Xml.XMLDoc,
- FMX.ListBox,
+
Data.Bind.EngExt,
- Fmx.Bind.DBEngExt,
- System.Rtti,
- System.Bindings.Outputs,
- Fmx.Bind.Editors,
Data.Bind.Components,
+
+ AErenderLauncher.Rendering,
+ AErenderLauncher.Math,
+ AErenderLauncher.Types,
+
{$IFDEF MSWINDOWS}Fmx.Platform.Win, WinApi.Windows;{$ENDIF MSWINDOWS}
{$IFDEF MACOS}MacApi.Foundation;{$ENDIF MACOS}
type
+ TFormSender = (FS_JSON, FS_XML);
TImportForm = class(TForm)
importButton: TButton;
topLayout: TLayout;
@@ -71,7 +82,7 @@ TImportForm = class(TForm)
projectPathLayout: TLayout;
aerProjectPathLabel: TLabel;
aerProjectPath: TEdit;
- compositions: TListBox;
+ compListBox: TListBox;
compLayout: TGroupBox;
XMLDocument: TXMLDocument;
compProp: TGroupBox;
@@ -82,34 +93,38 @@ TImportForm = class(TForm)
compRangeOut: TLabel;
importProp: TGroupBox;
compImportLayout: TLayout;
- splitRenderCheckbox: TCheckBox;
+ SplitRenderCheckbox: TCheckBox;
BindingsList1: TBindingsList;
LinkControlToPropertyShowCheckboxes: TLinkControlToProperty;
- XMLFile: TEdit;
+ ImportedFile: TEdit;
selectallButton: TButton;
deselallButton: TButton;
StatusBar1: TStatusBar;
GridPanelLayout1: TGridPanelLayout;
- BufferedLayout1: TBufferedLayout;
+ SplitRenderLayout: TLayout;
+ Splitter1: TSplitter;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure compositionsChangeCheck(Sender: TObject);
+ procedure compListBoxChangeCheck(Sender: TObject);
procedure importButtonClick(Sender: TObject);
procedure selectallButtonClick(Sender: TObject);
procedure deselallButtonClick(Sender: TObject);
- procedure compositionsChange(Sender: TObject);
+ procedure compListBoxChange(Sender: TObject);
procedure SetLanguage(LanguageCode: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
- {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
+ RootNode: IXMLNode;
+ Project: TJSONValue;
+
public
{ Public declarations }
+ FormSender: TFormSender;
+ {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
end;
var
ImportForm: TImportForm;
- RootNode: IXMLNode;
CheckedComps, CompCount: Integer;
PARAMSTART: Boolean = False;
XMLPath: String;
@@ -159,13 +174,60 @@ procedure TImportForm.SetLanguage(LanguageCode: Integer);
end;
procedure TImportForm.importButtonClick(Sender: TObject);
-var
- i, k: Integer;
begin
- MainForm.projectPath.Text := RootNode.Attributes['project'];
+ var Compositions: TList := TList.Create;
+
+ if (CheckedComps = 1) or (CheckedComps = 0) then begin
+ Compositions.Add(TComposition.Create(
+ Project.A[compListBox.ItemIndex].P['Name'].Value,
+ TFrameSpan.Create(Project.A[compListBox.ItemIndex].P['Frames'].A[0].Value, Project.A[compListBox.ItemIndex].P['Frames'].A[1].Value),
+ 1
+ ));
+ end else begin
+ for var i := 0 to compListBox.Count - 1 do
+ if compListBox.ListItems[i].IsChecked then
+ Compositions.Add(TComposition.Create(
+ Project.A[i].P['Name'].Value,
+ TFrameSpan.Create(Project.A[i].P['Frames'].A[0].Value, Project.A[i].P['Frames'].A[1].Value),
+ 1
+ ));
+ end;
+
+ RenderTasks.Add(TRenderTask.Create(
+ MainForm.projectPath.Text,
+ MainForm.outputPath.Text,
+
+ MainForm.outputModuleBox.Items[MainForm.outputModuleBox.ItemIndex],
+ MainForm.renderSettingsEdit.Text,
+
+ MainForm.missingFilesCheckbox.IsChecked,
+ MainForm.soundCheckbox.IsChecked,
+ MainForm.threadedRender.IsChecked,
+ IfThenElse(MainForm.customCheckbox.IsChecked = True, MainForm.customProp.Text, ''), // yeet,
+
+ MainForm.cacheUsageTrackBar.Value,
+ MainForm.memUsageTrackBar.Value,
+
+ Compositions
+ ));
+
+ {if ((SplitRenderCheckbox.Enabled) and (SplitRenderCheckbox.IsChecked)) and (CheckedComps <= 1) then begin
+
+ end else begin
+ if (CheckedComps = 1) or (CheckedComps = 0) then begin
+
+ end else begin
+ for var i := 0 to CheckedComps do
+
+ end;
+ end; }
+
+
+
+ {MainForm.projectPath.Text := RootNode.Attributes['project'];
MainForm.outputPath.Text := '';
k := 0;
- if ((splitRenderCheckbox.Enabled) and (splitRenderCheckbox.IsChecked)) and (CheckedComps <= 1) then
+ if ((SplitRenderCheckbox.Enabled) and (SplitRenderCheckbox.IsChecked)) and (CheckedComps <= 1) then
begin
MainForm.compSwitch.Enabled := False;
MainForm.compSwitch.IsChecked := False;
@@ -183,9 +245,9 @@ procedure TImportForm.importButtonClick(Sender: TObject);
MainForm.compGrid.Enabled := False;
MainForm.compGrid.Visible := False;
- MainForm.compName.Text := RootNode.ChildNodes['compositions'].ChildNodes[compositions.Selected.Index].ChildNodes['name'].Text;
- MainForm.inFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compositions.Selected.Index].ChildNodes['rangeStart'].Text)).ToString;
- MainForm.outFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compositions.Selected.Index].ChildNodes['rangeEnd'].Text)).ToString;
+ MainForm.compName.Text := RootNode.ChildNodes['compositions'].ChildNodes[compListBox.Selected.Index].ChildNodes['name'].Text;
+ MainForm.inFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compListBox.Selected.Index].ChildNodes['rangeStart'].Text)).ToString;
+ MainForm.outFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compListBox.Selected.Index].ChildNodes['rangeEnd'].Text)).ToString;
end
else
begin
@@ -209,9 +271,9 @@ procedure TImportForm.importButtonClick(Sender: TObject);
MainForm.threadsCount.Visible := False;
MainForm.threadsCount.Enabled := False;
- MainForm.compName.Text := RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['name'].Text;
- MainForm.inFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['rangeStart'].Text)).ToString;
- MainForm.outFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['rangeEnd'].Text)).ToString;
+ MainForm.compName.Text := RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['name'].Text;
+ MainForm.inFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['rangeStart'].Text)).ToString;
+ MainForm.outFrame.Text := Trunc(StrToFloat(RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['rangeEnd'].Text)).ToString;
end
else
begin
@@ -236,43 +298,57 @@ procedure TImportForm.importButtonClick(Sender: TObject);
MainForm.compCount.Value := CheckedComps;
MainForm.inFrame.Text := '';
MainForm.outFrame.Text := '';
- for i := 0 to CompCount - 1 do
- if compositions.ListItems[i].IsChecked then
+ for var i := 0 to CompCount - 1 do
+ if compListBox.ListItems[i].IsChecked then
begin
MainForm.compGrid.Cells[0, k] := RootNode.ChildNodes['compositions'].ChildNodes[i].ChildNodes['name'].Text;
inc (k);
end;
end;
- end;
+ end; }
+
+
+
XMLDocument.Active := False;
ImportForm.Close;
end;
-procedure TImportForm.compositionsChange(Sender: TObject);
+procedure TImportForm.compListBoxChange(Sender: TObject);
begin
- compName.Text := Language[LANG].ImportForm.Name + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['name'].Text;
- compResolution.Text := Language[LANG].ImportForm.Resolution + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['resolution'].Text;
- compFramerate.Text := Language[LANG].ImportForm.Framerate + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['framerate'].Text;
- compRangeIn.Text := Language[LANG].ImportForm.RangeStart + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['rangeStart'].Text;
- compRangeOut.Text := Language[LANG].ImportForm.RangeEnd + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compositions.ItemIndex].ChildNodes['rangeEnd'].Text;
+ case FormSender of
+ FS_JSON: begin
+ compName.Text := Language[Settings.Language].ImportForm.Name + ': ' + Project.A[compListBox.ItemIndex].P['Name'].Value;
+ compResolution.Text := Language[Settings.Language].ImportForm.Resolution + ': ' + Project.A[compListBox.ItemIndex].P['FootageDimensions'].A[0].Value + 'x' + Project.A[compListBox.ItemIndex].P['FootageDimensions'].A[1].Value;
+ compFramerate.Text := Language[Settings.Language].ImportForm.Framerate + ': ' + Project.A[compListBox.ItemIndex].P['FootageFramerate'].Value;
+ compRangeIn.Text := Language[Settings.Language].ImportForm.RangeStart + ': ' + Project.A[compListBox.ItemIndex].P['Frames'].A[0].Value;
+ compRangeOut.Text := Language[Settings.Language].ImportForm.RangeEnd + ': ' + Project.A[compListBox.ItemIndex].P['Frames'].A[1].Value;
+ end;
+ FS_XML: begin
+ compName.Text := Language[Settings.Language].ImportForm.Name + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['name'].Text;
+ compResolution.Text := Language[Settings.Language].ImportForm.Resolution + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['resolution'].Text;
+ compFramerate.Text := Language[Settings.Language].ImportForm.Framerate + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['framerate'].Text;
+ compRangeIn.Text := Language[Settings.Language].ImportForm.RangeStart + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['rangeStart'].Text;
+ compRangeOut.Text := Language[Settings.Language].ImportForm.RangeEnd + ': ' + RootNode.ChildNodes['compositions'].ChildNodes[compListBox.ItemIndex].ChildNodes['rangeEnd'].Text;
+ end;
+ end;
end;
-procedure TImportForm.compositionsChangeCheck(Sender: TObject);
+procedure TImportForm.compListBoxChangeCheck(Sender: TObject);
begin
CheckedComps := 0;
for var i := 0 to CompCount - 1 do
- if compositions.ListItems[i].IsChecked then
+ if compListBox.ListItems[i].IsChecked then
inc (CheckedComps);
if CheckedComps > 0 then
- splitRenderCheckbox.Enabled := False
+ SplitRenderCheckbox.Enabled := False
else
- splitRenderCheckbox.Enabled := True;
+ SplitRenderCheckbox.Enabled := True;
end;
procedure TImportForm.deselallButtonClick(Sender: TObject);
begin
for var i := 0 to CompCount-1 do
- compositions.ListItems[i].IsChecked := False;
+ compListBox.ListItems[i].IsChecked := False;
end;
procedure TImportForm.FormClose(Sender: TObject; var Action: TCloseAction);
@@ -280,46 +356,59 @@ procedure TImportForm.FormClose(Sender: TObject; var Action: TCloseAction);
CheckedComps := 0;
CompCount := 0;
aerProjectPath.Text := '';
- compositions.Clear;
+ FreeAndNil(Project);
+ compListBox.Clear;
+ //compositions.Items.Clear;
end;
procedure TImportForm.FormCreate(Sender: TObject);
begin
- compositions.AniCalculations.Animation := True;
+ compListBox.AniCalculations.Animation := True;
end;
procedure TImportForm.FormShow(Sender: TObject);
begin
- try
- if PARAMSTART then
- begin
- XMLFile.Text := ExtractFileName(XMLPath);
- XMLDocument.LoadFromFile(XMLPath);
- end
- else
- begin
- {$IFDEF MSWINDOWS}
- XMLFile.Text := ExtractFileName(MainForm.XMLOpenDialog.FileName);
- {$ELSE}
- XMLFile.Text := ExtractFileName(ImportedPath);
- {$ENDIF}
- XMLDocument.LoadFromFile(MainForm.XMLOpenDialog.FileName);
- end;
+ compListBox.Clear;
+ case FormSender of
+ FS_JSON: begin
+ //ShowMessage(MainForm.ProjectJson);
+ Project := TJSONObject.ParseJSONValue(MainForm.ProjectJson);
+ ImportedFile.Text := APPFOLDER + ExtractFileName(MainForm.projectPath.Text).Replace('.aep', '.json');
+ aerProjectPath.Text := MainForm.projectPath.Text;
+ CompCount := (Project as TJSONArray).Count;
+ for var i := 0 to CompCount - 1 do
+ compListBox.Items.Add(Project.A[i].P['Name'].Value);
+ end;
+ FS_XML: begin
+ try
+ if PARAMSTART then begin
+ ImportedFile.Text := ExtractFileName(XMLPath);
+ XMLDocument.LoadFromFile(XMLPath);
+ end else begin
+ {$IFDEF MSWINDOWS}
+ ImportedFile.Text := ExtractFileName(MainForm.XMLOpenDialog.FileName);
+ {$ELSE MACOS}
+ ImportedFile.Text := ExtractFileName(ImportedPath);
+ {$ENDIF}
+ XMLDocument.LoadFromFile(MainForm.XMLOpenDialog.FileName);
+ end;
- XMLDocument.Active := True;
+ XMLDocument.Active := True;
- XMLDocument.Encoding := 'utf-8';
+ XMLDocument.Encoding := 'utf-8';
- RootNode := XMLDocument.DocumentElement;
+ RootNode := XMLDocument.DocumentElement;
- aerProjectPath.Text := RootNode.Attributes['project'];
- CompCount := StrToInt(RootNode.ChildNodes['compositions'].Attributes['count']);
- for var i := 0 to CompCount - 1 do
- compositions.Items.Add(RootNode.ChildNodes['compositions'].ChildNodes[i].ChildNodes['name'].Text);
- except
- on Exception do begin
- TDialogServiceSync.MessageDialog(Language[LANG].Errors.IncompatibleFile, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
- ImportForm.Close;
+ aerProjectPath.Text := RootNode.Attributes['project'];
+ CompCount := StrToInt(RootNode.ChildNodes['compositions'].Attributes['count']);
+ for var i := 0 to CompCount - 1 do
+ compListBox.Items.Add(RootNode.ChildNodes['compositions'].ChildNodes[i].ChildNodes['name'].Text);
+ except
+ on Exception do begin
+ TDialogServiceSync.MessageDialog(Language[Settings.Language].Errors.IncompatibleFile, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
+ ImportForm.Close;
+ end;
+ end;
end;
end;
end;
@@ -327,7 +416,7 @@ procedure TImportForm.FormShow(Sender: TObject);
procedure TImportForm.selectallButtonClick(Sender: TObject);
begin
for var i := 0 to CompCount - 1 do
- compositions.ListItems[i].IsChecked := True;
+ compListBox.ListItems[i].IsChecked := True;
end;
end.
diff --git a/src/MainUnit.fmx b/src/MainUnit.fmx
index 8506719..7f122ff 100644
--- a/src/MainUnit.fmx
+++ b/src/MainUnit.fmx
@@ -2,8 +2,8 @@ object MainForm: TMainForm
Left = 0
Top = 0
Caption = 'AErender Launcher BETA'
- ClientHeight = 561
- ClientWidth = 701
+ ClientHeight = 640
+ ClientWidth = 1280
Position = MainFormCenter
Quality = HighQuality
SystemStatusBar.BackgroundColor = claViolet
@@ -20,16 +20,16 @@ object MainForm: TMainForm
object AEPOpenDialog: TOpenDialog
Filter = 'After Effects project|*.aep|All Files|*.*'
Title = 'Project File'
- Left = 72
- Top = 448
+ Left = 224
+ Top = 144
end
object SaveDialog1: TSaveDialog
FileName = 'Default'
Filter = 'All Files|*.*'
Options = [ofOverwritePrompt, ofHideReadOnly, ofExtensionDifferent, ofNoTestFileCreate, ofEnableSizing]
Title = 'Output File'
- Left = 104
- Top = 448
+ Left = 224
+ Top = 96
end
object OnyxBlueStyle: TStyleBook
StyleName = 'Onyx Blue (Old Style)'
@@ -2697,14 +2697,14 @@ object MainForm: TMainForm
000000BE054011536F75726365526563742E426F74746F6D0500000000000000
E605400000064F70617175650900005450463007544C61796F75740009537479
6C654E616D65060A6C6162656C7374796C650756697369626C6508085461624F
- 7264657202020005545465787400095374796C654E616D650604746578740541
+ 7264657202030005545465787400095374796C654E616D650604746578740541
6C69676E0706436C69656E74064C6F636B656409074869745465737408165465
787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
005450463007544C61796F757400095374796C654E616D65060B627574746F6E
7374796C6505416C69676E0708436F6E74656E74730A53697A652E5769647468
0500000000009324B106400B53697A652E4865696768740500000000004A92E8
05401453697A652E506C6174666F726D44656661756C74080756697369626C65
- 08085461624F726465720203000B54476C6F774566666563740008536F66746E
+ 08085461624F726465720204000B54476C6F774566666563740008536F66746E
657373050000000000CDCCCCFC3F09476C6F77436F6C6F720709784646343837
394133074F706163697479050000000000000080FF3F0754726967676572060E
4973466F63757365643D7472756507456E61626C65640800001254427574746F
@@ -2762,7 +2762,7 @@ object MainForm: TMainForm
436F6C6F7207097846463138314131440C50726573736564436F6C6F72070863
6C6157686974650000005450463007544C61796F757400095374796C654E616D
650610627574746F6E7374796C656C6162656C0756697369626C650808546162
- 4F726465720204001654427574746F6E5374796C65546578744F626A65637400
+ 4F726465720205001654427574746F6E5374796C65546578744F626A65637400
095374796C654E616D6506047465787405416C69676E0706436C69656E74064C
6F636B656409165465787453657474696E67732E466F6E74436F6C6F72070978
46463138314131440D536861646F7756697369626C650808486F74436F6C6F72
@@ -2773,7 +2773,7 @@ object MainForm: TMainForm
6E0708436F6E74656E74730A53697A652E57696474680500000000009324B106
400B53697A652E4865696768740500000000004A92E805401453697A652E506C
6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 0205001254427574746F6E5374796C654F626A65637400095374796C654E616D
+ 0206001254427574746F6E5374796C654F626A65637400095374796C654E616D
65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730C536F
757263654C6F6F6B757006124F6E797820426C75657374796C652E706E670A53
697A652E57696474680500000000009324B106400B53697A652E486569676874
@@ -2827,7 +2827,7 @@ object MainForm: TMainForm
61636B0B4E6F726D616C436F6C6F7207097846463138314131440C5072657373
6564436F6C6F720708636C6157686974650000005450463007544C61796F7574
00095374796C654E616D6506157370656564627574746F6E7374796C656C6162
- 656C0756697369626C6508085461624F726465720206001654427574746F6E53
+ 656C0756697369626C6508085461624F726465720207001654427574746F6E53
74796C65546578744F626A65637400095374796C654E616D6506047465787405
416C69676E0706436C69656E74064C6F636B656409165465787453657474696E
67732E466F6E74436F6C6F7207097846463138314131440D536861646F775669
@@ -2838,7 +2838,7 @@ object MainForm: TMainForm
74746F6E05416C69676E0708436F6E74656E74730A53697A652E576964746805
00000000009324B106400B53697A652E4865696768740500000000004A92E805
401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 085461624F726465720207001254427574746F6E5374796C654F626A65637400
+ 085461624F726465720208001254427574746F6E5374796C654F626A65637400
095374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F
6E74656E74730C536F757263654C6F6F6B757006124F6E797820426C75657374
796C652E706E670A53697A652E57696474680500000000009324B106400B5369
@@ -2892,7 +2892,7 @@ object MainForm: TMainForm
6F720708636C61426C61636B0B4E6F726D616C436F6C6F720709784646313831
4131440C50726573736564436F6C6F720708636C615768697465000000545046
3007544C61796F757400095374796C654E616D65060F746F6F6C627574746F6E
- 6C6162656C0756697369626C6508085461624F72646572020800165442757474
+ 6C6162656C0756697369626C6508085461624F72646572020900165442757474
6F6E5374796C65546578744F626A65637400095374796C654E616D6506047465
787405416C69676E0706436C69656E74064C6F636B6564091654657874536574
74696E67732E466F6E74436F6C6F7207097846463138314131440D536861646F
@@ -2901,7 +2901,7 @@ object MainForm: TMainForm
097846463138314131440C50726573736564436F6C6F720708636C6157686974
650000005450463007544C61796F757400095374796C654E616D650610636F6C
6F72627574746F6E7374796C650756697369626C6508085461624F7264657202
- 09000B54476C6F774566666563740008536F66746E657373050000000000CDCC
+ 0A000B54476C6F774566666563740008536F66746E657373050000000000CDCC
CCFC3F09476C6F77436F6C6F720709784646343837394133074F706163697479
050000000000000080FF3F0754726967676572060E4973466F63757365643D74
72756507456E61626C65640800001254427574746F6E5374796C654F626A6563
@@ -2951,7 +2951,7 @@ object MainForm: TMainForm
545046300B54477269644C61796F757400095374796C654E616D65060E737069
6E65646974627574746F6E0A4974656D486569676874050000000000000080FF
BF094974656D576964746805000000000000008005400B4F7269656E74617469
- 6F6E0708566572746963616C0756697369626C6508085461624F72646572020A
+ 6F6E0708566572746963616C0756697369626C6508085461624F72646572020B
0007544C61796F7574000A53697A652E57696474680500000000000000C80440
0B53697A652E4865696768740500000000000000C803401453697A652E506C61
74666F726D44656661756C7408000754427574746F6E00095374796C654E616D
@@ -2970,7 +2970,7 @@ object MainForm: TMainForm
6661756C74080B5374796C654C6F6F6B757006157363726F6C6C626172626F74
746F6D627574746F6E000000005450463007544C61796F757400095374796C65
4E616D650609656469747374796C650756697369626C6508085461624F726465
- 72020B000B54476C6F774566666563740008536F66746E657373050000000000
+ 72020C000B54476C6F774566666563740008536F66746E657373050000000000
CDCCCCFC3F09476C6F77436F6C6F720709784646343837394133074F70616369
7479050000000000000080FF3F0754726967676572060E4973466F6375736564
3D7472756507456E61626C65640800000C545374796C654F626A656374000953
@@ -3006,7 +3006,7 @@ object MainForm: TMainForm
726F6D7074064C6F636B656409074F706163697479050000000000000080FE3F
0756697369626C65080000005450463007544C61796F757400095374796C654E
616D65060D74696D65656469747374796C650756697369626C6508085461624F
- 72646572020C000B54476C6F774566666563740008536F66746E657373050000
+ 72646572020D000B54476C6F774566666563740008536F66746E657373050000
000000CDCCCCFC3F09476C6F77436F6C6F720709784646343837394133074F70
6163697479050000000000000080FF3F0754726967676572060E4973466F6375
7365643D7472756507456E61626C65640800000C545374796C654F626A656374
@@ -3085,7 +3085,7 @@ object MainForm: TMainForm
00000000000000A003400B53697A652E48656967687405000000000000009803
401453697A652E506C6174666F726D44656661756C74080756697369626C6508
0000005450463007544C61796F757400095374796C654E616D65060D64617465
- 656469747374796C650756697369626C6508085461624F72646572020D000B54
+ 656469747374796C650756697369626C6508085461624F72646572020E000B54
476C6F774566666563740008536F66746E657373050000000000CDCCCCFC3F09
476C6F77436F6C6F720709784646343837394133074F70616369747905000000
0000000080FF3F0754726967676572060E4973466F63757365643D7472756507
@@ -3151,7 +3151,7 @@ object MainForm: TMainForm
05000000000000009803401453697A652E506C6174666F726D44656661756C74
080756697369626C65080000005450463007544C61796F757400095374796C65
4E616D650611636C656172696E67656469747374796C650756697369626C6508
- 085461624F72646572020E000B54476C6F774566666563740008536F66746E65
+ 085461624F72646572020F000B54476C6F774566666563740008536F66746E65
7373050000000000CDCCCCFC3F09476C6F77436F6C6F72070978464634383739
4133074F706163697479050000000000000080FF3F0754726967676572060E49
73466F63757365643D7472756507456E61626C65640800000C545374796C654F
@@ -3201,7 +3201,7 @@ object MainForm: TMainForm
74696F6E0B42727573682E436F6C6F72070978374634343735394400000B5446
6F6E744F626A65637400095374796C654E616D650604666F6E74000000545046
3007544C61796F757400095374796C654E616D65060C7370696E626F78737479
- 6C650756697369626C6508085461624F72646572020F000B54476C6F77456666
+ 6C650756697369626C6508085461624F726465720210000B54476C6F77456666
6563740008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C
6F720709784646343837394133074F706163697479050000000000000080FF3F
0754726967676572060E4973466F63757365643D7472756507456E61626C6564
@@ -3248,7 +3248,7 @@ object MainForm: TMainForm
34343735394400000B54466F6E744F626A65637400095374796C654E616D6506
04666F6E740000005450463007544C61796F757400095374796C654E616D6506
0D73706C69747465727374796C650756697369626C6508085461624F72646572
- 0210000854456C6C6970736500095374796C654E616D6506046772697005416C
+ 0211000854456C6C6970736500095374796C654E616D6506046772697005416C
69676E07034669740946696C6C2E4B696E6407084772616469656E741446696C
6C2E4772616469656E742E506F696E74730E0105436F6C6F7207097846463441
34393534064F66667365740500000000000000000000000105436F6C6F720709
@@ -3260,7 +3260,7 @@ object MainForm: TMainForm
0000000000C804401453697A652E506C6174666F726D44656661756C74080C53
74726F6B652E436F6C6F720708636C6157686974650000005450463007544C61
796F757400095374796C654E616D65060D636865636B626F787374796C650756
- 697369626C6508085461624F7264657202110007544C61796F75740005416C69
+ 697369626C6508085461624F7264657202120007544C61796F75740005416C69
676E07044C6566740A53697A652E576964746805000000000000009003400B53
697A652E4865696768740500000000000000C804401453697A652E506C617466
6F726D44656661756C7408001154436865636B5374796C654F626A6563740009
@@ -3308,7 +3308,7 @@ object MainForm: TMainForm
726D616C436F6C6F720708636C6157686974650C50726573736564436F6C6F72
0708636C6157686974650000005450463007544C61796F757400095374796C65
4E616D650610726164696F627574746F6E7374796C650756697369626C650808
- 5461624F7264657202120007544C61796F75740005416C69676E07044C656674
+ 5461624F7264657202130007544C61796F75740005416C69676E07044C656674
0A53697A652E576964746805000000000000009003400B53697A652E48656967
68740500000000000000C804401453697A652E506C6174666F726D4465666175
6C7408001154436865636B5374796C654F626A65637400095374796C654E616D
@@ -3355,7 +3355,7 @@ object MainForm: TMainForm
6C6157686974650B4E6F726D616C436F6C6F720708636C6157686974650C5072
6573736564436F6C6F720708636C6157686974650000005450463007544C6179
6F757400095374796C654E616D65060E7363726F6C6C6261727374796C650756
- 697369626C6508085461624F726465720213000754427574746F6E0009537479
+ 697369626C6508085461624F726465720214000754427574746F6E0009537479
6C654E616D65060A6C656674627574746F6E05416C69676E07044C656674064C
6F636B6564090A506F736974696F6E2E5905000000000000008003400A53697A
652E576964746805000000000000008003400B53697A652E4865696768740500
@@ -3940,7 +3940,7 @@ object MainForm: TMainForm
2E576964746805000000000000009003400B53697A652E486569676874050000
0000000000A003401453697A652E506C6174666F726D44656661756C74080000
00005450463007544C61796F757400095374796C654E616D65060D73697A6567
- 7269707374796C650756697369626C6508085461624F726465720220000C5453
+ 7269707374796C650756697369626C6508085461624F726465720221000C5453
74796C654F626A6563740005416C69676E070643656E7465720C536F75726365
4C6F6F6B757006124F6E797820426C75657374796C652E706E670A53697A652E
57696474680500000000000000E002400B53697A652E48656967687405000000
@@ -3981,7 +3981,7 @@ object MainForm: TMainForm
544C61796F757400095374796C654E616D65060D6D656E75766965777374796C
650D50616464696E672E526967687405000000000000008002400E5061646469
6E672E426F74746F6D05000000000000008002400756697369626C6508085461
- 624F726465720221000C545374796C654F626A6563740005416C69676E070643
+ 624F726465720222000C545374796C654F626A6563740005416C69676E070643
6C69656E74074361704D6F6465070454696C650D4D617267696E732E52696768
7405000000000000008002C00E4D617267696E732E426F74746F6D0500000000
0000008002C00C536F757263654C6F6F6B757006124F6E797820426C75657374
@@ -4005,7 +4005,7 @@ object MainForm: TMainForm
0B53697A652E48656967687405000000000000009804401453697A652E506C61
74666F726D44656661756C74080000005450463007544C61796F757400095374
796C654E616D6506106D656E756261726974656D7374796C650756697369626C
- 6508085461624F726465720222000C545374796C654F626A6563740005416C69
+ 6508085461624F726465720223000C545374796C654F626A6563740005416C69
676E0708436F6E74656E7473074F70616369747905000000000000000000000C
536F757263654C6F6F6B757006124F6E797820426C75657374796C652E706E67
0A536F757263654C696E6B0E010E436170496E736574732E4C65667405000000
@@ -4132,7 +4132,7 @@ object MainForm: TMainForm
65727365062249734D6F7573654F7665723D66616C73653B497353656C656374
65643D66616C736500000000005450463007544C61796F757400095374796C65
4E616D65060D6D656E756974656D7374796C650756697369626C650808546162
- 4F726465720223000C545374796C654F626A6563740005416C69676E0708436F
+ 4F726465720224000C545374796C654F626A6563740005416C69676E0708436F
6E74656E7473074F70616369747905000000000000000000000C536F75726365
4C6F6F6B757006124F6E797820426C75657374796C652E706E670A536F757263
654C696E6B0E010E436170496E736574732E4C6566740500000000000000A002
@@ -4282,7 +4282,7 @@ object MainForm: TMainForm
095374796C654E616D6506126D656E75736570617261746F727374796C650B4D
617267696E732E546F70050000000000000080FF3F0E4D617267696E732E426F
74746F6D050000000000000080FF3F0756697369626C6508085461624F726465
- 720224000C545374796C654F626A6563740005416C69676E0703546F700C536F
+ 720225000C545374796C654F626A6563740005416C69676E0703546F700C536F
757263654C6F6F6B757006124F6E797820426C75657374796C652E706E670A53
697A652E57696474680500000000000000C804400B53697A652E486569676874
05000000000000008000401453697A652E506C6174666F726D44656661756C74
@@ -4294,7 +4294,7 @@ object MainForm: TMainForm
6F787374796C650C50616464696E672E4C65667405000000000000008000400B
50616464696E672E546F7005000000000000008002400D50616464696E672E52
6967687405000000000000008000400E50616464696E672E426F74746F6D0500
- 0000000000008000400756697369626C6508085461624F726465720225000C54
+ 0000000000008000400756697369626C6508085461624F726465720226000C54
5374796C654F626A65637400095374796C654E616D65060A6261636B67726F75
6E6405416C69676E0706436C69656E74074361704D6F6465070454696C65064C
6F636B6564090C536F757263654C6F6F6B757006124F6E797820426C75657374
@@ -4322,7 +4322,7 @@ object MainForm: TMainForm
787374796C6505416C69676E0708436F6E74656E74730A53697A652E57696474
680500000000009324B106400B53697A652E4865696768740500000000004A92
E805401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F726465720226000B54476C6F774566666563740008536F6674
+ 6508085461624F726465720227000B54476C6F774566666563740008536F6674
6E657373050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846463438
37394133074F706163697479050000000000000080FF3F075472696767657206
0E4973466F63757365643D7472756507456E61626C65640800000C5442727573
@@ -4395,7 +4395,7 @@ object MainForm: TMainForm
68740500000000000000C804401453697A652E506C6174666F726D4465666175
6C74080756697369626C6508000000005450463007544C61796F757400095374
796C654E616D6506106C697374626F786974656D7374796C650756697369626C
- 6508085461624F726465720227000654476C79706800095374796C654E616D65
+ 6508085461624F726465720228000654476C79706800095374796C654E616D65
060A676C7970687374796C650C4D617267696E732E4C65667405000000000000
008000400B4D617267696E732E546F70050000000000000080FF3F0D4D617267
696E732E526967687405000000000000008000400E4D617267696E732E426F74
@@ -4471,7 +4471,7 @@ object MainForm: TMainForm
53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
6407044E6F6E6500000000005450463007544C61796F757400095374796C654E
616D65060E736561726368626F787374796C650756697369626C650808546162
- 4F726465720228000C545374796C654F626A65637400095374796C654E616D65
+ 4F726465720229000C545374796C654F626A65637400095374796C654E616D65
060A6261636B67726F756E6405416C69676E0708436F6E74656E74730C536F75
7263654C6F6F6B757006124F6E797820426C75657374796C652E706E67085772
61704D6F6465070454696C650A536F757263654C696E6B0E010E436170496E73
@@ -4510,25 +4510,25 @@ object MainForm: TMainForm
682E436F6C6F72070978374634343735394400000B54466F6E744F626A656374
00095374796C654E616D650604666F6E740000005450463007544C61796F7574
00095374796C654E616D650609746F6F6C6C6162656C0756697369626C650808
- 5461624F7264657202290005545465787400095374796C654E616D6506047465
+ 5461624F72646572022A0005545465787400095374796C654E616D6506047465
787405416C69676E0706436C69656E74064C6F636B6564090748697454657374
08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
74650000005450463007544C61796F757400095374796C654E616D6506126C69
7374626F786865616465726C6162656C0756697369626C6508085461624F7264
- 6572022A0005545465787400095374796C654E616D6506047465787405416C69
+ 6572022B0005545465787400095374796C654E616D6506047465787405416C69
676E0706436C69656E74064C6F636B6564090748697454657374081654657874
53657474696E67732E466F6E742E53697A650500000000000000980340165465
787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
005450463007544C61796F757400095374796C654E616D6506166C697374626F
786974656D64657461696C6C6162656C0756697369626C6508085461624F7264
- 6572022B0016544163746976655374796C65546578744F626A65637400095374
+ 6572022C0016544163746976655374796C65546578744F626A65637400095374
796C654E616D6506045465787405416C69676E0706436C69656E74064C6F636B
656409074F7061636974790500000000009A9999FE3F16546578745365747469
6E67732E466F6E74436F6C6F720708636C6157686974650D536861646F775669
7369626C65080D41637469766554726967676572070853656C65637465640B41
6374697665436F6C6F720708636C6157686974650000005450463007544C6179
6F757400095374796C654E616D6506106C697374626F786974656D6C6162656C
- 0756697369626C6508085461624F72646572022C001654416374697665537479
+ 0756697369626C6508085461624F72646572022D001654416374697665537479
6C65546578744F626A65637400095374796C654E616D6506045465787405416C
69676E0706436C69656E74064C6F636B656409165465787453657474696E6773
2E466F6E742E53697A650500000000000000F00240165465787453657474696E
@@ -4536,7 +4536,7 @@ object MainForm: TMainForm
69626C65080D41637469766554726967676572070853656C65637465640B4163
74697665436F6C6F720708636C6157686974650000005450463007544C61796F
757400095374796C654E616D6506136C697374626F786974656D6E6F64657461
- 696C0756697369626C6508085461624F72646572022D000954436865636B426F
+ 696C0756697369626C6508085461624F72646572022E000954436865636B426F
7800095374796C654E616D650605636865636B05416C69676E07084D6F73744C
6566740843616E466F637573081244697361626C65466F637573456666656374
090D4D617267696E732E52696768740500000000000000A001400A53697A652E
@@ -4573,7 +4573,7 @@ object MainForm: TMainForm
676572070853656C65637465640B416374697665436F6C6F720708636C615768
697465000000005450463007544C61796F757400095374796C654E616D650617
6C697374626F786974656D626F74746F6D64657461696C0756697369626C6508
- 085461624F72646572022E000954436865636B426F7800095374796C654E616D
+ 085461624F72646572022F000954436865636B426F7800095374796C654E616D
650605636865636B05416C69676E07084D6F73744C6566740843616E466F6375
73081244697361626C65466F637573456666656374090D4D617267696E732E52
696768740500000000000000A001400A53697A652E5769647468050000000000
@@ -4619,7 +4619,7 @@ object MainForm: TMainForm
65080D41637469766554726967676572070853656C65637465640B4163746976
65436F6C6F720708636C6157686974650000005450463007544C61796F757400
095374796C654E616D6506166C697374626F786974656D726967687464657461
- 696C0756697369626C6508085461624F72646572022F000B54477269644C6179
+ 696C0756697369626C6508085461624F726465720230000B54477269644C6179
6F757400095374796C654E616D6506046172656105416C69676E0706436C6965
6E740748697454657374080A4974656D48656967687405000000000000008005
40094974656D5769647468050000000000000080FFBF0B4F7269656E74617469
@@ -4675,7 +4675,7 @@ object MainForm: TMainForm
005450463007544C61796F757400095374796C654E616D6506156C697374626F
786974656D6C65667464657461696C0A506F736974696F6E2E58050000000000
0000E507400A506F736974696F6E2E590500000000000080A707400756697369
- 626C6508085461624F726465720230000B54477269644C61796F757400095374
+ 626C6508085461624F726465720231000B54477269644C61796F757400095374
796C654E616D6506046172656105416C69676E0706436C69656E740748697454
657374080A4974656D4865696768740500000000000000800540094974656D57
69647468050000000000000080FFBF0B4F7269656E746174696F6E070A486F72
@@ -4729,7 +4729,7 @@ object MainForm: TMainForm
697369626C65080D41637469766554726967676572070853656C65637465640B
416374697665436F6C6F720708636C6157686974650000000000545046300754
4C61796F757400095374796C654E616D6506126C697374626F78706C61696E68
- 65616465720756697369626C6508085461624F726465720231000C545374796C
+ 65616465720756697369626C6508085461624F726465720232000C545374796C
654F626A65637400095374796C654E616D65060A6261636B67726F756E640541
6C69676E0708436F6E74656E74730C536F757263654C6F6F6B757006124F6E79
7820426C75657374796C652E706E670A536F757263654C696E6B0E010E436170
@@ -4751,7 +4751,7 @@ object MainForm: TMainForm
53657474696E67732E466F6E74436F6C6F720708636C61576869746516546578
7453657474696E67732E486F727A416C69676E07074C656164696E6700000000
5450463007544C61796F757400095374796C654E616D6506126C697374626F78
- 67726F75706865616465720756697369626C6508085461624F72646572023200
+ 67726F75706865616465720756697369626C6508085461624F72646572023300
0C545374796C654F626A65637400095374796C654E616D65060A6261636B6772
6F756E6405416C69676E0708436F6E74656E74730C536F757263654C6F6F6B75
7006124F6E797820426C75657374796C652E706E670A536F757263654C696E6B
@@ -4773,7 +4773,7 @@ object MainForm: TMainForm
08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
7465165465787453657474696E67732E486F727A416C69676E07074C65616469
6E67000000005450463007544C61796F757400095374796C654E616D65060D6C
- 697374626F78666F6F7465720756697369626C6508085461624F726465720233
+ 697374626F78666F6F7465720756697369626C6508085461624F726465720234
0007544C61796F757400095374796C654E616D6506046172656105416C69676E
0706436C69656E740005545465787400095374796C654E616D65060474657874
05416C69676E0706436C69656E740748697454657374080C4D617267696E732E
@@ -4898,7 +4898,7 @@ object MainForm: TMainForm
4E616D65061764656C657465627574746F6E746578747072657373656405436F
6C6F720708636C6157686974650000005450463007544C61796F757400095374
796C654E616D650615636F6C6F726C697374626F786974656D7374796C650756
- 697369626C6508085461624F7264657202340016544163746976655374796C65
+ 697369626C6508085461624F7264657202350016544163746976655374796C65
546578744F626A65637400095374796C654E616D6506047465787405416C6967
6E0706436C69656E740C4D617267696E732E4C6566740500000000000000C000
400B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
@@ -4925,7 +4925,7 @@ object MainForm: TMainForm
6768740500000000000000B804401453697A652E506C6174666F726D44656661
756C74080C5374726F6B652E436F6C6F72070978464632303233323700000054
50463007544C61796F757400095374796C654E616D65060D7472656576696577
- 7374796C650756697369626C6508085461624F726465720235000B54476C6F77
+ 7374796C650756697369626C6508085461624F726465720236000B54476C6F77
4566666563740008536F66746E657373050000000000CDCCCCFC3F09476C6F77
436F6C6F720709784646343837394133074F7061636974790500000000000000
80FF3F0754726967676572060E4973466F63757365643D7472756507456E6162
@@ -4989,7 +4989,7 @@ object MainForm: TMainForm
2E48656967687405000000000000008002401453697A652E506C6174666F726D
44656661756C74080756697369626C650800000000005450463007544C61796F
757400095374796C654E616D65061174726565766965776974656D7374796C65
- 0756697369626C6508085461624F726465720236000C54537065656442757474
+ 0756697369626C6508085461624F726465720237000C54537065656442757474
6F6E00095374796C654E616D650606627574746F6E05416C69676E07044C6566
740C4D617267696E732E4C6566740500000000000000C000400B4D617267696E
732E546F700500000000000000C000400D4D617267696E732E52696768740500
@@ -5025,7 +5025,7 @@ object MainForm: TMainForm
68697465000000005450463007544C61796F757400095374796C654E616D6506
1B7472656576696577657870616E646572627574746F6E7374796C650B4D6172
67696E732E546F70050000000000000080FF3F0756697369626C650808546162
- 4F726465720237000554506174680005416C69676E070643656E746572094461
+ 4F726465720238000554506174680005416C69676E070643656E746572094461
74612E506174680A400000000500000000000000D36D3F431BEF484301000000
1749E043BA09E54301000000D36D3F43C73B344401000000D36D3F431BEF4843
03000000D36D3F431BEF48430A46696C6C2E436F6C6F720708636C6157686974
@@ -5051,7 +5051,7 @@ object MainForm: TMainForm
0080FF3F0754726967676572060F4973457870616E6465643D747275650E5472
6967676572496E766572736506104973457870616E6465643D66616C73650000
00005450463007544C61796F757400095374796C654E616D65060C706F706F76
- 65727374796C650756697369626C6508085461624F726465720238000C545374
+ 65727374796C650756697369626C6508085461624F726465720239000C545374
796C654F626A65637400095374796C654E616D650602626705416C69676E0706
436C69656E74074361704D6F6465070454696C650C50616464696E672E4C6566
7405000000000000008000400B50616464696E672E546F700500000000000000
@@ -5112,7 +5112,7 @@ object MainForm: TMainForm
676572060F497353656C65637465643D747275650E54726967676572496E7665
7273650610497353656C65637465643D66616C73650000005450463007544C61
796F757400095374796C654E616D65060F746162636F6E74726F6C7374796C65
- 0756697369626C6508085461624F726465720239000C5442727573684F626A65
+ 0756697369626C6508085461624F72646572023A000C5442727573684F626A65
637400095374796C654E616D6506107363726F6C6C6261636B67726F756E640B
42727573682E436F6C6F72070978464633313334333900000C545374796C654F
626A6563740005416C69676E0708436F6E74656E7473074361704D6F64650704
@@ -5126,7 +5126,7 @@ object MainForm: TMainForm
10536F75726365526563742E5269676874050000000000000093064011536F75
726365526563742E426F74746F6D0500000000000000D307400000064F706171
7565090000005450463007544C61796F757400095374796C654E616D65060C74
- 61626974656D7374796C650756697369626C6508085461624F72646572023A00
+ 61626974656D7374796C650756697369626C6508085461624F72646572023B00
0F545461625374796C654F626A65637400095374796C654E616D650603746F70
05416C69676E0708436F6E74656E74730C436C69704368696C6472656E09064C
6F636B6564090C536F757263654C6F6F6B757006124F6E797820426C75657374
@@ -5276,7 +5276,7 @@ object MainForm: TMainForm
416374697665436F6C6F720708636C61576869746508486F74436F6C6F720708
636C615768697465000000005450463007544C61796F757400095374796C654E
616D65060D7461626974656D637573746F6D0756697369626C6508085461624F
- 72646572023B000F545461625374796C654F626A65637400095374796C654E61
+ 72646572023C000F545461625374796C654F626A65637400095374796C654E61
6D650603746F7005416C69676E0708436F6E74656E74730C436C69704368696C
6472656E09064C6F636B6564090C536F757263654C6F6F6B757006124F6E7978
20426C75657374796C652E706E670D4163746976655472696767657207085365
@@ -5441,7 +5441,7 @@ object MainForm: TMainForm
6C6F720708636C61576869746508486F74436F6C6F720708636C615768697465
00000000005450463007544C61796F757400095374796C654E616D6506107072
6F67726573736261727374796C650756697369626C6508085461624F72646572
- 023C000C545374796C654F626A65637400095374796C654E616D650605747261
+ 023D000C545374796C654F626A65637400095374796C654E616D650605747261
636B05416C69676E0708436F6E74656E7473074361704D6F6465070454696C65
0C536F757263654C6F6F6B757006124F6E797820426C75657374796C652E706E
6708577261704D6F6465070454696C650A536F757263654C696E6B0E010E4361
@@ -5487,7 +5487,7 @@ object MainForm: TMainForm
696768740500000000000000BE064011536F75726365526563742E426F74746F
6D05000000000000009B07400000064F70617175650900000000545046300754
4C61796F757400095374796C654E616D650613736D616C6C7363726F6C6C6261
- 727374796C650756697369626C6508085461624F72646572023D000654547261
+ 727374796C650756697369626C6508085461624F72646572023E000654547261
636B00095374796C654E616D65060668747261636B05416C69676E0706436C69
656E74064C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E
74616C0A53697A652E57696474680500000000000000C804400B53697A652E48
@@ -5500,7 +5500,7 @@ object MainForm: TMainForm
53697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75
7006147363726F6C6C62617276747261636B7374796C65000000545046300754
4C61796F757400095374796C654E616D65060E7363726F6C6C626F787374796C
- 650756697369626C6508085461624F72646572023E0007544C61796F75740009
+ 650756697369626C6508085461624F72646572023F0007544C61796F75740009
5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
74656E7473064C6F636B6564090007544C61796F757400095374796C654E616D
650607636F6E74656E7405416C69676E0706436C69656E740A53697A652E5769
@@ -5541,7 +5541,7 @@ object MainForm: TMainForm
68740500000000000000C804401453697A652E506C6174666F726D4465666175
6C74080000000000005450463007544C61796F757400095374796C654E616D65
06146672616D65647363726F6C6C626F787374796C650756697369626C650808
- 5461624F72646572023F000C545374796C654F626A65637400095374796C654E
+ 5461624F726465720240000C545374796C654F626A65637400095374796C654E
616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E747306
4C6F636B6564090C50616464696E672E4C65667405000000000000008000400B
50616464696E672E546F7005000000000000008000400D50616464696E672E52
@@ -5595,7 +5595,7 @@ object MainForm: TMainForm
652E4865696768740500000000000000C804401453697A652E506C6174666F72
6D44656661756C74080000000000005450463007544C61796F75740009537479
6C654E616D6506096D656D6F7374796C650756697369626C6508085461624F72
- 6465720240000B54476C6F774566666563740008536F66746E65737305000000
+ 6465720241000B54476C6F774566666563740008536F66746E65737305000000
0000CDCCCCFC3F09476C6F77436F6C6F720709784646343837394133074F7061
63697479050000000000000080FF3F0754726967676572060E4973466F637573
65643D7472756507456E61626C65640800000C545374796C654F626A65637400
@@ -5652,7 +5652,7 @@ object MainForm: TMainForm
35394400000B54466F6E744F626A65637400095374796C654E616D650604666F
6E740000005450463007544C61796F757400095374796C654E616D650611696D
616765636F6E74726F6C7374796C650756697369626C6508085461624F726465
- 720241000B54476C6F774566666563740008536F66746E657373050000000000
+ 720242000B54476C6F774566666563740008536F66746E657373050000000000
CDCCCCFC3F09476C6F77436F6C6F720709784646343837394133074F70616369
7479050000000000000080FF3F0754726967676572060E4973466F6375736564
3D7472756507456E61626C65640800000C545374796C654F626A656374000953
@@ -5679,7 +5679,7 @@ object MainForm: TMainForm
0000000000A004401453697A652E506C6174666F726D44656661756C74080000
00005450463007544C61796F757400095374796C654E616D65060D747261636B
6261727374796C6505416C69676E070643656E7465720756697369626C650808
- 5461624F7264657202420B466978656448656967687402180009545374796C65
+ 5461624F7264657202430B466978656448656967687402180009545374796C65
5461670003546167020E095374796C654E616D6506095468756D6253697A6500
000C545374796C654F626A65637400095374796C654E616D6506066874726163
6B05416C69676E070A5665727443656E746572064C6F636B6564090C536F7572
@@ -5779,7 +5779,7 @@ object MainForm: TMainForm
000000000000C9074011536F75726365526563742E426F74746F6D0500000000
000080D70740000013546F756368416E696D6174696F6E2E4C696E6B0E000000
5450463007544C61796F757400095374796C654E616D65060F64726F70746172
- 6765747374796C650756697369626C6508085461624F726465720243000A5452
+ 6765747374796C650756697369626C6508085461624F726465720244000A5452
656374616E676C650005416C69676E0708436F6E74656E74730946696C6C2E4B
696E6407044E6F6E650748697454657374080A53697A652E5769647468050000
0000000000C804400B53697A652E4865696768740500000000000000C8044014
@@ -5812,7 +5812,7 @@ object MainForm: TMainForm
401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
696E6407044E6F6E650000005450463013544269746D61705377697463684F62
6A65637400095374796C654E616D65060B7377697463687374796C6505416C69
- 676E070643656E746572085461624F72646572024412547261636B696E675468
+ 676E070643656E746572085461624F72646572024512547261636B696E675468
756D625363616C65050000000000000080FF3F0756697369626C650805547261
636B0E010E436170496E736574732E4C6566740500000000000000C001400D43
6170496E736574732E546F700500000000000000C001400F436170496E736574
@@ -5843,7 +5843,7 @@ object MainForm: TMainForm
4A700E000E546578744269746D61704A704F6E0E000C536F757263654C6F6F6B
757006124F6E797820426C75657374796C652E706E6700005450463007544C61
796F757400095374796C654E616D650609677269647374796C65075669736962
- 6C6508085461624F726465720245000B54476C6F774566666563740008536F66
+ 6C6508085461624F726465720246000B54476C6F774566666563740008536F66
746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F72070978464634
3837394133074F706163697479050000000000000080FF3F0754726967676572
060E4973466F63757365643D7472756507456E61626C65640800000C54427275
@@ -5920,7 +5920,7 @@ object MainForm: TMainForm
401453697A652E506C6174666F726D44656661756C74080756697369626C6508
00000000005450463007544C61796F757400095374796C654E616D65060F6865
616465726974656D7374796C650756697369626C6508085461624F7264657202
- 46001254427574746F6E5374796C654F626A65637400095374796C654E616D65
+ 47001254427574746F6E5374796C654F626A65637400095374796C654E616D65
060A6261636B67726F756E6405416C69676E0708436F6E74656E7473064C6F63
6B6564090C536F757263654C6F6F6B757006124F6E797820426C75657374796C
652E706E6707486F744C696E6B0E010E436170496E736574732E4C6566740500
@@ -6072,7 +6072,7 @@ object MainForm: TMainForm
74796C6512000000000E56696577706F72742E57696474680500000000000000
B804400F56696577706F72742E48656967687405000000000000000000000000
005450463007544C61796F757400095374796C654E616D65061263616C656E64
- 61726C6162656C7374796C650756697369626C6508085461624F726465720247
+ 61726C6162656C7374796C650756697369626C6508085461624F726465720248
0005545465787400095374796C654E616D6506047465787405416C69676E0706
436C69656E74064C6F636B656409074869745465737408165465787453657474
696E67732E466F6E74436F6C6F720708636C6157686974650000005450463008
@@ -6093,7 +6093,7 @@ object MainForm: TMainForm
80FE3F0754726967676572061049734D6F7573654F7665723D747275650E5472
6967676572496E7665727365061149734D6F7573654F7665723D66616C736500
00005450463007544C61796F757400095374796C654E616D65060D657870616E
- 6465727374796C650756697369626C6508085461624F726465720248000A5452
+ 6465727374796C650756697369626C6508085461624F726465720249000A5452
656374616E676C650005416C69676E0708436F6E74656E74730A46696C6C2E43
6F6C6F7207097846463331333433390748697454657374080A53697A652E5769
6474680500000000000000C804400B53697A652E486569676874050000000000
@@ -6121,7 +6121,7 @@ object MainForm: TMainForm
68740500000000000000C803401453697A652E506C6174666F726D4465666175
6C740800000000005450463007544C61796F757400095374796C654E616D6506
13657870616E646572627574746F6E7374796C650756697369626C6508085461
- 624F726465720249001254427574746F6E5374796C654F626A65637400095374
+ 624F72646572024A001254427574746F6E5374796C654F626A65637400095374
796C654E616D65060A6261636B67726F756E6405416C69676E070643656E7465
72074F70616369747905000000000000000000000C536F757263654C6F6F6B75
7006124F6E797820426C75657374796C652E706E670A53697A652E5769647468
@@ -6177,7 +6177,7 @@ object MainForm: TMainForm
7870616E6465643D747275650E54726967676572496E76657273650610497345
7870616E6465643D66616C7365000000005450463007544C61796F7574000953
74796C654E616D65061264726F70646F776E65646974627574746F6E07566973
- 69626C6508085461624F72646572024A001254427574746F6E5374796C654F62
+ 69626C6508085461624F72646572024B001254427574746F6E5374796C654F62
6A65637400095374796C654E616D65060A6261636B67726F756E6405416C6967
6E0708436F6E74656E74730C536F757263654C6F6F6B757006124F6E79782042
6C75657374796C652E706E6707486F744C696E6B0E010E436170496E73657473
@@ -6238,7 +6238,7 @@ object MainForm: TMainForm
726365526563742E426F74746F6D0500000000000000A60740000013546F7563
68416E696D6174696F6E2E4C696E6B0E000000005450463007544C61796F7574
00095374796C654E616D65060E636F6D626F656469747374796C650756697369
- 626C6508085461624F72646572024B000C545374796C654F626A656374000953
+ 626C6508085461624F72646572024C000C545374796C654F626A656374000953
74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
656E7473074361704D6F6465070454696C650C50616464696E672E4C65667405
000000000000008000400B50616464696E672E546F7005000000000000008000
@@ -6302,7 +6302,7 @@ object MainForm: TMainForm
0B42727573682E436F6C6F72070978374634343735394400000B54466F6E744F
626A65637400095374796C654E616D650604666F6E740000005450463007544C
61796F757400095374796C654E616D65060D636F6D626F626F787374796C6507
- 56697369626C6508085461624F72646572024C000B54476C6F77456666656374
+ 56697369626C6508085461624F72646572024D000B54476C6F77456666656374
0008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F7207
09784646343837394133074F706163697479050000000000000080FF3F075472
6967676572060E4973466F63757365643D7472756507456E61626C6564080000
@@ -6353,7 +6353,7 @@ object MainForm: TMainForm
00000C5442727573684F626A65637400095374796C654E616D65060A666F7265
67726F756E640000005450463007544C61796F757400095374796C654E616D65
06177472616E73706172656E746C697374626F787374796C650756697369626C
- 6508085461624F72646572024D000C5442727573684F626A6563740009537479
+ 6508085461624F72646572024E000C5442727573684F626A6563740009537479
6C654E616D650618416C7465726E6174696E67526F774261636B67726F756E64
0B42727573682E436F6C6F720709784646333933453434000007544C61796F75
7400095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
@@ -6433,7 +6433,7 @@ object MainForm: TMainForm
000000000953746F7056616C7565050000000000000080FF3F07547269676765
720610497344726F70446F776E3D66616C73650000005450463007544C61796F
757400095374796C654E616D65060E6E756D626572626F787374796C65075669
- 7369626C6508085461624F72646572024E000B54476C6F774566666563740008
+ 7369626C6508085461624F72646572024F000B54476C6F774566666563740008
536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F72070978
4646343837394133074F706163697479050000000000000080FF3F0754726967
676572060E4973466F63757365643D7472756507456E61626C65640800000C54
@@ -6468,7 +6468,7 @@ object MainForm: TMainForm
6C6F72070978374634343735394400000B54466F6E744F626A65637400095374
796C654E616D650604666F6E740000005450463007544C61796F757400095374
796C654E616D65060D706F707570626F787374796C650756697369626C650808
- 5461624F72646572024F000B54476C6F774566666563740008536F66746E6573
+ 5461624F726465720250000B54476C6F774566666563740008536F66746E6573
73050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846463438373941
33074F706163697479050000000000000080FF3F0754726967676572060E4973
466F63757365643D7472756507456E61626C65640800001254427574746F6E53
@@ -6561,7 +6561,7 @@ object MainForm: TMainForm
6D616C436F6C6F7207097846463138314131440C50726573736564436F6C6F72
0708636C6157686974650000005450463007544C61796F757400095374796C65
4E616D65060C6172636469616C7374796C650756697369626C6508085461624F
- 726465720250000854456C6C6970736500095374796C654E616D65060A626163
+ 726465720251000854456C6C6970736500095374796C654E616D65060A626163
6B67726F756E6405416C69676E07034669740946696C6C2E4B696E6407084772
616469656E741446696C6C2E4772616469656E742E506F696E74730E0105436F
6C6F720709784646344134393534064F66667365740500000000000000000000
@@ -6604,7 +6604,7 @@ object MainForm: TMainForm
6E74436F6C6F720709784646313831413144155465787453657474696E67732E
576F726457726170080000005450463007544C61796F757400095374796C654E
616D650611636F726E6572627574746F6E7374796C650756697369626C650808
- 5461624F726465720251000B54476C6F774566666563740008536F66746E6573
+ 5461624F726465720252000B54476C6F774566666563740008536F66746E6573
73050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846463438373941
33074F706163697479050000000000000080FF3F0754726967676572060E4973
466F63757365643D7472756507456E61626C65640800000A5452656374616E67
@@ -6638,7 +6638,7 @@ object MainForm: TMainForm
436F6C6F720709784646313831413144155465787453657474696E67732E576F
726457726170080000005450463007544C61796F757400095374796C654E616D
65060D7465787463656C6C7374796C650756697369626C6508085461624F7264
- 657202520007544C61796F757400095374796C654E616D650607636F6E74656E
+ 657202530007544C61796F757400095374796C654E616D650607636F6E74656E
7405416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E
732E4C65667405000000000000008001400B4D617267696E732E546F70050000
00000000008001400D4D617267696E732E526967687405000000000000008001
@@ -6650,7 +6650,7 @@ object MainForm: TMainForm
73656C656374696F6E0B42727573682E436F6C6F720709783746343437353944
00000B54466F6E744F626A65637400095374796C654E616D650604666F6E7400
00005450463007544C61796F757400095374796C654E616D65060E636865636B
- 63656C6C7374796C650756697369626C6508085461624F726465720253000754
+ 63656C6C7374796C650756697369626C6508085461624F726465720254000754
4C61796F75740005416C69676E07044C6566740A53697A652E57696474680500
000000000000A003400B53697A652E4865696768740500000000000000C80440
1453697A652E506C6174666F726D44656661756C7408001154436865636B5374
@@ -6712,7 +6712,7 @@ object MainForm: TMainForm
65526563742E5269676874050000000000000092054011536F75726365526563
742E426F74746F6D0500000000000000A2064000000000005450463007544C61
796F757400095374796C654E616D65061170726F677265737363656C6C737479
- 6C650756697369626C6508085461624F7264657202540007544C61796F757400
+ 6C650756697369626C6508085461624F7264657202550007544C61796F757400
095374796C654E616D650605747261636B05416C69676E0708436F6E74656E74
730C50616464696E672E4C656674050000000000000080FF3F0B50616464696E
672E546F70050000000000000080FF3F0D50616464696E672E52696768740500
@@ -6752,7 +6752,7 @@ object MainForm: TMainForm
63742E52696768740500000000000000BE064011536F75726365526563742E42
6F74746F6D05000000000000009B07400000064F706171756509000000005450
463007544C61796F757400095374796C654E616D65060E706F70757063656C6C
- 7374796C650756697369626C6508085461624F7264657202550007544C61796F
+ 7374796C650756697369626C6508085461624F7264657202560007544C61796F
75740005416C69676E070552696768740A506F736974696F6E2E580500000000
0000008C04400A53697A652E57696474680500000000000000F002400B53697A
652E4865696768740500000000000000C804401453697A652E506C6174666F72
@@ -6780,7 +6780,7 @@ object MainForm: TMainForm
00B804401453697A652E506C6174666F726D44656661756C7408165465787453
657474696E67732E466F6E74436F6C6F720708636C6157686974650000005450
463007544C61796F757400095374796C654E616D65060E696D61676563656C6C
- 7374796C650756697369626C6508085461624F726465720256000654496D6167
+ 7374796C650756697369626C6508085461624F726465720257000654496D6167
6500095374796C654E616D650605696D6167650E4D756C74695265734269746D
61700E01000005416C69676E0706436C69656E74064C6F636B65640907486974
54657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D61
@@ -6792,7 +6792,7 @@ object MainForm: TMainForm
4E616D65061177696E646F77626F726465727374796C6505416C69676E070643
656E7465720A53697A652E57696474680500000000000000F805400B53697A65
2E48656967687405000000000000008305401453697A652E506C6174666F726D
- 44656661756C74080756697369626C6508085461624F726465720257000C5453
+ 44656661756C74080756697369626C6508085461624F726465720258000C5453
74796C654F626A65637400095374796C654E616D6506046D61736B05416C6967
6E0708436F6E74656E7473064C6F636B6564090C536F757263654C6F6F6B7570
06124F6E797820426C75657374796C652E706E6708577261704D6F6465070454
@@ -6944,7 +6944,7 @@ object MainForm: TMainForm
0B53697A652E4865696768740500000000000000FC03401453697A652E506C61
74666F726D44656661756C74080000005450463007544C61796F757400095374
796C654E616D65060B6D696E62746E7374796C650756697369626C6508085461
- 624F72646572025800135453797374656D427574746F6E4F626A656374000953
+ 624F72646572025900135453797374656D427574746F6E4F626A656374000953
74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
656E7473074361704D6F6465070454696C650C536F757263654C6F6F6B757006
124F6E797820426C75657374796C652E706E6708577261704D6F646507064365
@@ -6970,7 +6970,7 @@ object MainForm: TMainForm
6874050000000000000093074011536F75726365526563742E426F74746F6D05
00000000000000AE054000000000005450463007544C61796F75740009537479
6C654E616D65060B6D617862746E7374796C650756697369626C650808546162
- 4F72646572025900135453797374656D427574746F6E4F626A65637400095374
+ 4F72646572025A00135453797374656D427574746F6E4F626A65637400095374
796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
6E7473074361704D6F6465070454696C650C536F757263654C6F6F6B75700612
4F6E797820426C75657374796C652E706E6708577261704D6F6465070643656E
@@ -6996,7 +6996,7 @@ object MainForm: TMainForm
74050000000000008093074011536F75726365526563742E426F74746F6D0500
000000000000B0044000000000005450463007544C61796F757400095374796C
654E616D65060B72657362746E7374796C650756697369626C6508085461624F
- 72646572025A00135453797374656D427574746F6E4F626A6563740009537479
+ 72646572025B00135453797374656D427574746F6E4F626A6563740009537479
6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
7473074361704D6F6465070454696C650C536F757263654C6F6F6B757006124F
6E797820426C75657374796C652E706E6708577261704D6F6465070643656E74
@@ -7022,7 +7022,7 @@ object MainForm: TMainForm
050000000000008093074011536F75726365526563742E426F74746F6D050000
000000000082054000000000005450463007544C61796F757400095374796C65
4E616D65060D636C6F736562746E7374796C650756697369626C650808546162
- 4F72646572025C00135453797374656D427574746F6E4F626A65637400095374
+ 4F72646572025D00135453797374656D427574746F6E4F626A65637400095374
796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
6E7473074361704D6F6465070454696C650C536F757263654C6F6F6B75700612
4F6E797820426C75657374796C652E706E6708577261704D6F6465070643656E
@@ -7048,7 +7048,7 @@ object MainForm: TMainForm
74050000000000008093074011536F75726365526563742E426F74746F6D0500
000000000000B0034000000000005450463007544C61796F757400095374796C
654E616D65060F746F6F6C77696E646F777374796C650756697369626C650808
- 5461624F72646572025E000C545374796C654F626A65637400095374796C654E
+ 5461624F72646572025F000C545374796C654F626A65637400095374796C654E
616D6506046D61736B05416C69676E0708436F6E74656E7473064C6F636B6564
090C536F757263654C6F6F6B757006124F6E797820426C75657374796C652E70
6E6708577261704D6F6465070454696C650756697369626C65080A536F757263
@@ -7175,7 +7175,7 @@ object MainForm: TMainForm
04400B53697A652E4865696768740500000000000000C003401453697A652E50
6C6174666F726D44656661756C74080000005450463007544C61796F75740009
5374796C654E616D650611746F6F6C636C6F736562746E7374796C6507566973
- 69626C6508085461624F72646572026000135453797374656D427574746F6E4F
+ 69626C6508085461624F72646572026100135453797374656D427574746F6E4F
626A65637400095374796C654E616D65060A6261636B67726F756E6405416C69
676E0708436F6E74656E74730C536F757263654C6F6F6B757006124F6E797820
426C75657374796C652E706E6708577261704D6F6465070643656E7465720748
@@ -7201,10 +7201,10 @@ object MainForm: TMainForm
0000008093074011536F75726365526563742E426F74746F6D05000000000000
00B0034000000000005450463007544C61796F757400095374796C654E616D65
0611616E69696E64696361746F727374796C650756697369626C650808546162
- 4F726465720263000C5442727573684F626A65637400095374796C654E616D65
+ 4F726465720264000C5442727573684F626A65637400095374796C654E616D65
060466696C6C0000005450463007544C61796F757400095374796C654E616D65
060E7461626C65766965777374796C650756697369626C6508085461624F7264
- 65720266000C5442727573684F626A65637400095374796C654E616D65061841
+ 65720267000C5442727573684F626A65637400095374796C654E616D65061841
6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
6C6F720709784646333933453434000007544C61796F757400095374796C654E
616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E747300
@@ -7253,7 +7253,7 @@ object MainForm: TMainForm
06400B53697A652E48656967687405000000000000008002401453697A652E50
6C6174666F726D44656661756C74080756697369626C65080000000000545046
3007544C61796F757400095374796C654E616D6506136D61676E696669657267
- 6C6173737374796C650756697369626C6508085461624F7264657202690A4669
+ 6C6173737374796C650756697369626C6508085461624F72646572026A0A4669
78656457696474680396000B4669786564486569676874039600000754436972
636C6500095374796C654E616D650607636F6E74656E7405416C69676E070643
6C69656E741446696C6C2E4269746D61702E577261704D6F6465070454696C65
@@ -7289,7 +7289,7 @@ object MainForm: TMainForm
1C6D61676E6966696572676C61737372656374616E676C657374796C650A5369
7A652E57696474680500000000000000C804400B53697A652E48656967687405
00000000000000C804401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508085461624F72646572026C000A5452656374616E676C65
+ 0756697369626C6508085461624F72646572026D000A5452656374616E676C65
00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
6E741446696C6C2E4269746D61702E577261704D6F6465070454696C65094669
6C6C2E4B696E6407064269746D61700748697454657374080C4D617267696E73
@@ -7329,7 +7329,7 @@ object MainForm: TMainForm
616E676C657374617469634C6F7570650A53697A652E57696474680500000000
000000C804400B53697A652E4865696768740500000000000000C80440145369
7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F72646572026F000A5452656374616E676C6500095374796C654E616D650607
+ 4F726465720270000A5452656374616E676C6500095374796C654E616D650607
636F6E74656E7405416C69676E0706436C69656E740A53697A652E5769647468
0500000000000000C804400B53697A652E4865696768740500000000000000C8
04401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
@@ -7398,12 +7398,12 @@ object MainForm: TMainForm
0000009805401453697A652E506C6174666F726D44656661756C74080B537472
6F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400000000}
end>
- Left = 8
- Top = 448
+ Left = 64
+ Top = 192
end
object MainMenu1: TMainMenu
- Left = 40
- Top = 488
+ Left = 144
+ Top = 192
object launcherItem: TMenuItem
Text = 'AErender Launcher'
object outModuleEditorItem0: TMenuItem
@@ -7494,7 +7494,7 @@ object MainForm: TMainForm
Platform = 'Windows'
ResourcesBin = {
464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
- AF00060B627574746F6E7374796C6503C5040609656469747374796C6503AE05
+ AF00060B627574746F6E7374796C6503D0040609656469747374796C6503AE05
060A6C6162656C7374796C65032001060D67726F7570626F787374796C65038E
02060D747261636B6261727374796C65038C07060D636865636B626F78737479
6C6503930506147363726F6C6C62617268747261636B7374796C65033B010614
@@ -7509,1836 +7509,1871 @@ object MainForm: TMainForm
6C6503EF04060D7468756D626261727374796C65034F03060C6C697374626F78
7374796C6503AD07060D6C697374626F78666F6F746572038B0106106C697374
626F786974656D7374796C6503260306126C697374626F78706C61696E686561
- 6465720346020609677269647374796C65039008060F6865616465726974656D
+ 6465720346020609677269647374796C6503A308060F6865616465726974656D
7374796C6503CE03061970726F67726573736261726D696E696572726F727374
796C65036103061170726F677265737363656C6C7374796C6503A50206106D65
6E756261726974656D7374796C6503300B060C6D656E756261727374796C6503
- 6C02060D6D656E756974656D7374796C6503540B06126D656E75736570617261
- 746F727374796C6503E501060D6D656E75766965777374796C65039102060E69
+ 6C02060D6D656E756974656D7374796C65035D0B06126D656E75736570617261
+ 746F727374796C65038301060D6D656E75766965777374796C65039102060E69
6D61676563656C6C7374796C65033D01060E706F70757063656C6C7374796C65
03D103060D7465787463656C6C7374796C6503A60106096D656D6F7374796C65
03E707060E6C696E6B6C6162656C7374796C65035003060E7374617475736261
- 727374796C6503E401060C7370696E626F787374796C65032908060D73697A65
+ 727374796C6503E401060C7370696E626F787374796C65035F07060D73697A65
677269707374796C6503FB04060C746F6F6C6261727374796C6503CA00061570
726F67726573736261726572726F727374796C65036F04060F64726F70746172
6765747374796C65037304061464726F707461726765746669656C647374796C
6503940E060C706F706F7665727374796C65033502060D706F707570626F7873
- 74796C65033D0606147374617475736261726E6F677269707374796C6503D400
+ 74796C65034B0606147374617475736261726E6F677269707374796C6503D400
0613736D616C6C7363726F6C6C6261727374796C6503AE01060D73706C697474
65727374796C65036B040610636C6F7365627574746F6E7374796C6503710406
0E6D6178627574746F6E7374796C65030104060E726573627574746F6E737479
6C65031A04060E6D696E627574746F6E7374796C65031904060F746F6F6C7769
- 6E646F777374796C6503BD0D061177696E646F77626F726465727374796C6503
- 55100610726164696F627574746F6E7374796C6503B9050618756C63656E7465
- 72726164696F627574746F6E7374796C65035D050617756C7269676874726164
- 696F627574746F6E7374796C650360050616756C6C656674726164696F627574
- 746F6E7374796C65035B05061070726F67726573736261727374796C65036A04
- 060D657870616E6465727374796C650371060613657870616E64657262757474
- 6F6E7374796C650381020615657870616E646572636865636B626F787374796C
- 6503DB05060E6C6162656C66696C6C7374796C6503C3010613636F6D626F6564
- 69746572726F727374796C65039209061E70726F6772657373626172696E6465
- 7465726D696E61626C657374796C650384040611616E69696E64696361746F72
- 7374796C6503BA010615616E69696E64696361746F72686F727A7374796C6503
- 8A02060A70616E656C7374796C65031E01060E6C6F67627574746F6E7374796C
- 65039507061470726F67726573736261726D696E697374796C65035C03005450
- 46300A5452656374616E676C6500095374796C654E616D65060F6261636B6772
- 6F756E647374796C6505416C69676E070643656E7465720A46696C6C2E436F6C
- 6F7207097846463244324432440A53697A652E57696474680500000000000000
- 9407400B53697A652E4865696768740500000000000080D206401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E650756697369626C650800005450463007544C61796F757400095374796C65
- 4E616D65060B627574746F6E7374796C6505416C69676E070643656E7465720A
- 53697A652E57696474680500000000000000C805400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 74080756697369626C6508085461624F726465720202000A5452656374616E67
- 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
- 06436C69656E740C436C69704368696C6472656E090A436C6970506172656E74
- 090A46696C6C2E436F6C6F720709784646323032303230074869745465737408
- 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
- 68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E69
- 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
- 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
- 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
- 07097846463230323032300953746F7056616C75650709784646343034303430
- 0754726967676572063049734D6F7573654F7665723D747275653B4973507265
- 737365643D66616C73653B4973466F63757365643D66616C73650E5472696767
- 6572496E7665727365063149734D6F7573654F7665723D66616C73653B497350
- 7265737365643D66616C73653B4973466F63757365643D66616C736500000F54
- 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
- 6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000000000
- 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463430343034300953746F7056616C7565070978
- 46463137353739430754726967676572062F4973507265737365643D74727565
- 3B49734D6F7573654F7665723D747275653B4973466F63757365643D66616C73
- 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615
- 627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E0500
- 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
- 6F720A537461727456616C756507097846463241383245320953746F7056616C
- 756507097846463137353739430754726967676572062E497350726573736564
- 3D747275653B49734D6F7573654F7665723D747275653B4973466F6375736564
- 3D747275650E54726967676572496E7665727365062F4973507265737365643D
- 66616C73653B49734D6F7573654F7665723D747275653B4973466F6375736564
- 3D7472756500000005545465787400095374796C654E616D6506047465787405
- 416C69676E0706436C69656E7413456E61626C6544726167486967686C696768
- 74080748697454657374080A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
- 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
- 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
- 5374796C654E616D650609656469747374796C6505416C69676E070643656E74
- 65720A53697A652E57696474680500000000000000C805400B53697A652E4865
- 696768740500000000000000C803401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F726465720203000C5442727573
- 684F626A65637400095374796C654E616D65060A666F726567726F756E640000
- 0C5442727573684F626A65637400095374796C654E616D65060973656C656374
- 696F6E0B42727573682E436F6C6F72070978393632413832453200000B54466F
- 6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E53
- 697A650500000000000000D0024000000A5452656374616E676C650009537479
- 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
- 74730A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 6E646F777374796C6503BD0D0610726164696F627574746F6E7374796C6503B9
+ 050618756C63656E746572726164696F627574746F6E7374796C65035D050617
+ 756C7269676874726164696F627574746F6E7374796C650360050616756C6C65
+ 6674726164696F627574746F6E7374796C65035B05061670726F677265737362
+ 617266696E6973687374796C65037004060D657870616E6465727374796C6503
+ 71060613657870616E646572627574746F6E7374796C65038102061565787061
+ 6E646572636865636B626F787374796C6503DB05060E6C6162656C66696C6C73
+ 74796C6503C3010613636F6D626F656469746572726F727374796C6503920906
+ 1E70726F6772657373626172696E64657465726D696E61626C657374796C6503
+ 84040611616E69696E64696361746F727374796C6503EA010615616E69696E64
+ 696361746F72686F727A7374796C65039502060A70616E656C7374796C650329
+ 01060E6C6F67627574746F6E7374796C65039507061470726F67726573736261
+ 726D696E697374796C65035C03061B7472656576696577657870616E64657262
+ 7574746F6E7374796C65038902061174726565766965776974656D7374796C65
+ 030905060D74726565766965777374796C650341070619616374696F6E746F6F
+ 6C627574746F6E6D756C746976696577034A07060E616464627574746F6E7374
+ 796C65032C070617696E666F746F6F6C627574746F6E6D756C74697669657703
+ B40D061B6F7267616E697A65746F6F6C627574746F6E6D756C74697669657703
+ F906061B73657474696E6773746F6F6C627574746F6E6D756C74697669657703
+ 8813061172656D6F7665627574746F6E7374796C6503DA060614706F70757062
+ 61636B67726F756E647374796C6503BA00061A70726F67726573736261726D69
+ 6E6966696E6973687374796C65036203061070726F6772657373626172737479
+ 6C65036A04061177696E646F77626F726465727374796C65039D100613617272
+ 6F77646F776E746F6F6C627574746F6E03A90500545046300A5452656374616E
+ 676C6500095374796C654E616D65060F6261636B67726F756E647374796C6505
+ 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646324432
+ 4432440A53697A652E576964746805000000000000009407400B53697A652E48
+ 65696768740500000000000080D206401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C65
+ 0800005450463007544C61796F757400095374796C654E616D65060B62757474
+ 6F6E7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F726465720202000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C
+ 69704368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E310844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
+ 300953746F7056616C7565070978464634303430343007547269676765720630
+ 49734D6F7573654F7665723D747275653B4973507265737365643D66616C7365
+ 3B4973466F63757365643D66616C73650E54726967676572496E766572736506
+ 3149734D6F7573654F7665723D66616C73653B4973507265737365643D66616C
+ 73653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E32084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463430343034300953746F7056616C756507097846463137353739430754
+ 726967676572062F4973507265737365643D747275653B49734D6F7573654F76
+ 65723D747275653B4973466F63757365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E33084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463241383245320953746F7056616C75650709784646313735
+ 3739430754726967676572062E4973507265737365643D747275653B49734D6F
+ 7573654F7665723D747275653B4973466F63757365643D747275650E54726967
+ 676572496E7665727365062F4973507265737365643D66616C73653B49734D6F
+ 7573654F7665723D747275653B4973466F63757365643D747275650000000554
+ 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
+ 656E7413456E61626C6544726167486967686C69676874080748697454657374
080A53697A652E57696474680500000000000000C805400B53697A652E486569
6768740500000000000000C803401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F720709784646313531353135000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650614656469745374
- 726F6B65416E696D6174696F6E31084475726174696F6E050000000000000000
- 00000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A5374
- 61727456616C756507097846463135313531350953746F7056616C7565070978
- 46463241383245320754726967676572060E4973466F63757365643D74727565
- 0E54726967676572496E7665727365060F4973466F63757365643D66616C7365
- 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061465
- 6469745374726F6B65416E696D6174696F6E32084475726174696F6E05000000
- 0000000000000007496E7665727365090C50726F70657274794E616D65060C53
- 74726F6B652E436F6C6F720A537461727456616C756507097846463135313531
- 350953746F7056616C7565070978464634433443344307547269676765720621
- 49734D6F7573654F7665723D747275653B4973466F63757365643D66616C7365
- 3B0E54726967676572496E7665727365062249734D6F7573654F7665723D6661
- 6C73653B4973466F63757365643D66616C73653B00000007544C61796F757400
- 095374796C654E616D650607627574746F6E7305416C69676E07055269676874
- 064C6F636B6564090B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E526967687405000000000000008000400E4D617267696E73
- 2E426F74746F6D05000000000000008000400A506F736974696F6E2E58050000
- 0000000000C004400A506F736974696F6E2E5905000000000000008000400A53
- 697A652E57696474680500000000000000C804400B53697A652E486569676874
- 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
- 08000007544C61796F757400095374796C654E616D650607636F6E74656E7405
- 416C69676E0706436C69656E74064C6F636B6564090C4D617267696E732E4C65
- 667405000000000000008001400B4D617267696E732E546F7005000000000000
- 008000400D4D617267696E732E526967687405000000000000008000400E4D61
- 7267696E732E426F74746F6D05000000000000008000400A53697A652E576964
- 74680500000000000000A804400B53697A652E48656967687405000000000000
- 00A803401453697A652E506C6174666F726D44656661756C7408000006544C61
- 62656C00095374796C654E616D65060670726F6D7074064C6F636B656409074F
- 706163697479050000000000000080FE3F165465787453657474696E67732E46
- 6F6E74436F6C6F720708636C6157686974650454657874060454657874000000
- 5450463007544C61796F757400095374796C654E616D65060A6C6162656C7374
- 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
- 00000000C805400B53697A652E4865696768740500000000000000C803401453
- 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
- 624F7264657202040005545465787400095374796C654E616D65060474657874
- 05416C69676E0708436F6E74656E74730748697454657374080A53697A652E57
- 696474680500000000000000C805400B53697A652E4865696768740500000000
- 000000C803401453697A652E506C6174666F726D44656661756C740816546578
- 7453657474696E67732E466F6E74436F6C6F720708636C615768697465000000
- 5450463007544C61796F757400095374796C654E616D65060D67726F7570626F
- 787374796C6505416C69676E070643656E7465720A53697A652E576964746805
- 00000000000000F004400B53697A652E4865696768740500000000000000C804
- 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 085461624F726465720205000A5452656374616E676C6500095374796C654E61
- 6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946
- 696C6C2E4B696E6407044E6F6E650748697454657374080C4D617267696E732E
- 4C6566740500000000000000C000400B4D617267696E732E546F700500000000
- 0000009002400D4D617267696E732E52696768740500000000000000C000400E
- 4D617267696E732E426F74746F6D0500000000000000C000400A53697A652E57
- 696474680500000000000000D804400B53697A652E4865696768740500000000
- 0000009804401453697A652E506C6174666F726D44656661756C74080C537472
- 6F6B652E436F6C6F720709784646313531353135000554546578740009537479
- 6C654E616D65060474657874084175746F53697A65090A436C6970506172656E
- 74090748697454657374080C4D617267696E732E4C6566740500000000000000
- A002400A506F736974696F6E2E5805000000000060559502400A506F73697469
- 6F6E2E590500000000004055D501C00A53697A652E5769647468050000000000
- 00B8C703400B53697A652E4865696768740500000000000060FF02401453697A
- 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
- 466F6E74436F6C6F720708636C615768697465155465787453657474696E6773
- 2E576F72645772617008000000005450463007544C61796F757400095374796C
- 654E616D65060D747261636B6261727374796C6505416C69676E070643656E74
- 65720A53697A652E57696474680500000000000000C805400B53697A652E4865
- 696768740500000000000000C805401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F7264657202060B466978656448
- 65696768740211000A5452656374616E676C6500095374796C654E616D650606
- 68747261636B05416C69676E070A5665727443656E7465720A46696C6C2E436F
- 6C6F7207097846463135313531350748697454657374080A506F736974696F6E
- 2E590500000000000000BC04400A53697A652E57696474680500000000000000
- C805400B53697A652E4865696768740500000000000000A001401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E65000A5452656374616E676C6500095374796C654E616D65060A6261636B67
- 726F756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407
- 044E6F6E65064C6F636B6564090748697454657374080C4D617267696E732E4C
- 6566740500000000000000C001400B4D617267696E732E546F70050000000000
- 000080FF3F0D4D617267696E732E52696768740500000000000000C001400E4D
- 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
- 6474680500000000000000B005400B53697A652E486569676874050000000000
- 0000C000401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C
- 654E616D650609686967686C6967687405416C69676E07044C6566740A46696C
- 6C2E436F6C6F7207097846463241383245320748697454657374080C50616464
- 696E672E4C6566740500000000000000A002400A53697A652E57696474680500
- 000000000000F003400B53697A652E4865696768740500000000000000A00140
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E6500000B54476C6F774566666563740008536F66746E657373
- 050000000000CDCCCCFC3F09476C6F77436F6C6F720709784646324138324532
- 074F706163697479050000000000000080FF3F07456E61626C6564080000000A
- 5452656374616E676C6500095374796C654E616D65060676747261636B05416C
- 69676E070A486F727A43656E7465720A46696C6C2E436F6C6F72070978464631
- 35313531350748697454657374080A506F736974696F6E2E5805000000000000
- 00BC04400A53697A652E57696474680500000000000000A001400B53697A652E
- 4865696768740500000000000000C805401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A5452656374
- 616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C69
- 676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65064C6F63
- 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
- 0000C001400B4D617267696E732E546F70050000000000000080FF3F0D4D6172
- 67696E732E52696768740500000000000000C001400E4D617267696E732E426F
- 74746F6D050000000000000080FF3F0A53697A652E5769647468050000000000
- 00000000000B53697A652E4865696768740500000000000000C405401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E6500000A5452656374616E676C6500095374796C654E616D6506096869
- 67686C6967687405416C69676E0703546F700A46696C6C2E436F6C6F72070978
- 46463241383245320748697454657374080A53697A652E576964746805000000
- 00000000A001400B53697A652E4865696768740500000000000000F003401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E6500000B54476C6F774566666563740008536F66746E6573730500
- 00000000CDCCCCFC3F09476C6F77436F6C6F720709784646324138324532074F
- 706163697479050000000000000080FF3F07456E61626C656408000000065454
- 68756D6200095374796C654E616D650606687468756D62064C6F636B6564090A
- 506F736974696F6E2E580500000000003033AB03400A506F736974696F6E2E59
- 050000000000FFFFA304400A53697A652E57696474680500000000000000F002
- 400B53697A652E4865696768740500000000000000F002401453697A652E506C
- 6174666F726D44656661756C74080B5374796C654C6F6F6B7570060D7468756D
- 626261727374796C65000006545468756D6200095374796C654E616D65060676
- 7468756D62064C6F636B6564090A506F736974696F6E2E58050000000000CBCC
- A804400A506F736974696F6E2E590500000000009899B103400A53697A652E57
- 696474680500000000000000F002400B53697A652E4865696768740500000000
- 000000F002401453697A652E506C6174666F726D44656661756C74080B537479
- 6C654C6F6F6B7570060D7468756D626261727374796C65000000545046300754
- 4C61796F757400095374796C654E616D65060D636865636B626F787374796C65
- 05416C69676E070643656E7465720A53697A652E5769647468050000000000AC
- AA8006400B53697A652E48656967687405000000000058559904401453697A65
- 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
- 64657202070007544C61796F75740005416C69676E07044C6566740A53697A65
- 2E576964746805000000000000009003400B53697A652E486569676874050000
- 00000058559904401453697A652E506C6174666F726D44656661756C7408000A
- 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
- 6405416C69676E070643656E7465720A46696C6C2E436F6C6F72070978464632
- 30323032300748697454657374080A53697A652E576964746805000000000000
- 00F002400B53697A652E4865696768740500000000000000F002401453697A65
- 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
- 784646313531353135000A5452656374616E676C6500095374796C654E616D65
- 060A52656374616E676C653105416C69676E0706436C69656E740A46696C6C2E
- 436F6C6F720709784646324138324532074869745465737408074F7061636974
- 7905000000000000000000000C4D617267696E732E4C65667405000000000000
- 008000400B4D617267696E732E546F7005000000000000008000400D4D617267
- 696E732E526967687405000000000000008000400E4D617267696E732E426F74
- 746F6D05000000000000008000400A53697A652E576964746805000000000000
- 00B002400B53697A652E4865696768740500000000000000B002401453697A65
+ 756C74080454657874060454657874165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C6157686974650000005450463007544C61796F757400
+ 095374796C654E616D650609656469747374796C6505416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508085461624F726465720203000C54427275
+ 73684F626A65637400095374796C654E616D65060A666F726567726F756E6400
+ 000C5442727573684F626A65637400095374796C654E616D65060973656C6563
+ 74696F6E0B42727573682E436F6C6F72070978393632413832453200000B5446
+ 6F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E
+ 53697A650500000000000000D0024000000A5452656374616E676C6500095374
+ 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D6506146564697453
+ 74726F6B65416E696D6174696F6E31084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53
+ 7461727456616C756507097846463135313531350953746F7056616C75650709
+ 7846463241383245320754726967676572060E4973466F63757365643D747275
+ 650E54726967676572496E7665727365060F4973466F63757365643D66616C73
+ 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 656469745374726F6B65416E696D6174696F6E32084475726174696F6E050000
+ 000000000000000007496E7665727365090C50726F70657274794E616D65060C
+ 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
+ 31350953746F7056616C75650709784646344334433443075472696767657206
+ 2149734D6F7573654F7665723D747275653B4973466F63757365643D66616C73
+ 653B0E54726967676572496E7665727365062249734D6F7573654F7665723D66
+ 616C73653B4973466F63757365643D66616C73653B00000007544C61796F7574
+ 00095374796C654E616D650607627574746F6E7305416C69676E070552696768
+ 74064C6F636B6564090B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A506F736974696F6E2E580500
+ 000000000000C004400A506F736974696F6E2E5905000000000000008000400A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000A803401453697A652E506C6174666F726D44656661756C
+ 7408000007544C61796F757400095374796C654E616D650607636F6E74656E74
+ 05416C69676E0706436C69656E74064C6F636B6564090C4D617267696E732E4C
+ 65667405000000000000008001400B4D617267696E732E546F70050000000000
+ 00008000400D4D617267696E732E526967687405000000000000008000400E4D
+ 617267696E732E426F74746F6D05000000000000008000400A53697A652E5769
+ 6474680500000000000000A804400B53697A652E486569676874050000000000
+ 0000A803401453697A652E506C6174666F726D44656661756C7408000006544C
+ 6162656C00095374796C654E616D65060670726F6D7074064C6F636B65640907
+ 4F706163697479050000000000000080FE3F165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C61576869746504546578740604546578740000
+ 005450463007544C61796F757400095374796C654E616D65060A6C6162656C73
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 0000000000C805400B53697A652E4865696768740500000000000000C8034014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F7264657202040005545465787400095374796C654E616D650604746578
+ 7405416C69676E0708436F6E74656E74730748697454657374080A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C803401453697A652E506C6174666F726D44656661756C7408165465
+ 787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
+ 005450463007544C61796F757400095374796C654E616D65060D67726F757062
+ 6F787374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000F004400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F726465720205000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E747309
+ 46696C6C2E4B696E6407044E6F6E650748697454657374080C4D617267696E73
+ 2E4C6566740500000000000000C000400B4D617267696E732E546F7005000000
+ 000000009002400D4D617267696E732E52696768740500000000000000C00040
+ 0E4D617267696E732E426F74746F6D0500000000000000C000400A53697A652E
+ 57696474680500000000000000D804400B53697A652E48656967687405000000
+ 000000009804401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F7207097846463135313531350005545465787400095374
+ 796C654E616D65060474657874084175746F53697A65090A436C697050617265
+ 6E74090748697454657374080C4D617267696E732E4C65667405000000000000
+ 00A002400A506F736974696F6E2E5805000000000060559502400A506F736974
+ 696F6E2E590500000000004055D501C00A53697A652E57696474680500000000
+ 0000B8C703400B53697A652E4865696768740500000000000060FF0240145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C615768697465155465787453657474696E67
+ 732E576F72645772617008000000005450463007544C61796F75740009537479
+ 6C654E616D65060D747261636B6261727374796C6505416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C805401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508085461624F7264657202060B4669786564
+ 4865696768740211000A5452656374616E676C6500095374796C654E616D6506
+ 0668747261636B05416C69676E070A5665727443656E7465720A46696C6C2E43
+ 6F6C6F7207097846463135313531350748697454657374080A506F736974696F
+ 6E2E590500000000000000BC04400A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000A001401453697A65
2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506
- 1B6368656368626F7856697362696C697479416E696D6174696F6E3108447572
- 6174696F6E05000000000000000000000C50726F70657274794E616D6506074F
- 7061636974790A537461727456616C756505000000000000000000000953746F
- 7056616C75650500000000000000C805400754726967676572060E4973436865
- 636B65643D747275650E54726967676572496E7665727365060F497343686563
- 6B65643D66616C73650000000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650618636865636B626F785374726F6B65416E696D6174696F6E
- 31084475726174696F6E05000000000000000000000C50726F70657274794E61
- 6D65060C5374726F6B652E436F6C6F720A537461727456616C75650709784646
- 3135313531350953746F7056616C756507097846463241383245320754726967
- 676572060E4973436865636B65643D747275650E54726967676572496E766572
- 7365060F4973436865636B65643D66616C736500000F54436F6C6F72416E696D
- 6174696F6E00095374796C654E616D650617636865636B626F78436F6C6F7241
- 6E696D6174696F6E31084475726174696F6E05000000000000000000000C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 6507097846463230323032300953746F7056616C756507097846463430343034
- 300754726967676572061049734D6F7573654F7665723D747275650E54726967
- 676572496E7665727365061149734D6F7573654F7665723D66616C7365000000
- 0005545465787400095374796C654E616D6506047465787405416C69676E0706
- 436C69656E740A53697A652E57696474680500000000005855DD05400B53697A
- 652E48656967687405000000000058559904401453697A652E506C6174666F72
- 6D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F72
- 0708636C615768697465000000545046300A5452656374616E676C6500095374
- 796C654E616D6506147363726F6C6C62617268747261636B7374796C6505416C
- 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463135313531
- 350748697454657374080A53697A652E57696474680500000000000000C80440
- 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
- 56697369626C65080006545468756D6200095374796C654E616D650605746875
- 6D62064C6F636B6564090A53697A652E57696474680500000000000000800340
- 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
- 74666F726D44656661756C74080B5374796C654C6F6F6B7570060A7468756D62
- 7374796C65000000545046300A5452656374616E676C6500095374796C654E61
- 6D6506147363726F6C6C62617276747261636B7374796C6505416C69676E0706
- 43656E7465720A46696C6C2E436F6C6F72070978464631353135313507486974
- 54657374080A53697A652E57696474680500000000000000C804400B53697A65
- 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075669736962
- 6C65080006545468756D6200095374796C654E616D6506057468756D62064C6F
- 636B6564090A53697A652E57696474680500000000000000C804400B53697A65
- 2E48656967687405000000000000008003401453697A652E506C6174666F726D
- 44656661756C74080B5374796C654C6F6F6B7570060A7468756D627374796C65
- 0000005450463007544C61796F757400095374796C654E616D6506157363726F
- 6C6C626172626F74746F6D627574746F6E05416C69676E070643656E74657207
- 56697369626C6508085461624F726465720208000A5452656374616E676C6500
- 095374796C654E616D65060A6261636B67726F756E6405416C69676E0706436C
- 69656E740C436C69704368696C6472656E090A436C6970506172656E74090A46
- 696C6C2E436F6C6F7207097846463230323032300748697454657374080A5369
- 7A652E57696474680500000000000000C804400B53697A652E48656967687405
- 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
- 0B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174
- 696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D61
- 74696F6E31084475726174696F6E05000000000000000000000C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463230323032300953746F7056616C75650709784646343034303430075472
- 6967676572062049734D6F7573654F7665723D747275653B4973507265737365
- 643D66616C73650E54726967676572496E7665727365062149734D6F7573654F
- 7665723D66616C73653B4973507265737365643D66616C736500000F54436F6C
- 6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F
- 6C6F72416E696D6174696F6E32084475726174696F6E05000000000000000000
- 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
- 56616C756507097846463430343034300953746F7056616C7565070978464631
- 37353739430754726967676572061F4973507265737365643D747275653B4973
- 4D6F7573654F7665723D747275650E54726967676572496E7665727365062049
- 73507265737365643D66616C73653B49734D6F7573654F7665723D7472756500
- 000007544C61796F757400095374796C654E616D6506074C61796F7574310541
- 6C69676E070643656E7465720A53697A652E57696474680500000000000000A0
- 02400B53697A652E4865696768740500000000000000C001401453697A652E50
- 6C6174666F726D44656661756C74080005545061746800095374796C654E616D
- 650605506174683105416C69676E0706436C69656E7409446174612E50617468
- 0A3400000004000000000000000000C8420000C84201000000000096430000C8
- 42010000000000484300009643030000000000C8420000C8420A46696C6C2E43
- 6F6C6F720708636C6157686974650748697454657374080A53697A652E576964
- 74680500000000000000A002400B53697A652E48656967687405000000000000
- 00C001401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E65000000005450463007544C61796F757400095374
- 796C654E616D6506137363726F6C6C6261726C656674627574746F6E05416C69
- 676E070643656E7465720756697369626C6508085461624F726465720209000A
- 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
- 6405416C69676E0706436C69656E740C436C69704368696C6472656E090A436C
- 6970506172656E74090A46696C6C2E436F6C6F72070978464632303230323007
- 48697454657374080A53697A652E57696474680500000000000000C804400B53
- 697A652E4865696768740500000000000000C804401453697A652E506C617466
- 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
- 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
- 6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
- 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463230323032300953746F7056616C7565070978
- 46463430343034300754726967676572062049734D6F7573654F7665723D7472
- 75653B4973507265737365643D66616C73650E54726967676572496E76657273
- 65062149734D6F7573654F7665723D66616C73653B4973507265737365643D66
- 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F
- 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
- 436F6C6F720A537461727456616C756507097846463430343034300953746F70
- 56616C756507097846463137353739430754726967676572061F497350726573
- 7365643D747275653B49734D6F7573654F7665723D747275650E547269676765
- 72496E766572736506204973507265737365643D66616C73653B49734D6F7573
- 654F7665723D7472756500000007544C61796F757400095374796C654E616D65
- 06074C61796F75743105416C69676E070643656E7465720A53697A652E576964
- 74680500000000000000A002400B53697A652E48656967687405000000000000
- 00C001401453697A652E506C6174666F726D44656661756C7408000554506174
- 6800095374796C654E616D650605506174683105416C69676E0706436C69656E
- 7409446174612E506174680A3400000004000000000000000000C8420000C842
- 01000000000096430000C842010000000000484300009643030000000000C842
- 0000C8420A46696C6C2E436F6C6F720708636C61576869746507486974546573
- 74080D526F746174696F6E416E676C650500000000000000B405400A53697A65
- 2E57696474680500000000000000A002400B53697A652E486569676874050000
- 0000000000C001401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F7574
- 00095374796C654E616D6506147363726F6C6C6261727269676874627574746F
- 6E05416C69676E070643656E7465720756697369626C6508085461624F726465
- 72020A000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0706436C69656E740C436C69704368696C647265
- 6E090A436C6970506172656E74090A46696C6C2E436F6C6F7207097846463230
- 323032300748697454657374080A53697A652E57696474680500000000000000
- C804400B53697A652E4865696768740500000000000000C804401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615
- 627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
- 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
- 6F720A537461727456616C756507097846463230323032300953746F7056616C
- 756507097846463430343034300754726967676572062049734D6F7573654F76
- 65723D747275653B4973507265737365643D66616C73650E5472696767657249
- 6E7665727365062149734D6F7573654F7665723D66616C73653B497350726573
- 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
- 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E32084475
- 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
- 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
- 0953746F7056616C756507097846463137353739430754726967676572061F49
- 73507265737365643D747275653B49734D6F7573654F7665723D747275650E54
- 726967676572496E766572736506204973507265737365643D66616C73653B49
- 734D6F7573654F7665723D7472756500000007544C61796F757400095374796C
- 654E616D6506074C61796F75743105416C69676E070643656E7465720A53697A
- 652E57696474680500000000000000A002400B53697A652E4865696768740500
- 000000000000C001401453697A652E506C6174666F726D44656661756C740800
- 05545061746800095374796C654E616D650605506174683105416C69676E0706
- 436C69656E7409446174612E506174680A3400000004000000000000000000C8
- 420000C84201000000000096430000C842010000000000484300009643030000
- 000000C8420000C8420A46696C6C2E436F6C6F720708636C6157686974650748
- 697454657374080D526F746174696F6E416E676C650500000000000000B405C0
- 0A53697A652E57696474680500000000000000A002400B53697A652E48656967
- 68740500000000000000C001401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
- 61796F757400095374796C654E616D6506127363726F6C6C626172746F706275
- 74746F6E05416C69676E070643656E7465720756697369626C6508085461624F
- 72646572020B000A5452656374616E676C6500095374796C654E616D65060A62
- 61636B67726F756E6405416C69676E0706436C69656E740C436C69704368696C
- 6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F7207097846
- 463230323032300748697454657374080A53697A652E57696474680500000000
- 000000C804400B53697A652E4865696768740500000000000000C80440145369
+ 6F6E65000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E64
+ 07044E6F6E65064C6F636B6564090748697454657374080C4D617267696E732E
+ 4C6566740500000000000000C001400B4D617267696E732E546F700500000000
+ 00000080FF3F0D4D617267696E732E52696768740500000000000000C001400E
+ 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
+ 696474680500000000000000B005400B53697A652E4865696768740500000000
+ 000000C000401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6500000A5452656374616E676C650009537479
+ 6C654E616D650609686967686C6967687405416C69676E07044C6566740A4669
+ 6C6C2E436F6C6F7207097846463241383245320748697454657374080C506164
+ 64696E672E4C6566740500000000000000A002400A53697A652E576964746805
+ 00000000000000F003400B53697A652E4865696768740500000000000000A001
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6500000B54476C6F774566666563740008536F66746E6573
+ 73050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846463241383245
+ 32074F706163697479050000000000000080FF3F07456E61626C656408000000
+ 0A5452656374616E676C6500095374796C654E616D65060676747261636B0541
+ 6C69676E070A486F727A43656E7465720A46696C6C2E436F6C6F720709784646
+ 3135313531350748697454657374080A506F736974696F6E2E58050000000000
+ 0000BC04400A53697A652E57696474680500000000000000A001400B53697A65
+ 2E4865696768740500000000000000C805401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65064C6F
+ 636B6564090748697454657374080C4D617267696E732E4C6566740500000000
+ 000000C001400B4D617267696E732E546F70050000000000000080FF3F0D4D61
+ 7267696E732E52696768740500000000000000C001400E4D617267696E732E42
+ 6F74746F6D050000000000000080FF3F0A53697A652E57696474680500000000
+ 0000000000000B53697A652E4865696768740500000000000000C40540145369
7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650615627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F
- 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
- 436F6C6F720A537461727456616C756507097846463230323032300953746F70
- 56616C756507097846463430343034300754726967676572062049734D6F7573
- 654F7665723D747275653B4973507265737365643D66616C73650E5472696767
- 6572496E7665727365062149734D6F7573654F7665723D66616C73653B497350
- 7265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E32
- 084475726174696F6E05000000000000000000000C50726F70657274794E616D
- 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646343034
- 3034300953746F7056616C756507097846463137353739430754726967676572
- 061F4973507265737365643D747275653B49734D6F7573654F7665723D747275
- 650E54726967676572496E766572736506204973507265737365643D66616C73
- 653B49734D6F7573654F7665723D7472756500000007544C61796F7574000953
- 74796C654E616D6506074C61796F75743105416C69676E070643656E7465720A
- 53697A652E57696474680500000000000000A002400B53697A652E4865696768
- 740500000000000000C001401453697A652E506C6174666F726D44656661756C
- 74080005545061746800095374796C654E616D650605506174683105416C6967
- 6E0706436C69656E7409446174612E506174680A340000000400000000000000
- 0000C8420000C84201000000000096430000C842010000000000484300009643
- 030000000000C8420000C8420A46696C6C2E436F6C6F720708636C6157686974
- 650748697454657374080D526F746174696F6E416E676C650500000000000000
- B406400A53697A652E57696474680500000000000000A002400B53697A652E48
- 65696768740500000000000000C001401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
- 07544C61796F757400095374796C654E616D65060E7363726F6C6C6261727374
- 796C6505416C69676E070643656E7465720756697369626C6508085461624F72
- 646572020C000754427574746F6E00095374796C654E616D65060A6C65667462
- 7574746F6E05416C69676E07044C656674064C6F636B6564090A506F73697469
- 6F6E2E5905000000000000008003400A53697A652E5769647468050000000000
- 00008003400B53697A652E48656967687405000000000000009003401453697A
- 652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700613
- 7363726F6C6C6261726C656674627574746F6E00000754427574746F6E000953
- 74796C654E616D65060B7269676874627574746F6E05416C69676E0705526967
- 6874064C6F636B6564090A506F736974696F6E2E580500000000000000880440
- 0A506F736974696F6E2E5905000000000000008003400A53697A652E57696474
- 6805000000000000008003400B53697A652E4865696768740500000000000000
- 9003401453697A652E506C6174666F726D44656661756C74080B5374796C654C
- 6F6F6B757006147363726F6C6C6261727269676874627574746F6E0000075442
- 7574746F6E00095374796C654E616D65060C626F74746F6D627574746F6E0541
- 6C69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E5905
- 000000000000008804400A53697A652E57696474680500000000000000C80440
- 0B53697A652E48656967687405000000000000008003401453697A652E506C61
- 74666F726D44656661756C74080B5374796C654C6F6F6B757006157363726F6C
- 6C626172626F74746F6D627574746F6E00000654547261636B00095374796C65
- 4E616D65060668747261636B05416C69676E0706436C69656E74064C6F636B65
- 64090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E
- 576964746805000000000000009003400B53697A652E48656967687405000000
- 000000009003401453697A652E506C6174666F726D44656661756C74080B5374
- 796C654C6F6F6B757006147363726F6C6C62617268747261636B7374796C6500
- 000654547261636B00095374796C654E616D65060676747261636B05416C6967
- 6E0706436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A48
- 6F72697A6F6E74616C0A53697A652E576964746805000000000000009003400B
- 53697A652E48656967687405000000000000009003401453697A652E506C6174
- 666F726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C
- 62617276747261636B7374796C6500000754427574746F6E00095374796C654E
- 616D650609746F70627574746F6E05416C69676E0703546F700A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 0000008003401453697A652E506C6174666F726D44656661756C74080B537479
- 6C654C6F6F6B757006127363726F6C6C626172746F70627574746F6E00000054
- 5046300A5452656374616E676C6500095374796C654E616D65060A7468756D62
- 7374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F720709
- 7846463444344434440748697454657374080A53697A652E5769647468050000
- 0000000000C804400B53697A652E4865696768740500000000000000C8044014
+ 044E6F6E6500000A5452656374616E676C6500095374796C654E616D65060968
+ 6967686C6967687405416C69676E0703546F700A46696C6C2E436F6C6F720709
+ 7846463241383245320748697454657374080A53697A652E5769647468050000
+ 0000000000A001400B53697A652E4865696768740500000000000000F0034014
53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E650756697369626C6508000F54436F6C6F72416E696D6174696F
- 6E00095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F
+ 6407044E6F6E6500000B54476C6F774566666563740008536F66746E65737305
+ 0000000000CDCCCCFC3F09476C6F77436F6C6F72070978464632413832453207
+ 4F706163697479050000000000000080FF3F07456E61626C6564080000000654
+ 5468756D6200095374796C654E616D650606687468756D62064C6F636B656409
+ 0A506F736974696F6E2E580500000000003033AB03400A506F736974696F6E2E
+ 59050000000000FFFFA304400A53697A652E57696474680500000000000000F0
+ 02400B53697A652E4865696768740500000000000000F002401453697A652E50
+ 6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060D746875
+ 6D626261727374796C65000006545468756D6200095374796C654E616D650606
+ 767468756D62064C6F636B6564090A506F736974696F6E2E58050000000000CB
+ CCA804400A506F736974696F6E2E590500000000009899B103400A53697A652E
+ 57696474680500000000000000F002400B53697A652E48656967687405000000
+ 00000000F002401453697A652E506C6174666F726D44656661756C74080B5374
+ 796C654C6F6F6B7570060D7468756D626261727374796C650000005450463007
+ 544C61796F757400095374796C654E616D65060D636865636B626F787374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ ACAA8006400B53697A652E48656967687405000000000058559904401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
+ 7264657202070007544C61796F75740005416C69676E07044C6566740A53697A
+ 652E576964746805000000000000009003400B53697A652E4865696768740500
+ 0000000058559904401453697A652E506C6174666F726D44656661756C740800
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646
+ 3230323032300748697454657374080A53697A652E5769647468050000000000
+ 0000F002400B53697A652E4865696768740500000000000000F002401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000A5452656374616E676C6500095374796C654E616D
+ 65060A52656374616E676C653105416C69676E0706436C69656E740A46696C6C
+ 2E436F6C6F720709784646324138324532074869745465737408074F70616369
+ 747905000000000000000000000C4D617267696E732E4C656674050000000000
+ 00008000400B4D617267696E732E546F7005000000000000008000400D4D6172
+ 67696E732E526967687405000000000000008000400E4D617267696E732E426F
+ 74746F6D05000000000000008000400A53697A652E5769647468050000000000
+ 0000B002400B53697A652E4865696768740500000000000000B002401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D65
+ 061B6368656368626F7856697362696C697479416E696D6174696F6E31084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D650607
+ 4F7061636974790A537461727456616C75650500000000000000000000095374
+ 6F7056616C75650500000000000000C805400754726967676572060E49734368
+ 65636B65643D747275650E54726967676572496E7665727365060F4973436865
+ 636B65643D66616C73650000000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650618636865636B626F785374726F6B65416E696D6174696F
6E31084475726174696F6E05000000000000000000000C50726F70657274794E
- 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464634
- 44344434440953746F7056616C75650709784646313735373943075472696767
- 6572060E4973507265737365643D747275650E54726967676572496E76657273
- 65060F4973507265737365643D66616C736500000F54436F6C6F72416E696D61
- 74696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E31
- 5374796C65084475726174696F6E05000000000000000000000C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463444344434440953746F7056616C75650707636C61477261790754726967
- 676572061049734D6F7573654F7665723D747275650E54726967676572496E76
- 65727365061149734D6F7573654F7665723D66616C7365000000545046300D54
- 5377697463684F626A65637400095374796C654E616D65060B73776974636873
- 74796C6505416C69676E070643656E746572044B696E64070C466164696E6754
- 7261636B730A53697A652E57696474680500000000000000C805400B53697A65
- 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
- 44656661756C7408085461624F72646572020D12547261636B696E675468756D
- 625363616C65050000000000000080FF3F0756697369626C65080A46696C6C2E
- 436F6C6F7207097846463230323032300C46696C6C4F6E2E436F6C6F72070978
- 46463137353739430B46696C6C4F6E2E4B696E640705536F6C69640B5374726F
- 6B652E4B696E6407044E6F6E650B5468756D622E436F6C6F7207097846463430
- 343034300D5468756D624F6E2E436F6C6F7207097846463241383245320C5468
- 756D624F6E2E4B696E640705536F6C6964105468756D625374726F6B652E4B69
- 6E6407044E6F6E650F5468756D625374726F6B652E4361700705526F756E6410
- 5468756D625374726F6B652E446173680706437573746F6D105468756D625374
- 726F6B652E4A6F696E0705526F756E64165468756D625374726F6B652E437573
- 746F6D446173680A08000000000000000000000000005450463007544C61796F
- 757400095374796C654E616D65060D636F6D626F626F787374796C6505416C69
- 676E070643656E7465720A53697A652E57696474680500000000000000C80540
- 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 0E000C5442727573684F626A65637400095374796C654E616D65060A666F7265
- 67726F756E6400000B54466F6E744F626A65637400095374796C654E616D6506
- 04666F6E7409466F6E742E53697A650500000000000000D00240000007544C61
- 796F757400095374796C654E616D65060A6261636B67726F756E6405416C6967
- 6E0708436F6E74656E74730A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
- 6174666F726D44656661756C7408000A5452656374616E676C6500095374796C
- 654E616D65060A52656374616E676C653105416C69676E0706436C69656E740A
+ 616D65060C5374726F6B652E436F6C6F720A537461727456616C756507097846
+ 463135313531350953746F7056616C7565070978464632413832453207547269
+ 67676572060E4973436865636B65643D747275650E54726967676572496E7665
+ 727365060F4973436865636B65643D66616C736500000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650617636865636B626F78436F6C6F72
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463230323032300953746F7056616C7565070978464634303430
+ 34300754726967676572061049734D6F7573654F7665723D747275650E547269
+ 67676572496E7665727365061149734D6F7573654F7665723D66616C73650000
+ 000005545465787400095374796C654E616D6506047465787405416C69676E07
+ 06436C69656E740A53697A652E57696474680500000000005855DD05400B5369
+ 7A652E48656967687405000000000058559904401453697A652E506C6174666F
+ 726D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F
+ 720708636C615768697465000000545046300A5452656374616E676C65000953
+ 74796C654E616D6506147363726F6C6C62617268747261636B7374796C650541
+ 6C69676E070643656E7465720A46696C6C2E436F6C6F72070978464631353135
+ 31350748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0756697369626C65080006545468756D6200095374796C654E616D6506057468
+ 756D62064C6F636B6564090A53697A652E576964746805000000000000008003
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C74080B5374796C654C6F6F6B7570060A7468756D
+ 627374796C65000000545046300A5452656374616E676C6500095374796C654E
+ 616D6506147363726F6C6C62617276747261636B7374796C6505416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F720709784646313531353135074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369
+ 626C65080006545468756D6200095374796C654E616D6506057468756D62064C
+ 6F636B6564090A53697A652E57696474680500000000000000C804400B53697A
+ 652E48656967687405000000000000008003401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B7570060A7468756D627374796C
+ 650000005450463007544C61796F757400095374796C654E616D650615736372
+ 6F6C6C626172626F74746F6D627574746F6E05416C69676E070643656E746572
+ 0756697369626C6508085461624F72646572020A000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070643
+ 6C69656E740C436C69704368696C6472656E090A436C6970506172656E74090A
46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
- 697A652E57696474680500000000000000C805400B53697A652E486569676874
- 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 080B5374726F6B652E4B696E6407044E6F6E650007544C61796F757400095374
- 796C654E616D650611427574746F6E5374796C654F626A65637405416C69676E
- 070846697452696768740B4D617267696E732E546F70050000000000000080FF
- 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
- 6E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805
- 00000000005ED99705400A506F736974696F6E2E59050000000000000080FF3F
- 0A53697A652E5769647468050000000000889AB803400B53697A652E48656967
- 68740500000000000000B803401453697A652E506C6174666F726D4465666175
- 6C74080007544C61796F757400095374796C654E616D6506074C61796F757431
- 05416C69676E070643656E7465720C4D617267696E732E4C6566740500000000
- 00000080FF3F0A53697A652E57696474680500000000000000A002400B53697A
- 652E4865696768740500000000000000C001401453697A652E506C6174666F72
- 6D44656661756C74080005545061746800095374796C654E616D650605506174
- 683105416C69676E0706436C69656E7409446174612E506174680A3400000004
- 000000000000000000C8420000C84201000000000096430000C8420100000000
- 00484300009643030000000000C8420000C8420A46696C6C2E436F6C6F720708
- 636C6157686974650748697454657374080A53697A652E576964746805000000
- 00000000A002400B53697A652E4865696768740500000000000000C001401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E65000000000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572
- 6174696F6E05000000000000000000000C50726F70657274794E616D65060A46
- 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
- 53746F7056616C75650709784646343034303430075472696767657206304973
- 4D6F7573654F7665723D747275653B4973507265737365643D66616C73653B49
- 73466F63757365643D66616C73650E54726967676572496E7665727365063149
- 734D6F7573654F7665723D66616C73653B4973507265737365643D66616C7365
- 3B4973466F63757365643D66616C736500000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
- 696F6E32084475726174696F6E05000000000000000000000C50726F70657274
- 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
- 463430343034300953746F7056616C7565070978464631373537394307547269
- 67676572062F4973507265737365643D747275653B49734D6F7573654F766572
- 3D747275653B4973466F63757365643D66616C736500000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
- 6E696D6174696F6E33084475726174696F6E05000000000000000000000C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 6507097846463241383245320953746F7056616C756507097846463137353739
- 430754726967676572062E4973507265737365643D747275653B49734D6F7573
- 654F7665723D747275653B4973466F63757365643D747275650E547269676765
- 72496E7665727365062F4973507265737365643D66616C73653B49734D6F7573
- 654F7665723D747275653B4973466F63757365643D747275650000000007544C
- 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
- 06436C69656E74064C6F636B6564090C4D617267696E732E4C65667405000000
- 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
- 617267696E732E52696768740500000000000000D803400E4D617267696E732E
- 426F74746F6D05000000000000008000400A53697A652E576964746805000000
- 000000008E05400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
- 6F757400095374796C654E616D65060E636F6D626F656469747374796C650541
- 6C69676E070643656E7465720A53697A652E57696474680500000000000000C8
- 05400B53697A652E4865696768740500000000000000C803401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 720210000C5442727573684F626A65637400095374796C654E616D65060A666F
- 726567726F756E6400000B54466F6E744F626A65637400095374796C654E616D
- 650604666F6E7409466F6E742E53697A650500000000000000D0024000000754
- 4C61796F757400095374796C654E616D65060A6261636B67726F756E6405416C
- 69676E0708436F6E74656E74730A53697A652E57696474680500000000000000
- C805400B53697A652E4865696768740500000000000000C803401453697A652E
- 506C6174666F726D44656661756C7408000A5452656374616E676C6500095374
- 796C654E616D65060A52656374616E676C653105416C69676E0706436C69656E
- 740A46696C6C2E436F6C6F720709784646323032303230074869745465737408
- 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
- 68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F720709784646323032303230000F54436F
- 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
- 696D6174696F6E315374796C65084475726174696F6E05000000000000000000
- 0007496E7665727365090C50726F70657274794E616D65060C5374726F6B652E
- 436F6C6F720A537461727456616C756507097846463230323032300953746F70
- 56616C756507097846463430343034300754726967676572062049734D6F7573
- 654F7665723D747275653B4973466F63757365643D66616C73650E5472696767
- 6572496E7665727365062149734D6F7573654F7665723D66616C73653B497346
- 6F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C6508
- 4475726174696F6E050000000000000000000007496E7665727365090C50726F
- 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
- 756507097846463430343034300953746F7056616C7565070978464632413832
- 45320754726967676572061F49734D6F7573654F7665723D747275653B497346
- 6F63757365643D747275650E54726967676572496E7665727365062049734D6F
- 7573654F7665723D747275653B4973466F63757365643D66616C736500000754
- 4C61796F757400095374796C654E616D6506056172726F7705416C69676E0708
- 46697452696768740B4D617267696E732E546F70050000000000000080FF3F0D
- 4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E73
- 2E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000
- 0000005ED99705400A506F736974696F6E2E59050000000000000080FF3F0A53
- 697A652E5769647468050000000000889AB803400B53697A652E486569676874
- 0500000000000000B803401453697A652E506C6174666F726D44656661756C74
- 08000A5452656374616E676C6500095374796C654E616D65060A52656374616E
- 676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
- 097846463330333033300748697454657374080A53697A652E57696474680500
- 00000000889AB803400B53697A652E4865696768740500000000000000B80340
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C65
- 4E616D650614436F6C6F72416E696D6174696F6E315374796C65084475726174
- 696F6E050000000000000000000007496E7665727365090C50726F7065727479
- 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
- 3330333033300953746F7056616C756507097846463430343034300754726967
- 676572062049734D6F7573654F7665723D747275653B4973466F63757365643D
- 66616C73650E54726967676572496E7665727365062149734D6F7573654F7665
- 723D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72
- 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
- 74696F6E325374796C65084475726174696F6E05000000000000000000000C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097846463430343034300953746F7056616C7565070978464631373537
- 39430754726967676572061F4973466F63757365643D747275653B49734D6F75
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E31084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572062049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73650E54726967676572496E7665727365062149734D6F757365
+ 4F7665723D66616C73653B4973507265737365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E32084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463430343034300953746F7056616C75650709784646
+ 3137353739430754726967676572061F4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275650E54726967676572496E76657273650620
+ 4973507265737365643D66616C73653B49734D6F7573654F7665723D74727565
+ 00000007544C61796F757400095374796C654E616D6506074C61796F75743105
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ A002400B53697A652E4865696768740500000000000000C001401453697A652E
+ 506C6174666F726D44656661756C74080005545061746800095374796C654E61
+ 6D650605506174683105416C69676E0706436C69656E7409446174612E506174
+ 680A3400000004000000000000000000C8420000C84201000000000096430000
+ C842010000000000484300009643030000000000C8420000C8420A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080A53697A652E5769
+ 6474680500000000000000A002400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E65000000005450463007544C61796F7574000953
+ 74796C654E616D6506137363726F6C6C6261726C656674627574746F6E05416C
+ 69676E070643656E7465720756697369626C6508085461624F72646572020B00
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0706436C69656E740C436C69704368696C6472656E090A43
+ 6C6970506172656E74090A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463230323032300953746F7056616C75650709
+ 7846463430343034300754726967676572062049734D6F7573654F7665723D74
+ 7275653B4973507265737365643D66616C73650E54726967676572496E766572
+ 7365062149734D6F7573654F7665723D66616C73653B4973507265737365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3208447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463430343034300953746F
+ 7056616C756507097846463137353739430754726967676572061F4973507265
+ 737365643D747275653B49734D6F7573654F7665723D747275650E5472696767
+ 6572496E766572736506204973507265737365643D66616C73653B49734D6F75
73654F7665723D7472756500000007544C61796F757400095374796C654E616D
- 6506074C61796F75743105416C69676E070643656E7465720C4D617267696E73
- 2E4C656674050000000000000080FF3F0A53697A652E57696474680500000000
- 000000A002400B53697A652E4865696768740500000000000000C00140145369
- 7A652E506C6174666F726D44656661756C74080005545061746800095374796C
- 654E616D650605506174683105416C69676E0706436C69656E7409446174612E
- 506174680A3400000004000000000000000000C8420000C84201000000000096
- 430000C842010000000000484300009643030000000000C8420000C8420A4669
- 6C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A65
- 2E57696474680500000000000000A002400B53697A652E486569676874050000
- 0000000000C001401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E650000000000000C5442727573684F626A
- 65637400095374796C654E616D65060973656C656374696F6E0B42727573682E
- 436F6C6F720709783936324138324532000007544C61796F757400095374796C
- 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D6172
- 67696E732E4C65667405000000000000008000400B4D617267696E732E546F70
- 05000000000000008000400D4D617267696E732E526967687405000000000000
- 00F003400E4D617267696E732E426F74746F6D05000000000000008000400A53
- 697A652E576964746805000000000000008805400B53697A652E486569676874
- 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
- 080000005450463007544C61796F757400095374796C654E616D65060F746162
- 636F6E74726F6C7374796C6505416C69676E070643656E7465720A53697A652E
- 576964746805000000000000008E06400B53697A652E48656967687405000000
- 0000FFFFC905401453697A652E506C6174666F726D44656661756C7408075669
- 7369626C6508085461624F726465720211000A5452656374616E676C65000953
- 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
- 656E74730A46696C6C2E436F6C6F720709784646333033303330064C6F636B65
- 64090748697454657374080C50616464696E672E4C6566740500000000000000
- 8000400B50616464696E672E546F7005000000000000008000400D5061646469
- 6E672E526967687405000000000000008000400E50616464696E672E426F7474
- 6F6D05000000000000008000400A53697A652E57696474680500000000000000
- 8E06400B53697A652E486569676874050000000000FFFFC905401453697A652E
- 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
- 4646313531353135000000545046300A5452656374616E676C6500095374796C
- 654E616D65060B746162646F747374796C6505416C69676E070643656E746572
- 0A46696C6C2E436F6C6F7207097846463135313531350748697454657374080A
- 53697A652E57696474680500000000000000C804400B53697A652E4865696768
- 740500000000000000C804401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000F54
- 436F6C6F72416E696D6174696F6E00084475726174696F6E05000000000018B7
- D1F23F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846463135313531350953746F7056616C756507097846
- 463241383245320754726967676572060F497353656C65637465643D74727565
- 0E54726967676572496E76657273650610497353656C65637465643D66616C73
- 650000005450463007544C61796F757400095374796C654E616D65060C746162
- 6974656D7374796C6505416C69676E070643656E7465720A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C803401453697A652E506C6174666F726D44656661756C7408075669736962
- 6C6508085461624F726465720212000A5452656374616E676C6500095374796C
- 654E616D650603746F7005416C69676E0708436F6E74656E74730C436C697043
- 68696C6472656E0907436F726E6572730B07546F704C65667408546F70526967
- 6874000A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
- 090748697454657374080553696465730B03546F70044C656674055269676874
- 000A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000C803401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F72070978464631353135313500065447
- 6C79706800095374796C654E616D65060A676C7970687374796C650C4D617267
- 696E732E4C65667405000000000000008001400D4D617267696E732E52696768
- 7405000000000000008001C005416C69676E07044C6566740A53697A652E5769
- 64746805000000000000008003400B53697A652E486569676874050000000000
- 00008003401453697A652E506C6174666F726D44656661756C74080000055454
- 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
- 6E74064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 0500000000000000C000400B4D617267696E732E546F700500000000000000C0
- 00400D4D617267696E732E52696768740500000000000000C000400E4D617267
- 696E732E426F74746F6D0500000000000000C000400A53697A652E5769647468
- 0500000000000000B004400B53697A652E486569676874050000000000000098
- 03401453697A652E506C6174666F726D44656661756C74081654657874536574
- 74696E67732E466F6E74436F6C6F720708636C61576869746515546578745365
- 7474696E67732E576F7264577261700800000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D650612746162436F6C6F72416E696D6174696F6E
- 310D416E696D6174696F6E547970650705496E4F7574084475726174696F6E05
+ 6506074C61796F75743105416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000A002400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080005545061
+ 746800095374796C654E616D650605506174683105416C69676E0706436C6965
+ 6E7409446174612E506174680A3400000004000000000000000000C8420000C8
+ 4201000000000096430000C842010000000000484300009643030000000000C8
+ 420000C8420A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080D526F746174696F6E416E676C650500000000000000B405400A53697A
+ 652E57696474680500000000000000A002400B53697A652E4865696768740500
+ 000000000000C001401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F75
+ 7400095374796C654E616D6506147363726F6C6C626172726967687462757474
+ 6F6E05416C69676E070643656E7465720756697369626C6508085461624F7264
+ 6572020C000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
6C6F720A537461727456616C756507097846463230323032300953746F705661
- 6C756507097846463430343034300754726967676572062149734D6F7573654F
- 7665723D747275653B497353656C65637465643D66616C73650E547269676765
- 72496E7665727365062249734D6F7573654F7665723D66616C73653B49735365
- 6C65637465643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650612746162436F6C6F72416E696D6174696F6E32084475
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080D526F746174696F6E416E676C650500000000000000B405
+ C00A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
+ 4C61796F757400095374796C654E616D6506127363726F6C6C626172746F7062
+ 7574746F6E05416C69676E070643656E7465720756697369626C650808546162
+ 4F72646572020D000A5452656374616E676C6500095374796C654E616D65060A
+ 6261636B67726F756E6405416C69676E0706436C69656E740C436C6970436869
+ 6C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978
+ 46463230323032300748697454657374080A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000000000C804401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572062049734D6F75
+ 73654F7665723D747275653B4973507265737365643D66616C73650E54726967
+ 676572496E7665727365062149734D6F7573654F7665723D66616C73653B4973
+ 507265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E
+ 32084475726174696F6E05000000000000000000000C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463430
+ 343034300953746F7056616C7565070978464631373537394307547269676765
+ 72061F4973507265737365643D747275653B49734D6F7573654F7665723D7472
+ 75650E54726967676572496E766572736506204973507265737365643D66616C
+ 73653B49734D6F7573654F7665723D7472756500000007544C61796F75740009
+ 5374796C654E616D6506074C61796F75743105416C69676E070643656E746572
+ 0A53697A652E57696474680500000000000000A002400B53697A652E48656967
+ 68740500000000000000C001401453697A652E506C6174666F726D4465666175
+ 6C74080005545061746800095374796C654E616D650605506174683105416C69
+ 676E0706436C69656E7409446174612E506174680A3400000004000000000000
+ 000000C8420000C84201000000000096430000C8420100000000004843000096
+ 43030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080D526F746174696F6E416E676C6505000000000000
+ 00B406400A53697A652E57696474680500000000000000A002400B53697A652E
+ 4865696768740500000000000000C001401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
+ 3007544C61796F757400095374796C654E616D65060E7363726F6C6C62617273
+ 74796C6505416C69676E070643656E7465720756697369626C6508085461624F
+ 72646572020E000754427574746F6E00095374796C654E616D65060A6C656674
+ 627574746F6E05416C69676E07044C656674064C6F636B6564090A506F736974
+ 696F6E2E5905000000000000008003400A53697A652E57696474680500000000
+ 0000008003400B53697A652E4865696768740500000000000000900340145369
+ 7A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006
+ 137363726F6C6C6261726C656674627574746F6E00000754427574746F6E0009
+ 5374796C654E616D65060B7269676874627574746F6E05416C69676E07055269
+ 676874064C6F636B6564090A506F736974696F6E2E5805000000000000008804
+ 400A506F736974696F6E2E5905000000000000008003400A53697A652E576964
+ 746805000000000000008003400B53697A652E48656967687405000000000000
+ 009003401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B757006147363726F6C6C6261727269676874627574746F6E00000754
+ 427574746F6E00095374796C654E616D65060C626F74746F6D627574746F6E05
+ 416C69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E59
+ 05000000000000008804400A53697A652E57696474680500000000000000C804
+ 400B53697A652E48656967687405000000000000008003401453697A652E506C
+ 6174666F726D44656661756C74080B5374796C654C6F6F6B757006157363726F
+ 6C6C626172626F74746F6D627574746F6E00000654547261636B00095374796C
+ 654E616D65060668747261636B05416C69676E0706436C69656E74064C6F636B
+ 6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A65
+ 2E576964746805000000000000009003400B53697A652E486569676874050000
+ 00000000009003401453697A652E506C6174666F726D44656661756C74080B53
+ 74796C654C6F6F6B757006147363726F6C6C62617268747261636B7374796C65
+ 00000654547261636B00095374796C654E616D65060676747261636B05416C69
+ 676E0706436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A
+ 486F72697A6F6E74616C0A53697A652E57696474680500000000000000900340
+ 0B53697A652E48656967687405000000000000009003401453697A652E506C61
+ 74666F726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C
+ 6C62617276747261636B7374796C6500000754427574746F6E00095374796C65
+ 4E616D650609746F70627574746F6E05416C69676E0703546F700A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 000000008003401453697A652E506C6174666F726D44656661756C74080B5374
+ 796C654C6F6F6B757006127363726F6C6C626172746F70627574746F6E000000
+ 545046300A5452656374616E676C6500095374796C654E616D65060A7468756D
+ 627374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F7207
+ 097846463444344434440748697454657374080A53697A652E57696474680500
+ 000000000000C804400B53697A652E4865696768740500000000000000C80440
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E650756697369626C6508000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D6506147468756D62436F6C6F72416E696D617469
+ 6F6E31084475726174696F6E05000000000000000000000C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3444344434440953746F7056616C756507097846463137353739430754726967
+ 676572060E4973507265737365643D747275650E54726967676572496E766572
+ 7365060F4973507265737365643D66616C736500000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E
+ 315374796C65084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463444344434440953746F7056616C75650707636C614772617907547269
+ 67676572061049734D6F7573654F7665723D747275650E54726967676572496E
+ 7665727365061149734D6F7573654F7665723D66616C7365000000545046300D
+ 545377697463684F626A65637400095374796C654E616D65060B737769746368
+ 7374796C6505416C69676E070643656E746572044B696E64070C466164696E67
+ 547261636B730A53697A652E57696474680500000000000000C805400B53697A
+ 652E4865696768740500000000000000C803401453697A652E506C6174666F72
+ 6D44656661756C7408085461624F72646572021012547261636B696E67546875
+ 6D625363616C65050000000000000080FF3F0756697369626C65080A46696C6C
+ 2E436F6C6F7207097846463230323032300C46696C6C4F6E2E436F6C6F720709
+ 7846463137353739430B46696C6C4F6E2E4B696E640705536F6C69640B537472
+ 6F6B652E4B696E6407044E6F6E650B5468756D622E436F6C6F72070978464634
+ 30343034300D5468756D624F6E2E436F6C6F7207097846463241383245320C54
+ 68756D624F6E2E4B696E640705536F6C6964105468756D625374726F6B652E4B
+ 696E6407044E6F6E650F5468756D625374726F6B652E4361700705526F756E64
+ 105468756D625374726F6B652E446173680706437573746F6D105468756D6253
+ 74726F6B652E4A6F696E0705526F756E64165468756D625374726F6B652E4375
+ 73746F6D446173680A08000000000000000000000000005450463007544C6179
+ 6F757400095374796C654E616D65060D636F6D626F626F787374796C6505416C
+ 69676E070643656E7465720A53697A652E57696474680500000000000000C805
+ 400B53697A652E4865696768740500000000000000C803401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508085461624F72646572
+ 0211000C5442727573684F626A65637400095374796C654E616D65060A666F72
+ 6567726F756E6400000B54466F6E744F626A65637400095374796C654E616D65
+ 0604666F6E7409466F6E742E53697A650500000000000000D00240000007544C
+ 61796F757400095374796C654E616D65060A6261636B67726F756E6405416C69
+ 676E0708436F6E74656E74730A53697A652E57696474680500000000000000C8
+ 05400B53697A652E4865696768740500000000000000C803401453697A652E50
+ 6C6174666F726D44656661756C7408000A5452656374616E676C650009537479
+ 6C654E616D65060A52656374616E676C653105416C69676E0706436C69656E74
+ 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
+ 53697A652E57696474680500000000000000C805400B53697A652E4865696768
+ 740500000000000000C803401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650007544C61796F7574000953
+ 74796C654E616D650611427574746F6E5374796C654F626A65637405416C6967
+ 6E070846697452696768740B4D617267696E732E546F70050000000000000080
+ FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
+ 696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58
+ 0500000000005ED99705400A506F736974696F6E2E59050000000000000080FF
+ 3F0A53697A652E5769647468050000000000889AB803400B53697A652E486569
+ 6768740500000000000000B803401453697A652E506C6174666F726D44656661
+ 756C74080007544C61796F757400095374796C654E616D6506074C61796F7574
+ 3105416C69676E070643656E7465720C4D617267696E732E4C65667405000000
+ 0000000080FF3F0A53697A652E57696474680500000000000000A002400B5369
+ 7A652E4865696768740500000000000000C001401453697A652E506C6174666F
+ 726D44656661756C74080005545061746800095374796C654E616D6506055061
+ 74683105416C69676E0706436C69656E7409446174612E506174680A34000000
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C8420A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 0000000000A002400B53697A652E4865696768740500000000000000C0014014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000000000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E31084475
726174696F6E05000000000000000000000C50726F70657274794E616D65060A
46696C6C2E436F6C6F720A537461727456616C75650709784646323032303230
- 0953746F7056616C756507097846463241383245320754726967676572060F49
- 7353656C65637465643D747275650E54726967676572496E7665727365061049
- 7353656C65637465643D66616C736500000000545046300A5452656374616E67
- 6C6500095374796C654E616D65060D7468756D626261727374796C6505416C69
- 676E070643656E7465720A46696C6C2E436F6C6F720709784646324138324532
- 0748697454657374080A53697A652E57696474680500000000000000A003400B
- 53697A652E4865696768740500000000000000A003401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 313531350756697369626C6508000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D6506147468756D62436F6C6F72416E696D6174696F6E3108
- 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
- 060A46696C6C2E436F6C6F720A537461727456616C7565070978464632413832
- 45320953746F7056616C75650709784646313735373943075472696767657206
- 1F4973507265737365643D747275653B49734D6F7573654F7665723D74727565
- 0E54726967676572496E766572736506104973507265737365643D66616C7365
- 3B00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
- 7468756D62436F6C6F72416E696D6174696F6E32084475726174696F6E050000
- 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
- 720A537461727456616C756507097846463241383245320953746F7056616C75
- 6507097846463430394246460754726967676572062049734D6F7573654F7665
- 723D747275653B4973507265737365643D66616C73650E54726967676572496E
- 7665727365062149734D6F7573654F7665723D66616C73653B49735072657373
- 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D6506157468756D625374726F6B65416E696D6174696F6E3108447572
- 6174696F6E05000000000000000000000C50726F70657274794E616D65060C53
- 74726F6B652E436F6C6F720A537461727456616C756507097846463135313531
- 350953746F7056616C756507097846463137353739430754726967676572061F
- 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
- 54726967676572496E7665727365060F4973507265737365643D66616C736500
- 00005450463007544C61796F757400095374796C654E616D65060C6C69737462
- 6F787374796C6505416C69676E070643656E7465720A53697A652E5769647468
- 050000000000FFFFE905400B53697A652E486569676874050000000000000083
- 06401453697A652E506C6174666F726D44656661756C74080756697369626C65
- 08085461624F726465720213000C5442727573684F626A65637400095374796C
- 654E616D650618416C7465726E6174696E67526F774261636B67726F756E640B
- 42727573682E436F6C6F72070978464632433243324300000A5452656374616E
- 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
- 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230
- 064C6F636B6564090748697454657374080C50616464696E672E4C6566740500
- 0000000000008000400B50616464696E672E546F700500000000000000800040
- 0D50616464696E672E526967687405000000000000008000400E50616464696E
- 672E426F74746F6D05000000000000008000400A53697A652E57696474680500
- 00000000FFFFE905400B53697A652E4865696768740500000000000000830640
- 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
- 6C6F7207097846463135313531350007544C61796F757400095374796C654E61
- 6D650607636F6E74656E7405416C69676E0706436C69656E740C436C69704368
- 696C6472656E090A53697A652E5769647468050000000000FFFFC105400B5369
- 7A652E4865696768740500000000000000DE05401453697A652E506C6174666F
- 726D44656661756C7408000A5452656374616E676C6500095374796C654E616D
- 65060973656C656374696F6E0A46696C6C2E436F6C6F72070978464632413832
- 45320748697454657374080A53697A652E57696474680500000000000000C804
- 400B53697A652E4865696768740500000000000000C804401453697A652E506C
- 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 00000A5452656374616E676C6500095374796C654E616D650610666F63757365
- 6473656C656374696F6E0A46696C6C2E436F6C6F720709784646324138324532
- 0748697454657374080A53697A652E57696474680500000000000000C804400B
- 53697A652E4865696768740500000000000000C804401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650B53
- 74726F6B652E446173680703446F740000000A545363726F6C6C426172000953
- 74796C654E616D65060A767363726F6C6C62617205416C69676E070552696768
- 740B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
- 74696F6E0708566572746963616C0A506F736974696F6E2E58050000000000FF
- FFC505400A506F736974696F6E2E5905000000000000008000400A53697A652E
- 576964746805000000000000008003400B53697A652E48656967687405000000
- 00000000DE05401453697A652E506C6174666F726D44656661756C740800000A
- 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
- 7205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000
- 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A50
- 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
- 00000000000000E205400A53697A652E5769647468050000000000FFFFE10540
- 0B53697A652E48656967687405000000000000008003401453697A652E506C61
- 74666F726D44656661756C740800000F54536D616C6C5363726F6C6C42617200
- 095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C6967
- 6E070552696768740B536D616C6C4368616E676505000000000000000000000B
- 4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E4C65
- 667405000000000000008000400A506F736974696F6E2E580500000000000000
- C605400A506F736974696F6E2E5905000000000000008000400A53697A652E57
- 6964746805000000000000008002400B53697A652E4865696768740500000000
- 0000008002401453697A652E506C6174666F726D44656661756C740807566973
- 69626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E61
- 6D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F
- 6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
- 74696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000
- 000000008000400A506F736974696F6E2E5805000000000000008000400A506F
- 736974696F6E2E590500000000000000E205400A53697A652E57696474680500
- 0000000000009606400B53697A652E4865696768740500000000000000800240
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650800
- 00000B54476C6F774566666563740008536F66746E657373050000000000CDCC
- CCFC3F09476C6F77436F6C6F720709784646463639453244074F706163697479
- 0500000000006666E6FE3F0754726967676572060E4973466F63757365643D74
- 72756507456E61626C6564080000005450463007544C61796F75740009537479
- 6C654E616D65060D6C697374626F78666F6F74657205416C69676E070643656E
- 7465720A53697A652E576964746805000000000000009205400B53697A652E48
- 65696768740500000000000000D003401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C6508085461624F726465720214000554546578
- 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
- 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
- 000000000000A001400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E52696768740500000000000000A001400E4D617267696E
- 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
- 000000000000FC04400B53697A652E4865696768740500000000000000B00340
- 1453697A652E506C6174666F726D44656661756C740816546578745365747469
- 6E67732E466F6E74436F6C6F720708636C615768697465000000545046300754
- 4C61796F757400095374796C654E616D6506106C697374626F786974656D7374
- 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
- 00000000D605400B53697A652E4865696768740500000000000000C003401453
- 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
- 624F726465720215000654476C79706800095374796C654E616D65060A676C79
- 70687374796C650C4D617267696E732E4C65667405000000000000008000400B
- 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
- 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
- 00000000000080FF3F05416C69676E07044C6566740A53697A652E5769647468
- 05000000000000008003400B53697A652E486569676874050000000000000080
- 03401453697A652E506C6174666F726D44656661756C74080000055454657874
- 00095374796C654E616D6506047465787405416C69676E0706436C69656E7407
- 48697454657374080C4D617267696E732E4C6566740500000000000000C00040
- 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
- 52696768740500000000000000C000400E4D617267696E732E426F74746F6D05
- 0000000000000080FF3F0A53697A652E57696474680500000000000000CA0540
- 0B53697A652E4865696768740500000000000000B003401453697A652E506C61
- 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
- 6F6C6F720708636C615768697465155465787453657474696E67732E576F7264
- 5772617008165465787453657474696E67732E486F727A416C69676E07074C65
- 6164696E6700000954436865636B426F7800095374796C654E616D6506056368
- 65636B05416C69676E07084D6F73744C6566740843616E466F63757308124469
- 7361626C65466F637573456666656374090A53697A652E576964746805000000
- 00000000A003400B53697A652E4865696768740500000000000000C003401453
- 697A652E506C6174666F726D44656661756C74080756697369626C6508000000
- 5450463007544C61796F757400095374796C654E616D6506126C697374626F78
- 706C61696E68656164657205416C69676E070643656E7465720A53697A652E57
- 6964746805000000000000009205400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F726465720216000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
- 6E74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B6564
- 090748697454657374080A53697A652E57696474680500000000000000920540
- 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 3531353135000005545465787400095374796C654E616D650604746578740541
- 6C69676E0706436C69656E74064C6F636B6564090748697454657374080C4D61
- 7267696E732E4C6566740500000000000000A001400B4D617267696E732E546F
+ 0953746F7056616C756507097846463430343034300754726967676572063049
+ 734D6F7573654F7665723D747275653B4973507265737365643D66616C73653B
+ 4973466F63757365643D66616C73650E54726967676572496E76657273650631
+ 49734D6F7573654F7665723D66616C73653B4973507265737365643D66616C73
+ 653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D61
+ 74696F6E32084475726174696F6E05000000000000000000000C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463430343034300953746F7056616C75650709784646313735373943075472
+ 6967676572062F4973507265737365643D747275653B49734D6F7573654F7665
+ 723D747275653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
+ 416E696D6174696F6E33084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463241383245320953746F7056616C7565070978464631373537
+ 39430754726967676572062E4973507265737365643D747275653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D747275650E5472696767
+ 6572496E7665727365062F4973507265737365643D66616C73653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D74727565000000000754
+ 4C61796F757400095374796C654E616D650607636F6E74656E7405416C69676E
+ 0706436C69656E74064C6F636B6564090C4D617267696E732E4C656674050000
+ 00000000008000400B4D617267696E732E546F7005000000000000008000400D
+ 4D617267696E732E52696768740500000000000000D803400E4D617267696E73
+ 2E426F74746F6D05000000000000008000400A53697A652E5769647468050000
+ 00000000008E05400B53697A652E4865696768740500000000000000A8034014
+ 53697A652E506C6174666F726D44656661756C74080000005450463007544C61
+ 796F757400095374796C654E616D65060E636F6D626F656469747374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 65720212000C5442727573684F626A65637400095374796C654E616D65060A66
+ 6F726567726F756E6400000B54466F6E744F626A65637400095374796C654E61
+ 6D650604666F6E7409466F6E742E53697A650500000000000000D00240000007
+ 544C61796F757400095374796C654E616D65060A6261636B67726F756E640541
+ 6C69676E0708436F6E74656E74730A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000C803401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A52656374616E676C653105416C69676E0706436C6965
+ 6E740A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F720709784646323032303230000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
+ 6E696D6174696F6E315374796C65084475726174696F6E050000000000000000
+ 000007496E7665727365090C50726F70657274794E616D65060C5374726F6B65
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572062049734D6F75
+ 73654F7665723D747275653B4973466F63757365643D66616C73650E54726967
+ 676572496E7665727365062149734D6F7573654F7665723D66616C73653B4973
+ 466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65
+ 084475726174696F6E050000000000000000000007496E7665727365090C5072
+ 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
+ 6C756507097846463430343034300953746F7056616C75650709784646324138
+ 3245320754726967676572061F49734D6F7573654F7665723D747275653B4973
+ 466F63757365643D747275650E54726967676572496E7665727365062049734D
+ 6F7573654F7665723D747275653B4973466F63757365643D66616C7365000007
+ 544C61796F757400095374796C654E616D6506056172726F7705416C69676E07
+ 0846697452696768740B4D617267696E732E546F70050000000000000080FF3F
+ 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
+ 732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E580500
+ 000000005ED99705400A506F736974696F6E2E59050000000000000080FF3F0A
+ 53697A652E5769647468050000000000889AB803400B53697A652E4865696768
+ 740500000000000000B803401453697A652E506C6174666F726D44656661756C
+ 7408000A5452656374616E676C6500095374796C654E616D65060A5265637461
+ 6E676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 07097846463330333033300748697454657374080A53697A652E576964746805
+ 0000000000889AB803400B53697A652E4865696768740500000000000000B803
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614436F6C6F72416E696D6174696F6E315374796C650844757261
+ 74696F6E050000000000000000000007496E7665727365090C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463330333033300953746F7056616C7565070978464634303430343007547269
+ 67676572062049734D6F7573654F7665723D747275653B4973466F6375736564
+ 3D66616C73650E54726967676572496E7665727365062149734D6F7573654F76
+ 65723D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D
+ 6174696F6E325374796C65084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463430343034300953746F7056616C75650709784646313735
+ 3739430754726967676572061F4973466F63757365643D747275653B49734D6F
+ 7573654F7665723D7472756500000007544C61796F757400095374796C654E61
+ 6D6506074C61796F75743105416C69676E070643656E7465720C4D617267696E
+ 732E4C656674050000000000000080FF3F0A53697A652E576964746805000000
+ 00000000A002400B53697A652E4865696768740500000000000000C001401453
+ 697A652E506C6174666F726D44656661756C7408000554506174680009537479
+ 6C654E616D650605506174683105416C69676E0706436C69656E740944617461
+ 2E506174680A3400000004000000000000000000C8420000C842010000000000
+ 96430000C842010000000000484300009643030000000000C8420000C8420A46
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A
+ 652E57696474680500000000000000A002400B53697A652E4865696768740500
+ 000000000000C001401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E650000000000000C5442727573684F62
+ 6A65637400095374796C654E616D65060973656C656374696F6E0B4272757368
+ 2E436F6C6F720709783936324138324532000007544C61796F75740009537479
+ 6C654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D61
+ 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
7005000000000000008000400D4D617267696E732E5269676874050000000000
- 0000A001400E4D617267696E732E426F74746F6D05000000000000008000400A
- 53697A652E57696474680500000000000000FC04400B53697A652E4865696768
- 740500000000000000B003401453697A652E506C6174666F726D44656661756C
- 7408165465787453657474696E67732E466F6E74436F6C6F720708636C615768
- 6974650000005450463007544C61796F757400095374796C654E616D65060967
- 7269647374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 0000F003400E4D617267696E732E426F74746F6D05000000000000008000400A
+ 53697A652E576964746805000000000000008805400B53697A652E4865696768
+ 740500000000000000A803401453697A652E506C6174666F726D44656661756C
+ 74080000005450463007544C61796F757400095374796C654E616D65060F7461
+ 62636F6E74726F6C7374796C6505416C69676E070643656E7465720A53697A65
+ 2E576964746805000000000000008E06400B53697A652E486569676874050000
+ 000000FFFFC905401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F726465720213000A5452656374616E676C650009
+ 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
+ 74656E74730A46696C6C2E436F6C6F720709784646333033303330064C6F636B
+ 6564090748697454657374080C50616464696E672E4C65667405000000000000
+ 008000400B50616464696E672E546F7005000000000000008000400D50616464
+ 696E672E526967687405000000000000008000400E50616464696E672E426F74
+ 746F6D05000000000000008000400A53697A652E576964746805000000000000
+ 008E06400B53697A652E486569676874050000000000FFFFC905401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 784646313531353135000000545046300A5452656374616E676C650009537479
+ 6C654E616D65060B746162646F747374796C6505416C69676E070643656E7465
+ 720A46696C6C2E436F6C6F720709784646313531353135074869745465737408
+ 0A53697A652E576964746805000000000000008005400B53697A652E48656967
+ 687405000000000000008001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000F
+ 54436F6C6F72416E696D6174696F6E00084475726174696F6E05000000000018
+ B7D1F23F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463135313531350953746F7056616C7565070978
+ 46463241383245320754726967676572060F497353656C65637465643D747275
+ 650E54726967676572496E76657273650610497353656C65637465643D66616C
+ 73650000005450463007544C61796F757400095374796C654E616D65060C7461
+ 626974656D7374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F726465720215000A5452656374616E676C650009537479
+ 6C654E616D650603746F7005416C69676E0708436F6E74656E74730C436C6970
+ 4368696C6472656E0907436F726E6572730B07546F704C65667408546F705269
+ 676874000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
+ 64090748697454657374080553696465730B03546F70044C6566740552696768
+ 74000A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000654
+ 476C79706800095374796C654E616D65060A676C7970687374796C650C4D6172
+ 67696E732E4C65667405000000000000008001400D4D617267696E732E526967
+ 687405000000000000008001C005416C69676E07044C6566740A53697A652E57
+ 6964746805000000000000008003400B53697A652E4865696768740500000000
+ 0000008003401453697A652E506C6174666F726D44656661756C740800000554
+ 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
+ 656E74064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 740500000000000000C000400B4D617267696E732E546F700500000000000000
+ C000400D4D617267696E732E52696768740500000000000000C000400E4D6172
+ 67696E732E426F74746F6D0500000000000000C000400A53697A652E57696474
+ 680500000000000000B004400B53697A652E4865696768740500000000000000
+ 9803401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465155465787453
+ 657474696E67732E576F7264577261700800000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650612746162436F6C6F72416E696D6174696F
+ 6E310D416E696D6174696F6E547970650705496E4F7574084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
+ 616C756507097846463430343034300754726967676572062149734D6F757365
+ 4F7665723D747275653B497353656C65637465643D66616C73650E5472696767
+ 6572496E7665727365062249734D6F7573654F7665723D66616C73653B497353
+ 656C65637465643D66616C736500000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650612746162436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
+ 300953746F7056616C756507097846463241383245320754726967676572060F
+ 497353656C65637465643D747275650E54726967676572496E76657273650610
+ 497353656C65637465643D66616C736500000000545046300A5452656374616E
+ 676C6500095374796C654E616D65060D7468756D626261727374796C6505416C
+ 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463241383245
+ 320748697454657374080A53697A652E57696474680500000000000000A00340
+ 0B53697A652E4865696768740500000000000000A003401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 35313531350756697369626C6508000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F6E31
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646324138
+ 3245320953746F7056616C756507097846463137353739430754726967676572
+ 061F4973507265737365643D747275653B49734D6F7573654F7665723D747275
+ 650E54726967676572496E766572736506104973507265737365643D66616C73
+ 653B00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 147468756D62436F6C6F72416E696D6174696F6E32084475726174696F6E0500
+ 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463241383245320953746F7056616C
+ 756507097846463430394246460754726967676572062049734D6F7573654F76
+ 65723D747275653B4973507265737365643D66616C73650E5472696767657249
+ 6E7665727365062149734D6F7573654F7665723D66616C73653B497350726573
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D6506157468756D625374726F6B65416E696D6174696F6E31084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060C
+ 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
+ 31350953746F7056616C75650709784646313735373943075472696767657206
+ 1F4973507265737365643D747275653B49734D6F7573654F7665723D74727565
+ 0E54726967676572496E7665727365060F4973507265737365643D66616C7365
+ 0000005450463007544C61796F757400095374796C654E616D65060C6C697374
+ 626F787374796C6505416C69676E070643656E7465720A53697A652E57696474
68050000000000FFFFE905400B53697A652E4865696768740500000000000000
8306401453697A652E506C6174666F726D44656661756C74080756697369626C
6508085461624F726465720217000C5442727573684F626A6563740009537479
6C654E616D650618416C7465726E6174696E67526F774261636B67726F756E64
- 0B42727573682E436F6C6F72070978333237383738373800000C544272757368
- 4F626A65637400095374796C654E616D6506086C696E6566696C6C0B42727573
- 682E436F6C6F72070978464631353135313500000A5452656374616E676C6500
- 095374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F
- 6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F63
- 6B6564090748697454657374080C50616464696E672E4C656674050000000000
- 00008000400B50616464696E672E546F7005000000000000008000400D506164
- 64696E672E526967687405000000000000008000400E50616464696E672E426F
- 74746F6D05000000000000008000400A53697A652E5769647468050000000000
- FFFFE905400B53697A652E48656967687405000000000000008306401453697A
- 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
- 0978464631353135313500075448656164657200095374796C654E616D650606
- 6865616465720553696465730B03546F70044C65667406426F74746F6D055269
- 6768740005416C69676E0703546F700748697454657374080A506F736974696F
- 6E2E5805000000000000008000400A506F736974696F6E2E5905000000000000
- 008000400A53697A652E5769647468050000000000FFFFE105400B53697A652E
- 4865696768740500000000000000A803401453697A652E506C6174666F726D44
- 656661756C7408000007544C61796F757400095374796C654E616D650607636F
- 6E74656E7405416C69676E0706436C69656E740C436C69704368696C6472656E
- 090A53697A652E5769647468050000000000FFFFC105400B53697A652E486569
- 6768740500000000000000B405401453697A652E506C6174666F726D44656661
- 756C7408000A5452656374616E676C6500095374796C654E616D65060973656C
- 656374696F6E0A46696C6C2E436F6C6F72070978464632413832453207486974
- 54657374080A53697A652E57696474680500000000000000C804400B53697A65
- 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265
- 6374616E676C6500095374796C654E616D650605666F6375730A46696C6C2E43
- 6F6C6F7207097841463241383245320748697454657374080C4D617267696E73
- 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
- 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
- 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E
- 57696474680500000000000000C804400B53697A652E48656967687405000000
- 00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6507595261646975730500000000000000C0
- 00400000000A545363726F6C6C42617200095374796C654E616D65060A767363
- 726F6C6C62617205416C69676E070552696768740B536D616C6C4368616E6765
- 05000000000000000000000B4F7269656E746174696F6E070856657274696361
- 6C0A506F736974696F6E2E58050000000000FFFFC505400A506F736974696F6E
- 2E590500000000000000B803400A53697A652E57696474680500000000000000
- 8003400B53697A652E4865696768740500000000000000B405401453697A652E
- 506C6174666F726D44656661756C740800000A545363726F6C6C426172000953
- 74796C654E616D65060A687363726F6C6C62617205416C69676E0706426F7474
- 6F6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E74
- 6174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E5805000000
- 000000008000400A506F736974696F6E2E590500000000000000E205400A5369
- 7A652E5769647468050000000000FFFFE105400B53697A652E48656967687405
- 000000000000008003401453697A652E506C6174666F726D44656661756C7408
- 00000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F76
- 736D616C6C7363726F6C6C62617205416C69676E070552696768740B536D616C
- 6C4368616E676505000000000000000000000B4F7269656E746174696F6E0708
- 566572746963616C0C4D617267696E732E4C6566740500000000000000800040
- 0A506F736974696F6E2E580500000000000000C605400A506F736974696F6E2E
- 5905000000000000008000400A53697A652E5769647468050000000000000080
- 02400B53697A652E48656967687405000000000000008002401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C650800000F54536D616C
- 6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C736372
- 6F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E6765
- 05000000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E
- 74616C0B4D617267696E732E546F7005000000000000008000400A506F736974
- 696F6E2E5805000000000000008000400A506F736974696F6E2E590500000000
- 000000E205400A53697A652E576964746805000000000000009606400B53697A
- 652E48656967687405000000000000008002401453697A652E506C6174666F72
- 6D44656661756C74080756697369626C6508000000005450463007544C61796F
- 757400095374796C654E616D65060F6865616465726974656D7374796C650541
- 6C69676E070643656E7465720A53697A652E5769647468050000000000000092
- 05400B53697A652E4865696768740500000000000000D003401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 720218000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
- 720709784646344334433443064C6F636B6564090748697454657374080A5369
- 7A652E576964746805000000000000009205400B53697A652E48656967687405
- 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
- 0C5374726F6B652E436F6C6F720709784646313531353135000F54436F6C6F72
- 416E696D6174696F6E00095374796C654E616D650615686561646572436F6C6F
- 72416E696D6174696F6E31084475726174696F6E05000000000000000000000C
- 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
- 6C756507097846463443344334430953746F7056616C75650709784646324138
- 3245320754726967676572060E4973507265737365643D747275650E54726967
- 676572496E7665727365060F4973507265737365643D66616C736500000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650616686561646572
- 5374726F6B65416E696D6174696F6E31084475726174696F6E05000000000000
- 000000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A
- 537461727456616C756507097846463135313531350953746F7056616C756507
- 097846463241383245320754726967676572060E4973507265737365643D7472
- 75650E54726967676572496E7665727365060F4973507265737365643D66616C
- 736500000005545465787400095374796C654E616D6506047465787405416C69
- 676E0706436C69656E74064C6F636B6564090748697454657374080C4D617267
- 696E732E4C6566740500000000000000A001400B4D617267696E732E546F7005
- 000000000000008000400D4D617267696E732E52696768740500000000000000
- A001400E4D617267696E732E426F74746F6D05000000000000008000400A5369
- 7A652E57696474680500000000000000FC04400B53697A652E48656967687405
- 00000000000000B003401453697A652E506C6174666F726D44656661756C7408
- 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
- 650000005450463007544C61796F757400095374796C654E616D65061970726F
- 67726573736261726D696E696572726F727374796C6505416C69676E07064365
- 6E7465720A53697A652E576964746805000000000033338505400B53697A652E
- 4865696768740500000000009999E104401453697A652E506C6174666F726D44
- 656661756C74080756697369626C6508085461624F72646572021A000A545265
- 6374616E676C6500095374796C654E616D65060668747261636B05416C69676E
- 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646343034303430
- 064C6F636B6564090748697454657374080A53697A652E576964746805000000
- 000033338505400B53697A652E4865696768740500000000009999E104401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E65000A5452656374616E676C6500095374796C654E616D65060A68
- 696E64696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72
- 0709784646453232413241064C6F636B6564090748697454657374080A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 000000009999E104401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E650000000A5452656374616E676C6500
- 095374796C654E616D65060676747261636B05416C69676E0708436F6E74656E
- 74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B656409
- 0748697454657374080A53697A652E576964746805000000000033338505400B
- 53697A652E4865696768740500000000009999E104401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A
- 5452656374616E676C6500095374796C654E616D65060A76696E64696361746F
- 7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978464645
- 3232413241064C6F636B6564090748697454657374080A506F736974696F6E2E
- 5905000000000099998D04400A53697A652E5769647468050000000000333385
- 05400B53697A652E4865696768740500000000000000A803401453697A652E50
+ 0B42727573682E436F6C6F72070978464632433243324300000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080C50616464696E672E4C65667405
+ 000000000000008000400B50616464696E672E546F7005000000000000008000
+ 400D50616464696E672E526967687405000000000000008000400E5061646469
+ 6E672E426F74746F6D05000000000000008000400A53697A652E576964746805
+ 0000000000FFFFE905400B53697A652E48656967687405000000000000008306
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F7207097846463135313531350007544C61796F757400095374796C654E
+ 616D650607636F6E74656E7405416C69676E0706436C69656E740C436C697043
+ 68696C6472656E090A53697A652E5769647468050000000000FFFFC105400B53
+ 697A652E4865696768740500000000000000DE05401453697A652E506C617466
+ 6F726D44656661756C7408000A5452656374616E676C6500095374796C654E61
+ 6D65060973656C656374696F6E0A46696C6C2E436F6C6F720709784646324138
+ 3245320748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
- 65000000005450463007544C61796F757400095374796C654E616D6506117072
- 6F677265737363656C6C7374796C6505416C69676E070643656E7465720A5369
- 7A652E57696474680500000000000000F805400B53697A652E48656967687405
- 00000000000000FC05401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508085461624F72646572021B0007544C61796F7574000953
- 74796C654E616D65060668747261636B05416C69676E0708436F6E74656E7473
- 064C6F636B6564090C4D617267696E732E4C6566740500000000000000800040
- 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 6500000A5452656374616E676C6500095374796C654E616D650610666F637573
+ 656473656C656374696F6E0A46696C6C2E436F6C6F7207097846463241383245
+ 320748697454657374080A53697A652E57696474680500000000000000C80440
+ 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650B
+ 5374726F6B652E446173680703446F740000000A545363726F6C6C4261720009
+ 5374796C654E616D65060A767363726F6C6C62617205416C69676E0705526967
+ 68740B536D616C6C4368616E676505000000000000000000000B4F7269656E74
+ 6174696F6E0708566572746963616C0A506F736974696F6E2E58050000000000
+ FFFFC505400A506F736974696F6E2E5905000000000000008000400A53697A65
+ 2E576964746805000000000000008003400B53697A652E486569676874050000
+ 0000000000DE05401453697A652E506C6174666F726D44656661756C74080000
+ 0A545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C62
+ 617205416C69676E0706426F74746F6D0B536D616C6C4368616E676505000000
+ 000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A
+ 506F736974696F6E2E5805000000000000008000400A506F736974696F6E2E59
+ 0500000000000000E205400A53697A652E5769647468050000000000FFFFE105
+ 400B53697A652E48656967687405000000000000008003401453697A652E506C
+ 6174666F726D44656661756C740800000F54536D616C6C5363726F6C6C426172
+ 00095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69
+ 676E070552696768740B536D616C6C4368616E67650500000000000000000000
+ 0B4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E4C
+ 65667405000000000000008000400A506F736974696F6E2E5805000000000000
+ 00C605400A506F736974696F6E2E5905000000000000008000400A53697A652E
+ 576964746805000000000000008002400B53697A652E48656967687405000000
+ 000000008002401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E
+ 616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F7474
+ 6F6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E74
+ 6174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F70050000
+ 00000000008000400A506F736974696F6E2E5805000000000000008000400A50
+ 6F736974696F6E2E590500000000000000E205400A53697A652E576964746805
+ 000000000000009606400B53697A652E48656967687405000000000000008002
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 0000000B54476C6F774566666563740008536F66746E657373050000000000CD
+ CCCCFC3F09476C6F77436F6C6F720709784646463639453244074F7061636974
+ 790500000000006666E6FE3F0754726967676572060E4973466F63757365643D
+ 7472756507456E61626C6564080000005450463007544C61796F757400095374
+ 796C654E616D65060D6C697374626F78666F6F74657205416C69676E07064365
+ 6E7465720A53697A652E576964746805000000000000009205400B53697A652E
+ 4865696768740500000000000000D003401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508085461624F7264657202180005545465
+ 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
+ 00000000000000A001400B4D617267696E732E546F7005000000000000008000
+ 400D4D617267696E732E52696768740500000000000000A001400E4D61726769
+ 6E732E426F74746F6D05000000000000008000400A53697A652E576964746805
+ 00000000000000FC04400B53697A652E4865696768740500000000000000B003
+ 401453697A652E506C6174666F726D44656661756C7408165465787453657474
+ 696E67732E466F6E74436F6C6F720708636C6157686974650000005450463007
+ 544C61796F757400095374796C654E616D6506106C697374626F786974656D73
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 0000000000D605400B53697A652E4865696768740500000000000000C0034014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F726465720219000654476C79706800095374796C654E616D65060A676C
+ 7970687374796C650C4D617267696E732E4C6566740500000000000000800040
+ 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
526967687405000000000000008000400E4D617267696E732E426F74746F6D05
- 000000000000008000400A53697A652E57696474680500000000000000F00540
- 0B53697A652E4865696768740500000000000000F405401453697A652E506C61
- 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
- 4E616D65060A68696E64696361746F7205416C69676E07044C6566740A46696C
- 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
- 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
- 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
- 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
- 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
- 74696F6E2E59050000000000000080FF3F0A53697A652E576964746805000000
- 00000000C804400B53697A652E4865696768740500000000000000F005401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E65000000005450463007544C61796F757400095374796C654E616D
- 6506106D656E756261726974656D7374796C6505416C69676E070643656E7465
- 720C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E
- 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
- 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
- 80FF3F0A53697A652E576964746805000000000000009205400B53697A652E48
- 65696768740500000000000000D003401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C6508085461624F72646572021C000A54526563
- 74616E676C650005416C69676E0708436F6E74656E74730A46696C6C2E436F6C
- 6F720709784646324138324532074869745465737408074F7061636974790500
- 0000000017B7D1F13F0A53697A652E576964746805000000000000009205400B
- 53697A652E4865696768740500000000000000D003401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
- 54466C6F6174416E696D6174696F6E00084475726174696F6E05000000000018
- B7D1F23F0C50726F70657274794E616D6506074F7061636974790A5374617274
- 56616C756505000000000000000000000953746F7056616C7565050000000000
- 000080FF3F0754726967676572060F497353656C65637465643D747275650E54
- 726967676572496E76657273650610497353656C65637465643D66616C736500
- 00000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
- 6F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
- 09784646324138324532074869745465737408074F7061636974790500000000
- 0017B7D1F13F0A53697A652E576964746805000000000000009205400B53697A
- 652E4865696768740500000000000000D003401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C
- 6F6174416E696D6174696F6E00084475726174696F6E05000000000018B7D1F2
- 3F0C50726F70657274794E616D6506074F7061636974790A537461727456616C
- 756505000000000000000000000953746F7056616C7565050000000000000080
- FF3F0754726967676572061049734D6F7573654F7665723D747275650E547269
- 67676572496E7665727365061149734D6F7573654F7665723D66616C73650000
- 0007544C61796F757400095374796C654E616D650605676C79706805416C6967
- 6E07044C6566740A53697A652E57696474680500000000000000C803400B5369
- 7A652E4865696768740500000000000000D003401453697A652E506C6174666F
- 726D44656661756C74080007544C61796F757400095374796C654E616D650609
- 636865636B6D61726B05416C69676E0708436F6E74656E7473074F7061636974
- 790500000000006F1283F53F0A53697A652E57696474680500000000000000C8
- 03400B53697A652E4865696768740500000000000000D003401453697A652E50
- 6C6174666F726D44656661756C7408000554506174680005416C69676E070643
- 656E74657209446174612E506174680A58000000070000000000000056D95243
- 91AE2C43010000009276664365021643010000009F3983432B7C3C4301000000
- 9E9AA64382D2B442010000006F1CB04375A4D1420100000026DF8243263F6743
- 0300000056D9524391AE2C430A46696C6C2E436F6C6F720708636C6157686974
- 650748697454657374080A53697A652E57696474680500000000000000B00240
- 0B53697A652E4865696768740500000000000000B002401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
- 000F54466C6F6174416E696D6174696F6E00084475726174696F6E0500000000
- 00CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A537461
- 727456616C756505000000000000000000000953746F7056616C756505000000
- 0000000080FF3F0754726967676572060E4973436865636B65643D747275650E
- 54726967676572496E7665727365060F4973436865636B65643D66616C736500
- 00000654476C79706800095374796C654E616D65060A676C7970687374796C65
- 0C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E73
- 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
- 0000000000C000400E4D617267696E732E426F74746F6D050000000000000080
- FF3F05416C69676E070552696768740A53697A652E5769647468050000000000
- 00008003400B53697A652E48656967687405000000000000008003401453697A
- 652E506C6174666F726D44656661756C740800000654496D6167650009537479
- 6C654E616D6506066269746D61700E4D756C74695265734269746D61700E0100
- 0005416C69676E0708436F6E74656E74730C4D617267696E732E4C6566740500
- 0000000000008000400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
- 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
- 000000000000A803400B53697A652E4865696768740500000000000000B00340
- 1453697A652E506C6174666F726D44656661756C740800000005545465787400
- 095374796C654E616D6506047465787405416C69676E07044C656674064C6F63
- 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
- 00008002400D4D617267696E732E526967687405000000000000008002400A50
- 6F736974696F6E2E5805000000000000008404400A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000000000D003
- 401453697A652E506C6174666F726D44656661756C7408165465787453657474
- 696E67732E466F6E74436F6C6F720708636C6157686974651654657874536574
- 74696E67732E486F727A416C69676E07074C656164696E670000055454657874
- 00095374796C654E616D65060873686F727463757405416C69676E0705526967
- 6874064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 0500000000000000C002400D4D617267696E732E526967687405000000000000
- 00C001400A506F736974696F6E2E580500000000000000C000C00A53697A652E
- 57696474680500000000000000C804400B53697A652E48656967687405000000
- 00000000D003401453697A652E506C6174666F726D44656661756C7408165465
- 787453657474696E67732E466F6E74436F6C6F720708636C6157686974651654
- 65787453657474696E67732E486F727A416C69676E07074C656164696E670000
- 07544C61796F757400095374796C654E616D6506077375626D61726B05416C69
- 676E070552696768740A506F736974696F6E2E580500000000000000D404400A
- 53697A652E57696474680500000000000000A003400B53697A652E4865696768
- 740500000000000000D003401453697A652E506C6174666F726D44656661756C
- 7408000554506174680005416C69676E070643656E74657209446174612E5061
- 74680A3400000004000000000000000000000000000000010000000000000000
- 00803F010000000000803F0000003F0300000000000000000000000A46696C6C
- 2E436F6C6F720708636C615768697465064C6F636B6564090748697454657374
- 080A53697A652E57696474680500000000000000E001400B53697A652E486569
- 67687405000000000000008002401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300A54
- 52656374616E676C6500095374796C654E616D65060C6D656E75626172737479
- 6C6505416C69676E070643656E7465720C436C69704368696C6472656E090946
- 696C6C2E4B696E6407044E6F6E650748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650756697369626C6508000A5452656374616E676C
- 650005416C69676E0706436C69656E740A46696C6C2E436F6C6F720709784646
- 3230323032300748697454657374080C4D617267696E732E4C65667405000000
- 0000000080FFBF0B4D617267696E732E546F70050000000000000080FFBF0D4D
- 617267696E732E5269676874050000000000000080FFBF0A53697A652E576964
- 74680500000000000000D004400B53697A652E48656967687405000000000000
- 00CC04401453697A652E506C6174666F726D44656661756C74080C5374726F6B
- 652E436F6C6F720709784646313531353135000007544C61796F757400095374
- 796C654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D
- 617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E54
- 6F70050000000000000080FF3F0D4D617267696E732E52696768740500000000
- 00000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F
- 0A53697A652E57696474680500000000000000C004400B53697A652E48656967
- 68740500000000000000C004401453697A652E506C6174666F726D4465666175
- 6C74080000005450463007544C61796F757400095374796C654E616D65060D6D
- 656E756974656D7374796C6505416C69676E070643656E7465720C4D61726769
- 6E732E4C656674050000000000000080FF3F0B4D617267696E732E546F700500
- 00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
- FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A
- 652E576964746805000000000000009205400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F72646572021D000A5452656374616E676C6500
- 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
- 324138324532074869745465737408074F70616369747905000000000017B7D1
- F13F0A53697A652E576964746805000000000000009205400B53697A652E4865
- 696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F617441
- 6E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C5072
- 6F70657274794E616D6506074F7061636974790A537461727456616C75650500
- 0000000000000000000953746F7056616C7565050000000000000080FF3F0754
- 726967676572060F497353656C65637465643D747275650E5472696767657249
- 6E76657273650610497353656C65637465643D66616C73650000000A54526563
- 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138
- 324532074869745465737408074F70616369747905000000000017B7D1F13F0A
- 53697A652E576964746805000000000000009205400B53697A652E4865696768
- 740500000000000000D003401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D
- 6174696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F7065
- 7274794E616D6506074F7061636974790A537461727456616C75650500000000
- 0000000000000953746F7056616C7565050000000000000080FF3F0754726967
- 676572061049734D6F7573654F7665723D747275650E54726967676572496E76
- 65727365061149734D6F7573654F7665723D66616C736500000007544C61796F
- 757400095374796C654E616D650605676C79706805416C69676E07044C656674
+ 0000000000000080FF3F05416C69676E07044C6566740A53697A652E57696474
+ 6805000000000000008003400B53697A652E4865696768740500000000000000
+ 8003401453697A652E506C6174666F726D44656661756C740800000554546578
+ 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000C000
+ 400B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E52696768740500000000000000C000400E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000CA05
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C615768697465155465787453657474696E67732E576F72
+ 645772617008165465787453657474696E67732E486F727A416C69676E07074C
+ 656164696E6700000954436865636B426F7800095374796C654E616D65060563
+ 6865636B05416C69676E07084D6F73744C6566740843616E466F637573081244
+ 697361626C65466F637573456666656374090A53697A652E5769647468050000
+ 0000000000A003400B53697A652E4865696768740500000000000000C0034014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080000
+ 005450463007544C61796F757400095374796C654E616D6506126C697374626F
+ 78706C61696E68656164657205416C69676E070643656E7465720A53697A652E
+ 576964746805000000000000009205400B53697A652E48656967687405000000
+ 00000000D003401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508085461624F72646572021A000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B65
+ 64090748697454657374080A53697A652E576964746805000000000000009205
+ 400B53697A652E4865696768740500000000000000D003401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 313531353135000005545465787400095374796C654E616D6506047465787405
+ 416C69676E0706436C69656E74064C6F636B6564090748697454657374080C4D
+ 617267696E732E4C6566740500000000000000A001400B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 000000A001400E4D617267696E732E426F74746F6D0500000000000000800040
+ 0A53697A652E57696474680500000000000000FC04400B53697A652E48656967
+ 68740500000000000000B003401453697A652E506C6174666F726D4465666175
+ 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
+ 686974650000005450463007544C61796F757400095374796C654E616D650609
+ 677269647374796C6505416C69676E070643656E7465720A53697A652E576964
+ 7468050000000000FFFFE905400B53697A652E48656967687405000000000000
+ 008306401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F72646572021B000C5442727573684F626A65637400095374
+ 796C654E616D650618416C7465726E6174696E67526F774261636B67726F756E
+ 640B42727573682E436F6C6F72070978333237383738373800000C5442727573
+ 684F626A65637400095374796C654E616D6506086C696E6566696C6C0B427275
+ 73682E436F6C6F72070978464631353135313500000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F
+ 636B6564090748697454657374080C50616464696E672E4C6566740500000000
+ 0000008000400B50616464696E672E546F7005000000000000008000400D5061
+ 6464696E672E526967687405000000000000008000400E50616464696E672E42
+ 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
+ 00FFFFE905400B53697A652E4865696768740500000000000000830640145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 070978464631353135313500075448656164657200095374796C654E616D6506
+ 066865616465720553696465730B03546F70044C65667406426F74746F6D0552
+ 696768740005416C69676E0703546F700748697454657374080A506F73697469
+ 6F6E2E5805000000000000008000400A506F736974696F6E2E59050000000000
+ 00008000400A53697A652E5769647468050000000000FFFFE105400B53697A65
+ 2E4865696768740500000000000000A803401453697A652E506C6174666F726D
+ 44656661756C7408000007544C61796F757400095374796C654E616D65060763
+ 6F6E74656E7405416C69676E0706436C69656E740C436C69704368696C647265
+ 6E090A53697A652E5769647468050000000000FFFFC105400B53697A652E4865
+ 696768740500000000000000B405401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D6506097365
+ 6C656374696F6E0A46696C6C2E436F6C6F720709784646324138324532074869
+ 745465737408074F706163697479050000000000000080FD3F0A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6500000A5452656374616E676C650009537479
+ 6C654E616D650605666F6375730A46696C6C2E436F6C6F720709784146324138
+ 3245320748697454657374080C4D617267696E732E4C65667405000000000000
+ 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
+ 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F0A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6507595261646975730500000000000000C000400000000A545363726F6C
+ 6C42617200095374796C654E616D65060A767363726F6C6C62617205416C6967
+ 6E070552696768740B536D616C6C4368616E676505000000000000000000000B
+ 4F7269656E746174696F6E0708566572746963616C0A506F736974696F6E2E58
+ 050000000000FFFFC505400A506F736974696F6E2E590500000000000000B803
+ 400A53697A652E576964746805000000000000008003400B53697A652E486569
+ 6768740500000000000000B405401453697A652E506C6174666F726D44656661
+ 756C740800000A545363726F6C6C42617200095374796C654E616D65060A6873
+ 63726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E
+ 676505000000000000000000000B4F7269656E746174696F6E070A486F72697A
+ 6F6E74616C0A506F736974696F6E2E5805000000000000008000400A506F7369
+ 74696F6E2E590500000000000000E205400A53697A652E576964746805000000
+ 0000FFFFE105400B53697A652E48656967687405000000000000008003401453
+ 697A652E506C6174666F726D44656661756C740800000F54536D616C6C536372
+ 6F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C62
+ 617205416C69676E070552696768740B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E0708566572746963616C0C4D6172
+ 67696E732E4C65667405000000000000008000400A506F736974696F6E2E5805
+ 00000000000000C605400A506F736974696F6E2E590500000000000000800040
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008002401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C650800000F54536D616C6C5363726F6C6C4261720009
+ 5374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E
+ 0706426F74746F6D0B536D616C6C4368616E676505000000000000000000000B
+ 4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E
+ 546F7005000000000000008000400A506F736974696F6E2E5805000000000000
+ 008000400A506F736974696F6E2E590500000000000000E205400A53697A652E
+ 576964746805000000000000009606400B53697A652E48656967687405000000
+ 000000008002401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508000000005450463007544C61796F757400095374796C654E616D
+ 65060F6865616465726974656D7374796C6505416C69676E070643656E746572
+ 0A53697A652E576964746805000000000000009205400B53697A652E48656967
+ 68740500000000000000D003401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F72646572021C000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646344334433443
+ 064C6F636B6564090748697454657374080A53697A652E576964746805000000
+ 000000009205400B53697A652E4865696768740500000000000000D003401453
+ 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
+ 720709784646313531353135000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650615686561646572436F6C6F72416E696D6174696F6E3108
+ 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978464634433443
+ 34430953746F7056616C75650709784646324138324532075472696767657206
+ 0E4973507265737365643D747275650E54726967676572496E7665727365060F
+ 4973507265737365643D66616C736500000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D6506166865616465725374726F6B65416E696D6174
+ 696F6E31084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75650709
+ 7846463135313531350953746F7056616C756507097846463241383245320754
+ 726967676572060E4973507265737365643D747275650E54726967676572496E
+ 7665727365060F4973507265737365643D66616C736500000005545465787400
+ 095374796C654E616D6506047465787405416C69676E0706436C69656E74064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 00000000A001400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E52696768740500000000000000A001400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 00000000FC04400B53697A652E4865696768740500000000000000B003401453
+ 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
+ 732E466F6E74436F6C6F720708636C6157686974650000005450463007544C61
+ 796F757400095374796C654E616D65061970726F67726573736261726D696E69
+ 6572726F727374796C6505416C69676E070643656E7465720A53697A652E5769
+ 64746805000000000033338505400B53697A652E486569676874050000000000
+ 9999E104401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F72646572021D000A5452656374616E676C650009537479
+ 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646343034303430064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A68696E64696361746F7205416C
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464645323241324106
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000000A5452656374616E676C6500095374796C654E616D650606
+ 76747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 720709784646343034303430064C6F636B6564090748697454657374080A5369
+ 7A652E576964746805000000000033338505400B53697A652E48656967687405
+ 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C650009
+ 5374796C654E616D65060A76696E64696361746F7205416C69676E0706426F74
+ 746F6D0A46696C6C2E436F6C6F720709784646453232413241064C6F636B6564
+ 090748697454657374080A506F736974696F6E2E5905000000000099998D0440
+ 0A53697A652E576964746805000000000033338505400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65061170726F677265737363656C6C7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000F805400B53697A652E4865696768740500000000000000FC05401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F72646572021E0007544C61796F757400095374796C654E616D6506066874
+ 7261636B05416C69676E0708436F6E74656E7473064C6F636B6564090C4D6172
+ 67696E732E4C65667405000000000000008000400B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 008000400E4D617267696E732E426F74746F6D05000000000000008000400A53
+ 697A652E57696474680500000000000000F005400B53697A652E486569676874
+ 0500000000000000F405401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060A68696E646963
+ 61746F7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646
+ 324138324532064C6F636B6564090748697454657374080C4D617267696E732E
+ 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
+ 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
+ 4D617267696E732E426F74746F6D050000000000000080FF3F0A506F73697469
+ 6F6E2E58050000000000000080FF3F0A506F736974696F6E2E59050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000000000F005401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450
+ 463007544C61796F757400095374796C654E616D6506106D656E756261726974
+ 656D7374796C6505416C69676E070643656E7465720C4D617267696E732E4C65
+ 6674050000000000000080FF3F0B4D617267696E732E546F7005000000000000
+ 0080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F0A53697A652E576964
+ 746805000000000000009205400B53697A652E48656967687405000000000000
+ 00D003401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F72646572021F000A5452656374616E676C650005416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463241383245
+ 32074869745465737408074F70616369747905000000000017B7D1F13F0A5369
+ 7A652E576964746805000000000000009205400B53697A652E48656967687405
+ 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174
+ 696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F70657274
+ 794E616D6506074F7061636974790A537461727456616C756505000000000000
+ 000000000953746F7056616C7565050000000000000080FF3F07547269676765
+ 72060F497353656C65637465643D747275650E54726967676572496E76657273
+ 650610497353656C65637465643D66616C73650000000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F7207097846463241383245320748
+ 69745465737408074F70616369747905000000000017B7D1F13F0A53697A652E
+ 576964746805000000000000009205400B53697A652E48656967687405000000
+ 00000000D003401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E
+ 00084475726174696F6E05000000000018B7D1F23F0C50726F70657274794E61
+ 6D6506074F7061636974790A537461727456616C756505000000000000000000
+ 000953746F7056616C7565050000000000000080FF3F07547269676765720610
+ 49734D6F7573654F7665723D747275650E54726967676572496E766572736506
+ 1149734D6F7573654F7665723D66616C736500000007544C61796F7574000953
+ 74796C654E616D650605676C79706805416C69676E07044C6566740A53697A65
+ 2E57696474680500000000000000C803400B53697A652E486569676874050000
+ 0000000000D003401453697A652E506C6174666F726D44656661756C74080007
+ 544C61796F757400095374796C654E616D650609636865636B6D61726B05416C
+ 69676E0708436F6E74656E7473074F7061636974790500000000006F1283F53F
0A53697A652E57696474680500000000000000C803400B53697A652E48656967
68740500000000000000D003401453697A652E506C6174666F726D4465666175
- 6C74080007544C61796F757400095374796C654E616D650609636865636B6D61
- 726B05416C69676E0708436F6E74656E7473074F706163697479050000000000
- 6F1283F53F0A53697A652E57696474680500000000000000C803400B53697A65
- 2E4865696768740500000000000000D003401453697A652E506C6174666F726D
- 44656661756C7408000554506174680005416C69676E070643656E7465720944
- 6174612E506174680A58000000070000000000000056D9524391AE2C43010000
- 009276664365021643010000009F3983432B7C3C43010000009E9AA64382D2B4
- 42010000006F1CB04375A4D1420100000026DF8243263F67430300000056D952
- 4391AE2C430A46696C6C2E436F6C6F720708636C615768697465074869745465
- 7374080A53697A652E57696474680500000000000000B002400B53697A652E48
- 65696768740500000000000000B002401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F61
- 74416E696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C
- 50726F70657274794E616D6506074F7061636974790A537461727456616C7565
- 05000000000000000000000953746F7056616C7565050000000000000080FF3F
- 0754726967676572060E4973436865636B65643D747275650E54726967676572
- 496E7665727365060F4973436865636B65643D66616C73650000000654476C79
- 706800095374796C654E616D65060A676C7970687374796C650C4D617267696E
- 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
- 00000000008000400D4D617267696E732E52696768740500000000000000C000
- 400E4D617267696E732E426F74746F6D050000000000000080FF3F05416C6967
- 6E07044C6566740A53697A652E576964746805000000000000008003400B5369
- 7A652E48656967687405000000000000008003401453697A652E506C6174666F
- 726D44656661756C740800000654496D61676500095374796C654E616D650606
- 6269746D61700E4D756C74695265734269746D61700E01000005416C69676E07
- 044C6566740C4D617267696E732E4C65667405000000000000008000400B4D61
+ 6C7408000554506174680005416C69676E070643656E74657209446174612E50
+ 6174680A58000000070000000000000056D9524391AE2C430100000092766643
+ 65021643010000009F3983432B7C3C43010000009E9AA64382D2B44201000000
+ 6F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE2C43
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A53
+ 697A652E57696474680500000000000000B002400B53697A652E486569676874
+ 0500000000000000B002401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E696D
+ 6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
+ 7274794E616D6506074F7061636974790A537461727456616C75650500000000
+ 0000000000000953746F7056616C7565050000000000000080FF3F0754726967
+ 676572060E4973436865636B65643D747275650E54726967676572496E766572
+ 7365060F4973436865636B65643D66616C73650000000654476C797068000953
+ 74796C654E616D65060A676C7970687374796C650C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 8000400D4D617267696E732E52696768740500000000000000C000400E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F05416C69676E07055269
+ 6768740A53697A652E576964746805000000000000008003400B53697A652E48
+ 656967687405000000000000008003401453697A652E506C6174666F726D4465
+ 6661756C740800000654496D61676500095374796C654E616D6506066269746D
+ 61700E4D756C74695265734269746D61700E01000005416C69676E0708436F6E
+ 74656E74730C4D617267696E732E4C65667405000000000000008000400B4D61
7267696E732E546F7005000000000000008000400D4D617267696E732E526967
687405000000000000008000400E4D617267696E732E426F74746F6D05000000
- 000000008000400A506F736974696F6E2E5805000000000000008000400A506F
- 736974696F6E2E5905000000000000008000400A53697A652E57696474680500
- 000000000000A803400B53697A652E4865696768740500000000000000B00340
- 1453697A652E506C6174666F726D44656661756C740800000005545465787400
- 095374796C654E616D6506047465787405416C69676E07044C656674064C6F63
- 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
- 00008002400D4D617267696E732E526967687405000000000000008002400A50
- 6F736974696F6E2E5805000000000000008404400A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000000000D003
- 401453697A652E506C6174666F726D44656661756C7408165465787453657474
- 696E67732E466F6E74436F6C6F720708636C6157686974651654657874536574
- 74696E67732E486F727A416C69676E07074C656164696E670000055454657874
- 00095374796C654E616D65060873686F727463757405416C69676E0705526967
- 6874064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 0500000000000000C002400D4D617267696E732E526967687405000000000000
- 00C001400A506F736974696F6E2E580500000000000000C000C00A53697A652E
- 57696474680500000000000000C804400B53697A652E48656967687405000000
- 00000000D003401453697A652E506C6174666F726D44656661756C7408165465
- 787453657474696E67732E466F6E74436F6C6F720708636C6157686974651654
- 65787453657474696E67732E486F727A416C69676E07074C656164696E670000
- 07544C61796F757400095374796C654E616D6506077375626D61726B05416C69
- 676E070552696768740A506F736974696F6E2E580500000000000000D404400A
- 53697A652E57696474680500000000000000A003400B53697A652E4865696768
- 740500000000000000D003401453697A652E506C6174666F726D44656661756C
- 7408000554506174680005416C69676E070643656E74657209446174612E5061
- 74680A3400000004000000000000000000000000000000010000000000000000
- 00803F010000000000803F0000003F0300000000000000000000000A46696C6C
- 2E436F6C6F720708636C615768697465064C6F636B6564090748697454657374
- 080A53697A652E57696474680500000000000000E001400B53697A652E486569
- 67687405000000000000008002401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
- 4C61796F757400095374796C654E616D6506126D656E75736570617261746F72
- 7374796C6505416C69676E070643656E7465720C4D617267696E732E4C656674
- 050000000000000080FF3F0B4D617267696E732E546F70050000000000000080
- FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
- 696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769647468
- 0500000000000000C804400B53697A652E4865696768740500000000000000C8
- 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
- 08085461624F72646572021E0005544C696E650005416C69676E0703546F7008
- 4C696E65547970650703546F700C4D617267696E732E4C656674050000000000
- 0000C000400B4D617267696E732E546F7005000000000000008000400D4D6172
- 67696E732E52696768740500000000000000C000400A506F736974696F6E2E58
- 0500000000000000C000400A506F736974696F6E2E5905000000000000008000
- 400A53697A652E57696474680500000000000000B004400B53697A652E486569
- 676874050000000000000080FF3F1453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F72070978464631353135313500000054
- 5046300A5452656374616E676C6500095374796C654E616D65060D6D656E7576
- 6965777374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F
- 7207097846463230323032300A53697A652E57696474680500000000000000C8
- 04400B53697A652E4865696768740500000000000000C804401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 463135313531350756697369626C6508000A5452656374616E676C650005416C
- 69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230323032
- 300748697454657374080A53697A652E57696474680500000000000000C80440
- 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 3531353135000D54536861646F77456666656374000844697374616E63650500
- 000000000000C0004009446972656374696F6E0500000000000000B405400853
- 6F66746E657373050000000000000080FE3F074F706163697479050000000000
- 000080FE3F0B536861646F77436F6C6F720708636C61426C61636B0000000754
- 4C61796F757400095374796C654E616D650607636F6E74656E7405416C69676E
- 0706436C69656E740C4D617267696E732E4C656674050000000000000080FF3F
- 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
- 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
- 0000000000000080FF3F0A53697A652E57696474680500000000000000C00440
- 0B53697A652E4865696768740500000000000000C004401453697A652E506C61
- 74666F726D44656661756C74080000005450463007544C61796F757400095374
- 796C654E616D65060E696D61676563656C6C7374796C6505416C69676E070643
- 656E7465720756697369626C6508085461624F72646572021F000654496D6167
- 6500095374796C654E616D650605696D6167650E4D756C74695265734269746D
- 61700E01000005416C69676E0706436C69656E74064C6F636B65640907486974
- 54657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D61
- 7267696E732E546F70050000000000000080FF3F0D4D617267696E732E526967
- 6874050000000000000080FF3F0E4D617267696E732E426F74746F6D05000000
- 0000000080FF3F0A53697A652E57696474680500000000000000C004400B5369
- 7A652E4865696768740500000000000000C004401453697A652E506C6174666F
- 726D44656661756C74080000005450463007544C61796F757400095374796C65
- 4E616D65060E706F70757063656C6C7374796C6505416C69676E070643656E74
- 65720A53697A652E57696474680500000000000000BB06400B53697A652E4865
- 696768740500000000000000AE04401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F7264657202200007544C61796F
- 75740005416C69676E070552696768740A506F736974696F6E2E580500000000
- 000000AC06400A53697A652E57696474680500000000000000F002400B53697A
- 652E4865696768740500000000000000AE04401453697A652E506C6174666F72
- 6D44656661756C7408000554506174680005416C69676E070643656E74657209
- 446174612E506174680A400000000500000000000000000000000000803F0100
- 00000000803F0000803F010000000000003F0000000001000000000000000000
- 803F0300000000000000000000000A46696C6C2E436F6C6F720708636C615768
- 6974650748697454657374080B4D617267696E732E546F700500000000000000
- E001C00A53697A652E576964746805000000000000008002400B53697A652E48
- 656967687405000000000000008001401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000055450617468
- 0005416C69676E070643656E74657209446174612E506174680A340000000400
- 0000000000000000000000000000010000000000803F00000000010000000000
- 003F0000803F0300000000000000000000000A46696C6C2E436F6C6F72070863
- 6C6157686974650748697454657374080B4D617267696E732E546F7005000000
- 00000000C001400A53697A652E576964746805000000000000008002400B5369
- 7A652E48656967687405000000000000008001401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000005
- 545465787400095374796C654E616D6506047465787405416C69676E0706436C
- 69656E74064C6F636B6564090748697454657374080C4D617267696E732E4C65
- 66740500000000000000A001400B4D617267696E732E546F7005000000000000
- 008000400D4D617267696E732E52696768740500000000000000A001400E4D61
- 7267696E732E426F74746F6D05000000000000008000400A53697A652E576964
- 74680500000000000000A206400B53697A652E48656967687405000000000000
- 009E04401453697A652E506C6174666F726D44656661756C7408165465787453
- 657474696E67732E466F6E74436F6C6F720708636C6157686974650000005450
- 463007544C61796F757400095374796C654E616D65060D7465787463656C6C73
- 74796C6505416C69676E070643656E7465720756697369626C6508085461624F
- 7264657202210007544C61796F757400095374796C654E616D650607636F6E74
- 656E7405416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267
- 696E732E4C65667405000000000000008001400B4D617267696E732E546F7005
- 000000000000008001400D4D617267696E732E52696768740500000000000000
- 8001400E4D617267696E732E426F74746F6D05000000000000008001400A5369
- 7A652E57696474680500000000000000A804400B53697A652E48656967687405
- 00000000000000A804401453697A652E506C6174666F726D44656661756C7408
- 00000C5442727573684F626A65637400095374796C654E616D65060A666F7265
- 67726F756E6400000C5442727573684F626A65637400095374796C654E616D65
- 060973656C656374696F6E0B42727573682E436F6C6F72070978393632413832
- 453200000B54466F6E744F626A65637400095374796C654E616D650604666F6E
- 740000005450463007544C61796F757400095374796C654E616D6506096D656D
- 6F7374796C6505416C69676E070643656E7465720A53697A652E576964746805
- 0000000000CCCC8806400B53697A652E4865696768740500000000006666F405
- 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 085461624F726465720222000C5442727573684F626A65637400095374796C65
- 4E616D65060A666F726567726F756E6400000C5442727573684F626A65637400
- 095374796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F
- 72070978374634343735394400000B54466F6E744F626A65637400095374796C
- 654E616D650604666F6E7400000A5452656374616E676C6500095374796C654E
- 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A
- 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
- 697A652E5769647468050000000000CCCC8806400B53697A652E486569676874
- 0500000000006666F405401453697A652E506C6174666F726D44656661756C74
- 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
- 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
- 69656E740C4D617267696E732E4C65667405000000000000008000400B4D6172
- 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
- 7405000000000000008000400E4D617267696E732E426F74746F6D0500000000
- 0000008000400A53697A652E57696474680500000000009899E905400B53697A
- 652E4865696768740500000000006666CC05401453697A652E506C6174666F72
- 6D44656661756C740800000A545363726F6C6C42617200095374796C654E616D
- 65060A687363726F6C6C62617205416C69676E0706426F74746F6D0643757273
- 6F72070763724172726F770B536D616C6C4368616E6765050000000000000000
- 00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974
- 696F6E2E590500000000006666D405400A53697A652E57696474680500000000
- 00CCCC8806400B53697A652E4865696768740500000000000000800340145369
- 7A652E506C6174666F726D44656661756C740800000A545363726F6C6C426172
- 00095374796C654E616D65060A767363726F6C6C62617205416C69676E070552
- 6967687406437572736F72070763724172726F770B536D616C6C4368616E6765
- 05000000000000000000000B4F7269656E746174696F6E070856657274696361
- 6C0A506F736974696F6E2E580500000000009899F105400A53697A652E576964
- 746805000000000000008003400B53697A652E48656967687405000000000066
- 66D405401453697A652E506C6174666F726D44656661756C7408000007544C61
- 796F75740005416C69676E0706436C69656E740A53697A652E57696474680500
- 000000009899F105400B53697A652E4865696768740500000000006666D40540
- 1453697A652E506C6174666F726D44656661756C7408000F54536D616C6C5363
- 726F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C
- 62617205416C69676E0705526967687406437572736F72070763724172726F77
- 0B536D616C6C4368616E676505000000000000000000000B4F7269656E746174
- 696F6E0708566572746963616C0C4D617267696E732E4C656674050000000000
- 00008000400A53697A652E576964746805000000000000008002400B53697A65
- 2E48656967687405000000000000008002401453697A652E506C6174666F726D
- 44656661756C74080756697369626C650800000F54536D616C6C5363726F6C6C
- 42617200095374796C654E616D65060F68736D616C6C7363726F6C6C62617205
- 416C69676E0706426F74746F6D06437572736F72070763724172726F770B536D
- 616C6C4368616E676505000000000000000000000B4F7269656E746174696F6E
- 070A486F72697A6F6E74616C0B4D617267696E732E546F700500000000000000
- 8000400A53697A652E576964746805000000000000009606400B53697A652E48
- 656967687405000000000000008002401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C65080000000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D6506146D656D6F5374726F6B65416E696D617469
- 6F6E31084475726174696F6E050000000000000000000007496E766572736509
- 0C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172
- 7456616C756507097846463135313531350953746F7056616C75650709784646
- 3430343034300754726967676572062049734D6F7573654F7665723D74727565
- 3B4973466F63757365643D66616C73650E54726967676572496E766572736506
- 2149734D6F7573654F7665723D66616C73653B4973466F63757365643D66616C
- 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
- 146D656D6F5374726F6B65416E696D6174696F6E32084475726174696F6E0500
- 0000000000000000000C50726F70657274794E616D65060C5374726F6B652E43
- 6F6C6F720A537461727456616C756507097846463430343034300953746F7056
- 616C756507097846463241383245320754726967676572060E4973466F637573
- 65643D747275650E54726967676572496E7665727365060F4973466F63757365
- 643D66616C7365000000005450463007544C61796F757400095374796C654E61
- 6D65060E6C696E6B6C6162656C7374796C6505416C69676E070643656E746572
- 0A53697A652E5769647468050000000000CCCC8006400B53697A652E48656967
- 68740500000000009A998104401453697A652E506C6174666F726D4465666175
- 6C74080756697369626C6508085461624F726465720223000554546578740009
- 5374796C654E616D6506047465787405416C69676E0708436F6E74656E747307
- 48697454657374080A53697A652E5769647468050000000000CCCC8006400B53
- 697A652E4865696768740500000000009A998104401453697A652E506C617466
- 6F726D44656661756C74081A5465787453657474696E67732E466F6E742E5374
- 796C654578740A0D000000040400000000000000040000001654657874536574
- 74696E67732E466F6E74436F6C6F72070D636C61446F64676572626C7565000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
- 72416E696D6174696F6E315374796C65084475726174696F6E05000000000000
- 0000000007496E7665727365090C50726F70657274794E616D65061654657874
- 53657474696E67732E466F6E74436F6C6F720A537461727456616C7565070D63
- 6C61446F64676572626C75650953746F7056616C7565070E636C614465657073
- 6B79626C75650754726967676572063049734D6F7573654F7665723D74727565
- 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
- 0E54726967676572496E7665727365063149734D6F7573654F7665723D66616C
- 73653B4973507265737365643D66616C73653B4973466F63757365643D66616C
- 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
- 14436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E0500
- 0000000000000000000C50726F70657274794E616D6506165465787453657474
- 696E67732E466F6E74436F6C6F720A537461727456616C7565070E636C614465
- 6570736B79626C75650953746F7056616C756507097846463137353739430754
- 726967676572062F4973507265737365643D747275653B49734D6F7573654F76
- 65723D747275653B4973466F63757365643D66616C736500000000545046300A
- 5452656374616E676C6500095374796C654E616D65060E737461747573626172
- 7374796C6505416C69676E070643656E7465720C436C69704368696C6472656E
- 090A46696C6C2E436F6C6F720709784646323532353235074869745465737408
- 0553696465730B03546F70000A53697A652E57696474680500000000000000F0
- 04400B53697A652E4865696768740500000000000000C804401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 463135313531350756697369626C65080007544C61796F757400095374796C65
- 4E616D6506074C61796F75743105416C69676E070552696768740A506F736974
- 696F6E2E5805000000000000008C04400A53697A652E57696474680500000000
- 000000C803400B53697A652E4865696768740500000000000000C80440145369
- 7A652E506C6174666F726D44656661756C740800095453697A65477269700009
- 5374796C654E616D65060973697A65677267697005416C69676E0706426F7474
- 6F6D0A506F736974696F6E2E590500000000000000C803400A53697A652E5769
- 6474680500000000000000C803400B53697A652E486569676874050000000000
- 0000C803401453697A652E506C6174666F726D44656661756C74080000000054
- 50463007544C61796F757400095374796C654E616D65060C7370696E626F7873
- 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
- 0000006666E005400B53697A652E4865696768740500000000000000A8034014
- 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
- 61624F726465720224000A5452656374616E676C6500095374796C654E616D65
- 060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C
- 6C2E436F6C6F7207097846463230323032300A53697A652E5769647468050000
- 0000006666E005400B53697A652E4865696768740500000000000000A8034014
- 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
- 6F720709784646313531353135000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508
- 4475726174696F6E050000000000000000000007496E7665727365090C50726F
- 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
- 756507097846463135313531350953746F7056616C7565070978464634303430
- 34300754726967676572061049734D6F7573654F7665723D747275650E547269
- 67676572496E7665727365061149734D6F7573654F7665723D66616C73650000
- 000C5442727573684F626A65637400095374796C654E616D65060A666F726567
- 726F756E640B42727573682E436F6C6F72070978464645414541454100000C54
- 42727573684F626A65637400095374796C654E616D65060973656C656374696F
- 6E0B42727573682E436F6C6F720709783936324138324532000007544C61796F
- 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
- 69656E74064C6F636B6564090C4D617267696E732E4C65667405000000000000
- 008000400B4D617267696E732E546F7005000000000000008000400D4D617267
- 696E732E526967687405000000000000008000400E4D617267696E732E426F74
- 746F6D05000000000000008000400A53697A652E576964746805000000000070
- 668405400B53697A652E48656967687405000000000000008803401453697A65
- 2E506C6174666F726D44656661756C740800000754427574746F6E0009537479
- 6C654E616D65060B6D696E7573627574746F6E05416C69676E07074669744C65
- 66740843616E466F6375730806437572736F72070763724172726F770C4D6172
- 67696E732E4C65667405000000000000008000400B4D617267696E732E546F70
- 05000000000000008000400D4D617267696E732E526967687405000000000000
- 008000400E4D617267696E732E426F74746F6D05000000000000008000400A50
- 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
- 000000000000008000400A53697A652E5769647468050000000000E8FF870340
- 0B53697A652E48656967687405000000000000008803401453697A652E506C61
- 74666F726D44656661756C74080B5374796C654C6F6F6B7570060B627574746F
- 6E7374796C65000554506174680005416C69676E0706436C69656E7409446174
- 612E506174680A4000000005000000000000000000803F000000000100000000
- 00803F0000803F01000000000000000000003F010000000000803F0000000003
- 0000000000803F000000000A46696C6C2E436F6C6F720708636C615768697465
- 0748697454657374080C4D617267696E732E4C6566740500000000000000C001
- 400B4D617267696E732E546F700500000000000000C001400D4D617267696E73
- 2E52696768740500000000000000C001400E4D617267696E732E426F74746F6D
- 0500000000000000C001400A53697A652E5769647468050000000000A0FF9F01
- 400B53697A652E4865696768740500000000000000A001401453697A652E506C
- 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 0000000754427574746F6E00095374796C654E616D65060A706C757362757474
- 6F6E05416C69676E070846697452696768740843616E466F6375730806437572
- 736F72070763724172726F770C4D617267696E732E4C65667405000000000000
- 008000400B4D617267696E732E546F7005000000000000008000400D4D617267
- 696E732E526967687405000000000000008000400E4D617267696E732E426F74
- 746F6D05000000000000008000400A506F736974696F6E2E580500000000006A
- 66BA05400A506F736974696F6E2E5905000000000000008000400A53697A652E
- 5769647468050000000000F0FF8703400B53697A652E48656967687405000000
- 000000008803401453697A652E506C6174666F726D44656661756C74080B5374
- 796C654C6F6F6B7570060B627574746F6E7374796C6500055450617468000541
- 6C69676E0706436C69656E7409446174612E506174680A340000000400000000
+ 000000008000400A53697A652E57696474680500000000000000A803400B5369
+ 7A652E4865696768740500000000000000B003401453697A652E506C6174666F
+ 726D44656661756C740800000005545465787400095374796C654E616D650604
+ 7465787405416C69676E07044C656674064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C65667405000000000000008002400D4D617267696E
+ 732E526967687405000000000000008002400A506F736974696F6E2E58050000
+ 00000000008404400A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000D003401453697A652E506C617466
+ 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
+ 6F720708636C615768697465165465787453657474696E67732E486F727A416C
+ 69676E07074C656164696E67000005545465787400095374796C654E616D6506
+ 0873686F727463757405416C69676E07055269676874064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C6566740500000000000000C002400D
+ 4D617267696E732E52696768740500000000000000C001400A506F736974696F
+ 6E2E580500000000000000C000C00A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000D003401453697A65
+ 2E506C6174666F726D44656661756C7408165465787453657474696E67732E46
+ 6F6E74436F6C6F720708636C615768697465165465787453657474696E67732E
+ 486F727A416C69676E07074C656164696E67000007544C61796F757400095374
+ 796C654E616D6506077375626D61726B05416C69676E070552696768740A506F
+ 736974696F6E2E580500000000000000D404400A53697A652E57696474680500
+ 000000000000A003400B53697A652E4865696768740500000000000000D00340
+ 1453697A652E506C6174666F726D44656661756C740800055450617468000541
+ 6C69676E070643656E74657209446174612E506174680A340000000400000000
000000000000000000000001000000000000000000803F010000000000803F00
00003F0300000000000000000000000A46696C6C2E436F6C6F720708636C6157
- 686974650748697454657374080C4D617267696E732E4C656674050000000000
- 0000C001400B4D617267696E732E546F700500000000000000C001400D4D6172
- 67696E732E52696768740500000000000000C001400E4D617267696E732E426F
- 74746F6D0500000000000000C001400A53697A652E5769647468050000000000
- C0FF9F01400B53697A652E4865696768740500000000000000A001401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E65000000005450463007544C61796F757400095374796C654E616D6506
- 0D73697A65677269707374796C6505416C69676E070643656E7465720A53697A
- 652E57696474680500000000000000C803400B53697A652E4865696768740500
- 000000000000C803401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F726465720225000A5452656374616E676C6500
- 095374796C654E616D65060A52656374616E676C653105416C69676E07064365
- 6E7465720A46696C6C2E436F6C6F7207097846463630363036300A53697A652E
- 57696474680500000000000000A000400B53697A652E48656967687405000000
- 00000000A000401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C6500095374
- 796C654E616D65060A52656374616E676C653205416C69676E070643656E7465
- 720A46696C6C2E436F6C6F7207097846463630363036300C4D617267696E732E
- 4C6566740500000000000000A002400A53697A652E5769647468050000000000
- 0000A000400B53697A652E4865696768740500000000000000A000401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E6500000A5452656374616E676C6500095374796C654E616D65060A5265
- 6374616E676C653305416C69676E070643656E7465720A46696C6C2E436F6C6F
- 7207097846463630363036300C4D617267696E732E4C65667405000000000000
- 00A002400B4D617267696E732E546F700500000000000000A002400A53697A65
- 2E57696474680500000000000000A000400B53697A652E486569676874050000
- 0000000000A000401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C65000953
- 74796C654E616D65060A52656374616E676C653405416C69676E070643656E74
- 65720A46696C6C2E436F6C6F7207097846463630363036300B4D617267696E73
- 2E546F700500000000000000A002400A53697A652E5769647468050000000000
- 0000A000400B53697A652E4865696768740500000000000000A000401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E6500000A5452656374616E676C6500095374796C654E616D65060A5265
- 6374616E676C653505416C69676E070643656E7465720A46696C6C2E436F6C6F
- 7207097846463630363036300B4D617267696E732E546F700500000000000000
- A002400D4D617267696E732E52696768740500000000000000A002400A53697A
- 652E57696474680500000000000000A000400B53697A652E4865696768740500
- 000000000000A000401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C650009
- 5374796C654E616D65060A52656374616E676C653605416C69676E070643656E
- 7465720A46696C6C2E436F6C6F7207097846463630363036300C4D617267696E
- 732E4C6566740500000000000000A002400E4D617267696E732E426F74746F6D
- 0500000000000000A002400A53697A652E57696474680500000000000000A000
- 400B53697A652E4865696768740500000000000000A000401453697A652E506C
+ 68697465064C6F636B6564090748697454657374080A53697A652E5769647468
+ 0500000000000000E001400B53697A652E486569676874050000000000000080
+ 02401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6500000000545046300A5452656374616E676C65000953
+ 74796C654E616D65060C6D656E756261727374796C6505416C69676E07064365
+ 6E7465720C436C69704368696C6472656E090946696C6C2E4B696E6407044E6F
+ 6E650748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 000000545046300A5452656374616E676C6500095374796C654E616D65060C74
- 6F6F6C6261727374796C6505416C69676E070643656E7465720A46696C6C2E43
- 6F6C6F7207097846463235323532350748697454657374080553696465730B06
- 426F74746F6D000A53697A652E57696474680500000000000000C804400B5369
+ 0756697369626C6508000A5452656374616E676C650005416C69676E0706436C
+ 69656E740A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FFBF0B4D617267
+ 696E732E546F70050000000000000080FFBF0D4D617267696E732E5269676874
+ 050000000000000080FFBF0A53697A652E57696474680500000000000000D004
+ 400B53697A652E4865696768740500000000000000CC04401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 313531353135000007544C61796F757400095374796C654E616D650607636F6E
+ 74656E7405416C69676E0706436C69656E740C4D617267696E732E4C65667405
+ 0000000000000080FF3F0B4D617267696E732E546F70050000000000000080FF
+ 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0A53697A652E576964746805
+ 00000000000000C004400B53697A652E4865696768740500000000000000C004
+ 401453697A652E506C6174666F726D44656661756C7408000000545046300754
+ 4C61796F757400095374796C654E616D65060D6D656E756974656D7374796C65
+ 05416C69676E070643656E7465720C4D617267696E732E4C6566740500000000
+ 00000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D61
+ 7267696E732E5269676874050000000000000080FF3F0E4D617267696E732E42
+ 6F74746F6D050000000000000080FF3F0A53697A652E57696474680500000000
+ 008EE3F605400B53697A652E4865696768740500000000008EE3F00340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
+ 4F726465720221000A5452656374616E676C650005416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646324138324532074869745465
+ 737408074F70616369747905000000000017B7D1F13F0A53697A652E57696474
+ 680500000000008EE3F605400B53697A652E4865696768740500000000008EE3
+ F003401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00084475
+ 726174696F6E05000000000018B7D1F23F0C50726F70657274794E616D650607
+ 4F7061636974790A537461727456616C75650500000000000000000000095374
+ 6F7056616C7565050000000000000080FF3F0754726967676572060F49735365
+ 6C65637465643D747275650E54726967676572496E7665727365061049735365
+ 6C65637465643D66616C73650000000A5452656374616E676C6500095374796C
+ 654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74
+ 730A46696C6C2E436F6C6F720709784646324138324532074869745465737408
+ 074F70616369747905000000000000000000000A53697A652E57696474680500
+ 000000008EE3F605400B53697A652E4865696768740500000000008EE3F00340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00084475726174
+ 696F6E05000000000018B7D1F23F07496E7665727365090C50726F7065727479
+ 4E616D6506074F7061636974790A537461727456616C75650500000000000000
+ 0000000953746F7056616C7565050000000000000080FF3F0754726967676572
+ 061049734D6F7573654F7665723D747275650E54726967676572496E76657273
+ 65061149734D6F7573654F7665723D66616C736500000007544C61796F757400
+ 095374796C654E616D650605676C79706805416C69676E07044C6566740A5369
+ 7A652E57696474680500000000000000C803400B53697A652E48656967687405
+ 00000000008EE3F003401453697A652E506C6174666F726D44656661756C7408
+ 0007544C61796F757400095374796C654E616D650609636865636B6D61726B05
+ 416C69676E0708436F6E74656E7473074F7061636974790500000000006F1283
+ F53F0A53697A652E57696474680500000000000000C803400B53697A652E4865
+ 696768740500000000008EE3F003401453697A652E506C6174666F726D446566
+ 61756C7408000554506174680005416C69676E070643656E7465720944617461
+ 2E506174680A58000000070000000000000056D9524391AE2C43010000009276
+ 664365021643010000009F3983432B7C3C43010000009E9AA64382D2B4420100
+ 00006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE
+ 2C430A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0A53697A652E57696474680500000000000000B002400B53697A652E48656967
+ 68740500000000000000B002401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E
+ 696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C73650000000654476C79706800
+ 095374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C
+ 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
+ 00008000400D4D617267696E732E52696768740500000000000000C000400E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F05416C69676E0704
+ 4C6566740A53697A652E576964746805000000000000008003400B53697A652E
+ 48656967687405000000000000008003401453697A652E506C6174666F726D44
+ 656661756C740800000654496D61676500095374796C654E616D650606626974
+ 6D61700E4D756C74695265734269746D61700E01000005416C69676E07044C65
+ 66740C4D617267696E732E4C65667405000000000000008000400B4D61726769
+ 6E732E546F7005000000000000008000400D4D617267696E732E526967687405
+ 000000000000008000400E4D617267696E732E426F74746F6D05000000000000
+ 008000400A506F736974696F6E2E5805000000000000008000400A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 000000A803400B53697A652E4865696768740500000000008EE3D00340145369
+ 7A652E506C6174666F726D44656661756C740800000005545465787400095374
+ 796C654E616D6506047465787405416C69676E07044C656674064C6F636B6564
+ 090748697454657374080C4D617267696E732E4C656674050000000000000080
+ 02400D4D617267696E732E526967687405000000000000008002400A506F7369
+ 74696F6E2E5805000000000000008404400A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000008EE3F003401453
+ 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
+ 732E466F6E74436F6C6F720708636C615768697465165465787453657474696E
+ 67732E486F727A416C69676E07074C656164696E670000055454657874000953
+ 74796C654E616D65060873686F727463757405416C69676E0705526967687406
+ 4C6F636B6564090748697454657374080C4D617267696E732E4C656674050000
+ 0000000000C002400D4D617267696E732E52696768740500000000000000C001
+ 400A506F736974696F6E2E580500000000001CC7BD04400A53697A652E576964
+ 74680500000000000000C804400B53697A652E4865696768740500000000008E
+ E3F003401453697A652E506C6174666F726D44656661756C7408165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C6157686974651654657874
+ 53657474696E67732E486F727A416C69676E07074C656164696E67000007544C
+ 61796F757400095374796C654E616D6506077375626D61726B05416C69676E07
+ 0552696768740A506F736974696F6E2E580500000000008EE3CE05400A53697A
+ 652E57696474680500000000000000A003400B53697A652E4865696768740500
+ 000000008EE3F003401453697A652E506C6174666F726D44656661756C740800
+ 0554506174680005416C69676E070643656E74657209446174612E506174680A
+ 340000000400000000000000000000000000000001000000000000000000803F
+ 010000000000803F0000003F0300000000000000000000000A46696C6C2E436F
+ 6C6F720708636C615768697465064C6F636B6564090748697454657374080A53
+ 697A652E57696474680500000000000000C001400B53697A652E486569676874
+ 0500000000000000A002401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C6179
+ 6F757400095374796C654E616D6506126D656E75736570617261746F72737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
+ 4F7264657202220005544C696E650005416C69676E0703546F70084C696E6554
+ 7970650703546F700C4D617267696E732E4C656674050000000000000080FFBF
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 5269676874050000000000000080FFBF0A506F736974696F6E2E580500000000
+ 00000080FFBF0A506F736974696F6E2E5905000000000000008000400A53697A
+ 652E57696474680500000000000000D004400B53697A652E4865696768740500
+ 00000000000080FF3F1453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646313531353135000000545046300A54
+ 52656374616E676C6500095374796C654E616D65060D6D656E75766965777374
+ 796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463230323032300A53697A652E57696474680500000000000000C804400B5369
7A652E4865696768740500000000000000C804401453697A652E506C6174666F
726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
- 31350756697369626C650800005450463007544C61796F757400095374796C65
- 4E616D65061570726F67726573736261726572726F727374796C6505416C6967
- 6E070643656E7465720A53697A652E576964746805000000000033338505400B
- 53697A652E4865696768740500000000009999E104401453697A652E506C6174
- 666F726D44656661756C74080756697369626C6508085461624F726465720226
- 000A5452656374616E676C6500095374796C654E616D65060668747261636B05
- 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632
- 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
- 6805000000000033338505400B53697A652E4865696768740500000000009999
- E104401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
- 2E436F6C6F720709784646313531353135000A5452656374616E676C65000953
- 74796C654E616D65060A68696E64696361746F7205416C69676E07044C656674
- 0A46696C6C2E436F6C6F720709784646453232413241064C6F636B6564090748
- 697454657374080C4D617267696E732E4C656674050000000000000080FF3F0B
- 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
- 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
- 00000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A
- 506F736974696F6E2E59050000000000000080FF3F0A53697A652E5769647468
- 0500000000000000C804400B53697A652E4865696768740500000000009999D9
- 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E650000000A5452656374616E676C6500095374796C654E
- 616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F720709784646323032303230064C6F636B65640907486974546573
- 74080A53697A652E576964746805000000000033338505400B53697A652E4865
- 696768740500000000009999E104401453697A652E506C6174666F726D446566
- 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000A54
- 52656374616E676C6500095374796C654E616D65060A76696E64696361746F72
- 05416C69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846464532
- 32413241064C6F636B6564090748697454657374080C4D617267696E732E4C65
- 6674050000000000000080FF3F0B4D617267696E732E546F7005000000000000
- 0080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61
- 7267696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E
- 2E58050000000000000080FF3F0A506F736974696F6E2E590500000000009999
- 8904400A53697A652E576964746805000000000033338105400B53697A652E48
- 65696768740500000000000000A803401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
- 07544C61796F757400095374796C654E616D65060F64726F7074617267657473
- 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
- 000000ACAAD905400B53697A652E4865696768740500000000000000CF054014
- 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
- 61624F726465720227000A5452656374616E676C650005416C69676E0708436F
- 6E74656E74730946696C6C2E4B696E6407044E6F6E650748697454657374080A
- 53697A652E5769647468050000000000ACAAD905400B53697A652E4865696768
- 740500000000000000CF05401453697A652E506C6174666F726D44656661756C
- 74080C5374726F6B652E436F6C6F720708636C615768697465105374726F6B65
- 2E546869636B6E65737305000000000000008001400B5374726F6B652E446173
- 6807044461736807585261646975730500000000000000C00240075952616469
- 75730500000000000000C002400005545465787400095374796C654E616D6506
- 047465787405416C69676E0706426F74746F6D0748697454657374080C4D6172
- 67696E732E4C6566740500000000000000A002400D4D617267696E732E526967
- 68740500000000000000A002400A506F736974696F6E2E580500000000000000
- A002400A506F736974696F6E2E590500000000000000D604400A53697A652E57
- 69647468050000000000ACAAB105400B53697A652E4865696768740500000000
- 000000C804401453697A652E506C6174666F726D44656661756C740816546578
- 7453657474696E67732E466F6E74436F6C6F720708636C615768697465000000
- 1254466C6F61744B6579416E696D6174696F6E00084475726174696F6E050000
- 000000999999FE3F044B6579730E010001034B6579050000000000000080FE3F
- 0556616C75650500000000000000A003C00001034B6579050000000000000080
- FF3F0000044C6F6F70090C50726F70657274794E616D65060B50616464696E67
- 2E546F7010537461727446726F6D43757272656E74080754726967676572060F
- 4973447261674F7665723D7472756500000554506174680005416C69676E0706
- 43656E74657209446174612E506174680AC4000000100000000000000008EC83
- 43F087A4430100000008EC8343083CFB430200000035BE7143504DF943020000
- 0012835C43A8E6F54302000000F0674943F803F1430100000008EC8343FC0116
- 440100000008EC8343FC5116440100000000408443FC5116440100000010689A
- 43FC412B4401000000081CD043F803F14302000000915DC64321E0F543020000
- 00919DBB439643F94302000000087CB043F833FB4301000000087CB043F087A4
- 430100000008EC8343F087A4430300000000000000000000000A46696C6C2E43
- 6F6C6F720708636C6157686974650748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000001
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650000005450463007544C61796F75740009537479
- 6C654E616D65061464726F707461726765746669656C647374796C6505416C69
- 676E070643656E7465720A53697A652E576964746805000000000000A08A0740
- 0B53697A652E4865696768740500000000000000B204401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 28000A5452656374616E676C6500095374796C654E616D65060A52656374616E
- 676C653105416C69676E0706436C69656E740946696C6C2E4B696E6407044E6F
- 6E650748697454657374080A53697A652E576964746805000000000000A08A07
- 400B53697A652E4865696768740500000000000000B204401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 3241383245320005545465787400095374796C654E616D650604746578740541
- 6C69676E0706436C69656E740748697454657374080A53697A652E5769647468
- 05000000000000809A05400B53697A652E4865696768740500000000000000B2
- 04401453697A652E506C6174666F726D44656661756C74081654657874536574
- 74696E67732E466F6E74436F6C6F720708636C615768697465000007544C6179
- 6F757400095374796C654E616D6506074C61796F75743105416C69676E07044C
- 6566740A53697A652E57696474680500000000000000C805400B53697A652E48
- 65696768740500000000000000B204401453697A652E506C6174666F726D4465
- 6661756C74080005545061746800095374796C654E616D650605506174683105
- 416C69676E070643656E74657209446174612E506174680A2401000018000000
- 0000000073B8AC43C14A7843010000006D2717435849DD430200000086CB0A43
- 1078E343020000009683ED421078E34302000000DACED4425849DD4302000000
- 9A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEAC643
- 01000000B4288B4385EB61430100000068D1D4426811584202000000281CBC42
- CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D144102000000
- A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D1441
- 0100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143
- F1D25943020000009F5AB14343EB614302000000A05AB1439C046A4302000000
- FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A7843
- 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A53
- 697A652E57696474680500000000000000F002400B53697A652E486569676874
- 0500000000000000F002401453697A652E506C6174666F726D44656661756C74
- 080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669
- 74000005545061746800095374796C654E616D650605506174683205416C6967
- 6E070643656E74657209446174612E506174680A240100001800000000000000
- 73B8AC43C14A7843010000006D2717435849DD430200000086CB0A431078E343
- 020000009683ED421078E34302000000DACED4425849DD43020000009A19BC42
- 081CD743020000009A19BC424C17CD4302000000DACED4421DEAC64301000000
- B4288B4385EB61430100000068D1D4426811584202000000281CBC42CAA12642
- 02000000281CBC42E6FBAC410200000068D1D442D04D144102000000A886ED42
- 9CC245C002000000CCCC0A439CC245C002000000B4281743D04D144101000000
- 16B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D25943
- 020000009F5AB14343EB614302000000A05AB1439C046A4302000000FACEAF43
- 711D72430200000073B8AC43C14A78430300000073B8AC43C14A78430A46696C
- 6C2E436F6C6F720708636C6157686974650748697454657374080C4D61726769
- 6E732E4C6566740500000000000000A004400A53697A652E5769647468050000
- 0000000000F002400B53697A652E4865696768740500000000000000F0024014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E6508577261704D6F646507034669740000055450617468000953
- 74796C654E616D650605506174683305416C69676E070643656E746572094461
- 74612E506174680A24010000180000000000000073B8AC43C14A784301000000
- 6D2717435849DD430200000086CB0A431078E343020000009683ED421078E343
- 02000000DACED4425849DD43020000009A19BC42081CD743020000009A19BC42
- 4C17CD4302000000DACED4421DEAC64301000000B4288B4385EB614301000000
- 68D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6FBAC41
- 0200000068D1D442D04D144102000000A886ED429CC245C002000000CCCC0A43
- 9CC245C002000000B4281743D04D14410100000016B9AC43918D4B4302000000
- BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343EB6143
- 02000000A05AB1439C046A4302000000FACEAF43711D72430200000073B8AC43
- C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708636C61
- 57686974650748697454657374080D4D617267696E732E526967687405000000
- 00000000A004400A53697A652E57696474680500000000000000F002400B5369
- 7A652E4865696768740500000000000000F002401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
- 704D6F6465070346697400000007544C61796F757400095374796C654E616D65
- 06074C61796F75743205416C69676E070552696768740A506F736974696F6E2E
- 580500000000000040B106400A53697A652E57696474680500000000000000C8
- 05400B53697A652E4865696768740500000000000000B204401453697A652E50
- 6C6174666F726D44656661756C74080005545061746800095374796C654E616D
- 650605506174683105416C69676E070643656E74657209446174612E50617468
- 0A24010000180000000000000073B8AC43C14A7843010000006D2717435849DD
- 430200000086CB0A431078E343020000009683ED421078E34302000000DACED4
- 425849DD43020000009A19BC42081CD743020000009A19BC424C17CD43020000
- 00DACED4421DEAC64301000000B4288B4385EB61430100000068D1D442681158
- 4202000000281CBC42CAA1264202000000281CBC42E6FBAC410200000068D1D4
- 42D04D144102000000A886ED429CC245C002000000CCCC0A439CC245C0020000
- 00B4281743D04D14410100000016B9AC43918D4B4302000000BECFAF43A5BB51
- 43020000009F5AB143F1D25943020000009F5AB14343EB614302000000A05AB1
- 439C046A4302000000FACEAF43711D72430200000073B8AC43C14A7843030000
- 0073B8AC43C14A78430A46696C6C2E436F6C6F720708636C6157686974650748
- 697454657374080D526F746174696F6E416E676C650500000000000000B40640
- 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
- 68740500000000000000F002401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64650703
- 466974000005545061746800095374796C654E616D650605506174683205416C
- 69676E070643656E74657209446174612E506174680A24010000180000000000
- 000073B8AC43C14A7843010000006D2717435849DD430200000086CB0A431078
- E343020000009683ED421078E34302000000DACED4425849DD43020000009A19
- BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEAC6430100
- 0000B4288B4385EB61430100000068D1D4426811584202000000281CBC42CAA1
- 264202000000281CBC42E6FBAC410200000068D1D442D04D144102000000A886
- ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D14410100
- 000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D2
- 5943020000009F5AB14343EB614302000000A05AB1439C046A4302000000FACE
- AF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A78430A46
- 696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D6172
- 67696E732E4C6566740500000000000000A004400D526F746174696F6E416E67
- 6C650500000000000000B406400A53697A652E57696474680500000000000000
- F002400B53697A652E4865696768740500000000000000F002401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E6508577261704D6F64650703466974000005545061746800095374796C654E
- 616D650605506174683305416C69676E070643656E74657209446174612E5061
- 74680A24010000180000000000000073B8AC43C14A7843010000006D27174358
- 49DD430200000086CB0A431078E343020000009683ED421078E34302000000DA
- CED4425849DD43020000009A19BC42081CD743020000009A19BC424C17CD4302
- 000000DACED4421DEAC64301000000B4288B4385EB61430100000068D1D44268
- 11584202000000281CBC42CAA1264202000000281CBC42E6FBAC410200000068
- D1D442D04D144102000000A886ED429CC245C002000000CCCC0A439CC245C002
- 000000B4281743D04D14410100000016B9AC43918D4B4302000000BECFAF43A5
- BB5143020000009F5AB143F1D25943020000009F5AB14343EB614302000000A0
- 5AB1439C046A4302000000FACEAF43711D72430200000073B8AC43C14A784303
- 00000073B8AC43C14A78430A46696C6C2E436F6C6F720708636C615768697465
- 0748697454657374080D4D617267696E732E52696768740500000000000000A0
- 04400D526F746174696F6E416E676C650500000000000000B406400A53697A65
- 2E57696474680500000000000000F002400B53697A652E486569676874050000
- 0000000000F002401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669740000
- 0000005450463007544C61796F757400095374796C654E616D65060C706F706F
- 7665727374796C6505416C69676E070643656E7465720756697369626C650808
- 5461624F726465720229000A5452656374616E676C6500095374796C654E616D
- 650602626705416C69676E0706436C69656E740A46696C6C2E436F6C6F720709
- 7846463230323032300748697454657374080A53697A652E5769647468050000
- 0000000000C804400B53697A652E4865696768740500000000000000C8044014
- 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
- 6F7207097846463135313531350007544C61796F757400095374796C654E616D
- 650607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E73
- 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
- 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
- 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E
- 57696474680500000000000000C004400B53697A652E48656967687405000000
- 00000000C004401453697A652E506C6174666F726D44656661756C740800000D
- 54536861646F77456666656374000844697374616E63650500000000000000C0
- 004009446972656374696F6E0500000000000000B4054008536F66746E657373
- 050000000000000080FE3F074F706163697479050000000000000080FE3F0B53
- 6861646F77436F6C6F720708636C61426C61636B000000005450463007544C61
- 796F757400095374796C654E616D65060D706F707570626F787374796C650541
- 6C69676E070643656E7465720A53697A652E57696474680500000000000080C4
- 06400B53697A652E4865696768740500000000000000D404401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 72022A000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
- 7207097846463230323032300748697454657374080A53697A652E5769647468
- 0500000000000080C406400B53697A652E4865696768740500000000000000D4
- 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E0009537479
- 6C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508447572
- 6174696F6E05000000000000000000000C50726F70657274794E616D65060A46
- 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
- 53746F7056616C75650709784646343034303430075472696767657206204973
- 4D6F7573654F7665723D747275653B4973507265737365643D66616C73650E54
- 726967676572496E7665727365062149734D6F7573654F7665723D66616C7365
- 3B4973507265737365643D66616C736500000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E325374
- 796C65084475726174696F6E05000000000000000000000C50726F7065727479
- 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
- 3430343034300953746F7056616C756507097846463241383245320754726967
- 676572062049734D6F7573654F7665723D747275653B4973507265737365643D
- 747275653B0E54726967676572496E7665727365062049734D6F7573654F7665
- 723D747275653B4973507265737365643D66616C736500000007544C61796F75
- 740005416C69676E070552696768740A506F736974696F6E2E58050000000000
- 0080B506400A53697A652E57696474680500000000000000F002400B53697A65
- 2E4865696768740500000000000000D404401453697A652E506C6174666F726D
- 44656661756C7408000554506174680005416C69676E070643656E7465720944
- 6174612E506174680A400000000500000000000000000000000000803F010000
- 000000803F0000803F010000000000003F000000000100000000000000000080
+ 31350756697369626C6508000A5452656374616E676C650005416C69676E0706
+ 436C69656E740A46696C6C2E436F6C6F72070978464632303230323007486974
+ 54657374080A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 000D54536861646F77456666656374000844697374616E636505000000000000
+ 0080014009446972656374696F6E0500000000000000B4044008536F66746E65
+ 7373050000000000000080FE3F074F706163697479050000000000000080FE3F
+ 0B536861646F77436F6C6F720708636C61426C61636B00000007544C61796F75
+ 7400095374796C654E616D650607636F6E74656E7405416C69676E0706436C69
+ 656E740C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000C004400B53697A65
+ 2E4865696768740500000000000000C004401453697A652E506C6174666F726D
+ 44656661756C74080000005450463007544C61796F757400095374796C654E61
+ 6D65060E696D61676563656C6C7374796C6505416C69676E070643656E746572
+ 0756697369626C6508085461624F726465720224000654496D61676500095374
+ 796C654E616D650605696D6167650E4D756C74695265734269746D61700E0100
+ 0005416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 000000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080
+ FF3F0A53697A652E57696474680500000000000000C004400B53697A652E4865
+ 696768740500000000000000C004401453697A652E506C6174666F726D446566
+ 61756C74080000005450463007544C61796F757400095374796C654E616D6506
+ 0E706F70757063656C6C7374796C6505416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000BB06400B53697A652E48656967687405
+ 00000000000000AE04401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508085461624F7264657202250007544C61796F7574000541
+ 6C69676E070552696768740A506F736974696F6E2E580500000000000000AC06
+ 400A53697A652E57696474680500000000000000F002400B53697A652E486569
+ 6768740500000000000000AE04401453697A652E506C6174666F726D44656661
+ 756C7408000554506174680005416C69676E070643656E74657209446174612E
+ 506174680A400000000500000000000000000000000000803F01000000000080
+ 3F0000803F010000000000003F0000000001000000000000000000803F030000
+ 0000000000000000000A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080B4D617267696E732E546F700500000000000000E001C00A53
+ 697A652E576964746805000000000000008002400B53697A652E486569676874
+ 05000000000000008001401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6500000554506174680005416C69
+ 676E070643656E74657209446174612E506174680A3400000004000000000000
+ 000000000000000000010000000000803F00000000010000000000003F000080
3F0300000000000000000000000A46696C6C2E436F6C6F720708636C61576869
- 74650748697454657374080B4D617267696E732E546F700500000000000000E0
- 01C00A53697A652E576964746805000000000000008002400B53697A652E4865
+ 74650748697454657374080B4D617267696E732E546F700500000000000000C0
+ 01400A53697A652E576964746805000000000000008002400B53697A652E4865
6967687405000000000000008001401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65000005545061746800
- 05416C69676E070643656E74657209446174612E506174680A34000000040000
- 00000000000000000000000000010000000000803F0000000001000000000000
- 3F0000803F0300000000000000000000000A46696C6C2E436F6C6F720708636C
- 6157686974650748697454657374080B4D617267696E732E546F700500000000
- 000000C001400A53697A652E576964746805000000000000008002400B53697A
- 652E48656967687405000000000000008001401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000554
- 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
- 656E740748697454657374080C4D617267696E732E4C65667405000000000000
- 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
- 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
- 746F6D050000000000000080FF3F0A53697A652E576964746805000000000000
- 80B306400B53697A652E4865696768740500000000000000CC04401453697A65
- 2E506C6174666F726D44656661756C7408165465787453657474696E67732E46
- 6F6E74436F6C6F720708636C615768697465000000545046300A545265637461
- 6E676C6500095374796C654E616D6506147374617475736261726E6F67726970
- 7374796C6505416C69676E070643656E7465720C436C69704368696C6472656E
- 090A46696C6C2E436F6C6F7207097846463235323532350553696465730B0354
- 6F70000A53697A652E57696474680500000000000000F004400B53697A652E48
- 65696768740500000000000000C804401453697A652E506C6174666F726D4465
- 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350756
- 697369626C650800005450463007544C61796F757400095374796C654E616D65
- 0613736D616C6C7363726F6C6C6261727374796C6505416C69676E070643656E
- 7465720756697369626C6508085461624F72646572022B000654547261636B00
- 095374796C654E616D65060668747261636B05416C69676E0706436C69656E74
- 064C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C
- 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
- 68740500000000000000C804401453697A652E506C6174666F726D4465666175
- 6C74080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B
- 7374796C6500000654547261636B00095374796C654E616D6506067674726163
- 6B05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E746174
- 696F6E070A486F72697A6F6E74616C0A53697A652E5769647468050000000000
- 0000C804400B53697A652E4865696768740500000000000000C804401453697A
- 652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700614
- 7363726F6C6C62617276747261636B7374796C650000005450463007544C6179
- 6F757400095374796C654E616D65060D73706C69747465727374796C6505416C
- 69676E070643656E7465720A53697A652E57696474680500000000000000A904
- 400B53697A652E4865696768740500000000000080C105401453697A652E506C
- 6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 022C000A5452656374616E676C6500095374796C654E616D65060A5265637461
- 6E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F720709
- 7846463330333033300748697454657374080553696465730B044C6566740552
- 69676874000A53697A652E57696474680500000000000000A904400B53697A65
- 2E4865696768740500000000000080C105401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 000007544C61796F757400095374796C654E616D6506064C61796F757405416C
- 69676E0706436C69656E740A53697A652E57696474680500000000000000A904
- 400B53697A652E4865696768740500000000000080C105401453697A652E506C
- 6174666F726D44656661756C74080007544C61796F757400095374796C654E61
- 6D6506046772697005416C69676E070A5665727443656E746572064C6F636B65
- 64090A506F736974696F6E2E5905000000000000008004400A53697A652E5769
- 6474680500000000000000A904400B53697A652E486569676874050000000000
- 00008004401453697A652E506C6174666F726D44656661756C74080007544369
- 72636C6500095374796C654E616D650607436972636C653305416C69676E0706
- 43656E7465720A46696C6C2E436F6C6F72070978464634303430343007486974
- 54657374080E4D617267696E732E426F74746F6D0500000000000000A003400A
- 53697A652E57696474680500000000000000E001400B53697A652E4865696768
- 740500000000000000E001401453697A652E506C6174666F726D44656661756C
- 74080C5374726F6B652E436F6C6F720709784646313531353135000007544369
- 72636C6500095374796C654E616D650607436972636C653205416C69676E0706
- 43656E7465720A46696C6C2E436F6C6F72070978464634303430343007486974
- 54657374080B4D617267696E732E546F700500000000000000A003400A53697A
- 652E57696474680500000000000000E001400B53697A652E4865696768740500
- 000000000000E001401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F72070978464631353135313500000754436972636C
- 6500095374796C654E616D650607436972636C653105416C69676E070643656E
- 7465720A46696C6C2E436F6C6F72070978464634303430343007486974546573
- 74080A53697A652E57696474680500000000000000E001400B53697A652E4865
- 696768740500000000000000E001401453697A652E506C6174666F726D446566
- 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000000
- 00005450463007544C61796F757400095374796C654E616D650610636C6F7365
- 627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 000000C803401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F72646572022D000A5452656374616E676C6500095374
- 796C654E616D65060B636C6F7365627574746F6E05416C69676E0706436C6965
- 6E740A46696C6C2E436F6C6F7207097846463230323032300748697454657374
- 080A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000C803401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469
- 6F6E315374796C65084475726174696F6E05000000000000000000000C50726F
- 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
- 07097846463230323032300953746F7056616C75650709784646464636313537
- 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
- 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
- 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
- 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
- 416E696D6174696F6E325374796C65084475726174696F6E0500000000000000
- 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846464646363135370953746F7056616C756507097846
- 464532344634350754726967676572061F49734D6F7573654F7665723D747275
- 653B4973507265737365643D747275650E54726967676572496E766572736506
- 2049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
- 6500000005545061746800095374796C654E616D650605506174683105416C69
- 676E070643656E74657209446174612E506174680AC400000010000000000000
- 000000A0C00000704101000000000070410000A0C001000000000048420000F0
- 41010000000000AA420000A0C0010000000000D242000070410100000000008C
- 4200004842010000000000D2420000B442010000000000AA420000DC42020000
- 003BDF34429E6F8C4202000000FE547D427FAAB0420200000000004842000096
- 4201000000000070410000DC42010000000000A0C00000B442010000000000F0
- 4100005C42010000000000A0C000007041030000000000A0C0000070410A4669
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080C4D617267696E732E4C656674050000
+ 0000000000A001400B4D617267696E732E546F7005000000000000008000400D
+ 4D617267696E732E52696768740500000000000000A001400E4D617267696E73
+ 2E426F74746F6D05000000000000008000400A53697A652E5769647468050000
+ 0000000000A206400B53697A652E48656967687405000000000000009E044014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C6157686974650000005450463007544C
+ 61796F757400095374796C654E616D65060D7465787463656C6C7374796C6505
+ 416C69676E070643656E7465720756697369626C6508085461624F7264657202
+ 260007544C61796F757400095374796C654E616D650607636F6E74656E740541
+ 6C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E732E4C
+ 65667405000000000000008001400B4D617267696E732E546F70050000000000
+ 00008001400D4D617267696E732E526967687405000000000000008001400E4D
+ 617267696E732E426F74746F6D05000000000000008001400A53697A652E5769
+ 6474680500000000000000A804400B53697A652E486569676874050000000000
+ 0000A804401453697A652E506C6174666F726D44656661756C740800000C5442
+ 727573684F626A65637400095374796C654E616D65060A666F726567726F756E
+ 6400000C5442727573684F626A65637400095374796C654E616D65060973656C
+ 656374696F6E0B42727573682E436F6C6F72070978393632413832453200000B
+ 54466F6E744F626A65637400095374796C654E616D650604666F6E7400000054
+ 50463007544C61796F757400095374796C654E616D6506096D656D6F7374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ CCCC8806400B53697A652E4865696768740500000000006666F405401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
+ 726465720227000C5442727573684F626A65637400095374796C654E616D6506
+ 0A666F726567726F756E6400000C5442727573684F626A65637400095374796C
+ 654E616D65060973656C656374696F6E0B42727573682E436F6C6F7207097837
+ 4634343735394400000B54466F6E744F626A65637400095374796C654E616D65
+ 0604666F6E7400000A5452656374616E676C6500095374796C654E616D65060A
+ 6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 69647468050000000000CCCC8806400B53697A652E4865696768740500000000
+ 006666F405401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F7207097846463135313531350007544C61796F7574000953
+ 74796C654E616D650607636F6E74656E7405416C69676E0706436C69656E740C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A53697A652E57696474680500000000009899E905400B53697A652E486569
+ 6768740500000000006666CC05401453697A652E506C6174666F726D44656661
+ 756C740800000A545363726F6C6C42617200095374796C654E616D65060A6873
+ 63726F6C6C62617205416C69676E0706426F74746F6D06437572736F72070763
+ 724172726F770B536D616C6C4368616E676505000000000000000000000B4F72
+ 69656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E59
+ 0500000000006666D405400A53697A652E5769647468050000000000CCCC8806
+ 400B53697A652E48656967687405000000000000008003401453697A652E506C
+ 6174666F726D44656661756C740800000A545363726F6C6C4261720009537479
+ 6C654E616D65060A767363726F6C6C62617205416C69676E0705526967687406
+ 437572736F72070763724172726F770B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E0708566572746963616C0A506F73
+ 6974696F6E2E580500000000009899F105400A53697A652E5769647468050000
+ 00000000008003400B53697A652E4865696768740500000000006666D4054014
+ 53697A652E506C6174666F726D44656661756C7408000007544C61796F757400
+ 05416C69676E0706436C69656E740A53697A652E576964746805000000000098
+ 99F105400B53697A652E4865696768740500000000006666D405401453697A65
+ 2E506C6174666F726D44656661756C7408000F54536D616C6C5363726F6C6C42
+ 617200095374796C654E616D65060F76736D616C6C7363726F6C6C6261720541
+ 6C69676E0705526967687406437572736F72070763724172726F770B536D616C
+ 6C4368616E676505000000000000000000000B4F7269656E746174696F6E0708
+ 566572746963616C0C4D617267696E732E4C6566740500000000000000800040
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008002401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C650800000F54536D616C6C5363726F6C6C4261720009
+ 5374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E
+ 0706426F74746F6D06437572736F72070763724172726F770B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A53
+ 697A652E576964746805000000000000009606400B53697A652E486569676874
+ 05000000000000008002401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C65080000000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D6506146D656D6F5374726F6B65416E696D6174696F6E310844
+ 75726174696F6E050000000000000000000007496E7665727365090C50726F70
+ 657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75
+ 6507097846463135313531350953746F7056616C756507097846463430343034
+ 300754726967676572062049734D6F7573654F7665723D747275653B4973466F
+ 63757365643D66616C73650E54726967676572496E7665727365062149734D6F
+ 7573654F7665723D66616C73653B4973466F63757365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D6506146D656D6F
+ 5374726F6B65416E696D6174696F6E32084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A
+ 537461727456616C756507097846463430343034300953746F7056616C756507
+ 097846463241383245320754726967676572060E4973466F63757365643D7472
+ 75650E54726967676572496E7665727365060F4973466F63757365643D66616C
+ 7365000000005450463007544C61796F757400095374796C654E616D65060E6C
+ 696E6B6C6162656C7374796C6505416C69676E070643656E7465720A53697A65
+ 2E5769647468050000000000CCCC8006400B53697A652E486569676874050000
+ 0000009A998104401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F7264657202280005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0708436F6E74656E7473074869745465
+ 7374080A53697A652E5769647468050000000000CCCC8006400B53697A652E48
+ 65696768740500000000009A998104401453697A652E506C6174666F726D4465
+ 6661756C74081A5465787453657474696E67732E466F6E742E5374796C654578
+ 740A0D00000004040000000000000004000000165465787453657474696E6773
+ 2E466F6E74436F6C6F72070D636C61446F64676572626C7565000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D
+ 6174696F6E315374796C65084475726174696F6E050000000000000000000007
+ 496E7665727365090C50726F70657274794E616D650616546578745365747469
+ 6E67732E466F6E74436F6C6F720A537461727456616C7565070D636C61446F64
+ 676572626C75650953746F7056616C7565070E636C6144656570736B79626C75
+ 650754726967676572063049734D6F7573654F7665723D747275653B49735072
+ 65737365643D66616C73653B4973466F63757365643D66616C73650E54726967
+ 676572496E7665727365063149734D6F7573654F7665723D66616C73653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
+ 72416E696D6174696F6E325374796C65084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D6506165465787453657474696E67732E
+ 466F6E74436F6C6F720A537461727456616C7565070E636C6144656570736B79
+ 626C75650953746F7056616C7565070978464631373537394307547269676765
+ 72062F4973507265737365643D747275653B49734D6F7573654F7665723D7472
+ 75653B4973466F63757365643D66616C736500000000545046300A5452656374
+ 616E676C6500095374796C654E616D65060E7374617475736261727374796C65
+ 05416C69676E070643656E7465720C436C69704368696C6472656E090A46696C
+ 6C2E436F6C6F7207097846463235323532350748697454657374080553696465
+ 730B03546F70000A53697A652E57696474680500000000000000F004400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350756697369626C65080007544C61796F757400095374796C654E616D6506
+ 074C61796F75743105416C69676E070552696768740A506F736974696F6E2E58
+ 05000000000000008C04400A53697A652E57696474680500000000000000C803
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C740800095453697A654772697000095374796C65
+ 4E616D65060973697A65677267697005416C69676E0706426F74746F6D0A506F
+ 736974696F6E2E590500000000000000C803400A53697A652E57696474680500
+ 000000000000C803400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C740800000000545046300754
+ 4C61796F757400095374796C654E616D65060C7370696E626F787374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000006666
+ E005400B53697A652E4865696768740500000000000000C003401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 6572022A000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F7207097846463230323032300A53697A652E57696474680500000000006666
+ E005400B53697A652E4865696768740500000000000000C003401453697A652E
+ 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
+ 4646313531353135000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650614436F6C6F72416E696D6174696F6E315374796C65084475726174
+ 696F6E050000000000000000000007496E7665727365090C50726F7065727479
+ 4E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565070978
+ 46463135313531350953746F7056616C75650709784646343034303430075472
+ 6967676572061049734D6F7573654F7665723D747275650E5472696767657249
+ 6E7665727365061149734D6F7573654F7665723D66616C73650000000C544272
+ 7573684F626A65637400095374796C654E616D65060A666F726567726F756E64
+ 0B42727573682E436F6C6F72070978464645414541454100000C544272757368
+ 4F626A65637400095374796C654E616D65060973656C656374696F6E0B427275
+ 73682E436F6C6F720709783936324138324532000007544C61796F7574000953
+ 74796C654E616D650607636F6E74656E7405416C69676E0706436C69656E7406
+ 4C6F636B6564090C4D617267696E732E4C65667405000000000000008000400B
+ 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
+ 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
+ 0000000000008000400A53697A652E5769647468050000000000CCCCF004400B
+ 53697A652E4865696768740500000000000000A003401453697A652E506C6174
+ 666F726D44656661756C740800000754427574746F6E00095374796C654E616D
+ 65060B6D696E7573627574746F6E05416C69676E07044C6566740843616E466F
+ 6375730806437572736F72070763724172726F770C4D617267696E732E4C6566
+ 7405000000000000008000400B4D617267696E732E546F700500000000000000
+ 8000400D4D617267696E732E526967687405000000000000008000400E4D6172
+ 67696E732E426F74746F6D05000000000000008000400A506F736974696F6E2E
+ 5805000000000000008000400A506F736974696F6E2E59050000000000000080
+ 00400A53697A652E57696474680500000000000000A003400B53697A652E4865
+ 696768740500000000000000A003401453697A652E506C6174666F726D446566
+ 61756C74080B5374796C654C6F6F6B7570060B627574746F6E7374796C650005
+ 54506174680005416C69676E070643656E74657209446174612E506174680A40
+ 00000005000000000000000000803F00000000010000000000803F0000803F01
+ 000000000000000000003F010000000000803F00000000030000000000803F00
+ 0000000A46696C6C2E436F6C6F720708636C6157686974650748697454657374
+ 080A53697A652E576964746805000000000000008002400B53697A652E486569
+ 67687405000000000000008002401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650000000754427574746F
+ 6E00095374796C654E616D65060A706C7573627574746F6E05416C69676E0705
+ 52696768740843616E466F6375730806437572736F72070763724172726F770C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A506F736974696F6E2E580500000000006666B405400A506F736974696F6E
+ 2E5905000000000000008000400A53697A652E57696474680500000000000000
+ A003400B53697A652E4865696768740500000000000000A003401453697A652E
+ 506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060B6275
+ 74746F6E7374796C65000554506174680005416C69676E070643656E74657209
+ 446174612E506174680A34000000040000000000000000000000000000000100
+ 0000000000000000803F010000000000803F0000003F03000000000000000000
+ 00000A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008002401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65060D73697A65677269707374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ C803400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 6572022B000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653105416C69676E070643656E7465720A46696C6C2E436F6C6F72
+ 07097846463630363036300A53697A652E57696474680500000000000000A000
+ 400B53697A652E4865696768740500000000000000A000401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 00000A5452656374616E676C6500095374796C654E616D65060A52656374616E
+ 676C653205416C69676E070643656E7465720A46696C6C2E436F6C6F72070978
+ 46463630363036300C4D617267696E732E4C6566740500000000000000A00240
+ 0A53697A652E57696474680500000000000000A000400B53697A652E48656967
+ 68740500000000000000A000401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E67
+ 6C6500095374796C654E616D65060A52656374616E676C653305416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F7207097846463630363036300C4D61
+ 7267696E732E4C6566740500000000000000A002400B4D617267696E732E546F
+ 700500000000000000A002400A53697A652E57696474680500000000000000A0
+ 00400B53697A652E4865696768740500000000000000A000401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6500000A5452656374616E676C6500095374796C654E616D65060A5265637461
+ 6E676C653405416C69676E070643656E7465720A46696C6C2E436F6C6F720709
+ 7846463630363036300B4D617267696E732E546F700500000000000000A00240
+ 0A53697A652E57696474680500000000000000A000400B53697A652E48656967
+ 68740500000000000000A000401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E67
+ 6C6500095374796C654E616D65060A52656374616E676C653505416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F7207097846463630363036300B4D61
+ 7267696E732E546F700500000000000000A002400D4D617267696E732E526967
+ 68740500000000000000A002400A53697A652E57696474680500000000000000
+ A000400B53697A652E4865696768740500000000000000A000401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E6500000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653605416C69676E070643656E7465720A46696C6C2E436F6C6F7207
+ 097846463630363036300C4D617267696E732E4C6566740500000000000000A0
+ 02400E4D617267696E732E426F74746F6D0500000000000000A002400A53697A
+ 652E57696474680500000000000000A000400B53697A652E4865696768740500
+ 000000000000A000401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E65000000545046300A5452656374616E
+ 676C6500095374796C654E616D65060C746F6F6C6261727374796C6505416C69
+ 676E070643656E7465720A46696C6C2E436F6C6F720709784646323532353235
+ 0748697454657374080553696465730B06426F74746F6D000A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000C804401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F7207097846463135313531350756697369626C650800005450
+ 463007544C61796F757400095374796C654E616D65061570726F677265737362
+ 61726572726F727374796C6505416C69676E070643656E7465720A53697A652E
+ 576964746805000000000033338505400B53697A652E48656967687405000000
+ 00009999E104401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508085461624F72646572022D000A5452656374616E676C65000953
+ 74796C654E616D65060668747261636B05416C69676E0708436F6E74656E7473
+ 0A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564090748
+ 697454657374080A53697A652E576964746805000000000033338505400B5369
+ 7A652E4865696768740500000000009999E104401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 3135000A5452656374616E676C6500095374796C654E616D65060A68696E6469
+ 6361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F7207097846
+ 46453232413241064C6F636B6564090748697454657374080C4D617267696E73
+ 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
+ 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
+ 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F736974
+ 696F6E2E58050000000000000080FF3F0A506F736974696F6E2E590500000000
+ 00000080FF3F0A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000009999D904401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000A54
+ 52656374616E676C6500095374796C654E616D65060676747261636B05416C69
+ 676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632303230
+ 3230064C6F636B6564090748697454657374080A53697A652E57696474680500
+ 0000000033338505400B53697A652E4865696768740500000000009999E10440
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F720709784646313531353135000A5452656374616E676C6500095374796C
+ 654E616D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A
+ 46696C6C2E436F6C6F720709784646453232413241064C6F636B656409074869
+ 7454657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D
+ 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
+ 676874050000000000000080FF3F0E4D617267696E732E426F74746F6D050000
+ 000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A50
+ 6F736974696F6E2E5905000000000099998904400A53697A652E576964746805
+ 000000000033338105400B53697A652E4865696768740500000000000000A803
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000000005450463007544C61796F757400095374796C65
+ 4E616D65060F64726F707461726765747374796C6505416C69676E070643656E
+ 7465720A53697A652E5769647468050000000000ACAAD905400B53697A652E48
+ 65696768740500000000000000CF05401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508085461624F72646572022E000A54526563
+ 74616E676C650005416C69676E0708436F6E74656E74730946696C6C2E4B696E
+ 6407044E6F6E650748697454657374080A53697A652E57696474680500000000
+ 00ACAAD905400B53697A652E4865696768740500000000000000CF0540145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0708636C615768697465105374726F6B652E546869636B6E6573730500000000
+ 0000008001400B5374726F6B652E446173680704446173680758526164697573
+ 0500000000000000C0024007595261646975730500000000000000C002400005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706426F
+ 74746F6D0748697454657374080C4D617267696E732E4C656674050000000000
+ 0000A002400D4D617267696E732E52696768740500000000000000A002400A50
+ 6F736974696F6E2E580500000000000000A002400A506F736974696F6E2E5905
+ 00000000000000D604400A53697A652E5769647468050000000000ACAAB10540
+ 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
+ 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
+ 6F6C6F720708636C6157686974650000001254466C6F61744B6579416E696D61
+ 74696F6E00084475726174696F6E050000000000999999FE3F044B6579730E01
+ 0001034B6579050000000000000080FE3F0556616C75650500000000000000A0
+ 03C00001034B6579050000000000000080FF3F0000044C6F6F70090C50726F70
+ 657274794E616D65060B50616464696E672E546F7010537461727446726F6D43
+ 757272656E74080754726967676572060F4973447261674F7665723D74727565
+ 00000554506174680005416C69676E070643656E74657209446174612E506174
+ 680AC4000000100000000000000008EC8343F087A4430100000008EC8343083C
+ FB430200000035BE7143504DF9430200000012835C43A8E6F54302000000F067
+ 4943F803F1430100000008EC8343FC0116440100000008EC8343FC5116440100
+ 000000408443FC5116440100000010689A43FC412B4401000000081CD043F803
+ F14302000000915DC64321E0F54302000000919DBB439643F94302000000087C
+ B043F833FB4301000000087CB043F087A4430100000008EC8343F087A4430300
+ 000000000000000000000A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000100C804401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 5450463007544C61796F757400095374796C654E616D65061464726F70746172
+ 6765746669656C647374796C6505416C69676E070643656E7465720A53697A65
+ 2E576964746805000000000000A08A07400B53697A652E486569676874050000
+ 0000000000B204401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F72646572022F000A5452656374616E676C650009
+ 5374796C654E616D65060A52656374616E676C653105416C69676E0706436C69
+ 656E740946696C6C2E4B696E6407044E6F6E650748697454657374080A53697A
+ 652E576964746805000000000000A08A07400B53697A652E4865696768740500
+ 000000000000B204401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646324138324532000554546578740009
+ 5374796C654E616D6506047465787405416C69676E0706436C69656E74074869
+ 7454657374080A53697A652E576964746805000000000000809A05400B53697A
+ 652E4865696768740500000000000000B204401453697A652E506C6174666F72
+ 6D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F72
+ 0708636C615768697465000007544C61796F757400095374796C654E616D6506
+ 074C61796F75743105416C69676E07044C6566740A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000B204
+ 401453697A652E506C6174666F726D44656661756C7408000554506174680009
+ 5374796C654E616D650605506174683105416C69676E070643656E7465720944
+ 6174612E506174680A24010000180000000000000073B8AC43C14A7843010000
+ 006D2717435849DD430200000086CB0A431078E343020000009683ED421078E3
+ 4302000000DACED4425849DD43020000009A19BC42081CD743020000009A19BC
+ 424C17CD4302000000DACED4421DEAC64301000000B4288B4385EB6143010000
+ 0068D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6FBAC
+ 410200000068D1D442D04D144102000000A886ED429CC245C002000000CCCC0A
+ 439CC245C002000000B4281743D04D14410100000016B9AC43918D4B43020000
+ 00BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343EB61
+ 4302000000A05AB1439C046A4302000000FACEAF43711D72430200000073B8AC
+ 43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708636C
+ 6157686974650748697454657374080A53697A652E5769647468050000000000
+ 0000F002400B53697A652E4865696768740500000000000000F002401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6508577261704D6F64650703466974000005545061746800095374796C
+ 654E616D650605506174683205416C69676E070643656E74657209446174612E
+ 506174680A24010000180000000000000073B8AC43C14A7843010000006D2717
+ 435849DD430200000086CB0A431078E343020000009683ED421078E343020000
+ 00DACED4425849DD43020000009A19BC42081CD743020000009A19BC424C17CD
+ 4302000000DACED4421DEAC64301000000B4288B4385EB61430100000068D1D4
+ 426811584202000000281CBC42CAA1264202000000281CBC42E6FBAC41020000
+ 0068D1D442D04D144102000000A886ED429CC245C002000000CCCC0A439CC245
+ C002000000B4281743D04D14410100000016B9AC43918D4B4302000000BECFAF
+ 43A5BB5143020000009F5AB143F1D25943020000009F5AB14343EB6143020000
+ 00A05AB1439C046A4302000000FACEAF43711D72430200000073B8AC43C14A78
+ 430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080C4D617267696E732E4C6566740500000000000000
+ A004400A53697A652E57696474680500000000000000F002400B53697A652E48
+ 65696768740500000000000000F002401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64
+ 650703466974000005545061746800095374796C654E616D6506055061746833
+ 05416C69676E070643656E74657209446174612E506174680A24010000180000
+ 000000000073B8AC43C14A7843010000006D2717435849DD430200000086CB0A
+ 431078E343020000009683ED421078E34302000000DACED4425849DD43020000
+ 009A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEAC6
+ 4301000000B4288B4385EB61430100000068D1D4426811584202000000281CBC
+ 42CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D1441020000
+ 00A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D14
+ 410100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB1
+ 43F1D25943020000009F5AB14343EB614302000000A05AB1439C046A43020000
+ 00FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A78
+ 430A46696C6C2E436F6C6F720708636C6157686974650748697454657374080D
+ 4D617267696E732E52696768740500000000000000A004400A53697A652E5769
+ 6474680500000000000000F002400B53697A652E486569676874050000000000
+ 0000F002401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E6508577261704D6F646507034669740000000754
+ 4C61796F757400095374796C654E616D6506074C61796F75743205416C69676E
+ 070552696768740A506F736974696F6E2E580500000000000040B106400A5369
+ 7A652E57696474680500000000000000C805400B53697A652E48656967687405
+ 00000000000000B204401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 0643656E74657209446174612E506174680A24010000180000000000000073B8
+ AC43C14A7843010000006D2717435849DD430200000086CB0A431078E3430200
+ 00009683ED421078E34302000000DACED4425849DD43020000009A19BC42081C
+ D743020000009A19BC424C17CD4302000000DACED4421DEAC64301000000B428
+ 8B4385EB61430100000068D1D4426811584202000000281CBC42CAA126420200
+ 0000281CBC42E6FBAC410200000068D1D442D04D144102000000A886ED429CC2
+ 45C002000000CCCC0A439CC245C002000000B4281743D04D14410100000016B9
+ AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D259430200
+ 00009F5AB14343EB614302000000A05AB1439C046A4302000000FACEAF43711D
+ 72430200000073B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080D526F746174696F
+ 6E416E676C650500000000000000B406400A53697A652E576964746805000000
+ 00000000F002400B53697A652E4865696768740500000000000000F002401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E6508577261704D6F64650703466974000005545061746800095374
+ 796C654E616D650605506174683205416C69676E070643656E74657209446174
+ 612E506174680A24010000180000000000000073B8AC43C14A7843010000006D
+ 2717435849DD430200000086CB0A431078E343020000009683ED421078E34302
+ 000000DACED4425849DD43020000009A19BC42081CD743020000009A19BC424C
+ 17CD4302000000DACED4421DEAC64301000000B4288B4385EB61430100000068
+ D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6FBAC4102
+ 00000068D1D442D04D144102000000A886ED429CC245C002000000CCCC0A439C
+ C245C002000000B4281743D04D14410100000016B9AC43918D4B4302000000BE
+ CFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343EB614302
+ 000000A05AB1439C046A4302000000FACEAF43711D72430200000073B8AC43C1
+ 4A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708636C6157
+ 686974650748697454657374080C4D617267696E732E4C656674050000000000
+ 0000A004400D526F746174696F6E416E676C650500000000000000B406400A53
+ 697A652E57696474680500000000000000F002400B53697A652E486569676874
+ 0500000000000000F002401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669
+ 74000005545061746800095374796C654E616D650605506174683305416C6967
+ 6E070643656E74657209446174612E506174680A240100001800000000000000
+ 73B8AC43C14A7843010000006D2717435849DD430200000086CB0A431078E343
+ 020000009683ED421078E34302000000DACED4425849DD43020000009A19BC42
+ 081CD743020000009A19BC424C17CD4302000000DACED4421DEAC64301000000
+ B4288B4385EB61430100000068D1D4426811584202000000281CBC42CAA12642
+ 02000000281CBC42E6FBAC410200000068D1D442D04D144102000000A886ED42
+ 9CC245C002000000CCCC0A439CC245C002000000B4281743D04D144101000000
+ 16B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D25943
+ 020000009F5AB14343EB614302000000A05AB1439C046A4302000000FACEAF43
+ 711D72430200000073B8AC43C14A78430300000073B8AC43C14A78430A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080D4D61726769
+ 6E732E52696768740500000000000000A004400D526F746174696F6E416E676C
+ 650500000000000000B406400A53697A652E57696474680500000000000000F0
+ 02400B53697A652E4865696768740500000000000000F002401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6508577261704D6F6465070346697400000000005450463007544C61796F7574
+ 00095374796C654E616D65060C706F706F7665727374796C6505416C69676E07
+ 0643656E7465720756697369626C6508085461624F726465720230000A545265
+ 6374616E676C6500095374796C654E616D650602626705416C69676E0706436C
+ 69656E740A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350007
+ 544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967
+ 6E0706436C69656E740C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000C004
+ 400B53697A652E4865696768740500000000000000C004401453697A652E506C
+ 6174666F726D44656661756C740800000D54536861646F774566666563740008
+ 44697374616E63650500000000000000C0004009446972656374696F6E050000
+ 0000000000B4054008536F66746E657373050000000000000080FE3F074F7061
+ 63697479050000000000000080FE3F0B536861646F77436F6C6F720708636C61
+ 426C61636B000000005450463007544C61796F757400095374796C654E616D65
+ 060D706F707570626F787374796C6505416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000C805400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508085461624F726465720231000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080A53697A652E57696474680500000000000000C805400B53697A
+ 652E4865696768740500000000000000C803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E315374796C65084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463230323032300953746F7056616C7565070978464634
+ 30343034300754726967676572062049734D6F7573654F7665723D747275653B
+ 4973507265737365643D66616C73650E54726967676572496E76657273650621
+ 49734D6F7573654F7665723D66616C73653B4973507265737365643D66616C73
+ 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463430343034300953746F7056616C75
+ 6507097846463241383245320754726967676572062049734D6F7573654F7665
+ 723D747275653B4973507265737365643D747275653B0E54726967676572496E
+ 7665727365062049734D6F7573654F7665723D747275653B4973507265737365
+ 643D66616C736500000007544C61796F75740005416C69676E07084669745269
+ 6768740A506F736974696F6E2E5805000000000000009605400A53697A652E57
+ 696474680500000000000000C803400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740800055450
+ 6174680005416C69676E070643656E74657209446174612E506174680A400000
+ 000500000000000000000000000000803F010000000000803F0000803F010000
+ 000000003F0000000001000000000000000000803F0300000000000000000000
+ 000A46696C6C2E436F6C6F720708636C6157686974650748697454657374080B
+ 4D617267696E732E546F700500000000000000E001C00A53697A652E57696474
+ 6805000000000000008002400B53697A652E4865696768740500000000000000
+ 8001401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000554506174680005416C69676E070643656E74
+ 657209446174612E506174680A34000000040000000000000000000000000000
+ 00010000000000803F00000000010000000000003F0000803F03000000000000
+ 00000000000A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080B4D617267696E732E546F700500000000000000C001400A53697A652E
+ 576964746805000000000000008002400B53697A652E48656967687405000000
+ 000000008001401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6500000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E74074869745465737408
+ 0C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 000000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080
+ FF3F0A53697A652E576964746805000000000000009205400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C74080454657874060454657874165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465000000545046300A5452656374616E
+ 676C6500095374796C654E616D6506147374617475736261726E6F6772697073
+ 74796C6505416C69676E070643656E7465720C436C69704368696C6472656E09
+ 0A46696C6C2E436F6C6F7207097846463235323532350553696465730B03546F
+ 70000A53697A652E57696474680500000000000000F004400B53697A652E4865
+ 696768740500000000000000C804401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135075669
+ 7369626C650800005450463007544C61796F757400095374796C654E616D6506
+ 13736D616C6C7363726F6C6C6261727374796C6505416C69676E070643656E74
+ 65720756697369626C6508085461624F726465720233000654547261636B0009
+ 5374796C654E616D65060668747261636B05416C69676E0706436C69656E7406
+ 4C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
+ 74080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B73
+ 74796C6500000654547261636B00095374796C654E616D65060676747261636B
+ 05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E74617469
+ 6F6E070A486F72697A6F6E74616C0A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570061473
+ 63726F6C6C62617276747261636B7374796C650000005450463007544C61796F
+ 757400095374796C654E616D65060D73706C69747465727374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000A90440
+ 0B53697A652E4865696768740500000000000080C105401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508085461624F7264657202
+ 34000A5452656374616E676C6500095374796C654E616D65060A52656374616E
+ 676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F72070978
+ 46463330333033300748697454657374080553696465730B044C656674055269
+ 676874000A53697A652E57696474680500000000000000A904400B53697A652E
+ 4865696768740500000000000080C105401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 0007544C61796F757400095374796C654E616D6506064C61796F757405416C69
+ 676E0706436C69656E740A53697A652E57696474680500000000000000A90440
+ 0B53697A652E4865696768740500000000000080C105401453697A652E506C61
+ 74666F726D44656661756C74080007544C61796F757400095374796C654E616D
+ 6506046772697005416C69676E070A5665727443656E746572064C6F636B6564
+ 090A506F736974696F6E2E5905000000000000008004400A53697A652E576964
+ 74680500000000000000A904400B53697A652E48656967687405000000000000
+ 008004401453697A652E506C6174666F726D44656661756C7408000754436972
+ 636C6500095374796C654E616D650607436972636C653305416C69676E070643
+ 656E7465720A46696C6C2E436F6C6F7207097846463430343034300748697454
+ 657374080E4D617267696E732E426F74746F6D0500000000000000A003400A53
+ 697A652E57696474680500000000000000E001400B53697A652E486569676874
+ 0500000000000000E001401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F72070978464631353135313500000754436972
+ 636C6500095374796C654E616D650607436972636C653205416C69676E070643
+ 656E7465720A46696C6C2E436F6C6F7207097846463430343034300748697454
+ 657374080B4D617267696E732E546F700500000000000000A003400A53697A65
+ 2E57696474680500000000000000E001400B53697A652E486569676874050000
+ 0000000000E001401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F72070978464631353135313500000754436972636C65
+ 00095374796C654E616D650607436972636C653105416C69676E070643656E74
+ 65720A46696C6C2E436F6C6F7207097846463430343034300748697454657374
+ 080A53697A652E57696474680500000000000000E001400B53697A652E486569
+ 6768740500000000000000E001401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313500000000
+ 005450463007544C61796F757400095374796C654E616D650610636C6F736562
+ 7574746F6E7374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F726465720235000A5452656374616E676C650009537479
+ 6C654E616D65060B636C6F7365627574746F6E05416C69676E0706436C69656E
+ 740A46696C6C2E436F6C6F720709784646323032303230074869745465737408
+ 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F
+ 6E315374796C65084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463230323032300953746F7056616C7565070978464646463631353707
+ 54726967676572062049734D6F7573654F7665723D747275653B497350726573
+ 7365643D66616C73650E54726967676572496E7665727365062149734D6F7573
+ 654F7665723D66616C73653B4973507265737365643D66616C736500000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
+ 6E696D6174696F6E325374796C65084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846464646363135370953746F7056616C75650709784646
+ 4532344634350754726967676572061F49734D6F7573654F7665723D74727565
+ 3B4973507265737365643D747275650E54726967676572496E76657273650620
+ 49734D6F7573654F7665723D747275653B4973507265737365643D66616C7365
+ 00000005545061746800095374796C654E616D650605506174683105416C6967
+ 6E070643656E74657209446174612E506174680AC40000001000000000000000
+ 0000A0C00000704101000000000070410000A0C001000000000048420000F041
+ 010000000000AA420000A0C0010000000000D242000070410100000000008C42
+ 00004842010000000000D2420000B442010000000000AA420000DC4202000000
+ 3BDF34429E6F8C4202000000FE547D427FAAB042020000000000484200009642
+ 01000000000070410000DC42010000000000A0C00000B442010000000000F041
+ 00005C42010000000000A0C000007041030000000000A0C0000070410A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080A53697A652E
+ 57696474680500000000000000A002400B53697A652E48656967687405000000
+ 00000000A002401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650000005450463007544C61796F75740009
+ 5374796C654E616D65060E6D6178627574746F6E7374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000000C804400B5369
+ 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F726465720236000A
+ 5452656374616E676C6500095374796C654E616D6506096D6178627574746F6E
+ 05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463230323032300953746F7056616C75
+ 6507097846463241383245320754726967676572062049734D6F7573654F7665
+ 723D747275653B4973507265737365643D66616C73650E54726967676572496E
+ 7665727365062149734D6F7573654F7665723D66616C73653B49735072657373
+ 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614436F6C6F72416E696D6174696F6E325374796C650844757261
+ 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463241383245320953
+ 746F7056616C756507097846463137353739430754726967676572061F49734D
+ 6F7573654F7665723D747275653B4973507265737365643D747275650E547269
+ 67676572496E7665727365062049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C736500000005545061746800095374796C654E616D
+ 650605506174683105416C69676E070643656E74657209446174612E50617468
+ 0A5800000007000000000000000000C8420000C8420100000000002F440000C8
+ 420100000000002F4400002F4401000000008009440080094401000000008009
+ 4400007A430100000000007A4300007A43030000000000C8420000C8420A4669
6C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A65
2E57696474680500000000000000A002400B53697A652E486569676874050000
0000000000A002401453697A652E506C6174666F726D44656661756C74080B53
74726F6B652E4B696E6407044E6F6E650000005450463007544C61796F757400
- 095374796C654E616D65060E6D6178627574746F6E7374796C6505416C69676E
+ 095374796C654E616D65060E726573627574746F6E7374796C6505416C69676E
070643656E7465720A53697A652E57696474680500000000000000C804400B53
697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508085461624F72646572022E00
- 0A5452656374616E676C6500095374796C654E616D6506096D6178627574746F
+ 6F726D44656661756C74080756697369626C6508085461624F72646572023700
+ 0A5452656374616E676C6500095374796C654E616D650609726573627574746F
6E05416C69676E0706436C69656E740A46696C6C2E436F6C6F72070978464632
30323032300748697454657374080A53697A652E576964746805000000000000
00C804400B53697A652E4865696768740500000000000000C803401453697A65
@@ -9362,209 +9397,67 @@ object MainForm: TMainForm
680A5800000007000000000000000000C8420000C8420100000000002F440000
C8420100000000002F4400002F44010000000080094400800944010000000080
094400007A430100000000007A4300007A43030000000000C8420000C8420A46
- 696C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A
- 652E57696474680500000000000000A002400B53697A652E4865696768740500
- 000000000000A002401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E650000005450463007544C61796F7574
- 00095374796C654E616D65060E726573627574746F6E7374796C6505416C6967
- 6E070643656E7465720A53697A652E57696474680500000000000000C804400B
- 53697A652E4865696768740500000000000000C803401453697A652E506C6174
- 666F726D44656661756C74080756697369626C6508085461624F72646572022F
- 000A5452656374616E676C6500095374796C654E616D65060972657362757474
- 6F6E05416C69676E0706436C69656E740A46696C6C2E436F6C6F720709784646
- 3230323032300748697454657374080A53697A652E5769647468050000000000
- 0000C804400B53697A652E4865696768740500000000000000C803401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E05
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080D526F74
+ 6174696F6E416E676C650500000000000000B406400A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000A0
+ 02401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E650000005450463007544C61796F757400095374796C65
+ 4E616D65060E6D696E627574746F6E7374796C6505416C69676E070643656E74
+ 65720A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C6508085461624F726465720238000A5452656374
+ 616E676C6500095374796C654E616D6506096D696E627574746F6E05416C6967
+ 6E0706436C69656E740A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E315374796C65084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463230323032300953746F7056616C756507097846
+ 463241383245320754726967676572062049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C73650E54726967676572496E7665727365
+ 062149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E05
000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
- 6C6F720A537461727456616C756507097846463230323032300953746F705661
- 6C756507097846463241383245320754726967676572062049734D6F7573654F
- 7665723D747275653B4973507265737365643D66616C73650E54726967676572
- 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
- 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65084475
- 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
- 46696C6C2E436F6C6F720A537461727456616C75650709784646324138324532
- 0953746F7056616C756507097846463137353739430754726967676572061F49
- 734D6F7573654F7665723D747275653B4973507265737365643D747275650E54
- 726967676572496E7665727365062049734D6F7573654F7665723D747275653B
- 4973507265737365643D66616C736500000005545061746800095374796C654E
- 616D650605506174683105416C69676E070643656E74657209446174612E5061
- 74680A5800000007000000000000000000C8420000C8420100000000002F4400
- 00C8420100000000002F4400002F440100000000800944008009440100000000
- 80094400007A430100000000007A4300007A43030000000000C8420000C8420A
- 46696C6C2E436F6C6F720708636C6157686974650748697454657374080D526F
- 746174696F6E416E676C650500000000000000B406400A53697A652E57696474
- 680500000000000000A002400B53697A652E4865696768740500000000000000
- A002401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E650000005450463007544C61796F757400095374796C
- 654E616D65060E6D696E627574746F6E7374796C6505416C69676E070643656E
- 7465720A53697A652E57696474680500000000000000C804400B53697A652E48
- 65696768740500000000000000C803401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C6508085461624F726465720230000A54526563
- 74616E676C6500095374796C654E616D6506096D696E627574746F6E05416C69
- 676E0706436C69656E740A46696C6C2E436F6C6F720709784646323032303230
- 0748697454657374080A53697A652E57696474680500000000000000C804400B
- 53697A652E4865696768740500000000000000C803401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
- 72416E696D6174696F6E315374796C65084475726174696F6E05000000000000
- 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463230323032300953746F7056616C7565070978
- 46463241383245320754726967676572062049734D6F7573654F7665723D7472
- 75653B4973507265737365643D66616C73650E54726967676572496E76657273
- 65062149734D6F7573654F7665723D66616C73653B4973507265737365643D66
- 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650614436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E
- 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463241383245320953746F7056
- 616C756507097846463137353739430754726967676572061F49734D6F757365
- 4F7665723D747275653B4973507265737365643D747275650E54726967676572
- 496E7665727365062049734D6F7573654F7665723D747275653B497350726573
- 7365643D66616C736500000005545061746800095374796C654E616D65060550
- 6174683105416C69676E070643656E74657209446174612E506174680A400000
- 00050000000000000000002F44008009440100000000002F4400002F44010000
- 000000C84200002F44010000000000C842008009440300000000002F44008009
- 440A46696C6C2E436F6C6F720708636C6157686974650748697454657374080B
- 4D617267696E732E546F700500000000000000A002400D526F746174696F6E41
- 6E676C650500000000000000B406400A53697A652E5769647468050000000000
- 0000A002400B53697A652E4865696768740500000000000000C000401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E650000005450463007544C61796F757400095374796C654E616D65060F
- 746F6F6C77696E646F777374796C6505416C69676E070643656E7465720A5369
- 7A652E576964746805000000000056D5AF07400B53697A652E48656967687405
- 00000000000000B306401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508085461624F726465720231000A5452656374616E676C65
- 00095374796C654E616D6506046D61736B05416C69676E0708436F6E74656E74
- 730A46696C6C2E436F6C6F7207097846463130313031300A53697A652E576964
- 746805000000000056D5AF07400B53697A652E48656967687405000000000000
- 00B306401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650756697369626C6508000007544C61796F757400
- 095374796C654E616D6506046C65667405416C69676E07084D6F73744C656674
- 064C6F636B6564090A506F736974696F6E2E590500000000000000C803400A53
- 697A652E57696474680500000000000000A001400B53697A652E486569676874
- 05000000000000009A06401453697A652E506C6174666F726D44656661756C74
- 08000A5452656374616E676C650005416C69676E07084D6F73744C6566740A46
- 696C6C2E436F6C6F720709784646323032303230074869745465737408055369
- 6465730B044C656674055269676874000A53697A652E57696474680500000000
- 000000A001400B53697A652E4865696768740500000000000000950640145369
- 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
- 070978464631353135313500000A5452656374616E676C6500095374796C654E
- 616D65060A52656374616E676C653105416C69676E070A4D6F7374426F74746F
- 6D13456E61626C6544726167486967686C69676874080A46696C6C2E436F6C6F
- 7207097846463230323032300748697454657374080A506F736974696F6E2E59
- 05000000000000009506400553696465730B044C65667406426F74746F6D000A
- 53697A652E57696474680500000000000000A001400B53697A652E4865696768
- 740500000000000000A001401453697A652E506C6174666F726D44656661756C
- 74080C5374726F6B652E436F6C6F7207097846463135313531350007544C6179
- 6F757400095374796C654E616D6506074C61796F75743305416C69676E07094D
- 6F737452696768740A506F736974696F6E2E5805000000000000008001400A53
- 697A652E5769647468050000000000000080FF3F0B53697A652E486569676874
- 0500000000000000A001401453697A652E506C6174666F726D44656661756C74
- 08000A5452656374616E676C6500095374796C654E616D65060A52656374616E
- 676C653105416C69676E0703546F700A46696C6C2E436F6C6F72070978464631
- 35313531350748697454657374080A53697A652E576964746805000000000000
- 0080FF3F0B53697A652E486569676874050000000000000080FF3F1453697A65
+ 6C6F720A537461727456616C756507097846463241383245320953746F705661
+ 6C756507097846463137353739430754726967676572061F49734D6F7573654F
+ 7665723D747275653B4973507265737365643D747275650E5472696767657249
+ 6E7665727365062049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C736500000005545061746800095374796C654E616D6506055061
+ 74683105416C69676E070643656E74657209446174612E506174680A40000000
+ 050000000000000000002F44008009440100000000002F4400002F4401000000
+ 0000C84200002F44010000000000C842008009440300000000002F4400800944
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080B4D
+ 617267696E732E546F700500000000000000A002400D526F746174696F6E416E
+ 676C650500000000000000B406400A53697A652E576964746805000000000000
+ 00A002400B53697A652E4865696768740500000000000000C000401453697A65
2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000000000007544C61796F757400095374796C654E616D650605726967
- 687405416C69676E07094D6F73745269676874064C6F636B6564090A506F7369
- 74696F6E2E580500000000005655AD07400A506F736974696F6E2E5905000000
- 00000000C803400A53697A652E57696474680500000000000000A001400B5369
- 7A652E48656967687405000000000000009A06401453697A652E506C6174666F
- 726D44656661756C7408000A5452656374616E676C650005416C69676E07094D
- 6F737452696768740A46696C6C2E436F6C6F7207097846463230323032300748
- 697454657374080553696465730B044C656674055269676874000A53697A652E
- 57696474680500000000000000A001400B53697A652E48656967687405000000
- 000000009506401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F72070978464631353135313500000A5452656374616E67
- 6C6500095374796C654E616D65060A52656374616E676C653105416C69676E07
- 0A4D6F7374426F74746F6D13456E61626C6544726167486967686C6967687408
- 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
- 506F736974696F6E2E5905000000000000009506400553696465730B06426F74
- 746F6D055269676874000A53697A652E57696474680500000000000000A00140
- 0B53697A652E4865696768740500000000000000A001401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 35313531350007544C61796F757400095374796C654E616D6506074C61796F75
- 743305416C69676E07084D6F73744C6566740A53697A652E5769647468050000
- 000000000080FF3F0B53697A652E4865696768740500000000000000A0014014
- 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
- 6500095374796C654E616D65060A52656374616E676C653105416C69676E0703
- 546F700A46696C6C2E436F6C6F72070978464631353135313507486974546573
- 74080A53697A652E5769647468050000000000000080FF3F0B53697A652E4865
- 69676874050000000000000080FF3F1453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E6500000000000A545265
- 6374616E676C650005416C69676E07074D6F7374546F700A46696C6C2E436F6C
- 6F720709784646323032303230064C6F636B6564090748697454657374080A53
- 697A652E576964746805000000000056D5AF07400B53697A652E486569676874
- 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
- 757400095374796C654E616D65060763617074696F6E05416C69676E0708436F
- 6E74656E7473064C6F636B6564090748697454657374090A53697A652E576964
- 746805000000000056D5AF07400B53697A652E48656967687405000000000000
- 00C803401453697A652E506C6174666F726D44656661756C7408000007544C61
- 796F75740005416C69676E0706436C69656E74064C6F636B6564090C4D617267
- 696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F7005
- 0000000000000080FF3F0D4D617267696E732E52696768740500000000000000
- 80FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A5369
- 7A652E576964746805000000000056D5AE07400B53697A652E48656967687405
- 00000000000000B803401453697A652E506C6174666F726D44656661756C7408
- 0007544C61796F75740005416C69676E07044C656674064C6F636B6564090A53
- 697A652E576964746805000000000000009002400B53697A652E486569676874
- 0500000000000000B803401453697A652E506C6174666F726D44656661756C74
- 08000007544C61796F757400095374796C654E616D65060773797362746E7305
- 416C69676E0706436C69656E74064C6F636B6564090A53697A652E5769647468
- 0500000000005655AA07400B53697A652E4865696768740500000000000000B8
- 03401453697A652E506C6174666F726D44656661756C7408000C545370656564
- 427574746F6E00095374796C654E616D650605636C6F736505416C69676E0705
- 5269676874064C6F636B6564090A506F736974696F6E2E5805000000000056D5
- 9D07400A53697A652E57696474680500000000000000C803400B53697A652E48
- 65696768740500000000000000B803401453697A652E506C6174666F726D4465
- 6661756C74080B5374796C654C6F6F6B75700610636C6F7365627574746F6E73
- 74796C65000005545465787400095374796C654E616D6506057469746C650541
- 6C69676E0706436C69656E74064C6F636B6564090748697454657374080A5369
- 7A652E576964746805000000000056D59D07400B53697A652E48656967687405
- 00000000000000B803401453697A652E506C6174666F726D44656661756C7408
- 045465787406055469746C65165465787453657474696E67732E466F6E74436F
- 6C6F720708636C615768697465000000000007544C61796F757400095374796C
- 654E616D650606636C69656E7405416C69676E0706436C69656E74064C6F636B
- 6564090748697454657374090A53697A652E576964746805000000000056D5AA
- 07400B53697A652E48656967687405000000000000009506401453697A652E50
- 6C6174666F726D44656661756C7408000007544C61796F757400095374796C65
- 4E616D650606626F74746F6D05416C69676E0706426F74746F6D064C6F636B65
- 64090A506F736974696F6E2E580500000000000000A001400A506F736974696F
- 6E2E590500000000000000AE06400A53697A652E576964746805000000000056
- D5AA07400B53697A652E4865696768740500000000000000A001401453697A65
- 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
- 74796C654E616D6506047265637405416C69676E0706426F74746F6D0A46696C
- 6C2E436F6C6F7207097846463230323032300553696465730B03546F7006426F
- 74746F6D000A53697A652E576964746805000000000056D5AA07400B53697A65
- 2E4865696768740500000000000000A001401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 000000005450463007544C61796F757400095374796C654E616D65061177696E
- 646F77626F726465727374796C6505416C69676E070643656E7465720A53697A
+ 6F6E650000005450463007544C61796F757400095374796C654E616D65060F74
+ 6F6F6C77696E646F777374796C6505416C69676E070643656E7465720A53697A
652E576964746805000000000056D5AF07400B53697A652E4865696768740500
000000000000B306401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F726465720232000A5452656374616E676C6500
+ 56697369626C6508085461624F726465720239000A5452656374616E676C6500
095374796C654E616D6506046D61736B05416C69676E0708436F6E74656E7473
0A46696C6C2E436F6C6F7207097846463130313031300A53697A652E57696474
6805000000000056D5AF07400B53697A652E4865696768740500000000000000
B306401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
2E4B696E6407044E6F6E650756697369626C6508000007544C61796F75740009
5374796C654E616D6506046C65667405416C69676E07084D6F73744C65667406
- 4C6F636B6564090A506F736974696F6E2E590500000000000000F003400A5369
+ 4C6F636B6564090A506F736974696F6E2E590500000000000000C803400A5369
7A652E57696474680500000000000000A001400B53697A652E48656967687405
- 000000000000009506401453697A652E506C6174666F726D44656661756C7408
+ 000000000000009A06401453697A652E506C6174666F726D44656661756C7408
000A5452656374616E676C650005416C69676E07084D6F73744C6566740A4669
6C6C2E436F6C6F72070978464632303230323007486974546573740805536964
65730B044C656674055269676874000A53697A652E5769647468050000000000
- 0000A001400B53697A652E48656967687405000000000000009006401453697A
+ 0000A001400B53697A652E48656967687405000000000000009506401453697A
652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
0978464631353135313500000A5452656374616E676C6500095374796C654E61
6D65060A52656374616E676C653105416C69676E070A4D6F7374426F74746F6D
13456E61626C6544726167486967686C69676874080A46696C6C2E436F6C6F72
07097846463230323032300748697454657374080A506F736974696F6E2E5905
- 000000000000009006400553696465730B044C65667406426F74746F6D000A53
+ 000000000000009506400553696465730B044C65667406426F74746F6D000A53
697A652E57696474680500000000000000A001400B53697A652E486569676874
0500000000000000A001401453697A652E506C6174666F726D44656661756C74
080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
@@ -9580,18 +9473,18 @@ object MainForm: TMainForm
6E65000000000007544C61796F757400095374796C654E616D65060572696768
7405416C69676E07094D6F73745269676874064C6F636B6564090A506F736974
696F6E2E580500000000005655AD07400A506F736974696F6E2E590500000000
- 000000F003400A53697A652E57696474680500000000000000A001400B53697A
- 652E48656967687405000000000000009506401453697A652E506C6174666F72
+ 000000C803400A53697A652E57696474680500000000000000A001400B53697A
+ 652E48656967687405000000000000009A06401453697A652E506C6174666F72
6D44656661756C7408000A5452656374616E676C650005416C69676E07094D6F
737452696768740A46696C6C2E436F6C6F720709784646323032303230074869
7454657374080553696465730B044C656674055269676874000A53697A652E57
696474680500000000000000A001400B53697A652E4865696768740500000000
- 0000009006401453697A652E506C6174666F726D44656661756C74080C537472
+ 0000009506401453697A652E506C6174666F726D44656661756C74080C537472
6F6B652E436F6C6F72070978464631353135313500000A5452656374616E676C
6500095374796C654E616D65060A52656374616E676C653105416C69676E070A
4D6F7374426F74746F6D13456E61626C6544726167486967686C69676874080A
46696C6C2E436F6C6F7207097846463230323032300748697454657374080A50
- 6F736974696F6E2E5905000000000000009006400553696465730B06426F7474
+ 6F736974696F6E2E5905000000000000009506400553696465730B06426F7474
6F6D055269676874000A53697A652E57696474680500000000000000A001400B
53697A652E4865696768740500000000000000A001401453697A652E506C6174
666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
@@ -9607,3890 +9500,4860 @@ object MainForm: TMainForm
74616E676C650005416C69676E07074D6F7374546F700A46696C6C2E436F6C6F
720709784646323032303230064C6F636B6564090748697454657374080A5369
7A652E576964746805000000000056D5AF07400B53697A652E48656967687405
- 00000000000000F003401453697A652E506C6174666F726D44656661756C7408
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
0C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F75
7400095374796C654E616D65060763617074696F6E05416C69676E0708436F6E
74656E7473064C6F636B6564090748697454657374090A53697A652E57696474
6805000000000056D5AF07400B53697A652E4865696768740500000000000000
- F003401453697A652E506C6174666F726D44656661756C7408000007544C6179
+ C803401453697A652E506C6174666F726D44656661756C7408000007544C6179
6F75740005416C69676E0706436C69656E74064C6F636B6564090C4D61726769
6E732E4C656674050000000000000080FF3F0B4D617267696E732E546F700500
00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A
652E576964746805000000000056D5AE07400B53697A652E4865696768740500
- 000000000000E003401453697A652E506C6174666F726D44656661756C740800
+ 000000000000B803401453697A652E506C6174666F726D44656661756C740800
07544C61796F75740005416C69676E07044C656674064C6F636B6564090A5369
7A652E576964746805000000000000009002400B53697A652E48656967687405
- 00000000000000E003401453697A652E506C6174666F726D44656661756C7408
- 000007544C61796F757400095374796C654E616D65060469636F6E064C6F636B
- 6564090A506F736974696F6E2E5805000000000000009002400A506F73697469
- 6F6E2E590500000000000000E001400A53697A652E5769647468050000000000
- 0000C803400B53697A652E4865696768740500000000000000A803401453697A
- 652E506C6174666F726D44656661756C7408000007544C61796F757400095374
- 796C654E616D65060773797362746E7305416C69676E0706436C69656E74064C
- 6F636B6564090A53697A652E57696474680500000000005655AA07400B53697A
- 652E4865696768740500000000000000E003401453697A652E506C6174666F72
- 6D44656661756C7408000C545370656564427574746F6E00095374796C654E61
- 6D650605636C6F736505416C69676E07055269676874064C6F636B6564090A50
- 6F736974696F6E2E5805000000000056559107400A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000000000E003
- 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
- 6B75700610636C6F7365627574746F6E7374796C6500000C5453706565644275
- 74746F6E00095374796C654E616D6506036D617805416C69676E070552696768
- 74064C6F636B6564090A506F736974696F6E2E5805000000000056558207400A
- 53697A652E57696474680500000000000000F003400B53697A652E4865696768
- 740500000000000000E003401453697A652E506C6174666F726D44656661756C
- 74080B5374796C654C6F6F6B7570060E6D6178627574746F6E7374796C650000
- 0C545370656564427574746F6E00095374796C654E616D65060372657305416C
- 69676E07055269676874064C6F636B6564090A506F736974696F6E2E58050000
- 000000ACAAE606400A53697A652E57696474680500000000000000F003400B53
- 697A652E4865696768740500000000000000E003401453697A652E506C617466
- 6F726D44656661756C74080B5374796C654C6F6F6B7570060E72657362757474
- 6F6E7374796C6500000C545370656564427574746F6E00095374796C654E616D
- 6506036D696E05416C69676E07055269676874064C6F636B6564090A506F7369
- 74696F6E2E58050000000000ACAAC806400A53697A652E576964746805000000
- 00000000F003400B53697A652E4865696768740500000000000000E003401453
- 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
- 060E6D696E627574746F6E7374796C65000005545465787400095374796C654E
- 616D6506057469746C6505416C69676E0706436C69656E74064C6F636B656409
- 0748697454657374080A53697A652E5769647468050000000000ACAAC806400B
- 53697A652E4865696768740500000000000000E003401453697A652E506C6174
- 666F726D44656661756C7408045465787406055469746C651654657874536574
- 74696E67732E466F6E74436F6C6F720708636C61576869746500000000000754
- 4C61796F757400095374796C654E616D650606636C69656E7405416C69676E07
- 06436C69656E74064C6F636B6564090748697454657374090A53697A652E5769
- 64746805000000000056D5AA07400B53697A652E486569676874050000000000
- 00009006401453697A652E506C6174666F726D44656661756C7408000007544C
- 61796F757400095374796C654E616D650606626F74746F6D05416C69676E0706
- 426F74746F6D064C6F636B6564090A506F736974696F6E2E5805000000000000
- 00A001400A506F736974696F6E2E590500000000000000AE06400A53697A652E
- 576964746805000000000056D5AA07400B53697A652E48656967687405000000
- 00000000A001401453697A652E506C6174666F726D44656661756C7408000A54
- 52656374616E676C6500095374796C654E616D6506047265637405416C69676E
- 0706426F74746F6D0A46696C6C2E436F6C6F7207097846463230323032300748
- 697454657374080553696465730B03546F7006426F74746F6D000A53697A652E
- 576964746805000000000056D5AA07400B53697A652E48656967687405000000
- 00000000A001401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F720709784646313531353135000000005450463007544C
- 61796F757400095374796C654E616D650610726164696F627574746F6E737479
- 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 000000F205400B53697A652E4865696768740500000000000000A80340145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F7264657202340007544C61796F75740005416C69676E07044C6566740A5369
- 7A652E57696474680500000000000000A803400B53697A652E48656967687405
- 00000000000000A803401453697A652E506C6174666F726D44656661756C7408
- 000854456C6C6970736500095374796C654E616D65060A6261636B67726F756E
- 6405416C69676E070643656E7465720A46696C6C2E436F6C6F72070978464632
- 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
- 680500000000000000F002400B53697A652E4865696768740500000000000000
- F002401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
- 2E436F6C6F720709784646313531353135000854456C6C697073650009537479
- 6C654E616D650609636865636B6D61726B05416C69676E0706436C69656E740A
- 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
- 745465737408074F70616369747905000000000000000000000C4D617267696E
- 732E4C65667405000000000000008000400B4D617267696E732E546F70050000
- 00000000008000400D4D617267696E732E526967687405000000000000008000
- 400E4D617267696E732E426F74746F6D05000000000000008000400A53697A65
- 2E57696474680500000000000000B002400B53697A652E486569676874050000
- 0000000000B002401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
- 6E00095374796C654E616D65061A6F706163697479436865636B6D61726B416E
- 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
- 70657274794E616D6506074F7061636974790A537461727456616C7565050000
- 00000000000000000953746F7056616C7565050000000000000080FF3F075472
- 6967676572060E4973436865636B65643D747275650E54726967676572496E76
- 65727365060F4973436865636B65643D66616C73650000000F54436F6C6F7241
- 6E696D6174696F6E00095374796C654E616D65061A726164696F627574746F6E
+ 00000000000000B803401453697A652E506C6174666F726D44656661756C7408
+ 000007544C61796F757400095374796C654E616D65060773797362746E730541
+ 6C69676E0706436C69656E74064C6F636B6564090A53697A652E576964746805
+ 00000000005655AA07400B53697A652E4865696768740500000000000000B803
+ 401453697A652E506C6174666F726D44656661756C7408000C54537065656442
+ 7574746F6E00095374796C654E616D650605636C6F736505416C69676E070552
+ 69676874064C6F636B6564090A506F736974696F6E2E5805000000000056D59D
+ 07400A53697A652E57696474680500000000000000C803400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C74080B5374796C654C6F6F6B75700610636C6F7365627574746F6E7374
+ 796C65000005545465787400095374796C654E616D6506057469746C6505416C
+ 69676E0706436C69656E74064C6F636B6564090748697454657374080A53697A
+ 652E576964746805000000000056D59D07400B53697A652E4865696768740500
+ 000000000000B803401453697A652E506C6174666F726D44656661756C740804
+ 5465787406055469746C65165465787453657474696E67732E466F6E74436F6C
+ 6F720708636C615768697465000000000007544C61796F757400095374796C65
+ 4E616D650606636C69656E7405416C69676E0706436C69656E74064C6F636B65
+ 64090748697454657374090A53697A652E576964746805000000000056D5AA07
+ 400B53697A652E48656967687405000000000000009506401453697A652E506C
+ 6174666F726D44656661756C7408000007544C61796F757400095374796C654E
+ 616D650606626F74746F6D05416C69676E0706426F74746F6D064C6F636B6564
+ 090A506F736974696F6E2E580500000000000000A001400A506F736974696F6E
+ 2E590500000000000000AE06400A53697A652E576964746805000000000056D5
+ AA07400B53697A652E4865696768740500000000000000A001401453697A652E
+ 506C6174666F726D44656661756C7408000A5452656374616E676C6500095374
+ 796C654E616D6506047265637405416C69676E0706426F74746F6D0A46696C6C
+ 2E436F6C6F7207097846463230323032300553696465730B03546F7006426F74
+ 746F6D000A53697A652E576964746805000000000056D5AA07400B53697A652E
+ 4865696768740500000000000000A001401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 0000005450463007544C61796F757400095374796C654E616D65061072616469
+ 6F627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E
+ 57696474680500000000000000F205400B53697A652E48656967687405000000
+ 00000000A803401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508085461624F72646572023B0007544C61796F75740005416C6967
+ 6E07044C6566740A53697A652E57696474680500000000000000A803400B5369
+ 7A652E4865696768740500000000000000A803401453697A652E506C6174666F
+ 726D44656661756C7408000854456C6C6970736500095374796C654E616D6506
+ 0A6261636B67726F756E6405416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F720709784646323032303230064C6F636B656409074869745465737408
+ 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
+ 68740500000000000000F002401453697A652E506C6174666F726D4465666175
+ 6C74080C5374726F6B652E436F6C6F720709784646313531353135000854456C
+ 6C6970736500095374796C654E616D650609636865636B6D61726B05416C6967
+ 6E0706436C69656E740A46696C6C2E436F6C6F72070978464632413832453206
+ 4C6F636B656409074869745465737408074F7061636974790500000000000000
+ 0000000C4D617267696E732E4C65667405000000000000008000400B4D617267
+ 696E732E546F7005000000000000008000400D4D617267696E732E5269676874
+ 05000000000000008000400E4D617267696E732E426F74746F6D050000000000
+ 00008000400A53697A652E57696474680500000000000000B002400B53697A65
+ 2E4865696768740500000000000000B002401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F
+ 6174416E696D6174696F6E00095374796C654E616D65061A6F70616369747943
+ 6865636B6D61726B416E696D6174696F6E31084475726174696F6E0500000000
+ 0000000000000C50726F70657274794E616D6506074F7061636974790A537461
+ 727456616C756505000000000000000000000953746F7056616C756505000000
+ 0000000080FF3F0754726967676572060E4973436865636B65643D747275650E
+ 54726967676572496E7665727365060F4973436865636B65643D66616C736500
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061A72
+ 6164696F627574746F6E436F6C6F72416E696D6174696F6E3108447572617469
+ 6F6E050000000000000000000007496E7665727365090C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 30323032300953746F7056616C75650709784646343034303430075472696767
+ 6572061049734D6F7573654F7665723D747275650E54726967676572496E7665
+ 727365061149734D6F7573654F7665723D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
+ 696F6E315374796C65084475726174696F6E05000000000000000000000C5072
+ 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
+ 6C756507097846463135313531350953746F7056616C75650709784646324138
+ 3245320754726967676572060E4973436865636B65643D747275650E54726967
+ 676572496E7665727365060F4973436865636B65643D66616C73650000000005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706436C
+ 69656E74064C6F636B6564090748697454657374080A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000A8
+ 03401453697A652E506C6174666F726D44656661756C74081654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746500000054504630
+ 07544C61796F757400095374796C654E616D650618756C63656E746572726164
+ 696F627574746F6E7374796C6505416C69676E070643656E7465720A53697A65
+ 2E57696474680500000000005655FB05400B53697A652E486569676874050000
+ 0000000000A004401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F72646572023C0007544C61796F75740005416C69
+ 676E0706426F74746F6D0A506F736974696F6E2E590500000000000000880440
+ 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
+ 68740500000000000000C001401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E0708436F6E74656E747307436F726E6572730B07
+ 546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F720709
+ 784646323032303230064C6F636B6564090748697454657374080A53697A652E
+ 57696474680500000000005655FB05400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F720709784646313531353135000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D6506216261636B67726F756E64556C42
+ 7574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000
+ 000000000000000007496E7665727365090C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646323032303230
+ 0953746F7056616C756507097846463430343034300754726967676572061049
+ 734D6F7573654F7665723D747275650E54726967676572496E76657273650611
+ 49734D6F7573654F7665723D66616C736500000A5452656374616E676C650009
+ 5374796C654E616D650609636865636B6D61726B05416C69676E0708436F6E74
+ 656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674
+ 000A46696C6C2E436F6C6F720709784646324138324532064C6F636B65640907
+ 4869745465737408074F70616369747905000000000000000000000C4D617267
+ 696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F7005
+ 0000000000000080FF3F0D4D617267696E732E52696768740500000000000000
+ 80FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A5369
+ 7A652E57696474680500000000005655F705400B53697A652E48656967687405
+ 000000000000008001401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174
+ 696F6E00095374796C654E616D65061A636865636B6D61726B4F706163697479
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D6506074F7061636974790A537461727456616C756505
+ 000000000000000000000953746F7056616C7565050000000000000080FF3F07
+ 54726967676572060E4973436865636B65643D747275650E5472696767657249
+ 6E7665727365060F4973436865636B65643D66616C7365000000000005545465
+ 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 0000005655FB05400B53697A652E486569676874050000000000000088044014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C6157686974650000005450463007544C
+ 61796F757400095374796C654E616D650617756C7269676874726164696F6275
+ 74746F6E7374796C6505416C69676E070643656E7465720A53697A652E576964
+ 74680500000000005655FB05400B53697A652E48656967687405000000000000
+ 00A004401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F72646572023D0007544C61796F75740005416C69676E0706
+ 426F74746F6D0A506F736974696F6E2E5905000000000000008804400A53697A
+ 652E57696474680500000000005655FB05400B53697A652E4865696768740500
+ 000000000000C001401453697A652E506C6174666F726D44656661756C740800
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0708436F6E74656E747307436F726E6572730B08546F7052
+ 696768740B426F74746F6D5269676874000A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080A53697A652E5769
+ 6474680500000000005655FB05400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F720709784646313531353135000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D6506216261636B67726F756E64556C427574
+ 746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000
+ 00000000000007496E7665727365090C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463430343034300754726967676572061049734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506114973
+ 4D6F7573654F7665723D66616C736500000A5452656374616E676C6500095374
+ 796C654E616D650609636865636B6D61726B05416C69676E0708436F6E74656E
+ 747307436F726E6572730B08546F7052696768740B426F74746F6D5269676874
+ 000A46696C6C2E436F6C6F720709784646324138324532064C6F636B65640907
+ 4869745465737408074F70616369747905000000000000000000000C4D617267
+ 696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F7005
+ 0000000000000080FF3F0D4D617267696E732E52696768740500000000000000
+ 80FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A5369
+ 7A652E57696474680500000000005655F705400B53697A652E48656967687405
+ 000000000000008001401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174
+ 696F6E00095374796C654E616D65061A636865636B6D61726B4F706163697479
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D6506074F7061636974790A537461727456616C756505
+ 000000000000000000000953746F7056616C7565050000000000000080FF3F07
+ 54726967676572060E4973436865636B65643D747275650E5472696767657249
+ 6E7665727365060F4973436865636B65643D66616C7365000000000005545465
+ 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 0000005655FB05400B53697A652E486569676874050000000000000088044014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C6157686974650000005450463007544C
+ 61796F757400095374796C654E616D650616756C6C656674726164696F627574
+ 746F6E7374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 680500000000005655FB05400B53697A652E4865696768740500000000000000
+ A004401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F72646572023E0007544C61796F75740005416C69676E070642
+ 6F74746F6D0A506F736974696F6E2E5905000000000000008804400A53697A65
+ 2E57696474680500000000005655FB05400B53697A652E486569676874050000
+ 0000000000C001401453697A652E506C6174666F726D44656661756C7408000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0708436F6E74656E747307436F726E6572730B07546F704C65
+ 66740A426F74746F6D4C656674000A46696C6C2E436F6C6F7207097846463230
+ 32303230064C6F636B6564090748697454657374080A53697A652E5769647468
+ 0500000000005655FB05400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F720709784646313531353135000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D6506216261636B67726F756E64556C427574746F6E
436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000000000
00000007496E7665727365090C50726F70657274794E616D65060A46696C6C2E
436F6C6F720A537461727456616C756507097846463230323032300953746F70
56616C756507097846463430343034300754726967676572061049734D6F7573
654F7665723D747275650E54726967676572496E7665727365061149734D6F75
- 73654F7665723D66616C736500000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508
- 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
- 060C5374726F6B652E436F6C6F720A537461727456616C756507097846463135
- 313531350953746F7056616C7565070978464632413832453207547269676765
- 72060E4973436865636B65643D747275650E54726967676572496E7665727365
- 060F4973436865636B65643D66616C7365000000000554546578740009537479
- 6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65
- 64090748697454657374080A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000A803401453697A652E506C
- 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
- 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
- 5374796C654E616D650618756C63656E746572726164696F627574746F6E7374
+ 73654F7665723D66616C736500000A5452656374616E676C6500095374796C65
+ 4E616D650609636865636B6D61726B05416C69676E0708436F6E74656E747307
+ 436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 737408074F70616369747905000000000000000000000C4D617267696E732E4C
+ 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
+ 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
+ 6474680500000000005655F705400B53697A652E486569676874050000000000
+ 00008001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0009
+ 5374796C654E616D65061A636865636B6D61726B4F706163697479416E696D61
+ 74696F6E31084475726174696F6E05000000000000000000000C50726F706572
+ 74794E616D6506074F7061636974790A537461727456616C7565050000000000
+ 00000000000953746F7056616C7565050000000000000080FF3F075472696767
+ 6572060E4973436865636B65643D747275650E54726967676572496E76657273
+ 65060F4973436865636B65643D66616C73650000000000055454657874000953
+ 74796C654E616D6506047465787405416C69676E0706436C69656E74064C6F63
+ 6B6564090748697454657374080A53697A652E57696474680500000000005655
+ FB05400B53697A652E48656967687405000000000000008804401453697A652E
+ 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C6157686974650000005450463007544C61796F7574
+ 00095374796C654E616D65061670726F677265737362617266696E6973687374
796C6505416C69676E070643656E7465720A53697A652E576964746805000000
- 00005655FB05400B53697A652E4865696768740500000000000000A004401453
+ 000033338505400B53697A652E4865696768740500000000009999E104401453
697A652E506C6174666F726D44656661756C74080756697369626C6508085461
- 624F7264657202360007544C61796F75740005416C69676E0706426F74746F6D
- 0A506F736974696F6E2E5905000000000000008804400A53697A652E57696474
- 680500000000005655FB05400B53697A652E4865696768740500000000000000
- C001401453697A652E506C6174666F726D44656661756C7408000A5452656374
- 616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C69
- 676E0708436F6E74656E747307436F726E6572730B07546F704C6566740A426F
- 74746F6D4C656674000A46696C6C2E436F6C6F72070978464632303230323006
- 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
- 005655FB05400B53697A652E4865696768740500000000000000C00140145369
- 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
- 0709784646313531353135000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D6506216261636B67726F756E64556C427574746F6E436F6C6F72
- 416E696D6174696F6E31084475726174696F6E05000000000000000000000749
- 6E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C6F72
- 0A537461727456616C756507097846463230323032300953746F7056616C7565
- 07097846463430343034300754726967676572061049734D6F7573654F766572
- 3D747275650E54726967676572496E7665727365061149734D6F7573654F7665
- 723D66616C736500000A5452656374616E676C6500095374796C654E616D6506
- 09636865636B6D61726B05416C69676E0708436F6E74656E747307436F726E65
- 72730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C
- 6F720709784646324138324532064C6F636B656409074869745465737408074F
- 70616369747905000000000000000000000C4D617267696E732E4C6566740500
- 00000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F
- 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
- 732E426F74746F6D050000000000000080FF3F0A53697A652E57696474680500
- 000000005655F705400B53697A652E4865696768740500000000000000800140
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C65
- 4E616D65061A636865636B6D61726B4F706163697479416E696D6174696F6E31
- 084475726174696F6E05000000000000000000000C50726F70657274794E616D
- 6506074F7061636974790A537461727456616C75650500000000000000000000
- 0953746F7056616C7565050000000000000080FF3F0754726967676572060E49
- 73436865636B65643D747275650E54726967676572496E7665727365060F4973
- 436865636B65643D66616C7365000000000005545465787400095374796C654E
- 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
- 48697454657374080A53697A652E57696474680500000000005655FB05400B53
- 697A652E48656967687405000000000000008804401453697A652E506C617466
- 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
- 6F720708636C6157686974650000005450463007544C61796F75740009537479
- 6C654E616D650617756C7269676874726164696F627574746F6E7374796C6505
- 416C69676E070643656E7465720A53697A652E57696474680500000000005655
- FB05400B53697A652E4865696768740500000000000000A004401453697A652E
- 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
- 657202380007544C61796F75740005416C69676E0706426F74746F6D0A506F73
- 6974696F6E2E5905000000000000008804400A53697A652E5769647468050000
- 0000005655FB05400B53697A652E4865696768740500000000000000C0014014
- 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
- 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
- 436F6E74656E747307436F726E6572730B08546F7052696768740B426F74746F
- 6D5269676874000A46696C6C2E436F6C6F720709784646323032303230064C6F
- 636B6564090748697454657374080A53697A652E576964746805000000000056
- 55FB05400B53697A652E4865696768740500000000000000C001401453697A65
- 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
- 784646313531353135000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D6506216261636B67726F756E64556C427574746F6E436F6C6F72416E
- 696D6174696F6E31084475726174696F6E050000000000000000000007496E76
- 65727365090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
- 7461727456616C756507097846463230323032300953746F7056616C75650709
- 7846463430343034300754726967676572061049734D6F7573654F7665723D74
- 7275650E54726967676572496E7665727365061149734D6F7573654F7665723D
- 66616C736500000A5452656374616E676C6500095374796C654E616D65060963
- 6865636B6D61726B05416C69676E0708436F6E74656E747307436F726E657273
- 0B08546F7052696768740B426F74746F6D5269676874000A46696C6C2E436F6C
- 6F720709784646324138324532064C6F636B656409074869745465737408074F
- 70616369747905000000000000000000000C4D617267696E732E4C6566740500
- 00000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F
- 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
- 732E426F74746F6D050000000000000080FF3F0A53697A652E57696474680500
- 000000005655F705400B53697A652E4865696768740500000000000000800140
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C65
- 4E616D65061A636865636B6D61726B4F706163697479416E696D6174696F6E31
- 084475726174696F6E05000000000000000000000C50726F70657274794E616D
- 6506074F7061636974790A537461727456616C75650500000000000000000000
- 0953746F7056616C7565050000000000000080FF3F0754726967676572060E49
- 73436865636B65643D747275650E54726967676572496E7665727365060F4973
- 436865636B65643D66616C7365000000000005545465787400095374796C654E
- 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
- 48697454657374080A53697A652E57696474680500000000005655FB05400B53
- 697A652E48656967687405000000000000008804401453697A652E506C617466
- 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
- 6F720708636C6157686974650000005450463007544C61796F75740009537479
- 6C654E616D650616756C6C656674726164696F627574746F6E7374796C650541
- 6C69676E070643656E7465720A53697A652E57696474680500000000005655FB
- 05400B53697A652E4865696768740500000000000000A004401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 72023A0007544C61796F75740005416C69676E0706426F74746F6D0A506F7369
- 74696F6E2E5905000000000000008804400A53697A652E576964746805000000
- 00005655FB05400B53697A652E4865696768740500000000000000C001401453
- 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
- 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
- 6F6E74656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C
- 656674000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
- 64090748697454657374080A53697A652E57696474680500000000005655FB05
- 400B53697A652E4865696768740500000000000000C001401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 313531353135000F54436F6C6F72416E696D6174696F6E00095374796C654E61
- 6D6506216261636B67726F756E64556C427574746F6E436F6C6F72416E696D61
- 74696F6E31084475726174696F6E050000000000000000000007496E76657273
- 65090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
- 7456616C756507097846463230323032300953746F7056616C75650709784646
- 3430343034300754726967676572061049734D6F7573654F7665723D74727565
- 0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C
- 736500000A5452656374616E676C6500095374796C654E616D65060963686563
- 6B6D61726B05416C69676E0708436F6E74656E747307436F726E6572730B0754
- 6F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F72070978
- 4646324138324532064C6F636B656409074869745465737408074F7061636974
- 7905000000000000000000000C4D617267696E732E4C65667405000000000000
- 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
- 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
- 746F6D050000000000000080FF3F0A53697A652E576964746805000000000056
- 55F705400B53697A652E48656967687405000000000000008001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506
- 1A636865636B6D61726B4F706163697479416E696D6174696F6E310844757261
- 74696F6E05000000000000000000000C50726F70657274794E616D6506074F70
- 61636974790A537461727456616C756505000000000000000000000953746F70
- 56616C7565050000000000000080FF3F0754726967676572060E497343686563
- 6B65643D747275650E54726967676572496E7665727365060F4973436865636B
- 65643D66616C7365000000000005545465787400095374796C654E616D650604
- 7465787405416C69676E0706436C69656E74064C6F636B656409074869745465
- 7374080A53697A652E57696474680500000000005655FB05400B53697A652E48
- 656967687405000000000000008804401453697A652E506C6174666F726D4465
- 6661756C7408165465787453657474696E67732E466F6E74436F6C6F72070863
- 6C6157686974650000005450463007544C61796F757400095374796C654E616D
- 65061070726F67726573736261727374796C6505416C69676E070643656E7465
- 720A53697A652E576964746805000000000033338505400B53697A652E486569
- 6768740500000000009999E104401453697A652E506C6174666F726D44656661
- 756C74080756697369626C6508085461624F72646572023D000A545265637461
- 6E676C6500095374796C654E616D65060668747261636B05416C69676E070843
- 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F
- 636B6564090748697454657374080A53697A652E576964746805000000000033
- 338505400B53697A652E4865696768740500000000009999E104401453697A65
- 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
- 784646313531353135000A5452656374616E676C6500095374796C654E616D65
- 060A68696E64696361746F7205416C69676E07044C6566740A46696C6C2E436F
- 6C6F720709784646324138324532064C6F636B6564090748697454657374080C
- 4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E
- 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
- 0000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF
- 3F0A506F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E
- 2E59050000000000000080FF3F0A53697A652E57696474680500000000000000
- C804400B53697A652E4865696768740500000000009999D904401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E650000000A5452656374616E676C6500095374796C654E616D650606767472
- 61636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709
- 784646323032303230064C6F636B6564090748697454657374080A53697A652E
- 576964746805000000000033338505400B53697A652E48656967687405000000
- 00009999E104401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F720709784646313531353135000A5452656374616E676C
- 6500095374796C654E616D65060A76696E64696361746F7205416C69676E0706
- 426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F63
- 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
- 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
- 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
- 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
- 000080FF3F0A506F736974696F6E2E5905000000000099998904400A53697A65
- 2E576964746805000000000033338105400B53697A652E486569676874050000
- 0000000000A803401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F7574
- 00095374796C654E616D65060D657870616E6465727374796C6505416C69676E
- 070643656E7465720A53697A652E576964746805000000000000C08407400B53
- 697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508085461624F72646572023F00
- 0A5452656374616E676C6500095374796C654E616D65060B626772656374616E
- 676C6505416C69676E0708436F6E74656E74730C436C69704368696C6472656E
- 090A46696C6C2E436F6C6F720709784646324432443244064C6F636B65640907
- 48697454657374080A53697A652E576964746805000000000000C08407400B53
- 697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
- 3531350007544C61796F757400095374796C654E616D6506074C61796F757433
- 05416C69676E0703546F700A53697A652E576964746805000000000000C08407
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
- 6174666F726D44656661756C74080007544C61796F757400095374796C654E61
- 6D6506074C61796F75743405416C69676E0708436F6E74656E74730A53697A65
- 2E576964746805000000000000C08407400B53697A652E486569676874050000
- 0000000000C803401453697A652E506C6174666F726D44656661756C7408000A
- 5452656374616E676C6500095374796C654E616D65060A52656374616E676C65
- 3205416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846
- 46323532353235064C6F636B6564090748697454657374080A53697A652E5769
+ 624F726465720240000A5452656374616E676C6500095374796C654E616D6506
+ 0668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646323032303230064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F720709784646313531353135000A5452656374
+ 616E676C6500095374796C654E616D65060A68696E64696361746F7205416C69
+ 676E07044C6566740A46696C6C2E436F6C6F720709784646324345323434064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805000000
+ 0000000080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000009999D904401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650000000A5452656374616E676C65
+ 00095374796C654E616D65060676747261636B05416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
+ 090748697454657374080A53697A652E57696474680500000000003333850540
+ 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 3531353135000A5452656374616E676C6500095374796C654E616D65060A7669
+ 6E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F
+ 720709784646324345323434064C6F636B6564090748697454657374080C4D61
+ 7267696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A
+ 506F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E59
+ 05000000000099998904400A53697A652E576964746805000000000033338105
+ 400B53697A652E4865696768740500000000000000A803401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000000005450463007544C61796F757400095374796C654E616D65060D657870
+ 616E6465727374796C6505416C69676E070643656E7465720A53697A652E5769
+ 64746805000000000000C08407400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F726465720241000A5452656374616E676C650009537479
+ 6C654E616D65060B626772656374616E676C6505416C69676E0708436F6E7465
+ 6E74730C436C69704368696C6472656E090A46696C6C2E436F6C6F7207097846
+ 46324432443244064C6F636B6564090748697454657374080A53697A652E5769
64746805000000000000C08407400B53697A652E486569676874050000000000
0000C803401453697A652E506C6174666F726D44656661756C74080C5374726F
- 6B652E436F6C6F72070978464631353135313500000A5452656374616E676C65
- 00095374796C654E616D65060A52656374616E676C653105416C69676E070843
- 6F6E74656E74730A46696C6C2E436F6C6F720709784646313531353135064C6F
- 636B6564090748697454657374080A53697A652E576964746805000000000000
- C08407400B53697A652E4865696768740500000000000000C803401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506
- 14466C6F6174416E696D6174696F6E315374796C65084475726174696F6E0500
- 00000000CDCCCCFB3F0D496E746572706F6C6174696F6E070843697263756C61
- 720C50726F70657274794E616D6506075363616C652E580A537461727456616C
- 7565050000000000000080FF3F0953746F7056616C7565050000000000000000
- 00000754726967676572060F4973457870616E6465643D747275650E54726967
- 676572496E766572736506104973457870616E6465643D66616C736500000000
- 07544C61796F757400095374796C654E616D6506074C61796F75743305416C69
- 676E0708436F6E74656E74730A53697A652E576964746805000000000000C084
- 07400B53697A652E4865696768740500000000000000C803401453697A652E50
- 6C6174666F726D44656661756C74080005545465787400095374796C654E616D
- 6506047465787405416C69676E07044C656674084175746F53697A65090A436C
- 6970506172656E7409064C6F636B6564090748697454657374080C4D61726769
- 6E732E4C6566740500000000000000A002400A506F736974696F6E2E58050000
- 0000000000A002400A53697A652E576964746805000000000000B8C703400B53
+ 6B652E436F6C6F7207097846463135313531350007544C61796F757400095374
+ 796C654E616D6506074C61796F75743305416C69676E0703546F700A53697A65
+ 2E576964746805000000000000C08407400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080007
+ 544C61796F757400095374796C654E616D6506074C61796F75743405416C6967
+ 6E0708436F6E74656E74730A53697A652E576964746805000000000000C08407
+ 400B53697A652E4865696768740500000000000000C803401453697A652E506C
+ 6174666F726D44656661756C7408000A5452656374616E676C6500095374796C
+ 654E616D65060A52656374616E676C653205416C69676E0708436F6E74656E74
+ 730A46696C6C2E436F6C6F720709784646323532353235064C6F636B65640907
+ 48697454657374080A53697A652E576964746805000000000000C08407400B53
697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
- 6F720708636C615768697465165465787453657474696E67732E486F727A416C
- 69676E07074C656164696E670000000F54457870616E646572427574746F6E00
- 095374796C654E616D650606627574746F6E05416C69676E0705526967687406
- 4C6F636B6564090A506F736974696F6E2E580500000000000080F506400A5369
- 7A652E57696474680500000000000000A003400B53697A652E48656967687405
- 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
- 00000000005450463007544C61796F757400095374796C654E616D6506136578
- 70616E646572627574746F6E7374796C6505416C69676E070643656E7465720B
- 4D617267696E732E546F70050000000000000080FF3F0A53697A652E57696474
- 680500000000000000B003400B53697A652E4865696768740500000000000000
- B003401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F7264657202410005545061746800095374796C654E616D6506
- 05506174683105416C69676E070643656E74657209446174612E506174680A34
- 00000004000000000000000000C8420000C84201000000000096430000C84201
- 0000000000484300009643030000000000C8420000C8420A46696C6C2E436F6C
- 6F720708636C6157686974650748697454657374080D526F746174696F6E416E
- 676C650500000000000000B405400A53697A652E576964746805000000000000
- 00A002400B53697A652E4865696768740500000000000000C001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506
- 14466C6F6174416E696D6174696F6E315374796C65084475726174696F6E0500
- 00000000CDCCCCFB3F0D496E746572706F6C6174696F6E070843697263756C61
- 720C50726F70657274794E616D65060D526F746174696F6E416E676C650A5374
- 61727456616C75650500000000000000B405400953746F7056616C7565050000
- 00000000000000000754726967676572060F4973457870616E6465643D747275
- 650E54726967676572496E766572736506104973457870616E6465643D66616C
- 7365000000005450463007544C61796F757400095374796C654E616D65061565
- 7870616E646572636865636B626F787374796C6505416C69676E070643656E74
- 65720A53697A652E576964746805000000000000008406400B53697A652E4865
- 6967687405000000000000008404401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F7264657202430007544C61796F
- 75740005416C69676E07044C6566740A53697A652E5769647468050000000000
- 0000C003400B53697A652E48656967687405000000000000008404401453697A
- 652E506C6174666F726D44656661756C7408000554506174680005416C69676E
- 0706436C69656E7409446174612E506174680AD80100002700000000000000FE
- C8BA4402E79244020000002592AD4402E79244020000006D5BA544FEB09E4402
- 0000006D5BA544FEB09E440200000093A4A4446A0C9F44020000004A80AC44FC
- 79AA4402000000046EBA44FC79AA44020000004A00C844FC79AA440200000000
- 80CF44FEB09E44020000000080CF44FEB09E44020000000080CF44FEB09E4402
- 0000004C5BC84402E7924402000000FEC8BA4402E7924400000000FE88BA44FE
- 30974402000000B876BF44FE309744020000000277C344EEA09A440200000002
- 77C34404DE9E44020000000277C344121BA34402000000B876BF44008CA64402
- 000000FE88BA44008CA644020000004C9BB544008CA64402000000009CB14412
- 1BA34402000000009CB14404DE9E4402000000009CB144EEA09A44020000004C
- 9BB544FE30974402000000FE88BA44FE309744000000000080BA44045E9B4402
- 000000146EB844045E9B440200000000C0B64454F79C440200000000C0B64400
- F09E440200000000C0B644ACE8A04402000000146EB844FC81A2440200000000
- 80BA44FC81A24402000000EC91BC44FC81A244020000000040BE44ACE8A04402
- 0000000040BE4400F09E44020000000040BE4454F79C4402000000EC91BC4404
- 5E9B44020000000080BA44045E9B440A46696C6C2E436F6C6F72070978363030
- 30303030300748697454657374080C4D617267696E732E4C6566740500000000
- 0000008000400B4D617267696E732E546F7005000000000000008000400D4D61
- 7267696E732E526967687405000000000000008000400E4D617267696E732E42
- 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
- 000000A003400B53697A652E4865696768740500000000000000E80340145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E6508577261704D6F64650703466974000F54436F6C6F72416E696D61
- 74696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 36303030303030300953746F7056616C75650708636C61426C61636B07547269
- 67676572060E4973436865636B65643D7472756500000F54436F6C6F72416E69
- 6D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70
- 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
- 08636C61426C61636B0953746F7056616C756507097836303030303030300754
- 726967676572060F4973436865636B65643D66616C7365000000000554546578
- 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
- 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
- 0000000000008002400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E5269676874050000000000000080FF3F0A53697A652E57
- 696474680500000000000000C605400B53697A652E4865696768740500000000
- 000000F803401453697A652E506C6174666F726D44656661756C740816546578
- 7453657474696E67732E466F6E74436F6C6F7207097846464545454545451654
- 65787453657474696E67732E486F727A416C69676E07074C656164696E670000
- 005450463007544C61796F757400095374796C654E616D65060E6C6162656C66
- 696C6C7374796C6505416C69676E070643656E7465720A53697A652E57696474
- 680500000000000000C805400B53697A652E4865696768740500000000000000
- C803401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F726465720246000A5452656374616E676C6500095374796C65
- 4E616D65060A52656374616E676C653105416C69676E0708436F6E74656E7473
- 0A46696C6C2E436F6C6F7207097846463135313531350A53697A652E57696474
- 680500000000000000C805400B53697A652E4865696768740500000000000000
- C803401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E65000005545465787400095374796C654E616D650604
- 7465787405416C69676E0708436F6E74656E74730748697454657374080A5369
- 7A652E57696474680500000000000000C805400B53697A652E48656967687405
- 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
- 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
- 650000005450463007544C61796F757400095374796C654E616D650613636F6D
- 626F656469746572726F727374796C6505416C69676E070643656E7465720A53
- 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
+ 35313500000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646313531353135064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000000C08407400B53697A652E486569676874
0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 080756697369626C6508085461624F72646572020F000C5442727573684F626A
- 65637400095374796C654E616D65060A666F726567726F756E6400000B54466F
- 6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E53
- 697A650500000000000000D00240000007544C61796F757400095374796C654E
- 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A
- 53697A652E57696474680500000000000000C805400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 7408000A5452656374616E676C6500095374796C654E616D65060A5265637461
- 6E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F720709
- 7846463230323032300748697454657374080A53697A652E5769647468050000
- 0000000000C805400B53697A652E4865696768740500000000000000C8034014
- 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
- 6F720709784646323032303230000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508
- 4475726174696F6E050000000000000000000007496E7665727365090C50726F
- 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
- 756507097846463230323032300953746F7056616C7565070978464634303430
- 34300754726967676572062049734D6F7573654F7665723D747275653B497346
- 6F63757365643D66616C73650E54726967676572496E7665727365062149734D
- 6F7573654F7665723D66616C73653B4973466F63757365643D66616C73650000
- 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C
- 6F72416E696D6174696F6E325374796C65084475726174696F6E050000000000
- 000000000007496E7665727365090C50726F70657274794E616D65060C537472
- 6F6B652E436F6C6F720A537461727456616C7565070978464634303430343009
- 53746F7056616C756507097846464532324132410754726967676572061F4973
- 4D6F7573654F7665723D747275653B4973466F63757365643D747275650E5472
- 6967676572496E7665727365062049734D6F7573654F7665723D747275653B49
- 73466F63757365643D66616C7365000007544C61796F757400095374796C654E
- 616D6506056172726F7705416C69676E070846697452696768740B4D61726769
- 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
- 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
- 0080FF3F0A506F736974696F6E2E580500000000005ED99705400A506F736974
- 696F6E2E59050000000000000080FF3F0A53697A652E57696474680500000000
- 00889AB803400B53697A652E4865696768740500000000000000B80340145369
- 7A652E506C6174666F726D44656661756C7408000A5452656374616E676C6500
- 095374796C654E616D65060A52656374616E676C653105416C69676E0708436F
- 6E74656E74730A46696C6C2E436F6C6F72070978464633303330333007486974
- 54657374080A53697A652E5769647468050000000000889AB803400B53697A65
- 2E4865696768740500000000000000B803401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C
- 6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E69
- 6D6174696F6E315374796C65084475726174696F6E0500000000000000000000
- 07496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C
- 6F720A537461727456616C756507097846463330333033300953746F7056616C
- 756507097846463430343034300754726967676572062049734D6F7573654F76
- 65723D747275653B4973466F63757365643D66616C73650E5472696767657249
- 6E7665727365062149734D6F7573654F7665723D66616C73653B4973466F6375
- 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
- 6C654E616D650614436F6C6F72416E696D6174696F6E325374796C6508447572
- 6174696F6E05000000000000000000000C50726F70657274794E616D65060A46
- 696C6C2E436F6C6F720A537461727456616C7565070978464634303430343009
- 53746F7056616C756507097846463943313731370754726967676572061F4973
- 466F63757365643D747275653B49734D6F7573654F7665723D74727565000000
- 07544C61796F757400095374796C654E616D6506074C61796F75743105416C69
- 676E070643656E7465720C4D617267696E732E4C656674050000000000000080
- FF3F0A53697A652E57696474680500000000000000A002400B53697A652E4865
- 696768740500000000000000C001401453697A652E506C6174666F726D446566
- 61756C74080005545061746800095374796C654E616D65060550617468310541
- 6C69676E0706436C69656E7409446174612E506174680A340000000400000000
- 0000000000C8420000C84201000000000096430000C842010000000000484300
- 009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C6157
- 686974650748697454657374080A53697A652E57696474680500000000000000
- A002400B53697A652E4865696768740500000000000000C001401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E650000000000000C5442727573684F626A65637400095374796C654E616D65
- 060973656C656374696F6E0B42727573682E436F6C6F72070978393632413832
- 4532000007544C61796F757400095374796C654E616D650607636F6E74656E74
- 05416C69676E0706436C69656E740C4D617267696E732E4C6566740500000000
- 0000008000400B4D617267696E732E546F7005000000000000008000400D4D61
- 7267696E732E52696768740500000000000000F003400E4D617267696E732E42
- 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
- 0000008805400B53697A652E4865696768740500000000000000A80340145369
- 7A652E506C6174666F726D44656661756C74080000005450463007544C61796F
- 757400095374796C654E616D65061E70726F6772657373626172696E64657465
- 726D696E61626C657374796C6505416C69676E070643656E7465720A53697A65
- 2E5769647468050000000000ABAAB006400B53697A652E486569676874050000
- 0000000000C003401453697A652E506C6174666F726D44656661756C74080756
- 697369626C6508085461624F72646572023C000A5452656374616E676C650009
- 5374796C654E616D65060676747261636B05416C69676E0708436F6E74656E74
- 7307456E61626C6564080A46696C6C2E436F6C6F720709784646323032303230
- 064C6F636B6564090748697454657374080A53697A652E576964746805000000
- 00000000E006400B53697A652E48656967687405000000000000009404401453
- 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
- 7207097846463135313531350756697369626C6508000A5452656374616E676C
- 6500095374796C654E616D65060A76696E64696361746F7205416C69676E0706
- 426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F63
- 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
- 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
- 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
- 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
- 000080FF3F0A506F736974696F6E2E590500000000000000F002400A53697A65
- 2E57696474680500000000000000DE06400B53697A652E486569676874050000
- 0000000000A803401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E6500000007544C61796F75740009537479
- 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A53
- 697A652E5769647468050000000000ABAAB006400B53697A652E486569676874
- 0500000000000000C003401453697A652E506C6174666F726D44656661756C74
- 08000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
- 6F756E6405416C69676E0708436F6E74656E74730C436C69704368696C647265
- 6E090A46696C6C2E436F6C6F720709784646324138324532064C6F636B656409
- 0748697454657374080A53697A652E5769647468050000000000ABAAB006400B
- 53697A652E4865696768740500000000000000C003401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 31353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0614436F6C6F72416E696D6174696F6E315374796C6507456E61626C65640908
- 4475726174696F6E0500000000000000800140044C6F6F70090C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463230323032300953746F7056616C75650709784646324138324532075472
- 6967676572060E497356697369626C653D747275650000000000545046300754
- 4C61796F757400095374796C654E616D650611616E69696E64696361746F7273
- 74796C6505416C69676E070643656E7465720756697369626C65080004544172
- 6300095374796C654E616D65060341726305416C69676E0708436F6E74656E74
- 730748697454657374080D526F746174696F6E416E676C650500000000000000
- B407400A53697A652E57696474680500000000000000C804400B53697A652E48
- 65696768740500000000000000C804401453697A652E506C6174666F726D4465
- 6661756C74080C5374726F6B652E436F6C6F720708636C615768697465105374
- 726F6B652E546869636B6E657373050000000000000080004008456E64416E67
- 6C650500000000000000B405C0000F54466C6F6174416E696D6174696F6E0009
- 5374796C654E616D650603616E6907456E61626C656409084475726174696F6E
- 050000000000000080FF3F044C6F6F70090C50726F70657274794E616D65060D
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D61
+ 74696F6E00095374796C654E616D650614466C6F6174416E696D6174696F6E31
+ 5374796C65084475726174696F6E050000000000CDCCCCFB3F0D496E74657270
+ 6F6C6174696F6E070843697263756C61720C50726F70657274794E616D650607
+ 5363616C652E580A537461727456616C7565050000000000000080FF3F095374
+ 6F7056616C756505000000000000000000000754726967676572060F49734578
+ 70616E6465643D747275650E54726967676572496E7665727365061049734578
+ 70616E6465643D66616C73650000000007544C61796F757400095374796C654E
+ 616D6506074C61796F75743305416C69676E0708436F6E74656E74730A53697A
+ 652E576964746805000000000000C08407400B53697A652E4865696768740500
+ 000000000000C803401453697A652E506C6174666F726D44656661756C740800
+ 05545465787400095374796C654E616D6506047465787405416C69676E07044C
+ 656674084175746F53697A65090A436C6970506172656E7409064C6F636B6564
+ 090748697454657374080C4D617267696E732E4C6566740500000000000000A0
+ 02400A506F736974696F6E2E580500000000000000A002400A53697A652E5769
+ 64746805000000000000B8C703400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746516546578
+ 7453657474696E67732E486F727A416C69676E07074C656164696E670000000F
+ 54457870616E646572427574746F6E00095374796C654E616D65060662757474
+ 6F6E05416C69676E07055269676874064C6F636B6564090A506F736974696F6E
+ 2E580500000000000080F506400A53697A652E57696474680500000000000000
+ A003400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C740800000000005450463007544C61796F75
+ 7400095374796C654E616D650613657870616E646572627574746F6E7374796C
+ 6505416C69676E070643656E7465720B4D617267696E732E546F700500000000
+ 00000080FF3F0A53697A652E57696474680500000000000000B003400B53697A
+ 652E4865696768740500000000000000B003401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508085461624F726465720242000554
+ 5061746800095374796C654E616D650605506174683105416C69676E07064365
+ 6E74657209446174612E506174680A3400000004000000000000000000C84200
+ 00C84201000000000096430000C8420100000000004843000096430300000000
+ 00C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080D526F746174696F6E416E676C650500000000000000B405400A53
+ 697A652E57696474680500000000000000A002400B53697A652E486569676874
+ 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D61
+ 74696F6E00095374796C654E616D650614466C6F6174416E696D6174696F6E31
+ 5374796C65084475726174696F6E050000000000CDCCCCFB3F0D496E74657270
+ 6F6C6174696F6E070843697263756C61720C50726F70657274794E616D65060D
526F746174696F6E416E676C650A537461727456616C75650500000000000000
- 0000000953746F7056616C75650500000000000000B407400754726967676572
- 060E497356697369626C653D74727565000000005450463007544C61796F7574
- 00095374796C654E616D650615616E69696E64696361746F72686F727A737479
- 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 000040C006400B53697A652E4865696768740500000000000000800040145369
- 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
- 656374616E676C6500095374796C654E616D65060A52656374616E676C653105
- 416C69676E0706436C69656E740C436C69704368696C6472656E090A46696C6C
- 2E436F6C6F7207097846463430343034300A53697A652E576964746805000000
- 00000040C006400B53697A652E48656967687405000000000000008000401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E650005544C696E6500095374796C654E616D6506054C696E653108
- 4C696E65547970650706426F74746F6D0A53697A652E57696474680500000000
- 000000A00B400B53697A652E4865696768740500000000000000800040145369
- 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
- 0709784646324138324532105374726F6B652E546869636B6E65737305000000
- 000000008002400B5374726F6B652E44617368070444617368000F54466C6F61
- 74416E696D6174696F6E00095374796C654E616D650603616E6907456E61626C
- 656409084475726174696F6E0500000000000000800340044C6F6F70090C5072
- 6F70657274794E616D65060A506F736974696F6E2E580A537461727456616C75
- 650500000000000000C808C00953746F7056616C756505000000000000000000
- 000754726967676572060E497356697369626C653D7472756500000000005450
- 463007544C61796F757400095374796C654E616D65060A70616E656C7374796C
- 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
- 0000C006400B53697A652E4865696768740500000000000000A406401453697A
- 652E506C6174666F726D44656661756C74080756697369626C6508000A545265
- 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
- 6C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230
- 323032300A53697A652E57696474680500000000000000C006400B53697A652E
- 4865696768740500000000000000A406401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000054504630
- 07544C61796F757400095374796C654E616D65060E6C6F67627574746F6E7374
- 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
- 00000000C005400B53697A652E4865696768740500000000000000C005401453
- 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
- 624F726465720201000A5452656374616E676C6500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E0706436C69656E740C436C69704368
- 696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F720709
- 7846463230323032300748697454657374080A53697A652E5769647468050000
- 0000000000C005400B53697A652E4865696768740500000000000000C0054014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E
- 616D650615627574746F6E436F6C6F72416E696D6174696F6E31084475726174
- 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
- 6C2E436F6C6F720A537461727456616C75650709784646323032303230095374
- 6F7056616C756507097846463430343034300754726967676572063049734D6F
- 7573654F7665723D747275653B4973507265737365643D66616C73653B497346
- 6F63757365643D66616C73650E54726967676572496E7665727365063149734D
- 6F7573654F7665723D66616C73653B4973507265737365643D66616C73653B49
- 73466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E
- 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
- 6E32084475726174696F6E05000000000000000000000C50726F70657274794E
- 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464634
- 30343034300953746F7056616C75650709784646313735373943075472696767
- 6572062F4973507265737365643D747275653B49734D6F7573654F7665723D74
- 7275653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D
- 6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E69
- 6D6174696F6E33084475726174696F6E05000000000000000000000C50726F70
- 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
- 097846463241383245320953746F7056616C7565070978464631373537394307
- 54726967676572062E4973507265737365643D747275653B49734D6F7573654F
- 7665723D747275653B4973466F63757365643D747275650E5472696767657249
- 6E7665727365062F4973507265737365643D66616C73653B49734D6F7573654F
- 7665723D747275653B4973466F63757365643D74727565000005545061746800
- 095374796C654E616D650605506174683105416C69676E0706436C69656E7409
- 446174612E506174680A5C02000032000000000000000000A841CDCCCC400100
- 00000000A8410000C041010000000000C03F0000C041010000000000C03F0000
- 0000010000009A99694100000000010000000000A841CDCCCC40030000000000
- A841CDCCCC400000000000009C410000F04001000000000058410000F0400100
- 0000000058410000C03F01000000000040400000C03F01000000000040400000
- B4410100000000009C410000B4410100000000009C410000F040030000000000
- 9C410000F04000000000000040410000F04001000000000090400000F0400100
- 0000000090400000C04001000000000040410000C04001000000000040410000
- F04003000000000040410000F040000000000000904000001041010000000000
- 9041000010410100000000009041000028410100000000009040000028410100
- 0000000090400000104103000000000090400000104100000000000090400000
- 4041010000000000904100004041010000000000904100005841010000000000
- 9040000058410100000000009040000040410300000000009040000040410000
- 0000000090400000704101000000000090410000704101000000000090410000
- 8441010000000000904000008441010000000000904000007041030000000000
- 9040000070410000000000009040000090410100000000009041000090410100
- 00000000904100009C41010000000000904000009C4101000000000090400000
- 904103000000000090400000904100000000000070410000C040010000003333
- 93410000C04001000000000070416666264001000000000070410000C0400300
- 0000000070410000C0400A46696C6C2E436F6C6F720708636C61576869746507
- 48697454657374080C4D617267696E732E4C6566740500000000000000A00240
- 0B4D617267696E732E546F700500000000000000A002400D4D617267696E732E
- 52696768740500000000000000A002400E4D617267696E732E426F74746F6D05
- 00000000000000A002400A53697A652E57696474680500000000000000980540
- 0B53697A652E48656967687405000000000000009805401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508
- 577261704D6F64650703466974000000005450463007544C61796F7574000953
- 74796C654E616D65061470726F67726573736261726D696E697374796C650541
- 6C69676E070643656E7465720A53697A652E5769647468050000000000333385
- 05400B53697A652E4865696768740500000000009999E104401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 720219000A5452656374616E676C6500095374796C654E616D65060668747261
- 636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978
- 4646343034303430064C6F636B6564090748697454657374080A53697A652E57
- 6964746805000000000033338505400B53697A652E4865696768740500000000
- 009999E104401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E65000A5452656374616E676C6500095374796C
- 654E616D65060A68696E64696361746F7205416C69676E07044C6566740A4669
- 6C6C2E436F6C6F720709784646324138324532064C6F636B6564090748697454
- 657374080A53697A652E57696474680500000000000000C804400B53697A652E
- 4865696768740500000000009999E104401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000A545265
- 6374616E676C6500095374796C654E616D65060676747261636B05416C69676E
- 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646343034303430
- 064C6F636B6564090748697454657374080A53697A652E576964746805000000
- 000033338505400B53697A652E4865696768740500000000009999E104401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E65000A5452656374616E676C6500095374796C654E616D65060A76
- 696E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C
- 6F720709784646324138324532064C6F636B6564090748697454657374080A50
- 6F736974696F6E2E5905000000000099998D04400A53697A652E576964746805
- 000000000033338505400B53697A652E4865696768740500000000000000A803
- 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E6500000000}
- end
- item
- Platform = 'OSX Yosemite'
- ResourcesBin = {
- 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
- AF00060B627574746F6E7374796C6503EB04060D636865636B626F787374796C
- 6503EA050609656469747374796C6503D4050609677269647374796C6503E608
- 060D67726F7570626F787374796C6503B402060F6865616465726974656D7374
- 796C6503F403060E696D61676563656C6C7374796C65033D01060A6C6162656C
- 7374796C65032001060D6C697374626F78666F6F746572038B0106106C697374
- 626F786974656D7374796C6503520306126C697374626F78706C61696E686561
- 646572036C02060C6C697374626F787374796C6503B307060E706F7075706365
- 6C6C7374796C65038E03061070726F67726573736261727374796C6503020506
- 1170726F677265737363656C6C7374796C6503CB0206147363726F6C6C626172
- 68747261636B7374796C65033B01060E7363726F6C6C6261727374796C650363
- 0406147363726F6C6C62617276747261636B7374796C65033B01060C7370696E
- 626F787374796C65034F08060B7377697463687374796C6503ED01060F746162
- 636F6E74726F6C7374796C6503F701060B746162646F747374796C65037F0106
- 0C7461626974656D7374796C65032B05060D7465787463656C6C7374796C6503
- A601060D7468756D626261727374796C65034C03060A7468756D627374796C65
- 033B02060D747261636B6261727374796C65034A0806096D656D6F7374796C65
- 030D08060D73697A65677269707374796C6503FB04060E737461747573626172
- 7374796C6503DB01060C746F6F6C6261727374796C6503CA00061570726F6772
- 6573736261726572726F727374796C65030705060E6C696E6B6C6162656C7374
- 796C65035003060C706F706F7665727374796C65035B02060D706F707570626F
- 787374796C6503630606157363726F6C6C626172626F74746F6D627574746F6E
- 036E0406137363726F6C6C6261726C656674627574746F6E0387040614736372
- 6F6C6C6261727269676874627574746F6E038A0406127363726F6C6C62617274
- 6F70627574746F6E038404060D636F6D626F626F787374796C65032607061473
- 74617475736261726E6F677269707374796C6503D4000613736D616C6C736372
- 6F6C6C6261727374796C6503AE01060D73706C69747465727374796C65030103
- 06106D656E756261726974656D7374796C65035C0B060C6D656E756261727374
- 796C6503B802060D6D656E756974656D7374796C6503890B06126D656E757365
- 70617261746F727374796C6503E501060D6D656E75766965777374796C6503DD
- 020610726164696F627574746F6E7374796C6503C4050618756C63656E746572
- 726164696F627574746F6E7374796C65035D050616756C6C656674726164696F
- 627574746F6E7374796C6503A7050617756C7269676874726164696F62757474
- 6F6E7374796C6503B705061470726F67726573736261726D696E697374796C65
- 03F403060E636F6D626F656469747374796C6503F8090613657870616E646572
- 627574746F6E7374796C650381020615657870616E646572636865636B626F78
- 7374796C6503DB05060D657870616E6465727374796C650316070615616E6969
- 6E64696361746F72686F727A7374796C6503D5020611616E69696E6469636174
- 6F727374796C6503BA01060A70616E656C7374796C65034401061970726F6772
- 6573736261726D696E696572726F727374796C6503E503060E6C6F6762757474
- 6F6E7374796C6503DA0700545046300A5452656374616E676C6500095374796C
- 654E616D65060F6261636B67726F756E647374796C6505416C69676E07064365
- 6E7465720A46696C6C2E436F6C6F7207097846463244324432440A53697A652E
- 576964746805000000000000009407400B53697A652E48656967687405000000
- 00000080D206401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E650756697369626C65080000545046300754
- 4C61796F757400095374796C654E616D65060B627574746F6E7374796C650541
- 6C69676E070643656E7465720A53697A652E57696474680500000000000000C8
- 05400B53697A652E4865696768740500000000000000C803401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 720202000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0706436C69656E740C436C69704368696C647265
- 6E090A436C6970506172656E74090A46696C6C2E436F6C6F7207097846463230
- 323032300748697454657374080A53697A652E57696474680500000000000000
+ B405400953746F7056616C756505000000000000000000000754726967676572
+ 060F4973457870616E6465643D747275650E54726967676572496E7665727365
+ 06104973457870616E6465643D66616C7365000000005450463007544C61796F
+ 757400095374796C654E616D650615657870616E646572636865636B626F7873
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 00000000008406400B53697A652E486569676874050000000000000084044014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F7264657202430007544C61796F75740005416C69676E07044C6566740A
+ 53697A652E57696474680500000000000000C003400B53697A652E4865696768
+ 7405000000000000008404401453697A652E506C6174666F726D44656661756C
+ 7408000554506174680005416C69676E0706436C69656E7409446174612E5061
+ 74680AD80100002700000000000000FEC8BA4402E79244020000002592AD4402
+ E79244020000006D5BA544FEB09E44020000006D5BA544FEB09E440200000093
+ A4A4446A0C9F44020000004A80AC44FC79AA4402000000046EBA44FC79AA4402
+ 0000004A00C844FC79AA44020000000080CF44FEB09E44020000000080CF44FE
+ B09E44020000000080CF44FEB09E44020000004C5BC84402E7924402000000FE
+ C8BA4402E7924400000000FE88BA44FE30974402000000B876BF44FE30974402
+ 0000000277C344EEA09A44020000000277C34404DE9E44020000000277C34412
+ 1BA34402000000B876BF44008CA64402000000FE88BA44008CA644020000004C
+ 9BB544008CA64402000000009CB144121BA34402000000009CB14404DE9E4402
+ 000000009CB144EEA09A44020000004C9BB544FE30974402000000FE88BA44FE
+ 309744000000000080BA44045E9B4402000000146EB844045E9B440200000000
+ C0B64454F79C440200000000C0B64400F09E440200000000C0B644ACE8A04402
+ 000000146EB844FC81A244020000000080BA44FC81A24402000000EC91BC44FC
+ 81A244020000000040BE44ACE8A044020000000040BE4400F09E440200000000
+ 40BE4454F79C4402000000EC91BC44045E9B44020000000080BA44045E9B440A
+ 46696C6C2E436F6C6F7207097836303030303030300748697454657374080C4D
+ 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 0000008000400E4D617267696E732E426F74746F6D0500000000000000800040
+ 0A53697A652E57696474680500000000000000A003400B53697A652E48656967
+ 68740500000000000000E803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64650703
+ 466974000F54436F6C6F72416E696D6174696F6E00084475726174696F6E0500
+ 00000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097836303030303030300953746F7056616C
+ 75650708636C61426C61636B0754726967676572060E4973436865636B65643D
+ 7472756500000F54436F6C6F72416E696D6174696F6E00084475726174696F6E
+ 050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C75650708636C61426C61636B0953746F705661
+ 6C756507097836303030303030300754726967676572060F4973436865636B65
+ 643D66616C73650000000005545465787400095374796C654E616D6506047465
+ 787405416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C65667405000000000000008002400B4D617267696E
+ 732E546F7005000000000000008000400D4D617267696E732E52696768740500
+ 00000000000080FF3F0A53697A652E57696474680500000000000000C605400B
+ 53697A652E4865696768740500000000000000F803401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720709784646454545454545165465787453657474696E67732E486F727A
+ 416C69676E07074C656164696E670000005450463007544C61796F7574000953
+ 74796C654E616D65060E6C6162656C66696C6C7374796C6505416C69676E0706
+ 43656E7465720A53697A652E57696474680500000000000000C805400B53697A
+ 652E4865696768740500000000000000C803401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508085461624F726465720244000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 3135313531350A53697A652E57696474680500000000000000C805400B53697A
+ 652E4865696768740500000000000000C803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0708436F6E74
+ 656E74730748697454657374080A53697A652E57696474680500000000000000
C805400B53697A652E4865696768740500000000000000C803401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E6507585261646975730500000000000000C000400759526164697573050000
- 0000000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C65
- 4E616D650615627574746F6E436F6C6F72416E696D6174696F6E310844757261
- 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
- 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
- 746F7056616C756507097846463430343034300754726967676572063049734D
- 6F7573654F7665723D747275653B4973507265737365643D66616C73653B4973
- 466F63757365643D66616C73650E54726967676572496E766572736506314973
- 4D6F7573654F7665723D66616C73653B4973507265737365643D66616C73653B
- 4973466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F
- 6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D617469
- 6F6E32084475726174696F6E05000000000000000000000C50726F7065727479
- 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
- 3430343034300953746F7056616C756507097846463137353739430754726967
- 676572062F4973507265737365643D747275653B49734D6F7573654F7665723D
- 747275653B4973466F63757365643D66616C736500000F54436F6C6F72416E69
- 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
- 696D6174696F6E33084475726174696F6E05000000000000000000000C50726F
- 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
- 07097846463241383245320953746F7056616C75650709784646313735373943
- 0754726967676572062E4973507265737365643D747275653B49734D6F757365
- 4F7665723D747275653B4973466F63757365643D747275650E54726967676572
- 496E7665727365062F4973507265737365643D66616C73653B49734D6F757365
- 4F7665723D747275653B4973466F63757365643D747275650000000554546578
- 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
- 13456E61626C6544726167486967686C69676874080748697454657374080A53
- 697A652E57696474680500000000000000C805400B53697A652E486569676874
- 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
- 74650000005450463007544C61796F757400095374796C654E616D65060D6368
- 65636B626F787374796C6505416C69676E070643656E7465720A53697A652E57
- 69647468050000000000ACAA8006400B53697A652E4865696768740500000000
- 0058559904401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F7264657202030007544C61796F75740005416C69676E
- 07044C6566740A53697A652E576964746805000000000000009003400B53697A
- 652E48656967687405000000000058559904401453697A652E506C6174666F72
- 6D44656661756C7408000A5452656374616E676C6500095374796C654E616D65
- 060A6261636B67726F756E6405416C69676E070643656E7465720A46696C6C2E
- 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
- 696474680500000000000000F002400B53697A652E4865696768740500000000
- 000000F002401453697A652E506C6174666F726D44656661756C74080C537472
- 6F6B652E436F6C6F720709784646313531353135075852616469757305000000
- 00000000C0004007595261646975730500000000000000C00040000A54526563
- 74616E676C6500095374796C654E616D65060A52656374616E676C653105416C
- 69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463241383245
- 32074869745465737408074F70616369747905000000000000000000000C4D61
- 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
- 7005000000000000008000400D4D617267696E732E5269676874050000000000
- 00008000400E4D617267696E732E426F74746F6D05000000000000008000400A
- 53697A652E57696474680500000000000000B002400B53697A652E4865696768
- 740500000000000000B002401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305000000
- 00000000C0004007595261646975730500000000000000C00040000F54466C6F
- 6174416E696D6174696F6E00095374796C654E616D65061B6368656368626F78
- 56697362696C697479416E696D6174696F6E31084475726174696F6E05000000
- 000000000000000C50726F70657274794E616D6506074F7061636974790A5374
- 61727456616C756505000000000000000000000953746F7056616C7565050000
- 0000000000C805400754726967676572060E4973436865636B65643D74727565
- 0E54726967676572496E7665727365060F4973436865636B65643D66616C7365
- 0000000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650618
- 636865636B626F785374726F6B65416E696D6174696F6E31084475726174696F
- 6E05000000000000000000000C50726F70657274794E616D65060C5374726F6B
- 652E436F6C6F720A537461727456616C75650709784646313531353135095374
- 6F7056616C756507097846463241383245320754726967676572060E49734368
- 65636B65643D747275650E54726967676572496E7665727365060F4973436865
- 636B65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650617636865636B626F78436F6C6F72416E696D6174696F6E31
- 084475726174696F6E05000000000000000000000C50726F70657274794E616D
- 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646323032
- 3032300953746F7056616C756507097846463430343034300754726967676572
- 061049734D6F7573654F7665723D747275650E54726967676572496E76657273
- 65061149734D6F7573654F7665723D66616C7365000000000554546578740009
- 5374796C654E616D6506047465787405416C69676E0706436C69656E740A5369
- 7A652E57696474680500000000005855DD05400B53697A652E48656967687405
- 000000000058559904401453697A652E506C6174666F726D44656661756C7408
- 0454657874060454657874165465787453657474696E67732E466F6E74436F6C
- 6F720708636C6157686974650000005450463007544C61796F75740009537479
- 6C654E616D650609656469747374796C6505416C69676E070643656E7465720A
- 53697A652E57696474680500000000000000C805400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 74080756697369626C6508085461624F726465720204000C5442727573684F62
- 6A65637400095374796C654E616D65060A666F726567726F756E6400000C5442
- 727573684F626A65637400095374796C654E616D65060973656C656374696F6E
- 0B42727573682E436F6C6F72070978393632413832453200000B54466F6E744F
- 626A65637400095374796C654E616D650604666F6E7409466F6E742E53697A65
- 0500000000000000D0024000000A5452656374616E676C6500095374796C654E
- 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A
- 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
- 697A652E57696474680500000000000000C805400B53697A652E486569676874
- 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 080C5374726F6B652E436F6C6F72070978464631353135313507585261646975
- 730500000000000000C0004007595261646975730500000000000000C0004000
- 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614656469
- 745374726F6B65416E696D6174696F6E31084475726174696F6E050000000000
- 00000000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F72
- 0A537461727456616C756507097846463135313531350953746F7056616C7565
- 07097846463241383245320754726967676572060E4973466F63757365643D74
- 7275650E54726967676572496E7665727365060F4973466F63757365643D6661
- 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0614656469745374726F6B65416E696D6174696F6E32084475726174696F6E05
- 0000000000000000000007496E7665727365090C50726F70657274794E616D65
- 060C5374726F6B652E436F6C6F720A537461727456616C756507097846463135
- 313531350953746F7056616C7565070978464634433443344307547269676765
- 72062149734D6F7573654F7665723D747275653B4973466F63757365643D6661
- 6C73653B0E54726967676572496E7665727365062249734D6F7573654F766572
- 3D66616C73653B4973466F63757365643D66616C73653B00000007544C61796F
- 757400095374796C654E616D650607627574746F6E7305416C69676E07055269
- 676874064C6F636B6564090B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E526967687405000000000000008000400E4D617267
- 696E732E426F74746F6D05000000000000008000400A506F736974696F6E2E58
- 0500000000000000C004400A506F736974696F6E2E5905000000000000008000
- 400A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000A803401453697A652E506C6174666F726D44656661
- 756C7408000007544C61796F757400095374796C654E616D650607636F6E7465
- 6E7405416C69676E0706436C69656E74064C6F636B6564090C4D617267696E73
- 2E4C65667405000000000000008001400B4D617267696E732E546F7005000000
- 000000008000400D4D617267696E732E52696768740500000000000000800040
- 0E4D617267696E732E426F74746F6D05000000000000008000400A53697A652E
- 57696474680500000000000000A804400B53697A652E48656967687405000000
- 00000000A803401453697A652E506C6174666F726D44656661756C7408000006
- 544C6162656C00095374796C654E616D65060670726F6D7074064C6F636B6564
- 09074F706163697479050000000000000080FE3F165465787453657474696E67
- 732E466F6E74436F6C6F720708636C6157686974650454657874060454657874
- 0000005450463007544C61796F757400095374796C654E616D65060967726964
- 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 00000000FFFFE905400B53697A652E4865696768740500000000000000830640
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F726465720205000C5442727573684F626A65637400095374796C654E
- 616D650618416C7465726E6174696E67526F774261636B67726F756E640B4272
- 7573682E436F6C6F72070978333237383738373800000C5442727573684F626A
- 65637400095374796C654E616D6506086C696E6566696C6C0B42727573682E43
- 6F6C6F72070978464631353135313500000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
- 6E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
- 090748697454657374080C50616464696E672E4C656674050000000000000080
- 00400B50616464696E672E546F7005000000000000008000400D50616464696E
- 672E526967687405000000000000008000400E50616464696E672E426F74746F
- 6D05000000000000008000400A53697A652E5769647468050000000000FFFFE9
- 05400B53697A652E48656967687405000000000000008306401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 4631353135313507585261646975730500000000000000C00040075952616469
- 75730500000000000000C0004000075448656164657200095374796C654E616D
- 6506066865616465720553696465730B03546F70044C65667406426F74746F6D
- 0552696768740005416C69676E0703546F700A506F736974696F6E2E58050000
- 00000000008000400A506F736974696F6E2E5905000000000000008000400A53
- 697A652E5769647468050000000000FFFFE105400B53697A652E486569676874
- 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
- 08000007544C61796F757400095374796C654E616D650607636F6E74656E7405
- 416C69676E0706436C69656E740C436C69704368696C6472656E090A53697A65
- 2E5769647468050000000000FFFFC105400B53697A652E486569676874050000
- 0000000000B405401453697A652E506C6174666F726D44656661756C7408000A
- 5452656374616E676C6500095374796C654E616D65060973656C656374696F6E
- 0A46696C6C2E436F6C6F7207097846463241383245320748697454657374080A
- 53697A652E57696474680500000000000000C804400B53697A652E4865696768
- 740500000000000000C804401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305000000
- 00000000C0004007595261646975730500000000000000C0004000000A545265
- 6374616E676C6500095374796C654E616D650605666F6375730A46696C6C2E43
- 6F6C6F7207097841463241383245320748697454657374080C4D617267696E73
- 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
- 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
- 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E
- 57696474680500000000000000C804400B53697A652E48656967687405000000
- 00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C0
- 004007595261646975730500000000000000C000400000000A545363726F6C6C
- 42617200095374796C654E616D65060A767363726F6C6C62617205416C69676E
- 070552696768740B536D616C6C4368616E676505000000000000000000000B4F
- 7269656E746174696F6E0708566572746963616C0A506F736974696F6E2E5805
- 0000000000FFFFC505400A506F736974696F6E2E590500000000000000B80340
- 0A53697A652E576964746805000000000000008003400B53697A652E48656967
- 68740500000000000000B405401453697A652E506C6174666F726D4465666175
- 6C740800000A545363726F6C6C42617200095374796C654E616D65060A687363
- 726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E67
- 6505000000000000000000000B4F7269656E746174696F6E070A486F72697A6F
- 6E74616C0A506F736974696F6E2E5805000000000000008000400A506F736974
- 696F6E2E590500000000000000E205400A53697A652E57696474680500000000
- 00FFFFE105400B53697A652E4865696768740500000000000000800340145369
- 7A652E506C6174666F726D44656661756C740800000F54536D616C6C5363726F
- 6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C6261
- 7205416C69676E070552696768740B536D616C6C4368616E6765050000000000
- 00000000000B4F7269656E746174696F6E0708566572746963616C0C4D617267
- 696E732E4C65667405000000000000008000400A506F736974696F6E2E580500
- 000000000000C605400A506F736974696F6E2E5905000000000000008000400A
- 53697A652E576964746805000000000000008002400B53697A652E4865696768
- 7405000000000000008002401453697A652E506C6174666F726D44656661756C
- 74080756697369626C650800000F54536D616C6C5363726F6C6C426172000953
- 74796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E07
- 06426F74746F6D0B536D616C6C4368616E676505000000000000000000000B4F
- 7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E54
- 6F7005000000000000008000400A506F736974696F6E2E580500000000000000
- 8000400A506F736974696F6E2E590500000000000000E205400A53697A652E57
- 6964746805000000000000009606400B53697A652E4865696768740500000000
- 0000008002401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508000000005450463007544C61796F757400095374796C654E616D65
- 060D67726F7570626F787374796C6505416C69676E070643656E7465720A5369
- 7A652E57696474680500000000000000F004400B53697A652E48656967687405
- 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508085461624F726465720206000A5452656374616E676C65
- 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
- 6F6E74656E74730946696C6C2E4B696E6407044E6F6E65074869745465737408
- 0C4D617267696E732E4C6566740500000000000000C000400B4D617267696E73
- 2E546F7005000000000000009002400D4D617267696E732E5269676874050000
- 0000000000C000400E4D617267696E732E426F74746F6D0500000000000000C0
- 00400A53697A652E57696474680500000000000000D804400B53697A652E4865
- 6967687405000000000000009804401453697A652E506C6174666F726D446566
- 61756C74080C5374726F6B652E436F6C6F720709784646313531353135075852
- 61646975730500000000000000C0004007595261646975730500000000000000
- C000400005545465787400095374796C654E616D65060474657874084175746F
- 53697A65090A436C6970506172656E74090748697454657374080C4D61726769
- 6E732E4C6566740500000000000000A002400A506F736974696F6E2E58050000
- 00000060559502400A506F736974696F6E2E590500000000004055D501C00A53
- 697A652E576964746805000000000000B8C703400B53697A652E486569676874
- 0500000000000060FF02401453697A652E506C6174666F726D44656661756C74
- 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
- 7465155465787453657474696E67732E576F7264577261700800000000545046
- 3007544C61796F757400095374796C654E616D65060F6865616465726974656D
- 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 0000000000009205400B53697A652E4865696768740500000000000000D00340
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F726465720207000A5452656374616E676C6500095374796C654E616D
- 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
- 6C6C2E436F6C6F720709784646344334433443064C6F636B6564090748697454
- 657374080A53697A652E576964746805000000000000009205400B53697A652E
- 4865696768740500000000000000D003401453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
- 585261646975730500000000000000C000400759526164697573050000000000
- 0000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650615686561646572436F6C6F72416E696D6174696F6E31084475726174696F
- 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
- 436F6C6F720A537461727456616C756507097846463443344334430953746F70
- 56616C756507097846463241383245320754726967676572060E497350726573
- 7365643D747275650E54726967676572496E7665727365060F49735072657373
- 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D6506166865616465725374726F6B65416E696D6174696F6E31084475
- 726174696F6E05000000000000000000000C50726F70657274794E616D65060C
- 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
- 31350953746F7056616C75650709784646324138324532075472696767657206
- 0E4973507265737365643D747275650E54726967676572496E7665727365060F
- 4973507265737365643D66616C736500000005545465787400095374796C654E
- 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
- 48697454657374080C4D617267696E732E4C6566740500000000000000A00140
- 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
- 52696768740500000000000000A001400E4D617267696E732E426F74746F6D05
- 000000000000008000400A53697A652E57696474680500000000000000FC0440
- 0B53697A652E4865696768740500000000000000B003401453697A652E506C61
- 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
- 6F6C6F720708636C6157686974650000005450463007544C61796F7574000953
- 74796C654E616D65060E696D61676563656C6C7374796C6505416C69676E0706
- 43656E7465720756697369626C6508085461624F726465720208000654496D61
- 676500095374796C654E616D650605696D6167650E4D756C7469526573426974
- 6D61700E01000005416C69676E0706436C69656E74064C6F636B656409074869
- 7454657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D
- 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
- 676874050000000000000080FF3F0E4D617267696E732E426F74746F6D050000
- 000000000080FF3F0A53697A652E57696474680500000000000000C004400B53
- 697A652E4865696768740500000000000000C004401453697A652E506C617466
- 6F726D44656661756C74080000005450463007544C61796F757400095374796C
- 654E616D65060A6C6162656C7374796C6505416C69676E070643656E7465720A
- 53697A652E57696474680500000000000000C805400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 74080756697369626C6508085461624F72646572020900055454657874000953
- 74796C654E616D6506047465787405416C69676E0708436F6E74656E74730748
- 697454657374080A53697A652E57696474680500000000000000C805400B5369
- 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
- 726D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F
- 720708636C6157686974650000005450463007544C61796F757400095374796C
- 654E616D65060D6C697374626F78666F6F74657205416C69676E070643656E74
- 65720A53697A652E576964746805000000000000009205400B53697A652E4865
- 696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F72646572020A00055454657874
- 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
- 4C6F636B6564090748697454657374080C4D617267696E732E4C656674050000
- 0000000000A001400B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E52696768740500000000000000A001400E4D617267696E73
- 2E426F74746F6D05000000000000008000400A53697A652E5769647468050000
- 0000000000FC04400B53697A652E4865696768740500000000000000B0034014
- 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
- 67732E466F6E74436F6C6F720708636C6157686974650000005450463007544C
- 61796F757400095374796C654E616D6506106C697374626F786974656D737479
+ 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C6157686974650000005450463007544C61796F7574
+ 00095374796C654E616D650613636F6D626F656469746572726F727374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000C803401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
+ 6465720245000C5442727573684F626A65637400095374796C654E616D65060A
+ 666F726567726F756E6400000B54466F6E744F626A65637400095374796C654E
+ 616D650604666F6E7409466F6E742E53697A650500000000000000D002400000
+ 07544C61796F757400095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0708436F6E74656E74730A53697A652E5769647468050000000000
+ 0000C805400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C7408000A5452656374616E676C650009
+ 5374796C654E616D65060A52656374616E676C653105416C69676E0706436C69
+ 656E740A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646323032303230000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E315374796C65084475726174696F6E0500000000000000
+ 00000007496E7665727365090C50726F70657274794E616D65060C5374726F6B
+ 652E436F6C6F720A537461727456616C75650709784646323032303230095374
+ 6F7056616C756507097846463430343034300754726967676572062049734D6F
+ 7573654F7665723D747275653B4973466F63757365643D66616C73650E547269
+ 67676572496E7665727365062149734D6F7573654F7665723D66616C73653B49
+ 73466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C
+ 65084475726174696F6E050000000000000000000007496E7665727365090C50
+ 726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456
+ 616C756507097846463430343034300953746F7056616C756507097846464532
+ 324132410754726967676572061F49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D747275650E54726967676572496E766572736506204973
+ 4D6F7573654F7665723D747275653B4973466F63757365643D66616C73650000
+ 07544C61796F757400095374796C654E616D6506056172726F7705416C69676E
+ 070846697452696768740B4D617267696E732E546F70050000000000000080FF
+ 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805
+ 00000000005ED99705400A506F736974696F6E2E59050000000000000080FF3F
+ 0A53697A652E5769647468050000000000889AB803400B53697A652E48656967
+ 68740500000000000000B803401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 7207097846463330333033300748697454657374080A53697A652E5769647468
+ 050000000000889AB803400B53697A652E4865696768740500000000000000B8
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508447572
+ 6174696F6E050000000000000000000007496E7665727365090C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463330333033300953746F7056616C75650709784646343034303430075472
+ 6967676572062049734D6F7573654F7665723D747275653B4973466F63757365
+ 643D66616C73650E54726967676572496E7665727365062149734D6F7573654F
+ 7665723D66616C73653B4973466F63757365643D66616C736500000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E69
+ 6D6174696F6E325374796C65084475726174696F6E0500000000000000000000
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463430343034300953746F7056616C756507097846463943
+ 313731370754726967676572061F4973466F63757365643D747275653B49734D
+ 6F7573654F7665723D7472756500000007544C61796F757400095374796C654E
+ 616D6506074C61796F75743105416C69676E070643656E7465720C4D61726769
+ 6E732E4C656674050000000000000080FF3F0A53697A652E5769647468050000
+ 0000000000A002400B53697A652E4865696768740500000000000000C0014014
+ 53697A652E506C6174666F726D44656661756C74080005545061746800095374
+ 796C654E616D650605506174683105416C69676E0706436C69656E7409446174
+ 612E506174680A3400000004000000000000000000C8420000C8420100000000
+ 0096430000C842010000000000484300009643030000000000C8420000C8420A
+ 46696C6C2E436F6C6F720708636C6157686974650748697454657374080A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650000000000000C5442727573684F
+ 626A65637400095374796C654E616D65060973656C656374696F6E0B42727573
+ 682E436F6C6F720709783936324138324532000007544C61796F757400095374
+ 796C654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D
+ 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 000000F003400E4D617267696E732E426F74746F6D0500000000000000800040
+ 0A53697A652E576964746805000000000000008805400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080000005450463007544C61796F757400095374796C654E616D65061E70
+ 726F6772657373626172696E64657465726D696E61626C657374796C6505416C
+ 69676E070643656E7465720A53697A652E5769647468050000000000ABAAB006
+ 400B53697A652E4865696768740500000000000000C003401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508085461624F72646572
+ 0246000A5452656374616E676C6500095374796C654E616D6506067674726163
+ 6B05416C69676E0708436F6E74656E747307456E61626C6564080A46696C6C2E
+ 436F6C6F720709784646323032303230064C6F636B6564090748697454657374
+ 080A53697A652E57696474680500000000000000E006400B53697A652E486569
+ 67687405000000000000009404401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313507566973
+ 69626C6508000A5452656374616E676C6500095374796C654E616D65060A7669
+ 6E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F
+ 720709784646324138324532064C6F636B6564090748697454657374080C4D61
+ 7267696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A
+ 506F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E59
+ 0500000000000000F002400A53697A652E57696474680500000000000000DE06
+ 400B53697A652E4865696768740500000000000000A803401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 00000007544C61796F757400095374796C654E616D65060668747261636B0541
+ 6C69676E0708436F6E74656E74730A53697A652E5769647468050000000000AB
+ AAB006400B53697A652E4865696768740500000000000000C003401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E74730C436C69704368696C6472656E090A46696C6C2E436F6C6F72070978
+ 4646324138324532064C6F636B6564090748697454657374080A53697A652E57
+ 69647468050000000000ABAAB006400B53697A652E4865696768740500000000
+ 000000C003401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E
+ 315374796C6507456E61626C656409084475726174696F6E0500000000000000
+ 800140044C6F6F70090C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463241383245320754726967676572060E497356697369626C65
+ 3D7472756500000000005450463007544C61796F757400095374796C654E616D
+ 650611616E69696E64696361746F727374796C6505416C69676E070643656E74
+ 65720756697369626C6508085461624F72646572024700045441726300095374
+ 796C654E616D65060341726305416C69676E0708436F6E74656E747307486974
+ 54657374080D526F746174696F6E416E676C650500000000000000B407400A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F720708636C615768697465105374726F6B652E
+ 546869636B6E65737305000000000000008001400A5374726F6B652E43617007
+ 05526F756E640B5374726F6B652E4A6F696E0705426576656C08456E64416E67
+ 6C650500000000000000B405C0000F54466C6F6174416E696D6174696F6E0009
+ 5374796C654E616D650603616E6907456E61626C656409084475726174696F6E
+ 050000000000000080FF3F044C6F6F70090C50726F70657274794E616D65060D
+ 526F746174696F6E416E676C650A537461727456616C75650500000000000000
+ 0000000953746F7056616C75650500000000000000B407400754726967676572
+ 060E497356697369626C653D74727565000000005450463007544C61796F7574
+ 00095374796C654E616D650615616E69696E64696361746F72686F727A737479
6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 000000D605400B53697A652E4865696768740500000000000000C00340145369
+ 000040C006400B53697A652E4865696768740500000000000000800040145369
7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F72646572020B000654476C79706800095374796C654E616D65060A676C7970
- 687374796C650C4D617267696E732E4C65667405000000000000008000400B4D
- 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
- 67687405000000000000008000400E4D617267696E732E426F74746F6D050000
- 000000000080FF3F05416C69676E07044C6566740A506F736974696F6E2E5805
- 000000000000008000400A506F736974696F6E2E59050000000000000080FF3F
- 0A53697A652E576964746805000000000000008003400B53697A652E48656967
- 68740500000000000000B003401453697A652E506C6174666F726D4465666175
- 6C7408000005545465787400095374796C654E616D6506047465787405416C69
- 676E0706436C69656E740748697454657374080C4D617267696E732E4C656674
- 0500000000000000C000400B4D617267696E732E546F70050000000000000080
- FF3F0D4D617267696E732E52696768740500000000000000C000400E4D617267
- 696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769647468
- 0500000000000000CA05400B53697A652E4865696768740500000000000000B0
- 03401453697A652E506C6174666F726D44656661756C74081654657874536574
- 74696E67732E466F6E74436F6C6F720708636C61576869746515546578745365
- 7474696E67732E576F72645772617008165465787453657474696E67732E486F
- 727A416C69676E07074C656164696E6700000954436865636B426F7800095374
- 796C654E616D650605636865636B05416C69676E07084D6F73744C6566740843
- 616E466F637573081244697361626C65466F637573456666656374090A53697A
- 652E57696474680500000000000000A003400B53697A652E4865696768740500
- 000000000000C003401453697A652E506C6174666F726D44656661756C740807
- 56697369626C65080000005450463007544C61796F757400095374796C654E61
- 6D6506126C697374626F78706C61696E68656164657205416C69676E07064365
- 6E7465720A53697A652E576964746805000000000000009205400B53697A652E
- 4865696768740500000000000000D003401453697A652E506C6174666F726D44
- 656661756C74080756697369626C6508085461624F72646572020C000A545265
- 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
- 6C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463244
- 32443244064C6F636B6564090748697454657374080A53697A652E5769647468
- 05000000000000009205400B53697A652E4865696768740500000000000000D0
- 03401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
- 436F6C6F72070978464631353135313507585261646975730500000000000000
- C0004007595261646975730500000000000000C0004000000554546578740009
- 5374796C654E616D6506047465787405416C69676E0706436C69656E74064C6F
- 636B6564090748697454657374080C4D617267696E732E4C6566740500000000
- 000000A001400B4D617267696E732E546F7005000000000000008000400D4D61
- 7267696E732E52696768740500000000000000A001400E4D617267696E732E42
- 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
- 000000FC04400B53697A652E4865696768740500000000000000B00340145369
- 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
- 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
- 6F757400095374796C654E616D65060C6C697374626F787374796C6505416C69
- 676E070643656E7465720A53697A652E5769647468050000000000FFFFE90540
- 0B53697A652E48656967687405000000000000008306401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 0D000C5442727573684F626A65637400095374796C654E616D650618416C7465
- 726E6174696E67526F774261636B67726F756E640B42727573682E436F6C6F72
- 070978464632433243324300000A5452656374616E676C6500095374796C654E
- 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A
- 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
- 7454657374080C50616464696E672E4C65667405000000000000008000400B50
- 616464696E672E546F7005000000000000008000400D50616464696E672E5269
- 67687405000000000000008000400E50616464696E672E426F74746F6D050000
- 00000000008000400A53697A652E5769647468050000000000FFFFE905400B53
- 697A652E48656967687405000000000000008306401453697A652E506C617466
- 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
- 35313507585261646975730500000000000000C0004007595261646975730500
- 000000000000C000400007544C61796F757400095374796C654E616D65060763
- 6F6E74656E7405416C69676E0706436C69656E740C436C69704368696C647265
- 6E090A53697A652E5769647468050000000000FFFFC105400B53697A652E4865
- 696768740500000000000000DE05401453697A652E506C6174666F726D446566
- 61756C7408000A5452656374616E676C6500095374796C654E616D6506097365
- 6C656374696F6E0A46696C6C2E436F6C6F720709784646324138324532074869
- 7454657374080A53697A652E57696474680500000000000000C804400B53697A
- 652E4865696768740500000000000000C804401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164
- 6975730500000000000000C0004007595261646975730500000000000000C000
- 4000000A5452656374616E676C6500095374796C654E616D650610666F637573
- 656473656C656374696F6E0A46696C6C2E436F6C6F7207097846463241383245
- 320748697454657374080A53697A652E57696474680500000000000000C80440
- 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650B
- 5374726F6B652E446173680703446F7407585261646975730500000000000000
- C0004007595261646975730500000000000000C000400000000A545363726F6C
- 6C42617200095374796C654E616D65060A767363726F6C6C62617205416C6967
- 6E070552696768740B536D616C6C4368616E676505000000000000000000000B
- 4F7269656E746174696F6E0708566572746963616C0A506F736974696F6E2E58
- 050000000000FFFFC505400A506F736974696F6E2E5905000000000000008000
- 400A53697A652E576964746805000000000000008003400B53697A652E486569
- 6768740500000000000000DE05401453697A652E506C6174666F726D44656661
- 756C740800000A545363726F6C6C42617200095374796C654E616D65060A6873
- 63726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E
- 676505000000000000000000000B4F7269656E746174696F6E070A486F72697A
- 6F6E74616C0A506F736974696F6E2E5805000000000000008000400A506F7369
- 74696F6E2E590500000000000000E205400A53697A652E576964746805000000
- 0000FFFFE105400B53697A652E48656967687405000000000000008003401453
- 697A652E506C6174666F726D44656661756C740800000F54536D616C6C536372
- 6F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C62
- 617205416C69676E070552696768740B536D616C6C4368616E67650500000000
- 0000000000000B4F7269656E746174696F6E0708566572746963616C0C4D6172
- 67696E732E4C65667405000000000000008000400A506F736974696F6E2E5805
- 00000000000000C605400A506F736974696F6E2E590500000000000000800040
- 0A53697A652E576964746805000000000000008002400B53697A652E48656967
- 687405000000000000008002401453697A652E506C6174666F726D4465666175
- 6C74080756697369626C650800000F54536D616C6C5363726F6C6C4261720009
- 5374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E
- 0706426F74746F6D0B536D616C6C4368616E676505000000000000000000000B
- 4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E
- 546F7005000000000000008000400A506F736974696F6E2E5805000000000000
- 008000400A506F736974696F6E2E590500000000000000E205400A53697A652E
- 576964746805000000000000009606400B53697A652E48656967687405000000
- 000000008002401453697A652E506C6174666F726D44656661756C7408075669
- 7369626C6508000000005450463007544C61796F757400095374796C654E616D
- 65060E706F70757063656C6C7374796C6505416C69676E070643656E74657207
- 56697369626C6508085461624F72646572020E0007544C61796F75740005416C
- 69676E070552696768740A506F736974696F6E2E5805000000000000008C0440
- 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
- 68740500000000000000C804401453697A652E506C6174666F726D4465666175
- 6C7408000554506174680005416C69676E070643656E74657209446174612E50
- 6174680A400000000500000000000000000000000000803F010000000000803F
- 0000803F010000000000003F0000000001000000000000000000803F03000000
- 00000000000000000A46696C6C2E436F6C6F720708636C615768697465074869
- 7454657374080B4D617267696E732E546F700500000000000000E001C00A5369
- 7A652E576964746805000000000000008002400B53697A652E48656967687405
- 000000000000008001401453697A652E506C6174666F726D44656661756C7408
- 0B5374726F6B652E4B696E6407044E6F6E6500000554506174680005416C6967
- 6E070643656E74657209446174612E506174680A340000000400000000000000
- 0000000000000000010000000000803F00000000010000000000003F0000803F
- 0300000000000000000000000A46696C6C2E436F6C6F720708636C6157686974
- 650748697454657374080B4D617267696E732E546F700500000000000000C001
- 400A53697A652E576964746805000000000000008002400B53697A652E486569
- 67687405000000000000008001401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000005545465787400
- 095374796C654E616D6506047465787405416C69676E0706436C69656E74064C
- 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
- 00000000A001400B4D617267696E732E546F7005000000000000008000400D4D
- 617267696E732E52696768740500000000000000A001400E4D617267696E732E
- 426F74746F6D05000000000000008000400A53697A652E576964746805000000
- 00000000C803400B53697A652E4865696768740500000000000000B804401453
- 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
- 732E466F6E74436F6C6F720708636C6157686974650000005450463007544C61
- 796F757400095374796C654E616D65061070726F67726573736261727374796C
- 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 4F726465720248000A5452656374616E676C6500095374796C654E616D65060A
+ 52656374616E676C653105416C69676E0706436C69656E740C436C6970436869
+ 6C6472656E090A46696C6C2E436F6C6F7207097846463430343034300A53697A
+ 652E57696474680500000000000040C006400B53697A652E4865696768740500
+ 0000000000008000401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E650005544C696E6500095374796C654E
+ 616D6506054C696E6531084C696E65547970650706426F74746F6D0A53697A65
+ 2E57696474680500000000000000A00B400B53697A652E486569676874050000
+ 00000000008000401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F720709784646324138324532105374726F6B652E5468
+ 69636B6E65737305000000000000008002400B5374726F6B652E446173680704
+ 44617368000F54466C6F6174416E696D6174696F6E00095374796C654E616D65
+ 0603616E6907456E61626C656409084475726174696F6E050000000000000080
+ 0340044C6F6F70090C50726F70657274794E616D65060A506F736974696F6E2E
+ 580A537461727456616C75650500000000000000C808C00953746F7056616C75
+ 6505000000000000000000000754726967676572060E497356697369626C653D
+ 7472756500000000005450463007544C61796F757400095374796C654E616D65
+ 060A70616E656C7374796C6505416C69676E070643656E7465720A53697A652E
+ 57696474680500000000000000C006400B53697A652E48656967687405000000
+ 00000000A406401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508085461624F726465720249000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F7207097846463230323032300A53697A652E
+ 57696474680500000000000000C006400B53697A652E48656967687405000000
+ 00000000A406401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650000005450463007544C61796F75740009
+ 5374796C654E616D65060E6C6F67627574746F6E7374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000000C005400B5369
+ 7A652E4865696768740500000000000000C005401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F72646572024A000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0706436C69656E740C436C69704368696C6472656E090A436C
+ 6970506172656E74090A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080A53697A652E57696474680500000000000000C005400B53
+ 697A652E4865696768740500000000000000C005401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463230323032300953746F7056616C7565070978
+ 46463430343034300754726967676572063049734D6F7573654F7665723D7472
+ 75653B4973507265737365643D66616C73653B4973466F63757365643D66616C
+ 73650E54726967676572496E7665727365063149734D6F7573654F7665723D66
+ 616C73653B4973507265737365643D66616C73653B4973466F63757365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463430343034300953746F70
+ 56616C756507097846463137353739430754726967676572062F497350726573
+ 7365643D747275653B49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E33084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646324138324532
+ 0953746F7056616C756507097846463137353739430754726967676572062E49
+ 73507265737365643D747275653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D747275650E54726967676572496E7665727365062F4973
+ 507265737365643D66616C73653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D74727565000005545061746800095374796C654E616D65
+ 0605506174683105416C69676E0706436C69656E7409446174612E506174680A
+ 5C02000032000000000000000000A841CDCCCC40010000000000A8410000C041
+ 010000000000C03F0000C041010000000000C03F00000000010000009A996941
+ 00000000010000000000A841CDCCCC40030000000000A841CDCCCC4000000000
+ 00009C410000F04001000000000058410000F04001000000000058410000C03F
+ 01000000000040400000C03F01000000000040400000B4410100000000009C41
+ 0000B4410100000000009C410000F0400300000000009C410000F04000000000
+ 000040410000F04001000000000090400000F04001000000000090400000C040
+ 01000000000040410000C04001000000000040410000F0400300000000004041
+ 0000F04000000000000090400000104101000000000090410000104101000000
+ 0000904100002841010000000000904000002841010000000000904000001041
+ 0300000000009040000010410000000000009040000040410100000000009041
+ 0000404101000000000090410000584101000000000090400000584101000000
+ 0000904000004041030000000000904000004041000000000000904000007041
+ 0100000000009041000070410100000000009041000084410100000000009040
+ 0000844101000000000090400000704103000000000090400000704100000000
+ 0000904000009041010000000000904100009041010000000000904100009C41
+ 010000000000904000009C410100000000009040000090410300000000009040
+ 0000904100000000000070410000C04001000000333393410000C04001000000
+ 000070416666264001000000000070410000C04003000000000070410000C040
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D
+ 617267696E732E4C6566740500000000000000A002400B4D617267696E732E54
+ 6F700500000000000000A002400D4D617267696E732E52696768740500000000
+ 000000A002400E4D617267696E732E426F74746F6D0500000000000000A00240
+ 0A53697A652E576964746805000000000000009805400B53697A652E48656967
+ 687405000000000000009805401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64650703
+ 466974000000005450463007544C61796F757400095374796C654E616D650614
+ 70726F67726573736261726D696E697374796C6505416C69676E070643656E74
+ 65720A53697A652E576964746805000000000033338505400B53697A652E4865
+ 696768740500000000009999E104401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C6508085461624F72646572024C000A5452656374
+ 616E676C6500095374796C654E616D65060668747261636B05416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F720709784646343034303430064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
33338505400B53697A652E4865696768740500000000009999E104401453697A
- 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
- 72646572020F000A5452656374616E676C6500095374796C654E616D65060668
- 747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
- 0709784646323032303230064C6F636B6564090748697454657374080A53697A
- 652E576964746805000000000033338505400B53697A652E4865696768740500
- 000000009999E104401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F720709784646313531353135075852616469757305
- 00000000000000C0004007595261646975730500000000000000C00040000A54
- 52656374616E676C6500095374796C654E616D65060A68696E64696361746F72
- 05416C69676E07044C6566740A46696C6C2E436F6C6F72070978464632413832
- 4532064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 050000000000000080FF3F0B4D617267696E732E546F70050000000000000080
- FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
- 696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58
- 050000000000000080FF3F0A506F736974696F6E2E59050000000000000080FF
- 3F0A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000009999D904401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500
- 000000000000C0004007595261646975730500000000000000C000400000000A
- 5452656374616E676C6500095374796C654E616D65060676747261636B05416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032
- 303230064C6F636B6564090748697454657374080A53697A652E576964746805
- 000000000033338505400B53697A652E4865696768740500000000009999E104
- 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
- 6F6C6F72070978464631353135313507585261646975730500000000000000C0
- 004007595261646975730500000000000000C00040000A5452656374616E676C
- 6500095374796C654E616D65060A76696E64696361746F7205416C69676E0706
- 426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F63
- 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
- 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
- 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
- 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
- 000080FF3F0A506F736974696F6E2E5905000000000099998904400A53697A65
- 2E576964746805000000000033338105400B53697A652E486569676874050000
- 0000000000A803401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
- C0004007595261646975730500000000000000C0004000000000545046300754
- 4C61796F757400095374796C654E616D65061170726F677265737363656C6C73
- 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
- 0000000000F805400B53697A652E4865696768740500000000000000FC054014
- 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
- 61624F7264657202100007544C61796F757400095374796C654E616D65060668
- 747261636B05416C69676E0708436F6E74656E7473064C6F636B6564090C4D61
- 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
- 7005000000000000008000400D4D617267696E732E5269676874050000000000
- 00008000400E4D617267696E732E426F74746F6D05000000000000008000400A
- 53697A652E57696474680500000000000000F005400B53697A652E4865696768
- 740500000000000000F405401453697A652E506C6174666F726D44656661756C
- 7408000A5452656374616E676C6500095374796C654E616D65060A68696E6469
- 6361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F7207097846
- 46324138324532064C6F636B6564090748697454657374080C4D617267696E73
- 2E4C65667405000000000000008000400B4D617267696E732E546F7005000000
- 000000008000400D4D617267696E732E52696768740500000000000000800040
- 0E4D617267696E732E426F74746F6D05000000000000008000400A506F736974
- 696F6E2E5805000000000000008000400A506F736974696F6E2E590500000000
- 0000008000400A53697A652E57696474680500000000000000C804400B53697A
- 652E4865696768740500000000000000EC05401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164
- 6975730500000000000000C0004007595261646975730500000000000000C000
- 4000000000545046300A5452656374616E676C6500095374796C654E616D6506
- 147363726F6C6C62617268747261636B7374796C6505416C69676E070643656E
- 7465720A46696C6C2E436F6C6F72070978464631353135313507486974546573
- 74080A53697A652E57696474680500000000000000C804400B53697A652E4865
- 696768740500000000000000C804401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508
- 0006545468756D6200095374796C654E616D6506057468756D62064C6F636B65
- 64090A53697A652E576964746805000000000000008003400B53697A652E4865
- 696768740500000000000000C804401453697A652E506C6174666F726D446566
- 61756C74080B5374796C654C6F6F6B7570060A7468756D627374796C65000000
- 5450463007544C61796F757400095374796C654E616D65060E7363726F6C6C62
- 61727374796C6505416C69676E070643656E7465720756697369626C65080854
- 61624F726465720211000754427574746F6E00095374796C654E616D65060A6C
- 656674627574746F6E05416C69676E07044C656674064C6F636B6564090A506F
- 736974696F6E2E5905000000000000008003400A53697A652E57696474680500
- 0000000000008003400B53697A652E4865696768740500000000000000900340
- 1453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B
- 757006137363726F6C6C6261726C656674627574746F6E00000754427574746F
- 6E00095374796C654E616D65060B7269676874627574746F6E05416C69676E07
- 055269676874064C6F636B6564090A506F736974696F6E2E5805000000000000
- 008804400A506F736974696F6E2E5905000000000000008003400A53697A652E
- 576964746805000000000000008003400B53697A652E48656967687405000000
- 000000009003401453697A652E506C6174666F726D44656661756C74080B5374
- 796C654C6F6F6B757006147363726F6C6C6261727269676874627574746F6E00
- 000754427574746F6E00095374796C654E616D65060C626F74746F6D62757474
- 6F6E05416C69676E0706426F74746F6D064C6F636B6564090A506F736974696F
- 6E2E5905000000000000008804400A53697A652E576964746805000000000000
- 00C804400B53697A652E48656967687405000000000000008003401453697A65
- 2E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570061573
- 63726F6C6C626172626F74746F6D627574746F6E00000654547261636B000953
- 74796C654E616D65060668747261636B05416C69676E0706436C69656E74064C
- 6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53
- 697A652E576964746805000000000000009003400B53697A652E486569676874
- 05000000000000009003401453697A652E506C6174666F726D44656661756C74
- 080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B7374
- 796C6500000654547261636B00095374796C654E616D65060676747261636B05
- 416C69676E0706436C69656E74064C6F636B6564090B4F7269656E746174696F
- 6E070A486F72697A6F6E74616C0A53697A652E57696474680500000000000000
- 9003400B53697A652E48656967687405000000000000009003401453697A652E
- 506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006147363
- 726F6C6C62617276747261636B7374796C6500000754427574746F6E00095374
- 796C654E616D650609746F70627574746F6E05416C69676E0703546F700A5369
- 7A652E57696474680500000000000000C804400B53697A652E48656967687405
- 000000000000008003401453697A652E506C6174666F726D44656661756C7408
- 0B5374796C654C6F6F6B757006127363726F6C6C626172746F70627574746F6E
- 000000545046300A5452656374616E676C6500095374796C654E616D65061473
- 63726F6C6C62617276747261636B7374796C6505416C69676E070643656E7465
- 720A46696C6C2E436F6C6F720709784646313531353135074869745465737408
- 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
- 68740500000000000000C804401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C65080006
- 545468756D6200095374796C654E616D6506057468756D62064C6F636B656409
- 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
- 687405000000000000008003401453697A652E506C6174666F726D4465666175
- 6C74080B5374796C654C6F6F6B7570060A7468756D627374796C650000005450
- 463007544C61796F757400095374796C654E616D65060C7370696E626F787374
- 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
- 00006666E005400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
- 624F726465720212000A5452656374616E676C6500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F7207097846463230323032300A53697A652E576964746805000000
- 00006666E005400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
- 72070978464631353135313507585261646975730500000000000000C0004007
- 595261646975730500000000000000C00040000F54436F6C6F72416E696D6174
- 696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E3153
- 74796C65084475726174696F6E050000000000000000000007496E7665727365
- 090C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461
- 727456616C756507097846463135313531350953746F7056616C756507097846
- 463430343034300754726967676572061049734D6F7573654F7665723D747275
- 650E54726967676572496E7665727365061149734D6F7573654F7665723D6661
- 6C73650000000C5442727573684F626A65637400095374796C654E616D65060A
- 666F726567726F756E640B42727573682E436F6C6F7207097846464541454145
- 4100000C5442727573684F626A65637400095374796C654E616D65060973656C
- 656374696F6E0B42727573682E436F6C6F720709783936324138324532000007
- 544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967
- 6E0706436C69656E74064C6F636B6564090C4D617267696E732E4C6566740500
- 0000000000008000400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
- 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
- 0000000070668405400B53697A652E4865696768740500000000000000880340
- 1453697A652E506C6174666F726D44656661756C740800000754427574746F6E
- 00095374796C654E616D65060B6D696E7573627574746F6E05416C69676E0707
- 4669744C6566740843616E466F6375730806437572736F72070763724172726F
- 770C4D617267696E732E4C65667405000000000000008000400B4D617267696E
- 732E546F7005000000000000008000400D4D617267696E732E52696768740500
- 0000000000008000400E4D617267696E732E426F74746F6D0500000000000000
- 8000400A506F736974696F6E2E5805000000000000008000400A506F73697469
- 6F6E2E5905000000000000008000400A53697A652E5769647468050000000000
- E8FF8703400B53697A652E48656967687405000000000000008803401453697A
- 652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060B
- 627574746F6E7374796C65000554506174680005416C69676E0706436C69656E
- 7409446174612E506174680A4000000005000000000000000000803F00000000
- 010000000000803F0000803F01000000000000000000003F010000000000803F
- 00000000030000000000803F000000000A46696C6C2E436F6C6F720708636C61
- 57686974650748697454657374080C4D617267696E732E4C6566740500000000
- 000000C001400B4D617267696E732E546F700500000000000000C001400D4D61
- 7267696E732E52696768740500000000000000C001400E4D617267696E732E42
- 6F74746F6D0500000000000000C001400A53697A652E57696474680500000000
- 00A0FF9F01400B53697A652E4865696768740500000000000000A00140145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E650000000754427574746F6E00095374796C654E616D65060A706C75
- 73627574746F6E05416C69676E070846697452696768740843616E466F637573
- 0806437572736F72070763724172726F770C4D617267696E732E4C6566740500
- 0000000000008000400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
- 732E426F74746F6D05000000000000008000400A506F736974696F6E2E580500
- 000000006A66BA05400A506F736974696F6E2E5905000000000000008000400A
- 53697A652E5769647468050000000000F0FF8703400B53697A652E4865696768
- 7405000000000000008803401453697A652E506C6174666F726D44656661756C
- 74080B5374796C654C6F6F6B7570060B627574746F6E7374796C650005545061
- 74680005416C69676E0706436C69656E7409446174612E506174680A34000000
- 0400000000000000000000000000000001000000000000000000803F01000000
- 0000803F0000003F0300000000000000000000000A46696C6C2E436F6C6F7207
- 08636C6157686974650748697454657374080C4D617267696E732E4C65667405
- 00000000000000C001400B4D617267696E732E546F700500000000000000C001
- 400D4D617267696E732E52696768740500000000000000C001400E4D61726769
- 6E732E426F74746F6D0500000000000000C001400A53697A652E576964746805
- 0000000000C0FF9F01400B53697A652E4865696768740500000000000000A001
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E65000A5452656374616E676C6500095374796C654E616D65060A68696E
+ 64696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F720709
+ 784646324138324532064C6F636B6564090748697454657374080A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00009999E104401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650000000A5452656374616E676C65000953
+ 74796C654E616D65060676747261636B05416C69676E0708436F6E74656E7473
+ 0A46696C6C2E436F6C6F720709784646343034303430064C6F636B6564090748
+ 697454657374080A53697A652E576964746805000000000033338505400B5369
+ 7A652E4865696768740500000000009999E104401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A5452
+ 656374616E676C6500095374796C654E616D65060A76696E64696361746F7205
+ 416C69676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646324138
+ 324532064C6F636B6564090748697454657374080A506F736974696F6E2E5905
+ 000000000099998D04400A53697A652E57696474680500000000003333850540
+ 0B53697A652E4865696768740500000000000000A803401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 0000005450463007544C61796F757400095374796C654E616D65061B74726565
+ 76696577657870616E646572627574746F6E7374796C6505416C69676E070643
+ 656E7465720B4D617267696E732E546F70050000000000000080FF3F0A53697A
+ 652E57696474680500000000000000B003400B53697A652E4865696768740500
+ 000000000000B003401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508085461624F72646572024D0005545061746800095374796C
+ 654E616D650605506174683105416C69676E070643656E74657209446174612E
+ 506174680A3400000004000000000000000000C8420000C84201000000000096
+ 430000C842010000000000484300009643030000000000C8420000C8420A4669
+ 6C6C2E436F6C6F720708636C6157686974650748697454657374080D526F7461
+ 74696F6E416E676C650500000000000000B405C00A53697A652E576964746805
+ 00000000000000A002400B53697A652E4865696768740500000000000000C001
401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E6500000000545046300D545377697463684F626A65637400
- 095374796C654E616D65060B7377697463687374796C6505416C69676E070643
- 656E746572044B696E64070C466164696E67547261636B730A53697A652E5769
- 6474680500000000000000C805400B53697A652E486569676874050000000000
- 0000C803401453697A652E506C6174666F726D44656661756C7408085461624F
- 72646572021312547261636B696E675468756D625363616C6505000000000000
- 0080FF3F0756697369626C65080A46696C6C2E436F6C6F720709784646323032
- 3032300C46696C6C4F6E2E436F6C6F7207097846463137353739430B46696C6C
- 4F6E2E4B696E640705536F6C69640B5374726F6B652E4B696E6407044E6F6E65
- 0B5468756D622E436F6C6F7207097846463430343034300D5468756D624F6E2E
- 436F6C6F7207097846463241383245320C5468756D624F6E2E4B696E64070553
- 6F6C6964105468756D625374726F6B652E4B696E6407044E6F6E650F5468756D
- 625374726F6B652E4361700705526F756E64105468756D625374726F6B652E44
- 6173680706437573746F6D105468756D625374726F6B652E4A6F696E0705526F
- 756E64165468756D625374726F6B652E437573746F6D446173680A0800000000
- 000000000000000553686170650709526F756E64526563740000545046300754
- 4C61796F757400095374796C654E616D65060F746162636F6E74726F6C737479
- 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 0000008E06400B53697A652E486569676874050000000000FFFFC90540145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F726465720214000A5452656374616E676C6500095374796C654E616D65060A
- 6261636B67726F756E6405416C69676E0708436F6E74656E747307436F726E65
- 72730B08546F7052696768740A426F74746F6D4C6566740B426F74746F6D5269
- 676874000A46696C6C2E436F6C6F720709784646333033303330064C6F636B65
- 64090748697454657374080C50616464696E672E4C6566740500000000000000
- 8000400B50616464696E672E546F7005000000000000008000400D5061646469
- 6E672E526967687405000000000000008000400E50616464696E672E426F7474
- 6F6D05000000000000008000400A53697A652E57696474680500000000000000
- 8E06400B53697A652E486569676874050000000000FFFFC905401453697A652E
- 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
- 464631353135313507585261646975730500000000000000C000400759526164
- 6975730500000000000000C00040000000545046300A5452656374616E676C65
- 00095374796C654E616D65060B746162646F747374796C6505416C69676E0706
- 43656E7465720A46696C6C2E436F6C6F72070978464631353135313507486974
+ 696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C
+ 654E616D650614466C6F6174416E696D6174696F6E315374796C650844757261
+ 74696F6E05000000000000000000000D496E746572706F6C6174696F6E070843
+ 697263756C61720C50726F70657274794E616D65060D526F746174696F6E416E
+ 676C650A537461727456616C75650500000000000000B405C00953746F705661
+ 6C756505000000000000000000000754726967676572060F4973457870616E64
+ 65643D747275650E54726967676572496E766572736506104973457870616E64
+ 65643D66616C736500000000545046300A5452656374616E676C650009537479
+ 6C654E616D65061174726565766965776974656D7374796C6505416C69676E07
+ 0643656E7465720946696C6C2E4B696E6407044E6F6E65074869745465737408
+ 0553696465730B06426F74746F6D000A53697A652E5769647468050000000000
+ 0000AE05400B53697A652E4865696768740500000000000000A004401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 097846463135313531350756697369626C6508000C545370656564427574746F
+ 6E00095374796C654E616D650606627574746F6E05416C69676E07044C656674
+ 0A53697A652E57696474680500000000000000A003400B53697A652E48656967
+ 68740500000000000000A004401453697A652E506C6174666F726D4465666175
+ 6C74080B5374796C654C6F6F6B7570061B7472656576696577657870616E6465
+ 72627574746F6E7374796C65000007544C61796F75740005416C69676E070843
+ 6F6E74656E74730C4D617267696E732E4C6566740500000000000000A003400A
+ 53697A652E576964746805000000000000008605400B53697A652E4865696768
+ 740500000000000000A004401453697A652E506C6174666F726D44656661756C
+ 7408000954436865636B426F7800095374796C654E616D650605636865636B05
+ 416C69676E07044C6566740843616E466F637573081244697361626C65466F63
+ 7573456666656374090A53697A652E57696474680500000000000000A003400B
+ 53697A652E4865696768740500000000000000A004401453697A652E506C6174
+ 666F726D44656661756C740800000654476C79706800095374796C654E616D65
+ 060A676C7970687374796C650C4D617267696E732E4C65667405000000000000
+ 008000400B4D617267696E732E546F70050000000000000080FF3F0D4D617267
+ 696E732E526967687405000000000000008000400E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F05416C69676E07044C6566740A506F736974
+ 696F6E2E580500000000000000B003400A506F736974696F6E2E590500000000
+ 00000080FF3F0A53697A652E576964746805000000000000008003400B53697A
+ 652E48656967687405000000000000009804401453697A652E506C6174666F72
+ 6D44656661756C7408000005545465787400095374796C654E616D6506047465
+ 787405416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 080A53697A652E57696474680500000000000000BC04400B53697A652E486569
+ 6768740500000000000000A004401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 5768697465155465787453657474696E67732E576F7264577261700816546578
+ 7453657474696E67732E486F727A416C69676E07074C656164696E670000000A
+ 5452656374616E676C650005416C69676E0708436F6E74656E74730946696C6C
+ 2E4B696E6407044E6F6E650748697454657374080E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F0553696465730B044C656674000A53697A65
+ 2E57696474680500000000000000AE05400B53697A652E486569676874050000
+ 00000000009C04401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F720709784646324138324532105374726F6B652E5468
+ 69636B6E65737305000000000000008000400000005450463007544C61796F75
+ 7400095374796C654E616D65060D74726565766965777374796C6505416C6967
+ 6E070643656E7465720A53697A652E57696474680500000000000000E106400B
+ 53697A652E48656967687405000000000000808107401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508085461624F72646572024E
+ 000C5442727573684F626A65637400095374796C654E616D650618416C746572
+ 6E6174696E67526F774261636B67726F756E640B42727573682E436F6C6F7207
+ 0978304646464646464600000A5452656374616E676C6500095374796C654E61
+ 6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646323032303230064C6F636B65640907486974
+ 54657374080C50616464696E672E4C656674050000000000000080FF3F0D5061
+ 6464696E672E5269676874050000000000000080FF3F0A53697A652E57696474
+ 680500000000000000E106400B53697A652E4865696768740500000000000080
+ 8107401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F7207097846463135313531350007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C436C69
+ 704368696C6472656E090B4D617267696E732E546F70050000000000000080FF
+ 3F0A53697A652E57696474680500000000000000CD06400B53697A652E486569
+ 6768740500000000000000F006401453697A652E506C6174666F726D44656661
+ 756C7408000A5452656374616E676C6500095374796C654E616D65060973656C
+ 656374696F6E0A46696C6C2E436F6C6F72070978464632413832453207486974
54657374080A53697A652E57696474680500000000000000C804400B53697A65
2E4865696768740500000000000000C804401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075669736962
- 6C650807585261646975730500000000000000C8034007595261646975730500
- 000000000000C80340000F54436F6C6F72416E696D6174696F6E000844757261
- 74696F6E05000000000018B7D1F23F0C50726F70657274794E616D65060A4669
- 6C6C2E436F6C6F720A537461727456616C756507097846463135313531350953
- 746F7056616C756507097846463241383245320754726967676572060F497353
- 656C65637465643D747275650E54726967676572496E76657273650610497353
- 656C65637465643D66616C73650000005450463007544C61796F757400095374
- 796C654E616D65060C7461626974656D7374796C6505416C69676E070643656E
- 7465720A53697A652E57696474680500000000000000C804400B53697A652E48
- 65696768740500000000000000C803401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C6508085461624F726465720215000A54526563
- 74616E676C6500095374796C654E616D650603746F7005416C69676E0708436F
- 6E74656E74730C436C69704368696C6472656E0907436F726E6572730B07546F
- 704C65667408546F705269676874000A46696C6C2E436F6C6F72070978464632
- 3032303230064C6F636B6564090748697454657374080553696465730B03546F
- 70044C656674055269676874000A53697A652E57696474680500000000000000
- C804400B53697A652E4865696768740500000000000000C803401453697A652E
- 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
- 464631353135313507585261646975730500000000000000C000400759526164
- 6975730500000000000000C00040000654476C79706800095374796C654E616D
- 65060A676C7970687374796C650C4D617267696E732E4C656674050000000000
- 00008001400D4D617267696E732E526967687405000000000000008001C00541
- 6C69676E07044C6566740A506F736974696F6E2E580500000000000000800140
- 0A53697A652E576964746805000000000000008003400B53697A652E48656967
- 68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C7408000005545465787400095374796C654E616D6506047465787405416C69
- 676E0706436C69656E74064C6F636B6564090748697454657374080C4D617267
- 696E732E4C6566740500000000000000C000400B4D617267696E732E546F7005
- 00000000000000C000400D4D617267696E732E52696768740500000000000000
- C000400E4D617267696E732E426F74746F6D0500000000000000C000400A5369
- 7A652E57696474680500000000000000B004400B53697A652E48656967687405
- 000000000000009803401453697A652E506C6174666F726D44656661756C7408
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265
+ 6374616E676C6500095374796C654E616D650610666F637573656473656C6563
+ 74696F6E0A46696C6C2E436F6C6F720709784646324138324532074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650B5374726F6B652E
+ 446173680703446F740000000A545363726F6C6C42617200095374796C654E61
+ 6D65060A767363726F6C6C62617205416C69676E070552696768740B536D616C
+ 6C4368616E676505000000000000000000000B4F7269656E746174696F6E0708
+ 566572746963616C0C4D617267696E732E4C6566740500000000000000800040
+ 0A506F736974696F6E2E580500000000000000D006400A53697A652E57696474
+ 6805000000000000008003400B53697A652E4865696768740500000000000000
+ F106401453697A652E506C6174666F726D44656661756C740800000A54536372
+ 6F6C6C42617200095374796C654E616D65060A687363726F6C6C62617205416C
+ 69676E0706426F74746F6D0B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D61726769
+ 6E732E546F7005000000000000008000400A506F736974696F6E2E5805000000
+ 0000000080FF3F0A506F736974696F6E2E590500000000000000F306400A5369
+ 7A652E57696474680500000000000000DF06400B53697A652E48656967687405
+ 000000000000008003401453697A652E506C6174666F726D44656661756C7408
+ 00000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F76
+ 736D616C6C7363726F6C6C62617205416C69676E070552696768740B536D616C
+ 6C4368616E676505000000000000000000000B4F7269656E746174696F6E0708
+ 566572746963616C0C4D617267696E732E4C6566740500000000000000800040
+ 0A506F736974696F6E2E580500000000000000C605400A506F736974696F6E2E
+ 5905000000000000008000400A53697A652E5769647468050000000000000080
+ 02400B53697A652E48656967687405000000000000008002401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C650800000F54536D616C
+ 6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C736372
+ 6F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E6765
+ 05000000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E
+ 74616C0B4D617267696E732E546F7005000000000000008000400A506F736974
+ 696F6E2E5805000000000000008000400A506F736974696F6E2E590500000000
+ 000000E205400A53697A652E576964746805000000000000009606400B53697A
+ 652E48656967687405000000000000008002401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508000000005450463007544C61796F
+ 757400095374796C654E616D650619616374696F6E746F6F6C627574746F6E6D
+ 756C74697669657705416C69676E070643656E7465720A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F7264657202780B46697865644865696768740232000654476C
+ 79706800095374796C654E616D65060A676C7970687374796C650C4D61726769
+ 6E732E4C65667405000000000000009002400B4D617267696E732E546F700500
+ 0000000000009002400E4D617267696E732E426F74746F6D0500000000000000
+ 90024005416C69676E07044C6566740A506F736974696F6E2E58050000000000
+ 00009002400A506F736974696F6E2E5905000000000000009002400A53697A65
+ 2E576964746805000000000000008004400B53697A652E486569676874050000
+ 00000000008004401453697A652E506C6174666F726D44656661756C74080000
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0706436C69656E740C436C69704368696C6472656E090A43
+ 6C6970506172656E74090A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000C804
+ C00A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
+ 6E696D6174696F6E31084475726174696F6E05000000000000000000000C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463230323032300953746F7056616C756507097846463430343034
+ 300754726967676572063049734D6F7573654F7665723D747275653B49735072
+ 65737365643D66616C73653B4973466F63757365643D66616C73650E54726967
+ 676572496E7665727365063149734D6F7573654F7665723D66616C73653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E33084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463241383245320953746F7056616C75650709
+ 7846463137353739430754726967676572062E4973507265737365643D747275
+ 653B49734D6F7573654F7665723D747275653B4973466F63757365643D747275
+ 650E54726967676572496E7665727365062F4973507265737365643D66616C73
+ 653B49734D6F7573654F7665723D747275653B4973466F63757365643D747275
+ 6500000005545465787400095374796C654E616D6506047465787405416C6967
+ 6E0706436C69656E740748697454657374080A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000000000C8044014
+ 53697A652E506C6174666F726D44656661756C74080454657874060454657874
165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
- 65155465787453657474696E67732E576F7264577261700800000F54436F6C6F
- 72416E696D6174696F6E00095374796C654E616D650612746162436F6C6F7241
- 6E696D6174696F6E310D416E696D6174696F6E547970650705496E4F75740844
- 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
- 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
- 300953746F7056616C7565070978464634303430343007547269676765720621
- 49734D6F7573654F7665723D747275653B497353656C65637465643D66616C73
- 650E54726967676572496E7665727365062249734D6F7573654F7665723D6661
- 6C73653B497353656C65637465643D66616C736500000F54436F6C6F72416E69
- 6D6174696F6E00095374796C654E616D650612746162436F6C6F72416E696D61
- 74696F6E32084475726174696F6E05000000000000000000000C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463230323032300953746F7056616C75650709784646324138324532075472
- 6967676572060F497353656C65637465643D747275650E54726967676572496E
- 76657273650610497353656C65637465643D66616C7365000000005450463007
- 544C61796F757400095374796C654E616D65060D7465787463656C6C7374796C
- 6505416C69676E070643656E7465720756697369626C6508085461624F726465
- 7202160007544C61796F757400095374796C654E616D650607636F6E74656E74
- 05416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E73
- 2E4C65667405000000000000008001400B4D617267696E732E546F7005000000
- 000000008001400D4D617267696E732E52696768740500000000000000800140
- 0E4D617267696E732E426F74746F6D05000000000000008001400A53697A652E
- 57696474680500000000000000A804400B53697A652E48656967687405000000
- 00000000A804401453697A652E506C6174666F726D44656661756C740800000C
- 5442727573684F626A65637400095374796C654E616D65060A666F726567726F
- 756E6400000C5442727573684F626A65637400095374796C654E616D65060973
- 656C656374696F6E0B42727573682E436F6C6F72070978393632413832453200
- 000B54466F6E744F626A65637400095374796C654E616D650604666F6E740000
- 00545046300754436972636C6500095374796C654E616D65060D7468756D6262
- 61727374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F72
- 07097846463241383245320748697454657374080A53697A652E576964746805
- 00000000000000A003400B53697A652E4865696768740500000000000000A003
- 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
- 6F6C6F7207097846463135313531350756697369626C6508000F54436F6C6F72
- 416E696D6174696F6E00095374796C654E616D6506147468756D62436F6C6F72
- 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097846463241383245320953746F7056616C7565070978464631373537
- 39430754726967676572061F4973507265737365643D747275653B49734D6F75
- 73654F7665723D747275650E54726967676572496E7665727365061049735072
- 65737365643D66616C73653B00000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D6506147468756D62436F6C6F72416E696D6174696F6E3208
- 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
- 060A46696C6C2E436F6C6F720A537461727456616C7565070978464632413832
- 45320953746F7056616C75650709784646343039424646075472696767657206
- 2049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
- 650E54726967676572496E7665727365062149734D6F7573654F7665723D6661
- 6C73653B4973507265737365643D66616C736500000F54436F6C6F72416E696D
- 6174696F6E00095374796C654E616D6506157468756D625374726F6B65416E69
- 6D6174696F6E31084475726174696F6E05000000000000000000000C50726F70
- 657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75
- 6507097846463135313531350953746F7056616C756507097846463137353739
- 430754726967676572061F4973507265737365643D747275653B49734D6F7573
- 654F7665723D747275650E54726967676572496E7665727365060F4973507265
- 737365643D66616C7365000000545046300A5452656374616E676C6500095374
- 796C654E616D65060A7468756D627374796C6505416C69676E070643656E7465
- 720A46696C6C2E436F6C6F720709784646344434443444074869745465737408
- 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
- 68740500000000000000C804401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D6506147468756D
- 62436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 65000007544C61796F757400095374796C654E616D6506074C61796F75743205
+ 416C69676E07044C6566740A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C74080005545061746800095374796C654E616D65
+ 060469636F6E05416C69676E070643656E74657209446174612E506174680A18
+ 01000017000000000000000000C03F0000C03F01000000000000000000000001
+ 0000000000404000000000010000000000C03F0000C03F030000000000C03F00
+ 00C03F0000000000009040000000000100000000004041000000000100000000
+ 004041CDCC4C3F0100000000009040CDCC4C3F01000000000090400000000003
+ 0000000000904000000000000000000000904033337340010000000000904000
+ 0040400100000000004041000040400100000000004041333373400100000000
+ 0090403333734003000000000090403333734000000000000090409A99D94001
+ 000000000090400000C04001000000000040410000C04001000000000040419A
+ 99D94001000000000090409A99D94003000000000090409A99D9400A46696C6C
+ 2E436F6C6F720708636C6157686974650748697454657374080A53697A652E57
+ 696474680500000000000000D003400B53697A652E4865696768740500000000
+ 000000E003401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400000000
+ 5450463007544C61796F757400095374796C654E616D65060E61646462757474
+ 6F6E7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C0
+ 03401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F72646572027C0B46697865644865696768740218000654476C79
+ 706800095374796C654E616D65060A676C7970687374796C650C4D617267696E
+ 732E4C65667405000000000000009002400B4D617267696E732E546F70050000
+ 00000000009002400E4D617267696E732E426F74746F6D050000000000000090
+ 024005416C69676E07044C6566740A506F736974696F6E2E5805000000000000
+ 009002400A506F736974696F6E2E5905000000000000009002400A53697A652E
+ 576964746805000000000000008004400B53697A652E48656967687405000000
+ 000000008004401453697A652E506C6174666F726D44656661756C740800000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0706436C69656E740C436C69704368696C6472656E090A436C
+ 6970506172656E74090A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080C4D617267696E732E4C6566740500000000000000C003C0
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C003401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646343034303430
+ 0754726967676572063049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C73650E5472696767
+ 6572496E7665727365063149734D6F7573654F7665723D66616C73653B497350
+ 7265737365643D66616C73653B4973466F63757365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E33084475726174696F6E05000000000000
000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463444344434440953746F7056616C7565070978
- 46463137353739430754726967676572060E4973507265737365643D74727565
- 0E54726967676572496E7665727365060F4973507265737365643D66616C7365
- 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061443
- 6F6C6F72416E696D6174696F6E315374796C65084475726174696F6E05000000
- 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
- 0A537461727456616C756507097846463444344434440953746F7056616C7565
- 0707636C61477261790754726967676572061049734D6F7573654F7665723D74
- 7275650E54726967676572496E7665727365061149734D6F7573654F7665723D
- 66616C73650000005450463007544C61796F757400095374796C654E616D6506
- 0D747261636B6261727374796C6505416C69676E070643656E7465720A53697A
- 652E57696474680500000000000000C805400B53697A652E4865696768740500
- 000000000000C805401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F7264657202170B466978656448656967687402
- 11000A5452656374616E676C6500095374796C654E616D65060668747261636B
- 05416C69676E070A5665727443656E7465720A46696C6C2E436F6C6F72070978
- 46463135313531350748697454657374080A506F736974696F6E2E5905000000
- 00000000BC04400A53697A652E57696474680500000000000000C805400B5369
- 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261
- 646975730500000000000000A0004007595261646975730500000000000000A0
- 0040000A5452656374616E676C6500095374796C654E616D65060A6261636B67
- 726F756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407
- 044E6F6E65064C6F636B6564090748697454657374080C4D617267696E732E4C
- 6566740500000000000000C001400B4D617267696E732E546F70050000000000
- 000080FF3F0D4D617267696E732E52696768740500000000000000C001400E4D
- 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
- 6474680500000000000000B005400B53697A652E486569676874050000000000
- 0000C000401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E6507585261646975730500000000000000C0FF3F
- 07595261646975730500000000000000C0FF3F00000A5452656374616E676C65
- 00095374796C654E616D650609686967686C6967687405416C69676E07044C65
- 66740A46696C6C2E436F6C6F7207097846463241383245320748697454657374
- 080C50616464696E672E4C6566740500000000000000A002400A53697A652E57
- 696474680500000000000000F003400B53697A652E4865696768740500000000
- 000000A001401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E6507585261646975730500000000000000A000
- 4007595261646975730500000000000000A0004000000B54476C6F7745666665
- 63740008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F
- 720709784646324138324532074F706163697479050000000000000080FF3F07
- 456E61626C6564080000000A5452656374616E676C6500095374796C654E616D
- 65060676747261636B05416C69676E070A486F727A43656E7465720A46696C6C
- 2E436F6C6F7207097846463135313531350748697454657374080A506F736974
- 696F6E2E580500000000000000BC04400A53697A652E57696474680500000000
- 000000A001400B53697A652E4865696768740500000000000000C80540145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E6507585261646975730500000000000000A000400759526164697573
- 0500000000000000A00040000A5452656374616E676C6500095374796C654E61
- 6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946
- 696C6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374080C
- 4D617267696E732E4C6566740500000000000000C001400B4D617267696E732E
- 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
- 00000000C001400E4D617267696E732E426F74746F6D050000000000000080FF
- 3F0A53697A652E576964746805000000000000000000000B53697A652E486569
- 6768740500000000000000C405401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E
- 676C6500095374796C654E616D650609686967686C6967687405416C69676E07
- 03546F700A46696C6C2E436F6C6F720709784646324138324532074869745465
- 7374080A53697A652E57696474680500000000000000A001400B53697A652E48
- 65696768740500000000000000F003401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573
- 0500000000000000A0004007595261646975730500000000000000A000400000
- 0B54476C6F774566666563740008536F66746E657373050000000000CDCCCCFC
- 3F09476C6F77436F6C6F720709784646324138324532074F7061636974790500
- 00000000000080FF3F07456E61626C65640800000006545468756D6200095374
- 796C654E616D650606687468756D62064C6F636B6564090A506F736974696F6E
- 2E580500000000003033AB03400A506F736974696F6E2E59050000000000FFFF
- A304400A53697A652E57696474680500000000000000F002400B53697A652E48
- 65696768740500000000000000F002401453697A652E506C6174666F726D4465
- 6661756C74080B5374796C654C6F6F6B7570060D7468756D626261727374796C
- 65000006545468756D6200095374796C654E616D650606767468756D62064C6F
- 636B6564090A506F736974696F6E2E58050000000000CBCCA804400A506F7369
- 74696F6E2E590500000000009899B103400A53697A652E576964746805000000
- 00000000F002400B53697A652E4865696768740500000000000000F002401453
- 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
- 060D7468756D626261727374796C650000005450463007544C61796F75740009
- 5374796C654E616D6506096D656D6F7374796C6505416C69676E070643656E74
- 65720A53697A652E5769647468050000000000CCCC8806400B53697A652E4865
- 696768740500000000006666F405401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F726465720218000C5442727573
- 684F626A65637400095374796C654E616D65060A666F726567726F756E640000
- 0C5442727573684F626A65637400095374796C654E616D65060973656C656374
- 696F6E0B42727573682E436F6C6F72070978374634343735394400000B54466F
- 6E744F626A65637400095374796C654E616D650604666F6E7400000A54526563
- 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032
- 3032300748697454657374080A53697A652E5769647468050000000000CCCC88
- 06400B53697A652E4865696768740500000000006666F405401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 4631353135313507585261646975730500000000000000C00040075952616469
- 75730500000000000000C000400007544C61796F757400095374796C654E616D
- 650607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E73
- 2E4C65667405000000000000008000400B4D617267696E732E546F7005000000
- 000000008000400D4D617267696E732E52696768740500000000000000800040
- 0E4D617267696E732E426F74746F6D05000000000000008000400A53697A652E
- 57696474680500000000009899E905400B53697A652E48656967687405000000
- 00006666CC05401453697A652E506C6174666F726D44656661756C740800000A
- 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
- 7205416C69676E0706426F74746F6D06437572736F72070763724172726F770B
- 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
- 6F6E070A486F72697A6F6E74616C0A506F736974696F6E2E5905000000000066
- 66D405400A53697A652E5769647468050000000000CCCC8806400B53697A652E
- 48656967687405000000000000008003401453697A652E506C6174666F726D44
- 656661756C740800000A545363726F6C6C42617200095374796C654E616D6506
- 0A767363726F6C6C62617205416C69676E0705526967687406437572736F7207
- 0763724172726F770B536D616C6C4368616E676505000000000000000000000B
- 4F7269656E746174696F6E0708566572746963616C0A506F736974696F6E2E58
- 0500000000009899F105400A53697A652E576964746805000000000000008003
- 400B53697A652E4865696768740500000000006666D405401453697A652E506C
- 6174666F726D44656661756C7408000007544C61796F75740005416C69676E07
- 06436C69656E740A53697A652E57696474680500000000009899F105400B5369
- 7A652E4865696768740500000000006666D405401453697A652E506C6174666F
- 726D44656661756C7408000F54536D616C6C5363726F6C6C4261720009537479
- 6C654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E070552
- 6967687406437572736F72070763724172726F770B536D616C6C4368616E6765
- 05000000000000000000000B4F7269656E746174696F6E070856657274696361
- 6C0C4D617267696E732E4C65667405000000000000008000400A53697A652E57
- 6964746805000000000000008002400B53697A652E4865696768740500000000
- 0000008002401453697A652E506C6174666F726D44656661756C740807566973
- 69626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E61
- 6D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F
- 6D06437572736F72070763724172726F770B536D616C6C4368616E6765050000
- 00000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C
- 0B4D617267696E732E546F7005000000000000008000400A53697A652E576964
- 746805000000000000009606400B53697A652E48656967687405000000000000
- 008002401453697A652E506C6174666F726D44656661756C7408075669736962
- 6C65080000000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 6506146D656D6F5374726F6B65416E696D6174696F6E31084475726174696F6E
- 050000000000000000000007496E7665727365090C50726F70657274794E616D
- 65060C5374726F6B652E436F6C6F720A537461727456616C7565070978464631
- 35313531350953746F7056616C75650709784646343034303430075472696767
- 6572062049734D6F7573654F7665723D747275653B4973466F63757365643D66
- 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
- 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
- 6E696D6174696F6E00095374796C654E616D6506146D656D6F5374726F6B6541
- 6E696D6174696F6E32084475726174696F6E05000000000000000000000C5072
- 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
- 6C756507097846463430343034300953746F7056616C75650709784646324138
- 3245320754726967676572060E4973466F63757365643D747275650E54726967
- 676572496E7665727365060F4973466F63757365643D66616C73650000000054
- 50463007544C61796F757400095374796C654E616D65060D73697A6567726970
- 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 000000000000C803400B53697A652E4865696768740500000000000000C80340
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F726465720219000A5452656374616E676C6500095374796C654E616D
- 65060A52656374616E676C653105416C69676E070643656E7465720A46696C6C
- 2E436F6C6F7207097846463630363036300A53697A652E576964746805000000
- 00000000A000400B53697A652E4865696768740500000000000000A000401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E6500000A5452656374616E676C6500095374796C654E616D65060A
- 52656374616E676C653205416C69676E070643656E7465720A46696C6C2E436F
- 6C6F7207097846463630363036300C4D617267696E732E4C6566740500000000
- 000000A002400A53697A652E57696474680500000000000000A000400B53697A
- 652E4865696768740500000000000000A000401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452
- 656374616E676C6500095374796C654E616D65060A52656374616E676C653305
- 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646363036
- 3036300C4D617267696E732E4C6566740500000000000000A002400B4D617267
- 696E732E546F700500000000000000A002400A53697A652E5769647468050000
- 0000000000A000400B53697A652E4865696768740500000000000000A0004014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D6506
- 0A52656374616E676C653405416C69676E070643656E7465720A46696C6C2E43
- 6F6C6F7207097846463630363036300B4D617267696E732E546F700500000000
- 000000A002400A53697A652E57696474680500000000000000A000400B53697A
- 652E4865696768740500000000000000A000401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452
- 656374616E676C6500095374796C654E616D65060A52656374616E676C653505
- 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646363036
- 3036300B4D617267696E732E546F700500000000000000A002400D4D61726769
- 6E732E52696768740500000000000000A002400A53697A652E57696474680500
- 000000000000A000400B53697A652E4865696768740500000000000000A00040
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D65
- 060A52656374616E676C653605416C69676E070643656E7465720A46696C6C2E
- 436F6C6F7207097846463630363036300C4D617267696E732E4C656674050000
- 0000000000A002400E4D617267696E732E426F74746F6D0500000000000000A0
- 02400A53697A652E57696474680500000000000000A000400B53697A652E4865
- 696768740500000000000000A000401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000545046300A54
- 52656374616E676C6500095374796C654E616D65060E73746174757362617273
- 74796C6505416C69676E070643656E7465720C436C69704368696C6472656E09
- 0A46696C6C2E436F6C6F7207097846463235323532350553696465730B03546F
- 70000A53697A652E57696474680500000000000000F004400B53697A652E4865
+ 61727456616C756507097846463241383245320953746F7056616C7565070978
+ 46463137353739430754726967676572062E4973507265737365643D74727565
+ 3B49734D6F7573654F7665723D747275653B4973466F63757365643D74727565
+ 0E54726967676572496E7665727365062F4973507265737365643D66616C7365
+ 3B49734D6F7573654F7665723D747275653B4973466F63757365643D74727565
+ 00000005545465787400095374796C654E616D6506047465787405416C69676E
+ 0706436C69656E740748697454657374080A53697A652E576964746805000000
+ 000000009805400B53697A652E4865696768740500000000000000C003401453
+ 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
+ 732E466F6E74436F6C6F720708636C615768697465000007544C61796F757400
+ 095374796C654E616D6506074C61796F75743205416C69676E07044C6566740A
+ 53697A652E57696474680500000000000000C003400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080005545061746800095374796C654E616D65060469636F6E05416C69676E
+ 0708436F6E74656E747309446174612E506174680AAC0000000E000000000000
+ 00CDCC34410000C040010000000000C0400000C040010000000000C040CDCC34
+ 41010000009A99A940CDCC3441010000009A99A9400000C04001000000000000
+ 000000C04001000000000000009A99A940010000009A99A9409A99A940010000
+ 009A99A94000000000010000000000C04000000000010000000000C0409A99A9
+ 4001000000CDCC34419A99A94001000000CDCC34410000C04003000000CDCC34
+ 410000C0400A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080C4D617267696E732E4C65667405000000000000008001400B4D617267
+ 696E732E546F7005000000000000008001400D4D617267696E732E5269676874
+ 05000000000000008001400E4D617267696E732E426F74746F6D050000000000
+ 00008001400A53697A652E576964746805000000000000008003400B53697A65
+ 2E48656967687405000000000000008003401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D
+ 6F64650703466974000000005450463007544C61796F757400095374796C654E
+ 616D650617696E666F746F6F6C627574746F6E6D756C74697669657705416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508085461624F7264657202
+ 7B0B46697865644865696768740232000654476C79706800095374796C654E61
+ 6D65060A676C7970687374796C650C4D617267696E732E4C6566740500000000
+ 0000009002400B4D617267696E732E546F7005000000000000009002400E4D61
+ 7267696E732E426F74746F6D050000000000000090024005416C69676E07044C
+ 6566740A506F736974696F6E2E5805000000000000009002400A506F73697469
+ 6F6E2E5905000000000000009002400A53697A652E5769647468050000000000
+ 00008004400B53697A652E48656967687405000000000000008004401453697A
+ 652E506C6174666F726D44656661756C740800000A5452656374616E676C6500
+ 095374796C654E616D65060A6261636B67726F756E6405416C69676E0706436C
+ 69656E740C436C69704368696C6472656E090A436C6970506172656E74090A46
+ 696C6C2E436F6C6F7207097846463230323032300748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000C804C00A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E31084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646323032303230
+ 0953746F7056616C756507097846463430343034300754726967676572063049
+ 734D6F7573654F7665723D747275653B4973507265737365643D66616C73653B
+ 4973466F63757365643D66616C73650E54726967676572496E76657273650631
+ 49734D6F7573654F7665723D66616C73653B4973507265737365643D66616C73
+ 653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D61
+ 74696F6E33084475726174696F6E05000000000000000000000C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463241383245320953746F7056616C75650709784646313735373943075472
+ 6967676572062E4973507265737365643D747275653B49734D6F7573654F7665
+ 723D747275653B4973466F63757365643D747275650E54726967676572496E76
+ 65727365062F4973507265737365643D66616C73653B49734D6F7573654F7665
+ 723D747275653B4973466F63757365643D747275650000000554546578740009
+ 5374796C654E616D6506047465787405416C69676E0706436C69656E74074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080454657874060454657874165465787453657474696E67
+ 732E466F6E74436F6C6F720708636C615768697465000007544C61796F757400
+ 095374796C654E616D6506074C61796F75743205416C69676E07044C6566740A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
+ 74080005545061746800095374796C654E616D65060469636F6E05416C69676E
+ 070643656E74657209446174612E506174680A84070000A0000000000000009A
+ 9987429A99074302000000010076429A9907430200000001005E42CDCC064302
+ 000000343347423433054302000000010030429A9903430200000067661A42CE
+ 4C01430200000067660642CECCFC4202000000CECCE4410100F7420200000001
+ 00C041CECCEF420200000034339F419B99E74202000000CECC7C416866DF4202
+ 000000353343413533D64202000000CECC14413533CC42020000009A99C94000
+ 00C24202000000000080403333B742020000009A991940CDCCAB4202000000CD
+ CC4C3F3333A04202000000000000003333944202000000000000009A99874202
+ 000000000000000100764202000000CDCC4C3F01005E42020000009A991940CE
+ CC4642020000000000804000003042020000009A99C94066661A420200000033
+ 33134166660642020000009A994141CCCCE4410200000033337B41FFFFBF4102
+ 00000066669E4132339F41020000003333BF41CACC7C41020000000000E44131
+ 3343410200000000000642CACC14410200000066661A429A99C9400200000000
+ 0030420000804002000000333347429A9919400200000000005E42CDCC4C3F02
+ 0000006666764200000000020000009A99874200000000020000003433944200
+ 000000020000003433A042CDCC4C3F02000000CDCCAB429A9919400200000033
+ 33B74200008040020000000000C2429A99C940020000003333CC423333134102
+ 0000003333D6429A994141020000006666DF4233337B41020000009999E74266
+ 669E4102000000CCCCEF423333BF4102000000FFFFF6420000E44102000000CC
+ CCFC420000064202000000CC4C014300001A4202000000999903439A992F4202
+ 00000033330543CDCC464202000000CDCC064300005E42020000009999074300
+ 00764202000000999907439A99874202000000999907433433944202000000CC
+ CC06433433A0420200000033330543CDCCAB4202000000999903436766B74202
+ 000000CD4C01433333C24202000000CCCCFC423433CC4202000000FFFFF64234
+ 33D64202000000CCCCEF426766DF42020000009999E7429A99E7420200000066
+ 66DF42CDCCEF42020000003333D6420000F742020000003333CC42CDCCFC4202
+ 0000003333C242CD4C0143020000006666B7429A99034302000000CCCCAB4233
+ 330543020000003333A042CDCC064302000000333394429A990743020000009A
+ 9987429A990743030000009A9987429A990743000000009A9987420000104102
+ 0000009A9979420000104102000000CECC644233331B4102000000CECC50429A
+ 99314102000000CECC3C42000048410200000001002A420000684102000000CE
+ CC184200008841020000003433074200009C41020000003633EF41CDCCB44102
+ 0000006966D2419A99D141020000009C99B5416766EE41020000009C999D41CD
+ CC064202000000D0CC88416666184202000000A099694100002A4202000000A0
+ 99494166663C42020000003A333341CCCC50420200000033331B413333654202
+ 0000000000104100007A4202000000000010419A998742020000000000104134
+ 3392420200000033331B41CDCC9C42020000009A993141CDCCA6420200000000
+ 004841CDCCB04202000000000068413333BA4202000000000088410000C34202
+ 00000000009C41CDCCCB4202000000CDCCB4419A99D342020000009A99D141CD
+ CCDA42020000006766EE410000E24202000000CDCC06420000E8420200000066
+ 6618423333ED420200000000002A423333F2420200000066663C423333F64202
+ 000000666650420000F9420200000066666442CDCCFB42020000003333794233
+ 33FD4202000000666687423333FD4202000000333392423333FD420200000099
+ 999C42CDCCFB42020000009999A6420000F942020000009999B0423333F64202
+ 000000FFFFB9423333F24202000000CCCCC2423333ED42020000009999CB4233
+ 33E842020000006666D3420000E242020000009999DA42CDCCDA4202000000CC
+ CCE1429A99D34202000000CCCCE742CDCCCB4202000000FFFFEC420000C34202
+ 000000FFFFF1423333BA4202000000FFFFF5420000B14202000000CCCCF84200
+ 00A742020000009999FB4200009D4202000000FFFFFC429A99924202000000FF
+ FFFC42CDCC874202000000FFFFFC4200007A42020000009999FB423433654202
+ 000000CCCCF8423433514202000000FFFFF54234333D4202000000FFFFF14267
+ 662A4202000000FFFFEC42CECC184202000000FFFFE7423433074202000000CC
+ CCE1423633EF41020000009999DA426966D241020000006666D3429C99B54102
+ 0000009999CB429C999D4102000000CCCCC242D0CC884102000000FFFFB942A0
+ 99694102000000CCCCB042A0994941020000009999A6423A33334102000000CD
+ CC9C4233331B41020000006666924200001041020000009A9987420000104103
+ 0000009A998742000010410000000033337D42CDCC1042010000009A999042CD
+ CC1042010000009A999042CDCC34420100000034337D42CDCC34420100000034
+ 337D42CDCC10420300000033337D42CDCC10420000000033337D423333594201
+ 0000009A99904233335942010000009A9990420000C7420100000034337D4200
+ 00C7420100000034337D42333359420300000033337D42333359420A46696C6C
+ 2E436F6C6F720708636C6157686974650748697454657374080A53697A652E57
+ 696474680500000000000000D003400B53697A652E4865696768740500000000
+ 000000E003401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400000000
+ 5450463007544C61796F757400095374796C654E616D65061B6F7267616E697A
+ 65746F6F6C627574746F6E6D756C74697669657705416C69676E070643656E74
+ 65720A53697A652E57696474680500000000000000C805400B53697A652E4865
696768740500000000000000C804401453697A652E506C6174666F726D446566
- 61756C74080C5374726F6B652E436F6C6F720709784646313531353135075669
- 7369626C65080007544C61796F757400095374796C654E616D6506074C61796F
- 75743105416C69676E070552696768740A506F736974696F6E2E580500000000
- 0000008C04400A53697A652E57696474680500000000000000C803400B53697A
+ 61756C74080756697369626C6508085461624F7264657202770B466978656448
+ 65696768740232000654476C79706800095374796C654E616D65060A676C7970
+ 687374796C650C4D617267696E732E4C65667405000000000000009002400B4D
+ 617267696E732E546F7005000000000000009002400E4D617267696E732E426F
+ 74746F6D050000000000000090024005416C69676E07044C6566740A506F7369
+ 74696F6E2E5805000000000000009002400A506F736974696F6E2E5905000000
+ 000000009002400A53697A652E576964746805000000000000008004400B5369
+ 7A652E48656967687405000000000000008004401453697A652E506C6174666F
+ 726D44656661756C740800000A5452656374616E676C6500095374796C654E61
+ 6D65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C69
+ 704368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F
+ 7207097846463230323032300748697454657374080C4D617267696E732E4C65
+ 66740500000000000000C804C00A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615
+ 627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
+ 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463430343034300754726967676572063049734D6F7573654F76
+ 65723D747275653B4973507265737365643D66616C73653B4973466F63757365
+ 643D66616C73650E54726967676572496E7665727365063149734D6F7573654F
+ 7665723D66616C73653B4973507265737365643D66616C73653B4973466F6375
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E33084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646324138324532
+ 0953746F7056616C756507097846463137353739430754726967676572062E49
+ 73507265737365643D747275653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D747275650E54726967676572496E7665727365062F4973
+ 507265737365643D66616C73653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D7472756500000005545465787400095374796C654E616D
+ 6506047465787405416C69676E0706436C69656E740748697454657374080A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
+ 7465000007544C61796F757400095374796C654E616D6506074C61796F757432
+ 05416C69676E07044C6566740A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080005545061746800095374796C654E616D
+ 65060469636F6E05416C69676E070643656E74657209446174612E506174680A
+ D000000011000000000000009A99E9409A99C940010000006666664066661E41
+ 01000000000000009A99C940010000000000003F9A99B94001000000CDCC4C40
+ 9A99094101000000CDCC4C400000000001000000000080400000000001000000
+ 0000804000000841010000006666D6406666B640010000009A99E9409A99C940
+ 030000009A99E9409A99C940000000009A99993E00004041010000009A99993E
+ 33333341010000000000E04033333341010000000000E0400000404101000000
+ 9A99993E00004041030000009A99993E000040410A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 0000000000D003400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F64650703466974000000005450463007544C
+ 61796F757400095374796C654E616D65061B73657474696E6773746F6F6C6275
+ 74746F6E6D756C74697669657705416C69676E070643656E7465720A53697A65
+ 2E57696474680500000000000000C805400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F72646572027A0B46697865644865696768740232
+ 000654476C79706800095374796C654E616D65060A676C7970687374796C650C
+ 4D617267696E732E4C65667405000000000000009002400B4D617267696E732E
+ 546F7005000000000000009002400E4D617267696E732E426F74746F6D050000
+ 000000000090024005416C69676E07044C6566740A506F736974696F6E2E5805
+ 000000000000009002400A506F736974696F6E2E590500000000000000900240
+ 0A53697A652E576964746805000000000000008004400B53697A652E48656967
+ 687405000000000000008004401453697A652E506C6174666F726D4465666175
+ 6C740800000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080C4D617267696E732E4C6566740500000000
+ 000000C804C00A53697A652E57696474680500000000000000C805400B53697A
652E4865696768740500000000000000C804401453697A652E506C6174666F72
- 6D44656661756C740800095453697A654772697000095374796C654E616D6506
- 0973697A65677267697005416C69676E0706426F74746F6D0A506F736974696F
- 6E2E590500000000000000C803400A53697A652E576964746805000000000000
- 00C803400B53697A652E4865696768740500000000000000C803401453697A65
- 2E506C6174666F726D44656661756C740800000000545046300A545265637461
- 6E676C6500095374796C654E616D65060C746F6F6C6261727374796C6505416C
- 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463235323532
- 350748697454657374080553696465730B06426F74746F6D000A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 000000C804401453697A652E506C6174666F726D44656661756C74080C537472
- 6F6B652E436F6C6F7207097846463135313531350756697369626C6508000054
- 50463007544C61796F757400095374796C654E616D65061570726F6772657373
- 6261726572726F727374796C6505416C69676E070643656E7465720A53697A65
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E31084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463230323032300953746F7056616C75650709784646
+ 3430343034300754726967676572063049734D6F7573654F7665723D74727565
+ 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
+ 0E54726967676572496E7665727365063149734D6F7573654F7665723D66616C
+ 73653B4973507265737365643D66616C73653B4973466F63757365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463241383245320953746F705661
+ 6C756507097846463137353739430754726967676572062E4973507265737365
+ 643D747275653B49734D6F7573654F7665723D747275653B4973466F63757365
+ 643D747275650E54726967676572496E7665727365062F497350726573736564
+ 3D66616C73653B49734D6F7573654F7665723D747275653B4973466F63757365
+ 643D7472756500000005545465787400095374796C654E616D65060474657874
+ 05416C69676E0706436C69656E740748697454657374080A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C7408045465787406
+ 0454657874165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 615768697465000007544C61796F757400095374796C654E616D6506074C6179
+ 6F75743205416C69676E07044C6566740A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080005545061746800095374796C
+ 654E616D65060469636F6E05416C69676E070643656E74657209446174612E50
+ 6174680A540D00001C01000000000000333351423333E7410200000033335142
+ CDCCE84102000000333351426666EA4102000000333351423333EB4102000000
+ 33335142CDCCEC4102000000333351426666EE4102000000333351423333EF41
+ 0200000033335142CDCCF04102000000333351426666F2410200000033335142
+ 3333F3410200000033335142CDCCF44102000000333351426666F64102000000
+ 333351423333F7410100000099996F4266660E4201000000CDCC5C4200003C42
+ 0100000000003A42000034420200000000003842000036420200000000003642
+ 00003842020000000000344200003A420100000000003C42CDCC5C4201000000
+ CDCC0E429A996F42010000000000F84133335142020000006666F64133335142
+ 02000000CDCCF44133335142020000000000F44133335142020000006666F241
+ 3333514202000000CDCCF04133335142020000000000F0413333514202000000
+ 6666EE413333514202000000CDCCEC4133335142020000000000EC4133335142
+ 020000006666EA413333514202000000CDCCE84133335142020000000000E841
+ 33335142010000006666C24199996F4201000000FFFF4F41CCCC5C4201000000
+ FFFF6F41FFFF394202000000FFFF6741FFFF374202000000FFFF5F41FFFF3542
+ 02000000FFFF5741FFFF33420100000098999940FFFF3B420100000000000000
+ CDCC0E42010000003333F3400000F841020000003333F3406666F64102000000
+ 3333F340CDCCF441020000003333F3400000F441020000003333F3406666F241
+ 020000003333F340CDCCF041020000003333F3400000F041020000003333F340
+ 6666EE41020000003333F340CDCCEC41020000003333F3400000EC4102000000
+ 3333F3406666EA41020000003333F340CDCCE841020000003333F3400000E841
+ 0100000000000000CDCCC0410100000066669640CDCC4C410100000066665641
+ CDCC6C410200000066665E41CDCC64410200000066666641CDCC5C4102000000
+ 66666E41CDCC54410100000066664E413433934001000000CDCCC04100000000
+ 010000006666E6413333F340020000000000E8413333F340020000009999E941
+ 3333F340020000006666EA413333F340020000000000EC413333F34002000000
+ 9999ED413333F340020000006666EE413333F340020000000000F0413333F340
+ 020000009999F1413333F340020000006666F2413333F340020000000000F441
+ 3333F340020000009999F5413333F340020000006666F6413333F34001000000
+ CDCC0E42000000000100000000003C4266669640010000000000344266665641
+ 020000000000364266665E410200000000003842666666410200000000003A42
+ 66666E4101000000CDCC5C4266664E41010000009A996F429A99C14101000000
+ 333351423333E74103000000333351423333E7410000000033334342CDCC0242
+ 0200000033334342CDCC004202000000999943426766FE410200000099994342
+ 6766FA4102000000999943426766F64102000000FFFF43423433F34102000000
+ FFFF43423433EF4102000000FFFF43423433EB4102000000FFFF43420100E841
+ 02000000999943420100E44102000000999943420100E0410200000033334342
+ CECCDC410200000033334342CECCD84101000000CDCC5E426866B64101000000
+ CDCC54429B99854101000000CDCC3442CECC9441020000006766324234338F41
+ 02000000000030429B9989410200000033332D42010084410200000066662A42
+ CECC7C4102000000000028423533734102000000CDCC24429C99694101000000
+ 67662C423833D340010000000100144238338340010000006766024202003041
+ 020000006766004202003041020000009B99FD4168662E41020000009B99F941
+ 68662E41020000009B99F54168662E41020000006866F241CECC2C4102000000
+ 6866EE41CECC2C41020000006866EA41CECC2C41020000003533E741CECC2C41
+ 020000003533E34168662E41020000003533DF4168662E41020000000200DC41
+ 02003041020000000200D84102003041010000009C99B5413733834001000000
+ CFCC84413733D34001000000020094419C9969410200000068668E4136337341
+ 02000000CFCC8841CFCC7C410200000035338341010084410200000036337B41
+ 9A998941020000009D99714167668E410200000004006841CECC944101000000
+ 0800D0409B99854101000000080080406866B641010000006A662E419B99D941
+ 020000006A662E419B99DD4102000000D0CC2C41CECCE04102000000D0CC2C41
+ CECCE44102000000D0CC2C41CECCE8410200000036332B410100EC4102000000
+ 36332B410100F0410200000036332B410100F4410200000036332B413433F741
+ 02000000D0CC2C413433FB4102000000D0CC2C413433FF41020000006A662E41
+ 34330142020000006A662E413433034201000000070080406766144201000000
+ 0700D040CDCC2C42010000000400684133332542020000009E99714100002842
+ 0200000037337B41CDCC2A42020000003533834199992D4202000000CECC8841
+ 65663042020000009B998D41CCCC324202000000020094413333354201000000
+ CFCC844133335542010000009C99B54133335F4201000000CFCCD84199994342
+ 02000000CFCCDC4199994342020000000200E041FFFF4342020000000200E441
+ FFFF4342020000000200E841FFFF4342020000003533EB416566444202000000
+ 3533EF4165664442020000003533F34165664442020000006866F64165664442
+ 020000006866FA41FFFF4342020000006866FE41FFFF434202000000CECC0042
+ 9999434202000000CECC024299994342010000000100144233335F4201000000
+ 67662C423333554201000000CDCC244233333542020000009A992742CDCC3242
+ 0200000067662A42666630420200000033332D4299992D4202000000FFFF2F42
+ CCCC2A4202000000666632426666284202000000CDCC34423333254201000000
+ CDCC5442CDCC2C4201000000CDCC5E42676614420100000033334342CDCC0242
+ 0300000033334342CDCC0242000000003333EF4133339741020000003333FB41
+ 33339741020000009A9903429999994102000000CDCC084266669E4102000000
+ 00000E423333A34102000000CDCC12429999A94102000000CDCC16429999B141
+ 02000000CDCC1A429999B9410200000000001E423333C3410200000067662042
+ 9999CD4102000000CDCC2242FFFFD7410200000001002442FFFFE34102000000
+ 010024420000F04102000000010024420100FC4102000000CECC224200000442
+ 0200000067662042333309420200000001001E4266660E4202000000CDCC1A42
+ 3333134202000000CDCC16423333174202000000CDCC124233331B4202000000
+ 00000E4266661E4202000000CDCC0842CDCC2042020000009A99034233332342
+ 020000003433FB4167662442020000003433EF4167662442020000003433E341
+ 67662442020000003433D7413433234202000000CECCCC41CDCC204202000000
+ 6866C24167661E4202000000CECCB84133331B4202000000CECCB04133331742
+ 02000000CECCA84133331342020000006866A24166660E42020000009B999D41
+ 3333094202000000CECC98410000044202000000686696410000FC4102000000
+ 686696410000F04102000000686696410000E44102000000CECC98410000D841
+ 020000009B999D419A99CD41020000006866A2413433C34102000000CECCA841
+ 9A99B94102000000CECCB0419A99B14102000000CECCB8419A99A94102000000
+ 6866C2413433A34102000000CECCCC4167669E41020000000000D8419A999941
+ 020000003333E34133339741020000003333EF4133339741030000003333EF41
+ 33339741000000003333EF41CDCC1642020000000000F841CDCC164202000000
+ 0000004200001642020000009A990342676614420200000034330742CDCC1242
+ 02000000CDCC0A4267661042020000009A990D429A990D420200000067661042
+ CDCC0A4202000000CDCC12429A99074202000000676614429A99034202000000
+ 010016420000004202000000CDCC16423433F74102000000CDCC16423433EF41
+ 02000000CDCC16426766E64102000000000016426766DE410200000067661442
+ 3433D74102000000CDCC12420100D0410200000067661042CECCC84102000000
+ 9A990D423433C34102000000CDCC0A429A99BD41020000009A990742CECCB841
+ 020000009A9903429A99B54102000000000000426766B241020000003433F741
+ CDCCB041020000003433EF41CDCCB041020000006766E641CDCCB04102000000
+ 6766DE416766B241020000003433D7419A99B541020000000100D041CDCCB841
+ 02000000CECCC8419A99BD41020000003433C3413433C341020000009A99BD41
+ CECCC84102000000CECCB8413433CF41020000009A99B5413433D74102000000
+ 6766B2416766DE4102000000CDCCB0413433E74102000000CDCCB0413433EF41
+ 02000000CDCCB0410100F841020000006766B24100000042020000009A99B541
+ 9A99034202000000CDCCB84134330742020000009A99BD41CDCC0A4202000000
+ 3433C3419A990D4202000000CECCC84167661042020000003433CF41CDCC1242
+ 020000003433D74167661442020000003333DF4100001642020000003333E741
+ CDCC1642020000003333EF41CDCC1642030000003333EF41CDCC16420A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080A53697A652E
+ 57696474680500000000000000D003400B53697A652E48656967687405000000
+ 00000000E003401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6508577261704D6F64650703466974000000
+ 005450463007544C61796F757400095374796C654E616D65061172656D6F7665
+ 627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C003401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C6508085461624F72646572027E0B466978656448656967687402180006
+ 54476C79706800095374796C654E616D65060A676C7970687374796C650C4D61
+ 7267696E732E4C65667405000000000000009002400B4D617267696E732E546F
+ 7005000000000000009002400E4D617267696E732E426F74746F6D0500000000
+ 00000090024005416C69676E07044C6566740A506F736974696F6E2E58050000
+ 00000000008404400A506F736974696F6E2E5905000000000000009002400A53
+ 697A652E576964746805000000000000008004400B53697A652E486569676874
+ 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
+ 0800000A5452656374616E676C6500095374796C654E616D65060A6261636B67
+ 726F756E6405416C69676E0706436C69656E740C436C69704368696C6472656E
+ 090A436C6970506172656E74090A46696C6C2E436F6C6F720709784646323032
+ 3032300748697454657374080C4D617267696E732E4C65667405000000000000
+ 00C003C00A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C003401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E31084475726174696F6E0500000000000000000000
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463230323032300953746F7056616C756507097846463430
+ 343034300754726967676572063049734D6F7573654F7665723D747275653B49
+ 73507265737365643D66616C73653B4973466F63757365643D66616C73650E54
+ 726967676572496E7665727365063149734D6F7573654F7665723D66616C7365
+ 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562
+ 7574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463241383245320953746F7056616C75
+ 6507097846463137353739430754726967676572062E4973507265737365643D
+ 747275653B49734D6F7573654F7665723D747275653B4973466F63757365643D
+ 747275650E54726967676572496E7665727365062F4973507265737365643D66
+ 616C73653B49734D6F7573654F7665723D747275653B4973466F63757365643D
+ 7472756500000005545465787400095374796C654E616D650604746578740541
+ 6C69676E0706436C69656E740748697454657374080A53697A652E5769647468
+ 05000000000000009805400B53697A652E4865696768740500000000000000C0
+ 03401453697A652E506C6174666F726D44656661756C74080454657874060454
+ 657874165465787453657474696E67732E466F6E74436F6C6F720708636C6157
+ 68697465000007544C61796F757400095374796C654E616D6506074C61796F75
+ 743205416C69676E07044C6566740A53697A652E576964746805000000000000
+ 00C003400B53697A652E4865696768740500000000000000C003401453697A65
+ 2E506C6174666F726D44656661756C74080005545061746800095374796C654E
+ 616D65060469636F6E05416C69676E0708436F6E74656E747309446174612E50
+ 6174680A4C000000060000000000000000004041CDCC4C3F0100000000000000
+ CDCC4C3F01000000000000000000000001000000000040410000000001000000
+ 00004041CDCC4C3F0300000000004041CDCC4C3F0A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080C4D617267696E732E4C65667405
+ 000000000000008001400B4D617267696E732E546F7005000000000000008001
+ 400D4D617267696E732E526967687405000000000000008001400E4D61726769
+ 6E732E426F74746F6D05000000000000008001400A53697A652E576964746805
+ 000000000000008003400B53697A652E48656967687405000000000000008003
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6508577261704D6F6465070346697400000000545046300A
+ 5452656374616E676C6500095374796C654E616D650614706F7075706261636B
+ 67726F756E647374796C6505416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463244324432440A53697A652E5769647468050000000000
+ 00009407400B53697A652E4865696768740500000000000080D206401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 097846463135313531350756697369626C650800005450463007544C61796F75
+ 7400095374796C654E616D65061A70726F67726573736261726D696E6966696E
+ 6973687374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 6805000000000033338505400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F72646572024B000A5452656374616E676C6500095374796C65
+ 4E616D65060668747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646343034303430064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000A545265637461
+ 6E676C6500095374796C654E616D65060A68696E64696361746F7205416C6967
+ 6E07044C6566740A46696C6C2E436F6C6F720709784646324345323434064C6F
+ 636B6564090748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000009999E104401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650000000A5452656374616E676C6500095374796C654E616D6506067674
+ 7261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646343034303430064C6F636B6564090748697454657374080A53697A65
2E576964746805000000000033338505400B53697A652E486569676874050000
- 0000009999E104401453697A652E506C6174666F726D44656661756C74080756
- 697369626C6508085461624F72646572021A000A5452656374616E676C650009
- 5374796C654E616D65060668747261636B05416C69676E0708436F6E74656E74
- 730A46696C6C2E436F6C6F720709784646323032303230064C6F636B65640907
- 48697454657374080A53697A652E576964746805000000000033338505400B53
- 697A652E4865696768740500000000009999E104401453697A652E506C617466
- 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
- 35313507585261646975730500000000000000C0004007595261646975730500
- 000000000000C00040000A5452656374616E676C6500095374796C654E616D65
- 060A68696E64696361746F7205416C69676E07044C6566740A46696C6C2E436F
- 6C6F720709784646453232413241064C6F636B6564090748697454657374080C
+ 0000009999E104401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000A5452656374616E676C6500095374
+ 796C654E616D65060A76696E64696361746F7205416C69676E0706426F74746F
+ 6D0A46696C6C2E436F6C6F720709784646324345323434064C6F636B65640907
+ 48697454657374080A506F736974696F6E2E5905000000000099998D04400A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C6179
+ 6F757400095374796C654E616D65061070726F67726573736261727374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000033
+ 338505400B53697A652E4865696768740500000000009999E104401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
+ 646572023F000A5452656374616E676C6500095374796C654E616D6506066874
+ 7261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646323032303230064C6F636B6564090748697454657374080A53697A65
+ 2E576964746805000000000033338505400B53697A652E486569676874050000
+ 0000009999E104401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F720709784646313531353135000A5452656374616E67
+ 6C6500095374796C654E616D65060A68696E64696361746F7205416C69676E07
+ 044C6566740A46696C6C2E436F6C6F720709784646324138324532064C6F636B
+ 6564090748697454657374080C4D617267696E732E4C65667405000000000000
+ 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
+ 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F0A506F736974696F6E2E5805000000000000
+ 0080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00009999D904401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650000000A5452656374616E676C65000953
+ 74796C654E616D65060676747261636B05416C69676E0708436F6E74656E7473
+ 0A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564090748
+ 697454657374080A53697A652E576964746805000000000033338505400B5369
+ 7A652E4865696768740500000000009999E104401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 3135000A5452656374616E676C6500095374796C654E616D65060A76696E6469
+ 6361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F720709
+ 784646324138324532064C6F636B6564090748697454657374080C4D61726769
+ 6E732E4C656674050000000000000080FF3F0B4D617267696E732E546F700500
+ 00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
+ FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F73
+ 6974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E59050000
+ 00000099998904400A53697A652E576964746805000000000033338105400B53
+ 697A652E4865696768740500000000000000A803401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 005450463007544C61796F757400095374796C654E616D65061177696E646F77
+ 626F726465727374796C6505416C69676E070643656E7465720A53697A652E57
+ 6964746805000000000056D5AF07400B53697A652E4865696768740500000000
+ 000000B306401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C6508085461624F72646572023A000A5452656374616E676C6500095374
+ 796C654E616D6506046D61736B05416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F7207097846463130313031300A53697A652E57696474680500
+ 0000000056D5AF07400B53697A652E4865696768740500000000000000B30640
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E650756697369626C6508000007544C61796F75740009537479
+ 6C654E616D6506046C65667405416C69676E07084D6F73744C656674064C6F63
+ 6B6564090A506F736974696F6E2E5905000000000000008004400A53697A652E
+ 576964746805000000000000008001400B53697A652E48656967687405000000
+ 000000009306401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C650005416C69676E07084D6F73744C6566740A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080553696465730B
+ 044C656674055269676874000A53697A652E5769647468050000000000000080
+ 01400B53697A652E48656967687405000000000000008F06401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 4631353135313500000A5452656374616E676C6500095374796C654E616D6506
+ 0A52656374616E676C653105416C69676E070A4D6F7374426F74746F6D13456E
+ 61626C6544726167486967686C69676874080A46696C6C2E436F6C6F72070978
+ 46463230323032300748697454657374080A506F736974696F6E2E5905000000
+ 000000008F06400553696465730B044C65667406426F74746F6D000A53697A65
+ 2E576964746805000000000000008001400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F7207097846463135313531350007544C61796F757400
+ 095374796C654E616D6506074C61796F75743305416C69676E07094D6F737452
+ 696768740A506F736974696F6E2E580500000000000000C000400A53697A652E
+ 5769647468050000000000000080FF3F0B53697A652E48656967687405000000
+ 000000008001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0703546F700A46696C6C2E436F6C6F7207097846463135313531
+ 350748697454657374080A53697A652E5769647468050000000000000080FF3F
+ 0B53697A652E486569676874050000000000000080FF3F1453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 0000000007544C61796F757400095374796C654E616D65060572696768740541
+ 6C69676E07094D6F73745269676874064C6F636B6564090A506F736974696F6E
+ 2E5805000000000056D5AD07400A506F736974696F6E2E590500000000000000
+ 8004400A53697A652E576964746805000000000000008001400B53697A652E48
+ 656967687405000000000000009306401453697A652E506C6174666F726D4465
+ 6661756C7408000A5452656374616E676C650005416C69676E07094D6F737452
+ 696768740A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080553696465730B044C656674055269676874000A53697A652E57696474
+ 6805000000000000008001400B53697A652E4865696768740500000000000000
+ 8F06401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F72070978464631353135313500000A5452656374616E676C650009
+ 5374796C654E616D65060A52656374616E676C653105416C69676E070A4D6F73
+ 74426F74746F6D13456E61626C6544726167486967686C69676874080A46696C
+ 6C2E436F6C6F7207097846463230323032300748697454657374080A506F7369
+ 74696F6E2E5905000000000000008F06400553696465730B06426F74746F6D05
+ 5269676874000A53697A652E576964746805000000000000008001400B53697A
+ 652E48656967687405000000000000008001401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 350007544C61796F757400095374796C654E616D6506074C61796F7574330541
+ 6C69676E07084D6F73744C6566740A53697A652E576964746805000000000000
+ 0080FF3F0B53697A652E48656967687405000000000000008001401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A52656374616E676C653105416C69676E0703546F700A
+ 46696C6C2E436F6C6F7207097846463135313531350748697454657374080A53
+ 697A652E5769647468050000000000000080FF3F0B53697A652E486569676874
+ 050000000000000080FF3F1453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6500000000000A5452656374616E
+ 676C650005416C69676E07074D6F7374546F700A46696C6C2E436F6C6F720709
+ 784646323032303230064C6F636B6564090748697454657374080A53697A652E
+ 576964746805000000000056D5AF07400B53697A652E48656967687405000000
+ 000000008004401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F7207097846463135313531350007544C61796F75740009
+ 5374796C654E616D65060763617074696F6E05416C69676E0708436F6E74656E
+ 7473064C6F636B6564090748697454657374090C4D617267696E732E4C656674
+ 05000000000000008001400B4D617267696E732E546F70050000000000000080
+ 01400D4D617267696E732E526967687405000000000000008001400A53697A65
+ 2E576964746805000000000056D5AB07400B53697A652E486569676874050000
+ 0000000000E003401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F75740005416C69676E0706436C69656E74064C6F636B6564090C
4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E
546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
0000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF
- 3F0A506F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E
- 2E59050000000000000080FF3F0A53697A652E57696474680500000000000000
- C804400B53697A652E4865696768740500000000009999D904401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E6507585261646975730500000000000000C000400759526164697573050000
- 0000000000C000400000000A5452656374616E676C6500095374796C654E616D
- 65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C2E43
- 6F6C6F720709784646323032303230064C6F636B656409074869745465737408
- 0A53697A652E576964746805000000000033338505400B53697A652E48656967
- 68740500000000009999E104401453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F7207097846463135313531350758526164
- 6975730500000000000000C0004007595261646975730500000000000000C000
- 40000A5452656374616E676C6500095374796C654E616D65060A76696E646963
- 61746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978
- 4646453232413241064C6F636B6564090748697454657374080C4D617267696E
- 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
- 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
- 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F7369
- 74696F6E2E58050000000000000080FF3F0A506F736974696F6E2E5905000000
- 000099998904400A53697A652E576964746805000000000033338105400B5369
- 7A652E4865696768740500000000000000A803401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261
- 646975730500000000000000C0004007595261646975730500000000000000C0
- 0040000000005450463007544C61796F757400095374796C654E616D65060E6C
- 696E6B6C6162656C7374796C6505416C69676E070643656E7465720A53697A65
- 2E5769647468050000000000CCCC8006400B53697A652E486569676874050000
- 0000009A998104401453697A652E506C6174666F726D44656661756C74080756
- 697369626C6508085461624F72646572021B0005545465787400095374796C65
- 4E616D6506047465787405416C69676E0708436F6E74656E7473074869745465
- 7374080A53697A652E5769647468050000000000CCCC8006400B53697A652E48
- 65696768740500000000009A998104401453697A652E506C6174666F726D4465
- 6661756C74081A5465787453657474696E67732E466F6E742E5374796C654578
- 740A0D00000004040000000000000004000000165465787453657474696E6773
- 2E466F6E74436F6C6F72070D636C61446F64676572626C7565000F54436F6C6F
- 72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D
- 6174696F6E315374796C65084475726174696F6E050000000000000000000007
- 496E7665727365090C50726F70657274794E616D650616546578745365747469
- 6E67732E466F6E74436F6C6F720A537461727456616C7565070D636C61446F64
- 676572626C75650953746F7056616C7565070E636C6144656570736B79626C75
- 650754726967676572063049734D6F7573654F7665723D747275653B49735072
- 65737365643D66616C73653B4973466F63757365643D66616C73650E54726967
- 676572496E7665727365063149734D6F7573654F7665723D66616C73653B4973
- 507265737365643D66616C73653B4973466F63757365643D66616C736500000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
- 72416E696D6174696F6E325374796C65084475726174696F6E05000000000000
- 000000000C50726F70657274794E616D6506165465787453657474696E67732E
- 466F6E74436F6C6F720A537461727456616C7565070E636C6144656570736B79
- 626C75650953746F7056616C7565070978464631373537394307547269676765
- 72062F4973507265737365643D747275653B49734D6F7573654F7665723D7472
- 75653B4973466F63757365643D66616C7365000000005450463007544C61796F
- 757400095374796C654E616D65060C706F706F7665727374796C6505416C6967
- 6E070643656E7465720756697369626C6508085461624F72646572021C000A54
- 52656374616E676C6500095374796C654E616D650602626705416C69676E0706
- 436C69656E740A46696C6C2E436F6C6F72070978464632303230323007486974
- 54657374080A53697A652E57696474680500000000000000C804400B53697A65
- 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 07585261646975730500000000000000C0004007595261646975730500000000
- 000000C000400007544C61796F757400095374796C654E616D650607636F6E74
- 656E7405416C69676E0706436C69656E740C4D617267696E732E4C6566740500
- 00000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F
- 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
- 732E426F74746F6D050000000000000080FF3F0A53697A652E57696474680500
- 000000000000C004400B53697A652E4865696768740500000000000000C00440
- 1453697A652E506C6174666F726D44656661756C740800000D54536861646F77
- 456666656374000844697374616E63650500000000000000C000400944697265
- 6374696F6E0500000000000000B4054008536F66746E65737305000000000000
- 0080FE3F074F706163697479050000000000000080FE3F0B536861646F77436F
- 6C6F720708636C61426C61636B000000005450463007544C61796F7574000953
- 74796C654E616D65060D706F707570626F787374796C6505416C69676E070643
- 656E7465720A53697A652E57696474680500000000000080C406400B53697A65
- 2E4865696768740500000000000000D404401453697A652E506C6174666F726D
- 44656661756C74080756697369626C6508085461624F72646572021D000A5452
- 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
- 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632
- 30323032300748697454657374080A53697A652E576964746805000000000000
- 80C406400B53697A652E4865696768740500000000000000D404401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E6507585261646975730500000000000000C0004007595261646975730500
- 000000000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D650614436F6C6F72416E696D6174696F6E315374796C650844757261
- 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
- 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
- 746F7056616C756507097846463430343034300754726967676572062049734D
- 6F7573654F7665723D747275653B4973507265737365643D66616C73650E5472
- 6967676572496E7665727365062149734D6F7573654F7665723D66616C73653B
- 4973507265737365643D66616C736500000F54436F6C6F72416E696D6174696F
- 6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E32537479
- 6C65084475726174696F6E05000000000000000000000C50726F70657274794E
- 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464634
- 30343034300953746F7056616C75650709784646324138324532075472696767
- 6572062049734D6F7573654F7665723D747275653B4973507265737365643D74
- 7275653B0E54726967676572496E7665727365062049734D6F7573654F766572
- 3D747275653B4973507265737365643D66616C736500000007544C61796F7574
- 0005416C69676E070552696768740A506F736974696F6E2E5805000000000000
- 80B506400A53697A652E57696474680500000000000000F002400B53697A652E
- 4865696768740500000000000000D404401453697A652E506C6174666F726D44
- 656661756C7408000554506174680005416C69676E070643656E746572094461
- 74612E506174680A400000000500000000000000000000000000803F01000000
- 0000803F0000803F010000000000003F0000000001000000000000000000803F
- 0300000000000000000000000A46696C6C2E436F6C6F720708636C6157686974
- 650748697454657374080B4D617267696E732E546F700500000000000000E001
- C00A53697A652E576964746805000000000000008002400B53697A652E486569
- 67687405000000000000008001401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000554506174680005
- 416C69676E070643656E74657209446174612E506174680A3400000004000000
- 000000000000000000000000010000000000803F00000000010000000000003F
- 0000803F0300000000000000000000000A46696C6C2E436F6C6F720708636C61
- 57686974650748697454657374080B4D617267696E732E546F70050000000000
- 0000C001400A53697A652E576964746805000000000000008002400B53697A65
- 2E48656967687405000000000000008001401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000055454
- 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
- 6E740748697454657374080C4D617267696E732E4C6566740500000000000000
- 80FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D61726769
- 6E732E5269676874050000000000000080FF3F0E4D617267696E732E426F7474
- 6F6D050000000000000080FF3F0A53697A652E57696474680500000000000080
- B306400B53697A652E4865696768740500000000000000CC04401453697A652E
- 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
- 6E74436F6C6F720708636C6157686974650000005450463007544C61796F7574
- 00095374796C654E616D6506157363726F6C6C626172626F74746F6D62757474
- 6F6E05416C69676E070643656E7465720756697369626C6508085461624F7264
- 6572021E000A5452656374616E676C6500095374796C654E616D65060A626163
- 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
- 656E090A436C6970506172656E740907436F726E6572730B07546F704C656674
- 08546F705269676874000A46696C6C2E436F6C6F720709784646323032303230
- 0748697454657374080A53697A652E57696474680500000000000000C804400B
- 53697A652E4865696768740500000000000000C804401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758
- 5261646975730500000000000000C00040075952616469757305000000000000
- 00C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0615627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E
- 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
- 616C756507097846463430343034300754726967676572062049734D6F757365
- 4F7665723D747275653B4973507265737365643D66616C73650E547269676765
- 72496E7665727365062149734D6F7573654F7665723D66616C73653B49735072
- 65737365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
- 74796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3208
- 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
- 060A46696C6C2E436F6C6F720A537461727456616C7565070978464634303430
- 34300953746F7056616C75650709784646313735373943075472696767657206
- 1F4973507265737365643D747275653B49734D6F7573654F7665723D74727565
- 0E54726967676572496E766572736506204973507265737365643D66616C7365
- 3B49734D6F7573654F7665723D7472756500000007544C61796F757400095374
- 796C654E616D6506074C61796F75743105416C69676E070643656E7465720A53
- 697A652E57696474680500000000000000A002400B53697A652E486569676874
- 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
- 080005545061746800095374796C654E616D650605506174683105416C69676E
- 0706436C69656E7409446174612E506174680A34000000040000000000000000
- 00C8420000C84201000000000096430000C84201000000000048430000964303
- 0000000000C8420000C8420A46696C6C2E436F6C6F720708636C615768697465
- 0748697454657374080A53697A652E57696474680500000000000000A002400B
- 53697A652E4865696768740500000000000000C001401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
- 00005450463007544C61796F757400095374796C654E616D6506137363726F6C
- 6C6261726C656674627574746F6E05416C69676E070643656E74657207566973
- 69626C6508085461624F72646572021F000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E
- 740C436C69704368696C6472656E090A436C6970506172656E740907436F726E
- 6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F
- 6C6F7207097846463230323032300748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E6507585261646975730500000000000000C0004007
- 595261646975730500000000000000C00040000F54436F6C6F72416E696D6174
- 696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D61
- 74696F6E31084475726174696F6E05000000000000000000000C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463230323032300953746F7056616C75650709784646343034303430075472
- 6967676572062049734D6F7573654F7665723D747275653B4973507265737365
- 643D66616C73650E54726967676572496E7665727365062149734D6F7573654F
- 7665723D66616C73653B4973507265737365643D66616C736500000F54436F6C
- 6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F
- 6C6F72416E696D6174696F6E32084475726174696F6E05000000000000000000
- 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
- 56616C756507097846463430343034300953746F7056616C7565070978464631
- 37353739430754726967676572061F4973507265737365643D747275653B4973
- 4D6F7573654F7665723D747275650E54726967676572496E7665727365062049
- 73507265737365643D66616C73653B49734D6F7573654F7665723D7472756500
- 000007544C61796F757400095374796C654E616D6506074C61796F7574310541
- 6C69676E070643656E7465720A53697A652E57696474680500000000000000A0
- 02400B53697A652E4865696768740500000000000000C001401453697A652E50
- 6C6174666F726D44656661756C74080005545061746800095374796C654E616D
- 650605506174683105416C69676E0706436C69656E7409446174612E50617468
- 0A3400000004000000000000000000C8420000C84201000000000096430000C8
- 42010000000000484300009643030000000000C8420000C8420A46696C6C2E43
- 6F6C6F720708636C6157686974650748697454657374080D526F746174696F6E
- 416E676C650500000000000000B405400A53697A652E57696474680500000000
- 000000A002400B53697A652E4865696768740500000000000000C00140145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000000005450463007544C61796F757400095374796C654E616D65
- 06147363726F6C6C6261727269676874627574746F6E05416C69676E07064365
- 6E7465720756697369626C6508085461624F726465720220000A545265637461
- 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
- 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
- 6E740907436F726E6572730B08546F7052696768740B426F74746F6D52696768
- 74000A46696C6C2E436F6C6F7207097846463230323032300748697454657374
- 080A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000C804401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500
- 000000000000C0004007595261646975730500000000000000C00040000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E
- 436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000000000
- 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846463230323032300953746F7056616C756507097846
- 463430343034300754726967676572062049734D6F7573654F7665723D747275
- 653B4973507265737365643D66616C73650E54726967676572496E7665727365
- 062149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
- 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E
- 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463430343034300953746F7056
- 616C756507097846463137353739430754726967676572061F49735072657373
- 65643D747275653B49734D6F7573654F7665723D747275650E54726967676572
- 496E766572736506204973507265737365643D66616C73653B49734D6F757365
- 4F7665723D7472756500000007544C61796F757400095374796C654E616D6506
- 074C61796F75743105416C69676E070643656E7465720A53697A652E57696474
- 680500000000000000A002400B53697A652E4865696768740500000000000000
- C001401453697A652E506C6174666F726D44656661756C740800055450617468
- 00095374796C654E616D650605506174683105416C69676E0706436C69656E74
- 09446174612E506174680A3400000004000000000000000000C8420000C84201
- 000000000096430000C842010000000000484300009643030000000000C84200
- 00C8420A46696C6C2E436F6C6F720708636C6157686974650748697454657374
- 080D526F746174696F6E416E676C650500000000000000B405C00A53697A652E
- 57696474680500000000000000A002400B53697A652E48656967687405000000
- 00000000C001401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F757400
- 095374796C654E616D6506127363726F6C6C626172746F70627574746F6E0541
- 6C69676E070643656E7465720756697369626C6508085461624F726465720221
- 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
- 756E6405416C69676E0706436C69656E740C436C69704368696C6472656E090A
- 436C6970506172656E740907436F726E6572730B07546F704C65667408546F70
- 5269676874000A46696C6C2E436F6C6F72070978464632303230323007486974
- 54657374080A53697A652E57696474680500000000000000C804400B53697A65
- 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469
- 75730500000000000000C0004007595261646975730500000000000000C00040
- 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
- 74746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000
- 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
- 0A537461727456616C756507097846463230323032300953746F7056616C7565
- 07097846463430343034300754726967676572062049734D6F7573654F766572
- 3D747275653B4973507265737365643D66616C73650E54726967676572496E76
- 65727365062149734D6F7573654F7665723D66616C73653B4973507265737365
- 643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C65
- 4E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844757261
- 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
- 6C6C2E436F6C6F720A537461727456616C756507097846463430343034300953
- 746F7056616C756507097846463137353739430754726967676572061F497350
- 7265737365643D747275653B49734D6F7573654F7665723D747275650E547269
- 67676572496E766572736506204973507265737365643D66616C73653B49734D
- 6F7573654F7665723D7472756500000007544C61796F757400095374796C654E
- 616D6506074C61796F75743105416C69676E070643656E7465720A53697A652E
- 57696474680500000000000000A002400B53697A652E48656967687405000000
- 00000000C001401453697A652E506C6174666F726D44656661756C7408000554
- 5061746800095374796C654E616D650605506174683105416C69676E0706436C
- 69656E7409446174612E506174680A3400000004000000000000000000C84200
- 00C84201000000000096430000C8420100000000004843000096430300000000
- 00C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507486974
- 54657374080D526F746174696F6E416E676C650500000000000000B406400A53
- 697A652E57696474680500000000000000A002400B53697A652E486569676874
- 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
- 080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C6179
- 6F757400095374796C654E616D65060D636F6D626F626F787374796C6505416C
- 69676E070643656E7465720A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
- 6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 0222000C5442727573684F626A65637400095374796C654E616D65060A666F72
- 6567726F756E6400000B54466F6E744F626A65637400095374796C654E616D65
- 0604666F6E7409466F6E742E53697A650500000000000000D00240000007544C
- 61796F757400095374796C654E616D65060A6261636B67726F756E6405416C69
- 676E0708436F6E74656E74730A53697A652E57696474680500000000000000C8
+ 3F0A53697A652E576964746805000000000056D5AE07400B53697A652E486569
+ 6768740500000000000000F003401453697A652E506C6174666F726D44656661
+ 756C74080007544C61796F75740005416C69676E07044C656674064C6F636B65
+ 64090A53697A652E576964746805000000000000009002400B53697A652E4865
+ 696768740500000000000000F003401453697A652E506C6174666F726D446566
+ 61756C7408000007544C61796F757400095374796C654E616D65060469636F6E
+ 064C6F636B6564090A506F736974696F6E2E5805000000000000009002400A50
+ 6F736974696F6E2E590500000000000000E001400A53697A652E576964746805
+ 00000000000000C803400B53697A652E4865696768740500000000000000A803
+ 401453697A652E506C6174666F726D44656661756C7408000007544C61796F75
+ 7400095374796C654E616D65060773797362746E7305416C69676E0706436C69
+ 656E74064C6F636B6564090A53697A652E57696474680500000000005655AA07
+ 400B53697A652E4865696768740500000000000000F003401453697A652E506C
+ 6174666F726D44656661756C7408000C545370656564427574746F6E00095374
+ 796C654E616D650605636C6F736505416C69676E07055269676874064C6F636B
+ 6564090A506F736974696F6E2E5805000000000056559107400A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000F003401453697A652E506C6174666F726D44656661756C74080B537479
+ 6C654C6F6F6B75700610636C6F7365627574746F6E7374796C6500000C545370
+ 656564427574746F6E00095374796C654E616D6506036D617805416C69676E07
+ 055269676874064C6F636B6564090A506F736974696F6E2E5805000000000056
+ 558107400A53697A652E576964746805000000000000008004400B53697A652E
+ 4865696768740500000000000000F003401453697A652E506C6174666F726D44
+ 656661756C74080B5374796C654C6F6F6B7570060E6D6178627574746F6E7374
+ 796C6500000C545370656564427574746F6E00095374796C654E616D65060372
+ 657305416C69676E07055269676874064C6F636B6564090A506F736974696F6E
+ 2E58050000000000ACAAE206400A53697A652E57696474680500000000000000
+ 8004400B53697A652E4865696768740500000000000000F003401453697A652E
+ 506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060E7265
+ 73627574746F6E7374796C6500000C545370656564427574746F6E0009537479
+ 6C654E616D6506036D696E05416C69676E07055269676874064C6F636B656409
+ 0A506F736974696F6E2E58050000000000ACAAC206400A53697A652E57696474
+ 6805000000000000008004400B53697A652E4865696768740500000000000000
+ F003401453697A652E506C6174666F726D44656661756C74080B5374796C654C
+ 6F6F6B7570060E6D696E627574746F6E7374796C650000055454657874000953
+ 74796C654E616D6506057469746C6505416C69676E0706436C69656E74064C6F
+ 636B6564090748697454657374080A53697A652E5769647468050000000000AC
+ AAC206400B53697A652E4865696768740500000000000000F003401453697A65
+ 2E506C6174666F726D44656661756C7408045465787406055469746C65165465
+ 787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
+ 00000007544C61796F757400095374796C654E616D650606636C69656E740541
+ 6C69676E0706436C69656E74064C6F636B6564090748697454657374090A5369
+ 7A652E576964746805000000000056D5AB07400B53697A652E48656967687405
+ 000000000000008F06401453697A652E506C6174666F726D44656661756C7408
+ 000007544C61796F757400095374796C654E616D650606626F74746F6D05416C
+ 69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E580500
+ 0000000000008001400A506F736974696F6E2E590500000000000000AF06400A
+ 53697A652E576964746805000000000056D5AB07400B53697A652E4865696768
+ 7405000000000000008001401453697A652E506C6174666F726D44656661756C
+ 7408000A5452656374616E676C6500095374796C654E616D6506047265637405
+ 416C69676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646323032
+ 3032300748697454657374080553696465730B03546F7006426F74746F6D000A
+ 53697A652E576964746805000000000056D5AB07400B53697A652E4865696768
+ 7405000000000000008001401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000000005450
+ 463007544C61796F757400095374796C654E616D6506136172726F77646F776E
+ 746F6F6C627574746F6E05416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000C805400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F726465720201000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E
+ 436F6C6F7207097830303230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E
+ 31084475726174696F6E05000000000000000000000C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097830303230
+ 323032300953746F7056616C7565070978464634303430343007547269676765
+ 72063049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C73653B4973466F63757365643D66616C73650E54726967676572496E766572
+ 7365063149734D6F7573654F7665723D66616C73653B4973507265737365643D
+ 66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
+ 6E696D6174696F6E32084475726174696F6E05000000000000000000000C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463430343034300953746F7056616C756507097846463137353739
+ 430754726967676572062F4973507265737365643D747275653B49734D6F7573
+ 654F7665723D747275653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E33084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463241383245320953746F7056616C75650709784646
+ 3137353739430754726967676572062E4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062F4973507265737365643D66616C73653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650000
+ 0005545061746800095374796C654E616D6506047061746805416C69676E0706
+ 43656E74657209446174612E506174680A3400000004000000000000000000C8
+ 420000C84201000000000096430000C842010000000000484300009643030000
+ 000000C8420000C8420A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080A53697A652E57696474680500000000000000A002400B5369
+ 7A652E4865696768740500000000000000C001401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000554
+ 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
+ 656E740748697454657374080A53697A652E57696474680500000000000000C8
05400B53697A652E4865696768740500000000000000C803401453697A652E50
- 6C6174666F726D44656661756C7408000A5452656374616E676C650009537479
- 6C654E616D65060A52656374616E676C653105416C69676E0706436C69656E74
- 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
- 53697A652E57696474680500000000000000C805400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305000000
- 00000000C0004007595261646975730500000000000000C000400007544C6179
- 6F757400095374796C654E616D650611427574746F6E5374796C654F626A6563
- 7405416C69676E070846697452696768740B4D617267696E732E546F70050000
- 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
- 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F7369
- 74696F6E2E580500000000005ED99705400A506F736974696F6E2E5905000000
- 0000000080FF3F0A53697A652E5769647468050000000000889AB803400B5369
- 7A652E4865696768740500000000000000B803401453697A652E506C6174666F
- 726D44656661756C74080007544C61796F757400095374796C654E616D650607
- 4C61796F75743105416C69676E070643656E7465720C4D617267696E732E4C65
- 6674050000000000000080FF3F0A53697A652E57696474680500000000000000
- A002400B53697A652E4865696768740500000000000000C001401453697A652E
- 506C6174666F726D44656661756C74080005545061746800095374796C654E61
- 6D650605506174683105416C69676E0706436C69656E7409446174612E506174
- 680A3400000004000000000000000000C8420000C84201000000000096430000
- C842010000000000484300009643030000000000C8420000C8420A46696C6C2E
- 436F6C6F720708636C6157686974650748697454657374080A53697A652E5769
- 6474680500000000000000A002400B53697A652E486569676874050000000000
- 0000C001401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E65000000000F54436F6C6F72416E696D6174696F
- 6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E31537479
- 6C65084475726174696F6E05000000000000000000000C50726F70657274794E
+ 6C6174666F726D44656661756C74080454657874060454657874165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C6157686974650756697369
+ 626C6508000000}
+ end
+ item
+ Platform = 'OSX Yosemite'
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
+ AF00060B627574746F6E7374796C6503EB04060D636865636B626F787374796C
+ 6503EA050609656469747374796C6503D4050609677269647374796C6503E608
+ 060D67726F7570626F787374796C6503B402060F6865616465726974656D7374
+ 796C6503F403060E696D61676563656C6C7374796C65033D01060A6C6162656C
+ 7374796C65032001060D6C697374626F78666F6F746572038B0106106C697374
+ 626F786974656D7374796C6503520306126C697374626F78706C61696E686561
+ 646572036C02060C6C697374626F787374796C6503B307060E706F7075706365
+ 6C6C7374796C65038E03061070726F67726573736261727374796C6503020506
+ 1170726F677265737363656C6C7374796C6503CB0206147363726F6C6C626172
+ 68747261636B7374796C65033B01060E7363726F6C6C6261727374796C650363
+ 0406147363726F6C6C62617276747261636B7374796C65033B01060C7370696E
+ 626F787374796C65038507060B7377697463687374796C6503ED01060F746162
+ 636F6E74726F6C7374796C6503F701060B746162646F747374796C65037F0106
+ 0C7461626974656D7374796C65032B05060D7465787463656C6C7374796C6503
+ A601060D7468756D626261727374796C65034C03060A7468756D627374796C65
+ 033B02060D747261636B6261727374796C65034A0806096D656D6F7374796C65
+ 030D08060D73697A65677269707374796C6503FB04060E737461747573626172
+ 7374796C6503DB01060C746F6F6C6261727374796C6503CA00061570726F6772
+ 6573736261726572726F727374796C65030705060E6C696E6B6C6162656C7374
+ 796C65035003060C706F706F7665727374796C65035B02060D706F707570626F
+ 787374796C6503680606157363726F6C6C626172626F74746F6D627574746F6E
+ 036E0406137363726F6C6C6261726C656674627574746F6E0387040614736372
+ 6F6C6C6261727269676874627574746F6E038A0406127363726F6C6C62617274
+ 6F70627574746F6E038404060D636F6D626F626F787374796C65032607061473
+ 74617475736261726E6F677269707374796C6503D4000613736D616C6C736372
+ 6F6C6C6261727374796C6503AE01060D73706C69747465727374796C65030103
+ 06106D656E756261726974656D7374796C65035C0B060C6D656E756261727374
+ 796C6503B802060D6D656E756974656D7374796C6503890B06126D656E757365
+ 70617261746F727374796C6503E501060D6D656E75766965777374796C6503B7
+ 020610726164696F627574746F6E7374796C6503C4050618756C63656E746572
+ 726164696F627574746F6E7374796C65035D050616756C6C656674726164696F
+ 627574746F6E7374796C6503A7050617756C7269676874726164696F62757474
+ 6F6E7374796C6503B705061470726F67726573736261726D696E697374796C65
+ 03F403060E636F6D626F656469747374796C6503F8090613657870616E646572
+ 627574746F6E7374796C650381020615657870616E646572636865636B626F78
+ 7374796C6503DB05060D657870616E6465727374796C650316070615616E6969
+ 6E64696361746F72686F727A7374796C6503E0020611616E69696E6469636174
+ 6F727374796C6503D701060A70616E656C7374796C65034F01061970726F6772
+ 6573736261726D696E696572726F727374796C6503F903060E6C6F6762757474
+ 6F6E7374796C6503DA07061B7472656576696577657870616E64657262757474
+ 6F6E7374796C65038902060D74726565766965777374796C65038D0706117472
+ 6565766965776974656D7374796C65032705061670726F677265737362617266
+ 696E6973687374796C65030805061A70726F67726573736261726D696E696669
+ 6E6973687374796C6503FA0306136172726F77646F776E746F6F6C627574746F
+ 6E03EC0500545046300A5452656374616E676C6500095374796C654E616D6506
+ 0F6261636B67726F756E647374796C6505416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463244324432440A53697A652E576964746805
+ 000000000000009407400B53697A652E4865696768740500000000000080D206
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E650756697369626C650800005450463007544C61796F7574
+ 00095374796C654E616D65060B627574746F6E7374796C6505416C69676E0706
+ 43656E7465720A53697A652E57696474680500000000000000C805400B53697A
+ 652E4865696768740500000000000000C803401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508085461624F726465720203000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0706436C69656E740C436C69704368696C6472656E090A436C69
+ 70506172656E74090A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080A53697A652E57696474680500000000000000C805400B5369
+ 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261
+ 646975730500000000000000C0004007595261646975730500000000000000C0
+ 0040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615
+ 627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
+ 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463430343034300754726967676572063049734D6F7573654F76
+ 65723D747275653B4973507265737365643D66616C73653B4973466F63757365
+ 643D66616C73650E54726967676572496E7665727365063149734D6F7573654F
+ 7665723D66616C73653B4973507265737365643D66616C73653B4973466F6375
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E32084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
+ 0953746F7056616C756507097846463137353739430754726967676572062F49
+ 73507265737365643D747275653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
+ 6E33084475726174696F6E05000000000000000000000C50726F70657274794E
616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
- 30323032300953746F7056616C75650709784646343034303430075472696767
- 6572062149734D6F7573654F7665723D747275653B4973507265737365643D66
- 616C73653B0E54726967676572496E7665727365062249734D6F7573654F7665
- 723D66616C73653B4973507265737365643D66616C73653B00000F54436F6C6F
- 72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D
- 6174696F6E325374796C65084475726174696F6E05000000000000000000000C
- 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
- 6C756507097846463430343034300953746F7056616C75650709784646324138
- 3245320754726967676572062049734D6F7573654F7665723D747275653B4973
- 466F63757365643D747275653B0E54726967676572496E766572736506214973
- 4D6F7573654F7665723D747275653B4973466F63757365643D66616C73653B00
- 00000007544C61796F757400095374796C654E616D650607636F6E74656E7405
- 416C69676E0706436C69656E74064C6F636B6564090C4D617267696E732E4C65
- 667405000000000000008000400B4D617267696E732E546F7005000000000000
- 008000400D4D617267696E732E52696768740500000000000000D803400E4D61
- 7267696E732E426F74746F6D05000000000000008000400A53697A652E576964
- 746805000000000000008E05400B53697A652E48656967687405000000000000
- 00A803401453697A652E506C6174666F726D44656661756C7408000000545046
- 300A5452656374616E676C6500095374796C654E616D65061473746174757362
- 61726E6F677269707374796C6505416C69676E070643656E7465720C436C6970
- 4368696C6472656E090A46696C6C2E436F6C6F72070978464632353235323505
- 53696465730B03546F70000A53697A652E57696474680500000000000000F004
- 400B53697A652E4865696768740500000000000000C804401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 3135313531350756697369626C650800005450463007544C61796F7574000953
- 74796C654E616D650613736D616C6C7363726F6C6C6261727374796C6505416C
- 69676E070643656E7465720756697369626C6508085461624F72646572022300
- 0654547261636B00095374796C654E616D65060668747261636B05416C69676E
- 0706436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F
- 72697A6F6E74616C0A53697A652E57696474680500000000000000C804400B53
- 697A652E4865696768740500000000000000C804401453697A652E506C617466
- 6F726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C62
- 617268747261636B7374796C6500000654547261636B00095374796C654E616D
- 65060676747261636B05416C69676E0706436C69656E74064C6F636B6564090B
- 4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374796C65
- 4C6F6F6B757006147363726F6C6C62617276747261636B7374796C6500000054
- 50463007544C61796F757400095374796C654E616D65060D73706C6974746572
+ 41383245320953746F7056616C75650709784646313735373943075472696767
+ 6572062E4973507265737365643D747275653B49734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D747275650E54726967676572496E76657273
+ 65062F4973507265737365643D66616C73653B49734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D747275650000000554546578740009537479
+ 6C654E616D6506047465787405416C69676E0706436C69656E7413456E61626C
+ 6544726167486967686C69676874080748697454657374080A53697A652E5769
+ 6474680500000000000000C805400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746500000054
+ 50463007544C61796F757400095374796C654E616D65060D636865636B626F78
7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 000000000000A904400B53697A652E4865696768740500000000000080C10540
+ 00000000ACAA8006400B53697A652E4865696768740500000000005855990440
1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F7264657202240007544C61796F757400095374796C654E616D650604
- 6772697005416C69676E0706436C69656E740A53697A652E5769647468050000
- 0000000000A904400B53697A652E4865696768740500000000000080C1054014
- 53697A652E506C6174666F726D44656661756C7408000754436972636C650009
- 5374796C654E616D650607436972636C653105416C69676E070643656E746572
- 0A46696C6C2E436F6C6F7207097846463430343034300A53697A652E57696474
- 680500000000000000E001400B53697A652E4865696768740500000000000000
- E001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
- 2E436F6C6F72070978464631353135313500000754436972636C650009537479
- 6C654E616D650607436972636C653205416C69676E070643656E7465720A4669
- 6C6C2E436F6C6F7207097846463430343034300B4D617267696E732E546F7005
- 00000000000000A003400A53697A652E57696474680500000000000000E00140
- 0B53697A652E4865696768740500000000000000E001401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 353135313500000754436972636C6500095374796C654E616D65060743697263
- 6C653305416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
- 463430343034300E4D617267696E732E426F74746F6D0500000000000000A003
- 400A53697A652E57696474680500000000000000E001400B53697A652E486569
- 6768740500000000000000E001401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F72070978464631353135313500000000
- 5450463007544C61796F757400095374796C654E616D6506106D656E75626172
- 6974656D7374796C6505416C69676E070643656E7465720C4D617267696E732E
- 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
- 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
- 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
- 6964746805000000000000009205400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F726465720225000A5452656374616E676C650005416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138
- 324532074869745465737408074F70616369747905000000000017B7D1F13F0A
- 53697A652E576964746805000000000000009205400B53697A652E4865696768
- 740500000000000000D003401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D
- 6174696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F7065
- 7274794E616D6506074F7061636974790A537461727456616C75650500000000
- 0000000000000953746F7056616C7565050000000000000080FF3F0754726967
- 676572060F497353656C65637465643D747275650E54726967676572496E7665
- 7273650610497353656C65637465643D66616C73650000000A5452656374616E
- 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
- 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138324532
- 074869745465737408074F70616369747905000000000017B7D1F13F0A53697A
- 652E576964746805000000000000009205400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D617469
- 6F6E00084475726174696F6E05000000000018B7D1F23F0C50726F7065727479
- 4E616D6506074F7061636974790A537461727456616C75650500000000000000
- 0000000953746F7056616C7565050000000000000080FF3F0754726967676572
- 061049734D6F7573654F7665723D747275650E54726967676572496E76657273
- 65061149734D6F7573654F7665723D66616C736500000007544C61796F757400
- 095374796C654E616D650605676C79706805416C69676E07044C6566740A5369
- 7A652E57696474680500000000000000C803400B53697A652E48656967687405
- 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
- 0007544C61796F757400095374796C654E616D650609636865636B6D61726B05
- 416C69676E0708436F6E74656E7473074F7061636974790500000000006F1283
- F53F0A53697A652E57696474680500000000000000C803400B53697A652E4865
- 696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C7408000554506174680005416C69676E070643656E7465720944617461
- 2E506174680A58000000070000000000000056D9524391AE2C43010000009276
- 664365021643010000009F3983432B7C3C43010000009E9AA64382D2B4420100
- 00006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE
- 2C430A46696C6C2E436F6C6F720708636C615768697465074869745465737408
- 0A53697A652E57696474680500000000000000B002400B53697A652E48656967
- 68740500000000000000B002401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E
- 696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F
- 70657274794E616D6506074F7061636974790A537461727456616C7565050000
- 00000000000000000953746F7056616C7565050000000000000080FF3F075472
- 6967676572060E4973436865636B65643D747275650E54726967676572496E76
- 65727365060F4973436865636B65643D66616C73650000000654476C79706800
- 095374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C
- 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
- 00008000400D4D617267696E732E52696768740500000000000000C000400E4D
- 617267696E732E426F74746F6D050000000000000080FF3F05416C69676E0705
- 52696768740A506F736974696F6E2E580500000000000000C001400A506F7369
- 74696F6E2E5905000000000000008000400A53697A652E576964746805000000
- 000000008003400B53697A652E4865696768740500000000000000B803401453
- 697A652E506C6174666F726D44656661756C740800000654496D616765000953
- 74796C654E616D6506066269746D61700E4D756C74695265734269746D61700E
- 01000005416C69676E0708436F6E74656E74730C4D617267696E732E4C656674
- 05000000000000008000400B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E526967687405000000000000008000400E4D617267
- 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
- 0500000000000000A803400B53697A652E4865696768740500000000000000B0
- 03401453697A652E506C6174666F726D44656661756C74080000000554546578
- 7400095374796C654E616D6506047465787405416C69676E07044C656674064C
- 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
- 000000008002400D4D617267696E732E52696768740500000000000000800240
- 0A506F736974696F6E2E5805000000000000008404400A53697A652E57696474
- 680500000000000000C804400B53697A652E4865696768740500000000000000
- D003401453697A652E506C6174666F726D44656661756C740816546578745365
- 7474696E67732E466F6E74436F6C6F720708636C615768697465165465787453
- 657474696E67732E486F727A416C69676E07074C656164696E67000005545465
- 787400095374796C654E616D65060873686F727463757405416C69676E070552
- 69676874064C6F636B6564090748697454657374080C4D617267696E732E4C65
- 66740500000000000000C002400D4D617267696E732E52696768740500000000
- 000000C001400A506F736974696F6E2E580500000000000000C000C00A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C740816
- 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
- 165465787453657474696E67732E486F727A416C69676E07074C656164696E67
- 000007544C61796F757400095374796C654E616D6506077375626D61726B0541
- 6C69676E070552696768740A506F736974696F6E2E580500000000000000D404
- 400A53697A652E57696474680500000000000000A003400B53697A652E486569
- 6768740500000000000000D003401453697A652E506C6174666F726D44656661
- 756C7408000554506174680005416C69676E070643656E74657209446174612E
- 506174680A340000000400000000000000000000000000000001000000000000
- 000000803F010000000000803F0000003F0300000000000000000000000A4669
- 6C6C2E436F6C6F720708636C615768697465064C6F636B656409074869745465
- 7374080A53697A652E57696474680500000000000000E001400B53697A652E48
- 656967687405000000000000008002401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
- 0A5452656374616E676C6500095374796C654E616D65060C6D656E7562617273
- 74796C6505416C69676E070643656E7465720C436C69704368696C6472656E09
- 0946696C6C2E4B696E6407044E6F6E650748697454657374080A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 000000C804401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E650756697369626C6508075852616469757305
- 00000000000000C0004007595261646975730500000000000000C00040000A54
- 52656374616E676C650005416C69676E0706436C69656E740A46696C6C2E436F
- 6C6F7207097846463230323032300748697454657374080C4D617267696E732E
- 4C656674050000000000000080FFBF0B4D617267696E732E546F700500000000
- 00000080FFBF0D4D617267696E732E5269676874050000000000000080FFBF0A
- 53697A652E57696474680500000000000000D004400B53697A652E4865696768
- 740500000000000000CC04401453697A652E506C6174666F726D44656661756C
- 74080C5374726F6B652E436F6C6F720709784646313531353135075852616469
- 75730500000000000000C0004007595261646975730500000000000000C00040
- 000007544C61796F757400095374796C654E616D650607636F6E74656E740541
- 6C69676E0706436C69656E740C4D617267696E732E4C65667405000000000000
- 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
- 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
- 746F6D050000000000000080FF3F0A53697A652E576964746805000000000000
- 00C004400B53697A652E4865696768740500000000000000C004401453697A65
- 2E506C6174666F726D44656661756C74080000005450463007544C61796F7574
- 00095374796C654E616D65060D6D656E756974656D7374796C6505416C69676E
- 070643656E7465720C4D617267696E732E4C656674050000000000000080FF3F
- 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
- 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
- 0000000000000080FF3F0A53697A652E57696474680500000000000000920540
- 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 26000A5452656374616E676C650005416C69676E0708436F6E74656E74730A46
- 696C6C2E436F6C6F720709784646324138324532074869745465737408074F70
- 616369747905000000000017B7D1F13F0A53697A652E57696474680500000000
- 0000009205400B53697A652E4865696768740500000000000000D00340145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000F54466C6F6174416E696D6174696F6E00084475726174696F6E
- 05000000000018B7D1F23F0C50726F70657274794E616D6506074F7061636974
- 790A537461727456616C756505000000000000000000000953746F7056616C75
- 65050000000000000080FF3F0754726967676572060F497353656C6563746564
- 3D747275650E54726967676572496E76657273650610497353656C6563746564
- 3D66616C73650000000A5452656374616E676C6500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F720709784646324138324532074869745465737408074F70616369
- 747905000000000000000000000A53697A652E57696474680500000000000000
- 9205400B53697A652E4865696768740500000000000000D003401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E65000F54466C6F6174416E696D6174696F6E00084475726174696F6E050000
- 00000018B7D1F23F07496E7665727365090C50726F70657274794E616D650607
- 4F7061636974790A537461727456616C75650500000000000000000000095374
- 6F7056616C7565050000000000000080FF3F0754726967676572061049734D6F
- 7573654F7665723D747275650E54726967676572496E7665727365061149734D
- 6F7573654F7665723D66616C736500000007544C61796F757400095374796C65
- 4E616D650605676C79706805416C69676E07044C6566740A53697A652E576964
- 74680500000000000000C803400B53697A652E48656967687405000000000000
- 00D003401453697A652E506C6174666F726D44656661756C74080007544C6179
- 6F757400095374796C654E616D650609636865636B6D61726B05416C69676E07
- 08436F6E74656E7473074F7061636974790500000000006F1283F53F0A53697A
- 652E57696474680500000000000000C803400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C740800
- 0554506174680005416C69676E070643656E74657209446174612E506174680A
- 58000000070000000000000056D9524391AE2C43010000009276664365021643
- 010000009F3983432B7C3C43010000009E9AA64382D2B442010000006F1CB043
- 75A4D1420100000026DF8243263F67430300000056D9524391AE2C430A46696C
- 6C2E436F6C6F720708636C6157686974650748697454657374080A53697A652E
- 57696474680500000000000000B002400B53697A652E48656967687405000000
- 00000000B002401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E696D6174696F
- 6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
- 616D6506074F7061636974790A537461727456616C7565050000000000000000
- 00000953746F7056616C7565050000000000000080FF3F075472696767657206
- 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
- 4973436865636B65643D66616C73650000000654476C79706800095374796C65
- 4E616D65060A676C7970687374796C650C4D617267696E732E4C656674050000
- 000000000080FF3F0B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E52696768740500000000000000C000400E4D617267696E73
- 2E426F74746F6D050000000000000080FF3F05416C69676E07044C6566740A50
- 6F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E5905
- 000000000000008000400A53697A652E57696474680500000000000000800340
- 0B53697A652E4865696768740500000000000000B803401453697A652E506C61
- 74666F726D44656661756C740800000654496D61676500095374796C654E616D
- 6506066269746D61700E4D756C74695265734269746D61700E01000005416C69
- 676E07044C6566740C4D617267696E732E4C6566740500000000000000800040
- 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
- 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
- 000000000000008000400A506F736974696F6E2E580500000000000000800040
- 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
- 680500000000000000A803400B53697A652E4865696768740500000000000000
- B003401453697A652E506C6174666F726D44656661756C740800000005545465
- 787400095374796C654E616D6506047465787405416C69676E07044C65667406
- 4C6F636B6564090748697454657374080C4D617267696E732E4C656674050000
- 00000000008002400D4D617267696E732E526967687405000000000000008002
- 400A506F736974696F6E2E5805000000000000008404400A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00D003401453697A652E506C6174666F726D44656661756C7408165465787453
- 657474696E67732E466F6E74436F6C6F720708636C6157686974651654657874
- 53657474696E67732E486F727A416C69676E07074C656164696E670000055454
- 65787400095374796C654E616D65060873686F727463757405416C69676E0705
- 5269676874064C6F636B6564090748697454657374080C4D617267696E732E4C
- 6566740500000000000000C002400D4D617267696E732E526967687405000000
- 00000000C001400A506F736974696F6E2E580500000000000000C000C00A5369
- 7A652E57696474680500000000000000C804400B53697A652E48656967687405
- 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
- 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
- 65165465787453657474696E67732E486F727A416C69676E07074C656164696E
- 67000007544C61796F757400095374796C654E616D6506077375626D61726B05
- 416C69676E070552696768740A506F736974696F6E2E580500000000000000D4
- 04400A53697A652E57696474680500000000000000A003400B53697A652E4865
- 696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C7408000554506174680005416C69676E070643656E7465720944617461
- 2E506174680A3400000004000000000000000000000000000000010000000000
- 00000000803F010000000000803F0000003F0300000000000000000000000A46
- 696C6C2E436F6C6F720708636C615768697465064C6F636B6564090748697454
- 657374080A53697A652E57696474680500000000000000E001400B53697A652E
- 48656967687405000000000000008002401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
- 3007544C61796F757400095374796C654E616D6506126D656E75736570617261
- 746F727374796C6505416C69676E070643656E7465720C4D617267696E732E4C
- 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
- 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
- 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
- 6474680500000000000000C804400B53697A652E486569676874050000000000
- 0000C804401453697A652E506C6174666F726D44656661756C74080756697369
- 626C6508085461624F7264657202270005544C696E650005416C69676E070354
- 6F70084C696E65547970650703546F700C4D617267696E732E4C656674050000
- 0000000000C000400B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E52696768740500000000000000C000400A506F736974696F
- 6E2E580500000000000000C000400A506F736974696F6E2E5905000000000000
- 008000400A53697A652E57696474680500000000000000B004400B53697A652E
- 486569676874050000000000000080FF3F1453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
- 0000545046300A5452656374616E676C6500095374796C654E616D65060D6D65
- 6E75766965777374796C6505416C69676E070643656E7465720A46696C6C2E43
- 6F6C6F7207097846463230323032300A53697A652E5769647468050000000000
- 0000C804400B53697A652E4865696768740500000000000000C804401453697A
- 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
- 097846463135313531350756697369626C650807585261646975730500000000
- 000000C0004007595261646975730500000000000000C00040000A5452656374
- 616E676C650005416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 5461624F7264657202040007544C61796F75740005416C69676E07044C656674
+ 0A53697A652E576964746805000000000000009003400B53697A652E48656967
+ 687405000000000058559904401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E070643656E7465720A46696C6C2E436F6C6F7207
097846463230323032300748697454657374080A53697A652E57696474680500
- 000000000000C804400B53697A652E4865696768740500000000000000C80440
+ 000000000000F002400B53697A652E4865696768740500000000000000F00240
1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
6C6F72070978464631353135313507585261646975730500000000000000C000
- 4007595261646975730500000000000000C00040000D54536861646F77456666
- 656374000844697374616E63650500000000000000C000400944697265637469
- 6F6E0500000000000000B4054008536F66746E657373050000000000000080FE
- 3F074F706163697479050000000000000080FE3F0B536861646F77436F6C6F72
- 0708636C61426C61636B00000007544C61796F757400095374796C654E616D65
- 0607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E
- 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
- 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
- 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
- 696474680500000000000000C004400B53697A652E4865696768740500000000
- 000000C004401453697A652E506C6174666F726D44656661756C740800000054
- 50463007544C61796F757400095374796C654E616D650610726164696F627574
- 746F6E7374796C6505416C69676E070643656E7465720A53697A652E57696474
- 680500000000000000F205400B53697A652E4865696768740500000000000000
- A803401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F7264657202280007544C61796F75740005416C69676E07044C
- 6566740A53697A652E57696474680500000000000000A803400B53697A652E48
- 65696768740500000000000000A803401453697A652E506C6174666F726D4465
- 6661756C7408000854456C6C6970736500095374796C654E616D65060A626163
- 6B67726F756E6405416C69676E070643656E7465720A46696C6C2E436F6C6F72
- 0709784646323032303230064C6F636B6564090748697454657374080A53697A
- 652E57696474680500000000000000F002400B53697A652E4865696768740500
- 000000000000F002401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F720709784646313531353135000854456C6C697073
- 6500095374796C654E616D650609636865636B6D61726B05416C69676E070643
- 6C69656E740A46696C6C2E436F6C6F720709784646324138324532064C6F636B
- 656409074869745465737408074F70616369747905000000000000000000000C
- 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
- 546F7005000000000000008000400D4D617267696E732E526967687405000000
- 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
- 400A53697A652E57696474680500000000000000B002400B53697A652E486569
- 6768740500000000000000B002401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E
- 696D6174696F6E00095374796C654E616D65061A6F706163697479436865636B
- 6D61726B416E696D6174696F6E31084475726174696F6E050000000000000000
- 00000C50726F70657274794E616D6506074F7061636974790A53746172745661
- 6C756505000000000000000000000953746F7056616C75650500000000000000
- 80FF3F0754726967676572060E4973436865636B65643D747275650E54726967
- 676572496E7665727365060F4973436865636B65643D66616C73650000000F54
- 436F6C6F72416E696D6174696F6E00095374796C654E616D65061A726164696F
- 627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
- 00000000000000000007496E7665727365090C50726F70657274794E616D6506
- 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
- 300953746F7056616C7565070978464634303430343007547269676765720610
- 49734D6F7573654F7665723D747275650E54726967676572496E766572736506
- 1149734D6F7573654F7665723D66616C736500000F54436F6C6F72416E696D61
- 74696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E31
- 5374796C65084475726174696F6E05000000000000000000000C50726F706572
- 74794E616D65060C5374726F6B652E436F6C6F720A537461727456616C756507
- 097846463135313531350953746F7056616C7565070978464632413832453207
- 54726967676572060E4973436865636B65643D747275650E5472696767657249
- 6E7665727365060F4973436865636B65643D66616C7365000000000554546578
- 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
- 064C6F636B6564090748697454657374080A53697A652E576964746805000000
- 00000000C805400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C7408045465787406045465787416
- 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
- 0000005450463007544C61796F757400095374796C654E616D650618756C6365
- 6E746572726164696F627574746F6E7374796C6505416C69676E070643656E74
- 65720A53697A652E57696474680500000000005655FB05400B53697A652E4865
- 696768740500000000000000A004401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F7264657202290007544C61796F
- 75740005416C69676E0706426F74746F6D0A506F736974696F6E2E5905000000
- 000000008804400A53697A652E57696474680500000000005655FB05400B5369
- 7A652E4865696768740500000000000000C001401453697A652E506C6174666F
- 726D44656661756C7408000A5452656374616E676C6500095374796C654E616D
- 65060A6261636B67726F756E6405416C69676E0708436F6E74656E747307436F
- 726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E
- 436F6C6F720709784646323032303230064C6F636B6564090748697454657374
- 080A53697A652E57696474680500000000005655FB05400B53697A652E486569
- 6768740500000000000000C001401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F720709784646313531353135000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D6506216261636B6772
- 6F756E64556C427574746F6E436F6C6F72416E696D6174696F6E310844757261
- 74696F6E050000000000000000000007496E7665727365090C50726F70657274
- 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
- 463230323032300953746F7056616C7565070978464634303430343007547269
- 67676572061049734D6F7573654F7665723D747275650E54726967676572496E
- 7665727365061149734D6F7573654F7665723D66616C736500000A5452656374
- 616E676C6500095374796C654E616D650609636865636B6D61726B05416C6967
- 6E0708436F6E74656E747307436F726E6572730B07546F704C6566740A426F74
- 746F6D4C656674000A46696C6C2E436F6C6F720709784646324138324532064C
- 6F636B656409074869745465737408074F706163697479050000000000000000
- 00000C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
- 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
- 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
- 0080FF3F0A53697A652E57696474680500000000005655F705400B53697A652E
- 48656967687405000000000000008001401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F61
- 74416E696D6174696F6E00095374796C654E616D65061A636865636B6D61726B
- 4F706163697479416E696D6174696F6E31084475726174696F6E050000000000
- 00000000000C50726F70657274794E616D6506074F7061636974790A53746172
- 7456616C756505000000000000000000000953746F7056616C75650500000000
- 00000080FF3F0754726967676572060E4973436865636B65643D747275650E54
- 726967676572496E7665727365060F4973436865636B65643D66616C73650000
- 00000005545465787400095374796C654E616D6506047465787405416C69676E
- 0706436C69656E74064C6F636B6564090748697454657374080A53697A652E57
- 696474680500000000005655FB05400B53697A652E4865696768740500000000
- 0000008804401453697A652E506C6174666F726D44656661756C740816546578
- 7453657474696E67732E466F6E74436F6C6F720708636C615768697465000000
- 5450463007544C61796F757400095374796C654E616D650616756C6C65667472
- 6164696F627574746F6E7374796C6505416C69676E070643656E7465720A5369
- 7A652E57696474680500000000005655FB05400B53697A652E48656967687405
- 00000000000000A004401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508085461624F72646572022A0007544C61796F7574000541
- 6C69676E0706426F74746F6D0A506F736974696F6E2E59050000000000000088
- 04400A53697A652E57696474680500000000005655FB05400B53697A652E4865
- 696768740500000000000000C001401453697A652E506C6174666F726D446566
- 61756C7408000A5452656374616E676C6500095374796C654E616D65060A6261
- 636B67726F756E6405416C69676E0708436F6E74656E747307436F726E657273
- 0B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F72
- 0709784646323032303230064C6F636B6564090748697454657374080A53697A
- 652E57696474680500000000005655FB05400B53697A652E4865696768740500
- 000000000000C001401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F720709784646313531353135075852616469757305
- 00000000000000C0004007595261646975730500000000000000C00040000F54
- 436F6C6F72416E696D6174696F6E00095374796C654E616D6506216261636B67
- 726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E3108447572
- 6174696F6E050000000000000000000007496E7665727365090C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463230323032300953746F7056616C75650709784646343034303430075472
- 6967676572061049734D6F7573654F7665723D747275650E5472696767657249
- 6E7665727365061149734D6F7573654F7665723D66616C736500000A54526563
- 74616E676C6500095374796C654E616D650609636865636B6D61726B05416C69
- 676E0708436F6E74656E747307436F726E6572730B07546F704C6566740A426F
- 74746F6D4C656674000A46696C6C2E436F6C6F72070978464632413832453206
- 4C6F636B656409074869745465737408074F7061636974790500000000000000
- 0000000C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
- 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
- 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
- 000080FF3F0A53697A652E57696474680500000000005655F705400B53697A65
- 2E48656967687405000000000000008001401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469
- 7573050000000000000080004007595261646975730500000000000000800040
- 000F54466C6F6174416E696D6174696F6E00095374796C654E616D65061A6368
- 65636B6D61726B4F706163697479416E696D6174696F6E31084475726174696F
- 6E05000000000000000000000C50726F70657274794E616D6506074F70616369
- 74790A537461727456616C756505000000000000000000000953746F7056616C
- 7565050000000000000080FF3F0754726967676572060E4973436865636B6564
- 3D747275650E54726967676572496E7665727365060F4973436865636B65643D
- 66616C7365000000000005545465787400095374796C654E616D650604746578
- 7405416C69676E0706436C69656E74064C6F636B656409074869745465737408
- 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
- 687405000000000000008804401453697A652E506C6174666F726D4465666175
- 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
- 686974650000005450463007544C61796F757400095374796C654E616D650617
- 756C7269676874726164696F627574746F6E7374796C6505416C69676E070643
- 656E7465720A53697A652E57696474680500000000005655FB05400B53697A65
- 2E4865696768740500000000000000A004401453697A652E506C6174666F726D
- 44656661756C74080756697369626C6508085461624F72646572022C0007544C
- 61796F75740005416C69676E0706426F74746F6D0A506F736974696F6E2E5905
- 000000000000008804400A53697A652E57696474680500000000005655FB0540
- 0B53697A652E4865696768740500000000000000C001401453697A652E506C61
- 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
- 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
- 07436F726E6572730B08546F7052696768740B426F74746F6D5269676874000A
- 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
- 7454657374080A53697A652E57696474680500000000005655FB05400B53697A
- 652E4865696768740500000000000000C001401453697A652E506C6174666F72
+ 4007595261646975730500000000000000C00040000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070643
+ 6C69656E740A46696C6C2E436F6C6F7207097846463241383245320748697454
+ 65737408074F70616369747905000000000000000000000C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A53697A652E57
+ 696474680500000000000000B002400B53697A652E4865696768740500000000
+ 000000B002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C000
+ 4007595261646975730500000000000000C00040000F54466C6F6174416E696D
+ 6174696F6E00095374796C654E616D65061B6368656368626F7856697362696C
+ 697479416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D6506074F7061636974790A537461727456616C
+ 756505000000000000000000000953746F7056616C75650500000000000000C8
+ 05400754726967676572060E4973436865636B65643D747275650E5472696767
+ 6572496E7665727365060F4973436865636B65643D66616C73650000000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650618636865636B62
+ 6F785374726F6B65416E696D6174696F6E31084475726174696F6E0500000000
+ 0000000000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F
+ 720A537461727456616C756507097846463135313531350953746F7056616C75
+ 6507097846463241383245320754726967676572060E4973436865636B65643D
+ 747275650E54726967676572496E7665727365060F4973436865636B65643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650617636865636B626F78436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646323032303230095374
+ 6F7056616C756507097846463430343034300754726967676572061049734D6F
+ 7573654F7665723D747275650E54726967676572496E7665727365061149734D
+ 6F7573654F7665723D66616C73650000000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E740A53697A652E576964
+ 74680500000000005855DD05400B53697A652E48656967687405000000000058
+ 559904401453697A652E506C6174666F726D44656661756C7408045465787406
+ 0454657874165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 6157686974650000005450463007544C61796F757400095374796C654E616D65
+ 0609656469747374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C6508085461624F726465720205000C5442727573684F626A6563740009
+ 5374796C654E616D65060A666F726567726F756E6400000C5442727573684F62
+ 6A65637400095374796C654E616D65060973656C656374696F6E0B4272757368
+ 2E436F6C6F72070978393632413832453200000B54466F6E744F626A65637400
+ 095374796C654E616D650604666F6E7409466F6E742E53697A65050000000000
+ 0000D0024000000A5452656374616E676C6500095374796C654E616D65060A62
+ 61636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E43
+ 6F6C6F7207097846463230323032300748697454657374080A53697A652E5769
+ 6474680500000000000000C805400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F72070978464631353135313507585261646975730500000000
+ 000000C0004007595261646975730500000000000000C00040000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650614656469745374726F6B
+ 65416E696D6174696F6E31084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060C5374726F6B652E436F6C6F720A5374617274
+ 56616C756507097846463135313531350953746F7056616C7565070978464632
+ 41383245320754726967676572060E4973466F63757365643D747275650E5472
+ 6967676572496E7665727365060F4973466F63757365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061465646974
+ 5374726F6B65416E696D6174696F6E32084475726174696F6E05000000000000
+ 0000000007496E7665727365090C50726F70657274794E616D65060C5374726F
+ 6B652E436F6C6F720A537461727456616C756507097846463135313531350953
+ 746F7056616C756507097846463443344334430754726967676572062149734D
+ 6F7573654F7665723D747275653B4973466F63757365643D66616C73653B0E54
+ 726967676572496E7665727365062249734D6F7573654F7665723D66616C7365
+ 3B4973466F63757365643D66616C73653B00000007544C61796F757400095374
+ 796C654E616D650607627574746F6E7305416C69676E07055269676874064C6F
+ 636B6564090B4D617267696E732E546F7005000000000000008000400D4D6172
+ 67696E732E526967687405000000000000008000400E4D617267696E732E426F
+ 74746F6D05000000000000008000400A506F736974696F6E2E58050000000000
+ 0000C004400A506F736974696F6E2E5905000000000000008000400A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F757400095374796C654E616D650607636F6E74656E7405416C69
+ 676E0706436C69656E74064C6F636B6564090C4D617267696E732E4C65667405
+ 000000000000008001400B4D617267696E732E546F7005000000000000008000
+ 400D4D617267696E732E526967687405000000000000008000400E4D61726769
+ 6E732E426F74746F6D05000000000000008000400A53697A652E576964746805
+ 00000000000000A804400B53697A652E4865696768740500000000000000A803
+ 401453697A652E506C6174666F726D44656661756C7408000006544C6162656C
+ 00095374796C654E616D65060670726F6D7074064C6F636B656409074F706163
+ 697479050000000000000080FE3F165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650454657874060454657874000000545046
+ 3007544C61796F757400095374796C654E616D650609677269647374796C6505
+ 416C69676E070643656E7465720A53697A652E5769647468050000000000FFFF
+ E905400B53697A652E48656967687405000000000000008306401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 65720206000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978333237383738373800000C5442727573684F626A656374000953
+ 74796C654E616D6506086C696E6566696C6C0B42727573682E436F6C6F720709
+ 78464631353135313500000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F720709784646323032303230064C6F636B6564090748697454
+ 657374080C50616464696E672E4C65667405000000000000008000400B506164
+ 64696E672E546F7005000000000000008000400D50616464696E672E52696768
+ 7405000000000000008000400E50616464696E672E426F74746F6D0500000000
+ 0000008000400A53697A652E5769647468050000000000FFFFE905400B53697A
+ 652E48656967687405000000000000008306401453697A652E506C6174666F72
6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
3507585261646975730500000000000000C00040075952616469757305000000
- 00000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E
- 616D6506216261636B67726F756E64556C427574746F6E436F6C6F72416E696D
- 6174696F6E31084475726174696F6E050000000000000000000007496E766572
- 7365090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846463230323032300953746F7056616C756507097846
- 463430343034300754726967676572061049734D6F7573654F7665723D747275
- 650E54726967676572496E7665727365061149734D6F7573654F7665723D6661
- 6C736500000A5452656374616E676C6500095374796C654E616D650609636865
- 636B6D61726B05416C69676E0708436F6E74656E747307436F726E6572730B08
- 546F7052696768740B426F74746F6D5269676874000A46696C6C2E436F6C6F72
- 0709784646324138324532064C6F636B656409074869745465737408074F7061
- 6369747905000000000000000000000C4D617267696E732E4C65667405000000
- 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
- 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
- 426F74746F6D050000000000000080FF3F0A53697A652E576964746805000000
- 00005655F705400B53697A652E48656967687405000000000000008001401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E650758526164697573050000000000000080004007595261646975
- 730500000000000000800040000F54466C6F6174416E696D6174696F6E000953
- 74796C654E616D65061A636865636B6D61726B4F706163697479416E696D6174
- 696F6E31084475726174696F6E05000000000000000000000C50726F70657274
- 794E616D6506074F7061636974790A537461727456616C756505000000000000
- 000000000953746F7056616C7565050000000000000080FF3F07547269676765
- 72060E4973436865636B65643D747275650E54726967676572496E7665727365
- 060F4973436865636B65643D66616C7365000000000005545465787400095374
- 796C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B
- 6564090748697454657374080A53697A652E57696474680500000000005655FB
- 05400B53697A652E48656967687405000000000000008804401453697A652E50
- 6C6174666F726D44656661756C74080454657874060454657874165465787453
- 657474696E67732E466F6E74436F6C6F720708636C6157686974650000005450
- 463007544C61796F757400095374796C654E616D65061470726F677265737362
- 61726D696E697374796C6505416C69676E070643656E7465720A53697A652E57
- 6964746805000000000033338505400B53697A652E4865696768740500000000
- 009999E104401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F72646572022E000A5452656374616E676C6500095374
- 796C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A
- 46696C6C2E436F6C6F720709784646343034303430064C6F636B656409074869
- 7454657374080A53697A652E576964746805000000000033338505400B53697A
- 652E4865696768740500000000009999E104401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164
- 6975730500000000000000800040075952616469757305000000000000008000
- 40000A5452656374616E676C6500095374796C654E616D65060A68696E646963
- 61746F7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646
- 324138324532064C6F636B6564090748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000099
- 99E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650758526164697573050000000000000080004007
- 5952616469757305000000000000008000400000000A5452656374616E676C65
- 00095374796C654E616D65060676747261636B05416C69676E0708436F6E7465
- 6E74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B6564
- 090748697454657374080A53697A652E57696474680500000000003333850540
- 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
- 5852616469757305000000000000008000400759526164697573050000000000
- 0000800040000A5452656374616E676C6500095374796C654E616D65060A7669
- 6E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F
- 720709784646324138324532064C6F636B6564090748697454657374080A506F
- 736974696F6E2E5905000000000099998D04400A53697A652E57696474680500
- 0000000033338505400B53697A652E4865696768740500000000000000A80340
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65075852616469757305000000000000008000400759526164
- 6975730500000000000000800040000000005450463007544C61796F75740009
- 5374796C654E616D65060E636F6D626F656469747374796C6505416C69676E07
- 0643656E7465720A53697A652E57696474680500000000000000C805400B5369
- 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F726465720230000C
- 5442727573684F626A65637400095374796C654E616D65060A666F726567726F
- 756E6400000B54466F6E744F626A65637400095374796C654E616D650604666F
- 6E7409466F6E742E53697A650500000000000000D00240000007544C61796F75
- 7400095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
- 436F6E74656E74730A53697A652E57696474680500000000000000C805400B53
- 697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C7408000A5452656374616E676C6500095374796C654E61
- 6D65060A52656374616E676C653105416C69676E0706436C69656E740A46696C
- 6C2E436F6C6F7207097846463230323032300748697454657374080A53697A65
- 2E57696474680500000000000000C805400B53697A652E486569676874050000
- 0000000000C803401453697A652E506C6174666F726D44656661756C74080C53
- 74726F6B652E436F6C6F72070978464632303230323007585261646975730500
- 000000000000C0004007595261646975730500000000000000C00040000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
- 6E696D6174696F6E315374796C65084475726174696F6E050000000000000000
- 000007496E7665727365090C50726F70657274794E616D65060C5374726F6B65
- 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
- 7056616C756507097846463430343034300754726967676572062049734D6F75
- 73654F7665723D747275653B4973466F63757365643D66616C73650E54726967
- 676572496E7665727365062149734D6F7573654F7665723D66616C73653B4973
- 466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
- 095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65
- 084475726174696F6E050000000000000000000007496E7665727365090C5072
- 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
- 6C756507097846463430343034300953746F7056616C75650709784646324138
- 3245320754726967676572061F49734D6F7573654F7665723D747275653B4973
- 466F63757365643D747275650E54726967676572496E7665727365062049734D
- 6F7573654F7665723D747275653B4973466F63757365643D66616C7365000007
- 544C61796F757400095374796C654E616D6506056172726F7705416C69676E07
- 0846697452696768740B4D617267696E732E546F70050000000000000080FF3F
- 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
- 732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E580500
- 000000005ED99705400A506F736974696F6E2E59050000000000000080FF3F0A
- 53697A652E5769647468050000000000889AB803400B53697A652E4865696768
- 740500000000000000B803401453697A652E506C6174666F726D44656661756C
- 7408000A5452656374616E676C6500095374796C654E616D65060A5265637461
- 6E676C653105416C69676E0708436F6E74656E747307436F726E6572730B0854
- 6F7052696768740B426F74746F6D5269676874000A46696C6C2E436F6C6F7207
- 097846463330333033300748697454657374080A53697A652E57696474680500
- 00000000889AB803400B53697A652E4865696768740500000000000000B80340
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E6507585261646975730500000000000000C000400759526164
- 6975730500000000000000C00040000F54436F6C6F72416E696D6174696F6E00
- 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
- 084475726174696F6E050000000000000000000007496E7665727365090C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 6507097846463330333033300953746F7056616C756507097846463430343034
- 300754726967676572062049734D6F7573654F7665723D747275653B4973466F
- 63757365643D66616C73650E54726967676572496E7665727365062149734D6F
- 7573654F7665723D66616C73653B4973466F63757365643D66616C736500000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
- 72416E696D6174696F6E325374796C65084475726174696F6E05000000000000
- 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463430343034300953746F7056616C7565070978
- 46463137353739430754726967676572061F4973466F63757365643D74727565
- 3B49734D6F7573654F7665723D7472756500000007544C61796F757400095374
- 796C654E616D6506074C61796F75743105416C69676E070643656E7465720C4D
- 617267696E732E4C656674050000000000000080FF3F0A53697A652E57696474
- 680500000000000000A002400B53697A652E4865696768740500000000000000
- C001401453697A652E506C6174666F726D44656661756C740800055450617468
- 00095374796C654E616D650605506174683105416C69676E0706436C69656E74
- 09446174612E506174680A3400000004000000000000000000C8420000C84201
- 000000000096430000C842010000000000484300009643030000000000C84200
- 00C8420A46696C6C2E436F6C6F720708636C6157686974650748697454657374
- 080A53697A652E57696474680500000000000000A002400B53697A652E486569
- 6768740500000000000000C001401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E650000000000000C544272
- 7573684F626A65637400095374796C654E616D65060973656C656374696F6E0B
- 42727573682E436F6C6F720709783936324138324532000007544C61796F7574
- 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
- 6E740C4D617267696E732E4C65667405000000000000008000400B4D61726769
+ 00000000C0004000075448656164657200095374796C654E616D650606686561
+ 6465720553696465730B03546F70044C65667406426F74746F6D055269676874
+ 0005416C69676E0703546F700A506F736974696F6E2E58050000000000000080
+ 00400A506F736974696F6E2E5905000000000000008000400A53697A652E5769
+ 647468050000000000FFFFE105400B53697A652E486569676874050000000000
+ 0000A803401453697A652E506C6174666F726D44656661756C7408000007544C
+ 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
+ 06436C69656E740C436C69704368696C6472656E090A53697A652E5769647468
+ 050000000000FFFFC105400B53697A652E4865696768740500000000000000B4
+ 05401453697A652E506C6174666F726D44656661756C7408000A545265637461
+ 6E676C6500095374796C654E616D65060973656C656374696F6E0A46696C6C2E
+ 436F6C6F7207097846463241383245320748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C000
+ 4007595261646975730500000000000000C0004000000A5452656374616E676C
+ 6500095374796C654E616D650605666F6375730A46696C6C2E436F6C6F720709
+ 7841463241383245320748697454657374080C4D617267696E732E4C65667405
+ 0000000000000080FF3F0B4D617267696E732E546F70050000000000000080FF
+ 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6507585261646975730500000000000000C0004007595261
+ 646975730500000000000000C000400000000A545363726F6C6C426172000953
+ 74796C654E616D65060A767363726F6C6C62617205416C69676E070552696768
+ 740B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
+ 74696F6E0708566572746963616C0A506F736974696F6E2E58050000000000FF
+ FFC505400A506F736974696F6E2E590500000000000000B803400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00000000B405401453697A652E506C6174666F726D44656661756C740800000A
+ 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
+ 7205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A50
+ 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
+ 00000000000000E205400A53697A652E5769647468050000000000FFFFE10540
+ 0B53697A652E48656967687405000000000000008003401453697A652E506C61
+ 74666F726D44656661756C740800000F54536D616C6C5363726F6C6C42617200
+ 095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C6967
+ 6E070552696768740B536D616C6C4368616E676505000000000000000000000B
+ 4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E4C65
+ 667405000000000000008000400A506F736974696F6E2E580500000000000000
+ C605400A506F736974696F6E2E5905000000000000008000400A53697A652E57
+ 6964746805000000000000008002400B53697A652E4865696768740500000000
+ 0000008002401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E61
+ 6D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F
+ 6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
+ 74696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000
+ 000000008000400A506F736974696F6E2E5805000000000000008000400A506F
+ 736974696F6E2E590500000000000000E205400A53697A652E57696474680500
+ 0000000000009606400B53697A652E4865696768740500000000000000800240
+ 1453697A652E506C6174666F726D44656661756C74080756697369626C650800
+ 0000005450463007544C61796F757400095374796C654E616D65060D67726F75
+ 70626F787374796C6505416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000F004400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F726465720207000A5452656374616E676C6500095374796C
+ 654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74
+ 730946696C6C2E4B696E6407044E6F6E650748697454657374080C4D61726769
+ 6E732E4C6566740500000000000000C000400B4D617267696E732E546F700500
+ 0000000000009002400D4D617267696E732E52696768740500000000000000C0
+ 00400E4D617267696E732E426F74746F6D0500000000000000C000400A53697A
+ 652E57696474680500000000000000D804400B53697A652E4865696768740500
+ 0000000000009804401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646313531353135075852616469757305
+ 00000000000000C0004007595261646975730500000000000000C00040000554
+ 5465787400095374796C654E616D65060474657874084175746F53697A65090A
+ 436C6970506172656E74090748697454657374080C4D617267696E732E4C6566
+ 740500000000000000A002400A506F736974696F6E2E58050000000000605595
+ 02400A506F736974696F6E2E590500000000004055D501C00A53697A652E5769
+ 64746805000000000000B8C703400B53697A652E486569676874050000000000
+ 0060FF02401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746515546578
+ 7453657474696E67732E576F72645772617008000000005450463007544C6179
+ 6F757400095374796C654E616D65060F6865616465726974656D7374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ 9205400B53697A652E4865696768740500000000000000D003401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 65720208000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646344334433443064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000000009205400B53697A652E486569676874
+ 0500000000000000D003401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F72070978464631353135313507585261646975
+ 730500000000000000C0004007595261646975730500000000000000C0004000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615686561
+ 646572436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000
+ 0000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
+ 537461727456616C756507097846463443344334430953746F7056616C756507
+ 097846463241383245320754726967676572060E4973507265737365643D7472
+ 75650E54726967676572496E7665727365060F4973507265737365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 166865616465725374726F6B65416E696D6174696F6E31084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060C5374726F6B65
+ 2E436F6C6F720A537461727456616C756507097846463135313531350953746F
+ 7056616C756507097846463241383245320754726967676572060E4973507265
+ 737365643D747275650E54726967676572496E7665727365060F497350726573
+ 7365643D66616C736500000005545465787400095374796C654E616D65060474
+ 65787405416C69676E0706436C69656E74064C6F636B65640907486974546573
+ 74080C4D617267696E732E4C6566740500000000000000A001400B4D61726769
6E732E546F7005000000000000008000400D4D617267696E732E526967687405
- 00000000000000F003400E4D617267696E732E426F74746F6D05000000000000
- 008000400A53697A652E576964746805000000000000008805400B53697A652E
- 4865696768740500000000000000A803401453697A652E506C6174666F726D44
- 656661756C74080000005450463007544C61796F757400095374796C654E616D
- 650613657870616E646572627574746F6E7374796C6505416C69676E07064365
- 6E7465720B4D617267696E732E546F70050000000000000080FF3F0A53697A65
- 2E57696474680500000000000000B003400B53697A652E486569676874050000
- 0000000000B003401453697A652E506C6174666F726D44656661756C74080756
- 697369626C6508085461624F7264657202330005545061746800095374796C65
- 4E616D650605506174683105416C69676E070643656E74657209446174612E50
- 6174680A3400000004000000000000000000C8420000C8420100000000009643
- 0000C842010000000000484300009643030000000000C8420000C8420A46696C
- 6C2E436F6C6F720708636C6157686974650748697454657374080D526F746174
- 696F6E416E676C650500000000000000B405400A53697A652E57696474680500
- 000000000000A002400B53697A652E4865696768740500000000000000C00140
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C65
- 4E616D650614466C6F6174416E696D6174696F6E315374796C65084475726174
- 696F6E050000000000CDCCCCFB3F0D496E746572706F6C6174696F6E07084369
- 7263756C61720C50726F70657274794E616D65060D526F746174696F6E416E67
- 6C650A537461727456616C75650500000000000000B405400953746F7056616C
- 756505000000000000000000000754726967676572060F4973457870616E6465
- 643D747275650E54726967676572496E766572736506104973457870616E6465
- 643D66616C7365000000005450463007544C61796F757400095374796C654E61
- 6D650615657870616E646572636865636B626F787374796C6505416C69676E07
- 0643656E7465720A53697A652E576964746805000000000000008406400B5369
- 7A652E48656967687405000000000000008404401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F7264657202360007
- 544C61796F75740005416C69676E07044C6566740A53697A652E576964746805
- 00000000000000C003400B53697A652E48656967687405000000000000008404
- 401453697A652E506C6174666F726D44656661756C7408000554506174680005
- 416C69676E0706436C69656E7409446174612E506174680AD801000027000000
- 00000000FEC8BA4402E79244020000002592AD4402E79244020000006D5BA544
- FEB09E44020000006D5BA544FEB09E440200000093A4A4446A0C9F4402000000
- 4A80AC44FC79AA4402000000046EBA44FC79AA44020000004A00C844FC79AA44
- 020000000080CF44FEB09E44020000000080CF44FEB09E44020000000080CF44
- FEB09E44020000004C5BC84402E7924402000000FEC8BA4402E7924400000000
- FE88BA44FE30974402000000B876BF44FE309744020000000277C344EEA09A44
- 020000000277C34404DE9E44020000000277C344121BA34402000000B876BF44
- 008CA64402000000FE88BA44008CA644020000004C9BB544008CA64402000000
- 009CB144121BA34402000000009CB14404DE9E4402000000009CB144EEA09A44
- 020000004C9BB544FE30974402000000FE88BA44FE309744000000000080BA44
- 045E9B4402000000146EB844045E9B440200000000C0B64454F79C4402000000
- 00C0B64400F09E440200000000C0B644ACE8A04402000000146EB844FC81A244
- 020000000080BA44FC81A24402000000EC91BC44FC81A244020000000040BE44
- ACE8A044020000000040BE4400F09E44020000000040BE4454F79C4402000000
- EC91BC44045E9B44020000000080BA44045E9B440A46696C6C2E436F6C6F7207
- 097836303030303030300748697454657374080C4D617267696E732E4C656674
- 05000000000000008000400B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E526967687405000000000000008000400E4D617267
- 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
- 0500000000000000A003400B53697A652E4865696768740500000000000000E8
+ 00000000000000A001400E4D617267696E732E426F74746F6D05000000000000
+ 008000400A53697A652E57696474680500000000000000FC04400B53697A652E
+ 4865696768740500000000000000B003401453697A652E506C6174666F726D44
+ 656661756C7408165465787453657474696E67732E466F6E74436F6C6F720708
+ 636C6157686974650000005450463007544C61796F757400095374796C654E61
+ 6D65060E696D61676563656C6C7374796C6505416C69676E070643656E746572
+ 0756697369626C6508085461624F726465720209000654496D61676500095374
+ 796C654E616D650605696D6167650E4D756C74695265734269746D61700E0100
+ 0005416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 000000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080
+ FF3F0A53697A652E57696474680500000000000000C004400B53697A652E4865
+ 696768740500000000000000C004401453697A652E506C6174666F726D446566
+ 61756C74080000005450463007544C61796F757400095374796C654E616D6506
+ 0A6C6162656C7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C6508085461624F72646572020A0005545465787400095374796C654E61
+ 6D6506047465787405416C69676E0708436F6E74656E74730748697454657374
+ 080A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 57686974650000005450463007544C61796F757400095374796C654E616D6506
+ 0D6C697374626F78666F6F74657205416C69676E070643656E7465720A53697A
+ 652E576964746805000000000000009205400B53697A652E4865696768740500
+ 000000000000D003401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508085461624F72646572020B0005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E74064C6F636B6564
+ 090748697454657374080C4D617267696E732E4C6566740500000000000000A0
+ 01400B4D617267696E732E546F7005000000000000008000400D4D617267696E
+ 732E52696768740500000000000000A001400E4D617267696E732E426F74746F
+ 6D05000000000000008000400A53697A652E57696474680500000000000000FC
+ 04400B53697A652E4865696768740500000000000000B003401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C6157686974650000005450463007544C61796F757400
+ 095374796C654E616D6506106C697374626F786974656D7374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000D60540
+ 0B53697A652E4865696768740500000000000000C003401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508085461624F7264657202
+ 0C000654476C79706800095374796C654E616D65060A676C7970687374796C65
+ 0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 00000000008000400E4D617267696E732E426F74746F6D050000000000000080
+ FF3F05416C69676E07044C6566740A506F736974696F6E2E5805000000000000
+ 008000400A506F736974696F6E2E59050000000000000080FF3F0A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00000000B003401453697A652E506C6174666F726D44656661756C7408000005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706436C
+ 69656E740748697454657374080C4D617267696E732E4C656674050000000000
+ 0000C000400B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E52696768740500000000000000C000400E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A53697A652E5769647468050000000000
+ 0000CA05400B53697A652E4865696768740500000000000000B003401453697A
+ 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C615768697465155465787453657474696E6773
+ 2E576F72645772617008165465787453657474696E67732E486F727A416C6967
+ 6E07074C656164696E6700000954436865636B426F7800095374796C654E616D
+ 650605636865636B05416C69676E07084D6F73744C6566740843616E466F6375
+ 73081244697361626C65466F637573456666656374090A53697A652E57696474
+ 680500000000000000A003400B53697A652E4865696768740500000000000000
+ C003401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 65080000005450463007544C61796F757400095374796C654E616D6506126C69
+ 7374626F78706C61696E68656164657205416C69676E070643656E7465720A53
+ 697A652E576964746805000000000000009205400B53697A652E486569676874
+ 0500000000000000D003401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508085461624F72646572020D000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F720709784646324432443244064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 00009205400B53697A652E4865696768740500000000000000D003401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 0978464631353135313507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C00040000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
+ 48697454657374080C4D617267696E732E4C6566740500000000000000A00140
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 52696768740500000000000000A001400E4D617267696E732E426F74746F6D05
+ 000000000000008000400A53697A652E57696474680500000000000000FC0440
+ 0B53697A652E4865696768740500000000000000B003401453697A652E506C61
+ 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
+ 6F6C6F720708636C6157686974650000005450463007544C61796F7574000953
+ 74796C654E616D65060C6C697374626F787374796C6505416C69676E07064365
+ 6E7465720A53697A652E5769647468050000000000FFFFE905400B53697A652E
+ 48656967687405000000000000008306401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508085461624F72646572020E000C544272
+ 7573684F626A65637400095374796C654E616D650618416C7465726E6174696E
+ 67526F774261636B67726F756E640B42727573682E436F6C6F72070978464632
+ 433243324300000A5452656374616E676C6500095374796C654E616D65060A62
+ 61636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E43
+ 6F6C6F720709784646323032303230064C6F636B656409074869745465737408
+ 0C50616464696E672E4C65667405000000000000008000400B50616464696E67
+ 2E546F7005000000000000008000400D50616464696E672E5269676874050000
+ 00000000008000400E50616464696E672E426F74746F6D050000000000000080
+ 00400A53697A652E5769647468050000000000FFFFE905400B53697A652E4865
+ 6967687405000000000000008306401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135075852
+ 61646975730500000000000000C0004007595261646975730500000000000000
+ C000400007544C61796F757400095374796C654E616D650607636F6E74656E74
+ 05416C69676E0706436C69656E740C436C69704368696C6472656E090A53697A
+ 652E5769647468050000000000FFFFC105400B53697A652E4865696768740500
+ 000000000000DE05401453697A652E506C6174666F726D44656661756C740800
+ 0A5452656374616E676C6500095374796C654E616D65060973656C656374696F
+ 6E0A46696C6C2E436F6C6F720709784646324138324532074869745465737408
+ 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
+ 68740500000000000000C804401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
+ 0000000000C0004007595261646975730500000000000000C0004000000A5452
+ 656374616E676C6500095374796C654E616D650610666F637573656473656C65
+ 6374696F6E0A46696C6C2E436F6C6F7207097846463241383245320748697454
+ 657374080A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E650B5374726F6B65
+ 2E446173680703446F7407585261646975730500000000000000C00040075952
+ 61646975730500000000000000C000400000000A545363726F6C6C4261720009
+ 5374796C654E616D65060A767363726F6C6C62617205416C69676E0705526967
+ 68740B536D616C6C4368616E676505000000000000000000000B4F7269656E74
+ 6174696F6E0708566572746963616C0A506F736974696F6E2E58050000000000
+ FFFFC505400A506F736974696F6E2E5905000000000000008000400A53697A65
+ 2E576964746805000000000000008003400B53697A652E486569676874050000
+ 0000000000DE05401453697A652E506C6174666F726D44656661756C74080000
+ 0A545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C62
+ 617205416C69676E0706426F74746F6D0B536D616C6C4368616E676505000000
+ 000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A
+ 506F736974696F6E2E5805000000000000008000400A506F736974696F6E2E59
+ 0500000000000000E205400A53697A652E5769647468050000000000FFFFE105
+ 400B53697A652E48656967687405000000000000008003401453697A652E506C
+ 6174666F726D44656661756C740800000F54536D616C6C5363726F6C6C426172
+ 00095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69
+ 676E070552696768740B536D616C6C4368616E67650500000000000000000000
+ 0B4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E4C
+ 65667405000000000000008000400A506F736974696F6E2E5805000000000000
+ 00C605400A506F736974696F6E2E5905000000000000008000400A53697A652E
+ 576964746805000000000000008002400B53697A652E48656967687405000000
+ 000000008002401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E
+ 616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F7474
+ 6F6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E74
+ 6174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F70050000
+ 00000000008000400A506F736974696F6E2E5805000000000000008000400A50
+ 6F736974696F6E2E590500000000000000E205400A53697A652E576964746805
+ 000000000000009606400B53697A652E48656967687405000000000000008002
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 000000005450463007544C61796F757400095374796C654E616D65060E706F70
+ 757063656C6C7374796C6505416C69676E070643656E7465720756697369626C
+ 6508085461624F72646572020F0007544C61796F75740005416C69676E070552
+ 696768740A506F736974696F6E2E5805000000000000008C04400A53697A652E
+ 57696474680500000000000000F002400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C7408000554
+ 506174680005416C69676E070643656E74657209446174612E506174680A4000
+ 00000500000000000000000000000000803F010000000000803F0000803F0100
+ 00000000003F0000000001000000000000000000803F03000000000000000000
+ 00000A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0B4D617267696E732E546F700500000000000000E001C00A53697A652E576964
+ 746805000000000000008002400B53697A652E48656967687405000000000000
+ 008001401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6500000554506174680005416C69676E070643656E
+ 74657209446174612E506174680A340000000400000000000000000000000000
+ 0000010000000000803F00000000010000000000003F0000803F030000000000
+ 0000000000000A46696C6C2E436F6C6F720708636C6157686974650748697454
+ 657374080B4D617267696E732E546F700500000000000000C001400A53697A65
+ 2E576964746805000000000000008002400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6500000005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000A001
+ 400B4D617267696E732E546F7005000000000000008000400D4D617267696E73
+ 2E52696768740500000000000000A001400E4D617267696E732E426F74746F6D
+ 05000000000000008000400A53697A652E57696474680500000000000000C803
+ 400B53697A652E4865696768740500000000000000B804401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D65061070726F67726573736261727374796C6505416C6967
+ 6E070643656E7465720A53697A652E576964746805000000000033338505400B
+ 53697A652E4865696768740500000000009999E104401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508085461624F726465720210
+ 000A5452656374616E676C6500095374796C654E616D65060668747261636B05
+ 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 6805000000000033338505400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135075852616469757305000000000000
+ 00C0004007595261646975730500000000000000C00040000A5452656374616E
+ 676C6500095374796C654E616D65060A68696E64696361746F7205416C69676E
+ 07044C6566740A46696C6C2E436F6C6F720709784646324138324532064C6F63
+ 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
+ 000080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000009999D904401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
+ C0004007595261646975730500000000000000C000400000000A545265637461
+ 6E676C6500095374796C654E616D65060676747261636B05416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F
+ 636B6564090748697454657374080A53697A652E576964746805000000000033
+ 338505400B53697A652E4865696768740500000000009999E104401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 78464631353135313507585261646975730500000000000000C0004007595261
+ 646975730500000000000000C00040000A5452656374616E676C650009537479
+ 6C654E616D65060A76696E64696361746F7205416C69676E0706426F74746F6D
+ 0A46696C6C2E436F6C6F720709784646324138324532064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C656674050000000000000080FF3F0B
+ 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
+ 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
+ 00000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A
+ 506F736974696F6E2E5905000000000099998904400A53697A652E5769647468
+ 05000000000033338105400B53697A652E4865696768740500000000000000A8
03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E6508577261704D6F64650703466974000F54436F6C6F72
- 416E696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097836303030303030300953746F7056616C75650708636C61426C6163
- 6B0754726967676572060E4973436865636B65643D7472756500000F54436F6C
- 6F72416E696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F
- 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
- 616C75650708636C61426C61636B0953746F7056616C75650709783630303030
- 3030300754726967676572060F4973436865636B65643D66616C736500000000
- 05545465787400095374796C654E616D6506047465787405416C69676E070643
- 6C69656E74064C6F636B6564090748697454657374080C4D617267696E732E4C
- 65667405000000000000008002400B4D617267696E732E546F70050000000000
- 00008000400D4D617267696E732E5269676874050000000000000080FF3F0A53
- 697A652E57696474680500000000000000C605400B53697A652E486569676874
- 0500000000000000F803401453697A652E506C6174666F726D44656661756C74
- 08165465787453657474696E67732E466F6E74436F6C6F720709784646454545
- 454545165465787453657474696E67732E486F727A416C69676E07074C656164
- 696E670000005450463007544C61796F757400095374796C654E616D65060D65
- 7870616E6465727374796C6505416C69676E070643656E7465720A53697A652E
- 576964746805000000000000C08607400B53697A652E48656967687405000000
- 00000000CE05401453697A652E506C6174666F726D44656661756C7408075669
- 7369626C6508085461624F726465720239000A5452656374616E676C65000953
- 74796C654E616D65060B626772656374616E676C6505416C69676E0708436F6E
- 74656E74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B
- 6564090748697454657374080A53697A652E576964746805000000000000C086
- 07400B53697A652E4865696768740500000000000000CE05401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 4631353135313507585261646975730500000000000000C00040075952616469
- 75730500000000000000C000400007544C61796F757400095374796C654E616D
- 6506074C61796F75743305416C69676E0703546F700A53697A652E5769647468
- 05000000000000C08607400B53697A652E4865696768740500000000000000C8
- 03401453697A652E506C6174666F726D44656661756C74080007544C61796F75
- 7400095374796C654E616D6506074C61796F75743405416C69676E0708436F6E
- 74656E74730A53697A652E576964746805000000000000C08607400B53697A65
- 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
- 44656661756C7408000A5452656374616E676C6500095374796C654E616D6506
- 0A52656374616E676C653205416C69676E0708436F6E74656E747307436F726E
- 6572730B07546F704C65667408546F705269676874000A46696C6C2E436F6C6F
- 720709784646323532353235064C6F636B6564090748697454657374080A5369
- 7A652E576964746805000000000000C08607400B53697A652E48656967687405
- 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 4B696E6407044E6F6E6507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C00040000000005450463007544C61796F7574
+ 00095374796C654E616D65061170726F677265737363656C6C7374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000000000F8
+ 05400B53697A652E4865696768740500000000000000FC05401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
+ 7202110007544C61796F757400095374796C654E616D65060668747261636B05
+ 416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A53697A652E57
+ 696474680500000000000000F005400B53697A652E4865696768740500000000
+ 000000F405401453697A652E506C6174666F726D44656661756C7408000A5452
+ 656374616E676C6500095374796C654E616D65060A68696E64696361746F7205
+ 416C69676E07044C6566740A46696C6C2E436F6C6F7207097846463241383245
+ 32064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
+ 000000000000008000400B4D617267696E732E546F7005000000000000008000
+ 400D4D617267696E732E526967687405000000000000008000400E4D61726769
+ 6E732E426F74746F6D05000000000000008000400A506F736974696F6E2E5805
+ 000000000000008000400A506F736974696F6E2E590500000000000000800040
+ 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
+ 68740500000000000000EC05401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
+ 0000000000C0004007595261646975730500000000000000C000400000000054
+ 5046300A5452656374616E676C6500095374796C654E616D6506147363726F6C
+ 6C62617268747261636B7374796C6505416C69676E070643656E7465720A4669
+ 6C6C2E436F6C6F7207097846463135313531350748697454657374080A53697A
+ 652E57696474680500000000000000C804400B53697A652E4865696768740500
+ 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E650756697369626C6508000654546875
+ 6D6200095374796C654E616D6506057468756D62064C6F636B6564090A53697A
+ 652E576964746805000000000000008003400B53697A652E4865696768740500
+ 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
+ 5374796C654C6F6F6B7570060A7468756D627374796C65000000545046300754
+ 4C61796F757400095374796C654E616D65060E7363726F6C6C6261727374796C
+ 6505416C69676E070643656E7465720756697369626C6508085461624F726465
+ 720212000754427574746F6E00095374796C654E616D65060A6C656674627574
+ 746F6E05416C69676E07044C656674064C6F636B6564090A506F736974696F6E
+ 2E5905000000000000008003400A53697A652E57696474680500000000000000
+ 8003400B53697A652E48656967687405000000000000009003401453697A652E
+ 506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006137363
+ 726F6C6C6261726C656674627574746F6E00000754427574746F6E0009537479
+ 6C654E616D65060B7269676874627574746F6E05416C69676E07055269676874
+ 064C6F636B6564090A506F736974696F6E2E5805000000000000008804400A50
+ 6F736974696F6E2E5905000000000000008003400A53697A652E576964746805
+ 000000000000008003400B53697A652E48656967687405000000000000009003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B757006147363726F6C6C6261727269676874627574746F6E00000754427574
+ 746F6E00095374796C654E616D65060C626F74746F6D627574746F6E05416C69
+ 676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E59050000
+ 00000000008804400A53697A652E57696474680500000000000000C804400B53
+ 697A652E48656967687405000000000000008003401453697A652E506C617466
+ 6F726D44656661756C74080B5374796C654C6F6F6B757006157363726F6C6C62
+ 6172626F74746F6D627574746F6E00000654547261636B00095374796C654E61
+ 6D65060668747261636B05416C69676E0706436C69656E74064C6F636B656409
+ 0B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E5769
+ 64746805000000000000009003400B53697A652E486569676874050000000000
+ 00009003401453697A652E506C6174666F726D44656661756C74080B5374796C
+ 654C6F6F6B757006147363726F6C6C62617268747261636B7374796C65000006
+ 54547261636B00095374796C654E616D65060676747261636B05416C69676E07
+ 06436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0A53697A652E576964746805000000000000009003400B5369
+ 7A652E48656967687405000000000000009003401453697A652E506C6174666F
+ 726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C6261
+ 7276747261636B7374796C6500000754427574746F6E00095374796C654E616D
+ 650609746F70627574746F6E05416C69676E0703546F700A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 008003401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B757006127363726F6C6C626172746F70627574746F6E000000545046
+ 300A5452656374616E676C6500095374796C654E616D6506147363726F6C6C62
+ 617276747261636B7374796C6505416C69676E070643656E7465720A46696C6C
+ 2E436F6C6F7207097846463135313531350748697454657374080A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650756697369626C65080006545468756D62
+ 00095374796C654E616D6506057468756D62064C6F636B6564090A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 000000008003401453697A652E506C6174666F726D44656661756C74080B5374
+ 796C654C6F6F6B7570060A7468756D627374796C650000005450463007544C61
+ 796F757400095374796C654E616D65060C7370696E626F787374796C6505416C
+ 69676E070643656E7465720A53697A652E57696474680500000000006666E005
+ 400B53697A652E4865696768740500000000000000C003401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508085461624F72646572
+ 0213000A5452656374616E676C6500095374796C654E616D65060A6261636B67
+ 726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 07097846463230323032300A53697A652E57696474680500000000006666E005
+ 400B53697A652E4865696768740500000000000000C003401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 31353135313507585261646975730500000000000000C0004007595261646975
+ 730500000000000000C00040000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650614436F6C6F72416E696D6174696F6E315374796C650844
+ 75726174696F6E050000000000000000000007496E7665727365090C50726F70
+ 657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75
+ 6507097846463135313531350953746F7056616C756507097846463430343034
+ 300754726967676572061049734D6F7573654F7665723D747275650E54726967
+ 676572496E7665727365061149734D6F7573654F7665723D66616C7365000000
+ 0C5442727573684F626A65637400095374796C654E616D65060A666F72656772
+ 6F756E640B42727573682E436F6C6F72070978464645414541454100000C5442
+ 727573684F626A65637400095374796C654E616D65060973656C656374696F6E
+ 0B42727573682E436F6C6F720709783936324138324532000007544C61796F75
+ 7400095374796C654E616D650607636F6E74656E7405416C69676E0706436C69
+ 656E74064C6F636B6564090C4D617267696E732E4C6566740500000000000000
+ 8000400B4D617267696E732E546F7005000000000000008000400D4D61726769
+ 6E732E526967687405000000000000008000400E4D617267696E732E426F7474
+ 6F6D05000000000000008000400A53697A652E5769647468050000000000E1CC
+ F004400B53697A652E4865696768740500000000000000A003401453697A652E
+ 506C6174666F726D44656661756C740800000754427574746F6E00095374796C
+ 654E616D65060B6D696E7573627574746F6E05416C69676E07044C6566740843
+ 616E466F6375730806437572736F72070763724172726F770C4D617267696E73
+ 2E4C65667405000000000000008000400B4D617267696E732E546F7005000000
+ 000000008000400D4D617267696E732E52696768740500000000000000800040
+ 0E4D617267696E732E426F74746F6D05000000000000008000400A506F736974
+ 696F6E2E5805000000000000008000400A506F736974696F6E2E590500000000
+ 0000008000400A53697A652E5769647468050000000000E6FF9F03400B53697A
+ 652E4865696768740500000000000000A003401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B7570060B627574746F6E737479
+ 6C65000554506174680005416C69676E070643656E74657209446174612E5061
+ 74680A4000000005000000000000000000803F00000000010000000000803F00
+ 00803F01000000000000000000003F010000000000803F000000000300000000
+ 00803F000000000A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080A53697A652E576964746805000000000098FFFF01400B53697A65
+ 2E48656967687405000000000000008002401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000075442
+ 7574746F6E00095374796C654E616D65060A706C7573627574746F6E05416C69
+ 676E070552696768740843616E466F6375730806437572736F72070763724172
+ 726F770C4D617267696E732E4C65667405000000000000008000400B4D617267
+ 696E732E546F7005000000000000008000400D4D617267696E732E5269676874
+ 05000000000000008000400E4D617267696E732E426F74746F6D050000000000
+ 00008000400A506F736974696F6E2E580500000000006A66B405400A506F7369
+ 74696F6E2E5905000000000000008000400A53697A652E576964746805000000
+ 0000F0FF9F03400B53697A652E4865696768740500000000000000A003401453
+ 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
+ 060B627574746F6E7374796C65000554506174680005416C69676E070643656E
+ 74657209446174612E506174680A340000000400000000000000000000000000
+ 000001000000000000000000803F010000000000803F0000003F030000000000
+ 0000000000000A46696C6C2E436F6C6F720708636C6157686974650748697454
+ 657374080A53697A652E5769647468050000000000C0FFFF01400B53697A652E
+ 48656967687405000000000000008002401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
+ 300D545377697463684F626A65637400095374796C654E616D65060B73776974
+ 63687374796C6505416C69676E070643656E746572044B696E64070C46616469
+ 6E67547261636B730A53697A652E57696474680500000000000000C805400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C7408085461624F72646572021412547261636B696E6754
+ 68756D625363616C65050000000000000080FF3F0756697369626C65080A4669
+ 6C6C2E436F6C6F7207097846463230323032300C46696C6C4F6E2E436F6C6F72
+ 07097846463137353739430B46696C6C4F6E2E4B696E640705536F6C69640B53
+ 74726F6B652E4B696E6407044E6F6E650B5468756D622E436F6C6F7207097846
+ 463430343034300D5468756D624F6E2E436F6C6F720709784646324138324532
+ 0C5468756D624F6E2E4B696E640705536F6C6964105468756D625374726F6B65
+ 2E4B696E6407044E6F6E650F5468756D625374726F6B652E4361700705526F75
+ 6E64105468756D625374726F6B652E446173680706437573746F6D105468756D
+ 625374726F6B652E4A6F696E0705526F756E64165468756D625374726F6B652E
+ 437573746F6D446173680A080000000000000000000000055368617065070952
+ 6F756E645265637400005450463007544C61796F757400095374796C654E616D
+ 65060F746162636F6E74726F6C7374796C6505416C69676E070643656E746572
+ 0A53697A652E576964746805000000000000008E06400B53697A652E48656967
+ 6874050000000000FFFFC905401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720215000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E747307436F726E6572730B08546F7052696768740A426F74
+ 746F6D4C6566740B426F74746F6D5269676874000A46696C6C2E436F6C6F7207
+ 09784646333033303330064C6F636B6564090748697454657374080C50616464
+ 696E672E4C65667405000000000000008000400B50616464696E672E546F7005
+ 000000000000008000400D50616464696E672E52696768740500000000000000
+ 8000400E50616464696E672E426F74746F6D05000000000000008000400A5369
+ 7A652E576964746805000000000000008E06400B53697A652E48656967687405
+ 0000000000FFFFC905401453697A652E506C6174666F726D44656661756C7408
0C5374726F6B652E436F6C6F7207097846463135313531350758526164697573
0500000000000000C0004007595261646975730500000000000000C000400000
- 0A5452656374616E676C6500095374796C654E616D65060A52656374616E676C
- 653105416C69676E0708436F6E74656E747307436F726E6572730B07546F704C
- 65667408546F705269676874000A46696C6C2E436F6C6F720709784646313531
- 353135064C6F636B6564090748697454657374080A53697A652E576964746805
- 000000000000C08607400B53697A652E4865696768740500000000000000C803
- 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E6507585261646975730500000000000000C0004007595261
- 646975730500000000000000C00040000F54466C6F6174416E696D6174696F6E
- 00095374796C654E616D650614466C6F6174416E696D6174696F6E315374796C
- 65084475726174696F6E050000000000CDCCCCFB3F0D496E746572706F6C6174
- 696F6E070843697263756C61720C50726F70657274794E616D6506075363616C
- 652E580A537461727456616C7565050000000000000080FF3F0953746F705661
- 6C756505000000000000000000000754726967676572060F4973457870616E64
- 65643D747275650E54726967676572496E766572736506104973457870616E64
- 65643D66616C73650000000007544C61796F757400095374796C654E616D6506
- 074C61796F75743305416C69676E0708436F6E74656E74730A53697A652E5769
- 64746805000000000000C08607400B53697A652E486569676874050000000000
- 0000C803401453697A652E506C6174666F726D44656661756C74080005545465
- 787400095374796C654E616D6506047465787405416C69676E07044C65667408
- 4175746F53697A65090A436C6970506172656E7409064C6F636B656409074869
- 7454657374080C4D617267696E732E4C6566740500000000000000A002400A50
- 6F736974696F6E2E580500000000000000A002400A53697A652E576964746805
- 00000000000018D103400B53697A652E4865696768740500000000000060FF02
- 401453697A652E506C6174666F726D44656661756C7408045465787406045465
- 7874165465787453657474696E67732E466F6E74436F6C6F720708636C615768
- 697465165465787453657474696E67732E486F727A416C69676E07074C656164
- 696E670000000F54457870616E646572427574746F6E00095374796C654E616D
- 650606627574746F6E05416C69676E07055269676874064C6F636B6564090A50
- 6F736974696F6E2E580500000000000080F906400A53697A652E576964746805
- 00000000000000A003400B53697A652E4865696768740500000000000000C803
- 401453697A652E506C6174666F726D44656661756C7408000000000054504630
- 07544C61796F757400095374796C654E616D650615616E69696E64696361746F
- 72686F727A7374796C6505416C69676E070643656E7465720A53697A652E5769
- 6474680500000000000040C006400B53697A652E486569676874050000000000
- 00008000401453697A652E506C6174666F726D44656661756C74080756697369
- 626C6508000A5452656374616E676C6500095374796C654E616D65060A526563
- 74616E676C653105416C69676E0706436C69656E740C436C69704368696C6472
- 656E090A46696C6C2E436F6C6F7207097846463430343034300A53697A652E57
- 696474680500000000000040C006400B53697A652E4865696768740500000000
- 0000008000401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E650758526164697573050000000000000080FF
- 3F0759526164697573050000000000000080FF3F0005544C696E650009537479
- 6C654E616D6506054C696E6531084C696E65547970650706426F74746F6D0A53
- 697A652E57696474680500000000000000A00B400B53697A652E486569676874
- 05000000000000008000401453697A652E506C6174666F726D44656661756C74
- 080C5374726F6B652E436F6C6F720709784646324138324532105374726F6B65
- 2E546869636B6E65737305000000000000008002400A5374726F6B652E436170
- 0705526F756E640B5374726F6B652E446173680704446173680B5374726F6B65
- 2E4A6F696E0705526F756E64000F54466C6F6174416E696D6174696F6E000953
- 74796C654E616D650603616E6907456E61626C656409084475726174696F6E05
- 00000000000000800340044C6F6F70090C50726F70657274794E616D65060A50
- 6F736974696F6E2E580A537461727456616C75650500000000000000C808C009
- 53746F7056616C756505000000000000000000000754726967676572060E4973
- 56697369626C653D7472756500000000005450463007544C61796F7574000953
- 74796C654E616D650611616E69696E64696361746F727374796C6505416C6967
- 6E070643656E7465720756697369626C650800045441726300095374796C654E
- 616D65060341726305416C69676E0708436F6E74656E74730748697454657374
- 080D526F746174696F6E416E676C650500000000000000B407400A53697A652E
- 57696474680500000000000000C804400B53697A652E48656967687405000000
- 00000000C804401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F720708636C615768697465105374726F6B652E54686963
- 6B6E657373050000000000000080004008456E64416E676C6505000000000000
- 00B405C0000F54466C6F6174416E696D6174696F6E00095374796C654E616D65
- 0603616E6907456E61626C656409084475726174696F6E050000000000000080
- FF3F044C6F6F70090C50726F70657274794E616D65060D526F746174696F6E41
- 6E676C650A537461727456616C756505000000000000000000000953746F7056
- 616C75650500000000000000B407400754726967676572060E49735669736962
- 6C653D74727565000000005450463007544C61796F757400095374796C654E61
- 6D65060A70616E656C7374796C6505416C69676E070643656E7465720A53697A
- 652E57696474680500000000000000C006400B53697A652E4865696768740500
- 000000000000A406401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F7207097846463230323032300A53697A652E576964746805000000
- 00000000C006400B53697A652E4865696768740500000000000000A406401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E6507585261646975730500000000000000C0004007595261646975
- 730500000000000000C000400000005450463007544C61796F75740009537479
- 6C654E616D65061970726F67726573736261726D696E696572726F727374796C
- 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
- 33338505400B53697A652E4865696768740500000000009999E104401453697A
- 652E506C6174666F726D44656661756C7408000A5452656374616E676C650009
- 5374796C654E616D65060668747261636B05416C69676E0708436F6E74656E74
- 730A46696C6C2E436F6C6F720709784646343034303430064C6F636B65640907
- 48697454657374080A53697A652E576964746805000000000033338505400B53
- 697A652E4865696768740500000000009999E104401453697A652E506C617466
+ 00545046300A5452656374616E676C6500095374796C654E616D65060B746162
+ 646F747374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F
+ 7207097846463135313531350748697454657374080A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E650756697369626C650807585261646975730500000000
+ 000000C8034007595261646975730500000000000000C80340000F54436F6C6F
+ 72416E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463135313531350953746F7056616C75650709784646324138
+ 3245320754726967676572060F497353656C65637465643D747275650E547269
+ 67676572496E76657273650610497353656C65637465643D66616C7365000000
+ 5450463007544C61796F757400095374796C654E616D65060C7461626974656D
+ 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
+ 000000000000C804400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
+ 5461624F726465720216000A5452656374616E676C6500095374796C654E616D
+ 650603746F7005416C69676E0708436F6E74656E74730C436C69704368696C64
+ 72656E0907436F726E6572730B07546F704C65667408546F705269676874000A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080553696465730B03546F70044C656674055269676874000A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F7207097846463135313531350758526164697573
+ 0500000000000000C0004007595261646975730500000000000000C000400006
+ 54476C79706800095374796C654E616D65060A676C7970687374796C650C4D61
+ 7267696E732E4C65667405000000000000008001400D4D617267696E732E5269
+ 67687405000000000000008001C005416C69676E07044C6566740A506F736974
+ 696F6E2E5805000000000000008001400A53697A652E57696474680500000000
+ 0000008003400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C740800000554546578740009537479
+ 6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ C000400B4D617267696E732E546F700500000000000000C000400D4D61726769
+ 6E732E52696768740500000000000000C000400E4D617267696E732E426F7474
+ 6F6D0500000000000000C000400A53697A652E57696474680500000000000000
+ B004400B53697A652E48656967687405000000000000009803401453697A652E
+ 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465155465787453657474696E67732E57
+ 6F7264577261700800000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650612746162436F6C6F72416E696D6174696F6E310D416E696D6174
+ 696F6E547970650705496E4F7574084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463230323032300953746F7056616C75650709784646
+ 3430343034300754726967676572062149734D6F7573654F7665723D74727565
+ 3B497353656C65637465643D66616C73650E54726967676572496E7665727365
+ 062249734D6F7573654F7665723D66616C73653B497353656C65637465643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650612746162436F6C6F72416E696D6174696F6E32084475726174696F6E0500
+ 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463241383245320754726967676572060F497353656C65637465
+ 643D747275650E54726967676572496E76657273650610497353656C65637465
+ 643D66616C7365000000005450463007544C61796F757400095374796C654E61
+ 6D65060D7465787463656C6C7374796C6505416C69676E070643656E74657207
+ 56697369626C6508085461624F7264657202170007544C61796F757400095374
+ 796C654E616D650607636F6E74656E7405416C69676E0708436F6E74656E7473
+ 064C6F636B6564090C4D617267696E732E4C6566740500000000000000800140
+ 0B4D617267696E732E546F7005000000000000008001400D4D617267696E732E
+ 526967687405000000000000008001400E4D617267696E732E426F74746F6D05
+ 000000000000008001400A53697A652E57696474680500000000000000A80440
+ 0B53697A652E4865696768740500000000000000A804401453697A652E506C61
+ 74666F726D44656661756C740800000C5442727573684F626A65637400095374
+ 796C654E616D65060A666F726567726F756E6400000C5442727573684F626A65
+ 637400095374796C654E616D65060973656C656374696F6E0B42727573682E43
+ 6F6C6F72070978393632413832453200000B54466F6E744F626A656374000953
+ 74796C654E616D650604666F6E74000000545046300754436972636C65000953
+ 74796C654E616D65060D7468756D626261727374796C6505416C69676E070643
+ 656E7465720A46696C6C2E436F6C6F7207097846463241383245320748697454
+ 657374080A53697A652E57696474680500000000000000A003400B53697A652E
+ 4865696768740500000000000000A003401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
+ 56697369626C6508000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D6506147468756D62436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646324138324532095374
+ 6F7056616C756507097846463137353739430754726967676572061F49735072
+ 65737365643D747275653B49734D6F7573654F7665723D747275650E54726967
+ 676572496E766572736506104973507265737365643D66616C73653B00000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D6506147468756D62
+ 436F6C6F72416E696D6174696F6E32084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463241383245320953746F7056616C756507097846
+ 463430394246460754726967676572062049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C73650E54726967676572496E7665727365
+ 062149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 06157468756D625374726F6B65416E696D6174696F6E31084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060C5374726F6B65
+ 2E436F6C6F720A537461727456616C756507097846463135313531350953746F
+ 7056616C756507097846463137353739430754726967676572061F4973507265
+ 737365643D747275653B49734D6F7573654F7665723D747275650E5472696767
+ 6572496E7665727365060F4973507265737365643D66616C7365000000545046
+ 300A5452656374616E676C6500095374796C654E616D65060A7468756D627374
+ 796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463444344434440748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650756697369626C6508000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F6E31
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646344434
+ 4434440953746F7056616C756507097846463137353739430754726967676572
+ 060E4973507265737365643D747275650E54726967676572496E766572736506
+ 0F4973507265737365643D66616C736500000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E315374
+ 796C65084475726174696F6E05000000000000000000000C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3444344434440953746F7056616C75650707636C614772617907547269676765
+ 72061049734D6F7573654F7665723D747275650E54726967676572496E766572
+ 7365061149734D6F7573654F7665723D66616C73650000005450463007544C61
+ 796F757400095374796C654E616D65060D747261636B6261727374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000000000C8
+ 05400B53697A652E4865696768740500000000000000C805401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
+ 7202180B46697865644865696768740211000A5452656374616E676C65000953
+ 74796C654E616D65060668747261636B05416C69676E070A5665727443656E74
+ 65720A46696C6C2E436F6C6F7207097846463135313531350748697454657374
+ 080A506F736974696F6E2E590500000000000000BC04400A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00A001401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6507585261646975730500000000000000A0004007
+ 595261646975730500000000000000A00040000A5452656374616E676C650009
+ 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
+ 74656E74730946696C6C2E4B696E6407044E6F6E65064C6F636B656409074869
+ 7454657374080C4D617267696E732E4C6566740500000000000000C001400B4D
+ 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
+ 6768740500000000000000C001400E4D617267696E732E426F74746F6D050000
+ 000000000080FF3F0A53697A652E57696474680500000000000000B005400B53
+ 697A652E4865696768740500000000000000C000401453697A652E506C617466
6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852
- 6164697573050000000000000080004007595261646975730500000000000000
- 800040000A5452656374616E676C6500095374796C654E616D65060A68696E64
- 696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72070978
- 4646453232413241064C6F636B6564090748697454657374080A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 009999E104401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E65075852616469757305000000000000008000
- 40075952616469757305000000000000008000400000000A5452656374616E67
- 6C6500095374796C654E616D65060676747261636B05416C69676E0708436F6E
- 74656E74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B
- 6564090748697454657374080A53697A652E5769647468050000000000333385
- 05400B53697A652E4865696768740500000000009999E104401453697A652E50
- 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
- 6507585261646975730500000000000000800040075952616469757305000000
- 00000000800040000A5452656374616E676C6500095374796C654E616D65060A
- 76696E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F
- 6C6F720709784646453232413241064C6F636B6564090748697454657374080A
- 506F736974696F6E2E5905000000000099998D04400A53697A652E5769647468
- 05000000000033338505400B53697A652E4865696768740500000000000000A8
- 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E6507585261646975730500000000000000800040075952
- 61646975730500000000000000800040000000005450463007544C61796F7574
- 00095374796C654E616D65060E6C6F67627574746F6E7374796C6505416C6967
- 6E070643656E7465720A53697A652E57696474680500000000000000C005400B
- 53697A652E4865696768740500000000000000C005401453697A652E506C6174
- 666F726D44656661756C74080756697369626C6508085461624F726465720201
- 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
- 756E6405416C69676E0706436C69656E740C436C69704368696C6472656E090A
- 436C6970506172656E740907436F726E6572730B08546F7052696768740B426F
- 74746F6D5269676874000A46696C6C2E436F6C6F720709784646323032303230
- 0748697454657374080A53697A652E57696474680500000000000000C005400B
- 53697A652E4865696768740500000000000000C005401453697A652E506C6174
+ 61646975730500000000000000C0FF3F07595261646975730500000000000000
+ C0FF3F00000A5452656374616E676C6500095374796C654E616D650609686967
+ 686C6967687405416C69676E07044C6566740A46696C6C2E436F6C6F72070978
+ 46463241383245320748697454657374080C50616464696E672E4C6566740500
+ 000000000000A002400A53697A652E57696474680500000000000000F003400B
+ 53697A652E4865696768740500000000000000A001401453697A652E506C6174
666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758
- 5261646975730500000000000000C00040075952616469757305000000000000
- 00C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0615627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E
- 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
- 616C756507097846463430343034300754726967676572063049734D6F757365
- 4F7665723D747275653B4973507265737365643D66616C73653B4973466F6375
- 7365643D66616C73650E54726967676572496E7665727365063149734D6F7573
- 654F7665723D66616C73653B4973507265737365643D66616C73653B4973466F
- 63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
- 74796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3208
- 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
- 060A46696C6C2E436F6C6F720A537461727456616C7565070978464634303430
- 34300953746F7056616C75650709784646313735373943075472696767657206
- 2F4973507265737365643D747275653B49734D6F7573654F7665723D74727565
- 3B4973466F63757365643D66616C736500000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
- 696F6E33084475726174696F6E05000000000000000000000C50726F70657274
- 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
- 463241383245320953746F7056616C7565070978464631373537394307547269
- 67676572062E4973507265737365643D747275653B49734D6F7573654F766572
- 3D747275653B4973466F63757365643D747275650E54726967676572496E7665
- 727365062F4973507265737365643D66616C73653B49734D6F7573654F766572
- 3D747275653B4973466F63757365643D74727565000005545061746800095374
- 796C654E616D650605506174683105416C69676E0706436C69656E7409446174
- 612E506174680A5C02000032000000000000000000A841CDCCCC400100000000
- 00A8410000C041010000000000C03F0000C041010000000000C03F0000000001
- 0000009A99694100000000010000000000A841CDCCCC40030000000000A841CD
- CCCC400000000000009C410000F04001000000000058410000F0400100000000
- 0058410000C03F01000000000040400000C03F01000000000040400000B44101
- 00000000009C410000B4410100000000009C410000F0400300000000009C4100
- 00F04000000000000040410000F04001000000000090400000F0400100000000
- 0090400000C04001000000000040410000C04001000000000040410000F04003
- 000000000040410000F040000000000000904000001041010000000000904100
- 0010410100000000009041000028410100000000009040000028410100000000
- 0090400000104103000000000090400000104100000000000090400000404101
- 0000000000904100004041010000000000904100005841010000000000904000
- 0058410100000000009040000040410300000000009040000040410000000000
- 0090400000704101000000000090410000704101000000000090410000844101
- 0000000000904000008441010000000000904000007041030000000000904000
- 0070410000000000009040000090410100000000009041000090410100000000
- 00904100009C41010000000000904000009C4101000000000090400000904103
- 000000000090400000904100000000000070410000C040010000003333934100
- 00C04001000000000070416666264001000000000070410000C0400300000000
- 0070410000C0400A46696C6C2E436F6C6F720708636C61576869746507486974
- 54657374080C4D617267696E732E4C6566740500000000000000A002400B4D61
- 7267696E732E546F700500000000000000A002400D4D617267696E732E526967
- 68740500000000000000A002400E4D617267696E732E426F74746F6D05000000
- 00000000A002400A53697A652E576964746805000000000000009805400B5369
- 7A652E48656967687405000000000000009805401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
- 704D6F6465070346697400000000}
- end>
- Left = 8
- Top = 408
- end
- object AERModernAnimatedStyle: TStyleBook
- StyleName = 'AER Modern Smooth Style'
- Styles = <
- item
- ResourcesBin = {
- 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
- AF00060B627574746F6E7374796C6503C5040609656469747374796C6503AC05
- 060A6C6162656C7374796C65032001060D67726F7570626F787374796C65038E
- 02060D747261636B6261727374796C65038C07060D636865636B626F78737479
- 6C65039E0506147363726F6C6C62617268747261636B7374796C65033B010614
- 7363726F6C6C62617276747261636B7374796C65033B0106157363726F6C6C62
- 6172626F74746F6D627574746F6E032D0406137363726F6C6C6261726C656674
- 627574746F6E03440406147363726F6C6C6261727269676874627574746F6E03
- 450406127363726F6C6C626172746F70627574746F6E034304060E7363726F6C
- 6C6261727374796C65036304060A7468756D627374796C65034402060B737769
- 7463687374796C6503DC01060C7370696E626F787374796C65032908060F7461
- 62636F6E74726F6C7374796C6503A701060B746162646F747374796C65035901
- 060C7461626974656D7374796C6503EF04060D7468756D626261727374796C65
- 034F03060C6C697374626F787374796C6503AD07060D6C697374626F78666F6F
- 746572038B0106106C697374626F786974656D7374796C6503260306126C6973
- 74626F78706C61696E6865616465720346020609677269647374796C65038708
- 060F6865616465726974656D7374796C6503CE03061070726F67726573736261
- 727374796C65036A04061170726F677265737363656C6C7374796C6503A50206
- 106D656E756261726974656D7374796C6503300B060C6D656E75626172737479
- 6C65036C02060D6D656E756974656D7374796C65035D0B06126D656E75736570
- 617261746F727374796C6503E501060D6D656E75766965777374796C65039102
- 060E696D61676563656C6C7374796C65033D01060E706F70757063656C6C7374
- 796C65038E03060D7465787463656C6C7374796C6503A60106096D656D6F7374
- 796C6503DE07060E6C696E6B6C6162656C7374796C65035B03060D73697A6567
- 7269707374796C6503FB04060E7374617475736261727374796C6503DB01060C
- 746F6F6C6261727374796C6503CA00061570726F67726573736261726572726F
- 727374796C65036F040613736D616C6C7363726F6C6C6261727374796C6503AE
- 01060D636F6D626F626F787374796C65030108060D73706C6974746572737479
- 6C6503C0030610636C6F7365627574746F6E7374796C65038604060E6D617862
- 7574746F6E7374796C65030104060E6D696E627574746F6E7374796C65031904
- 060E726573627574746F6E7374796C65031A04061177696E646F77626F726465
- 727374796C65035510060F746F6F6C77696E646F777374796C6503BD0D061072
- 6164696F627574746F6E7374796C6503C4050618756C63656E74657272616469
- 6F627574746F6E7374796C650368050616756C6C656674726164696F62757474
- 6F6E7374796C65035B050617756C7269676874726164696F627574746F6E7374
- 796C65036005060E636F6D626F656469747374796C65038D090611616E69696E
- 64696361746F727374796C6503BA010613657870616E646572627574746F6E73
- 74796C650381020615657870616E646572636865636B626F787374796C6503DB
- 05060A70616E656C7374796C65031E01061970726F67726573736261726D696E
- 696572726F727374796C65036103061470726F67726573736261726D696E6973
- 74796C65035C03060D657870616E6465727374796C65037C060615616E69696E
- 64696361746F72686F727A7374796C65038A02060E6C6F67627574746F6E7374
- 796C65038A0700545046300A5452656374616E676C6500095374796C654E616D
- 65060F6261636B67726F756E647374796C6505416C69676E070643656E746572
- 0A46696C6C2E436F6C6F7207097846463244324432440A53697A652E57696474
- 6805000000000000009407400B53697A652E4865696768740500000000000080
- D206401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E650756697369626C650800005450463007544C61796F
- 757400095374796C654E616D65060B627574746F6E7374796C6505416C69676E
- 070643656E7465720A53697A652E57696474680500000000000000C805400B53
- 697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508085461624F72646572020100
- 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
- 6E6405416C69676E0706436C69656E740C436C69704368696C6472656E090A43
- 6C6970506172656E74090A46696C6C2E436F6C6F720709784646323032303230
- 0748697454657374080A53697A652E57696474680500000000000000C805400B
- 53697A652E4865696768740500000000000000C803401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
- 6F6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000
- CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
- 7461727456616C756507097846463230323032300953746F7056616C75650709
- 7846463430343034300754726967676572063049734D6F7573654F7665723D74
- 7275653B4973507265737365643D66616C73653B4973466F63757365643D6661
- 6C73650E54726967676572496E7665727365063149734D6F7573654F7665723D
- 66616C73653B4973507265737365643D66616C73653B4973466F63757365643D
- 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
- 6D650615627574746F6E436F6C6F72416E696D6174696F6E3208447572617469
- 6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C
- 2E436F6C6F720A537461727456616C756507097846463430343034300953746F
- 7056616C756507097846463137353739430754726967676572062F4973507265
- 737365643D747275653B49734D6F7573654F7665723D747275653B4973466F63
- 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E330844
- 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
- 0A46696C6C2E436F6C6F720A537461727456616C756507097846463241383245
- 320953746F7056616C756507097846463137353739430754726967676572062E
- 4973507265737365643D747275653B49734D6F7573654F7665723D747275653B
- 4973466F63757365643D747275650E54726967676572496E7665727365062F49
- 73507265737365643D66616C73653B49734D6F7573654F7665723D747275653B
- 4973466F63757365643D7472756500000005545465787400095374796C654E61
- 6D6506047465787405416C69676E0706436C69656E7413456E61626C65447261
- 67486967686C69676874080748697454657374080A53697A652E576964746805
- 00000000000000C805400B53697A652E4865696768740500000000000000C803
- 401453697A652E506C6174666F726D44656661756C7408165465787453657474
- 696E67732E466F6E74436F6C6F720708636C6157686974650000005450463007
- 544C61796F757400095374796C654E616D650609656469747374796C6505416C
- 69676E070643656E7465720A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
+ 5261646975730500000000000000A00040075952616469757305000000000000
+ 00A0004000000B54476C6F774566666563740008536F66746E65737305000000
+ 0000CDCCCCFC3F09476C6F77436F6C6F720709784646324138324532074F7061
+ 63697479050000000000000080FF3F07456E61626C6564080000000A54526563
+ 74616E676C6500095374796C654E616D65060676747261636B05416C69676E07
+ 0A486F727A43656E7465720A46696C6C2E436F6C6F7207097846463135313531
+ 350748697454657374080A506F736974696F6E2E580500000000000000BC0440
+ 0A53697A652E57696474680500000000000000A001400B53697A652E48656967
+ 68740500000000000000C805401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
+ 0000000000A0004007595261646975730500000000000000A00040000A545265
+ 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
+ 6C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 00000000C001400B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E52696768740500000000000000C001400E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A53697A652E576964746805000000
+ 000000000000000B53697A652E4865696768740500000000000000C405401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E6500000A5452656374616E676C6500095374796C654E616D650609
+ 686967686C6967687405416C69676E0703546F700A46696C6C2E436F6C6F7207
+ 097846463241383245320748697454657374080A53697A652E57696474680500
+ 000000000000A001400B53697A652E4865696768740500000000000000F00340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E6507585261646975730500000000000000A000400759526164
+ 6975730500000000000000A0004000000B54476C6F774566666563740008536F
+ 66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F720709784646
+ 324138324532074F706163697479050000000000000080FF3F07456E61626C65
+ 640800000006545468756D6200095374796C654E616D650606687468756D6206
+ 4C6F636B6564090A506F736974696F6E2E580500000000003033AB03400A506F
+ 736974696F6E2E59050000000000FFFFA304400A53697A652E57696474680500
+ 000000000000F002400B53697A652E4865696768740500000000000000F00240
+ 1453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B
+ 7570060D7468756D626261727374796C65000006545468756D6200095374796C
+ 654E616D650606767468756D62064C6F636B6564090A506F736974696F6E2E58
+ 050000000000CBCCA804400A506F736974696F6E2E590500000000009899B103
+ 400A53697A652E57696474680500000000000000F002400B53697A652E486569
+ 6768740500000000000000F002401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B7570060D7468756D626261727374796C6500
+ 00005450463007544C61796F757400095374796C654E616D6506096D656D6F73
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 000000CCCC8806400B53697A652E4865696768740500000000006666F4054014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F726465720219000C5442727573684F626A65637400095374796C654E61
+ 6D65060A666F726567726F756E6400000C5442727573684F626A656374000953
+ 74796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F7207
+ 0978374634343735394400000B54466F6E744F626A65637400095374796C654E
+ 616D650604666F6E7400000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F7207097846463230323032300748697454657374080A53697A
+ 652E5769647468050000000000CCCC8806400B53697A652E4865696768740500
+ 000000006666F405401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646313531353135075852616469757305
+ 00000000000000C0004007595261646975730500000000000000C00040000754
+ 4C61796F757400095374796C654E616D650607636F6E74656E7405416C69676E
+ 0706436C69656E740C4D617267696E732E4C6566740500000000000000800040
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
+ 000000000000008000400A53697A652E57696474680500000000009899E90540
+ 0B53697A652E4865696768740500000000006666CC05401453697A652E506C61
+ 74666F726D44656661756C740800000A545363726F6C6C42617200095374796C
+ 654E616D65060A687363726F6C6C62617205416C69676E0706426F74746F6D06
+ 437572736F72070763724172726F770B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A50
+ 6F736974696F6E2E590500000000006666D405400A53697A652E576964746805
+ 0000000000CCCC8806400B53697A652E48656967687405000000000000008003
+ 401453697A652E506C6174666F726D44656661756C740800000A545363726F6C
+ 6C42617200095374796C654E616D65060A767363726F6C6C62617205416C6967
+ 6E0705526967687406437572736F72070763724172726F770B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E0708566572
+ 746963616C0A506F736974696F6E2E580500000000009899F105400A53697A65
+ 2E576964746805000000000000008003400B53697A652E486569676874050000
+ 0000006666D405401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F75740005416C69676E0706436C69656E740A53697A652E576964
+ 74680500000000009899F105400B53697A652E48656967687405000000000066
+ 66D405401453697A652E506C6174666F726D44656661756C7408000F54536D61
+ 6C6C5363726F6C6C42617200095374796C654E616D65060F76736D616C6C7363
+ 726F6C6C62617205416C69676E0705526967687406437572736F720707637241
+ 72726F770B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E0708566572746963616C0C4D617267696E732E4C6566740500
+ 0000000000008000400A53697A652E576964746805000000000000008002400B
+ 53697A652E48656967687405000000000000008002401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C650800000F54536D616C6C5363
+ 726F6C6C42617200095374796C654E616D65060F68736D616C6C7363726F6C6C
+ 62617205416C69676E0706426F74746F6D06437572736F72070763724172726F
+ 770B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
+ 74696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000
+ 000000008000400A53697A652E576964746805000000000000009606400B5369
+ 7A652E48656967687405000000000000008002401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C65080000000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D6506146D656D6F5374726F6B65416E69
+ 6D6174696F6E31084475726174696F6E050000000000000000000007496E7665
+ 727365090C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A
+ 537461727456616C756507097846463135313531350953746F7056616C756507
+ 097846463430343034300754726967676572062049734D6F7573654F7665723D
+ 747275653B4973466F63757365643D66616C73650E54726967676572496E7665
+ 727365062149734D6F7573654F7665723D66616C73653B4973466F6375736564
+ 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D6506146D656D6F5374726F6B65416E696D6174696F6E3208447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060C5374726F
+ 6B652E436F6C6F720A537461727456616C756507097846463430343034300953
+ 746F7056616C756507097846463241383245320754726967676572060E497346
+ 6F63757365643D747275650E54726967676572496E7665727365060F4973466F
+ 63757365643D66616C7365000000005450463007544C61796F75740009537479
+ 6C654E616D65060D73697A65677269707374796C6505416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000C803400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508085461624F72646572021A000A54526563
+ 74616E676C6500095374796C654E616D65060A52656374616E676C653105416C
+ 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036
+ 300A53697A652E57696474680500000000000000A000400B53697A652E486569
+ 6768740500000000000000A000401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E
+ 676C6500095374796C654E616D65060A52656374616E676C653205416C69676E
+ 070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300C4D
+ 617267696E732E4C6566740500000000000000A002400A53697A652E57696474
+ 680500000000000000A000400B53697A652E4865696768740500000000000000
+ A000401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E
+ 616D65060A52656374616E676C653305416C69676E070643656E7465720A4669
+ 6C6C2E436F6C6F7207097846463630363036300C4D617267696E732E4C656674
+ 0500000000000000A002400B4D617267696E732E546F700500000000000000A0
+ 02400A53697A652E57696474680500000000000000A000400B53697A652E4865
+ 696768740500000000000000A000401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653405416C6967
+ 6E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300B
+ 4D617267696E732E546F700500000000000000A002400A53697A652E57696474
+ 680500000000000000A000400B53697A652E4865696768740500000000000000
+ A000401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E
+ 616D65060A52656374616E676C653505416C69676E070643656E7465720A4669
+ 6C6C2E436F6C6F7207097846463630363036300B4D617267696E732E546F7005
+ 00000000000000A002400D4D617267696E732E52696768740500000000000000
+ A002400A53697A652E57696474680500000000000000A000400B53697A652E48
+ 65696768740500000000000000A000401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374
+ 616E676C6500095374796C654E616D65060A52656374616E676C653605416C69
+ 676E070643656E7465720A46696C6C2E436F6C6F720709784646363036303630
+ 0C4D617267696E732E4C6566740500000000000000A002400E4D617267696E73
+ 2E426F74746F6D0500000000000000A002400A53697A652E5769647468050000
+ 0000000000A000400B53697A652E4865696768740500000000000000A0004014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000000545046300A5452656374616E676C6500095374796C65
+ 4E616D65060E7374617475736261727374796C6505416C69676E070643656E74
+ 65720C436C69704368696C6472656E090A46696C6C2E436F6C6F720709784646
+ 3235323532350553696465730B03546F70000A53697A652E5769647468050000
+ 0000000000F004400B53697A652E4865696768740500000000000000C8044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F7207097846463135313531350756697369626C65080007544C61796F757400
+ 095374796C654E616D6506074C61796F75743105416C69676E07055269676874
+ 0A506F736974696F6E2E5805000000000000008C04400A53697A652E57696474
+ 680500000000000000C803400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C740800095453697A65
+ 4772697000095374796C654E616D65060973697A65677267697005416C69676E
+ 0706426F74746F6D0A506F736974696F6E2E590500000000000000C803400A53
+ 697A652E57696474680500000000000000C803400B53697A652E486569676874
+ 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
+ 0800000000545046300A5452656374616E676C6500095374796C654E616D6506
+ 0C746F6F6C6261727374796C6505416C69676E070643656E7465720A46696C6C
+ 2E436F6C6F720709784646323532353235074869745465737408055369646573
+ 0B06426F74746F6D000A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
+ 313531350756697369626C650800005450463007544C61796F75740009537479
+ 6C654E616D65061570726F67726573736261726572726F727374796C6505416C
+ 69676E070643656E7465720A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000009999E104401453697A652E506C
6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 0202000C5442727573684F626A65637400095374796C654E616D65060A666F72
- 6567726F756E6400000C5442727573684F626A65637400095374796C654E616D
- 65060973656C656374696F6E0B42727573682E436F6C6F720709783936324138
- 32453200000B54466F6E744F626A65637400095374796C654E616D650604666F
- 6E7409466F6E742E53697A650500000000000000D0024000000A545265637461
- 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
- 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
- 300748697454657374080A53697A652E57696474680500000000000000C80540
- 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 3531353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E
- 050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E616D
- 65060C5374726F6B652E436F6C6F720A537461727456616C7565070978464631
- 35313531350953746F7056616C75650709784646343034303430075472696767
- 6572062049734D6F7573654F7665723D747275653B4973466F63757365643D66
+ 021B000A5452656374616E676C6500095374796C654E616D6506066874726163
+ 6B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080A53697A652E5769
+ 64746805000000000033338505400B53697A652E486569676874050000000000
+ 9999E104401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F72070978464631353135313507585261646975730500000000
+ 000000C0004007595261646975730500000000000000C00040000A5452656374
+ 616E676C6500095374796C654E616D65060A68696E64696361746F7205416C69
+ 676E07044C6566740A46696C6C2E436F6C6F720709784646453232413241064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805000000
+ 0000000080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000009999D904401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650758526164697573050000000000
+ 0000C0004007595261646975730500000000000000C000400000000A54526563
+ 74616E676C6500095374796C654E616D65060676747261636B05416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F72070978464632303230323006
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 0033338505400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 070978464631353135313507585261646975730500000000000000C000400759
+ 5261646975730500000000000000C00040000A5452656374616E676C65000953
+ 74796C654E616D65060A76696E64696361746F7205416C69676E0706426F7474
+ 6F6D0A46696C6C2E436F6C6F720709784646453232413241064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A506F736974696F6E2E58050000000000000080FF
+ 3F0A506F736974696F6E2E5905000000000099998904400A53697A652E576964
+ 746805000000000033338105400B53697A652E48656967687405000000000000
+ 00A803401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6507585261646975730500000000000000C0004007
+ 595261646975730500000000000000C00040000000005450463007544C61796F
+ 757400095374796C654E616D65060E6C696E6B6C6162656C7374796C6505416C
+ 69676E070643656E7465720A53697A652E5769647468050000000000CCCC8006
+ 400B53697A652E4865696768740500000000009A998104401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508085461624F72646572
+ 021C0005545465787400095374796C654E616D6506047465787405416C69676E
+ 0708436F6E74656E74730748697454657374080A53697A652E57696474680500
+ 00000000CCCC8006400B53697A652E4865696768740500000000009A99810440
+ 1453697A652E506C6174666F726D44656661756C74081A546578745365747469
+ 6E67732E466F6E742E5374796C654578740A0D00000004040000000000000004
+ 000000165465787453657474696E67732E466F6E74436F6C6F72070D636C6144
+ 6F64676572626C7565000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614436F6C6F72416E696D6174696F6E315374796C650844757261
+ 74696F6E050000000000000000000007496E7665727365090C50726F70657274
+ 794E616D6506165465787453657474696E67732E466F6E74436F6C6F720A5374
+ 61727456616C7565070D636C61446F64676572626C75650953746F7056616C75
+ 65070E636C6144656570736B79626C75650754726967676572063049734D6F75
+ 73654F7665723D747275653B4973507265737365643D66616C73653B4973466F
+ 63757365643D66616C73650E54726967676572496E7665727365063149734D6F
+ 7573654F7665723D66616C73653B4973507265737365643D66616C73653B4973
+ 466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 6506165465787453657474696E67732E466F6E74436F6C6F720A537461727456
+ 616C7565070E636C6144656570736B79626C75650953746F7056616C75650709
+ 7846463137353739430754726967676572062F4973507265737365643D747275
+ 653B49734D6F7573654F7665723D747275653B4973466F63757365643D66616C
+ 7365000000005450463007544C61796F757400095374796C654E616D65060C70
+ 6F706F7665727374796C6505416C69676E070643656E7465720756697369626C
+ 6508085461624F72646572021D000A5452656374616E676C6500095374796C65
+ 4E616D650602626705416C69676E0706436C69656E740A46696C6C2E436F6C6F
+ 7207097846463230323032300748697454657374080A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F72070978464631353135313507585261646975730500000000000000
+ C0004007595261646975730500000000000000C000400007544C61796F757400
+ 095374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E
+ 740C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E
+ 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
+ 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000C004400B53697A652E48
+ 65696768740500000000000000C004401453697A652E506C6174666F726D4465
+ 6661756C740800000D54536861646F77456666656374000844697374616E6365
+ 0500000000000000C0004009446972656374696F6E0500000000000000B40540
+ 08536F66746E657373050000000000000080FE3F074F70616369747905000000
+ 0000000080FE3F0B536861646F77436F6C6F720708636C61426C61636B000000
+ 005450463007544C61796F757400095374796C654E616D65060D706F70757062
+ 6F787374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C7408085461624F726465
+ 72021E000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 7207097846463230323032300748697454657374080A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C00040000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E31537479
+ 6C65084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 30323032300953746F7056616C75650709784646343034303430075472696767
+ 6572062049734D6F7573654F7665723D747275653B4973507265737365643D66
616C73650E54726967676572496E7665727365062149734D6F7573654F766572
- 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 3D66616C73653B4973507265737365643D66616C736500000F54436F6C6F7241
6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
- 696F6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
- 6C756507097846463135313531350953746F7056616C75650709784646324138
- 3245320754726967676572060E4973466F63757365643D747275650E54726967
- 676572496E7665727365060F4973466F63757365643D66616C73650000000754
- 4C61796F757400095374796C654E616D650607627574746F6E7305416C69676E
- 07055269676874064C6F636B6564090B4D617267696E732E546F700500000000
- 0000008000400D4D617267696E732E526967687405000000000000008000400E
- 4D617267696E732E426F74746F6D05000000000000008000400A506F73697469
- 6F6E2E580500000000000000C004400A506F736974696F6E2E59050000000000
- 00008000400A53697A652E57696474680500000000000000C804400B53697A65
- 2E4865696768740500000000000000A803401453697A652E506C6174666F726D
- 44656661756C7408000007544C61796F757400095374796C654E616D65060763
- 6F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D6172
- 67696E732E4C65667405000000000000008001400B4D617267696E732E546F70
- 05000000000000008000400D4D617267696E732E526967687405000000000000
- 008000400E4D617267696E732E426F74746F6D05000000000000008000400A53
- 697A652E57696474680500000000000000A804400B53697A652E486569676874
- 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
- 08000006544C6162656C00095374796C654E616D65060670726F6D7074064C6F
- 636B656409074F706163697479050000000000000080FE3F1654657874536574
- 74696E67732E466F6E74436F6C6F720708636C61576869746504546578740604
- 546578740000005450463007544C61796F757400095374796C654E616D65060A
- 6C6162656C7374796C6505416C69676E070643656E7465720A53697A652E5769
- 6474680500000000000000C805400B53697A652E486569676874050000000000
- 0000C803401453697A652E506C6174666F726D44656661756C74080756697369
- 626C6508085461624F7264657202030005545465787400095374796C654E616D
- 6506047465787405416C69676E0708436F6E74656E7473074869745465737408
- 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
- 68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
- 686974650000005450463007544C61796F757400095374796C654E616D65060D
- 67726F7570626F787374796C6505416C69676E070643656E7465720A53697A65
- 2E57696474680500000000000000F004400B53697A652E486569676874050000
- 0000000000C804401453697A652E506C6174666F726D44656661756C74080756
- 697369626C6508085461624F726465720204000A5452656374616E676C650009
- 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
- 74656E74730946696C6C2E4B696E6407044E6F6E650748697454657374080C4D
- 617267696E732E4C6566740500000000000000C000400B4D617267696E732E54
- 6F7005000000000000009002400D4D617267696E732E52696768740500000000
- 000000C000400E4D617267696E732E426F74746F6D0500000000000000C00040
- 0A53697A652E57696474680500000000000000D804400B53697A652E48656967
- 687405000000000000009804401453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F7207097846463135313531350005545465
- 787400095374796C654E616D65060474657874084175746F53697A65090A436C
- 6970506172656E74090748697454657374080C4D617267696E732E4C65667405
- 00000000000000A002400A506F736974696F6E2E580500000000006055950240
- 0A506F736974696F6E2E590500000000004055D501C00A53697A652E57696474
- 6805000000000000B8C703400B53697A652E4865696768740500000000000060
- FF02401453697A652E506C6174666F726D44656661756C740816546578745365
- 7474696E67732E466F6E74436F6C6F720708636C615768697465155465787453
- 657474696E67732E576F72645772617008000000005450463007544C61796F75
- 7400095374796C654E616D65060D747261636B6261727374796C6505416C6967
- 6E070643656E7465720A53697A652E57696474680500000000000000C805400B
- 53697A652E4865696768740500000000000000C805401453697A652E506C6174
- 666F726D44656661756C74080756697369626C6508085461624F726465720205
- 0B46697865644865696768740211000A5452656374616E676C6500095374796C
- 654E616D65060668747261636B05416C69676E070A5665727443656E7465720A
- 46696C6C2E436F6C6F7207097846463135313531350748697454657374080A50
- 6F736974696F6E2E590500000000000000BC04400A53697A652E576964746805
- 00000000000000C805400B53697A652E4865696768740500000000000000A001
- 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E65000A5452656374616E676C6500095374796C654E616D65
- 060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946696C
- 6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374080C4D61
- 7267696E732E4C6566740500000000000000C001400B4D617267696E732E546F
- 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
- 0000C001400E4D617267696E732E426F74746F6D050000000000000080FF3F0A
- 53697A652E57696474680500000000000000B005400B53697A652E4865696768
- 740500000000000000C000401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C
- 6500095374796C654E616D650609686967686C6967687405416C69676E07044C
- 6566740A46696C6C2E436F6C6F72070978464632413832453207486974546573
- 74080C50616464696E672E4C6566740500000000000000A002400A53697A652E
- 57696474680500000000000000F003400B53697A652E48656967687405000000
- 00000000A001401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6500000B54476C6F77456666656374000853
- 6F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846
- 46324138324532074F706163697479050000000000000080FF3F07456E61626C
- 6564080000000A5452656374616E676C6500095374796C654E616D6506067674
- 7261636B05416C69676E070A486F727A43656E7465720A46696C6C2E436F6C6F
- 7207097846463135313531350748697454657374080A506F736974696F6E2E58
- 0500000000000000BC04400A53697A652E57696474680500000000000000A001
- 400B53697A652E4865696768740500000000000000C805401453697A652E506C
+ 696F6E325374796C65084475726174696F6E05000000000000000000000C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463430343034300953746F7056616C756507097846463241383245
+ 320754726967676572062049734D6F7573654F7665723D747275653B49735072
+ 65737365643D747275653B0E54726967676572496E7665727365062049734D6F
+ 7573654F7665723D747275653B4973507265737365643D66616C736500000007
+ 544C61796F75740005416C69676E070846697452696768740A506F736974696F
+ 6E2E5805000000000000009605400A53697A652E576964746805000000000000
+ 00C803400B53697A652E4865696768740500000000000000C803401453697A65
+ 2E506C6174666F726D44656661756C7408000554506174680005416C69676E07
+ 0643656E74657209446174612E506174680A4000000005000000000000000000
+ 00000000803F010000000000803F0000803F010000000000003F000000000100
+ 0000000000000000803F0300000000000000000000000A46696C6C2E436F6C6F
+ 720708636C6157686974650748697454657374080B4D617267696E732E546F70
+ 0500000000000000E001C00A53697A652E576964746805000000000000008002
+ 400B53697A652E48656967687405000000000000008001401453697A652E506C
6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
- 756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E
- 6F6E65064C6F636B6564090748697454657374080C4D617267696E732E4C6566
- 740500000000000000C001400B4D617267696E732E546F700500000000000000
- 80FF3F0D4D617267696E732E52696768740500000000000000C001400E4D6172
- 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
- 6805000000000000000000000B53697A652E4865696768740500000000000000
- C405401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E
- 616D650609686967686C6967687405416C69676E0703546F700A46696C6C2E43
- 6F6C6F7207097846463241383245320748697454657374080A53697A652E5769
- 6474680500000000000000A001400B53697A652E486569676874050000000000
- 0000F003401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E6500000B54476C6F774566666563740008536F66
- 746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F72070978464632
- 4138324532074F706163697479050000000000000080FF3F07456E61626C6564
- 0800000006545468756D6200095374796C654E616D650606687468756D62064C
- 6F636B6564090A506F736974696F6E2E580500000000003033AB03400A506F73
- 6974696F6E2E59050000000000FFFFA304400A53697A652E5769647468050000
- 0000000000F002400B53697A652E4865696768740500000000000000F0024014
- 53697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75
- 70060D7468756D626261727374796C65000006545468756D6200095374796C65
- 4E616D650606767468756D62064C6F636B6564090A506F736974696F6E2E5805
- 0000000000CBCCA804400A506F736974696F6E2E590500000000009899B10340
- 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
- 68740500000000000000F002401453697A652E506C6174666F726D4465666175
- 6C74080B5374796C654C6F6F6B7570060D7468756D626261727374796C650000
- 005450463007544C61796F757400095374796C654E616D65060D636865636B62
- 6F787374796C6505416C69676E070643656E7465720A53697A652E5769647468
- 050000000000ACAA8006400B53697A652E486569676874050000000000585599
- 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
- 08085461624F7264657202060007544C61796F75740005416C69676E07044C65
- 66740A53697A652E576964746805000000000000009003400B53697A652E4865
- 6967687405000000000058559904401453697A652E506C6174666F726D446566
- 61756C7408000A5452656374616E676C6500095374796C654E616D65060A6261
- 636B67726F756E6405416C69676E070643656E7465720A46696C6C2E436F6C6F
- 7207097846463230323032300748697454657374080A53697A652E5769647468
- 0500000000000000F002400B53697A652E4865696768740500000000000000F0
- 02401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
- 436F6C6F720709784646313531353135000A5452656374616E676C6500095374
- 796C654E616D65060A52656374616E676C653105416C69676E0706436C69656E
- 740A46696C6C2E436F6C6F720709784646324138324532074869745465737408
- 074F70616369747905000000000000000000000C4D617267696E732E4C656674
- 05000000000000008000400B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E526967687405000000000000008000400E4D617267
- 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
- 0500000000000000B002400B53697A652E4865696768740500000000000000B0
- 02401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0009537479
- 6C654E616D65061B6368656368626F7856697362696C697479416E696D617469
- 6F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F7065727479
- 4E616D6506074F7061636974790A537461727456616C75650500000000000000
- 0000000953746F7056616C75650500000000000000C805400754726967676572
- 060E4973436865636B65643D747275650E54726967676572496E766572736506
- 0F4973436865636B65643D66616C73650000000F54436F6C6F72416E696D6174
- 696F6E00095374796C654E616D650618636865636B626F785374726F6B65416E
- 696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F
- 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
- 756507097846463135313531350953746F7056616C7565070978464632413832
- 45320754726967676572060E4973436865636B65643D747275650E5472696767
- 6572496E7665727365060F4973436865636B65643D66616C736500000F54436F
- 6C6F72416E696D6174696F6E00095374796C654E616D650617636865636B626F
- 78436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CD
- CCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463230323032300953746F7056616C7565070978
- 46463430343034300754726967676572061049734D6F7573654F7665723D7472
- 75650E54726967676572496E7665727365061149734D6F7573654F7665723D66
- 616C73650000000005545465787400095374796C654E616D6506047465787405
- 416C69676E0706436C69656E740A53697A652E57696474680500000000005855
- DD05400B53697A652E48656967687405000000000058559904401453697A652E
- 506C6174666F726D44656661756C740804546578740604546578741654657874
- 53657474696E67732E466F6E74436F6C6F720708636C61576869746500000054
- 5046300A5452656374616E676C6500095374796C654E616D6506147363726F6C
- 6C62617268747261636B7374796C6505416C69676E070643656E7465720A4669
- 6C6C2E436F6C6F7207097846463135313531350748697454657374080A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E650756697369626C6508000654546875
- 6D6200095374796C654E616D6506057468756D62064C6F636B6564090A53697A
- 652E576964746805000000000000008003400B53697A652E4865696768740500
- 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
- 5374796C654C6F6F6B7570060A7468756D627374796C65000000545046300A54
- 52656374616E676C6500095374796C654E616D6506147363726F6C6C62617276
- 747261636B7374796C6505416C69676E070643656E7465720A46696C6C2E436F
- 6C6F7207097846463135313531350748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650756697369626C65080006545468756D62000953
- 74796C654E616D6506057468756D62064C6F636B6564090A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 008003401453697A652E506C6174666F726D44656661756C74080B5374796C65
- 4C6F6F6B7570060A7468756D627374796C650000005450463007544C61796F75
- 7400095374796C654E616D6506157363726F6C6C626172626F74746F6D627574
- 746F6E05416C69676E070643656E7465720756697369626C6508085461624F72
- 6465720207000A5452656374616E676C6500095374796C654E616D65060A6261
- 636B67726F756E6405416C69676E0706436C69656E740C436C69704368696C64
- 72656E090A436C6970506172656E74090A46696C6C2E436F6C6F720709784646
- 3230323032300748697454657374080A53697A652E5769647468050000000000
- 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 00000554506174680005416C69676E070643656E74657209446174612E506174
+ 680A3400000004000000000000000000000000000000010000000000803F0000
+ 0000010000000000003F0000803F0300000000000000000000000A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080B4D617267696E73
+ 2E546F700500000000000000C001400A53697A652E5769647468050000000000
+ 00008002400B53697A652E48656967687405000000000000008001401453697A
652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0615627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E
- 050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
- 616C756507097846463430343034300754726967676572062049734D6F757365
- 4F7665723D747275653B4973507265737365643D66616C73650E547269676765
- 72496E7665727365062149734D6F7573654F7665723D66616C73653B49735072
- 65737365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
- 74796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3208
- 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
- 060A46696C6C2E436F6C6F720A537461727456616C7565070978464634303430
- 34300953746F7056616C75650709784646313735373943075472696767657206
- 1F4973507265737365643D747275653B49734D6F7573654F7665723D74727565
- 0E54726967676572496E766572736506204973507265737365643D66616C7365
- 3B49734D6F7573654F7665723D7472756500000007544C61796F757400095374
- 796C654E616D6506074C61796F75743105416C69676E070643656E7465720A53
+ 4E6F6E6500000005545465787400095374796C654E616D650604746578740541
+ 6C69676E0706436C69656E740748697454657374080C4D617267696E732E4C65
+ 6674050000000000000080FF3F0B4D617267696E732E546F7005000000000000
+ 0080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F0A53697A652E576964
+ 746805000000000000009205400B53697A652E48656967687405000000000000
+ 00B803401453697A652E506C6174666F726D44656661756C7408045465787406
+ 0454657874165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 6157686974650000005450463007544C61796F757400095374796C654E616D65
+ 06157363726F6C6C626172626F74746F6D627574746F6E05416C69676E070643
+ 656E7465720756697369626C6508085461624F72646572021F000A5452656374
+ 616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C69
+ 676E0706436C69656E740C436C69704368696C6472656E090A436C6970506172
+ 656E740907436F726E6572730B07546F704C65667408546F705269676874000A
+ 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500000000
+ 000000C0004007595261646975730500000000000000C00040000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E31084475726174696F6E0500000000000000000000
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463230323032300953746F7056616C756507097846463430
+ 343034300754726967676572062049734D6F7573654F7665723D747275653B49
+ 73507265737365643D66616C73650E54726967676572496E7665727365062149
+ 734D6F7573654F7665723D66616C73653B4973507265737365643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562
+ 7574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463430343034300953746F7056616C75
+ 6507097846463137353739430754726967676572061F4973507265737365643D
+ 747275653B49734D6F7573654F7665723D747275650E54726967676572496E76
+ 6572736506204973507265737365643D66616C73653B49734D6F7573654F7665
+ 723D7472756500000007544C61796F757400095374796C654E616D6506074C61
+ 796F75743105416C69676E070643656E7465720A53697A652E57696474680500
+ 000000000000A002400B53697A652E4865696768740500000000000000C00140
+ 1453697A652E506C6174666F726D44656661756C740800055450617468000953
+ 74796C654E616D650605506174683105416C69676E0706436C69656E74094461
+ 74612E506174680A3400000004000000000000000000C8420000C84201000000
+ 000096430000C842010000000000484300009643030000000000C8420000C842
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A53
697A652E57696474680500000000000000A002400B53697A652E486569676874
0500000000000000C001401453697A652E506C6174666F726D44656661756C74
- 080005545061746800095374796C654E616D650605506174683105416C69676E
- 0706436C69656E7409446174612E506174680A34000000040000000000000000
- 00C8420000C84201000000000096430000C84201000000000048430000964303
- 0000000000C8420000C8420A46696C6C2E436F6C6F720708636C615768697465
- 0748697454657374080A53697A652E57696474680500000000000000A002400B
- 53697A652E4865696768740500000000000000C001401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
- 00005450463007544C61796F757400095374796C654E616D6506137363726F6C
- 6C6261726C656674627574746F6E05416C69676E070643656E74657207566973
- 69626C6508085461624F726465720208000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E
- 740C436C69704368696C6472656E090A436C6970506172656E74090A46696C6C
+ 080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C6179
+ 6F757400095374796C654E616D6506137363726F6C6C6261726C656674627574
+ 746F6E05416C69676E070643656E7465720756697369626C6508085461624F72
+ 6465720220000A5452656374616E676C6500095374796C654E616D65060A6261
+ 636B67726F756E6405416C69676E0706436C69656E740C436C69704368696C64
+ 72656E090A436C6970506172656E740907436F726E6572730B07546F704C6566
+ 740A426F74746F6D4C656674000A46696C6C2E436F6C6F720709784646323032
+ 3032300748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6507585261646975730500000000000000C00040075952616469757305000000
+ 00000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650615627574746F6E436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646323032303230095374
+ 6F7056616C756507097846463430343034300754726967676572062049734D6F
+ 7573654F7665723D747275653B4973507265737365643D66616C73650E547269
+ 67676572496E7665727365062149734D6F7573654F7665723D66616C73653B49
+ 73507265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
+ 6E32084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464634
+ 30343034300953746F7056616C75650709784646313735373943075472696767
+ 6572061F4973507265737365643D747275653B49734D6F7573654F7665723D74
+ 7275650E54726967676572496E766572736506204973507265737365643D6661
+ 6C73653B49734D6F7573654F7665723D7472756500000007544C61796F757400
+ 095374796C654E616D6506074C61796F75743105416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C001401453697A652E506C6174666F726D44656661
+ 756C74080005545061746800095374796C654E616D650605506174683105416C
+ 69676E0706436C69656E7409446174612E506174680A34000000040000000000
+ 00000000C8420000C84201000000000096430000C84201000000000048430000
+ 9643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C615768
+ 6974650748697454657374080D526F746174696F6E416E676C65050000000000
+ 0000B405400A53697A652E57696474680500000000000000A002400B53697A65
+ 2E4865696768740500000000000000C001401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450
+ 463007544C61796F757400095374796C654E616D6506147363726F6C6C626172
+ 7269676874627574746F6E05416C69676E070643656E7465720756697369626C
+ 6508085461624F726465720221000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C43
+ 6C69704368696C6472656E090A436C6970506172656E740907436F726E657273
+ 0B08546F7052696768740B426F74746F6D5269676874000A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6507585261646975730500000000000000C000400759
+ 5261646975730500000000000000C00040000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
+ 696F6E31084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463230323032300953746F7056616C7565070978464634303430343007547269
+ 67676572062049734D6F7573654F7665723D747275653B497350726573736564
+ 3D66616C73650E54726967676572496E7665727365062149734D6F7573654F76
+ 65723D66616C73653B4973507265737365643D66616C736500000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E32084475726174696F6E0500000000000000000000
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463430343034300953746F7056616C756507097846463137
+ 353739430754726967676572061F4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506204973
+ 507265737365643D66616C73653B49734D6F7573654F7665723D747275650000
+ 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
+ 69676E070643656E7465720A53697A652E57696474680500000000000000A002
+ 400B53697A652E4865696768740500000000000000C001401453697A652E506C
+ 6174666F726D44656661756C74080005545061746800095374796C654E616D65
+ 0605506174683105416C69676E0706436C69656E7409446174612E506174680A
+ 3400000004000000000000000000C8420000C84201000000000096430000C842
+ 010000000000484300009643030000000000C8420000C8420A46696C6C2E436F
+ 6C6F720708636C6157686974650748697454657374080D526F746174696F6E41
+ 6E676C650500000000000000B405C00A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E65000000005450463007544C61796F757400095374796C654E616D6506
+ 127363726F6C6C626172746F70627574746F6E05416C69676E070643656E7465
+ 720756697369626C6508085461624F726465720222000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0706
+ 436C69656E740C436C69704368696C6472656E090A436C6970506172656E7409
+ 07436F726E6572730B07546F704C65667408546F705269676874000A46696C6C
2E436F6C6F7207097846463230323032300748697454657374080A53697A652E
57696474680500000000000000C804400B53697A652E48656967687405000000
00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E
- 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
- 6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
- 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
- 30323032300953746F7056616C75650709784646343034303430075472696767
- 6572062049734D6F7573654F7665723D747275653B4973507265737365643D66
- 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
- 3D66616C73653B4973507265737365643D66616C736500000F54436F6C6F7241
- 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
- 416E696D6174696F6E32084475726174696F6E05000000000000000000000C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097846463430343034300953746F7056616C7565070978464631373537
- 39430754726967676572061F4973507265737365643D747275653B49734D6F75
- 73654F7665723D747275650E54726967676572496E7665727365062049735072
- 65737365643D66616C73653B49734D6F7573654F7665723D7472756500000007
- 544C61796F757400095374796C654E616D6506074C61796F75743105416C6967
- 6E070643656E7465720A53697A652E57696474680500000000000000A002400B
- 53697A652E4865696768740500000000000000C001401453697A652E506C6174
- 666F726D44656661756C74080005545061746800095374796C654E616D650605
- 506174683105416C69676E0706436C69656E7409446174612E506174680A3400
- 000004000000000000000000C8420000C84201000000000096430000C8420100
- 00000000484300009643030000000000C8420000C8420A46696C6C2E436F6C6F
- 720708636C6157686974650748697454657374080D526F746174696F6E416E67
- 6C650500000000000000B405400A53697A652E57696474680500000000000000
+ 726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C0
+ 004007595261646975730500000000000000C00040000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646343034303430
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463430343034300953746F7056616C7565070978
+ 46463137353739430754726967676572061F4973507265737365643D74727565
+ 3B49734D6F7573654F7665723D747275650E54726967676572496E7665727365
+ 06204973507265737365643D66616C73653B49734D6F7573654F7665723D7472
+ 756500000007544C61796F757400095374796C654E616D6506074C61796F7574
+ 3105416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080005545061746800095374796C65
+ 4E616D650605506174683105416C69676E0706436C69656E7409446174612E50
+ 6174680A3400000004000000000000000000C8420000C8420100000000009643
+ 0000C842010000000000484300009643030000000000C8420000C8420A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080D526F746174
+ 696F6E416E676C650500000000000000B406400A53697A652E57696474680500
+ 000000000000A002400B53697A652E4865696768740500000000000000C00140
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000005450463007544C61796F757400095374796C654E
+ 616D65060D636F6D626F626F787374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720223000C5442727573684F
+ 626A65637400095374796C654E616D65060A666F726567726F756E6400000B54
+ 466F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E74
+ 2E53697A650500000000000000D00240000007544C61796F757400095374796C
+ 654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74
+ 730A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C7408000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F72
+ 07097846463230323032300748697454657374080A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6507585261646975730500000000000000C0004007595261
+ 646975730500000000000000C000400007544C61796F757400095374796C654E
+ 616D650611427574746F6E5374796C654F626A65637405416C69676E07084669
+ 7452696768740B4D617267696E732E546F70050000000000000080FF3F0D4D61
+ 7267696E732E5269676874050000000000000080FF3F0E4D617267696E732E42
+ 6F74746F6D050000000000000080FF3F0A506F736974696F6E2E580500000000
+ 005ED99705400A506F736974696F6E2E59050000000000000080FF3F0A53697A
+ 652E5769647468050000000000889AB803400B53697A652E4865696768740500
+ 000000000000B803401453697A652E506C6174666F726D44656661756C740800
+ 07544C61796F757400095374796C654E616D6506074C61796F75743105416C69
+ 676E070643656E7465720C4D617267696E732E4C656674050000000000000080
+ FF3F0A53697A652E57696474680500000000000000A002400B53697A652E4865
+ 696768740500000000000000C001401453697A652E506C6174666F726D446566
+ 61756C74080005545061746800095374796C654E616D65060550617468310541
+ 6C69676E0706436C69656E7409446174612E506174680A340000000400000000
+ 0000000000C8420000C84201000000000096430000C842010000000000484300
+ 009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C6157
+ 686974650748697454657374080A53697A652E57696474680500000000000000
A002400B53697A652E4865696768740500000000000000C001401453697A652E
506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E65000000005450463007544C61796F757400095374796C654E616D65061473
- 63726F6C6C6261727269676874627574746F6E05416C69676E070643656E7465
- 720756697369626C6508085461624F726465720209000A5452656374616E676C
- 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0706
- 436C69656E740C436C69704368696C6472656E090A436C6970506172656E7409
- 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
- 53697A652E57696474680500000000000000C804400B53697A652E4865696768
- 740500000000000000C804401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D
- 6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E69
- 6D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F70
- 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
- 097846463230323032300953746F7056616C7565070978464634303430343007
- 54726967676572062049734D6F7573654F7665723D747275653B497350726573
- 7365643D66616C73650E54726967676572496E7665727365062149734D6F7573
- 654F7665723D66616C73653B4973507265737365643D66616C736500000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E
- 436F6C6F72416E696D6174696F6E32084475726174696F6E0500000000000000
- 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846463430343034300953746F7056616C756507097846
- 463137353739430754726967676572061F4973507265737365643D747275653B
- 49734D6F7573654F7665723D747275650E54726967676572496E766572736506
- 204973507265737365643D66616C73653B49734D6F7573654F7665723D747275
- 6500000007544C61796F757400095374796C654E616D6506074C61796F757431
- 05416C69676E070643656E7465720A53697A652E576964746805000000000000
- 00A002400B53697A652E4865696768740500000000000000C001401453697A65
- 2E506C6174666F726D44656661756C74080005545061746800095374796C654E
- 616D650605506174683105416C69676E0706436C69656E7409446174612E5061
- 74680A3400000004000000000000000000C8420000C842010000000000964300
- 00C842010000000000484300009643030000000000C8420000C8420A46696C6C
- 2E436F6C6F720708636C6157686974650748697454657374080D526F74617469
- 6F6E416E676C650500000000000000B405C00A53697A652E5769647468050000
- 0000000000A002400B53697A652E4865696768740500000000000000C0014014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E65000000005450463007544C61796F757400095374796C654E61
- 6D6506127363726F6C6C626172746F70627574746F6E05416C69676E07064365
- 6E7465720756697369626C6508085461624F72646572020A000A545265637461
- 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
- 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
- 6E74090A46696C6C2E436F6C6F72070978464632303230323007486974546573
- 74080A53697A652E57696474680500000000000000C804400B53697A652E4865
- 696768740500000000000000C804401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F7241
- 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
- 416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097846463230323032300953746F7056616C7565070978464634303430
- 34300754726967676572062049734D6F7573654F7665723D747275653B497350
- 7265737365643D66616C73650E54726967676572496E7665727365062149734D
- 6F7573654F7665723D66616C73653B4973507265737365643D66616C73650000
- 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574
- 746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E0500000000
- 0000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
- 537461727456616C756507097846463430343034300953746F7056616C756507
- 097846463137353739430754726967676572061F4973507265737365643D7472
- 75653B49734D6F7573654F7665723D747275650E54726967676572496E766572
- 736506204973507265737365643D66616C73653B49734D6F7573654F7665723D
- 7472756500000007544C61796F757400095374796C654E616D6506074C61796F
- 75743105416C69676E070643656E7465720A53697A652E576964746805000000
- 00000000A002400B53697A652E4865696768740500000000000000C001401453
- 697A652E506C6174666F726D44656661756C7408000554506174680009537479
- 6C654E616D650605506174683105416C69676E0706436C69656E740944617461
- 2E506174680A3400000004000000000000000000C8420000C842010000000000
- 96430000C842010000000000484300009643030000000000C8420000C8420A46
- 696C6C2E436F6C6F720708636C6157686974650748697454657374080D526F74
- 6174696F6E416E676C650500000000000000B406400A53697A652E5769647468
- 0500000000000000A002400B53697A652E4865696768740500000000000000C0
- 01401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E65000000005450463007544C61796F757400095374796C
- 654E616D65060E7363726F6C6C6261727374796C6505416C69676E070643656E
- 7465720756697369626C6508085461624F72646572020B000754427574746F6E
- 00095374796C654E616D65060A6C656674627574746F6E05416C69676E07044C
- 656674064C6F636B6564090A506F736974696F6E2E5905000000000000008003
- 400A53697A652E576964746805000000000000008003400B53697A652E486569
- 67687405000000000000009003401453697A652E506C6174666F726D44656661
- 756C74080B5374796C654C6F6F6B757006137363726F6C6C6261726C65667462
- 7574746F6E00000754427574746F6E00095374796C654E616D65060B72696768
- 74627574746F6E05416C69676E07055269676874064C6F636B6564090A506F73
- 6974696F6E2E5805000000000000008804400A506F736974696F6E2E59050000
- 00000000008003400A53697A652E576964746805000000000000008003400B53
- 697A652E48656967687405000000000000009003401453697A652E506C617466
- 6F726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C62
- 61727269676874627574746F6E00000754427574746F6E00095374796C654E61
- 6D65060C626F74746F6D627574746F6E05416C69676E0706426F74746F6D064C
- 6F636B6564090A506F736974696F6E2E5905000000000000008804400A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 0000000000008003401453697A652E506C6174666F726D44656661756C74080B
- 5374796C654C6F6F6B757006157363726F6C6C626172626F74746F6D62757474
- 6F6E00000654547261636B00095374796C654E616D65060668747261636B0541
+ 6E65000000000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
+ 616C756507097846463430343034300754726967676572062149734D6F757365
+ 4F7665723D747275653B4973507265737365643D66616C73653B0E5472696767
+ 6572496E7665727365062249734D6F7573654F7665723D66616C73653B497350
+ 7265737365643D66616C73653B00000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646343034
+ 3034300953746F7056616C756507097846463241383245320754726967676572
+ 062049734D6F7573654F7665723D747275653B4973466F63757365643D747275
+ 653B0E54726967676572496E7665727365062149734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D66616C73653B0000000007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E74064C6F636B6564090C4D617267696E732E4C656674050000000000000080
+ 00400B4D617267696E732E546F7005000000000000008000400D4D617267696E
+ 732E52696768740500000000000000D803400E4D617267696E732E426F74746F
+ 6D05000000000000008000400A53697A652E576964746805000000000000008E
+ 05400B53697A652E4865696768740500000000000000A803401453697A652E50
+ 6C6174666F726D44656661756C7408000000545046300A5452656374616E676C
+ 6500095374796C654E616D6506147374617475736261726E6F67726970737479
+ 6C6505416C69676E070643656E7465720C436C69704368696C6472656E090A46
+ 696C6C2E436F6C6F7207097846463235323532350553696465730B03546F7000
+ 0A53697A652E57696474680500000000000000F004400B53697A652E48656967
+ 68740500000000000000C804401453697A652E506C6174666F726D4465666175
+ 6C74080C5374726F6B652E436F6C6F7207097846463135313531350756697369
+ 626C650800005450463007544C61796F757400095374796C654E616D65061373
+ 6D616C6C7363726F6C6C6261727374796C6505416C69676E070643656E746572
+ 0756697369626C6508085461624F726465720224000654547261636B00095374
+ 796C654E616D65060668747261636B05416C69676E0706436C69656E74064C6F
+ 636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
+ 0B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B737479
+ 6C6500000654547261636B00095374796C654E616D65060676747261636B0541
6C69676E0706436C69656E74064C6F636B6564090B4F7269656E746174696F6E
- 070A486F72697A6F6E74616C0A53697A652E5769647468050000000000000090
- 03400B53697A652E48656967687405000000000000009003401453697A652E50
+ 070A486F72697A6F6E74616C0A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
6C6174666F726D44656661756C74080B5374796C654C6F6F6B75700614736372
- 6F6C6C62617268747261636B7374796C6500000654547261636B00095374796C
- 654E616D65060676747261636B05416C69676E0706436C69656E74064C6F636B
- 6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A65
- 2E576964746805000000000000009003400B53697A652E486569676874050000
- 00000000009003401453697A652E506C6174666F726D44656661756C74080B53
- 74796C654C6F6F6B757006147363726F6C6C62617276747261636B7374796C65
- 00000754427574746F6E00095374796C654E616D650609746F70627574746F6E
- 05416C69676E0703546F700A53697A652E57696474680500000000000000C804
- 400B53697A652E48656967687405000000000000008003401453697A652E506C
- 6174666F726D44656661756C74080B5374796C654C6F6F6B757006127363726F
- 6C6C626172746F70627574746F6E000000545046300A5452656374616E676C65
- 00095374796C654E616D65060A7468756D627374796C6505416C69676E070643
- 656E7465720A46696C6C2E436F6C6F7207097846463444344434440748697454
- 657374080A53697A652E57696474680500000000000000C804400B53697A652E
- 4865696768740500000000000000C804401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C
- 6508000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
- 7468756D62436F6C6F72416E696D6174696F6E31084475726174696F6E050000
- 000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F
- 720A537461727456616C756507097846463444344434440953746F7056616C75
- 6507097846463137353739430754726967676572060E4973507265737365643D
- 747275650E54726967676572496E7665727365060F4973507265737365643D66
- 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E
- 050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E616D
- 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646344434
- 4434440953746F7056616C75650707636C614772617907547269676765720610
- 49734D6F7573654F7665723D747275650E54726967676572496E766572736506
- 1149734D6F7573654F7665723D66616C7365000000545046300D545377697463
- 684F626A65637400095374796C654E616D65060B7377697463687374796C6505
- 416C69676E070643656E746572044B696E64070C466164696E67547261636B73
- 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
- 68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C7408085461624F72646572020C12547261636B696E675468756D625363616C
- 65050000000000000080FF3F0756697369626C65080A46696C6C2E436F6C6F72
- 07097846463230323032300C46696C6C4F6E2E436F6C6F720709784646313735
- 3739430B46696C6C4F6E2E4B696E640705536F6C69640B5374726F6B652E4B69
- 6E6407044E6F6E650B5468756D622E436F6C6F7207097846463430343034300D
- 5468756D624F6E2E436F6C6F7207097846463241383245320C5468756D624F6E
- 2E4B696E640705536F6C6964105468756D625374726F6B652E4B696E6407044E
- 6F6E650F5468756D625374726F6B652E4361700705526F756E64105468756D62
- 5374726F6B652E446173680706437573746F6D105468756D625374726F6B652E
- 4A6F696E0705526F756E64165468756D625374726F6B652E437573746F6D4461
- 73680A08000000000000000000000000005450463007544C61796F7574000953
- 74796C654E616D65060C7370696E626F787374796C6505416C69676E07064365
- 6E7465720A53697A652E57696474680500000000006666E005400B53697A652E
- 4865696768740500000000000000A803401453697A652E506C6174666F726D44
- 656661756C74080756697369626C6508085461624F72646572020D000A545265
- 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
- 6C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230
- 323032300A53697A652E57696474680500000000006666E005400B53697A652E
- 4865696768740500000000000000A803401453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
- 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C
- 6F72416E696D6174696F6E315374796C65084475726174696F6E050000000000
- CDCCCCFB3F07496E7665727365090C50726F70657274794E616D65060C537472
- 6F6B652E436F6C6F720A537461727456616C7565070978464631353135313509
- 53746F7056616C75650709784646343034303430075472696767657206104973
- 4D6F7573654F7665723D747275650E54726967676572496E7665727365061149
- 734D6F7573654F7665723D66616C73650000000C5442727573684F626A656374
- 00095374796C654E616D65060A666F726567726F756E640B42727573682E436F
- 6C6F72070978464645414541454100000C5442727573684F626A656374000953
- 74796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F7207
- 09783936324138324532000007544C61796F757400095374796C654E616D6506
- 07636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D
- 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
- 6F7005000000000000008000400D4D617267696E732E52696768740500000000
- 0000008000400E4D617267696E732E426F74746F6D0500000000000000800040
- 0A53697A652E576964746805000000000070668405400B53697A652E48656967
- 687405000000000000008803401453697A652E506C6174666F726D4465666175
- 6C740800000754427574746F6E00095374796C654E616D65060B6D696E757362
- 7574746F6E05416C69676E07074669744C6566740843616E466F637573080643
- 7572736F72070763724172726F770C4D617267696E732E4C6566740500000000
- 0000008000400B4D617267696E732E546F7005000000000000008000400D4D61
- 7267696E732E526967687405000000000000008000400E4D617267696E732E42
- 6F74746F6D05000000000000008000400A506F736974696F6E2E580500000000
- 0000008000400A506F736974696F6E2E5905000000000000008000400A53697A
- 652E5769647468050000000000E8FF8703400B53697A652E4865696768740500
- 0000000000008803401453697A652E506C6174666F726D44656661756C74080B
- 5374796C654C6F6F6B7570060B627574746F6E7374796C650005545061746800
- 05416C69676E0706436C69656E7409446174612E506174680A40000000050000
- 00000000000000803F00000000010000000000803F0000803F01000000000000
- 000000003F010000000000803F00000000030000000000803F000000000A4669
- 6C6C2E436F6C6F720708636C6157686974650748697454657374080C4D617267
- 696E732E4C6566740500000000000000C001400B4D617267696E732E546F7005
- 00000000000000C001400D4D617267696E732E52696768740500000000000000
- C001400E4D617267696E732E426F74746F6D0500000000000000C001400A5369
- 7A652E5769647468050000000000A0FF9F01400B53697A652E48656967687405
- 00000000000000A001401453697A652E506C6174666F726D44656661756C7408
- 0B5374726F6B652E4B696E6407044E6F6E650000000754427574746F6E000953
- 74796C654E616D65060A706C7573627574746F6E05416C69676E070846697452
- 696768740843616E466F6375730806437572736F72070763724172726F770C4D
- 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
- 6F7005000000000000008000400D4D617267696E732E52696768740500000000
- 0000008000400E4D617267696E732E426F74746F6D0500000000000000800040
- 0A506F736974696F6E2E580500000000006A66BA05400A506F736974696F6E2E
- 5905000000000000008000400A53697A652E5769647468050000000000F0FF87
- 03400B53697A652E48656967687405000000000000008803401453697A652E50
- 6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060B627574
- 746F6E7374796C65000554506174680005416C69676E0706436C69656E740944
- 6174612E506174680A3400000004000000000000000000000000000000010000
- 00000000000000803F010000000000803F0000003F0300000000000000000000
- 000A46696C6C2E436F6C6F720708636C6157686974650748697454657374080C
- 4D617267696E732E4C6566740500000000000000C001400B4D617267696E732E
- 546F700500000000000000C001400D4D617267696E732E526967687405000000
- 00000000C001400E4D617267696E732E426F74746F6D0500000000000000C001
- 400A53697A652E5769647468050000000000C0FF9F01400B53697A652E486569
- 6768740500000000000000A001401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
- 4C61796F757400095374796C654E616D65060F746162636F6E74726F6C737479
- 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 0000008E06400B53697A652E486569676874050000000000FFFFC90540145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F72646572020E000A5452656374616E676C6500095374796C654E616D65060A
- 6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E
- 436F6C6F720709784646333033303330064C6F636B6564090748697454657374
- 080C50616464696E672E4C65667405000000000000008000400B50616464696E
- 672E546F7005000000000000008000400D50616464696E672E52696768740500
- 0000000000008000400E50616464696E672E426F74746F6D0500000000000000
- 8000400A53697A652E576964746805000000000000008E06400B53697A652E48
- 6569676874050000000000FFFFC905401453697A652E506C6174666F726D4465
- 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350000
- 00545046300A5452656374616E676C6500095374796C654E616D65060B746162
- 646F747374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F
- 7207097846463135313531350748697454657374080A53697A652E5769647468
- 0500000000000000C804400B53697A652E4865696768740500000000000000C8
- 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E696D61
- 74696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463135313531350953746F7056616C75650709784646324138324532075472
- 6967676572060F497353656C65637465643D747275650E54726967676572496E
- 76657273650610497353656C65637465643D66616C7365000000545046300754
- 4C61796F757400095374796C654E616D65060C7461626974656D7374796C6505
- 416C69676E070643656E7465720A53697A652E57696474680500000000000000
- C804400B53697A652E4865696768740500000000000000C803401453697A652E
- 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
- 6572020F000A5452656374616E676C6500095374796C654E616D650603746F70
- 05416C69676E0708436F6E74656E74730C436C69704368696C6472656E090743
- 6F726E6572730B07546F704C65667408546F705269676874000A46696C6C2E43
- 6F6C6F720709784646323032303230064C6F636B656409074869745465737408
- 0553696465730B03546F70044C656674055269676874000A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C803401453697A652E506C6174666F726D44656661756C74080C5374726F6B
- 652E436F6C6F720709784646313531353135000654476C79706800095374796C
- 654E616D65060A676C7970687374796C650C4D617267696E732E4C6566740500
- 0000000000008001400D4D617267696E732E5269676874050000000000000080
- 01C005416C69676E07044C6566740A53697A652E576964746805000000000000
- 008003400B53697A652E48656967687405000000000000008003401453697A65
- 2E506C6174666F726D44656661756C7408000005545465787400095374796C65
- 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
- 0748697454657374080C4D617267696E732E4C6566740500000000000000C000
- 400B4D617267696E732E546F700500000000000000C000400D4D617267696E73
- 2E52696768740500000000000000C000400E4D617267696E732E426F74746F6D
- 0500000000000000C000400A53697A652E57696474680500000000000000B004
- 400B53697A652E48656967687405000000000000009803401453697A652E506C
- 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
- 436F6C6F720708636C615768697465155465787453657474696E67732E576F72
- 64577261700800000F54436F6C6F72416E696D6174696F6E00095374796C654E
- 616D650612746162436F6C6F72416E696D6174696F6E310D416E696D6174696F
- 6E547970650705496E4F7574084475726174696F6E050000000000CDCCCCFB3F
- 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
- 616C756507097846463230323032300953746F7056616C756507097846463430
- 343034300754726967676572062149734D6F7573654F7665723D747275653B49
- 7353656C65637465643D66616C73650E54726967676572496E76657273650622
- 49734D6F7573654F7665723D66616C73653B497353656C65637465643D66616C
- 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
- 12746162436F6C6F72416E696D6174696F6E32084475726174696F6E05000000
- 0000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F72
- 0A537461727456616C756507097846463230323032300953746F7056616C7565
- 07097846463241383245320754726967676572060F497353656C65637465643D
- 747275650E54726967676572496E76657273650610497353656C65637465643D
- 66616C736500000000545046300A5452656374616E676C6500095374796C654E
- 616D65060D7468756D626261727374796C6505416C69676E070643656E746572
- 0A46696C6C2E436F6C6F7207097846463241383245320748697454657374080A
- 53697A652E57696474680500000000000000A003400B53697A652E4865696768
- 740500000000000000A003401453697A652E506C6174666F726D44656661756C
- 74080C5374726F6B652E436F6C6F720709784646313531353135075669736962
- 6C6508000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
- 147468756D62436F6C6F72416E696D6174696F6E31084475726174696F6E0500
- 00000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C
- 6F720A537461727456616C756507097846463241383245320953746F7056616C
- 756507097846463137353739430754726967676572061F497350726573736564
- 3D747275653B49734D6F7573654F7665723D747275650E54726967676572496E
- 766572736506104973507265737365643D66616C73653B00000F54436F6C6F72
- 416E696D6174696F6E00095374796C654E616D6506147468756D62436F6C6F72
- 416E696D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097846463241383245320953746F7056616C7565070978464634303942
- 46460754726967676572062049734D6F7573654F7665723D747275653B497350
- 7265737365643D66616C73650E54726967676572496E7665727365062149734D
- 6F7573654F7665723D66616C73653B4973507265737365643D66616C73650000
- 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615746875
- 6D625374726F6B65416E696D6174696F6E31084475726174696F6E0500000000
- 00CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E436F6C6F
- 720A537461727456616C756507097846463135313531350953746F7056616C75
- 6507097846463137353739430754726967676572061F4973507265737365643D
- 747275653B49734D6F7573654F7665723D747275650E54726967676572496E76
- 65727365060F4973507265737365643D66616C73650000005450463007544C61
- 796F757400095374796C654E616D65060C6C697374626F787374796C6505416C
- 69676E070643656E7465720A53697A652E5769647468050000000000FFFFE905
- 400B53697A652E48656967687405000000000000008306401453697A652E506C
- 6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 0210000C5442727573684F626A65637400095374796C654E616D650618416C74
- 65726E6174696E67526F774261636B67726F756E640B42727573682E436F6C6F
- 72070978464632433243324300000A5452656374616E676C6500095374796C65
- 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
- 0A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564090748
- 697454657374080C50616464696E672E4C65667405000000000000008000400B
- 50616464696E672E546F7005000000000000008000400D50616464696E672E52
- 6967687405000000000000008000400E50616464696E672E426F74746F6D0500
- 0000000000008000400A53697A652E5769647468050000000000FFFFE905400B
- 53697A652E48656967687405000000000000008306401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 313531350007544C61796F757400095374796C654E616D650607636F6E74656E
- 7405416C69676E0706436C69656E740C436C69704368696C6472656E090A5369
- 7A652E5769647468050000000000FFFFC105400B53697A652E48656967687405
- 00000000000000DE05401453697A652E506C6174666F726D44656661756C7408
- 000A5452656374616E676C6500095374796C654E616D65060973656C65637469
- 6F6E0A46696C6C2E436F6C6F7207097846463241383245320748697454657374
- 080A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000C804401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E
- 676C6500095374796C654E616D650610666F637573656473656C656374696F6E
- 0A46696C6C2E436F6C6F7207097846463241383245320748697454657374080A
- 53697A652E57696474680500000000000000C804400B53697A652E4865696768
- 740500000000000000C804401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E650B5374726F6B652E44617368
- 0703446F740000000A545363726F6C6C42617200095374796C654E616D65060A
- 767363726F6C6C62617205416C69676E070552696768740B536D616C6C436861
- 6E676505000000000000000000000B4F7269656E746174696F6E070856657274
- 6963616C0A506F736974696F6E2E58050000000000FFFFC505400A506F736974
- 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
- 0000008003400B53697A652E4865696768740500000000000000DE0540145369
- 7A652E506C6174666F726D44656661756C740800000A545363726F6C6C426172
- 00095374796C654E616D65060A687363726F6C6C62617205416C69676E070642
- 6F74746F6D0B536D616C6C4368616E676505000000000000000000000B4F7269
- 656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E5805
- 000000000000008000400A506F736974696F6E2E590500000000000000E20540
- 0A53697A652E5769647468050000000000FFFFE105400B53697A652E48656967
- 687405000000000000008003401453697A652E506C6174666F726D4465666175
- 6C740800000F54536D616C6C5363726F6C6C42617200095374796C654E616D65
- 060F76736D616C6C7363726F6C6C62617205416C69676E070552696768740B53
- 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
- 6E0708566572746963616C0C4D617267696E732E4C6566740500000000000000
- 8000400A506F736974696F6E2E580500000000000000C605400A506F73697469
- 6F6E2E5905000000000000008000400A53697A652E5769647468050000000000
- 00008002400B53697A652E48656967687405000000000000008002401453697A
- 652E506C6174666F726D44656661756C74080756697369626C650800000F5453
- 6D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C
- 7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C436861
- 6E676505000000000000000000000B4F7269656E746174696F6E070A486F7269
- 7A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A506F
- 736974696F6E2E5805000000000000008000400A506F736974696F6E2E590500
- 000000000000E205400A53697A652E576964746805000000000000009606400B
- 53697A652E48656967687405000000000000008002401453697A652E506C6174
- 666F726D44656661756C74080756697369626C65080000000B54476C6F774566
- 666563740008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F
- 6C6F720709784646463639453244074F7061636974790500000000006666E6FE
- 3F0754726967676572060E4973466F63757365643D7472756507456E61626C65
- 64080000005450463007544C61796F757400095374796C654E616D65060D6C69
- 7374626F78666F6F74657205416C69676E070643656E7465720A53697A652E57
- 6964746805000000000000009205400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F7264657202110005545465787400095374796C654E61
- 6D6506047465787405416C69676E0706436C69656E74064C6F636B6564090748
- 697454657374080C4D617267696E732E4C6566740500000000000000A001400B
- 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
- 696768740500000000000000A001400E4D617267696E732E426F74746F6D0500
- 0000000000008000400A53697A652E57696474680500000000000000FC04400B
- 53697A652E4865696768740500000000000000B003401453697A652E506C6174
- 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
- 6C6F720708636C6157686974650000005450463007544C61796F757400095374
- 796C654E616D6506106C697374626F786974656D7374796C6505416C69676E07
- 0643656E7465720A53697A652E57696474680500000000000000D605400B5369
- 7A652E4865696768740500000000000000C003401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F7264657202120006
- 54476C79706800095374796C654E616D65060A676C7970687374796C650C4D61
- 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
- 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
- 00008000400E4D617267696E732E426F74746F6D050000000000000080FF3F05
- 416C69676E07044C6566740A53697A652E576964746805000000000000008003
- 400B53697A652E48656967687405000000000000008003401453697A652E506C
- 6174666F726D44656661756C7408000005545465787400095374796C654E616D
- 6506047465787405416C69676E0706436C69656E740748697454657374080C4D
- 617267696E732E4C6566740500000000000000C000400B4D617267696E732E54
- 6F70050000000000000080FF3F0D4D617267696E732E52696768740500000000
- 000000C000400E4D617267696E732E426F74746F6D050000000000000080FF3F
- 0A53697A652E57696474680500000000000000CA05400B53697A652E48656967
- 68740500000000000000B003401453697A652E506C6174666F726D4465666175
- 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
- 68697465155465787453657474696E67732E576F726457726170081654657874
- 53657474696E67732E486F727A416C69676E07074C656164696E670000095443
- 6865636B426F7800095374796C654E616D650605636865636B05416C69676E07
- 084D6F73744C6566740843616E466F637573081244697361626C65466F637573
- 456666656374090A53697A652E57696474680500000000000000A003400B5369
- 7A652E4865696768740500000000000000C003401453697A652E506C6174666F
- 726D44656661756C74080756697369626C65080000005450463007544C61796F
- 757400095374796C654E616D6506126C697374626F78706C61696E6865616465
- 7205416C69676E070643656E7465720A53697A652E5769647468050000000000
- 00009205400B53697A652E4865696768740500000000000000D003401453697A
- 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
- 726465720213000A5452656374616E676C6500095374796C654E616D65060A62
- 61636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E43
- 6F6C6F720709784646324432443244064C6F636B656409074869745465737408
- 0A53697A652E576964746805000000000000009205400B53697A652E48656967
- 68740500000000000000D003401453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F7207097846463135313531350000055454
- 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
- 6E74064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 0500000000000000A001400B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E52696768740500000000000000A001400E4D617267
- 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
- 0500000000000000FC04400B53697A652E4865696768740500000000000000B0
- 03401453697A652E506C6174666F726D44656661756C74081654657874536574
- 74696E67732E466F6E74436F6C6F720708636C61576869746500000054504630
- 07544C61796F757400095374796C654E616D650609677269647374796C650541
- 6C69676E070643656E7465720A53697A652E5769647468050000000000FFFFE9
- 05400B53697A652E48656967687405000000000000008306401453697A652E50
- 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 720214000C5442727573684F626A65637400095374796C654E616D650618416C
- 7465726E6174696E67526F774261636B67726F756E640B42727573682E436F6C
- 6F72070978333237383738373800000C5442727573684F626A65637400095374
- 796C654E616D6506086C696E6566696C6C0B42727573682E436F6C6F72070978
- 464631353135313500000A5452656374616E676C6500095374796C654E616D65
- 060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C
- 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
- 7374080C50616464696E672E4C65667405000000000000008000400B50616464
- 696E672E546F7005000000000000008000400D50616464696E672E5269676874
- 05000000000000008000400E50616464696E672E426F74746F6D050000000000
- 00008000400A53697A652E5769647468050000000000FFFFE905400B53697A65
- 2E48656967687405000000000000008306401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 00075448656164657200095374796C654E616D65060668656164657205536964
- 65730B03546F70044C65667406426F74746F6D0552696768740005416C69676E
- 0703546F700A506F736974696F6E2E5805000000000000008000400A506F7369
- 74696F6E2E5905000000000000008000400A53697A652E576964746805000000
- 0000FFFFE105400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C7408000007544C61796F75740009
- 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
- 0C436C69704368696C6472656E090A53697A652E5769647468050000000000FF
- FFC105400B53697A652E4865696768740500000000000000B405401453697A65
- 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
- 74796C654E616D65060973656C656374696F6E0A46696C6C2E436F6C6F720709
- 7846463241383245320748697454657374080A53697A652E5769647468050000
- 0000000000C804400B53697A652E4865696768740500000000000000C8044014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D6506
- 05666F6375730A46696C6C2E436F6C6F72070978414632413832453207486974
- 54657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D61
- 7267696E732E546F70050000000000000080FF3F0D4D617267696E732E526967
- 6874050000000000000080FF3F0E4D617267696E732E426F74746F6D05000000
- 0000000080FF3F0A53697A652E57696474680500000000000000C804400B5369
- 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507595261
- 646975730500000000000000C000400000000A545363726F6C6C426172000953
- 74796C654E616D65060A767363726F6C6C62617205416C69676E070552696768
- 740B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
- 74696F6E0708566572746963616C0A506F736974696F6E2E58050000000000FF
- FFC505400A506F736974696F6E2E590500000000000000B803400A53697A652E
- 576964746805000000000000008003400B53697A652E48656967687405000000
- 00000000B405401453697A652E506C6174666F726D44656661756C740800000A
- 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
- 7205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000
- 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A50
- 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
- 00000000000000E205400A53697A652E5769647468050000000000FFFFE10540
- 0B53697A652E48656967687405000000000000008003401453697A652E506C61
- 74666F726D44656661756C740800000F54536D616C6C5363726F6C6C42617200
- 095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C6967
- 6E070552696768740B536D616C6C4368616E676505000000000000000000000B
- 4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E4C65
- 667405000000000000008000400A506F736974696F6E2E580500000000000000
- C605400A506F736974696F6E2E5905000000000000008000400A53697A652E57
- 6964746805000000000000008002400B53697A652E4865696768740500000000
- 0000008002401453697A652E506C6174666F726D44656661756C740807566973
- 69626C650800000F54536D616C6C5363726F6C6C42617200095374796C654E61
- 6D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F
- 6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E7461
- 74696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000
- 000000008000400A506F736974696F6E2E5805000000000000008000400A506F
- 736974696F6E2E590500000000000000E205400A53697A652E57696474680500
- 0000000000009606400B53697A652E4865696768740500000000000000800240
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650800
- 0000005450463007544C61796F757400095374796C654E616D65060F68656164
- 65726974656D7374796C6505416C69676E070643656E7465720A53697A652E57
- 6964746805000000000000009205400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F726465720215000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
- 6E74730A46696C6C2E436F6C6F720709784646344334433443064C6F636B6564
- 090748697454657374080A53697A652E57696474680500000000000000920540
- 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 3531353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650615686561646572436F6C6F72416E696D6174696F6E31084475726174696F
- 6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E
- 436F6C6F720A537461727456616C756507097846463443344334430953746F70
- 56616C756507097846463241383245320754726967676572060E497350726573
- 7365643D747275650E54726967676572496E7665727365060F49735072657373
- 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D6506166865616465725374726F6B65416E696D6174696F6E31084475
- 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060C
- 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
- 31350953746F7056616C75650709784646324138324532075472696767657206
- 0E4973507265737365643D747275650E54726967676572496E7665727365060F
- 4973507265737365643D66616C736500000005545465787400095374796C654E
- 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
- 48697454657374080C4D617267696E732E4C6566740500000000000000A00140
+ 6F6C6C62617276747261636B7374796C650000005450463007544C61796F7574
+ 00095374796C654E616D65060D73706C69747465727374796C6505416C69676E
+ 070643656E7465720A53697A652E57696474680500000000000000A904400B53
+ 697A652E4865696768740500000000000080C105401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508085461624F72646572022500
+ 07544C61796F757400095374796C654E616D6506046772697005416C69676E07
+ 06436C69656E740A53697A652E57696474680500000000000000A904400B5369
+ 7A652E4865696768740500000000000080C105401453697A652E506C6174666F
+ 726D44656661756C7408000754436972636C6500095374796C654E616D650607
+ 436972636C653105416C69676E070643656E7465720A46696C6C2E436F6C6F72
+ 07097846463430343034300A53697A652E57696474680500000000000000E001
+ 400B53697A652E4865696768740500000000000000E001401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 31353135313500000754436972636C6500095374796C654E616D650607436972
+ 636C653205416C69676E070643656E7465720A46696C6C2E436F6C6F72070978
+ 46463430343034300B4D617267696E732E546F700500000000000000A003400A
+ 53697A652E57696474680500000000000000E001400B53697A652E4865696768
+ 740500000000000000E001401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000007544369
+ 72636C6500095374796C654E616D650607436972636C653305416C69676E0706
+ 43656E7465720A46696C6C2E436F6C6F7207097846463430343034300E4D6172
+ 67696E732E426F74746F6D0500000000000000A003400A53697A652E57696474
+ 680500000000000000E001400B53697A652E4865696768740500000000000000
+ E001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135000000005450463007544C61796F75
+ 7400095374796C654E616D6506106D656E756261726974656D7374796C650541
+ 6C69676E070643656E7465720C4D617267696E732E4C65667405000000000000
+ 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
+ 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F0A53697A652E576964746805000000000000
+ 009205400B53697A652E4865696768740500000000000000D003401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
+ 6465720226000A5452656374616E676C650005416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F7207097846463241383245320748697454657374
+ 08074F70616369747905000000000017B7D1F13F0A53697A652E576964746805
+ 000000000000009205400B53697A652E4865696768740500000000000000D003
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E000844757261
+ 74696F6E05000000000018B7D1F23F0C50726F70657274794E616D6506074F70
+ 61636974790A537461727456616C756505000000000000000000000953746F70
+ 56616C7565050000000000000080FF3F0754726967676572060F497353656C65
+ 637465643D747275650E54726967676572496E76657273650610497353656C65
+ 637465643D66616C73650000000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A
+ 46696C6C2E436F6C6F720709784646324138324532074869745465737408074F
+ 70616369747905000000000017B7D1F13F0A53697A652E576964746805000000
+ 000000009205400B53697A652E4865696768740500000000000000D003401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E65000F54466C6F6174416E696D6174696F6E00084475726174696F
+ 6E05000000000018B7D1F23F0C50726F70657274794E616D6506074F70616369
+ 74790A537461727456616C756505000000000000000000000953746F7056616C
+ 7565050000000000000080FF3F0754726967676572061049734D6F7573654F76
+ 65723D747275650E54726967676572496E7665727365061149734D6F7573654F
+ 7665723D66616C736500000007544C61796F757400095374796C654E616D6506
+ 05676C79706805416C69676E07044C6566740A53697A652E5769647468050000
+ 0000000000C803400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C74080007544C61796F75740009
+ 5374796C654E616D650609636865636B6D61726B05416C69676E0708436F6E74
+ 656E7473074F7061636974790500000000006F1283F53F0A53697A652E576964
+ 74680500000000000000C803400B53697A652E48656967687405000000000000
+ 00D003401453697A652E506C6174666F726D44656661756C7408000554506174
+ 680005416C69676E070643656E74657209446174612E506174680A5800000007
+ 0000000000000056D9524391AE2C43010000009276664365021643010000009F
+ 3983432B7C3C43010000009E9AA64382D2B442010000006F1CB04375A4D14201
+ 00000026DF8243263F67430300000056D9524391AE2C430A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080A53697A652E5769647468
+ 0500000000000000B002400B53697A652E4865696768740500000000000000B0
+ 02401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6500000F54466C6F6174416E696D6174696F6E00084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D650607
+ 4F7061636974790A537461727456616C75650500000000000000000000095374
+ 6F7056616C7565050000000000000080FF3F0754726967676572060E49734368
+ 65636B65643D747275650E54726967676572496E7665727365060F4973436865
+ 636B65643D66616C73650000000654476C79706800095374796C654E616D6506
+ 0A676C7970687374796C650C4D617267696E732E4C6566740500000000000000
+ 80FF3F0B4D617267696E732E546F7005000000000000008000400D4D61726769
+ 6E732E52696768740500000000000000C000400E4D617267696E732E426F7474
+ 6F6D050000000000000080FF3F05416C69676E070552696768740A506F736974
+ 696F6E2E580500000000000000C001400A506F736974696F6E2E590500000000
+ 0000008000400A53697A652E576964746805000000000000008003400B53697A
+ 652E4865696768740500000000000000B803401453697A652E506C6174666F72
+ 6D44656661756C740800000654496D61676500095374796C654E616D65060662
+ 69746D61700E4D756C74695265734269746D61700E01000005416C69676E0708
+ 436F6E74656E74730C4D617267696E732E4C6566740500000000000000800040
0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
- 52696768740500000000000000A001400E4D617267696E732E426F74746F6D05
- 000000000000008000400A53697A652E57696474680500000000000000FC0440
+ 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
+ 000000000000008000400A53697A652E57696474680500000000000000A80340
0B53697A652E4865696768740500000000000000B003401453697A652E506C61
- 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
- 6F6C6F720708636C6157686974650000005450463007544C61796F7574000953
- 74796C654E616D65061070726F67726573736261727374796C6505416C69676E
- 070643656E7465720A53697A652E576964746805000000000033338505400B53
- 697A652E4865696768740500000000009999E104401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508085461624F72646572021600
- 0A5452656374616E676C6500095374796C654E616D65060668747261636B0541
- 6C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230
- 32303230064C6F636B6564090748697454657374080A53697A652E5769647468
- 05000000000033338505400B53697A652E4865696768740500000000009999E1
- 04401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
- 436F6C6F720709784646313531353135000A5452656374616E676C6500095374
- 796C654E616D65060A68696E64696361746F7205416C69676E07044C6566740A
- 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
- 7454657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D
- 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
- 676874050000000000000080FF3F0E4D617267696E732E426F74746F6D050000
- 000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A50
- 6F736974696F6E2E59050000000000000080FF3F0A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000009999D904
- 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E650000000A5452656374616E676C6500095374796C654E61
- 6D65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C2E
- 436F6C6F720709784646323032303230064C6F636B6564090748697454657374
- 080A53697A652E576964746805000000000033338505400B53697A652E486569
- 6768740500000000009999E104401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F720709784646313531353135000A5452
- 656374616E676C6500095374796C654E616D65060A76696E64696361746F7205
- 416C69676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646324138
- 324532064C6F636B6564090748697454657374080C4D617267696E732E4C6566
- 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
- 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
- 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
- 58050000000000000080FF3F0A506F736974696F6E2E59050000000000999989
- 04400A53697A652E576964746805000000000033338105400B53697A652E4865
- 696768740500000000000000A803401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007
- 544C61796F757400095374796C654E616D65061170726F677265737363656C6C
- 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 000000000000F805400B53697A652E4865696768740500000000000000FC0540
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F7264657202170007544C61796F757400095374796C654E616D650606
- 68747261636B05416C69676E0708436F6E74656E7473064C6F636B6564090C4D
- 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
- 6F7005000000000000008000400D4D617267696E732E52696768740500000000
- 0000008000400E4D617267696E732E426F74746F6D0500000000000000800040
- 0A53697A652E57696474680500000000000000F005400B53697A652E48656967
- 68740500000000000000F405401453697A652E506C6174666F726D4465666175
- 6C7408000A5452656374616E676C6500095374796C654E616D65060A68696E64
- 696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72070978
- 4646324138324532064C6F636B6564090748697454657374080C4D617267696E
- 732E4C65667405000000000000008000400B4D617267696E732E546F70050000
- 00000000008000400D4D617267696E732E526967687405000000000000008000
- 400E4D617267696E732E426F74746F6D05000000000000008000400A506F7369
- 74696F6E2E5805000000000000008000400A506F736974696F6E2E5905000000
- 000000008000400A53697A652E57696474680500000000000000C804400B5369
- 7A652E4865696768740500000000000000EC05401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000
- 5450463007544C61796F757400095374796C654E616D6506106D656E75626172
- 6974656D7374796C6505416C69676E070643656E7465720C4D617267696E732E
- 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
- 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
- 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
- 6964746805000000000000009205400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F726465720218000A5452656374616E676C650005416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138
- 324532074869745465737408074F70616369747905000000000017B7D1F13F0A
+ 74666F726D44656661756C740800000005545465787400095374796C654E616D
+ 6506047465787405416C69676E07044C656674064C6F636B6564090748697454
+ 657374080C4D617267696E732E4C65667405000000000000008002400D4D6172
+ 67696E732E526967687405000000000000008002400A506F736974696F6E2E58
+ 05000000000000008404400A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000D003401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C615768697465165465787453657474696E67732E486F72
+ 7A416C69676E07074C656164696E67000005545465787400095374796C654E61
+ 6D65060873686F727463757405416C69676E07055269676874064C6F636B6564
+ 090748697454657374080C4D617267696E732E4C6566740500000000000000C0
+ 02400D4D617267696E732E52696768740500000000000000C001400A506F7369
+ 74696F6E2E580500000000000000C000C00A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000000000D003401453
+ 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
+ 732E466F6E74436F6C6F720708636C615768697465165465787453657474696E
+ 67732E486F727A416C69676E07074C656164696E67000007544C61796F757400
+ 095374796C654E616D6506077375626D61726B05416C69676E07055269676874
+ 0A506F736974696F6E2E580500000000000000D404400A53697A652E57696474
+ 680500000000000000A003400B53697A652E4865696768740500000000000000
+ D003401453697A652E506C6174666F726D44656661756C740800055450617468
+ 0005416C69676E070643656E74657209446174612E506174680A340000000400
+ 000000000000000000000000000001000000000000000000803F010000000000
+ 803F0000003F0300000000000000000000000A46696C6C2E436F6C6F72070863
+ 6C615768697465064C6F636B6564090748697454657374080A53697A652E5769
+ 6474680500000000000000E001400B53697A652E486569676874050000000000
+ 00008002401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E6500000000545046300A5452656374616E676C65
+ 00095374796C654E616D65060C6D656E756261727374796C6505416C69676E07
+ 0643656E7465720C436C69704368696C6472656E090946696C6C2E4B696E6407
+ 044E6F6E650748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650756697369626C650807585261646975730500000000000000C0004007
+ 595261646975730500000000000000C00040000A5452656374616E676C650005
+ 416C69676E0706436C69656E740A46696C6C2E436F6C6F720709784646323032
+ 3032300748697454657374080C4D617267696E732E4C65667405000000000000
+ 0080FFBF0B4D617267696E732E546F70050000000000000080FFBF0D4D617267
+ 696E732E5269676874050000000000000080FFBF0A53697A652E576964746805
+ 00000000000000D004400B53697A652E4865696768740500000000000000CC04
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F72070978464631353135313507585261646975730500000000000000C0
+ 004007595261646975730500000000000000C00040000007544C61796F757400
+ 095374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E
+ 740C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E
+ 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
+ 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000C004400B53697A652E48
+ 65696768740500000000000000C004401453697A652E506C6174666F726D4465
+ 6661756C74080000005450463007544C61796F757400095374796C654E616D65
+ 060D6D656E756974656D7374796C6505416C69676E070643656E7465720C4D61
+ 7267696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A
53697A652E576964746805000000000000009205400B53697A652E4865696768
740500000000000000D003401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D
- 6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
- 7274794E616D6506074F7061636974790A537461727456616C75650500000000
- 0000000000000953746F7056616C7565050000000000000080FF3F0754726967
- 676572060F497353656C65637465643D747275650E54726967676572496E7665
- 7273650610497353656C65637465643D66616C73650000000A5452656374616E
- 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
- 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138324532
- 074869745465737408074F70616369747905000000000017B7D1F13F0A53697A
- 652E576964746805000000000000009205400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D617469
- 6F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F7065727479
- 4E616D6506074F7061636974790A537461727456616C75650500000000000000
- 0000000953746F7056616C7565050000000000000080FF3F0754726967676572
- 061049734D6F7573654F7665723D747275650E54726967676572496E76657273
- 65061149734D6F7573654F7665723D66616C736500000007544C61796F757400
- 095374796C654E616D650605676C79706805416C69676E07044C6566740A5369
- 7A652E57696474680500000000000000C803400B53697A652E48656967687405
- 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
- 0007544C61796F757400095374796C654E616D650609636865636B6D61726B05
- 416C69676E0708436F6E74656E7473074F7061636974790500000000006F1283
- F53F0A53697A652E57696474680500000000000000C803400B53697A652E4865
+ 74080756697369626C6508085461624F726465720227000A5452656374616E67
+ 6C650005416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709
+ 784646324138324532074869745465737408074F706163697479050000000000
+ 17B7D1F13F0A53697A652E576964746805000000000000009205400B53697A65
+ 2E4865696768740500000000000000D003401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F
+ 6174416E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F
+ 0C50726F70657274794E616D6506074F7061636974790A537461727456616C75
+ 6505000000000000000000000953746F7056616C7565050000000000000080FF
+ 3F0754726967676572060F497353656C65637465643D747275650E5472696767
+ 6572496E76657273650610497353656C65637465643D66616C73650000000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 324138324532074869745465737408074F706163697479050000000000000000
+ 00000A53697A652E576964746805000000000000009205400B53697A652E4865
696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C7408000554506174680005416C69676E070643656E7465720944617461
- 2E506174680A58000000070000000000000056D9524391AE2C43010000009276
- 664365021643010000009F3983432B7C3C43010000009E9AA64382D2B4420100
- 00006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE
- 2C430A46696C6C2E436F6C6F720708636C615768697465074869745465737408
- 0A53697A652E57696474680500000000000000B002400B53697A652E48656967
- 68740500000000000000B002401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E
- 696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F
- 70657274794E616D6506074F7061636974790A537461727456616C7565050000
- 00000000000000000953746F7056616C7565050000000000000080FF3F075472
- 6967676572060E4973436865636B65643D747275650E54726967676572496E76
- 65727365060F4973436865636B65643D66616C73650000000654476C79706800
- 095374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C
- 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
- 00008000400D4D617267696E732E52696768740500000000000000C000400E4D
- 617267696E732E426F74746F6D050000000000000080FF3F05416C69676E0705
- 52696768740A53697A652E576964746805000000000000008003400B53697A65
- 2E48656967687405000000000000008003401453697A652E506C6174666F726D
- 44656661756C740800000654496D61676500095374796C654E616D6506066269
- 746D61700E4D756C74695265734269746D61700E01000005416C69676E070843
- 6F6E74656E74730C4D617267696E732E4C65667405000000000000008000400B
- 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
- 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
- 0000000000008000400A53697A652E57696474680500000000000000A803400B
- 53697A652E4865696768740500000000000000B003401453697A652E506C6174
- 666F726D44656661756C740800000005545465787400095374796C654E616D65
- 06047465787405416C69676E07044C656674064C6F636B656409074869745465
- 7374080C4D617267696E732E4C65667405000000000000008002400D4D617267
- 696E732E526967687405000000000000008002400A506F736974696F6E2E5805
- 000000000000008404400A53697A652E57696474680500000000000000C80440
- 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
- 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
- 6F6C6F720708636C615768697465165465787453657474696E67732E486F727A
- 416C69676E07074C656164696E67000005545465787400095374796C654E616D
- 65060873686F727463757405416C69676E07055269676874064C6F636B656409
- 0748697454657374080C4D617267696E732E4C6566740500000000000000C002
- 400D4D617267696E732E52696768740500000000000000C001400A506F736974
- 696F6E2E580500000000000000C000C00A53697A652E57696474680500000000
- 000000C804400B53697A652E4865696768740500000000000000D00340145369
- 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
- 2E466F6E74436F6C6F720708636C615768697465165465787453657474696E67
- 732E486F727A416C69676E07074C656164696E67000007544C61796F75740009
- 5374796C654E616D6506077375626D61726B05416C69676E070552696768740A
- 506F736974696F6E2E580500000000000000D404400A53697A652E5769647468
- 0500000000000000A003400B53697A652E4865696768740500000000000000D0
- 03401453697A652E506C6174666F726D44656661756C74080005545061746800
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F617441
+ 6E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F07496E
+ 7665727365090C50726F70657274794E616D6506074F7061636974790A537461
+ 727456616C756505000000000000000000000953746F7056616C756505000000
+ 0000000080FF3F0754726967676572061049734D6F7573654F7665723D747275
+ 650E54726967676572496E7665727365061149734D6F7573654F7665723D6661
+ 6C736500000007544C61796F757400095374796C654E616D650605676C797068
+ 05416C69676E07044C6566740A53697A652E57696474680500000000000000C8
+ 03400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080007544C61796F757400095374796C654E
+ 616D650609636865636B6D61726B05416C69676E0708436F6E74656E7473074F
+ 7061636974790500000000006F1283F53F0A53697A652E576964746805000000
+ 00000000C803400B53697A652E4865696768740500000000000000D003401453
+ 697A652E506C6174666F726D44656661756C7408000554506174680005416C69
+ 676E070643656E74657209446174612E506174680A5800000007000000000000
+ 0056D9524391AE2C43010000009276664365021643010000009F3983432B7C3C
+ 43010000009E9AA64382D2B442010000006F1CB04375A4D1420100000026DF82
+ 43263F67430300000056D9524391AE2C430A46696C6C2E436F6C6F720708636C
+ 6157686974650748697454657374080A53697A652E5769647468050000000000
+ 0000B002400B53697A652E4865696768740500000000000000B002401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6500000F54466C6F6174416E696D6174696F6E00084475726174696F6E
+ 050000000000CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974
+ 790A537461727456616C756505000000000000000000000953746F7056616C75
+ 65050000000000000080FF3F0754726967676572060E4973436865636B65643D
+ 747275650E54726967676572496E7665727365060F4973436865636B65643D66
+ 616C73650000000654476C79706800095374796C654E616D65060A676C797068
+ 7374796C650C4D617267696E732E4C656674050000000000000080FF3F0B4D61
+ 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
+ 68740500000000000000C000400E4D617267696E732E426F74746F6D05000000
+ 0000000080FF3F05416C69676E07044C6566740A506F736974696F6E2E580500
+ 00000000000080FF3F0A506F736974696F6E2E5905000000000000008000400A
+ 53697A652E576964746805000000000000008003400B53697A652E4865696768
+ 740500000000000000B803401453697A652E506C6174666F726D44656661756C
+ 740800000654496D61676500095374796C654E616D6506066269746D61700E4D
+ 756C74695265734269746D61700E01000005416C69676E07044C6566740C4D61
+ 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
+ 7005000000000000008000400D4D617267696E732E5269676874050000000000
+ 00008000400E4D617267696E732E426F74746F6D05000000000000008000400A
+ 506F736974696F6E2E5805000000000000008000400A506F736974696F6E2E59
+ 05000000000000008000400A53697A652E57696474680500000000000000A803
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C740800000005545465787400095374796C654E61
+ 6D6506047465787405416C69676E07044C656674064C6F636B65640907486974
+ 54657374080C4D617267696E732E4C65667405000000000000008002400D4D61
+ 7267696E732E526967687405000000000000008002400A506F736974696F6E2E
+ 5805000000000000008404400A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C615768697465165465787453657474696E67732E486F
+ 727A416C69676E07074C656164696E67000005545465787400095374796C654E
+ 616D65060873686F727463757405416C69676E07055269676874064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ C002400D4D617267696E732E52696768740500000000000000C001400A506F73
+ 6974696F6E2E580500000000000000C000C00A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C61576869746516546578745365747469
+ 6E67732E486F727A416C69676E07074C656164696E67000007544C61796F7574
+ 00095374796C654E616D6506077375626D61726B05416C69676E070552696768
+ 740A506F736974696F6E2E580500000000000000D404400A53697A652E576964
+ 74680500000000000000A003400B53697A652E48656967687405000000000000
+ 00D003401453697A652E506C6174666F726D44656661756C7408000554506174
+ 680005416C69676E070643656E74657209446174612E506174680A3400000004
+ 00000000000000000000000000000001000000000000000000803F0100000000
+ 00803F0000003F0300000000000000000000000A46696C6C2E436F6C6F720708
+ 636C615768697465064C6F636B6564090748697454657374080A53697A652E57
+ 696474680500000000000000E001400B53697A652E4865696768740500000000
+ 0000008002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000000005450463007544C61796F75740009
+ 5374796C654E616D6506126D656E75736570617261746F727374796C6505416C
+ 69676E070643656E7465720C4D617267696E732E4C6566740500000000000000
+ 80FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D61726769
+ 6E732E5269676874050000000000000080FF3F0E4D617267696E732E426F7474
+ 6F6D050000000000000080FF3F0A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 657202280005544C696E650005416C69676E0703546F70084C696E6554797065
+ 0703546F700C4D617267696E732E4C656674050000000000000080FFBF0B4D61
+ 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
+ 6874050000000000000080FFBF0A506F736974696F6E2E580500000000000000
+ 80FFBF0A506F736974696F6E2E5905000000000000008000400A53697A652E57
+ 696474680500000000000000D004400B53697A652E4865696768740500000000
+ 00000080FF3F1453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000000545046300A54526563
+ 74616E676C6500095374796C654E616D65060D6D656E75766965777374796C65
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463230
+ 323032300A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
+ 56697369626C650807585261646975730500000000000000C000400759526164
+ 6975730500000000000000C000400007544C61796F757400095374796C654E61
+ 6D650607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E57696474680500000000000000C004400B53697A652E486569676874050000
+ 0000000000C004401453697A652E506C6174666F726D44656661756C74080000
+ 0A5452656374616E676C650005416C69676E0706436C69656E740A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000D54536861646F77456666
+ 656374000844697374616E636505000000000000008001400944697265637469
+ 6F6E0500000000000000B4044008536F66746E657373050000000000000080FE
+ 3F074F706163697479050000000000000080FE3F0B536861646F77436F6C6F72
+ 0708636C61426C61636B000000005450463007544C61796F757400095374796C
+ 654E616D650610726164696F627574746F6E7374796C6505416C69676E070643
+ 656E7465720A53697A652E57696474680500000000000000F205400B53697A65
+ 2E4865696768740500000000000000A803401453697A652E506C6174666F726D
+ 44656661756C74080756697369626C6508085461624F7264657202290007544C
+ 61796F75740005416C69676E07044C6566740A53697A652E5769647468050000
+ 0000000000A803400B53697A652E4865696768740500000000000000A8034014
+ 53697A652E506C6174666F726D44656661756C7408000854456C6C6970736500
+ 095374796C654E616D65060A6261636B67726F756E6405416C69676E07064365
+ 6E7465720A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
+ 64090748697454657374080A53697A652E57696474680500000000000000F002
+ 400B53697A652E4865696768740500000000000000F002401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 313531353135000854456C6C6970736500095374796C654E616D650609636865
+ 636B6D61726B05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 09784646324138324532064C6F636B656409074869745465737408074F706163
+ 69747905000000000000000000000C4D617267696E732E4C6566740500000000
+ 0000008000400B4D617267696E732E546F7005000000000000008000400D4D61
+ 7267696E732E526967687405000000000000008000400E4D617267696E732E42
+ 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
+ 000000B002400B53697A652E4865696768740500000000000000B00240145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D
+ 65061A6F706163697479436865636B6D61726B416E696D6174696F6E31084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D650607
+ 4F7061636974790A537461727456616C75650500000000000000000000095374
+ 6F7056616C7565050000000000000080FF3F0754726967676572060E49734368
+ 65636B65643D747275650E54726967676572496E7665727365060F4973436865
+ 636B65643D66616C73650000000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D65061A726164696F627574746F6E436F6C6F72416E696D6174
+ 696F6E31084475726174696F6E050000000000000000000007496E7665727365
+ 090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463230323032300953746F7056616C7565070978464634
+ 30343034300754726967676572061049734D6F7573654F7665723D747275650E
+ 54726967676572496E7665727365061149734D6F7573654F7665723D66616C73
+ 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060C5374726F6B652E436F
+ 6C6F720A537461727456616C756507097846463135313531350953746F705661
+ 6C756507097846463241383245320754726967676572060E4973436865636B65
+ 643D747275650E54726967676572496E7665727365060F4973436865636B6564
+ 3D66616C73650000000005545465787400095374796C654E616D650604746578
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080454657874060454657874165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D650618756C63656E746572726164696F627574746F6E7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00005655FB05400B53697A652E4865696768740500000000000000A004401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F72646572022A0007544C61796F75740005416C69676E0706426F74746F6D
+ 0A506F736974696F6E2E5905000000000000008804400A53697A652E57696474
+ 680500000000005655FB05400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C7408000A5452656374
+ 616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C69
+ 676E0708436F6E74656E747307436F726E6572730B07546F704C6566740A426F
+ 74746F6D4C656674000A46696C6C2E436F6C6F72070978464632303230323006
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000C00140145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D6506216261636B67726F756E64556C427574746F6E436F6C6F72
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000749
+ 6E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463230323032300953746F7056616C7565
+ 07097846463430343034300754726967676572061049734D6F7573654F766572
+ 3D747275650E54726967676572496E7665727365061149734D6F7573654F7665
+ 723D66616C736500000A5452656374616E676C6500095374796C654E616D6506
+ 09636865636B6D61726B05416C69676E0708436F6E74656E747307436F726E65
+ 72730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C
+ 6F720709784646324138324532064C6F636B656409074869745465737408074F
+ 70616369747905000000000000000000000C4D617267696E732E4C6566740500
+ 00000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F
+ 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
+ 732E426F74746F6D050000000000000080FF3F0A53697A652E57696474680500
+ 000000005655F705400B53697A652E4865696768740500000000000000800140
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C65
+ 4E616D65061A636865636B6D61726B4F706163697479416E696D6174696F6E31
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 6506074F7061636974790A537461727456616C75650500000000000000000000
+ 0953746F7056616C7565050000000000000080FF3F0754726967676572060E49
+ 73436865636B65643D747275650E54726967676572496E7665727365060F4973
+ 436865636B65643D66616C7365000000000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
+ 48697454657374080A53697A652E57696474680500000000005655FB05400B53
+ 697A652E48656967687405000000000000008804401453697A652E506C617466
+ 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
+ 6F720708636C6157686974650000005450463007544C61796F75740009537479
+ 6C654E616D650616756C6C656674726164696F627574746F6E7374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000005655FB
+ 05400B53697A652E4865696768740500000000000000A004401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
+ 72022B0007544C61796F75740005416C69676E0706426F74746F6D0A506F7369
+ 74696F6E2E5905000000000000008804400A53697A652E576964746805000000
+ 00005655FB05400B53697A652E4865696768740500000000000000C001401453
+ 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
+ 6F6E74656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C
+ 656674000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
+ 64090748697454657374080A53697A652E57696474680500000000005655FB05
+ 400B53697A652E4865696768740500000000000000C001401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 31353135313507585261646975730500000000000000C0004007595261646975
+ 730500000000000000C00040000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D6506216261636B67726F756E64556C427574746F6E436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E050000000000000000000007
+ 496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463230323032300953746F7056616C75
+ 6507097846463430343034300754726967676572061049734D6F7573654F7665
+ 723D747275650E54726967676572496E7665727365061149734D6F7573654F76
+ 65723D66616C736500000A5452656374616E676C6500095374796C654E616D65
+ 0609636865636B6D61726B05416C69676E0708436F6E74656E747307436F726E
+ 6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F
+ 6C6F720709784646324138324532064C6F636B65640907486974546573740807
+ 4F70616369747905000000000000000000000C4D617267696E732E4C65667405
+ 0000000000000080FF3F0B4D617267696E732E546F70050000000000000080FF
+ 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0A53697A652E576964746805
+ 00000000005655F705400B53697A652E48656967687405000000000000008001
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E650758526164697573050000000000000080004007595261
+ 646975730500000000000000800040000F54466C6F6174416E696D6174696F6E
+ 00095374796C654E616D65061A636865636B6D61726B4F706163697479416E69
+ 6D6174696F6E31084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D6506074F7061636974790A537461727456616C756505000000
+ 000000000000000953746F7056616C7565050000000000000080FF3F07547269
+ 67676572060E4973436865636B65643D747275650E54726967676572496E7665
+ 727365060F4973436865636B65643D66616C7365000000000005545465787400
+ 095374796C654E616D6506047465787405416C69676E0706436C69656E74064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 5655FB05400B53697A652E48656967687405000000000000008804401453697A
+ 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C6157686974650000005450463007544C61796F
+ 757400095374796C654E616D650617756C7269676874726164696F627574746F
+ 6E7374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000005655FB05400B53697A652E4865696768740500000000000000A004
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 085461624F72646572022C0007544C61796F75740005416C69676E0706426F74
+ 746F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E57
+ 696474680500000000005655FB05400B53697A652E4865696768740500000000
+ 000000C001401453697A652E506C6174666F726D44656661756C7408000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0708436F6E74656E747307436F726E6572730B08546F7052696768
+ 740B426F74746F6D5269676874000A46696C6C2E436F6C6F7207097846463230
+ 32303230064C6F636B6564090748697454657374080A53697A652E5769647468
+ 0500000000005655FB05400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F72070978464631353135313507585261646975730500000000000000
+ C0004007595261646975730500000000000000C00040000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D6506216261636B67726F756E64556C
+ 427574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
+ 00000000000000000007496E7665727365090C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
+ 300953746F7056616C7565070978464634303430343007547269676765720610
+ 49734D6F7573654F7665723D747275650E54726967676572496E766572736506
+ 1149734D6F7573654F7665723D66616C736500000A5452656374616E676C6500
+ 095374796C654E616D650609636865636B6D61726B05416C69676E0708436F6E
+ 74656E747307436F726E6572730B08546F7052696768740B426F74746F6D5269
+ 676874000A46696C6C2E436F6C6F720709784646324138324532064C6F636B65
+ 6409074869745465737408074F70616369747905000000000000000000000C4D
+ 617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E54
+ 6F70050000000000000080FF3F0D4D617267696E732E52696768740500000000
+ 00000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F
+ 0A53697A652E57696474680500000000005655F705400B53697A652E48656967
+ 687405000000000000008001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
+ 000000000080004007595261646975730500000000000000800040000F54466C
+ 6F6174416E696D6174696F6E00095374796C654E616D65061A636865636B6D61
+ 726B4F706163697479416E696D6174696F6E31084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D6506074F7061636974790A5374
+ 61727456616C756505000000000000000000000953746F7056616C7565050000
+ 000000000080FF3F0754726967676572060E4973436865636B65643D74727565
+ 0E54726967676572496E7665727365060F4973436865636B65643D66616C7365
+ 000000000005545465787400095374796C654E616D6506047465787405416C69
+ 676E0706436C69656E74064C6F636B6564090748697454657374080A53697A65
+ 2E57696474680500000000005655FB05400B53697A652E486569676874050000
+ 00000000008804401453697A652E506C6174666F726D44656661756C74080454
+ 657874060454657874165465787453657474696E67732E466F6E74436F6C6F72
+ 0708636C6157686974650000005450463007544C61796F757400095374796C65
+ 4E616D65061470726F67726573736261726D696E697374796C6505416C69676E
+ 070643656E7465720A53697A652E576964746805000000000033338505400B53
+ 697A652E4865696768740500000000009999E104401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508085461624F72646572022E00
+ 0A5452656374616E676C6500095374796C654E616D65060668747261636B0541
+ 6C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463430
+ 34303430064C6F636B6564090748697454657374080A53697A652E5769647468
+ 05000000000033338505400B53697A652E4865696768740500000000009999E1
+ 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6507585261646975730500000000000000800040075952
+ 61646975730500000000000000800040000A5452656374616E676C6500095374
+ 796C654E616D65060A68696E64696361746F7205416C69676E07044C6566740A
+ 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000009999E104401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164
+ 6975730500000000000000800040075952616469757305000000000000008000
+ 400000000A5452656374616E676C6500095374796C654E616D65060676747261
+ 636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978
+ 4646343034303430064C6F636B6564090748697454657374080A53697A652E57
+ 6964746805000000000033338505400B53697A652E4865696768740500000000
+ 009999E104401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65075852616469757305000000000000008000
+ 4007595261646975730500000000000000800040000A5452656374616E676C65
+ 00095374796C654E616D65060A76696E64696361746F7205416C69676E070642
+ 6F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F636B
+ 6564090748697454657374080A506F736974696F6E2E5905000000000099998D
+ 04400A53697A652E576964746805000000000033338505400B53697A652E4865
+ 696768740500000000000000A803401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
+ 0000000000000080004007595261646975730500000000000000800040000000
+ 005450463007544C61796F757400095374796C654E616D65060E636F6D626F65
+ 6469747374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F726465720230000C5442727573684F626A6563740009537479
+ 6C654E616D65060A666F726567726F756E6400000B54466F6E744F626A656374
+ 00095374796C654E616D650604666F6E7409466F6E742E53697A650500000000
+ 000000D00240000007544C61796F757400095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C803401453697A652E506C6174666F726D44656661756C7408000A54526563
+ 74616E676C6500095374796C654E616D65060A52656374616E676C653105416C
+ 69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230323032
+ 300748697454657374080A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464632
+ 303230323007585261646975730500000000000000C000400759526164697573
+ 0500000000000000C00040000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65084475
+ 726174696F6E050000000000000000000007496E7665727365090C50726F7065
+ 7274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646343034303430
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973466F63
+ 757365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973466F63757365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E325374796C65084475726174696F6E0500000000000000
+ 00000007496E7665727365090C50726F70657274794E616D65060C5374726F6B
+ 652E436F6C6F720A537461727456616C75650709784646343034303430095374
+ 6F7056616C756507097846463241383245320754726967676572061F49734D6F
+ 7573654F7665723D747275653B4973466F63757365643D747275650E54726967
+ 676572496E7665727365062049734D6F7573654F7665723D747275653B497346
+ 6F63757365643D66616C7365000007544C61796F757400095374796C654E616D
+ 6506056172726F7705416C69676E070846697452696768740B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 000000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080
+ FF3F0A506F736974696F6E2E580500000000005ED99705400A506F736974696F
+ 6E2E59050000000000000080FF3F0A53697A652E576964746805000000000088
+ 9AB803400B53697A652E4865696768740500000000000000B803401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A52656374616E676C653105416C69676E0708436F6E74
+ 656E747307436F726E6572730B08546F7052696768740B426F74746F6D526967
+ 6874000A46696C6C2E436F6C6F72070978464633303330333007486974546573
+ 74080A53697A652E5769647468050000000000889AB803400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
+ 00000000000000C0004007595261646975730500000000000000C00040000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E315374796C65084475726174696F6E0500000000000000
+ 00000007496E7665727365090C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463330333033300953746F70
+ 56616C756507097846463430343034300754726967676572062049734D6F7573
+ 654F7665723D747275653B4973466F63757365643D66616C73650E5472696767
+ 6572496E7665727365062149734D6F7573654F7665723D66616C73653B497346
+ 6F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C6508
+ 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978464634303430
+ 34300953746F7056616C75650709784646313735373943075472696767657206
+ 1F4973466F63757365643D747275653B49734D6F7573654F7665723D74727565
+ 00000007544C61796F757400095374796C654E616D6506074C61796F75743105
+ 416C69676E070643656E7465720C4D617267696E732E4C656674050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000A002400B53697A65
+ 2E4865696768740500000000000000C001401453697A652E506C6174666F726D
+ 44656661756C74080005545061746800095374796C654E616D65060550617468
+ 3105416C69676E0706436C69656E7409446174612E506174680A340000000400
+ 0000000000000000C8420000C84201000000000096430000C842010000000000
+ 484300009643030000000000C8420000C8420A46696C6C2E436F6C6F72070863
+ 6C6157686974650748697454657374080A53697A652E57696474680500000000
+ 000000A002400B53697A652E4865696768740500000000000000C00140145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000000000000C5442727573684F626A65637400095374796C654E
+ 616D65060973656C656374696F6E0B42727573682E436F6C6F72070978393632
+ 4138324532000007544C61796F757400095374796C654E616D650607636F6E74
+ 656E7405416C69676E0706436C69656E740C4D617267696E732E4C6566740500
+ 0000000000008000400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E52696768740500000000000000F003400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
+ 0000000000008805400B53697A652E4865696768740500000000000000A80340
+ 1453697A652E506C6174666F726D44656661756C74080000005450463007544C
+ 61796F757400095374796C654E616D650613657870616E646572627574746F6E
+ 7374796C6505416C69676E070643656E7465720B4D617267696E732E546F7005
+ 0000000000000080FF3F0A53697A652E57696474680500000000000000B00340
+ 0B53697A652E4865696768740500000000000000B003401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508085461624F7264657202
+ 330005545061746800095374796C654E616D650605506174683105416C69676E
+ 070643656E74657209446174612E506174680A34000000040000000000000000
+ 00C8420000C84201000000000096430000C84201000000000048430000964303
+ 0000000000C8420000C8420A46696C6C2E436F6C6F720708636C615768697465
+ 0748697454657374080D526F746174696F6E416E676C650500000000000000B4
+ 05400A53697A652E57696474680500000000000000A002400B53697A652E4865
+ 696768740500000000000000C001401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F617441
+ 6E696D6174696F6E00095374796C654E616D650614466C6F6174416E696D6174
+ 696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F0D496E
+ 746572706F6C6174696F6E070843697263756C61720C50726F70657274794E61
+ 6D65060D526F746174696F6E416E676C650A537461727456616C756505000000
+ 00000000B405400953746F7056616C7565050000000000000000000007547269
+ 67676572060F4973457870616E6465643D747275650E54726967676572496E76
+ 6572736506104973457870616E6465643D66616C736500000000545046300754
+ 4C61796F757400095374796C654E616D650615657870616E646572636865636B
+ 626F787374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 6805000000000000008406400B53697A652E4865696768740500000000000000
+ 8404401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F7264657202360007544C61796F75740005416C69676E07044C
+ 6566740A53697A652E57696474680500000000000000C003400B53697A652E48
+ 656967687405000000000000008404401453697A652E506C6174666F726D4465
+ 6661756C7408000554506174680005416C69676E0706436C69656E7409446174
+ 612E506174680AD80100002700000000000000FEC8BA4402E792440200000025
+ 92AD4402E79244020000006D5BA544FEB09E44020000006D5BA544FEB09E4402
+ 00000093A4A4446A0C9F44020000004A80AC44FC79AA4402000000046EBA44FC
+ 79AA44020000004A00C844FC79AA44020000000080CF44FEB09E440200000000
+ 80CF44FEB09E44020000000080CF44FEB09E44020000004C5BC84402E7924402
+ 000000FEC8BA4402E7924400000000FE88BA44FE30974402000000B876BF44FE
+ 309744020000000277C344EEA09A44020000000277C34404DE9E440200000002
+ 77C344121BA34402000000B876BF44008CA64402000000FE88BA44008CA64402
+ 0000004C9BB544008CA64402000000009CB144121BA34402000000009CB14404
+ DE9E4402000000009CB144EEA09A44020000004C9BB544FE30974402000000FE
+ 88BA44FE309744000000000080BA44045E9B4402000000146EB844045E9B4402
+ 00000000C0B64454F79C440200000000C0B64400F09E440200000000C0B644AC
+ E8A04402000000146EB844FC81A244020000000080BA44FC81A24402000000EC
+ 91BC44FC81A244020000000040BE44ACE8A044020000000040BE4400F09E4402
+ 0000000040BE4454F79C4402000000EC91BC44045E9B44020000000080BA4404
+ 5E9B440A46696C6C2E436F6C6F72070978363030303030303007486974546573
+ 74080C4D617267696E732E4C65667405000000000000008000400B4D61726769
+ 6E732E546F7005000000000000008000400D4D617267696E732E526967687405
+ 000000000000008000400E4D617267696E732E426F74746F6D05000000000000
+ 008000400A53697A652E57696474680500000000000000A003400B53697A652E
+ 4865696768740500000000000000E803401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F
+ 64650703466974000F54436F6C6F72416E696D6174696F6E0008447572617469
+ 6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097836303030303030300953746F
+ 7056616C75650708636C61426C61636B0754726967676572060E497343686563
+ 6B65643D7472756500000F54436F6C6F72416E696D6174696F6E000844757261
+ 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C75650708636C61426C61636B095374
+ 6F7056616C756507097836303030303030300754726967676572060F49734368
+ 65636B65643D66616C73650000000005545465787400095374796C654E616D65
+ 06047465787405416C69676E0706436C69656E74064C6F636B65640907486974
+ 54657374080C4D617267696E732E4C65667405000000000000008002400B4D61
+ 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
+ 6874050000000000000080FF3F0A53697A652E57696474680500000000000000
+ C605400B53697A652E4865696768740500000000000000F803401453697A652E
+ 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
+ 6E74436F6C6F720709784646454545454545165465787453657474696E67732E
+ 486F727A416C69676E07074C656164696E670000005450463007544C61796F75
+ 7400095374796C654E616D65060D657870616E6465727374796C6505416C6967
+ 6E070643656E7465720A53697A652E576964746805000000000000C08607400B
+ 53697A652E4865696768740500000000000000CE05401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508085461624F726465720239
+ 000A5452656374616E676C6500095374796C654E616D65060B62677265637461
+ 6E676C6505416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646324432443244064C6F636B6564090748697454657374080A53697A65
+ 2E576964746805000000000000C08607400B53697A652E486569676874050000
+ 0000000000CE05401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F72070978464631353135313507585261646975730500
+ 000000000000C0004007595261646975730500000000000000C000400007544C
+ 61796F757400095374796C654E616D6506074C61796F75743305416C69676E07
+ 03546F700A53697A652E576964746805000000000000C08607400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080007544C61796F757400095374796C654E616D6506074C6179
+ 6F75743405416C69676E0708436F6E74656E74730A53697A652E576964746805
+ 000000000000C08607400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C7408000A5452656374616E
+ 676C6500095374796C654E616D65060A52656374616E676C653205416C69676E
+ 0708436F6E74656E747307436F726E6572730B07546F704C65667408546F7052
+ 69676874000A46696C6C2E436F6C6F720709784646323532353235064C6F636B
+ 6564090748697454657374080A53697A652E576964746805000000000000C086
+ 07400B53697A652E4865696768740500000000000000C803401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 4631353135313507585261646975730500000000000000C00040075952616469
+ 75730500000000000000C0004000000A5452656374616E676C6500095374796C
+ 654E616D65060A52656374616E676C653105416C69676E0708436F6E74656E74
+ 7307436F726E6572730B07546F704C65667408546F705269676874000A46696C
+ 6C2E436F6C6F720709784646313531353135064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000000C08607400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573
+ 0500000000000000C0004007595261646975730500000000000000C00040000F
+ 54466C6F6174416E696D6174696F6E00095374796C654E616D650614466C6F61
+ 74416E696D6174696F6E315374796C65084475726174696F6E050000000000CD
+ CCCCFB3F0D496E746572706F6C6174696F6E070843697263756C61720C50726F
+ 70657274794E616D6506075363616C652E580A537461727456616C7565050000
+ 000000000080FF3F0953746F7056616C75650500000000000000000000075472
+ 6967676572060F4973457870616E6465643D747275650E54726967676572496E
+ 766572736506104973457870616E6465643D66616C73650000000007544C6179
+ 6F757400095374796C654E616D6506074C61796F75743305416C69676E070843
+ 6F6E74656E74730A53697A652E576964746805000000000000C08607400B5369
+ 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
+ 726D44656661756C74080005545465787400095374796C654E616D6506047465
+ 787405416C69676E07044C656674084175746F53697A65090A436C6970506172
+ 656E7409064C6F636B6564090748697454657374080C4D617267696E732E4C65
+ 66740500000000000000A002400A506F736974696F6E2E580500000000000000
+ A002400A53697A652E576964746805000000000000B8C703400B53697A652E48
+ 65696768740500000000000060FF02401453697A652E506C6174666F726D4465
+ 6661756C74080454657874060454657874165465787453657474696E67732E46
+ 6F6E74436F6C6F720708636C615768697465165465787453657474696E67732E
+ 486F727A416C69676E07074C656164696E670000000F54457870616E64657242
+ 7574746F6E00095374796C654E616D650606627574746F6E05416C69676E0705
+ 5269676874064C6F636B6564090A506F736974696F6E2E580500000000000080
+ F906400A53697A652E57696474680500000000000000A003400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C740800000000005450463007544C61796F757400095374796C654E61
+ 6D650615616E69696E64696361746F72686F727A7374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000040C006400B5369
+ 7A652E48656967687405000000000000008000401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F72646572023B000A
+ 5452656374616E676C6500095374796C654E616D65060A52656374616E676C65
+ 3105416C69676E0706436C69656E740C436C69704368696C6472656E090A4669
+ 6C6C2E436F6C6F7207097846463430343034300A53697A652E57696474680500
+ 000000000040C006400B53697A652E4865696768740500000000000000800040
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E650758526164697573050000000000000080FF3F0759526164
+ 697573050000000000000080FF3F0005544C696E6500095374796C654E616D65
+ 06054C696E6531084C696E65547970650706426F74746F6D0A53697A652E5769
+ 6474680500000000000000A00B400B53697A652E486569676874050000000000
+ 00008000401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F720709784646324138324532105374726F6B652E546869636B
+ 6E65737305000000000000008002400A5374726F6B652E4361700705526F756E
+ 640B5374726F6B652E446173680704446173680B5374726F6B652E4A6F696E07
+ 05526F756E64000F54466C6F6174416E696D6174696F6E00095374796C654E61
+ 6D650603616E6907456E61626C656409084475726174696F6E05000000000000
+ 00800340044C6F6F70090C50726F70657274794E616D65060A506F736974696F
+ 6E2E580A537461727456616C75650500000000000000C808C00953746F705661
+ 6C756505000000000000000000000754726967676572060E497356697369626C
+ 653D7472756500000000005450463007544C61796F757400095374796C654E61
+ 6D650611616E69696E64696361746F727374796C6505416C69676E070643656E
+ 7465720756697369626C6508085461624F72646572023C000454417263000953
+ 74796C654E616D65060341726305416C69676E0708436F6E74656E7473074869
+ 7454657374080D526F746174696F6E416E676C650500000000000000B407400A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720708636C615768697465105374726F6B65
+ 2E546869636B6E65737305000000000000008001400A5374726F6B652E436170
+ 0705526F756E6408456E64416E676C650500000000000000B405C0000F54466C
+ 6F6174416E696D6174696F6E00095374796C654E616D650603616E6907456E61
+ 626C656409084475726174696F6E050000000000000080FF3F044C6F6F70090C
+ 50726F70657274794E616D65060D526F746174696F6E416E676C650A53746172
+ 7456616C756505000000000000000000000953746F7056616C75650500000000
+ 000000B407400754726967676572060E497356697369626C653D747275650000
+ 00005450463007544C61796F757400095374796C654E616D65060A70616E656C
+ 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
+ 000000000000C006400B53697A652E4865696768740500000000000000A40640
+ 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
+ 5461624F72646572023D000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F7207097846463230323032300A53697A652E57696474680500
+ 000000000000C006400B53697A652E4865696768740500000000000000A40640
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E6507585261646975730500000000000000C000400759526164
+ 6975730500000000000000C000400000005450463007544C61796F7574000953
+ 74796C654E616D65061970726F67726573736261726D696E696572726F727374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 000033338505400B53697A652E4865696768740500000000009999E104401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F72646572023E000A5452656374616E676C6500095374796C654E616D6506
+ 0668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646343034303430064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500000000
+ 00000080004007595261646975730500000000000000800040000A5452656374
+ 616E676C6500095374796C654E616D65060A68696E64696361746F7205416C69
+ 676E07044C6566740A46696C6C2E436F6C6F720709784646453232413241064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000009999E104401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6507585261646975730500000000000000800040075952616469757305
+ 000000000000008000400000000A5452656374616E676C6500095374796C654E
+ 616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C
+ 2E436F6C6F720709784646343034303430064C6F636B65640907486974546573
+ 74080A53697A652E576964746805000000000033338505400B53697A652E4865
+ 696768740500000000009999E104401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
+ 0000000000000080004007595261646975730500000000000000800040000A54
+ 52656374616E676C6500095374796C654E616D65060A76696E64696361746F72
+ 05416C69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846464532
+ 32413241064C6F636B6564090748697454657374080A506F736974696F6E2E59
+ 05000000000099998D04400A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000000000A803401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0758526164697573050000000000000080004007595261646975730500000000
+ 000000800040000000005450463007544C61796F757400095374796C654E616D
+ 65060E6C6F67627574746F6E7374796C6505416C69676E070643656E7465720A
+ 53697A652E57696474680500000000000000C005400B53697A652E4865696768
+ 740500000000000000C005401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C6508085461624F726465720202000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 06436C69656E740C436C69704368696C6472656E090A436C6970506172656E74
+ 0907436F726E6572730B08546F7052696768740B426F74746F6D526967687400
+ 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
+ 53697A652E57696474680500000000000000C005400B53697A652E4865696768
+ 740500000000000000C005401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305000000
+ 00000000C0004007595261646975730500000000000000C00040000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463230323032300953746F7056616C7565070978464634
+ 30343034300754726967676572063049734D6F7573654F7665723D747275653B
+ 4973507265737365643D66616C73653B4973466F63757365643D66616C73650E
+ 54726967676572496E7665727365063149734D6F7573654F7665723D66616C73
+ 653B4973507265737365643D66616C73653B4973466F63757365643D66616C73
+ 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615
+ 627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E0500
+ 0000000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463430343034300953746F7056616C
+ 756507097846463137353739430754726967676572062F497350726573736564
+ 3D747275653B49734D6F7573654F7665723D747275653B4973466F6375736564
+ 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650615627574746F6E436F6C6F72416E696D6174696F6E33084475726174
+ 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646324138324532095374
+ 6F7056616C756507097846463137353739430754726967676572062E49735072
+ 65737365643D747275653B49734D6F7573654F7665723D747275653B4973466F
+ 63757365643D747275650E54726967676572496E7665727365062F4973507265
+ 737365643D66616C73653B49734D6F7573654F7665723D747275653B4973466F
+ 63757365643D74727565000005545061746800095374796C654E616D65060550
+ 6174683105416C69676E0706436C69656E7409446174612E506174680A5C0200
+ 0032000000000000000000A841CDCCCC40010000000000A8410000C041010000
+ 000000C03F0000C041010000000000C03F00000000010000009A996941000000
+ 00010000000000A841CDCCCC40030000000000A841CDCCCC400000000000009C
+ 410000F04001000000000058410000F04001000000000058410000C03F010000
+ 00000040400000C03F01000000000040400000B4410100000000009C410000B4
+ 410100000000009C410000F0400300000000009C410000F04000000000000040
+ 410000F04001000000000090400000F04001000000000090400000C040010000
+ 00000040410000C04001000000000040410000F04003000000000040410000F0
+ 4000000000000090400000104101000000000090410000104101000000000090
+ 4100002841010000000000904000002841010000000000904000001041030000
+ 0000009040000010410000000000009040000040410100000000009041000040
+ 4101000000000090410000584101000000000090400000584101000000000090
+ 4000004041030000000000904000004041000000000000904000007041010000
+ 0000009041000070410100000000009041000084410100000000009040000084
+ 4101000000000090400000704103000000000090400000704100000000000090
+ 4000009041010000000000904100009041010000000000904100009C41010000
+ 000000904000009C410100000000009040000090410300000000009040000090
+ 4100000000000070410000C04001000000333393410000C04001000000000070
+ 416666264001000000000070410000C04003000000000070410000C0400A4669
+ 6C6C2E436F6C6F720708636C6157686974650748697454657374080C4D617267
+ 696E732E4C6566740500000000000000A002400B4D617267696E732E546F7005
+ 00000000000000A002400D4D617267696E732E52696768740500000000000000
+ A002400E4D617267696E732E426F74746F6D0500000000000000A002400A5369
+ 7A652E576964746805000000000000009805400B53697A652E48656967687405
+ 000000000000009805401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64650703466974
+ 000000005450463007544C61796F757400095374796C654E616D65061B747265
+ 6576696577657870616E646572627574746F6E7374796C6505416C69676E0706
+ 43656E7465720B4D617267696E732E546F70050000000000000080FF3F0A5369
+ 7A652E57696474680500000000000000B003400B53697A652E48656967687405
+ 00000000000000B003401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508085461624F726465720241000554506174680009537479
+ 6C654E616D650605506174683105416C69676E070643656E7465720944617461
+ 2E506174680A3400000004000000000000000000C8420000C842010000000000
+ 96430000C842010000000000484300009643030000000000C8420000C8420A46
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080D526F74
+ 6174696F6E416E676C650500000000000000B405C00A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0009537479
+ 6C654E616D650614466C6F6174416E696D6174696F6E315374796C6508447572
+ 6174696F6E05000000000000000000000D496E746572706F6C6174696F6E0708
+ 43697263756C61720C50726F70657274794E616D65060D526F746174696F6E41
+ 6E676C650A537461727456616C75650500000000000000B405C00953746F7056
+ 616C756505000000000000000000000754726967676572060F4973457870616E
+ 6465643D747275650E54726967676572496E766572736506104973457870616E
+ 6465643D66616C7365000000005450463007544C61796F757400095374796C65
+ 4E616D65060D74726565766965777374796C6505416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000E106400B53697A652E486569
+ 67687405000000000000808107401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508085461624F726465720242000C544272757368
+ 4F626A65637400095374796C654E616D650618416C7465726E6174696E67526F
+ 774261636B67726F756E640B42727573682E436F6C6F72070978304646464646
+ 464600000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 720709784646323032303230064C6F636B6564090748697454657374080C5061
+ 6464696E672E4C656674050000000000000080FF3F0D50616464696E672E5269
+ 676874050000000000000080FF3F0A53697A652E576964746805000000000000
+ 00E106400B53697A652E48656967687405000000000000808107401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 7846463135313531350007544C61796F757400095374796C654E616D65060763
+ 6F6E74656E7405416C69676E0706436C69656E740C436C69704368696C647265
+ 6E090B4D617267696E732E546F70050000000000000080FF3F0A53697A652E57
+ 696474680500000000000000CD06400B53697A652E4865696768740500000000
+ 000000F006401453697A652E506C6174666F726D44656661756C7408000A5452
+ 656374616E676C6500095374796C654E616D65060973656C656374696F6E0A46
+ 696C6C2E436F6C6F7207097846463241383245320748697454657374080A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650758526164697573050000000000
+ 0000C0004007595261646975730500000000000000C0004000000A5452656374
+ 616E676C6500095374796C654E616D650610666F637573656473656C65637469
+ 6F6E0A46696C6C2E436F6C6F7207097846463241383245320748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650B5374726F6B652E4461
+ 73680703446F7407585261646975730500000000000000C00040075952616469
+ 75730500000000000000C000400000000A545363726F6C6C4261720009537479
+ 6C654E616D65060A767363726F6C6C62617205416C69676E070552696768740B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0C4D617267696E732E4C65667405000000000000
+ 008000400A506F736974696F6E2E580500000000000000D006400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00000000F106401453697A652E506C6174666F726D44656661756C740800000A
+ 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
+ 7205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D
+ 617267696E732E546F7005000000000000008000400A506F736974696F6E2E58
+ 050000000000000080FF3F0A506F736974696F6E2E590500000000000000F306
+ 400A53697A652E57696474680500000000000000DF06400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C740800000F54536D616C6C5363726F6C6C42617200095374796C654E616D
+ 65060F76736D616C6C7363726F6C6C62617205416C69676E070552696768740B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0C4D617267696E732E4C65667405000000000000
+ 008000400A506F736974696F6E2E580500000000000000C605400A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 0000008002400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800000F54
+ 536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C
+ 6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A50
+ 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
+ 00000000000000E205400A53697A652E57696474680500000000000000960640
+ 0B53697A652E48656967687405000000000000008002401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C650800000000545046300A54
+ 52656374616E676C6500095374796C654E616D65061174726565766965776974
+ 656D7374796C6505416C69676E070643656E7465720946696C6C2E4B696E6407
+ 044E6F6E650748697454657374080553696465730B06426F74746F6D000A5369
+ 7A652E57696474680500000000000000AE05400B53697A652E48656967687405
+ 00000000000000A004401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F7207097846463135313531350B5374726F6B652E
+ 4A6F696E0705526F756E640756697369626C6508000C54537065656442757474
+ 6F6E00095374796C654E616D650606627574746F6E05416C69676E07044C6566
+ 740A53697A652E57696474680500000000000000A003400B53697A652E486569
+ 6768740500000000000000A004401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B7570061B7472656576696577657870616E64
+ 6572627574746F6E7374796C65000007544C61796F75740005416C69676E0708
+ 436F6E74656E74730C4D617267696E732E4C6566740500000000000000A00340
+ 0A53697A652E576964746805000000000000008605400B53697A652E48656967
+ 68740500000000000000A004401453697A652E506C6174666F726D4465666175
+ 6C7408000954436865636B426F7800095374796C654E616D650605636865636B
+ 05416C69676E07044C6566740843616E466F637573081244697361626C65466F
+ 637573456666656374090A53697A652E57696474680500000000000000A00340
+ 0B53697A652E4865696768740500000000000000A004401453697A652E506C61
+ 74666F726D44656661756C740800000654476C79706800095374796C654E616D
+ 65060A676C7970687374796C650C4D617267696E732E4C656674050000000000
+ 00008000400B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E526967687405000000000000008000400E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F05416C69676E07044C6566740A506F7369
+ 74696F6E2E580500000000000000B003400A506F736974696F6E2E5905000000
+ 0000000080FF3F0A53697A652E576964746805000000000000008003400B5369
+ 7A652E48656967687405000000000000009804401453697A652E506C6174666F
+ 726D44656661756C7408000005545465787400095374796C654E616D65060474
+ 65787405416C69676E0706436C69656E74064C6F636B65640907486974546573
+ 74080A53697A652E57696474680500000000000000BC04400B53697A652E4865
+ 696768740500000000000000A004401453697A652E506C6174666F726D446566
+ 61756C74080454657874060454657874165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465155465787453657474696E67732E57
+ 6F72645772617008165465787453657474696E67732E486F727A416C69676E07
+ 074C656164696E670000000A5452656374616E676C650005416C69676E070843
+ 6F6E74656E74730946696C6C2E4B696E6407044E6F6E65074869745465737408
+ 0E4D617267696E732E426F74746F6D050000000000000080FF3F055369646573
+ 0B044C656674000A53697A652E57696474680500000000000000AE05400B5369
+ 7A652E48656967687405000000000000009C04401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464632413832
+ 4532105374726F6B652E546869636B6E65737305000000000000008000400000
+ 005450463007544C61796F757400095374796C654E616D65061670726F677265
+ 737362617266696E6973687374796C6505416C69676E070643656E7465720A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508085461624F72646572023F000A5452656374616E676C
+ 6500095374796C654E616D65060668747261636B05416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
+ 64090748697454657374080A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000009999E104401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 31353135313507585261646975730500000000000000C0004007595261646975
+ 730500000000000000C00040000A5452656374616E676C6500095374796C654E
+ 616D65060A68696E64696361746F7205416C69676E07044C6566740A46696C6C
+ 2E436F6C6F720709784646324345323434064C6F636B65640907486974546573
+ 74080C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F736974
+ 696F6E2E59050000000000000080FF3F0A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000009999D90440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E6507585261646975730500000000000000C000400759526164697573
+ 0500000000000000C000400000000A5452656374616E676C6500095374796C65
+ 4E616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350758
+ 5261646975730500000000000000C00040075952616469757305000000000000
+ 00C00040000A5452656374616E676C6500095374796C654E616D65060A76696E
+ 64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72
+ 0709784646324345323434064C6F636B6564090748697454657374080C4D6172
+ 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
+ 050000000000000080FF3F0D4D617267696E732E526967687405000000000000
+ 0080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A50
+ 6F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E5905
+ 000000000099998904400A53697A652E57696474680500000000003333810540
+ 0B53697A652E4865696768740500000000000000A803401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
+ 585261646975730500000000000000C000400759526164697573050000000000
+ 0000C00040000000005450463007544C61796F757400095374796C654E616D65
+ 061A70726F67726573736261726D696E6966696E6973687374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000003333850540
+ 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508085461624F7264657202
+ 4A000A5452656374616E676C6500095374796C654E616D65060668747261636B
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 343034303430064C6F636B6564090748697454657374080A53697A652E576964
+ 746805000000000033338505400B53697A652E48656967687405000000000099
+ 99E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E650758526164697573050000000000000080004007
+ 595261646975730500000000000000800040000A5452656374616E676C650009
+ 5374796C654E616D65060A68696E64696361746F7205416C69676E07044C6566
+ 740A46696C6C2E436F6C6F720709784646324345323434064C6F636B65640907
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000009999E104401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852
+ 6164697573050000000000000080004007595261646975730500000000000000
+ 8000400000000A5452656374616E676C6500095374796C654E616D6506067674
+ 7261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646343034303430064C6F636B6564090748697454657374080A53697A65
+ 2E576964746805000000000033338505400B53697A652E486569676874050000
+ 0000009999E104401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
+ 80004007595261646975730500000000000000800040000A5452656374616E67
+ 6C6500095374796C654E616D65060A76696E64696361746F7205416C69676E07
+ 06426F74746F6D0A46696C6C2E436F6C6F720709784646324345323434064C6F
+ 636B6564090748697454657374080A506F736974696F6E2E5905000000000099
+ 998D04400A53697A652E576964746805000000000033338505400B53697A652E
+ 4865696768740500000000000000A803401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975
+ 7305000000000000008000400759526164697573050000000000000080004000
+ 0000005450463007544C61796F757400095374796C654E616D6506136172726F
+ 77646F776E746F6F6C627574746F6E05416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000C805400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508085461624F726465720201000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070643
+ 6C69656E740C436C69704368696C6472656E090A436C6970506172656E740907
+ 436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C
+ 6C2E436F6C6F7207097830303230323032300748697454657374080A53697A65
+ 2E57696474680500000000000000C805400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
+ C0004007595261646975730500000000000000C00040000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
+ 6E696D6174696F6E31084475726174696F6E05000000000000000000000C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097830303230323032300953746F7056616C756507097846463430343034
+ 300754726967676572063049734D6F7573654F7665723D747275653B49735072
+ 65737365643D66616C73653B4973466F63757365643D66616C73650E54726967
+ 676572496E7665727365063149734D6F7573654F7665723D66616C73653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E32084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463430343034300953746F7056616C75650709
+ 7846463137353739430754726967676572062F4973507265737365643D747275
+ 653B49734D6F7573654F7665723D747275653B4973466F63757365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463241383245320953746F705661
+ 6C756507097846463137353739430754726967676572062E4973507265737365
+ 643D747275653B49734D6F7573654F7665723D747275653B4973466F63757365
+ 643D747275650E54726967676572496E7665727365062F497350726573736564
+ 3D66616C73653B49734D6F7573654F7665723D747275653B4973466F63757365
+ 643D7472756500000005545061746800095374796C654E616D65060470617468
05416C69676E070643656E74657209446174612E506174680A34000000040000
- 0000000000000000000000000001000000000000000000803F01000000000080
- 3F0000003F0300000000000000000000000A46696C6C2E436F6C6F720708636C
- 615768697465064C6F636B6564090748697454657374080A53697A652E576964
- 74680500000000000000E001400B53697A652E48656967687405000000000000
- 008002401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E6500000000545046300A5452656374616E676C6500
- 095374796C654E616D65060C6D656E756261727374796C6505416C69676E0706
- 43656E7465720C436C69704368696C6472656E090946696C6C2E4B696E640704
- 4E6F6E650748697454657374080A53697A652E57696474680500000000000000
- C804400B53697A652E4865696768740500000000000000C804401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E650756697369626C6508000A5452656374616E676C650005416C69676E0706
- 436C69656E740A46696C6C2E436F6C6F72070978464632303230323007486974
- 54657374080C4D617267696E732E4C656674050000000000000080FFBF0B4D61
- 7267696E732E546F70050000000000000080FFBF0D4D617267696E732E526967
- 6874050000000000000080FFBF0A53697A652E57696474680500000000000000
- D004400B53697A652E4865696768740500000000000000CC04401453697A652E
- 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
- 4646313531353135000007544C61796F757400095374796C654E616D65060763
- 6F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E4C6566
- 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
- 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
- 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
- 680500000000000000C004400B53697A652E4865696768740500000000000000
- C004401453697A652E506C6174666F726D44656661756C740800000054504630
- 07544C61796F757400095374796C654E616D65060D6D656E756974656D737479
- 6C6505416C69676E070643656E7465720C4D617267696E732E4C656674050000
- 000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D
- 4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E73
- 2E426F74746F6D050000000000000080FF3F0A53697A652E5769647468050000
- 00000000009205400B53697A652E4865696768740500000000000000D0034014
+ 00000000000000C8420000C84201000000000096430000C84201000000000048
+ 4300009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C
+ 6157686974650748697454657374080A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E65000005545465787400095374796C654E616D6506047465787405416C
+ 69676E0706436C69656E740748697454657374080A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C7408045465787406045465
+ 7874165465787453657474696E67732E466F6E74436F6C6F720708636C615768
+ 6974650756697369626C6508000000}
+ end>
+ Left = 64
+ Top = 144
+ end
+ object AERModernAnimatedStyle: TStyleBook
+ StyleName = 'AER Modern Smooth Style'
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
+ AF00060B627574746F6E7374796C6503C5040609656469747374796C6503AC05
+ 060A6C6162656C7374796C65032001060D67726F7570626F787374796C65038E
+ 02060D747261636B6261727374796C65038C07060D636865636B626F78737479
+ 6C65039E0506147363726F6C6C62617268747261636B7374796C65033B010614
+ 7363726F6C6C62617276747261636B7374796C65033B0106157363726F6C6C62
+ 6172626F74746F6D627574746F6E032D0406137363726F6C6C6261726C656674
+ 627574746F6E03440406147363726F6C6C6261727269676874627574746F6E03
+ 450406127363726F6C6C626172746F70627574746F6E034304060E7363726F6C
+ 6C6261727374796C65036304060A7468756D627374796C65034402060B737769
+ 7463687374796C6503DC01060C7370696E626F787374796C65035F07060F7461
+ 62636F6E74726F6C7374796C6503A701060B746162646F747374796C65035901
+ 060C7461626974656D7374796C6503EF04060D7468756D626261727374796C65
+ 034F03060C6C697374626F787374796C6503AD07060D6C697374626F78666F6F
+ 746572038B0106106C697374626F786974656D7374796C6503260306126C6973
+ 74626F78706C61696E6865616465720346020609677269647374796C65038708
+ 060F6865616465726974656D7374796C6503CE03061070726F67726573736261
+ 727374796C65036A04061170726F677265737363656C6C7374796C6503A50206
+ 106D656E756261726974656D7374796C6503300B060C6D656E75626172737479
+ 6C65036C02060D6D656E756974656D7374796C65035D0B06126D656E75736570
+ 617261746F727374796C6503E501060D6D656E75766965777374796C65039102
+ 060E696D61676563656C6C7374796C65033D01060E706F70757063656C6C7374
+ 796C65038E03060D7465787463656C6C7374796C6503A60106096D656D6F7374
+ 796C6503DE07060E6C696E6B6C6162656C7374796C65035B03060D73697A6567
+ 7269707374796C6503FB04060E7374617475736261727374796C6503DB01060C
+ 746F6F6C6261727374796C6503CA00061570726F67726573736261726572726F
+ 727374796C65036F040613736D616C6C7363726F6C6C6261727374796C6503AE
+ 01060D636F6D626F626F787374796C65030108060D73706C6974746572737479
+ 6C6503C0030610636C6F7365627574746F6E7374796C65038604060E6D617862
+ 7574746F6E7374796C65030104060E6D696E627574746F6E7374796C65031904
+ 060E726573627574746F6E7374796C65031A04060F746F6F6C77696E646F7773
+ 74796C6503BD0D0610726164696F627574746F6E7374796C6503C4050618756C
+ 63656E746572726164696F627574746F6E7374796C650368050616756C6C6566
+ 74726164696F627574746F6E7374796C65035B050617756C7269676874726164
+ 696F627574746F6E7374796C65036005060E636F6D626F656469747374796C65
+ 038D090611616E69696E64696361746F727374796C6503D7010613657870616E
+ 646572627574746F6E7374796C650381020615657870616E646572636865636B
+ 626F787374796C6503DB05060A70616E656C7374796C65032901061970726F67
+ 726573736261726D696E696572726F727374796C65036103061470726F677265
+ 73736261726D696E697374796C65035C03060D657870616E6465727374796C65
+ 037C060615616E69696E64696361746F72686F727A7374796C65039502060E6C
+ 6F67627574746F6E7374796C65039507061B7472656576696577657870616E64
+ 6572627574746F6E7374796C65038002061174726565766965776974656D7374
+ 796C65030905060D74726565766965777374796C65034107061670726F677265
+ 737362617266696E6973687374796C65037004061A70726F6772657373626172
+ 6D696E6966696E6973687374796C65036203061177696E646F77626F72646572
+ 7374796C65039D1006136172726F77646F776E746F6F6C627574746F6E03A905
+ 060D706F707570626F787374796C65034B0600545046300A5452656374616E67
+ 6C6500095374796C654E616D65060F6261636B67726F756E647374796C650541
+ 6C69676E070643656E7465720A46696C6C2E436F6C6F72070978464632443244
+ 32440A53697A652E576964746805000000000000009407400B53697A652E4865
+ 696768740500000000000080D206401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508
+ 00005450463007544C61796F757400095374796C654E616D65060B627574746F
+ 6E7374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 085461624F726465720202000A5452656374616E676C6500095374796C654E61
+ 6D65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C69
+ 704368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F
+ 7207097846463230323032300748697454657374080A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E31084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646323032303230
+ 0953746F7056616C756507097846463430343034300754726967676572063049
+ 734D6F7573654F7665723D747275653B4973507265737365643D66616C73653B
+ 4973466F63757365643D66616C73650E54726967676572496E76657273650631
+ 49734D6F7573654F7665723D66616C73653B4973507265737365643D66616C73
+ 653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D61
+ 74696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463430343034300953746F7056616C75650709784646313735373943075472
+ 6967676572062F4973507265737365643D747275653B49734D6F7573654F7665
+ 723D747275653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
+ 416E696D6174696F6E33084475726174696F6E050000000000CDCCCCFB3F0C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463241383245320953746F7056616C7565070978464631373537
+ 39430754726967676572062E4973507265737365643D747275653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D747275650E5472696767
+ 6572496E7665727365062F4973507265737365643D66616C73653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D74727565000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E7413456E61626C6544726167486967686C6967687408074869745465737408
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
+ 686974650000005450463007544C61796F757400095374796C654E616D650609
+ 656469747374796C6505416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C803401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F726465720203000C5442727573684F626A65637400095374
+ 796C654E616D65060A666F726567726F756E6400000C5442727573684F626A65
+ 637400095374796C654E616D65060973656C656374696F6E0B42727573682E43
+ 6F6C6F72070978393632413832453200000B54466F6E744F626A656374000953
+ 74796C654E616D650604666F6E7409466F6E742E53697A650500000000000000
+ D0024000000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E315374
+ 796C65084475726174696F6E050000000000CDCCCCFB3F07496E766572736509
+ 0C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172
+ 7456616C756507097846463135313531350953746F7056616C75650709784646
+ 3430343034300754726967676572062049734D6F7573654F7665723D74727565
+ 3B4973466F63757365643D66616C73650E54726967676572496E766572736506
+ 2149734D6F7573654F7665723D66616C73653B4973466F63757365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 14436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E0500
+ 00000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E43
+ 6F6C6F720A537461727456616C756507097846463135313531350953746F7056
+ 616C756507097846463241383245320754726967676572060E4973466F637573
+ 65643D747275650E54726967676572496E7665727365060F4973466F63757365
+ 643D66616C736500000007544C61796F757400095374796C654E616D65060762
+ 7574746F6E7305416C69676E07055269676874064C6F636B6564090B4D617267
+ 696E732E546F7005000000000000008000400D4D617267696E732E5269676874
+ 05000000000000008000400E4D617267696E732E426F74746F6D050000000000
+ 00008000400A506F736974696F6E2E580500000000000000C004400A506F7369
+ 74696F6E2E5905000000000000008000400A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000000000A803401453
+ 697A652E506C6174666F726D44656661756C7408000007544C61796F75740009
+ 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
+ 064C6F636B6564090C4D617267696E732E4C6566740500000000000000800140
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
+ 000000000000008000400A53697A652E57696474680500000000000000A80440
+ 0B53697A652E4865696768740500000000000000A803401453697A652E506C61
+ 74666F726D44656661756C7408000006544C6162656C00095374796C654E616D
+ 65060670726F6D7074064C6F636B656409074F70616369747905000000000000
+ 0080FE3F165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 576869746504546578740604546578740000005450463007544C61796F757400
+ 095374796C654E616D65060A6C6162656C7374796C6505416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508085461624F7264657202040005545465
+ 787400095374796C654E616D6506047465787405416C69676E0708436F6E7465
+ 6E74730748697454657374080A53697A652E57696474680500000000000000C8
+ 05400B53697A652E4865696768740500000000000000C803401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C6157686974650000005450463007544C61796F757400
+ 095374796C654E616D65060D67726F7570626F787374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000000F004400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F726465720205000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E
+ 650748697454657374080C4D617267696E732E4C6566740500000000000000C0
+ 00400B4D617267696E732E546F7005000000000000009002400D4D617267696E
+ 732E52696768740500000000000000C000400E4D617267696E732E426F74746F
+ 6D0500000000000000C000400A53697A652E57696474680500000000000000D8
+ 04400B53697A652E48656967687405000000000000009804401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 463135313531350005545465787400095374796C654E616D6506047465787408
+ 4175746F53697A65090A436C6970506172656E74090748697454657374080C4D
+ 617267696E732E4C6566740500000000000000A002400A506F736974696F6E2E
+ 5805000000000060559502400A506F736974696F6E2E590500000000004055D5
+ 01C00A53697A652E576964746805000000000000B8C703400B53697A652E4865
+ 696768740500000000000060FF02401453697A652E506C6174666F726D446566
+ 61756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 615768697465155465787453657474696E67732E576F72645772617008000000
+ 005450463007544C61796F757400095374796C654E616D65060D747261636B62
+ 61727374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 05401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F7264657202060B46697865644865696768740211000A54526563
+ 74616E676C6500095374796C654E616D65060668747261636B05416C69676E07
+ 0A5665727443656E7465720A46696C6C2E436F6C6F7207097846463135313531
+ 350748697454657374080A506F736974696F6E2E590500000000000000BC0440
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000A001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
+ 436F6E74656E74730946696C6C2E4B696E6407044E6F6E65064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000C001
+ 400B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E52696768740500000000000000C001400E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000B005
+ 400B53697A652E4865696768740500000000000000C000401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 00000A5452656374616E676C6500095374796C654E616D650609686967686C69
+ 67687405416C69676E07044C6566740A46696C6C2E436F6C6F72070978464632
+ 41383245320748697454657374080C50616464696E672E4C6566740500000000
+ 000000A002400A53697A652E57696474680500000000000000F003400B53697A
+ 652E4865696768740500000000000000A001401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000B5447
+ 6C6F774566666563740008536F66746E657373050000000000CDCCCCFC3F0947
+ 6C6F77436F6C6F720709784646324138324532074F7061636974790500000000
+ 00000080FF3F07456E61626C6564080000000A5452656374616E676C65000953
+ 74796C654E616D65060676747261636B05416C69676E070A486F727A43656E74
+ 65720A46696C6C2E436F6C6F7207097846463135313531350748697454657374
+ 080A506F736974696F6E2E580500000000000000BC04400A53697A652E576964
+ 74680500000000000000A001400B53697A652E48656967687405000000000000
+ 00C805401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E747309
+ 46696C6C2E4B696E6407044E6F6E65064C6F636B656409074869745465737408
+ 0C4D617267696E732E4C6566740500000000000000C001400B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 0000000000C001400E4D617267696E732E426F74746F6D050000000000000080
+ FF3F0A53697A652E576964746805000000000000000000000B53697A652E4865
+ 696768740500000000000000C405401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265637461
+ 6E676C6500095374796C654E616D650609686967686C6967687405416C69676E
+ 0703546F700A46696C6C2E436F6C6F7207097846463241383245320748697454
+ 657374080A53697A652E57696474680500000000000000A001400B53697A652E
+ 4865696768740500000000000000F003401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000B54476C6F
+ 774566666563740008536F66746E657373050000000000CDCCCCFC3F09476C6F
+ 77436F6C6F720709784646324138324532074F70616369747905000000000000
+ 0080FF3F07456E61626C65640800000006545468756D6200095374796C654E61
+ 6D650606687468756D62064C6F636B6564090A506F736974696F6E2E58050000
+ 0000003033AB03400A506F736974696F6E2E59050000000000FFFFA304400A53
+ 697A652E57696474680500000000000000F002400B53697A652E486569676874
+ 0500000000000000F002401453697A652E506C6174666F726D44656661756C74
+ 080B5374796C654C6F6F6B7570060D7468756D626261727374796C6500000654
+ 5468756D6200095374796C654E616D650606767468756D62064C6F636B656409
+ 0A506F736974696F6E2E58050000000000CBCCA804400A506F736974696F6E2E
+ 590500000000009899B103400A53697A652E57696474680500000000000000F0
+ 02400B53697A652E4865696768740500000000000000F002401453697A652E50
+ 6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060D746875
+ 6D626261727374796C650000005450463007544C61796F757400095374796C65
+ 4E616D65060D636865636B626F787374796C6505416C69676E070643656E7465
+ 720A53697A652E5769647468050000000000ACAA8006400B53697A652E486569
+ 67687405000000000058559904401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508085461624F7264657202070007544C61796F75
+ 740005416C69676E07044C6566740A53697A652E576964746805000000000000
+ 009003400B53697A652E48656967687405000000000058559904401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E070643656E74
+ 65720A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E57696474680500000000000000F002400B53697A652E486569
+ 6768740500000000000000F002401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F720709784646313531353135000A5452
+ 656374616E676C6500095374796C654E616D65060A52656374616E676C653105
+ 416C69676E0706436C69656E740A46696C6C2E436F6C6F720709784646324138
+ 324532074869745465737408074F70616369747905000000000000000000000C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A53697A652E57696474680500000000000000B002400B53697A652E486569
+ 6768740500000000000000B002401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E
+ 696D6174696F6E00095374796C654E616D65061B6368656368626F7856697362
+ 696C697479416E696D6174696F6E31084475726174696F6E050000000000CDCC
+ CCFB3F0C50726F70657274794E616D6506074F7061636974790A537461727456
+ 616C756505000000000000000000000953746F7056616C756505000000000000
+ 00C805400754726967676572060E4973436865636B65643D747275650E547269
+ 67676572496E7665727365060F4973436865636B65643D66616C73650000000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061863686563
+ 6B626F785374726F6B65416E696D6174696F6E31084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E436F
+ 6C6F720A537461727456616C756507097846463135313531350953746F705661
+ 6C756507097846463241383245320754726967676572060E4973436865636B65
+ 643D747275650E54726967676572496E7665727365060F4973436865636B6564
+ 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650617636865636B626F78436F6C6F72416E696D6174696F6E3108447572
+ 6174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46
+ 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
+ 53746F7056616C75650709784646343034303430075472696767657206104973
+ 4D6F7573654F7665723D747275650E54726967676572496E7665727365061149
+ 734D6F7573654F7665723D66616C73650000000005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E740A53697A652E57
+ 696474680500000000005855DD05400B53697A652E4865696768740500000000
+ 0058559904401453697A652E506C6174666F726D44656661756C740804546578
+ 74060454657874165465787453657474696E67732E466F6E74436F6C6F720708
+ 636C615768697465000000545046300A5452656374616E676C6500095374796C
+ 654E616D6506147363726F6C6C62617268747261636B7374796C6505416C6967
+ 6E070643656E7465720A46696C6C2E436F6C6F72070978464631353135313507
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075669
+ 7369626C65080006545468756D6200095374796C654E616D6506057468756D62
+ 064C6F636B6564090A53697A652E576964746805000000000000008003400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080B5374796C654C6F6F6B7570060A7468756D627374
+ 796C65000000545046300A5452656374616E676C6500095374796C654E616D65
+ 06147363726F6C6C62617276747261636B7374796C6505416C69676E07064365
+ 6E7465720A46696C6C2E436F6C6F720709784646313531353135074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C65
+ 080006545468756D6200095374796C654E616D6506057468756D62064C6F636B
+ 6564090A53697A652E57696474680500000000000000C804400B53697A652E48
+ 656967687405000000000000008003401453697A652E506C6174666F726D4465
+ 6661756C74080B5374796C654C6F6F6B7570060A7468756D627374796C650000
+ 005450463007544C61796F757400095374796C654E616D6506157363726F6C6C
+ 626172626F74746F6D627574746F6E05416C69676E070643656E746572075669
+ 7369626C6508085461624F726465720208000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0706436C6965
+ 6E740C436C69704368696C6472656E090A436C6970506172656E74090A46696C
+ 6C2E436F6C6F7207097846463230323032300748697454657374080A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D617469
+ 6F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3230323032300953746F7056616C756507097846463430343034300754726967
+ 676572062049734D6F7573654F7665723D747275653B4973507265737365643D
+ 66616C73650E54726967676572496E7665727365062149734D6F7573654F7665
+ 723D66616C73653B4973507265737365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E32084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463430343034300953746F7056616C75650709784646313735
+ 3739430754726967676572061F4973507265737365643D747275653B49734D6F
+ 7573654F7665723D747275650E54726967676572496E76657273650620497350
+ 7265737365643D66616C73653B49734D6F7573654F7665723D74727565000000
+ 07544C61796F757400095374796C654E616D6506074C61796F75743105416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000A00240
+ 0B53697A652E4865696768740500000000000000C001401453697A652E506C61
+ 74666F726D44656661756C74080005545061746800095374796C654E616D6506
+ 05506174683105416C69676E0706436C69656E7409446174612E506174680A34
+ 00000004000000000000000000C8420000C84201000000000096430000C84201
+ 0000000000484300009643030000000000C8420000C8420A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000000005450463007544C61796F757400095374796C
+ 654E616D6506137363726F6C6C6261726C656674627574746F6E05416C69676E
+ 070643656E7465720756697369626C6508085461624F726465720209000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0706436C69656E740C436C69704368696C6472656E090A436C6970
+ 506172656E74090A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CDCCCC
+ FB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463230323032300953746F7056616C75650709784646
+ 3430343034300754726967676572062049734D6F7573654F7665723D74727565
+ 3B4973507265737365643D66616C73650E54726967676572496E766572736506
+ 2149734D6F7573654F7665723D66616C73653B4973507265737365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463430343034300953746F705661
+ 6C756507097846463137353739430754726967676572061F4973507265737365
+ 643D747275653B49734D6F7573654F7665723D747275650E5472696767657249
+ 6E766572736506204973507265737365643D66616C73653B49734D6F7573654F
+ 7665723D7472756500000007544C61796F757400095374796C654E616D650607
+ 4C61796F75743105416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080005545061746800
+ 095374796C654E616D650605506174683105416C69676E0706436C69656E7409
+ 446174612E506174680A3400000004000000000000000000C8420000C8420100
+ 0000000096430000C842010000000000484300009643030000000000C8420000
+ C8420A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0D526F746174696F6E416E676C650500000000000000B405400A53697A652E57
+ 696474680500000000000000A002400B53697A652E4865696768740500000000
+ 000000C001401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000000005450463007544C61796F75740009
+ 5374796C654E616D6506147363726F6C6C6261727269676874627574746F6E05
+ 416C69676E070643656E7465720756697369626C6508085461624F7264657202
+ 0A000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
+ 6F756E6405416C69676E0706436C69656E740C436C69704368696C6472656E09
+ 0A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632303230
+ 32300748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000
+ 0000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463230323032300953746F7056616C7565
+ 07097846463430343034300754726967676572062049734D6F7573654F766572
+ 3D747275653B4973507265737365643D66616C73650E54726967676572496E76
+ 65727365062149734D6F7573654F7665723D66616C73653B4973507265737365
+ 643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844757261
+ 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463430343034300953
+ 746F7056616C756507097846463137353739430754726967676572061F497350
+ 7265737365643D747275653B49734D6F7573654F7665723D747275650E547269
+ 67676572496E766572736506204973507265737365643D66616C73653B49734D
+ 6F7573654F7665723D7472756500000007544C61796F757400095374796C654E
+ 616D6506074C61796F75743105416C69676E070643656E7465720A53697A652E
+ 57696474680500000000000000A002400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C7408000554
+ 5061746800095374796C654E616D650605506174683105416C69676E0706436C
+ 69656E7409446174612E506174680A3400000004000000000000000000C84200
+ 00C84201000000000096430000C8420100000000004843000096430300000000
+ 00C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080D526F746174696F6E416E676C650500000000000000B405C00A53
+ 697A652E57696474680500000000000000A002400B53697A652E486569676874
+ 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C6179
+ 6F757400095374796C654E616D6506127363726F6C6C626172746F7062757474
+ 6F6E05416C69676E070643656E7465720756697369626C6508085461624F7264
+ 6572020B000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080D526F746174696F6E416E676C650500000000000000B406
+ 400A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
+ 4C61796F757400095374796C654E616D65060E7363726F6C6C6261727374796C
+ 6505416C69676E070643656E7465720756697369626C6508085461624F726465
+ 72020C000754427574746F6E00095374796C654E616D65060A6C656674627574
+ 746F6E05416C69676E07044C656674064C6F636B6564090A506F736974696F6E
+ 2E5905000000000000008003400A53697A652E57696474680500000000000000
+ 8003400B53697A652E48656967687405000000000000009003401453697A652E
+ 506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006137363
+ 726F6C6C6261726C656674627574746F6E00000754427574746F6E0009537479
+ 6C654E616D65060B7269676874627574746F6E05416C69676E07055269676874
+ 064C6F636B6564090A506F736974696F6E2E5805000000000000008804400A50
+ 6F736974696F6E2E5905000000000000008003400A53697A652E576964746805
+ 000000000000008003400B53697A652E48656967687405000000000000009003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B757006147363726F6C6C6261727269676874627574746F6E00000754427574
+ 746F6E00095374796C654E616D65060C626F74746F6D627574746F6E05416C69
+ 676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E59050000
+ 00000000008804400A53697A652E57696474680500000000000000C804400B53
+ 697A652E48656967687405000000000000008003401453697A652E506C617466
+ 6F726D44656661756C74080B5374796C654C6F6F6B757006157363726F6C6C62
+ 6172626F74746F6D627574746F6E00000654547261636B00095374796C654E61
+ 6D65060668747261636B05416C69676E0706436C69656E74064C6F636B656409
+ 0B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E5769
+ 64746805000000000000009003400B53697A652E486569676874050000000000
+ 00009003401453697A652E506C6174666F726D44656661756C74080B5374796C
+ 654C6F6F6B757006147363726F6C6C62617268747261636B7374796C65000006
+ 54547261636B00095374796C654E616D65060676747261636B05416C69676E07
+ 06436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0A53697A652E576964746805000000000000009003400B5369
+ 7A652E48656967687405000000000000009003401453697A652E506C6174666F
+ 726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C6261
+ 7276747261636B7374796C6500000754427574746F6E00095374796C654E616D
+ 650609746F70627574746F6E05416C69676E0703546F700A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 008003401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B757006127363726F6C6C626172746F70627574746F6E000000545046
+ 300A5452656374616E676C6500095374796C654E616D65060A7468756D627374
+ 796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463444344434440748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650756697369626C6508000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F6E31
+ 084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646344434
+ 4434440953746F7056616C756507097846463137353739430754726967676572
+ 060E4973507265737365643D747275650E54726967676572496E766572736506
+ 0F4973507265737365643D66616C736500000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E315374
+ 796C65084475726174696F6E050000000000CDCCCCFB3F07496E766572736509
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463444344434440953746F7056616C75650707636C614772
+ 61790754726967676572061049734D6F7573654F7665723D747275650E547269
+ 67676572496E7665727365061149734D6F7573654F7665723D66616C73650000
+ 00545046300D545377697463684F626A65637400095374796C654E616D65060B
+ 7377697463687374796C6505416C69676E070643656E746572044B696E64070C
+ 466164696E67547261636B730A53697A652E57696474680500000000000000C8
+ 05400B53697A652E4865696768740500000000000000C803401453697A652E50
+ 6C6174666F726D44656661756C7408085461624F72646572020D12547261636B
+ 696E675468756D625363616C65050000000000000080FF3F0756697369626C65
+ 080A46696C6C2E436F6C6F7207097846463230323032300C46696C6C4F6E2E43
+ 6F6C6F7207097846463137353739430B46696C6C4F6E2E4B696E640705536F6C
+ 69640B5374726F6B652E4B696E6407044E6F6E650B5468756D622E436F6C6F72
+ 07097846463430343034300D5468756D624F6E2E436F6C6F7207097846463241
+ 383245320C5468756D624F6E2E4B696E640705536F6C6964105468756D625374
+ 726F6B652E4B696E6407044E6F6E650F5468756D625374726F6B652E43617007
+ 05526F756E64105468756D625374726F6B652E446173680706437573746F6D10
+ 5468756D625374726F6B652E4A6F696E0705526F756E64165468756D62537472
+ 6F6B652E437573746F6D446173680A0800000000000000000000000000545046
+ 3007544C61796F757400095374796C654E616D65060C7370696E626F78737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 0000008A06400B53697A652E4865696768740500000000000000C00340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
+ 4F72646572020E000A5452656374616E676C6500095374796C654E616D65060A
+ 6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E
+ 436F6C6F7207097846463230323032300A53697A652E57696474680500000000
+ 0000008A06400B53697A652E4865696768740500000000000000C00340145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65084475
+ 726174696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F7065
+ 7274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565
+ 07097846463135313531350953746F7056616C75650709784646343034303430
+ 0754726967676572061049734D6F7573654F7665723D747275650E5472696767
+ 6572496E7665727365061149734D6F7573654F7665723D66616C73650000000C
+ 5442727573684F626A65637400095374796C654E616D65060A666F726567726F
+ 756E640B42727573682E436F6C6F72070978464645414541454100000C544272
+ 7573684F626A65637400095374796C654E616D65060973656C656374696F6E0B
+ 42727573682E436F6C6F720709783936324138324532000007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E74064C6F636B6564090C4D617267696E732E4C656674050000000000000080
+ 00400B4D617267696E732E546F7005000000000000008000400D4D617267696E
+ 732E526967687405000000000000008000400E4D617267696E732E426F74746F
+ 6D05000000000000008000400A53697A652E57696474680500000000000000AC
+ 05400B53697A652E4865696768740500000000000000A003401453697A652E50
+ 6C6174666F726D44656661756C740800000754427574746F6E00095374796C65
+ 4E616D65060B6D696E7573627574746F6E05416C69676E07044C656674084361
+ 6E466F6375730806437572736F72070763724172726F770C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A506F73697469
+ 6F6E2E5805000000000000008000400A506F736974696F6E2E59050000000000
+ 00008000400A53697A652E57696474680500000000000000A003400B53697A65
+ 2E4865696768740500000000000000A003401453697A652E506C6174666F726D
+ 44656661756C74080B5374796C654C6F6F6B7570060B627574746F6E7374796C
+ 65000554506174680005416C69676E070643656E74657209446174612E506174
+ 680A4000000005000000000000000000803F00000000010000000000803F0000
+ 803F01000000000000000000003F010000000000803F00000000030000000000
+ 803F000000000A46696C6C2E436F6C6F720708636C6157686974650748697454
+ 657374080A53697A652E576964746805000000000000008002400B53697A652E
+ 48656967687405000000000000008002401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000007544275
+ 74746F6E00095374796C654E616D65060A706C7573627574746F6E05416C6967
+ 6E070552696768740843616E466F6375730806437572736F7207076372417272
+ 6F770C4D617267696E732E4C65667405000000000000008000400B4D61726769
+ 6E732E546F7005000000000000008000400D4D617267696E732E526967687405
+ 000000000000008000400E4D617267696E732E426F74746F6D05000000000000
+ 008000400A506F736974696F6E2E580500000000000000E805400A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 000000A003400B53697A652E4865696768740500000000000000A00340145369
+ 7A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006
+ 0B627574746F6E7374796C65000554506174680005416C69676E070643656E74
+ 657209446174612E506174680A34000000040000000000000000000000000000
+ 0001000000000000000000803F010000000000803F0000003F03000000000000
+ 00000000000A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080A53697A652E576964746805000000000000008002400B53697A652E48
+ 656967687405000000000000008002401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
+ 07544C61796F757400095374796C654E616D65060F746162636F6E74726F6C73
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 00000000008E06400B53697A652E486569676874050000000000FFFFC9054014
53697A652E506C6174666F726D44656661756C74080756697369626C65080854
- 61624F72646572021A000A5452656374616E676C650005416C69676E0708436F
- 6E74656E74730A46696C6C2E436F6C6F72070978464632413832453207486974
- 5465737408074F70616369747905000000000017B7D1F13F0A53697A652E5769
- 64746805000000000000009205400B53697A652E486569676874050000000000
- 0000D003401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008
+ 61624F72646572020F000A5452656374616E676C6500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646333033303330064C6F636B656409074869745465
+ 7374080C50616464696E672E4C65667405000000000000008000400B50616464
+ 696E672E546F7005000000000000008000400D50616464696E672E5269676874
+ 05000000000000008000400E50616464696E672E426F74746F6D050000000000
+ 00008000400A53697A652E576964746805000000000000008E06400B53697A65
+ 2E486569676874050000000000FFFFC905401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 000000545046300A5452656374616E676C6500095374796C654E616D65060B74
+ 6162646F747374796C6505416C69676E070643656E7465720A46696C6C2E436F
+ 6C6F7207097846463135313531350748697454657374080A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E69
+ 6D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463135313531350953746F7056616C7565070978464632413832453207
+ 54726967676572060F497353656C65637465643D747275650E54726967676572
+ 496E76657273650610497353656C65637465643D66616C736500000054504630
+ 07544C61796F757400095374796C654E616D65060C7461626974656D7374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
+ 726465720210000A5452656374616E676C6500095374796C654E616D65060374
+ 6F7005416C69676E0708436F6E74656E74730C436C69704368696C6472656E09
+ 07436F726E6572730B07546F704C65667408546F705269676874000A46696C6C
+ 2E436F6C6F720709784646323032303230064C6F636B65640907486974546573
+ 74080553696465730B03546F70044C656674055269676874000A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000654476C79706800095374
+ 796C654E616D65060A676C7970687374796C650C4D617267696E732E4C656674
+ 05000000000000008001400D4D617267696E732E526967687405000000000000
+ 008001C005416C69676E07044C6566740A53697A652E57696474680500000000
+ 0000008003400B53697A652E4865696768740500000000000000800340145369
+ 7A652E506C6174666F726D44656661756C740800000554546578740009537479
+ 6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ C000400B4D617267696E732E546F700500000000000000C000400D4D61726769
+ 6E732E52696768740500000000000000C000400E4D617267696E732E426F7474
+ 6F6D0500000000000000C000400A53697A652E57696474680500000000000000
+ B004400B53697A652E48656967687405000000000000009803401453697A652E
+ 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465155465787453657474696E67732E57
+ 6F7264577261700800000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650612746162436F6C6F72416E696D6174696F6E310D416E696D6174
+ 696F6E547970650705496E4F7574084475726174696F6E050000000000CDCCCC
+ FB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463230323032300953746F7056616C75650709784646
+ 3430343034300754726967676572062149734D6F7573654F7665723D74727565
+ 3B497353656C65637465643D66616C73650E54726967676572496E7665727365
+ 062249734D6F7573654F7665723D66616C73653B497353656C65637465643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650612746162436F6C6F72416E696D6174696F6E32084475726174696F6E0500
+ 00000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463241383245320754726967676572060F497353656C65637465
+ 643D747275650E54726967676572496E76657273650610497353656C65637465
+ 643D66616C736500000000545046300A5452656374616E676C6500095374796C
+ 654E616D65060D7468756D626261727374796C6505416C69676E070643656E74
+ 65720A46696C6C2E436F6C6F7207097846463241383245320748697454657374
+ 080A53697A652E57696474680500000000000000A003400B53697A652E486569
+ 6768740500000000000000A003401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313507566973
+ 69626C6508000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 6506147468756D62436F6C6F72416E696D6174696F6E31084475726174696F6E
+ 050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463241383245320953746F7056
+ 616C756507097846463137353739430754726967676572061F49735072657373
+ 65643D747275653B49734D6F7573654F7665723D747275650E54726967676572
+ 496E766572736506104973507265737365643D66616C73653B00000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D6506147468756D62436F6C
+ 6F72416E696D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463241383245320953746F7056616C756507097846463430
+ 394246460754726967676572062049734D6F7573654F7665723D747275653B49
+ 73507265737365643D66616C73650E54726967676572496E7665727365062149
+ 734D6F7573654F7665723D66616C73653B4973507265737365643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061574
+ 68756D625374726F6B65416E696D6174696F6E31084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E436F
+ 6C6F720A537461727456616C756507097846463135313531350953746F705661
+ 6C756507097846463137353739430754726967676572061F4973507265737365
+ 643D747275653B49734D6F7573654F7665723D747275650E5472696767657249
+ 6E7665727365060F4973507265737365643D66616C7365000000545046300754
+ 4C61796F757400095374796C654E616D65060C6C697374626F787374796C6505
+ 416C69676E070643656E7465720A53697A652E5769647468050000000000FFFF
+ E905400B53697A652E48656967687405000000000000008306401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 65720211000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978464632433243324300000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B656409
+ 0748697454657374080C50616464696E672E4C65667405000000000000008000
+ 400B50616464696E672E546F7005000000000000008000400D50616464696E67
+ 2E526967687405000000000000008000400E50616464696E672E426F74746F6D
+ 05000000000000008000400A53697A652E5769647468050000000000FFFFE905
+ 400B53697A652E48656967687405000000000000008306401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 3135313531350007544C61796F757400095374796C654E616D650607636F6E74
+ 656E7405416C69676E0706436C69656E740C436C69704368696C6472656E090A
+ 53697A652E5769647468050000000000FFFFC105400B53697A652E4865696768
+ 740500000000000000DE05401453697A652E506C6174666F726D44656661756C
+ 7408000A5452656374616E676C6500095374796C654E616D65060973656C6563
+ 74696F6E0A46696C6C2E436F6C6F720709784646324138324532074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374
+ 616E676C6500095374796C654E616D650610666F637573656473656C65637469
+ 6F6E0A46696C6C2E436F6C6F7207097846463241383245320748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650B5374726F6B652E4461
+ 73680703446F740000000A545363726F6C6C42617200095374796C654E616D65
+ 060A767363726F6C6C62617205416C69676E070552696768740B536D616C6C43
+ 68616E676505000000000000000000000B4F7269656E746174696F6E07085665
+ 72746963616C0A506F736974696F6E2E58050000000000FFFFC505400A506F73
+ 6974696F6E2E5905000000000000008000400A53697A652E5769647468050000
+ 00000000008003400B53697A652E4865696768740500000000000000DE054014
+ 53697A652E506C6174666F726D44656661756C740800000A545363726F6C6C42
+ 617200095374796C654E616D65060A687363726F6C6C62617205416C69676E07
+ 06426F74746F6D0B536D616C6C4368616E676505000000000000000000000B4F
+ 7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E
+ 5805000000000000008000400A506F736974696F6E2E590500000000000000E2
+ 05400A53697A652E5769647468050000000000FFFFE105400B53697A652E4865
+ 6967687405000000000000008003401453697A652E506C6174666F726D446566
+ 61756C740800000F54536D616C6C5363726F6C6C42617200095374796C654E61
+ 6D65060F76736D616C6C7363726F6C6C62617205416C69676E07055269676874
+ 0B536D616C6C4368616E676505000000000000000000000B4F7269656E746174
+ 696F6E0708566572746963616C0C4D617267696E732E4C656674050000000000
+ 00008000400A506F736974696F6E2E580500000000000000C605400A506F7369
+ 74696F6E2E5905000000000000008000400A53697A652E576964746805000000
+ 000000008002400B53697A652E48656967687405000000000000008002401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C650800000F
+ 54536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D61
+ 6C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C43
+ 68616E676505000000000000000000000B4F7269656E746174696F6E070A486F
+ 72697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A
+ 506F736974696F6E2E5805000000000000008000400A506F736974696F6E2E59
+ 0500000000000000E205400A53697A652E576964746805000000000000009606
+ 400B53697A652E48656967687405000000000000008002401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C65080000000B54476C6F77
+ 4566666563740008536F66746E657373050000000000CDCCCCFC3F09476C6F77
+ 436F6C6F720709784646463639453244074F7061636974790500000000006666
+ E6FE3F0754726967676572060E4973466F63757365643D7472756507456E6162
+ 6C6564080000005450463007544C61796F757400095374796C654E616D65060D
+ 6C697374626F78666F6F74657205416C69676E070643656E7465720A53697A65
+ 2E576964746805000000000000009205400B53697A652E486569676874050000
+ 0000000000D003401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F7264657202120005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000A001
+ 400B4D617267696E732E546F7005000000000000008000400D4D617267696E73
+ 2E52696768740500000000000000A001400E4D617267696E732E426F74746F6D
+ 05000000000000008000400A53697A652E57696474680500000000000000FC04
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D6506106C697374626F786974656D7374796C6505416C6967
+ 6E070643656E7465720A53697A652E57696474680500000000000000D605400B
+ 53697A652E4865696768740500000000000000C003401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508085461624F726465720213
+ 000654476C79706800095374796C654E616D65060A676C7970687374796C650C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D050000000000000080FF
+ 3F05416C69676E07044C6566740A53697A652E57696474680500000000000000
+ 8003400B53697A652E48656967687405000000000000008003401453697A652E
+ 506C6174666F726D44656661756C7408000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E74074869745465737408
+ 0C4D617267696E732E4C6566740500000000000000C000400B4D617267696E73
+ 2E546F70050000000000000080FF3F0D4D617267696E732E5269676874050000
+ 0000000000C000400E4D617267696E732E426F74746F6D050000000000000080
+ FF3F0A53697A652E57696474680500000000000000CA05400B53697A652E4865
+ 696768740500000000000000B003401453697A652E506C6174666F726D446566
+ 61756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 615768697465155465787453657474696E67732E576F72645772617008165465
+ 787453657474696E67732E486F727A416C69676E07074C656164696E67000009
+ 54436865636B426F7800095374796C654E616D650605636865636B05416C6967
+ 6E07084D6F73744C6566740843616E466F637573081244697361626C65466F63
+ 7573456666656374090A53697A652E57696474680500000000000000A003400B
+ 53697A652E4865696768740500000000000000C003401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C65080000005450463007544C61
+ 796F757400095374796C654E616D6506126C697374626F78706C61696E686561
+ 64657205416C69676E070643656E7465720A53697A652E576964746805000000
+ 000000009205400B53697A652E4865696768740500000000000000D003401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F726465720214000A5452656374616E676C6500095374796C654E616D6506
+ 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
+ 2E436F6C6F720709784646324432443244064C6F636B65640907486974546573
+ 74080A53697A652E576964746805000000000000009205400B53697A652E4865
+ 696768740500000000000000D003401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706436C
+ 69656E74064C6F636B6564090748697454657374080C4D617267696E732E4C65
+ 66740500000000000000A001400B4D617267696E732E546F7005000000000000
+ 008000400D4D617267696E732E52696768740500000000000000A001400E4D61
+ 7267696E732E426F74746F6D05000000000000008000400A53697A652E576964
+ 74680500000000000000FC04400B53697A652E48656967687405000000000000
+ 00B003401453697A652E506C6174666F726D44656661756C7408165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C6157686974650000005450
+ 463007544C61796F757400095374796C654E616D650609677269647374796C65
+ 05416C69676E070643656E7465720A53697A652E5769647468050000000000FF
+ FFE905400B53697A652E48656967687405000000000000008306401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
+ 6465720215000C5442727573684F626A65637400095374796C654E616D650618
+ 416C7465726E6174696E67526F774261636B67726F756E640B42727573682E43
+ 6F6C6F72070978333237383738373800000C5442727573684F626A6563740009
+ 5374796C654E616D6506086C696E6566696C6C0B42727573682E436F6C6F7207
+ 0978464631353135313500000A5452656374616E676C6500095374796C654E61
+ 6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646323032303230064C6F636B65640907486974
+ 54657374080C50616464696E672E4C65667405000000000000008000400B5061
+ 6464696E672E546F7005000000000000008000400D50616464696E672E526967
+ 687405000000000000008000400E50616464696E672E426F74746F6D05000000
+ 000000008000400A53697A652E5769647468050000000000FFFFE905400B5369
+ 7A652E48656967687405000000000000008306401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 313500075448656164657200095374796C654E616D6506066865616465720553
+ 696465730B03546F70044C65667406426F74746F6D0552696768740005416C69
+ 676E0703546F700A506F736974696F6E2E5805000000000000008000400A506F
+ 736974696F6E2E5905000000000000008000400A53697A652E57696474680500
+ 00000000FFFFE105400B53697A652E4865696768740500000000000000A80340
+ 1453697A652E506C6174666F726D44656661756C7408000007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E740C436C69704368696C6472656E090A53697A652E57696474680500000000
+ 00FFFFC105400B53697A652E4865696768740500000000000000B40540145369
+ 7A652E506C6174666F726D44656661756C7408000A5452656374616E676C6500
+ 095374796C654E616D65060973656C656374696F6E0A46696C6C2E436F6C6F72
+ 07097846463241383245320748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D
+ 650605666F6375730A46696C6C2E436F6C6F7207097841463241383245320748
+ 697454657374080C4D617267696E732E4C656674050000000000000080FF3F0B
+ 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
+ 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
+ 00000000000080FF3F0A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650759
+ 5261646975730500000000000000C000400000000A545363726F6C6C42617200
+ 095374796C654E616D65060A767363726F6C6C62617205416C69676E07055269
+ 6768740B536D616C6C4368616E676505000000000000000000000B4F7269656E
+ 746174696F6E0708566572746963616C0A506F736974696F6E2E580500000000
+ 00FFFFC505400A506F736974696F6E2E590500000000000000B803400A53697A
+ 652E576964746805000000000000008003400B53697A652E4865696768740500
+ 000000000000B405401453697A652E506C6174666F726D44656661756C740800
+ 000A545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C
+ 62617205416C69676E0706426F74746F6D0B536D616C6C4368616E6765050000
+ 00000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C
+ 0A506F736974696F6E2E5805000000000000008000400A506F736974696F6E2E
+ 590500000000000000E205400A53697A652E5769647468050000000000FFFFE1
+ 05400B53697A652E48656967687405000000000000008003401453697A652E50
+ 6C6174666F726D44656661756C740800000F54536D616C6C5363726F6C6C4261
+ 7200095374796C654E616D65060F76736D616C6C7363726F6C6C62617205416C
+ 69676E070552696768740B536D616C6C4368616E676505000000000000000000
+ 000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E
+ 4C65667405000000000000008000400A506F736974696F6E2E58050000000000
+ 0000C605400A506F736974696F6E2E5905000000000000008000400A53697A65
+ 2E576964746805000000000000008002400B53697A652E486569676874050000
+ 00000000008002401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C650800000F54536D616C6C5363726F6C6C42617200095374796C65
+ 4E616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F74
+ 746F6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E
+ 746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F700500
+ 0000000000008000400A506F736974696F6E2E5805000000000000008000400A
+ 506F736974696F6E2E590500000000000000E205400A53697A652E5769647468
+ 05000000000000009606400B53697A652E486569676874050000000000000080
+ 02401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08000000005450463007544C61796F757400095374796C654E616D65060F6865
+ 616465726974656D7374796C6505416C69676E070643656E7465720A53697A65
+ 2E576964746805000000000000009205400B53697A652E486569676874050000
+ 0000000000D003401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F726465720216000A5452656374616E676C650009
+ 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
+ 74656E74730A46696C6C2E436F6C6F720709784646344334433443064C6F636B
+ 6564090748697454657374080A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 46313531353135000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650615686561646572436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646344334433443095374
+ 6F7056616C756507097846463241383245320754726967676572060E49735072
+ 65737365643D747275650E54726967676572496E7665727365060F4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D6506166865616465725374726F6B65416E696D6174696F6E3108
4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
- 06074F7061636974790A537461727456616C7565050000000000000000000009
- 53746F7056616C7565050000000000000080FF3F0754726967676572060F4973
- 53656C65637465643D747275650E54726967676572496E766572736506104973
- 53656C65637465643D66616C73650000000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
- 6E74730A46696C6C2E436F6C6F72070978464632413832453207486974546573
- 7408074F70616369747905000000000000000000000A53697A652E5769647468
- 05000000000000009205400B53697A652E4865696768740500000000000000D0
- 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008447572
- 6174696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F706572
+ 060C5374726F6B652E436F6C6F720A537461727456616C756507097846463135
+ 313531350953746F7056616C7565070978464632413832453207547269676765
+ 72060E4973507265737365643D747275650E54726967676572496E7665727365
+ 060F4973507265737365643D66616C736500000005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E74064C6F636B6564
+ 090748697454657374080C4D617267696E732E4C6566740500000000000000A0
+ 01400B4D617267696E732E546F7005000000000000008000400D4D617267696E
+ 732E52696768740500000000000000A001400E4D617267696E732E426F74746F
+ 6D05000000000000008000400A53697A652E57696474680500000000000000FC
+ 04400B53697A652E4865696768740500000000000000B003401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C6157686974650000005450463007544C61796F757400
+ 095374796C654E616D65061070726F67726573736261727374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000003333850540
+ 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508085461624F7264657202
+ 17000A5452656374616E676C6500095374796C654E616D65060668747261636B
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 323032303230064C6F636B6564090748697454657374080A53697A652E576964
+ 746805000000000033338505400B53697A652E48656967687405000000000099
+ 99E104401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F720709784646313531353135000A5452656374616E676C650009
+ 5374796C654E616D65060A68696E64696361746F7205416C69676E07044C6566
+ 740A46696C6C2E436F6C6F720709784646324138324532064C6F636B65640907
+ 48697454657374080C4D617267696E732E4C656674050000000000000080FF3F
+ 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
+ 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
+ 0000000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F
+ 0A506F736974696F6E2E59050000000000000080FF3F0A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000009999
+ D904401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E650000000A5452656374616E676C6500095374796C65
+ 4E616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720709784646313531353135000A
+ 5452656374616E676C6500095374796C654E616D65060A76696E64696361746F
+ 7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978464632
+ 4138324532064C6F636B6564090748697454657374080C4D617267696E732E4C
+ 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
+ 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F0A506F736974696F
+ 6E2E58050000000000000080FF3F0A506F736974696F6E2E5905000000000099
+ 998904400A53697A652E576964746805000000000033338105400B53697A652E
+ 4865696768740500000000000000A803401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
+ 3007544C61796F757400095374796C654E616D65061170726F67726573736365
+ 6C6C7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000F805400B53697A652E4865696768740500000000000000FC
+ 05401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F7264657202180007544C61796F757400095374796C654E616D65
+ 060668747261636B05416C69676E0708436F6E74656E7473064C6F636B656409
+ 0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73
+ 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
+ 00000000008000400E4D617267696E732E426F74746F6D050000000000000080
+ 00400A53697A652E57696474680500000000000000F005400B53697A652E4865
+ 696768740500000000000000F405401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D65060A6869
+ 6E64696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F7207
+ 09784646324138324532064C6F636B6564090748697454657374080C4D617267
+ 696E732E4C65667405000000000000008000400B4D617267696E732E546F7005
+ 000000000000008000400D4D617267696E732E52696768740500000000000000
+ 8000400E4D617267696E732E426F74746F6D05000000000000008000400A506F
+ 736974696F6E2E5805000000000000008000400A506F736974696F6E2E590500
+ 0000000000008000400A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000EC05401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
+ 00005450463007544C61796F757400095374796C654E616D6506106D656E7562
+ 61726974656D7374796C6505416C69676E070643656E7465720C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E576964746805000000000000009205400B53697A652E486569676874050000
+ 0000000000D003401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F726465720219000A5452656374616E676C650005
+ 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632
+ 4138324532074869745465737408074F70616369747905000000000017B7D1F1
+ 3F0A53697A652E576964746805000000000000009205400B53697A652E486569
+ 6768740500000000000000D003401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E
+ 696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060F497353656C65637465643D747275650E54726967676572496E
+ 76657273650610497353656C65637465643D66616C73650000000A5452656374
+ 616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C69
+ 676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632413832
+ 4532074869745465737408074F70616369747905000000000017B7D1F13F0A53
+ 697A652E576964746805000000000000009205400B53697A652E486569676874
+ 0500000000000000D003401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D61
+ 74696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F706572
74794E616D6506074F7061636974790A537461727456616C7565050000000000
00000000000953746F7056616C7565050000000000000080FF3F075472696767
6572061049734D6F7573654F7665723D747275650E54726967676572496E7665
@@ -13519,563 +14382,672 @@ object MainForm: TMainForm
2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
000000008000400D4D617267696E732E52696768740500000000000000C00040
0E4D617267696E732E426F74746F6D050000000000000080FF3F05416C69676E
- 07044C6566740A53697A652E576964746805000000000000008003400B53697A
- 652E48656967687405000000000000008003401453697A652E506C6174666F72
- 6D44656661756C740800000654496D61676500095374796C654E616D65060662
- 69746D61700E4D756C74695265734269746D61700E01000005416C69676E0704
- 4C6566740C4D617267696E732E4C65667405000000000000008000400B4D6172
- 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
- 7405000000000000008000400E4D617267696E732E426F74746F6D0500000000
- 0000008000400A506F736974696F6E2E5805000000000000008000400A506F73
- 6974696F6E2E5905000000000000008000400A53697A652E5769647468050000
- 0000000000A803400B53697A652E4865696768740500000000000000B0034014
- 53697A652E506C6174666F726D44656661756C74080000000554546578740009
- 5374796C654E616D6506047465787405416C69676E07044C656674064C6F636B
- 6564090748697454657374080C4D617267696E732E4C65667405000000000000
- 008002400D4D617267696E732E526967687405000000000000008002400A506F
- 736974696F6E2E5805000000000000008404400A53697A652E57696474680500
- 000000000000C804400B53697A652E4865696768740500000000000000D00340
- 1453697A652E506C6174666F726D44656661756C740816546578745365747469
- 6E67732E466F6E74436F6C6F720708636C615768697465165465787453657474
- 696E67732E486F727A416C69676E07074C656164696E67000005545465787400
- 095374796C654E616D65060873686F727463757405416C69676E070552696768
- 74064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
- 00000000000000C002400D4D617267696E732E52696768740500000000000000
- C001400A506F736974696F6E2E580500000000000000C000C00A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740816546578
- 7453657474696E67732E466F6E74436F6C6F720708636C615768697465165465
- 787453657474696E67732E486F727A416C69676E07074C656164696E67000007
- 544C61796F757400095374796C654E616D6506077375626D61726B05416C6967
- 6E070552696768740A506F736974696F6E2E580500000000000000D404400A53
- 697A652E57696474680500000000000000A003400B53697A652E486569676874
- 0500000000000000D003401453697A652E506C6174666F726D44656661756C74
- 08000554506174680005416C69676E070643656E74657209446174612E506174
- 680A340000000400000000000000000000000000000001000000000000000000
- 803F010000000000803F0000003F0300000000000000000000000A46696C6C2E
- 436F6C6F720708636C615768697465064C6F636B656409074869745465737408
- 0A53697A652E57696474680500000000000000E001400B53697A652E48656967
- 687405000000000000008002401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
- 61796F757400095374796C654E616D6506126D656E75736570617261746F7273
+ 070552696768740A53697A652E576964746805000000000000008003400B5369
+ 7A652E48656967687405000000000000008003401453697A652E506C6174666F
+ 726D44656661756C740800000654496D61676500095374796C654E616D650606
+ 6269746D61700E4D756C74695265734269746D61700E01000005416C69676E07
+ 08436F6E74656E74730C4D617267696E732E4C65667405000000000000008000
+ 400B4D617267696E732E546F7005000000000000008000400D4D617267696E73
+ 2E526967687405000000000000008000400E4D617267696E732E426F74746F6D
+ 05000000000000008000400A53697A652E57696474680500000000000000A803
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C740800000005545465787400095374796C654E61
+ 6D6506047465787405416C69676E07044C656674064C6F636B65640907486974
+ 54657374080C4D617267696E732E4C65667405000000000000008002400D4D61
+ 7267696E732E526967687405000000000000008002400A506F736974696F6E2E
+ 5805000000000000008404400A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C615768697465165465787453657474696E67732E486F
+ 727A416C69676E07074C656164696E67000005545465787400095374796C654E
+ 616D65060873686F727463757405416C69676E07055269676874064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ C002400D4D617267696E732E52696768740500000000000000C001400A506F73
+ 6974696F6E2E580500000000000000C000C00A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C61576869746516546578745365747469
+ 6E67732E486F727A416C69676E07074C656164696E67000007544C61796F7574
+ 00095374796C654E616D6506077375626D61726B05416C69676E070552696768
+ 740A506F736974696F6E2E580500000000000000D404400A53697A652E576964
+ 74680500000000000000A003400B53697A652E48656967687405000000000000
+ 00D003401453697A652E506C6174666F726D44656661756C7408000554506174
+ 680005416C69676E070643656E74657209446174612E506174680A3400000004
+ 00000000000000000000000000000001000000000000000000803F0100000000
+ 00803F0000003F0300000000000000000000000A46696C6C2E436F6C6F720708
+ 636C615768697465064C6F636B6564090748697454657374080A53697A652E57
+ 696474680500000000000000E001400B53697A652E4865696768740500000000
+ 0000008002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6500000000545046300A5452656374616E676C
+ 6500095374796C654E616D65060C6D656E756261727374796C6505416C69676E
+ 070643656E7465720C436C69704368696C6472656E090946696C6C2E4B696E64
+ 07044E6F6E650748697454657374080A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E650756697369626C6508000A5452656374616E676C650005416C69676E
+ 0706436C69656E740A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080C4D617267696E732E4C656674050000000000000080FFBF0B
+ 4D617267696E732E546F70050000000000000080FFBF0D4D617267696E732E52
+ 69676874050000000000000080FFBF0A53697A652E5769647468050000000000
+ 0000D004400B53697A652E4865696768740500000000000000CC04401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000007544C61796F757400095374796C654E616D6506
+ 07636F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E4C
+ 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
+ 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
+ 6474680500000000000000C004400B53697A652E486569676874050000000000
+ 0000C004401453697A652E506C6174666F726D44656661756C74080000005450
+ 463007544C61796F757400095374796C654E616D65060D6D656E756974656D73
74796C6505416C69676E070643656E7465720C4D617267696E732E4C65667405
0000000000000080FF3F0B4D617267696E732E546F70050000000000000080FF
3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
6E732E426F74746F6D050000000000000080FF3F0A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 000000000000009205400B53697A652E4865696768740500000000000000D003
401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 085461624F72646572021C0005544C696E650005416C69676E0703546F70084C
- 696E65547970650703546F700C4D617267696E732E4C65667405000000000000
- 00C000400B4D617267696E732E546F7005000000000000008000400D4D617267
- 696E732E52696768740500000000000000C000400A506F736974696F6E2E5805
- 00000000000000C000400A506F736974696F6E2E590500000000000000800040
- 0A53697A652E57696474680500000000000000B004400B53697A652E48656967
- 6874050000000000000080FF3F1453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F7207097846463135313531350000005450
- 46300A5452656374616E676C6500095374796C654E616D65060D6D656E757669
- 65777374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F72
- 07097846463230323032300A53697A652E57696474680500000000000000C804
+ 085461624F726465720228000A5452656374616E676C650005416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F7207097846463241383245320748
+ 69745465737408074F70616369747905000000000017B7D1F13F0A53697A652E
+ 576964746805000000000000009205400B53697A652E48656967687405000000
+ 00000000D003401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E
+ 00084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
+ 6D6506074F7061636974790A537461727456616C756505000000000000000000
+ 000953746F7056616C7565050000000000000080FF3F0754726967676572060F
+ 497353656C65637465643D747275650E54726967676572496E76657273650610
+ 497353656C65637465643D66616C73650000000A5452656374616E676C650009
+ 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
+ 74656E74730A46696C6C2E436F6C6F7207097846463241383245320748697454
+ 65737408074F70616369747905000000000000000000000A53697A652E576964
+ 746805000000000000009205400B53697A652E48656967687405000000000000
+ 00D003401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E000844
+ 75726174696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70
+ 657274794E616D6506074F7061636974790A537461727456616C756505000000
+ 000000000000000953746F7056616C7565050000000000000080FF3F07547269
+ 67676572061049734D6F7573654F7665723D747275650E54726967676572496E
+ 7665727365061149734D6F7573654F7665723D66616C736500000007544C6179
+ 6F757400095374796C654E616D650605676C79706805416C69676E07044C6566
+ 740A53697A652E57696474680500000000000000C803400B53697A652E486569
+ 6768740500000000000000D003401453697A652E506C6174666F726D44656661
+ 756C74080007544C61796F757400095374796C654E616D650609636865636B6D
+ 61726B05416C69676E0708436F6E74656E7473074F7061636974790500000000
+ 006F1283F53F0A53697A652E57696474680500000000000000C803400B53697A
+ 652E4865696768740500000000000000D003401453697A652E506C6174666F72
+ 6D44656661756C7408000554506174680005416C69676E070643656E74657209
+ 446174612E506174680A58000000070000000000000056D9524391AE2C430100
+ 00009276664365021643010000009F3983432B7C3C43010000009E9AA64382D2
+ B442010000006F1CB04375A4D1420100000026DF8243263F67430300000056D9
+ 524391AE2C430A46696C6C2E436F6C6F720708636C6157686974650748697454
+ 657374080A53697A652E57696474680500000000000000B002400B53697A652E
+ 4865696768740500000000000000B002401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F
+ 6174416E696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F
+ 0C50726F70657274794E616D6506074F7061636974790A537461727456616C75
+ 6505000000000000000000000953746F7056616C7565050000000000000080FF
+ 3F0754726967676572060E4973436865636B65643D747275650E547269676765
+ 72496E7665727365060F4973436865636B65643D66616C73650000000654476C
+ 79706800095374796C654E616D65060A676C7970687374796C650C4D61726769
+ 6E732E4C656674050000000000000080FF3F0B4D617267696E732E546F700500
+ 0000000000008000400D4D617267696E732E52696768740500000000000000C0
+ 00400E4D617267696E732E426F74746F6D050000000000000080FF3F05416C69
+ 676E07044C6566740A53697A652E576964746805000000000000008003400B53
+ 697A652E48656967687405000000000000008003401453697A652E506C617466
+ 6F726D44656661756C740800000654496D61676500095374796C654E616D6506
+ 066269746D61700E4D756C74695265734269746D61700E01000005416C69676E
+ 07044C6566740C4D617267696E732E4C65667405000000000000008000400B4D
+ 617267696E732E546F7005000000000000008000400D4D617267696E732E5269
+ 67687405000000000000008000400E4D617267696E732E426F74746F6D050000
+ 00000000008000400A506F736974696F6E2E5805000000000000008000400A50
+ 6F736974696F6E2E5905000000000000008000400A53697A652E576964746805
+ 00000000000000A803400B53697A652E4865696768740500000000000000B003
+ 401453697A652E506C6174666F726D44656661756C7408000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E07044C656674064C6F
+ 636B6564090748697454657374080C4D617267696E732E4C6566740500000000
+ 0000008002400D4D617267696E732E526967687405000000000000008002400A
+ 506F736974696F6E2E5805000000000000008404400A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000D0
+ 03401453697A652E506C6174666F726D44656661756C74081654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746516546578745365
+ 7474696E67732E486F727A416C69676E07074C656164696E6700000554546578
+ 7400095374796C654E616D65060873686F727463757405416C69676E07055269
+ 676874064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 740500000000000000C002400D4D617267696E732E5269676874050000000000
+ 0000C001400A506F736974696F6E2E580500000000000000C000C00A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000D003401453697A652E506C6174666F726D44656661756C74081654
+ 65787453657474696E67732E466F6E74436F6C6F720708636C61576869746516
+ 5465787453657474696E67732E486F727A416C69676E07074C656164696E6700
+ 0007544C61796F757400095374796C654E616D6506077375626D61726B05416C
+ 69676E070552696768740A506F736974696F6E2E580500000000000000D40440
+ 0A53697A652E57696474680500000000000000A003400B53697A652E48656967
+ 68740500000000000000D003401453697A652E506C6174666F726D4465666175
+ 6C7408000554506174680005416C69676E070643656E74657209446174612E50
+ 6174680A34000000040000000000000000000000000000000100000000000000
+ 0000803F010000000000803F0000003F0300000000000000000000000A46696C
+ 6C2E436F6C6F720708636C615768697465064C6F636B65640907486974546573
+ 74080A53697A652E57696474680500000000000000E001400B53697A652E4865
+ 6967687405000000000000008002401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007
+ 544C61796F757400095374796C654E616D6506126D656E75736570617261746F
+ 727374796C6505416C69676E070643656E7465720C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F72646572022A0005544C696E650005416C69676E0703546F70
+ 084C696E65547970650703546F700C4D617267696E732E4C6566740500000000
+ 000000C000400B4D617267696E732E546F7005000000000000008000400D4D61
+ 7267696E732E52696768740500000000000000C000400A506F736974696F6E2E
+ 580500000000000000C000400A506F736974696F6E2E59050000000000000080
+ 00400A53697A652E57696474680500000000000000B004400B53697A652E4865
+ 69676874050000000000000080FF3F1453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000000
+ 545046300A5452656374616E676C6500095374796C654E616D65060D6D656E75
+ 766965777374796C6505416C69676E070643656E7465720A46696C6C2E436F6C
+ 6F7207097846463230323032300A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
+ 46463135313531350756697369626C6508000A5452656374616E676C65000541
+ 6C69676E0706436C69656E740A46696C6C2E436F6C6F72070978464632303230
+ 32300748697454657374080A53697A652E57696474680500000000000000C804
400B53697A652E4865696768740500000000000000C804401453697A652E506C
6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 3135313531350756697369626C6508000A5452656374616E676C650005416C69
- 676E0706436C69656E740A46696C6C2E436F6C6F720709784646323032303230
- 0748697454657374080A53697A652E57696474680500000000000000C804400B
- 53697A652E4865696768740500000000000000C804401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 31353135000D54536861646F77456666656374000844697374616E6365050000
- 0000000000C0004009446972656374696F6E0500000000000000B4044008536F
- 66746E657373050000000000000080FE3F074F70616369747905000000000000
- 0080FE3F0B536861646F77436F6C6F720708636C61426C61636B00000007544C
- 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
- 06436C69656E740C4D617267696E732E4C656674050000000000000080FF3F0B
- 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
- 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
- 00000000000080FF3F0A53697A652E57696474680500000000000000C004400B
- 53697A652E4865696768740500000000000000C004401453697A652E506C6174
- 666F726D44656661756C74080000005450463007544C61796F75740009537479
- 6C654E616D65060E696D61676563656C6C7374796C6505416C69676E07064365
- 6E7465720756697369626C6508085461624F72646572021D000654496D616765
- 00095374796C654E616D650605696D6167650E4D756C74695265734269746D61
- 700E01000005416C69676E0706436C69656E74064C6F636B6564090748697454
- 657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
- 67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
- 74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
- 00000080FF3F0A53697A652E57696474680500000000000000C004400B53697A
- 652E4865696768740500000000000000C004401453697A652E506C6174666F72
- 6D44656661756C74080000005450463007544C61796F757400095374796C654E
- 616D65060E706F70757063656C6C7374796C6505416C69676E070643656E7465
- 720756697369626C6508085461624F72646572021E0007544C61796F75740005
- 416C69676E070552696768740A506F736974696F6E2E5805000000000000008C
- 04400A53697A652E57696474680500000000000000F002400B53697A652E4865
- 696768740500000000000000C804401453697A652E506C6174666F726D446566
- 61756C7408000554506174680005416C69676E070643656E7465720944617461
- 2E506174680A400000000500000000000000000000000000803F010000000000
- 803F0000803F010000000000003F0000000001000000000000000000803F0300
- 000000000000000000000A46696C6C2E436F6C6F720708636C61576869746507
- 48697454657374080B4D617267696E732E546F700500000000000000E001C00A
- 53697A652E576964746805000000000000008002400B53697A652E4865696768
- 7405000000000000008001401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E6500000554506174680005416C
- 69676E070643656E74657209446174612E506174680A34000000040000000000
- 00000000000000000000010000000000803F00000000010000000000003F0000
- 803F0300000000000000000000000A46696C6C2E436F6C6F720708636C615768
- 6974650748697454657374080B4D617267696E732E546F700500000000000000
- C001400A53697A652E576964746805000000000000008002400B53697A652E48
- 656967687405000000000000008001401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000554546578
- 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
- 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
- 000000000000A001400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E52696768740500000000000000A001400E4D617267696E
- 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
- 000000000000C803400B53697A652E4865696768740500000000000000B80440
- 1453697A652E506C6174666F726D44656661756C740816546578745365747469
- 6E67732E466F6E74436F6C6F720708636C615768697465000000545046300754
- 4C61796F757400095374796C654E616D65060D7465787463656C6C7374796C65
- 05416C69676E070643656E7465720756697369626C6508085461624F72646572
- 021F0007544C61796F757400095374796C654E616D650607636F6E74656E7405
- 416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E732E
- 4C65667405000000000000008001400B4D617267696E732E546F700500000000
- 0000008001400D4D617267696E732E526967687405000000000000008001400E
- 4D617267696E732E426F74746F6D05000000000000008001400A53697A652E57
- 696474680500000000000000A804400B53697A652E4865696768740500000000
- 000000A804401453697A652E506C6174666F726D44656661756C740800000C54
- 42727573684F626A65637400095374796C654E616D65060A666F726567726F75
- 6E6400000C5442727573684F626A65637400095374796C654E616D6506097365
- 6C656374696F6E0B42727573682E436F6C6F7207097839363241383245320000
- 0B54466F6E744F626A65637400095374796C654E616D650604666F6E74000000
- 5450463007544C61796F757400095374796C654E616D6506096D656D6F737479
- 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 00CCCC8806400B53697A652E4865696768740500000000006666F40540145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F726465720220000C5442727573684F626A65637400095374796C654E616D65
- 060A666F726567726F756E6400000C5442727573684F626A6563740009537479
- 6C654E616D65060973656C656374696F6E0B42727573682E436F6C6F72070978
- 374634343735394400000B54466F6E744F626A65637400095374796C654E616D
- 650604666F6E7400000A5452656374616E676C6500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F7207097846463230323032300748697454657374080A53697A652E
- 5769647468050000000000CCCC8806400B53697A652E48656967687405000000
- 00006666F405401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F7207097846463135313531350007544C61796F75740009
- 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
- 0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73
- 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
- 00000000008000400E4D617267696E732E426F74746F6D050000000000000080
- 00400A53697A652E57696474680500000000009899E905400B53697A652E4865
- 696768740500000000006666CC05401453697A652E506C6174666F726D446566
- 61756C740800000A545363726F6C6C42617200095374796C654E616D65060A68
- 7363726F6C6C62617205416C69676E0706426F74746F6D06437572736F720707
- 63724172726F770B536D616C6C4368616E676505000000000000000000000B4F
- 7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E
- 590500000000006666D405400A53697A652E5769647468050000000000CCCC88
- 06400B53697A652E48656967687405000000000000008003401453697A652E50
- 6C6174666F726D44656661756C740800000A545363726F6C6C42617200095374
- 796C654E616D65060A767363726F6C6C62617205416C69676E07055269676874
- 06437572736F72070763724172726F770B536D616C6C4368616E676505000000
- 000000000000000B4F7269656E746174696F6E0708566572746963616C0A506F
- 736974696F6E2E580500000000009899F105400A53697A652E57696474680500
- 0000000000008003400B53697A652E4865696768740500000000006666D40540
- 1453697A652E506C6174666F726D44656661756C7408000007544C61796F7574
- 0005416C69676E0706436C69656E740A53697A652E5769647468050000000000
- 9899F105400B53697A652E4865696768740500000000006666D405401453697A
- 652E506C6174666F726D44656661756C7408000F54536D616C6C5363726F6C6C
- 42617200095374796C654E616D65060F76736D616C6C7363726F6C6C62617205
- 416C69676E0705526967687406437572736F72070763724172726F770B536D61
- 6C6C4368616E676505000000000000000000000B4F7269656E746174696F6E07
- 08566572746963616C0C4D617267696E732E4C65667405000000000000008000
- 400A53697A652E576964746805000000000000008002400B53697A652E486569
+ 313531353135000D54536861646F77456666656374000844697374616E636505
+ 00000000000000C0004009446972656374696F6E0500000000000000B4044008
+ 536F66746E657373050000000000000080FE3F074F7061636974790500000000
+ 00000080FE3F0B536861646F77436F6C6F720708636C61426C61636B00000007
+ 544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967
+ 6E0706436C69656E740C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000C004
+ 400B53697A652E4865696768740500000000000000C004401453697A652E506C
+ 6174666F726D44656661756C74080000005450463007544C61796F7574000953
+ 74796C654E616D65060E696D61676563656C6C7374796C6505416C69676E0706
+ 43656E7465720756697369626C6508085461624F72646572022B000654496D61
+ 676500095374796C654E616D650605696D6167650E4D756C7469526573426974
+ 6D61700E01000005416C69676E0706436C69656E74064C6F636B656409074869
+ 7454657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D
+ 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
+ 676874050000000000000080FF3F0E4D617267696E732E426F74746F6D050000
+ 000000000080FF3F0A53697A652E57696474680500000000000000C004400B53
+ 697A652E4865696768740500000000000000C004401453697A652E506C617466
+ 6F726D44656661756C74080000005450463007544C61796F757400095374796C
+ 654E616D65060E706F70757063656C6C7374796C6505416C69676E070643656E
+ 7465720756697369626C6508085461624F72646572022C0007544C61796F7574
+ 0005416C69676E070552696768740A506F736974696F6E2E5805000000000000
+ 008C04400A53697A652E57696474680500000000000000F002400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C7408000554506174680005416C69676E070643656E746572094461
+ 74612E506174680A400000000500000000000000000000000000803F01000000
+ 0000803F0000803F010000000000003F0000000001000000000000000000803F
+ 0300000000000000000000000A46696C6C2E436F6C6F720708636C6157686974
+ 650748697454657374080B4D617267696E732E546F700500000000000000E001
+ C00A53697A652E576964746805000000000000008002400B53697A652E486569
+ 67687405000000000000008001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000554506174680005
+ 416C69676E070643656E74657209446174612E506174680A3400000004000000
+ 000000000000000000000000010000000000803F00000000010000000000003F
+ 0000803F0300000000000000000000000A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080B4D617267696E732E546F70050000000000
+ 0000C001400A53697A652E576964746805000000000000008002400B53697A65
+ 2E48656967687405000000000000008001401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E74064C6F636B6564090748697454657374080C4D617267696E732E4C656674
+ 0500000000000000A001400B4D617267696E732E546F70050000000000000080
+ 00400D4D617267696E732E52696768740500000000000000A001400E4D617267
+ 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
+ 0500000000000000C803400B53697A652E4865696768740500000000000000B8
+ 04401453697A652E506C6174666F726D44656661756C74081654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746500000054504630
+ 07544C61796F757400095374796C654E616D65060D7465787463656C6C737479
+ 6C6505416C69676E070643656E7465720756697369626C6508085461624F7264
+ 6572022D0007544C61796F757400095374796C654E616D650607636F6E74656E
+ 7405416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E
+ 732E4C65667405000000000000008001400B4D617267696E732E546F70050000
+ 00000000008001400D4D617267696E732E526967687405000000000000008001
+ 400E4D617267696E732E426F74746F6D05000000000000008001400A53697A65
+ 2E57696474680500000000000000A804400B53697A652E486569676874050000
+ 0000000000A804401453697A652E506C6174666F726D44656661756C74080000
+ 0C5442727573684F626A65637400095374796C654E616D65060A666F72656772
+ 6F756E6400000C5442727573684F626A65637400095374796C654E616D650609
+ 73656C656374696F6E0B42727573682E436F6C6F720709783936324138324532
+ 00000B54466F6E744F626A65637400095374796C654E616D650604666F6E7400
+ 00005450463007544C61796F757400095374796C654E616D6506096D656D6F73
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 000000CCCC8806400B53697A652E4865696768740500000000006666F4054014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F72646572022E000C5442727573684F626A65637400095374796C654E61
+ 6D65060A666F726567726F756E6400000C5442727573684F626A656374000953
+ 74796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F7207
+ 0978374634343735394400000B54466F6E744F626A65637400095374796C654E
+ 616D650604666F6E7400000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F7207097846463230323032300748697454657374080A53697A
+ 652E5769647468050000000000CCCC8806400B53697A652E4865696768740500
+ 000000006666F405401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F7207097846463135313531350007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E740C4D617267696E732E4C65667405000000000000008000400B4D61726769
+ 6E732E546F7005000000000000008000400D4D617267696E732E526967687405
+ 000000000000008000400E4D617267696E732E426F74746F6D05000000000000
+ 008000400A53697A652E57696474680500000000009899E905400B53697A652E
+ 4865696768740500000000006666CC05401453697A652E506C6174666F726D44
+ 656661756C740800000A545363726F6C6C42617200095374796C654E616D6506
+ 0A687363726F6C6C62617205416C69676E0706426F74746F6D06437572736F72
+ 070763724172726F770B536D616C6C4368616E67650500000000000000000000
+ 0B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974696F
+ 6E2E590500000000006666D405400A53697A652E5769647468050000000000CC
+ CC8806400B53697A652E48656967687405000000000000008003401453697A65
+ 2E506C6174666F726D44656661756C740800000A545363726F6C6C4261720009
+ 5374796C654E616D65060A767363726F6C6C62617205416C69676E0705526967
+ 687406437572736F72070763724172726F770B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E0708566572746963616C0A
+ 506F736974696F6E2E580500000000009899F105400A53697A652E5769647468
+ 05000000000000008003400B53697A652E4865696768740500000000006666D4
+ 05401453697A652E506C6174666F726D44656661756C7408000007544C61796F
+ 75740005416C69676E0706436C69656E740A53697A652E576964746805000000
+ 00009899F105400B53697A652E4865696768740500000000006666D405401453
+ 697A652E506C6174666F726D44656661756C7408000F54536D616C6C5363726F
+ 6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C6261
+ 7205416C69676E0705526967687406437572736F72070763724172726F770B53
+ 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
+ 6E0708566572746963616C0C4D617267696E732E4C6566740500000000000000
+ 8000400A53697A652E576964746805000000000000008002400B53697A652E48
+ 656967687405000000000000008002401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C650800000F54536D616C6C5363726F6C6C4261
+ 7200095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C
+ 69676E0706426F74746F6D06437572736F72070763724172726F770B536D616C
+ 6C4368616E676505000000000000000000000B4F7269656E746174696F6E070A
+ 486F72697A6F6E74616C0B4D617267696E732E546F7005000000000000008000
+ 400A53697A652E576964746805000000000000009606400B53697A652E486569
67687405000000000000008002401453697A652E506C6174666F726D44656661
- 756C74080756697369626C650800000F54536D616C6C5363726F6C6C42617200
- 095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C6967
- 6E0706426F74746F6D06437572736F72070763724172726F770B536D616C6C43
- 68616E676505000000000000000000000B4F7269656E746174696F6E070A486F
- 72697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A
- 53697A652E576964746805000000000000009606400B53697A652E4865696768
- 7405000000000000008002401453697A652E506C6174666F726D44656661756C
- 74080756697369626C65080000000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D6506146D656D6F5374726F6B65416E696D6174696F6E3108
- 4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
- 060C5374726F6B652E436F6C6F720A537461727456616C756507097846463135
- 313531350953746F7056616C7565070978464634303430343007547269676765
- 72062049734D6F7573654F7665723D747275653B4973466F63757365643D6661
- 6C73650E54726967676572496E7665727365062149734D6F7573654F7665723D
- 66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D6506146D656D6F5374726F6B65416E
- 696D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F
- 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
- 756507097846463430343034300953746F7056616C7565070978464632413832
- 45320754726967676572060E4973466F63757365643D747275650E5472696767
- 6572496E7665727365060F4973466F63757365643D66616C7365000000005450
- 463007544C61796F757400095374796C654E616D65060E6C696E6B6C6162656C
- 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 00000000CCCC8006400B53697A652E4865696768740500000000009A99810440
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F7264657202210005545465787400095374796C654E616D6506047465
- 787405416C69676E0708436F6E74656E74730748697454657374080A53697A65
- 2E5769647468050000000000CCCC8006400B53697A652E486569676874050000
- 0000009A998104401453697A652E506C6174666F726D44656661756C74080454
- 6578740604546578741A5465787453657474696E67732E466F6E742E5374796C
- 654578740A0D0000000404000000000000000400000016546578745365747469
- 6E67732E466F6E74436F6C6F72070D636C61446F64676572626C7565000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
- 6E696D6174696F6E315374796C65084475726174696F6E050000000000CDCCCC
- FB3F07496E7665727365090C50726F70657274794E616D650616546578745365
- 7474696E67732E466F6E74436F6C6F720A537461727456616C7565070D636C61
- 446F64676572626C75650953746F7056616C7565070E636C6144656570736B79
- 626C75650754726967676572063049734D6F7573654F7665723D747275653B49
- 73507265737365643D66616C73653B4973466F63757365643D66616C73650E54
- 726967676572496E7665727365063149734D6F7573654F7665723D66616C7365
- 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
- 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061443
- 6F6C6F72416E696D6174696F6E325374796C65084475726174696F6E05000000
- 0000CDCCCCFB3F0C50726F70657274794E616D6506165465787453657474696E
- 67732E466F6E74436F6C6F720A537461727456616C7565070E636C6144656570
- 736B79626C75650953746F7056616C7565070978464631373537394307547269
- 67676572062F4973507265737365643D747275653B49734D6F7573654F766572
- 3D747275653B4973466F63757365643D66616C7365000000005450463007544C
- 61796F757400095374796C654E616D65060D73697A65677269707374796C6505
- 416C69676E070643656E7465720A53697A652E57696474680500000000000000
- C803400B53697A652E4865696768740500000000000000C803401453697A652E
- 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
- 65720222000A5452656374616E676C6500095374796C654E616D65060A526563
- 74616E676C653105416C69676E070643656E7465720A46696C6C2E436F6C6F72
- 07097846463630363036300A53697A652E57696474680500000000000000A000
- 400B53697A652E4865696768740500000000000000A000401453697A652E506C
- 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 00000A5452656374616E676C6500095374796C654E616D65060A52656374616E
- 676C653205416C69676E070643656E7465720A46696C6C2E436F6C6F72070978
- 46463630363036300C4D617267696E732E4C6566740500000000000000A00240
- 0A53697A652E57696474680500000000000000A000400B53697A652E48656967
- 68740500000000000000A000401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E67
- 6C6500095374796C654E616D65060A52656374616E676C653305416C69676E07
- 0643656E7465720A46696C6C2E436F6C6F7207097846463630363036300C4D61
- 7267696E732E4C6566740500000000000000A002400B4D617267696E732E546F
- 700500000000000000A002400A53697A652E57696474680500000000000000A0
- 00400B53697A652E4865696768740500000000000000A000401453697A652E50
- 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
- 6500000A5452656374616E676C6500095374796C654E616D65060A5265637461
- 6E676C653405416C69676E070643656E7465720A46696C6C2E436F6C6F720709
- 7846463630363036300B4D617267696E732E546F700500000000000000A00240
- 0A53697A652E57696474680500000000000000A000400B53697A652E48656967
- 68740500000000000000A000401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E67
- 6C6500095374796C654E616D65060A52656374616E676C653505416C69676E07
- 0643656E7465720A46696C6C2E436F6C6F7207097846463630363036300B4D61
- 7267696E732E546F700500000000000000A002400D4D617267696E732E526967
- 68740500000000000000A002400A53697A652E57696474680500000000000000
- A000400B53697A652E4865696768740500000000000000A000401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E6500000A5452656374616E676C6500095374796C654E616D65060A52656374
- 616E676C653605416C69676E070643656E7465720A46696C6C2E436F6C6F7207
- 097846463630363036300C4D617267696E732E4C6566740500000000000000A0
- 02400E4D617267696E732E426F74746F6D0500000000000000A002400A53697A
- 652E57696474680500000000000000A000400B53697A652E4865696768740500
- 000000000000A000401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E65000000545046300A5452656374616E
- 676C6500095374796C654E616D65060E7374617475736261727374796C650541
- 6C69676E070643656E7465720C436C69704368696C6472656E090A46696C6C2E
- 436F6C6F7207097846463235323532350553696465730B03546F70000A53697A
- 652E57696474680500000000000000F004400B53697A652E4865696768740500
- 000000000000C804401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F7207097846463135313531350756697369626C6508
- 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
- 69676E070552696768740A506F736974696F6E2E5805000000000000008C0440
- 0A53697A652E57696474680500000000000000C803400B53697A652E48656967
- 68740500000000000000C804401453697A652E506C6174666F726D4465666175
- 6C740800095453697A654772697000095374796C654E616D65060973697A6567
- 7267697005416C69676E0706426F74746F6D0A506F736974696F6E2E59050000
- 0000000000C803400A53697A652E57696474680500000000000000C803400B53
- 697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C740800000000545046300A5452656374616E676C650009
- 5374796C654E616D65060C746F6F6C6261727374796C6505416C69676E070643
- 656E7465720A46696C6C2E436F6C6F7207097846463235323532350748697454
- 657374080553696465730B06426F74746F6D000A53697A652E57696474680500
- 000000000000C804400B53697A652E4865696768740500000000000000C80440
- 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
- 6C6F7207097846463135313531350756697369626C650800005450463007544C
- 61796F757400095374796C654E616D65061570726F6772657373626172657272
- 6F727374796C6505416C69676E070643656E7465720A53697A652E5769647468
- 05000000000033338505400B53697A652E4865696768740500000000009999E1
+ 756C74080756697369626C65080000000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D6506146D656D6F5374726F6B65416E696D6174696F6E
+ 31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
+ 6D65060C5374726F6B652E436F6C6F720A537461727456616C75650709784646
+ 3135313531350953746F7056616C756507097846463430343034300754726967
+ 676572062049734D6F7573654F7665723D747275653B4973466F63757365643D
+ 66616C73650E54726967676572496E7665727365062149734D6F7573654F7665
+ 723D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D6506146D656D6F5374726F6B65
+ 416E696D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50
+ 726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456
+ 616C756507097846463430343034300953746F7056616C756507097846463241
+ 383245320754726967676572060E4973466F63757365643D747275650E547269
+ 67676572496E7665727365060F4973466F63757365643D66616C736500000000
+ 5450463007544C61796F757400095374796C654E616D65060E6C696E6B6C6162
+ 656C7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 050000000000CCCC8006400B53697A652E4865696768740500000000009A9981
04401453697A652E506C6174666F726D44656661756C74080756697369626C65
- 08085461624F726465720223000A5452656374616E676C6500095374796C654E
- 616D65060668747261636B05416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F720709784646323032303230064C6F636B65640907486974546573
- 74080A53697A652E576964746805000000000033338505400B53697A652E4865
- 696768740500000000009999E104401453697A652E506C6174666F726D446566
- 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000A54
- 52656374616E676C6500095374796C654E616D65060A68696E64696361746F72
- 05416C69676E07044C6566740A46696C6C2E436F6C6F72070978464645323241
- 3241064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 050000000000000080FF3F0B4D617267696E732E546F70050000000000000080
- FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
- 696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58
- 050000000000000080FF3F0A506F736974696F6E2E59050000000000000080FF
- 3F0A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000009999D904401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E650000000A545265637461
- 6E676C6500095374796C654E616D65060676747261636B05416C69676E070843
- 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F
- 636B6564090748697454657374080A53697A652E576964746805000000000033
- 338505400B53697A652E4865696768740500000000009999E104401453697A65
- 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
- 784646313531353135000A5452656374616E676C6500095374796C654E616D65
- 060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E
- 436F6C6F720709784646453232413241064C6F636B6564090748697454657374
- 080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E
- 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
- 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
- 80FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F73697469
- 6F6E2E5905000000000099998904400A53697A652E5769647468050000000000
- 33338105400B53697A652E4865696768740500000000000000A803401453697A
+ 08085461624F72646572022F0005545465787400095374796C654E616D650604
+ 7465787405416C69676E0708436F6E74656E74730748697454657374080A5369
+ 7A652E5769647468050000000000CCCC8006400B53697A652E48656967687405
+ 00000000009A998104401453697A652E506C6174666F726D44656661756C7408
+ 04546578740604546578741A5465787453657474696E67732E466F6E742E5374
+ 796C654578740A0D000000040400000000000000040000001654657874536574
+ 74696E67732E466F6E74436F6C6F72070D636C61446F64676572626C7565000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
+ 72416E696D6174696F6E315374796C65084475726174696F6E050000000000CD
+ CCCCFB3F07496E7665727365090C50726F70657274794E616D65061654657874
+ 53657474696E67732E466F6E74436F6C6F720A537461727456616C7565070D63
+ 6C61446F64676572626C75650953746F7056616C7565070E636C614465657073
+ 6B79626C75650754726967676572063049734D6F7573654F7665723D74727565
+ 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
+ 0E54726967676572496E7665727365063149734D6F7573654F7665723D66616C
+ 73653B4973507265737365643D66616C73653B4973466F63757365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 14436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E0500
+ 00000000CDCCCCFB3F0C50726F70657274794E616D6506165465787453657474
+ 696E67732E466F6E74436F6C6F720A537461727456616C7565070E636C614465
+ 6570736B79626C75650953746F7056616C756507097846463137353739430754
+ 726967676572062F4973507265737365643D747275653B49734D6F7573654F76
+ 65723D747275653B4973466F63757365643D66616C7365000000005450463007
+ 544C61796F757400095374796C654E616D65060D73697A65677269707374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000C803400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
+ 726465720230000A5452656374616E676C6500095374796C654E616D65060A52
+ 656374616E676C653105416C69676E070643656E7465720A46696C6C2E436F6C
+ 6F7207097846463630363036300A53697A652E57696474680500000000000000
+ A000400B53697A652E4865696768740500000000000000A000401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E6500000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653205416C69676E070643656E7465720A46696C6C2E436F6C6F7207
+ 097846463630363036300C4D617267696E732E4C6566740500000000000000A0
+ 02400A53697A652E57696474680500000000000000A000400B53697A652E4865
+ 696768740500000000000000A000401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653305416C6967
+ 6E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300C
+ 4D617267696E732E4C6566740500000000000000A002400B4D617267696E732E
+ 546F700500000000000000A002400A53697A652E576964746805000000000000
+ 00A000400B53697A652E4865696768740500000000000000A000401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6500000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653405416C69676E070643656E7465720A46696C6C2E436F6C6F72
+ 07097846463630363036300B4D617267696E732E546F700500000000000000A0
+ 02400A53697A652E57696474680500000000000000A000400B53697A652E4865
+ 696768740500000000000000A000401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653505416C6967
+ 6E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300B
+ 4D617267696E732E546F700500000000000000A002400D4D617267696E732E52
+ 696768740500000000000000A002400A53697A652E5769647468050000000000
+ 0000A000400B53697A652E4865696768740500000000000000A000401453697A
652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E65000000005450463007544C61796F757400095374796C654E616D6506
- 13736D616C6C7363726F6C6C6261727374796C6505416C69676E070643656E74
- 65720756697369626C6508085461624F726465720224000654547261636B0009
- 5374796C654E616D65060668747261636B05416C69676E0706436C69656E7406
- 4C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A
- 53697A652E57696474680500000000000000C804400B53697A652E4865696768
- 740500000000000000C804401453697A652E506C6174666F726D44656661756C
- 74080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B73
- 74796C6500000654547261636B00095374796C654E616D65060676747261636B
- 05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E74617469
- 6F6E070A486F72697A6F6E74616C0A53697A652E576964746805000000000000
- 00C804400B53697A652E4865696768740500000000000000C804401453697A65
- 2E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570061473
- 63726F6C6C62617276747261636B7374796C650000005450463007544C61796F
- 757400095374796C654E616D65060D636F6D626F626F787374796C6505416C69
- 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 4E6F6E6500000A5452656374616E676C6500095374796C654E616D65060A5265
+ 6374616E676C653605416C69676E070643656E7465720A46696C6C2E436F6C6F
+ 7207097846463630363036300C4D617267696E732E4C65667405000000000000
+ 00A002400E4D617267696E732E426F74746F6D0500000000000000A002400A53
+ 697A652E57696474680500000000000000A000400B53697A652E486569676874
+ 0500000000000000A000401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000000545046300A5452656374
+ 616E676C6500095374796C654E616D65060E7374617475736261727374796C65
+ 05416C69676E070643656E7465720C436C69704368696C6472656E090A46696C
+ 6C2E436F6C6F7207097846463235323532350553696465730B03546F70000A53
+ 697A652E57696474680500000000000000F004400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F7207097846463135313531350756697369626C
+ 65080007544C61796F757400095374796C654E616D6506074C61796F75743105
+ 416C69676E070552696768740A506F736974696F6E2E5805000000000000008C
+ 04400A53697A652E57696474680500000000000000C803400B53697A652E4865
+ 696768740500000000000000C804401453697A652E506C6174666F726D446566
+ 61756C740800095453697A654772697000095374796C654E616D65060973697A
+ 65677267697005416C69676E0706426F74746F6D0A506F736974696F6E2E5905
+ 00000000000000C803400A53697A652E57696474680500000000000000C80340
0B53697A652E4865696768740500000000000000C803401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 25000C5442727573684F626A65637400095374796C654E616D65060A666F7265
- 67726F756E6400000B54466F6E744F626A65637400095374796C654E616D6506
- 04666F6E7409466F6E742E53697A650500000000000000D00240000007544C61
- 796F757400095374796C654E616D65060A6261636B67726F756E6405416C6967
- 6E0708436F6E74656E74730A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
- 6174666F726D44656661756C7408000A5452656374616E676C6500095374796C
- 654E616D65060A52656374616E676C653105416C69676E0706436C69656E740A
- 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
- 697A652E57696474680500000000000000C805400B53697A652E486569676874
- 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 080B5374726F6B652E4B696E6407044E6F6E650007544C61796F757400095374
- 796C654E616D650611427574746F6E5374796C654F626A65637405416C69676E
- 070846697452696768740B4D617267696E732E546F70050000000000000080FF
- 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
- 6E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805
- 00000000005ED99705400A506F736974696F6E2E59050000000000000080FF3F
- 0A53697A652E5769647468050000000000889AB803400B53697A652E48656967
- 68740500000000000000B803401453697A652E506C6174666F726D4465666175
- 6C74080007544C61796F757400095374796C654E616D6506074C61796F757431
- 05416C69676E070643656E7465720C4D617267696E732E4C6566740500000000
- 00000080FF3F0A53697A652E57696474680500000000000000A002400B53697A
- 652E4865696768740500000000000000C001401453697A652E506C6174666F72
- 6D44656661756C74080005545061746800095374796C654E616D650605506174
- 683105416C69676E0706436C69656E7409446174612E506174680A3400000004
- 000000000000000000C8420000C84201000000000096430000C8420100000000
- 00484300009643030000000000C8420000C8420A46696C6C2E436F6C6F720708
- 636C6157686974650748697454657374080A53697A652E576964746805000000
- 00000000A002400B53697A652E4865696768740500000000000000C001401453
+ 74666F726D44656661756C740800000000545046300A5452656374616E676C65
+ 00095374796C654E616D65060C746F6F6C6261727374796C6505416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F720709784646323532353235074869
+ 7454657374080553696465730B06426F74746F6D000A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F7207097846463135313531350756697369626C650800005450463007
+ 544C61796F757400095374796C654E616D65061570726F677265737362617265
+ 72726F727374796C6505416C69676E070643656E7465720A53697A652E576964
+ 746805000000000033338505400B53697A652E48656967687405000000000099
+ 99E104401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F726465720232000A5452656374616E676C6500095374796C
+ 654E616D65060668747261636B05416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F720709784646323032303230064C6F636B6564090748697454
+ 657374080A53697A652E576964746805000000000033338505400B53697A652E
+ 4865696768740500000000009999E104401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 0A5452656374616E676C6500095374796C654E616D65060A68696E6469636174
+ 6F7205416C69676E07044C6566740A46696C6C2E436F6C6F7207097846464532
+ 32413241064C6F636B6564090748697454657374080C4D617267696E732E4C65
+ 6674050000000000000080FF3F0B4D617267696E732E546F7005000000000000
+ 0080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E
+ 2E58050000000000000080FF3F0A506F736974696F6E2E590500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000009999D904401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000A54526563
+ 74616E676C6500095374796C654E616D65060676747261636B05416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F72070978464632303230323006
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 0033338505400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000A5452656374616E676C6500095374796C654E61
+ 6D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C
+ 6C2E436F6C6F720709784646453232413241064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
+ 74696F6E2E5905000000000099998904400A53697A652E576964746805000000
+ 000033338105400B53697A652E4865696768740500000000000000A803401453
697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E65000000000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572
- 6174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46
- 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
- 53746F7056616C75650709784646343034303430075472696767657206304973
- 4D6F7573654F7665723D747275653B4973507265737365643D66616C73653B49
- 73466F63757365643D66616C73650E54726967676572496E7665727365063149
- 734D6F7573654F7665723D66616C73653B4973507265737365643D66616C7365
- 3B4973466F63757365643D66616C736500000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
- 696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274
- 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
- 463430343034300953746F7056616C7565070978464631373537394307547269
- 67676572062F4973507265737365643D747275653B49734D6F7573654F766572
- 3D747275653B4973466F63757365643D66616C736500000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
- 6E696D6174696F6E33084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 6507097846463241383245320953746F7056616C756507097846463137353739
- 430754726967676572062E4973507265737365643D747275653B49734D6F7573
- 654F7665723D747275653B4973466F63757365643D747275650E547269676765
- 72496E7665727365062F4973507265737365643D66616C73653B49734D6F7573
- 654F7665723D747275653B4973466F63757365643D747275650000000007544C
- 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
- 06436C69656E74064C6F636B6564090C4D617267696E732E4C65667405000000
- 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
- 617267696E732E52696768740500000000000000D803400E4D617267696E732E
- 426F74746F6D05000000000000008000400A53697A652E576964746805000000
- 000000008E05400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
- 6F757400095374796C654E616D65060D73706C69747465727374796C6505416C
- 69676E070643656E7465720A53697A652E57696474680500000000000000A904
- 400B53697A652E4865696768740500000000000080C105401453697A652E506C
- 6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 0226000A5452656374616E676C6500095374796C654E616D65060A5265637461
- 6E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F720709
- 7846463330333033300748697454657374080553696465730B044C6566740552
- 69676874000A53697A652E57696474680500000000000000A904400B53697A65
- 2E4865696768740500000000000080C105401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 000007544C61796F757400095374796C654E616D6506046772697005416C6967
- 6E0706436C69656E740A53697A652E57696474680500000000000000A904400B
- 53697A652E4865696768740500000000000080C105401453697A652E506C6174
- 666F726D44656661756C7408000754436972636C6500095374796C654E616D65
- 0607436972636C653105416C69676E070643656E7465720A46696C6C2E436F6C
- 6F7207097846463430343034300A53697A652E57696474680500000000000000
- E001400B53697A652E4865696768740500000000000000E001401453697A652E
- 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
- 464631353135313500000754436972636C6500095374796C654E616D65060743
- 6972636C653205416C69676E070643656E7465720A46696C6C2E436F6C6F7207
- 097846463430343034300B4D617267696E732E546F700500000000000000A003
- 400A53697A652E57696474680500000000000000E001400B53697A652E486569
- 6768740500000000000000E001401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F72070978464631353135313500000754
- 436972636C6500095374796C654E616D650607436972636C653305416C69676E
- 070643656E7465720A46696C6C2E436F6C6F7207097846463430343034300E4D
- 617267696E732E426F74746F6D0500000000000000A003400A53697A652E5769
- 6474680500000000000000E001400B53697A652E486569676874050000000000
- 0000E001401453697A652E506C6174666F726D44656661756C74080C5374726F
- 6B652E436F6C6F720709784646313531353135000000005450463007544C6179
- 6F757400095374796C654E616D650610636C6F7365627574746F6E7374796C65
- 05416C69676E070643656E7465720A53697A652E576964746805000000000000
- 00C804400B53697A652E4865696768740500000000000000C803401453697A65
- 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
- 6465720227000A5452656374616E676C6500095374796C654E616D65060B636C
- 6F7365627574746F6E05416C69676E0706436C69656E7413456E61626C654472
- 6167486967686C69676874080A46696C6C2E436F6C6F72070978464632303230
- 32300748697454657374080A53697A652E57696474680500000000000000C804
- 400B53697A652E4865696768740500000000000000C803401453697A652E506C
- 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F
- 6C6F72416E696D6174696F6E315374796C65084475726174696F6E0500000000
- 00CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
- 537461727456616C756507097846463230323032300953746F7056616C756507
- 097846464646363135370754726967676572062049734D6F7573654F7665723D
- 747275653B4973507265737365643D66616C73650E54726967676572496E7665
- 727365062149734D6F7573654F7665723D66616C73653B497350726573736564
- 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
- 616D650614436F6C6F72416E696D6174696F6E325374796C6508447572617469
- 6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C
- 2E436F6C6F720A537461727456616C756507097846464646363135370953746F
- 7056616C756507097846464532344634350754726967676572061F49734D6F75
- 73654F7665723D747275653B4973507265737365643D747275650E5472696767
- 6572496E7665727365062049734D6F7573654F7665723D747275653B49735072
- 65737365643D66616C736500000005545061746800095374796C654E616D6506
- 05506174683105416C69676E070643656E74657209446174612E506174680AC4
- 00000010000000000000000000A0C00000704101000000000070410000A0C001
- 000000000048420000F041010000000000AA420000A0C0010000000000D24200
- 0070410100000000008C4200004842010000000000D2420000B4420100000000
- 00AA420000DC42020000003BDF34429E6F8C4202000000FE547D427FAAB04202
- 000000000048420000964201000000000070410000DC42010000000000A0C000
- 00B442010000000000F04100005C42010000000000A0C0000070410300000000
- 00A0C0000070410A46696C6C2E436F6C6F720708636C61576869746507486974
- 54657374080A53697A652E57696474680500000000000000A002400B53697A65
- 2E4865696768740500000000000000A002401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000545046
- 3007544C61796F757400095374796C654E616D65060E6D6178627574746F6E73
- 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
- 0000000000C804400B53697A652E4865696768740500000000000000C8034014
- 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
- 61624F726465720228000A5452656374616E676C6500095374796C654E616D65
- 06096D6178627574746F6E05416C69676E0706436C69656E740A46696C6C2E43
- 6F6C6F7207097846463230323032300748697454657374080A53697A652E5769
- 6474680500000000000000C804400B53697A652E486569676874050000000000
- 0000C803401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508
- 4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
- 060A46696C6C2E436F6C6F720A537461727456616C7565070978464632303230
- 32300953746F7056616C75650709784646324138324532075472696767657206
- 2049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
- 650E54726967676572496E7665727365062149734D6F7573654F7665723D6661
- 6C73653B4973507265737365643D66616C736500000F54436F6C6F72416E696D
- 6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E
- 325374796C65084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
- 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
- 7846463241383245320953746F7056616C756507097846463137353739430754
- 726967676572061F49734D6F7573654F7665723D747275653B49735072657373
- 65643D747275650E54726967676572496E7665727365062049734D6F7573654F
- 7665723D747275653B4973507265737365643D66616C73650000000554506174
- 6800095374796C654E616D650605506174683105416C69676E070643656E7465
- 7209446174612E506174680A5800000007000000000000000000C8420000C842
- 0100000000002F440000C8420100000000002F4400002F440100000000800944
- 00800944010000000080094400007A430100000000007A4300007A4303000000
- 0000C8420000C8420A46696C6C2E436F6C6F720708636C615768697465074869
- 7454657374080A53697A652E57696474680500000000000000A002400B53697A
- 652E4865696768740500000000000000A002401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000005450
- 463007544C61796F757400095374796C654E616D65060E6D696E627574746F6E
- 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
- 000000000000C804400B53697A652E4865696768740500000000000000C80340
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
- 5461624F726465720229000A5452656374616E676C6500095374796C654E616D
- 6506096D696E627574746F6E05416C69676E0706436C69656E740A46696C6C2E
- 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 000000C803401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00
- 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
- 084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D
- 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646323032
- 3032300953746F7056616C756507097846463241383245320754726967676572
- 062049734D6F7573654F7665723D747275653B4973507265737365643D66616C
- 73650E54726967676572496E7665727365062149734D6F7573654F7665723D66
- 616C73653B4973507265737365643D66616C736500000F54436F6C6F72416E69
- 6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F
- 6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C50726F70
- 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
- 097846463241383245320953746F7056616C7565070978464631373537394307
- 54726967676572061F49734D6F7573654F7665723D747275653B497350726573
- 7365643D747275650E54726967676572496E7665727365062049734D6F757365
- 4F7665723D747275653B4973507265737365643D66616C736500000005545061
- 746800095374796C654E616D650605506174683105416C69676E070643656E74
- 657209446174612E506174680A40000000050000000000000000002F44008009
- 440100000000002F4400002F44010000000000C84200002F44010000000000C8
- 42008009440300000000002F44008009440A46696C6C2E436F6C6F720708636C
- 6157686974650748697454657374080B4D617267696E732E546F700500000000
- 000000A002400D526F746174696F6E416E676C650500000000000000B406400A
- 53697A652E57696474680500000000000000A002400B53697A652E4865696768
- 740500000000000000C000401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C6179
- 6F757400095374796C654E616D65060E726573627574746F6E7374796C650541
+ 07044E6F6E65000000005450463007544C61796F757400095374796C654E616D
+ 650613736D616C6C7363726F6C6C6261727374796C6505416C69676E07064365
+ 6E7465720756697369626C6508085461624F726465720234000654547261636B
+ 00095374796C654E616D65060668747261636B05416C69676E0706436C69656E
+ 74064C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E7461
+ 6C0A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B757006147363726F6C6C6261726874726163
+ 6B7374796C6500000654547261636B00095374796C654E616D65060676747261
+ 636B05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E7461
+ 74696F6E070A486F72697A6F6E74616C0A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006
+ 147363726F6C6C62617276747261636B7374796C650000005450463007544C61
+ 796F757400095374796C654E616D65060D636F6D626F626F787374796C650541
6C69676E070643656E7465720A53697A652E57696474680500000000000000C8
- 04400B53697A652E4865696768740500000000000000C803401453697A652E50
+ 05400B53697A652E4865696768740500000000000000C803401453697A652E50
6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 72022A000A5452656374616E676C6500095374796C654E616D65060972657362
- 7574746F6E05416C69676E0706436C69656E740A46696C6C2E436F6C6F720709
- 7846463230323032300748697454657374080A53697A652E5769647468050000
- 0000000000C804400B53697A652E4865696768740500000000000000C8034014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E
- 616D650614436F6C6F72416E696D6174696F6E315374796C6508447572617469
- 6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C
- 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
- 7056616C756507097846463241383245320754726967676572062049734D6F75
- 73654F7665723D747275653B4973507265737365643D66616C73650E54726967
- 676572496E7665727365062149734D6F7573654F7665723D66616C73653B4973
- 507265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
- 095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65
- 084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D
- 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646324138
- 3245320953746F7056616C756507097846463137353739430754726967676572
- 061F49734D6F7573654F7665723D747275653B4973507265737365643D747275
- 650E54726967676572496E7665727365062049734D6F7573654F7665723D7472
- 75653B4973507265737365643D66616C73650000000554506174680009537479
- 6C654E616D650605506174683105416C69676E070643656E7465720944617461
- 2E506174680A5800000007000000000000000000C8420000C842010000000000
- 2F440000C8420100000000002F4400002F440100000000800944008009440100
- 00000080094400007A430100000000007A4300007A43030000000000C8420000
- C8420A46696C6C2E436F6C6F720708636C615768697465074869745465737408
- 0D526F746174696F6E416E676C650500000000000000B406400A53697A652E57
- 696474680500000000000000A002400B53697A652E4865696768740500000000
- 000000A002401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E650000005450463007544C61796F7574000953
- 74796C654E616D65061177696E646F77626F726465727374796C6505416C6967
+ 720235000C5442727573684F626A65637400095374796C654E616D65060A666F
+ 726567726F756E6400000B54466F6E744F626A65637400095374796C654E616D
+ 650604666F6E7409466F6E742E53697A650500000000000000D0024000000754
+ 4C61796F757400095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0708436F6E74656E74730A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C7408000A5452656374616E676C6500095374
+ 796C654E616D65060A52656374616E676C653105416C69676E0706436C69656E
+ 740A46696C6C2E436F6C6F720709784646323032303230074869745465737408
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650007544C61796F75740009
+ 5374796C654E616D650611427574746F6E5374796C654F626A65637405416C69
+ 676E070846697452696768740B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
+ 580500000000005ED99705400A506F736974696F6E2E59050000000000000080
+ FF3F0A53697A652E5769647468050000000000889AB803400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C74080007544C61796F757400095374796C654E616D6506074C61796F75
+ 743105416C69676E070643656E7465720C4D617267696E732E4C656674050000
+ 000000000080FF3F0A53697A652E57696474680500000000000000A002400B53
+ 697A652E4865696768740500000000000000C001401453697A652E506C617466
+ 6F726D44656661756C74080005545061746800095374796C654E616D65060550
+ 6174683105416C69676E0706436C69656E7409446174612E506174680A340000
+ 0004000000000000000000C8420000C84201000000000096430000C842010000
+ 000000484300009643030000000000C8420000C8420A46696C6C2E436F6C6F72
+ 0708636C6157686974650748697454657374080A53697A652E57696474680500
+ 000000000000A002400B53697A652E4865696768740500000000000000C00140
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E310844
+ 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
+ 300953746F7056616C7565070978464634303430343007547269676765720630
+ 49734D6F7573654F7665723D747275653B4973507265737365643D66616C7365
+ 3B4973466F63757365643D66616C73650E54726967676572496E766572736506
+ 3149734D6F7573654F7665723D66616C73653B4973507265737365643D66616C
+ 73653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463430343034300953746F7056616C756507097846463137353739430754
+ 726967676572062F4973507265737365643D747275653B49734D6F7573654F76
+ 65723D747275653B4973466F63757365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E33084475726174696F6E050000000000CDCCCCFB3F0C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463241383245320953746F7056616C75650709784646313735
+ 3739430754726967676572062E4973507265737365643D747275653B49734D6F
+ 7573654F7665723D747275653B4973466F63757365643D747275650E54726967
+ 676572496E7665727365062F4973507265737365643D66616C73653B49734D6F
+ 7573654F7665723D747275653B4973466F63757365643D747275650000000007
+ 544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967
+ 6E0706436C69656E74064C6F636B6564090C4D617267696E732E4C6566740500
+ 0000000000008000400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E52696768740500000000000000D803400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
+ 0000000000008E05400B53697A652E4865696768740500000000000000A80340
+ 1453697A652E506C6174666F726D44656661756C74080000005450463007544C
+ 61796F757400095374796C654E616D65060D73706C69747465727374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ A904400B53697A652E4865696768740500000000000080C105401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 65720236000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F72
+ 07097846463330333033300748697454657374080553696465730B044C656674
+ 055269676874000A53697A652E57696474680500000000000000A904400B5369
+ 7A652E4865696768740500000000000080C105401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 3135000007544C61796F757400095374796C654E616D6506046772697005416C
+ 69676E0706436C69656E740A53697A652E57696474680500000000000000A904
+ 400B53697A652E4865696768740500000000000080C105401453697A652E506C
+ 6174666F726D44656661756C7408000754436972636C6500095374796C654E61
+ 6D650607436972636C653105416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463430343034300A53697A652E5769647468050000000000
+ 0000E001400B53697A652E4865696768740500000000000000E001401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 0978464631353135313500000754436972636C6500095374796C654E616D6506
+ 07436972636C653205416C69676E070643656E7465720A46696C6C2E436F6C6F
+ 7207097846463430343034300B4D617267696E732E546F700500000000000000
+ A003400A53697A652E57696474680500000000000000E001400B53697A652E48
+ 65696768740500000000000000E001401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350000
+ 0754436972636C6500095374796C654E616D650607436972636C653305416C69
+ 676E070643656E7465720A46696C6C2E436F6C6F720709784646343034303430
+ 0E4D617267696E732E426F74746F6D0500000000000000A003400A53697A652E
+ 57696474680500000000000000E001400B53697A652E48656967687405000000
+ 00000000E001401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F720709784646313531353135000000005450463007544C
+ 61796F757400095374796C654E616D650610636C6F7365627574746F6E737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
+ 4F726465720237000A5452656374616E676C6500095374796C654E616D65060B
+ 636C6F7365627574746F6E05416C69676E0706436C69656E7413456E61626C65
+ 44726167486967686C69676874080A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463230323032300953746F7056616C75
+ 6507097846464646363135370754726967676572062049734D6F7573654F7665
+ 723D747275653B4973507265737365643D66616C73650E54726967676572496E
+ 7665727365062149734D6F7573654F7665723D66616C73653B49735072657373
+ 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614436F6C6F72416E696D6174696F6E325374796C650844757261
+ 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846464646363135370953
+ 746F7056616C756507097846464532344634350754726967676572061F49734D
+ 6F7573654F7665723D747275653B4973507265737365643D747275650E547269
+ 67676572496E7665727365062049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C736500000005545061746800095374796C654E616D
+ 650605506174683105416C69676E070643656E74657209446174612E50617468
+ 0AC400000010000000000000000000A0C00000704101000000000070410000A0
+ C001000000000048420000F041010000000000AA420000A0C0010000000000D2
+ 42000070410100000000008C4200004842010000000000D2420000B442010000
+ 000000AA420000DC42020000003BDF34429E6F8C4202000000FE547D427FAAB0
+ 4202000000000048420000964201000000000070410000DC42010000000000A0
+ C00000B442010000000000F04100005C42010000000000A0C000007041030000
+ 000000A0C0000070410A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080A53697A652E57696474680500000000000000A002400B5369
+ 7A652E4865696768740500000000000000A002401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000054
+ 50463007544C61796F757400095374796C654E616D65060E6D6178627574746F
+ 6E7374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 085461624F726465720238000A5452656374616E676C6500095374796C654E61
+ 6D6506096D6178627574746F6E05416C69676E0706436C69656E740A46696C6C
+ 2E436F6C6F7207097846463230323032300748697454657374080A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00000000C803401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C
+ 65084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463230
+ 323032300953746F7056616C7565070978464632413832453207547269676765
+ 72062049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C73650E54726967676572496E7665727365062149734D6F7573654F7665723D
+ 66616C73653B4973507265737365643D66616C736500000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469
+ 6F6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463241383245320953746F7056616C75650709784646313735373943
+ 0754726967676572061F49734D6F7573654F7665723D747275653B4973507265
+ 737365643D747275650E54726967676572496E7665727365062049734D6F7573
+ 654F7665723D747275653B4973507265737365643D66616C7365000000055450
+ 61746800095374796C654E616D650605506174683105416C69676E070643656E
+ 74657209446174612E506174680A5800000007000000000000000000C8420000
+ C8420100000000002F440000C8420100000000002F4400002F44010000000080
+ 094400800944010000000080094400007A430100000000007A4300007A430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080A53697A652E57696474680500000000000000A002400B53
+ 697A652E4865696768740500000000000000A002401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 5450463007544C61796F757400095374796C654E616D65060E6D696E62757474
+ 6F6E7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F726465720239000A5452656374616E676C6500095374796C654E
+ 616D6506096D696E627574746F6E05416C69676E0706436C69656E740A46696C
+ 6C2E436F6C6F7207097846463230323032300748697454657374080A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E31537479
+ 6C65084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 30323032300953746F7056616C75650709784646324138324532075472696767
+ 6572062049734D6F7573654F7665723D747275653B4973507265737365643D66
+ 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
+ 3D66616C73653B4973507265737365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
+ 696F6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463241383245320953746F7056616C756507097846463137353739
+ 430754726967676572061F49734D6F7573654F7665723D747275653B49735072
+ 65737365643D747275650E54726967676572496E7665727365062049734D6F75
+ 73654F7665723D747275653B4973507265737365643D66616C73650000000554
+ 5061746800095374796C654E616D650605506174683105416C69676E07064365
+ 6E74657209446174612E506174680A40000000050000000000000000002F4400
+ 8009440100000000002F4400002F44010000000000C84200002F440100000000
+ 00C842008009440300000000002F44008009440A46696C6C2E436F6C6F720708
+ 636C6157686974650748697454657374080B4D617267696E732E546F70050000
+ 0000000000A002400D526F746174696F6E416E676C650500000000000000B406
+ 400A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C000401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C
+ 61796F757400095374796C654E616D65060E726573627574746F6E7374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C803401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
+ 646572023A000A5452656374616E676C6500095374796C654E616D6506097265
+ 73627574746F6E05416C69676E0706436C69656E740A46696C6C2E436F6C6F72
+ 07097846463230323032300748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614436F6C6F72416E696D6174696F6E315374796C650844757261
+ 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463241383245320754726967676572062049734D
+ 6F7573654F7665723D747275653B4973507265737365643D66616C73650E5472
+ 6967676572496E7665727365062149734D6F7573654F7665723D66616C73653B
+ 4973507265737365643D66616C736500000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E32537479
+ 6C65084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 41383245320953746F7056616C75650709784646313735373943075472696767
+ 6572061F49734D6F7573654F7665723D747275653B4973507265737365643D74
+ 7275650E54726967676572496E7665727365062049734D6F7573654F7665723D
+ 747275653B4973507265737365643D66616C7365000000055450617468000953
+ 74796C654E616D650605506174683105416C69676E070643656E746572094461
+ 74612E506174680A5800000007000000000000000000C8420000C84201000000
+ 00002F440000C8420100000000002F4400002F44010000000080094400800944
+ 010000000080094400007A430100000000007A4300007A43030000000000C842
+ 0000C8420A46696C6C2E436F6C6F720708636C61576869746507486974546573
+ 74080D526F746174696F6E416E676C650500000000000000B406400A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000A002401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E650000005450463007544C61796F757400
+ 095374796C654E616D65060F746F6F6C77696E646F777374796C6505416C6967
6E070643656E7465720A53697A652E576964746805000000000056D5AF07400B
53697A652E4865696768740500000000000000B306401453697A652E506C6174
- 666F726D44656661756C74080756697369626C6508085461624F72646572022B
+ 666F726D44656661756C74080756697369626C6508085461624F726465720241
000A5452656374616E676C6500095374796C654E616D6506046D61736B05416C
69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646313031
3031300A53697A652E576964746805000000000056D5AF07400B53697A652E48
@@ -14083,18 +15055,18 @@ object MainForm: TMainForm
6661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C65
08000007544C61796F757400095374796C654E616D6506046C65667405416C69
676E07084D6F73744C656674064C6F636B6564090A506F736974696F6E2E5905
- 00000000000000F003400A53697A652E57696474680500000000000000A00140
- 0B53697A652E48656967687405000000000000009506401453697A652E506C61
+ 00000000000000C803400A53697A652E57696474680500000000000000A00140
+ 0B53697A652E48656967687405000000000000009A06401453697A652E506C61
74666F726D44656661756C7408000A5452656374616E676C650005416C69676E
07084D6F73744C6566740A46696C6C2E436F6C6F720709784646323032303230
0748697454657374080553696465730B044C656674055269676874000A53697A
652E57696474680500000000000000A001400B53697A652E4865696768740500
- 0000000000009006401453697A652E506C6174666F726D44656661756C74080C
+ 0000000000009506401453697A652E506C6174666F726D44656661756C74080C
5374726F6B652E436F6C6F72070978464631353135313500000A545265637461
6E676C6500095374796C654E616D65060A52656374616E676C653105416C6967
6E070A4D6F7374426F74746F6D13456E61626C6544726167486967686C696768
74080A46696C6C2E436F6C6F7207097846463230323032300748697454657374
- 080A506F736974696F6E2E5905000000000000009006400553696465730B044C
+ 080A506F736974696F6E2E5905000000000000009506400553696465730B044C
65667406426F74746F6D000A53697A652E57696474680500000000000000A001
400B53697A652E4865696768740500000000000000A001401453697A652E506C
6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
@@ -14110,18 +15082,18 @@ object MainForm: TMainForm
726F6B652E4B696E6407044E6F6E65000000000007544C61796F757400095374
796C654E616D650605726967687405416C69676E07094D6F7374526967687406
4C6F636B6564090A506F736974696F6E2E580500000000005655AD07400A506F
- 736974696F6E2E590500000000000000F003400A53697A652E57696474680500
- 000000000000A001400B53697A652E4865696768740500000000000000950640
+ 736974696F6E2E590500000000000000C803400A53697A652E57696474680500
+ 000000000000A001400B53697A652E48656967687405000000000000009A0640
1453697A652E506C6174666F726D44656661756C7408000A5452656374616E67
6C650005416C69676E07094D6F737452696768740A46696C6C2E436F6C6F7207
097846463230323032300748697454657374080553696465730B044C65667405
5269676874000A53697A652E57696474680500000000000000A001400B53697A
- 652E48656967687405000000000000009006401453697A652E506C6174666F72
+ 652E48656967687405000000000000009506401453697A652E506C6174666F72
6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
3500000A5452656374616E676C6500095374796C654E616D65060A5265637461
6E676C653105416C69676E070A4D6F7374426F74746F6D13456E61626C654472
6167486967686C69676874080A46696C6C2E436F6C6F72070978464632303230
- 32300748697454657374080A506F736974696F6E2E5905000000000000009006
+ 32300748697454657374080A506F736974696F6E2E5905000000000000009506
400553696465730B06426F74746F6D055269676874000A53697A652E57696474
680500000000000000A001400B53697A652E4865696768740500000000000000
A001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
@@ -14137,633 +15109,504 @@ object MainForm: TMainForm
6F6E6500000000000A5452656374616E676C650005416C69676E07074D6F7374
546F700A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
090748697454657374080A53697A652E576964746805000000000056D5AF0740
- 0B53697A652E4865696768740500000000000000F003401453697A652E506C61
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
35313531350007544C61796F757400095374796C654E616D6506076361707469
6F6E05416C69676E0708436F6E74656E7473064C6F636B656409074869745465
7374090A53697A652E576964746805000000000056D5AF07400B53697A652E48
- 65696768740500000000000000F003401453697A652E506C6174666F726D4465
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
6661756C7408000007544C61796F75740005416C69676E0706436C69656E7406
4C6F636B6564090C4D617267696E732E4C656674050000000000000080FF3F0B
4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
00000000000080FF3F0A53697A652E576964746805000000000056D5AE07400B
- 53697A652E4865696768740500000000000000E003401453697A652E506C6174
+ 53697A652E4865696768740500000000000000B803401453697A652E506C6174
666F726D44656661756C74080007544C61796F75740005416C69676E07044C65
6674064C6F636B6564090A53697A652E57696474680500000000000000900240
- 0B53697A652E4865696768740500000000000000E003401453697A652E506C61
+ 0B53697A652E4865696768740500000000000000B803401453697A652E506C61
74666F726D44656661756C7408000007544C61796F757400095374796C654E61
- 6D65060469636F6E064C6F636B6564090A506F736974696F6E2E580500000000
- 0000009002400A506F736974696F6E2E590500000000000000E001400A53697A
- 652E57696474680500000000000000C803400B53697A652E4865696768740500
- 000000000000A803401453697A652E506C6174666F726D44656661756C740800
- 0007544C61796F757400095374796C654E616D65060773797362746E7305416C
- 69676E0706436C69656E74064C6F636B6564090A53697A652E57696474680500
- 000000005655AA07400B53697A652E4865696768740500000000000000E00340
- 1453697A652E506C6174666F726D44656661756C7408000C5453706565644275
- 74746F6E00095374796C654E616D650605636C6F736505416C69676E07055269
- 676874064C6F636B6564090A506F736974696F6E2E5805000000000056559107
- 400A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000E003401453697A652E506C6174666F726D44656661
- 756C74080B5374796C654C6F6F6B75700610636C6F7365627574746F6E737479
- 6C6500000C545370656564427574746F6E00095374796C654E616D6506036D61
- 7805416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E
- 5805000000000056558207400A53697A652E57696474680500000000000000F0
- 03400B53697A652E4865696768740500000000000000E003401453697A652E50
- 6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060E6D6178
- 627574746F6E7374796C6500000C545370656564427574746F6E00095374796C
- 654E616D65060372657305416C69676E07055269676874064C6F636B6564090A
- 506F736974696F6E2E58050000000000ACAAE606400A53697A652E5769647468
- 0500000000000000F003400B53697A652E4865696768740500000000000000E0
- 03401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F
- 6F6B7570060E726573627574746F6E7374796C6500000C545370656564427574
- 746F6E00095374796C654E616D6506036D696E05416C69676E07055269676874
- 064C6F636B6564090A506F736974696F6E2E58050000000000ACAAC806400A53
- 697A652E57696474680500000000000000F003400B53697A652E486569676874
- 0500000000000000E003401453697A652E506C6174666F726D44656661756C74
- 080B5374796C654C6F6F6B7570060E6D696E627574746F6E7374796C65000005
- 545465787400095374796C654E616D6506057469746C6505416C69676E070643
- 6C69656E74064C6F636B6564090748697454657374080A53697A652E57696474
- 68050000000000ACAAC806400B53697A652E4865696768740500000000000000
- E003401453697A652E506C6174666F726D44656661756C740804546578740605
- 5469746C65165465787453657474696E67732E466F6E74436F6C6F720708636C
- 615768697465000000000007544C61796F757400095374796C654E616D650606
- 636C69656E7405416C69676E0706436C69656E74064C6F636B65640907486974
- 54657374090A53697A652E576964746805000000000056D5AA07400B53697A65
- 2E48656967687405000000000000009006401453697A652E506C6174666F726D
- 44656661756C7408000007544C61796F757400095374796C654E616D65060662
- 6F74746F6D05416C69676E0706426F74746F6D064C6F636B6564090A506F7369
- 74696F6E2E580500000000000000A001400A506F736974696F6E2E5905000000
- 00000000AE06400A53697A652E576964746805000000000056D5AA07400B5369
- 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
- 726D44656661756C7408000A5452656374616E676C6500095374796C654E616D
- 6506047265637405416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72
- 07097846463230323032300748697454657374080553696465730B03546F7006
- 426F74746F6D000A53697A652E576964746805000000000056D5AA07400B5369
- 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
- 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
- 3135000000005450463007544C61796F757400095374796C654E616D65060F74
- 6F6F6C77696E646F777374796C6505416C69676E070643656E7465720A53697A
- 652E576964746805000000000056D5AF07400B53697A652E4865696768740500
- 000000000000B306401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F72646572022C000A5452656374616E676C6500
- 095374796C654E616D6506046D61736B05416C69676E0708436F6E74656E7473
- 0A46696C6C2E436F6C6F7207097846463130313031300A53697A652E57696474
- 6805000000000056D5AF07400B53697A652E4865696768740500000000000000
- B306401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E650756697369626C6508000007544C61796F75740009
- 5374796C654E616D6506046C65667405416C69676E07084D6F73744C65667406
- 4C6F636B6564090A506F736974696F6E2E590500000000000000C803400A5369
- 7A652E57696474680500000000000000A001400B53697A652E48656967687405
- 000000000000009A06401453697A652E506C6174666F726D44656661756C7408
- 000A5452656374616E676C650005416C69676E07084D6F73744C6566740A4669
- 6C6C2E436F6C6F72070978464632303230323007486974546573740805536964
- 65730B044C656674055269676874000A53697A652E5769647468050000000000
- 0000A001400B53697A652E48656967687405000000000000009506401453697A
- 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
- 0978464631353135313500000A5452656374616E676C6500095374796C654E61
- 6D65060A52656374616E676C653105416C69676E070A4D6F7374426F74746F6D
- 13456E61626C6544726167486967686C69676874080A46696C6C2E436F6C6F72
- 07097846463230323032300748697454657374080A506F736974696F6E2E5905
- 000000000000009506400553696465730B044C65667406426F74746F6D000A53
- 697A652E57696474680500000000000000A001400B53697A652E486569676874
- 0500000000000000A001401453697A652E506C6174666F726D44656661756C74
- 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
- 757400095374796C654E616D6506074C61796F75743305416C69676E07094D6F
- 737452696768740A506F736974696F6E2E5805000000000000008001400A5369
- 7A652E5769647468050000000000000080FF3F0B53697A652E48656967687405
- 00000000000000A001401453697A652E506C6174666F726D44656661756C7408
- 000A5452656374616E676C6500095374796C654E616D65060A52656374616E67
- 6C653105416C69676E0703546F700A46696C6C2E436F6C6F7207097846463135
- 313531350748697454657374080A53697A652E57696474680500000000000000
- 80FF3F0B53697A652E486569676874050000000000000080FF3F1453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E65000000000007544C61796F757400095374796C654E616D65060572696768
- 7405416C69676E07094D6F73745269676874064C6F636B6564090A506F736974
- 696F6E2E580500000000005655AD07400A506F736974696F6E2E590500000000
- 000000C803400A53697A652E57696474680500000000000000A001400B53697A
- 652E48656967687405000000000000009A06401453697A652E506C6174666F72
- 6D44656661756C7408000A5452656374616E676C650005416C69676E07094D6F
- 737452696768740A46696C6C2E436F6C6F720709784646323032303230074869
- 7454657374080553696465730B044C656674055269676874000A53697A652E57
- 696474680500000000000000A001400B53697A652E4865696768740500000000
- 0000009506401453697A652E506C6174666F726D44656661756C74080C537472
- 6F6B652E436F6C6F72070978464631353135313500000A5452656374616E676C
- 6500095374796C654E616D65060A52656374616E676C653105416C69676E070A
- 4D6F7374426F74746F6D13456E61626C6544726167486967686C69676874080A
- 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A50
- 6F736974696F6E2E5905000000000000009506400553696465730B06426F7474
- 6F6D055269676874000A53697A652E57696474680500000000000000A001400B
- 53697A652E4865696768740500000000000000A001401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 313531350007544C61796F757400095374796C654E616D6506074C61796F7574
- 3305416C69676E07084D6F73744C6566740A53697A652E576964746805000000
- 0000000080FF3F0B53697A652E4865696768740500000000000000A001401453
- 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
- 00095374796C654E616D65060A52656374616E676C653105416C69676E070354
- 6F700A46696C6C2E436F6C6F7207097846463135313531350748697454657374
- 080A53697A652E5769647468050000000000000080FF3F0B53697A652E486569
- 676874050000000000000080FF3F1453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000000A54526563
- 74616E676C650005416C69676E07074D6F7374546F700A46696C6C2E436F6C6F
- 720709784646323032303230064C6F636B6564090748697454657374080A5369
- 7A652E576964746805000000000056D5AF07400B53697A652E48656967687405
- 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
- 0C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F75
- 7400095374796C654E616D65060763617074696F6E05416C69676E0708436F6E
- 74656E7473064C6F636B6564090748697454657374090A53697A652E57696474
- 6805000000000056D5AF07400B53697A652E4865696768740500000000000000
- C803401453697A652E506C6174666F726D44656661756C7408000007544C6179
- 6F75740005416C69676E0706436C69656E74064C6F636B6564090C4D61726769
- 6E732E4C656674050000000000000080FF3F0B4D617267696E732E546F700500
- 00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
- FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A
- 652E576964746805000000000056D5AE07400B53697A652E4865696768740500
- 000000000000B803401453697A652E506C6174666F726D44656661756C740800
- 07544C61796F75740005416C69676E07044C656674064C6F636B6564090A5369
- 7A652E576964746805000000000000009002400B53697A652E48656967687405
- 00000000000000B803401453697A652E506C6174666F726D44656661756C7408
- 000007544C61796F757400095374796C654E616D65060773797362746E730541
- 6C69676E0706436C69656E74064C6F636B6564090A53697A652E576964746805
- 00000000005655AA07400B53697A652E4865696768740500000000000000B803
- 401453697A652E506C6174666F726D44656661756C7408000C54537065656442
- 7574746F6E00095374796C654E616D650605636C6F736505416C69676E070552
- 69676874064C6F636B6564090A506F736974696F6E2E5805000000000056D59D
- 07400A53697A652E57696474680500000000000000C803400B53697A652E4865
- 696768740500000000000000B803401453697A652E506C6174666F726D446566
- 61756C74080B5374796C654C6F6F6B75700610636C6F7365627574746F6E7374
- 796C65000005545465787400095374796C654E616D6506057469746C6505416C
- 69676E0706436C69656E74064C6F636B6564090748697454657374080A53697A
- 652E576964746805000000000056D59D07400B53697A652E4865696768740500
- 000000000000B803401453697A652E506C6174666F726D44656661756C740804
- 5465787406055469746C65165465787453657474696E67732E466F6E74436F6C
- 6F720708636C615768697465000000000007544C61796F757400095374796C65
- 4E616D650606636C69656E7405416C69676E0706436C69656E74064C6F636B65
- 64090748697454657374090A53697A652E576964746805000000000056D5AA07
- 400B53697A652E48656967687405000000000000009506401453697A652E506C
- 6174666F726D44656661756C7408000007544C61796F757400095374796C654E
- 616D650606626F74746F6D05416C69676E0706426F74746F6D064C6F636B6564
- 090A506F736974696F6E2E580500000000000000A001400A506F736974696F6E
- 2E590500000000000000AE06400A53697A652E576964746805000000000056D5
- AA07400B53697A652E4865696768740500000000000000A001401453697A652E
- 506C6174666F726D44656661756C7408000A5452656374616E676C6500095374
- 796C654E616D6506047265637405416C69676E0706426F74746F6D0A46696C6C
- 2E436F6C6F7207097846463230323032300553696465730B03546F7006426F74
- 746F6D000A53697A652E576964746805000000000056D5AA07400B53697A652E
- 4865696768740500000000000000A001401453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
- 0000005450463007544C61796F757400095374796C654E616D65061072616469
- 6F627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E
- 57696474680500000000000000F205400B53697A652E48656967687405000000
- 00000000A803401453697A652E506C6174666F726D44656661756C7408075669
- 7369626C6508085461624F72646572022E0007544C61796F75740005416C6967
- 6E07044C6566740A53697A652E57696474680500000000000000A803400B5369
+ 6D65060773797362746E7305416C69676E0706436C69656E74064C6F636B6564
+ 090A53697A652E57696474680500000000005655AA07400B53697A652E486569
+ 6768740500000000000000B803401453697A652E506C6174666F726D44656661
+ 756C7408000C545370656564427574746F6E00095374796C654E616D65060563
+ 6C6F736505416C69676E07055269676874064C6F636B6564090A506F73697469
+ 6F6E2E5805000000000056D59D07400A53697A652E5769647468050000000000
+ 0000C803400B53697A652E4865696768740500000000000000B803401453697A
+ 652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700610
+ 636C6F7365627574746F6E7374796C65000005545465787400095374796C654E
+ 616D6506057469746C6505416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080A53697A652E576964746805000000000056D59D07400B
+ 53697A652E4865696768740500000000000000B803401453697A652E506C6174
+ 666F726D44656661756C7408045465787406055469746C651654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746500000000000754
+ 4C61796F757400095374796C654E616D650606636C69656E7405416C69676E07
+ 06436C69656E74064C6F636B6564090748697454657374090A53697A652E5769
+ 64746805000000000056D5AA07400B53697A652E486569676874050000000000
+ 00009506401453697A652E506C6174666F726D44656661756C7408000007544C
+ 61796F757400095374796C654E616D650606626F74746F6D05416C69676E0706
+ 426F74746F6D064C6F636B6564090A506F736974696F6E2E5805000000000000
+ 00A001400A506F736974696F6E2E590500000000000000AE06400A53697A652E
+ 576964746805000000000056D5AA07400B53697A652E48656967687405000000
+ 00000000A001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D6506047265637405416C69676E
+ 0706426F74746F6D0A46696C6C2E436F6C6F7207097846463230323032300553
+ 696465730B03546F7006426F74746F6D000A53697A652E576964746805000000
+ 000056D5AA07400B53697A652E4865696768740500000000000000A001401453
+ 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
+ 720709784646313531353135000000005450463007544C61796F757400095374
+ 796C654E616D650610726164696F627574746F6E7374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000000F205400B5369
7A652E4865696768740500000000000000A803401453697A652E506C6174666F
- 726D44656661756C7408000854456C6C6970736500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E070643656E7465720A46696C6C2E43
- 6F6C6F720709784646323032303230064C6F636B656409074869745465737408
- 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
- 68740500000000000000F002401453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F720709784646313531353135000854456C
- 6C6970736500095374796C654E616D650609636865636B6D61726B05416C6967
- 6E0706436C69656E740A46696C6C2E436F6C6F72070978464632413832453206
- 4C6F636B656409074869745465737408074F7061636974790500000000000000
- 0000000C4D617267696E732E4C65667405000000000000008000400B4D617267
- 696E732E546F7005000000000000008000400D4D617267696E732E5269676874
- 05000000000000008000400E4D617267696E732E426F74746F6D050000000000
- 00008000400A53697A652E57696474680500000000000000B002400B53697A65
- 2E4865696768740500000000000000B002401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F
- 6174416E696D6174696F6E00095374796C654E616D65061A6F70616369747943
- 6865636B6D61726B416E696D6174696F6E31084475726174696F6E0500000000
- 00CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A537461
- 727456616C756505000000000000000000000953746F7056616C756505000000
- 0000000080FF3F0754726967676572060E4973436865636B65643D747275650E
- 54726967676572496E7665727365060F4973436865636B65643D66616C736500
- 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061A72
- 6164696F627574746F6E436F6C6F72416E696D6174696F6E3108447572617469
- 6F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E
- 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
- 30323032300953746F7056616C75650709784646343034303430075472696767
- 6572061049734D6F7573654F7665723D747275650E54726967676572496E7665
- 727365061149734D6F7573654F7665723D66616C736500000F54436F6C6F7241
- 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
- 696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
- 6C756507097846463135313531350953746F7056616C75650709784646324138
- 3245320754726967676572060E4973436865636B65643D747275650E54726967
- 676572496E7665727365060F4973436865636B65643D66616C73650000000005
- 545465787400095374796C654E616D6506047465787405416C69676E0706436C
- 69656E74064C6F636B6564090748697454657374080A53697A652E5769647468
- 0500000000000000C805400B53697A652E4865696768740500000000000000A8
- 03401453697A652E506C6174666F726D44656661756C74080454657874060454
- 657874165465787453657474696E67732E466F6E74436F6C6F720708636C6157
- 686974650000005450463007544C61796F757400095374796C654E616D650618
- 756C63656E746572726164696F627574746F6E7374796C6505416C69676E0706
- 43656E7465720A53697A652E57696474680500000000005655FB05400B53697A
- 652E4865696768740500000000000000A004401453697A652E506C6174666F72
- 6D44656661756C74080756697369626C6508085461624F726465720230000754
- 4C61796F75740005416C69676E0706426F74746F6D0A506F736974696F6E2E59
- 05000000000000008804400A53697A652E57696474680500000000005655FB05
- 400B53697A652E4865696768740500000000000000C001401453697A652E506C
- 6174666F726D44656661756C7408000A5452656374616E676C6500095374796C
- 654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74
- 7307436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A46
- 696C6C2E436F6C6F720709784646323032303230064C6F636B65640907486974
- 54657374080A53697A652E57696474680500000000005655FB05400B53697A65
- 2E4865696768740500000000000000C001401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506216261
- 636B67726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E3108
- 4475726174696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F
- 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
- 07097846463230323032300953746F7056616C75650709784646343034303430
- 0754726967676572061049734D6F7573654F7665723D747275650E5472696767
- 6572496E7665727365061149734D6F7573654F7665723D66616C736500000A54
- 52656374616E676C6500095374796C654E616D650609636865636B6D61726B05
- 416C69676E0708436F6E74656E747307436F726E6572730B07546F704C656674
- 0A426F74746F6D4C656674000A46696C6C2E436F6C6F72070978464632413832
- 4532064C6F636B656409074869745465737408074F7061636974790500000000
- 0000000000000C4D617267696E732E4C656674050000000000000080FF3F0B4D
- 617267696E732E546F70050000000000000080FF3F0D4D617267696E732E5269
- 676874050000000000000080FF3F0E4D617267696E732E426F74746F6D050000
- 000000000080FF3F0A53697A652E57696474680500000000005655F705400B53
- 697A652E48656967687405000000000000008001401453697A652E506C617466
- 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
- 466C6F6174416E696D6174696F6E00095374796C654E616D65061A636865636B
- 6D61726B4F706163697479416E696D6174696F6E31084475726174696F6E0500
- 00000000CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A
- 537461727456616C756505000000000000000000000953746F7056616C756505
- 0000000000000080FF3F0754726967676572060E4973436865636B65643D7472
- 75650E54726967676572496E7665727365060F4973436865636B65643D66616C
- 7365000000000005545465787400095374796C654E616D650604746578740541
- 6C69676E0706436C69656E74064C6F636B6564090748697454657374080A5369
- 7A652E57696474680500000000005655FB05400B53697A652E48656967687405
- 000000000000008804401453697A652E506C6174666F726D44656661756C7408
- 0454657874060454657874165465787453657474696E67732E466F6E74436F6C
- 6F720708636C6157686974650000005450463007544C61796F75740009537479
- 6C654E616D650616756C6C656674726164696F627574746F6E7374796C650541
- 6C69676E070643656E7465720A53697A652E57696474680500000000005655FB
- 05400B53697A652E4865696768740500000000000000A004401453697A652E50
+ 726D44656661756C74080756697369626C6508085461624F7264657202430007
+ 544C61796F75740005416C69676E07044C6566740A53697A652E576964746805
+ 00000000000000A803400B53697A652E4865696768740500000000000000A803
+ 401453697A652E506C6174666F726D44656661756C7408000854456C6C697073
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0706
+ 43656E7465720A46696C6C2E436F6C6F720709784646323032303230064C6F63
+ 6B6564090748697454657374080A53697A652E57696474680500000000000000
+ F002400B53697A652E4865696768740500000000000000F002401453697A652E
+ 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
+ 4646313531353135000854456C6C6970736500095374796C654E616D65060963
+ 6865636B6D61726B05416C69676E0706436C69656E740A46696C6C2E436F6C6F
+ 720709784646324138324532064C6F636B656409074869745465737408074F70
+ 616369747905000000000000000000000C4D617267696E732E4C656674050000
+ 00000000008000400B4D617267696E732E546F7005000000000000008000400D
+ 4D617267696E732E526967687405000000000000008000400E4D617267696E73
+ 2E426F74746F6D05000000000000008000400A53697A652E5769647468050000
+ 0000000000B002400B53697A652E4865696768740500000000000000B0024014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E
+ 616D65061A6F706163697479436865636B6D61726B416E696D6174696F6E3108
+ 4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
+ 06074F7061636974790A537461727456616C7565050000000000000000000009
+ 53746F7056616C7565050000000000000080FF3F0754726967676572060E4973
+ 436865636B65643D747275650E54726967676572496E7665727365060F497343
+ 6865636B65643D66616C73650000000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D65061A726164696F627574746F6E436F6C6F72416E696D
+ 6174696F6E31084475726174696F6E050000000000CDCCCCFB3F07496E766572
+ 7365090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463230323032300953746F7056616C756507097846
+ 463430343034300754726967676572061049734D6F7573654F7665723D747275
+ 650E54726967676572496E7665727365061149734D6F7573654F7665723D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E05
+ 0000000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E
+ 436F6C6F720A537461727456616C756507097846463135313531350953746F70
+ 56616C756507097846463241383245320754726967676572060E497343686563
+ 6B65643D747275650E54726967676572496E7665727365060F4973436865636B
+ 65643D66616C73650000000005545465787400095374796C654E616D65060474
+ 65787405416C69676E0706436C69656E74064C6F636B65640907486974546573
+ 74080A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000A803401453697A652E506C6174666F726D446566
+ 61756C74080454657874060454657874165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C6157686974650000005450463007544C61796F7574
+ 00095374796C654E616D650618756C63656E746572726164696F627574746F6E
+ 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
+ 000000005655FB05400B53697A652E4865696768740500000000000000A00440
+ 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
+ 5461624F7264657202440007544C61796F75740005416C69676E0706426F7474
+ 6F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E5769
+ 6474680500000000005655FB05400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
+ 6C69676E0708436F6E74656E747307436F726E6572730B07546F704C6566740A
+ 426F74746F6D4C656674000A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 0000005655FB05400B53697A652E4865696768740500000000000000C0014014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D6506216261636B67726F756E64556C427574746F6E436F6C
+ 6F72416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F
+ 07496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463430343034300754726967676572061049734D6F7573654F76
+ 65723D747275650E54726967676572496E7665727365061149734D6F7573654F
+ 7665723D66616C736500000A5452656374616E676C6500095374796C654E616D
+ 650609636865636B6D61726B05416C69676E0708436F6E74656E747307436F72
+ 6E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E43
+ 6F6C6F720709784646324138324532064C6F636B656409074869745465737408
+ 074F70616369747905000000000000000000000C4D617267696E732E4C656674
+ 050000000000000080FF3F0B4D617267696E732E546F70050000000000000080
+ FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
+ 696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769647468
+ 0500000000005655F705400B53697A652E486569676874050000000000000080
+ 01401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0009537479
+ 6C654E616D65061A636865636B6D61726B4F706163697479416E696D6174696F
+ 6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
+ 616D6506074F7061636974790A537461727456616C7565050000000000000000
+ 00000953746F7056616C7565050000000000000080FF3F075472696767657206
+ 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
+ 4973436865636B65643D66616C7365000000000005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E74064C6F636B6564
+ 090748697454657374080A53697A652E57696474680500000000005655FB0540
+ 0B53697A652E48656967687405000000000000008804401453697A652E506C61
+ 74666F726D44656661756C740804546578740604546578741654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746500000054504630
+ 07544C61796F757400095374796C654E616D650616756C6C656674726164696F
+ 627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000005655FB05400B53697A652E4865696768740500000000
+ 000000A004401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C6508085461624F7264657202470007544C61796F75740005416C69676E
+ 0706426F74746F6D0A506F736974696F6E2E5905000000000000008804400A53
+ 697A652E57696474680500000000005655FB05400B53697A652E486569676874
+ 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
+ 6F756E6405416C69676E0708436F6E74656E747307436F726E6572730B07546F
+ 704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080A53697A652E5769
+ 6474680500000000005655FB05400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F720709784646313531353135000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D6506216261636B67726F756E64556C427574
+ 746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000
+ 00CDCCCCFB3F07496E7665727365090C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463430343034300754726967676572061049734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506114973
+ 4D6F7573654F7665723D66616C736500000A5452656374616E676C6500095374
+ 796C654E616D650609636865636B6D61726B05416C69676E0708436F6E74656E
+ 747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A
+ 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
+ 745465737408074F70616369747905000000000000000000000C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E57696474680500000000005655F705400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D65061A636865636B6D61726B4F706163697479416E
+ 696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C73650000000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000880440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D650617756C7269676874726164696F62757474
+ 6F6E7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000005655FB05400B53697A652E4865696768740500000000000000A0
+ 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F72646572024B0007544C61796F75740005416C69676E0706426F
+ 74746F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E
+ 57696474680500000000005655FB05400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E747307436F726E6572730B08546F70526967
+ 68740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000005655FB05400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D6506216261636B67726F756E64556C427574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CD
+ CCCCFB3F07496E7665727365090C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572061049734D6F75
+ 73654F7665723D747275650E54726967676572496E7665727365061149734D6F
+ 7573654F7665723D66616C736500000A5452656374616E676C6500095374796C
+ 654E616D650609636865636B6D61726B05416C69676E0708436F6E74656E7473
+ 07436F726E6572730B08546F7052696768740B426F74746F6D5269676874000A
+ 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
+ 745465737408074F70616369747905000000000000000000000C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E57696474680500000000005655F705400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D65061A636865636B6D61726B4F706163697479416E
+ 696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C73650000000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000880440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D65060E636F6D626F656469747374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000000000C8
+ 05400B53697A652E4865696768740500000000000000C803401453697A652E50
6C6174666F726D44656661756C74080756697369626C6508085461624F726465
- 7202320007544C61796F75740005416C69676E0706426F74746F6D0A506F7369
- 74696F6E2E5905000000000000008804400A53697A652E576964746805000000
- 00005655FB05400B53697A652E4865696768740500000000000000C001401453
- 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
- 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
- 6F6E74656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C
- 656674000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
- 64090748697454657374080A53697A652E57696474680500000000005655FB05
- 400B53697A652E4865696768740500000000000000C001401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 313531353135000F54436F6C6F72416E696D6174696F6E00095374796C654E61
- 6D6506216261636B67726F756E64556C427574746F6E436F6C6F72416E696D61
- 74696F6E31084475726174696F6E050000000000CDCCCCFB3F07496E76657273
- 65090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
- 7456616C756507097846463230323032300953746F7056616C75650709784646
- 3430343034300754726967676572061049734D6F7573654F7665723D74727565
- 0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C
- 736500000A5452656374616E676C6500095374796C654E616D65060963686563
- 6B6D61726B05416C69676E0708436F6E74656E747307436F726E6572730B0754
- 6F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F72070978
- 4646324138324532064C6F636B656409074869745465737408074F7061636974
- 7905000000000000000000000C4D617267696E732E4C65667405000000000000
- 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
- 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
- 746F6D050000000000000080FF3F0A53697A652E576964746805000000000056
- 55F705400B53697A652E48656967687405000000000000008001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506
- 1A636865636B6D61726B4F706163697479416E696D6174696F6E310844757261
- 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506074F70
- 61636974790A537461727456616C756505000000000000000000000953746F70
- 56616C7565050000000000000080FF3F0754726967676572060E497343686563
- 6B65643D747275650E54726967676572496E7665727365060F4973436865636B
- 65643D66616C7365000000000005545465787400095374796C654E616D650604
- 7465787405416C69676E0706436C69656E74064C6F636B656409074869745465
- 7374080A53697A652E57696474680500000000005655FB05400B53697A652E48
- 656967687405000000000000008804401453697A652E506C6174666F726D4465
- 6661756C7408165465787453657474696E67732E466F6E74436F6C6F72070863
- 6C6157686974650000005450463007544C61796F757400095374796C654E616D
- 650617756C7269676874726164696F627574746F6E7374796C6505416C69676E
- 070643656E7465720A53697A652E57696474680500000000005655FB05400B53
- 697A652E4865696768740500000000000000A004401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508085461624F72646572023400
- 07544C61796F75740005416C69676E0706426F74746F6D0A506F736974696F6E
- 2E5905000000000000008804400A53697A652E57696474680500000000005655
- FB05400B53697A652E4865696768740500000000000000C001401453697A652E
+ 72024E000C5442727573684F626A65637400095374796C654E616D65060A666F
+ 726567726F756E6400000B54466F6E744F626A65637400095374796C654E616D
+ 650604666F6E7409466F6E742E53697A650500000000000000D0024000000754
+ 4C61796F757400095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0708436F6E74656E74730A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
506C6174666F726D44656661756C7408000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
- 6E747307436F726E6572730B08546F7052696768740B426F74746F6D52696768
- 74000A46696C6C2E436F6C6F720709784646323032303230064C6F636B656409
- 0748697454657374080A53697A652E57696474680500000000005655FB05400B
- 53697A652E4865696768740500000000000000C001401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 31353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 06216261636B67726F756E64556C427574746F6E436F6C6F72416E696D617469
- 6F6E31084475726174696F6E050000000000CDCCCCFB3F07496E766572736509
- 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
- 616C756507097846463230323032300953746F7056616C756507097846463430
- 343034300754726967676572061049734D6F7573654F7665723D747275650E54
- 726967676572496E7665727365061149734D6F7573654F7665723D66616C7365
- 00000A5452656374616E676C6500095374796C654E616D650609636865636B6D
- 61726B05416C69676E0708436F6E74656E747307436F726E6572730B08546F70
- 52696768740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978
- 4646324138324532064C6F636B656409074869745465737408074F7061636974
- 7905000000000000000000000C4D617267696E732E4C65667405000000000000
- 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
- 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
- 746F6D050000000000000080FF3F0A53697A652E576964746805000000000056
- 55F705400B53697A652E48656967687405000000000000008001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D6506
- 1A636865636B6D61726B4F706163697479416E696D6174696F6E310844757261
- 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506074F70
- 61636974790A537461727456616C756505000000000000000000000953746F70
- 56616C7565050000000000000080FF3F0754726967676572060E497343686563
- 6B65643D747275650E54726967676572496E7665727365060F4973436865636B
- 65643D66616C7365000000000005545465787400095374796C654E616D650604
- 7465787405416C69676E0706436C69656E74064C6F636B656409074869745465
- 7374080A53697A652E57696474680500000000005655FB05400B53697A652E48
- 656967687405000000000000008804401453697A652E506C6174666F726D4465
- 6661756C7408165465787453657474696E67732E466F6E74436F6C6F72070863
- 6C6157686974650000005450463007544C61796F757400095374796C654E616D
- 65060E636F6D626F656469747374796C6505416C69676E070643656E7465720A
- 53697A652E57696474680500000000000000C805400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 74080756697369626C6508085461624F726465720239000C5442727573684F62
- 6A65637400095374796C654E616D65060A666F726567726F756E6400000B5446
- 6F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E
- 53697A650500000000000000D00240000007544C61796F757400095374796C65
- 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 796C654E616D65060A52656374616E676C653105416C69676E0706436C69656E
+ 740A46696C6C2E436F6C6F720709784646323032303230074869745465737408
0A53697A652E57696474680500000000000000C805400B53697A652E48656967
68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C7408000A5452656374616E676C6500095374796C654E616D65060A52656374
- 616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
- 097846463230323032300748697454657374080A53697A652E57696474680500
- 000000000000C805400B53697A652E4865696768740500000000000000C80340
- 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
- 6C6F720709784646323032303230000F54436F6C6F72416E696D6174696F6E00
- 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
- 084475726174696F6E050000000000CDCCCCFB3F07496E7665727365090C5072
- 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
- 6C756507097846463230323032300953746F7056616C75650709784646343034
- 3034300754726967676572062049734D6F7573654F7665723D747275653B4973
- 466F63757365643D66616C73650E54726967676572496E766572736506214973
- 4D6F7573654F7665723D66616C73653B4973466F63757365643D66616C736500
- 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F
- 6C6F72416E696D6174696F6E325374796C65084475726174696F6E0500000000
- 00CDCCCCFB3F07496E7665727365090C50726F70657274794E616D65060C5374
- 726F6B652E436F6C6F720A537461727456616C75650709784646343034303430
- 0953746F7056616C756507097846463241383245320754726967676572061F49
- 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
- 726967676572496E7665727365062049734D6F7573654F7665723D747275653B
- 4973466F63757365643D66616C7365000007544C61796F757400095374796C65
- 4E616D6506056172726F7705416C69676E070846697452696768740B4D617267
- 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
- 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
- 000080FF3F0A506F736974696F6E2E580500000000005ED99705400A506F7369
- 74696F6E2E59050000000000000080FF3F0A53697A652E576964746805000000
- 0000889AB803400B53697A652E4865696768740500000000000000B803401453
- 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
- 00095374796C654E616D65060A52656374616E676C653105416C69676E070843
- 6F6E74656E74730A46696C6C2E436F6C6F720709784646333033303330074869
- 7454657374080A53697A652E5769647468050000000000889AB803400B53697A
- 652E4865696768740500000000000000B803401453697A652E506C6174666F72
- 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C74080C5374726F6B652E436F6C6F720709784646323032303230000F54436F
6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
696D6174696F6E315374796C65084475726174696F6E050000000000CDCCCCFB
- 3F07496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
- 6C6F720A537461727456616C756507097846463330333033300953746F705661
- 6C756507097846463430343034300754726967676572062049734D6F7573654F
- 7665723D747275653B4973466F63757365643D66616C73650E54726967676572
- 496E7665727365062149734D6F7573654F7665723D66616C73653B4973466F63
- 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65084475
- 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
- 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
- 0953746F7056616C756507097846463137353739430754726967676572061F49
- 73466F63757365643D747275653B49734D6F7573654F7665723D747275650000
- 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
- 69676E070643656E7465720C4D617267696E732E4C6566740500000000000000
- 80FF3F0A53697A652E57696474680500000000000000A002400B53697A652E48
- 65696768740500000000000000C001401453697A652E506C6174666F726D4465
- 6661756C74080005545061746800095374796C654E616D650605506174683105
- 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
- 000000000000C8420000C84201000000000096430000C8420100000000004843
- 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
- 57686974650748697454657374080A53697A652E576964746805000000000000
- 00A002400B53697A652E4865696768740500000000000000C001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E650000000000000C5442727573684F626A65637400095374796C654E616D
- 65060973656C656374696F6E0B42727573682E436F6C6F720709783936324138
- 324532000007544C61796F757400095374796C654E616D650607636F6E74656E
- 7405416C69676E0706436C69656E740C4D617267696E732E4C65667405000000
- 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
- 617267696E732E52696768740500000000000000F003400E4D617267696E732E
- 426F74746F6D05000000000000008000400A53697A652E576964746805000000
- 000000008805400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
- 6F757400095374796C654E616D650611616E69696E64696361746F727374796C
- 6505416C69676E070643656E7465720756697369626C65080004544172630009
- 5374796C654E616D65060341726305416C69676E0708436F6E74656E74730748
- 697454657374080D526F746174696F6E416E676C650500000000000000B40740
- 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
- 68740500000000000000C804401453697A652E506C6174666F726D4465666175
- 6C74080C5374726F6B652E436F6C6F720708636C615768697465105374726F6B
- 652E546869636B6E657373050000000000000080004008456E64416E676C6505
- 00000000000000B405C0000F54466C6F6174416E696D6174696F6E0009537479
- 6C654E616D650603616E6907456E61626C656409084475726174696F6E050000
- 000000000080FF3F044C6F6F70090C50726F70657274794E616D65060D526F74
- 6174696F6E416E676C650A537461727456616C75650500000000000000000000
- 0953746F7056616C75650500000000000000B407400754726967676572060E49
- 7356697369626C653D74727565000000005450463007544C61796F7574000953
- 74796C654E616D650613657870616E646572627574746F6E7374796C6505416C
- 69676E070643656E7465720B4D617267696E732E546F70050000000000000080
- FF3F0A53697A652E57696474680500000000000000B003400B53697A652E4865
- 696768740500000000000000B003401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F72646572023E00055450617468
- 00095374796C654E616D650605506174683105416C69676E070643656E746572
- 09446174612E506174680A3400000004000000000000000000C8420000C84201
- 000000000096430000C842010000000000484300009643030000000000C84200
- 00C8420A46696C6C2E436F6C6F720708636C6157686974650748697454657374
- 080D526F746174696F6E416E676C650500000000000000B405400A53697A652E
- 57696474680500000000000000A002400B53697A652E48656967687405000000
- 00000000C001401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E
- 00095374796C654E616D650614466C6F6174416E696D6174696F6E315374796C
- 65084475726174696F6E050000000000CDCCCCFB3F0D496E746572706F6C6174
- 696F6E070843697263756C61720C50726F70657274794E616D65060D526F7461
- 74696F6E416E676C650A537461727456616C75650500000000000000B4054009
- 53746F7056616C756505000000000000000000000754726967676572060F4973
- 457870616E6465643D747275650E54726967676572496E766572736506104973
- 457870616E6465643D66616C7365000000005450463007544C61796F75740009
- 5374796C654E616D650615657870616E646572636865636B626F787374796C65
- 05416C69676E070643656E7465720A53697A652E576964746805000000000000
- 008406400B53697A652E48656967687405000000000000008404401453697A65
- 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
- 64657202420007544C61796F75740005416C69676E07044C6566740A53697A65
- 2E57696474680500000000000000C003400B53697A652E486569676874050000
- 00000000008404401453697A652E506C6174666F726D44656661756C74080005
- 54506174680005416C69676E0706436C69656E7409446174612E506174680AD8
- 0100002700000000000000FEC8BA4402E79244020000002592AD4402E7924402
- 0000006D5BA544FEB09E44020000006D5BA544FEB09E440200000093A4A4446A
- 0C9F44020000004A80AC44FC79AA4402000000046EBA44FC79AA44020000004A
- 00C844FC79AA44020000000080CF44FEB09E44020000000080CF44FEB09E4402
- 0000000080CF44FEB09E44020000004C5BC84402E7924402000000FEC8BA4402
- E7924400000000FE88BA44FE30974402000000B876BF44FE3097440200000002
- 77C344EEA09A44020000000277C34404DE9E44020000000277C344121BA34402
- 000000B876BF44008CA64402000000FE88BA44008CA644020000004C9BB54400
- 8CA64402000000009CB144121BA34402000000009CB14404DE9E440200000000
- 9CB144EEA09A44020000004C9BB544FE30974402000000FE88BA44FE30974400
- 0000000080BA44045E9B4402000000146EB844045E9B440200000000C0B64454
- F79C440200000000C0B64400F09E440200000000C0B644ACE8A0440200000014
- 6EB844FC81A244020000000080BA44FC81A24402000000EC91BC44FC81A24402
- 0000000040BE44ACE8A044020000000040BE4400F09E44020000000040BE4454
- F79C4402000000EC91BC44045E9B44020000000080BA44045E9B440A46696C6C
- 2E436F6C6F7207097836303030303030300748697454657374080C4D61726769
- 6E732E4C65667405000000000000008000400B4D617267696E732E546F700500
- 0000000000008000400D4D617267696E732E5269676874050000000000000080
- 00400E4D617267696E732E426F74746F6D05000000000000008000400A53697A
- 652E57696474680500000000000000A003400B53697A652E4865696768740500
- 000000000000E803401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400
- 0F54436F6C6F72416E696D6174696F6E00084475726174696F6E050000000000
- CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
- 7461727456616C756507097836303030303030300953746F7056616C75650708
- 636C61426C61636B0754726967676572060E4973436865636B65643D74727565
- 00000F54436F6C6F72416E696D6174696F6E00084475726174696F6E05000000
- 0000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F72
- 0A537461727456616C75650708636C61426C61636B0953746F7056616C756507
- 097836303030303030300754726967676572060F4973436865636B65643D6661
- 6C73650000000005545465787400095374796C654E616D650604746578740541
- 6C69676E0706436C69656E74064C6F636B6564090748697454657374080C4D61
- 7267696E732E4C65667405000000000000008002400B4D617267696E732E546F
- 7005000000000000008000400D4D617267696E732E5269676874050000000000
- 000080FF3F0A53697A652E57696474680500000000000000C605400B53697A65
- 2E4865696768740500000000000000F803401453697A652E506C6174666F726D
- 44656661756C7408165465787453657474696E67732E466F6E74436F6C6F7207
- 09784646454545454545165465787453657474696E67732E486F727A416C6967
- 6E07074C656164696E670000005450463007544C61796F757400095374796C65
- 4E616D65060A70616E656C7374796C6505416C69676E070643656E7465720A53
- 697A652E57696474680500000000000000C006400B53697A652E486569676874
- 0500000000000000A406401453697A652E506C6174666F726D44656661756C74
- 080756697369626C6508000A5452656374616E676C6500095374796C654E616D
- 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
- 6C6C2E436F6C6F7207097846463230323032300A53697A652E57696474680500
- 000000000000C006400B53697A652E4865696768740500000000000000A40640
+ 3F07496E7665727365090C50726F70657274794E616D65060C5374726F6B652E
+ 436F6C6F720A537461727456616C756507097846463230323032300953746F70
+ 56616C756507097846463430343034300754726967676572062049734D6F7573
+ 654F7665723D747275653B4973466F63757365643D66616C73650E5472696767
+ 6572496E7665727365062149734D6F7573654F7665723D66616C73653B497346
+ 6F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C6508
+ 4475726174696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F
+ 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
+ 756507097846463430343034300953746F7056616C7565070978464632413832
+ 45320754726967676572061F49734D6F7573654F7665723D747275653B497346
+ 6F63757365643D747275650E54726967676572496E7665727365062049734D6F
+ 7573654F7665723D747275653B4973466F63757365643D66616C736500000754
+ 4C61796F757400095374796C654E616D6506056172726F7705416C69676E0708
+ 46697452696768740B4D617267696E732E546F70050000000000000080FF3F0D
+ 4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E73
+ 2E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000
+ 0000005ED99705400A506F736974696F6E2E59050000000000000080FF3F0A53
+ 697A652E5769647468050000000000889AB803400B53697A652E486569676874
+ 0500000000000000B803401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060A52656374616E
+ 676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 097846463330333033300748697454657374080A53697A652E57696474680500
+ 00000000889AB803400B53697A652E4865696768740500000000000000B80340
1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E650000005450463007544C61796F757400095374796C654E61
- 6D65061970726F67726573736261726D696E696572726F727374796C6505416C
- 69676E070643656E7465720A53697A652E576964746805000000000033338505
- 400B53697A652E4865696768740500000000009999E104401453697A652E506C
- 6174666F726D44656661756C74080756697369626C6508085461624F72646572
- 021B000A5452656374616E676C6500095374796C654E616D6506066874726163
- 6B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846
- 46343034303430064C6F636B6564090748697454657374080A53697A652E5769
- 64746805000000000033338505400B53697A652E486569676874050000000000
+ 6E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650614436F6C6F72416E696D6174696F6E315374796C65084475726174
+ 696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3330333033300953746F7056616C756507097846463430343034300754726967
+ 676572062049734D6F7573654F7665723D747275653B4973466F63757365643D
+ 66616C73650E54726967676572496E7665727365062149734D6F7573654F7665
+ 723D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463430343034300953746F7056616C7565070978464631373537
+ 39430754726967676572061F4973466F63757365643D747275653B49734D6F75
+ 73654F7665723D7472756500000007544C61796F757400095374796C654E616D
+ 6506074C61796F75743105416C69676E070643656E7465720C4D617267696E73
+ 2E4C656674050000000000000080FF3F0A53697A652E57696474680500000000
+ 000000A002400B53697A652E4865696768740500000000000000C00140145369
+ 7A652E506C6174666F726D44656661756C74080005545061746800095374796C
+ 654E616D650605506174683105416C69676E0706436C69656E7409446174612E
+ 506174680A3400000004000000000000000000C8420000C84201000000000096
+ 430000C842010000000000484300009643030000000000C8420000C8420A4669
+ 6C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000C001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E650000000000000C5442727573684F626A
+ 65637400095374796C654E616D65060973656C656374696F6E0B42727573682E
+ 436F6C6F720709783936324138324532000007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D6172
+ 67696E732E4C65667405000000000000008000400B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 00F003400E4D617267696E732E426F74746F6D05000000000000008000400A53
+ 697A652E576964746805000000000000008805400B53697A652E486569676874
+ 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
+ 080000005450463007544C61796F757400095374796C654E616D650611616E69
+ 696E64696361746F727374796C6505416C69676E070643656E74657207566973
+ 69626C6508085461624F72646572025000045441726300095374796C654E616D
+ 65060341726305416C69676E0708436F6E74656E74730748697454657374080D
+ 526F746174696F6E416E676C650500000000000000B407400A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000C804401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F720708636C615768697465105374726F6B652E546869636B6E
+ 65737305000000000000008001400A5374726F6B652E4361700705526F756E64
+ 08456E64416E676C650500000000000000B405C0000F54466C6F6174416E696D
+ 6174696F6E00095374796C654E616D650603616E6907456E61626C6564090844
+ 75726174696F6E050000000000000080FF3F044C6F6F70090C50726F70657274
+ 794E616D65060D526F746174696F6E416E676C650A537461727456616C756505
+ 000000000000000000000953746F7056616C75650500000000000000B4074007
+ 54726967676572060E497356697369626C653D74727565000000005450463007
+ 544C61796F757400095374796C654E616D650613657870616E64657262757474
+ 6F6E7374796C6505416C69676E070643656E7465720B4D617267696E732E546F
+ 70050000000000000080FF3F0A53697A652E57696474680500000000000000B0
+ 03400B53697A652E4865696768740500000000000000B003401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508085461624F726465
+ 7202550005545061746800095374796C654E616D650605506174683105416C69
+ 676E070643656E74657209446174612E506174680A3400000004000000000000
+ 000000C8420000C84201000000000096430000C8420100000000004843000096
+ 43030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080D526F746174696F6E416E676C6505000000000000
+ 00B405400A53697A652E57696474680500000000000000A002400B53697A652E
+ 4865696768740500000000000000C001401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F61
+ 74416E696D6174696F6E00095374796C654E616D650614466C6F6174416E696D
+ 6174696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F0D
+ 496E746572706F6C6174696F6E070843697263756C61720C50726F7065727479
+ 4E616D65060D526F746174696F6E416E676C650A537461727456616C75650500
+ 000000000000B405400953746F7056616C756505000000000000000000000754
+ 726967676572060F4973457870616E6465643D747275650E5472696767657249
+ 6E766572736506104973457870616E6465643D66616C73650000000054504630
+ 07544C61796F757400095374796C654E616D650615657870616E646572636865
+ 636B626F787374796C6505416C69676E070643656E7465720A53697A652E5769
+ 64746805000000000000008406400B53697A652E486569676874050000000000
+ 00008404401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F72646572025B0007544C61796F75740005416C69676E07
+ 044C6566740A53697A652E57696474680500000000000000C003400B53697A65
+ 2E48656967687405000000000000008404401453697A652E506C6174666F726D
+ 44656661756C7408000554506174680005416C69676E0706436C69656E740944
+ 6174612E506174680AD80100002700000000000000FEC8BA4402E79244020000
+ 002592AD4402E79244020000006D5BA544FEB09E44020000006D5BA544FEB09E
+ 440200000093A4A4446A0C9F44020000004A80AC44FC79AA4402000000046EBA
+ 44FC79AA44020000004A00C844FC79AA44020000000080CF44FEB09E44020000
+ 000080CF44FEB09E44020000000080CF44FEB09E44020000004C5BC84402E792
+ 4402000000FEC8BA4402E7924400000000FE88BA44FE30974402000000B876BF
+ 44FE309744020000000277C344EEA09A44020000000277C34404DE9E44020000
+ 000277C344121BA34402000000B876BF44008CA64402000000FE88BA44008CA6
+ 44020000004C9BB544008CA64402000000009CB144121BA34402000000009CB1
+ 4404DE9E4402000000009CB144EEA09A44020000004C9BB544FE309744020000
+ 00FE88BA44FE309744000000000080BA44045E9B4402000000146EB844045E9B
+ 440200000000C0B64454F79C440200000000C0B64400F09E440200000000C0B6
+ 44ACE8A04402000000146EB844FC81A244020000000080BA44FC81A244020000
+ 00EC91BC44FC81A244020000000040BE44ACE8A044020000000040BE4400F09E
+ 44020000000040BE4454F79C4402000000EC91BC44045E9B44020000000080BA
+ 44045E9B440A46696C6C2E436F6C6F7207097836303030303030300748697454
+ 657374080C4D617267696E732E4C65667405000000000000008000400B4D6172
+ 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
+ 7405000000000000008000400E4D617267696E732E426F74746F6D0500000000
+ 0000008000400A53697A652E57696474680500000000000000A003400B53697A
+ 652E4865696768740500000000000000E803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650857726170
+ 4D6F64650703466974000F54436F6C6F72416E696D6174696F6E000844757261
+ 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097836303030303030300953
+ 746F7056616C75650708636C61426C61636B0754726967676572060E49734368
+ 65636B65643D7472756500000F54436F6C6F72416E696D6174696F6E00084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650708636C61426C61636B09
+ 53746F7056616C756507097836303030303030300754726967676572060F4973
+ 436865636B65643D66616C73650000000005545465787400095374796C654E61
+ 6D6506047465787405416C69676E0706436C69656E74064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C65667405000000000000008002400B
+ 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
+ 69676874050000000000000080FF3F0A53697A652E5769647468050000000000
+ 0000C605400B53697A652E4865696768740500000000000000F803401453697A
+ 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
+ 466F6E74436F6C6F720709784646454545454545165465787453657474696E67
+ 732E486F727A416C69676E07074C656164696E670000005450463007544C6179
+ 6F757400095374796C654E616D65060A70616E656C7374796C6505416C69676E
+ 070643656E7465720A53697A652E57696474680500000000000000C006400B53
+ 697A652E4865696768740500000000000000A406401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508085461624F72646572026100
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978
+ 46463230323032300A53697A652E57696474680500000000000000C006400B53
+ 697A652E4865696768740500000000000000A406401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 5450463007544C61796F757400095374796C654E616D65061970726F67726573
+ 736261726D696E696572726F727374796C6505416C69676E070643656E746572
+ 0A53697A652E576964746805000000000033338505400B53697A652E48656967
+ 68740500000000009999E104401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720229000A5452656374616E
+ 676C6500095374796C654E616D65060668747261636B05416C69676E0708436F
+ 6E74656E74730A46696C6C2E436F6C6F720709784646343034303430064C6F63
+ 6B6564090748697454657374080A53697A652E57696474680500000000003333
+ 8505400B53697A652E4865696768740500000000009999E104401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E65000A5452656374616E676C6500095374796C654E616D65060A68696E6469
+ 6361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F7207097846
+ 46453232413241064C6F636B6564090748697454657374080A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
9999E104401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E65000A5452656374616E676C6500095374796C65
- 4E616D65060A68696E64696361746F7205416C69676E07044C6566740A46696C
- 6C2E436F6C6F720709784646453232413241064C6F636B656409074869745465
- 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
- 65696768740500000000009999E104401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000A54526563
- 74616E676C6500095374796C654E616D65060676747261636B05416C69676E07
- 08436F6E74656E74730A46696C6C2E436F6C6F72070978464634303430343006
- 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
- 0033338505400B53697A652E4865696768740500000000009999E10440145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000A5452656374616E676C6500095374796C654E616D65060A7669
- 6E64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F
- 720709784646453232413241064C6F636B6564090748697454657374080A506F
- 736974696F6E2E5905000000000099998D04400A53697A652E57696474680500
- 0000000033338505400B53697A652E4865696768740500000000000000A80340
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000000005450463007544C61796F757400095374796C654E
- 616D65061470726F67726573736261726D696E697374796C6505416C69676E07
- 0643656E7465720A53697A652E576964746805000000000033338505400B5369
- 7A652E4865696768740500000000009999E104401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F726465720219000A
- 5452656374616E676C6500095374796C654E616D65060668747261636B05416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646343034
- 303430064C6F636B6564090748697454657374080A53697A652E576964746805
- 000000000033338505400B53697A652E4865696768740500000000009999E104
+ 6B652E4B696E6407044E6F6E650000000A5452656374616E676C650009537479
+ 6C654E616D65060676747261636B05416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646343034303430064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A76696E64696361746F7205416C
+ 69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846464532324132
+ 41064C6F636B6564090748697454657374080A506F736974696F6E2E59050000
+ 00000099998D04400A53697A652E576964746805000000000033338505400B53
+ 697A652E4865696768740500000000000000A803401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 005450463007544C61796F757400095374796C654E616D65061470726F677265
+ 73736261726D696E697374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000033338505400B53697A652E4865696768740500
+ 000000009999E104401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508085461624F72646572021A000A5452656374616E676C6500
+ 095374796C654E616D65060668747261636B05416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B656409
+ 0748697454657374080A53697A652E576964746805000000000033338505400B
+ 53697A652E4865696768740500000000009999E104401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A
+ 5452656374616E676C6500095374796C654E616D65060A68696E64696361746F
+ 7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646324138
+ 324532064C6F636B6564090748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000009999E104
401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E65000A5452656374616E676C6500095374796C654E616D65
- 060A68696E64696361746F7205416C69676E07044C6566740A46696C6C2E436F
- 6C6F720709784646324138324532064C6F636B6564090748697454657374080A
- 53697A652E57696474680500000000000000C804400B53697A652E4865696768
- 740500000000009999E104401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E650000000A5452656374616E67
- 6C6500095374796C654E616D65060676747261636B05416C69676E0708436F6E
- 74656E74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B
- 6564090748697454657374080A53697A652E5769647468050000000000333385
- 05400B53697A652E4865696768740500000000009999E104401453697A652E50
- 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
- 65000A5452656374616E676C6500095374796C654E616D65060A76696E646963
- 61746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978
- 4646324138324532064C6F636B6564090748697454657374080A506F73697469
- 6F6E2E5905000000000099998D04400A53697A652E5769647468050000000000
- 33338505400B53697A652E4865696768740500000000000000A803401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E65000000005450463007544C61796F757400095374796C654E616D6506
- 0D657870616E6465727374796C6505416C69676E070643656E7465720A53697A
- 652E576964746805000000000000C08407400B53697A652E4865696768740500
- 000000000000C803401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F72646572023D000A5452656374616E676C6500
- 095374796C654E616D65060B626772656374616E676C6505416C69676E070843
- 6F6E74656E74730C436C69704368696C6472656E090A46696C6C2E436F6C6F72
- 0709784646324432443244064C6F636B6564090748697454657374080A53697A
- 652E576964746805000000000000C08407400B53697A652E4865696768740500
- 000000000000C803401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F7207097846463135313531350007544C61796F7574
- 00095374796C654E616D6506074C61796F75743305416C69676E0703546F700A
- 53697A652E576964746805000000000000C08407400B53697A652E4865696768
- 740500000000000000C803401453697A652E506C6174666F726D44656661756C
- 74080007544C61796F757400095374796C654E616D6506074C61796F75743405
- 416C69676E0708436F6E74656E74730A53697A652E5769647468050000000000
- 00C08407400B53697A652E4865696768740500000000000000C803401453697A
- 652E506C6174666F726D44656661756C7408000A5452656374616E676C650009
- 5374796C654E616D65060A52656374616E676C653205416C69676E0708436F6E
- 74656E74730A46696C6C2E436F6C6F720709784646323532353235064C6F636B
- 6564090748697454657374080A53697A652E576964746805000000000000C084
- 07400B53697A652E4865696768740500000000000000C803401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 4631353135313500000A5452656374616E676C6500095374796C654E616D6506
- 0A52656374616E676C653105416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F720709784646313531353135064C6F636B65640907486974546573
- 74080A53697A652E576964746805000000000000C08407400B53697A652E4865
- 696768740500000000000000C803401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F617441
- 6E696D6174696F6E00095374796C654E616D650614466C6F6174416E696D6174
- 696F6E315374796C65084475726174696F6E0500000000009A9999FD3F0D496E
- 746572706F6C6174696F6E070843697263756C61720C50726F70657274794E61
- 6D6506075363616C652E580A537461727456616C7565050000000000000080FF
- 3F0953746F7056616C756505000000000000000000000754726967676572060F
- 4973457870616E6465643D747275650E54726967676572496E76657273650610
- 4973457870616E6465643D66616C73650000000007544C61796F757400095374
- 796C654E616D6506074C61796F75743305416C69676E0708436F6E74656E7473
- 0A53697A652E576964746805000000000000C08407400B53697A652E48656967
- 68740500000000000000C803401453697A652E506C6174666F726D4465666175
- 6C74080005545465787400095374796C654E616D6506047465787405416C6967
- 6E07044C656674084175746F53697A65090A436C6970506172656E7409064C6F
- 636B6564090748697454657374080C4D617267696E732E4C6566740500000000
- 000000A002400A506F736974696F6E2E580500000000000000A002400A53697A
- 652E57696474680500000000000018D103400B53697A652E4865696768740500
- 000000000060FF02401453697A652E506C6174666F726D44656661756C740804
- 54657874060454657874165465787453657474696E67732E466F6E74436F6C6F
- 720708636C615768697465165465787453657474696E67732E486F727A416C69
- 676E07074C656164696E670000000F54457870616E646572427574746F6E0009
- 5374796C654E616D650606627574746F6E05416C69676E07055269676874064C
- 6F636B6564090A506F736974696F6E2E580500000000000080F506400A53697A
- 652E57696474680500000000000000A003400B53697A652E4865696768740500
- 000000000000C803401453697A652E506C6174666F726D44656661756C740800
- 000000005450463007544C61796F757400095374796C654E616D650615616E69
- 696E64696361746F72686F727A7374796C6505416C69676E070643656E746572
- 0A53697A652E57696474680500000000000040C006400B53697A652E48656967
- 687405000000000000008000401453697A652E506C6174666F726D4465666175
- 6C74080756697369626C6508000A5452656374616E676C6500095374796C654E
+ 696E6407044E6F6E650000000A5452656374616E676C6500095374796C654E61
+ 6D65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C2E
+ 436F6C6F720709784646343034303430064C6F636B6564090748697454657374
+ 080A53697A652E576964746805000000000033338505400B53697A652E486569
+ 6768740500000000009999E104401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E67
+ 6C6500095374796C654E616D65060A76696E64696361746F7205416C69676E07
+ 06426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F
+ 636B6564090748697454657374080A506F736974696F6E2E5905000000000099
+ 998D04400A53697A652E576964746805000000000033338505400B53697A652E
+ 4865696768740500000000000000A803401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
+ 3007544C61796F757400095374796C654E616D65060D657870616E6465727374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 000000C08407400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F726465720240000A5452656374616E676C6500095374796C654E616D6506
+ 0B626772656374616E676C6505416C69676E0708436F6E74656E74730C436C69
+ 704368696C6472656E090A46696C6C2E436F6C6F720709784646324432443244
+ 064C6F636B6564090748697454657374080A53697A652E576964746805000000
+ 000000C08407400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
+ 7207097846463135313531350007544C61796F757400095374796C654E616D65
+ 06074C61796F75743305416C69676E0703546F700A53697A652E576964746805
+ 000000000000C08407400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080007544C61796F7574
+ 00095374796C654E616D6506074C61796F75743405416C69676E0708436F6E74
+ 656E74730A53697A652E576964746805000000000000C08407400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C7408000A5452656374616E676C6500095374796C654E616D65060A
+ 52656374616E676C653205416C69676E0708436F6E74656E74730A46696C6C2E
+ 436F6C6F720709784646323532353235064C6F636B6564090748697454657374
+ 080A53697A652E576964746805000000000000C08407400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313500000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 313531353135064C6F636B6564090748697454657374080A53697A652E576964
+ 746805000000000000C08407400B53697A652E48656967687405000000000000
+ 00C803401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E000953
+ 74796C654E616D650614466C6F6174416E696D6174696F6E315374796C650844
+ 75726174696F6E0500000000009A9999FD3F0D496E746572706F6C6174696F6E
+ 070843697263756C61720C50726F70657274794E616D6506075363616C652E58
+ 0A537461727456616C7565050000000000000080FF3F0953746F7056616C7565
+ 05000000000000000000000754726967676572060F4973457870616E6465643D
+ 747275650E54726967676572496E766572736506104973457870616E6465643D
+ 66616C73650000000007544C61796F757400095374796C654E616D6506074C61
+ 796F75743305416C69676E0708436F6E74656E74730A53697A652E5769647468
+ 05000000000000C08407400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080005545465787400
+ 095374796C654E616D6506047465787405416C69676E07044C65667408417574
+ 6F53697A65090A436C6970506172656E7409064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C6566740500000000000000A002400A506F7369
+ 74696F6E2E580500000000000000A002400A53697A652E576964746805000000
+ 000000B8C703400B53697A652E4865696768740500000000000060FF02401453
+ 697A652E506C6174666F726D44656661756C7408045465787406045465787416
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 165465787453657474696E67732E486F727A416C69676E07074C656164696E67
+ 0000000F54457870616E646572427574746F6E00095374796C654E616D650606
+ 627574746F6E05416C69676E07055269676874064C6F636B6564090A506F7369
+ 74696F6E2E580500000000000080F506400A53697A652E576964746805000000
+ 00000000A003400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C740800000000005450463007544C
+ 61796F757400095374796C654E616D650615616E69696E64696361746F72686F
+ 727A7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000040C006400B53697A652E486569676874050000000000000080
+ 00401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F726465720242000A5452656374616E676C6500095374796C654E
616D65060A52656374616E676C653105416C69676E0706436C69656E740C436C
69704368696C6472656E090A46696C6C2E436F6C6F7207097846463430343034
300A53697A652E57696474680500000000000040C006400B53697A652E486569
@@ -14783,1780 +15626,2222 @@ object MainForm: TMainForm
654E616D65060E6C6F67627574746F6E7374796C6505416C69676E070643656E
7465720A53697A652E57696474680500000000000000C005400B53697A652E48
65696768740500000000000000C005401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C6508000A5452656374616E676C650009537479
- 6C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E74
- 0C436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E
- 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
- 696474680500000000000000C005400B53697A652E4865696768740500000000
- 000000C005401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00
- 095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E
- 31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
- 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463230
- 323032300953746F7056616C7565070978464634303430343007547269676765
- 72063049734D6F7573654F7665723D747275653B4973507265737365643D6661
- 6C73653B4973466F63757365643D66616C73650E54726967676572496E766572
- 7365063149734D6F7573654F7665723D66616C73653B4973507265737365643D
- 66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
- 6E696D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 6507097846463430343034300953746F7056616C756507097846463137353739
- 430754726967676572062F4973507265737365643D747275653B49734D6F7573
- 654F7665723D747275653B4973466F63757365643D66616C736500000F54436F
- 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
- 6F6C6F72416E696D6174696F6E33084475726174696F6E050000000000CDCCCC
- FB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
- 7456616C756507097846463241383245320953746F7056616C75650709784646
- 3137353739430754726967676572062E4973507265737365643D747275653B49
- 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
- 726967676572496E7665727365062F4973507265737365643D66616C73653B49
- 734D6F7573654F7665723D747275653B4973466F63757365643D747275650000
- 05545061746800095374796C654E616D650605506174683105416C69676E0706
- 436C69656E7409446174612E506174680A5C02000032000000000000000000A8
- 41CDCCCC40010000000000A8410000C041010000000000C03F0000C041010000
- 000000C03F00000000010000009A99694100000000010000000000A841CDCCCC
- 40030000000000A841CDCCCC400000000000009C410000F04001000000000058
- 410000F04001000000000058410000C03F01000000000040400000C03F010000
- 00000040400000B4410100000000009C410000B4410100000000009C410000F0
- 400300000000009C410000F04000000000000040410000F04001000000000090
- 400000F04001000000000090400000C04001000000000040410000C040010000
- 00000040410000F04003000000000040410000F0400000000000009040000010
- 4101000000000090410000104101000000000090410000284101000000000090
- 4000002841010000000000904000001041030000000000904000001041000000
- 0000009040000040410100000000009041000040410100000000009041000058
- 4101000000000090400000584101000000000090400000404103000000000090
- 4000004041000000000000904000007041010000000000904100007041010000
- 0000009041000084410100000000009040000084410100000000009040000070
- 4103000000000090400000704100000000000090400000904101000000000090
- 4100009041010000000000904100009C41010000000000904000009C41010000
- 00000090400000904103000000000090400000904100000000000070410000C0
- 4001000000333393410000C04001000000000070416666264001000000000070
- 410000C04003000000000070410000C0400A46696C6C2E436F6C6F720708636C
- 6157686974650748697454657374080C4D617267696E732E4C65667405000000
- 00000000A002400B4D617267696E732E546F700500000000000000A002400D4D
- 617267696E732E52696768740500000000000000A002400E4D617267696E732E
- 426F74746F6D0500000000000000A002400A53697A652E576964746805000000
- 000000009805400B53697A652E48656967687405000000000000009805401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E6508577261704D6F6465070346697400000000}
- end
- item
- Platform = 'OSX Yosemite'
- ResourcesBin = {
- 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
- AF00060B627574746F6E7374796C6503EB04060D636865636B626F787374796C
- 6503F3050609656469747374796C6503D4050609677269647374796C6503E608
- 060D67726F7570626F787374796C6503B402060F6865616465726974656D7374
- 796C6503F403060E696D61676563656C6C7374796C65033D01060A6C6162656C
- 7374796C65032001060D6C697374626F78666F6F746572038B0106106C697374
- 626F786974656D7374796C6503520306126C697374626F78706C61696E686561
- 646572036C02060C6C697374626F787374796C6503AA07060E706F7075706365
- 6C6C7374796C65038E03061070726F67726573736261727374796C6503020506
- 1170726F677265737363656C6C7374796C6503CB0206157363726F6C6C626172
- 626F74746F6D627574746F6E03740406147363726F6C6C62617268747261636B
- 7374796C65033B0106137363726F6C6C6261726C656674627574746F6E038704
- 06147363726F6C6C6261727269676874627574746F6E038A04060E7363726F6C
- 6C6261727374796C6503630406127363726F6C6C626172746F70627574746F6E
- 03840406147363726F6C6C62617276747261636B7374796C65033B01060C7370
- 696E626F787374796C65034F08060B7377697463687374796C6503ED01060F74
- 6162636F6E74726F6C7374796C6503F701060B746162646F747374796C65037F
- 01060C7461626974656D7374796C65032B05060D7465787463656C6C7374796C
- 6503A601060D7468756D626261727374796C65034C03060A7468756D62737479
- 6C65034402060D747261636B6261727374796C65034A0806096D656D6F737479
- 6C65037008060D73697A65677269707374796C6503FB04060E73746174757362
- 61727374796C6503DB01060C746F6F6C6261727374796C6503CA00061570726F
- 67726573736261726572726F727374796C65030705060E6C696E6B6C6162656C
- 7374796C65035B030613736D616C6C7363726F6C6C6261727374796C6503AE01
- 060D636F6D626F626F787374796C65032708060D73706C69747465727374796C
- 6503C0030610726164696F627574746F6E7374796C6503C4050618756C63656E
- 746572726164696F627574746F6E7374796C650368050616756C6C6566747261
- 64696F627574746F6E7374796C6503A7050617756C7269676874726164696F62
- 7574746F6E7374796C6503AC050615616E69696E64696361746F72686F727A73
- 74796C6503D502060E6C6F67627574746F6E7374796C6503DA07061365787061
- 6E646572627574746F6E7374796C650381020615657870616E64657263686563
- 6B626F787374796C6503DB05060D657870616E6465727374796C65031607060A
- 70616E656C7374796C65034401061970726F67726573736261726D696E696572
- 726F727374796C6503EE03061470726F67726573736261726D696E697374796C
- 6503F403060E636F6D626F656469747374796C6503F80906106D656E75626172
- 6974656D7374796C6503650B060C6D656E756261727374796C6503B802060D6D
- 656E756974656D7374796C6503890B06126D656E75736570617261746F727374
- 796C6503E501060D6D656E75766965777374796C6503DD0200545046300A5452
- 656374616E676C6500095374796C654E616D65060F6261636B67726F756E6473
- 74796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F72070978
- 46463244324432440A53697A652E576964746805000000000000009407400B53
- 697A652E4865696768740500000000000080D206401453697A652E506C617466
- 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075669
- 7369626C650800005450463007544C61796F757400095374796C654E616D6506
- 0B627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E
- 57696474680500000000000000C805400B53697A652E48656967687405000000
- 00000000C803401453697A652E506C6174666F726D44656661756C7408075669
- 7369626C6508085461624F726465720202000A5452656374616E676C65000953
- 74796C654E616D65060A6261636B67726F756E6405416C69676E0706436C6965
- 6E740C436C69704368696C6472656E090A436C6970506172656E74090A46696C
- 6C2E436F6C6F7207097846463230323032300748697454657374080A53697A65
- 2E57696474680500000000000000C805400B53697A652E486569676874050000
- 0000000000C803401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
- C0004007595261646975730500000000000000C00040000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
- 6E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 6507097846463230323032300953746F7056616C756507097846463430343034
- 300754726967676572063049734D6F7573654F7665723D747275653B49735072
- 65737365643D66616C73653B4973466F63757365643D66616C73650E54726967
- 676572496E7665727365063149734D6F7573654F7665723D66616C73653B4973
- 507265737365643D66616C73653B4973466F63757365643D66616C736500000F
- 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
- 6F6E436F6C6F72416E696D6174696F6E32084475726174696F6E050000000000
- CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
- 7461727456616C756507097846463430343034300953746F7056616C75650709
- 7846463137353739430754726967676572062F4973507265737365643D747275
- 653B49734D6F7573654F7665723D747275653B4973466F63757365643D66616C
- 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
- 15627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05
- 0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F
- 6C6F720A537461727456616C756507097846463241383245320953746F705661
- 6C756507097846463137353739430754726967676572062E4973507265737365
- 643D747275653B49734D6F7573654F7665723D747275653B4973466F63757365
- 643D747275650E54726967676572496E7665727365062F497350726573736564
- 3D66616C73653B49734D6F7573654F7665723D747275653B4973466F63757365
- 643D7472756500000005545465787400095374796C654E616D65060474657874
- 05416C69676E0706436C69656E7413456E61626C6544726167486967686C6967
- 6874080748697454657374080A53697A652E57696474680500000000000000C8
- 05400B53697A652E4865696768740500000000000000C803401453697A652E50
- 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
- 74436F6C6F720708636C6157686974650000005450463007544C61796F757400
- 095374796C654E616D65060D636865636B626F787374796C6505416C69676E07
- 0643656E7465720A53697A652E5769647468050000000000ACAA8006400B5369
- 7A652E48656967687405000000000058559904401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F7264657202030007
- 544C61796F75740005416C69676E07044C6566740A53697A652E576964746805
- 000000000000009003400B53697A652E48656967687405000000000058559904
- 401453697A652E506C6174666F726D44656661756C7408000A5452656374616E
- 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
- 070643656E7465720A46696C6C2E436F6C6F7207097846463230323032300748
- 697454657374080A53697A652E57696474680500000000000000F002400B5369
- 7A652E4865696768740500000000000000F002401453697A652E506C6174666F
- 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
- 313507585261646975730500000000000000C000400759526164697573050000
- 0000000000C00040000A5452656374616E676C6500095374796C654E616D6506
- 0A52656374616E676C653105416C69676E0706436C69656E740A46696C6C2E43
- 6F6C6F720709784646324138324532074869745465737408074F706163697479
- 05000000000000000000000C4D617267696E732E4C6566740500000000000000
- 8000400B4D617267696E732E546F7005000000000000008000400D4D61726769
- 6E732E526967687405000000000000008000400E4D617267696E732E426F7474
- 6F6D05000000000000008000400A53697A652E57696474680500000000000000
- B002400B53697A652E4865696768740500000000000000B002401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E6507585261646975730500000000000000C000400759526164697573050000
- 0000000000C00040000F54466C6F6174416E696D6174696F6E00095374796C65
- 4E616D65061B6368656368626F7856697362696C697479416E696D6174696F6E
- 31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
- 6D6506074F7061636974790A537461727456616C756505000000000000000000
- 000953746F7056616C75650500000000000000C805400754726967676572060E
- 4973436865636B65643D747275650E54726967676572496E7665727365060F49
- 73436865636B65643D66616C73650000000F54436F6C6F72416E696D6174696F
- 6E00095374796C654E616D650618636865636B626F785374726F6B65416E696D
- 6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
- 7274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565
- 07097846463135313531350953746F7056616C75650709784646324138324532
- 0754726967676572060E4973436865636B65643D747275650E54726967676572
- 496E7665727365060F4973436865636B65643D66616C736500000F54436F6C6F
- 72416E696D6174696F6E00095374796C654E616D650617636865636B626F7843
- 6F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CDCCCC
- FB3F07496E7665727365090C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
- 616C756507097846463430343034300754726967676572061049734D6F757365
- 4F7665723D747275650E54726967676572496E7665727365061149734D6F7573
- 654F7665723D66616C73650000000005545465787400095374796C654E616D65
- 06047465787405416C69676E0706436C69656E740A53697A652E576964746805
- 00000000005855DD05400B53697A652E48656967687405000000000058559904
- 401453697A652E506C6174666F726D44656661756C7408045465787406045465
- 7874165465787453657474696E67732E466F6E74436F6C6F720708636C615768
- 6974650000005450463007544C61796F757400095374796C654E616D65060965
- 6469747374796C6505416C69676E070643656E7465720A53697A652E57696474
- 680500000000000000C805400B53697A652E4865696768740500000000000000
- C803401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F726465720204000C5442727573684F626A6563740009537479
- 6C654E616D65060A666F726567726F756E6400000C5442727573684F626A6563
- 7400095374796C654E616D65060973656C656374696F6E0B42727573682E436F
- 6C6F72070978393632413832453200000B54466F6E744F626A65637400095374
- 796C654E616D650604666F6E7409466F6E742E53697A650500000000000000D0
- 024000000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
- 7207097846463230323032300748697454657374080A53697A652E5769647468
- 0500000000000000C805400B53697A652E4865696768740500000000000000C8
- 03401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
- 436F6C6F72070978464631353135313507585261646975730500000000000000
- C0004007595261646975730500000000000000C00040000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D650614656469745374726F6B65416E
- 696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F
- 70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456616C
- 756507097846463135313531350953746F7056616C7565070978464632413832
- 45320754726967676572060E4973466F63757365643D747275650E5472696767
- 6572496E7665727365060F4973466F63757365643D66616C736500000F54436F
- 6C6F72416E696D6174696F6E00095374796C654E616D65061465646974537472
- 6F6B65416E696D6174696F6E32084475726174696F6E050000000000CDCCCCFB
- 3F07496E7665727365090C50726F70657274794E616D65060C5374726F6B652E
- 436F6C6F720A537461727456616C756507097846463135313531350953746F70
- 56616C756507097846463443344334430754726967676572062149734D6F7573
- 654F7665723D747275653B4973466F63757365643D66616C73653B0E54726967
- 676572496E7665727365062249734D6F7573654F7665723D66616C73653B4973
- 466F63757365643D66616C73653B00000007544C61796F757400095374796C65
- 4E616D650607627574746F6E7305416C69676E07055269676874064C6F636B65
- 64090B4D617267696E732E546F7005000000000000008000400D4D617267696E
- 732E526967687405000000000000008000400E4D617267696E732E426F74746F
- 6D05000000000000008000400A506F736974696F6E2E580500000000000000C0
- 04400A506F736974696F6E2E5905000000000000008000400A53697A652E5769
- 6474680500000000000000C804400B53697A652E486569676874050000000000
- 0000A803401453697A652E506C6174666F726D44656661756C7408000007544C
- 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
- 06436C69656E74064C6F636B6564090C4D617267696E732E4C65667405000000
- 000000008001400B4D617267696E732E546F7005000000000000008000400D4D
- 617267696E732E526967687405000000000000008000400E4D617267696E732E
- 426F74746F6D05000000000000008000400A53697A652E576964746805000000
- 00000000A804400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C7408000006544C6162656C000953
- 74796C654E616D65060670726F6D7074064C6F636B656409074F706163697479
- 050000000000000080FE3F165465787453657474696E67732E466F6E74436F6C
- 6F720708636C6157686974650454657874060454657874000000545046300754
- 4C61796F757400095374796C654E616D650609677269647374796C6505416C69
- 676E070643656E7465720A53697A652E5769647468050000000000FFFFE90540
- 0B53697A652E48656967687405000000000000008306401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 05000C5442727573684F626A65637400095374796C654E616D650618416C7465
- 726E6174696E67526F774261636B67726F756E640B42727573682E436F6C6F72
- 070978333237383738373800000C5442727573684F626A65637400095374796C
- 654E616D6506086C696E6566696C6C0B42727573682E436F6C6F720709784646
- 31353135313500000A5452656374616E676C6500095374796C654E616D65060A
- 6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E
- 436F6C6F720709784646323032303230064C6F636B6564090748697454657374
- 080C50616464696E672E4C65667405000000000000008000400B50616464696E
- 672E546F7005000000000000008000400D50616464696E672E52696768740500
- 0000000000008000400E50616464696E672E426F74746F6D0500000000000000
- 8000400A53697A652E5769647468050000000000FFFFE905400B53697A652E48
- 656967687405000000000000008306401453697A652E506C6174666F726D4465
- 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350758
- 5261646975730500000000000000C00040075952616469757305000000000000
- 00C0004000075448656164657200095374796C654E616D650606686561646572
- 0553696465730B03546F70044C65667406426F74746F6D055269676874000541
- 6C69676E0703546F700A506F736974696F6E2E5805000000000000008000400A
- 506F736974696F6E2E5905000000000000008000400A53697A652E5769647468
- 050000000000FFFFE105400B53697A652E4865696768740500000000000000A8
- 03401453697A652E506C6174666F726D44656661756C7408000007544C61796F
- 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
- 69656E740C436C69704368696C6472656E090A53697A652E5769647468050000
- 000000FFFFC105400B53697A652E4865696768740500000000000000B4054014
- 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
- 6500095374796C654E616D65060973656C656374696F6E0A46696C6C2E436F6C
- 6F7207097846463241383245320748697454657374080A53697A652E57696474
- 680500000000000000C804400B53697A652E4865696768740500000000000000
- C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E6507585261646975730500000000000000C000400759
- 5261646975730500000000000000C0004000000A5452656374616E676C650009
- 5374796C654E616D650605666F6375730A46696C6C2E436F6C6F720709784146
- 3241383245320748697454657374080C4D617267696E732E4C65667405000000
- 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
- 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
- 426F74746F6D050000000000000080FF3F0A53697A652E576964746805000000
- 00000000C804400B53697A652E4865696768740500000000000000C804401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E6507585261646975730500000000000000C0004007595261646975
- 730500000000000000C000400000000A545363726F6C6C42617200095374796C
- 654E616D65060A767363726F6C6C62617205416C69676E070552696768740B53
- 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
- 6E0708566572746963616C0A506F736974696F6E2E58050000000000FFFFC505
- 400A506F736974696F6E2E590500000000000000B803400A53697A652E576964
- 746805000000000000008003400B53697A652E48656967687405000000000000
- 00B405401453697A652E506C6174666F726D44656661756C740800000A545363
- 726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261720541
- 6C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000000000
- 0000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F7369
- 74696F6E2E5805000000000000008000400A506F736974696F6E2E5905000000
- 00000000E205400A53697A652E5769647468050000000000FFFFE105400B5369
- 7A652E48656967687405000000000000008003401453697A652E506C6174666F
- 726D44656661756C740800000F54536D616C6C5363726F6C6C42617200095374
- 796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E0705
- 52696768740B536D616C6C4368616E676505000000000000000000000B4F7269
- 656E746174696F6E0708566572746963616C0C4D617267696E732E4C65667405
- 000000000000008000400A506F736974696F6E2E580500000000000000C60540
- 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
- 6805000000000000008002400B53697A652E4865696768740500000000000000
- 8002401453697A652E506C6174666F726D44656661756C74080756697369626C
- 650800000F54536D616C6C5363726F6C6C42617200095374796C654E616D6506
- 0F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B53
- 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
- 6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000000000
- 008000400A506F736974696F6E2E5805000000000000008000400A506F736974
- 696F6E2E590500000000000000E205400A53697A652E57696474680500000000
- 0000009606400B53697A652E4865696768740500000000000000800240145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650800000000
- 5450463007544C61796F757400095374796C654E616D65060D67726F7570626F
- 787374796C6505416C69676E070643656E7465720A53697A652E576964746805
- 00000000000000F004400B53697A652E4865696768740500000000000000C804
- 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 085461624F726465720206000A5452656374616E676C6500095374796C654E61
- 6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946
- 696C6C2E4B696E6407044E6F6E650748697454657374080C4D617267696E732E
- 4C6566740500000000000000C000400B4D617267696E732E546F700500000000
- 0000009002400D4D617267696E732E52696768740500000000000000C000400E
- 4D617267696E732E426F74746F6D0500000000000000C000400A53697A652E57
- 696474680500000000000000D804400B53697A652E4865696768740500000000
- 0000009804401453697A652E506C6174666F726D44656661756C74080C537472
- 6F6B652E436F6C6F720709784646313531353135075852616469757305000000
- 00000000C0004007595261646975730500000000000000C00040000554546578
- 7400095374796C654E616D65060474657874084175746F53697A65090A436C69
- 70506172656E74090748697454657374080C4D617267696E732E4C6566740500
- 000000000000A002400A506F736974696F6E2E5805000000000060559502400A
- 506F736974696F6E2E590500000000004055D501C00A53697A652E5769647468
- 05000000000000B8C703400B53697A652E4865696768740500000000000060FF
- 02401453697A652E506C6174666F726D44656661756C74081654657874536574
- 74696E67732E466F6E74436F6C6F720708636C61576869746515546578745365
- 7474696E67732E576F72645772617008000000005450463007544C61796F7574
- 00095374796C654E616D65060F6865616465726974656D7374796C6505416C69
- 676E070643656E7465720A53697A652E57696474680500000000000000920540
- 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
+ 6661756C74080756697369626C6508085461624F726465720248000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0706436C69656E740C436C69704368696C6472656E090A436C69705061
+ 72656E74090A46696C6C2E436F6C6F7207097846463230323032300748697454
+ 657374080A53697A652E57696474680500000000000000C005400B53697A652E
+ 4865696768740500000000000000C005401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463230323032300953746F7056616C756507097846463430
+ 343034300754726967676572063049734D6F7573654F7665723D747275653B49
+ 73507265737365643D66616C73653B4973466F63757365643D66616C73650E54
+ 726967676572496E7665727365063149734D6F7573654F7665723D66616C7365
+ 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562
+ 7574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463430343034300953746F7056616C75
+ 6507097846463137353739430754726967676572062F4973507265737365643D
+ 747275653B49734D6F7573654F7665723D747275653B4973466F63757365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3308447572617469
+ 6F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463241383245320953746F
+ 7056616C756507097846463137353739430754726967676572062E4973507265
+ 737365643D747275653B49734D6F7573654F7665723D747275653B4973466F63
+ 757365643D747275650E54726967676572496E7665727365062F497350726573
+ 7365643D66616C73653B49734D6F7573654F7665723D747275653B4973466F63
+ 757365643D74727565000005545061746800095374796C654E616D6506055061
+ 74683105416C69676E0706436C69656E7409446174612E506174680A5C020000
+ 32000000000000000000A841CDCCCC40010000000000A8410000C04101000000
+ 0000C03F0000C041010000000000C03F00000000010000009A99694100000000
+ 010000000000A841CDCCCC40030000000000A841CDCCCC400000000000009C41
+ 0000F04001000000000058410000F04001000000000058410000C03F01000000
+ 000040400000C03F01000000000040400000B4410100000000009C410000B441
+ 0100000000009C410000F0400300000000009C410000F0400000000000004041
+ 0000F04001000000000090400000F04001000000000090400000C04001000000
+ 000040410000C04001000000000040410000F04003000000000040410000F040
+ 0000000000009040000010410100000000009041000010410100000000009041
+ 0000284101000000000090400000284101000000000090400000104103000000
+ 0000904000001041000000000000904000004041010000000000904100004041
+ 0100000000009041000058410100000000009040000058410100000000009040
+ 0000404103000000000090400000404100000000000090400000704101000000
+ 0000904100007041010000000000904100008441010000000000904000008441
+ 0100000000009040000070410300000000009040000070410000000000009040
+ 00009041010000000000904100009041010000000000904100009C4101000000
+ 0000904000009C41010000000000904000009041030000000000904000009041
+ 00000000000070410000C04001000000333393410000C0400100000000007041
+ 6666264001000000000070410000C04003000000000070410000C0400A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080C4D61726769
+ 6E732E4C6566740500000000000000A002400B4D617267696E732E546F700500
+ 000000000000A002400D4D617267696E732E52696768740500000000000000A0
+ 02400E4D617267696E732E426F74746F6D0500000000000000A002400A53697A
+ 652E576964746805000000000000009805400B53697A652E4865696768740500
+ 0000000000009805401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400
+ 0000005450463007544C61796F757400095374796C654E616D65061B74726565
+ 76696577657870616E646572627574746F6E7374796C6505416C69676E070643
+ 656E7465720B4D617267696E732E546F70050000000000000080FF3F0A53697A
+ 652E57696474680500000000000000B003400B53697A652E4865696768740500
+ 000000000000B003401453697A652E506C6174666F726D44656661756C740808
+ 5461624F72646572024C0005545061746800095374796C654E616D6506055061
+ 74683105416C69676E070643656E74657209446174612E506174680A34000000
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C8420A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080D526F746174696F6E416E676C65
+ 0500000000000000B405C00A53697A652E57696474680500000000000000A002
+ 400B53697A652E4865696768740500000000000000C001401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000F54466C6F6174416E696D6174696F6E00095374796C654E616D650614466C
+ 6F6174416E696D6174696F6E315374796C65084475726174696F6E0500000000
+ 00CDCCCCFB3F0D496E746572706F6C6174696F6E070843697263756C61720C50
+ 726F70657274794E616D65060D526F746174696F6E416E676C650A5374617274
+ 56616C75650500000000000000B405C00953746F7056616C7565050000000000
+ 00000000000754726967676572060F4973457870616E6465643D747275650E54
+ 726967676572496E766572736506104973457870616E6465643D66616C736500
+ 000000545046300A5452656374616E676C6500095374796C654E616D65061174
+ 726565766965776974656D7374796C6505416C69676E070643656E7465720946
+ 696C6C2E4B696E6407044E6F6E650748697454657374080553696465730B0642
+ 6F74746F6D000A53697A652E57696474680500000000000000AE05400B53697A
+ 652E4865696768740500000000000000A004401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 350756697369626C6508000C545370656564427574746F6E00095374796C654E
+ 616D650606627574746F6E05416C69676E07044C6566740A53697A652E576964
+ 74680500000000000000A003400B53697A652E48656967687405000000000000
+ 00A004401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B7570061B7472656576696577657870616E646572627574746F6E7374
+ 796C65000007544C61796F75740005416C69676E0708436F6E74656E74730C4D
+ 617267696E732E4C6566740500000000000000A003400A53697A652E57696474
+ 6805000000000000008605400B53697A652E4865696768740500000000000000
+ A004401453697A652E506C6174666F726D44656661756C740800095443686563
+ 6B426F7800095374796C654E616D650605636865636B05416C69676E07044C65
+ 66740843616E466F637573081244697361626C65466F63757345666665637409
+ 0A53697A652E57696474680500000000000000A003400B53697A652E48656967
+ 68740500000000000000A004401453697A652E506C6174666F726D4465666175
+ 6C740800000654476C79706800095374796C654E616D65060A676C7970687374
+ 796C650C4D617267696E732E4C65667405000000000000008000400B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 05000000000000008000400E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F05416C69676E07044C6566740A506F736974696F6E2E5805000000
+ 00000000B003400A506F736974696F6E2E59050000000000000080FF3F0A5369
+ 7A652E576964746805000000000000008003400B53697A652E48656967687405
+ 000000000000009804401453697A652E506C6174666F726D44656661756C7408
+ 000005545465787400095374796C654E616D6506047465787405416C69676E07
+ 06436C69656E74064C6F636B6564090748697454657374080A53697A652E5769
+ 6474680500000000000000BC04400B53697A652E486569676874050000000000
+ 0000A004401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746515546578
+ 7453657474696E67732E576F72645772617008165465787453657474696E6773
+ 2E486F727A416C69676E07074C656164696E670000000A5452656374616E676C
+ 650005416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F
+ 6E650748697454657374080E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0553696465730B044C656674000A53697A652E5769647468050000
+ 0000000000AE05400B53697A652E48656967687405000000000000009C044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646324138324532105374726F6B652E546869636B6E6573730500
+ 0000000000008000400000005450463007544C61796F757400095374796C654E
+ 616D65060D74726565766965777374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000000000E106400B53697A652E48656967
+ 687405000000000000808107401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720252000C5442727573684F
+ 626A65637400095374796C654E616D650618416C7465726E6174696E67526F77
+ 4261636B67726F756E640B42727573682E436F6C6F7207097830464646464646
+ 4600000A5452656374616E676C6500095374796C654E616D65060A6261636B67
+ 726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 0709784646323032303230064C6F636B6564090748697454657374080C506164
+ 64696E672E4C656674050000000000000080FF3F0D50616464696E672E526967
+ 6874050000000000000080FF3F0A53697A652E57696474680500000000000000
+ E106400B53697A652E48656967687405000000000000808107401453697A652E
+ 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
+ 46463135313531350007544C61796F757400095374796C654E616D650607636F
+ 6E74656E7405416C69676E0706436C69656E740C436C69704368696C6472656E
+ 090B4D617267696E732E546F70050000000000000080FF3F0A53697A652E5769
+ 6474680500000000000000CD06400B53697A652E486569676874050000000000
+ 0000F006401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060973656C656374696F6E0A4669
+ 6C6C2E436F6C6F7207097846463241383245320748697454657374080A53697A
+ 652E57696474680500000000000000C804400B53697A652E4865696768740500
+ 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C650009
+ 5374796C654E616D650610666F637573656473656C656374696F6E0A46696C6C
+ 2E436F6C6F7207097846463241383245320748697454657374080A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650B5374726F6B652E446173680703446F74
+ 0000000A545363726F6C6C42617200095374796C654E616D65060A767363726F
+ 6C6C62617205416C69676E070552696768740B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E0708566572746963616C0C
+ 4D617267696E732E4C65667405000000000000008000400A506F736974696F6E
+ 2E580500000000000000D006400A53697A652E57696474680500000000000000
+ 8003400B53697A652E4865696768740500000000000000F106401453697A652E
+ 506C6174666F726D44656661756C740800000A545363726F6C6C426172000953
+ 74796C654E616D65060A687363726F6C6C62617205416C69676E0706426F7474
+ 6F6D0B536D616C6C4368616E676505000000000000000000000B4F7269656E74
+ 6174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F70050000
+ 00000000008000400A506F736974696F6E2E58050000000000000080FF3F0A50
+ 6F736974696F6E2E590500000000000000F306400A53697A652E576964746805
+ 00000000000000DF06400B53697A652E48656967687405000000000000008003
+ 401453697A652E506C6174666F726D44656661756C740800000F54536D616C6C
+ 5363726F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F
+ 6C6C62617205416C69676E070552696768740B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E0708566572746963616C0C
+ 4D617267696E732E4C65667405000000000000008000400A506F736974696F6E
+ 2E580500000000000000C605400A506F736974696F6E2E590500000000000000
+ 8000400A53697A652E576964746805000000000000008002400B53697A652E48
+ 656967687405000000000000008002401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C650800000F54536D616C6C5363726F6C6C4261
+ 7200095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C
+ 69676E0706426F74746F6D0B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D61726769
+ 6E732E546F7005000000000000008000400A506F736974696F6E2E5805000000
+ 000000008000400A506F736974696F6E2E590500000000000000E205400A5369
+ 7A652E576964746805000000000000009606400B53697A652E48656967687405
+ 000000000000008002401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508000000005450463007544C61796F757400095374796C65
+ 4E616D65061670726F677265737362617266696E6973687374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000003333850540
+ 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 07000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
- 6F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
- 09784646344334433443064C6F636B6564090748697454657374080A53697A65
- 2E576964746805000000000000009205400B53697A652E486569676874050000
- 0000000000D003401453697A652E506C6174666F726D44656661756C74080C53
- 74726F6B652E436F6C6F72070978464631353135313507585261646975730500
- 000000000000C0004007595261646975730500000000000000C00040000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650615686561646572
- 436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CDCC
- CCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846463443344334430953746F7056616C756507097846
- 463241383245320754726967676572060E4973507265737365643D747275650E
- 54726967676572496E7665727365060F4973507265737365643D66616C736500
- 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506166865
- 616465725374726F6B65416E696D6174696F6E31084475726174696F6E050000
- 000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E436F
- 6C6F720A537461727456616C756507097846463135313531350953746F705661
- 6C756507097846463241383245320754726967676572060E4973507265737365
- 643D747275650E54726967676572496E7665727365060F497350726573736564
- 3D66616C736500000005545465787400095374796C654E616D65060474657874
- 05416C69676E0706436C69656E74064C6F636B6564090748697454657374080C
- 4D617267696E732E4C6566740500000000000000A001400B4D617267696E732E
- 546F7005000000000000008000400D4D617267696E732E526967687405000000
- 00000000A001400E4D617267696E732E426F74746F6D05000000000000008000
- 400A53697A652E57696474680500000000000000FC04400B53697A652E486569
- 6768740500000000000000B003401453697A652E506C6174666F726D44656661
- 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
- 57686974650000005450463007544C61796F757400095374796C654E616D6506
- 0E696D61676563656C6C7374796C6505416C69676E070643656E746572075669
- 7369626C6508085461624F726465720208000654496D61676500095374796C65
- 4E616D650605696D6167650E4D756C74695265734269746D61700E0100000541
- 6C69676E0706436C69656E74064C6F636B6564090748697454657374080C4D61
+ 46000A5452656374616E676C6500095374796C654E616D65060668747261636B
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 323032303230064C6F636B6564090748697454657374080A53697A652E576964
+ 746805000000000033338505400B53697A652E48656967687405000000000099
+ 99E104401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F720709784646313531353135000A5452656374616E676C650009
+ 5374796C654E616D65060A68696E64696361746F7205416C69676E07044C6566
+ 740A46696C6C2E436F6C6F720709784646324345323434064C6F636B65640907
+ 48697454657374080C4D617267696E732E4C656674050000000000000080FF3F
+ 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
+ 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
+ 0000000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F
+ 0A506F736974696F6E2E59050000000000000080FF3F0A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000009999
+ D904401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E650000000A5452656374616E676C6500095374796C65
+ 4E616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720709784646313531353135000A
+ 5452656374616E676C6500095374796C654E616D65060A76696E64696361746F
+ 7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978464632
+ 4345323434064C6F636B6564090748697454657374080C4D617267696E732E4C
+ 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
+ 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F0A506F736974696F
+ 6E2E58050000000000000080FF3F0A506F736974696F6E2E5905000000000099
+ 998904400A53697A652E576964746805000000000033338105400B53697A652E
+ 4865696768740500000000000000A803401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
+ 3007544C61796F757400095374796C654E616D65061A70726F67726573736261
+ 726D696E6966696E6973687374796C6505416C69676E070643656E7465720A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508085461624F726465720251000A5452656374616E676C
+ 6500095374796C654E616D65060668747261636B05416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B65
+ 64090748697454657374080A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000009999E104401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000A5452656374616E676C6500095374796C654E616D65060A68696E64696361
+ 746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72070978464632
+ 4345323434064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E650000000A5452656374616E676C6500095374796C65
+ 4E616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646343034303430064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000A545265637461
+ 6E676C6500095374796C654E616D65060A76696E64696361746F7205416C6967
+ 6E0706426F74746F6D0A46696C6C2E436F6C6F72070978464632434532343406
+ 4C6F636B6564090748697454657374080A506F736974696F6E2E590500000000
+ 0099998D04400A53697A652E576964746805000000000033338505400B53697A
+ 652E4865696768740500000000000000A803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054
+ 50463007544C61796F757400095374796C654E616D65061177696E646F77626F
+ 726465727374796C6505416C69676E070643656E7465720A53697A652E576964
+ 746805000000000056D5AF07400B53697A652E48656967687405000000000000
+ 00B306401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508085461624F72646572023B000A5452656374616E676C6500095374796C
+ 654E616D6506046D61736B05416C69676E0708436F6E74656E74730A46696C6C
+ 2E436F6C6F7207097846463130313031300A53697A652E576964746805000000
+ 000056D5AF07400B53697A652E4865696768740500000000000000B306401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650756697369626C6508000007544C61796F757400095374796C65
+ 4E616D6506046C65667405416C69676E07084D6F73744C656674064C6F636B65
+ 64090A506F736974696F6E2E5905000000000000008004400A53697A652E5769
+ 64746805000000000000008001400B53697A652E486569676874050000000000
+ 00009306401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C650005416C69676E07084D6F73744C6566740A46696C6C2E436F
+ 6C6F7207097846463230323032300748697454657374080553696465730B044C
+ 656674055269676874000A53697A652E57696474680500000000000000800140
+ 0B53697A652E48656967687405000000000000008F06401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 353135313500000A5452656374616E676C6500095374796C654E616D65060A52
+ 656374616E676C653105416C69676E070A4D6F7374426F74746F6D13456E6162
+ 6C6544726167486967686C69676874080A46696C6C2E436F6C6F720709784646
+ 3230323032300748697454657374080A506F736974696F6E2E59050000000000
+ 00008F06400553696465730B044C65667406426F74746F6D000A53697A652E57
+ 6964746805000000000000008001400B53697A652E4865696768740500000000
+ 0000008001401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F7207097846463135313531350007544C61796F7574000953
+ 74796C654E616D6506074C61796F75743305416C69676E07094D6F7374526967
+ 68740A506F736974696F6E2E580500000000000000C000400A53697A652E5769
+ 647468050000000000000080FF3F0B53697A652E486569676874050000000000
+ 00008001401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060A52656374616E676C65310541
+ 6C69676E0703546F700A46696C6C2E436F6C6F72070978464631353135313507
+ 48697454657374080A53697A652E5769647468050000000000000080FF3F0B53
+ 697A652E486569676874050000000000000080FF3F1453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 000007544C61796F757400095374796C654E616D650605726967687405416C69
+ 676E07094D6F73745269676874064C6F636B6564090A506F736974696F6E2E58
+ 05000000000056D5AD07400A506F736974696F6E2E5905000000000000008004
+ 400A53697A652E576964746805000000000000008001400B53697A652E486569
+ 67687405000000000000009306401453697A652E506C6174666F726D44656661
+ 756C7408000A5452656374616E676C650005416C69676E07094D6F7374526967
+ 68740A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080553696465730B044C656674055269676874000A53697A652E576964746805
+ 000000000000008001400B53697A652E48656967687405000000000000008F06
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F72070978464631353135313500000A5452656374616E676C6500095374
+ 796C654E616D65060A52656374616E676C653105416C69676E070A4D6F737442
+ 6F74746F6D13456E61626C6544726167486967686C69676874080A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A506F73697469
+ 6F6E2E5905000000000000008F06400553696465730B06426F74746F6D055269
+ 676874000A53697A652E576964746805000000000000008001400B53697A652E
+ 48656967687405000000000000008001401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 07544C61796F757400095374796C654E616D6506074C61796F75743305416C69
+ 676E07084D6F73744C6566740A53697A652E5769647468050000000000000080
+ FF3F0B53697A652E48656967687405000000000000008001401453697A652E50
+ 6C6174666F726D44656661756C7408000A5452656374616E676C650009537479
+ 6C654E616D65060A52656374616E676C653105416C69676E0703546F700A4669
+ 6C6C2E436F6C6F7207097846463135313531350748697454657374080A53697A
+ 652E5769647468050000000000000080FF3F0B53697A652E4865696768740500
+ 00000000000080FF3F1453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E6500000000000A5452656374616E676C
+ 650005416C69676E07074D6F7374546F700A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080A53697A652E5769
+ 64746805000000000056D5AF07400B53697A652E486569676874050000000000
+ 00008004401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F7207097846463135313531350007544C61796F757400095374
+ 796C654E616D65060763617074696F6E05416C69676E0708436F6E74656E7473
+ 064C6F636B6564090748697454657374090C4D617267696E732E4C6566740500
+ 0000000000008001400B4D617267696E732E546F700500000000000000800140
+ 0D4D617267696E732E526967687405000000000000008001400A53697A652E57
+ 6964746805000000000056D5AB07400B53697A652E4865696768740500000000
+ 000000E003401453697A652E506C6174666F726D44656661756C740800000754
+ 4C61796F75740005416C69676E0706436C69656E74064C6F636B6564090C4D61
7267696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F
70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A
- 53697A652E57696474680500000000000000C004400B53697A652E4865696768
- 740500000000000000C004401453697A652E506C6174666F726D44656661756C
- 74080000005450463007544C61796F757400095374796C654E616D65060A6C61
- 62656C7374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 53697A652E576964746805000000000056D5AE07400B53697A652E4865696768
+ 740500000000000000F003401453697A652E506C6174666F726D44656661756C
+ 74080007544C61796F75740005416C69676E07044C656674064C6F636B656409
+ 0A53697A652E576964746805000000000000009002400B53697A652E48656967
+ 68740500000000000000F003401453697A652E506C6174666F726D4465666175
+ 6C7408000007544C61796F757400095374796C654E616D65060469636F6E064C
+ 6F636B6564090A506F736974696F6E2E5805000000000000009002400A506F73
+ 6974696F6E2E590500000000000000E001400A53697A652E5769647468050000
+ 0000000000C803400B53697A652E4865696768740500000000000000A8034014
+ 53697A652E506C6174666F726D44656661756C7408000007544C61796F757400
+ 095374796C654E616D65060773797362746E7305416C69676E0706436C69656E
+ 74064C6F636B6564090A53697A652E57696474680500000000005655AA07400B
+ 53697A652E4865696768740500000000000000F003401453697A652E506C6174
+ 666F726D44656661756C7408000C545370656564427574746F6E00095374796C
+ 654E616D650605636C6F736505416C69676E07055269676874064C6F636B6564
+ 090A506F736974696F6E2E5805000000000056559107400A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 00F003401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B75700610636C6F7365627574746F6E7374796C6500000C5453706565
+ 64427574746F6E00095374796C654E616D6506036D617805416C69676E070552
+ 69676874064C6F636B6564090A506F736974696F6E2E58050000000000565581
+ 07400A53697A652E576964746805000000000000008004400B53697A652E4865
+ 696768740500000000000000F003401453697A652E506C6174666F726D446566
+ 61756C74080B5374796C654C6F6F6B7570060E6D6178627574746F6E7374796C
+ 6500000C545370656564427574746F6E00095374796C654E616D650603726573
+ 05416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E58
+ 050000000000ACAAE206400A53697A652E576964746805000000000000008004
+ 400B53697A652E4865696768740500000000000000F003401453697A652E506C
+ 6174666F726D44656661756C74080B5374796C654C6F6F6B7570060E72657362
+ 7574746F6E7374796C6500000C545370656564427574746F6E00095374796C65
+ 4E616D6506036D696E05416C69676E07055269676874064C6F636B6564090A50
+ 6F736974696F6E2E58050000000000ACAAC206400A53697A652E576964746805
+ 000000000000008004400B53697A652E4865696768740500000000000000F003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B7570060E6D696E627574746F6E7374796C6500000554546578740009537479
+ 6C654E616D6506057469746C6505416C69676E0706436C69656E74064C6F636B
+ 6564090748697454657374080A53697A652E5769647468050000000000ACAAC2
+ 06400B53697A652E4865696768740500000000000000F003401453697A652E50
+ 6C6174666F726D44656661756C7408045465787406055469746C651654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746500000000
+ 0007544C61796F757400095374796C654E616D650606636C69656E7405416C69
+ 676E0706436C69656E74064C6F636B6564090748697454657374090A53697A65
+ 2E576964746805000000000056D5AB07400B53697A652E486569676874050000
+ 00000000008F06401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F757400095374796C654E616D650606626F74746F6D05416C6967
+ 6E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E5805000000
+ 000000008001400A506F736974696F6E2E590500000000000000AF06400A5369
+ 7A652E576964746805000000000056D5AB07400B53697A652E48656967687405
+ 000000000000008001401453697A652E506C6174666F726D44656661756C7408
+ 000A5452656374616E676C6500095374796C654E616D6506047265637405416C
+ 69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846463230323032
+ 300748697454657374080553696465730B03546F7006426F74746F6D000A5369
+ 7A652E576964746805000000000056D5AB07400B53697A652E48656967687405
+ 000000000000008001401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F7207097846463135313531350000000054504630
+ 07544C61796F757400095374796C654E616D6506136172726F77646F776E746F
+ 6F6C627574746F6E05416C69676E070643656E7465720A53697A652E57696474
680500000000000000C805400B53697A652E4865696768740500000000000000
C803401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F7264657202090005545465787400095374796C654E616D6506
- 047465787405416C69676E0708436F6E74656E74730748697454657374080A53
- 697A652E57696474680500000000000000C805400B53697A652E486569676874
- 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
- 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
- 74650000005450463007544C61796F757400095374796C654E616D65060D6C69
- 7374626F78666F6F74657205416C69676E070643656E7465720A53697A652E57
- 6964746805000000000000009205400B53697A652E4865696768740500000000
- 000000D003401453697A652E506C6174666F726D44656661756C740807566973
- 69626C6508085461624F72646572020A0005545465787400095374796C654E61
- 6D6506047465787405416C69676E0706436C69656E74064C6F636B6564090748
- 697454657374080C4D617267696E732E4C6566740500000000000000A001400B
- 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
- 696768740500000000000000A001400E4D617267696E732E426F74746F6D0500
- 0000000000008000400A53697A652E57696474680500000000000000FC04400B
- 53697A652E4865696768740500000000000000B003401453697A652E506C6174
- 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
- 6C6F720708636C6157686974650000005450463007544C61796F757400095374
- 796C654E616D6506106C697374626F786974656D7374796C6505416C69676E07
- 0643656E7465720A53697A652E57696474680500000000000000D605400B5369
- 7A652E4865696768740500000000000000C003401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F72646572020B0006
- 54476C79706800095374796C654E616D65060A676C7970687374796C650C4D61
- 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
- 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
- 00008000400E4D617267696E732E426F74746F6D050000000000000080FF3F05
- 416C69676E07044C6566740A506F736974696F6E2E5805000000000000008000
- 400A506F736974696F6E2E59050000000000000080FF3F0A53697A652E576964
- 746805000000000000008003400B53697A652E48656967687405000000000000
- 00B003401453697A652E506C6174666F726D44656661756C7408000005545465
+ 6508085461624F726465720201000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C43
+ 6C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E436F
+ 6C6F7207097830303230323032300748697454657374080A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C803401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108
+ 4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978303032303230
+ 32300953746F7056616C75650709784646343034303430075472696767657206
+ 3049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
+ 653B4973466F63757365643D66616C73650E54726967676572496E7665727365
+ 063149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
+ 6C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E69
+ 6D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463430343034300953746F7056616C7565070978464631373537394307
+ 54726967676572062F4973507265737365643D747275653B49734D6F7573654F
+ 7665723D747275653B4973466F63757365643D66616C736500000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E33084475726174696F6E050000000000CDCCCCFB3F
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463241383245320953746F7056616C756507097846463137
+ 353739430754726967676572062E4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275653B4973466F63757365643D747275650E547269
+ 67676572496E7665727365062F4973507265737365643D66616C73653B49734D
+ 6F7573654F7665723D747275653B4973466F63757365643D7472756500000005
+ 545061746800095374796C654E616D6506047061746805416C69676E07064365
+ 6E74657209446174612E506174680A3400000004000000000000000000C84200
+ 00C84201000000000096430000C8420100000000004843000096430300000000
+ 00C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080A53697A652E57696474680500000000000000A002400B53697A65
+ 2E4865696768740500000000000000C001401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000005545465
787400095374796C654E616D6506047465787405416C69676E0706436C69656E
- 740748697454657374080C4D617267696E732E4C6566740500000000000000C0
- 00400B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E
- 732E52696768740500000000000000C000400E4D617267696E732E426F74746F
- 6D050000000000000080FF3F0A53697A652E57696474680500000000000000CA
- 05400B53697A652E4865696768740500000000000000B003401453697A652E50
- 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
- 74436F6C6F720708636C615768697465155465787453657474696E67732E576F
- 72645772617008165465787453657474696E67732E486F727A416C69676E0707
- 4C656164696E6700000954436865636B426F7800095374796C654E616D650605
- 636865636B05416C69676E07084D6F73744C6566740843616E466F6375730812
- 44697361626C65466F637573456666656374090A53697A652E57696474680500
- 000000000000A003400B53697A652E4865696768740500000000000000C00340
- 1453697A652E506C6174666F726D44656661756C74080756697369626C650800
- 00005450463007544C61796F757400095374796C654E616D6506126C69737462
- 6F78706C61696E68656164657205416C69676E070643656E7465720A53697A65
- 2E576964746805000000000000009205400B53697A652E486569676874050000
- 0000000000D003401453697A652E506C6174666F726D44656661756C74080756
- 697369626C6508085461624F72646572020C000A5452656374616E676C650009
- 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
- 74656E74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B
- 6564090748697454657374080A53697A652E5769647468050000000000000092
- 05400B53697A652E4865696768740500000000000000D003401453697A652E50
- 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
- 4631353135313507585261646975730500000000000000C00040075952616469
- 75730500000000000000C00040000005545465787400095374796C654E616D65
- 06047465787405416C69676E0706436C69656E74064C6F636B65640907486974
- 54657374080C4D617267696E732E4C6566740500000000000000A001400B4D61
- 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
- 68740500000000000000A001400E4D617267696E732E426F74746F6D05000000
- 000000008000400A53697A652E57696474680500000000000000FC04400B5369
- 7A652E4865696768740500000000000000B003401453697A652E506C6174666F
- 726D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F
- 720708636C6157686974650000005450463007544C61796F757400095374796C
- 654E616D65060C6C697374626F787374796C6505416C69676E070643656E7465
- 720A53697A652E5769647468050000000000FFFFE905400B53697A652E486569
- 67687405000000000000008306401453697A652E506C6174666F726D44656661
- 756C7408085461624F72646572020D000C5442727573684F626A656374000953
- 74796C654E616D650618416C7465726E6174696E67526F774261636B67726F75
- 6E640B42727573682E436F6C6F72070978464632433243324300000A54526563
- 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
- 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032
- 303230064C6F636B6564090748697454657374080C50616464696E672E4C6566
- 7405000000000000008000400B50616464696E672E546F700500000000000000
- 8000400D50616464696E672E526967687405000000000000008000400E506164
- 64696E672E426F74746F6D05000000000000008000400A53697A652E57696474
- 68050000000000FFFFE905400B53697A652E4865696768740500000000000000
- 8306401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
- 2E436F6C6F720709784646313531353135075852616469757305000000000000
- 00C0004007595261646975730500000000000000C000400007544C61796F7574
- 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
- 6E740C436C69704368696C6472656E090A53697A652E57696474680500000000
- 00FFFFC105400B53697A652E4865696768740500000000000000DE0540145369
- 7A652E506C6174666F726D44656661756C7408000A5452656374616E676C6500
- 095374796C654E616D65060973656C656374696F6E0A46696C6C2E436F6C6F72
- 07097846463241383245320748697454657374080A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 740748697454657374080A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C740804546578740604546578741654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C6157686974650756697369626C
+ 65080000005450463007544C61796F757400095374796C654E616D65060D706F
+ 707570626F787374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C6508085461624F726465720231000A5452656374616E676C6500095374
+ 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
+ 696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F0C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463230323032300953746F7056616C756507097846463430343034
+ 300754726967676572062049734D6F7573654F7665723D747275653B49735072
+ 65737365643D66616C73650E54726967676572496E7665727365062149734D6F
+ 7573654F7665723D66616C73653B4973507265737365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
+ 72416E696D6174696F6E325374796C65084475726174696F6E050000000000CD
+ CCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463430343034300953746F7056616C7565070978
+ 46463241383245320754726967676572062049734D6F7573654F7665723D7472
+ 75653B4973507265737365643D747275653B0E54726967676572496E76657273
+ 65062049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C736500000007544C61796F75740005416C69676E070846697452696768740A
+ 506F736974696F6E2E5805000000000000009605400A53697A652E5769647468
+ 0500000000000000C803400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080005545061746800
+ 05416C69676E070643656E74657209446174612E506174680A40000000050000
+ 0000000000000000000000803F010000000000803F0000803F01000000000000
+ 3F0000000001000000000000000000803F0300000000000000000000000A4669
+ 6C6C2E436F6C6F720708636C6157686974650748697454657374080B4D617267
+ 696E732E546F700500000000000000E001C00A53697A652E5769647468050000
+ 00000000008002400B53697A652E486569676874050000000000000080014014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6500000554506174680005416C69676E070643656E7465720944
+ 6174612E506174680A3400000004000000000000000000000000000000010000
+ 000000803F00000000010000000000003F0000803F0300000000000000000000
+ 000A46696C6C2E436F6C6F720708636C6157686974650748697454657374080B
+ 4D617267696E732E546F700500000000000000C001400A53697A652E57696474
+ 6805000000000000008002400B53697A652E4865696768740500000000000000
+ 8001401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000005545465787400095374796C654E616D6506
+ 047465787405416C69676E0706436C69656E740748697454657374080C4D6172
+ 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
+ 050000000000000080FF3F0D4D617267696E732E526967687405000000000000
+ 0080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53
+ 697A652E576964746805000000000000009205400B53697A652E486569676874
+ 0500000000000000B803401453697A652E506C6174666F726D44656661756C74
+ 080454657874060454657874165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C615768697465000000}
+ end
+ item
+ Platform = 'OSX Yosemite'
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
+ AF00060B627574746F6E7374796C6503EB04060D636865636B626F787374796C
+ 6503F3050609656469747374796C6503D4050609677269647374796C6503E608
+ 060D67726F7570626F787374796C6503B402060F6865616465726974656D7374
+ 796C6503F403060E696D61676563656C6C7374796C65033D01060A6C6162656C
+ 7374796C65032001060D6C697374626F78666F6F746572038B0106106C697374
+ 626F786974656D7374796C6503520306126C697374626F78706C61696E686561
+ 646572036C02060C6C697374626F787374796C6503B307060E706F7075706365
+ 6C6C7374796C65038E03061070726F67726573736261727374796C6503020506
+ 1170726F677265737363656C6C7374796C6503CB0206157363726F6C6C626172
+ 626F74746F6D627574746F6E03740406147363726F6C6C62617268747261636B
+ 7374796C65033B0106137363726F6C6C6261726C656674627574746F6E038704
+ 06147363726F6C6C6261727269676874627574746F6E038A04060E7363726F6C
+ 6C6261727374796C6503630406127363726F6C6C626172746F70627574746F6E
+ 03840406147363726F6C6C62617276747261636B7374796C65033B01060C7370
+ 696E626F787374796C65038507060B7377697463687374796C6503ED01060F74
+ 6162636F6E74726F6C7374796C6503F701060B746162646F747374796C65037F
+ 01060C7461626974656D7374796C65032B05060D7465787463656C6C7374796C
+ 6503A601060D7468756D626261727374796C65034C03060A7468756D62737479
+ 6C65034402060D747261636B6261727374796C65034A0806096D656D6F737479
+ 6C65037008060D73697A65677269707374796C6503FB04060E73746174757362
+ 61727374796C6503DB01060C746F6F6C6261727374796C6503CA00061570726F
+ 67726573736261726572726F727374796C65030705060E6C696E6B6C6162656C
+ 7374796C65035B030613736D616C6C7363726F6C6C6261727374796C6503AE01
+ 060D636F6D626F626F787374796C65032708060D73706C69747465727374796C
+ 6503C0030610726164696F627574746F6E7374796C6503C4050618756C63656E
+ 746572726164696F627574746F6E7374796C650368050616756C6C6566747261
+ 64696F627574746F6E7374796C6503A7050617756C7269676874726164696F62
+ 7574746F6E7374796C6503AC050615616E69696E64696361746F72686F727A73
+ 74796C6503E002060E6C6F67627574746F6E7374796C6503DA07061365787061
+ 6E646572627574746F6E7374796C650381020615657870616E64657263686563
+ 6B626F787374796C6503DB05060D657870616E6465727374796C65031607060A
+ 70616E656C7374796C65034F01061970726F67726573736261726D696E696572
+ 726F727374796C6503F903061470726F67726573736261726D696E697374796C
+ 6503F403060E636F6D626F656469747374796C6503F80906106D656E75626172
+ 6974656D7374796C6503650B060C6D656E756261727374796C6503B802060D6D
+ 656E756974656D7374796C6503890B06126D656E75736570617261746F727374
+ 796C6503E501060D6D656E75766965777374796C6503DD02061B747265657669
+ 6577657870616E646572627574746F6E7374796C650389020611747265657669
+ 65776974656D7374796C65032705060D74726565766965777374796C65038D07
+ 061670726F677265737362617266696E6973687374796C65030805061A70726F
+ 67726573736261726D696E6966696E6973687374796C6503FA0306136172726F
+ 77646F776E746F6F6C627574746F6E03EC05060D706F707570626F787374796C
+ 6503680600545046300A5452656374616E676C6500095374796C654E616D6506
+ 0F6261636B67726F756E647374796C6505416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463244324432440A53697A652E576964746805
+ 000000000000009407400B53697A652E4865696768740500000000000080D206
401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E6507585261646975730500000000000000C0004007595261
- 646975730500000000000000C0004000000A5452656374616E676C6500095374
- 796C654E616D650610666F637573656473656C656374696F6E0A46696C6C2E43
- 6F6C6F7207097846463241383245320748697454657374080A53697A652E5769
- 6474680500000000000000C804400B53697A652E486569676874050000000000
- 0000C804401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E650B5374726F6B652E446173680703446F740758
- 5261646975730500000000000000C00040075952616469757305000000000000
- 00C000400000000A545363726F6C6C42617200095374796C654E616D65060A76
- 7363726F6C6C62617205416C69676E070552696768740B536D616C6C4368616E
- 676505000000000000000000000B4F7269656E746174696F6E07085665727469
- 63616C0A506F736974696F6E2E58050000000000FFFFC505400A506F73697469
- 6F6E2E5905000000000000008000400A53697A652E5769647468050000000000
- 00008003400B53697A652E4865696768740500000000000000DE05401453697A
- 652E506C6174666F726D44656661756C740800000A545363726F6C6C42617200
- 095374796C654E616D65060A687363726F6C6C62617205416C69676E0706426F
- 74746F6D0B536D616C6C4368616E676505000000000000000000000B4F726965
- 6E746174696F6E070A486F72697A6F6E74616C0A506F736974696F6E2E580500
- 0000000000008000400A506F736974696F6E2E590500000000000000E205400A
- 53697A652E5769647468050000000000FFFFE105400B53697A652E4865696768
- 7405000000000000008003401453697A652E506C6174666F726D44656661756C
- 740800000F54536D616C6C5363726F6C6C42617200095374796C654E616D6506
- 0F76736D616C6C7363726F6C6C62617205416C69676E070552696768740B536D
- 616C6C4368616E676505000000000000000000000B4F7269656E746174696F6E
- 0708566572746963616C0C4D617267696E732E4C656674050000000000000080
- 00400A506F736974696F6E2E580500000000000000C605400A506F736974696F
- 6E2E5905000000000000008000400A53697A652E576964746805000000000000
- 008002400B53697A652E48656967687405000000000000008002401453697A65
- 2E506C6174666F726D44656661756C74080756697369626C650800000F54536D
- 616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C73
- 63726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E
- 676505000000000000000000000B4F7269656E746174696F6E070A486F72697A
- 6F6E74616C0B4D617267696E732E546F7005000000000000008000400A506F73
- 6974696F6E2E5805000000000000008000400A506F736974696F6E2E59050000
- 0000000000E205400A53697A652E576964746805000000000000009606400B53
- 697A652E48656967687405000000000000008002401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508000000005450463007544C61
- 796F757400095374796C654E616D65060E706F70757063656C6C7374796C6505
- 416C69676E070643656E7465720756697369626C6508085461624F7264657202
- 0E0007544C61796F75740005416C69676E070552696768740A506F736974696F
- 6E2E5805000000000000008C04400A53697A652E576964746805000000000000
- 00F002400B53697A652E4865696768740500000000000000C804401453697A65
- 2E506C6174666F726D44656661756C7408000554506174680005416C69676E07
- 0643656E74657209446174612E506174680A4000000005000000000000000000
- 00000000803F010000000000803F0000803F010000000000003F000000000100
- 0000000000000000803F0300000000000000000000000A46696C6C2E436F6C6F
- 720708636C6157686974650748697454657374080B4D617267696E732E546F70
- 0500000000000000E001C00A53697A652E576964746805000000000000008002
- 400B53697A652E48656967687405000000000000008001401453697A652E506C
- 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 00000554506174680005416C69676E070643656E74657209446174612E506174
- 680A3400000004000000000000000000000000000000010000000000803F0000
- 0000010000000000003F0000803F0300000000000000000000000A46696C6C2E
- 436F6C6F720708636C6157686974650748697454657374080B4D617267696E73
- 2E546F700500000000000000C001400A53697A652E5769647468050000000000
- 00008002400B53697A652E48656967687405000000000000008001401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E6500000005545465787400095374796C654E616D650604746578740541
- 6C69676E0706436C69656E74064C6F636B6564090748697454657374080C4D61
- 7267696E732E4C6566740500000000000000A001400B4D617267696E732E546F
- 7005000000000000008000400D4D617267696E732E5269676874050000000000
- 0000A001400E4D617267696E732E426F74746F6D05000000000000008000400A
- 53697A652E57696474680500000000000000C803400B53697A652E4865696768
- 740500000000000000B804401453697A652E506C6174666F726D44656661756C
- 7408165465787453657474696E67732E466F6E74436F6C6F720708636C615768
- 6974650000005450463007544C61796F757400095374796C654E616D65061070
- 726F67726573736261727374796C6505416C69676E070643656E7465720A5369
- 7A652E576964746805000000000033338505400B53697A652E48656967687405
- 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508085461624F72646572020F000A5452656374616E676C65
- 00095374796C654E616D65060668747261636B05416C69676E0708436F6E7465
- 6E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
- 090748697454657374080A53697A652E57696474680500000000003333850540
- 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
- 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
- 353135313507585261646975730500000000000000C000400759526164697573
- 0500000000000000C00040000A5452656374616E676C6500095374796C654E61
- 6D65060A68696E64696361746F7205416C69676E07044C6566740A46696C6C2E
- 436F6C6F720709784646324138324532064C6F636B6564090748697454657374
- 080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E
- 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
- 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
- 80FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F73697469
- 6F6E2E59050000000000000080FF3F0A53697A652E5769647468050000000000
- 0000C804400B53697A652E4865696768740500000000009999D904401453697A
- 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
- 4E6F6E6507585261646975730500000000000000C00040075952616469757305
- 00000000000000C000400000000A5452656374616E676C6500095374796C654E
- 616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F720709784646323032303230064C6F636B65640907486974546573
- 74080A53697A652E576964746805000000000033338505400B53697A652E4865
- 696768740500000000009999E104401453697A652E506C6174666F726D446566
- 61756C74080C5374726F6B652E436F6C6F720709784646313531353135075852
- 61646975730500000000000000C0004007595261646975730500000000000000
- C00040000A5452656374616E676C6500095374796C654E616D65060A76696E64
- 696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F7207
- 09784646324138324532064C6F636B6564090748697454657374080C4D617267
+ 696E6407044E6F6E650756697369626C650800005450463007544C61796F7574
+ 00095374796C654E616D65060B627574746F6E7374796C6505416C69676E0706
+ 43656E7465720A53697A652E57696474680500000000000000C805400B53697A
+ 652E4865696768740500000000000000C803401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508085461624F726465720203000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0706436C69656E740C436C69704368696C6472656E090A436C69
+ 70506172656E74090A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080A53697A652E57696474680500000000000000C805400B5369
+ 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261
+ 646975730500000000000000C0004007595261646975730500000000000000C0
+ 0040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615
+ 627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
+ 00000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463430343034300754726967676572063049734D6F7573654F76
+ 65723D747275653B4973507265737365643D66616C73653B4973466F63757365
+ 643D66616C73650E54726967676572496E7665727365063149734D6F7573654F
+ 7665723D66616C73653B4973507265737365643D66616C73653B4973466F6375
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E32084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
+ 0953746F7056616C756507097846463137353739430754726967676572062F49
+ 73507265737365643D747275653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
+ 6E33084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 41383245320953746F7056616C75650709784646313735373943075472696767
+ 6572062E4973507265737365643D747275653B49734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D747275650E54726967676572496E76657273
+ 65062F4973507265737365643D66616C73653B49734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D747275650000000554546578740009537479
+ 6C654E616D6506047465787405416C69676E0706436C69656E7413456E61626C
+ 6544726167486967686C69676874080748697454657374080A53697A652E5769
+ 6474680500000000000000C805400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746500000054
+ 50463007544C61796F757400095374796C654E616D65060D636865636B626F78
+ 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
+ 00000000ACAA8006400B53697A652E4865696768740500000000005855990440
+ 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
+ 5461624F7264657202040007544C61796F75740005416C69676E07044C656674
+ 0A53697A652E576964746805000000000000009003400B53697A652E48656967
+ 687405000000000058559904401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E070643656E7465720A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000F002400B53697A652E4865696768740500000000000000F00240
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F72070978464631353135313507585261646975730500000000000000C000
+ 4007595261646975730500000000000000C00040000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070643
+ 6C69656E740A46696C6C2E436F6C6F7207097846463241383245320748697454
+ 65737408074F70616369747905000000000000000000000C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A53697A652E57
+ 696474680500000000000000B002400B53697A652E4865696768740500000000
+ 000000B002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C000
+ 4007595261646975730500000000000000C00040000F54466C6F6174416E696D
+ 6174696F6E00095374796C654E616D65061B6368656368626F7856697362696C
+ 697479416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB
+ 3F0C50726F70657274794E616D6506074F7061636974790A537461727456616C
+ 756505000000000000000000000953746F7056616C75650500000000000000C8
+ 05400754726967676572060E4973436865636B65643D747275650E5472696767
+ 6572496E7665727365060F4973436865636B65643D66616C73650000000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650618636865636B62
+ 6F785374726F6B65416E696D6174696F6E31084475726174696F6E0500000000
+ 00CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E436F6C6F
+ 720A537461727456616C756507097846463135313531350953746F7056616C75
+ 6507097846463241383245320754726967676572060E4973436865636B65643D
+ 747275650E54726967676572496E7665727365060F4973436865636B65643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650617636865636B626F78436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3230323032300953746F7056616C756507097846463430343034300754726967
+ 676572061049734D6F7573654F7665723D747275650E54726967676572496E76
+ 65727365061149734D6F7573654F7665723D66616C7365000000000554546578
+ 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
+ 0A53697A652E57696474680500000000005855DD05400B53697A652E48656967
+ 687405000000000058559904401453697A652E506C6174666F726D4465666175
+ 6C74080454657874060454657874165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D650609656469747374796C6505416C69676E070643656E74
+ 65720A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C6508085461624F726465720205000C5442727573
+ 684F626A65637400095374796C654E616D65060A666F726567726F756E640000
+ 0C5442727573684F626A65637400095374796C654E616D65060973656C656374
+ 696F6E0B42727573682E436F6C6F72070978393632413832453200000B54466F
+ 6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E53
+ 697A650500000000000000D0024000000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313507585261
+ 646975730500000000000000C0004007595261646975730500000000000000C0
+ 0040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 656469745374726F6B65416E696D6174696F6E31084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B652E436F
+ 6C6F720A537461727456616C756507097846463135313531350953746F705661
+ 6C756507097846463241383245320754726967676572060E4973466F63757365
+ 643D747275650E54726967676572496E7665727365060F4973466F6375736564
+ 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650614656469745374726F6B65416E696D6174696F6E3208447572617469
+ 6F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E
+ 616D65060C5374726F6B652E436F6C6F720A537461727456616C756507097846
+ 463135313531350953746F7056616C7565070978464634433443344307547269
+ 67676572062149734D6F7573654F7665723D747275653B4973466F6375736564
+ 3D66616C73653B0E54726967676572496E7665727365062249734D6F7573654F
+ 7665723D66616C73653B4973466F63757365643D66616C73653B00000007544C
+ 61796F757400095374796C654E616D650607627574746F6E7305416C69676E07
+ 055269676874064C6F636B6564090B4D617267696E732E546F70050000000000
+ 00008000400D4D617267696E732E526967687405000000000000008000400E4D
+ 617267696E732E426F74746F6D05000000000000008000400A506F736974696F
+ 6E2E580500000000000000C004400A506F736974696F6E2E5905000000000000
+ 008000400A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000A803401453697A652E506C6174666F726D44
+ 656661756C7408000007544C61796F757400095374796C654E616D650607636F
+ 6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D617267
+ 696E732E4C65667405000000000000008001400B4D617267696E732E546F7005
+ 000000000000008000400D4D617267696E732E52696768740500000000000000
+ 8000400E4D617267696E732E426F74746F6D05000000000000008000400A5369
+ 7A652E57696474680500000000000000A804400B53697A652E48656967687405
+ 00000000000000A803401453697A652E506C6174666F726D44656661756C7408
+ 000006544C6162656C00095374796C654E616D65060670726F6D7074064C6F63
+ 6B656409074F706163697479050000000000000080FE3F165465787453657474
+ 696E67732E466F6E74436F6C6F720708636C6157686974650454657874060454
+ 6578740000005450463007544C61796F757400095374796C654E616D65060967
+ 7269647374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 68050000000000FFFFE905400B53697A652E4865696768740500000000000000
+ 8306401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F726465720206000C5442727573684F626A6563740009537479
+ 6C654E616D650618416C7465726E6174696E67526F774261636B67726F756E64
+ 0B42727573682E436F6C6F72070978333237383738373800000C544272757368
+ 4F626A65637400095374796C654E616D6506086C696E6566696C6C0B42727573
+ 682E436F6C6F72070978464631353135313500000A5452656374616E676C6500
+ 095374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F
+ 6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F63
+ 6B6564090748697454657374080C50616464696E672E4C656674050000000000
+ 00008000400B50616464696E672E546F7005000000000000008000400D506164
+ 64696E672E526967687405000000000000008000400E50616464696E672E426F
+ 74746F6D05000000000000008000400A53697A652E5769647468050000000000
+ FFFFE905400B53697A652E48656967687405000000000000008306401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 0978464631353135313507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C0004000075448656164657200095374796C65
+ 4E616D6506066865616465720553696465730B03546F70044C65667406426F74
+ 746F6D0552696768740005416C69676E0703546F700A506F736974696F6E2E58
+ 05000000000000008000400A506F736974696F6E2E5905000000000000008000
+ 400A53697A652E5769647468050000000000FFFFE105400B53697A652E486569
+ 6768740500000000000000A803401453697A652E506C6174666F726D44656661
+ 756C7408000007544C61796F757400095374796C654E616D650607636F6E7465
+ 6E7405416C69676E0706436C69656E740C436C69704368696C6472656E090A53
+ 697A652E5769647468050000000000FFFFC105400B53697A652E486569676874
+ 0500000000000000B405401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060973656C656374
+ 696F6E0A46696C6C2E436F6C6F72070978464632413832453207486974546573
+ 74080A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000000000C804401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
+ 00000000000000C0004007595261646975730500000000000000C0004000000A
+ 5452656374616E676C6500095374796C654E616D650605666F6375730A46696C
+ 6C2E436F6C6F7207097841463241383245320748697454657374080C4D617267
696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F7005
0000000000000080FF3F0D4D617267696E732E52696768740500000000000000
- 80FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F
- 736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E590500
- 0000000099998904400A53697A652E576964746805000000000033338105400B
- 53697A652E4865696768740500000000000000A803401453697A652E506C6174
+ 80FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650758526164697573050000000000
+ 0000C0004007595261646975730500000000000000C000400000000A54536372
+ 6F6C6C42617200095374796C654E616D65060A767363726F6C6C62617205416C
+ 69676E070552696768740B536D616C6C4368616E676505000000000000000000
+ 000B4F7269656E746174696F6E0708566572746963616C0A506F736974696F6E
+ 2E58050000000000FFFFC505400A506F736974696F6E2E590500000000000000
+ B803400A53697A652E576964746805000000000000008003400B53697A652E48
+ 65696768740500000000000000B405401453697A652E506C6174666F726D4465
+ 6661756C740800000A545363726F6C6C42617200095374796C654E616D65060A
+ 687363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0A506F736974696F6E2E5805000000000000008000400A506F
+ 736974696F6E2E590500000000000000E205400A53697A652E57696474680500
+ 00000000FFFFE105400B53697A652E4865696768740500000000000000800340
+ 1453697A652E506C6174666F726D44656661756C740800000F54536D616C6C53
+ 63726F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C
+ 6C62617205416C69676E070552696768740B536D616C6C4368616E6765050000
+ 00000000000000000B4F7269656E746174696F6E0708566572746963616C0C4D
+ 617267696E732E4C65667405000000000000008000400A506F736974696F6E2E
+ 580500000000000000C605400A506F736974696F6E2E59050000000000000080
+ 00400A53697A652E576964746805000000000000008002400B53697A652E4865
+ 6967687405000000000000008002401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C650800000F54536D616C6C5363726F6C6C426172
+ 00095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69
+ 676E0706426F74746F6D0B536D616C6C4368616E676505000000000000000000
+ 000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E
+ 732E546F7005000000000000008000400A506F736974696F6E2E580500000000
+ 0000008000400A506F736974696F6E2E590500000000000000E205400A53697A
+ 652E576964746805000000000000009606400B53697A652E4865696768740500
+ 0000000000008002401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000000005450463007544C61796F757400095374796C654E
+ 616D65060D67726F7570626F787374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000000000F004400B53697A652E48656967
+ 68740500000000000000C804401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720207000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65074869745465
+ 7374080C4D617267696E732E4C6566740500000000000000C000400B4D617267
+ 696E732E546F7005000000000000009002400D4D617267696E732E5269676874
+ 0500000000000000C000400E4D617267696E732E426F74746F6D050000000000
+ 0000C000400A53697A652E57696474680500000000000000D804400B53697A65
+ 2E48656967687405000000000000009804401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 07585261646975730500000000000000C0004007595261646975730500000000
+ 000000C000400005545465787400095374796C654E616D650604746578740841
+ 75746F53697A65090A436C6970506172656E74090748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000A002400A506F736974696F6E2E58
+ 05000000000060559502400A506F736974696F6E2E590500000000004055D501
+ C00A53697A652E576964746805000000000000B8C703400B53697A652E486569
+ 6768740500000000000060FF02401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 5768697465155465787453657474696E67732E576F7264577261700800000000
+ 5450463007544C61796F757400095374796C654E616D65060F68656164657269
+ 74656D7374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 6805000000000000009205400B53697A652E4865696768740500000000000000
+ D003401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F726465720208000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0A46696C6C2E436F6C6F720709784646344334433443064C6F636B6564090748
+ 697454657374080A53697A652E576964746805000000000000009205400B5369
+ 7A652E4865696768740500000000000000D003401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 313507585261646975730500000000000000C000400759526164697573050000
+ 0000000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650615686561646572436F6C6F72416E696D6174696F6E310844757261
+ 74696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463443344334430953
+ 746F7056616C756507097846463241383245320754726967676572060E497350
+ 7265737365643D747275650E54726967676572496E7665727365060F49735072
+ 65737365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D6506166865616465725374726F6B65416E696D6174696F6E31
+ 084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D
+ 65060C5374726F6B652E436F6C6F720A537461727456616C7565070978464631
+ 35313531350953746F7056616C75650709784646324138324532075472696767
+ 6572060E4973507265737365643D747275650E54726967676572496E76657273
+ 65060F4973507265737365643D66616C73650000000554546578740009537479
+ 6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ A001400B4D617267696E732E546F7005000000000000008000400D4D61726769
+ 6E732E52696768740500000000000000A001400E4D617267696E732E426F7474
+ 6F6D05000000000000008000400A53697A652E57696474680500000000000000
+ FC04400B53697A652E4865696768740500000000000000B003401453697A652E
+ 506C6174666F726D44656661756C7408165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C6157686974650000005450463007544C61796F7574
+ 00095374796C654E616D65060E696D61676563656C6C7374796C6505416C6967
+ 6E070643656E7465720756697369626C6508085461624F726465720209000654
+ 496D61676500095374796C654E616D650605696D6167650E4D756C7469526573
+ 4269746D61700E01000005416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000C004
+ 400B53697A652E4865696768740500000000000000C004401453697A652E506C
+ 6174666F726D44656661756C74080000005450463007544C61796F7574000953
+ 74796C654E616D65060A6C6162656C7374796C6505416C69676E070643656E74
+ 65720A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C6508085461624F72646572020A00055454657874
+ 00095374796C654E616D6506047465787405416C69676E0708436F6E74656E74
+ 730748697454657374080A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C7408165465787453657474696E67732E466F6E7443
+ 6F6C6F720708636C6157686974650000005450463007544C61796F7574000953
+ 74796C654E616D65060D6C697374626F78666F6F74657205416C69676E070643
+ 656E7465720A53697A652E576964746805000000000000009205400B53697A65
+ 2E4865696768740500000000000000D003401453697A652E506C6174666F726D
+ 44656661756C74080756697369626C6508085461624F72646572020B00055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E74064C6F636B6564090748697454657374080C4D617267696E732E4C656674
+ 0500000000000000A001400B4D617267696E732E546F70050000000000000080
+ 00400D4D617267696E732E52696768740500000000000000A001400E4D617267
+ 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
+ 0500000000000000FC04400B53697A652E4865696768740500000000000000B0
+ 03401453697A652E506C6174666F726D44656661756C74081654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746500000054504630
+ 07544C61796F757400095374796C654E616D6506106C697374626F786974656D
+ 7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
+ 000000000000D605400B53697A652E4865696768740500000000000000C00340
+ 1453697A652E506C6174666F726D44656661756C74080756697369626C650808
+ 5461624F72646572020C000654476C79706800095374796C654E616D65060A67
+ 6C7970687374796C650C4D617267696E732E4C65667405000000000000008000
+ 400B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E526967687405000000000000008000400E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F05416C69676E07044C6566740A506F736974696F6E
+ 2E5805000000000000008000400A506F736974696F6E2E590500000000000000
+ 80FF3F0A53697A652E576964746805000000000000008003400B53697A652E48
+ 65696768740500000000000000B003401453697A652E506C6174666F726D4465
+ 6661756C7408000005545465787400095374796C654E616D6506047465787405
+ 416C69676E0706436C69656E740748697454657374080C4D617267696E732E4C
+ 6566740500000000000000C000400B4D617267696E732E546F70050000000000
+ 000080FF3F0D4D617267696E732E52696768740500000000000000C000400E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
+ 6474680500000000000000CA05400B53697A652E486569676874050000000000
+ 0000B003401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746515546578
+ 7453657474696E67732E576F72645772617008165465787453657474696E6773
+ 2E486F727A416C69676E07074C656164696E6700000954436865636B426F7800
+ 095374796C654E616D650605636865636B05416C69676E07084D6F73744C6566
+ 740843616E466F637573081244697361626C65466F637573456666656374090A
+ 53697A652E57696474680500000000000000A003400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C65080000005450463007544C61796F757400095374796C
+ 654E616D6506126C697374626F78706C61696E68656164657205416C69676E07
+ 0643656E7465720A53697A652E576964746805000000000000009205400B5369
+ 7A652E4865696768740500000000000000D003401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F72646572020D000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846
+ 46324432443244064C6F636B6564090748697454657374080A53697A652E5769
+ 64746805000000000000009205400B53697A652E486569676874050000000000
+ 0000D003401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F72070978464631353135313507585261646975730500000000
+ 000000C0004007595261646975730500000000000000C0004000000554546578
+ 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 000000000000A001400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E52696768740500000000000000A001400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
+ 000000000000FC04400B53697A652E4865696768740500000000000000B00340
+ 1453697A652E506C6174666F726D44656661756C740816546578745365747469
+ 6E67732E466F6E74436F6C6F720708636C615768697465000000545046300754
+ 4C61796F757400095374796C654E616D65060C6C697374626F787374796C6505
+ 416C69676E070643656E7465720A53697A652E5769647468050000000000FFFF
+ E905400B53697A652E48656967687405000000000000008306401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 6572020E000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978464632433243324300000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B656409
+ 0748697454657374080C50616464696E672E4C65667405000000000000008000
+ 400B50616464696E672E546F7005000000000000008000400D50616464696E67
+ 2E526967687405000000000000008000400E50616464696E672E426F74746F6D
+ 05000000000000008000400A53697A652E5769647468050000000000FFFFE905
+ 400B53697A652E48656967687405000000000000008306401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 31353135313507585261646975730500000000000000C0004007595261646975
+ 730500000000000000C000400007544C61796F757400095374796C654E616D65
+ 0607636F6E74656E7405416C69676E0706436C69656E740C436C69704368696C
+ 6472656E090A53697A652E5769647468050000000000FFFFC105400B53697A65
+ 2E4865696768740500000000000000DE05401453697A652E506C6174666F726D
+ 44656661756C7408000A5452656374616E676C6500095374796C654E616D6506
+ 0973656C656374696F6E0A46696C6C2E436F6C6F720709784646324138324532
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758
+ 5261646975730500000000000000C00040075952616469757305000000000000
+ 00C0004000000A5452656374616E676C6500095374796C654E616D650610666F
+ 637573656473656C656374696F6E0A46696C6C2E436F6C6F7207097846463241
+ 383245320748697454657374080A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E650B5374726F6B652E446173680703446F7407585261646975730500000000
+ 000000C0004007595261646975730500000000000000C000400000000A545363
+ 726F6C6C42617200095374796C654E616D65060A767363726F6C6C6261720541
+ 6C69676E070552696768740B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E0708566572746963616C0A506F736974696F
+ 6E2E58050000000000FFFFC505400A506F736974696F6E2E5905000000000000
+ 008000400A53697A652E576964746805000000000000008003400B53697A652E
+ 4865696768740500000000000000DE05401453697A652E506C6174666F726D44
+ 656661756C740800000A545363726F6C6C42617200095374796C654E616D6506
+ 0A687363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C43
+ 68616E676505000000000000000000000B4F7269656E746174696F6E070A486F
+ 72697A6F6E74616C0A506F736974696F6E2E5805000000000000008000400A50
+ 6F736974696F6E2E590500000000000000E205400A53697A652E576964746805
+ 0000000000FFFFE105400B53697A652E48656967687405000000000000008003
+ 401453697A652E506C6174666F726D44656661756C740800000F54536D616C6C
+ 5363726F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F
+ 6C6C62617205416C69676E070552696768740B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E0708566572746963616C0C
+ 4D617267696E732E4C65667405000000000000008000400A506F736974696F6E
+ 2E580500000000000000C605400A506F736974696F6E2E590500000000000000
+ 8000400A53697A652E576964746805000000000000008002400B53697A652E48
+ 656967687405000000000000008002401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C650800000F54536D616C6C5363726F6C6C4261
+ 7200095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C
+ 69676E0706426F74746F6D0B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D61726769
+ 6E732E546F7005000000000000008000400A506F736974696F6E2E5805000000
+ 000000008000400A506F736974696F6E2E590500000000000000E205400A5369
+ 7A652E576964746805000000000000009606400B53697A652E48656967687405
+ 000000000000008002401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508000000005450463007544C61796F757400095374796C65
+ 4E616D65060E706F70757063656C6C7374796C6505416C69676E070643656E74
+ 65720756697369626C6508085461624F72646572020F0007544C61796F757400
+ 05416C69676E070552696768740A506F736974696F6E2E580500000000000000
+ 8C04400A53697A652E57696474680500000000000000F002400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C7408000554506174680005416C69676E070643656E74657209446174
+ 612E506174680A400000000500000000000000000000000000803F0100000000
+ 00803F0000803F010000000000003F0000000001000000000000000000803F03
+ 00000000000000000000000A46696C6C2E436F6C6F720708636C615768697465
+ 0748697454657374080B4D617267696E732E546F700500000000000000E001C0
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650000055450617468000541
+ 6C69676E070643656E74657209446174612E506174680A340000000400000000
+ 0000000000000000000000010000000000803F00000000010000000000003F00
+ 00803F0300000000000000000000000A46696C6C2E436F6C6F720708636C6157
+ 686974650748697454657374080B4D617267696E732E546F7005000000000000
+ 00C001400A53697A652E576964746805000000000000008002400B53697A652E
+ 48656967687405000000000000008001401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000005545465
+ 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
+ 00000000000000A001400B4D617267696E732E546F7005000000000000008000
+ 400D4D617267696E732E52696768740500000000000000A001400E4D61726769
+ 6E732E426F74746F6D05000000000000008000400A53697A652E576964746805
+ 00000000000000C803400B53697A652E4865696768740500000000000000B804
+ 401453697A652E506C6174666F726D44656661756C7408165465787453657474
+ 696E67732E466F6E74436F6C6F720708636C6157686974650000005450463007
+ 544C61796F757400095374796C654E616D65061070726F677265737362617273
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F726465720210000A5452656374616E676C6500095374796C654E616D65
+ 060668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F
+ 6C6F720709784646323032303230064C6F636B6564090748697454657374080A
+ 53697A652E576964746805000000000033338505400B53697A652E4865696768
+ 740500000000009999E104401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135075852616469
+ 75730500000000000000C0004007595261646975730500000000000000C00040
+ 000A5452656374616E676C6500095374796C654E616D65060A68696E64696361
+ 746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72070978464632
+ 4138324532064C6F636B6564090748697454657374080C4D617267696E732E4C
+ 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
+ 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
+ 617267696E732E426F74746F6D050000000000000080FF3F0A506F736974696F
+ 6E2E58050000000000000080FF3F0A506F736974696F6E2E5905000000000000
+ 0080FF3F0A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000009999D904401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975
+ 730500000000000000C0004007595261646975730500000000000000C0004000
+ 00000A5452656374616E676C6500095374796C654E616D65060676747261636B
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 323032303230064C6F636B6564090748697454657374080A53697A652E576964
+ 746805000000000033338505400B53697A652E48656967687405000000000099
+ 99E104401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F7207097846463135313531350758526164697573050000000000
+ 0000C0004007595261646975730500000000000000C00040000A545265637461
+ 6E676C6500095374796C654E616D65060A76696E64696361746F7205416C6967
+ 6E0706426F74746F6D0A46696C6C2E436F6C6F72070978464632413832453206
+ 4C6F636B6564090748697454657374080C4D617267696E732E4C656674050000
+ 000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D
+ 4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E73
+ 2E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000
+ 000000000080FF3F0A506F736974696F6E2E5905000000000099998904400A53
+ 697A652E576964746805000000000033338105400B53697A652E486569676874
+ 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500000000
+ 000000C0004007595261646975730500000000000000C0004000000000545046
+ 3007544C61796F757400095374796C654E616D65061170726F67726573736365
+ 6C6C7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000F805400B53697A652E4865696768740500000000000000FC
+ 05401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F7264657202110007544C61796F757400095374796C654E616D65
+ 060668747261636B05416C69676E0708436F6E74656E7473064C6F636B656409
+ 0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73
+ 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
+ 00000000008000400E4D617267696E732E426F74746F6D050000000000000080
+ 00400A53697A652E57696474680500000000000000F005400B53697A652E4865
+ 696768740500000000000000F405401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D65060A6869
+ 6E64696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F7207
+ 09784646324138324532064C6F636B6564090748697454657374080C4D617267
+ 696E732E4C65667405000000000000008000400B4D617267696E732E546F7005
+ 000000000000008000400D4D617267696E732E52696768740500000000000000
+ 8000400E4D617267696E732E426F74746F6D05000000000000008000400A506F
+ 736974696F6E2E5805000000000000008000400A506F736974696F6E2E590500
+ 0000000000008000400A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000EC05401453697A652E506C6174
666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650758
5261646975730500000000000000C00040075952616469757305000000000000
00C00040000000005450463007544C61796F757400095374796C654E616D6506
- 1170726F677265737363656C6C7374796C6505416C69676E070643656E746572
- 0A53697A652E57696474680500000000000000F805400B53697A652E48656967
- 68740500000000000000FC05401453697A652E506C6174666F726D4465666175
- 6C74080756697369626C6508085461624F7264657202100007544C61796F7574
- 00095374796C654E616D65060668747261636B05416C69676E0708436F6E7465
- 6E7473064C6F636B6564090C4D617267696E732E4C6566740500000000000000
- 8000400B4D617267696E732E546F7005000000000000008000400D4D61726769
- 6E732E526967687405000000000000008000400E4D617267696E732E426F7474
- 6F6D05000000000000008000400A53697A652E57696474680500000000000000
- F005400B53697A652E4865696768740500000000000000F405401453697A652E
- 506C6174666F726D44656661756C7408000A5452656374616E676C6500095374
- 796C654E616D65060A68696E64696361746F7205416C69676E07044C6566740A
- 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
- 7454657374080C4D617267696E732E4C65667405000000000000008000400B4D
- 617267696E732E546F7005000000000000008000400D4D617267696E732E5269
- 67687405000000000000008000400E4D617267696E732E426F74746F6D050000
- 00000000008000400A506F736974696F6E2E5805000000000000008000400A50
- 6F736974696F6E2E5905000000000000008000400A53697A652E576964746805
- 00000000000000C804400B53697A652E4865696768740500000000000000EC05
- 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
- 696E6407044E6F6E6507585261646975730500000000000000C0004007595261
- 646975730500000000000000C00040000000005450463007544C61796F757400
- 095374796C654E616D6506157363726F6C6C626172626F74746F6D627574746F
- 6E05416C69676E070643656E7465720756697369626C6508085461624F726465
- 720211000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0706436C69656E740C436C69704368696C647265
- 6E090A436C6970506172656E740907436F726E6572730B0A426F74746F6D4C65
- 66740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978464632
- 30323032300748697454657374080A53697A652E576964746805000000000000
- 00C804400B53697A652E4865696768740500000000000000C804401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E6507585261646975730500000000000000C0004007595261646975730500
- 000000000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572
- 6174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46
- 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
- 53746F7056616C75650709784646343034303430075472696767657206204973
- 4D6F7573654F7665723D747275653B4973507265737365643D66616C73650E54
- 726967676572496E7665727365062149734D6F7573654F7665723D66616C7365
- 3B4973507265737365643D66616C736500000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
- 696F6E32084475726174696F6E05000000000000000000000C50726F70657274
- 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
- 463430343034300953746F7056616C7565070978464631373537394307547269
- 67676572061F4973507265737365643D747275653B49734D6F7573654F766572
- 3D747275650E54726967676572496E766572736506204973507265737365643D
- 66616C73653B49734D6F7573654F7665723D7472756500000007544C61796F75
- 7400095374796C654E616D6506074C61796F75743105416C69676E070643656E
- 7465720A53697A652E57696474680500000000000000A002400B53697A652E48
- 65696768740500000000000000C001401453697A652E506C6174666F726D4465
- 6661756C74080005545061746800095374796C654E616D650605506174683105
- 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
- 000000000000C8420000C84201000000000096430000C8420100000000004843
- 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
- 57686974650748697454657374080A53697A652E576964746805000000000000
- 00A002400B53697A652E4865696768740500000000000000C001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E6500000000545046300A5452656374616E676C6500095374796C654E616D
- 6506147363726F6C6C62617268747261636B7374796C6505416C69676E070643
- 656E7465720A46696C6C2E436F6C6F7207097846463135313531350748697454
- 657374080A53697A652E57696474680500000000000000C804400B53697A652E
- 4865696768740500000000000000C804401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C
- 65080006545468756D6200095374796C654E616D6506057468756D62064C6F63
- 6B6564090A53697A652E576964746805000000000000008003400B53697A652E
- 4865696768740500000000000000C804401453697A652E506C6174666F726D44
- 656661756C74080B5374796C654C6F6F6B7570060A7468756D627374796C6500
- 00005450463007544C61796F757400095374796C654E616D6506137363726F6C
- 6C6261726C656674627574746F6E05416C69676E070643656E74657207566973
- 69626C6508085461624F726465720212000A5452656374616E676C6500095374
- 796C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E
- 740C436C69704368696C6472656E090A436C6970506172656E740907436F726E
- 6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F
- 6C6F7207097846463230323032300748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E6507585261646975730500000000000000C0004007
- 595261646975730500000000000000C00040000F54436F6C6F72416E696D6174
- 696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D61
- 74696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F706572
- 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
- 46463230323032300953746F7056616C75650709784646343034303430075472
- 6967676572062049734D6F7573654F7665723D747275653B4973507265737365
- 643D66616C73650E54726967676572496E7665727365062149734D6F7573654F
- 7665723D66616C73653B4973507265737365643D66616C736500000F54436F6C
- 6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F
- 6C6F72416E696D6174696F6E32084475726174696F6E05000000000000000000
- 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
- 56616C756507097846463430343034300953746F7056616C7565070978464631
- 37353739430754726967676572061F4973507265737365643D747275653B4973
- 4D6F7573654F7665723D747275650E54726967676572496E7665727365062049
- 73507265737365643D66616C73653B49734D6F7573654F7665723D7472756500
- 000007544C61796F757400095374796C654E616D6506074C61796F7574310541
- 6C69676E070643656E7465720A53697A652E57696474680500000000000000A0
- 02400B53697A652E4865696768740500000000000000C001401453697A652E50
- 6C6174666F726D44656661756C74080005545061746800095374796C654E616D
- 650605506174683105416C69676E0706436C69656E7409446174612E50617468
- 0A3400000004000000000000000000C8420000C84201000000000096430000C8
- 42010000000000484300009643030000000000C8420000C8420A46696C6C2E43
- 6F6C6F720708636C6157686974650748697454657374080D526F746174696F6E
- 416E676C650500000000000000B405400A53697A652E57696474680500000000
- 000000A002400B53697A652E4865696768740500000000000000C00140145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000000005450463007544C61796F757400095374796C654E616D65
- 06147363726F6C6C6261727269676874627574746F6E05416C69676E07064365
- 6E7465720756697369626C6508085461624F726465720213000A545265637461
+ 157363726F6C6C626172626F74746F6D627574746F6E05416C69676E07064365
+ 6E7465720756697369626C6508085461624F726465720212000A545265637461
6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
- 6E740907436F726E6572730B08546F7052696768740B426F74746F6D52696768
- 74000A46696C6C2E436F6C6F7207097846463230323032300748697454657374
- 080A53697A652E57696474680500000000000000C804400B53697A652E486569
- 6768740500000000000000C804401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500
- 000000000000C0004007595261646975730500000000000000C00040000F5443
- 6F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E
- 436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CDCC
- CCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
- 727456616C756507097846463230323032300953746F7056616C756507097846
- 463430343034300754726967676572062049734D6F7573654F7665723D747275
- 653B4973507265737365643D66616C73650E54726967676572496E7665727365
- 062149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
- 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 0615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E
- 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
- 6F6C6F720A537461727456616C756507097846463430343034300953746F7056
- 616C756507097846463137353739430754726967676572061F49735072657373
- 65643D747275653B49734D6F7573654F7665723D747275650E54726967676572
- 496E766572736506204973507265737365643D66616C73653B49734D6F757365
- 4F7665723D7472756500000007544C61796F757400095374796C654E616D6506
- 074C61796F75743105416C69676E070643656E7465720A53697A652E57696474
- 680500000000000000A002400B53697A652E4865696768740500000000000000
- C001401453697A652E506C6174666F726D44656661756C740800055450617468
- 00095374796C654E616D650605506174683105416C69676E0706436C69656E74
- 09446174612E506174680A3400000004000000000000000000C8420000C84201
- 000000000096430000C842010000000000484300009643030000000000C84200
- 00C8420A46696C6C2E436F6C6F720708636C6157686974650748697454657374
- 080D526F746174696F6E416E676C650500000000000000B405C00A53697A652E
- 57696474680500000000000000A002400B53697A652E48656967687405000000
- 00000000C001401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F757400
- 095374796C654E616D65060E7363726F6C6C6261727374796C6505416C69676E
- 070643656E7465720756697369626C6508085461624F72646572021400075442
- 7574746F6E00095374796C654E616D65060A6C656674627574746F6E05416C69
- 676E07044C656674064C6F636B6564090A506F736974696F6E2E590500000000
- 0000008003400A53697A652E576964746805000000000000008003400B53697A
- 652E48656967687405000000000000009003401453697A652E506C6174666F72
- 6D44656661756C74080B5374796C654C6F6F6B757006137363726F6C6C626172
- 6C656674627574746F6E00000754427574746F6E00095374796C654E616D6506
- 0B7269676874627574746F6E05416C69676E07055269676874064C6F636B6564
- 090A506F736974696F6E2E5805000000000000008804400A506F736974696F6E
- 2E5905000000000000008003400A53697A652E57696474680500000000000000
- 8003400B53697A652E48656967687405000000000000009003401453697A652E
- 506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006147363
- 726F6C6C6261727269676874627574746F6E00000754427574746F6E00095374
- 796C654E616D65060C626F74746F6D627574746F6E05416C69676E0706426F74
- 746F6D064C6F636B6564090A506F736974696F6E2E5905000000000000008804
- 400A53697A652E57696474680500000000000000C804400B53697A652E486569
- 67687405000000000000008003401453697A652E506C6174666F726D44656661
- 756C74080B5374796C654C6F6F6B757006157363726F6C6C626172626F74746F
- 6D627574746F6E00000654547261636B00095374796C654E616D650606687472
- 61636B05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E74
- 6174696F6E070A486F72697A6F6E74616C0A53697A652E576964746805000000
- 000000009003400B53697A652E48656967687405000000000000009003401453
- 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
- 06147363726F6C6C62617268747261636B7374796C6500000654547261636B00
- 095374796C654E616D65060676747261636B05416C69676E0706436C69656E74
- 064C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C
- 0A53697A652E576964746805000000000000009003400B53697A652E48656967
- 687405000000000000009003401453697A652E506C6174666F726D4465666175
- 6C74080B5374796C654C6F6F6B757006147363726F6C6C62617276747261636B
- 7374796C6500000754427574746F6E00095374796C654E616D650609746F7062
- 7574746F6E05416C69676E0703546F700A53697A652E57696474680500000000
- 000000C804400B53697A652E4865696768740500000000000000800340145369
- 7A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B757006
- 127363726F6C6C626172746F70627574746F6E0000005450463007544C61796F
- 757400095374796C654E616D6506127363726F6C6C626172746F70627574746F
- 6E05416C69676E070643656E7465720756697369626C6508085461624F726465
- 720215000A5452656374616E676C6500095374796C654E616D65060A6261636B
- 67726F756E6405416C69676E0706436C69656E740C436C69704368696C647265
- 6E090A436C6970506172656E740907436F726E6572730B07546F704C65667408
- 546F705269676874000A46696C6C2E436F6C6F72070978464632303230323007
- 48697454657374080A53697A652E57696474680500000000000000C804400B53
- 697A652E4865696768740500000000000000C804401453697A652E506C617466
- 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852
- 61646975730500000000000000C0004007595261646975730500000000000000
- C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
- 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
- 0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F
- 6C6F720A537461727456616C756507097846463230323032300953746F705661
- 6C756507097846463430343034300754726967676572062049734D6F7573654F
- 7665723D747275653B4973507265737365643D66616C73650E54726967676572
- 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
- 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
- 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
- 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
- 300953746F7056616C756507097846463137353739430754726967676572061F
- 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
- 54726967676572496E766572736506204973507265737365643D66616C73653B
- 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
- 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
- 7A652E57696474680500000000000000A002400B53697A652E48656967687405
- 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
- 0005545061746800095374796C654E616D650605506174683105416C69676E07
- 06436C69656E7409446174612E506174680A3400000004000000000000000000
- C8420000C84201000000000096430000C8420100000000004843000096430300
- 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
- 48697454657374080D526F746174696F6E416E676C650500000000000000B406
- 400A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6E740907436F726E6572730B0A426F74746F6D4C6566740B426F74746F6D5269
+ 676874000A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573
+ 0500000000000000C0004007595261646975730500000000000000C00040000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000
+ CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463230323032300953746F7056616C75650709
+ 7846463430343034300754726967676572062049734D6F7573654F7665723D74
+ 7275653B4973507265737365643D66616C73650E54726967676572496E766572
+ 7365062149734D6F7573654F7665723D66616C73653B4973507265737365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3208447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463430343034300953746F
+ 7056616C756507097846463137353739430754726967676572061F4973507265
+ 737365643D747275653B49734D6F7573654F7665723D747275650E5472696767
+ 6572496E766572736506204973507265737365643D66616C73653B49734D6F75
+ 73654F7665723D7472756500000007544C61796F757400095374796C654E616D
+ 6506074C61796F75743105416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000A002400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080005545061
+ 746800095374796C654E616D650605506174683105416C69676E0706436C6965
+ 6E7409446174612E506174680A3400000004000000000000000000C8420000C8
+ 4201000000000096430000C842010000000000484300009643030000000000C8
+ 420000C8420A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080A53697A652E57696474680500000000000000A002400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
+ 0A5452656374616E676C6500095374796C654E616D6506147363726F6C6C6261
+ 7268747261636B7374796C6505416C69676E070643656E7465720A46696C6C2E
+ 436F6C6F7207097846463135313531350748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E650756697369626C65080006545468756D6200
+ 095374796C654E616D6506057468756D62064C6F636B6564090A53697A652E57
+ 6964746805000000000000008003400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080B537479
+ 6C654C6F6F6B7570060A7468756D627374796C650000005450463007544C6179
+ 6F757400095374796C654E616D6506137363726F6C6C6261726C656674627574
+ 746F6E05416C69676E070643656E7465720756697369626C6508085461624F72
+ 6465720213000A5452656374616E676C6500095374796C654E616D65060A6261
+ 636B67726F756E6405416C69676E0706436C69656E740C436C69704368696C64
+ 72656E090A436C6970506172656E740907436F726E6572730B07546F704C6566
+ 740A426F74746F6D4C656674000A46696C6C2E436F6C6F720709784646323032
+ 3032300748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6507585261646975730500000000000000C00040075952616469757305000000
+ 00000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650615627574746F6E436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646323032303230095374
+ 6F7056616C756507097846463430343034300754726967676572062049734D6F
+ 7573654F7665723D747275653B4973507265737365643D66616C73650E547269
+ 67676572496E7665727365062149734D6F7573654F7665723D66616C73653B49
+ 73507265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
+ 6E32084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464634
+ 30343034300953746F7056616C75650709784646313735373943075472696767
+ 6572061F4973507265737365643D747275653B49734D6F7573654F7665723D74
+ 7275650E54726967676572496E766572736506204973507265737365643D6661
+ 6C73653B49734D6F7573654F7665723D7472756500000007544C61796F757400
+ 095374796C654E616D6506074C61796F75743105416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000A002400B53697A652E486569
6768740500000000000000C001401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300A54
- 52656374616E676C6500095374796C654E616D6506147363726F6C6C62617276
- 747261636B7374796C6505416C69676E070643656E7465720A46696C6C2E436F
- 6C6F7207097846463135313531350748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650756697369626C65080006545468756D62000953
- 74796C654E616D6506057468756D62064C6F636B6564090A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 008003401453697A652E506C6174666F726D44656661756C74080B5374796C65
- 4C6F6F6B7570060A7468756D627374796C650000005450463007544C61796F75
- 7400095374796C654E616D65060C7370696E626F787374796C6505416C69676E
- 070643656E7465720A53697A652E57696474680500000000006666E005400B53
- 697A652E4865696768740500000000000000A803401453697A652E506C617466
- 6F726D44656661756C74080756697369626C6508085461624F72646572021600
- 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
- 6E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978
- 46463230323032300A53697A652E57696474680500000000006666E005400B53
- 697A652E4865696768740500000000000000A803401453697A652E506C617466
- 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
- 35313507585261646975730500000000000000C0004007595261646975730500
- 000000000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D650614436F6C6F72416E696D6174696F6E315374796C650844757261
- 74696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274
- 794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75650709
- 7846463135313531350953746F7056616C756507097846463430343034300754
- 726967676572061049734D6F7573654F7665723D747275650E54726967676572
- 496E7665727365061149734D6F7573654F7665723D66616C73650000000C5442
- 727573684F626A65637400095374796C654E616D65060A666F726567726F756E
- 640B42727573682E436F6C6F72070978464645414541454100000C5442727573
- 684F626A65637400095374796C654E616D65060973656C656374696F6E0B4272
- 7573682E436F6C6F720709783936324138324532000007544C61796F75740009
- 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
- 064C6F636B6564090C4D617267696E732E4C6566740500000000000000800040
- 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
- 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
- 000000000000008000400A53697A652E57696474680500000000007066840540
- 0B53697A652E48656967687405000000000000008803401453697A652E506C61
- 74666F726D44656661756C740800000754427574746F6E00095374796C654E61
- 6D65060B6D696E7573627574746F6E05416C69676E07074669744C6566740843
- 616E466F6375730806437572736F72070763724172726F770C4D617267696E73
- 2E4C65667405000000000000008000400B4D617267696E732E546F7005000000
- 000000008000400D4D617267696E732E52696768740500000000000000800040
- 0E4D617267696E732E426F74746F6D05000000000000008000400A506F736974
- 696F6E2E5805000000000000008000400A506F736974696F6E2E590500000000
- 0000008000400A53697A652E5769647468050000000000E8FF8703400B53697A
- 652E48656967687405000000000000008803401453697A652E506C6174666F72
- 6D44656661756C74080B5374796C654C6F6F6B7570060B627574746F6E737479
- 6C65000554506174680005416C69676E0706436C69656E7409446174612E5061
- 74680A4000000005000000000000000000803F00000000010000000000803F00
- 00803F01000000000000000000003F010000000000803F000000000300000000
- 00803F000000000A46696C6C2E436F6C6F720708636C61576869746507486974
- 54657374080C4D617267696E732E4C6566740500000000000000C001400B4D61
- 7267696E732E546F700500000000000000C001400D4D617267696E732E526967
- 68740500000000000000C001400E4D617267696E732E426F74746F6D05000000
- 00000000C001400A53697A652E5769647468050000000000A0FF9F01400B5369
- 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000007
- 54427574746F6E00095374796C654E616D65060A706C7573627574746F6E0541
- 6C69676E070846697452696768740843616E466F6375730806437572736F7207
- 0763724172726F770C4D617267696E732E4C6566740500000000000000800040
- 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
- 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
- 000000000000008000400A506F736974696F6E2E580500000000006A66BA0540
- 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
- 68050000000000F0FF8703400B53697A652E4865696768740500000000000000
- 8803401453697A652E506C6174666F726D44656661756C74080B5374796C654C
- 6F6F6B7570060B627574746F6E7374796C65000554506174680005416C69676E
- 0706436C69656E7409446174612E506174680A34000000040000000000000000
- 0000000000000001000000000000000000803F010000000000803F0000003F03
- 00000000000000000000000A46696C6C2E436F6C6F720708636C615768697465
- 0748697454657374080C4D617267696E732E4C6566740500000000000000C001
- 400B4D617267696E732E546F700500000000000000C001400D4D617267696E73
- 2E52696768740500000000000000C001400E4D617267696E732E426F74746F6D
- 0500000000000000C001400A53697A652E5769647468050000000000C0FF9F01
- 400B53697A652E4865696768740500000000000000A001401453697A652E506C
- 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
- 00000000545046300D545377697463684F626A65637400095374796C654E616D
- 65060B7377697463687374796C6505416C69676E070643656E746572044B696E
- 64070C466164696E67547261636B730A53697A652E5769647468050000000000
- 0000C805400B53697A652E4865696768740500000000000000C803401453697A
- 652E506C6174666F726D44656661756C7408085461624F726465720217125472
- 61636B696E675468756D625363616C65050000000000000080FF3F0756697369
- 626C65080A46696C6C2E436F6C6F7207097846463230323032300C46696C6C4F
- 6E2E436F6C6F7207097846463137353739430B46696C6C4F6E2E4B696E640705
- 536F6C69640B5374726F6B652E4B696E6407044E6F6E650B5468756D622E436F
- 6C6F7207097846463430343034300D5468756D624F6E2E436F6C6F7207097846
- 463241383245320C5468756D624F6E2E4B696E640705536F6C6964105468756D
- 625374726F6B652E4B696E6407044E6F6E650F5468756D625374726F6B652E43
- 61700705526F756E64105468756D625374726F6B652E44617368070643757374
- 6F6D105468756D625374726F6B652E4A6F696E0705526F756E64165468756D62
- 5374726F6B652E437573746F6D446173680A0800000000000000000000000553
- 686170650709526F756E645265637400005450463007544C61796F7574000953
- 74796C654E616D65060F746162636F6E74726F6C7374796C6505416C69676E07
- 0643656E7465720A53697A652E576964746805000000000000008E06400B5369
- 7A652E486569676874050000000000FFFFC905401453697A652E506C6174666F
- 726D44656661756C74080756697369626C6508085461624F726465720218000A
- 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
- 6405416C69676E0708436F6E74656E747307436F726E6572730B08546F705269
- 6768740A426F74746F6D4C6566740B426F74746F6D5269676874000A46696C6C
- 2E436F6C6F720709784646333033303330064C6F636B65640907486974546573
- 74080C50616464696E672E4C65667405000000000000008000400B5061646469
- 6E672E546F7005000000000000008000400D50616464696E672E526967687405
- 000000000000008000400E50616464696E672E426F74746F6D05000000000000
- 008000400A53697A652E576964746805000000000000008E06400B53697A652E
- 486569676874050000000000FFFFC905401453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
- 585261646975730500000000000000C000400759526164697573050000000000
- 0000C00040000000545046300A5452656374616E676C6500095374796C654E61
- 6D65060B746162646F747374796C6505416C69676E070643656E7465720A4669
- 6C6C2E436F6C6F7207097846463135313531350748697454657374080A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
- 5374726F6B652E4B696E6407044E6F6E650756697369626C6508075852616469
- 75730500000000000000C8034007595261646975730500000000000000C80340
- 000F54436F6C6F72416E696D6174696F6E00084475726174696F6E0500000000
- 00CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
- 537461727456616C756507097846463135313531350953746F7056616C756507
- 097846463241383245320754726967676572060F497353656C65637465643D74
- 7275650E54726967676572496E76657273650610497353656C65637465643D66
- 616C73650000005450463007544C61796F757400095374796C654E616D65060C
- 7461626974656D7374796C6505416C69676E070643656E7465720A53697A652E
- 57696474680500000000000000C804400B53697A652E48656967687405000000
- 00000000C803401453697A652E506C6174666F726D44656661756C7408075669
- 7369626C6508085461624F726465720219000A5452656374616E676C65000953
- 74796C654E616D650603746F7005416C69676E0708436F6E74656E74730C436C
- 69704368696C6472656E0907436F726E6572730B07546F704C65667408546F70
- 5269676874000A46696C6C2E436F6C6F720709784646323032303230064C6F63
- 6B6564090748697454657374080553696465730B03546F70044C656674055269
- 676874000A53697A652E57696474680500000000000000C804400B53697A652E
- 4865696768740500000000000000C803401453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
- 585261646975730500000000000000C000400759526164697573050000000000
- 0000C00040000654476C79706800095374796C654E616D65060A676C79706873
- 74796C650C4D617267696E732E4C65667405000000000000008001400D4D6172
- 67696E732E526967687405000000000000008001C005416C69676E07044C6566
- 740A506F736974696F6E2E5805000000000000008001400A53697A652E576964
- 746805000000000000008003400B53697A652E48656967687405000000000000
- 00C803401453697A652E506C6174666F726D44656661756C7408000005545465
- 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
- 74064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
- 00000000000000C000400B4D617267696E732E546F700500000000000000C000
- 400D4D617267696E732E52696768740500000000000000C000400E4D61726769
- 6E732E426F74746F6D0500000000000000C000400A53697A652E576964746805
- 00000000000000B004400B53697A652E48656967687405000000000000009803
- 401453697A652E506C6174666F726D44656661756C7408165465787453657474
- 696E67732E466F6E74436F6C6F720708636C6157686974651554657874536574
- 74696E67732E576F7264577261700800000F54436F6C6F72416E696D6174696F
- 6E00095374796C654E616D650612746162436F6C6F72416E696D6174696F6E31
- 0D416E696D6174696F6E547970650705496E4F7574084475726174696F6E0500
- 00000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C
- 6F720A537461727456616C756507097846463230323032300953746F7056616C
- 756507097846463430343034300754726967676572062149734D6F7573654F76
- 65723D747275653B497353656C65637465643D66616C73650E54726967676572
- 496E7665727365062249734D6F7573654F7665723D66616C73653B497353656C
- 65637465643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
- 74796C654E616D650612746162436F6C6F72416E696D6174696F6E3208447572
- 6174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46
- 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
- 53746F7056616C756507097846463241383245320754726967676572060F4973
- 53656C65637465643D747275650E54726967676572496E766572736506104973
- 53656C65637465643D66616C7365000000005450463007544C61796F75740009
- 5374796C654E616D65060D7465787463656C6C7374796C6505416C69676E0706
- 43656E7465720756697369626C6508085461624F72646572021A0007544C6179
- 6F757400095374796C654E616D650607636F6E74656E7405416C69676E070843
- 6F6E74656E7473064C6F636B6564090C4D617267696E732E4C65667405000000
- 000000008001400B4D617267696E732E546F7005000000000000008001400D4D
- 617267696E732E526967687405000000000000008001400E4D617267696E732E
- 426F74746F6D05000000000000008001400A53697A652E576964746805000000
- 00000000A804400B53697A652E4865696768740500000000000000A804401453
- 697A652E506C6174666F726D44656661756C740800000C5442727573684F626A
- 65637400095374796C654E616D65060A666F726567726F756E6400000C544272
- 7573684F626A65637400095374796C654E616D65060973656C656374696F6E0B
- 42727573682E436F6C6F72070978393632413832453200000B54466F6E744F62
- 6A65637400095374796C654E616D650604666F6E740000005450463007544369
- 72636C6500095374796C654E616D65060D7468756D626261727374796C650541
- 6C69676E070643656E7465720A46696C6C2E436F6C6F72070978464632413832
- 45320748697454657374080A53697A652E57696474680500000000000000A003
- 400B53697A652E4865696768740500000000000000A003401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 3135313531350756697369626C6508000F54436F6C6F72416E696D6174696F6E
+ 756C74080005545061746800095374796C654E616D650605506174683105416C
+ 69676E0706436C69656E7409446174612E506174680A34000000040000000000
+ 00000000C8420000C84201000000000096430000C84201000000000048430000
+ 9643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C615768
+ 6974650748697454657374080D526F746174696F6E416E676C65050000000000
+ 0000B405400A53697A652E57696474680500000000000000A002400B53697A65
+ 2E4865696768740500000000000000C001401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450
+ 463007544C61796F757400095374796C654E616D6506147363726F6C6C626172
+ 7269676874627574746F6E05416C69676E070643656E7465720756697369626C
+ 6508085461624F726465720214000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C43
+ 6C69704368696C6472656E090A436C6970506172656E740907436F726E657273
+ 0B08546F7052696768740B426F74746F6D5269676874000A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6507585261646975730500000000000000C000400759
+ 5261646975730500000000000000C00040000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
+ 696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463230323032300953746F7056616C7565070978464634303430343007547269
+ 67676572062049734D6F7573654F7665723D747275653B497350726573736564
+ 3D66616C73650E54726967676572496E7665727365062149734D6F7573654F76
+ 65723D66616C73653B4973507265737365643D66616C736500000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E32084475726174696F6E0500000000000000000000
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463430343034300953746F7056616C756507097846463137
+ 353739430754726967676572061F4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506204973
+ 507265737365643D66616C73653B49734D6F7573654F7665723D747275650000
+ 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
+ 69676E070643656E7465720A53697A652E57696474680500000000000000A002
+ 400B53697A652E4865696768740500000000000000C001401453697A652E506C
+ 6174666F726D44656661756C74080005545061746800095374796C654E616D65
+ 0605506174683105416C69676E0706436C69656E7409446174612E506174680A
+ 3400000004000000000000000000C8420000C84201000000000096430000C842
+ 010000000000484300009643030000000000C8420000C8420A46696C6C2E436F
+ 6C6F720708636C6157686974650748697454657374080D526F746174696F6E41
+ 6E676C650500000000000000B405C00A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E65000000005450463007544C61796F757400095374796C654E616D6506
+ 0E7363726F6C6C6261727374796C6505416C69676E070643656E746572075669
+ 7369626C6508085461624F726465720215000754427574746F6E00095374796C
+ 654E616D65060A6C656674627574746F6E05416C69676E07044C656674064C6F
+ 636B6564090A506F736974696F6E2E5905000000000000008003400A53697A65
+ 2E576964746805000000000000008003400B53697A652E486569676874050000
+ 00000000009003401453697A652E506C6174666F726D44656661756C74080B53
+ 74796C654C6F6F6B757006137363726F6C6C6261726C656674627574746F6E00
+ 000754427574746F6E00095374796C654E616D65060B7269676874627574746F
+ 6E05416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E
+ 5805000000000000008804400A506F736974696F6E2E59050000000000000080
+ 03400A53697A652E576964746805000000000000008003400B53697A652E4865
+ 6967687405000000000000009003401453697A652E506C6174666F726D446566
+ 61756C74080B5374796C654C6F6F6B757006147363726F6C6C62617272696768
+ 74627574746F6E00000754427574746F6E00095374796C654E616D65060C626F
+ 74746F6D627574746F6E05416C69676E0706426F74746F6D064C6F636B656409
+ 0A506F736974696F6E2E5905000000000000008804400A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ 8003401453697A652E506C6174666F726D44656661756C74080B5374796C654C
+ 6F6F6B757006157363726F6C6C626172626F74746F6D627574746F6E00000654
+ 547261636B00095374796C654E616D65060668747261636B05416C69676E0706
+ 436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F7269
+ 7A6F6E74616C0A53697A652E576964746805000000000000009003400B53697A
+ 652E48656967687405000000000000009003401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C626172
+ 68747261636B7374796C6500000654547261636B00095374796C654E616D6506
+ 0676747261636B05416C69676E0706436C69656E74064C6F636B6564090B4F72
+ 69656E746174696F6E070A486F72697A6F6E74616C0A53697A652E5769647468
+ 05000000000000009003400B53697A652E486569676874050000000000000090
+ 03401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F
+ 6F6B757006147363726F6C6C62617276747261636B7374796C65000007544275
+ 74746F6E00095374796C654E616D650609746F70627574746F6E05416C69676E
+ 0703546F700A53697A652E57696474680500000000000000C804400B53697A65
+ 2E48656967687405000000000000008003401453697A652E506C6174666F726D
+ 44656661756C74080B5374796C654C6F6F6B757006127363726F6C6C62617274
+ 6F70627574746F6E0000005450463007544C61796F757400095374796C654E61
+ 6D6506127363726F6C6C626172746F70627574746F6E05416C69676E07064365
+ 6E7465720756697369626C6508085461624F726465720216000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
+ 6E740907436F726E6572730B07546F704C65667408546F705269676874000A46
+ 696C6C2E436F6C6F7207097846463230323032300748697454657374080A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650758526164697573050000000000
+ 0000C0004007595261646975730500000000000000C00040000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572062049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C73650E54726967676572496E766572736506214973
+ 4D6F7573654F7665723D66616C73653B4973507265737365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463430343034300953746F7056616C7565
+ 07097846463137353739430754726967676572061F4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275650E54726967676572496E7665
+ 72736506204973507265737365643D66616C73653B49734D6F7573654F766572
+ 3D7472756500000007544C61796F757400095374796C654E616D6506074C6179
+ 6F75743105416C69676E070643656E7465720A53697A652E5769647468050000
+ 0000000000A002400B53697A652E4865696768740500000000000000C0014014
+ 53697A652E506C6174666F726D44656661756C74080005545061746800095374
+ 796C654E616D650605506174683105416C69676E0706436C69656E7409446174
+ 612E506174680A3400000004000000000000000000C8420000C8420100000000
+ 0096430000C842010000000000484300009643030000000000C8420000C8420A
+ 46696C6C2E436F6C6F720708636C6157686974650748697454657374080D526F
+ 746174696F6E416E676C650500000000000000B406400A53697A652E57696474
+ 680500000000000000A002400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000000545046300A5452656374616E676C650009
+ 5374796C654E616D6506147363726F6C6C62617276747261636B7374796C6505
+ 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646313531
+ 3531350748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 650756697369626C65080006545468756D6200095374796C654E616D65060574
+ 68756D62064C6F636B6564090A53697A652E57696474680500000000000000C8
+ 04400B53697A652E48656967687405000000000000008003401453697A652E50
+ 6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060A746875
+ 6D627374796C650000005450463007544C61796F757400095374796C654E616D
+ 65060C7370696E626F787374796C6505416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000006666E005400B53697A652E48656967687405
+ 00000000000000C003401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508085461624F726465720217000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300A5369
+ 7A652E57696474680500000000006666E005400B53697A652E48656967687405
+ 00000000000000C003401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F7207097846463135313531350758526164697573
+ 0500000000000000C0004007595261646975730500000000000000C00040000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
+ 72416E696D6174696F6E315374796C65084475726174696F6E050000000000CD
+ CCCCFB3F07496E7665727365090C50726F70657274794E616D65060C5374726F
+ 6B652E436F6C6F720A537461727456616C756507097846463135313531350953
+ 746F7056616C756507097846463430343034300754726967676572061049734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506114973
+ 4D6F7573654F7665723D66616C73650000000C5442727573684F626A65637400
+ 095374796C654E616D65060A666F726567726F756E640B42727573682E436F6C
+ 6F72070978464645414541454100000C5442727573684F626A65637400095374
+ 796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F720709
+ 783936324138324532000007544C61796F757400095374796C654E616D650607
+ 636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D61
+ 7267696E732E4C65667405000000000000008000400B4D617267696E732E546F
+ 7005000000000000008000400D4D617267696E732E5269676874050000000000
+ 00008000400E4D617267696E732E426F74746F6D05000000000000008000400A
+ 53697A652E5769647468050000000000D8CCF004400B53697A652E4865696768
+ 740500000000000000A003401453697A652E506C6174666F726D44656661756C
+ 740800000754427574746F6E00095374796C654E616D65060B6D696E75736275
+ 74746F6E05416C69676E07044C6566740843616E466F6375730806437572736F
+ 72070763724172726F770C4D617267696E732E4C656674050000000000000080
+ 00400B4D617267696E732E546F7005000000000000008000400D4D617267696E
+ 732E526967687405000000000000008000400E4D617267696E732E426F74746F
+ 6D05000000000000008000400A506F736974696F6E2E58050000000000000080
+ 00400A506F736974696F6E2E5905000000000000008000400A53697A652E5769
+ 6474680500000000000000A003400B53697A652E486569676874050000000000
+ 0000A003401453697A652E506C6174666F726D44656661756C74080B5374796C
+ 654C6F6F6B7570060B627574746F6E7374796C65000554506174680005416C69
+ 676E070643656E74657209446174612E506174680A4000000005000000000000
+ 000000803F00000000010000000000803F0000803F0100000000000000000000
+ 3F010000000000803F00000000030000000000803F000000000A46696C6C2E43
+ 6F6C6F720708636C6157686974650748697454657374080A53697A652E576964
+ 746805000000000000008002400B53697A652E48656967687405000000000000
+ 008002401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E650000000754427574746F6E00095374796C654E61
+ 6D65060A706C7573627574746F6E05416C69676E070552696768740843616E46
+ 6F6375730806437572736F72070763724172726F770C4D617267696E732E4C65
+ 667405000000000000008000400B4D617267696E732E546F7005000000000000
+ 008000400D4D617267696E732E526967687405000000000000008000400E4D61
+ 7267696E732E426F74746F6D05000000000000008000400A506F736974696F6E
+ 2E580500000000006C66B405400A506F736974696F6E2E590500000000000000
+ 8000400A53697A652E5769647468050000000000E8FF9F03400B53697A652E48
+ 65696768740500000000000000A003401453697A652E506C6174666F726D4465
+ 6661756C74080B5374796C654C6F6F6B7570060B627574746F6E7374796C6500
+ 0554506174680005416C69676E070643656E74657209446174612E506174680A
+ 340000000400000000000000000000000000000001000000000000000000803F
+ 010000000000803F0000003F0300000000000000000000000A46696C6C2E436F
+ 6C6F720708636C6157686974650748697454657374080A53697A652E57696474
+ 68050000000000A0FFFF01400B53697A652E4865696768740500000000000000
+ 8002401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000000545046300D545377697463684F626A6563
+ 7400095374796C654E616D65060B7377697463687374796C6505416C69676E07
+ 0643656E746572044B696E64070C466164696E67547261636B730A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C803401453697A652E506C6174666F726D44656661756C7408085461
+ 624F72646572021812547261636B696E675468756D625363616C650500000000
+ 00000080FF3F0756697369626C65080A46696C6C2E436F6C6F72070978464632
+ 30323032300C46696C6C4F6E2E436F6C6F7207097846463137353739430B4669
+ 6C6C4F6E2E4B696E640705536F6C69640B5374726F6B652E4B696E6407044E6F
+ 6E650B5468756D622E436F6C6F7207097846463430343034300D5468756D624F
+ 6E2E436F6C6F7207097846463241383245320C5468756D624F6E2E4B696E6407
+ 05536F6C6964105468756D625374726F6B652E4B696E6407044E6F6E650F5468
+ 756D625374726F6B652E4361700705526F756E64105468756D625374726F6B65
+ 2E446173680706437573746F6D105468756D625374726F6B652E4A6F696E0705
+ 526F756E64165468756D625374726F6B652E437573746F6D446173680A080000
+ 0000000000000000000553686170650709526F756E6452656374000054504630
+ 07544C61796F757400095374796C654E616D65060F746162636F6E74726F6C73
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 00000000008E06400B53697A652E486569676874050000000000FFFFC9054014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F726465720219000A5452656374616E676C6500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E0708436F6E74656E747307436F72
+ 6E6572730B08546F7052696768740A426F74746F6D4C6566740B426F74746F6D
+ 5269676874000A46696C6C2E436F6C6F720709784646333033303330064C6F63
+ 6B6564090748697454657374080C50616464696E672E4C656674050000000000
+ 00008000400B50616464696E672E546F7005000000000000008000400D506164
+ 64696E672E526967687405000000000000008000400E50616464696E672E426F
+ 74746F6D05000000000000008000400A53697A652E5769647468050000000000
+ 00008E06400B53697A652E486569676874050000000000FFFFC905401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 0978464631353135313507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C00040000000545046300A5452656374616E67
+ 6C6500095374796C654E616D65060B746162646F747374796C6505416C69676E
+ 070643656E7465720A46696C6C2E436F6C6F7207097846463135313531350748
+ 697454657374080A53697A652E57696474680500000000000000C804400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507566973
+ 69626C650807585261646975730500000000000000C803400759526164697573
+ 0500000000000000C80340000F54436F6C6F72416E696D6174696F6E00084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646313531353135
+ 0953746F7056616C756507097846463241383245320754726967676572060F49
+ 7353656C65637465643D747275650E54726967676572496E7665727365061049
+ 7353656C65637465643D66616C73650000005450463007544C61796F75740009
+ 5374796C654E616D65060C7461626974656D7374796C6505416C69676E070643
+ 656E7465720A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
+ 44656661756C74080756697369626C6508085461624F72646572021A000A5452
+ 656374616E676C6500095374796C654E616D650603746F7005416C69676E0708
+ 436F6E74656E74730C436C69704368696C6472656E0907436F726E6572730B07
+ 546F704C65667408546F705269676874000A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080553696465730B03
+ 546F70044C656674055269676874000A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 0978464631353135313507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C00040000654476C79706800095374796C654E
+ 616D65060A676C7970687374796C650C4D617267696E732E4C65667405000000
+ 000000008001400D4D617267696E732E526967687405000000000000008001C0
+ 05416C69676E07044C6566740A506F736974696F6E2E58050000000000000080
+ 01400A53697A652E576964746805000000000000008003400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C7408000005545465787400095374796C654E616D650604746578740541
+ 6C69676E0706436C69656E74064C6F636B6564090748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000C000400B4D617267696E732E546F
+ 700500000000000000C000400D4D617267696E732E5269676874050000000000
+ 0000C000400E4D617267696E732E426F74746F6D0500000000000000C000400A
+ 53697A652E57696474680500000000000000B004400B53697A652E4865696768
+ 7405000000000000009803401453697A652E506C6174666F726D44656661756C
+ 7408165465787453657474696E67732E466F6E74436F6C6F720708636C615768
+ 697465155465787453657474696E67732E576F7264577261700800000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650612746162436F6C6F
+ 72416E696D6174696F6E310D416E696D6174696F6E547970650705496E4F7574
+ 084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646323032
+ 3032300953746F7056616C756507097846463430343034300754726967676572
+ 062149734D6F7573654F7665723D747275653B497353656C65637465643D6661
+ 6C73650E54726967676572496E7665727365062249734D6F7573654F7665723D
+ 66616C73653B497353656C65637465643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650612746162436F6C6F72416E69
+ 6D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463230323032300953746F7056616C7565070978464632413832453207
+ 54726967676572060F497353656C65637465643D747275650E54726967676572
+ 496E76657273650610497353656C65637465643D66616C736500000000545046
+ 3007544C61796F757400095374796C654E616D65060D7465787463656C6C7374
+ 796C6505416C69676E070643656E7465720756697369626C6508085461624F72
+ 646572021B0007544C61796F757400095374796C654E616D650607636F6E7465
+ 6E7405416C69676E0708436F6E74656E7473064C6F636B6564090C4D61726769
+ 6E732E4C65667405000000000000008001400B4D617267696E732E546F700500
+ 0000000000008001400D4D617267696E732E5269676874050000000000000080
+ 01400E4D617267696E732E426F74746F6D05000000000000008001400A53697A
+ 652E57696474680500000000000000A804400B53697A652E4865696768740500
+ 000000000000A804401453697A652E506C6174666F726D44656661756C740800
+ 000C5442727573684F626A65637400095374796C654E616D65060A666F726567
+ 726F756E6400000C5442727573684F626A65637400095374796C654E616D6506
+ 0973656C656374696F6E0B42727573682E436F6C6F7207097839363241383245
+ 3200000B54466F6E744F626A65637400095374796C654E616D650604666F6E74
+ 000000545046300754436972636C6500095374796C654E616D65060D7468756D
+ 626261727374796C6505416C69676E070643656E7465720A46696C6C2E436F6C
+ 6F7207097846463241383245320748697454657374080A53697A652E57696474
+ 680500000000000000A003400B53697A652E4865696768740500000000000000
+ A003401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F7207097846463135313531350756697369626C6508000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D6506147468756D62436F6C
+ 6F72416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463241383245320953746F7056616C756507097846463137
+ 353739430754726967676572061F4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506104973
+ 507265737365643D66616C73653B00000F54436F6C6F72416E696D6174696F6E
00095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F6E
- 31084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
+ 32084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E61
6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463241
- 383245320953746F7056616C7565070978464631373537394307547269676765
- 72061F4973507265737365643D747275653B49734D6F7573654F7665723D7472
- 75650E54726967676572496E766572736506104973507265737365643D66616C
- 73653B00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
- 06147468756D62436F6C6F72416E696D6174696F6E32084475726174696F6E05
- 0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F
- 6C6F720A537461727456616C756507097846463241383245320953746F705661
- 6C756507097846463430394246460754726967676572062049734D6F7573654F
- 7665723D747275653B4973507265737365643D66616C73650E54726967676572
- 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
- 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D6506157468756D625374726F6B65416E696D6174696F6E310844
- 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
- 0C5374726F6B652E436F6C6F720A537461727456616C75650709784646313531
- 3531350953746F7056616C756507097846463137353739430754726967676572
- 061F4973507265737365643D747275653B49734D6F7573654F7665723D747275
- 650E54726967676572496E7665727365060F4973507265737365643D66616C73
- 65000000545046300A5452656374616E676C6500095374796C654E616D65060A
- 7468756D627374796C6505416C69676E070643656E7465720A46696C6C2E436F
- 6C6F7207097846463444344434440748697454657374080A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E69
- 6D6174696F6E00095374796C654E616D6506147468756D62436F6C6F72416E69
- 6D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F70
- 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
- 097846463444344434440953746F7056616C7565070978464631373537394307
- 54726967676572060E4973507265737365643D747275650E5472696767657249
- 6E7665727365060F4973507265737365643D66616C736500000F54436F6C6F72
- 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
- 74696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F0749
- 6E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C6F72
- 0A537461727456616C756507097846463444344434440953746F7056616C7565
- 0707636C61477261790754726967676572061049734D6F7573654F7665723D74
- 7275650E54726967676572496E7665727365061149734D6F7573654F7665723D
- 66616C73650000005450463007544C61796F757400095374796C654E616D6506
- 0D747261636B6261727374796C6505416C69676E070643656E7465720A53697A
- 652E57696474680500000000000000C805400B53697A652E4865696768740500
- 000000000000C805401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F72646572021B0B466978656448656967687402
- 11000A5452656374616E676C6500095374796C654E616D65060668747261636B
- 05416C69676E070A5665727443656E7465720A46696C6C2E436F6C6F72070978
- 46463135313531350748697454657374080A506F736974696F6E2E5905000000
- 00000000BC04400A53697A652E57696474680500000000000000C805400B5369
- 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
- 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261
- 646975730500000000000000A0004007595261646975730500000000000000A0
- 0040000A5452656374616E676C6500095374796C654E616D65060A6261636B67
- 726F756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407
- 044E6F6E65064C6F636B6564090748697454657374080C4D617267696E732E4C
- 6566740500000000000000C001400B4D617267696E732E546F70050000000000
- 000080FF3F0D4D617267696E732E52696768740500000000000000C001400E4D
- 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
- 6474680500000000000000B005400B53697A652E486569676874050000000000
- 0000C000401453697A652E506C6174666F726D44656661756C74080B5374726F
- 6B652E4B696E6407044E6F6E6507585261646975730500000000000000C0FF3F
- 07595261646975730500000000000000C0FF3F00000A5452656374616E676C65
- 00095374796C654E616D650609686967686C6967687405416C69676E07044C65
- 66740A46696C6C2E436F6C6F7207097846463241383245320748697454657374
- 080C50616464696E672E4C6566740500000000000000A002400A53697A652E57
- 696474680500000000000000F003400B53697A652E4865696768740500000000
- 000000A001401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E6507585261646975730500000000000000A000
- 4007595261646975730500000000000000A0004000000B54476C6F7745666665
- 63740008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F
- 720709784646324138324532074F706163697479050000000000000080FF3F07
- 456E61626C6564080000000A5452656374616E676C6500095374796C654E616D
- 65060676747261636B05416C69676E070A486F727A43656E7465720A46696C6C
- 2E436F6C6F7207097846463135313531350748697454657374080A506F736974
- 696F6E2E580500000000000000BC04400A53697A652E57696474680500000000
- 000000A001400B53697A652E4865696768740500000000000000C80540145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E6507585261646975730500000000000000A000400759526164697573
- 0500000000000000A00040000A5452656374616E676C6500095374796C654E61
- 6D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946
- 696C6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374080C
- 4D617267696E732E4C6566740500000000000000C001400B4D617267696E732E
- 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
- 00000000C001400E4D617267696E732E426F74746F6D050000000000000080FF
- 3F0A53697A652E576964746805000000000000000000000B53697A652E486569
- 6768740500000000000000C405401453697A652E506C6174666F726D44656661
- 756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E
- 676C6500095374796C654E616D650609686967686C6967687405416C69676E07
- 03546F700A46696C6C2E436F6C6F720709784646324138324532074869745465
- 7374080A53697A652E57696474680500000000000000A001400B53697A652E48
- 65696768740500000000000000F003401453697A652E506C6174666F726D4465
+ 383245320953746F7056616C7565070978464634303942464607547269676765
+ 72062049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C73650E54726967676572496E7665727365062149734D6F7573654F7665723D
+ 66616C73653B4973507265737365643D66616C736500000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D6506157468756D625374726F6B6541
+ 6E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C5072
+ 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
+ 6C756507097846463135313531350953746F7056616C75650709784646313735
+ 3739430754726967676572061F4973507265737365643D747275653B49734D6F
+ 7573654F7665723D747275650E54726967676572496E7665727365060F497350
+ 7265737365643D66616C7365000000545046300A5452656374616E676C650009
+ 5374796C654E616D65060A7468756D627374796C6505416C69676E070643656E
+ 7465720A46696C6C2E436F6C6F72070978464634443444344407486974546573
+ 74080A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000000000C804401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506147468
+ 756D62436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000
+ 00CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
+ 537461727456616C756507097846463444344434440953746F7056616C756507
+ 097846463137353739430754726967676572060E4973507265737365643D7472
+ 75650E54726967676572496E7665727365060F4973507265737365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 14436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E0500
+ 00000000CDCCCCFB3F07496E7665727365090C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463444344434
+ 440953746F7056616C75650707636C6147726179075472696767657206104973
+ 4D6F7573654F7665723D747275650E54726967676572496E7665727365061149
+ 734D6F7573654F7665723D66616C73650000005450463007544C61796F757400
+ 095374796C654E616D65060D747261636B6261727374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000000C805400B5369
+ 7A652E4865696768740500000000000000C805401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F72646572021C0B46
+ 697865644865696768740211000A5452656374616E676C6500095374796C654E
+ 616D65060668747261636B05416C69676E070A5665727443656E7465720A4669
+ 6C6C2E436F6C6F7207097846463135313531350748697454657374080A506F73
+ 6974696F6E2E590500000000000000BC04400A53697A652E5769647468050000
+ 0000000000C805400B53697A652E4865696768740500000000000000A0014014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6507585261646975730500000000000000A00040075952616469
+ 75730500000000000000A00040000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0946696C6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C6566740500000000000000C001400B4D617267696E
+ 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
+ 000000000000C001400E4D617267696E732E426F74746F6D0500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000B005400B53697A652E48
+ 65696768740500000000000000C000401453697A652E506C6174666F726D4465
6661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573
- 0500000000000000A0004007595261646975730500000000000000A000400000
- 0B54476C6F774566666563740008536F66746E657373050000000000CDCCCCFC
- 3F09476C6F77436F6C6F720709784646324138324532074F7061636974790500
- 00000000000080FF3F07456E61626C65640800000006545468756D6200095374
- 796C654E616D650606687468756D62064C6F636B6564090A506F736974696F6E
- 2E580500000000003033AB03400A506F736974696F6E2E59050000000000FFFF
- A304400A53697A652E57696474680500000000000000F002400B53697A652E48
- 65696768740500000000000000F002401453697A652E506C6174666F726D4465
- 6661756C74080B5374796C654C6F6F6B7570060D7468756D626261727374796C
- 65000006545468756D6200095374796C654E616D650606767468756D62064C6F
- 636B6564090A506F736974696F6E2E58050000000000CBCCA804400A506F7369
- 74696F6E2E590500000000009899B103400A53697A652E576964746805000000
- 00000000F002400B53697A652E4865696768740500000000000000F002401453
- 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
- 060D7468756D626261727374796C650000005450463007544C61796F75740009
- 5374796C654E616D6506096D656D6F7374796C6505416C69676E070643656E74
- 65720A53697A652E5769647468050000000000CCCC8806400B53697A652E4865
- 696768740500000000006666F405401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F72646572021C000B54476C6F77
- 4566666563740008536F66746E657373050000000000CDCCCCFC3F09476C6F77
- 436F6C6F720709784646343837394133074F7061636974790500000000000000
- 80FF3F0754726967676572060E4973466F63757365643D7472756507456E6162
- 6C65640800000C5442727573684F626A65637400095374796C654E616D65060A
- 666F726567726F756E6400000C5442727573684F626A65637400095374796C65
- 4E616D65060973656C656374696F6E0B42727573682E436F6C6F720709783746
- 34343735394400000B54466F6E744F626A65637400095374796C654E616D6506
- 04666F6E7400000A5452656374616E676C6500095374796C654E616D65060A62
- 61636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E43
- 6F6C6F7207097846463230323032300748697454657374080A53697A652E5769
- 647468050000000000CCCC8806400B53697A652E486569676874050000000000
- 6666F405401453697A652E506C6174666F726D44656661756C74080C5374726F
- 6B652E436F6C6F72070978464631353135313507585261646975730500000000
- 000000C0004007595261646975730500000000000000C000400007544C61796F
- 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
- 69656E740C4D617267696E732E4C65667405000000000000008000400B4D6172
- 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
- 7405000000000000008000400E4D617267696E732E426F74746F6D0500000000
- 0000008000400A53697A652E57696474680500000000009899E905400B53697A
- 652E4865696768740500000000006666CC05401453697A652E506C6174666F72
- 6D44656661756C740800000A545363726F6C6C42617200095374796C654E616D
- 65060A687363726F6C6C62617205416C69676E0706426F74746F6D0643757273
+ 0500000000000000C0FF3F07595261646975730500000000000000C0FF3F0000
+ 0A5452656374616E676C6500095374796C654E616D650609686967686C696768
+ 7405416C69676E07044C6566740A46696C6C2E436F6C6F720709784646324138
+ 3245320748697454657374080C50616464696E672E4C65667405000000000000
+ 00A002400A53697A652E57696474680500000000000000F003400B53697A652E
+ 4865696768740500000000000000A001401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975
+ 730500000000000000A0004007595261646975730500000000000000A0004000
+ 000B54476C6F774566666563740008536F66746E657373050000000000CDCCCC
+ FC3F09476C6F77436F6C6F720709784646324138324532074F70616369747905
+ 0000000000000080FF3F07456E61626C6564080000000A5452656374616E676C
+ 6500095374796C654E616D65060676747261636B05416C69676E070A486F727A
+ 43656E7465720A46696C6C2E436F6C6F72070978464631353135313507486974
+ 54657374080A506F736974696F6E2E580500000000000000BC04400A53697A65
+ 2E57696474680500000000000000A001400B53697A652E486569676874050000
+ 0000000000C805401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
+ A0004007595261646975730500000000000000A00040000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 08436F6E74656E74730946696C6C2E4B696E6407044E6F6E65064C6F636B6564
+ 090748697454657374080C4D617267696E732E4C6566740500000000000000C0
+ 01400B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E
+ 732E52696768740500000000000000C001400E4D617267696E732E426F74746F
+ 6D050000000000000080FF3F0A53697A652E5769647468050000000000000000
+ 00000B53697A652E4865696768740500000000000000C405401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6500000A5452656374616E676C6500095374796C654E616D650609686967686C
+ 6967687405416C69676E0703546F700A46696C6C2E436F6C6F72070978464632
+ 41383245320748697454657374080A53697A652E576964746805000000000000
+ 00A001400B53697A652E4865696768740500000000000000F003401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6507585261646975730500000000000000A0004007595261646975730500
+ 000000000000A0004000000B54476C6F774566666563740008536F66746E6573
+ 73050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846463241383245
+ 32074F706163697479050000000000000080FF3F07456E61626C656408000000
+ 06545468756D6200095374796C654E616D650606687468756D62064C6F636B65
+ 64090A506F736974696F6E2E580500000000003033AB03400A506F736974696F
+ 6E2E59050000000000FFFFA304400A53697A652E576964746805000000000000
+ 00F002400B53697A652E4865696768740500000000000000F002401453697A65
+ 2E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060D74
+ 68756D626261727374796C65000006545468756D6200095374796C654E616D65
+ 0606767468756D62064C6F636B6564090A506F736974696F6E2E580500000000
+ 00CBCCA804400A506F736974696F6E2E590500000000009899B103400A53697A
+ 652E57696474680500000000000000F002400B53697A652E4865696768740500
+ 000000000000F002401453697A652E506C6174666F726D44656661756C74080B
+ 5374796C654C6F6F6B7570060D7468756D626261727374796C65000000545046
+ 3007544C61796F757400095374796C654E616D6506096D656D6F7374796C6505
+ 416C69676E070643656E7465720A53697A652E5769647468050000000000CCCC
+ 8806400B53697A652E4865696768740500000000006666F405401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 6572021D000B54476C6F774566666563740008536F66746E6573730500000000
+ 00CDCCCCFC3F09476C6F77436F6C6F720709784646343837394133074F706163
+ 697479050000000000000080FF3F0754726967676572060E4973466F63757365
+ 643D7472756507456E61626C65640800000C5442727573684F626A6563740009
+ 5374796C654E616D65060A666F726567726F756E6400000C5442727573684F62
+ 6A65637400095374796C654E616D65060973656C656374696F6E0B4272757368
+ 2E436F6C6F72070978374634343735394400000B54466F6E744F626A65637400
+ 095374796C654E616D650604666F6E7400000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080A53697A652E5769647468050000000000CCCC8806400B53697A652E48
+ 65696768740500000000006666F405401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350758
+ 5261646975730500000000000000C00040075952616469757305000000000000
+ 00C000400007544C61796F757400095374796C654E616D650607636F6E74656E
+ 7405416C69676E0706436C69656E740C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E526967687405000000000000008000400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 00009899E905400B53697A652E4865696768740500000000006666CC05401453
+ 697A652E506C6174666F726D44656661756C740800000A545363726F6C6C4261
+ 7200095374796C654E616D65060A687363726F6C6C62617205416C69676E0706
+ 426F74746F6D06437572736F72070763724172726F770B536D616C6C4368616E
+ 676505000000000000000000000B4F7269656E746174696F6E070A486F72697A
+ 6F6E74616C0A506F736974696F6E2E590500000000006666D405400A53697A65
+ 2E5769647468050000000000CCCC8806400B53697A652E486569676874050000
+ 00000000008003401453697A652E506C6174666F726D44656661756C74080000
+ 0A545363726F6C6C42617200095374796C654E616D65060A767363726F6C6C62
+ 617205416C69676E0705526967687406437572736F72070763724172726F770B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0A506F736974696F6E2E580500000000009899F1
+ 05400A53697A652E576964746805000000000000008003400B53697A652E4865
+ 696768740500000000006666D405401453697A652E506C6174666F726D446566
+ 61756C7408000007544C61796F75740005416C69676E0706436C69656E740A53
+ 697A652E57696474680500000000009899F105400B53697A652E486569676874
+ 0500000000006666D405401453697A652E506C6174666F726D44656661756C74
+ 08000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F76
+ 736D616C6C7363726F6C6C62617205416C69676E070552696768740643757273
6F72070763724172726F770B536D616C6C4368616E6765050000000000000000
- 00000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F736974
- 696F6E2E590500000000006666D405400A53697A652E57696474680500000000
- 00CCCC8806400B53697A652E4865696768740500000000000000800340145369
- 7A652E506C6174666F726D44656661756C740800000A545363726F6C6C426172
- 00095374796C654E616D65060A767363726F6C6C62617205416C69676E070552
- 6967687406437572736F72070763724172726F770B536D616C6C4368616E6765
- 05000000000000000000000B4F7269656E746174696F6E070856657274696361
- 6C0A506F736974696F6E2E580500000000009899F105400A53697A652E576964
- 746805000000000000008003400B53697A652E48656967687405000000000066
- 66D405401453697A652E506C6174666F726D44656661756C7408000007544C61
- 796F75740005416C69676E0706436C69656E740A53697A652E57696474680500
- 000000009899F105400B53697A652E4865696768740500000000006666D40540
- 1453697A652E506C6174666F726D44656661756C7408000F54536D616C6C5363
- 726F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C
- 62617205416C69676E0705526967687406437572736F72070763724172726F77
- 0B536D616C6C4368616E676505000000000000000000000B4F7269656E746174
- 696F6E0708566572746963616C0C4D617267696E732E4C656674050000000000
- 00008000400A53697A652E576964746805000000000000008002400B53697A65
- 2E48656967687405000000000000008002401453697A652E506C6174666F726D
- 44656661756C74080756697369626C650800000F54536D616C6C5363726F6C6C
- 42617200095374796C654E616D65060F68736D616C6C7363726F6C6C62617205
- 416C69676E0706426F74746F6D06437572736F72070763724172726F770B536D
- 616C6C4368616E676505000000000000000000000B4F7269656E746174696F6E
- 070A486F72697A6F6E74616C0B4D617267696E732E546F700500000000000000
- 8000400A53697A652E576964746805000000000000009606400B53697A652E48
- 656967687405000000000000008002401453697A652E506C6174666F726D4465
- 6661756C74080756697369626C65080000000F54436F6C6F72416E696D617469
- 6F6E00095374796C654E616D6506146D656D6F5374726F6B65416E696D617469
- 6F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F7065727479
- 4E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565070978
- 46463135313531350953746F7056616C75650709784646343034303430075472
- 6967676572062049734D6F7573654F7665723D747275653B4973466F63757365
- 643D66616C73650E54726967676572496E7665727365062149734D6F7573654F
- 7665723D66616C73653B4973466F63757365643D66616C736500000F54436F6C
- 6F72416E696D6174696F6E00095374796C654E616D6506146D656D6F5374726F
- 6B65416E696D6174696F6E32084475726174696F6E050000000000CDCCCCFB3F
- 0C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172
- 7456616C756507097846463430343034300953746F7056616C75650709784646
- 3241383245320754726967676572060E4973466F63757365643D747275650E54
- 726967676572496E7665727365060F4973466F63757365643D66616C73650000
- 00005450463007544C61796F757400095374796C654E616D65060D73697A6567
- 7269707374796C6505416C69676E070643656E7465720A53697A652E57696474
- 680500000000000000C803400B53697A652E4865696768740500000000000000
- C803401453697A652E506C6174666F726D44656661756C74080756697369626C
- 6508085461624F72646572021D000A5452656374616E676C6500095374796C65
- 4E616D65060A52656374616E676C653105416C69676E070643656E7465720A46
- 696C6C2E436F6C6F7207097846463630363036300A53697A652E576964746805
+ 00000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E73
+ 2E4C65667405000000000000008000400A53697A652E57696474680500000000
+ 0000008002400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800000F54
+ 536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C
+ 6C7363726F6C6C62617205416C69676E0706426F74746F6D06437572736F7207
+ 0763724172726F770B536D616C6C4368616E676505000000000000000000000B
+ 4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E
+ 546F7005000000000000008000400A53697A652E576964746805000000000000
+ 009606400B53697A652E48656967687405000000000000008002401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C65080000000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D6506146D656D6F5374
+ 726F6B65416E696D6174696F6E31084475726174696F6E050000000000CDCCCC
+ FB3F0C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A5374
+ 61727456616C756507097846463135313531350953746F7056616C7565070978
+ 46463430343034300754726967676572062049734D6F7573654F7665723D7472
+ 75653B4973466F63757365643D66616C73650E54726967676572496E76657273
+ 65062149734D6F7573654F7665723D66616C73653B4973466F63757365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 6506146D656D6F5374726F6B65416E696D6174696F6E32084475726174696F6E
+ 050000000000CDCCCCFB3F0C50726F70657274794E616D65060C5374726F6B65
+ 2E436F6C6F720A537461727456616C756507097846463430343034300953746F
+ 7056616C756507097846463241383245320754726967676572060E4973466F63
+ 757365643D747275650E54726967676572496E7665727365060F4973466F6375
+ 7365643D66616C7365000000005450463007544C61796F757400095374796C65
+ 4E616D65060D73697A65677269707374796C6505416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000C803400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508085461624F72646572021E000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653105416C6967
+ 6E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300A
+ 53697A652E57696474680500000000000000A000400B53697A652E4865696768
+ 740500000000000000A000401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C
+ 6500095374796C654E616D65060A52656374616E676C653205416C69676E0706
+ 43656E7465720A46696C6C2E436F6C6F7207097846463630363036300C4D6172
+ 67696E732E4C6566740500000000000000A002400A53697A652E576964746805
00000000000000A000400B53697A652E4865696768740500000000000000A000
401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D
- 65060A52656374616E676C653205416C69676E070643656E7465720A46696C6C
+ 65060A52656374616E676C653305416C69676E070643656E7465720A46696C6C
2E436F6C6F7207097846463630363036300C4D617267696E732E4C6566740500
- 000000000000A002400A53697A652E57696474680500000000000000A000400B
- 53697A652E4865696768740500000000000000A000401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
- 0A5452656374616E676C6500095374796C654E616D65060A52656374616E676C
- 653305416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646
- 3630363036300C4D617267696E732E4C6566740500000000000000A002400B4D
- 617267696E732E546F700500000000000000A002400A53697A652E5769647468
- 0500000000000000A000400B53697A652E4865696768740500000000000000A0
- 00401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E61
- 6D65060A52656374616E676C653405416C69676E070643656E7465720A46696C
- 6C2E436F6C6F7207097846463630363036300B4D617267696E732E546F700500
- 000000000000A002400A53697A652E57696474680500000000000000A000400B
- 53697A652E4865696768740500000000000000A000401453697A652E506C6174
- 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
- 0A5452656374616E676C6500095374796C654E616D65060A52656374616E676C
- 653505416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646
- 3630363036300B4D617267696E732E546F700500000000000000A002400D4D61
- 7267696E732E52696768740500000000000000A002400A53697A652E57696474
- 680500000000000000A000400B53697A652E4865696768740500000000000000
- A000401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E
- 616D65060A52656374616E676C653605416C69676E070643656E7465720A4669
- 6C6C2E436F6C6F7207097846463630363036300C4D617267696E732E4C656674
- 0500000000000000A002400E4D617267696E732E426F74746F6D050000000000
- 0000A002400A53697A652E57696474680500000000000000A000400B53697A65
- 2E4865696768740500000000000000A000401453697A652E506C6174666F726D
- 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000545046
- 300A5452656374616E676C6500095374796C654E616D65060E73746174757362
- 61727374796C6505416C69676E070643656E7465720C436C69704368696C6472
- 656E090A46696C6C2E436F6C6F7207097846463235323532350553696465730B
- 03546F70000A53697A652E57696474680500000000000000F004400B53697A65
- 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
- 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
- 0756697369626C65080007544C61796F757400095374796C654E616D6506074C
- 61796F75743105416C69676E070552696768740A506F736974696F6E2E580500
- 0000000000008C04400A53697A652E57696474680500000000000000C803400B
- 53697A652E4865696768740500000000000000C804401453697A652E506C6174
- 666F726D44656661756C740800095453697A654772697000095374796C654E61
- 6D65060973697A65677267697005416C69676E0706426F74746F6D0A506F7369
- 74696F6E2E590500000000000000C803400A53697A652E576964746805000000
- 00000000C803400B53697A652E4865696768740500000000000000C803401453
- 697A652E506C6174666F726D44656661756C740800000000545046300A545265
- 6374616E676C6500095374796C654E616D65060C746F6F6C6261727374796C65
- 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463235
- 323532350748697454657374080553696465730B06426F74746F6D000A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 000000000000C804401453697A652E506C6174666F726D44656661756C74080C
- 5374726F6B652E436F6C6F7207097846463135313531350756697369626C6508
- 00005450463007544C61796F757400095374796C654E616D65061570726F6772
- 6573736261726572726F727374796C6505416C69676E070643656E7465720A53
- 697A652E576964746805000000000033338505400B53697A652E486569676874
- 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
- 080756697369626C6508085461624F72646572021E000A5452656374616E676C
- 6500095374796C654E616D65060668747261636B05416C69676E0708436F6E74
- 656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
- 64090748697454657374080A53697A652E576964746805000000000033338505
- 400B53697A652E4865696768740500000000009999E104401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 31353135313507585261646975730500000000000000C0004007595261646975
- 730500000000000000C00040000A5452656374616E676C6500095374796C654E
- 616D65060A68696E64696361746F7205416C69676E07044C6566740A46696C6C
- 2E436F6C6F720709784646453232413241064C6F636B65640907486974546573
- 74080C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
- 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
- 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
- 0080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F736974
- 696F6E2E59050000000000000080FF3F0A53697A652E57696474680500000000
- 000000C804400B53697A652E4865696768740500000000009999D90440145369
+ 000000000000A002400B4D617267696E732E546F700500000000000000A00240
+ 0A53697A652E57696474680500000000000000A000400B53697A652E48656967
+ 68740500000000000000A000401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E67
+ 6C6500095374796C654E616D65060A52656374616E676C653405416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F7207097846463630363036300B4D61
+ 7267696E732E546F700500000000000000A002400A53697A652E576964746805
+ 00000000000000A000400B53697A652E4865696768740500000000000000A000
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D
+ 65060A52656374616E676C653505416C69676E070643656E7465720A46696C6C
+ 2E436F6C6F7207097846463630363036300B4D617267696E732E546F70050000
+ 0000000000A002400D4D617267696E732E52696768740500000000000000A002
+ 400A53697A652E57696474680500000000000000A000400B53697A652E486569
+ 6768740500000000000000A000401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E
+ 676C6500095374796C654E616D65060A52656374616E676C653605416C69676E
+ 070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300C4D
+ 617267696E732E4C6566740500000000000000A002400E4D617267696E732E42
+ 6F74746F6D0500000000000000A002400A53697A652E57696474680500000000
+ 000000A000400B53697A652E4865696768740500000000000000A00040145369
7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E6507585261646975730500000000000000C000400759526164697573
- 0500000000000000C000400000000A5452656374616E676C6500095374796C65
- 4E616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C
- 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
- 7374080A53697A652E576964746805000000000033338505400B53697A652E48
- 65696768740500000000009999E104401453697A652E506C6174666F726D4465
- 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350758
- 5261646975730500000000000000C00040075952616469757305000000000000
- 00C00040000A5452656374616E676C6500095374796C654E616D65060A76696E
- 64696361746F7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72
- 0709784646453232413241064C6F636B6564090748697454657374080C4D6172
- 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
- 050000000000000080FF3F0D4D617267696E732E526967687405000000000000
- 0080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A50
- 6F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E5905
- 000000000099998904400A53697A652E57696474680500000000003333810540
- 0B53697A652E4865696768740500000000000000A803401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
- 585261646975730500000000000000C000400759526164697573050000000000
- 0000C00040000000005450463007544C61796F757400095374796C654E616D65
- 060E6C696E6B6C6162656C7374796C6505416C69676E070643656E7465720A53
- 697A652E5769647468050000000000CCCC8006400B53697A652E486569676874
- 0500000000009A998104401453697A652E506C6174666F726D44656661756C74
- 080756697369626C6508085461624F72646572021F0005545465787400095374
- 796C654E616D6506047465787405416C69676E0708436F6E74656E7473074869
- 7454657374080A53697A652E5769647468050000000000CCCC8006400B53697A
- 652E4865696768740500000000009A998104401453697A652E506C6174666F72
- 6D44656661756C740804546578740604546578741A5465787453657474696E67
- 732E466F6E742E5374796C654578740A0D000000040400000000000000040000
- 00165465787453657474696E67732E466F6E74436F6C6F72070D636C61446F64
- 676572626C7565000F54436F6C6F72416E696D6174696F6E00095374796C654E
- 616D650614436F6C6F72416E696D6174696F6E315374796C6508447572617469
- 6F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E
- 616D6506165465787453657474696E67732E466F6E74436F6C6F720A53746172
- 7456616C7565070D636C61446F64676572626C75650953746F7056616C756507
- 0E636C6144656570736B79626C75650754726967676572063049734D6F757365
- 4F7665723D747275653B4973507265737365643D66616C73653B4973466F6375
- 7365643D66616C73650E54726967676572496E7665727365063149734D6F7573
- 654F7665723D66616C73653B4973507265737365643D66616C73653B4973466F
- 63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
- 74796C654E616D650614436F6C6F72416E696D6174696F6E325374796C650844
- 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
- 165465787453657474696E67732E466F6E74436F6C6F720A537461727456616C
- 7565070E636C6144656570736B79626C75650953746F7056616C756507097846
- 463137353739430754726967676572062F4973507265737365643D747275653B
- 49734D6F7573654F7665723D747275653B4973466F63757365643D66616C7365
- 000000005450463007544C61796F757400095374796C654E616D650613736D61
- 6C6C7363726F6C6C6261727374796C6505416C69676E070643656E7465720756
- 697369626C6508085461624F726465720220000654547261636B00095374796C
- 654E616D65060668747261636B05416C69676E0706436C69656E74064C6F636B
- 6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A53697A65
+ 044E6F6E65000000545046300A5452656374616E676C6500095374796C654E61
+ 6D65060E7374617475736261727374796C6505416C69676E070643656E746572
+ 0C436C69704368696C6472656E090A46696C6C2E436F6C6F7207097846463235
+ 323532350553696465730B03546F70000A53697A652E57696474680500000000
+ 000000F004400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 07097846463135313531350756697369626C65080007544C61796F7574000953
+ 74796C654E616D6506074C61796F75743105416C69676E070552696768740A50
+ 6F736974696F6E2E5805000000000000008C04400A53697A652E576964746805
+ 00000000000000C803400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C740800095453697A654772
+ 697000095374796C654E616D65060973697A65677267697005416C69676E0706
+ 426F74746F6D0A506F736974696F6E2E590500000000000000C803400A53697A
+ 652E57696474680500000000000000C803400B53697A652E4865696768740500
+ 000000000000C803401453697A652E506C6174666F726D44656661756C740800
+ 000000545046300A5452656374616E676C6500095374796C654E616D65060C74
+ 6F6F6C6261727374796C6505416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463235323532350748697454657374080553696465730B06
+ 426F74746F6D000A53697A652E57696474680500000000000000C804400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350756697369626C650800005450463007544C61796F757400095374796C65
+ 4E616D65061570726F67726573736261726572726F727374796C6505416C6967
+ 6E070643656E7465720A53697A652E576964746805000000000033338505400B
+ 53697A652E4865696768740500000000009999E104401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508085461624F72646572021F
+ 000A5452656374616E676C6500095374796C654E616D65060668747261636B05
+ 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 6805000000000033338505400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135075852616469757305000000000000
+ 00C0004007595261646975730500000000000000C00040000A5452656374616E
+ 676C6500095374796C654E616D65060A68696E64696361746F7205416C69676E
+ 07044C6566740A46696C6C2E436F6C6F720709784646453232413241064C6F63
+ 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
+ 000080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A53697A65
2E57696474680500000000000000C804400B53697A652E486569676874050000
- 0000000000C804401453697A652E506C6174666F726D44656661756C74080B53
- 74796C654C6F6F6B757006147363726F6C6C62617268747261636B7374796C65
- 00000654547261636B00095374796C654E616D65060676747261636B05416C69
- 676E0706436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A
- 486F72697A6F6E74616C0A53697A652E57696474680500000000000000C80440
- 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
- 74666F726D44656661756C74080B5374796C654C6F6F6B757006147363726F6C
- 6C62617276747261636B7374796C650000005450463007544C61796F75740009
- 5374796C654E616D65060D636F6D626F626F787374796C6505416C69676E0706
- 43656E7465720A53697A652E57696474680500000000000000C805400B53697A
- 652E4865696768740500000000000000C803401453697A652E506C6174666F72
- 6D44656661756C74080756697369626C6508085461624F726465720221000C54
- 42727573684F626A65637400095374796C654E616D65060A666F726567726F75
- 6E6400000B54466F6E744F626A65637400095374796C654E616D650604666F6E
- 7409466F6E742E53697A650500000000000000D00240000007544C61796F7574
- 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
- 6F6E74656E74730A53697A652E57696474680500000000000000C805400B5369
- 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
- 726D44656661756C7408000A5452656374616E676C6500095374796C654E616D
- 65060A52656374616E676C653105416C69676E0706436C69656E740A46696C6C
- 2E436F6C6F7207097846463230323032300748697454657374080A53697A652E
- 57696474680500000000000000C805400B53697A652E48656967687405000000
- 00000000C803401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000C0
- 004007595261646975730500000000000000C000400007544C61796F75740009
- 5374796C654E616D650611427574746F6E5374796C654F626A65637405416C69
- 676E070846697452696768740B4D617267696E732E546F700500000000000000
- 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
- 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
- 580500000000005ED99705400A506F736974696F6E2E59050000000000000080
- FF3F0A53697A652E5769647468050000000000889AB803400B53697A652E4865
- 696768740500000000000000B803401453697A652E506C6174666F726D446566
- 61756C74080007544C61796F757400095374796C654E616D6506074C61796F75
- 743105416C69676E070643656E7465720C4D617267696E732E4C656674050000
- 000000000080FF3F0A53697A652E57696474680500000000000000A002400B53
- 697A652E4865696768740500000000000000C001401453697A652E506C617466
- 6F726D44656661756C74080005545061746800095374796C654E616D65060550
- 6174683105416C69676E0706436C69656E7409446174612E506174680A340000
- 0004000000000000000000C8420000C84201000000000096430000C842010000
- 000000484300009643030000000000C8420000C8420A46696C6C2E436F6C6F72
- 0708636C6157686974650748697454657374080A53697A652E57696474680500
+ 0000009999D904401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6507585261646975730500000000000000
+ C0004007595261646975730500000000000000C000400000000A545265637461
+ 6E676C6500095374796C654E616D65060676747261636B05416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F
+ 636B6564090748697454657374080A53697A652E576964746805000000000033
+ 338505400B53697A652E4865696768740500000000009999E104401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 78464631353135313507585261646975730500000000000000C0004007595261
+ 646975730500000000000000C00040000A5452656374616E676C650009537479
+ 6C654E616D65060A76696E64696361746F7205416C69676E0706426F74746F6D
+ 0A46696C6C2E436F6C6F720709784646453232413241064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C656674050000000000000080FF3F0B
+ 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
+ 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
+ 00000000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A
+ 506F736974696F6E2E5905000000000099998904400A53697A652E5769647468
+ 05000000000033338105400B53697A652E4865696768740500000000000000A8
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6507585261646975730500000000000000C00040075952
+ 61646975730500000000000000C00040000000005450463007544C61796F7574
+ 00095374796C654E616D65060E6C696E6B6C6162656C7374796C6505416C6967
+ 6E070643656E7465720A53697A652E5769647468050000000000CCCC8006400B
+ 53697A652E4865696768740500000000009A998104401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508085461624F726465720220
+ 0005545465787400095374796C654E616D6506047465787405416C69676E0708
+ 436F6E74656E74730748697454657374080A53697A652E576964746805000000
+ 0000CCCC8006400B53697A652E4865696768740500000000009A998104401453
+ 697A652E506C6174666F726D44656661756C740804546578740604546578741A
+ 5465787453657474696E67732E466F6E742E5374796C654578740A0D00000004
+ 040000000000000004000000165465787453657474696E67732E466F6E74436F
+ 6C6F72070D636C61446F64676572626C7565000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E3153
+ 74796C65084475726174696F6E050000000000CDCCCCFB3F07496E7665727365
+ 090C50726F70657274794E616D6506165465787453657474696E67732E466F6E
+ 74436F6C6F720A537461727456616C7565070D636C61446F64676572626C7565
+ 0953746F7056616C7565070E636C6144656570736B79626C7565075472696767
+ 6572063049734D6F7573654F7665723D747275653B4973507265737365643D66
+ 616C73653B4973466F63757365643D66616C73650E54726967676572496E7665
+ 727365063149734D6F7573654F7665723D66616C73653B497350726573736564
+ 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
+ 696F6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C5072
+ 6F70657274794E616D6506165465787453657474696E67732E466F6E74436F6C
+ 6F720A537461727456616C7565070E636C6144656570736B79626C7565095374
+ 6F7056616C756507097846463137353739430754726967676572062F49735072
+ 65737365643D747275653B49734D6F7573654F7665723D747275653B4973466F
+ 63757365643D66616C7365000000005450463007544C61796F75740009537479
+ 6C654E616D650613736D616C6C7363726F6C6C6261727374796C6505416C6967
+ 6E070643656E7465720756697369626C6508085461624F726465720221000654
+ 547261636B00095374796C654E616D65060668747261636B05416C69676E0706
+ 436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F7269
+ 7A6F6E74616C0A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C626172
+ 68747261636B7374796C6500000654547261636B00095374796C654E616D6506
+ 0676747261636B05416C69676E0706436C69656E74064C6F636B6564090B4F72
+ 69656E746174696F6E070A486F72697A6F6E74616C0A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F
+ 6F6B757006147363726F6C6C62617276747261636B7374796C65000000545046
+ 3007544C61796F757400095374796C654E616D65060D636F6D626F626F787374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F726465720222000C5442727573684F626A65637400095374796C654E616D
+ 65060A666F726567726F756E6400000B54466F6E744F626A6563740009537479
+ 6C654E616D650604666F6E7409466F6E742E53697A650500000000000000D002
+ 40000007544C61796F757400095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0708436F6E74656E74730A53697A652E5769647468050000
+ 0000000000C805400B53697A652E4865696768740500000000000000C8034014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 6500095374796C654E616D65060A52656374616E676C653105416C69676E0706
+ 436C69656E740A46696C6C2E436F6C6F72070978464632303230323007486974
+ 54657374080A53697A652E57696474680500000000000000C805400B53697A65
+ 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469
+ 75730500000000000000C0004007595261646975730500000000000000C00040
+ 0007544C61796F757400095374796C654E616D650611427574746F6E5374796C
+ 654F626A65637405416C69676E070846697452696768740B4D617267696E732E
+ 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
+ 0000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF
+ 3F0A506F736974696F6E2E580500000000005ED99705400A506F736974696F6E
+ 2E59050000000000000080FF3F0A53697A652E5769647468050000000000889A
+ B803400B53697A652E4865696768740500000000000000B803401453697A652E
+ 506C6174666F726D44656661756C74080007544C61796F757400095374796C65
+ 4E616D6506074C61796F75743105416C69676E070643656E7465720C4D617267
+ 696E732E4C656674050000000000000080FF3F0A53697A652E57696474680500
000000000000A002400B53697A652E4865696768740500000000000000C00140
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000000000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E310844
- 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
- 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
- 300953746F7056616C7565070978464634303430343007547269676765720630
- 49734D6F7573654F7665723D747275653B4973507265737365643D66616C7365
- 3B4973466F63757365643D66616C73650E54726967676572496E766572736506
- 3149734D6F7573654F7665723D66616C73653B4973507265737365643D66616C
- 73653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D61
- 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
- 6174696F6E32084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
- 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
- 7846463430343034300953746F7056616C756507097846463137353739430754
- 726967676572062F4973507265737365643D747275653B49734D6F7573654F76
- 65723D747275653B4973466F63757365643D66616C736500000F54436F6C6F72
- 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
- 72416E696D6174696F6E33084475726174696F6E050000000000CDCCCCFB3F0C
- 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
- 6C756507097846463241383245320953746F7056616C75650709784646313735
- 3739430754726967676572062E4973507265737365643D747275653B49734D6F
- 7573654F7665723D747275653B4973466F63757365643D747275650E54726967
- 676572496E7665727365062F4973507265737365643D66616C73653B49734D6F
- 7573654F7665723D747275653B4973466F63757365643D747275650000000007
- 544C61796F757400095374796C654E616D650607636F6E74656E7405416C6967
- 6E0706436C69656E74064C6F636B6564090C4D617267696E732E4C6566740500
- 0000000000008000400B4D617267696E732E546F700500000000000000800040
- 0D4D617267696E732E52696768740500000000000000D803400E4D617267696E
- 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
- 0000000000008E05400B53697A652E4865696768740500000000000000A80340
- 1453697A652E506C6174666F726D44656661756C74080000005450463007544C
- 61796F757400095374796C654E616D65060D73706C69747465727374796C6505
- 416C69676E070643656E7465720A53697A652E57696474680500000000000000
- A904400B53697A652E4865696768740500000000000080C105401453697A652E
- 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
- 65720222000A5452656374616E676C6500095374796C654E616D65060A526563
- 74616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F72
- 07097846463330333033300748697454657374080553696465730B044C656674
- 055269676874000A53697A652E57696474680500000000000000A904400B5369
- 7A652E4865696768740500000000000080C105401453697A652E506C6174666F
- 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
- 3135000007544C61796F757400095374796C654E616D6506046772697005416C
- 69676E0706436C69656E740A53697A652E57696474680500000000000000A904
- 400B53697A652E4865696768740500000000000080C105401453697A652E506C
- 6174666F726D44656661756C7408000754436972636C6500095374796C654E61
- 6D650607436972636C653105416C69676E070643656E7465720A46696C6C2E43
- 6F6C6F7207097846463430343034300A53697A652E5769647468050000000000
- 0000E001400B53697A652E4865696768740500000000000000E001401453697A
- 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
- 0978464631353135313500000754436972636C6500095374796C654E616D6506
- 07436972636C653205416C69676E070643656E7465720A46696C6C2E436F6C6F
- 7207097846463430343034300B4D617267696E732E546F700500000000000000
- A003400A53697A652E57696474680500000000000000E001400B53697A652E48
- 65696768740500000000000000E001401453697A652E506C6174666F726D4465
- 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350000
- 0754436972636C6500095374796C654E616D650607436972636C653305416C69
- 676E070643656E7465720A46696C6C2E436F6C6F720709784646343034303430
- 0E4D617267696E732E426F74746F6D0500000000000000A003400A53697A652E
+ 1453697A652E506C6174666F726D44656661756C740800055450617468000953
+ 74796C654E616D650605506174683105416C69676E0706436C69656E74094461
+ 74612E506174680A3400000004000000000000000000C8420000C84201000000
+ 000096430000C842010000000000484300009643030000000000C8420000C842
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A53
+ 697A652E57696474680500000000000000A002400B53697A652E486569676874
+ 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000000000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
+ 6E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463230323032300953746F7056616C756507097846463430343034
+ 300754726967676572063049734D6F7573654F7665723D747275653B49735072
+ 65737365643D66616C73653B4973466F63757365643D66616C73650E54726967
+ 676572496E7665727365063149734D6F7573654F7665723D66616C73653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E32084475726174696F6E050000000000
+ CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463430343034300953746F7056616C75650709
+ 7846463137353739430754726967676572062F4973507265737365643D747275
+ 653B49734D6F7573654F7665723D747275653B4973466F63757365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05
+ 0000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463241383245320953746F705661
+ 6C756507097846463137353739430754726967676572062E4973507265737365
+ 643D747275653B49734D6F7573654F7665723D747275653B4973466F63757365
+ 643D747275650E54726967676572496E7665727365062F497350726573736564
+ 3D66616C73653B49734D6F7573654F7665723D747275653B4973466F63757365
+ 643D747275650000000007544C61796F757400095374796C654E616D65060763
+ 6F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D6172
+ 67696E732E4C65667405000000000000008000400B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 00D803400E4D617267696E732E426F74746F6D05000000000000008000400A53
+ 697A652E576964746805000000000000008E05400B53697A652E486569676874
+ 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
+ 080000005450463007544C61796F757400095374796C654E616D65060D73706C
+ 69747465727374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000A904400B53697A652E486569676874050000000000
+ 0080C105401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F726465720223000A5452656374616E676C650009537479
+ 6C654E616D65060A52656374616E676C653105416C69676E0706436C69656E74
+ 0A46696C6C2E436F6C6F72070978464633303330333007486974546573740805
+ 53696465730B044C656674055269676874000A53697A652E5769647468050000
+ 0000000000A904400B53697A652E4865696768740500000000000080C1054014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000007544C61796F757400095374796C654E61
+ 6D6506046772697005416C69676E0706436C69656E740A53697A652E57696474
+ 680500000000000000A904400B53697A652E4865696768740500000000000080
+ C105401453697A652E506C6174666F726D44656661756C740800075443697263
+ 6C6500095374796C654E616D650607436972636C653105416C69676E07064365
+ 6E7465720A46696C6C2E436F6C6F7207097846463430343034300A53697A652E
57696474680500000000000000E001400B53697A652E48656967687405000000
00000000E001401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F720709784646313531353135000000005450463007544C
- 61796F757400095374796C654E616D650610726164696F627574746F6E737479
- 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
- 000000F205400B53697A652E4865696768740500000000000000A80340145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F7264657202230007544C61796F75740005416C69676E07044C6566740A5369
- 7A652E57696474680500000000000000A803400B53697A652E48656967687405
- 00000000000000A803401453697A652E506C6174666F726D44656661756C7408
- 000854456C6C6970736500095374796C654E616D65060A6261636B67726F756E
- 6405416C69676E070643656E7465720A46696C6C2E436F6C6F72070978464632
- 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
- 680500000000000000F002400B53697A652E4865696768740500000000000000
- F002401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
- 2E436F6C6F720709784646313531353135000854456C6C697073650009537479
- 6C654E616D650609636865636B6D61726B05416C69676E0706436C69656E740A
- 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
- 745465737408074F70616369747905000000000000000000000C4D617267696E
- 732E4C65667405000000000000008000400B4D617267696E732E546F70050000
- 00000000008000400D4D617267696E732E526967687405000000000000008000
- 400E4D617267696E732E426F74746F6D05000000000000008000400A53697A65
- 2E57696474680500000000000000B002400B53697A652E486569676874050000
- 0000000000B002401453697A652E506C6174666F726D44656661756C74080B53
- 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
- 6E00095374796C654E616D65061A6F706163697479436865636B6D61726B416E
+ 726F6B652E436F6C6F72070978464631353135313500000754436972636C6500
+ 095374796C654E616D650607436972636C653205416C69676E070643656E7465
+ 720A46696C6C2E436F6C6F7207097846463430343034300B4D617267696E732E
+ 546F700500000000000000A003400A53697A652E576964746805000000000000
+ 00E001400B53697A652E4865696768740500000000000000E001401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 78464631353135313500000754436972636C6500095374796C654E616D650607
+ 436972636C653305416C69676E070643656E7465720A46696C6C2E436F6C6F72
+ 07097846463430343034300E4D617267696E732E426F74746F6D050000000000
+ 0000A003400A53697A652E57696474680500000000000000E001400B53697A65
+ 2E4865696768740500000000000000E001401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 000000005450463007544C61796F757400095374796C654E616D650610726164
+ 696F627574746F6E7374796C6505416C69676E070643656E7465720A53697A65
+ 2E57696474680500000000000000F205400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508085461624F7264657202240007544C61796F75740005416C69
+ 676E07044C6566740A53697A652E57696474680500000000000000A803400B53
+ 697A652E4865696768740500000000000000A803401453697A652E506C617466
+ 6F726D44656661756C7408000854456C6C6970736500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E070643656E7465720A46696C6C2E
+ 436F6C6F720709784646323032303230064C6F636B6564090748697454657374
+ 080A53697A652E57696474680500000000000000F002400B53697A652E486569
+ 6768740500000000000000F002401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313500085445
+ 6C6C6970736500095374796C654E616D650609636865636B6D61726B05416C69
+ 676E0706436C69656E740A46696C6C2E436F6C6F720709784646324138324532
+ 064C6F636B656409074869745465737408074F70616369747905000000000000
+ 000000000C4D617267696E732E4C65667405000000000000008000400B4D6172
+ 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
+ 7405000000000000008000400E4D617267696E732E426F74746F6D0500000000
+ 0000008000400A53697A652E57696474680500000000000000B002400B53697A
+ 652E4865696768740500000000000000B002401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C
+ 6F6174416E696D6174696F6E00095374796C654E616D65061A6F706163697479
+ 436865636B6D61726B416E696D6174696F6E31084475726174696F6E05000000
+ 0000CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A5374
+ 61727456616C756505000000000000000000000953746F7056616C7565050000
+ 000000000080FF3F0754726967676572060E4973436865636B65643D74727565
+ 0E54726967676572496E7665727365060F4973436865636B65643D66616C7365
+ 0000000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061A
+ 726164696F627574746F6E436F6C6F72416E696D6174696F6E31084475726174
+ 696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3230323032300953746F7056616C756507097846463430343034300754726967
+ 676572061049734D6F7573654F7665723D747275650E54726967676572496E76
+ 65727365061149734D6F7573654F7665723D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F0C50
+ 726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456
+ 616C756507097846463135313531350953746F7056616C756507097846463241
+ 383245320754726967676572060E4973436865636B65643D747275650E547269
+ 67676572496E7665727365060F4973436865636B65643D66616C736500000000
+ 05545465787400095374796C654E616D6506047465787405416C69676E070643
+ 6C69656E74064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ A803401453697A652E506C6174666F726D44656661756C740804546578740604
+ 54657874165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 57686974650000005450463007544C61796F757400095374796C654E616D6506
+ 18756C63656E746572726164696F627574746F6E7374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000005655FB05400B5369
+ 7A652E4865696768740500000000000000A004401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C6508085461624F7264657202290007
+ 544C61796F75740005416C69676E0706426F74746F6D0A506F736974696F6E2E
+ 5905000000000000008804400A53697A652E57696474680500000000005655FB
+ 05400B53697A652E4865696768740500000000000000C001401453697A652E50
+ 6C6174666F726D44656661756C7408000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080A53697A652E57696474680500000000005655FB05400B53697A
+ 652E4865696768740500000000000000C001401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 35000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65062162
+ 61636B67726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E31
+ 084475726174696F6E050000000000CDCCCCFB3F07496E7665727365090C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463230323032300953746F7056616C756507097846463430343034
+ 300754726967676572061049734D6F7573654F7665723D747275650E54726967
+ 676572496E7665727365061149734D6F7573654F7665723D66616C736500000A
+ 5452656374616E676C6500095374796C654E616D650609636865636B6D61726B
+ 05416C69676E0708436F6E74656E747307436F726E6572730B07546F704C6566
+ 740A426F74746F6D4C656674000A46696C6C2E436F6C6F720709784646324138
+ 324532064C6F636B656409074869745465737408074F70616369747905000000
+ 000000000000000C4D617267696E732E4C656674050000000000000080FF3F0B
+ 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
+ 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
+ 00000000000080FF3F0A53697A652E57696474680500000000005655F705400B
+ 53697A652E48656967687405000000000000008001401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
+ 54466C6F6174416E696D6174696F6E00095374796C654E616D65061A63686563
+ 6B6D61726B4F706163697479416E696D6174696F6E31084475726174696F6E05
+ 0000000000CDCCCCFB3F0C50726F70657274794E616D6506074F706163697479
+ 0A537461727456616C756505000000000000000000000953746F7056616C7565
+ 050000000000000080FF3F0754726967676572060E4973436865636B65643D74
+ 7275650E54726967676572496E7665727365060F4973436865636B65643D6661
+ 6C7365000000000005545465787400095374796C654E616D6506047465787405
+ 416C69676E0706436C69656E74064C6F636B6564090748697454657374080A53
+ 697A652E57696474680500000000005655FB05400B53697A652E486569676874
+ 05000000000000008804401453697A652E506C6174666F726D44656661756C74
+ 080454657874060454657874165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C6157686974650000005450463007544C61796F757400095374
+ 796C654E616D650616756C6C656674726164696F627574746F6E7374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000005655
+ FB05400B53697A652E4865696768740500000000000000A004401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 6572022A0007544C61796F75740005416C69676E0706426F74746F6D0A506F73
+ 6974696F6E2E5905000000000000008804400A53697A652E5769647468050000
+ 0000005655FB05400B53697A652E4865696768740500000000000000C0014014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
+ 436F6E74656E747307436F726E6572730B07546F704C6566740A426F74746F6D
+ 4C656674000A46696C6C2E436F6C6F720709784646323032303230064C6F636B
+ 6564090748697454657374080A53697A652E57696474680500000000005655FB
+ 05400B53697A652E4865696768740500000000000000C001401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 4631353135313507585261646975730500000000000000C00040075952616469
+ 75730500000000000000C00040000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D6506216261636B67726F756E64556C427574746F6E436F6C
+ 6F72416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F
+ 07496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463430343034300754726967676572061049734D6F7573654F76
+ 65723D747275650E54726967676572496E7665727365061149734D6F7573654F
+ 7665723D66616C736500000A5452656374616E676C6500095374796C654E616D
+ 650609636865636B6D61726B05416C69676E0708436F6E74656E747307436F72
+ 6E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E43
+ 6F6C6F720709784646324138324532064C6F636B656409074869745465737408
+ 074F70616369747905000000000000000000000C4D617267696E732E4C656674
+ 050000000000000080FF3F0B4D617267696E732E546F70050000000000000080
+ FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
+ 696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769647468
+ 0500000000005655F705400B53697A652E486569676874050000000000000080
+ 01401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6507585261646975730500000000000000800040075952
+ 61646975730500000000000000800040000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D65061A636865636B6D61726B4F706163697479416E
696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F
70657274794E616D6506074F7061636974790A537461727456616C7565050000
00000000000000000953746F7056616C7565050000000000000080FF3F075472
6967676572060E4973436865636B65643D747275650E54726967676572496E76
- 65727365060F4973436865636B65643D66616C73650000000F54436F6C6F7241
- 6E696D6174696F6E00095374796C654E616D65061A726164696F627574746F6E
- 436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CDCC
- CCFB3F07496E7665727365090C50726F70657274794E616D65060A46696C6C2E
- 436F6C6F720A537461727456616C756507097846463230323032300953746F70
- 56616C756507097846463430343034300754726967676572061049734D6F7573
- 654F7665723D747275650E54726967676572496E7665727365061149734D6F75
- 73654F7665723D66616C736500000F54436F6C6F72416E696D6174696F6E0009
- 5374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508
- 4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
- 060C5374726F6B652E436F6C6F720A537461727456616C756507097846463135
- 313531350953746F7056616C7565070978464632413832453207547269676765
- 72060E4973436865636B65643D747275650E54726967676572496E7665727365
- 060F4973436865636B65643D66616C7365000000000554546578740009537479
- 6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65
- 64090748697454657374080A53697A652E57696474680500000000000000C805
- 400B53697A652E4865696768740500000000000000A803401453697A652E506C
- 6174666F726D44656661756C7408045465787406045465787416546578745365
- 7474696E67732E466F6E74436F6C6F720708636C615768697465000000545046
- 3007544C61796F757400095374796C654E616D650618756C63656E7465727261
- 64696F627574746F6E7374796C6505416C69676E070643656E7465720A53697A
+ 65727365060F4973436865636B65643D66616C73650000000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000880440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D650617756C7269676874726164696F62757474
+ 6F6E7374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000005655FB05400B53697A652E4865696768740500000000000000A0
+ 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08085461624F72646572022D0007544C61796F75740005416C69676E0706426F
+ 74746F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E
+ 57696474680500000000005655FB05400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E747307436F726E6572730B08546F70526967
+ 68740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000005655FB05400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135075852616469757305000000000000
+ 00C0004007595261646975730500000000000000C00040000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D6506216261636B67726F756E6455
+ 6C427574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 0000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978464632303230
+ 32300953746F7056616C75650709784646343034303430075472696767657206
+ 1049734D6F7573654F7665723D747275650E54726967676572496E7665727365
+ 061149734D6F7573654F7665723D66616C736500000A5452656374616E676C65
+ 00095374796C654E616D650609636865636B6D61726B05416C69676E0708436F
+ 6E74656E747307436F726E6572730B08546F7052696768740B426F74746F6D52
+ 69676874000A46696C6C2E436F6C6F720709784646324138324532064C6F636B
+ 656409074869745465737408074F70616369747905000000000000000000000C
+ 4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E
+ 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
+ 0000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF
+ 3F0A53697A652E57696474680500000000005655F705400B53697A652E486569
+ 67687405000000000000008001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500
+ 00000000000080004007595261646975730500000000000000800040000F5446
+ 6C6F6174416E696D6174696F6E00095374796C654E616D65061A636865636B6D
+ 61726B4F706163697479416E696D6174696F6E31084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A53
+ 7461727456616C756505000000000000000000000953746F7056616C75650500
+ 00000000000080FF3F0754726967676572060E4973436865636B65643D747275
+ 650E54726967676572496E7665727365060F4973436865636B65643D66616C73
+ 65000000000005545465787400095374796C654E616D6506047465787405416C
+ 69676E0706436C69656E74064C6F636B6564090748697454657374080A53697A
652E57696474680500000000005655FB05400B53697A652E4865696768740500
- 000000000000A004401453697A652E506C6174666F726D44656661756C740807
- 56697369626C6508085461624F7264657202280007544C61796F75740005416C
- 69676E0706426F74746F6D0A506F736974696F6E2E5905000000000000008804
- 400A53697A652E57696474680500000000005655FB05400B53697A652E486569
- 6768740500000000000000C001401453697A652E506C6174666F726D44656661
- 756C7408000A5452656374616E676C6500095374796C654E616D65060A626163
- 6B67726F756E6405416C69676E0708436F6E74656E747307436F726E6572730B
- 07546F704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F7207
- 09784646323032303230064C6F636B6564090748697454657374080A53697A65
- 2E57696474680500000000005655FB05400B53697A652E486569676874050000
- 0000000000C001401453697A652E506C6174666F726D44656661756C74080C53
- 74726F6B652E436F6C6F720709784646313531353135000F54436F6C6F72416E
- 696D6174696F6E00095374796C654E616D6506216261636B67726F756E64556C
- 427574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500
- 00000000CDCCCCFB3F07496E7665727365090C50726F70657274794E616D6506
- 0A46696C6C2E436F6C6F720A537461727456616C756507097846463230323032
- 300953746F7056616C7565070978464634303430343007547269676765720610
- 49734D6F7573654F7665723D747275650E54726967676572496E766572736506
- 1149734D6F7573654F7665723D66616C736500000A5452656374616E676C6500
- 095374796C654E616D650609636865636B6D61726B05416C69676E0708436F6E
- 74656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C6566
- 74000A46696C6C2E436F6C6F720709784646324138324532064C6F636B656409
- 074869745465737408074F70616369747905000000000000000000000C4D6172
- 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
- 050000000000000080FF3F0D4D617267696E732E526967687405000000000000
- 0080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53
- 697A652E57696474680500000000005655F705400B53697A652E486569676874
- 05000000000000008001401453697A652E506C6174666F726D44656661756C74
- 080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D61
- 74696F6E00095374796C654E616D65061A636865636B6D61726B4F7061636974
- 79416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C
- 50726F70657274794E616D6506074F7061636974790A537461727456616C7565
- 05000000000000000000000953746F7056616C7565050000000000000080FF3F
- 0754726967676572060E4973436865636B65643D747275650E54726967676572
- 496E7665727365060F4973436865636B65643D66616C73650000000000055454
- 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
- 6E74064C6F636B6564090748697454657374080A53697A652E57696474680500
- 000000005655FB05400B53697A652E4865696768740500000000000000880440
- 1453697A652E506C6174666F726D44656661756C740804546578740604546578
- 74165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
- 74650000005450463007544C61796F757400095374796C654E616D650616756C
- 6C656674726164696F627574746F6E7374796C6505416C69676E070643656E74
- 65720A53697A652E57696474680500000000005655FB05400B53697A652E4865
- 696768740500000000000000A004401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F72646572022A0007544C61796F
- 75740005416C69676E0706426F74746F6D0A506F736974696F6E2E5905000000
- 000000008804400A53697A652E57696474680500000000005655FB05400B5369
- 7A652E4865696768740500000000000000C001401453697A652E506C6174666F
- 726D44656661756C7408000A5452656374616E676C6500095374796C654E616D
- 65060A6261636B67726F756E6405416C69676E0708436F6E74656E747307436F
- 726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E
- 436F6C6F720709784646323032303230064C6F636B6564090748697454657374
- 080A53697A652E57696474680500000000005655FB05400B53697A652E486569
- 6768740500000000000000C001401453697A652E506C6174666F726D44656661
- 756C74080C5374726F6B652E436F6C6F72070978464631353135313507585261
- 646975730500000000000000C0004007595261646975730500000000000000C0
- 0040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650621
- 6261636B67726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E
- 31084475726174696F6E050000000000CDCCCCFB3F07496E7665727365090C50
- 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
- 756507097846463230323032300953746F7056616C7565070978464634303430
- 34300754726967676572061049734D6F7573654F7665723D747275650E547269
- 67676572496E7665727365061149734D6F7573654F7665723D66616C73650000
- 0A5452656374616E676C6500095374796C654E616D650609636865636B6D6172
- 6B05416C69676E0708436F6E74656E747307436F726E6572730B07546F704C65
- 66740A426F74746F6D4C656674000A46696C6C2E436F6C6F7207097846463241
- 38324532064C6F636B656409074869745465737408074F706163697479050000
- 00000000000000000C4D617267696E732E4C656674050000000000000080FF3F
- 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
- 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
- 0000000000000080FF3F0A53697A652E57696474680500000000005655F70540
- 0B53697A652E48656967687405000000000000008001401453697A652E506C61
- 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
- 5852616469757305000000000000008000400759526164697573050000000000
- 0000800040000F54466C6F6174416E696D6174696F6E00095374796C654E616D
- 65061A636865636B6D61726B4F706163697479416E696D6174696F6E31084475
- 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D650607
- 4F7061636974790A537461727456616C75650500000000000000000000095374
- 6F7056616C7565050000000000000080FF3F0754726967676572060E49734368
- 65636B65643D747275650E54726967676572496E7665727365060F4973436865
- 636B65643D66616C7365000000000005545465787400095374796C654E616D65
- 06047465787405416C69676E0706436C69656E74064C6F636B65640907486974
- 54657374080A53697A652E57696474680500000000005655FB05400B53697A65
- 2E48656967687405000000000000008804401453697A652E506C6174666F726D
- 44656661756C7408165465787453657474696E67732E466F6E74436F6C6F7207
- 08636C6157686974650000005450463007544C61796F757400095374796C654E
- 616D650617756C7269676874726164696F627574746F6E7374796C6505416C69
- 676E070643656E7465720A53697A652E57696474680500000000005655FB0540
- 0B53697A652E4865696768740500000000000000A004401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 2D0007544C61796F75740005416C69676E0706426F74746F6D0A506F73697469
- 6F6E2E5905000000000000008804400A53697A652E5769647468050000000000
- 5655FB05400B53697A652E4865696768740500000000000000C001401453697A
- 652E506C6174666F726D44656661756C7408000A5452656374616E676C650009
- 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
- 74656E747307436F726E6572730B08546F7052696768740B426F74746F6D5269
- 676874000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
- 64090748697454657374080A53697A652E57696474680500000000005655FB05
- 400B53697A652E4865696768740500000000000000C001401453697A652E506C
- 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
- 31353135313507585261646975730500000000000000C0004007595261646975
- 730500000000000000C00040000F54436F6C6F72416E696D6174696F6E000953
- 74796C654E616D6506216261636B67726F756E64556C427574746F6E436F6C6F
- 72416E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F07
- 496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F6C6F
- 720A537461727456616C756507097846463230323032300953746F7056616C75
- 6507097846463430343034300754726967676572061049734D6F7573654F7665
- 723D747275650E54726967676572496E7665727365061149734D6F7573654F76
- 65723D66616C736500000A5452656374616E676C6500095374796C654E616D65
- 0609636865636B6D61726B05416C69676E0708436F6E74656E747307436F726E
- 6572730B08546F7052696768740B426F74746F6D5269676874000A46696C6C2E
- 436F6C6F720709784646324138324532064C6F636B6564090748697454657374
- 08074F70616369747905000000000000000000000C4D617267696E732E4C6566
- 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
- 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
- 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
- 680500000000005655F705400B53697A652E4865696768740500000000000000
- 8001401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E65075852616469757305000000000000008000400759
- 5261646975730500000000000000800040000F54466C6F6174416E696D617469
- 6F6E00095374796C654E616D65061A636865636B6D61726B4F70616369747941
- 6E696D6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D6506074F7061636974790A537461727456616C75650500
- 0000000000000000000953746F7056616C7565050000000000000080FF3F0754
- 726967676572060E4973436865636B65643D747275650E54726967676572496E
- 7665727365060F4973436865636B65643D66616C736500000000000554546578
- 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
- 064C6F636B6564090748697454657374080A53697A652E576964746805000000
- 00005655FB05400B53697A652E48656967687405000000000000008804401453
- 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
- 732E466F6E74436F6C6F720708636C6157686974650000005450463007544C61
- 796F757400095374796C654E616D650615616E69696E64696361746F72686F72
- 7A7374796C6505416C69676E070643656E7465720A53697A652E576964746805
- 00000000000040C006400B53697A652E48656967687405000000000000008000
- 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 000A5452656374616E676C6500095374796C654E616D65060A52656374616E67
- 6C653105416C69676E0706436C69656E740C436C69704368696C6472656E090A
- 46696C6C2E436F6C6F7207097846463430343034300A53697A652E5769647468
- 0500000000000040C006400B53697A652E486569676874050000000000000080
- 00401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
- 4B696E6407044E6F6E650758526164697573050000000000000080FF3F075952
- 6164697573050000000000000080FF3F0005544C696E6500095374796C654E61
- 6D6506054C696E6531084C696E65547970650706426F74746F6D0A53697A652E
- 57696474680500000000000000A00B400B53697A652E48656967687405000000
- 000000008000401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F720709784646324138324532105374726F6B652E546869
- 636B6E65737305000000000000008002400A5374726F6B652E4361700705526F
- 756E640B5374726F6B652E446173680704446173680B5374726F6B652E4A6F69
- 6E0705526F756E64000F54466C6F6174416E696D6174696F6E00095374796C65
- 4E616D650603616E6907456E61626C656409084475726174696F6E0500000000
- 000000800340044C6F6F70090C50726F70657274794E616D65060A506F736974
- 696F6E2E580A537461727456616C75650500000000000000C808C00953746F70
- 56616C756505000000000000000000000754726967676572060E497356697369
- 626C653D7472756500000000005450463007544C61796F757400095374796C65
- 4E616D65060E6C6F67627574746F6E7374796C6505416C69676E070643656E74
- 65720A53697A652E57696474680500000000000000C005400B53697A652E4865
- 696768740500000000000000C005401453697A652E506C6174666F726D446566
- 61756C74080756697369626C6508085461624F726465720201000A5452656374
- 616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C69
- 676E0706436C69656E740C436C69704368696C6472656E090A436C6970506172
- 656E740907436F726E6572730B08546F7052696768740B426F74746F6D526967
- 6874000A46696C6C2E436F6C6F72070978464632303230323007486974546573
- 74080A53697A652E57696474680500000000000000C005400B53697A652E4865
- 696768740500000000000000C005401453697A652E506C6174666F726D446566
- 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
- 00000000000000C0004007595261646975730500000000000000C00040000F54
- 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
- 6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CD
- CCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
- 61727456616C756507097846463230323032300953746F7056616C7565070978
- 46463430343034300754726967676572063049734D6F7573654F7665723D7472
- 75653B4973507265737365643D66616C73653B4973466F63757365643D66616C
- 73650E54726967676572496E7665727365063149734D6F7573654F7665723D66
- 616C73653B4973507265737365643D66616C73653B4973466F63757365643D66
- 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
- 650615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F
- 6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E
- 436F6C6F720A537461727456616C756507097846463430343034300953746F70
- 56616C756507097846463137353739430754726967676572062F497350726573
- 7365643D747275653B49734D6F7573654F7665723D747275653B4973466F6375
- 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
- 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E33084475
- 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
- 46696C6C2E436F6C6F720A537461727456616C75650709784646324138324532
- 0953746F7056616C756507097846463137353739430754726967676572062E49
- 73507265737365643D747275653B49734D6F7573654F7665723D747275653B49
- 73466F63757365643D747275650E54726967676572496E7665727365062F4973
- 507265737365643D66616C73653B49734D6F7573654F7665723D747275653B49
- 73466F63757365643D74727565000005545061746800095374796C654E616D65
- 0605506174683105416C69676E0706436C69656E7409446174612E506174680A
- 5C02000032000000000000000000A841CDCCCC40010000000000A8410000C041
- 010000000000C03F0000C041010000000000C03F00000000010000009A996941
- 00000000010000000000A841CDCCCC40030000000000A841CDCCCC4000000000
- 00009C410000F04001000000000058410000F04001000000000058410000C03F
- 01000000000040400000C03F01000000000040400000B4410100000000009C41
- 0000B4410100000000009C410000F0400300000000009C410000F04000000000
- 000040410000F04001000000000090400000F04001000000000090400000C040
- 01000000000040410000C04001000000000040410000F0400300000000004041
- 0000F04000000000000090400000104101000000000090410000104101000000
- 0000904100002841010000000000904000002841010000000000904000001041
- 0300000000009040000010410000000000009040000040410100000000009041
- 0000404101000000000090410000584101000000000090400000584101000000
- 0000904000004041030000000000904000004041000000000000904000007041
- 0100000000009041000070410100000000009041000084410100000000009040
- 0000844101000000000090400000704103000000000090400000704100000000
- 0000904000009041010000000000904100009041010000000000904100009C41
- 010000000000904000009C410100000000009040000090410300000000009040
- 0000904100000000000070410000C04001000000333393410000C04001000000
- 000070416666264001000000000070410000C04003000000000070410000C040
- 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D
- 617267696E732E4C6566740500000000000000A002400B4D617267696E732E54
- 6F700500000000000000A002400D4D617267696E732E52696768740500000000
- 000000A002400E4D617267696E732E426F74746F6D0500000000000000A00240
- 0A53697A652E576964746805000000000000009805400B53697A652E48656967
- 687405000000000000009805401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64650703
- 466974000000005450463007544C61796F757400095374796C654E616D650613
- 657870616E646572627574746F6E7374796C6505416C69676E070643656E7465
- 720B4D617267696E732E546F70050000000000000080FF3F0A53697A652E5769
- 6474680500000000000000B003400B53697A652E486569676874050000000000
- 0000B003401453697A652E506C6174666F726D44656661756C74080756697369
- 626C6508085461624F7264657202300005545061746800095374796C654E616D
- 650605506174683105416C69676E070643656E74657209446174612E50617468
- 0A3400000004000000000000000000C8420000C84201000000000096430000C8
- 42010000000000484300009643030000000000C8420000C8420A46696C6C2E43
- 6F6C6F720708636C6157686974650748697454657374080D526F746174696F6E
- 416E676C650500000000000000B405400A53697A652E57696474680500000000
- 000000A002400B53697A652E4865696768740500000000000000C00140145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D
- 650614466C6F6174416E696D6174696F6E315374796C65084475726174696F6E
- 050000000000CDCCCCFB3F0D496E746572706F6C6174696F6E07084369726375
- 6C61720C50726F70657274794E616D65060D526F746174696F6E416E676C650A
- 537461727456616C75650500000000000000B405400953746F7056616C756505
- 000000000000000000000754726967676572060F4973457870616E6465643D74
- 7275650E54726967676572496E766572736506104973457870616E6465643D66
- 616C7365000000005450463007544C61796F757400095374796C654E616D6506
- 15657870616E646572636865636B626F787374796C6505416C69676E07064365
- 6E7465720A53697A652E576964746805000000000000008406400B53697A652E
- 48656967687405000000000000008404401453697A652E506C6174666F726D44
- 656661756C74080756697369626C6508085461624F7264657202340007544C61
- 796F75740005416C69676E07044C6566740A53697A652E576964746805000000
- 00000000C003400B53697A652E48656967687405000000000000008404401453
- 697A652E506C6174666F726D44656661756C7408000554506174680005416C69
- 676E0706436C69656E7409446174612E506174680AD801000027000000000000
- 00FEC8BA4402E79244020000002592AD4402E79244020000006D5BA544FEB09E
- 44020000006D5BA544FEB09E440200000093A4A4446A0C9F44020000004A80AC
- 44FC79AA4402000000046EBA44FC79AA44020000004A00C844FC79AA44020000
- 000080CF44FEB09E44020000000080CF44FEB09E44020000000080CF44FEB09E
- 44020000004C5BC84402E7924402000000FEC8BA4402E7924400000000FE88BA
- 44FE30974402000000B876BF44FE309744020000000277C344EEA09A44020000
- 000277C34404DE9E44020000000277C344121BA34402000000B876BF44008CA6
- 4402000000FE88BA44008CA644020000004C9BB544008CA64402000000009CB1
- 44121BA34402000000009CB14404DE9E4402000000009CB144EEA09A44020000
- 004C9BB544FE30974402000000FE88BA44FE309744000000000080BA44045E9B
- 4402000000146EB844045E9B440200000000C0B64454F79C440200000000C0B6
- 4400F09E440200000000C0B644ACE8A04402000000146EB844FC81A244020000
- 000080BA44FC81A24402000000EC91BC44FC81A244020000000040BE44ACE8A0
- 44020000000040BE4400F09E44020000000040BE4454F79C4402000000EC91BC
- 44045E9B44020000000080BA44045E9B440A46696C6C2E436F6C6F7207097836
- 303030303030300748697454657374080C4D617267696E732E4C656674050000
- 00000000008000400B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E526967687405000000000000008000400E4D617267696E73
- 2E426F74746F6D05000000000000008000400A53697A652E5769647468050000
- 0000000000A003400B53697A652E4865696768740500000000000000E8034014
- 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
- 6407044E6F6E6508577261704D6F64650703466974000F54436F6C6F72416E69
- 6D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70
- 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
- 097836303030303030300953746F7056616C75650708636C61426C61636B0754
- 726967676572060E4973436865636B65643D7472756500000F54436F6C6F7241
- 6E696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C5072
- 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
- 650708636C61426C61636B0953746F7056616C75650709783630303030303030
- 0754726967676572060F4973436865636B65643D66616C736500000000055454
- 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
- 6E74064C6F636B6564090748697454657374080C4D617267696E732E4C656674
- 05000000000000008002400B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E5269676874050000000000000080FF3F0A53697A65
- 2E57696474680500000000000000C605400B53697A652E486569676874050000
- 0000000000F803401453697A652E506C6174666F726D44656661756C74081654
- 65787453657474696E67732E466F6E74436F6C6F720709784646454545454545
- 165465787453657474696E67732E486F727A416C69676E07074C656164696E67
- 0000005450463007544C61796F757400095374796C654E616D65060D65787061
- 6E6465727374796C6505416C69676E070643656E7465720A53697A652E576964
- 746805000000000000C08607400B53697A652E48656967687405000000000000
- 00CE05401453697A652E506C6174666F726D44656661756C7408075669736962
- 6C6508085461624F726465720239000A5452656374616E676C6500095374796C
- 654E616D65060B626772656374616E676C6505416C69676E0708436F6E74656E
- 74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B656409
- 0748697454657374080A53697A652E576964746805000000000000C08607400B
- 53697A652E4865696768740500000000000000CE05401453697A652E506C6174
- 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
- 3135313507585261646975730500000000000000C00040075952616469757305
- 00000000000000C000400007544C61796F757400095374796C654E616D650607
- 4C61796F75743305416C69676E0703546F700A53697A652E5769647468050000
- 00000000C08607400B53697A652E4865696768740500000000000000C8034014
- 53697A652E506C6174666F726D44656661756C74080007544C61796F75740009
- 5374796C654E616D6506074C61796F75743405416C69676E0708436F6E74656E
- 74730A53697A652E576964746805000000000000C08607400B53697A652E4865
- 696768740500000000000000C803401453697A652E506C6174666F726D446566
- 61756C7408000A5452656374616E676C6500095374796C654E616D65060A5265
- 6374616E676C653205416C69676E0708436F6E74656E747307436F726E657273
- 0B07546F704C65667408546F705269676874000A46696C6C2E436F6C6F720709
- 784646323532353235064C6F636B6564090748697454657374080A53697A652E
- 576964746805000000000000C08607400B53697A652E48656967687405000000
- 00000000C803401453697A652E506C6174666F726D44656661756C74080C5374
- 726F6B652E436F6C6F7207097846463135313531350758526164697573050000
- 0000000000C0004007595261646975730500000000000000C0004000000A5452
- 656374616E676C6500095374796C654E616D65060A52656374616E676C653105
- 416C69676E0708436F6E74656E747307436F726E6572730B07546F704C656674
- 08546F705269676874000A46696C6C2E436F6C6F720709784646313531353135
- 064C6F636B6564090748697454657374080A53697A652E576964746805000000
- 000000C08607400B53697A652E4865696768740500000000000000C803401453
- 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
- 07044E6F6E6507585261646975730500000000000000C0004007595261646975
- 730500000000000000C00040000F54466C6F6174416E696D6174696F6E000953
- 74796C654E616D650614466C6F6174416E696D6174696F6E315374796C650844
- 75726174696F6E0500000000009A9999FD3F0D496E746572706F6C6174696F6E
- 070843697263756C61720C50726F70657274794E616D6506075363616C652E58
- 0A537461727456616C7565050000000000000080FF3F0953746F7056616C7565
- 05000000000000000000000754726967676572060F4973457870616E6465643D
- 747275650E54726967676572496E766572736506104973457870616E6465643D
- 66616C73650000000007544C61796F757400095374796C654E616D6506074C61
- 796F75743305416C69676E0708436F6E74656E74730A53697A652E5769647468
- 05000000000000C08607400B53697A652E4865696768740500000000000000C8
- 03401453697A652E506C6174666F726D44656661756C74080005545465787400
- 095374796C654E616D6506047465787405416C69676E07044C65667408417574
- 6F53697A65090A436C6970506172656E7409064C6F636B656409074869745465
- 7374080C4D617267696E732E4C6566740500000000000000A002400A506F7369
- 74696F6E2E580500000000000000A002400A53697A652E576964746805000000
- 00000018D103400B53697A652E4865696768740500000000000060FF02401453
- 697A652E506C6174666F726D44656661756C7408045465787406045465787416
+ 0000000000008804401453697A652E506C6174666F726D44656661756C740816
5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
- 165465787453657474696E67732E486F727A416C69676E07074C656164696E67
- 0000000F54457870616E646572427574746F6E00095374796C654E616D650606
- 627574746F6E05416C69676E07055269676874064C6F636B6564090A506F7369
- 74696F6E2E580500000000000080F906400A53697A652E576964746805000000
- 00000000A003400B53697A652E4865696768740500000000000000C803401453
- 697A652E506C6174666F726D44656661756C740800000000005450463007544C
- 61796F757400095374796C654E616D65060A70616E656C7374796C6505416C69
- 676E070643656E7465720A53697A652E57696474680500000000000000C00640
- 0B53697A652E4865696768740500000000000000A406401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508000A5452656374616E67
- 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
- 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300A
- 53697A652E57696474680500000000000000C006400B53697A652E4865696768
- 740500000000000000A406401453697A652E506C6174666F726D44656661756C
- 74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305000000
- 00000000C0004007595261646975730500000000000000C00040000000545046
- 3007544C61796F757400095374796C654E616D65061970726F67726573736261
- 726D696E696572726F727374796C6505416C69676E070643656E7465720A5369
- 7A652E576964746805000000000033338505400B53697A652E48656967687405
- 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
- 0756697369626C6508000A5452656374616E676C6500095374796C654E616D65
+ 0000005450463007544C61796F757400095374796C654E616D650615616E6969
+ 6E64696361746F72686F727A7374796C6505416C69676E070643656E7465720A
+ 53697A652E57696474680500000000000040C006400B53697A652E4865696768
+ 7405000000000000008000401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C6508085461624F72646572023A000A5452656374616E67
+ 6C6500095374796C654E616D65060A52656374616E676C653105416C69676E07
+ 06436C69656E740C436C69704368696C6472656E090A46696C6C2E436F6C6F72
+ 07097846463430343034300A53697A652E57696474680500000000000040C006
+ 400B53697A652E48656967687405000000000000008000401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0758526164697573050000000000000080FF3F07595261646975730500000000
+ 00000080FF3F0005544C696E6500095374796C654E616D6506054C696E653108
+ 4C696E65547970650706426F74746F6D0A53697A652E57696474680500000000
+ 000000A00B400B53697A652E4865696768740500000000000000800040145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646324138324532105374726F6B652E546869636B6E65737305000000
+ 000000008002400A5374726F6B652E4361700705526F756E640B5374726F6B65
+ 2E446173680704446173680B5374726F6B652E4A6F696E0705526F756E64000F
+ 54466C6F6174416E696D6174696F6E00095374796C654E616D650603616E6907
+ 456E61626C656409084475726174696F6E0500000000000000800340044C6F6F
+ 70090C50726F70657274794E616D65060A506F736974696F6E2E580A53746172
+ 7456616C75650500000000000000C808C00953746F7056616C75650500000000
+ 0000000000000754726967676572060E497356697369626C653D747275650000
+ 0000005450463007544C61796F757400095374796C654E616D65060E6C6F6762
+ 7574746F6E7374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000C005400B53697A652E486569676874050000000000
+ 0000C005401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508085461624F726465720202000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090A436C6970506172656E740907436F726E65
+ 72730B08546F7052696768740B426F74746F6D5269676874000A46696C6C2E43
+ 6F6C6F7207097846463230323032300748697454657374080A53697A652E5769
+ 6474680500000000000000C005400B53697A652E486569676874050000000000
+ 0000C005401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E6507585261646975730500000000000000C00040
+ 07595261646975730500000000000000C00040000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E31084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572063049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365063149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E32084475726174696F6E050000000000CDCCCC
+ FB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463430343034300953746F7056616C75650709784646
+ 3137353739430754726967676572062F4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05000000
+ 0000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463241383245320953746F7056616C7565
+ 07097846463137353739430754726967676572062E4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275653B4973466F63757365643D74
+ 7275650E54726967676572496E7665727365062F4973507265737365643D6661
+ 6C73653B49734D6F7573654F7665723D747275653B4973466F63757365643D74
+ 727565000005545061746800095374796C654E616D650605506174683105416C
+ 69676E0706436C69656E7409446174612E506174680A5C020000320000000000
+ 00000000A841CDCCCC40010000000000A8410000C041010000000000C03F0000
+ C041010000000000C03F00000000010000009A99694100000000010000000000
+ A841CDCCCC40030000000000A841CDCCCC400000000000009C410000F0400100
+ 0000000058410000F04001000000000058410000C03F01000000000040400000
+ C03F01000000000040400000B4410100000000009C410000B441010000000000
+ 9C410000F0400300000000009C410000F04000000000000040410000F0400100
+ 0000000090400000F04001000000000090400000C04001000000000040410000
+ C04001000000000040410000F04003000000000040410000F040000000000000
+ 9040000010410100000000009041000010410100000000009041000028410100
+ 0000000090400000284101000000000090400000104103000000000090400000
+ 1041000000000000904000004041010000000000904100004041010000000000
+ 9041000058410100000000009040000058410100000000009040000040410300
+ 0000000090400000404100000000000090400000704101000000000090410000
+ 7041010000000000904100008441010000000000904000008441010000000000
+ 9040000070410300000000009040000070410000000000009040000090410100
+ 00000000904100009041010000000000904100009C4101000000000090400000
+ 9C41010000000000904000009041030000000000904000009041000000000000
+ 70410000C04001000000333393410000C0400100000000007041666626400100
+ 0000000070410000C04003000000000070410000C0400A46696C6C2E436F6C6F
+ 720708636C6157686974650748697454657374080C4D617267696E732E4C6566
+ 740500000000000000A002400B4D617267696E732E546F700500000000000000
+ A002400D4D617267696E732E52696768740500000000000000A002400E4D6172
+ 67696E732E426F74746F6D0500000000000000A002400A53697A652E57696474
+ 6805000000000000009805400B53697A652E4865696768740500000000000000
+ 9805401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6508577261704D6F6465070346697400000000545046
+ 3007544C61796F757400095374796C654E616D650613657870616E6465726275
+ 74746F6E7374796C6505416C69676E070643656E7465720B4D617267696E732E
+ 546F70050000000000000080FF3F0A53697A652E576964746805000000000000
+ 00B003400B53697A652E4865696768740500000000000000B003401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508085461624F72
+ 64657202350005545061746800095374796C654E616D65060550617468310541
+ 6C69676E070643656E74657209446174612E506174680A340000000400000000
+ 0000000000C8420000C84201000000000096430000C842010000000000484300
+ 009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C6157
+ 686974650748697454657374080D526F746174696F6E416E676C650500000000
+ 000000B405400A53697A652E57696474680500000000000000A002400B53697A
+ 652E4865696768740500000000000000C001401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C
+ 6F6174416E696D6174696F6E00095374796C654E616D650614466C6F6174416E
+ 696D6174696F6E315374796C65084475726174696F6E050000000000CDCCCCFB
+ 3F0D496E746572706F6C6174696F6E070843697263756C61720C50726F706572
+ 74794E616D65060D526F746174696F6E416E676C650A537461727456616C7565
+ 0500000000000000B405400953746F7056616C75650500000000000000000000
+ 0754726967676572060F4973457870616E6465643D747275650E547269676765
+ 72496E766572736506104973457870616E6465643D66616C7365000000005450
+ 463007544C61796F757400095374796C654E616D650615657870616E64657263
+ 6865636B626F787374796C6505416C69676E070643656E7465720A53697A652E
+ 576964746805000000000000008406400B53697A652E48656967687405000000
+ 000000008404401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508085461624F7264657202360007544C61796F75740005416C6967
+ 6E07044C6566740A53697A652E57696474680500000000000000C003400B5369
+ 7A652E48656967687405000000000000008404401453697A652E506C6174666F
+ 726D44656661756C7408000554506174680005416C69676E0706436C69656E74
+ 09446174612E506174680AD80100002700000000000000FEC8BA4402E7924402
+ 0000002592AD4402E79244020000006D5BA544FEB09E44020000006D5BA544FE
+ B09E440200000093A4A4446A0C9F44020000004A80AC44FC79AA440200000004
+ 6EBA44FC79AA44020000004A00C844FC79AA44020000000080CF44FEB09E4402
+ 0000000080CF44FEB09E44020000000080CF44FEB09E44020000004C5BC84402
+ E7924402000000FEC8BA4402E7924400000000FE88BA44FE30974402000000B8
+ 76BF44FE309744020000000277C344EEA09A44020000000277C34404DE9E4402
+ 0000000277C344121BA34402000000B876BF44008CA64402000000FE88BA4400
+ 8CA644020000004C9BB544008CA64402000000009CB144121BA3440200000000
+ 9CB14404DE9E4402000000009CB144EEA09A44020000004C9BB544FE30974402
+ 000000FE88BA44FE309744000000000080BA44045E9B4402000000146EB84404
+ 5E9B440200000000C0B64454F79C440200000000C0B64400F09E440200000000
+ C0B644ACE8A04402000000146EB844FC81A244020000000080BA44FC81A24402
+ 000000EC91BC44FC81A244020000000040BE44ACE8A044020000000040BE4400
+ F09E44020000000040BE4454F79C4402000000EC91BC44045E9B440200000000
+ 80BA44045E9B440A46696C6C2E436F6C6F720709783630303030303030074869
+ 7454657374080C4D617267696E732E4C65667405000000000000008000400B4D
+ 617267696E732E546F7005000000000000008000400D4D617267696E732E5269
+ 67687405000000000000008000400E4D617267696E732E426F74746F6D050000
+ 00000000008000400A53697A652E57696474680500000000000000A003400B53
+ 697A652E4865696768740500000000000000E803401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65085772
+ 61704D6F64650703466974000F54436F6C6F72416E696D6174696F6E00084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709783630303030303030
+ 0953746F7056616C75650708636C61426C61636B0754726967676572060E4973
+ 436865636B65643D7472756500000F54436F6C6F72416E696D6174696F6E0008
+ 4475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C75650708636C61426C6163
+ 6B0953746F7056616C756507097836303030303030300754726967676572060F
+ 4973436865636B65643D66616C73650000000005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C65667405000000000000008002
+ 400B4D617267696E732E546F7005000000000000008000400D4D617267696E73
+ 2E5269676874050000000000000080FF3F0A53697A652E576964746805000000
+ 00000000C605400B53697A652E4865696768740500000000000000F803401453
+ 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
+ 732E466F6E74436F6C6F72070978464645454545454516546578745365747469
+ 6E67732E486F727A416C69676E07074C656164696E670000005450463007544C
+ 61796F757400095374796C654E616D65060D657870616E6465727374796C6505
+ 416C69676E070643656E7465720A53697A652E576964746805000000000000C0
+ 8607400B53697A652E4865696768740500000000000000CE05401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508085461624F7264
+ 65720237000A5452656374616E676C6500095374796C654E616D65060B626772
+ 656374616E676C6505416C69676E0708436F6E74656E74730A46696C6C2E436F
+ 6C6F720709784646324432443244064C6F636B6564090748697454657374080A
+ 53697A652E576964746805000000000000C08607400B53697A652E4865696768
+ 740500000000000000CE05401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135075852616469
+ 75730500000000000000C0004007595261646975730500000000000000C00040
+ 0007544C61796F757400095374796C654E616D6506074C61796F75743305416C
+ 69676E0703546F700A53697A652E576964746805000000000000C08607400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C74080007544C61796F757400095374796C654E616D6506
+ 074C61796F75743405416C69676E0708436F6E74656E74730A53697A652E5769
+ 64746805000000000000C08607400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060A52656374616E676C65320541
+ 6C69676E0708436F6E74656E747307436F726E6572730B07546F704C65667408
+ 546F705269676874000A46696C6C2E436F6C6F72070978464632353235323506
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 0000C08607400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 070978464631353135313507585261646975730500000000000000C000400759
+ 5261646975730500000000000000C0004000000A5452656374616E676C650009
+ 5374796C654E616D65060A52656374616E676C653105416C69676E0708436F6E
+ 74656E747307436F726E6572730B07546F704C65667408546F70526967687400
+ 0A46696C6C2E436F6C6F720709784646313531353135064C6F636B6564090748
+ 697454657374080A53697A652E576964746805000000000000C08607400B5369
+ 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261
+ 646975730500000000000000C0004007595261646975730500000000000000C0
+ 0040000F54466C6F6174416E696D6174696F6E00095374796C654E616D650614
+ 466C6F6174416E696D6174696F6E315374796C65084475726174696F6E050000
+ 0000009A9999FD3F0D496E746572706F6C6174696F6E070843697263756C6172
+ 0C50726F70657274794E616D6506075363616C652E580A537461727456616C75
+ 65050000000000000080FF3F0953746F7056616C756505000000000000000000
+ 000754726967676572060F4973457870616E6465643D747275650E5472696767
+ 6572496E766572736506104973457870616E6465643D66616C73650000000007
+ 544C61796F757400095374796C654E616D6506074C61796F75743305416C6967
+ 6E0708436F6E74656E74730A53697A652E576964746805000000000000C08607
+ 400B53697A652E4865696768740500000000000000C803401453697A652E506C
+ 6174666F726D44656661756C74080005545465787400095374796C654E616D65
+ 06047465787405416C69676E07044C656674084175746F53697A65090A436C69
+ 70506172656E7409064C6F636B6564090748697454657374080C4D617267696E
+ 732E4C6566740500000000000000A002400A506F736974696F6E2E5805000000
+ 00000000A002400A53697A652E576964746805000000000000B8C703400B5369
+ 7A652E4865696768740500000000000060FF02401453697A652E506C6174666F
+ 726D44656661756C74080454657874060454657874165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C61576869746516546578745365747469
+ 6E67732E486F727A416C69676E07074C656164696E670000000F54457870616E
+ 646572427574746F6E00095374796C654E616D650606627574746F6E05416C69
+ 676E07055269676874064C6F636B6564090A506F736974696F6E2E5805000000
+ 00000080F906400A53697A652E57696474680500000000000000A003400B5369
+ 7A652E4865696768740500000000000000C803401453697A652E506C6174666F
+ 726D44656661756C740800000000005450463007544C61796F75740009537479
+ 6C654E616D65060A70616E656C7374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000000000C006400B53697A652E48656967
+ 68740500000000000000A406401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720238000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230
+ 0A53697A652E57696474680500000000000000C006400B53697A652E48656967
+ 68740500000000000000A406401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
+ 0000000000C0004007595261646975730500000000000000C000400000005450
+ 463007544C61796F757400095374796C654E616D65061970726F677265737362
+ 61726D696E696572726F727374796C6505416C69676E070643656E7465720A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508085461624F726465720239000A5452656374616E676C
+ 6500095374796C654E616D65060668747261636B05416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B65
+ 64090748697454657374080A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000009999E104401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0758526164697573050000000000000080004007595261646975730500000000
+ 000000800040000A5452656374616E676C6500095374796C654E616D65060A68
+ 696E64696361746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72
+ 0709784646453232413241064C6F636B6564090748697454657374080A53697A
+ 652E57696474680500000000000000C804400B53697A652E4865696768740500
+ 000000009999E104401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E65075852616469757305000000000000
+ 00800040075952616469757305000000000000008000400000000A5452656374
+ 616E676C6500095374796C654E616D65060676747261636B05416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F720709784646343034303430064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 33338505400B53697A652E4865696768740500000000009999E104401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6507585261646975730500000000000000800040075952616469757305
+ 00000000000000800040000A5452656374616E676C6500095374796C654E616D
+ 65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C6C
+ 2E436F6C6F720709784646453232413241064C6F636B65640907486974546573
+ 74080A506F736974696F6E2E5905000000000099998D04400A53697A652E5769
+ 64746805000000000033338505400B53697A652E486569676874050000000000
+ 0000A803401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E6507585261646975730500000000000000800040
+ 07595261646975730500000000000000800040000000005450463007544C6179
+ 6F757400095374796C654E616D65061470726F67726573736261726D696E6973
+ 74796C6505416C69676E070643656E7465720A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C65080854
+ 61624F72646572022F000A5452656374616E676C6500095374796C654E616D65
060668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F
6C6F720709784646343034303430064C6F636B6564090748697454657374080A
53697A652E576964746805000000000033338505400B53697A652E4865696768
@@ -16564,7 +17849,7 @@ object MainForm: TMainForm
74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305000000
0000000080004007595261646975730500000000000000800040000A54526563
74616E676C6500095374796C654E616D65060A68696E64696361746F7205416C
- 69676E07044C6566740A46696C6C2E436F6C6F72070978464645323241324106
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464632413832453206
4C6F636B6564090748697454657374080A53697A652E57696474680500000000
000000C804400B53697A652E4865696768740500000000009999E10440145369
7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
@@ -16577,387 +17862,647 @@ object MainForm: TMainForm
6661756C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573
050000000000000080004007595261646975730500000000000000800040000A
5452656374616E676C6500095374796C654E616D65060A76696E64696361746F
- 7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978464645
- 3232413241064C6F636B6564090748697454657374080A506F736974696F6E2E
+ 7205416C69676E0706426F74746F6D0A46696C6C2E436F6C6F72070978464632
+ 4138324532064C6F636B6564090748697454657374080A506F736974696F6E2E
5905000000000099998D04400A53697A652E5769647468050000000000333385
05400B53697A652E4865696768740500000000000000A803401453697A652E50
6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
6507585261646975730500000000000000800040075952616469757305000000
00000000800040000000005450463007544C61796F757400095374796C654E61
- 6D65061470726F67726573736261726D696E697374796C6505416C69676E0706
- 43656E7465720A53697A652E576964746805000000000033338505400B53697A
- 652E4865696768740500000000009999E104401453697A652E506C6174666F72
- 6D44656661756C74080756697369626C6508085461624F72646572022F000A54
- 52656374616E676C6500095374796C654E616D65060668747261636B05416C69
- 676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464634303430
- 3430064C6F636B6564090748697454657374080A53697A652E57696474680500
- 0000000033338505400B53697A652E4865696768740500000000009999E10440
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65075852616469757305000000000000008000400759526164
- 6975730500000000000000800040000A5452656374616E676C6500095374796C
- 654E616D65060A68696E64696361746F7205416C69676E07044C6566740A4669
- 6C6C2E436F6C6F720709784646324138324532064C6F636B6564090748697454
- 657374080A53697A652E57696474680500000000000000C804400B53697A652E
- 4865696768740500000000009999E104401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E6507585261646975
- 7305000000000000008000400759526164697573050000000000000080004000
- 00000A5452656374616E676C6500095374796C654E616D65060676747261636B
- 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
- 343034303430064C6F636B6564090748697454657374080A53697A652E576964
- 746805000000000033338505400B53697A652E48656967687405000000000099
- 99E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B
- 652E4B696E6407044E6F6E650758526164697573050000000000000080004007
- 595261646975730500000000000000800040000A5452656374616E676C650009
- 5374796C654E616D65060A76696E64696361746F7205416C69676E0706426F74
- 746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F636B6564
- 090748697454657374080A506F736974696F6E2E5905000000000099998D0440
- 0A53697A652E576964746805000000000033338505400B53697A652E48656967
- 68740500000000000000A803401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
- 0000000000800040075952616469757305000000000000008000400000000054
- 50463007544C61796F757400095374796C654E616D65060E636F6D626F656469
- 747374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 6D65060E636F6D626F656469747374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508085461624F726465720234000C5442727573684F
+ 626A65637400095374796C654E616D65060A666F726567726F756E6400000B54
+ 466F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E74
+ 2E53697A650500000000000000D00240000007544C61796F757400095374796C
+ 654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74
+ 730A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C7408000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F72
+ 07097846463230323032300748697454657374080A53697A652E576964746805
00000000000000C805400B53697A652E4865696768740500000000000000C803
- 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
- 085461624F726465720233000C5442727573684F626A65637400095374796C65
- 4E616D65060A666F726567726F756E6400000B54466F6E744F626A6563740009
- 5374796C654E616D650604666F6E7409466F6E742E53697A6505000000000000
- 00D00240000007544C61796F757400095374796C654E616D65060A6261636B67
- 726F756E6405416C69676E0708436F6E74656E74730A53697A652E5769647468
- 0500000000000000C805400B53697A652E4865696768740500000000000000C8
- 03401453697A652E506C6174666F726D44656661756C7408000A545265637461
- 6E676C6500095374796C654E616D65060A52656374616E676C653105416C6967
- 6E0706436C69656E740A46696C6C2E436F6C6F72070978464632303230323007
- 48697454657374080A53697A652E57696474680500000000000000C805400B53
- 697A652E4865696768740500000000000000C803401453697A652E506C617466
- 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646323032
- 30323007585261646975730500000000000000C0004007595261646975730500
- 000000000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C
- 654E616D650614436F6C6F72416E696D6174696F6E315374796C650844757261
- 74696F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274
- 794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75650709
- 7846463230323032300953746F7056616C756507097846463430343034300754
- 726967676572062049734D6F7573654F7665723D747275653B4973466F637573
- 65643D66616C73650E54726967676572496E7665727365062149734D6F757365
- 4F7665723D66616C73653B4973466F63757365643D66616C736500000F54436F
- 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
- 696D6174696F6E325374796C65084475726174696F6E050000000000CDCCCCFB
- 3F07496E7665727365090C50726F70657274794E616D65060C5374726F6B652E
- 436F6C6F720A537461727456616C756507097846463430343034300953746F70
- 56616C756507097846463241383245320754726967676572061F49734D6F7573
- 654F7665723D747275653B4973466F63757365643D747275650E547269676765
- 72496E7665727365062049734D6F7573654F7665723D747275653B4973466F63
- 757365643D66616C7365000007544C61796F757400095374796C654E616D6506
- 056172726F7705416C69676E070846697452696768740B4D617267696E732E54
- 6F70050000000000000080FF3F0D4D617267696E732E52696768740500000000
- 00000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F
- 0A506F736974696F6E2E580500000000005ED99705400A506F736974696F6E2E
- 59050000000000000080FF3F0A53697A652E5769647468050000000000889AB8
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F72070978464632303230323007585261646975730500000000000000C0
+ 004007595261646975730500000000000000C00040000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F
+ 6E315374796C65084475726174696F6E050000000000CDCCCCFB3F07496E7665
+ 727365090C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A
+ 537461727456616C756507097846463230323032300953746F7056616C756507
+ 097846463430343034300754726967676572062049734D6F7573654F7665723D
+ 747275653B4973466F63757365643D66616C73650E54726967676572496E7665
+ 727365062149734D6F7573654F7665723D66616C73653B4973466F6375736564
+ 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650614436F6C6F72416E696D6174696F6E325374796C6508447572617469
+ 6F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E
+ 616D65060C5374726F6B652E436F6C6F720A537461727456616C756507097846
+ 463430343034300953746F7056616C7565070978464632413832453207547269
+ 67676572061F49734D6F7573654F7665723D747275653B4973466F6375736564
+ 3D747275650E54726967676572496E7665727365062049734D6F7573654F7665
+ 723D747275653B4973466F63757365643D66616C7365000007544C61796F7574
+ 00095374796C654E616D6506056172726F7705416C69676E0708466974526967
+ 68740B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E
+ 732E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F
+ 6D050000000000000080FF3F0A506F736974696F6E2E580500000000005ED997
+ 05400A506F736974696F6E2E59050000000000000080FF3F0A53697A652E5769
+ 647468050000000000889AB803400B53697A652E486569676874050000000000
+ 0000B803401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060A52656374616E676C65310541
+ 6C69676E0708436F6E74656E747307436F726E6572730B08546F705269676874
+ 0B426F74746F6D5269676874000A46696C6C2E436F6C6F720709784646333033
+ 3033300748697454657374080A53697A652E5769647468050000000000889AB8
03400B53697A652E4865696768740500000000000000B803401453697A652E50
- 6C6174666F726D44656661756C7408000A5452656374616E676C650009537479
- 6C654E616D65060A52656374616E676C653105416C69676E0708436F6E74656E
- 747307436F726E6572730B08546F7052696768740B426F74746F6D5269676874
- 000A46696C6C2E436F6C6F720709784646333033303330074869745465737408
- 0A53697A652E5769647468050000000000889AB803400B53697A652E48656967
- 68740500000000000000B803401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E650758526164697573050000
- 0000000000C0004007595261646975730500000000000000C00040000F54436F
- 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
- 696D6174696F6E315374796C65084475726174696F6E050000000000CDCCCCFB
- 3F07496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
- 6C6F720A537461727456616C756507097846463330333033300953746F705661
- 6C756507097846463430343034300754726967676572062049734D6F7573654F
- 7665723D747275653B4973466F63757365643D66616C73650E54726967676572
- 496E7665727365062149734D6F7573654F7665723D66616C73653B4973466F63
- 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
- 796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65084475
- 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
- 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
- 0953746F7056616C756507097846463137353739430754726967676572061F49
- 73466F63757365643D747275653B49734D6F7573654F7665723D747275650000
- 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
- 69676E070643656E7465720C4D617267696E732E4C6566740500000000000000
- 80FF3F0A53697A652E57696474680500000000000000A002400B53697A652E48
- 65696768740500000000000000C001401453697A652E506C6174666F726D4465
- 6661756C74080005545061746800095374796C654E616D650605506174683105
- 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
- 000000000000C8420000C84201000000000096430000C8420100000000004843
- 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
- 57686974650748697454657374080A53697A652E576964746805000000000000
- 00A002400B53697A652E4865696768740500000000000000C001401453697A65
- 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
- 6F6E650000000000000C5442727573684F626A65637400095374796C654E616D
- 65060973656C656374696F6E0B42727573682E436F6C6F720709783936324138
- 324532000007544C61796F757400095374796C654E616D650607636F6E74656E
- 7405416C69676E0706436C69656E740C4D617267696E732E4C65667405000000
- 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
- 617267696E732E52696768740500000000000000F003400E4D617267696E732E
- 426F74746F6D05000000000000008000400A53697A652E576964746805000000
- 000000008805400B53697A652E4865696768740500000000000000A803401453
- 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
- 6F757400095374796C654E616D6506106D656E756261726974656D7374796C65
- 05416C69676E070643656E7465720C4D617267696E732E4C6566740500000000
- 00000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D61
- 7267696E732E5269676874050000000000000080FF3F0E4D617267696E732E42
- 6F74746F6D050000000000000080FF3F0A53697A652E57696474680500000000
- 0000009205400B53697A652E4865696768740500000000000000D00340145369
- 7A652E506C6174666F726D44656661756C74080756697369626C650808546162
- 4F726465720225000A5452656374616E676C650005416C69676E0708436F6E74
- 656E74730A46696C6C2E436F6C6F720709784646324138324532074869745465
- 737408074F70616369747905000000000017B7D1F13F0A53697A652E57696474
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6507585261646975730500000000000000C00040075952616469757305000000
+ 00000000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650614436F6C6F72416E696D6174696F6E315374796C6508447572617469
+ 6F6E050000000000CDCCCCFB3F07496E7665727365090C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464633
+ 30333033300953746F7056616C75650709784646343034303430075472696767
+ 6572062049734D6F7573654F7665723D747275653B4973466F63757365643D66
+ 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
+ 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
+ 696F6E325374796C65084475726174696F6E050000000000CDCCCCFB3F0C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463430343034300953746F7056616C756507097846463137353739
+ 430754726967676572061F4973466F63757365643D747275653B49734D6F7573
+ 654F7665723D7472756500000007544C61796F757400095374796C654E616D65
+ 06074C61796F75743105416C69676E070643656E7465720C4D617267696E732E
+ 4C656674050000000000000080FF3F0A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080005545061746800095374796C65
+ 4E616D650605506174683105416C69676E0706436C69656E7409446174612E50
+ 6174680A3400000004000000000000000000C8420000C8420100000000009643
+ 0000C842010000000000484300009643030000000000C8420000C8420A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080A53697A652E
+ 57696474680500000000000000A002400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E650000000000000C5442727573684F626A65
+ 637400095374796C654E616D65060973656C656374696F6E0B42727573682E43
+ 6F6C6F720709783936324138324532000007544C61796F757400095374796C65
+ 4E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D617267
+ 696E732E4C65667405000000000000008000400B4D617267696E732E546F7005
+ 000000000000008000400D4D617267696E732E52696768740500000000000000
+ F003400E4D617267696E732E426F74746F6D05000000000000008000400A5369
+ 7A652E576964746805000000000000008805400B53697A652E48656967687405
+ 00000000000000A803401453697A652E506C6174666F726D44656661756C7408
+ 0000005450463007544C61796F757400095374796C654E616D6506106D656E75
+ 6261726974656D7374796C6505416C69676E070643656E7465720C4D61726769
+ 6E732E4C656674050000000000000080FF3F0B4D617267696E732E546F700500
+ 00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
+ FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A
+ 652E576964746805000000000000009205400B53697A652E4865696768740500
+ 000000000000D003401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508085461624F726465720225000A5452656374616E676C6500
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 324138324532074869745465737408074F70616369747905000000000017B7D1
+ F13F0A53697A652E576964746805000000000000009205400B53697A652E4865
+ 696768740500000000000000D003401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F617441
+ 6E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C5072
+ 6F70657274794E616D6506074F7061636974790A537461727456616C75650500
+ 0000000000000000000953746F7056616C7565050000000000000080FF3F0754
+ 726967676572060F497353656C65637465643D747275650E5472696767657249
+ 6E76657273650610497353656C65637465643D66616C73650000000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138
+ 324532074869745465737408074F70616369747905000000000000000000000A
+ 53697A652E576964746805000000000000009205400B53697A652E4865696768
+ 740500000000000000D003401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D
+ 6174696F6E00084475726174696F6E05000000000018B7D1F23F07496E766572
+ 7365090C50726F70657274794E616D6506074F7061636974790A537461727456
+ 616C756505000000000000000000000953746F7056616C756505000000000000
+ 0080FF3F0754726967676572061049734D6F7573654F7665723D747275650E54
+ 726967676572496E7665727365061149734D6F7573654F7665723D66616C7365
+ 00000007544C61796F757400095374796C654E616D650605676C79706805416C
+ 69676E07044C6566740A53697A652E57696474680500000000000000C803400B
+ 53697A652E4865696768740500000000000000D003401453697A652E506C6174
+ 666F726D44656661756C74080007544C61796F757400095374796C654E616D65
+ 0609636865636B6D61726B05416C69676E0708436F6E74656E7473074F706163
+ 6974790500000000006F1283F53F0A53697A652E576964746805000000000000
+ 00C803400B53697A652E4865696768740500000000000000D003401453697A65
+ 2E506C6174666F726D44656661756C7408000554506174680005416C69676E07
+ 0643656E74657209446174612E506174680A58000000070000000000000056D9
+ 524391AE2C43010000009276664365021643010000009F3983432B7C3C430100
+ 00009E9AA64382D2B442010000006F1CB04375A4D1420100000026DF8243263F
+ 67430300000056D9524391AE2C430A46696C6C2E436F6C6F720708636C615768
+ 6974650748697454657374080A53697A652E57696474680500000000000000B0
+ 02400B53697A652E4865696768740500000000000000B002401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 6500000F54466C6F6174416E696D6174696F6E00084475726174696F6E050000
+ 000000CDCCCCFB3F0C50726F70657274794E616D6506074F7061636974790A53
+ 7461727456616C756505000000000000000000000953746F7056616C75650500
+ 00000000000080FF3F0754726967676572060E4973436865636B65643D747275
+ 650E54726967676572496E7665727365060F4973436865636B65643D66616C73
+ 650000000654476C79706800095374796C654E616D65060A676C797068737479
+ 6C650C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F7005000000000000008000400D4D617267696E732E526967687405
+ 00000000000000C000400E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F05416C69676E070552696768740A506F736974696F6E2E5805000000
+ 00000000C001400A506F736974696F6E2E5905000000000000008000400A5369
+ 7A652E576964746805000000000000008003400B53697A652E48656967687405
+ 00000000000000B803401453697A652E506C6174666F726D44656661756C7408
+ 00000654496D61676500095374796C654E616D6506066269746D61700E4D756C
+ 74695265734269746D61700E01000005416C69676E0708436F6E74656E74730C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A53697A652E57696474680500000000000000A803400B53697A652E486569
+ 6768740500000000000000B003401453697A652E506C6174666F726D44656661
+ 756C740800000005545465787400095374796C654E616D650604746578740541
+ 6C69676E07044C656674064C6F636B6564090748697454657374080C4D617267
+ 696E732E4C65667405000000000000008002400D4D617267696E732E52696768
+ 7405000000000000008002400A506F736974696F6E2E58050000000000000084
+ 04400A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000000000D003401453697A652E506C6174666F726D446566
+ 61756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 615768697465165465787453657474696E67732E486F727A416C69676E07074C
+ 656164696E67000005545465787400095374796C654E616D65060873686F7274
+ 63757405416C69676E07055269676874064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C6566740500000000000000C002400D4D617267696E
+ 732E52696768740500000000000000C001400A506F736974696F6E2E58050000
+ 0000000000C000C00A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000D003401453697A652E506C617466
+ 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
+ 6F720708636C615768697465165465787453657474696E67732E486F727A416C
+ 69676E07074C656164696E67000007544C61796F757400095374796C654E616D
+ 6506077375626D61726B05416C69676E070552696768740A506F736974696F6E
+ 2E580500000000000000D404400A53697A652E57696474680500000000000000
+ A003400B53697A652E4865696768740500000000000000D003401453697A652E
+ 506C6174666F726D44656661756C7408000554506174680005416C69676E0706
+ 43656E74657209446174612E506174680A340000000400000000000000000000
+ 000000000001000000000000000000803F010000000000803F0000003F030000
+ 0000000000000000000A46696C6C2E436F6C6F720708636C615768697465064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 0000E001400B53697A652E48656967687405000000000000008002401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6500000000545046300A5452656374616E676C6500095374796C654E61
+ 6D65060C6D656E756261727374796C6505416C69676E070643656E7465720C43
+ 6C69704368696C6472656E090946696C6C2E4B696E6407044E6F6E6507486974
+ 54657374080A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65075669736962
+ 6C650807585261646975730500000000000000C0004007595261646975730500
+ 000000000000C00040000A5452656374616E676C650005416C69676E0706436C
+ 69656E740A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FFBF0B4D617267
+ 696E732E546F70050000000000000080FFBF0D4D617267696E732E5269676874
+ 050000000000000080FFBF0A53697A652E57696474680500000000000000D004
+ 400B53697A652E4865696768740500000000000000CC04401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 31353135313507585261646975730500000000000000C0004007595261646975
+ 730500000000000000C00040000007544C61796F757400095374796C654E616D
+ 650607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E73
+ 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
+ 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
+ 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000C004400B53697A652E48656967687405000000
+ 00000000C004401453697A652E506C6174666F726D44656661756C7408000000
+ 5450463007544C61796F757400095374796C654E616D65060D6D656E75697465
+ 6D7374796C6505416C69676E070643656E7465720C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
6805000000000000009205400B53697A652E4865696768740500000000000000
- D003401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
- 2E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00084475
- 726174696F6E05000000000018B7D1F23F0C50726F70657274794E616D650607
- 4F7061636974790A537461727456616C75650500000000000000000000095374
- 6F7056616C7565050000000000000080FF3F0754726967676572060F49735365
- 6C65637465643D747275650E54726967676572496E7665727365061049735365
- 6C65637465643D66616C73650000000A5452656374616E676C6500095374796C
- 654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E74
- 730A46696C6C2E436F6C6F720709784646324138324532074869745465737408
- 074F70616369747905000000000000000000000A53697A652E57696474680500
- 0000000000009205400B53697A652E4865696768740500000000000000D00340
- 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
- 6E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00084475726174
- 696F6E05000000000018B7D1F23F07496E7665727365090C50726F7065727479
+ D003401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508085461624F726465720226000A5452656374616E676C650005416C69676E
+ 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646324138324532
+ 074869745465737408074F70616369747905000000000017B7D1F13F0A53697A
+ 652E576964746805000000000000009205400B53697A652E4865696768740500
+ 000000000000D003401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D617469
+ 6F6E00084475726174696F6E05000000000018B7D1F23F0C50726F7065727479
4E616D6506074F7061636974790A537461727456616C75650500000000000000
0000000953746F7056616C7565050000000000000080FF3F0754726967676572
- 061049734D6F7573654F7665723D747275650E54726967676572496E76657273
- 65061149734D6F7573654F7665723D66616C736500000007544C61796F757400
- 095374796C654E616D650605676C79706805416C69676E07044C6566740A5369
- 7A652E57696474680500000000000000C803400B53697A652E48656967687405
- 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
- 0007544C61796F757400095374796C654E616D650609636865636B6D61726B05
- 416C69676E0708436F6E74656E7473074F7061636974790500000000006F1283
- F53F0A53697A652E57696474680500000000000000C803400B53697A652E4865
- 696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C7408000554506174680005416C69676E070643656E7465720944617461
- 2E506174680A58000000070000000000000056D9524391AE2C43010000009276
- 664365021643010000009F3983432B7C3C43010000009E9AA64382D2B4420100
- 00006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE
- 2C430A46696C6C2E436F6C6F720708636C615768697465074869745465737408
- 0A53697A652E57696474680500000000000000B002400B53697A652E48656967
- 68740500000000000000B002401453697A652E506C6174666F726D4465666175
- 6C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E
- 696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F
- 70657274794E616D6506074F7061636974790A537461727456616C7565050000
- 00000000000000000953746F7056616C7565050000000000000080FF3F075472
- 6967676572060E4973436865636B65643D747275650E54726967676572496E76
- 65727365060F4973436865636B65643D66616C73650000000654476C79706800
- 095374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C
- 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
- 00008000400D4D617267696E732E52696768740500000000000000C000400E4D
- 617267696E732E426F74746F6D050000000000000080FF3F05416C69676E0705
- 52696768740A506F736974696F6E2E580500000000000000C001400A506F7369
- 74696F6E2E5905000000000000008000400A53697A652E576964746805000000
- 000000008003400B53697A652E4865696768740500000000000000B803401453
- 697A652E506C6174666F726D44656661756C740800000654496D616765000953
- 74796C654E616D6506066269746D61700E4D756C74695265734269746D61700E
- 01000005416C69676E0708436F6E74656E74730C4D617267696E732E4C656674
- 05000000000000008000400B4D617267696E732E546F70050000000000000080
- 00400D4D617267696E732E526967687405000000000000008000400E4D617267
- 696E732E426F74746F6D05000000000000008000400A53697A652E5769647468
- 0500000000000000A803400B53697A652E4865696768740500000000000000B0
- 03401453697A652E506C6174666F726D44656661756C74080000000554546578
- 7400095374796C654E616D6506047465787405416C69676E07044C656674064C
- 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
- 000000008002400D4D617267696E732E52696768740500000000000000800240
- 0A506F736974696F6E2E5805000000000000008404400A53697A652E57696474
- 680500000000000000C804400B53697A652E4865696768740500000000000000
- D003401453697A652E506C6174666F726D44656661756C740816546578745365
- 7474696E67732E466F6E74436F6C6F720708636C615768697465165465787453
- 657474696E67732E486F727A416C69676E07074C656164696E67000005545465
- 787400095374796C654E616D65060873686F727463757405416C69676E070552
- 69676874064C6F636B6564090748697454657374080C4D617267696E732E4C65
- 66740500000000000000C002400D4D617267696E732E52696768740500000000
- 000000C001400A506F736974696F6E2E580500000000000000C000C00A53697A
- 652E57696474680500000000000000C804400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C740816
- 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
- 165465787453657474696E67732E486F727A416C69676E07074C656164696E67
- 000007544C61796F757400095374796C654E616D6506077375626D61726B0541
- 6C69676E070552696768740A506F736974696F6E2E580500000000000000D404
- 400A53697A652E57696474680500000000000000A003400B53697A652E486569
- 6768740500000000000000D003401453697A652E506C6174666F726D44656661
- 756C7408000554506174680005416C69676E070643656E74657209446174612E
- 506174680A340000000400000000000000000000000000000001000000000000
- 000000803F010000000000803F0000003F0300000000000000000000000A4669
- 6C6C2E436F6C6F720708636C615768697465064C6F636B656409074869745465
- 7374080A53697A652E57696474680500000000000000E001400B53697A652E48
- 656967687405000000000000008002401453697A652E506C6174666F726D4465
- 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
- 0A5452656374616E676C6500095374796C654E616D65060C6D656E7562617273
- 74796C6505416C69676E070643656E7465720C436C69704368696C6472656E09
- 0946696C6C2E4B696E6407044E6F6E650748697454657374080A53697A652E57
- 696474680500000000000000C804400B53697A652E4865696768740500000000
- 000000C804401453697A652E506C6174666F726D44656661756C74080B537472
- 6F6B652E4B696E6407044E6F6E650756697369626C6508075852616469757305
- 00000000000000C0004007595261646975730500000000000000C00040000A54
- 52656374616E676C650005416C69676E0706436C69656E740A46696C6C2E436F
- 6C6F7207097846463230323032300748697454657374080C4D617267696E732E
- 4C656674050000000000000080FFBF0B4D617267696E732E546F700500000000
- 00000080FFBF0D4D617267696E732E5269676874050000000000000080FFBF0A
- 53697A652E57696474680500000000000000D004400B53697A652E4865696768
- 740500000000000000CC04401453697A652E506C6174666F726D44656661756C
+ 060F497353656C65637465643D747275650E54726967676572496E7665727365
+ 0610497353656C65637465643D66616C73650000000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646324138324532074869
+ 745465737408074F70616369747905000000000000000000000A53697A652E57
+ 6964746805000000000000009205400B53697A652E4865696768740500000000
+ 000000D003401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00
+ 084475726174696F6E05000000000018B7D1F23F07496E7665727365090C5072
+ 6F70657274794E616D6506074F7061636974790A537461727456616C75650500
+ 0000000000000000000953746F7056616C7565050000000000000080FF3F0754
+ 726967676572061049734D6F7573654F7665723D747275650E54726967676572
+ 496E7665727365061149734D6F7573654F7665723D66616C736500000007544C
+ 61796F757400095374796C654E616D650605676C79706805416C69676E07044C
+ 6566740A53697A652E57696474680500000000000000C803400B53697A652E48
+ 65696768740500000000000000D003401453697A652E506C6174666F726D4465
+ 6661756C74080007544C61796F757400095374796C654E616D65060963686563
+ 6B6D61726B05416C69676E0708436F6E74656E7473074F706163697479050000
+ 0000006F1283F53F0A53697A652E57696474680500000000000000C803400B53
+ 697A652E4865696768740500000000000000D003401453697A652E506C617466
+ 6F726D44656661756C7408000554506174680005416C69676E070643656E7465
+ 7209446174612E506174680A58000000070000000000000056D9524391AE2C43
+ 010000009276664365021643010000009F3983432B7C3C43010000009E9AA643
+ 82D2B442010000006F1CB04375A4D1420100000026DF8243263F674303000000
+ 56D9524391AE2C430A46696C6C2E436F6C6F720708636C615768697465074869
+ 7454657374080A53697A652E57696474680500000000000000B002400B53697A
+ 652E4865696768740500000000000000B002401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000F5446
+ 6C6F6174416E696D6174696F6E00084475726174696F6E050000000000CDCCCC
+ FB3F0C50726F70657274794E616D6506074F7061636974790A53746172745661
+ 6C756505000000000000000000000953746F7056616C75650500000000000000
+ 80FF3F0754726967676572060E4973436865636B65643D747275650E54726967
+ 676572496E7665727365060F4973436865636B65643D66616C73650000000654
+ 476C79706800095374796C654E616D65060A676C7970687374796C650C4D6172
+ 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 00C000400E4D617267696E732E426F74746F6D050000000000000080FF3F0541
+ 6C69676E07044C6566740A506F736974696F6E2E58050000000000000080FF3F
+ 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
+ 6805000000000000008003400B53697A652E4865696768740500000000000000
+ B803401453697A652E506C6174666F726D44656661756C740800000654496D61
+ 676500095374796C654E616D6506066269746D61700E4D756C74695265734269
+ 746D61700E01000005416C69676E07044C6566740C4D617267696E732E4C6566
+ 7405000000000000008000400B4D617267696E732E546F700500000000000000
+ 8000400D4D617267696E732E526967687405000000000000008000400E4D6172
+ 67696E732E426F74746F6D05000000000000008000400A506F736974696F6E2E
+ 5805000000000000008000400A506F736974696F6E2E59050000000000000080
+ 00400A53697A652E57696474680500000000000000A803400B53697A652E4865
+ 696768740500000000000000B003401453697A652E506C6174666F726D446566
+ 61756C740800000005545465787400095374796C654E616D6506047465787405
+ 416C69676E07044C656674064C6F636B6564090748697454657374080C4D6172
+ 67696E732E4C65667405000000000000008002400D4D617267696E732E526967
+ 687405000000000000008002400A506F736974696F6E2E580500000000000000
+ 8404400A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000D003401453697A652E506C6174666F726D4465
+ 6661756C7408165465787453657474696E67732E466F6E74436F6C6F72070863
+ 6C615768697465165465787453657474696E67732E486F727A416C69676E0707
+ 4C656164696E67000005545465787400095374796C654E616D65060873686F72
+ 7463757405416C69676E07055269676874064C6F636B65640907486974546573
+ 74080C4D617267696E732E4C6566740500000000000000C002400D4D61726769
+ 6E732E52696768740500000000000000C001400A506F736974696F6E2E580500
+ 000000000000C000C00A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000D003401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C615768697465165465787453657474696E67732E486F727A41
+ 6C69676E07074C656164696E67000007544C61796F757400095374796C654E61
+ 6D6506077375626D61726B05416C69676E070552696768740A506F736974696F
+ 6E2E580500000000000000D404400A53697A652E576964746805000000000000
+ 00A003400B53697A652E4865696768740500000000000000D003401453697A65
+ 2E506C6174666F726D44656661756C7408000554506174680005416C69676E07
+ 0643656E74657209446174612E506174680A3400000004000000000000000000
+ 00000000000001000000000000000000803F010000000000803F0000003F0300
+ 000000000000000000000A46696C6C2E436F6C6F720708636C61576869746506
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 000000E001400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000000005450463007544C61796F757400095374796C654E616D65
+ 06126D656E75736570617261746F727374796C6505416C69676E070643656E74
+ 65720C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508085461624F7264657202270005544C69
+ 6E650005416C69676E0703546F70084C696E65547970650703546F700C4D6172
+ 67696E732E4C6566740500000000000000C000400B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 00C000400A506F736974696F6E2E580500000000000000C000400A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 000000B004400B53697A652E486569676874050000000000000080FF3F145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000000545046300A5452656374616E676C65000953
+ 74796C654E616D65060D6D656E75766965777374796C6505416C69676E070643
+ 656E7465720A46696C6C2E436F6C6F7207097846463230323032300A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F7207097846463135313531350756697369626C650807
+ 585261646975730500000000000000C000400759526164697573050000000000
+ 0000C00040000A5452656374616E676C650005416C69676E0706436C69656E74
+ 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
74080C5374726F6B652E436F6C6F720709784646313531353135075852616469
75730500000000000000C0004007595261646975730500000000000000C00040
- 000007544C61796F757400095374796C654E616D650607636F6E74656E740541
- 6C69676E0706436C69656E740C4D617267696E732E4C65667405000000000000
- 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
- 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
- 746F6D050000000000000080FF3F0A53697A652E576964746805000000000000
- 00C004400B53697A652E4865696768740500000000000000C004401453697A65
- 2E506C6174666F726D44656661756C74080000005450463007544C61796F7574
- 00095374796C654E616D65060D6D656E756974656D7374796C6505416C69676E
- 070643656E7465720C4D617267696E732E4C656674050000000000000080FF3F
- 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
- 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
- 0000000000000080FF3F0A53697A652E57696474680500000000000000920540
- 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
- 74666F726D44656661756C74080756697369626C6508085461624F7264657202
- 26000A5452656374616E676C650005416C69676E0708436F6E74656E74730A46
- 696C6C2E436F6C6F720709784646324138324532074869745465737408074F70
- 616369747905000000000017B7D1F13F0A53697A652E57696474680500000000
- 0000009205400B53697A652E4865696768740500000000000000D00340145369
- 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
- 044E6F6E65000F54466C6F6174416E696D6174696F6E00084475726174696F6E
- 05000000000018B7D1F23F0C50726F70657274794E616D6506074F7061636974
- 790A537461727456616C756505000000000000000000000953746F7056616C75
- 65050000000000000080FF3F0754726967676572060F497353656C6563746564
- 3D747275650E54726967676572496E76657273650610497353656C6563746564
- 3D66616C73650000000A5452656374616E676C6500095374796C654E616D6506
- 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
- 2E436F6C6F720709784646324138324532074869745465737408074F70616369
- 747905000000000000000000000A53697A652E57696474680500000000000000
- 9205400B53697A652E4865696768740500000000000000D003401453697A652E
- 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
- 6E65000F54466C6F6174416E696D6174696F6E00084475726174696F6E050000
- 00000018B7D1F23F07496E7665727365090C50726F70657274794E616D650607
- 4F7061636974790A537461727456616C75650500000000000000000000095374
- 6F7056616C7565050000000000000080FF3F0754726967676572061049734D6F
- 7573654F7665723D747275650E54726967676572496E7665727365061149734D
- 6F7573654F7665723D66616C736500000007544C61796F757400095374796C65
- 4E616D650605676C79706805416C69676E07044C6566740A53697A652E576964
- 74680500000000000000C803400B53697A652E48656967687405000000000000
- 00D003401453697A652E506C6174666F726D44656661756C74080007544C6179
- 6F757400095374796C654E616D650609636865636B6D61726B05416C69676E07
- 08436F6E74656E7473074F7061636974790500000000006F1283F53F0A53697A
- 652E57696474680500000000000000C803400B53697A652E4865696768740500
- 000000000000D003401453697A652E506C6174666F726D44656661756C740800
- 0554506174680005416C69676E070643656E74657209446174612E506174680A
- 58000000070000000000000056D9524391AE2C43010000009276664365021643
- 010000009F3983432B7C3C43010000009E9AA64382D2B442010000006F1CB043
- 75A4D1420100000026DF8243263F67430300000056D9524391AE2C430A46696C
- 6C2E436F6C6F720708636C6157686974650748697454657374080A53697A652E
- 57696474680500000000000000B002400B53697A652E48656967687405000000
- 00000000B002401453697A652E506C6174666F726D44656661756C74080B5374
- 726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E696D6174696F
- 6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E
- 616D6506074F7061636974790A537461727456616C7565050000000000000000
- 00000953746F7056616C7565050000000000000080FF3F075472696767657206
- 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
- 4973436865636B65643D66616C73650000000654476C79706800095374796C65
- 4E616D65060A676C7970687374796C650C4D617267696E732E4C656674050000
- 000000000080FF3F0B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E52696768740500000000000000C000400E4D617267696E73
- 2E426F74746F6D050000000000000080FF3F05416C69676E07044C6566740A50
- 6F736974696F6E2E58050000000000000080FF3F0A506F736974696F6E2E5905
- 000000000000008000400A53697A652E57696474680500000000000000800340
- 0B53697A652E4865696768740500000000000000B803401453697A652E506C61
- 74666F726D44656661756C740800000654496D61676500095374796C654E616D
- 6506066269746D61700E4D756C74695265734269746D61700E01000005416C69
- 676E07044C6566740C4D617267696E732E4C6566740500000000000000800040
- 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
- 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
- 000000000000008000400A506F736974696F6E2E580500000000000000B00340
- 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
- 680500000000000000A803400B53697A652E4865696768740500000000000000
- B003401453697A652E506C6174666F726D44656661756C740800000005545465
- 787400095374796C654E616D6506047465787405416C69676E07044C65667406
- 4C6F636B6564090748697454657374080C4D617267696E732E4C656674050000
- 00000000008002400D4D617267696E732E526967687405000000000000008002
- 400A506F736974696F6E2E5805000000000000008404400A53697A652E576964
- 74680500000000000000C804400B53697A652E48656967687405000000000000
- 00D003401453697A652E506C6174666F726D44656661756C7408165465787453
- 657474696E67732E466F6E74436F6C6F720708636C6157686974651654657874
- 53657474696E67732E486F727A416C69676E07074C656164696E670000055454
- 65787400095374796C654E616D65060873686F727463757405416C69676E0705
- 5269676874064C6F636B6564090748697454657374080C4D617267696E732E4C
- 6566740500000000000000C002400D4D617267696E732E526967687405000000
- 00000000C001400A506F736974696F6E2E580500000000000000C000C00A5369
- 7A652E57696474680500000000000000C804400B53697A652E48656967687405
- 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
- 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
- 65165465787453657474696E67732E486F727A416C69676E07074C656164696E
- 67000007544C61796F757400095374796C654E616D6506077375626D61726B05
- 416C69676E070552696768740A506F736974696F6E2E580500000000000000D4
- 04400A53697A652E57696474680500000000000000A003400B53697A652E4865
- 696768740500000000000000D003401453697A652E506C6174666F726D446566
- 61756C7408000554506174680005416C69676E070643656E7465720944617461
- 2E506174680A3400000004000000000000000000000000000000010000000000
- 00000000803F010000000000803F0000003F0300000000000000000000000A46
- 696C6C2E436F6C6F720708636C615768697465064C6F636B6564090748697454
- 657374080A53697A652E57696474680500000000000000E001400B53697A652E
- 48656967687405000000000000008002401453697A652E506C6174666F726D44
- 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046
- 3007544C61796F757400095374796C654E616D6506126D656E75736570617261
- 746F727374796C6505416C69676E070643656E7465720C4D617267696E732E4C
- 656674050000000000000080FF3F0B4D617267696E732E546F70050000000000
- 000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D
- 617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769
- 6474680500000000000000C804400B53697A652E486569676874050000000000
- 0000C804401453697A652E506C6174666F726D44656661756C74080756697369
- 626C6508085461624F7264657202270005544C696E650005416C69676E070354
- 6F70084C696E65547970650703546F700C4D617267696E732E4C656674050000
- 0000000000C000400B4D617267696E732E546F7005000000000000008000400D
- 4D617267696E732E52696768740500000000000000C000400A506F736974696F
- 6E2E580500000000000000C000400A506F736974696F6E2E5905000000000000
- 008000400A53697A652E57696474680500000000000000B004400B53697A652E
- 486569676874050000000000000080FF3F1453697A652E506C6174666F726D44
- 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
- 0000545046300A5452656374616E676C6500095374796C654E616D65060D6D65
- 6E75766965777374796C6505416C69676E070643656E7465720A46696C6C2E43
- 6F6C6F7207097846463230323032300A53697A652E5769647468050000000000
+ 000D54536861646F77456666656374000844697374616E636505000000000000
+ 00C0004009446972656374696F6E0500000000000000B4054008536F66746E65
+ 7373050000000000000080FE3F074F706163697479050000000000000080FE3F
+ 0B536861646F77436F6C6F720708636C61426C61636B00000007544C61796F75
+ 7400095374796C654E616D650607636F6E74656E7405416C69676E0706436C69
+ 656E740C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000C004400B53697A65
+ 2E4865696768740500000000000000C004401453697A652E506C6174666F726D
+ 44656661756C74080000005450463007544C61796F757400095374796C654E61
+ 6D65061B7472656576696577657870616E646572627574746F6E7374796C6505
+ 416C69676E070643656E7465720B4D617267696E732E546F7005000000000000
+ 0080FF3F0A53697A652E57696474680500000000000000B003400B53697A652E
+ 4865696768740500000000000000B003401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508085461624F72646572023C0005545061
+ 746800095374796C654E616D650605506174683105416C69676E070643656E74
+ 657209446174612E506174680A3400000004000000000000000000C8420000C8
+ 4201000000000096430000C842010000000000484300009643030000000000C8
+ 420000C8420A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080D526F746174696F6E416E676C650500000000000000B405C00A53697A
+ 652E57696474680500000000000000A002400B53697A652E4865696768740500
+ 000000000000C001401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D617469
+ 6F6E00095374796C654E616D650614466C6F6174416E696D6174696F6E315374
+ 796C65084475726174696F6E05000000000000000000000D496E746572706F6C
+ 6174696F6E070843697263756C61720C50726F70657274794E616D65060D526F
+ 746174696F6E416E676C650A537461727456616C75650500000000000000B405
+ C00953746F7056616C756505000000000000000000000754726967676572060F
+ 4973457870616E6465643D747275650E54726967676572496E76657273650610
+ 4973457870616E6465643D66616C736500000000545046300A5452656374616E
+ 676C6500095374796C654E616D65061174726565766965776974656D7374796C
+ 6505416C69676E070643656E7465720946696C6C2E4B696E6407044E6F6E6507
+ 48697454657374080553696465730B06426F74746F6D000A53697A652E576964
+ 74680500000000000000AE05400B53697A652E48656967687405000000000000
+ 00A004401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F7207097846463135313531350B5374726F6B652E4A6F696E0705
+ 526F756E640756697369626C6508000C545370656564427574746F6E00095374
+ 796C654E616D650606627574746F6E05416C69676E07044C6566740A53697A65
+ 2E57696474680500000000000000A003400B53697A652E486569676874050000
+ 0000000000A004401453697A652E506C6174666F726D44656661756C74080B53
+ 74796C654C6F6F6B7570061B7472656576696577657870616E64657262757474
+ 6F6E7374796C65000007544C61796F75740005416C69676E0708436F6E74656E
+ 74730C4D617267696E732E4C6566740500000000000000A003400A53697A652E
+ 576964746805000000000000008605400B53697A652E48656967687405000000
+ 00000000A004401453697A652E506C6174666F726D44656661756C7408000954
+ 436865636B426F7800095374796C654E616D650605636865636B05416C69676E
+ 07044C6566740843616E466F637573081244697361626C65466F637573456666
+ 656374090A53697A652E57696474680500000000000000A003400B53697A652E
+ 4865696768740500000000000000A004401453697A652E506C6174666F726D44
+ 656661756C740800000654476C79706800095374796C654E616D65060A676C79
+ 70687374796C650C4D617267696E732E4C65667405000000000000008000400B
+ 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
+ 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
+ 00000000000080FF3F05416C69676E07044C6566740A506F736974696F6E2E58
+ 0500000000000000B003400A506F736974696F6E2E59050000000000000080FF
+ 3F0A53697A652E576964746805000000000000008003400B53697A652E486569
+ 67687405000000000000009804401453697A652E506C6174666F726D44656661
+ 756C7408000005545465787400095374796C654E616D6506047465787405416C
+ 69676E0706436C69656E74064C6F636B6564090748697454657374080A53697A
+ 652E57696474680500000000000000BC04400B53697A652E4865696768740500
+ 000000000000A004401453697A652E506C6174666F726D44656661756C740804
+ 54657874060454657874165465787453657474696E67732E466F6E74436F6C6F
+ 720708636C615768697465155465787453657474696E67732E576F7264577261
+ 7008165465787453657474696E67732E486F727A416C69676E07074C65616469
+ 6E670000000A5452656374616E676C650005416C69676E0708436F6E74656E74
+ 730946696C6C2E4B696E6407044E6F6E650748697454657374080E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0553696465730B044C656674
+ 000A53697A652E57696474680500000000000000AE05400B53697A652E486569
+ 67687405000000000000009C04401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464632413832453210537472
+ 6F6B652E546869636B6E65737305000000000000008000400000005450463007
+ 544C61796F757400095374796C654E616D65060D74726565766965777374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000E106400B53697A652E48656967687405000000000000808107401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508085461624F
+ 726465720241000C5442727573684F626A65637400095374796C654E616D6506
+ 18416C7465726E6174696E67526F774261636B67726F756E640B42727573682E
+ 436F6C6F72070978304646464646464600000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B65
+ 64090748697454657374080C50616464696E672E4C6566740500000000000000
+ 80FF3F0D50616464696E672E5269676874050000000000000080FF3F0A53697A
+ 652E57696474680500000000000000E106400B53697A652E4865696768740500
+ 0000000000808107401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F7207097846463135313531350007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E740C436C69704368696C6472656E090B4D617267696E732E546F7005000000
+ 0000000080FF3F0A53697A652E57696474680500000000000000CD06400B5369
+ 7A652E4865696768740500000000000000F006401453697A652E506C6174666F
+ 726D44656661756C7408000A5452656374616E676C6500095374796C654E616D
+ 65060973656C656374696F6E0A46696C6C2E436F6C6F72070978464632413832
+ 45320748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 07585261646975730500000000000000C0004007595261646975730500000000
+ 000000C0004000000A5452656374616E676C6500095374796C654E616D650610
+ 666F637573656473656C656374696F6E0A46696C6C2E436F6C6F720709784646
+ 3241383245320748697454657374080A53697A652E5769647468050000000000
0000C804400B53697A652E4865696768740500000000000000C804401453697A
- 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
- 097846463135313531350756697369626C650807585261646975730500000000
- 000000C0004007595261646975730500000000000000C00040000A5452656374
- 616E676C650005416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
- 097846463230323032300748697454657374080A53697A652E57696474680500
- 000000000000C804400B53697A652E4865696768740500000000000000C80440
- 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
- 6C6F72070978464631353135313507585261646975730500000000000000C000
- 4007595261646975730500000000000000C00040000D54536861646F77456666
- 656374000844697374616E63650500000000000000C000400944697265637469
- 6F6E0500000000000000B4054008536F66746E657373050000000000000080FE
- 3F074F706163697479050000000000000080FE3F0B536861646F77436F6C6F72
- 0708636C61426C61636B00000007544C61796F757400095374796C654E616D65
- 0607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E
- 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
- 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
- 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
- 696474680500000000000000C004400B53697A652E4865696768740500000000
- 000000C004401453697A652E506C6174666F726D44656661756C7408000000}
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E650B5374726F6B652E446173680703446F740758526164697573050000
+ 0000000000C0004007595261646975730500000000000000C000400000000A54
+ 5363726F6C6C42617200095374796C654E616D65060A767363726F6C6C626172
+ 05416C69676E070552696768740B536D616C6C4368616E676505000000000000
+ 000000000B4F7269656E746174696F6E0708566572746963616C0C4D61726769
+ 6E732E4C65667405000000000000008000400A506F736974696F6E2E58050000
+ 0000000000D006400A53697A652E576964746805000000000000008003400B53
+ 697A652E4865696768740500000000000000F106401453697A652E506C617466
+ 6F726D44656661756C740800000A545363726F6C6C42617200095374796C654E
+ 616D65060A687363726F6C6C62617205416C69676E0706426F74746F6D0B536D
+ 616C6C4368616E676505000000000000000000000B4F7269656E746174696F6E
+ 070A486F72697A6F6E74616C0B4D617267696E732E546F700500000000000000
+ 8000400A506F736974696F6E2E58050000000000000080FF3F0A506F73697469
+ 6F6E2E590500000000000000F306400A53697A652E5769647468050000000000
+ 0000DF06400B53697A652E48656967687405000000000000008003401453697A
+ 652E506C6174666F726D44656661756C740800000F54536D616C6C5363726F6C
+ 6C42617200095374796C654E616D65060F76736D616C6C7363726F6C6C626172
+ 05416C69676E070552696768740B536D616C6C4368616E676505000000000000
+ 000000000B4F7269656E746174696F6E0708566572746963616C0C4D61726769
+ 6E732E4C65667405000000000000008000400A506F736974696F6E2E58050000
+ 0000000000C605400A506F736974696F6E2E5905000000000000008000400A53
+ 697A652E576964746805000000000000008002400B53697A652E486569676874
+ 05000000000000008002401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C650800000F54536D616C6C5363726F6C6C42617200095374
+ 796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706
+ 426F74746F6D0B536D616C6C4368616E676505000000000000000000000B4F72
+ 69656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F
+ 7005000000000000008000400A506F736974696F6E2E58050000000000000080
+ 00400A506F736974696F6E2E590500000000000000E205400A53697A652E5769
+ 64746805000000000000009606400B53697A652E486569676874050000000000
+ 00008002401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000000005450463007544C61796F757400095374796C654E616D6506
+ 1670726F677265737362617266696E6973687374796C6505416C69676E070643
+ 656E7465720A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080756697369626C6508085461624F726465720240000A5452
+ 656374616E676C6500095374796C654E616D65060668747261636B05416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F72070978464631353135313507585261646975730500000000000000C00040
+ 07595261646975730500000000000000C00040000A5452656374616E676C6500
+ 095374796C654E616D65060A68696E64696361746F7205416C69676E07044C65
+ 66740A46696C6C2E436F6C6F720709784646324345323434064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A506F736974696F6E2E58050000000000000080FF
+ 3F0A506F736974696F6E2E59050000000000000080FF3F0A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000099
+ 99D904401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6507585261646975730500000000000000C0004007
+ 595261646975730500000000000000C000400000000A5452656374616E676C65
+ 00095374796C654E616D65060676747261636B05416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
+ 090748697454657374080A53697A652E57696474680500000000003333850540
+ 0B53697A652E4865696768740500000000009999E104401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 353135313507585261646975730500000000000000C000400759526164697573
+ 0500000000000000C00040000A5452656374616E676C6500095374796C654E61
+ 6D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C
+ 6C2E436F6C6F720709784646324345323434064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
+ 74696F6E2E5905000000000099998904400A53697A652E576964746805000000
+ 000033338105400B53697A652E4865696768740500000000000000A803401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E6507585261646975730500000000000000C0004007595261646975
+ 730500000000000000C00040000000005450463007544C61796F757400095374
+ 796C654E616D65061A70726F67726573736261726D696E6966696E6973687374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 000033338505400B53697A652E4865696768740500000000009999E104401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508085461
+ 624F72646572024B000A5452656374616E676C6500095374796C654E616D6506
+ 0668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646343034303430064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6507585261646975730500000000
+ 00000080004007595261646975730500000000000000800040000A5452656374
+ 616E676C6500095374796C654E616D65060A68696E64696361746F7205416C69
+ 676E07044C6566740A46696C6C2E436F6C6F720709784646324345323434064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000009999E104401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6507585261646975730500000000000000800040075952616469757305
+ 000000000000008000400000000A5452656374616E676C6500095374796C654E
+ 616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C6C
+ 2E436F6C6F720709784646343034303430064C6F636B65640907486974546573
+ 74080A53697A652E576964746805000000000033338505400B53697A652E4865
+ 696768740500000000009999E104401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
+ 0000000000000080004007595261646975730500000000000000800040000A54
+ 52656374616E676C6500095374796C654E616D65060A76696E64696361746F72
+ 05416C69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846463243
+ 45323434064C6F636B6564090748697454657374080A506F736974696F6E2E59
+ 05000000000099998D04400A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000000000A803401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0758526164697573050000000000000080004007595261646975730500000000
+ 000000800040000000005450463007544C61796F757400095374796C654E616D
+ 6506136172726F77646F776E746F6F6C627574746F6E05416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508085461624F726465720201000A545265
+ 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
+ 6C69676E0706436C69656E740C436C69704368696C6472656E090A436C697050
+ 6172656E740907436F726E6572730B07546F704C6566740A426F74746F6D4C65
+ 6674000A46696C6C2E436F6C6F72070978303032303230323007486974546573
+ 74080A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65075852616469757305
+ 00000000000000C0004007595261646975730500000000000000C00040000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000CD
+ CCCCFB3F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097830303230323032300953746F7056616C7565070978
+ 46463430343034300754726967676572063049734D6F7573654F7665723D7472
+ 75653B4973507265737365643D66616C73653B4973466F63757365643D66616C
+ 73650E54726967676572496E7665727365063149734D6F7573654F7665723D66
+ 616C73653B4973507265737365643D66616C73653B4973466F63757365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F
+ 6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463430343034300953746F70
+ 56616C756507097846463137353739430754726967676572062F497350726573
+ 7365643D747275653B49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E33084475
+ 726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646324138324532
+ 0953746F7056616C756507097846463137353739430754726967676572062E49
+ 73507265737365643D747275653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D747275650E54726967676572496E7665727365062F4973
+ 507265737365643D66616C73653B49734D6F7573654F7665723D747275653B49
+ 73466F63757365643D7472756500000005545061746800095374796C654E616D
+ 6506047061746805416C69676E070643656E74657209446174612E506174680A
+ 3400000004000000000000000000C8420000C84201000000000096430000C842
+ 010000000000484300009643030000000000C8420000C8420A46696C6C2E436F
+ 6C6F720708636C6157686974650748697454657374080A53697A652E57696474
+ 680500000000000000A002400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000005545465787400095374796C654E616D650604
+ 7465787405416C69676E0706436C69656E740748697454657374080A53697A65
+ 2E57696474680500000000000000C805400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080454
+ 657874060454657874165465787453657474696E67732E466F6E74436F6C6F72
+ 0708636C6157686974650756697369626C65080000005450463007544C61796F
+ 757400095374796C654E616D65060D706F707570626F787374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C7408085461624F726465720231000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 300748697454657374080A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
+ 585261646975730500000000000000C000400759526164697573050000000000
+ 0000C00040000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E
+ 050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463230323032300953746F7056
+ 616C756507097846463430343034300754726967676572062049734D6F757365
+ 4F7665723D747275653B4973507265737365643D66616C73650E547269676765
+ 72496E7665727365062149734D6F7573654F7665723D66616C73653B49735072
+ 65737365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650614436F6C6F72416E696D6174696F6E325374796C650844
+ 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C7565070978464632413832453207547269676765720620
+ 49734D6F7573654F7665723D747275653B4973507265737365643D747275653B
+ 0E54726967676572496E7665727365062049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C736500000007544C61796F75740005416C
+ 69676E070846697452696768740A506F736974696F6E2E580500000000000000
+ 9605400A53697A652E57696474680500000000000000C803400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C7408000554506174680005416C69676E070643656E74657209446174
+ 612E506174680A400000000500000000000000000000000000803F0100000000
+ 00803F0000803F010000000000003F0000000001000000000000000000803F03
+ 00000000000000000000000A46696C6C2E436F6C6F720708636C615768697465
+ 0748697454657374080B4D617267696E732E546F700500000000000000E001C0
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650000055450617468000541
+ 6C69676E070643656E74657209446174612E506174680A340000000400000000
+ 0000000000000000000000010000000000803F00000000010000000000003F00
+ 00803F0300000000000000000000000A46696C6C2E436F6C6F720708636C6157
+ 686974650748697454657374080B4D617267696E732E546F7005000000000000
+ 00C001400A53697A652E576964746805000000000000008002400B53697A652E
+ 48656967687405000000000000008001401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000005545465
+ 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
+ 740748697454657374080C4D617267696E732E4C656674050000000000000080
+ FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E
+ 732E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F
+ 6D050000000000000080FF3F0A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000B803401453697A652E50
+ 6C6174666F726D44656661756C74080454657874060454657874165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C615768697465000000}
end>
- Left = 8
- Top = 368
+ Left = 64
+ Top = 96
end
object mainLayout: TLayout
Align = Contents
- Size.Width = 701.000000000000000000
- Size.Height = 561.000000000000000000
+ Size.Width = 1280.000000000000000000
+ Size.Height = 640.000000000000000000
Size.PlatformDefault = False
TabOrder = 43
object bottomButtonsLayout: TLayout
Align = Bottom
- Position.Y = 515.000000000000000000
- Size.Width = 701.000000000000000000
- Size.Height = 46.000000000000000000
+ Position.Y = 592.000000000000000000
+ Size.Width = 1280.000000000000000000
+ Size.Height = 48.000000000000000000
Size.PlatformDefault = False
object launchButton: TButton
Align = Center
- ImageIndex = 0
- Size.Width = 127.000000000000000000
+ Size.Width = 128.000000000000000000
Size.Height = 30.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'launchButtonStyle1'
@@ -16981,19 +18526,32 @@ object MainForm: TMainForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Position.X = 102.000000000000000000
+ Position.X = 103.000000000000000000
Position.Y = 5.000000000000000000
Size.Width = 20.000000000000000000
Size.Height = 20.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
+ object launchPopupBox: TPopupBox
+ Align = Left
+ Enabled = False
+ Items.Strings = (
+ 'Default'
+ 'Tiled'
+ 'All at once')
+ Size.Width = 24.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ Visible = False
+ end
end
object settingsButton: TButton
Align = Center
StyledSettings = [Family, FontColor]
Hint = 'Settings'
- Margins.Right = 175.000000000000000000
+ Margins.Right = 176.000000000000000000
Size.Width = 30.000000000000000000
Size.Height = 30.000000000000000000
Size.PlatformDefault = False
@@ -17001,527 +18559,6 @@ object MainForm: TMainForm
ParentShowHint = False
ShowHint = False
OnClick = settingsButtonClick
- object Image1: TImage
- MultiResBitmap.Height = 512
- MultiResBitmap.Width = 512
- MultiResBitmap = <
- item
- Width = 512
- Height = 512
- PNG = {
- 89504E470D0A1A0A0000000D4948445200000200000002000806000000F478D4
- FA000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 3D8749444154785EED9D07B82C559546311025235144502483620E2862401447
- C43CA0605614C5808E39674505D3987514945141C608E68818C90828418248CE
- 599DFFEFAA96FBEE3BF7DEEEBE5D75D25ADFB7BE3A4D78AFBABAABCFAE13F65E
- 0600000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 00000000000000A04A6ED51E01A05F36926B37CDA2B9449ED534010000E070F9
- AF0A3C4A024082DCBA3D0240BF6CD11E4B67DBF6080089C1140040FF2C2BAF95
- B71DBC2A9F75E4454D13005281110080FED954D6D2F91B46010012840000A07F
- 6A19FE1F4200009020040000FD43000000D1210000E89F2DDB632D1000002408
- 010040FFD43602E0808705C70089410000D03FB50500ABC88D9B2600A4020100
- 40BF6C28DD21D606D3000089410000D02FB53DFD0F210000480C0200807ED9BC
- 3DD60601004062100000F4CB56EDB13608000012830000A05F6A1D01D84C2EDF
- 34012005080000FAA5B61C00439CFAB8D6F70E9024040000FDB1AADCA0695609
- D3000009410000D01FB53F0113000024040100407FD43AFF3F84000020210800
- 00FAA3F61180ADDB230024000100407FD49A0468C81DE56A4D130062430000D0
- 1FB507008669008044200000E88765E5A64DB36A08000012810000A01FDCF97B
- 2F7CED10000024020100403F30FCDF4000009008040000FD4000D04000009008
- 040000FD401ADC06EF02D8A86902404C080000FA8111805B6014002001080000
- FA8100E01608000012800000A07B3694AB344D1004000009400000D03D3CFD2F
- 0901004002100000744FED458066B3992427024064080000BA67ABF6080DCB4B
- 0701001011020080EE610A6069980600880C010040F710002C0D010040640800
- 00BA6555B941D3841910000044860000A05BC800188600002032040000DDC20E
- 80301B4B72230044840000A05B180108732BB94DD3048018100000740B01C0DC
- 300D0010110200806E610A606E08000022420000D01DCBCA4D9B260420000088
- 0801004077B8F327E5EDDC6CDD1E012002040000DD4102A0F9B9BD5CAF690240
- DF100000740701C0C2300D001009020080EEA008D0C210000044820000A03BD8
- 01B03004000091200000E80EA600168600002012040079F13EF946C9CAF2F4D9
- 5092EA76613C4D729BA60989B3BB3C5CDE6EF00A007AE303F25FADBF90CEA50E
- E9F27039FCBC707E992A499B15E5C7E4F0F3FAA9240800E889999DFFD02BE41E
- 12D2E44572F66786619F28214D3C4573A29CFD99110400F440A8F39FE9C1D235
- E7212D3E2A439F172EED5B24A4858B35BD505E27439F99250800E890853AFFA1
- 67CA074A48871FCAD067854B7B9884747082A62364E8B39A2D410040078CDAF9
- 0FBD49FA498A058269709E0C7D4EB8B4A749488387CA7365E8739A4B82008029
- 326EE73FD35FC93B4B8887A764429F0D86BD597AA119C4C385ABDE29FF21439F
- D1421204004C81C574FE43BD40702F0971B8AF0C7D2E38B7F79410073F30FC5A
- 863E97712408005804D3E8FC67FA65B9BA847E71F015FA3C706E9F21A17FF694
- 7E60087D26934810003001D3EEFC879E251F24A13FDE25439F05CEED0112FAC3
- 49AABE20439FC5622508001883AE3AFFA19E637DBB6481603F7C43863E079CDB
- A324F4C3BDE5E932F4394C4B82008011E8BAF39FE931725309DD728A0C5D7F9C
- DBBF49E816A77E7FA5BC51863E83694B1000300F7D76FE43AF94CF94D00D5E4D
- ED2D99A16B8FF3BBB6846E585F7E5F86AE7B971204000488D1F9CFF450B98684
- E9B2A50C5D6F5C58EF4187E9B3ABBC5086AE791F120400CC2076E73FF4AF7247
- 09D3C315D342D71A17763F09D3630579A0FCA70C5DEF3E25080010A974FE439D
- F8C309403C740D8BE73532749D71613F2D613A7824EA5819BACEB1240880AA49
- ADF39FE96FE4661216C71765E8FAE2C27A912A2C9EE7C96B64E81AC7962000AA
- 24E5CE7FE855F2D91226C78154E8DAE2C27A81AAABD0C164784DCFD764E8DAA6
- 24410054450E9DFF4CBF2ED794303EEEC442D71447731309E3F36079B60C5DD3
- 142508802AC8ADF31F7A8E6455F6786C2843D71247F7B11246C7C9BDDE2C9DEC
- 2B743D539620008A26D7CE7FA81708BE472E2761611E2E43D71147F7751246E3
- 4EF21732741D739120008A24F7CE7FA6BF939B4B989FFD65E8FAE1E81E265907
- B0304F9297C9D035CC4D8200288A923AFFA15E55ECD5C5700B6BC927CA8FC9D3
- 64E8BAE1F83A2DF097E4DE720309B7E08ED2DB2543D72D670902A0084AECFC67
- 7AB874C757239E6F7D887CAFFCBDF41449E81AE1743D41FABEF2144BCD05ADB6
- 9725D799200880AC29BDF31F7A9EF48F710D786BD57FCA43E42532743DB03F2F
- 951E1DF0C8CBCAB2063C25F23279BD0C5D93922408802CA9A5F31FEAF4A2EF93
- CBCBD270E1947DE58F25857DD2F53AF92DE9A982556589AC23BF2343EFBF5409
- 02202B6AEBFC67FA07E9B4A3B9B3AE7CA174A7CFD07E7E5E2BBF2A1F274B094A
- 1F29BD1E22F47E4B972000B2A0E6CE7FA81708EE2373C343C8CF903F9239EEA3
- C6B09E26F042B91D648E78DBAD47D75228E213538200481A3AFF253D42A65ED3
- DDF3A9CE9AF639E9D4C7A1F781E5E845739E3FCF65E1AAEB7178DB6DE8BDD428
- 410024099D7F580F59EE2C53633DE924337F96A1F3C6B2F502BA2F4B67B74C35
- CF8047A3084A979620009282CE7F7E3D74E96B94C25CEC03A557F0DF2043E78A
- F579B2744E8B95640AAC261D9C84CE151B09022009E8FC47F738B9B5EC1BFFB0
- 3F47FE5186CE0BD15E2CDF29EF2063717F79860C9D1F2E2941004485CE7F7CBD
- 3AFB45B28F61D7DB4B174661BF3E8EE38DD2A34477937D711BE92929B6998E27
- 41004481CE7F717E537A4F73176C240F9457CBD0DF8D388A9EBAF242D6FBC82E
- 71D5486F370D9D032E2C4100F40A9DFF74BC40EE22A7C516F20BD24F70A1BF0F
- 71528F923BCA69B3BBF4D443E8EFC4D12508805EA0F39FAE7ECA3A48AE2027E5
- CED21D3F7BF7B16BDDD17821E9625951BA6854E8EFC0C92408804EA1F3EFCEE3
- E5B6721C3C74FADF9215FDD8B79EC2DA4E4E82BFE727CAD09F8B8B9320003A81
- CEBF7B9DCBFDC572A105824EE2F241E90585A13F07B10F9D22DA8588EE2247C1
- DF6BA797F6F73CF4E7E174240880A942E7DFAFDF95CEC53F1B977EF50FE84532
- F4FF21C6D02350EF97ABCBB9F08E142F280CFDFF387D0902602AD0F9C7F1EFF2
- 317288170B9E2443FF2D620A3A307DBEBCB59C89B30D9E2B43FF0F762741002C
- 0A3AFFB87A81A0E7F83D2210FAF78829EA8A980F91CB4A2716A29A643C0902C6
- 20D59CD831F0BC9E5384BA121700C0B8F8A9DF0B55212E7B48A756860570362A
- 68B84C7A5BD9C307AF0000C663D5F608F1F8967486451801460096C401D10F65
- 1709400000A03BBC8EC8E99C7D841198BD78A5763C77E7929C570E5E0100400E
- 78FEDF05C0E8FCC780006069CE92FB364D0000C8002F1EF6F03F8C016B00C238
- 4BDD96729BC12B0000489553E513A42B2BC218B006606ED6940E0462D60A0700
- 80B971A7EF5A0DBF1DBC82B1600A606E2E957B4BCF2D0100407ABC45D2F94F08
- 5300F373A6F4D69EFB0F5E0100402AFC427AE11F0F6913C214C0C22C2F7F2759
- 0F00009006DEA9E52D7F5EB40D13C214C0C2B8F0C79EED110000E2E39D5A74FE
- 8B842980D1F0DE5297A27DE4E0150000C4E250F9C6A6098B812980D1F1B5FA81
- 74A52F0000E89F73A487FE9DBA1D160901C078DC511E27D718BC020080BE70B5
- 50D76AF9F1E0152C1AD6008C87A3CF7D9A260000F4C80192CE7F8AB006607C4E
- 929BCAED06AF0000A06B8E952EF3EB7A2D30259802988CD5A5BF90771ABC0200
- 80AEB84EDE4B9E3C780553832980C9B85C3A4B20D1280040B7BC4AD2F9770023
- 008BE3DDF2BF9A2640342E9117B7C7A1374A3F395D2FCD55F2E6A63960B89075
- 59B9B2F4C3C05A01FDEF0162F15DB9AB24DB5F0710002C8EE5E431F2EE835700
- D3C7F927FE229DF4C4A9A97D1C7AAE7467EFD5D15DE154D81BC88DE526AD6EDB
- 3B4B0709005D7091F45AAB0B06AF60EA10002C9EADA45305AF38780530197EC2
- 7107EF6DA627B4BAEDCEBFCB0E7EB1B85AE6B6D23FD4D66D97D266E40016CB6E
- F2FF9A26740101C07478B13CA869028CC435F237F2E7F2E8D62B64097864CC8B
- B65C44CBA55A1F20D79500A3F249F9FCA6095D4100301D7C1DBF27771EBC0258
- 1ACFC57B0FB3BF27BF947EBA9F39275F3A9B4907048F90BE4FD69600214E93F7
- 900E92A1430800A6C7FAD2C3B6CC89C2903F4B77F85EC8F413E9F97C68161CDE
- 53EE221F25EF23C94902E626E951236AFC4376EC2E3D978BF5EAFC10AF957795
- 301A0E9A9F2D8F94EE0042D715EBF07512205B3E27435F6C2CD713E51BE4E612
- 16C7EDA5E77E7F243D4512BADE58A6BF928C0441D6AC22BD723BF405C772F4F6
- BB03A557BD4337AC279D67E37419FA0CB01CAF94DE560A903D5EECC4D34B797A
- 3BDE4FE59E926D9FFDE1B54A3BC943A41753863E1BCCDB67488062789B0C7DD1
- 313FFD74F241B98584B8AC29F7974E8414FAAC303FBF2A018AC28950BCCF3BF4
- 85C73C3C4F7A08DAC59F202D6E2B9F2A9D842BF4D9611E3A9BA5833A80E2F0DE
- E7AB65E88B8FE97ABC74B12727B481F4F1F4C0B7A4A768429F27A6A93FAF8749
- 806279810C7DF9313DDDF17B2B27F931F2647BF94D19FA6C313D0F900045E3CE
- 841FA5B43D457A3899F2D865E0C442CE2910FAAC310D9D09737909503CCE83EE
- 8A56A11B01E3E9ED9A7B49F61E97C90ED2BB36429F3DC6D365AAB79100D5F01F
- 32743360FFBA36BE338EAD20A17C3CADE34A8BA1EF02F6EF7E12A03A3E214337
- 04F6E33FE467A4EB36405D386F83833E077FA1EF06F6A3A76658630355723B79
- AA0CDD18D8AD2EB7EB456250370EFE9CAE9B1D03FD7BB124F886AAB9B7A4E049
- 7FBAC6FE3E92A70E9889B70E9262B85F3D1503503D6F94A11B04A7EB11F20E12
- 2084A705DE2D09C8BBF7D3120084579DBBF255E846C1C5EB1D174F9100A37077
- 4946C1EEF448CBCA12005A5CF98A0549D3F7EBD2F5E501C6C1A9853D32C768C0
- 74F5F5BCAF0480593C5B866E1A1C5F0753BE9E008BE17E9272DED3D3411500CC
- C1613274E3E0E8BAE8D25D25C03458557E5E86BE6B38BA9EE624C916C03C78B8
- FA7C19BA81707EBD95EB1DD2951701A6CD93A5779184BE7B38BF2EA1ED694E00
- 58804749F6258FE765D2D91501BA647379920C7D07716E9F250160443E2C4337
- 122EADABF631E40F7DE115EC87CAD0771197D6D39A003006DE93CC93C6C27E59
- B2A508FAC689A4F697EC12985F4F67B20B076002EE296F90A11BAB769DC7FF55
- 1220260F9397CAD077B4763D8DB9B304800979B50CDD5C357BAD7C820448812D
- E51932F45DADD90F49C808F2A3A787B7CDFC50EE38780517CADDE4AF07AF2084
- A78FEE243DF47AFBF638D478CA64B853C2096F6E96FEC1BEDCFF403887C225D2
- D7DA477B9EF4424B08B3AEFC3F799FC12B3851BACEC9F583579005040069B2B1
- 3C4E7A3F72CDB872E2AED289596AC71DB7173E6ED7BAC90CDD197581B7C0F949
- F72CE97AFA5EA3E205983E5E276B6725F925597B911B4F5B3A10F2770300A6C0
- D3E5EC21B69A7412913565AD6C26F7969F90BF97EE7043D729861E4138451E22
- 5F2CBD76A5D6842F7EDF1F95A1EB548B2F97003065BE2243375CE9FE48D6B6D2
- DFA33E2F90AE65E06246A1EB92B24EFCF27DF91AB9BDAC6D74F13D32745D4AF7
- 07929164800E58439E2B43375EA97E477A4EBB74FCE4E815E51F907E9A0E5D8B
- 9CFD9BFC9C7C92F450790DBC5E86AE45A97AAD08E5B6013AC49D442D5902FDF4
- BB9C2C955BCB074B0F19E7F8943FA9574BE76FF05CF90AB2645E266BB95F9F28
- 01A0630E90A11BB024DD41943A8FEC857A6F97B58DE684F4C2C24FC99257CF3F
- 4F961E04787407007A607979820CDD8825E827FFD23A7F6FBBF313D291D2498C
- 42EFBB768F95FBCAD56469BC4486DE73097A57CE2A12007AC255EF423763EE7A
- CEBFA4617F6FDD74CAD8BFCAD0FBC5A5F502C20F4AE7322889D7C9D0FBCDDD07
- 4800E8092FB471B296D0CD98B35EED5FCA02B13B4A4FD5503E76729D67DF5341
- F790A55062E0FE5409003D71B00CDD8839EBCC7E250C23AE2F0F92D470989E9E
- 3F3F423AE151091C2843EF3357CF96B5ECEC0088CAFD64690B8A4E976BCB9C71
- CA5D3FF1BB4E41E83DE2E2F5DA0997E175EEFD9CF13E79670C0CBDC75C7D9304
- 800EF1B6B1DFCAD00D98ABCE37BFA9CC15AF577885749EFCD0FBC3E9EBA9016F
- 9D74D0952BDEFEE851AFD0FBCBD16BE44612003AE2993274F3E5AA7F34EE2B73
- C5FBD83D7A117A6FD8BD0EBABCBADE751172C4A35E257D7F9C0A1A003AC04F0C
- 25AD24F734C6E3648E781FFF7765E87D61FFBA18D10E32473CFAE551B0D0FBCA
- 4DDFD3F7970030655C602374D3E5EAAB656E780AE6A5D299EC42EF09E3E9F501
- 1F913956CC74A759CAA2D19F48009822FE51BB48866EB81CF542AEDCD8461E23
- 43EF07D3F11CF968991BFBC8D0FBC9D147490098126F91A11B2D479DC130A72D
- 435EB1ED79E694CAEFE2C27E5CE6B635EDB332F45E72D3191D3D5A06008B641D
- E9CC68A11B2D372F977795B9B09E64AE3F5F4F9639251172D5CBDFCBD07BC9CD
- 3D24002C92520AFF7881D063642EEC224B599C55B39E5B7745BE5CD8585E2C43
- EF25275D1FC0F52F006042BC4DC85BE54237586E3A056A0E78C8DF39DB6F96A1
- F78179EA94C22BCB1CF01A8612927D3D4702C084BC4B866EACDCFC8DCCE169C0
- 8B2D9D7236F41E307FBDFE249729A80FC9D07BC8498F02E49AA301202A6BC812
- 0AC9B868D1663275EE224F95A1F780E5E875283BCBD471DE8F124A7EEF2D0160
- 4C9C5B3B7443E5E6B365EA781F7649DB2C717E6F94397C2FBDF534F7DD270EAA
- 6F230160443C5779A90CDD503979984C9D274AB6F8D5E93BA5D77CA4CC7E3274
- EE39C98E00803178B10CDD4839F977B9964C19FFB896565911C7F38B32E5796A
- 07283F90A173CFC51365EA811640123881460905429E2253E6353274DE589F1E
- A97255C754F1FA94DC77033D5202C002EC264337504E7E53A68CB72486CE1BEB
- D5099F52CE1CB8BF0C9D772E1E290160017E2C4337502E3A6BE18632554A49AC
- 84D3D7856C520D02BC90EE773274DEB9B8BD048039F00D12BA7172F2853255DE
- 2643E78C38D44FAAA94E07DC5DDE2443E79D835F900030079F97A11B27178F96
- A916017176BFD03923CEF61B32D5C455EF96A173CE41A7655E5F02C02C5697D7
- CAD08D9383AEC77E2F9922256CA5C27E3D44A6B87FDDD92AFF2643E79C836F96
- 00308B7D65E886C9458F5EA4887723B0D50F27F1BD32459E2543E79B83E74AD2
- 0303CCE27819BA6172D0E97E531CDABBAF2CA59812C6711F991A9E66FBAD0C9D
- 6F0E3E4E02408B3BAAD08D928BDE539F1A9B4ACAF9E2627555C8C7CAD47890CC
- 7564EB3B12005A3E2343374A0E9E295DB82425569314F6C169E951A4ED646A1C
- 2A43E79BBA5E2FB4B104A89E55A487D043374A0EEE2553C229470F97A173459C
- 5467E7746099122E6D9CEBB640D76100A89EA7CBD00D9283A7C8D4564ABF5E86
- CE1571B17E4BA696D3FEB33274AEA9FB5799EA966180DE700AD2D00D92834F95
- 29E17CE39EB30D9D2BE2347499EE94D8447A7F7DE85C53F7A112A05AD691B90E
- E179D7424A11FC7A92457FD8B50E30779429F171193AD7D4F5E80540B5E4BCF7
- 7F77990A1E96F5CAE2D079224EDBB3E51A32155C7BE33A193AD794BD42AE2801
- AAE457327463A4EE1F654A73A164FAC3BEFD8A4C898FC8D079A66EEA65C3013A
- C17377B9EEE34D69E5FF3632C7A71FCCDFBD652A38EF85B7D785CE3365532F1D
- 0ED0092F95A11B2275CF97A9544BF30E845FCBD0792276EDA5D26B4F52E1EB32
- 749E297BBD4C6D7B65B5B02DA33F766B8FB9F1217963D38CCE8BA5B32802C4C0
- EB000E6A9A49F0BEF69813CBCB47354D803A584BE6B85DCD098B5CB530053C85
- 72B50C9D27629FA614CCBB2477E81C53D6190D21011801E887C7C8144B8D2EC4
- E7E4E54D333A1F93B76B9A0051F9A87446CF1478777BCC098F00782400224300
- D00F3956C372A4EE1FBA14F013D72E4D13203A7790AF6D9AD1F9B674C9DD9C70
- F0F4B0A609312100E81EEF7BDDB96966C5CFA50BECC4C64F0A39CE7542D9BC4C
- 7A5A2A369E5AF4485D6EA49457A45A0800BAC7653C576A9A59F1C9F6181B2FFC
- 73111480947060FA81A6191D67D8F316E39C60440FAAE0BD72F62298D4BD44A6
- 90B1CBA9939D3D2C748E8829F8109902DF93A1F34BD9AD2444841180EE79447B
- CC892F4927DB89CD2BE5AA4D132049522973FBA9F69813394E8D028CCCDA32C7
- EC7FDBCAD8AC2FAF95A1F3434CC947CBD83859576EC5B1BC801122C20840B73C
- 5CA6564F7C214E942734CDA878953585432007DE2A63DFE74ED6E5CC8039E12A
- 8B6C078C08014077F80721C7852EFFDB1E637247F9DCA609903CF7942924074A
- E1DE1D07E7F548ADD47255E4F6749A2A77925B4A0F9D7B61CBD6ED31C7C4359B
- CBD39A6634BCED6FFFA6099005AE5171FFA6190D3FD09D2753AA57300A7F9327
- C993671D2F93D0210400E3E127D36147EFA32BD3B9A34F252BD86239566EDF34
- A3E1D4C3E7C89507AF601C2E96FEF1740067CF94CEE478A5F47A0AEB691507A6
- 5E5CE9A22CDECBBE99F4564B7FA7D7953019DEF2FB8BA6190DD72AF0D6D91220
- 30E8180280301B4877ECC30EDE4FF4B6F42A569E777F57D38C869FFC49FC331A
- EEF07F247F2C7F22FF24178BCBCC7A6B9B7DA8F4624C188D2364ECAC9F0E427E
- D6348B85C0604AD41E00F86967D8C9CFECEC5DF5AB46FC14F8E7A6198565A5FF
- FE8D06AF2084B7671E2E0F96474AD784EF0A0F297B8EF6E9F2F19232AEF3E31D
- 3F9E428B790FF933F3089A1F626A83C00082783BDE4EF285F2E3D24F4B7E7A0A
- 6D4DA9D514D2FE3E4186CE0D9759E62CF922196BBAC953077B49EF12099D1F36
- 7E50C6C6990143E756ABE7CBEFCB03E5F3E40EB2D687BC25286D04C06577870B
- F0663ED93B0080F9F1DCE17E4D331A7EA22539C892383073C5373FF1DFE47F10
- 19FF663C56BE5ADECFFF0096C059345D2CE886C1AB383C49E6B6232006D58F18
- E41A00387A9BDDD1FB756EAB5F53C2253A9D4E34165E8CE6A153B6A6365C25DF
- 243F2C5DF025459E2ADF2FDDE1C12DEC290F699A51F0425A8F70E658823C0566
- 0706C376718141EA0180E71C879DFB4C6B9CDFEA12CF2B7BF42466FADF77C854
- 4AACC6E62BF2E5D23F44A9E3DD1A6F90AE8EE7351CD02CCAF402CA98B89AA787
- BA617A782A61F66841D681412A0180E735676EAF1B1EBDED0EBAE7BB32663A53
- 3FF59F2D371CBCAA176FD7F31CE5A1835779712FE9C0E52E835775E379675F07
- 6FC38CC5EBE4DB9B26744CB68141DF0180F71F0F9FE887C3F7EEE83796100F3F
- BD7DA86946A186AD4B0BF147F91479FAE0559E38B7C07FCBFF1CBCAA1BAF9178
- 4FD38CC2BDE56F9A264422F9C0A0AB00C02B86DDC10F3BFBE13CBD3BFA5CD71D
- 948C9FDE7EDF34A3F051E91D1AB5E227FEBD65CC8563D3E425D2B5F26B9E8376
- 40778FA619055F7B278122A1567A143795609C40C48930BC90CB7B93676FC5C0
- 34BD5ADE56C6C23F5417C8D0B9D5A0775F94B8F0D17903BCA624F49E6BD11916
- 63F203193A2F4C53A771F676C5DEA663A7F9C3E315F8DE1EE4B92F5672E7C331
- 32E62A73679CAB35FDECEBA59F969D40A6340E93AE8679C5E0559D3CB93DC6E2
- 97ED11F2C08BDB7DCF6C3778D50374D410FB4762D7F6581BDEDBEF9D0F25E3EF
- D623A56B10D4C863DA632C62D72580C42100805FB5C75838FF406D78A15C2D5B
- 1E3DC2B4BB74BDFADAF0423C6FAF8D85AF7D97A9A221730800EAC6F34E4737CD
- 287851E8164DB31ABE29F795BEF6B570947CA6ACE93D1BFFBE7A042416DE56EA
- D4CD00410800EAC6FB9463CED1D6F6F4EFEBED7CFA353E953933DE014DB32A76
- 698FB1F06E048020040075735C7B8CC523DA630D7808DCFBFCBD35AB565E236B
- 9B97F6A2AE989CD01E01968200A06E62FF383CB03DD6803BBFDF36CD6AF16E13
- 0741CE535F0BEB4B6F918E050100CC090140DDC4FC71F08FE23A4DB3789C64C9
- A548A14982E23A07351133D0250080392100A89BE3DB630C6A2954E23DFECE72
- C86AEC5BF89274C19C5A88190038C9D6454D1360490800EAE51AE9AC8DB17840
- 7B2C9D4F4972B22F897703EC234B497DBC10B1A7BA8E6D8F004B4000502F67C8
- 9819E862E649EF0BA7C27D73D384599C2A1D1CD580B7BABA105A2C6206FA9030
- 0400F572567B8C816B0FB83854E97C4E7A0816C2381B620DA300FE9D7551B458
- C4BCD721610800EA25E68F828BA4B86264C978C5FB7B9B26CC818B9F7CB66916
- CFDDDA630C080020080140BDC4FC51D8B63D96CC57E4D94D13E6C1A300251643
- 9A4D6F055E021000401002807AF11A8058D410007CA13DC2FCFC55BA046AE96C
- D31E6310F35E87842100A817A7A58D854B46978C87B67FD43461043EDF1E4BE6
- CEED31064EBC7455D304B80502807A7127150B17012A19E7BDAF61587B5A1C21
- 63D6A4E8830DE5724D330A31EF77481402803AF13EEC4B9B66144A0F00BED61E
- 6134BC5DD255124BC6BFB51B35CD285CD21E01FE0D01409DF8C720D613AA57FF
- AFD7348BC425589DFA17C6E387EDB16436698F31201B202C0501409DC47CFA8F
- F914D4073F97A4FD1D9F1A028098DFFD98F73C240A01409DC41C0EBC7D7B2C15
- 16FF4DC639F2B4A6592C31BFFB4C01C0521000D449CCE1C0B5DB63A9FCAE3DC2
- F8945E2E39E6779F2900580A02803A89F934B0667B2C95D29F62BBE494F6582A
- 31BFFB8C00C0521000D4C9F5ED31066BB5C712F1563672FF4F8E0B04954CCC00
- 20E63D0F89420050273117A9953C02507A07D6357F6A8FA51233F8756D0A8025
- 2000A893ABDB630C6ED51E4B84A7FFC5517AB29A98BFB7D7B447807F4300007D
- B36A7B2C9198815509388742C9ACD21E01928000A04EE8A8BAA1F474B65DE3A9
- A96B9B264C99D2832B980002803A89B90660A5F6582204568BA7E4A235314700
- 9CFE1B60090800A06F6ED31E4B840C808BA7E46BC8EF2D24055F48E89B929FF0
- 566B8F303925CF93539217928200A04EE8A8BA61E5F6089353720010B34434DF
- 4D580A0200E89B92B723F123BB384A0F4C632E702C79EA0D268400A04E5C9237
- 1625272429BDD051D7945E27E2A6F6188315DA23C0BF2100A893E5DA630C4A1E
- 01B86B7B84C9D8BC3D964ACC5D22CBB747807F43005027CBB6C7185CD81E4B64
- 3DB97AD38409D8A23D964ACCEF7ECC7B1E128500A04EA84AD61D9BB547189FD2
- 03804BDB630C4AAFC2091340005027318B92C4FC11EC83BBB547189FEDDB63A9
- C40C7E4BAEC209134200502731175B5DD41E4B65A7F608E3E127D4D203808BDB
- 630C4A5F60091340005027319F064AAFF8460030190F91A5FF1EC5FCEE330200
- 4B4100502731E7032F932517CDF142C02D9B268CC1C3DA63C99CD11E63C01A00
- 580A02803AF18AE098ABD5CF6C8FA5F2D8F608A3E1DFA11AAED959ED31064C01
- C0521000D4CBFAED3106A507004F6F8F301A0F971B36CD62F1DA9798393062DE
- EF90280400F5B2717B8C41CCA1D03ED85A96BEA06D9AECDD1E4BE62FED3106AE
- AFC01A00580A02807A8919009CD21E4B66AFF608F3E3A9A8C735CDA239A93DC6
- 20E6BD0E094300502F317F148E6D8F25F32C4956C085D957AED4348BE684F618
- 030200084200502F317F144E96FF689AC5B2AA74E70673E3A1E99735CDE28919
- 00DCB93D022C010140BDDCA53DC6E03AF9E7A65934FBC9DB354D08E000A996ED
- 693103804DDA23C0121000D44BECA7823FB6C7927179E097364D9885B7A5EDDF
- 348BE71C193303262300108400A05ED69077689A51F8557B2C9DD74AE66097E6
- 7DB296A7FFD8DFF56DDA23C0121000D4CDB6ED3106BF6C8FA5E3056E07364D68
- 71DADF9A7649FCA23DC6C0EB2C084021080140DDC4AC5C779CBCBA69168FB3DC
- D5B0D56D141C10FDB7BCD5E0551DC40C761DE4D774AD610C0800EA66BBF61803
- EF02F875D3AC824FCB8D9A66D57C5C6EDE34ABE04A797CD38C02E5A9614E0800
- EA26E61480F9617BAC0167623B44DE76F0AA4E9E2B6B4B90F4331973CB6BEC7B
- 1C128600A06EB690CB37CD281CD51E6BE181F2DD4DB33AEE2B0F6A9A55F19DF6
- 188B98A37C9038040075E3AA80F76C9A51F056C0F39B6635BC42EED334AB6153
- F94DB9C2E0555D1CD91E63B09C8C797F43E21000809F4A63F12FF9FDA659151F
- 967B36CDE27195BF1FCB1ACBD1FE49C62C7C750F5963D0052332CD00E0EFF207
- ED11F2E101ED3116DF6A8F35711BF959F998C1AB72719E094FF3945EEA772EBE
- D71E631133B887F171B9E863646F85A3BADA1EE268DF734F5E80E224145E89BA
- 95ACA1E8476E3843D93A4D330A4E95EBA0B1C694B9374B170DFAE2E05559B824
- F277E51D07AFEAC41D70CC244087C9DD9B2624C65FA5D343BB309AB7445BA747
- FFA7EC8D3EF7877AB4C1F9E76707064E53C954445CBC18F0D4A61985AFC8A734
- CDEAF034C82BE501835765B0A33C5C3ADB64AD9C2D9D83DF9F6F2C2E94354EBD
- A4C48DF244E9ADA0C38EDE5E2A417854E0DEF2D9F243D2D3087E2AF58D83FDE8
- A7D098F82925745E35F93999FB08991F285CDDEF7A197A8F35E954C73171AE85
- D07961773AE0F294D77BE5D3A41F72BDD03A5952CE10B59EF44881470C7C217D
- F434028B5AA68FF7A7C75C94E6CFD4D3002EA15B335E34F624E92786DC70E1A3
- CFCB5D07AFC00F35BF6B9A51F04E938F354D98329EBA3B4DFA49DE43F87EBAF7
- F1029915B9A588F4E2296F291A4E230CF534426EEF25253C1CE575003113967C
- 4A3EA76956CDB5F2F5D23B05FC4393038F973EDF0D06AFE064E9351031F1E25A
- 82B1C573B974473FECE47D7480EE51AEEC29A5D35C59FA869BBDBEA0966A63D3
- E07ED22B5063E127A6DF344D105E20F44219B390CC4278ED8893FB3C62F00A86
- 781AC4D399B17072AF4B648D0B6B27C543F8DEB2E9DC24C3C579EEECCF929029
- 7E2279A4F422ABFF917F9037C8D97337B8CC326F95B171A41D3AB75AF58A604F
- CFC47E9A9C8D6B1AB8E3E75E5A5A3F193AED734C7696A173C3C6ABA4EB90B828
- 95A74ABC15DA0F915001CEC5EEB5045E75FE0EF97FD2919F7F6C435F965A4CA1
- 308F9F7843E756BB9E9AF196AED859DDFCC4EFFC0574FC73EB802D36EF97A173
- AB51EFC6F074C8DBA5D7D76C26D975D6C2BCF92D7801DACC6984A1B56C657200
- B4BEF44AD658AC2ECF9144E373F35BE9D1ACFF957D7C56FE4C9E289F2E7790FC
- 78CECF4EF2274D331AA748076B35C176BB0920005818273219EE42180605BEB9
- 9C67BB349E27BD182F269E3BDDAF69C23CDC24BD65D6B9E6DDE1F887CF4F3CD3
- C081B03BB287C947C99805A372C2C1D97D9A6634B6945E8458320E7CDDB9CF5C
- 81EF3C26BE27600C080026C37B3B1D04CC0C0CDCBE93CC1997E77D78D38C86E7
- 97FF226B2E9B3B0917CB5F4A3FFDF9C7709887DEF5E8432B96DDA9AF269DACC6
- 7BC6ADBFD3CE5EB7AE84F1F1B4A2476662F226F9E6A6993DDE05E3EFF2B0931F
- 1EB3DB6E972A0400D3C5C3A50E041C10383070829B9C7E4C3DD7ECFCEDB1EB39
- 1C2A9FDC34610AF887D40B9F1C0C78AA6B154980355DCE949E5F8EBD75D34FFF
- 1E05C88DA2B7DB419D7891E1EC4529A9EB8578B17115B3DA1765625EBE48C6C6
- 0F1EA1734BD9D7C88D254480053DDDE2B490B991C293B7B76BBA7E3C400E9C2B
- 3FD334A392DBA899471C9DAD90BDF650245E2878B50C45BEA93A9C06888D1339
- 310A8039F87C9902A7CBD0F9A5AAD7AC40441801E8166F4DF969D3CC067F27F6
- 6E9A51F17CE0579B2640B278EEDFB91162F320E934E939F1FDF608912000E81E
- 6FD5CA0DE7E44FE1BBE1D5CCB9E4C3873A798B4C61FBD973DB634E100040F178
- 574068F82B75636F071CE239C2D0F921C6D6D5FE520894BDFBC845A442E798AA
- 5EF5EFE26E10114600BAC75B599C8E32379C142805DE202F6B9A00C9E04ECC45
- 7FBC4E25367BC8159B663638E748CCEAA3200800FAE188F69813BBC9B59B6654
- 5CD5AC94C426500E4EF8F3F3A6199D5482F571C8F1371160221E2A670F81E5E0
- AB640A38698D139C84CE11B16FBDB3C7192B53C065BC43E798B25E1C5D4B8D15
- 8041EA603FC9866E8694F5FEE6546A1E3845AD870C43E789D8A7AF90A9E0AC99
- A1734C5916FF25025300FDE055C2DF6E9A59E17C004F6D9AD1F19E61D7EF0688
- C9EFA50B56A580B7FD3DBE6966C537DA2340353C4186A2E1D47556BE54700E7B
- 970B0E9D2762D73A90BFBB4C858364E83C53D68B2653483406D02BB793B96505
- 1CFA48990ABBCAD0392276EDDB652AAC255DE029749E297BB48444600AA03FAE
- 91B9AE7CF576A754F054CAC79B26406F78E8FFAD4D3309F6912B37CDAC38B83D
- 025447AE4FAF1EB6BBB74C8595A4EBDE87CE1571DA7AE46E73990AEEF82F94A1
- 734D59AFFE4F616B314014BC1BE02219BA3952F7BB3225B69737C8D0B9224ED3
- D4F6D9BF5686CE3375A9F009D593736A5B6FC54B8997CAD079224E4B27FC4989
- D5E4A53274AEA9FB140950353BC8D0CD91833F92A991E33E68CCC393A4779EA4
- 84B36286CE3575AF90B9A52B06983AB792A7C9D04D92833BC994F0EE8A1364E8
- 5C1127D5C56A529AF7376B4A77A4A1F34DDD4F4B480C7601F48F6F86CF34CD2C
- F156280731A9E0DD154E86E21F468069E07BF459F2D4C1AB74F82FB96AD3CC8E
- 4FB64780EA5957E6BC80ED3F656AB8DE028B02711ABE5AA6C626F27A193ADFD4
- 4D29991840127C4D866E961C7479636FC54B0DEF8D0E9D2FE2A8A63A547D980C
- 9D6F0EBE4002C00C7691A19B2517DF2453E45D3274BE880BE91AF5A914BF9A89
- D7DD84CE37079DAD30C78445009DE2F51767CAD04D93839E7B4FA524EA4CBC3E
- E14B3274CE887379ACF416BBD4B88D3C4E86CE390729E0053007FBCBD04D938B
- A9A6F5F48F66CE43A6D8AFCE2A996A86BADCA7B59CB00B0002AC2E732CE831D3
- 9D658A7828D7D90B43E78C38F42F72439922EBC95C93FED8A32400CC830BDB84
- 6E9E5C3C437A2F7E8A78A1E28F65E8BC115D5AFA2E32559C853074DEB9985215
- 518024D94ABAD84EE806CAC50FC854711070A40C9D37D6AB03576FAD4B95DD64
- E8BC73D1591453CA1702902CDF93A19B28176F9629550B9CCDF2F21B3274EE58
- 9F9EF3BF834C1527FB395786CE3D179F2B0160043C5416BA8972D22B955DED30
- 557C6E87C8D0B9633D3A29CD3A3265722E1866CF972B48001891DFC9D0CD9493
- EF9029E3AD9707C8D0B963F97A515A8A5BFD66E245B5B94F093A6531008CC1EE
- 327433E5A4A7027694A9F322E9730DBD072C53D7DF487984CA782BA29F9E43E7
- 9F8B174B12FF008C8917CC1C2F4337554E9E25BDBD31751E2373DF82890BEBA7
- E9D7C91C384286DE434EE672AD0192C345764237556E7AAE3D07B695A7CBD07B
- C0FC7585488FACE54009752C2E93A94FB100248B33D8B90469E8E6CACDA7CB1C
- F068C53765E83D60BE9E2C53ABE73F175B48A7D60EBD8F9C7CB3048045B0B70C
- DD5CB979B5DC5AE680A75F5CDCE81F32F45E302F9D402797796827D13A5186DE
- 474E5E2ED79000B0083C0AE0241AA19B2C373D9A91D390A01730BAD471E8BD60
- FA3AE8CC6DFFF9A132F45E7293B97F802951C28E80A14EC0935346304F0994F2
- A35C93DE469BCB90FF9097C9D07BC94DEF5C70C64D009802EE307F2D43375B8E
- BE5EE6C65E32E7422CB578937CA74C7D8BDF6C1E2C7DEEA1F7949B5EC0080053
- 642719BAD972D47BEE732C0CE26A6CB9176429D9DFCABBCBDC70F5C10B64E83D
- E5A677D1E4167C01644149E56CBD48C8DBEE72C4855972CFCD5E925E31FF0A79
- 5B991B5E135342BE8FA14F9100D001EE304BCA58E7F2ABA9D65E5F08AF2A77AA
- E31B64E8BD61F73AA98F734C6C2473C40B7C732FFC35D3A32515FF003A24F7C2
- 20B3F5D38FB73EE5CAA6F230197A6FD89D2EE2B383CC9992EE650763F79300D0
- 216BC9D216A339E5A99F8672E621F29732F4FE707ABA6EBF7363B89053CEBC5A
- 86DE5FAEFE8F04801E78890CDD8439FB2959C2F0E1AEB2844A8EA9E9E9A2E7CB
- E564EE382B66EE15FE66EA1A1A779000D0035EEC5442B6B0D97E4896800319E7
- 6E384686DE278EEE5FE4BE727959028F97A5559ECC715B2F40D6BC4D866EC6DC
- F5FB2A8907494F719056783C7F239F24739F1A9AC92EB2C445A39B4900E88952
- 8A85CCA5E7474BC359E93E282F91A1F78CCB2C73BDF4AA7EAFA7280DA7952EF5
- 9EFDA92C2950034816CF81FE51866EC492F43A8712F150F61EF2C7B2A479E0C5
- E85A174E83BBA62C91FB4BE7BD08BDF7527C8304808E799F0CDD80A5E9CEF155
- B26436911EEDA821A09BED59D2DFE57BC992718ADF2B64E81A94A4D7353C4002
- 40473C4CD6F6D4F81659039E477505352F1C2C75BDC029F200E927E21A12C678
- CEBFE4A9BAD93AA873F12C009832DEFF7F9E0CDD78A5FB7E595386B1B5E59EF2
- 4BF26F32744D72F04AE9EA8F2F901BCB9AF02E901AB344BA7226004C99DAB3CD
- 7D5CE69EFC6552EE229DFCE693F26499EA0881F7EA7F59BE58BA284FAD0BC39E
- 264BDBEA378ECF929021E4714E93E7C94F34CDAA395CFAC9F8BAC1AB7A71EAE4
- ADE5DDE476721BE920C1C958FA08922E94674AE7A238A1F538E91D0EB5E3351D
- 2E475CF36FA9A73DEE294F1DBC826C2000480F6F1FFBBDCC395FFE34F1FEF0FF
- 90EE846049BC43C48571BCB8F08ED25309B76FF514920B18AD2A8DBF4FC3AC7A
- 5E57E2856AE65A79B5BC58BA431FEAA77B77FA9EE7F50F3C2C8993737D543A58
- 876661AB6B03DC3878050063E31F68D2CA2EADF3C13B1702400AAC224B2AD53D
- 2D3F20016042DE2D4337163605914A4C180379E172D6C7CAD077B4763DB2E49D
- 100030263B49D2C7CEAF87174B4D1804E9E3EC7E17C8D077131B7D7DD6930030
- 22CE88E639D7D00D854B7BB05C4902F4C5CBE54D32F47DC425FD9E647D19C088
- 7C55866E249C5BAF42DF5402748917527E4586BE8338B7AF9000B000CF96A11B
- 0817F632F95809D0055BCA12CB70F7A19322DD4302C01CDC555E254337108EA6
- 171E7D4C322500D3C4D90C6B4AEBDB85CE0BE011140098C5B2D27BDC43370E8E
- AF33E66D2F01168373291C2143DF311CDFCF4A009885B387856E189C5CD797DF
- 5FD69A421816C7CEF27C19FA6EE1E43E5502408BB713D59C3BBC6B7F225D6D0F
- 60149C2DD1D348B555DEECCBCB656DC5A10082AC21CF96A11B05A7A753DCBE46
- 3A652BC05CEC26CF95A1EF104ECF5F49EE45A81EB614F5ABB3B6DD4B02CCC4C9
- 6AD87EDBAF6F9300D5F20C19BA31B05B9DC0C579CA579750377E0A7DA1746AE9
- D07705BBD3D39EA4F3862A71F9D62B65E8C6C07EBC48BA7A1B8B04EBC49DCF1F
- 64E8BB81FDE88CA7CE7C0A500D7EEAF8B50CDD10D8BFEE047812A907678C3C4C
- 86BE0BD8BF874B806A78BB0CDD081857770A9B4B28133F69BE4B3A2B5DE8F3C7
- 783AD11240F13C48B2E52F5DFDD97C41DE594219AC26DF2CAF90A1CF1CE3EB2C
- 8B5B4B8062F1A2B3B364E806C0B474A9E14FCA8D24E489D3CEBE565E22439F31
- A6E5F1720509502487C8D0171FD3D5C3C59F904C0DE48387FADDF15F28439F29
- A6EB472440713C5D86BEF09887FF90CE09EF291C48134FDB1C24AF96A1CF10D3
- D7D917FF430214837F98987F2CC763E4932499CCD2E0BEF27F256B6BCAF062B9
- 8104C89EDB48A7BD0C7DD1316FCF93EF90CEE900FDE2857DFB4A67760C7D3698
- B73F94E4E780EC798B0C7DC1B11C3D3DF07DF964B9BC84EEF0148C7769B8B643
- E8B3C0727CB5841EB9557B84E9F000F933E95100A803A794FDBA3C54BA0AA183
- 03581CDBCAA748075877F53F802A70CA6E077C9E72831E2000981E2E297A9CA4
- EC65BDFC5D0E83815F482F7082D1D84A7A9D853B7DB7A14ECE90DB4BA74D878E
- 2100981E5F927B364D804130F05DF93DE9E9028F14C02D78FFF783E52EF25172
- 0B09600E964F6B9AD0250400D3610FE92F2D40084F0BFC463A203852BA168157
- B0D786732B3C42BAC3772D8695244088BDE4179B26740501C0E2F190BF57267B
- 9532C028380DEA6FA5D78B1C2DBD6BA4B421CF65E5BDA4D7C53C50EE20D79600
- A37095BC87FCF3E015740201C0E2F0623F2FFCF28F1BC0A47884E024E940F204
- E9B5243E5E2073C0EB5FB6915EBC7737B99DF48FF78A1260521C24FBB7D569BA
- A103080016C71BA5B7FD0174C145D2F9D24F97AE2961CF6CF5BFEB9355A447BB
- AC135D6D229D0FC1055DDC06E882F748B607760401C0E4DC4FFE5C921D0E62E0
- 698473A40BDFCCD4F9F09D85F272E9BDD57E7AF27F6B3CACEAB5076B0C5E3539
- 0C86F3F07E8AB76BB57AB8DEC7DBCBF5DB3640DFF83BBCB3FCC1E0154C150280
- C9F0D390876B29210B00D02D7F939E5AEA7BD4AB7848BD3819AE6045E70F00D0
- 3D1E81FAACE48175CA90B16E7C9CA1EC6D4D1300007A6033E9292E6FA7852941
- 44351E77921EFA5F7DF00A0000FAE206E94A90DE250353802980D1F168898B92
- D0F90300F48F17AD7E5992406A4A3005303AAF95CF6A9A00001001EF4EF1CE94
- 6F0D5EC1A2600A6034EE235DDCC5D9CD0000202E4F942EBC058B800060615696
- 7F949B0E5E0100406C2E9377977F1DBC8289600DC0C27C58D2F90300A4839359
- B95810D3D88B808B373FAE4FFE8EA609000009E15D59AEA3F1D3C12B181BA600
- E6E68ED2DB4D8669530100202D1C00EC287F39780563C11440188F8CFC8FA4F3
- 07004817FF561F2CD99E3D010400615E291FD234010020613C15F089A609E3C0
- 1A80A5B9B764710900403EB82CF579F20F83573012AC015892DB497F819C771A
- 0000F2C165AFEF25FF3478050BC214C0921C28E9FC0100F2C30F7087C8E506AF
- 604118E6BE85C7CB77374D0000C810970E5E451E397805F3C208C02DECD51E01
- 00205F9CBFC5A301B0000400B7B0A7FC59D384485C2DF90C2037AE93AF979BCB
- 1FFA1F4034CE970F955E0F0030168E1A9D55EA5FD8BB47CB61CAE55DE44932F4
- DF21A6A4E79C379243FC50B5BFBC5E86FE7BEC4EEF02600D172C0A82807EBD49
- BE49DE56CEC40B795E215DF423F4FF21C6D4BB85E6CB15723779A20CFDBF387D
- E9FC616A1004F4E3E9F27E723E5CFBFB23F20619FA3310FBD4D5E79E2547993E
- 5D411E24FF29437F164E473A7F983A0401DDFA49E952CBA3B289FCBCF48841E8
- CF43ECD24BA53384AE28C76567E9B9E9D09F8B8B93CE1F3A832060FA5E287793
- 93E28556874A170109FDF988D3F45AE9EDC18BCD35EF91ACC365E8EFC0C9A4F3
- 87CE2108989EDF96EBCA69B09DFCBA2410C02EF42AF20FCA0DE434798EBC4A86
- FE4E1C5D3A7FE80D8280C5E91FD317CA2E524F7B44E033923502380DDD39BF4F
- AE23BBC2BB5D8E91A1BF1F1796CE1F7A872060327F27B7905D7307F97E79A50C
- 9D07E27C5E2EDF21D7927DE05D2F6F91AC69194F3A7F880641C0E8DE2CFD83BA
- ACEC13CFD57A1FF65F64E8BC1067EAEFC94BA5D3C7C6E00192EFEA68D2F94374
- 080216F60CF94019136FD3DA557E4FB24E0067FB4BE994B129D44371F0F15919
- 3A4F6CA4F387642008985B6FD55B55A6C45DA517745D2243E78C75E815FD5F90
- 0BE59E88C51325DFD1A5A5F387E420085852FF70F9072C6596977EEAF36E044F
- 5184DE0796A7D34AEF27D790A9E35D07DF97A1F751A374FE902C04018D47C969
- 6F97EA1A9FEFCBE4F132F49E306FBD9ADF4FFB3BC8DCF06E99974B17190ABDB7
- 5AA4F387E4A93908F00F949FACBAD8DED727DBCAB7CA5365E87D621E7A45BD47
- 775CD9D3F765EEF87B596B804AE70FD950631070ACDC5A96C6DDA5772FFC5986
- DE37A6A5F3ECBB92E48B65977BF763E17A021F9035D513A0F387ECA82508F08A
- FAF74ACFA797CE56F2BFE4CF256B06D2F146E969A77D646E534F93F270E98E31
- 743D4A92CE1FB2A5F420E06CB993AC112788799AFC8ABC5886AE0F76A7CB427F
- 557A787FB179F973C5DFC1AFC9D0F529413A7FC89E5283808365AD3FBCB3718E
- 817BC857C923A5531D87AE194EAEE7F3BD57FF8DF2FE3285FDFAA9F04C595AC6
- CB73259D3F14414941809FBCF69030379E0E79A40C5D3F1CDFD7CAD524CCCD5D
- E4AF64E8FAE5269D3F14470941C08FE4461246A38639DA3EDC58C2C2B89E8047
- 4872AE2740E70FC5926B1070BD7CA5F450378C0E095C16AF479C603C9CD9F074
- 19BA9E294BE70FC5935B1070A2BC9B84F1395086AE298EEE4F248CCFCAF2D332
- 744D5394CE1FAA218720C0FB8C3F24BDEF1826E37932746D71741D44C1E4EC2E
- 2F92A16B9B8A74FE501D2907019EBB7E8484C5E1B4B3A1EB8BA3FB6C098B637D
- E9DD29A1EB1B5B3A7FA896148300EFAD5E53C2E271B199D035C6D1BDA784C5E3
- F4DC2F9129D513A0F387EA492508B842EE2D61BAB0136072BD9A7D4509D3C3E9
- BA8F93A1EBDDA774FE002DB183805F48B65A75033B0126D7657B61FA384FC5FB
- A4D37887AE7BD7D2F903CC224610E01CEA4EB24256B5EE6027C0E43ADB2474C7
- C3E4393274EDBB92CE1F600EFA0C024E91CCAF760F3B0126D7A995A15BBCDEE7
- 5019BAFED396CE1F6001BA0E02BCBDEFA3722509DDC34E80C9DD45423F78FD8F
- D701853E876948E70F30225D050117C8474BE80F76024CEE7A12FA6313E9F540
- A1CF6231D2F9038CC9B483806FC8B525F40F3B01C6F7EF12FAC7EB815E2FA755
- 4F80CE1F6042A611045C259F2B211EEC0418DFA324C4E3DEF25419FA6C4695CE
- 1F60912C2608385A6E2A212EEC0418DFF74A888B7F7B3E29439FCF42D2F9034C
- 897183000FDFBD59BA3C28C4879D00E3FB340969F05879A10C7D4E21E9FC01A6
- CCA84180CB80BA1C28A4033B01C6775B09E9E00599DF91A1CF6AA674FE001DB1
- 5010E0E13A970185B46027C0785E2F19BD4A0FD7137891BC56863E373A7F808E
- 0905011E9EDB4D42BAB0136074FF20215DB692FE8C667E6674FE003D313308F8
- B65C5742DAB01360743F27216D9693EF91AE2740E70FD0330E02F6901E9683F4
- 6127C0E8EE27210F769274FE0000F3C04E80D175A702003D73EBF60800D3E5E4
- F6080BE37AF500D033040000DD406DFBD17079DA4B9B2600F409010040375C26
- CF6F9A300F3CFD0344820000A03B9806581802008048100000740701C0C21000
- 0044820000A03B5807B03004000091200000E80E4600E6E71AF9E7A609007D43
- 0000D01D8C00CCCF09F29F4D1300FA860000A03BD809303FC7B7470088000100
- 40B7300D3037C7B647008800010040B71000CC0D0B000122420000D02DAC0308
- E3B97FAF01008048100000740B230061CE9057354D008801010040B730021086
- E17F80C8100000740B3B01C2B003002032040000DDC334C0D2B0030020320400
- 00DD4300B0348C000044860000A07B5807B02497CBB39A2600C4820000A07B18
- 0158121600022400010040F73002B02404000009400000D03DEC045812E6FF01
- 12800000A01F9806B80576000024000100403F300DD070B32418024800020080
- 7EA0D36B384D5ED734012026040000FD4000D0C0F03F4022100000F40353000D
- EC000048040200807E602740033B000012810000A03F9806600A002019080000
- FAA3F669800BE5054D130062430000D01FB58F0030FF0F9010040000FD410000
- 00C9400000D01FB54F0110000024040100407FD4BE138000002021080000FAA5
- D669801BE4294D130052800000A05F6A9D0670E0E33A00009008040000FD52EB
- 0800C3FF0089410000D02F0400009004040000FD52EB140001004062DCAA3D02
- 407F9C2737689AD5B096BCB46902400A300200D03FB54D039C23E9FC01128300
- 00A07F6A9B0660F81F2041080000FAA7B6110002008004210000E81F02000088
- 0E010040FF30050000D1611700401C6AD909708D5C55FE73F00A009281110080
- 38D4320D7082A4F3074810460000E2F028B95DD32C1A073ADF6C9A0000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 000000000DCB2CF3FF06FB5A956F238E1F0000000049454E44AE426082}
- FileName = 'E:\AErender CC 2018\icons8-settings-512.png'
- end>
- Align = Client
- HitTest = False
- MarginWrapMode = Fit
- Margins.Left = 2.000000000000000000
- Margins.Top = 2.000000000000000000
- Margins.Right = 2.000000000000000000
- Margins.Bottom = 2.000000000000000000
- Size.Width = 26.000000000000000000
- Size.Height = 26.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- WrapMode = Place
- object settingsIconFill: TFillRGBEffect
- Color = claWhite
- end
- end
object SettingsIcon: TPath
Align = Client
Data.Path = {
@@ -17592,336 +18629,11 @@ object MainForm: TMainForm
end
object infoButton: TButton
Align = Center
- Margins.Left = 175.000000000000000000
+ Margins.Left = 176.000000000000000000
Size.Width = 30.000000000000000000
Size.Height = 30.000000000000000000
Size.PlatformDefault = False
OnClick = infoButtonClick
- object Image2: TImage
- MultiResBitmap.Height = 512
- MultiResBitmap.Width = 512
- MultiResBitmap = <
- item
- Width = 512
- Height = 512
- PNG = {
- 89504E470D0A1A0A0000000D4948445200000200000002000806000000F478D4
- FA000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 251A49444154785EEDDD09F86E555D2F700C5054440514079CD13015E7141145
- 51C129A7D44AADAE6975337BEE2D6FE3CDA6A7ECA64D5A6966A537B3D4343415
- 714264709ED112F42A084E80CC20F3FDFEF67E8F1CE07FCEF90FEFFBFEF7DAFB
- F3799EEFB3D7FA53729EC3FFDDEBF7AEBDD6DA3B010000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 000000000000003030D79B5D8171D835D97DAB6BB97172FDBEB9D3CD92FADC6F
- FDCF2F482E4BAE4ACEA91FC4A5C9857DF3FBFF7CCB15180105000CDB0D923B24
- B74DF6DE2A7B5D2B5B7EBE47B248E72567CE72D62CD76E574E4F4E492E498001
- 5200C0E6AA6FE2B74BEEB855EEB4556E9DB4FA39AD19856F245F9DE56BD7CAD7
- 13330AB0491400B01CBB24774BEE95DC7B76BD675283FFCEC9145D9E54117062
- F2F9E4B3B3EBC949FD3360811400307FFB2407CC52037DE51E494DE7B363DF4B
- BE987C2EA982A0AE95EF24C09C28006063EA9B7D7DA37F487260F2D0A4BED533
- 7FA726C7271F4E8E4DAA38B82201D64101006B7393E4A0A406FB1AF41F34FB19
- CB777EF2D1E484A40A826AD7CF80555000C0F6DD283924393C795852CFEDA7FA
- CC7EE86A36A0D6137C287977F2C1E4A20458810200AE6BFFE4B1C996417FB784
- F6D45A822A06DE99BC2BF97202CC2800A0FF96FFA864CBA05F5BF1189F2A006A
- 66E0C8C4EC0093A70060AAF64C9E923C3D7978E25BFEB4D4EC4015016F4E8E48
- BE9BC0A4280098923A06F7C9C9339343933A8407EA30A2F7266F4CDE969C9BC0
- E8290018BB3A1AF749C933924727F6E2B33D7574F17B922A06DE9ED85500D090
- 1AE46B6AFFDF938B933A925664ADA935026F4DEA7769CBCB940018A05ABDFFA7
- 499D18B7D20D5D64BDF976F2D2A47EC70018801B26CF496ABBD74A376E9179E6
- CAE498E4D949FDEE01B06475CEFE2B92B393956ED4228B4EED1C787952EF7A00
- 6081EA396C7DF3FA48B2D20D5964B352EF27A8DF4D3B4B00E6A8B6EFFD5A727A
- B2D2CD576428A91716BD28A9DF5900D6E90EC99F27E7252BDD6C45869AFA9DAD
- DFDDFA1D0660951E98FC4B5207B4AC7473156925F53B5CBFCBF74F0058411D4A
- F584C46A7E196B3E903C2E0160E6B0E463C94A374D91B1A516B1D6A9940093F5
- 88E4B864A59BA4C8D8736C522FA202988C83929A0E5DE9A62832B5D48B881E92
- 008C562DEEABF7B1AF741314997ADE993C2001188DBB27F566B5956E7A227275
- EAA8E1B724FB2500CDAAC3505E96D42B5657BAD989C8CAA9CF4C7D761C280434
- 6597E417923392956E6E22B2BAD467E867931F480006ED90E4C464A59B9988AC
- 2F9F4AEAB3053038F5CCF2ADC94A372F11994FEA33769704366CE7D915D6EB46
- C91F26FF37B967FD0058985A50FBFC64B7A40E14BA3C8175A9E35761BDEA34B3
- 572577EE7AC0327D39A962E0835D0FD6C8C212D663CFE41F93A312833F6C8E7A
- EC56076ABD26B15B80353303C05A3D33F9CB649FAE070CC1B7925F4CEA0C0158
- 150500ABB56FF2D7C98F743D60888E485E907CA3EBC1765804C88ED463A29F4F
- FE3D39A07E000CD6FEC9F392B393DA3A08DB640680EDB95DF2BAA4DEDA07B4E5
- FDC94F27A7753DB8168B00D99667249F4D0CFED0A64393FA0C3FB5EBC1B52800
- B8B63D92D7266F4C6E5E3F009A553B766A6160ED14D8BD7E005B7804C0D61E9C
- BC3E71D2188C4F9D1BF0ACE4635D8FC9B30890522FEFF9DF497DF3DFBB7E008C
- 4ECD06FCB7E48AE484A48E1666C2CC005007F9FC53F290AE074CC1B1C9739253
- BA1E93A40098B6DAD35F67F8DFB4EB0153724EF2ECE49D5D8FC9F108609A6AF1
- E7EF277F93D44B4580E9A9CFFE8F25F545B066043C1298183300D3B357520BFD
- 0EEF7A00FD2C40CD06D4AC0013A1009896FB24F53EF13B753D80AB7D25795A52
- 67073001CE01988E9F4C6AE5AFC11F58496DFFAD7BC44F743D46CF1A80F1DB35
- 7979F247B336C0B6D43DA266016ACB601D257C65C2487904306EB748EAED60B6
- F8016B550B03EB18E133BB1EA3A30018AFBB25EF4A9CEA07ACD7C9C9E3675746
- C61A80717A58F2E1C4E00F6CC45D935A177050D763541400E3530B78DE93D433
- 3C808DAAE3C1DF97D41B4219118B00C7E5B792BF4AEA6C7F8079A97BCA8F2697
- 24C7D50F689F02601C6AE5EEDF25BF9258D7012C42DD5B1E95DC363932B143A0
- 71068BF6D539FEFF96D4071360198E4A9E9E9CDFF5689202A06DB74CEA835827
- FC012CD3A792C312DB041BA50068D76D923AA863FFAE07B07C5F4C6AF6F19B5D
- 8FA62800DA74C7E40389637D81CDF6E5A48A8053BA1ECDB00DB03D3F987C2831
- F80343B05F52F7A43A7C8C86980168CBBD92F726FB743D80E1F856F2E8E4C4AE
- C7E0990168C703920F26067F60886E95D43DEAFE5D8FC15300B4E1A1492DF873
- BA1F30647B2575AFAA7B1603E711C0F0D507A9B6FADDA8EB010CDF85496D113C
- BEEB31480A80617B6052CFFCEBB01F80969C9BD4EE804F743D064701305CB5E0
- EFE8A4A6D4005A74467268F2F9AEC7A0280086A9B6D31C9BD4497F002DABDD01
- 0727755E0003A200189EDADF5F7B6AF7ED7A00ED3B2D392839B5EB310876010C
- 4B0DFAF5CCDFE00F8C49DDD36A77401D61CE40280086E316C97B92BB743D8071
- A91303EB1E57F73A064001300CB5CABFBEF9DFBDEB018CD33D92772776360D80
- 0260F35D3F796B72EFAE07306EF74BDE94ECDCF5D834FE036CBE57274FED9B00
- 93508F3AEB51C03BBB1E9B4201B0B97E3DF95F7D136052EAA0B34B92E3BA1E4B
- A700D83CCF4AFE3AB1151398AA3A24A8CE077050D02630F86C8E47264726F5FC
- 1F60CA2E4E1E917CB4EBB1340A80E5ABAD302724B6C200F4EAC8E087244E0B5C
- 2205C072D5A05F837F1501005CAD06FF2A02AA1860096C035C9E9AEE3F2231F8
- 035C57DD1BDF92ECDAF558388B0097E72F93A7F54D00567087E426C9515D8F85
- 52002CC74F267FD43701D88E0727272776062C9835008B77DFA4F6B9DEA8EB01
- B023172507269FEB7A2C840260B1F64C3E91D42B7E0158BD5A14F880E4DCAEC7
- DC5904B838F578E59F13833FC0DAD5A2C03724BEA82E8835008BF3FBC973FB26
- 00EB70D7E4AAE498AEC75CA9AC16E34792DAF2E7EF176063AE4C9E90D4E9A9CC
- 91016AFE6ACAFFD389F75D03CCC7D9492DA83EA5EB3117D600CCD796E7FE067F
- 80F9B979F2BAC463EB39F297395FBF9D3CA76F023047774CEAF5C1C7763D36CC
- 2380F9A93DAB1F4A76E97A00CCDB65C941C9C7BB1E1BA200988F3ABAF233C99D
- BB1E008B52A704DE2FB9A0EBB16E1E01CCC7DF26F53E6B00166BAF649FE4ED5D
- 8F753303B071CF48DED8370158927AB9DA5BFB26EBA100D898DB259F4D6A852A
- 00CBF3DDE480E4F4AEC79AD906B87E553CD5B614833FC0F2D5BB56EA1EEC8BEC
- 3A5903B07EFF3DF9C5BE09C026A885D7DF483ED9F5581395D3FAEC9B7C21D9A3
- EB01B059EA6D813F945421C01A7804B03E7F9D18FC01365F9DBCFA8ABEC95A28
- 00D6AE56FDD7CB7E001886A7CEC21A7804B036B5E8E48B49ED41056038EA11C0
- 3D9273BA1E3B6411E0DAD4D4FF43FB2600035227B2D62141FFD1F5D8213300AB
- F7E8E4A8C4DF19C0305D953C32F960D763BB0C66AB73E3E47389B3FE0186EDA4
- E4DEC9F7BA1EDBE411C0EAFC41F2C4BE09C080D563809A0938BAEBB14D660076
- 6CBFE4C4E4065D0F80A1AB6FFF774FBED6F558916D803BF6D2C4E00FD08EDD92
- 3FE99B6C8B1980ED3B34795FDF04A0310F4F3ED437B93605C0B6D5FA88CF24F7
- EC7A305C5724C726C727DF4CBE932CC22D935B2707270725D61031749F4E1E90
- 5CD9F56095EA653FB5904464A8B928F9C364EF64D96E91BC24A93FC34A7F3691
- A1E479092B3003B0B29B25B595A46E723044F5CDE6C9C9A95D6FF3DC29796B72
- 9FAE07C3F3EDE46EC9795D8FEFB3087065BF9318FC19AA0F24350DBFD9837FF9
- 6A52A763D69F0986A88E6EFFEDBEC9D6CC005CD7FE491DFAB36BD78361F952F2
- A0A45E813A24F546B64F24B56D1686E692E45EC9C95D8F8E1980EBFAE3C4E0CF
- 10D5F3CC9F4E8636F897FA33FD54DF84C1A9ADDC756F672B0A806BFAE1C4AB7E
- 19AA23928FF4CD413A21A93F230CD15392FBF54D8A02E09A7E2FF15884A1FAFB
- D975C85AF833324D756FAF7B3C3306BBABD5BEE6E3FA260CCE85496DF71BFA0B
- 4E6E989C91D40BB460880E4C863C93B6346600AE562FFC81A1FA72D2C2DBCD2E
- 4EBED2376190CC02CC28007A8F980586EA5BB36B0BEA344218AAC7240FEB9BD3
- A600E8F9F6CFD09D35BBB6A0A53F2BD3F4FBB3EBA4290076DAE9F0A49EFF0330
- 0DF592A047F5CDE99A7A01605528C0344D7E1660EA05C0E393DAFB0FC0B4D46E
- 80C3FAE6344DBD00F895D91580E9F9F5D97592A65C003C3039A46F0230413506
- DCB76F4ECF940B8017CDAE004CD764C782A91600B74F9EDA370198B067243526
- 4CCE540B805F4E76E99B004C588D052FEC9BD332C502E066C9CFF44D00D8E9E7
- 921A1B26658A05C0F392DDFB2600EC7493A4C68649995A0170FDE47FF64D00F8
- BE7A0C5063C4644CAD00F8B1E4367D1300BEAF1602D6183119532B007E617605
- 806B9BD41831A502E080E4417D1300AEA3C6887BF5CDF19B5201F0FCD91500B6
- 65328B01A75200DC307976DF04806DAAB1A2C68CD19B4A01F0A3C9E4F67802B0
- 667B26933829762A0580E97F00566B1263C6140A80FD9383FB2600ECD0C392BB
- F5CDF19A420130B9D39D00D890EB25A31F3BC65E00D4A94E3FD537A1692D2D4A
- 9AC4022A46AFC68E519F0C38F602E0C9C9DE7D139A76DBD9B5052DFD59615B6E
- 993CA16F8ED3D80B801F9F5DA175754C694D4B0E5DFD19EFD437A1793F31BB8E
- 520B3794F5DA23F976B25BD783F6DD3FF954DF1CACFB259FEC9BD0BC8B937D92
- F3BBDEC88C7906E04712833F63F2F4D975C89E39BBC218D47A9627F6CDF11973
- 01E046C4D8FC6252DF4686EAD6C90BFA268CC63366D7D1196B0150A7FE3DA66F
- C268EC9EFC65DF1C9C7A9CF817C98DBB1E8CC7E1493D521E9DB11600B5FA7FD4
- DB3798AC9AD9FAF5BE3928F5671AED372526ED06498D29A3B3F3EC3A367F94DC
- B56FC2E81C9AD4FA96A393ABEA079BA8BE44BC24797132E645C54C5B7DA17C43
- DF1C8F317E60F74ABE99ECDAF560BC8E495E947CA2EB2DDF03939725756C2A8C
- D9A5C9AD92B3BBDE488CF111404DD518FC998287271F4BDE97D402C1FB248B5C
- 2458FFDBF5EFF8A5A4FE9D1F4D0CFE4C41CD003CA56F8EC7186700DE9D1CD637
- 01602E6A6C796CDF1C87B11500B54AFACCA4166D00C0BC7C2FD933A9C3814661
- 6C8F006A4AD4E00FC0BCD5C2DB47F6CD71185B01F0F8D91500E66D548F97C7F6
- 08E02BC99DFB2600CC558D31FBF5CDF68D690660FFC4E00FC0A2DC6596511853
- 0160E53F008BF6B8D9B579632A0046F31F0580C11ACD97CDB1AC01A857367E37
- F1FA5F0016A9B601D676C0DA16D8B4B1CC00D4D60C833F008B565F38477102E6
- 580A807A5D23002CC3284E041C4B0170F0EC0A008B368A31670C6B006E9A9C95
- 8CF5D5C6000CCBE5C9CD930BBA5EA3C63003F0A0C4E00FC0B2EC92D4D8D3B431
- 140007CDAE00B02CCD8F3D0A000058BBE6C79ED6D700D4D4FF3949BD06180096
- E5BCA4CE03B8A2EB35A8F51980FB24067F00966D8FE45E7DB34DAD170007CEAE
- 00B06C4D3F0668BD00F0FC1F80CDA200D8440A0000364BD36350CB8B006F957C
- B36F02C0A6B8657246DF6C4BCB33004D2FBE0060140E985D9BA3000080F5BBF7
- ECDA1C050000AC5FB36351CB0540B3D32E008C46B30540AB8B00EB450CF516A6
- 1B743D00D81C172737499A3B11B0D51980BB25067F0036DB0D93FDFA665B5A2D
- 003CFF0760289A5C08A80000808D69724D5AAB05800580000C45935F4A150000
- B031F79C5D9BD2E22E805D935A75B973D70380CD7579528B01EBDA8C1667006E
- 9718FC01188ADA9ABE6FDF6C478B05C01D675700188AE6C6A6160B803BCDAE00
- 30140A8025300300C0D034F7E5540100001B670660091400000C8D0260091400
- 000C4D738F005A3B07A05E007451D262E102C0785D99D459009776BD06B43690
- D6B77F833F00435363D3EDFB661B5A9B017864F2FEBE09ACC325C949C9B7930B
- EB0771E3649FC46BB661636A8C3ABA6F0E5F6B05C0D39337F54D60156AC07FF7
- 2C75633A39A9A9CA95D437982A021E911C9E3C36A9A3B781D5F9D1E42D7D73F8
- 5A9B4EDF7B7605B6EFF4E45792DB244F4E5E957C29D9D6E05FEA9FFD57F2CAE4
- 49C9AD921725DF48801DDB6B766D820200C6E582E497933B277F967C3759AFFA
- FFFDD3A4FEB77E35A9FF6D60DB6E31BB36A1B50260CFD915B8AE9AE2DF3FF9F3
- 649E2B91EB31C24B931F4A9A79BE099BC00CC00235F5970B4BF407C9A3929AFA
- 5F94AF278F4E5ED2F5806B6BEA4B6A6B05C02D6757A07745F273C98B93ED3DDF
- 9F97FAF7FD66F282591BB89A47000BE411005CD30B9357F7CDA5FA9BA4FEDDC0
- D53C02582005005CEDF7925AB1BF59EADFFD277D1388A60A80D6CE013837D9A3
- 6FC2A4D5815887259B3D0DBF73F2BEE490AE07D37676D2CC17D5960A80EB27B5
- 1A19A6EEFCE4EEC92217FCAD451D7FFA8564F7AE07D35687675DDE3787ADA547
- 00F5920560A79D7E3719CAE05F4E4D6A1702D01FADDD849666006E9B9CD63761
- B26AE0AF837986F6C6B12AD0BF92DCBAEBC174D5099AF5AE8DC16B6906A09E35
- C2D4D5E97E437CDDE8C5491D400453D7CC0BB55A2A006A0D004C590DFCAFEB9B
- 83F4DAE4B2BE0993D5CC97556B00A01D472667F5CD413A23A9B70EC29435B318
- B6A502A0B52D8B306F55000CDD51B32B30702D1500F6FF3375C7CCAE43F681D9
- 15A6AA99B1AAA50200A6EC7BC9497D73D0EACF38C4458AB02CCDCC56B7540034
- B3B71216E0E464192FFBD9A83A99B085420516A599F56A2D1500BBCCAE3045B5
- C0AE1567CEAE3045CDEC586BA900A8E31561AA2E985D5B504715C35435335659
- 03006D50000073D55201E080110086AE99B1AAA502A089B72B013069CDEC8269
- A900B870760580A1AAF76234C11A0000989FAB66D7C16BA900386F760580A16A
- 66AC6AA90068A6AA0280A16BA90068E6B90A0093D5CC96DD960A00E78B033074
- 751C76135A2A009AF94B0560B22E995D07AFA502A0A593D00098A67A7367135A
- 2A002E9A5D0160A89A39B3A6A502A08E57B4151080A1FA6ED2CCA9B52D1500A5
- A557A202302D550034A3B502A0A9BF5C0026E5ACD9B509AD15004DFDE5023029
- 67CEAE4DF0080000E64301B040660000182A6B0016C81A000086CA1A8005F208
- 0080A1FACEECDA048F0000603E3C02582005000043A50058A053675700189AA6
- C6A8160B802BFB26000C46BDB15601B0409726DFE89B003018A727F5CE9A66B4
- 560094AFCDAE003014CD8D4D0A0000D83805C012280000181A05C01228000018
- 9AAFCEAECD68B10068EE2F1980D13303B004660000181A05C012D43ECBCBFB26
- 006CBA1A934EEB9BED68B100A8BF682702023014A724CD7D316DB1002827CEAE
- 00B0D9BE30BB36A5D502E0F3B32B006CB6CFCEAE4D510000C0C67C6E766D8A02
- 000036A6C931A9D502E0A4E4E2BE09009BA6C6A22FF7CDB6B45A00D46ACB2FF6
- 4D00D8343516D5AB809BD36A01503C060060B3353B1629000060FD9ADC015014
- 0000B07E4DEE00282D1700CD565D008C8647009BE03B89238101D82C7504F019
- 7DB33D2D1700E584D9150096EDF8D9B549AD1700C7CDAE00B06C0A804D640600
- 80CDA200D844B5FAF282BE09004B736ED2F49B695B2F00EAF4A50FF74D00589A
- 8F244D9E00B845EB0540F1180080656B7EEC194301D0F43318009AD4FC22F431
- 1400CD4FC300D0947A21DD47FB66BBC650009C9F3816188065F94C7261DF6CD7
- 180A8072CCEC0A008B368A31672C05C07B66570058B4518C396329008E4E2EEE
- 9B00B0301725660006A4067F8F010058B4FAC27949DF6CDB580A8072E4EC0A00
- 8B329AB1664C05C0BB6757005894D18C35632A004E4ABED2370160EE4E4E4633
- CE8CA9002847CDAE00306FA37AD43CB602E05DB32B00CCDBA8BE648EAD0018CD
- EA4C0006A5769BD518331A632B006A7FE607FB2600CCCDE8CE9B195B0150DE34
- BB02C0BCBC79761D8D311600FF9E5CD6370160C32E4D8EE89BE331C602E0ECE4
- BD7D130036ACCEFE3FA76F8EC7180B80E2310000F3F2C6D97554C65A00D4548D
- DD00006CD4F792B7F7CD71196B01706EE215C1006C541DFE735EDF1C97B11600
- 65945336002CD5E856FF6F31E602A0A66C6AEA0600D6A3CE96F98FBE393E632E
- 00CE4F1C0D0CC07AD5187241DF1C9F311700E55F67570058AB37CCAEA334F602
- E06DC9197D130056EDDBC93BFAE6388DBD00A8D39B5ED7370160D55E9B8CFA54
- D9B11700E535C9557D130076A8C68C7FE89BE3358502E04BC9717D130076A8DE
- 2A7B52DF1CAF291400E56F675700D8919A391EBDA914006F4DEA254100B03DDF
- 4D6ACC18BDA914001727AFEF9B00B04D35564CE210B9A91400E5EF665700D896
- C98C15532A003E9F7CB46F02C0757C3839B16F8EDF940A80F237B32B005CDB2B
- 67D749985A015047037FBD6F02C0F79D9AFC4BDF9C86A915007532E0CBFB2634
- E506B36B0B769B5DA125AF482EEF9BD330B502A0D4FECED1BEDD89D1DA7D766D
- C14D665768C539C9E4168A4FB100A8FFD00E06A235379B5D5B70D3D9155A515F
- 0CCFED9BD371BDD9756A6E9F7C25D9A5EBC1F0D5E1247BF5CDC1AB43B75A2A58
- 98B69AF6BF4B526B0026658A3300A5FE434FE2A4274663CFE4967D73D0F6490C
- FEB4A4DEF93FB9C1BF4CB500287F3CBB422B0E9E5D87ECE1B32BB4E22F66D7C9
- 997201F0E9A4DEF804AD3874761DB247CDAED082F72535164CD254D7006CF1F8
- E41D7D1306EF3BC9BEC9655D6F78AE9F9C9EECDDF560F81E93BCB76F4ECF9467
- 00CA3B938FF44D18BC5A035045EB50D59FCDE04F2B8E4F263BF897A91700E577
- 665768C18B66D721FAB5D9155AF0DBB3EB64290076DAE93DC9B17D1306EFA064
- 88CFD90F4F1ED43761F06AFDD7D17D73BAA6BE06608B5AB96C4120ADF8AFE480
- 64286B01EA98E27ADBE65DBB1E0CDF43937A04306966007AC724EFEF9B3078FB
- 272FEE9B83508FD10CFEB4E2A864F2837F310370B5039313FA260CDE15C9E392
- 7A84B5996AEAFF5D897B092DB82A7970F2B1AE37716600AEF6E1E4C8BE0983B7
- 73F2A6E45E5D6F73D4BFBB5EB16DF0A715B5EDDBE03FE3837B4DF74F3E9EF87B
- A115A7258F4E6A5DC032D56388DA4255E712400BEADBFFFD92CF743DCC005CCB
- 2793B7F54D68420DC0C725CB5C815F8FCBEADF69F0A725FF9618FCB7E29BEE75
- D562A62F24BB763D68C325499D11F0575D6F31EA7EF13F92FF93F87CD092FA7C
- FC50F2FFBA1E9D7A8EC835D56B57EB7DE60FE97AD0867AB5752D0AACED4DF58C
- F3AC649EEE9EBC31F9F9C47D83D6BC2CA91900B66206606555009C9CDCA2EB41
- 5B2E4D5E9BD41B2FBF5A3FD8807A4FFA6F24CF49EAAC7F68CDB7921F4CCEEB7A
- 7C9F0260DB9E9FBCBA6F42936AAB609D6FF1FAA4F63ED7CB8456A3DEE97F5852
- 83FE2312DFF869D973937FEC9B6C4D01B06D75D3FB44729FAE076DAB15D027CE
- F2A5A4BE155D9094DD935B27774B6A6BDF3D12F706C6A0EEE1B540F6CAAEC735
- F8906F5F7DFBF940DF04A02155F43E2CA91D2BACC036C0EDAB9745BCA56F02D0
- 905AB46AF0DF0E33003B76A7E48BC96E5D0F80A1BB28A99D2BA7763D566471CF
- 8E9D93DC3839B8EB0130747F98BCBD6FB22D660056E786C9E792FDBA1E004355
- C762D7E2ED3AFC87EDB00660752E4E7E36A94525000C53DDA36B0BB7C17F153C
- 0258BDAF2575F679BD4C0280E17955F2CABEC98E7804B036374FEA3D01B5671A
- 80E1383DA9F3FE9DF8B74A1E01ACCDD9C90BFB260003F282C4E0BF060A80B5AB
- 73018EE89B000CC09B13AF725F238F00D6E736499D0D502F0D0260F3D4CC6C1D
- 5FFDCDAEC7AA5904B83EE727F5DAE027763D0036CB2F251FEA9BAC851980F5AB
- BFBBF72687763D0096ED3DC9E1892DDAEBA000D898DB267540D09E5D0F806539
- 2BA9B7579AFA5F278B0037A6B69DD40141002CD7CF2406FF0DB00660E3FE33B9
- 5DE2802080E57875F2B2BEC97A7904301FBB279F4EBC2B0060B1EAACFF072417
- 763DD6CD2380F9B82079567259D70360112E4D9E9D18FCE7C02380F9A9F50057
- 268FEC7A00CCDB6F2575E80F73E011C07C554175747270D703605EEADEFAA8A4
- BE6831070A80F9BB43F299E4665D0F808DAA2D7FF74DBEDEF5980B6B00E6EF94
- A4D60338980260E3AE48EA9E6AF09F336B0016E3E4D9F590D91580F5F99DE41F
- FB26F3E411C0E2D4DFED3B92C7753D00D6AADEBCFAD4C48CEA02280016ABD601
- 7C22B94BD70360B54E4A7E3839B7EB3177D6002CD639C9D3928BBA1E00AB51FB
- FCEB9BBFC17F8114008BF7D9E4F97D138055786EF285BEC9A25804B81C9F4F6E
- 9E3CB8EB01B02D7F9EFC59DF6491AC01589EEB27EF4F1EDAF500B8B60F248F49
- 6AEB1F0BA60058AE5B2427245E1A04704D5F4E1E947CB7EBB170D6002CD719C9
- 636757007A5BEE8D06FF2552002C5F55B94F4C2EE97A00D356BBA4EA9E58F746
- 96C822C0CD516F0EFC6AF294C4631860AAEA809F6726B53E8A2553006C9EDA19
- 50B300F5762B8029FACDE4357D936553006CAEE3927D9207763D80E97865F21B
- 7D93CD60FA79F355117664F2E8AE07307E6F4FEAA43FDBFD36910260186E9AD4
- FED7FB753D80F1FA78526F4A7544FA26B30B6018EABCEBC313475F0263566B9F
- EA0DA906FF013003302CB7498E491C14048C4D6DF3AB9350BFDDF5D8740A80E1
- B97D727CB26FD70368DFA9C941C9695D8F41F0086078EA83F288E45B5D0FA06D
- DF480E4D0CFE03A30018A69A2AAB17629CD9F500DA5447FC1E9638E56F801400
- C3558B65EA6CEC5A2008D09ABA77D53DECC4AEC7E0280086ED13C9E3930BBB1E
- 401BEA9E55ABFD3FD9F5182405C0F0D582C0DA226826006841DDAB6ADABF5E7D
- CE80D905D08EFB2747257B753D80E1A9754B35F87FAAEB31680A80B6DC33796F
- 72ABAE07301CDF4CEA4873079A354201D09EBB26EF4BEABC0080213825A9379B
- 5AEDDF106B00DA7372F2B0C4070D18829312F7A4062900DA54D5767DE0BED8F5
- 0036476D577E78520798D1180540BBEA795B7DF02CB60136436D53766A69C314
- 006DAB15B7F55ACDDA1D00B02CEF4A6AF03FABEBD1A49D6757DA7569F2AF49ED
- 0CA8AD82008BF4CAE427934BBA1ECD52008CC395C93B92EF25F5D20DBB3B8079
- ABFBCCAF26BF955C553FA06D068AF17946F2BA64B7AE07B0711727CF49DED2F5
- 180505C038D57BB78F48F6EE7A00EBF79DE449C947BA1EA3A10018AFFD925AA8
- 53070701ACC797927A21D957BA1EA36217C078D5A11C07261FEA7A006BF3C1E4
- 2189C17FA42C021CB77A6EF7CFC91EC983EB0700ABF06749ADF4F72AF211F308
- 603A7E3C794D72A3AE07705D1724CF4BDED8F5183505C0B41C90D42ADE5A1F00
- B0B53AD3FFA989B7F94D843500D3F2B9E481499D1900B0C5DB93BA3718FC27C4
- 1A80E9A9C3826A7AAF0EF2A8170A990582E9BA227971F282C4C97E13E3E63F6D
- 8F4B5E9FDCBCEB015352E7F83F2BF12E9189F20860DAEA9C80FB24B60AC2B41C
- 9DDC3731F84F9847009C9BFC5352D37FF548C0EF048CD765C96F263F9FD4679F
- 09F30880ADD522A03A37C0E981303E75AA5F4DF97FB2EB31791E01B0B58F27F7
- 4BFEBEEB0163F1EAA43EDB067FBECF0C00DB52FB81EBA6B157D7035A7466F2FC
- A45E0E06D7A000607BF64D5E9B1CDAF58096BC37F9A9E49B5D0FAEC52300B6E7
- B4E4D1C9CF25E7D40F80C13B3BA9E37C0F4B0CFE6C93190056EB36C95F254FE9
- 7AC010FD5BF2C2E45B5D0FB64301C05AD5DA805724551000C3707A52A7F9BDAD
- EBC12AD8F3CD5AFD67F20F492D0EAC55C58A48D83C5726AF4AAA30FF6CFD0056
- CBCD9B8D7878523B05EED6F58065FAAFA456F81FD7F5608DCC00B011A7247566
- 407D0BF9E164D70458AC8B93972475A8CF57EB07009BE9F6C99B927ACBA088CC
- 3F5568BF21A9CF1AC0E01C927C2A59E9062622EB4B7DA60E4C0006ADCE97786E
- 527B9057BA9989C8EAF28DA43E4BCE6C61EEAC016011EAC6F5E9A4D607D4BA80
- 07247ED760F52E4D5E9A3C23F968529F2980E6EC97D40125F50C73EB6F372272
- CDD467E4CD497D660046A3CE0DF88F64A51B9FC8D4F3F6E43E09C0683D38794F
- B2D24D50646A7977F2C00460320E4E3E98AC745314197B3E901C94004CD6A392
- E393956E9222634B9DDCF788048099C726F5AD68A59BA648EBA9F7F33F260160
- 1BEE9FFC73525BA156BA918AB492FA1DFEA7C4E23E8035B85D527BA1CF4D56BA
- B98A0C35F53B5BBFBBF53B0CC03AED91BC28393559E9662B3294D4EF68FDAED6
- EF2C007352A70A3E3BF970B2D2CD5764B3724252BF9BDE8809B060F74A5E9E9C
- 95AC7443165974EA77EF2F92FA5D0460C96E98D47BD18F491C352C8B4EFD8E1D
- 9DD4EFDC0D120006E007933F49BE9DAC74F316596FEA77EA8F93BB26000C543D
- 877D5AF296E4A264A51BBAC88E52BF3BF5629E27279EED333AD79B5D61AC6E92
- 3C217966727862DA96EDF95E7264F2A6E41DC905098C92028029B969F2A4E4E9
- 499DC876FD042E49EA94BE1AF4DF969C97C0E8290098AA9B274F49AA183824D9
- 2D613AEA9B7E2DE6AB41FF88E49C04264501003BED74A3A48A807A17413D26D8
- 2F617CBE9CD4AB776B8ABFDE4259CFF861B21400705D55005421500541150655
- 20D09E1AE06BA0AF01BF06FE2A00801905006C5F3D1A78585205415DEF9DEC92
- 303C97279F4DEA4C88A3920F2535D50FAC4001006B73E3E4C0E4215BA5761AB0
- 7CB558AF8EE0ADA3A18F4D3E965C9800ABA000808DD939B967F2D0E4A0596E9F
- 307FF5A29DE392E3673931B92201D6410100F377CBA4CE873F60ABEB3D123B0D
- 56E7E2E40BC9E767F9DC2C6724C09C280060396AA6A08E91DD52146C49CD164C
- 754DC165497DABAF6FF25B0FF4B558CF377B583005006CAE1AFCF74DEEB855EE
- B4556E93FC40D2A27A71CE69C9D766F9EA56ED4AFDB35AB8076C0205000C5B9D
- 5658B304B74DF64E6E91ECB58DD43FBB59B24867276726F52ADC6BA77E5ED3F4
- D53E3DA96FF79726C0002900605C6A46A17625D4677B4B31506B0FEAB5C9A58E
- 43AE19852DFF77E5FCA4BE89D7B4FB966370EB39FC962D74754A5EBD1CA7FE99
- A979000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000008005D869A7FF0F9C4BF973
- 592608CB0000000049454E44AE426082}
- FileName = 'E:\AErender CC 2018\icons8-info-512.png'
- end>
- Align = Client
- HitTest = False
- MarginWrapMode = Fit
- Margins.Left = 2.000000000000000000
- Margins.Top = 2.000000000000000000
- Margins.Right = 2.000000000000000000
- Margins.Bottom = 2.000000000000000000
- Size.Width = 26.000000000000000000
- Size.Height = 26.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- object infoIconFill: TFillRGBEffect
- Color = claWhite
- end
- end
object InfoIcon: TPath
Align = Client
Data.Path = {
@@ -17990,680 +18702,647 @@ object MainForm: TMainForm
Stroke.Kind = None
end
end
- object XMLOpenDialog: TOpenDialog
- Filter =
- 'All compatible files|*.aer;*.xml|Launcher configuration|*.aer|XM' +
- 'L Launcher configuration|*.xml|All Files|*.*'
- Title = 'Launcher configuration'
- Left = 72
- Top = 488
+ end
+ object UpdateInfo: TStatusBar
+ Align = MostBottom
+ Position.Y = 604.000000000000000000
+ ShowSizeGrip = False
+ Size.Width = 1280.000000000000000000
+ Size.Height = 36.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'statusbarnogripstyle'
+ Visible = False
+ object downloadButton: TButton
+ Align = Client
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Size.Width = 1093.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Download from GitHub'
+ OnClick = downloadButtonClick
+ end
+ object UpdateLabel: TLabel
+ Align = Left
+ AutoSize = True
+ StyledSettings = [Family, FontColor]
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Size.Width = 163.000000000000000000
+ Size.Height = 36.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 14.000000000000000000
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ TextSettings.WordWrap = False
+ Text = 'New version is available!'
+ end
+ end
+ object TasksToolbar: TToolBar
+ PopupMenu = ToolbarPopupMenu
+ Size.Width = 1280.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ object TasksLabel: TLabel
+ Align = Left
+ StyledSettings = [Family, FontColor]
+ Margins.Left = 16.000000000000000000
+ Position.X = 16.000000000000000000
+ Size.Width = 120.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Tasks'
end
- object Button1: TButton
- Align = MostRight
- Enabled = False
- Margins.Top = 8.000000000000000000
- Margins.Right = 8.000000000000000000
- Margins.Bottom = 8.000000000000000000
- Position.X = 584.000000000000000000
- Position.Y = 8.000000000000000000
- Size.Width = 109.000000000000000000
- Size.Height = 30.000000000000000000
+ object RemoveTaskButton: TButton
+ Align = Right
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 1172.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 104.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'removebuttonstyle'
+ Text = 'Remove Task'
+ TextSettings.Font.Size = 18.000000000000000000
+ ParentShowHint = False
+ ShowHint = False
+ OnClick = RemoveTaskButtonClick
+ end
+ object AddTaskButton: TButton
+ Align = Right
+ Hint = 'Settings'
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 1068.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 96.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
- Text = 'Test Notification'
- Visible = False
+ StyleLookup = 'addbuttonstyle'
+ Text = 'New Task'
+ TextSettings.Font.Size = 18.000000000000000000
+ ParentShowHint = False
+ ShowHint = False
+ OnClick = AddTaskButtonClick
end
end
- object launcherLayout: TLayout
+ object TasksTreeView: TTreeView
Align = Client
- Size.Width = 701.000000000000000000
- Size.Height = 515.000000000000000000
+ Margins.Left = -1.000000000000000000
+ Margins.Top = -1.000000000000000000
+ Margins.Right = -1.000000000000000000
+ Margins.Bottom = -1.000000000000000000
+ PopupMenu = TasksPopupMenu
+ Size.Width = 1282.000000000000000000
+ Size.Height = 538.000000000000000000
Size.PlatformDefault = False
- object inputFileLayout: TLayout
- Align = Top
- Margins.Left = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Position.X = 5.000000000000000000
- Size.Width = 691.000000000000000000
- Size.Height = 60.000000000000000000
+ StyleLookup = 'treeviewstyle'
+ OnDragDrop = TasksTreeViewDragDrop
+ OnMouseMove = TasksTreeViewMouseMove
+ AllowDrag = True
+ AlternatingRowBackground = True
+ ItemHeight = 24.000000000000000000
+ OnDragChange = TasksTreeViewDragChange
+ OnKeyDown = TasksTreeViewKeyDown
+ Viewport.Width = 1282.000000000000000000
+ Viewport.Height = 538.000000000000000000
+ object TasksIsEmpty: TLayout
+ Align = Client
+ Size.Width = 1280.000000000000000000
+ Size.Height = 537.000000000000000000
Size.PlatformDefault = False
- object InputLabels: TLayout
- Align = Left
- Size.Width = 113.000000000000000000
- Size.Height = 60.000000000000000000
+ TabOrder = 0
+ object TasksIsEmptyLabel: TLabel
+ Align = Center
+ AutoSize = True
+ StyledSettings = [Family, FontColor]
+ Margins.Right = 112.000000000000000000
+ Size.Width = 177.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
- object projectPathLabel: TLabel
- Align = Client
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 33.000000000000000000
- Size.Width = 108.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- Text = 'Project file path: '
- end
- object outputPathLabel: TLabel
- Align = Client
- Margins.Top = 33.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 108.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'Label2Style1'
- Text = 'Output file path:'
- end
+ TextSettings.Font.Size = 24.000000000000000000
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ TextSettings.HorzAlign = Center
+ TextSettings.WordWrap = False
+ Text = 'No active tasks.'
end
- object pathLayout: TLayout
- Align = Client
- Size.Width = 465.000000000000000000
- Size.Height = 60.000000000000000000
+ object TeskIsEmptyAddLabel: TLabel
+ Align = Center
+ AutoSize = True
+ Cursor = crHandPoint
+ StyledSettings = [Family, FontColor]
+ HitTest = True
+ Margins.Left = 185.000000000000000000
+ Size.Width = 106.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
- object outputPath: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 33.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 455.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- end
- object projectPath: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 33.000000000000000000
- Size.Width = 455.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- OnDragOver = projectPathDragOver
- OnDragDrop = projectPathDragDrop
- end
+ StyleLookup = 'linklabelstyle'
+ TextSettings.Font.Size = 24.000000000000000000
+ TextSettings.Font.StyleExt = {04070000000000000004000000}
+ TextSettings.HorzAlign = Center
+ TextSettings.WordWrap = False
+ Text = 'Add one?'
+ OnClick = AddTaskButtonClick
end
- object fileChooseLayout: TLayout
- Align = Right
- Position.X = 578.000000000000000000
- Size.Width = 113.000000000000000000
- Size.Height = 60.000000000000000000
+ object Label5: TLabel
+ Align = Center
+ AutoSize = True
+ Enabled = False
+ StyledSettings = [Family, FontColor]
+ Opacity = 0.500000000000000000
+ Size.Width = 290.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
- object openFile: TButton
- Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 33.000000000000000000
- Size.Width = 103.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- Text = 'Choose file...'
- OnClick = openFileClick
- end
- object saveFile: TButton
- Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 33.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 103.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- Text = 'Choose file...'
- OnClick = saveFileClick
- end
+ TextSettings.Font.Size = 24.000000000000000000
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ TextSettings.HorzAlign = Center
+ TextSettings.WordWrap = False
+ Text = 'No active tasks. Add one?'
+ Visible = False
end
- end
- object properties: TGroupBox
- Align = Top
- Margins.Left = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 118.000000000000000000
- Size.Width = 691.000000000000000000
- Size.Height = 149.000000000000000000
- Size.PlatformDefault = False
- Text = 'Properties'
- object memUsageLayout: TLayout
- Align = Bottom
- Position.Y = 120.000000000000000000
- Size.Width = 691.000000000000000000
- Size.Height = 29.000000000000000000
+ object DebugLabel: TLabel
+ Anchors = [akLeft, akBottom]
+ AutoSize = True
+ Position.X = 32.000000000000000000
+ Position.Y = 495.000000000000000000
+ Size.Width = 64.000000000000000000
+ Size.Height = 16.000000000000000000
Size.PlatformDefault = False
- object memUsageLabel: TLabel
- Align = Left
- Margins.Left = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 15.000000000000000000
- Size.Width = 140.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- Text = 'Memory usage limit'
- end
- object memUsageTrackBar: TTrackBar
- Align = Client
- CanParentFocus = True
- Orientation = Horizontal
- Margins.Top = 5.000000000000000000
- Size.Width = 408.000000000000000000
- Size.Height = 17.000000000000000000
- Size.PlatformDefault = False
- Value = 100.000000000000000000
- OnChange = memUsageTrackBarChange
- end
- object memUsageInfo: TLabel
- Align = Right
- Cursor = crHandPoint
- HitTest = True
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 563.000000000000000000
- Size.Width = 113.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'linklabelstyle'
- TextSettings.FontColor = claWhite
- TextSettings.HorzAlign = Trailing
- Text = 'Unlimited'
- OnClick = memUsageInfoClick
- end
- object memUsageInfoEdit: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Right
- TextSettings.HorzAlign = Trailing
- Position.X = 349.000000000000000000
- Enabled = False
- Margins.Left = 13.000000000000000000
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 100.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- KillFocusByReturn = True
- OnValidate = memUsageInfoEditValidate
- OnExit = memUsageInfoEditExit
- end
+ TextSettings.WordWrap = False
+ Text = 'DebugLabel'
+ Visible = False
end
- object cacheUsageLayout: TLayout
- Align = Bottom
- Position.Y = 91.000000000000000000
- Size.Width = 691.000000000000000000
- Size.Height = 29.000000000000000000
- Size.PlatformDefault = False
- object cacheUsageLimitLabel: TLabel
- Align = Left
- Margins.Left = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 15.000000000000000000
- Size.Width = 140.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- Text = 'Cache usage limit'
- end
- object cacheUsageTrackBar: TTrackBar
- Align = Client
- CanParentFocus = True
- Orientation = Horizontal
- Margins.Top = 5.000000000000000000
- Size.Width = 408.000000000000000000
- Size.Height = 17.000000000000000000
- Size.PlatformDefault = False
- Value = 100.000000000000000000
- OnChange = cacheUsageTrackBarChange
- end
- object cacheUsageInfo: TLabel
- Align = Right
- Cursor = crHandPoint
- HitTest = True
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 563.000000000000000000
- Size.Width = 113.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'linklabelstyle'
- TextSettings.FontColor = claWhite
- TextSettings.HorzAlign = Trailing
- Text = 'Unlimited'
- OnClick = cacheUsageInfoClick
- end
- object cacheUsageInfoEdit: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Right
- TextSettings.HorzAlign = Trailing
- Position.X = 357.000000000000000000
- Position.Y = 5.000000000000000000
- Enabled = False
- Margins.Left = 13.000000000000000000
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 100.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- KillFocusByReturn = True
- OnValidate = cacheUsageInfoEditValidate
- OnExit = cacheUsageInfoEditExit
- end
+ end
+ end
+ object GridPanelLayout4: TGridPanelLayout
+ Align = Top
+ Position.Y = 32.000000000000000000
+ Size.Width = 1280.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ ColumnCollection = <
+ item
+ Value = 100.000000000000000000
end
- object GridPanelLayout3: TGridPanelLayout
- Align = Client
- Size.Width = 691.000000000000000000
- Size.Height = 91.000000000000000000
- Size.PlatformDefault = False
- ColumnCollection = <
- item
- Value = 50.000000000000000000
- end
- item
- Value = 50.000000000000000000
- end>
- ControlCollection = <
- item
- Column = 1
- Control = properiesLayout2
- Row = 0
- end
- item
- Column = 0
- Control = propertiesLayout1
- Row = 0
- end>
- RowCollection = <
- item
- Value = 100.000000000000000000
- end
- item
- SizeStyle = Auto
- end>
- object properiesLayout2: TLayout
- Align = Client
- Anchors = []
- Margins.Top = 10.000000000000000000
- Size.Width = 345.500000000000000000
- Size.Height = 81.000000000000000000
- Size.PlatformDefault = False
- object customProp: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Top
- Position.X = 10.000000000000000000
- Position.Y = 34.000000000000000000
- Enabled = False
- Margins.Left = 10.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 10.000000000000000000
- Size.Width = 325.500000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- TextPrompt = 'Separate flags with spaces!'
- end
- object customCheckbox: TCheckBox
- Align = Top
- Margins.Left = 10.000000000000000000
- Margins.Top = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Position.X = 10.000000000000000000
- Position.Y = 10.000000000000000000
- Size.Width = 325.500000000000000000
- Size.Height = 19.000000000000000000
- Size.PlatformDefault = False
- Text = 'Custom Properies'
- end
- end
- object propertiesLayout1: TLayout
- Align = Client
- Margins.Top = 10.000000000000000000
- Size.Width = 345.500000000000000000
- Size.Height = 81.000000000000000000
- Size.PlatformDefault = False
- object missingFilesCheckbox: TCheckBox
- Align = Top
- Margins.Left = 15.000000000000000000
- Margins.Top = 10.000000000000000000
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 15.000000000000000000
- Position.Y = 10.000000000000000000
- Size.Width = 315.500000000000000000
- Size.Height = 19.000000000000000000
- Size.PlatformDefault = False
- Text = 'Render with missing files'
- end
- object threadedRender: TCheckBox
- Align = Top
- Margins.Left = 15.000000000000000000
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 15.000000000000000000
- Position.Y = 58.000000000000000000
- Size.Width = 315.500000000000000000
- Size.Height = 19.000000000000000000
- Size.PlatformDefault = False
- Text = 'Enable CPU Multithreading'
- end
- object soundCheckbox: TCheckBox
- Align = Top
- Margins.Left = 15.000000000000000000
- Margins.Right = 15.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 15.000000000000000000
- Position.Y = 34.000000000000000000
- Size.Width = 315.500000000000000000
- Size.Height = 19.000000000000000000
- Size.PlatformDefault = False
- Text = 'Play sound when render finishes'
- end
- end
+ item
+ SizeStyle = Absolute
+ Value = 192.000000000000000000
end
- end
- object outputModuleLayout: TLayout
- Align = Top
- EnableDragHighlight = False
- Margins.Left = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 60.000000000000000000
- Size.Width = 691.000000000000000000
- Size.Height = 29.000000000000000000
- Size.PlatformDefault = False
- object outputModuleBox: TComboBox
- Align = Client
- DropDownKind = Custom
- Margins.Left = 10.000000000000000000
- Margins.Top = 3.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 3.000000000000000000
- Size.Width = 548.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- OnChange = outputModuleBoxChange
+ item
+ SizeStyle = Absolute
+ Value = 96.000000000000000000
end
- object outputModuleLabel: TLabel
- Align = Left
- Size.Width = 128.000000000000000000
- Size.Height = 29.000000000000000000
- Size.PlatformDefault = False
- TextSettings.WordWrap = False
- Text = 'Output Module Preset:'
+ item
+ SizeStyle = Absolute
+ Value = 96.000000000000000000
end
- end
- object renderSettingsLayout: TLayout
- Align = Top
- EnableDragHighlight = False
- Margins.Left = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 89.000000000000000000
- Size.Width = 691.000000000000000000
- Size.Height = 29.000000000000000000
- Size.PlatformDefault = False
- object renderSettingsBox: TComboBox
- Align = Client
- DropDownKind = Custom
- Margins.Left = 10.000000000000000000
- Margins.Top = 3.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 3.000000000000000000
- Size.Width = 548.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- OnChange = renderSettingsBoxChange
+ item
+ SizeStyle = Absolute
+ Value = 64.000000000000000000
+ end>
+ ControlCollection = <
+ item
+ Column = 0
+ Control = Label1
+ Row = 0
end
- object renderSettingsLabel: TLabel
- Align = Left
- Size.Width = 128.000000000000000000
- Size.Height = 29.000000000000000000
- Size.PlatformDefault = False
- TextSettings.WordWrap = False
- Text = 'Render Settings:'
+ item
+ Column = 2
+ Control = Label2
+ Row = 0
+ end
+ item
+ Column = 3
+ Control = Label3
+ Row = 0
end
+ item
+ Column = 4
+ Control = Label4
+ Row = 0
+ end
+ item
+ Column = 1
+ Control = Label6
+ Row = 0
+ end>
+ RowCollection = <
+ item
+ Value = 100.000000000000000000
+ end
+ item
+ SizeStyle = Auto
+ end>
+ object Label1: TLabel
+ Align = Contents
+ StyledSettings = [Family, Size, FontColor]
+ Margins.Left = 20.000000000000000000
+ Size.Width = 812.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Composition'
end
- object GridPanelLayout1: TGridPanelLayout
+ object Label2: TLabel
Align = Client
- Size.Width = 701.000000000000000000
- Size.Height = 243.000000000000000000
+ StyledSettings = [Family, Size, FontColor]
+ Size.Width = 96.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
- ColumnCollection = <
- item
- Value = 50.000000000000000000
- end
- item
- Value = 50.000000000000000000
- end>
- ControlCollection = <
- item
- Column = 0
- Control = compLayout
- Row = 0
- end
- item
- Column = 1
- Control = threadsLayout
- Row = 0
- end>
- RowCollection = <
- item
- Value = 100.000000000000000000
- end
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Start Frame'
+ end
+ object Label3: TLabel
+ Align = Client
+ StyledSettings = [Family, Size, FontColor]
+ Size.Width = 96.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'End Frame'
+ end
+ object Label4: TLabel
+ Align = Client
+ StyledSettings = [Family, Size, FontColor]
+ Size.Width = 64.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Split'
+ end
+ object Label6: TLabel
+ Align = Client
+ StyledSettings = [Family, Size, FontColor]
+ Size.Width = 192.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Progress'
+ TabOrder = 0
+ end
+ end
+ end
+ object TasksPopupMenu: TPopupMenu
+ OnPopup = TasksPopupMenuPopup
+ Left = 224
+ Top = 288
+ object TaskItemDisplay: TMenuItem
+ Enabled = False
+ Text = '[item]'
+ end
+ object TasksPopupSeparator1: TMenuItem
+ Text = '-'
+ end
+ object AddTaskPopupItem: TMenuItem
+ Text = 'New Task'
+ OnClick = AddTaskButtonClick
+ end
+ object EditTaskPopupItem: TMenuItem
+ Text = 'Edit Task'
+ end
+ object DeleteTaskPopupItem: TMenuItem
+ Text = 'Delete Task'
+ end
+ object TasksPopupSeparator2: TMenuItem
+ Text = '-'
+ end
+ object ToTopPopupItem: TMenuItem
+ Text = 'ToTopPopupItem'
+ end
+ end
+ object ToolbarPopupMenu: TPopupMenu
+ Left = 224
+ Top = 336
+ object ToolbarIconsOnly: TMenuItem
+ AutoCheck = True
+ GroupIndex = 10
+ RadioItem = True
+ Text = 'Icons Only'
+ end
+ object ToolbarIconsAndText: TMenuItem
+ AutoCheck = True
+ GroupIndex = 10
+ RadioItem = True
+ IsChecked = True
+ Text = 'Icons and Text'
+ end
+ object ToolbarTextOnly: TMenuItem
+ AutoCheck = True
+ GroupIndex = 10
+ RadioItem = True
+ Text = 'Text Only'
+ end
+ end
+ object XMLOpenDialog: TOpenDialog
+ Filter =
+ 'All compatible files|*.aer;*.xml|Launcher configuration|*.aer|XM' +
+ 'L Launcher configuration|*.xml|All Files|*.*'
+ Title = 'Launcher configuration'
+ Left = 224
+ Top = 192
+ end
+ object TaskEditorPopup: TPopup
+ ClipChildren = True
+ Placement = Center
+ PlacementTarget = TasksTreeView
+ Position.X = 290.000000000000000000
+ Position.Y = 116.000000000000000000
+ Size.Width = 640.000000000000000000
+ Size.Height = 384.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'popupbackgroundstyle'
+ TabOrder = 55
+ OnPopup = TaskEditorPopupPopup
+ object TaskEditorTabControl: TTabControl
+ Align = Contents
+ Margins.Left = -2.000000000000000000
+ Margins.Top = -2.000000000000000000
+ Margins.Right = -2.000000000000000000
+ Margins.Bottom = -2.000000000000000000
+ Size.Width = 644.000000000000000000
+ Size.Height = 388.000000000000000000
+ Size.PlatformDefault = False
+ TabIndex = 0
+ TabPosition = Dots
+ OnChange = TaskEditorTabControlChange
+ Sizes = (
+ 640s
+ 384s
+ 640s
+ 384s)
+ object TaskEditorStepOne: TTabItem
+ CustomIcon = <
item
- SizeStyle = Auto
end>
- object compLayout: TLayout
+ IsSelected = True
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = ''
+ TabOrder = 0
+ Text = 'Basic properties'
+ ExplicitSize.cx = 8.000000000000000000
+ ExplicitSize.cy = 8.000000000000000000
+ object launcherLayout: TLayout
Align = Client
- Size.Width = 350.500000000000000000
- Size.Height = 243.000000000000000000
+ Size.Width = 640.000000000000000000
+ Size.Height = 322.000000000000000000
Size.PlatformDefault = False
- object compGrid: TStringGrid
- Align = Client
- CanFocus = True
- ClipChildren = True
- Enabled = False
- Locked = True
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 303.000000000000000000
- Size.Height = 231.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- RowCount = 1
- Options = [Editing, RowLines, RowSelect, Header]
- OnEditingDone = compGridEditingDone
- Viewport.Width = 299.000000000000000000
- Viewport.Height = 206.000000000000000000
- object StringColumn1: TStringColumn
- Header = 'Compositions list'
- end
- end
- object compTopLayout: TLayout
+ TabOrder = 0
+ object inputFileLayout: TLayout
Align = Top
- Margins.Left = 5.000000000000000000
- Margins.Right = 5.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
Position.X = 5.000000000000000000
- Size.Width = 340.500000000000000000
- Size.Height = 40.000000000000000000
+ Size.Width = 630.000000000000000000
+ Size.Height = 30.000000000000000000
Size.PlatformDefault = False
- object compSwitch: TSwitch
+ Visible = False
+ object InputLabels: TLayout
Align = Left
- IsChecked = False
- Margins.Top = 8.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 8.000000000000000000
- Position.Y = 8.000000000000000000
- Size.Width = 50.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- ParentShowHint = False
- ShowHint = False
- OnSwitch = compSwitchSwitch
- end
- object compSwitchLabel: TLabel
- Align = Client
- Margins.Top = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 280.500000000000000000
- Size.Height = 30.000000000000000000
- Size.PlatformDefault = False
- Text = 'Single Composition'
- end
- object compCount: TSpinBox
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Right
- Cursor = crIBeam
- Min = 2.000000000000000000
- Value = 2.000000000000000000
- Position.X = 208.000000000000000000
- Position.Y = 5.000000000000000000
- Enabled = False
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 74.000000000000000000
+ Size.Width = 113.000000000000000000
Size.Height = 30.000000000000000000
Size.PlatformDefault = False
- Visible = False
- OnChange = compCountChange
- end
- end
- object compName: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Top
- Position.X = 5.000000000000000000
- Position.Y = 45.000000000000000000
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Size.Width = 340.500000000000000000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- TextPrompt = 'Compositon name...'
- OnTyping = compNameTyping
- end
- end
- object threadsLayout: TLayout
- Align = Client
- Anchors = []
- Size.Width = 350.500000000000000000
- Size.Height = 243.000000000000000000
- Size.PlatformDefault = False
- object threadsTopLayout: TLayout
- Align = Top
- Margins.Left = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Position.X = 5.000000000000000000
- Size.Width = 340.500000000000000000
- Size.Height = 40.000000000000000000
- Size.PlatformDefault = False
- object threadsSwitch: TSwitch
- Align = Left
- IsChecked = False
- Margins.Top = 8.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 8.000000000000000000
- Position.Y = 8.000000000000000000
- Size.Width = 50.000000000000000000
- Size.Height = 24.000000000000000000
- Size.PlatformDefault = False
- ParentShowHint = False
- ShowHint = False
- OnSwitch = threadsSwitchSwitch
+ object _projectPathLabel: TLabel
+ Align = Client
+ Enabled = False
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 33.000000000000000000
+ Size.Width = 108.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Project file path: '
+ Visible = False
+ end
+ object _outputPathLabel: TLabel
+ Align = Client
+ Margins.Top = 33.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 108.000000000000000000
+ Size.Height = 0.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Output file path:'
+ end
end
- object threadsSwitchLabel: TLabel
+ object pathLayout: TLayout
Align = Client
- Margins.Top = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 280.500000000000000000
+ Size.Width = 404.000000000000000000
Size.Height = 30.000000000000000000
Size.PlatformDefault = False
- Text = 'Single Render'
+ object _outputPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 33.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 394.000000000000000000
+ Size.Height = 0.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object _projectPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Enabled = False
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 33.000000000000000000
+ Size.Width = 394.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ OnDragOver = _projectPathDragOver
+ OnDragDrop = _projectPathDragDrop
+ end
end
- object threadsCount: TComboEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
+ object fileChooseLayout: TLayout
Align = Right
- DropDownKind = Custom
- ItemHeight = 19.000000000000000000
- Items.Strings = (
- '2'
- '4'
- '6'
- '8'
- '12'
- '16'
- '32'
- '64'
- '128')
- ItemIndex = 0
- Text = '2'
- Position.X = 280.500000000000000000
- Position.Y = 8.000000000000000000
- Enabled = False
- Margins.Top = 8.000000000000000000
- Margins.Bottom = 8.000000000000000000
- Size.Width = 60.000000000000000000
- Size.Height = 24.000000000000000000
+ Position.X = 517.000000000000000000
+ Size.Width = 113.000000000000000000
+ Size.Height = 30.000000000000000000
Size.PlatformDefault = False
- Visible = False
- KillFocusByReturn = True
- OnChange = threadsCountChange
- OnTyping = threadsCountTyping
- end
- end
- object threadsGrid: TStringGrid
- Align = Client
- CanFocus = True
- ClipChildren = True
- Enabled = False
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 293.000000000000000000
- Size.Height = 191.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- RowCount = 2
- Options = [ColLines, RowLines, AutoDisplacement]
- Viewport.Width = 289.000000000000000000
- Viewport.Height = 187.000000000000000000
- object StringColumn2: TStringColumn
- Header = 'In'
- Size.Width = 145.000000000000000000
- end
- object StringColumn3: TStringColumn
- Header = 'Out'
- Size.Width = 143.000000000000000000
+ object openFile: TButton
+ Align = Client
+ Enabled = False
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 33.000000000000000000
+ Size.Width = 103.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Choose file...'
+ Visible = False
+ OnClick = openFileClick
+ end
+ object _saveFile: TButton
+ Align = Client
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 33.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 103.000000000000000000
+ Size.Height = 0.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Choose file...'
+ OnClick = _saveFileClick
+ end
end
end
- object calculateButton: TButton
- Align = Top
- Enabled = False
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 94.000000000000000000
- Size.Width = 293.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- Text = 'Calculate'
- Visible = False
- OnClick = calculateButtonClick
- end
- object framesLayout: TLayout
+ object properties: TGroupBox
Align = Top
- Position.Y = 40.000000000000000000
- Size.Width = 350.500000000000000000
- Size.Height = 33.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 96.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 160.000000000000000000
Size.PlatformDefault = False
- object GridPanelLayout2: TGridPanelLayout
+ Text = 'Properties'
+ object memUsageLayout: TLayout
+ Align = Bottom
+ Margins.Bottom = 8.000000000000000000
+ Position.Y = 124.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ object memUsageLabel: TLabel
+ Align = Left
+ Margins.Left = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 16.000000000000000000
+ Size.Width = 140.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Memory usage limit'
+ end
+ object memUsageTrackBar: TTrackBar
+ Align = Client
+ CanParentFocus = True
+ Min = 1.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 4.000000000000000000
+ Size.Width = 339.000000000000000000
+ Size.Height = 17.000000000000000000
+ Size.PlatformDefault = False
+ Value = 100.000000000000000000
+ OnChange = memUsageTrackBarChange
+ end
+ object memUsageInfo: TLabel
+ Align = Right
+ Cursor = crHandPoint
+ HitTest = True
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Position.X = 495.000000000000000000
+ Size.Width = 113.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'linklabelstyle'
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Trailing
+ Text = 'Unlimited'
+ TabOrder = 10
+ OnClick = memUsageInfoClick
+ end
+ object memUsageInfoEdit: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Right
+ TextSettings.HorzAlign = Trailing
+ Position.X = 349.000000000000000000
+ Enabled = False
+ Margins.Left = 13.000000000000000000
+ Margins.Right = 15.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ KillFocusByReturn = True
+ OnValidate = memUsageInfoEditValidate
+ OnExit = memUsageInfoEditExit
+ end
+ end
+ object cacheUsageLayout: TLayout
+ Align = Bottom
+ Position.Y = 96.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ object cacheUsageLimitLabel: TLabel
+ Align = Left
+ Margins.Left = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 16.000000000000000000
+ Size.Width = 140.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Cache usage limit'
+ end
+ object cacheUsageTrackBar: TTrackBar
+ Align = Client
+ CanParentFocus = True
+ Min = 1.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 4.000000000000000000
+ Size.Width = 339.000000000000000000
+ Size.Height = 17.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 8
+ Value = 100.000000000000000000
+ OnChange = cacheUsageTrackBarChange
+ end
+ object cacheUsageInfo: TLabel
+ Align = Right
+ Cursor = crHandPoint
+ HitTest = True
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 495.000000000000000000
+ Size.Width = 113.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'linklabelstyle'
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Trailing
+ Text = 'Unlimited'
+ TabOrder = 9
+ OnClick = cacheUsageInfoClick
+ end
+ object cacheUsageInfoEdit: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Right
+ TextSettings.HorzAlign = Trailing
+ Position.X = 357.000000000000000000
+ Position.Y = 5.000000000000000000
+ Enabled = False
+ Margins.Left = 13.000000000000000000
+ Margins.Right = 15.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ KillFocusByReturn = True
+ OnValidate = cacheUsageInfoEditValidate
+ OnExit = cacheUsageInfoEditExit
+ end
+ end
+ object GridPanelLayout3: TGridPanelLayout
Align = Client
- Size.Width = 350.500000000000000000
- Size.Height = 33.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 96.000000000000000000
Size.PlatformDefault = False
ColumnCollection = <
item
@@ -18674,13 +19353,13 @@ object MainForm: TMainForm
end>
ControlCollection = <
item
- Column = 0
- Control = Layout1
+ Column = 1
+ Control = properiesLayout2
Row = 0
end
item
- Column = 1
- Control = Layout2
+ Column = 0
+ Control = propertiesLayout1
Row = 0
end>
RowCollection = <
@@ -18690,148 +19369,965 @@ object MainForm: TMainForm
item
SizeStyle = Auto
end>
- object Layout1: TLayout
+ object properiesLayout2: TLayout
Align = Client
- Size.Width = 175.250000000000000000
- Size.Height = 33.000000000000000000
+ Anchors = []
+ Margins.Top = 16.000000000000000000
+ Size.Width = 312.000000000000000000
+ Size.Height = 80.000000000000000000
Size.PlatformDefault = False
- object inFrame: TEdit
+ object customProp: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Top
+ TabOrder = 8
+ Position.X = 16.000000000000000000
+ Position.Y = 31.000000000000000000
+ Enabled = False
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Size.Width = 280.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ TextPrompt = 'Separate flags with spaces!'
+ end
+ object customCheckbox: TCheckBox
+ Align = Top
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 280.000000000000000000
+ Size.Height = 19.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 7
+ Text = 'Custom Properies'
+ end
+ end
+ object propertiesLayout1: TLayout
+ Align = Client
+ Margins.Top = 16.000000000000000000
+ Size.Width = 312.000000000000000000
+ Size.Height = 80.000000000000000000
+ Size.PlatformDefault = False
+ object missingFilesCheckbox: TCheckBox
+ Align = Top
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 280.000000000000000000
+ Size.Height = 19.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 4
+ Text = 'Render with missing files'
+ end
+ object threadedRender: TCheckBox
+ Align = Top
+ Margins.Left = 16.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 54.000000000000000000
+ Size.Width = 280.000000000000000000
+ Size.Height = 19.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 6
+ Text = 'Enable CPU Multithreading'
+ end
+ object soundCheckbox: TCheckBox
+ Align = Top
+ Margins.Left = 16.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 31.000000000000000000
+ Size.Width = 280.000000000000000000
+ Size.Height = 19.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 5
+ Text = 'Play sound when render finishes'
+ end
+ end
+ end
+ end
+ object outputModuleLayout: TLayout
+ Align = Top
+ EnableDragHighlight = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 32.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ object outputModuleBox: TComboBox
+ Align = Client
+ DropDownKind = Custom
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 472.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 2
+ OnChange = outputModuleBoxChange
+ end
+ object outputModuleLabel: TLabel
+ Align = Left
+ Size.Width = 128.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'Output Module Preset:'
+ end
+ end
+ object renderSettingsLayout: TLayout
+ Align = Top
+ EnableDragHighlight = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 64.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ object renderSettingsEdit: TComboEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ TabOrder = 0
+ DropDownKind = Custom
+ ItemHeight = 20.000000000000000000
+ Items.Strings = (
+ 'Current Settings'
+ 'Best Settings'
+ 'DV Settings'
+ 'Multi-Machine Settings')
+ ItemIndex = -1
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 472.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ KillFocusByReturn = True
+ end
+ object renderSettingsLabel: TLabel
+ Align = Left
+ Size.Width = 128.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'Render Settings:'
+ end
+ end
+ object GridPanelLayout1: TGridPanelLayout
+ Align = Client
+ Size.Width = 640.000000000000000000
+ Size.Height = 88.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ ColumnCollection = <
+ item
+ Value = 50.000000000000000000
+ end
+ item
+ Value = 50.000000000000000000
+ end>
+ ControlCollection = <
+ item
+ Column = 0
+ Control = compLayout
+ Row = 0
+ end
+ item
+ Column = 1
+ Control = threadsLayout
+ Row = 0
+ end>
+ RowCollection = <
+ item
+ Value = 100.000000000000000000
+ end
+ item
+ SizeStyle = Auto
+ end>
+ object compLayout: TLayout
+ Align = Client
+ Size.Width = 320.000000000000000000
+ Size.Height = 88.000000000000000000
+ Size.PlatformDefault = False
+ object compGrid: TStringGrid
+ Align = Client
+ CanFocus = True
+ ClipChildren = True
+ Enabled = False
+ Locked = True
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 303.000000000000000000
+ Size.Height = 231.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ RowCount = 1
+ Options = [Editing, RowLines, RowSelect, Header]
+ OnEditingDone = compGridEditingDone
+ Viewport.Width = 303.000000000000000000
+ Viewport.Height = 231.000000000000000000
+ object StringColumn1: TStringColumn
+ Header = 'Compositions list'
+ end
+ end
+ object compTopLayout: TLayout
+ Align = Top
+ Margins.Left = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Position.X = 5.000000000000000000
+ Size.Width = 310.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ object compSwitch: TSwitch
+ Align = Left
+ IsChecked = False
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 10.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ ParentShowHint = False
+ ShowHint = False
+ OnSwitch = compSwitchSwitch
+ end
+ object compSwitchLabel: TLabel
Align = Client
- Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 250.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Single Composition'
+ end
+ object compCount: TSpinBox
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Right
+ StyleLookup = 'spinboxstyle'
+ Cursor = crIBeam
+ Min = 2.000000000000000000
+ Value = 2.000000000000000000
+ Position.X = 208.000000000000000000
+ Position.Y = 5.000000000000000000
+ Enabled = False
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 96.250000000000000000
- Size.Height = 23.000000000000000000
+ Size.Width = 74.000000000000000000
+ Size.Height = 30.000000000000000000
Size.PlatformDefault = False
- OnValidate = inFrameValidate
+ Visible = False
+ OnChange = compCountChange
end
- object startFrameLabel: TLabel
+ end
+ object compName: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Top
+ Position.X = 5.000000000000000000
+ Position.Y = 45.000000000000000000
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Size.Width = 310.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ TextPrompt = 'Compositon name...'
+ OnTyping = compNameTyping
+ end
+ end
+ object threadsLayout: TLayout
+ Align = Client
+ Anchors = []
+ Size.Width = 320.000000000000000000
+ Size.Height = 88.000000000000000000
+ Size.PlatformDefault = False
+ object threadsTopLayout: TLayout
+ Align = Top
+ Margins.Left = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Position.X = 5.000000000000000000
+ Size.Width = 310.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ object threadsSwitch: TSwitch
Align = Left
- AutoSize = True
- Margins.Left = 5.000000000000000000
- Position.X = 5.000000000000000000
- Size.Width = 64.000000000000000000
- Size.Height = 33.000000000000000000
+ IsChecked = False
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 10.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ ParentShowHint = False
+ ShowHint = False
+ OnSwitch = threadsSwitchSwitch
+ end
+ object threadsSwitchLabel: TLabel
+ Align = Client
+ Margins.Top = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 250.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Single Render'
+ end
+ object threadsCount: TComboEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Right
+ DropDownKind = Custom
+ ItemHeight = 19.000000000000000000
+ Items.Strings = (
+ '2'
+ '4'
+ '6'
+ '8'
+ '12'
+ '16'
+ '32'
+ '64'
+ '128')
+ ItemIndex = 0
+ Text = '2'
+ Position.X = 280.500000000000000000
+ Position.Y = 8.000000000000000000
+ Enabled = False
+ Margins.Top = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Size.Width = 60.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
- TextSettings.WordWrap = False
- Text = 'Start Frame:'
+ Visible = False
+ KillFocusByReturn = True
+ OnChange = threadsCountChange
+ OnTyping = threadsCountTyping
end
end
- object Layout2: TLayout
+ object threadsGrid: TStringGrid
Align = Client
- Size.Width = 175.250000000000000000
+ CanFocus = True
+ ClipChildren = True
+ Enabled = False
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 293.000000000000000000
+ Size.Height = 191.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ RowCount = 2
+ Options = [ColLines, RowLines, AutoDisplacement]
+ Viewport.Width = 293.000000000000000000
+ Viewport.Height = 191.000000000000000000
+ object StringColumn2: TStringColumn
+ Header = 'In'
+ Size.Width = 145.000000000000000000
+ end
+ object StringColumn3: TStringColumn
+ Header = 'Out'
+ Size.Width = 143.000000000000000000
+ end
+ end
+ object calculateButton: TButton
+ Align = Top
+ Enabled = False
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Position.X = 5.000000000000000000
+ Position.Y = 94.000000000000000000
+ Size.Width = 293.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Calculate'
+ Visible = False
+ OnClick = calculateButtonClick
+ end
+ object framesLayout: TLayout
+ Align = Top
+ Position.Y = 40.000000000000000000
+ Size.Width = 320.000000000000000000
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
- object endFrameLabel: TLabel
- Align = Left
- AutoSize = True
- Margins.Left = 5.000000000000000000
- Position.X = 5.000000000000000000
- Size.Width = 59.000000000000000000
+ object GridPanelLayout2: TGridPanelLayout
+ Align = Client
+ Size.Width = 320.000000000000000000
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
- TextSettings.WordWrap = False
- Text = 'End Frame:'
+ ColumnCollection = <
+ item
+ Value = 50.000000000000000000
+ end
+ item
+ Value = 50.000000000000000000
+ end>
+ ControlCollection = <
+ item
+ Column = 0
+ Control = Layout1
+ Row = 0
+ end
+ item
+ Column = 1
+ Control = Layout2
+ Row = 0
+ end>
+ RowCollection = <
+ item
+ Value = 100.000000000000000000
+ end
+ item
+ SizeStyle = Auto
+ end>
+ object Layout1: TLayout
+ Align = Client
+ Size.Width = 160.000000000000000000
+ Size.Height = 33.000000000000000000
+ Size.PlatformDefault = False
+ object inFrame: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 81.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ OnValidate = inFrameValidate
+ end
+ object startFrameLabel: TLabel
+ Align = Left
+ AutoSize = True
+ Margins.Left = 5.000000000000000000
+ Position.X = 5.000000000000000000
+ Size.Width = 64.000000000000000000
+ Size.Height = 33.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'Start Frame:'
+ end
+ end
+ object Layout2: TLayout
+ Align = Client
+ Size.Width = 160.000000000000000000
+ Size.Height = 33.000000000000000000
+ Size.PlatformDefault = False
+ object endFrameLabel: TLabel
+ Align = Left
+ AutoSize = True
+ Margins.Left = 5.000000000000000000
+ Position.X = 5.000000000000000000
+ Size.Width = 59.000000000000000000
+ Size.Height = 33.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'End Frame:'
+ end
+ object outFrame: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Left = 5.000000000000000000
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Size.Width = 86.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ KillFocusByReturn = True
+ OnValidate = outFrameValidate
+ end
+ end
end
- object outFrame: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Client
+ end
+ object ffmpegConcateLayout: TLayout
+ Align = Bottom
+ Enabled = False
+ Position.Y = 242.000000000000000000
+ Size.Width = 350.500000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ object ffmpegCheckBox: TCheckBox
+ Align = Bottom
Margins.Left = 5.000000000000000000
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 101.250000000000000000
- Size.Height = 23.000000000000000000
+ Position.X = 5.000000000000000000
+ Position.Y = 6.000000000000000000
+ Size.Width = 255.500000000000000000
+ Size.Height = 19.000000000000000000
Size.PlatformDefault = False
- KillFocusByReturn = True
- OnValidate = outFrameValidate
+ Text = 'Concate using FFMPEG'
+ end
+ object ffmpegConfigButton: TButton
+ Align = MostRight
+ Enabled = False
+ Margins.Top = 5.000000000000000000
+ Margins.Right = 5.000000000000000000
+ Margins.Bottom = 5.000000000000000000
+ Position.X = 265.500000000000000000
+ Position.Y = 5.000000000000000000
+ Size.Width = 80.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Config'
+ OnClick = ffmpegConfigButtonClick
end
end
end
end
- object ffmpegConcateLayout: TLayout
- Align = Bottom
- Enabled = False
- Position.Y = 242.000000000000000000
- Size.Width = 350.500000000000000000
- Size.Height = 30.000000000000000000
+ object Layout3: TLayout
+ Align = Top
+ EnableDragHighlight = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Size.Width = 624.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
- Visible = False
- object ffmpegCheckBox: TCheckBox
- Align = Bottom
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 6.000000000000000000
- Size.Width = 255.500000000000000000
- Size.Height = 19.000000000000000000
+ object outputPathLabel: TLabel
+ Align = Left
+ Size.Width = 128.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'Output file path:'
+ end
+ object outputPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ TabOrder = 0
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 372.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
- Text = 'Concate using FFMPEG'
end
- object ffmpegConfigButton: TButton
- Align = MostRight
- Enabled = False
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 265.500000000000000000
- Position.Y = 5.000000000000000000
- Size.Width = 80.000000000000000000
- Size.Height = 20.000000000000000000
+ object saveFile: TButton
+ Align = Right
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 520.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 96.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
- Text = 'Config'
- OnClick = ffmpegConfigButtonClick
+ Text = 'Choose file...'
+ OnClick = _saveFileClick
end
end
end
+ object TaskEditorStepOneToolbar: TToolBar
+ Cursor = crSizeAll
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ PopupMenu = ToolbarPopupMenu
+ Position.X = 1.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 638.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ OnMouseDown = TaskEditorToolbarMouseDown
+ object TaskEditorStepOneLabel: TLabel
+ Align = Left
+ AutoSize = True
+ StyledSettings = [Family, FontColor]
+ Margins.Left = 16.000000000000000000
+ Position.X = 16.000000000000000000
+ Size.Width = 101.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ TextSettings.WordWrap = False
+ Text = 'Project Setup'
+ end
+ object projectPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 347.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ OnDragOver = _projectPathDragOver
+ OnDragDrop = _projectPathDragDrop
+ end
+ object projectPathLabel: TLabel
+ Align = Left
+ AutoSize = True
+ Margins.Left = 64.000000000000000000
+ Position.X = 181.000000000000000000
+ Size.Width = 90.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'Project file path: '
+ end
+ end
+ object TaskEditorStepOneStatusBar: TStatusBar
+ Margins.Left = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 355.000000000000000000
+ ShowSizeGrip = True
+ Size.Width = 638.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 2
+ object TaskEditorCompButton: TButton
+ Align = Right
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 530.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 104.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Compositions >>'
+ OnClick = TaskEditorCompButtonClick
+ end
+ object TaskEditorCancelButton: TButton
+ Align = Left
+ ModalResult = 2
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 4.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 64.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Cancel'
+ OnClick = TaskEditorCancelButtonClick
+ end
+ end
+ end
+ object TaskEditorStepTwo: TTabItem
+ CustomIcon = <
+ item
+ end>
+ IsSelected = False
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = ''
+ TabOrder = 0
+ Text = 'Compositions'
+ ExplicitSize.cx = 8.000000000000000000
+ ExplicitSize.cy = 8.000000000000000000
+ object TaskEditorStepTwoStatusBar: TStatusBar
+ Margins.Left = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 355.000000000000000000
+ ShowSizeGrip = True
+ Size.Width = 638.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 0
+ object TaskEditorSaveButton: TButton
+ Align = Right
+ ModalResult = 1
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 434.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 96.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Save Task'
+ OnClick = TaskEditorSaveButtonClick
+ end
+ object Button3: TButton
+ Align = Left
+ ModalResult = 2
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 4.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 64.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Cancel'
+ OnClick = TaskEditorCancelButtonClick
+ end
+ object TaskEditorProjectButton: TButton
+ Align = Left
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 76.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 104.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = '<< Project Setup'
+ OnClick = TaskEditorProjectButtonClick
+ end
+ object TaskEditorCreateTaskButton: TButton
+ Align = Right
+ ModalResult = 1
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 538.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 96.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Create Task'
+ OnClick = TaskEditorCreateTaskButtonClick
+ end
+ end
+ object TaskEditorStepTwoToolbar: TToolBar
+ Cursor = crSizeAll
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ PopupMenu = ToolbarPopupMenu
+ Position.X = 1.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 638.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ OnMouseDown = TaskEditorToolbarMouseDown
+ object NewTaskStepTwoLabel: TLabel
+ Align = Left
+ StyledSettings = [Family, FontColor]
+ Margins.Left = 16.000000000000000000
+ Position.X = 16.000000000000000000
+ Size.Width = 120.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Compositions'
+ end
+ object TaskEditorCompCount: TSpinBox
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Right
+ Cursor = crIBeam
+ Min = 1.000000000000000000
+ Max = 128.000000000000000000
+ Value = 1.000000000000000000
+ Position.X = 554.000000000000000000
+ Position.Y = 4.000000000000000000
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 80.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ OnChange = TaskEditorCompCountChange
+ end
+ object TaskEditorCompCountLabel: TLabel
+ Align = Right
+ AutoSize = True
+ Position.X = 515.000000000000000000
+ Size.Width = 35.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.HorzAlign = Trailing
+ TextSettings.WordWrap = False
+ Text = 'Count:'
+ end
+ end
+ object TaskEditorCompGrid: TStringGrid
+ Align = Client
+ CanFocus = True
+ ClipChildren = True
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 632.000000000000000000
+ Size.Height = 314.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 2
+ RowCount = 1
+ Options = [Editing, AlwaysShowEditor, ColumnResize, ColLines, RowLines, RowSelect, Tabs, Header, CancelEditingByDefault, AutoDisplacement]
+ OnEditingDone = TaskEditorCompGridEditingDone
+ Viewport.Width = 632.000000000000000000
+ Viewport.Height = 314.000000000000000000
+ object CompNumCol: TIntegerColumn
+ Header = '#'
+ ReadOnly = True
+ Size.Width = 20.000000000000000000
+ end
+ object CompositionCol: TStringColumn
+ Header = 'Composition title'
+ Size.Width = 300.000000000000000000
+ end
+ object StartFrameCol: TIntegerColumn
+ Header = 'Start Frame'
+ end
+ object EndFrameCol: TIntegerColumn
+ Header = 'End Frame'
+ end
+ object SplitCol: TIntegerColumn
+ Header = 'Split'
+ end
+ end
end
end
- object UpdateInfo: TStatusBar
- Align = MostBottom
- Position.Y = 526.000000000000000000
- ShowSizeGrip = False
- Size.Width = 701.000000000000000000
- Size.Height = 35.000000000000000000
+ object PopupAniOpenHeight: TFloatAnimation
+ AnimationType = InOut
+ Duration = 0.500000000000000000
+ Interpolation = Circular
+ OnFinish = PopupAniOpenFinish
+ PropertyName = 'Height'
+ StartValue = 1.000000000000000000
+ StopValue = 384.000000000000000000
+ end
+ object PopupAniCloseHeight: TFloatAnimation
+ AnimationType = InOut
+ Duration = 0.500000000000000000
+ Interpolation = Circular
+ OnFinish = PopupAniCloseFinish
+ PropertyName = 'Height'
+ StartValue = 384.000000000000000000
+ StopValue = 1.000000000000000000
+ end
+ object PopupAniCloseWidth: TFloatAnimation
+ AnimationType = InOut
+ Duration = 0.500000000000000000
+ Interpolation = Circular
+ OnFinish = PopupAniCloseFinish
+ PropertyName = 'Width'
+ StartValue = 640.000000000000000000
+ StopValue = 1.000000000000000000
+ end
+ object PopupAniOpenWidth: TFloatAnimation
+ AnimationType = InOut
+ Duration = 0.500000000000000000
+ Interpolation = Circular
+ OnFinish = PopupAniOpenFinish
+ PropertyName = 'Width'
+ StartValue = 1.000000000000000000
+ StopValue = 640.000000000000000000
+ end
+ end
+ object ProjectAwait: TLayout
+ Align = Contents
+ Enabled = False
+ HitTest = True
+ Size.Width = 1220.000000000000000000
+ Size.Height = 617.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 68
+ object ProjectAwaitMessage: TPanel
+ Align = Center
+ HitTest = False
+ Size.Width = 320.000000000000000000
+ Size.Height = 64.000000000000000000
Size.PlatformDefault = False
- StyleLookup = 'statusbarnogripstyle'
- Visible = False
- object downloadButton: TButton
+ TabOrder = 0
+ object ProjectAwaitIndicator: TAniIndicator
+ Align = MostLeft
+ Enabled = True
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 16.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Margins.Bottom = 16.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 16.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object ShadowEffect1: TShadowEffect
+ Distance = 3.000000000000000000
+ Direction = 90.000000000000000000
+ Softness = 1.000000000000000000
+ Opacity = 0.500000000000000000
+ ShadowColor = claBlack
+ end
+ object ProjectAwaitLabel: TLabel
Align = Client
- Margins.Left = 10.000000000000000000
- Margins.Top = 7.000000000000000000
- Margins.Right = 10.000000000000000000
- Margins.Bottom = 7.000000000000000000
- Size.Width = 508.000000000000000000
- Size.Height = 21.000000000000000000
+ Size.Width = 256.000000000000000000
+ Size.Height = 31.000000000000000000
Size.PlatformDefault = False
- Text = 'Download from GitHub'
- OnClick = downloadButtonClick
+ TextSettings.VertAlign = Trailing
+ Text = 'Trying to read After Effects project...'
+ TabOrder = 71
end
- object UpdateLabel: TLabel
- Align = Left
- AutoSize = True
- StyledSettings = [Family, FontColor]
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
- Size.Width = 163.000000000000000000
- Size.Height = 35.000000000000000000
+ object ProjectAwaitStatusLabel: TLabel
+ Align = Bottom
+ Margins.Bottom = 16.000000000000000000
+ Position.X = 64.000000000000000000
+ Position.Y = 31.000000000000000000
+ Size.Width = 256.000000000000000000
+ Size.Height = 17.000000000000000000
Size.PlatformDefault = False
- TextSettings.Font.Size = 14.000000000000000000
- TextSettings.Font.StyleExt = {00070000000000000004000000}
- TextSettings.WordWrap = False
- Text = 'New version is available!'
+ Text = 'Elapsed %d seconds of %d'
+ TabOrder = 72
end
end
end
+ object ProjectReaderAwait: TTimer
+ Enabled = False
+ Interval = 5
+ OnTimer = ProjectReaderAwaitTimer
+ Left = 64
+ Top = 384
+ end
+ object UpdateNetHTTPClient: TNetHTTPClient
+ Asynchronous = True
+ ConnectionTimeout = 10000
+ ResponseTimeout = 10000
+ UserAgent = 'Embarcadero URI Client/1.0'
+ OnRequestCompleted = UpdateNetHTTPClientRequestCompleted
+ OnRequestError = UpdateNetHTTPClientRequestError
+ Left = 64
+ Top = 288
+ end
object BindingsList1: TBindingsList
Methods = <>
OutputConverters = <>
- Left = 136
- Top = 488
+ Left = 64
+ Top = 336
object LinkControlToPropertyEnabled: TLinkControlToProperty
Category = 'Quick Bindings'
Control = customCheckbox
@@ -18962,14 +20458,4 @@ object MainForm: TMainForm
InitializeControlValue = False
end
end
- object UpdateNetHTTPClient: TNetHTTPClient
- Asynchronous = True
- ConnectionTimeout = 10000
- ResponseTimeout = 10000
- UserAgent = 'Embarcadero URI Client/1.0'
- OnRequestCompleted = UpdateNetHTTPClientRequestCompleted
- OnRequestError = UpdateNetHTTPClientRequestError
- Left = 136
- Top = 448
- end
end
diff --git a/src/MainUnit.pas b/src/MainUnit.pas
index 19a3040..591ac46 100644
--- a/src/MainUnit.pas
+++ b/src/MainUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* MainUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -27,6 +27,8 @@
interface
+{$DEFINE DEBUG_MODE}
+
uses
{$REGION ' System Namespaces '}
System.SysUtils,
@@ -41,6 +43,7 @@ interface
System.Threading,
System.Rtti,
System.Bindings.Outputs,
+ System.Math,
System.Notification,
System.ImageList,
System.Net.URLClient,
@@ -81,6 +84,9 @@ interface
FMX.ComboEdit,
FMX.Text,
FMX.BufferedLayout,
+ FMX.CompLabel,
+ FMX.TreeView,
+ FMX.TabControl,
{$ENDREGION}
{$REGION ' Data Lib Namespaces '}
@@ -89,13 +95,18 @@ interface
Xml.XMLIntf,
Xml.adomxmldom,
Xml.XMLDoc,
- Data.Bind.Components,
Xml.omnixmldom,
+ Data.Bind.Components,
{$ENDREGION}
{$REGION ' Additional Liraries '}
- MathExpParser,
- AErenderLauncherLocalization,
+ AErenderLauncher.Types,
+ AErenderLauncher.Localization,
+ AErenderLauncher.IO,
+ AErenderLauncher.Rendering,
+ AErenderLauncher.Math,
+ AErenderLauncher.Math.ExpParser,
+ AErenderLauncher.SysUtils,
{$ENDREGION}
{$REGION ' Windows Only Libraries '}{$IFDEF MSWINDOWS}
@@ -109,103 +120,28 @@ interface
{$ENDIF MACOS}{$ENDREGION}
type
- // This won't be required in the next RAD Studio version
- TComboEdit = class(TCustomComboEdit)
- procedure OnValidateEvent(Sender: TObject; var Text: string);
- procedure OnValidatingEvent(Sender: TObject; var Text: string);
- published
- property CanFocus default True;
- property CanParentFocus;
- property Cursor default crIBeam;
- property DisableFocusEffect;
- property DropDownCount default TComboEditModel.DefaultDropDownCount;
- property DropDownKind default TComboEditModel.DefaultDropDownKind;
- property KeyboardType;
- property ReadOnly;
- property ItemHeight;
- property ItemWidth;
- property Items;
- property ItemIndex;
- property ListBoxResource;
- property Text;
- property TextSettings;
- property Position;
- property Width;
- property Height;
- property HelpContext;
- property HelpKeyword;
- property HelpType;
- property Hint;
- property StyledSettings;
- property StyleLookup;
- property ClipChildren default False;
- property ClipParent default False;
- property DragMode default TDragMode.dmManual;
- property EnableDragHighlight default True;
- property Enabled default True;
- property Locked default False;
- property HitTest default True;
- property Padding;
- property Opacity;
- property Margins;
- property PopupMenu;
- property RotationAngle;
- property RotationCenter;
- property Scale;
- property Size;
- property TouchTargetExpansion;
- property Visible default True;
- property Caret;
- property KillFocusByReturn;
- property ParentShowHint;
- property ShowHint;
- { events }
- property OnChange;
- property OnChangeTracking;
- property OnTyping;
- property OnApplyStyleLookup;
- property OnClosePopup;
- property OnPopup;
- { Drag and Drop events }
- property OnDragEnter;
- property OnDragLeave;
- property OnDragOver;
- property OnDragDrop;
- property OnDragEnd;
- { Keyboard events }
- property OnKeyDown;
- property OnKeyUp;
- { Mouse events }
- property OnCanFocus;
- property OnClick;
- property OnDblClick;
- property OnEnter;
- property OnExit;
- property OnMouseDown;
- property OnMouseMove;
- property OnMouseUp;
- property OnMouseWheel;
- property OnMouseEnter;
- property OnMouseLeave;
- property OnPainting;
- property OnPaint;
- property OnResize;
- property OnResized;
- property OnPresentationNameChoosing;
- property OnValidate;
- property OnValidating;
+ SizeConstraints = record
+ private
+ const
+ MIN_WIDTH = 640;
+
+ MIN_HEIGHT_NO_UPD = 540;
+ //EXP_HEIGHT_NO_UPD = 540;
+
+ MIN_HEIGHT_UPD = 576; // 540 + 36
+ //EXP_HEIGHT_UPD = 576;
end;
TMainForm = class(TForm)
- projectPathLabel: TLabel;
+ _projectPathLabel: TLabel;
inputFileLayout: TLayout;
- outputPathLabel: TLabel;
+ _outputPathLabel: TLabel;
InputLabels: TLayout;
pathLayout: TLayout;
- projectPath: TEdit;
+ _projectPath: TEdit;
fileChooseLayout: TLayout;
- outputPath: TEdit;
+ _outputPath: TEdit;
openFile: TButton;
- saveFile: TButton;
+ _saveFile: TButton;
properties: TGroupBox;
soundCheckbox: TCheckBox;
missingFilesCheckbox: TCheckBox;
@@ -256,15 +192,13 @@ TMainForm = class(TForm)
LinkControlToPropertyEnabled9: TLinkControlToProperty;
OnyxBlueStyle: TStyleBook;
infoButton: TButton;
- Image1: TImage;
- Image2: TImage;
launcherLayout: TLayout;
outputModuleBox: TComboBox;
outputModuleLabel: TLabel;
outputModuleLayout: TLayout;
renderSettingsLayout: TLayout;
- renderSettingsBox: TComboBox;
renderSettingsLabel: TLabel;
+ renderSettingsEdit: TComboEdit;
MainMenu1: TMainMenu;
launcherItem: TMenuItem;
fileItem: TMenuItem;
@@ -289,8 +223,6 @@ TMainForm = class(TForm)
memUsageInfoEdit: TEdit;
cacheUsageInfoEdit: TEdit;
AERModernStyle: TStyleBook;
- settingsIconFill: TFillRGBEffect;
- infoIconFill: TFillRGBEffect;
AERModernAnimatedStyle: TStyleBook;
UpdateLabel: TLabel;
downloadButton: TButton;
@@ -316,9 +248,76 @@ TMainForm = class(TForm)
LinkControlToPropertyVisible7: TLinkControlToProperty;
LinkControlToPropertyEnabled10: TLinkControlToProperty;
UpdateNetHTTPClient: TNetHTTPClient;
- Button1: TButton;
recentItem: TMenuItem;
separatorItem3: TMenuItem;
+ TasksToolbar: TToolBar;
+ TasksLabel: TLabel;
+ RemoveTaskButton: TButton;
+ AddTaskButton: TButton;
+ TasksTreeView: TTreeView;
+ TasksPopupMenu: TPopupMenu;
+ AddTaskPopupItem: TMenuItem;
+ EditTaskPopupItem: TMenuItem;
+ DeleteTaskPopupItem: TMenuItem;
+ TaskEditorPopup: TPopup;
+ PopupAniOpenHeight: TFloatAnimation;
+ PopupAniCloseHeight: TFloatAnimation;
+ TaskEditorCompButton: TButton;
+ ToolbarPopupMenu: TPopupMenu;
+ ToolbarIconsOnly: TMenuItem;
+ ToolbarIconsAndText: TMenuItem;
+ ToolbarTextOnly: TMenuItem;
+ TaskEditorTabControl: TTabControl;
+ TaskEditorStepOne: TTabItem;
+ TaskEditorStepTwo: TTabItem;
+ TaskEditorStepOneStatusBar: TStatusBar;
+ TaskEditorCancelButton: TButton;
+ TaskEditorStepTwoStatusBar: TStatusBar;
+ TaskEditorSaveButton: TButton;
+ Button3: TButton;
+ TaskEditorProjectButton: TButton;
+ TaskEditorStepOneToolbar: TToolBar;
+ TaskEditorStepOneLabel: TLabel;
+ TaskEditorStepTwoToolbar: TToolBar;
+ NewTaskStepTwoLabel: TLabel;
+ TaskEditorCompGrid: TStringGrid;
+ CompositionCol: TStringColumn;
+ StartFrameCol: TIntegerColumn;
+ EndFrameCol: TIntegerColumn;
+ SplitCol: TIntegerColumn;
+ TaskEditorCompCount: TSpinBox;
+ TaskEditorCompCountLabel: TLabel;
+ CompNumCol: TIntegerColumn;
+ projectPath: TEdit;
+ projectPathLabel: TLabel;
+ Layout3: TLayout;
+ outputPathLabel: TLabel;
+ outputPath: TEdit;
+ saveFile: TButton;
+ GridPanelLayout4: TGridPanelLayout;
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ Label4: TLabel;
+ TasksIsEmptyLabel: TLabel;
+ TasksIsEmpty: TLayout;
+ TeskIsEmptyAddLabel: TLabel;
+ Label5: TLabel;
+ DebugLabel: TLabel;
+ TaskEditorCreateTaskButton: TButton;
+ TasksPopupSeparator1: TMenuItem;
+ TaskItemDisplay: TMenuItem;
+ PopupAniCloseWidth: TFloatAnimation;
+ PopupAniOpenWidth: TFloatAnimation;
+ ProjectReaderAwait: TTimer;
+ ProjectAwaitMessage: TPanel;
+ ProjectAwaitIndicator: TAniIndicator;
+ ShadowEffect1: TShadowEffect;
+ ProjectAwaitLabel: TLabel;
+ ProjectAwait: TLayout;
+ ProjectAwaitStatusLabel: TLabel;
+ Label6: TLabel;
+ launchPopupBox: TPopupBox;
procedure FormResize(Sender: TObject);
procedure compSwitchSwitch(Sender: TObject);
procedure FormCreate(Sender: TObject);
@@ -330,7 +329,7 @@ TMainForm = class(TForm)
procedure threadsCount1Change(Sender: TObject);
procedure openFileClick(Sender: TObject);
procedure launchButtonClick(Sender: TObject);
- procedure saveFileClick(Sender: TObject);
+ procedure _saveFileClick(Sender: TObject);
procedure infoButtonClick(Sender: TObject);
procedure exitItemClick(Sender: TObject);
procedure docsItemClick(Sender: TObject);
@@ -341,17 +340,14 @@ TMainForm = class(TForm)
procedure cacheUsageTrackBarChange(Sender: TObject);
procedure memUsageInfoClick(Sender: TObject);
procedure memUsageInfoEditValidate(Sender: TObject; var Text: string);
- procedure cacheUsageInfoEditValidate(Sender: TObject;
- var Text: string);
+ procedure cacheUsageInfoEditValidate(Sender: TObject; var Text: string);
procedure cacheUsageInfoClick(Sender: TObject);
procedure cacheUsageInfoEditExit(Sender: TObject);
procedure memUsageInfoEditExit(Sender: TObject);
procedure downloadButtonClick(Sender: TObject);
procedure ffmpegConfigButtonClick(Sender: TObject);
- procedure projectPathDragDrop(Sender: TObject; const Data: TDragObject;
- const Point: TPointF);
- procedure projectPathDragOver(Sender: TObject; const Data: TDragObject;
- const Point: TPointF; var Operation: TDragOperation);
+ procedure _projectPathDragDrop(Sender: TObject; const Data: TDragObject; const Point: TPointF);
+ procedure _projectPathDragOver(Sender: TObject; const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation);
procedure outFrameValidate(Sender: TObject; var Text: string);
procedure outputModuleBoxChange(Sender: TObject);
procedure compNameTyping(Sender: TObject);
@@ -359,91 +355,134 @@ TMainForm = class(TForm)
procedure winOutModuleEditorItemClick(Sender: TObject);
procedure inFrameValidate(Sender: TObject; var Text: string);
procedure threadsCountChange(Sender: TObject);
- procedure UpdateNetHTTPClientRequestError(const Sender: TObject;
- const AError: string);
- procedure UpdateNetHTTPClientRequestCompleted(const Sender: TObject;
- const AResponse: IHTTPResponse);
- procedure ReadAERQ(Path: String);
+ procedure UpdateNetHTTPClientRequestError(const Sender: TObject; const AError: string);
+ procedure UpdateNetHTTPClientRequestCompleted(const Sender: TObject; const AResponse: IHTTPResponse);
+
+ function ReadAERQ(Path: String): TObjectList;
+ function ReadAER(Path: String): TRenderTask;
+
procedure SetLanguage(LanguageCode: Integer);
procedure UpdateOutputModules;
- procedure UpdateRenderSettings;
+
procedure threadsCountTyping(Sender: TObject);
procedure threadsCountExit(Sender: TObject);
+
procedure AddToRecents(Item: String);
procedure RecentProjectSelected(Sender: TObject);
+
procedure InflateRecents;
procedure ReInflateRecents;
- procedure compGridEditingDone(Sender: TObject; const ACol,
- ARow: Integer);
- procedure renderSettingsBoxChange(Sender: TObject);
+
+ procedure compGridEditingDone(Sender: TObject; const ACol, ARow: Integer);
+ procedure TasksTreeViewDragChange(SourceItem, DestItem: TTreeViewItem; var Allow: Boolean);
+ procedure TasksTreeViewKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
+ procedure TasksTreeViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
+ procedure TasksPopupMenuPopup(Sender: TObject);
+
+ procedure CheckAndPopup(const APath: String; const TryParse: Boolean);
+
+ //procedure TaskAddProcess;
+ procedure ExtractParserToAppDir;
+
+ procedure BeginTryParseAEP(const APath: String);
+
+ procedure AddTaskButtonClick(Sender: TObject);
+ procedure RemoveTaskButtonClick(Sender: TObject);
+ procedure PopupAniOpenFinish(Sender: TObject);
+ procedure TaskEditorCancelButtonClick(Sender: TObject);
+ procedure PopupAniCloseFinish(Sender: TObject);
+ procedure TaskEditorPopupPopup(Sender: TObject);
+ procedure TaskEditorCompButtonClick(Sender: TObject);
+ procedure TaskEditorProjectButtonClick(Sender: TObject);
+ procedure TaskEditorCreateTaskButtonClick(Sender: TObject);
+ procedure TaskEditorCompCountChange(Sender: TObject);
+ procedure TaskEditorTabControlChange(Sender: TObject);
+ procedure TaskEditorCompGridEditingDone(Sender: TObject; const ACol, ARow: Integer);
+
+ procedure UpdateTasksList;
+
+ procedure RenderTasksOnNotify(Sender: TObject; const Item: TRenderTask; Action: TCollectionNotification);
+
+ procedure TasksTreeViewDragDrop(Sender: TObject; const Data: TDragObject; const Point: TPointF);
+
+ procedure TasksTreeViewItemDblClick(Sender: TObject);
+ procedure TaskEditorSaveButtonClick(Sender: TObject);
+ procedure ProjectReaderAwaitTimer(Sender: TObject);
+ procedure TaskEditorToolbarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
private
{ Private declarations }
+ FCurrentItem: String;
+ //Settings: TSettings;
+ TMathParser: TExpressionParser;
+
//{$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
{$IFDEF MSWINDOWS}procedure WMNCPaint(var AMessage: TMessage); message WM_NCPAINT;{$ENDIF}
public
{ Public declarations }
+ ImportableProjectPath: String;
+ ProjectJson: String;
+ ProjectJsonPath: String;
+
procedure DragEnter(const Data: TDragObject; const Point: TPointF); override;
procedure DragOver(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); override;
procedure DragDrop(const Data: TDragObject; const Point: TPointF); override;
end;
- OutputModule = record
- Module,
- Mask: String;
- Imported: Boolean;
- end;
- RenderSetting = record
- Setting: String;
- Imported: Boolean;
- end;
+
function GetPlatformMemorySize: Int64;
function GetFFMPEGPath: WideString;
- function GetDirectoryFiles(Directory: String): TArray;
function KillProcess(ProcessName: String): Integer;
- procedure InitOutputModules;
- procedure InitRenderSettings;
- procedure InitConfiguration(Path: String);
- procedure LoadConfiguration(Path: String);
- procedure LoadLegacyConfiguration(Path: String);
- procedure SaveConfiguration(Path: String);
- function Open(Path: String): Integer;
- function Execute(Path: String): Integer;
- function BackgroundExecute(Path: String): Integer;
+// procedure InitOutputModules;
+// procedure InitConfiguration(Path: String);
+// procedure LoadConfiguration(Path: String);
+// procedure LoadLegacyConfiguration(Path: String);
+// procedure SaveConfiguration(Path: String);
procedure ChangeLanguage(LanguageCode: Integer);
procedure InitLanguage(PATH: String);
const
- APPVERSION = 'v0.8.5-beta';
- //APPVERSION_DEMO = 'v0.8.5-beta';
+ APPVERSION = 'v0.8.9-beta';
AERL_REPO_RELEASES = 'https://api.github.com/repos/lilystilson/aerender-launcher/releases';
- PLATFORMPATHSEPARATOR = {$IFDEF MSWINDOWS}'\'{$ENDIF MSWINDOWS}
- {$IFDEF MACOS}'/'{$ENDIF MACOS};
+ AWAIT_TIMEOUT = 10000;
+ //MAX_SIMULTANEOUS_THREADS = 8;
var
MainForm: TMainForm; (* Main Form Declaration *)
- APPFOLDER, VER, AERPATH, DEFPRGPATH, DEFOUTPATH,
- ERR, gitResponse, gitVersion, gitDownload, ffmpegPath,
- AERH, tempSavePath, DelTempFiles: String; (* Required variables for configuration file *)
+// APPFOLDER, VER, AERPATH, DEFPRGPATH, DEFOUTPATH,
+// ERR,
+// AERH, tempSavePath, DelTempFiles: String; (* Required variables for configuration file *)
+ gitResponse, gitVersion, gitDownload, ffmpegPath: String;
gitRelease: TJsonValue; (* GitHub API's returning JSON file *)
UpdateAvailable: Boolean = False; (* Represents app updates availability *)
FFMPEG: Boolean = False; (* Represents FFMPEG availability *)
+ AEParser: String = '';
RenderWindowSender: TButton; (* Who opened Rendering window? *)
- LANG, STYLE, ONRENDERSTART: Integer; (* Language, Theme and OnRenderStart values *)
- LogFiles: TArray; (* All the aerender log files here *)
- OutputModules: TArray; (* All the After Effects output modules here *)
- RenderSettings: TArray;
- OMCount: Cardinal;
+// Settings.Language, STYLE, ONRENDERSTART: Integer; (* Language, Theme and OnRenderStart values *)
+// LogFiles: TArray; (* All the aerender log files here *)
+// Settings.OutputModules: TArray; (* All the After Effects output modules here *)
+// RenderSettings: TArray;
+// OMCount: Cardinal;
//TempOutputModule: OutputModule; (* Temporary Output Module used from import *)
- TMathParser: MathExpParser.TExpressionParser; (* Mathematical parser for frames calculation *)
+ //TMathParser: TExpressionParser; (* Mathematical parser for frames calculation *)
+
FHandleDragDirectly: Boolean = False; (* For implementation of DragDrop functional *)
+
PARAMSTART: Boolean = False;
+
isRendering: Boolean = False;
+
+ TryParseAEP: Boolean = True;
+
Language: TArray;
+
Recents: array [0..9] of String;
RecentsMenuItems: TArray;
+
TempThreadsStr: String = '';
ImportedPath: String = '';
+ AwaitElapsedTime: Cardinal = 0;
+
implementation
uses
@@ -460,19 +499,6 @@ implementation
{$R *.fmx}
-procedure TComboEdit.OnValidateEvent(Sender: TObject; var Text: string);
-begin
- TempThreadsStr := Text;
-end;
-
-procedure TComboEdit.OnValidatingEvent(Sender: TObject; var Text: string);
-begin
- if (TempThreadsStr <> '') then begin
- Text := TempThreadsStr;
- TempThreadsStr := '';
- end;
-end;
-
{$REGION ' Routines '}
///
@@ -484,7 +510,9 @@ procedure TMainForm.WMNCPaint(var AMessage: TMessage);
begin
var hWnd: HWND := FormToHWND(Self);
- SetClassLong(hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) or CS_DROPSHADOW);
+ SetClassLong(hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) or CS_DROPSHADOW);
+
+ SystemParametersInfo(SPI_SETDROPSHADOW, 0, PVOID(True), 0);
{var v: Integer := 2;
@@ -501,24 +529,17 @@ procedure TMainForm.WMNCPaint(var AMessage: TMessage);
{$ENDIF MSWINDOWS}
function GetPlatformMemorySize: Int64; //BYTES, BLYAD
-var
- {$IFDEF MSWINDOWS}
- MS_Ex: MemoryStatusEx;
- {$ENDIF MSWINDOWS}
- {$IFDEF MACOS}
- res: Int64;
- len: size_t;
- {$ENDIF MACOS}
begin
{$IFDEF MSWINDOWS}
- FillChar (MS_Ex, SizeOf (MemoryStatusEx), #0);
- MS_Ex.dwLength := SizeOf (MemoryStatusEx);
- GlobalMemoryStatusEx (MS_Ex);
+ var MS_Ex: MemoryStatusEx;
+ FillChar(MS_Ex, SizeOf(MemoryStatusEx), #0);
+ MS_Ex.dwLength := SizeOf(MemoryStatusEx);
+ GlobalMemoryStatusEx(MS_Ex);
Result := MS_Ex.ullTotalPhys;
{$ENDIF MSWINDOWS}
{$IFDEF MACOS}
- len := SizeOf (Result);
- res := SysCtlByName ('hw.memsize', @Result, @len, nil, 0);
+ var len: size_t := SizeOf (Result);
+ var res: Int64 := SysCtlByName ('hw.memsize', @Result, @len, nil, 0);
if res <> 0 then
RaiseLastOSError;
{$ENDIF MACOS}
@@ -532,7 +553,7 @@ function GetFFMPEGPath: WideString;
{$IFDEF MSWINDOWS}AERenderDirectory := 'C:\ProgramData\AErender';{$ENDIF MSWINDOWS}
{$IFDEF MACOS}AERenderDirectory := GetEnvironmentVariable('HOME') + '/Documents/AErender/';{$ENDIF}
- Folders := TDirectory.GetDirectories(AErenderDirectory);
+ Folders := TDirectory.GetDirectories(APPFOLDER);
for var i := 0 to High(Folders) do
if Folders[i].Contains('ffmpeg') then begin
Result := Folders[i];
@@ -541,18 +562,6 @@ function GetFFMPEGPath: WideString;
Result := '';
end;
-function GetDirectoryFiles(Directory: String): TArray;
-var
- Files: System.TArray;
-begin
- Files := TDirectory.GetFiles(Directory);
- for var i := 0 to High(Files) do
- begin
- SetLength(Result, i+1);
- Result[i] := Files[i];
- end;
-end;
-
function KillProcess(ProcessName: String): Integer;
{$IFDEF MSWINDOWS}
const
@@ -594,7 +603,7 @@ function KillProcess(ProcessName: String): Integer;
procedure InitLanguage(PATH: String);
begin
- //LANG := 1;
+ //Settings.Language := 1;
var ResourceEN: TResourceStream := TResourceStream.Create(HInstance, 'Language_EN', RT_RCDATA);
var ResourceRU: TResourceStream := TResourceStream.Create(HInstance, 'Language_RU', RT_RCDATA);
Language := [
@@ -602,377 +611,301 @@ procedure InitLanguage(PATH: String);
LauncherText.InitFromResourceStream(ResourceRU)
];
- ChangeLanguage(LANG);
+ ChangeLanguage(Settings.Language);
end;
-procedure InitOutputModules;
-begin
- SetLength (OutputModules, 10);
-
- OutputModules[0].Module := 'Lossless';
- OutputModules[0].Mask := '[compName].[fileExtension]';
- OutputModules[0].Imported := False;
-
- OutputModules[1].Module := 'AIFF 48kHz';
- OutputModules[1].Mask := '[compName].[fileExtension]';
- OutputModules[1].Imported := False;
-
- OutputModules[2].Module := 'Alpha Only';
- OutputModules[2].Mask := '[compName].[fileExtension]';
- OutputModules[2].Imported := False;
-
- OutputModules[3].Module := 'AVI DV NTSC 48kHz';
- OutputModules[3].Mask := '[compName].[fileExtension]';
- OutputModules[3].Imported := False;
-
- OutputModules[4].Module := 'AVI DV PAL 48kHz';
- OutputModules[4].Mask := '[compName].[fileExtension]';
- OutputModules[4].Imported := False;
-
- OutputModules[5].Module := 'Lossless with Alpha';
- OutputModules[5].Mask := '[compName].[fileExtension]';
- OutputModules[5].Imported := False;
-
- OutputModules[6].Module := 'Multi-Machine Sequence';
- OutputModules[6].Mask := '[compName]_[#####].[fileExtension]';
- OutputModules[6].Imported := False;
-
- OutputModules[7].Module := 'Photoshop';
- OutputModules[7].Mask := '[compName]_[#####].[fileExtension]';
- OutputModules[7].Imported := False;
-
- OutputModules[8].Module := 'Save Current Preview';
- OutputModules[8].Mask := '[compName].[fileExtension]';
- OutputModules[8].Imported := False;
-
- OutputModules[9].Module := 'TIFF Sequence with Alpha';
- OutputModules[9].Mask := '[compName]_[#####].[fileExtension]';
- OutputModules[9].Imported := False;
-end;
-
-procedure InitRenderSettings;
-begin
- SetLength (RenderSettings, 5);
-
- RenderSettings[0].Setting := 'Current Settings';
- RenderSettings[0].Imported := False;
-
- RenderSettings[1].Setting := 'Best Settings';
- RenderSettings[1].Imported := False;
-
- RenderSettings[2].Setting := 'DV Settings';
- RenderSettings[2].Imported := False;
-
- RenderSettings[3].Setting := 'Draft Settings';
- RenderSettings[3].Imported := False;
-
- RenderSettings[4].Setting := 'Multi-Machine Settings';
- RenderSettings[4].Imported := False;
-
- //RenderSettings[4].Setting := 'Custom';
- //RenderSettings[4].Imported := False;
-end;
-
-procedure InitConfiguration(Path: String);
-var
- Config: IXMLDocument;
- RootNode: IXMLNode;
- ChildNode: IXMLNode;
-begin
- //InitLanguage;
- InitOutputModules;
- InitRenderSettings;
-
- Config := TXMLDocument.Create(nil);
- Config.Active := True;
- Config.Encoding := 'utf-8';
- Config.Options := [doNodeAutoIndent];
-
- RootNode := Config.AddChild('launcherconfig');
-
- RootNode.AddChild('lang').Text := '0';
- RootNode.AddChild('style').Text := '0';
- RootNode.AddChild('aerender').Text := '';
- RootNode.AddChild('onRenderStart').Text := '0';
- RootNode.AddChild('defprgpath').Text := '';
- RootNode.AddChild('defoutpath').Text := '';
- RootNode.AddChild('handle').Text := 'True';
- RootNode.AddChild('delTempFiles').Text := 'True';
-
- RootNode.AddChild('projectPath').Text := '';
- RootNode.AddChild('outputPath').Text := '';
- RootNode.AddChild('tempSavePath').Text := '';
-
- RootNode.AddChild('comp').Text := '';
- RootNode.AddChild('startFrame').Text := '';
- RootNode.AddChild('endFrame').Text := '';
-
- RootNode.AddChild('missingFiles').Text := 'False';
- RootNode.AddChild('sound').Text := 'False';
- RootNode.AddChild('thread').Text := 'False';
- RootNode.AddChild('prop').Text := '';
- RootNode.ChildNodes['prop'].Attributes['enabled'] := 'False';
-
- RootNode.AddChild('memoryLimit').Text := '100';
- RootNode.AddChild('cacheLimit').Text := '100';
-
- ChildNode := RootNode.AddChild('outputModule');
- ChildNode.Attributes['selected'] := '0';
-
- for var i := 0 to High(OutputModules) do begin
- var ModuleNode: IXMLNode := RootNode.ChildNodes['outputModule'].AddChild('module');
- ModuleNode.AddChild('moduleName').Text := OutputModules[i].Module;
- ModuleNode.Attributes['imported'] := 'False';
- ModuleNode.AddChild('filemask').Text := OutputModules[i].Mask;
- end;
-
- MainForm.outputModuleBox.ItemIndex := 0;
-
- ChildNode := RootNode.AddChild('renderSettings');
- ChildNode.Attributes['selected'] := '0';
-
- for var i := 0 to High(RenderSettings) do begin
- var SettingNode: IXMLNode := RootNode.ChildNodes['renderSettings'].AddChild('setting');
- SettingNode.Text := RenderSettings[i].Setting;
- SettingNode.Attributes['imported'] := 'False';
- end;
-
- MainForm.renderSettingsBox.ItemIndex := 0;
-
- ChildNode := RootNode.AddChild('recentProjects');
- for var i := 0 to 9 do
- ChildNode.AddChild('project').Text := '(empty)';
-
- Config.SaveToFile(Path);
-end;
-
-procedure LoadLegacyConfiguration(Path: String);
-var
- Config: IXMLDocument;
- RootNode: IXMLNode;
-begin
- Config := TXMLDocument.Create(nil);
- Config.LoadFromFile(Path);
- Config.Active := True;
- RootNode := Config.DocumentElement;
-
- LANG := 0;
- STYLE := RootNode.ChildNodes['style'].Text.ToInteger();
- AERPATH := RootNode.ChildNodes['aerender'].Text;
- ONRENDERSTART := RootNode.ChildNodes['onRenderStart'].Text.ToInteger();
- DEFPRGPATH := RootNode.ChildNodes['defprgpath'].Text;
- DEFOUTPATH := RootNode.ChildNodes['defoutpath'].Text;
- AERH := RootNode.ChildNodes['handle'].Text;
- DelTempFiles := RootNode.ChildNodes['delTempFiles'].Text;
-
- MainForm.projectPath.Text := RootNode.ChildNodes['projectPath'].Text;
- MainForm.outputPath.Text := RootNode.ChildNodes['outputPath'].Text;
- tempSavePath := RootNode.ChildNodes['tempSavePath'].Text;
-
- MainForm.compName.Text := RootNode.ChildNodes['comp'].Text;
- MainForm.inFrame.Text := RootNode.ChildNodes['startFrame'].Text;
- MainForm.outFrame.Text := RootNode.ChildNodes['endFrame'].Text;
-
- MainForm.missingFilesCheckbox.IsChecked := RootNode.ChildNodes['missingFiles'].Text.ToBoolean();
- MainForm.soundCheckbox.IsChecked := RootNode.ChildNodes['sound'].Text.ToBoolean();
- MainForm.threadedRender.IsChecked := RootNode.ChildNodes['thread'].Text.ToBoolean();
- MainForm.customCheckbox.IsChecked := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
- MainForm.customProp.Text := RootNode.ChildNodes['prop'].Text;
-
- MainForm.memUsageTrackBar.Value := RootNode.ChildNodes['memoryLimit'].Text.ToSingle();
- MainForm.cacheUsageTrackBar.Value := RootNode.ChildNodes['cacheLimit'].Text.ToSingle();
-
- //MainUnit.OMCount := RootNode.ChildNodes['outputModule'].ChildNodes.Count;
- SetLength (OutputModules, RootNode.ChildNodes['outputModule'].ChildNodes.Count);
- for var i := 0 to High(OutputModules) do
- begin
- OutputModules[i].Module := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['moduleName'].Text;
- OutputModules[i].Mask := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['filemask'].Text;
- OutputModules[i].Imported := False;
- end;
-
- InitRenderSettings;
-
- MainForm.outputModuleBox.ItemIndex := StrToInt(RootNode.ChildNodes['outputModule'].Attributes['selected']);
- MainForm.renderSettingsBox.ItemIndex := 0;
-end;
-
-procedure LoadConfiguration(Path: String);
-var
- Config: IXMLDocument;
- RootNode: IXMLNode;
-begin
- Config := TXMLDocument.Create(nil);
- Config.LoadFromFile(Path);
- Config.Active := True;
- RootNode := Config.DocumentElement;
-
- LANG := RootNode.ChildNodes['lang'].Text.ToInteger();
- STYLE := RootNode.ChildNodes['style'].Text.ToInteger();
- AERPATH := RootNode.ChildNodes['aerender'].Text;
- ONRENDERSTART := RootNode.ChildNodes['onRenderStart'].Text.ToInteger();
- DEFPRGPATH := RootNode.ChildNodes['defprgpath'].Text;
- DEFOUTPATH := RootNode.ChildNodes['defoutpath'].Text;
- AERH := RootNode.ChildNodes['handle'].Text;
- DelTempFiles := RootNode.ChildNodes['delTempFiles'].Text;
-
- MainForm.projectPath.Text := RootNode.ChildNodes['projectPath'].Text;
- MainForm.outputPath.Text := RootNode.ChildNodes['outputPath'].Text;
- tempSavePath := RootNode.ChildNodes['tempSavePath'].Text;
-
- MainForm.compName.Text := RootNode.ChildNodes['comp'].Text;
- MainForm.inFrame.Text := RootNode.ChildNodes['startFrame'].Text;
- MainForm.outFrame.Text := RootNode.ChildNodes['endFrame'].Text;
-
- MainForm.missingFilesCheckbox.IsChecked := RootNode.ChildNodes['missingFiles'].Text.ToBoolean();
- MainForm.soundCheckbox.IsChecked := RootNode.ChildNodes['sound'].Text.ToBoolean();
- MainForm.threadedRender.IsChecked := RootNode.ChildNodes['thread'].Text.ToBoolean();
- MainForm.customCheckbox.IsChecked := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
- MainForm.customProp.Text := RootNode.ChildNodes['prop'].Text;
-
- MainForm.memUsageTrackBar.Value := RootNode.ChildNodes['memoryLimit'].Text.ToSingle();
- MainForm.cacheUsageTrackBar.Value := RootNode.ChildNodes['cacheLimit'].Text.ToSingle();
-
- if RootNode.ChildNodes['outputModule'].ChildNodes.Count <> 0 then begin
- SetLength (OutputModules, RootNode.ChildNodes['outputModule'].ChildNodes.Count);
- for var i := 0 to High(OutputModules) do begin
- OutputModules[i].Module := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['moduleName'].Text;
- OutputModules[i].Mask := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['filemask'].Text;
- OutputModules[i].Imported := StrToBool(RootNode.ChildNodes['outputModule'].ChildNodes[i].Attributes['imported']);
- end;
- MainForm.outputModuleBox.ItemIndex := StrToInt(RootNode.ChildNodes['outputModule'].Attributes['selected']);
- end else
- InitOutputModules;
-
- if RootNode.ChildNodes['renderSettings'].ChildNodes.Count <> 0 then begin
- SetLength (RenderSettings, RootNode.ChildNodes['renderSettings'].ChildNodes.Count);
- for var i := 0 to High(RenderSettings) do begin
- RenderSettings[i].Setting := RootNode.ChildNodes['renderSettings'].ChildNodes[i].Text;
- RenderSettings[i].Imported := StrToBool(RootNode.ChildNodes['renderSettings'].ChildNodes[i].Attributes['imported']);
- end;
- MainForm.renderSettingsBox.ItemIndex := StrToInt(RootNode.ChildNodes['renderSettings'].Attributes['selected']);
- end else
- InitRenderSettings;
-
- for var i := 0 to 9 do begin
- Recents[i] := RootNode.ChildNodes['recentProjects'].ChildNodes[i].Text;
- end;
-end;
-
-procedure SaveConfiguration(Path: String);
-var
- Config: IXMLDocument;
- RootNode: IXMLNode;
- ChildNode: IXMLNode;
-begin
- Config := TXMLDocument.Create(nil);
- Config.Active := True;
- Config.Encoding := 'utf-8';
- Config.Options := [doNodeAutoIndent];
-
- RootNode := Config.AddChild('launcherconfig');
-
- RootNode.AddChild('lang').Text := LANG.ToString;
- RootNode.AddChild('style').Text := STYLE.ToString;
- RootNode.AddChild('aerender').Text := AERPATH;
- RootNode.AddChild('onRenderStart').Text := ONRENDERSTART.ToString;
- RootNode.AddChild('defprgpath').Text := DEFPRGPATH;
- RootNode.AddChild('defoutpath').Text := DEFOUTPATH;
- RootNode.AddChild('handle').Text := AERH;
- RootNode.AddChild('delTempFiles').Text := DelTempFiles;
-
- RootNode.AddChild('projectPath').Text := MainForm.projectPath.Text;
- RootNode.AddChild('outputPath').Text := MainForm.outputPath.Text;
- RootNode.AddChild('tempSavePath').Text := tempSavePath;
-
- RootNode.AddChild('comp').Text := MainForm.compName.Text;
- RootNode.AddChild('startFrame').Text := MainForm.inFrame.Text;
- RootNode.AddChild('endFrame').Text := MainForm.outFrame.Text;
- RootNode.AddChild('missingFiles').Text := BoolToStr(MainForm.missingFilesCheckbox.IsChecked, True);
-
- RootNode.AddChild('sound').Text := BoolToStr(MainForm.soundCheckbox.IsChecked, True);
- RootNode.AddChild('thread').Text := BoolToStr(MainForm.threadedRender.IsChecked, True);
- RootNode.AddChild('prop').Text := MainForm.customProp.Text;
- RootNode.ChildNodes['prop'].Attributes['enabled'] := BoolToStr(MainForm.customCheckbox.IsChecked, True);
-
- RootNode.AddChild('memoryLimit').Text := MainForm.memUsageTrackBar.Value.ToString;
- RootNode.AddChild('cacheLimit').Text := MainForm.cacheUsageTrackBar.Value.ToString;
-
- ChildNode := RootNode.AddChild('outputModule');
- ChildNode.Attributes['selected'] := MainForm.outputModuleBox.ItemIndex.ToString;
- for var i := 0 to High(OutputModules) do begin
- var ModuleNode: IXMLNode := RootNode.ChildNodes['outputModule'].AddChild('module');
- ModuleNode.Attributes['imported'] := BoolToStr(OutputModules[i].Imported, True);
- ModuleNode.AddChild('moduleName').Text := OutputModules[i].Module;
- ModuleNode.AddChild('filemask').Text := OutputModules[i].Mask;
- end;
-
- ChildNode := RootNode.AddChild('renderSettings');
- ChildNode.Attributes['selected'] := MainForm.renderSettingsBox.ItemIndex.ToString;
- for var i := 0 to High(RenderSettings) do begin
- var SettingNode: IXMLNode := RootNode.ChildNodes['renderSettings'].AddChild('setting');
- SettingNode.Text := RenderSettings[i].Setting;
- SettingNode.Attributes['imported'] := RenderSettings[i].Imported;
- end;
-
- ChildNode := RootNode.AddChild('recentProjects');
- for var i := 0 to 9 do begin
- if Recents[i] = '' then
- ChildNode.AddChild('project').Text := '(empty)'
- else
- ChildNode.AddChild('project').Text := Recents[i]
- end;
-
- Config.SaveToFile(Path);
-end;
-
-function Open(Path: String): Integer;
-begin
- {$IFDEF MSWINDOWS}
- Result := ShellExecute(0, 'open', PWideChar(Path), nil, nil, SW_SHOW);
- {$ENDIF MSWINDOWS}
- {$IFDEF MACOS}
- Result := _system(PAnsiChar('open ' + AnsiString('"' + Path + '"')));
- {$ENDIF MACOS}
-end;
-
-function Execute(Path: String): Integer;
-begin
- {$IFDEF MSWINDOWS}
- Result := ShellExecute(0, 'OPEN', PWideChar(Path), '', '', SW_SHOWNORMAL)
- {$ENDIF MSWINDOWS}
- {$IFDEF MACOS}
- _system(PAnsiChar('chmox +x ' + AnsiString('"' + Path + '"')));
- Result := _system(PAnsiChar('command ' + AnsiString('"' + Path + '"')));
- {$ENDIF MACOS}
-end;
-
-function BackgroundExecute(Path: String): Integer;
-begin
- {$IFDEF MSWINDOWS}
- Result := ShellExecute(0, 'OPEN', PWideChar(Path), '', '', SW_HIDE)
- {$ENDIF MSWINDOWS}
- {$IFDEF MACOS}
- _system(PAnsiChar('chmox +x ' + AnsiString('"' + Path + '"')));
- Result := _system(PAnsiChar('command ' + AnsiString('"' + Path + '" & disown')));
- {$ENDIF MACOS}
-end;
+//procedure InitOutputModules;
+//begin
+// SetLength (Settings.OutputModules, 10);
+//
+// Settings.OutputModules[0].Module := 'Lossless';
+// Settings.OutputModules[0].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[0].Imported := False;
+//
+// Settings.OutputModules[1].Module := 'AIFF 48kHz';
+// Settings.OutputModules[1].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[1].Imported := False;
+//
+// Settings.OutputModules[2].Module := 'Alpha Only';
+// Settings.OutputModules[2].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[2].Imported := False;
+//
+// Settings.OutputModules[3].Module := 'AVI DV NTSC 48kHz';
+// Settings.OutputModules[3].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[3].Imported := False;
+//
+// Settings.OutputModules[4].Module := 'AVI DV PAL 48kHz';
+// Settings.OutputModules[4].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[4].Imported := False;
+//
+// Settings.OutputModules[5].Module := 'Lossless with Alpha';
+// Settings.OutputModules[5].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[5].Imported := False;
+//
+// Settings.OutputModules[6].Module := 'Multi-Machine Sequence';
+// Settings.OutputModules[6].Mask := '[compName]_[#####].[fileExtension]';
+// Settings.OutputModules[6].Imported := False;
+//
+// Settings.OutputModules[7].Module := 'Photoshop';
+// Settings.OutputModules[7].Mask := '[compName]_[#####].[fileExtension]';
+// Settings.OutputModules[7].Imported := False;
+//
+// Settings.OutputModules[8].Module := 'Save Current Preview';
+// Settings.OutputModules[8].Mask := '[compName].[fileExtension]';
+// Settings.OutputModules[8].Imported := False;
+//
+// Settings.OutputModules[9].Module := 'TIFF Sequence with Alpha';
+// Settings.OutputModules[9].Mask := '[compName]_[#####].[fileExtension]';
+// Settings.OutputModules[9].Imported := False;
+//end;
+//
+//procedure InitConfiguration(Path: String);
+//var
+// Config: IXMLDocument;
+// RootNode: IXMLNode;
+// ChildNode: IXMLNode;
+//begin
+// //InitLanguage;
+// InitOutputModules;
+// InitRenderSettings;
+//
+// Config := TXMLDocument.Create(nil);
+// Config.Active := True;
+// Config.Encoding := 'utf-8';
+// Config.Options := [doNodeAutoIndent];
+//
+// RootNode := Config.AddChild('launcherconfig');
+//
+// RootNode.AddChild('lang').Text := '0';
+// RootNode.AddChild('style').Text := '0';
+// RootNode.AddChild('aerender').Text := '';
+// RootNode.AddChild('onRenderStart').Text := '0';
+// RootNode.AddChild('defprgpath').Text := '';
+// RootNode.AddChild('defoutpath').Text := '';
+// RootNode.AddChild('handle').Text := 'True';
+// RootNode.AddChild('delTempFiles').Text := 'True';
+//
+// RootNode.AddChild('projectPath').Text := '';
+// RootNode.AddChild('outputPath').Text := '';
+// RootNode.AddChild('tempSavePath').Text := '';
+//
+// RootNode.AddChild('comp').Text := '';
+// RootNode.AddChild('startFrame').Text := '';
+// RootNode.AddChild('endFrame').Text := '';
+//
+// RootNode.AddChild('missingFiles').Text := 'False';
+// RootNode.AddChild('sound').Text := 'False';
+// RootNode.AddChild('thread').Text := 'False';
+// RootNode.AddChild('prop').Text := '';
+// RootNode.ChildNodes['prop'].Attributes['enabled'] := 'False';
+//
+// RootNode.AddChild('memoryLimit').Text := '100';
+// RootNode.AddChild('cacheLimit').Text := '100';
+//
+// ChildNode := RootNode.AddChild('outputModule');
+// ChildNode.Attributes['selected'] := '0';
+//
+// for var i := 0 to High(Settings.OutputModules) do begin
+// var ModuleNode: IXMLNode := RootNode.ChildNodes['outputModule'].AddChild('module');
+// ModuleNode.AddChild('moduleName').Text := Settings.OutputModules[i].Module;
+// ModuleNode.Attributes['imported'] := 'False';
+// ModuleNode.AddChild('filemask').Text := Settings.OutputModules[i].Mask;
+// end;
+//
+// MainForm.outputModuleBox.ItemIndex := 0;
+//
+// ChildNode := RootNode.AddChild('renderSettings');
+// ChildNode.Attributes['selected'] := '0';
+//
+// for var i := 0 to High(RenderSettings) do begin
+// var SettingNode: IXMLNode := RootNode.ChildNodes['renderSettings'].AddChild('setting');
+// SettingNode.Text := RenderSettings[i].Setting;
+// SettingNode.Attributes['imported'] := 'False';
+// end;
+//
+// MainForm.renderSettingsEdit.Text := 'Best Settings';
+//
+// ChildNode := RootNode.AddChild('recentProjects');
+// for var i := 0 to 9 do
+// ChildNode.AddChild('project').Text := '(empty)';
+//
+// Config.SaveToFile(Path);
+//end;
+//
+//procedure LoadLegacyConfiguration(Path: String);
+//var
+// Config: IXMLDocument;
+// RootNode: IXMLNode;
+//begin
+// Config := TXMLDocument.Create(nil);
+// Config.LoadFromFile(Path);
+// Config.Active := True;
+// RootNode := Config.DocumentElement;
+//
+// Settings.Language := 0;
+// STYLE := RootNode.ChildNodes['style'].Text.ToInteger();
+// AErenderPath := RootNode.ChildNodes['aerender'].Text;
+// ONRENDERSTART := RootNode.ChildNodes['onRenderStart'].Text.ToInteger();
+// DEFPRGPATH := RootNode.ChildNodes['defprgpath'].Text;
+// DEFOUTPATH := RootNode.ChildNodes['defoutpath'].Text;
+// AERH := RootNode.ChildNodes['handle'].Text;
+// DelTempFiles := RootNode.ChildNodes['delTempFiles'].Text;
+//
+// MainForm.projectPath.Text := RootNode.ChildNodes['projectPath'].Text;
+// MainForm.outputPath.Text := RootNode.ChildNodes['outputPath'].Text;
+// tempSavePath := RootNode.ChildNodes['tempSavePath'].Text;
+//
+// MainForm.compName.Text := RootNode.ChildNodes['comp'].Text;
+// MainForm.inFrame.Text := RootNode.ChildNodes['startFrame'].Text;
+// MainForm.outFrame.Text := RootNode.ChildNodes['endFrame'].Text;
+//
+// MainForm.missingFilesCheckbox.IsChecked := RootNode.ChildNodes['missingFiles'].Text.ToBoolean();
+// MainForm.soundCheckbox.IsChecked := RootNode.ChildNodes['sound'].Text.ToBoolean();
+// MainForm.threadedRender.IsChecked := RootNode.ChildNodes['thread'].Text.ToBoolean();
+// MainForm.customCheckbox.IsChecked := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
+// MainForm.customProp.Enabled := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
+// MainForm.customProp.Text := RootNode.ChildNodes['prop'].Text;
+//
+// MainForm.memUsageTrackBar.Value := RootNode.ChildNodes['memoryLimit'].Text.ToSingle();
+// MainForm.cacheUsageTrackBar.Value := RootNode.ChildNodes['cacheLimit'].Text.ToSingle();
+//
+// //MainUnit.OMCount := RootNode.ChildNodes['outputModule'].ChildNodes.Count;
+// SetLength (Settings.OutputModules, RootNode.ChildNodes['outputModule'].ChildNodes.Count);
+// for var i := 0 to High(Settings.OutputModules) do
+// begin
+// Settings.OutputModules[i].Module := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['moduleName'].Text;
+// Settings.OutputModules[i].Mask := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['filemask'].Text;
+// Settings.OutputModules[i].Imported := False;
+// end;
+//
+// InitRenderSettings;
+//
+// MainForm.outputModuleBox.ItemIndex := StrToInt(RootNode.ChildNodes['outputModule'].Attributes['selected']);
+// MainForm.renderSettingsEdit.Text := RootNode.ChildNodes['renderSettings'].ChildNodes[StrToInt(RootNode.ChildNodes['renderSettings'].Attributes['selected'])].Text;
+//end;
+//
+//procedure LoadConfiguration(Path: String);
+//var
+// Config: IXMLDocument;
+// RootNode: IXMLNode;
+//begin
+// Config := TXMLDocument.Create(nil);
+// Config.LoadFromFile(Path);
+// Config.Active := True;
+// RootNode := Config.DocumentElement;
+//
+// Settings.Language := RootNode.ChildNodes['lang'].Text.ToInteger();
+// STYLE := RootNode.ChildNodes['style'].Text.ToInteger();
+// AErenderPath := RootNode.ChildNodes['aerender'].Text;
+// ONRENDERSTART := RootNode.ChildNodes['onRenderStart'].Text.ToInteger();
+// DEFPRGPATH := RootNode.ChildNodes['defprgpath'].Text;
+// DEFOUTPATH := RootNode.ChildNodes['defoutpath'].Text;
+// AERH := RootNode.ChildNodes['handle'].Text;
+// DelTempFiles := RootNode.ChildNodes['delTempFiles'].Text;
+//
+// MainForm.projectPath.Text := RootNode.ChildNodes['projectPath'].Text;
+// MainForm.outputPath.Text := RootNode.ChildNodes['outputPath'].Text;
+// tempSavePath := RootNode.ChildNodes['tempSavePath'].Text;
+//
+// MainForm.compName.Text := RootNode.ChildNodes['comp'].Text;
+// MainForm.inFrame.Text := RootNode.ChildNodes['startFrame'].Text;
+// MainForm.outFrame.Text := RootNode.ChildNodes['endFrame'].Text;
+//
+// MainForm.missingFilesCheckbox.IsChecked := RootNode.ChildNodes['missingFiles'].Text.ToBoolean();
+// MainForm.soundCheckbox.IsChecked := RootNode.ChildNodes['sound'].Text.ToBoolean();
+// MainForm.threadedRender.IsChecked := RootNode.ChildNodes['thread'].Text.ToBoolean();
+// MainForm.customCheckbox.IsChecked := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
+// MainForm.customProp.Enabled := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
+// MainForm.customProp.Text := RootNode.ChildNodes['prop'].Text;
+//
+// MainForm.memUsageTrackBar.Value := RootNode.ChildNodes['memoryLimit'].Text.ToSingle();
+// MainForm.cacheUsageTrackBar.Value := RootNode.ChildNodes['cacheLimit'].Text.ToSingle();
+//
+// if RootNode.ChildNodes['outputModule'].ChildNodes.Count <> 0 then begin
+// SetLength (Settings.OutputModules, RootNode.ChildNodes['outputModule'].ChildNodes.Count);
+// for var i := 0 to High(Settings.OutputModules) do begin
+// Settings.OutputModules[i].Module := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['moduleName'].Text;
+// Settings.OutputModules[i].Mask := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['filemask'].Text;
+// Settings.OutputModules[i].Imported := StrToBool(RootNode.ChildNodes['outputModule'].ChildNodes[i].Attributes['imported']);
+// end;
+// MainForm.outputModuleBox.ItemIndex := StrToInt(RootNode.ChildNodes['outputModule'].Attributes['selected']);
+// end else
+// InitOutputModules;
+//
+// MainForm.renderSettingsEdit.Text := RootNode.ChildNodes['renderSettings'].Text;
+//
+// for var i := 0 to 9 do begin
+// Recents[i] := RootNode.ChildNodes['recentProjects'].ChildNodes[i].Text;
+// end;
+//end;
+//
+//procedure SaveConfiguration(Path: String);
+//var
+// Config: IXMLDocument;
+// RootNode: IXMLNode;
+// ChildNode: IXMLNode;
+//begin
+// Config := TXMLDocument.Create(nil);
+// Config.Active := True;
+// Config.Encoding := 'utf-8';
+// Config.Options := [doNodeAutoIndent];
+//
+// RootNode := Config.AddChild('launcherconfig');
+//
+// RootNode.AddChild('lang').Text := Settings.Language.ToString;
+// RootNode.AddChild('style').Text := STYLE.ToString;
+// RootNode.AddChild('aerender').Text := AErenderPath;
+// RootNode.AddChild('onRenderStart').Text := ONRENDERSTART.ToString;
+// RootNode.AddChild('defprgpath').Text := DEFPRGPATH;
+// RootNode.AddChild('defoutpath').Text := DEFOUTPATH;
+// RootNode.AddChild('handle').Text := AERH;
+// RootNode.AddChild('delTempFiles').Text := DelTempFiles;
+//
+// RootNode.AddChild('projectPath').Text := MainForm.projectPath.Text;
+// RootNode.AddChild('outputPath').Text := MainForm.outputPath.Text;
+// RootNode.AddChild('tempSavePath').Text := tempSavePath;
+//
+// RootNode.AddChild('comp').Text := MainForm.compName.Text;
+// RootNode.AddChild('startFrame').Text := MainForm.inFrame.Text;
+// RootNode.AddChild('endFrame').Text := MainForm.outFrame.Text;
+// RootNode.AddChild('missingFiles').Text := BoolToStr(MainForm.missingFilesCheckbox.IsChecked, True);
+//
+// RootNode.AddChild('sound').Text := BoolToStr(MainForm.soundCheckbox.IsChecked, True);
+// RootNode.AddChild('thread').Text := BoolToStr(MainForm.threadedRender.IsChecked, True);
+// RootNode.AddChild('prop').Text := MainForm.customProp.Text;
+// RootNode.ChildNodes['prop'].Attributes['enabled'] := BoolToStr(MainForm.customCheckbox.IsChecked, True);
+//
+// RootNode.AddChild('memoryLimit').Text := MainForm.memUsageTrackBar.Value.ToString;
+// RootNode.AddChild('cacheLimit').Text := MainForm.cacheUsageTrackBar.Value.ToString;
+//
+// ChildNode := RootNode.AddChild('outputModule');
+// ChildNode.Attributes['selected'] := MainForm.outputModuleBox.ItemIndex.ToString;
+// for var i := 0 to High(Settings.OutputModules) do begin
+// var ModuleNode: IXMLNode := RootNode.ChildNodes['outputModule'].AddChild('module');
+// ModuleNode.Attributes['imported'] := BoolToStr(Settings.OutputModules[i].Imported, True);
+// ModuleNode.AddChild('moduleName').Text := Settings.OutputModules[i].Module;
+// ModuleNode.AddChild('filemask').Text := Settings.OutputModules[i].Mask;
+// end;
+//
+// ChildNode := RootNode.AddChild('renderSettings');
+// ChildNode.Text := MainForm.renderSettingsEdit.Text;
+//
+// ChildNode := RootNode.AddChild('recentProjects');
+// for var i := 0 to 9 do begin
+// if Recents[i] = '' then
+// ChildNode.AddChild('project').Text := '(empty)'
+// else
+// ChildNode.AddChild('project').Text := Recents[i]
+// end;
+//
+// Config.SaveToFile(Path);
+//end;
function GetOMIndex(AOutputModule: OutputModule): Integer;
begin
Result := -1;
- for var i := 0 to High(OutputModules) do
- if (AOutputModule.Module = OutputModules[i].Module) and (AOutputModule.Mask = OutputModules[i].Mask) then begin
- Result := i;
- break;
- end;
-end;
-
-function GetRSIndex(ARenderSetting: RenderSetting): Integer;
-begin
- Result := -1;
- for var i := 0 to High(RenderSettings) do
- if ARenderSetting.Setting = RenderSettings[i].Setting then begin
+ for var i := 0 to High(Settings.OutputModules) do
+ if AOutputModule = Settings.OutputModules[i] then begin
Result := i;
break;
end;
@@ -1063,12 +996,239 @@ procedure TMainForm.ReInflateRecents;
InflateRecents;
end;
-procedure TMainForm.renderSettingsBoxChange(Sender: TObject);
+procedure TMainForm.RenderTasksOnNotify(Sender: TObject; const Item: TRenderTask; Action: TCollectionNotification);
+begin
+ TasksIsEmpty.Visible := RenderTasks.Count = 0;
+ /// Because method [Clear()] calls [BeginUpdate()] and [EndUpdate()]
+ /// we call it first here
+ TasksTreeView.Clear;
+
+ TasksTreeView.BeginUpdate;
+ for var Task: TRenderTask in RenderTasks do begin
+ var ProjectItem: TTreeViewItem := TTreeViewItem.Create(nil);
+ ProjectItem.Text := ExtractFileName(Task.Project);
+ ProjectItem.Parent := TasksTreeView;
+ ProjectItem.StyledSettings := [TStyledSetting.FontColor, TStyledSetting.Family, TStyledSetting.Size];
+ ProjectItem.TextSettings.Font.Style := [TFontStyle.fsBold];
+ ProjectItem.IsExpanded := True;
+ ProjectItem.OnDblClick := TasksTreeViewItemDblClick;
+
+ for var Comp: TComposition in Task.Compositions do begin
+ var CompItem: TTreeViewItem := TTreeViewItem.Create(nil);
+ CompItem.Text := Comp.CompName;
+ CompItem.Parent := ProjectItem;
+ CompItem.OnDblClick := TasksTreeViewItemDblClick;
+
+ var CompLabel: TCompLabel := TCompLabel.Create(nil);
+ CompLabel.Parent := CompItem;
+ CompLabel.Align := TAlignLayout.Client;
+ CompLabel.InFrame := Comp.Frames.StartFrame;
+ CompLabel.OutFrame := Comp.Frames.EndFrame;
+ CompLabel.Split := IntToStr(Comp.Split);
+ CompLabel.Value := -1;//Comp.Frames.StartFrame;
+ end;
+ end;
+ TasksTreeView.EndUpdate;
+
+ TasksTreeView.AllowDrag := True;
+end;
+
+procedure TMainForm.UpdateTasksList;
+begin
+// TasksTreeView.BeginUpdate;
+// ///
+// TasksTreeView.Clear;
+//
+// for var Task: TRenderTask in RenderTasks do begin
+// var ProjectItem: TTreeViewItem := TTreeViewItem.Create(nil);
+// ProjectItem.Text := ExtractFileName(Task.Project);
+// ProjectItem.Parent := TasksTreeView;
+// ProjectItem.StyledSettings := [TStyledSetting.FontColor, TStyledSetting.Family, TStyledSetting.Size];
+// ProjectItem.TextSettings.Font.Style := [TFontStyle.fsBold];
+// ProjectItem.IsExpanded := True;
+//
+// for var Comp: TComposition in Task.Compositions do begin
+// var CompItem: TTreeViewItem := TTreeViewItem.Create(nil);
+// CompItem.Text := Comp.CompName;
+// CompItem.Parent := ProjectItem;
+//
+// var СompLabel: TCompLabel := TCompLabel.Create(nil);
+// СompLabel.Parent := CompItem;
+// СompLabel.Align := TAlignLayout.Client;
+// СompLabel.InFrame := IntToStr(Comp.Frames.StartFrame);
+// СompLabel.OutFrame := IntToStr(Comp.Frames.EndFrame);
+// СompLabel.Split := IntToStr(Comp.Split);
+// end;
+// end;
+// TasksTreeView.EndUpdate;
+end;
+
+procedure TMainForm.RemoveTaskButtonClick(Sender: TObject);
+begin
+ //Popup1.IsOpen := False;
+ RenderTasks.Clear;
+end;
+
+procedure TMainForm.ExtractParserToAppDir;
+begin
+ var ExtractPath: String := APPFOLDER + {$IFDEF MSWINDOWS}'aeparser_win.exe'{$ELSE MACOS}'aeparser_mac'{$ENDIF};
+
+ var ResStream: TResourceStream := TResourceStream.Create(HInstance, {$IFDEF MSWINDOWS}'AEPARSER_WIN'{$ELSE MACOS}'AEPARSER_MAC'{$ENDIF}, RT_RCDATA);
+
+ try
+ ResStream.Position := 0;
+ ResStream.SaveToFile(ExtractPath);
+ finally
+ ResStream.Free;
+ end;
+
+ {$IFDEF MACOS}
+ _system(PAnsiChar('chmod +x "' + AnsiString(ExtractPath) + '"'));
+ {$ENDIF}
+end;
+
+procedure TMainForm.BeginTryParseAEP(const APath: String);
+begin
+ //AwaitIndicator.Enabled := True;
+
+ var ConverterPath: String := APPFOLDER + {$IFDEF MSWINDOWS}'aeparser_win.exe'{$ELSE MACOS}'aeparser_mac'{$ENDIF};
+
+// {$IFDEF MSWINDOWS}
+// var ConverterPath: String := 'Z:\YandexDisk\Development\Delphi\AErender Launcher\src\lib\plugins\AEP Parser\aeparser.exe';
+// {$ELSE MACOS}
+// var ConverterPath: String := '////';
+// {$ENDIF}
+ //var Project: String := Data.Files[0];
+
+ ProjectJsonPath := Format('%s%s', [APPFOLDER, ExtractFileName(APath).Replace('aep', 'json')]);;
+
+ //var FileDate := FileDateToDateTime(FileAge(ProjectJsonPath));
+ //var ThisTime := Now;
+
+ if FileExists(ProjectJsonPath) then
+ if (FileDateToDateTime(FileAge(ProjectJsonPath)) + EncodeTime(0, 0, 1, 0) >= Now) then
+ ProjectReaderAwait.Enabled := True
+ else begin
+ ProjectAwait.Visible := True;
+ ProjectAwait.Enabled := True;
+
+ var Executable: TextFile;
+ AssignFile(Executable, APPFOLDER + {$IFDEF MSWINDOWS}'project.bat'{$ELSE MACOS}'project.command'{$ENDIF});
+ Rewrite(Executable);
+ {$IFDEF MSWINDOWS}
+ Writeln(Executable, 'chcp 65001');
+ {$ENDIF}
+ Writeln(Executable, Format('("%s" "%s") > "%s%s"', [ConverterPath, APath, APPFOLDER, ExtractFileName(APath).Replace('aep', 'json')]));
+ CloseFile(Executable);
+
+ {$IFDEF MSWINDOWS}
+ ShellExecute(0, 'OPEN', PWideChar(APPFOLDER + 'project.bat'), '', '', SW_HIDE);
+ {$ELSE MACOS}
+ _system(PAnsiChar('chmod +x "' + AnsiString(APPFOLDER + 'project.command"')));
+ _system(PAnsiChar('command "' + AnsiString(APPFOLDER + 'project.command" & disown')));
+ {$ENDIF}
+
+ //Status.Text := 'Executing...';
+
+ ProjectReaderAwait.Enabled := True;
+ end;
+end;
+
+procedure TMainForm.CheckAndPopup(const APath: String; const TryParse: Boolean);
+begin
+ if APath <> '' then begin
+ TaskEditorTabControl.TabIndex := 0;
+ if (TasksTreeView.ItemByText(ExtractFileName(APath)) <> nil) or (GetTaskByProject(ExtractFileName(APath)) <> nil) then
+ TasksTreeViewItemDblClick(TasksTreeView.ItemByText(ExtractFileName(APath)))
+ else begin
+ TaskEditorSaveButton.Visible := False;
+ TaskEditorCreateTaskButton.Visible := True;
+ projectPath.Text := APath;
+
+ if TryParse then begin
+ BeginTryParseAEP(APath);
+ end else
+ TaskEditorPopup.PopupModal;
+ AddToRecents(APath);
+ end;
+ end;
+end;
+
+procedure TMainForm.AddTaskButtonClick(Sender: TObject);
begin
- if (renderSettingsBox.ItemIndex = renderSettingsBox.Count - 1) and (renderSettingsBox.Count <> 0) then begin
- //OutputModuleEditorForm.Show;
- //renderSettingsBox.ItemIndex := 0;
- end
+ var TempStr: String := '';
+
+// var PathCheckThread: TThread := TThread.CreateAnonymousThread(procedure begin
+// repeat
+// if TempStr <> '' then begin
+// TaskEditorTabControl.TabIndex := 0;
+// if (TasksTreeView.ItemByText(ExtractFileName(TempStr)) <> nil) or (GetTaskByProject(ExtractFileName(TempStr)) <> nil) then
+// TasksTreeViewItemDblClick(TasksTreeView.ItemByText(ExtractFileName(TempStr)))
+// else begin
+// TaskEditorSaveButton.Visible := False;
+// TaskEditorCreateTaskButton.Visible := True;
+//
+// if TryParseAEP then begin
+// ImportForm.ShowModal
+// end else
+// TaskEditorPopup.PopupModal;
+// AddToRecents(TempStr);
+// end;
+// end;
+// until TempStr <> '';
+// end);
+//
+{$IFDEF MACOS}
+ var NSWin: NSWindow := WindowHandleToPlatform(Screen.ActiveForm.Handle).Wnd;
+
+
+
+ var FOpenFile: NSSavePanel := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel);
+ FOpenFile.setDirectory(StrToNSStr(DEFPRGPATH));
+ FOpenFile.setAllowedFileTypes(ArrayToNSArray(['aep']));
+ FOpenFile.setPrompt(StrToNSStr('Open After Effects project'));
+
+
+ objc_msgSendP2( // We are calling here method straight from MacApi
+ (FOpenFile as ILocalObject).GetObjectID, // Provide object with callable method
+ sel_getUid(PAnsiChar('beginSheetModalForWindow:completionHandler:')), // Provide method UID
+ (NSWin as ILocalObject).GetObjectID, // Provide first method parameter
+ TObjCBlock.CreateBlockWithProcedure(procedure (p1: NSInteger) begin // Provide callback procedure (thanks NightFlight!)
+ if p1 = 0 then
+ // Handle
+ else begin
+ TempStr := NSStrToStr(FOpenFile.URL.relativePath);
+ CheckAndPopup(TempStr, TryParseAEP);
+ //Sleep(200);
+ end;
+ end)
+ );
+
+{$ELSE MSWINDOWS}
+ with AEPOpenDialog do
+ if Execute then begin
+ {TempStr := AEPOpenDialog.FileName;
+
+ if TempStr <> '' then begin
+ TaskEditorTabControl.TabIndex := 0;
+ if (TasksTreeView.ItemByText(ExtractFileName(TempStr)) <> nil) or (GetTaskByProject(ExtractFileName(TempStr)) <> nil) then
+ TasksTreeViewItemDblClick(TasksTreeView.ItemByText(ExtractFileName(TempStr)))
+ else begin
+ TaskEditorSaveButton.Visible := False;
+ TaskEditorCreateTaskButton.Visible := True;
+ projectPath.Text := TempStr;
+
+ if TryParseAEP then begin
+ //ImportForm.ShowModal
+ end else
+ TaskEditorPopup.PopupModal;
+ AddToRecents(TempStr);
+ end;
+ end; }
+ CheckAndPopup(AEPOpenDialog.FileName, TryParseAEP);
+ end;
+{$ENDIF}
+// PathCheckThread.Start;
end;
/// This will add instance to Recents[] and call
@@ -1091,7 +1251,100 @@ procedure TMainForm.AddToRecents(Item: String);
Recents[0] := Item;
end;
- ReInflateRecents;
+ ReInflateRecents;
+end;
+
+procedure TMainForm.TaskEditorProjectButtonClick(Sender: TObject);
+begin
+ TaskEditorTabControl.TabIndex := 0;
+end;
+
+procedure TMainForm.TaskEditorSaveButtonClick(Sender: TObject);
+begin
+ var ErrorStr: String := '';
+ for var i := 0 to StrToInt(TaskEditorCompCount.Text) - 1 do begin
+ /// EC001 :: Composition name is empty
+ if TaskEditorCompGrid.Cells[1, i] = '' then
+ ErrorStr := ErrorStr + Format('Composition[%d]: (EC001) %s%s', [i + 1, 'Composition name is empty', #13#10]);
+
+ /// EC002 :: [Start Frame] and [End Frame] can''t be empty with [Split] more than 1
+ if (TaskEditorCompGrid.Cells[2, i] = '') and (TaskEditorCompGrid.Cells[3, i] = '') and (TaskEditorCompGrid.Cells[4, i] <> '1') then
+ ErrorStr := ErrorStr + Format('Composition[%d]: (EC002) %s%s', [i + 1, '[Start Frame] and [End Frame] can''t be empty with [Split] more than 1', #13#10]);
+
+ /// New line for each comp
+ if ErrorStr <> '' then
+ ErrorStr := ErrorStr + #13#10;
+ end;
+
+ if ErrorStr <> '' then begin
+ raise AERParamException.Create(Format('%s%s%s', [Language[Settings.Language].Errors.errorsOccured, #13#10, ErrorStr]));
+ end else begin
+ var TaskIndex: Integer := RenderTasks.IndexOf(GetTaskByProject(ExtractFileName(projectPath.Text)));
+ var Compositions: TList := TList.Create;
+
+ for var i := 0 to Trunc(TaskEditorCompCount.Value) - 1 do begin
+ Compositions.Add(TComposition.Create(
+ TaskEditorCompGrid.Cells[1, i],
+ TFrameSpan.Create(TaskEditorCompGrid.Cells[2, i], TaskEditorCompGrid.Cells[3, i]),
+ StrToInt(TaskEditorCompGrid.Cells[4, i])
+ ));
+ end;
+
+ /// Instead of re-creating whole task,
+ /// it's faster to rewrite contents of existing one
+ RenderTasks.Items[TaskIndex].Project := projectPath.Text;
+ RenderTasks.Items[TaskIndex].Output := outputPath.Text;
+ RenderTasks.Items[TaskIndex].OutputModule := outputModuleBox.Items[outputModuleBox.ItemIndex];
+ RenderTasks.Items[TaskIndex].RenderSettings := renderSettingsEdit.Text;
+ RenderTasks.Items[TaskIndex].MissingFiles := missingFilesCheckbox.IsChecked;
+ RenderTasks.Items[TaskIndex].Sound := soundCheckbox.IsChecked;
+ RenderTasks.Items[TaskIndex].Multiprocessing := threadedRender.IsChecked;
+ RenderTasks.Items[TaskIndex].CustomProperties := IfThenElse(customCheckbox.IsChecked = True, customProp.Text, ''); // yeet
+ RenderTasks.Items[TaskIndex].CacheLimit := cacheUsageTrackBar.Value;
+ RenderTasks.Items[TaskIndex].MemoryLimit := memUsageTrackBar.Value;
+
+ RenderTasks.Items[TaskIndex].Compositions.Free;
+ RenderTasks.Items[TaskIndex].Compositions := TList.Create(Compositions);
+
+ {$IFDEF DEBUG_MODE}
+ ShowMessage(RenderTasks.Items[TaskIndex].ToString);
+ {$ENDIF}
+
+ Compositions.Free;
+
+ RenderTasksOnNotify(Sender, RenderTasks.Items[TaskIndex], cnAdded);
+
+ PopupAniCloseHeight.Enabled := True;
+ PopupAniCloseWidth.Enabled := True;
+
+ TaskEditorCompCount.Value := 1;
+ TaskEditorCompGrid.Cells[0, 0] := '1';
+ TaskEditorCompGrid.Cells[1, 0] := '';
+ TaskEditorCompGrid.Cells[2, 0] := '';
+ TaskEditorCompGrid.Cells[3, 0] := '';
+ TaskEditorCompGrid.Cells[4, 0] := '1';
+
+ //UpdateTasksList;
+
+
+
+ end;
+end;
+
+procedure TMainForm.TaskEditorToolbarMouseDown(Sender: TObject;
+ Button: TMouseButton; Shift: TShiftState; X, Y: Single);
+begin
+ //TPopupForm(TaskEditorPopup).StartWindowDrag;
+end;
+
+procedure TMainForm.TaskEditorTabControlChange(Sender: TObject);
+begin
+
+ if (TaskEditorTabControl.TabIndex = 1) and (TaskEditorCompGrid.Cells[4, 0] = '')
+ and (TaskEditorCompGrid.Cells[0, 0] = '') then begin
+ TaskEditorCompGrid.Cells[0, 0] := '1';
+ TaskEditorCompGrid.Cells[4, 0] := '1';
+ end;
end;
procedure TMainForm.RecentProjectSelected(Sender: TObject);
@@ -1180,81 +1433,123 @@ procedure TMainForm.UpdateOutputModules;
if (outputModuleBox.Count <> 0) then
outputModuleBox.Clear;
- for var i := 0 to High(OutputModules) do
- if OutputModules[i].Imported then
- outputModuleBox.Items.Add(OutputModules[i].Module + ' ' + Language[LANG].OutputModuleConfiguratorForm.Imported)
+ for var i := 0 to High(Settings.OutputModules) do
+ if Settings.OutputModules[i].Imported then
+ outputModuleBox.Items.Add(Settings.OutputModules[i].Module + ' ' + Language[Settings.Language].OutputModuleConfiguratorForm.Imported)
else
- outputModuleBox.Items.Add(OutputModules[i].Module);
- outputModuleBox.Items.Add(Language[LANG].MainForm.ConfigureOutputModules);
+ outputModuleBox.Items.Add(Settings.OutputModules[i].Module);
+ outputModuleBox.Items.Add(Language[Settings.Language].MainForm.ConfigureOutputModules);
outputModuleBox.ItemIndex := Index;
end;
-procedure TMainForm.UpdateRenderSettings;
+function TMainForm.ReadAERQ(Path: String): TObjectList;
begin
- var Index: Integer := renderSettingsBox.ItemIndex;
- if (renderSettingsBox.Count <> 0) then
- renderSettingsBox.Clear;
-
- for var i := 0 to High(RenderSettings) do
- if RenderSettings[i].Imported then
- renderSettingsBox.Items.Add(RenderSettings[i].Setting + ' ' + Language[LANG].OutputModuleConfiguratorForm.Imported)
- else
- renderSettingsBox.Items.Add(RenderSettings[i].Setting);
- //renderSettingsBox.Items.Add(Language[LANG].MainForm.ConfigureRenderSettings);
- renderSettingsBox.ItemIndex := Index;
-end;
+ Result := TObjectList.Create;
-procedure TMainForm.ReadAERQ(Path: String);
-begin
var AERQXMLDocument: IXMLDocument := TXMLDocument.Create(nil);
AERQXMLDocument.LoadFromFile(Path);
AERQXMLDocument.Encoding := 'utf-8';
AERQXMLDocument.Active := True;
var RootNode: IXMLNode := AERQXMLDocument.DocumentElement;
- projectPath.Text := RootNode.Attributes['project'];
- outputPath.Text := RootNode.ChildNodes['queueItem'].Attributes['outputFolder'];
- tempSavePath := RootNode.ChildNodes['queueItem'].Attributes['outputFolder'] + PLATFORMPATHSEPARATOR;
- /// Add new Output Module to library if it don't exist
- if StrToBool(RootNode.ChildNodes['queueItem'].ChildNodes['outputModule'].Attributes['use']) then begin
- var TempOutputModule: OutputModule;
- TempOutputModule.Module := RootNode.ChildNodes['queueItem'].ChildNodes['outputModule'].ChildNodes['module'].Text;
- TempOutputModule.Mask := RootNode.ChildNodes['queueItem'].ChildNodes['outputModule'].ChildNodes['mask'].Text;
-
- if GetOMIndex(TempOutputModule) <> -1 then
- outputModuleBox.ItemIndex := GetOMIndex(TempOutputModule)
- else begin
- SetLength(OutputModules, Length(OutputModules) + 1);
- OutputModules[High(OutputModules)].Module := RootNode.ChildNodes['queueItem'].ChildNodes['outputModule'].ChildNodes['module'].Text;
- OutputModules[High(OutputModules)].Mask := RootNode.ChildNodes['queueItem'].ChildNodes['outputModule'].ChildNodes['mask'].Text;
- OutputModules[High(OutputModules)].Imported := True;
+ //projectPath.Text := RootNode.Attributes['project'];
+
+ for var i := 0 to RootNode.ChildNodes.Count - 1 do begin
+ outputPath.Text := RootNode.ChildNodes[i].Attributes['outputFolder'];
+ Settings.TemporarySavePath := RootNode.ChildNodes[i].Attributes['outputFolder'] + PLATFORMPATHSEPARATOR;
+
+ /// Add new Output Module to library if it don't exist
+ if StrToBool(RootNode.ChildNodes[i].ChildNodes['outputModule'].Attributes['use']) then begin
+ var TempOutputModule: OutputModule;
+ TempOutputModule.Module := RootNode.ChildNodes[i].ChildNodes['outputModule'].ChildNodes['module'].Text;
+ TempOutputModule.Mask := RootNode.ChildNodes[i].ChildNodes['outputModule'].ChildNodes['mask'].Text;
+
+ if GetOMIndex(TempOutputModule) <> -1 then
+ outputModuleBox.ItemIndex := GetOMIndex(TempOutputModule)
+ else begin
+ SetLength(Settings.OutputModules, Length(Settings.OutputModules) + 1);
+ Settings.OutputModules[High(Settings.OutputModules)].Module := RootNode.ChildNodes[i].ChildNodes['outputModule'].ChildNodes['module'].Text;
+ Settings.OutputModules[High(Settings.OutputModules)].Mask := RootNode.ChildNodes[i].ChildNodes['outputModule'].ChildNodes['mask'].Text;
+ Settings.OutputModules[High(Settings.OutputModules)].Imported := True;
+
+ outputModuleBox.Items.Insert(outputModuleBox.Items.Count - 1, Settings.OutputModules[High(Settings.OutputModules)].Module + ' ' + Language[Settings.Language].OutputModuleConfiguratorForm.Imported);
+ outputModuleBox.ItemIndex := outputModuleBox.Items.Count - 2;
+ end;
+ end;
+ outputModuleBoxChange(Self);
- outputModuleBox.Items.Insert(outputModuleBox.Items.Count - 1, OutputModules[High(OutputModules)].Module + ' ' + Language[LANG].OutputModuleConfiguratorForm.Imported);
- outputModuleBox.ItemIndex := outputModuleBox.Items.Count - 2;
+ if RootNode.ChildNodes['queueItem'].ChildNodes['renderSettings'].Text.IsEmpty <> True then begin
+ renderSettingsEdit.Text := RootNode.ChildNodes['queueItem'].ChildNodes['renderSettings'].Text;
end;
+
+ var Compositions: TList := TList.Create;
+ Compositions.Add(TComposition.Create(
+ RootNode.ChildNodes[i].ChildNodes['composition'].ChildNodes['name'].Text,
+ TFrameSpan.Create(StrToInt(RootNode.ChildNodes[i].ChildNodes['composition'].ChildNodes['rangeStart'].Text),
+ StrToInt(RootNode.ChildNodes[i].ChildNodes['composition'].ChildNodes['rangeEnd'].Text)),
+ 1
+ ));
+
+ //compName.Text := RootNode.ChildNodes['queueItem'].ChildNodes['composition'].ChildNodes['name'].Text;
+ //inFrame.Text := RootNode.ChildNodes['queueItem'].ChildNodes['composition'].ChildNodes['rangeStart'].Text;
+ //outFrame.Text := RootNode.ChildNodes['queueItem'].ChildNodes['composition'].ChildNodes['rangeEnd'].Text;
+
+ Result.Add(TRenderTask.Create(
+ RootNode.Attributes['project'],
+ outputPath.Text,
+ outputModuleBox.Items[outputModuleBox.ItemIndex],
+ renderSettingsEdit.Text,
+ missingFilesCheckbox.IsChecked,
+ soundCheckbox.IsChecked,
+ threadedRender.IsChecked,
+ IfThenElse(customCheckbox.IsChecked = True, customProp.Text, ''), // yeet
+ cacheUsageTrackBar.Value,
+ memUsageTrackBar.Value,
+ TList.Create(Compositions)
+ ));
end;
- outputModuleBoxChange(Self);
+end;
- if RootNode.ChildNodes['queueItem'].ChildNodes['renderSettings'].Text.IsEmpty <> True then begin
- var TempRenderSetting: RenderSetting;
- TempRenderSetting.Setting := RootNode.ChildNodes['queueItem'].ChildNodes['renderSettings'].Text;
+function TMainForm.ReadAER(Path: String): TRenderTask;
+begin
+ var AERXMLDocument: IXMLDocument := TXMLDocument.Create(nil);
+ AERXMLDocument.LoadFromFile(Path);
+ AERXMLDocument.Encoding := 'utf-8';
- if GetRSIndex(TempRenderSetting) <> -1 then
- renderSettingsBox.ItemIndex := GetRSIndex(TempRenderSetting)
- else begin
- SetLength(RenderSettings, Length(RenderSettings) + 1);
- RenderSettings[High(RenderSettings)].Setting := RootNode.ChildNodes['queueItem'].ChildNodes['renderSettings'].Text;
- RenderSettings[High(RenderSettings)].Imported := True;
+ AERXMLDocument.Active := True;
- renderSettingsBox.Items.Insert(renderSettingsBox.Items.Count - 1, RenderSettings[High(RenderSettings)].Setting + ' ' + Language[LANG].OutputModuleConfiguratorForm.Imported);
- renderSettingsBox.ItemIndex := renderSettingsBox.Items.Count - 2;
- end;
+ var RootNode: IXMLNode := AERXMLDocument.DocumentElement;
+
+ if Settings.DefaultOutputPath <> '' then begin
+ outputPath.Text := Settings.DefaultOutputPath;
+ Settings.TemporarySavePath := Settings.DefaultOutputPath + PLATFORMPATHSEPARATOR;
+ end;
+ outputModuleBoxChange(Self);
+
+ var Compositions: TList := TList.Create;
+
+ for var i := 0 to StrToInt(RootNode.ChildNodes['compositions'].Attributes['count']) - 1 do begin
+ Compositions.Add(TComposition.Create(
+ RootNode.ChildNodes['compositions'].ChildNodes[i].ChildNodes['name'].Text,
+ TFrameSpan.Create(StrToInt(RootNode.ChildNodes['compositions'].ChildNodes[i].ChildNodes['rangeStart'].Text),
+ StrToInt(RootNode.ChildNodes['compositions'].ChildNodes[i].ChildNodes['rangeEnd'].Text)),
+ 1
+ ));
end;
- renderSettingsBoxChange(Self);
- compName.Text := RootNode.ChildNodes['queueItem'].ChildNodes['composition'].ChildNodes['name'].Text;
- inFrame.Text := RootNode.ChildNodes['queueItem'].ChildNodes['composition'].ChildNodes['rangeStart'].Text;
- outFrame.Text := RootNode.ChildNodes['queueItem'].ChildNodes['composition'].ChildNodes['rangeEnd'].Text;
+ Result := TRenderTask.Create(
+ RootNode.Attributes['project'],
+ outputPath.Text,
+ outputModuleBox.Items[outputModuleBox.ItemIndex],
+ renderSettingsEdit.Text,
+ missingFilesCheckbox.IsChecked,
+ soundCheckbox.IsChecked,
+ threadedRender.IsChecked,
+ IfThenElse(customCheckbox.IsChecked = True, customProp.Text, ''), // yeet
+ cacheUsageTrackBar.Value,
+ memUsageTrackBar.Value,
+ TList.Create(Compositions)
+ );
end;
procedure TMainForm.aboutItemClick(Sender: TObject);
@@ -1287,9 +1582,9 @@ procedure TMainForm.calculateButtonClick(Sender: TObject);
except
on Exception do
if outFrame.Text = '' then
- TDialogServiceSync.MessageDialog(Language[LANG].Errors.CalculateFrameError, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0)
+ TDialogServiceSync.MessageDialog(Language[Settings.Language].Errors.CalculateFrameError, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0)
else
- TDialogServiceSync.MessageDialog(Language[LANG].Errors.CalculateUnknownError, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0)
+ TDialogServiceSync.MessageDialog(Language[Settings.Language].Errors.CalculateUnknownError, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0)
end;
end;
@@ -1300,32 +1595,32 @@ procedure TMainForm.compNameTyping(Sender: TObject);
procedure TMainForm.compSwitchSwitch(Sender: TObject);
begin
- if compSwitch.IsChecked then begin
- if UpdateAvailable = True then
- begin
- if MainForm.Height <= 490 then
- MainForm.Height := 630;//MainForm.Height + 130;
- end
- else
- if MainForm.Height <= 450 then
- MainForm.Height := 580;//MainForm.Height + 130;
-
- compSwitchLabel.Text := Language[LANG].MainForm.MultiComp;
-
- compGrid.RowCount := Round(compCount.Value);
- compGrid.Cells[0, 0] := compName.Text;
- compGrid.Model.ScrollDirections := TScrollDirections.Vertical;
- end else begin
- if UpdateAvailable = True then begin
- if MainForm.WindowState <> TWindowState.wsMaximized then
- MainForm.Height := 490//MainForm.Height - 130
- end else
- if MainForm.WindowState <> TWindowState.wsMaximized then
- MainForm.Height := 450;//MainForm.Height - 130;
-
- compSwitchLabel.Text := Language[LANG].MainForm.SingleComp;
- compName.Text := compGrid.Cells[0, 0];
- end;
+// if compSwitch.IsChecked then begin
+// if UpdateAvailable = True then
+// begin
+// if MainForm.Height <= 490 then
+// MainForm.Height := 630;//MainForm.Height + 130;
+// end
+// else
+// if MainForm.Height <= 450 then
+// MainForm.Height := 580;//MainForm.Height + 130;
+//
+// compSwitchLabel.Text := Language[Settings.Language].MainForm.MultiComp;
+//
+// compGrid.RowCount := Round(compCount.Value);
+// compGrid.Cells[0, 0] := compName.Text;
+// compGrid.Model.ScrollDirections := TScrollDirections.Vertical;
+// end else begin
+// if UpdateAvailable = True then begin
+// if MainForm.WindowState <> TWindowState.wsMaximized then
+// MainForm.Height := 490//MainForm.Height - 130
+// end else
+// if MainForm.WindowState <> TWindowState.wsMaximized then
+// MainForm.Height := 450;//MainForm.Height - 130;
+//
+// compSwitchLabel.Text := Language[Settings.Language].MainForm.SingleComp;
+// compName.Text := compGrid.Cells[0, 0];
+// end;
end;
procedure TMainForm.docsItemClick(Sender: TObject);
@@ -1356,22 +1651,23 @@ procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
{$IFDEF MACOS}KillProcess('aerendercore');{$ENDIF MACOS}
end;
- SaveConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
- if StrToBool(DelTempFiles) = True then
+ //SaveConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
+ Settings.SaveToFile(APPFOLDER + 'AErenderConfiguration.xml');
+ if Settings.DeleteTemporary then
begin
- var AerenderDirectory: TArray := GetDirectoryFiles(APPFOLDER);
- for var i := 0 to High(AerenderDirectory) do
+ var LauncherDirectory: TArray := GetDirectoryFiles(APPFOLDER);
+ for var i := 0 to High(LauncherDirectory) do
begin
{$IFDEF MSWINDOWS}
- if (AerenderDirectory[i].Contains('.bat')) then
- System.SysUtils.DeleteFile(PWideChar(AerenderDirectory[i]));
+ if (LauncherDirectory[i].Contains('.bat')) then
+ System.SysUtils.DeleteFile(PWideChar(LauncherDirectory[i]));
{$ENDIF MSWINDOWS}
{$IFDEF MACOS}
- if (AerenderDirectory[i].Contains('.command')) then
- System.SysUtils.DeleteFile(PWideChar(AerenderDirectory[i]));
+ if (LauncherDirectory[i].Contains('.command')) then
+ System.SysUtils.DeleteFile(PWideChar(LauncherDirectory[i]));
{$ENDIF MACOS}
- if (AerenderDirectory[i].Contains('.log')) then
- System.SysUtils.DeleteFile(PWideChar(AerenderDirectory[i]));
+ if (LauncherDirectory[i].Contains('.log')) then
+ System.SysUtils.DeleteFile(PWideChar(LauncherDirectory[i]));
end;
end;
end;
@@ -1380,24 +1676,25 @@ procedure TMainForm.FormCreate(Sender: TObject);
var
CFG: TextFile;
begin
- {$IFDEF MSWINDOWS}DwmCompositionEnabled();{$ENDIF MSWINDOWS}
+ {$IFDEF MSWINDOWS}DwmCompositionEnabled();{$ENDIF}
FormatSettings := TFormatSettings.Invariant;
- MainForm.Width := 600;
- MainForm.Height := {$IFDEF MSWINDOWS}450{$ENDIF MSWINDOWS} {$IFDEF MACOS}430{$ENDIF MACOS};
- //MainForm.Caption := 'AErender Launcher (' + APPVERSION_DEMO + ')';
+ MainForm.Width := 960;
+ MainForm.Height := 540;
MainForm.Caption := 'AErender Launcher (' + APPVERSION + ')';
- APPFOLDER := {$IFDEF MSWINDOWS}'C:\ProgramData\AErender\'{$ENDIF MSWINDOWS}
- {$IFDEF MACOS}GetEnvironmentVariable('HOME') + '/Documents/AErender/'{$ENDIF MACOS};
+ APPFOLDER := {$IFDEF MSWINDOWS}'C:\ProgramData\AErender\'
+ {$ELSE MACOS}GetEnvironmentVariable('HOME') + '/Documents/AErender/'{$ENDIF};
{$IFDEF MSWINDOWS}
- FreeAndNil(launcherItem);
+ //FreeAndNil(launcherItem);
+ launcherItem.Visible := False;
exitItem.ShortCut := TextToShortCut('Alt+F4');
exportConfigItem.ShortCut := TextToShortCut('Ctrl+E');
importConfigItem.ShortCut := TextToShortCut('Ctrl+I');
- {$ENDIF MSWINDOWS}
- {$IFDEF MACOS}
- FreeAndNil(editItem);
- FreeAndNil(exitItem);
- {$ENDIF MACOS}
+ {$ELSE MACOS}
+ editItem.Visible := False;
+ exitItem.Visible := False;
+// FreeAndNil(editItem);
+// FreeAndNil(exitItem);
+ {$ENDIF}
if DirectoryExists(APPFOLDER) then
AssignFile(CFG, APPFOLDER + 'AErenderConfiguration.xml')
@@ -1406,73 +1703,87 @@ procedure TMainForm.FormCreate(Sender: TObject);
CreateDir(APPFOLDER);
AssignFile(CFG, APPFOLDER + 'AErenderConfiguration.xml');
end;
- if FileExists(APPFOLDER + 'AErenderConfiguration.xml') then
- begin
- try
- LoadConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
- except
- on Exception do begin
- try
- LoadLegacyConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
- except
- on Exception do begin
- if (TDialogServiceSync.MessageDialog(('Configuration file is corrupted! Press OK to renew configuration file. Application will be restarted.' + #13#10 +
- {$IFDEF MSWINDOWS}'C:\ProgramData\AErender\AErenderConfiguration.xml'{$ENDIF MSWINDOWS}
- {$IFDEF MACOS}'~/Documents/AErender/AErenderConfiguration.xml'{$ENDIF MACOS}),
- TMsgDlgType.mtError, mbOKCancel, TMsgDlgBtn.mbOK, 0) = 1) then
- begin
- System.SysUtils.DeleteFile(APPFOLDER + 'AErenderConfiguration.xml');
- {$IFDEF MSWINDOWS}ShellExecute(0, 'OPEN', PChar(ParamStr(0)), '', '', SW_SHOWNORMAL);{$ENDIF MSWINDOWS}
- {$IFDEF MACOS}_system(PAnsiChar('open -a "' + AnsiString(ParamStr(0)) + '" & disown'));{$ENDIF MACOS}
- end;
- Halt;
+
+ if FileExists(APPFOLDER + 'AErenderConfiguration.xml') then begin
+ try
+ //LoadConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
+ Settings.LoadFromXMLFile(APPFOLDER + 'AErenderConfiguration.xml');
+ except
+ on Exception do begin
+ try
+ //LoadLegacyConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
+ Settings.LoadFromXMLFileLegacy(APPFOLDER + 'AErenderConfiguration.xml');
+ except
+ on Exception do begin
+ if (TDialogServiceSync.MessageDialog(
+ ('Configuration file is corrupted! Press OK to renew configuration file. Application will be restarted.' + #13#10 +
+ {$IFDEF MSWINDOWS}'C:\ProgramData\AErender\AErenderConfiguration.xml'
+ {$ELSE MACOS}'~/Documents/AErender/AErenderConfiguration.xml'{$ENDIF}),
+ TMsgDlgType.mtError, mbOKCancel, TMsgDlgBtn.mbOK, 0) = 1) then
+ begin
+ System.SysUtils.DeleteFile(APPFOLDER + 'AErenderConfiguration.xml');
+ {$IFDEF MSWINDOWS}ShellExecute(0, 'OPEN', PChar(ParamStr(0)), '', '', SW_SHOWNORMAL);
+ {$ELSE MACOS}_system(PAnsiChar('open -a "' + AnsiString(ParamStr(0)) + '" & disown'));{$ENDIF}
end;
+ Halt;
end;
end;
end;
- end
- else
- begin
- InitConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
- AERH := 'True';
- DelTempFiles := 'True';
end;
- AEPOpenDialog.InitialDir := DEFPRGPATH;
- SaveDialog1.InitialDir := DEFOUTPATH;
+ end else begin
+ //InitConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
+ Settings.ResetAndSave(APPFOLDER + 'AErenderConfiguration.xml');
+ end;
+ AEPOpenDialog.InitialDir := Settings.DefaultProjectPath;
+ SaveDialog1.InitialDir := Settings.DefaultOutputPath;
+
+ if not FileExists(APPFOLDER + {$IFDEF MSWINDOWS}'aeparser_win.exe'{$ELSE MACOS}'aeparser_mac'{$ENDIF}) then begin
+ ExtractParserToAppDir;
+ end;
InflateRecents;
- outputModuleBox.ListBox.AniCalculations.Animation := True;
+ var AnimSetupThread: TThread := TThread.CreateAnonymousThread(procedure begin
+ outputModuleBox.ListBox.AniCalculations.Animation := True;
- compGrid.AniCalculations.AutoShowing := False;
- compGrid.AniCalculations.Animation := True;
+ compGrid.AniCalculations.AutoShowing := False;
+ compGrid.AniCalculations.Animation := True;
- threadsGrid.AniCalculations.Animation := True;
+ threadsGrid.AniCalculations.Animation := True;
- threadsCount.OnValidate := threadsCount.OnValidateEvent;
- threadsCount.OnValidating := threadsCount.OnValidatingEvent;
+ TaskEditorCompGrid.AniCalculations.Animation := True;
+ TaskEditorCompGrid.Model.ScrollDirections := (TScrollDirections.Vertical);
+ end);
+
+// threadsCount.OnValidate := threadsCount.OnValidateEvent;
+// threadsCount.OnValidating := threadsCount.OnValidatingEvent;
+
+ RenderTasks.OnNotify := MainForm.RenderTasksOnNotify;
+
+ AnimSetupThread.Start;
+ //ShowMessage(AErenderPath);
end;
procedure TMainForm.FormResize(Sender: TObject);
begin
- // RU: Установка размеров для колонн в таблицах
- StringColumn1.Width := compGrid.Width;
- StringColumn2.Width := threadsGrid.Width * 0.5;
- StringColumn3.Width := threadsGrid.Width * 0.5;
+ /// Composition grid collumns width
+// StringColumn1.Width := compGrid.Width;
+// StringColumn2.Width := threadsGrid.Width * 0.5;
+// StringColumn3.Width := threadsGrid.Width * 0.5;
- // RU: Ограничение ширины формы
- if MainForm.Width < 600 then
- MainForm.Width := 600;
+ /// Limit form's width
+ if MainForm.Width < SizeConstraints.MIN_WIDTH then
+ MainForm.Width := SizeConstraints.MIN_WIDTH;
- // RU: Ограничение высоты формы в зависимости от платформы и видимости панели с обновлением
+ /// RU: Ограничение высоты формы в зависимости от платформы и видимости панели с обновлением
if UpdateAvailable then begin
- if MainForm.Height < {$IFDEF MSWINDOWS}490{$ENDIF MSWINDOWS} {$IFDEF MACOS}470{$ENDIF MACOS} then begin
- MainForm.Height := {$IFDEF MSWINDOWS}490{$ENDIF MSWINDOWS} {$IFDEF MACOS}470{$ENDIF MACOS};
+ if MainForm.Height < SizeConstraints.MIN_HEIGHT_UPD then begin
+ MainForm.Height := SizeConstraints.MIN_HEIGHT_UPD;
{$IFDEF MSWINDOWS}Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);{$ENDIF MSWINDOWS}
end;
end else begin
- if MainForm.Height < {$IFDEF MSWINDOWS}450{$ENDIF MSWINDOWS} {$IFDEF MACOS}430{$ENDIF MACOS} then begin
- MainForm.Height := {$IFDEF MSWINDOWS}450{$ENDIF MSWINDOWS} {$IFDEF MACOS}430{$ENDIF MACOS};
+ if MainForm.Height < SizeConstraints.MIN_HEIGHT_NO_UPD then begin
+ MainForm.Height := SizeConstraints.MIN_HEIGHT_NO_UPD;
{$IFDEF MSWINDOWS}Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);{$ENDIF MSWINDOWS}
end;
end;
@@ -1480,6 +1791,33 @@ procedure TMainForm.FormResize(Sender: TObject);
procedure TMainForm.FormShow(Sender: TObject);
begin
+
+ /// To speed up startup we will check for FFMPEG in a separate thread
+ var FFMPEGCheckThread: TThread := TThread.CreateAnonymousThread(procedure begin
+ try
+ if GetFFMPEGPath <> '' then
+ begin
+ FFMPEG := True;
+ ffmpegPath := GetFFMPEGPath;
+ //ffmpegCheckBox.Enabled := True;
+ end
+ else
+ raise Exception.Create('FFMPEG not found');
+ except
+ on Exception do
+ begin
+ FFMPEG := False;
+ //ffmpegCheckBox.Enabled := False;
+ //ffmpegCheckBox.Hint := 'FFMPEG is not found at' + {$IFDEF MSWINDOWS} 'C:\ProgramData\AErender\' {$ENDIF MSWINDOWS}
+ // {$IFDEF MACOS} '~/Documents/AErender/' {$ENDIF MACOS} + 'directory';
+ end;
+ end;
+ end);
+
+ var aeparserCheckThread: TThread := TThread.CreateAnonymousThread(procedure begin
+ //
+ end);
+
//// Check for available languages
// It's better to do it in a Show thread, since OnCreate event of main form
// don't have access to other forms that are not yet created
@@ -1492,63 +1830,55 @@ procedure TMainForm.FormShow(Sender: TObject);
end;
UpdateOutputModules;
- UpdateRenderSettings;
- SettingsForm.styleBox.ItemIndex := STYLE;
- SettingsForm.onRenderStartBox.ItemIndex := ONRENDERSTART;
- SettingsForm.HandleCheckBox.IsChecked := StrToBool(AERH);
- SettingsForm.delFilesCheckBox.IsChecked := StrToBool(DelTempFiles);
+ SettingsForm.styleBox.ItemIndex := Settings.Style;
+ SettingsForm.onRenderStartBox.ItemIndex := Settings.OnRenderStart;
+ SettingsForm.HandleCheckBox.IsChecked := Settings.AErenderHandle;
+ SettingsForm.delFilesCheckBox.IsChecked := Settings.DeleteTemporary;
- {$IFDEF MACOS}
- if LANG = 1 then begin
- outputModuleLabel.Width := 148;
- renderSettingsLabel.Width := 148;
- end;
- {$ENDIF MACOS}
+ var FormVisualUpdateThread: TThread :=TThread.CreateAnonymousThread(procedure begin
- if memUsageTrackBar.Value = 100 then
- memUsageInfo.Text := Language[LANG].MainForm.Unlimited
- else
- memUsageInfo.Text := Trunc(memUsageTrackBar.Value).ToString + '% (' + Trunc((GetPlatformMemorySize/1024/1024) * (memUsageTrackBar.Value / 100)).ToString + ' MB)';
- if cacheUsageTrackBar.Value = 100 then
- cacheUsageInfo.Text := Language[LANG].MainForm.Unlimited
- else
- cacheUsageInfo.Text := Trunc(cacheUsageTrackBar.Value).ToString + '%';
+ {$IFDEF MACOS}
+ if Settings.Language = 1 then begin
+ outputModuleLabel.Width := 148;
+ renderSettingsLabel.Width := 148;
+ end;
+ {$ENDIF MACOS}
+
+ if memUsageTrackBar.Value = 100 then
+ memUsageInfo.Text := Language[Settings.Language].MainForm.Unlimited
+ else
+ memUsageInfo.Text := Trunc(memUsageTrackBar.Value).ToString + '% (' + Trunc((GetPlatformMemorySize/1024/1024) * (memUsageTrackBar.Value / 100)).ToString + ' MB)';
+ if cacheUsageTrackBar.Value = 100 then
+ cacheUsageInfo.Text := Language[Settings.Language].MainForm.Unlimited
+ else
+ cacheUsageInfo.Text := Trunc(cacheUsageTrackBar.Value).ToString + '%';
- StringColumn1.Width := compGrid.Width - 5;
- StringColumn2.Width := threadsGrid.Width * 0.5;
- StringColumn3.Width := threadsGrid.Width * 0.5;
+ StringColumn1.Width := compGrid.Width - 5;
+ StringColumn2.Width := threadsGrid.Width * 0.5;
+ StringColumn3.Width := threadsGrid.Width * 0.5;
+ end);
SplashScreenForm.Close;
SplashScreenForm.Free;
+ FormVisualUpdateThread.Start;
+
+ FFMPEGCheckThread.Start;
+ aeparserCheckThread.Start;
+
if (ParamCount > 0) and (ParamStr(1) = '-aer') then begin
ImportUnit.PARAMSTART := True;
ImportUnit.XMLPath := ParamStr(2);
+ ImportForm.FormSender := FS_XML;
ImportForm.ShowModal;
end else if (ParamStr(1) = '-aerq') then begin
MainUnit.PARAMSTART := True;
- ReadAERQ(ParamStr(2));
+ RenderTasks.AddRange(ReadAERQ(ParamStr(2)));
end;
- try
- if GetFFMPEGPath <> '' then
- begin
- FFMPEG := True;
- ffmpegPath := GetFFMPEGPath;
- //ffmpegCheckBox.Enabled := True;
- end
- else
- raise Exception.Create('FFMPEG not found');
- except
- on Exception do
- begin
- FFMPEG := False;
- //ffmpegCheckBox.Enabled := False;
- //ffmpegCheckBox.Hint := 'FFMPEG is not found at' + {$IFDEF MSWINDOWS} 'C:\ProgramData\AErender\' {$ENDIF MSWINDOWS}
- // {$IFDEF MACOS} '~/Documents/AErender/' {$ENDIF MACOS} + 'directory';
- end;
- end;
+ //ShowMessage(RenderTasks.Count.ToString);
+ //TasksIsEmpty.Visible := RenderTasks.Count = 0;
// Check updates in separate thread to fasten startup
MainForm.UpdateNetHTTPClient.Get(AERL_REPO_RELEASES);
@@ -1610,6 +1940,12 @@ procedure TMainForm.inFrameValidate(Sender: TObject; var Text: string);
end;
procedure TMainForm.launchButtonClick(Sender: TObject);
+/// So, we need some rendering modes
+/// NORMAL MODE: It's the old Launcher's behaviour
+/// Will render all the compositions one-by-one and render them
+/// if Composition.Split > 1, then all the splits will be rendered with default method in settings
+///
+
type
exec = record
script: String;
@@ -1617,238 +1953,51 @@ exec = record
end;
var
threads, comps, emptyComps: Integer;
- PATH, logPath{, prgPath}: String;
+ PATH, logPath: String;
execFile: array [1..128] of exec;
// Notification: TNotification;
begin
//Error Codes
if not (SettingsForm.HandleCheckBox.IsChecked and isRendering) then begin
- emptyComps := 0;
- if AERPATH.IsEmpty then
- ERR := ERR + #13#10 + '[Error 1]: ' + Language[LANG].Errors.aerenderIsEmpty;
+ {emptyComps := 0;
+ if AErenderPath.IsEmpty then
+ ERR := ERR + #13#10 + '[Error 1]: ' + Language[Settings.Language].Errors.aerenderIsEmpty;
if projectPath.Text.IsEmpty then
- ERR := ERR + #13#10 + '[Error 2]: ' + Language[LANG].Errors.projectIsEmpty;
+ ERR := ERR + #13#10 + '[Error 2]: ' + Language[Settings.Language].Errors.projectIsEmpty;
if outputPath.Text.IsEmpty then
- ERR := ERR + #13#10 + '[Error 3]: ' + Language[LANG].Errors.outputIsEmpty;
+ ERR := ERR + #13#10 + '[Error 3]: ' + Language[Settings.Language].Errors.outputIsEmpty;
if compName.Text.IsEmpty then
- ERR := ERR + #13#10 + '[Error 4]: ' + Language[LANG].Errors.compositionIsEmpty;
+ ERR := ERR + #13#10 + '[Error 4]: ' + Language[Settings.Language].Errors.compositionIsEmpty;
if compSwitch.IsChecked then
begin
for var i := 0 to compCount.Value.ToString.ToInteger - 1 do
if compGrid.Cells[0, i].IsEmpty then
inc(emptyComps);
if emptyComps > 0 then
- ERR := ERR + #13#10 + '[Error 5]: ' + Language[LANG].Errors.multiCompIsEmpty;
+ ERR := ERR + #13#10 + '[Error 5]: ' + Language[Settings.Language].Errors.multiCompIsEmpty;
end;
if StrToInt(threadsCount.Text) > 128 then
- ERR := ERR + #13#10 + '[Error 6]: ' + Language[LANG].Errors.tooManyThreads;
+ ERR := ERR + #13#10 + '[Error 6]: ' + Language[Settings.Language].Errors.tooManyThreads;
//Proceed if no errors occured
if not ERR.IsEmpty then
begin
- TDialogServiceSync.MessageDialog((Language[LANG].Errors.errorsOccured + ERR), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
+ TDialogServiceSync.MessageDialog((Language[Settings.Language].Errors.errorsOccured + ERR), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
ERR := '';
end
- else
+ else }
begin
- if threadsSwitch.IsChecked then
- begin
- threads := threadsCount.Text.ToInteger;
- SetLength (LogFiles, threads);
- end
- else
- begin
- threads := 1;
- if Length(LogFiles) = 0 then
- SetLength (LogFiles, threads);
- end;
- if compSwitch.IsChecked then
- begin
- comps := StrToInt(compCount.Value.ToString);
- SetLength (LogFiles, comps);
- end
- else
- begin
- comps := 1;
- if Length(LogFiles) = 0 then
- SetLength (LogFiles, comps);
- end;
+ AbortRender := False;
+ ShowMessage(RenderTasks.Items[0].ToString);
+
+ /// It would be really nice to have an await keyword here, but...
+ RenderTasks[0].Render();
+
+// for var Task: TRenderTask in RenderTasks do begin
+// Task.Render(4);
+// end;
- for var j := 0 to comps-1 do
- for var i := 1 to threads do
- begin
- /// Script compiling section
-
- // Clear the string
- execFile[i].script := '';
-
- // Add encoding header to ensure that our CMD on Windows will use UTF-8
- {$IFDEF MSWINDOWS}
- execFile[i].script := 'chcp 65001' + #13#10;
- {$ENDIF MSWINDOWS}
-
- // Make console output data from it if progress display is enabled
- // Made by using default in Shell and Bash ( command ) > data/output/path.log
- // Open bracket here
- if SettingsForm.HandleCheckBox.IsChecked then
- execFile[i].script := execFile[i].script + '(';
-
- // Ensure that logs paths won't comflict with each other
- if comps = 1 then
- logPath := APPFOLDER + compName.Text + '_' + i.ToString
- else
- logPath := APPFOLDER + compGrid.Cells[0, j] + '_' + i.ToString;
-
- // Add Pass output path to temporary wariable
- PATH := outputPath.Text;
-
- // Create folder if '[projectName]/' or '[projectName]\' is used
- // Because aerender won't do it for you
- if outputPath.Text.Contains('[projectName]' + PLATFORMPATHSEPARATOR) then
- begin
- PATH := StringReplace(PATH, '[projectName]', ExtractFileName(projectPath.Text), [rfReplaceAll, rfIgnoreCase]);
- if not DirectoryExists(ExtractFilePath(PATH)) then
- CreateDir(ExtractFilePath(PATH));
- end;
-
- // Adjust file output path if split render is enabled
- // because they can conflict
- if threadsSwitch.IsChecked then
- begin
- var FilePath: String := ExtractFilePath(PATH);
- var FileName: String := StringReplace(ExtractFileName(PATH), ExtractFileExt(PATH), '', [rfReplaceAll, rfIgnoreCase]);
- var FileExt: String := ExtractFileExt(PATH);
- PATH := FilePath + FileName + '_' + i.ToString + FileExt;
- end;
-
- // Adjust file output path if multi comp render is enabled
- // because they can conflict
- if compSwitch.IsChecked then
- if not outputPath.Text.Contains('[compName]') then
- begin
- var FilePath: String := ExtractFilePath(PATH);
- var FileName: String := StringReplace(ExtractFileName(PATH), ExtractFileExt(PATH), '', [rfReplaceAll, rfIgnoreCase]);
- var FileExt: String := ExtractFileExt(PATH);
- PATH := FilePath + FileName + '_' + compGrid.Cells[0, j] + FileExt;
- end;
-
- /// Begin executable compiling section
- // Add aerender path to script
- execFile[i].script := execFile[i].script + '"' + AERPATH + '" ' + '-project "' + projectPath.Text + '" -output "' + PATH + '" ';
-
- // Add comp name to script
- if compSwitch.IsChecked then
- execFile[i].script := execFile[i].script + '-comp "' + compGrid.Cells[0, j] + '" '
- else
- execFile[i].script := execFile[i].script + '-comp "' + compName.Text + '" ';
-
- // Add start and end ranges to script
- if threadsSwitch.IsChecked then
- begin
- execFile[i].script := execFile[i].script + '-s "' + threadsGrid.Cells[0, i-1] + '" ';
- execFile[i].script := execFile[i].script + '-e "' + threadsGrid.Cells[1, i-1] + '" ';
- end
- else
- begin
- if not inFrame.Text.IsEmpty then
- execFile[i].script := execFile[i].script + '-s "' + inFrame.Text + '" ';
- if not outFrame.Text.IsEmpty then
- execFile[i].script := execFile[i].script + '-e "' + outFrame.Text + '" ';
- end;
-
- // Add sound flag to script
- if soundCheckbox.IsChecked then
- execFile[i].script := execFile[i].script + '-sound ON ';
-
- // Add multiprocessing flag to script
- if threadedRender.IsChecked then
- execFile[i].script := execFile[i].script + '-mp ';
-
- // Add missing footage flag to script
- if missingFilesCheckbox.IsChecked then
- execFile[i].script := execFile[i].script + '-continueOnMissingFootage ';
-
- // Add output module flag to script
- if outputModuleBox.ItemIndex <> -1 then
- execFile[i].script := execFile[i].script + '-OMtemplate "' + OutputModules[outputModuleBox.ItemIndex].Module + '" ';
-
- if renderSettingsBox.ItemIndex <> -1 then
- execFile[i].script := execFile[i].script + '-RStemplate "' + RenderSettings[outputModuleBox.ItemIndex].Setting + '" ';
-
- // Add memory usage flags to script
- execFile[i].script := execFile[i].script + '-mem_usage "' + Trunc(memUsageTrackBar.Value).ToString + '" "' + Trunc(cacheUsageTrackBar.Value).ToString + '" ';
-
- // Add whatever user typed parameters to script
- if customCheckbox.IsChecked then
- execFile[i].script := execFile[i].script + customProp.Text;
-
- if SettingsForm.HandleCheckBox.IsChecked then
- begin
- execFile[i].script := execFile[i].script + ') > "' + logPath + '.log"';
-
- if threadsSwitch.IsChecked then
- LogFiles[i-1] := logPath + '.log'
- else
- LogFiles[j] := logPath + '.log';
- end;
-
- //File section
- {$IFDEF MSWINDOWS}
- if compSwitch.IsChecked then
- AssignFile (execFile[i].F, 'C:\ProgramData\AErender\aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.bat', CP_UTF8)
- else
- AssignFile (execFile[i].F, 'C:\ProgramData\AErender\aerender' + i.ToString + '.bat', CP_UTF8);
- Rewrite (execFile[i].F);
- Writeln (execFile[i].F, execFile[i].script);
- //Writeln (execFile[i].F, '@PAUSE');
- CloseFile (execFile[i].F);
- if SettingsForm.HandleCheckBox.IsChecked then
- if compSwitch.IsChecked then
- ShellExecute(0, 'OPEN', PChar('C:\ProgramData\AErender\aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.bat'), '', '', SW_HIDE)
- else
- ShellExecute(0, 'OPEN', PChar('C:\ProgramData\AErender\aerender' + i.ToString + '.bat'), '', '', SW_HIDE)
- else
- if compSwitch.IsChecked then
- ShellExecute(0, 'OPEN', PChar('C:\ProgramData\AErender\aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.bat'), '', '', SW_SHOWNORMAL)
- else
- ShellExecute(0, 'OPEN', PChar('C:\ProgramData\AErender\aerender' + i.ToString + '.bat'), '', '', SW_SHOWNORMAL)
- //Execute('C:\ProgramData\AErender\aerender' + i.ToString + '.bat');
- {$ENDIF MSWINOWS}
- {$IFDEF MACOS}
- if compSwitch.IsChecked then
- AssignFile (execFile[i].F, GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.command', CP_UTF8)
- else
- AssignFile (execFile[i].F, GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '.command', CP_UTF8);
- Rewrite (execFile[i].F);
- Writeln (execFile[i].F, execFile[i].script);
- //Writeln (execFile[i].F, 'read -p "Press any key to continue..."');
- CloseFile (execFile[i].F);
- if SettingsForm.HandleCheckBox.IsChecked then
- if compSwitch.IsChecked then
- begin
- _system(PAnsiChar('chmod +x "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.command"')));
- _system(PAnsiChar('command "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.command" & disown')));
- end
- else
- begin
- _system(PAnsiChar('chmod +x "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '.command"')));
- _system(PAnsiChar('command "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '.command" & disown')));
- end
- else
- if compSwitch.IsChecked then
- begin
- _system(PAnsiChar('chmod +x "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.command"')));
- _system(PAnsiChar('open "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '_' + compGrid.Cells[0, j] + '.command"')));
- end
- else
- begin
- _system(PAnsiChar('chmod +x "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '.command"')));
- _system(PAnsiChar('open "' + AnsiString(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '.command"')));
- //Execute(GetEnvironmentVariable('HOME') + '/Documents/AErender/aerender' + i.ToString + '.command"');
- end
- {$ENDIF MACOS}
- end;
// Wait untill aerender launches
Sleep (200);
if SettingsForm.HandleCheckBox.IsChecked then
@@ -1872,7 +2021,7 @@ exec = record
end
end;
end else begin
- TDialogServiceSync.MessageDialog(Language[LANG].Errors.isCurrentlyRendering, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
+ TDialogServiceSync.MessageDialog(Language[Settings.Language].Errors.isCurrentlyRendering, TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
RenderWindowSender := infoButton;
RenderingForm.ShowModal;
end;
@@ -1945,20 +2094,93 @@ procedure TMainForm.outputModuleBoxChange(Sender: TObject);
end
else
if not outputPath.Text.IsEmpty then
- if tempSavePath.Contains('Def') or tempSavePath.Contains('def') then
- outputPath.Text := ExtractFilePath(tempSavePath) + OutputModules[outputModuleBox.ItemIndex].Mask
+ if Settings.TemporarySavePath.ToLower.Contains('def') then
+ outputPath.Text := ExtractFilePath(Settings.TemporarySavePath) + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
- if ExtractFileName(tempSavePath).IsEmpty then
- outputPath.Text := tempSavePath + OutputModules[outputModuleBox.ItemIndex].Mask
+ if ExtractFileName(Settings.TemporarySavePath).IsEmpty then
+ outputPath.Text := Settings.TemporarySavePath + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
- if ExtractFileExt(tempSavePath).IsEmpty then
- outputPath.Text := ExtractFilePath(tempSavePath) + ExtractFileName(tempSavePath) + '_' + OutputModules[outputModuleBox.ItemIndex].Mask
+ if ExtractFileExt(Settings.TemporarySavePath).IsEmpty then
+ outputPath.Text := ExtractFilePath(Settings.TemporarySavePath) + ExtractFileName(Settings.TemporarySavePath) + '_' + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
- outputPath.Text := ExtractFilePath(tempSavePath) + StringReplace(ExtractFileName(tempSavePath), ExtractFileExt(tempSavePath), '', [rfReplaceAll, rfIgnoreCase])
- + '_' + OutputModules[outputModuleBox.ItemIndex].Mask;
+ outputPath.Text := ExtractFilePath(Settings.TemporarySavePath) + StringReplace(ExtractFileName(Settings.TemporarySavePath), ExtractFileExt(Settings.TemporarySavePath), '', [rfReplaceAll, rfIgnoreCase])
+ + '_' + Settings.OutputModules[outputModuleBox.ItemIndex].Mask;
+end;
+
+procedure TMainForm.TaskEditorPopupPopup(Sender: TObject);
+begin
+ PopupAniOpenHeight.Enabled := True;
+ PopupAniOpenWidth.Enabled := True;
+end;
+
+procedure TMainForm.PopupAniCloseFinish(Sender: TObject);
+begin
+ PopupAniCloseHeight.Enabled := False;
+ PopupAniCloseWidth.Enabled := False;
+ TaskEditorPopup.IsOpen := False;
+ TaskEditorPopup.Height := 384;
+ TaskEditorTabControl.TabIndex := 0;
+end;
+
+procedure TMainForm.PopupAniOpenFinish(Sender: TObject);
+begin
+ PopupAniOpenHeight.Enabled := False;
+ PopupAniOpenWidth.Enabled := False;
+end;
+
+procedure TMainForm.ProjectReaderAwaitTimer(Sender: TObject);
+begin
+ AwaitElapsedTime := AwaitElapsedTime + 5;
+ ProjectAwaitStatusLabel.Text := Format('Elapsed %d seconds of %d', [Trunc(AwaitElapsedTime / 1000), Trunc(AWAIT_TIMEOUT / 1000)]);
+ {$IFDEF MSWINDOWS}
+ ProjectAwaitStatusLabel.Repaint;
+ {$ENDIF}
+
+ if AwaitElapsedTime >= AWAIT_TIMEOUT then begin
+ //Status.Text := 'Timeout';
+ ProjectAwait.Enabled := False;
+ ProjectAwait.Visible := False;
+
+ ProjectReaderAwait.Enabled := False;
+
+ TDialogServiceSync.MessageDialog('Reading timeout. Please, specify all project data manually.', TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
+
+ end;
+
+ if FileExists(ProjectJsonPath) then begin
+ var ProjectJsonFile: TStream := TFileStream.Create(ProjectJsonPath, fmOpenRead or fmShareDenyNone);
+ var ProjectString: TStringList := TStringList.Create;
+ ProjectString.DefaultEncoding := TEncoding.UTF8;
+ ProjectString.LoadFromStream(ProjectJsonFile);
+ ProjectJsonFile.Free;
+
+ if ProjectString.Text <> '' then begin
+ //Status.Text := 'File is not empty';
+ ProjectAwait.Enabled := False;
+ ProjectAwait.Visible := False;
+ //JsonContents.Text := ProjectString.Text;
+
+ ProjectJson := ProjectString.Text;
+
+ //Status.Text := 'Waiting...';
+ AwaitElapsedTime := 0;
+
+ ProjectReaderAwait.Enabled := False;
+
+ ImportForm.FormSender := FS_JSON;
+ ImportForm.ShowModal;
+ end;// else
+ //Status.Text := 'File is empty, repeating...';
+ end;
+end;
+
+procedure TMainForm.TaskEditorCancelButtonClick(Sender: TObject);
+begin
+ PopupAniCloseHeight.Enabled := True;
+ PopupAniCloseWidth.Enabled := True;
end;
-procedure TMainForm.projectPathDragDrop(Sender: TObject;
+procedure TMainForm._projectPathDragDrop(Sender: TObject;
const Data: TDragObject; const Point: TPointF);
begin
if Data.Source <> nil then
@@ -1967,13 +2189,13 @@ procedure TMainForm.projectPathDragDrop(Sender: TObject;
projectPath.Text := Data.Files[0];
end;
-procedure TMainForm.projectPathDragOver(Sender: TObject; const Data: TDragObject;
+procedure TMainForm._projectPathDragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Operation: TDragOperation);
begin
Operation := TDragOperation.Link;
end;
-procedure TMainForm.saveFileClick(Sender: TObject);
+procedure TMainForm._saveFileClick(Sender: TObject);
{$IFDEF MACOS}
var
FSaveFile: NSSavePanel;
@@ -1982,7 +2204,7 @@ procedure TMainForm.saveFileClick(Sender: TObject);
NSWin := WindowHandleToPlatform(Screen.ActiveForm.Handle).Wnd;
FSaveFile :=TNSSavePanel.Wrap(TNSSavePanel.OCClass.savePanel);
- FSaveFile.setAccessoryView(CreateMessageView(Language[LANG].MainForm.DarwinDialogTip));
+ FSaveFile.setAccessoryView(CreateMessageView(Language[Settings.Language].MainForm.DarwinDialogTip));
//FSaveFile.setAccessoryView();
FSaveFile.setDirectory(StrToNSStr(DEFOUTPATH));
FSaveFile.setNameFieldLabel(StrToNSStr('Output file name:'));
@@ -2000,13 +2222,13 @@ procedure TMainForm.saveFileClick(Sender: TObject);
else
tempSavePath := NSStrToStr(FSaveFile.URL.relativePath);
if tempSavePath.Contains('Def') or tempSavePath.Contains('def') then
- outputPath.Text := ExtractFilePath(tempSavePath) + OutputModules[outputModuleBox.ItemIndex].Mask
+ outputPath.Text := ExtractFilePath(tempSavePath) + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
if ExtractFileExt(tempSavePath) = '' then
- outputPath.Text := tempSavePath + '_' + OutputModules[outputModuleBox.ItemIndex].Mask
+ outputPath.Text := tempSavePath + '_' + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
outputPath.Text := ExtractFilePath(tempSavePath) + StringReplace(ExtractFileName(tempSavePath), ExtractFileExt(tempSavePath), '', [rfReplaceAll, rfIgnoreCase])
- + ExtractFileExt(OutputModules[outputModuleBox.ItemIndex].Mask);
+ + ExtractFileExt(Settings.OutputModules[outputModuleBox.ItemIndex].Mask);
end));
{$ENDIF MACOS}
{$IFDEF MSWINDOWS}
@@ -2014,32 +2236,239 @@ procedure TMainForm.saveFileClick(Sender: TObject);
with SaveDialog1 do
if Execute then
begin
- tempSavePath := SaveDialog1.FileName;
+ Settings.TemporarySavePath := SaveDialog1.FileName;
- if tempSavePath.Contains('Def') or tempSavePath.Contains('def') then
- outputPath.Text := ExtractFilePath(tempSavePath) + OutputModules[outputModuleBox.ItemIndex].Mask
+ if Settings.TemporarySavePath.ToLower.Contains('def') then
+ outputPath.Text := ExtractFilePath(Settings.TemporarySavePath) + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
- if ExtractFileExt(tempSavePath) = '' then
- outputPath.Text := tempSavePath + '_' + OutputModules[outputModuleBox.ItemIndex].Mask
+ if ExtractFileExt(Settings.TemporarySavePath) = '' then
+ outputPath.Text := Settings.TemporarySavePath + '_' + Settings.OutputModules[outputModuleBox.ItemIndex].Mask
else
- outputPath.Text := ExtractFilePath(tempSavePath) + StringReplace(ExtractFileName(tempSavePath), ExtractFileExt(tempSavePath), '', [rfReplaceAll, rfIgnoreCase])
- + ExtractFileExt(OutputModules[outputModuleBox.ItemIndex].Mask);
+ outputPath.Text := ExtractFilePath(Settings.TemporarySavePath) + StringReplace(ExtractFileName(Settings.TemporarySavePath), ExtractFileExt(Settings.TemporarySavePath), '', [rfReplaceAll, rfIgnoreCase])
+ + ExtractFileExt(Settings.OutputModules[outputModuleBox.ItemIndex].Mask);
end;
{$ENDIF MSWINDOWS}
end;
+/// Settings button click
procedure TMainForm.settingsButtonClick(Sender: TObject);
begin
SettingsForm.ShowModal;
end;
+procedure TMainForm.TaskEditorCompCountChange(Sender: TObject);
+begin
+ TaskEditorCompGrid.RowCount := StrToInt(TaskEditorCompCount.Text);
+ for var i := 0 to TaskEditorCompGrid.RowCount - 1 do begin
+ TaskEditorCompGrid.Cells[0, i] := IntToStr(i + 1);
+ if TaskEditorCompGrid.Cells[4, i] = '' then
+ TaskEditorCompGrid.Cells[4, i] := '1';
+ end;
+end;
+
+procedure TMainForm.TaskEditorCompGridEditingDone(Sender: TObject; const ACol, ARow: Integer);
+begin
+ {case ACol of
+ 3: begin
+ if StrToInt(TaskEditorCompGrid.Cells[ACol, ARow]) > 128 then
+ TaskEditorCompGrid.StylesData['selection.fill.color'] := $FFFF6157
+ else
+ TaskEditorCompGrid.StylesData['selection.fill.color'] := $FF2A82E2;
+ end;
+ end; }
+end;
+
+procedure TMainForm.TasksPopupMenuPopup(Sender: TObject);
+begin
+ if (TasksTreeView.ItemByText(FCurrentItem) <> nil) and (FCurrentItem <> 'nil') {or (TasksTreeView.Selected <> nil)} then begin
+ TasksTreeView.ItemByText(FCurrentItem).IsSelected := True;
+ EditTaskPopupItem.Enabled := True;
+ DeleteTaskPopupItem.Enabled := True;
+ if TasksTreeView.ItemByText(FCurrentItem).ParentItem <> nil then // Composition
+ TaskItemDisplay.Text := Format('Composition: %s', [FCurrentItem])
+ else // Project
+ TaskItemDisplay.Text := Format('Project: %s', [FCurrentItem]);
+ end else begin
+ TaskItemDisplay.Text := 'No task is selected!';
+ EditTaskPopupItem.Enabled := False;
+ DeleteTaskPopupItem.Enabled := False;
+ end;
+end;
+
+procedure TMainForm.TasksTreeViewItemDblClick(Sender: TObject);
+begin
+ //TasksTreeView.AllowDrag := False;
+
+ var ProjectItem: TTreeViewItem;
+ var Task: TRenderTask;
+ var SelectedComp: String := '';
+
+ if TTreeViewItem(Sender).ParentItem <> nil then begin // If composition item was dblclicked
+ ProjectItem := TTreeViewItem(Sender).ParentItem;
+ TaskEditorTabControl.TabIndex := 1;
+ SelectedComp := TTreeViewItem(Sender).Text;
+ end else begin // We know for sure that it's a project item
+ ProjectItem := TTreeViewItem(Sender);
+ TaskEditorTabControl.TabIndex := 0;
+ end;
+
+ Task := GetTaskByProject(ProjectItem.Text);
+
+ if ProjectItem <> nil then begin // Ensure, that we won't get an Access Violation
+ projectPath.Text := Task.Project;
+ outputPath.Text := Task.Output;
+
+ outputModuleBox.Index := outputModuleBox.Items.IndexOf(Task.OutputModule);
+ renderSettingsEdit.Text := Task.RenderSettings;
+
+ missingFilesCheckbox.IsChecked := Task.MissingFiles;
+ soundCheckbox.IsChecked := Task.Sound;
+ threadedRender.IsChecked := Task.Multiprocessing;
+
+ customCheckbox.IsChecked := not Task.CustomProperties.IsEmpty;
+ customProp.Enabled := not Task.CustomProperties.IsEmpty;
+ customProp.Text := Task.CustomProperties;
+
+ cacheUsageTrackBar.Value := Task.CacheLimit;
+ memUsageTrackBar.Value := Task.MemoryLimit;
+
+ TaskEditorCompCount.Value := Task.Compositions.Count;
+ for var i := 0 to Task.Compositions.Count - 1 do begin
+ TaskEditorCompGrid.Cells[1, i] := Task.Compositions.Items[i].CompName;
+ TaskEditorCompGrid.Cells[2, i] := Task.Compositions.Items[i].Frames.StartFrame.ToString;
+ TaskEditorCompGrid.Cells[3, i] := Task.Compositions.Items[i].Frames.EndFrame.ToString;
+ TaskEditorCompGrid.Cells[4, i] := Task.Compositions.Items[i].Split.ToString;
+ end;
+ end;
+
+ if SelectedComp <> '' then
+ TaskEditorCompGrid.SelectRow(GetCompIndexInTask(Task, SelectedComp));
+
+ TaskEditorSaveButton.Visible := True;
+ TaskEditorCreateTaskButton.Visible := False;
+
+ TaskEditorPopup.PopupModal; //IsOpen := True;//PopupModal;
+end;
+
+procedure TMainForm.TasksTreeViewDragChange(SourceItem, DestItem: TTreeViewItem; var Allow: Boolean);
+begin
+ //if (SourceItem.Level = 1) and (DestItem.Level = 0) then // Comp -> Project
+ // ShowMessage('Comp -> Project');
+
+ //if (SourceItem.Level = 1) and (DestItem.Level = 1) then // Comp -> Comp
+
+ try
+ if (SourceItem.Level = 1) and (DestItem.Level = 1) then // Project[0] -> Project[1]
+ Allow := False;
+
+ if (SourceItem.Level = 2) and (DestItem.Level = 1) then // Project[0].Comp -> Project[1]
+ if SourceItem.ParentItem.Text <> DestItem.Text then
+ Allow := False;
+
+ if (SourceItem.Level = 1) and (DestItem.Level = 2) then // Project[0].Comp -> Project[0].Comp
+ Allow := False;
+
+ if (SourceItem.Level = 2) and (DestItem.Level = 2) then // Project[0].Comp -> Project[1].Comp
+ Allow := False;
+ //ShowMessage(Format('%d --> %d', [SourceItem.Level, DestItem.Level]));
+ except
+ if (SourceItem.Level = 1) and (RenderTasks.Count > 1) then begin
+ Allow := True;
+ RenderTasks.Move(RenderTasks.IndexOf(GetTaskByProject(SourceItem.Text)), RenderTasks.Count - 1);
+ //ShowMessage(Format('%d --> %d', [SourceItem.Level, -1]));
+ ShowMessage(Format('LastTask.Project = %s', [RenderTasks.Items[RenderTasks.Count - 1].Project]));
+ end else
+ Allow := False;
+ end;
+
+end;
+
+procedure TMainForm.TasksTreeViewDragDrop(Sender: TObject; const Data: TDragObject; const Point: TPointF);
+begin
+ if Data.Source = nil then begin // Ensure that we're recieving drag from outside
+ if LowerCase(ExtractFileExt(Data.Files[0])) = LowerCase('.aep') then begin
+ BeginTryParseAEP(Data.Files[0]);
+ end;
+
+ if LowerCase(ExtractFileExt(Data.Files[0])) = LowerCase('.aerq') then
+ ShowMessage('Queue dropped');
+
+ if LowerCase(ExtractFileExt(Data.Files[0])) = LowerCase('.aer') then
+ ShowMessage('Project configuration dropped');
+ end;
+end;
+
+/// Implements basic hot-keys for main treeview
+/// [Ctrl + D] = Duplicate selected
+/// [Del] = Delete selected
+/// [Ctrl + N] = New task
+procedure TMainForm.TasksTreeViewKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
+begin
+ if ssCtrl in Shift then
+ case Key of
+ 68: begin // [D]
+ case TasksTreeView.Selected.Level of
+ 2: begin
+ ShowMessage(Format('Duplicate comp %s', [TasksTreeView.Selected.Text]));
+ end;
+ 1: begin
+ ShowMessage(Format('Duplicate %s', [TasksTreeView.Selected.Text]));
+ end;
+ end;
+ end;
+ 90: begin // [Z]
+ {try
+ var NewItem: TTreeViewItem := (Temporary.Clone(nil) as TTreeViewItem);
+ NewItem.Parent := Temporary.Parent;
+ finally
+ FreeAndNil(Temporary);
+ end; }
+ end;
+ end
+ else
+ case Key of
+ 8, 46: begin // [Backspace], [Del]
+ if TasksTreeView.Selected <> nil then // We can only delete something selected, othewise - access violation
+ if TasksTreeView.Selected.ParentItem <> nil then begin // If composition item was deleted
+ var Task: TRenderTask := GetTaskByProject(TasksTreeView.Selected.ParentItem.Text);
+ RenderTasks.Items[RenderTasks.IndexOf(Task)].Compositions.Remove(GetCompByName(Task, TasksTreeView.Selected.Text));
+
+ RenderTasksOnNotify(Sender, Task, cnRemoved);
+
+ //raise ENotImplemented.Create('Not implemented yet')
+ end else begin // We know for sure that it's a project item
+ RenderTasks.Remove(GetTaskByProject(TasksTreeView.Selected.Text));
+ FreeAndNil(TasksTreeView.Selected);
+ end;
+
+ //TasksIsEmpty.Visible := RenderTasks.Count = 0;
+ end;
+ 19: begin // [Pause/Break]
+ {$IFDEF DEBUG_MODE}
+ if DebugLabel.Visible then
+ DebugLabel.Visible := False
+ else
+ DebugLabel.Visible := True;
+ {$ENDIF}
+ end;
+ end;
+ {$IFDEF DEBUG_MODE}DebugLabel.Text := Format('key = %d', [Key]);{$ENDIF}
+end;
+
+procedure TMainForm.TasksTreeViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
+begin
+ if TasksTreeView.ItemByPoint(X, Y) <> nil then
+ FCurrentItem := TasksTreeView.ItemByPoint(X, Y).Text
+ else
+ FCurrentItem := 'nil';
+end;
+
procedure TMainForm.compCountChange(Sender: TObject);
begin
compGrid.RowCount := Round(compCount.Value);
end;
-procedure TMainForm.compGridEditingDone(Sender: TObject; const ACol,
- ARow: Integer);
+procedure TMainForm.compGridEditingDone(Sender: TObject; const ACol, ARow: Integer);
begin
compName.Text := compGrid.Cells[0, 0];
end;
@@ -2086,40 +2515,39 @@ procedure TMainForm.threadsCountTyping(Sender: TObject);
procedure TMainForm.threadsSwitchSwitch(Sender: TObject);
begin
- if threadsSwitch.IsChecked then
- begin
- if UpdateAvailable = True then
- begin
- if MainForm.Height <= 490 then
- MainForm.Height := 630;
- end
- else
- if MainForm.Height <= 450 then
- MainForm.Height := 580;
-
- threadsSwitchLabel.Text := Language[LANG].MainForm.SplitRender;
- outFrame.TextPrompt := Language[LANG].MainForm.EndFrameHint;
- threadsGrid.AniCalculations.AutoShowing := False;
- threadsGrid.Model.ScrollDirections := TScrollDirections.Vertical;
- end
- else
- begin
- if UpdateAvailable = True then
- begin
- if MainForm.WindowState <> TWindowState.wsMaximized then
- MainForm.Height := 490
- end
- else
- if MainForm.WindowState <> TWindowState.wsMaximized then
- MainForm.Height := 450;
-
- threadsSwitchLabel.Text := Language[LANG].MainForm.SingleRener;
- outFrame.TextPrompt := '';
- end;
+// if threadsSwitch.IsChecked then
+// begin
+// if UpdateAvailable = True then
+// begin
+// if MainForm.Height <= 490 then
+// MainForm.Height := 630;
+// end
+// else
+// if MainForm.Height <= 450 then
+// MainForm.Height := 580;
+//
+// threadsSwitchLabel.Text := Language[Settings.Language].MainForm.SplitRender;
+// outFrame.TextPrompt := Language[Settings.Language].MainForm.EndFrameHint;
+// threadsGrid.AniCalculations.AutoShowing := False;
+// threadsGrid.Model.ScrollDirections := TScrollDirections.Vertical;
+// end
+// else
+// begin
+// if UpdateAvailable = True then
+// begin
+// if MainForm.WindowState <> TWindowState.wsMaximized then
+// MainForm.Height := 490
+// end
+// else
+// if MainForm.WindowState <> TWindowState.wsMaximized then
+// MainForm.Height := 450;
+//
+// threadsSwitchLabel.Text := Language[Settings.Language].MainForm.SingleRener;
+// outFrame.TextPrompt := '';
+// end;
end;
-procedure TMainForm.UpdateNetHTTPClientRequestCompleted(
- const Sender: TObject; const AResponse: IHTTPResponse);
+procedure TMainForm.UpdateNetHTTPClientRequestCompleted(const Sender: TObject; const AResponse: IHTTPResponse);
begin
gitRelease := TJsonObject.ParseJSONValue(AResponse.ContentAsString(TEncoding.UTF8));
gitVersion := gitRelease.A[0].P['tag_name'].Value;
@@ -2130,17 +2558,14 @@ procedure TMainForm.UpdateNetHTTPClientRequestCompleted(
UpdateAvailable := True;
if UpdateAvailable then begin
- if threadsSwitch.IsChecked or compSwitch.IsChecked then
- MainForm.Height := 630
- else
- MainForm.Height := {$IFDEF MSWINDOWS}490{$ENDIF MSWINDOWS} {$IFDEF MACOS}470{$ENDIF MACOS};
+ MainForm.Height := SizeConstraints.MIN_HEIGHT_UPD;
MainForm.UpdateInfo.Visible := True;
MainForm.UpdateInfo.Enabled := True;
- MainForm.downloadButton.Text := Language[LANG].MainForm.Download + ' (' + gitVersion + ')';
+ MainForm.downloadButton.Text := Language[Settings.Language].MainForm.Download + ' (' + gitVersion + ')';
{$IFDEF MSWINDOWS}gitDownload := gitRelease.A[0].P['assets'].A[1].P['browser_download_url'].Value;{$ENDIF MSWINDOWS}
{$IFDEF MACOS}gitDownload := gitRelease.A[0].P['assets'].A[0].P['browser_download_url'].Value;{$ENDIF MACOS}
end else begin
- MainForm.Height := {$IFDEF MSWINDOWS}450{$ENDIF MSWINDOWS} {$IFDEF MACOS}430{$ENDIF MACOS};
+ MainForm.Height := SizeConstraints.MIN_HEIGHT_NO_UPD;
MainForm.UpdateInfo.Visible := False;
MainForm.UpdateInfo.Enabled := False;
end;
@@ -2182,21 +2607,20 @@ procedure TMainForm.memUsageInfoEditValidate(Sender: TObject;
tempText: String;
begin
tempText := memUsageInfoEdit.Text;
- if (tempText.Contains ('unl') or tempText.Contains('max')) then
+ if (tempText.Contains('unl') or tempText.Contains('max')) then
memUsageInfoEdit.Text := Trunc(GetPlatformMemorySize / 1024 / 1024 + 1).ToString
else
begin
- if (((tempText.Contains ('mb')) or (tempText.Contains ('Mb')) or (tempText.Contains ('MB')) or (tempText.Contains ('mB')))
- or not (tempText[tempText.Length].IsDigit)) then
+ if ((tempText.ToLower.Contains('mb')) or not (tempText[tempText.Length].IsDigit)) then
memUsageInfoEdit.Text := memUsageInfoEdit.Text.Remove(memUsageInfoEdit.Text.Length - 3);
- if (tempText.Contains ('kb')) or (tempText.Contains ('Kb')) or (tempText.Contains ('KB')) or (tempText.Contains ('kB')) then
+ if tempText.ToLower.Contains('kb') then
memUsageInfoEdit.Text := (memUsageInfoEdit.Text.ToInteger() / 1024).ToString; //KB -> MB
- if (tempText.Contains ('gb')) or (tempText.Contains ('Gb')) or (tempText.Contains ('GB')) or (tempText.Contains ('gB')) then
+ if tempText.ToLower.Contains('gb') then
memUsageInfoEdit.Text := (memUsageInfoEdit.Text.ToInteger() * 1024).ToString; //GB -> MB
end;
- if tempText.Contains ('%') then
+ if tempText.Contains('%') then
begin
if tempText[tempText.IndexOf('%') - 1] = ' ' then
memUsageInfoEdit.Text := memUsageInfoEdit.Text.Remove(memUsageInfoEdit.Text.Length - 2)
@@ -2210,7 +2634,7 @@ procedure TMainForm.memUsageInfoEditValidate(Sender: TObject;
memUsageTrackBar.Value := (100 * memUsageInfoEdit.Text.ToInteger()) / (GetPlatformMemorySize / 1024 / 1024);
except
on Exception do
- TDialogServiceSync.MessageDialog((Text + ' ' + Language[LANG].Errors.MemoryValueInvalid), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
+ TDialogServiceSync.MessageDialog((Text + ' ' + Language[Settings.Language].Errors.MemoryValueInvalid), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
end;
end;
memUsageInfo.Visible := True;
@@ -2222,11 +2646,87 @@ procedure TMainForm.memUsageInfoEditValidate(Sender: TObject;
procedure TMainForm.memUsageTrackBarChange(Sender: TObject);
begin
if memUsageTrackBar.Value = 100 then
- memUsageInfo.Text := Language[LANG].MainForm.Unlimited
+ memUsageInfo.Text := Language[Settings.Language].MainForm.Unlimited
else
memUsageInfo.Text := Trunc(memUsageTrackBar.Value).ToString + '% (' + Trunc((GetPlatformMemorySize/1024/1024) * (memUsageTrackBar.Value / 100)).ToString + ' MB)';
end;
+procedure TMainForm.TaskEditorCompButtonClick(Sender: TObject);
+begin
+ TaskEditorTabControl.TabIndex := 1;
+end;
+
+procedure TMainForm.TaskEditorCreateTaskButtonClick(Sender: TObject);
+begin
+ var ErrorStr: String := '';
+ for var i := 0 to StrToInt(TaskEditorCompCount.Text) - 1 do begin
+ /// EC001 :: Composition name is empty
+ if TaskEditorCompGrid.Cells[1, i] = '' then
+ ErrorStr := ErrorStr + Format('%s[%d]: (EC001) %s%s', ['Composition', i + 1, 'Composition name is empty', #13#10]);
+
+ /// EC002 :: [Start Frame] and [End Frame] can''t be empty with [Split] more than 1
+ if (TaskEditorCompGrid.Cells[2, i] = '') and (TaskEditorCompGrid.Cells[3, i] = '') and (TaskEditorCompGrid.Cells[4, i] <> '1') then
+ ErrorStr := ErrorStr + Format('%s[%d]: (EC002) %s%s', ['Composition', i + 1, '[Start Frame] and [End Frame] can''t be empty with [Split] more than 1', #13#10]);
+
+ /// New line for each comp
+ if ErrorStr <> '' then
+ ErrorStr := ErrorStr + #13#10;
+ end;
+
+ if ErrorStr <> '' then begin
+ raise AERParamException.Create(Format('%s%s%s', [Language[Settings.Language].Errors.errorsOccured, #13#10, ErrorStr]));
+ end else begin
+ /// Create all the compositions beforehand
+ /// to append them to [Task]
+ /// Also, lists should be created on initialization
+ /// they are not TArray<> :c
+ var Compositions: TList := TList.Create;
+
+ for var i := 0 to Trunc(TaskEditorCompCount.Value) - 1 do begin
+ Compositions.Add(TComposition.Create(
+ TaskEditorCompGrid.Cells[1, i],
+ TFrameSpan.Create(TaskEditorCompGrid.Cells[2, i], TaskEditorCompGrid.Cells[3, i]),
+ StrToInt(TaskEditorCompGrid.Cells[4, i])
+ ));
+ end;
+
+ var Task: TRenderTask := TRenderTask.Create(
+ projectPath.Text,
+ outputPath.Text,
+ outputModuleBox.Items[outputModuleBox.ItemIndex],
+ renderSettingsEdit.Text,
+ missingFilesCheckbox.IsChecked,
+ soundCheckbox.IsChecked,
+ threadedRender.IsChecked,
+ IfThenElse(customCheckbox.IsChecked = True, customProp.Text, ''), // yeet
+ cacheUsageTrackBar.Value,
+ memUsageTrackBar.Value,
+ TList.Create(Compositions)
+ );
+
+ RenderTasks.Add(Task);
+ {$IFDEF DEBUG_MODE}
+ ShowMessage(RenderTasks.Items[0].ToString);
+ {$ENDIF}
+
+ Compositions.Free;
+
+ PopupAniCloseHeight.Enabled := True;
+ PopupAniCloseWidth.Enabled := True;
+
+ TaskEditorCompCount.Value := 1;
+ TaskEditorCompGrid.Cells[0, 0] := '1';
+ TaskEditorCompGrid.Cells[1, 0] := '';
+ TaskEditorCompGrid.Cells[2, 0] := '';
+ TaskEditorCompGrid.Cells[3, 0] := '';
+ TaskEditorCompGrid.Cells[4, 0] := '1';
+
+ //UpdateTasksList;
+
+ //TasksIsEmpty.Visible := RenderTasks.Count = 0;
+ end;
+end;
+
procedure TMainForm.cacheUsageInfoClick(Sender: TObject);
begin
cacheUsageInfoEdit.Text := Trunc(cacheUsageTrackBar.Value).ToString + '%';
@@ -2266,7 +2766,7 @@ procedure TMainForm.cacheUsageInfoEditValidate(Sender: TObject;
cacheUsageInfoEdit.Text := '100';
except
on Exception do
- TDialogServiceSync.MessageDialog((Text + ' ' + Language[LANG].Errors.CacheValueInvalid), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
+ TDialogServiceSync.MessageDialog((Text + ' ' + Language[Settings.Language].Errors.CacheValueInvalid), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0);
end;
tempText := '';
cacheUsageTrackBar.Value := cacheUsageInfoEdit.Text.ToSingle();
@@ -2280,7 +2780,7 @@ procedure TMainForm.cacheUsageInfoEditValidate(Sender: TObject;
procedure TMainForm.cacheUsageTrackBarChange(Sender: TObject);
begin
if cacheUsageTrackBar.Value = 100 then
- cacheUsageInfo.Text := Language[LANG].MainForm.Unlimited
+ cacheUsageInfo.Text := Language[Settings.Language].MainForm.Unlimited
else
cacheUsageInfo.Text := Trunc(cacheUsageTrackBar.Value).ToString + '%';
end;
diff --git a/src/MainUnit.vlb b/src/MainUnit.vlb
index 28027d6..48748ef 100644
--- a/src/MainUnit.vlb
+++ b/src/MainUnit.vlb
@@ -19,9 +19,6 @@ Coordinates=1960,10,113,51
[memUsageLayout]
Coordinates=799,1328,103,33
-[saveFile]
-Coordinates=201,1120,54,51
-
[properiesLayout2]
Coordinates=659,1328,100,33
@@ -61,18 +58,12 @@ Coordinates=1812,1266,102,33
[soundCheckbox]
Coordinates=1047,1036,94,51
-[Image1]
-Coordinates=372,1036,49,51
-
[customProp]
Coordinates=881,10,74,69
[outModuleEditorItem0]
Coordinates=1309,1266,123,33
-[projectPath]
-Coordinates=1897,1036,70,51
-
[memUsageInfoEdit]
Coordinates=89,1036,107,51
@@ -104,9 +95,6 @@ Coordinates=638,1266,74,33
[compLayout]
Coordinates=528,1266,75,33
-[infoIconFill]
-Coordinates=422,928,69,33
-
[threadsLayout]
Coordinates=406,1266,85,33
@@ -125,9 +113,6 @@ Coordinates=2493,1204,81,33
[StringColumn3]
Coordinates=2256,1204,88,33
-[Image2]
-Coordinates=797,1036,49,51
-
[mainLayout]
Coordinates=2149,1204,72,33
@@ -210,9 +195,6 @@ Coordinates=1323,1,144,33
[OnyxBlueStyle]
Coordinates=818,1002,87,33
-[outputPath]
-Coordinates=553,1036,68,51
-
[threadsSwitch]
Coordinates=160,571,84,177
@@ -234,9 +216,6 @@ Coordinates=481,1002,97,33
[launcherLayout]
Coordinates=2292,1120,91,33
-[settingsIconFill]
-Coordinates=263,1002,89,33
-
[cacheUsageTrackBar]
Coordinates=2234,10,119,51
@@ -282,21 +261,12 @@ Coordinates=1024,1120,94,33
[helpItem]
Coordinates=934,1120,56,33
-[openFile]
-Coordinates=1518,1036,56,51
-
[compGrid]
Coordinates=513,172,62,87
[cacheUsageLimitLabel]
Coordinates=2397,1036,125,51
-[projectPathLabel]
-Coordinates=122,1120,97,51
-
-[outputPathLabel]
-Coordinates=10,1036,95,51
-
[startFrameLabel]
Coordinates=1179,1036,94,51
@@ -304,7 +274,7 @@ Coordinates=1179,1036,94,51
Coordinates=968,1036,90,51
[]
-Coordinates=2124,1120,123,33
+Coordinates=797,1036,49,51
[threadsCount]
Coordinates=400,580,81,123
@@ -314,3 +284,21 @@ ExplicitSubNodes=Enabled;Visible
[renderSettingsBox]
Coordinates=614,10,87,123
+[_projectPathLabel]
+Coordinates=122,1120,97,51
+
+[_projectPath]
+Coordinates=1897,1036,70,51
+
+[_outputPathLabel]
+Coordinates=10,1036,95,51
+
+[_outputPath]
+Coordinates=553,1036,68,51
+
+[openFile]
+Coordinates=1518,1036,56,51
+
+[_saveFile]
+Coordinates=201,1120,54,51
+
diff --git a/src/OutputModuleEditorUnit.fmx b/src/OutputModuleEditorUnit.fmx
index e655c44..423742c 100644
--- a/src/OutputModuleEditorUnit.fmx
+++ b/src/OutputModuleEditorUnit.fmx
@@ -17,13 +17,13 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
DesignerMasterStyle = 0
object propertiesLayout: TLayout
Align = Client
- Size.Width = 491.000000000000000000
- Size.Height = 339.000000000000000000
+ Size.Width = 493.000000000000000000
+ Size.Height = 340.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
object outputModuleNameLayout: TLayout
Align = Top
- Size.Width = 491.000000000000000000
+ Size.Width = 493.000000000000000000
Size.Height = 30.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
@@ -44,7 +44,7 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 4.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 4.000000000000000000
- Size.Width = 356.000000000000000000
+ Size.Width = 358.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TextPrompt = 'Specify output module'
@@ -53,8 +53,8 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
end
object filenameBuilderLayout: TLayout
Align = Client
- Size.Width = 491.000000000000000000
- Size.Height = 309.000000000000000000
+ Size.Width = 493.000000000000000000
+ Size.Height = 310.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
object fileMaskLabel: TLabel
@@ -65,7 +65,7 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Bottom = 5.000000000000000000
Position.X = 5.000000000000000000
Position.Y = 5.000000000000000000
- Size.Width = 481.000000000000000000
+ Size.Width = 483.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
TextSettings.HorzAlign = Center
@@ -78,23 +78,23 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 481.000000000000000000
- Size.Height = 222.000000000000000000
+ Size.Width = 483.000000000000000000
+ Size.Height = 223.000000000000000000
Size.PlatformDefault = False
TabIndex = 0
TabOrder = 2
TabPosition = PlatformDefault
Sizes = (
- 477s
- 196s
- 477s
- 196s
- 477s
- 196s
- 477s
- 196s
- 477s
- 196s)
+ 479s
+ 197s
+ 479s
+ 197s
+ 479s
+ 197s
+ 479s
+ 197s
+ 479s
+ 197s)
object projectTab: TTabItem
CanFocus = False
CustomIcon = <
@@ -115,8 +115,8 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 467.000000000000000000
- Size.Height = 186.000000000000000000
+ Size.Width = 469.000000000000000000
+ Size.Height = 187.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Justify = Center
@@ -144,8 +144,8 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 467.000000000000000000
- Size.Height = 186.000000000000000000
+ Size.Width = 469.000000000000000000
+ Size.Height = 187.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Justify = Center
@@ -173,8 +173,8 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 467.000000000000000000
- Size.Height = 186.000000000000000000
+ Size.Width = 469.000000000000000000
+ Size.Height = 187.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Justify = Center
@@ -202,8 +202,8 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 467.000000000000000000
- Size.Height = 186.000000000000000000
+ Size.Width = 469.000000000000000000
+ Size.Height = 187.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Justify = Center
@@ -231,8 +231,8 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Top = 5.000000000000000000
Margins.Right = 5.000000000000000000
Margins.Bottom = 5.000000000000000000
- Size.Width = 467.000000000000000000
- Size.Height = 186.000000000000000000
+ Size.Width = 469.000000000000000000
+ Size.Height = 187.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Justify = Center
@@ -249,7 +249,7 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Position.Y = 27.000000000000000000
Margins.Left = 5.000000000000000000
Margins.Right = 5.000000000000000000
- Size.Width = 481.000000000000000000
+ Size.Width = 483.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
TextPrompt = 'Type or drag from bottom panel available parameters'
@@ -261,7 +261,7 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
end
object PresetsConfiguratorToolbar: TToolBar
Size.Width = 700.000000000000000000
- Size.Height = 33.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
object WindowLabel: TLabel
@@ -271,7 +271,7 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
Margins.Left = 20.000000000000000000
Position.X = 20.000000000000000000
Size.Width = 273.000000000000000000
- Size.Height = 33.000000000000000000
+ Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 16.000000000000000000
TextSettings.Font.StyleExt = {00070000000000000004000000}
@@ -282,9 +282,14 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
end
object outputModulesBox: TListBox
Align = Left
- Position.Y = 33.000000000000000000
+ Margins.Left = -1.000000000000000000
+ Margins.Top = -1.000000000000000000
+ Margins.Right = -1.000000000000000000
+ Margins.Bottom = -1.000000000000000000
+ Position.X = -1.000000000000000000
+ Position.Y = 31.000000000000000000
Size.Width = 200.000000000000000000
- Size.Height = 339.000000000000000000
+ Size.Height = 342.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
DisableFocusEffect = True
@@ -293,16 +298,16 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
DefaultItemStyles.GroupFooterStyle = ''
OnChange = outputModulesBoxChange
Viewport.Width = 196.000000000000000000
- Viewport.Height = 335.000000000000000000
+ Viewport.Height = 338.000000000000000000
end
object Splitter1: TSplitter
Align = Left
Cursor = crHSplit
MinSize = 20.000000000000000000
- Position.X = 200.000000000000000000
- Position.Y = 33.000000000000000000
+ Position.X = 198.000000000000000000
+ Position.Y = 32.000000000000000000
Size.Width = 9.000000000000000000
- Size.Height = 339.000000000000000000
+ Size.Height = 340.000000000000000000
Size.PlatformDefault = False
end
object StatusBar1: TStatusBar
@@ -371,12 +376,12 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
object addModuleButton: TButton
Align = Client
StyledSettings = [Family, FontColor]
- Margins.Left = 3.000000000000000000
- Margins.Top = 3.000000000000000000
- Margins.Right = 3.000000000000000000
- Margins.Bottom = 3.000000000000000000
- Size.Width = 24.000000000000000000
- Size.Height = 24.000000000000000000
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 22.000000000000000000
+ Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Text = '+'
@@ -387,12 +392,12 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
object removeModuleButton: TButton
Align = Client
StyledSettings = [Family, FontColor]
- Margins.Left = 3.000000000000000000
- Margins.Top = 3.000000000000000000
- Margins.Right = 3.000000000000000000
- Margins.Bottom = 3.000000000000000000
- Size.Width = 24.000000000000000000
- Size.Height = 24.000000000000000000
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 22.000000000000000000
+ Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = '-'
@@ -402,13 +407,12 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
end
object saveModulesButton: TButton
Align = Client
- ModalResult = 8
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 80.000000000000000000
- Size.Height = 20.000000000000000000
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 82.000000000000000000
+ Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
Text = 'Save'
@@ -416,12 +420,12 @@ object OutputModuleEditorForm: TOutputModuleEditorForm
end
object cancelButton: TButton
Align = Client
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 65.000000000000000000
- Size.Height = 20.000000000000000000
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 67.000000000000000000
+ Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 3
Text = 'Cancel'
diff --git a/src/OutputModuleEditorUnit.pas b/src/OutputModuleEditorUnit.pas
index 9bc9d08..98198fe 100644
--- a/src/OutputModuleEditorUnit.pas
+++ b/src/OutputModuleEditorUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* OutputModuleEditorUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -52,6 +52,8 @@ interface
FMX.Objects,
FMX.Platform,
+ AErenderLauncher.Types,
+
MainUnit,
{$IFDEF MSWINDOWS}
@@ -109,9 +111,9 @@ TOutputModuleEditorForm = class(TForm)
procedure SetLanguage(LanguageCode: Integer);
private
{ Private declarations }
- {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
public
{ Public declarations }
+ {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
end;
//{$IFDEF MACOS}TOCLocalAccess = class(TOCLocal);{$ENDIF MACOS}
{$IFDEF MACOS}procedure NSWindowEditStateChange (State: Boolean);{$ENDIF MACOS}
@@ -128,7 +130,7 @@ //{$IFDEF MACOS}TOCLocalAccess = class(TOCLocal);{$ENDIF MACOS}
var
OutputModuleEditorForm: TOutputModuleEditorForm;
FlagButton: TArray;
- TempOutputModules: TArray;
+ TempOutputModules: TArray;
implementation
@@ -141,7 +143,7 @@ procedure TOutputModuleEditorForm.CreateHandle;
var hWnd: HWND := FormToHWND(Self);
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) or WS_EX_APPWINDOW);
- SetClassLong(hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) or CS_DROPSHADOW);
+ //SetClassLong(hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) or CS_DROPSHADOW);
end;
{$ENDIF MSWINDOWS}
@@ -157,7 +159,7 @@ procedure NSWindowEditStateChange (State: Boolean);
end;
{$ENDIF MACOS}
-function CompareOutputModules(a, b: TArray): Boolean;
+function CompareOutputModules(a, b: TArray): Boolean;
begin
Result := False;
if Length(a) = Length(b) then
@@ -192,8 +194,8 @@ procedure TOutputModuleEditorForm.SetLanguage(LanguageCode: Integer);
procedure TOutputModuleEditorForm.cancelButtonClick(Sender: TObject);
begin
- MainUnit.OutputModules := TempOutputModules;
- SetLength(MainUnit.OutputModules, Length(TempOutputModules));
+ Settings.OutputModules := TempOutputModules;
+ SetLength(Settings.OutputModules, Length(TempOutputModules));
OutputModuleEditorForm.Close;
end;
@@ -223,7 +225,7 @@ procedure TOutputModuleEditorForm.fileMaskDragOver(Sender: TObject;
procedure TOutputModuleEditorForm.fileMaskTyping(Sender: TObject);
begin
- MainUnit.OutputModules[outputModulesBox.ItemIndex].Mask := fileMask.Text;
+ Settings.OutputModules[outputModulesBox.ItemIndex].Mask := fileMask.Text;
{$IFDEF MACOS}NSWindowEditStateChange(True);{$ENDIF MACOS}
end;
@@ -237,8 +239,8 @@ procedure TOutputModuleEditorForm.FormClose(Sender: TObject;
procedure TOutputModuleEditorForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
- if not CompareOutputModules(MainUnit.OutputModules, TempOutputModules) then
- case TDialogServiceSync.MessageDialog(Language[LANG].OutputModuleConfiguratorForm.CloseDialog, TMsgDlgType.mtConfirmation, mbYesNoCancel, TMsgDlgBtn.mbYes, 0) of
+ if not CompareOutputModules(Settings.OutputModules, TempOutputModules) then
+ case TDialogServiceSync.MessageDialog(Language[Settings.Language].OutputModuleConfiguratorForm.CloseDialog, TMsgDlgType.mtConfirmation, mbYesNoCancel, TMsgDlgBtn.mbYes, 0) of
6: begin CanClose := True; saveModulesButtonClick(Sender); end;
7: begin CanClose := True; cancelButtonClick(Sender); end;
2: CanClose := False;
@@ -286,13 +288,13 @@ procedure TOutputModuleEditorForm.FormCreate(Sender: TObject);
procedure TOutputModuleEditorForm.FormShow(Sender: TObject);
begin
- TempOutputModules := MainUnit.OutputModules;
- SetLength(TempOutputModules, Length(MainUnit.OutputModules));
- for var i := 0 to High(MainUnit.OutputModules) do
- if MainUnit.OutputModules[i].Imported then
- outputModulesBox.Items.Add(MainUnit.OutputModules[i].Module + ' ' + Language[LANG].OutputModuleConfiguratorForm.Imported)
+ TempOutputModules := Settings.OutputModules;
+ SetLength(TempOutputModules, Length(Settings.OutputModules));
+ for var i := 0 to High(Settings.OutputModules) do
+ if Settings.OutputModules[i].Imported then
+ outputModulesBox.Items.Add(Settings.OutputModules[i].Module + ' ' + Language[Settings.Language].OutputModuleConfiguratorForm.Imported)
else
- outputModulesBox.Items.Add(MainUnit.OutputModules[i].Module);
+ outputModulesBox.Items.Add(Settings.OutputModules[i].Module);
outputModulesBox.ItemIndex := 0;
{$IFDEF MACOS}NSWindowEditStateChange(False);{$ENDIF MACOS}
end;
@@ -301,9 +303,9 @@ procedure TOutputModuleEditorForm.outputModulesBoxChange(Sender: TObject);
begin
if outputModulesBox.ItemIndex > -1 then
begin
- outputModule.Text := MainUnit.OutputModules[outputModulesBox.ItemIndex].Module;
- fileMask.Text := MainUnit.OutputModules[outputModulesBox.ItemIndex].Mask;
- if MainUnit.OutputModules[outputModulesBox.ItemIndex].Imported then
+ outputModule.Text := Settings.OutputModules[outputModulesBox.ItemIndex].Module;
+ fileMask.Text := Settings.OutputModules[outputModulesBox.ItemIndex].Mask;
+ if Settings.OutputModules[outputModulesBox.ItemIndex].Imported then
outputModule.Enabled := False
else
outputModule.Enabled := True;
@@ -313,7 +315,7 @@ procedure TOutputModuleEditorForm.outputModulesBoxChange(Sender: TObject);
procedure TOutputModuleEditorForm.outputModuleTyping(Sender: TObject);
begin
outputModulesBox.Items[outputModulesBox.ItemIndex] := outputModule.Text;
- MainUnit.OutputModules[outputModulesBox.ItemIndex].Module := outputModule.Text;
+ Settings.OutputModules[outputModulesBox.ItemIndex].Module := outputModule.Text;
{$IFDEF MACOS}NSWindowEditStateChange(True);{$ENDIF MACOS}
end;
@@ -321,14 +323,14 @@ procedure TOutputModuleEditorForm.removeModuleButtonClick(Sender: TObject);
begin
var tempIndex: Integer := outputModulesBox.ItemIndex;
- MainUnit.OutputModules[tempIndex].Module := '';
- MainUnit.OutputModules[tempIndex].Mask := '';
+ Settings.OutputModules[tempIndex].Module := '';
+ Settings.OutputModules[tempIndex].Mask := '';
- if tempIndex <> High(MainUnit.OutputModules) then
- for var i := tempIndex + 1 to High(MainUnit.OutputModules) - 1 do
- MainUnit.OutputModules[i - 1] := MainUnit.OutputModules[i];
+ if tempIndex <> High(Settings.OutputModules) then
+ for var i := tempIndex + 1 to High(Settings.OutputModules) - 1 do
+ Settings.OutputModules[i - 1] := Settings.OutputModules[i];
- SetLength (MainUnit.OutputModules, Length(MainUnit.OutputModules) - 1);
+ SetLength (Settings.OutputModules, Length(Settings.OutputModules) - 1);
outputModulesBox.Items.Delete(tempIndex);
outputModulesBox.ItemIndex := tempIndex - 1;
@@ -338,17 +340,17 @@ procedure TOutputModuleEditorForm.removeModuleButtonClick(Sender: TObject);
procedure TOutputModuleEditorForm.saveModulesButtonClick(Sender: TObject);
begin
- TempOutputModules := MainUnit.OutputModules;
- SetLength(TempOutputModules, Length(MainUnit.OutputModules));
+ TempOutputModules := Settings.OutputModules;
+ SetLength(TempOutputModules, Length(Settings.OutputModules));
MainForm.UpdateOutputModules;
OutputModuleEditorForm.Close;
end;
procedure TOutputModuleEditorForm.addModuleButtonClick(Sender: TObject);
begin
- SetLength (MainUnit.OutputModules, Length(MainUnit.OutputModules) + 1);
- outputModulesBox.Items.Insert(High(MainUnit.OutputModules), 'Untitled');
- outputModulesBox.ItemIndex := High(MainUnit.OutputModules);
+ SetLength (Settings.OutputModules, Length(Settings.OutputModules) + 1);
+ outputModulesBox.Items.Insert(High(Settings.OutputModules), 'Untitled');
+ outputModulesBox.ItemIndex := High(Settings.OutputModules);
{$IFDEF MACOS}NSWindowEditStateChange(True);{$ENDIF MACOS}
end;
diff --git a/src/RenderingUnit.fmx b/src/RenderingUnit.fmx
index 300e18a..b7c7a80 100644
--- a/src/RenderingUnit.fmx
+++ b/src/RenderingUnit.fmx
@@ -3,8 +3,8 @@ object RenderingForm: TRenderingForm
Left = 0
Top = 0
Caption = 'Rendering Progress'
- ClientHeight = 448
- ClientWidth = 512
+ ClientHeight = 460
+ ClientWidth = 480
Position = MainFormCenter
Quality = HighQuality
StyleBook = MainForm.AERModernStyle
@@ -24,15 +24,15 @@ object RenderingForm: TRenderingForm
end
object AErenderLayout: TLayout
Align = Contents
- Size.Width = 512.000000000000000000
- Size.Height = 448.000000000000000000
+ Size.Width = 480.000000000000000000
+ Size.Height = 460.000000000000000000
Size.PlatformDefault = False
TabOrder = 4
object RenderingStatusBar: TStatusBar
Align = MostBottom
- Position.Y = 320.000000000000000000
+ Position.Y = 332.000000000000000000
ShowSizeGrip = True
- Size.Width = 512.000000000000000000
+ Size.Width = 480.000000000000000000
Size.Height = 128.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
@@ -44,7 +44,7 @@ object RenderingForm: TRenderingForm
Margins.Right = 10.000000000000000000
Position.X = 5.000000000000000000
Position.Y = 86.000000000000000000
- Size.Width = 98.000000000000000000
+ Size.Width = 97.000000000000000000
Size.Height = 24.000000000000000000
Size.PlatformDefault = False
TextSettings.WordWrap = False
@@ -55,7 +55,7 @@ object RenderingForm: TRenderingForm
object statusBarSeparator1: TLine
Align = Right
LineType = Left
- Position.X = 318.000000000000000000
+ Position.X = 286.000000000000000000
Position.Y = 97.000000000000000000
Size.Width = 10.000000000000000000
Size.Height = 31.000000000000000000
@@ -67,7 +67,7 @@ object RenderingForm: TRenderingForm
Margins.Top = 4.000000000000000000
Margins.Right = 24.000000000000000000
Margins.Bottom = 4.000000000000000000
- Position.X = 328.000000000000000000
+ Position.X = 296.000000000000000000
Position.Y = 101.000000000000000000
Size.Width = 160.000000000000000000
Size.Height = 23.000000000000000000
@@ -78,7 +78,7 @@ object RenderingForm: TRenderingForm
end
object statusBarTopLayout: TLayout
Align = Top
- Size.Width = 512.000000000000000000
+ Size.Width = 480.000000000000000000
Size.Height = 96.000000000000000000
Size.PlatformDefault = False
TabOrder = 3
@@ -90,7 +90,7 @@ object RenderingForm: TRenderingForm
Margins.Top = 8.000000000000000000
Margins.Right = 16.000000000000000000
Margins.Bottom = 8.000000000000000000
- Size.Width = 480.000000000000000000
+ Size.Width = 448.000000000000000000
Size.Height = 23.000000000000000000
Size.PlatformDefault = False
end
@@ -102,7 +102,7 @@ object RenderingForm: TRenderingForm
Margins.Bottom = 5.000000000000000000
Position.X = 15.000000000000000000
Position.Y = 69.000000000000000000
- Size.Width = 482.000000000000000000
+ Size.Width = 450.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 16.000000000000000000
@@ -118,7 +118,7 @@ object RenderingForm: TRenderingForm
Margins.Right = 16.000000000000000000
Position.X = 16.000000000000000000
Position.Y = 8.000000000000000000
- Size.Width = 480.000000000000000000
+ Size.Width = 448.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
@@ -139,7 +139,7 @@ object RenderingForm: TRenderingForm
Align = Right
AutoSize = True
StyledSettings = [Family, FontColor]
- Position.X = 456.000000000000000000
+ Position.X = 424.000000000000000000
Size.Width = 24.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
@@ -157,7 +157,7 @@ object RenderingForm: TRenderingForm
Align = Top
LineType = Bottom
Position.Y = 96.000000000000000000
- Size.Width = 512.000000000000000000
+ Size.Width = 480.000000000000000000
Size.Height = 1.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
@@ -188,7 +188,7 @@ object RenderingForm: TRenderingForm
end
end
object RenderingToolBar: TToolBar
- Size.Width = 512.000000000000000000
+ Size.Width = 480.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
@@ -198,7 +198,7 @@ object RenderingForm: TRenderingForm
StyledSettings = [Family, FontColor]
Margins.Left = 20.000000000000000000
Position.X = 20.000000000000000000
- Size.Width = 148.000000000000000000
+ Size.Width = 147.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 16.000000000000000000
@@ -214,7 +214,7 @@ object RenderingForm: TRenderingForm
AutoSize = True
StyledSettings = [Family, FontColor]
Margins.Right = 20.000000000000000000
- Position.X = 492.000000000000000000
+ Position.X = 460.000000000000000000
Size.Width = 0.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
@@ -230,23 +230,24 @@ object RenderingForm: TRenderingForm
Softness = 0.500000000000000000
Enabled = False
end
- object VertScrollBox1: TVertScrollBox
+ object ProgressScrollBox: TVertScrollBox
Align = Client
- Size.Width = 512.000000000000000000
- Size.Height = 288.000000000000000000
+ Size.Width = 480.000000000000000000
+ Size.Height = 300.000000000000000000
Size.PlatformDefault = False
- Viewport.Width = 512.000000000000000000
- Viewport.Height = 288.000000000000000000
+ Viewport.Width = 480.000000000000000000
+ Viewport.Height = 300.000000000000000000
object emptyLabel: TLabel
Align = Client
StyledSettings = [Family, FontColor]
- Size.Width = 512.000000000000000000
- Size.Height = 288.000000000000000000
+ Size.Width = 480.000000000000000000
+ Size.Height = 300.000000000000000000
Size.PlatformDefault = False
TextSettings.Font.Size = 20.000000000000000000
TextSettings.Font.StyleExt = {00070000000000000004000000}
TextSettings.HorzAlign = Center
Text = 'Queue is empty'
+ TabOrder = 0
end
end
end
diff --git a/src/RenderingUnit.pas b/src/RenderingUnit.pas
index 5c03c37..347af9e 100644
--- a/src/RenderingUnit.pas
+++ b/src/RenderingUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* RenderingUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -35,6 +35,7 @@ interface
System.Variants,
System.Diagnostics,
System.Generics.Collections,
+ System.RegularExpressions,
FMX.Types,
FMX.Controls,
@@ -50,8 +51,12 @@ interface
FMX.Effects,
FMX.BufferedLayout,
FMX.BehaviorManager,
+ FMX.RenderProgress,
- AErenderDataParser,
+ AErenderLauncher.AerenderParser,
+ AErenderLauncher.Rendering,
+ AErenderLauncher.Math,
+ AErenderLauncher.Types,
{$IFDEF MSWINDOWS}
System.Notification, FMX.TaskBar, FMX.Platform.Win, Winapi.Windows, Winapi.TlHelp32;
@@ -78,7 +83,7 @@ TRenderingForm = class(TForm)
totalProgressPercentage: TLabel;
renderingTimer: TTimer;
emptyLabel: TLabel;
- VertScrollBox1: TVertScrollBox;
+ ProgressScrollBox: TVertScrollBox;
AErenderLayout: TLayout;
BlurEffect1: TBlurEffect;
FFMPEGConcatLayout: TLayout;
@@ -91,14 +96,16 @@ TRenderingForm = class(TForm)
StopwatchTimer: TTimer;
projectNameLabel: TLabel;
totalFramesLabel: TLabel;
- procedure ShowLogButtonClick (Sender: TObject);
procedure renderingTimerTimer(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure abortRenderingButtonClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StopwatchTimerTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SetLanguage(LanguageCode: Integer);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure FormHide(Sender: TObject);
+
+ procedure RenderQueueNotify(Sender: TObject; const Item: String; Action: TCollectionNotification);
private
{ Private declarations }
public
@@ -125,15 +132,12 @@ TRenderGroup = record
RenderingForm: TRenderingForm;
VISIBLE: Boolean = False;
- /// We are using TArray<> here, because TList<> generates Access Violation error
- /// when populated with non-existent items. We need a constructor for that, but duh...
- /// Also, we can't use TObjectList<>, since TRenderGroup is a record,
- /// not a class - also no constructor, duh...
- /// So, it's easier to use simple TArray<>, that we'll have to reset when render finishes
- RenderGroups: TArray;
+ RenderProgresses: TObjectList;
CurrentTime: TDateTime;
- { TODO -oLily Stilson -cRendering Unit - macOS : Add NSApplication.requestUserAttention for macOS when Rendering is finished }
+ CurrentlyRendering: Integer = 0;
+
+ { DONE -oLily Stilson -cRendering Unit - macOS : Add NSApplication.requestUserAttention for macOS when Rendering is finished }
implementation
@@ -156,12 +160,51 @@ procedure TRenderingForm.CreateHandle;
end;
{$ENDIF MSWINDOWS}
-function IntToCardinal (I: Integer): Cardinal;
+procedure TRenderingForm.RenderQueueNotify(Sender: TObject; const Item: String; Action: TCollectionNotification);
begin
- if I < 0 then
- Result := 0
- else
- Result := I;
+ /// Stop the timer temporarely
+ renderingTimer.Enabled := False;
+
+ var RegExMatch := TRegEx.Match(Item, '\[(.*?)\]\_\[(.*?)\]\_\[(.*?)\]\_\[(.*?)\]');
+
+ //ProgressScrollBox.BeginUpdate;
+
+ case Action of
+ cnAdded: begin
+ var Progress: TRenderProgress := TRenderProgress.Create(nil);
+ Progress.Parent := ProgressScrollBox;
+ Progress.Align := TAlignLayout.Top;
+ Progress.Margins := TBounds.Create(TRectF.Create(8, 8, 8, 0));
+ Progress.Composition := Format('%s[%s]', [RegExmatch.Groups[2].Value, (RenderQueue.IndexOf(Item) + 1).ToString]);
+ Progress.ST_WaitingForAErender := Language[Settings.Language].RenderingForm.WaitingForAerender;
+ Progress.ST_Rendering := Language[Settings.Language].RenderingForm.Rendering;
+ Progress.ST_FinishedRender := Language[Settings.Language].RenderingForm.RenderingFinished;
+ Progress.ST_RenderError := Language[Settings.Language].RenderingForm.RenderingError;
+ Progress.InFrame := -1;
+ Progress.OutFrame := 1;
+ Progress.Value := -1;
+ Progress.Log.Add('Launched ' + Item + #13#10);
+
+ RenderProgresses.Add(Progress);
+ end;
+ cnRemoved: begin
+ var index: Integer := 0;
+ for var i := 0 to RenderProgresses.Count - 1 do
+ if (RenderProgresses[i].Composition = RegExmatch.Groups[2].Value) and (RenderProgresses[i].Value = RenderProgresses[i].OutFrame) then
+ index := i;
+ RenderProgresses.Delete(index);
+ end;
+ end;
+
+ /// Clear scrollbox for progresses
+ //ProgressScrollBox.DeleteChildren;
+ //Finalize(RenderProgresses);
+ emptyLabel.Visible := RenderQueue.Count = 0;
+
+ //ProgressScrollBox.EndUpdate;
+
+ /// Enable timer back
+ renderingTimer.Enabled := True;
end;
procedure TRenderingForm.SetLanguage(LanguageCode: Integer);
@@ -180,28 +223,23 @@ procedure TRenderingForm.abortRenderingButtonClick(Sender: TObject);
begin
try
begin
- // RU: Уничтожаем процесс After Effects'а
+ AbortRender := True;
+ if (TiledRenderThread <> nil) and (TiledRenderThread.Started) then
+ TiledRenderThread.Terminate;
+ /// Kill After Effects rendering process
{$IFDEF MSWINDOWS}KillProcess('AfterFX.com');{$ENDIF MSWINDOWS}
{$IFDEF MACOS}KillProcess('aerendercore');{$ENDIF MACOS}
- // RU: Сброс состояния на панели задач
+ /// Reset taskbar's progress
{$IFDEF MSWINDOWS}MainTaskBar.TaskBarState := 0;{$ENDIF MSWINDOWS}
- // RU: Очищаем массив с путями к логам
- Finalize(LogFiles);
+ /// Clear RenderQueue
+ RenderQueue.Clear;
- // RU: Уничтожаем созданные в рантайме компоненты
- for var i := 0 to High(RenderGroups) do begin
- FreeAndNil(RenderGroups[i].RenderPanel);
- end;
-
- // RU: Сбрасываем массив с группами прогресса
- Finalize(RenderGroups);
-
- // RU: Отключаем ограничение на запуск рендеринга
+ /// Disable rendering start limitation
isRendering := False;
- // RU: Отключаем таймер и вовзращаем первые значения
+ /// Stop timer and reset progress values
emptyLabel.Visible := True;
emptyLabel.Enabled := True;
renderingTimer.Enabled := False;
@@ -220,27 +258,51 @@ procedure TRenderingForm.abortRenderingButtonClick(Sender: TObject);
procedure TRenderingForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
+ {$IFDEF MSWINDOWS}
VISIBLE := False;
- // RU: При закрытии формы, если рендеринг закончен
- // очистить окно
+ /// If rendering is finished and there is still
+ /// something on the form while closing - clear it
if TotalProgressBar.Value = TotalProgressBar.Max then
begin
abortRenderingButtonClick(Sender);
TotalProgressBar.Value := 0;
{$IFDEF MSWINDOWS}MainTaskBar.TaskBarState := 0;{$ENDIF MSWINDOWS}
end;
+ {$ENDIF}
+end;
+
+procedure TRenderingForm.FormHide(Sender: TObject);
+begin
+ {$IFDEF MACOS} // Workaround
+ // Somehow after update to RAD 10.4.2
+ // form can't get to the OnClose event on macOS
+ VISIBLE := False;
+
+ // RU: При закрытии формы, если рендеринг закончен
+ // очистить окно
+ if Trunc(TotalProgressBar.Value) = Trunc(TotalProgressBar.Max) then begin
+ abortRenderingButtonClick(Sender);
+ TotalProgressBar.Value := 0;
+ end;
+ {$ENDIF}
end;
procedure TRenderingForm.FormCreate(Sender: TObject);
begin
- // RU: Сброс главного прогрессбара до нуля
+ /// Reset Total progressbar
TotalProgressBar.Min := 0;
TotalProgressBar.Max := 1;
TotalProgressBar.Value := 0;
- // RU: Активация плавного скроллинга списка потоков
- VertScrollBox1.AniCalculations.Animation := True;
+ /// Activate smooth scrolling of ScrollBox
+ ProgressScrollBox.AniCalculations.Animation := True;
+
+ /// Create list for storing out progress components
+ RenderProgresses := TObjectList.Create;
+
+ /// Assign event for RenderQueue
+ RenderQueue.OnNotify := RenderQueueNotify;
end;
procedure TRenderingForm.FormShow(Sender: TObject);
@@ -249,116 +311,8 @@ procedure TRenderingForm.FormShow(Sender: TObject);
if MainUnit.RenderWindowSender = MainForm.launchButton then
begin
isRendering := True;
- if Length(LogFiles) = 0 then
- begin
- emptyLabel.Visible := True;
- emptyLabel.Enabled := True;
- end
- else
- begin
- emptyLabel.Visible := False;
- emptyLabel.Enabled := False;
-
- projectNameLabel.Text := ExtractFileName(MainForm.projectPath.Text);
-
- // RU: Этот момент необходимо держать в голове
- // Поскольку мы используем тут динамический массив TArray,
- // то когда мы задаём ему какой-то размер, он будет сохранять
- // все элементы внутри, даже если каждый из них будет FreeAndNil()
- SetLength(RenderGroups, Length(MainUnit.LogFiles));
-
- /// RU: Создание компонентов, демонстрирующих прогресс
- for var i := 0 to High(RenderGroups) do begin
- // RU: Создание фоновой TPanel
- RenderGroups[i].RenderPanel := TPanel.Create(Self);
- RenderGroups[i].RenderPanel.Parent := VertScrollBox1;
- RenderGroups[i].RenderPanel.Margins := TBounds.Create(TRectF.Create(8, 8, 8, 0));
- RenderGroups[i].RenderPanel.Align := TAlignLayout.Top;
- RenderGroups[i].RenderPanel.Height := 48;
- RenderGroups[i].RenderPanel.EnableDragHighlight := True;
-
- // RU: Создание названия композиции
- RenderGroups[i].CompNameLabel := TLabel.Create(Self);
- RenderGroups[i].CompNameLabel.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].CompNameLabel.Align := TAlignLayout.MostLeft;
- RenderGroups[i].CompNameLabel.Margins := TBounds.Create(TRectF.Create(16, 8, 0, 8));
- RenderGroups[i].CompNameLabel.Text := ExtractFileName(MainUnit.LogFiles[i]).Replace(ExtractFileExt(MainUnit.LogFiles[i]), '');
- RenderGroups[i].CompNameLabel.Font.Size := 16;
- RenderGroups[i].CompNameLabel.StyledSettings := [TStyledSetting.Family, TStyledSetting.Style, TStyledSetting.FontColor];
- RenderGroups[i].CompNameLabel.WordWrap := False;
- RenderGroups[i].CompNameLabel.AutoSize := True;
- RenderGroups[i].CompNameLabel.HitTest := False;
-
- // RU: Создание лейбла с кол-вом кадров
- RenderGroups[i].FramesLabel := TLabel.Create(Self);
- RenderGroups[i].FramesLabel.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].FramesLabel.Margins := TBounds.Create(TRectF.Create(8, 0, 16, 0));
- RenderGroups[i].FramesLabel.AutoSize := True;
- RenderGroups[i].FramesLabel.WordWrap := False;
- RenderGroups[i].FramesLabel.Align := TAlignLayout.MostRight;
- RenderGroups[i].FramesLabel.StyledSettings := [TStyledSetting.Family, TStyledSetting.FontColor];
- RenderGroups[i].FramesLabel.Font.Size := 16;
- //RenderGroups[i].FramesLabel.Font.Style := [TFontStyle.fsBold];
- RenderGroups[i].FramesLabel.TextAlign := TTextAlign.Trailing;
- RenderGroups[i].FramesLabel.Text := '...';
- RenderGroups[i].FramesLabel.HitTest := False;
-
- // RU: Создание кнопки отображения логов
- RenderGroups[i].LogButton := TButton.Create(Self);
- RenderGroups[i].LogButton.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].LogButton.Align := TAlignLayout.MostRight;
- RenderGroups[i].LogButton.StyleLookup := 'logbuttonstyle';
- RenderGroups[i].LogButton.Width := 48;
- RenderGroups[i].LogButton.Position.X := 9999;
- RenderGroups[i].LogButton.Tag := i;
- RenderGroups[i].LogButton.OnClick := ShowLogButtonClick;
-
- // RU: Создание надписи над прогрессбаром
- RenderGroups[i].StatusLabel := TLabel.Create(Self);
- RenderGroups[i].StatusLabel.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].StatusLabel.Align := TAlignLayout.Top;
- RenderGroups[i].StatusLabel.Margins := TBounds.Create(TRectF.Create(16, 8, 0, 0));
- RenderGroups[i].StatusLabel.StyledSettings := [TStyledSetting.Family, TStyledSetting.FontColor];
- RenderGroups[i].StatusLabel.Font.Style := [TFontStyle.fsBold];
- RenderGroups[i].StatusLabel.Text := Language[LANG].RenderingForm.WaitingForAerender;
- RenderGroups[i].StatusLabel.HitTest := False;
-
- // RU: Создание прогрессбара
- RenderGroups[i].RenderingProgress := TProgressBar.Create(Self);
- RenderGroups[i].RenderingProgress.Align := TAlignLayout.Client;
- RenderGroups[i].RenderingProgress.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].RenderingProgress.Margins := TBounds.Create(TRectF.Create(16, 4, 0, 16));
- RenderGroups[i].RenderingProgress.Height := 4;
- RenderGroups[i].RenderingProgress.Value := 0;
- RenderGroups[i].RenderingProgress.Max := 1;
- RenderGroups[i].RenderingProgress.StyleLookup := 'progressbarministyle';
- RenderGroups[i].RenderingProgress.HitTest := False;
-
- // RU: Создание "заглушки"
- RenderGroups[i].WaitProgress := TAniIndicator.Create(Self);
- RenderGroups[i].WaitProgress.Align := TAlignLayout.Client;
- RenderGroups[i].WaitProgress.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].WaitProgress.Margins := TBounds.Create(TRectF.Create(16, 4, 0, 16));
- RenderGroups[i].WaitProgress.Height := 4;
- RenderGroups[i].WaitProgress.StyleLookup := 'aniindicatorhorzstyle';
- RenderGroups[i].WaitProgress.Enabled := True;
- RenderGroups[i].WaitProgress.HitTest := False;
-
- // RU: Создание Memo для отображения логов
- RenderGroups[i].LogMemo := TMemo.Create(Self);
- RenderGroups[i].LogMemo.Parent := RenderGroups[i].RenderPanel;
- RenderGroups[i].LogMemo.Align := TAlignLayout.MostBottom;
- RenderGroups[i].LogMemo.Height := 192;
- RenderGroups[i].LogMemo.Visible := False;
- RenderGroups[i].LogMemo.StyledSettings := [TStyledSetting.Style, TStyledSetting.FontColor];
- RenderGroups[i].LogMemo.Font.Family := 'Consolas';
- RenderGroups[i].LogMemo.Font.Size := 12;
- RenderGroups[i].LogMemo.ScrollAnimation := TBehaviorBoolean.True;
- RenderGroups[i].LogMemo.WordWrap := True;
- end;
- end;
- // RU: Запуск таймера рендеринга и секундомера
+ /// Start timer, stopwatch and enable Windows's taskbar progress
renderingTimer.Enabled := True;
CurrentTime := Now;
StopwatchTimer.Enabled := True;
@@ -367,29 +321,26 @@ procedure TRenderingForm.FormShow(Sender: TObject);
end;
procedure TRenderingForm.renderingTimerTimer(Sender: TObject);
-// RU: Нам нужно создать какой-то тип данных, где для
-// каждого потока мы будем читать, хранить и отображать
-// то, что творится в логах.
-// TStringList является тем, где TMemo хранит весь текст,
-// посему он и будет использоваться для хранилища логов внутри программы.
+/// We need some data type for a thread to store,
+/// read and display whatever is happening in logs
type
- TRenderData = record // Непосредственно тип
- LogFile: TStringList; // Сюда считываем лог
- //Data: TStringList; // Не ебу, нахуй это нужно, но почему-то я его тут обозначил. Далее в коде оно нигде не использовалось.
- Stream: TStream; // Поток, даннве из котрого будут передаваться в переменную LogFile
- State: Integer; // Обозначим для состояния рендеринга три цифры: -1 (ошибка), 0 (завершён), 1 (рендерится)
+ TRenderData = record /// The type itself
+ LogFile: TStringList; /// Logs will be stored here
+ //Data: TStringList; /// Have no fucking clue what it's doing here, but for whatever reason I put it here. And never used it anywhere in the code...
+ Stream: TStream; /// Reading thread. Data from here will be put in variable
+ State: Integer; /// Three states for rendering status: -1 (error), 0 (finished), 1 (rendering)
end;
var
Render: TArray;
begin
- var Finished: Integer := 0;
- var Error: Integer := 0;
+ //var Finished: Integer := 0;
+ //var Error: Integer := 0;
var Completed: Integer := 0;
- // RU: Создаём элементы в массиве с данными логов
- SetLength(Render, Length(LogFiles));
+ /// Create an array for logs
+ SetLength(Render, RenderQueue.Count);
-// RU: Пока оставлю это в комментарии. Когда пойму, зачем это - восстановлю
+/// Will be left commented, until I rememeber why I did this
// for var j := 0 to High(Render) do
// begin
// Render[j].Data := TStringList.Create;
@@ -397,118 +348,114 @@ TRenderData = record // Непосредственно тип
// end;
for var i := 0 to High(Render) do begin
- // RU: Создаём хранилище для содержимого логов и устанавливаем ему кодировку
+ /// Create LogFile field and set it's encoding
Render[i].LogFile := TStringList.Create;
Render[i].LogFile.DefaultEncoding := TEncoding.UTF8;
- try
- // RU: Создаём поток, из которого потом перенесём данные в хранилище содержимого логов
- // То есть, фактически, каждый раз файл лога считывается заново,
- // держать в памяти всегда его не получится, да и смысла нет - он постоянно обновляется
- Render[i].Stream := TFileStream.Create(LogFiles[i], fmOpenRead or fmShareDenyNone);
+ if FileExists(RenderQueue[i].Replace('.ext', '.log')) then
try
- Render[i].LogFile.LoadFromStream(Render[i].Stream);
- finally
- Render[i].Stream.Free;
- end;
+ /// Create a stream here, from which we'll be copying data into
+ /// In fact, each time the log is read anew, we won't be able to hold it in memory
+ /// and we don't need to, since it's constantly updating
- // RU: Если количество строк в файле лога оказалось больше, чем в LogMemo у конкретного
- // потока, то нужно добавить эту строку в LogMemo и произвести её парсинг
- if Render[i].LogFile.Count > RenderGroups[i].LogMemo.Lines.Count then begin
- // RU: Добавляем строку и иттератор LogMemo посылаем в самый низ
- RenderGroups[i].LogMemo.Lines.Add(Render[i].LogFile[RenderGroups[i].LogMemo.Lines.Count]);
- RenderGroups[i].LogMemo.GoToTextEnd;
-
- // RU: При создании прогрессбара, мы обозначили его максимум как 1
- // Это поможет нам определить, какой поток уже узнал своё максимальное
- // количество кадров, а какой ещё нет
- // Тут, мы пытаемся получить какую-то базовую информацию о том,
- // что мы сейчас будем рендерить
- if RenderGroups[i].RenderingProgress.Max = 1 then begin
- // RU: Если строка в конце лога содержит 'Duration: ',
- // то мы пытаемся вытащить из неё длительность области рендеринга
- if RenderGroups[i].LogMemo.Lines[RenderGroups[i].LogMemo.Lines.Count - 1].Contains('Duration: ') then
- RenderGroups[i].Duration := ParseAErenderDurationLogString(RenderGroups[i].LogMemo.Lines[RenderGroups[i].LogMemo.Lines.Count - 1]);
-
- // RU: Если строка в конце лога содержит 'Frame Rate: ',
- // то мы пытаемся вытащить из неё частоту кадров композиции
- if RenderGroups[i].LogMemo.Lines[RenderGroups[i].LogMemo.Lines.Count - 1].Contains('Frame Rate: ') then
- RenderGroups[i].FrameRate := ParseAErenderFrameRateLogString (RenderGroups[i].LogMemo.Lines[RenderGroups[i].LogMemo.Lines.Count - 1]);
-
- // RU: Если у нас есть длительность и частота кадров,
- // То нам нужно вычислить конечное значение кадров для прогрессбара
- // И ещё, нужно скрыть WaitProgress
- if (RenderGroups[i].Duration.ToSingleString <> '0:00:00:00') and (RenderGroups[i].FrameRate <> 0) then begin
- RenderGroups[i].RenderingProgress.Max := TimecodeToFrames(RenderGroups[i].Duration, RenderGroups[i].FrameRate);
- RenderGroups[i].WaitProgress.Visible := False;
- RenderGroups[i].WaitProgress.Enabled := False;
- end;
+ Render[i].Stream := TFileStream.Create(RenderQueue[i].Replace('.ext', '.log'), fmOpenRead or fmShareDenyNone);
+ try
+ Render[i].LogFile.LoadFromStream(Render[i].Stream);
+ finally
+ Render[i].Stream.Free;
end;
- end;
- // RU: Подсчитываем общее количество кадров
- // Тип Single, потому что у прогрессбаров значения этого типа
- var TotalFrames: Single := 1;
- for var j := 0 to High(RenderGroups) do
- if RenderGroups[j].RenderingProgress.Max <> 1 then
- TotalFrames := TotalFrames + RenderGroups[j].RenderingProgress.Max;
-
- // RU: Начинаем отображение прогресса, только если у нас известно конечное значение кадров
- if RenderGroups[i].RenderingProgress.Max <> 1 then begin
- // RU: Пробуем парсить последнюю строку лога
- // Пока в строке не появятся нужные данные, функция ParseAErenderFrameLogString
- // будет выплёвывать исключения. Если мы ловим это исключение,
- // то прогрессбару присваиваем ЕГО ЖЕ значение. Потому что, при окончании рендеринга, может быть
- // выкинуто исключение и из-за этого общий прогрессбар обосрётся
- // Таким образом, мы отсеиваем все строки, до момента как aerender начинает показывать прогресс
- try
- var AERP: TAErenderFrameData := ParseAErenderFrameLogString(RenderGroups[i].LogMemo.Lines[RenderGroups[i].LogMemo.Lines.Count - 1]);
- RenderGroups[i].RenderingProgress.Value := AERP.Frame;
- RenderGroups[i].StatusLabel.Text := Language[LANG].RenderingForm.Rendering;
- RenderGroups[i].FramesLabel.Text := Format('%s / %s', [RenderGroups[i].RenderingProgress.Value.ToString, RenderGroups[i].RenderingProgress.Max.ToString]);
- except
- on Exception do
- RenderGroups[i].RenderingProgress.Value := RenderGroups[i].RenderingProgress.Value;
+ /// If the ammount of lines in log file is more than out Memo has, then we
+ /// just need to append this line and parse it
+ if Render[i].LogFile.Count > RenderProgresses[i].Log.Count then begin
+ /// Append the last line to the log and scroll to Memo bottom
+ RenderProgresses[i].Log.Add(Render[i].LogFile[RenderProgresses[i].Log.Count]);
+ RenderProgresses[i].GoToTextEnd;
+
+ /// The TRenderProgress component has it's default max value at 1
+ /// This will help us to determine, which thread already has it's max
+ /// ammount of frames and which not yet.
+ /// Here we will read some basic information of what we're going to render
+ if RenderProgresses[i].OutFrame = 1 then begin
+ /// If log's last line contains 'Duration: ', then we're going to
+ /// parce that string and extract that information into a temporary variable
+ if RenderProgresses[i].Log[RenderProgresses[i].Log.Count - 1].Contains('Duration: ') then
+ RenderProgresses[i].Duration := ParseAErenderDurationLogString(RenderProgresses[i].Log[RenderProgresses[i].Log.Count - 1]);
+
+ /// If log's last line contains 'Frame Rate: ', then we're going to
+ /// parce that string and extract that information into a temporary variable
+ if RenderProgresses[i].Log[RenderProgresses[i].Log.Count - 1].Contains('Frame Rate: ') then
+ RenderProgresses[i].FrameRate := ParseAErenderFrameRateLogString(RenderProgresses[i].Log[RenderProgresses[i].Log.Count - 1]);
+
+ /// if we successfully got Duration and Framerate,
+ /// then we need to calculate max value for our progress bar.
+ ///
+ /// Doing it this way is much more accurate then extracting it with
+ /// RegEx from executable's file name
+ if (RenderProgresses[i].Duration.ToSingleString <> '0:00:00:00') and (RenderProgresses[i].FrameRate <> 0) then begin
+ RenderProgresses[i].OutFrame := TimecodeToFrames(RenderProgresses[i].Duration, RenderProgresses[i].FrameRate);
+ end;
+ end;
end;
- end;
- // RU: Проверяем, закончен рендеринг или нет
- if RenderGroups[i].LogMemo.Text.Contains('Finished composition') then begin
- Render[i].State := 0;
- RenderGroups[i].StatusLabel.Text := Language[LANG].RenderingForm.RenderingFinished;
- RenderGroups[i].RenderingProgress.Value := RenderGroups[i].RenderingProgress.Max;
- end;
- // RU: Проверяем, была ошибка или нет
- if RenderGroups[i].LogMemo.Text.Contains('aerender ERROR') or RenderGroups[i].LogMemo.Text.Contains('aerender Error') then begin
- Render[i].State := -1;
- RenderGroups[i].WaitProgress.Visible := False;
- RenderGroups[i].WaitProgress.Enabled := False;
- RenderGroups[i].StatusLabel.Text := Language[LANG].RenderingForm.RenderingError;
- RenderGroups[i].RenderingProgress.Value := RenderGroups[i].RenderingProgress.Max;
- RenderGroups[i].RenderingProgress.StyleLookup := 'progressbarminierrorstyle'
- end;
+ /// Count total frames from all progresses
+ var TotalFrames: Single := 1;
+ for var j := 0 to RenderProgresses.Count - 1 do
+ if RenderProgresses[j].OutFrame <> 1 then
+ TotalFrames := TotalFrames + RenderProgresses[j].OutFrame;
+
+ /// Start displaying progress only if we know the total ammount of frames
+ if RenderProgresses[i].OutFrame <> 1 then begin
+ /// Try to parce log's last line
+ /// Until we will get some data, the function
+ /// will be throwing exceptions. If we catch this exception, we'll just leave
+ /// progress' value unchanged. This saves us from exceptions at the end of rendering
+ /// Here we just ignoring all the useless for Parser lines
+ try
+ var AERP: TAErenderFrameData := ParseAErenderFrameLogString(RenderProgresses[i].Log[RenderProgresses[i].Log.Count - 1]);
+ RenderProgresses[i].Value := AERP.Frame;
+ //RenderProgresses[i].StatusLabel.Text := Language[LANG].RenderingForm.Rendering;
+ //RenderProgresses[i].FramesLabel.Text := Format('%s / %s', [RenderGroups[i].RenderingProgress.Value.ToString, RenderGroups[i].RenderingProgress.Max.ToString]);
+ except
+ on Exception do
+ RenderProgresses[i].Value := RenderProgresses[i].Value;
+ end;
+ end;
+
+ /// Check if the rendering is finished yet or not
+ if RenderProgresses[i].Log.Text.Contains('Finished composition') then begin
+ Render[i].State := 0;
+ //RenderProgresses[i]..Text := Language[LANG].RenderingForm.RenderingFinished;
+ RenderProgresses[i].Value := RenderProgresses[i].OutFrame;
+ end;
+ /// Check if the rendering finished with an error
+ if RenderProgresses[i].Log.Text.Contains('ERROR:') or RenderProgresses[i].Log.Text.Contains('USAGE:') then begin
+ Render[i].State := -1;
+ RenderProgresses[i].Value := RenderProgresses[i].OutFrame;
+ RenderProgresses[i].IsError := True;
+ end;
- // RU: Общему прогрессбару устанавливаем текущее значение
- if TotalProgressBar.Max <> TotalFrames then begin
- TotalProgressBar.Max := TotalFrames;
- end else begin
- // RU: Подсчитываем общее текущее значение и присваиваем его
- var sum: Single := 0;
- for var j := 0 to High(RenderGroups) do
- if Render[j].State <> -1 then
- sum := sum + RenderGroups[j].RenderingProgress.Value;
-
- TotalProgressBar.Value := sum;
- totalProgressPercentage.Text := Trunc((TotalProgressBar.Value / TotalProgressBar.Max) * 100).ToString + '%';
- {$IFDEF MSWINDOWS}MainTaskBar.TaskBarProgress := Trunc((TotalProgressBar.Value / TotalProgressBar.Max) * 100);{$ENDIF MSWINDOWS}
- if (TotalProgressBar.Max = 0) or (TotalProgressBar.Max = 1) then
- framesLabel.Text := Language[LANG].RenderingForm.WaitingForAerender
- else
- framesLabel.Text := TotalProgressBar.Value.ToString + ' / ' + (TotalProgressBar.Max - 1).ToString;
+ /// Set TotalProgressBar's max value, if it's not updated
+ if TotalProgressBar.Max <> TotalFrames then begin
+ TotalProgressBar.Max := TotalFrames;
+ end else begin
+ /// Count total rendered frames
+ var sum: Single := 0;
+ for var j := 0 to RenderProgresses.Count - 1 do
+ if Render[j].State <> -1 then
+ sum := sum + RenderProgresses[j].Value;
+
+ TotalProgressBar.Value := sum;
+ totalProgressPercentage.Text := Trunc((TotalProgressBar.Value / TotalProgressBar.Max) * 100).ToString + '%';
+ {$IFDEF MSWINDOWS}MainTaskBar.TaskBarProgress := Trunc((TotalProgressBar.Value / TotalProgressBar.Max) * 100);{$ENDIF MSWINDOWS}
+ if (TotalProgressBar.Max = 0) or (TotalProgressBar.Max = 1) then
+ framesLabel.Text := Language[Settings.Language].RenderingForm.WaitingForAerender
+ else
+ framesLabel.Text := TotalProgressBar.Value.ToString + ' / ' + (TotalProgressBar.Max - 1).ToString;
+ end;
+ finally
+ FreeAndNil(Render[i].LogFile); // RU: Уничтожаем контейнер с логом, чтобы не было проблем
end;
- finally
- FreeAndNil(Render[i].LogFile); // RU: Уничтожаем контейнер с логом, чтобы не было проблем
- end;
end;
{for var i := 0 to High(Render) do
@@ -519,57 +466,42 @@ TRenderData = record // Непосредственно тип
if Render[i].State = -1 then
inc (Error);}
- // RU: Подсчитываем, сколько потоков завершили рендеринг
- // Если рендеринг завершился с ошибкой, всё равно учитываем
- // иначе таймер никогда не остановится
- for var i := 0 to High(RenderGroups) do
- if RenderGroups[i].RenderingProgress.Value = RenderGroups[i].RenderingProgress.Max then
- inc (Completed);
-
- // RU: Если количество потоков, завершивших рендеринг совпадает
- // с общим количеством потоков - всё окей, можно останавливать таймер
- if (Completed = Length(LogFiles)) then
- begin
- // RU: Останавливаем секундомер
- StopwatchTimer.Enabled := False;
-
- for var i := 0 to High(RenderGroups) do
- if Render[i].State <> -1 then
- RenderGroups[i].StatusLabel.Text := Language[LANG].RenderingForm.RenderingFinished;
-
- // RU: Полностью очищаем массив с данными логов
- Finalize(Render);
-
- TotalProgressBar.Value := TotalProgressBar.Max;
- totalProgressPercentage.Text := '100%';
-
- {$IFDEF MSWINDOWS}
- FlashWindow(ApplicationHWND, True);
- //if Error = 0 then
- MainTaskBar.TaskBarState := 0;
- {if (Error > 0) and (Error <> Length(LogFiles)) then
- MainTaskBar.TaskBarState := 4;
- if Error = Length(LogFiles) then
- MainTaskBar.TaskBarState := 3;}
- {$ENDIF MSWINDOWS}
-
- {$IFDEF MACOS}
- var Application: NSApplication := TNSApplication.Wrap(TNSApplication.OCClass.sharedApplication);
- Application.requestUserAttention(NSCriticalRequest);
- {$ENDIF MACOS}
-
- renderingTimer.Enabled := False;
- end;
-end;
-
-procedure TRenderingForm.ShowLogButtonClick (Sender: TObject);
-begin
- if RenderGroups[TButton(Sender).Tag].LogMemo.Visible = False then begin
- RenderGroups[TButton(Sender).Tag].LogMemo.Visible := True;
- RenderGroups[TButton(Sender).Tag].RenderPanel.Height := RenderGroups[TButton(Sender).Tag].RenderPanel.Height + 192;
- end else begin
- RenderGroups[TButton(Sender).Tag].LogMemo.Visible := False;
- RenderGroups[TButton(Sender).Tag].RenderPanel.Height := RenderGroups[TButton(Sender).Tag].RenderPanel.Height - 192;
+ /// Count how many threads have already finished
+ /// Count even if it's errored, otherwise timer
+ /// will never stop
+ for var i := 0 to RenderProgresses.Count - 1 do
+ if RenderProgresses[i].Value = RenderProgresses[i].OutFrame then
+ inc(Completed);
+
+ /// If completed threads count == total threads count
+ /// we can safely stop the timer
+ if (Completed = RenderQueue.Count) then begin
+ /// Stop the timer
+ StopwatchTimer.Enabled := False;
+
+ {for var i := 0 to High(RenderGroups) do
+ if Render[i].State <> -1 then
+ RenderGroups[i].StatusLabel.Text := Language[LANG].RenderingForm.RenderingFinished;}
+
+ /// Completely erase our array with logs' data
+ Finalize(Render);
+
+ TotalProgressBar.Value := TotalProgressBar.Max;
+ totalProgressPercentage.Text := '100%';
+
+ {$IFDEF MSWINDOWS}
+ FlashWindow(ApplicationHWND, True);
+ MainTaskBar.TaskBarState := 0;
+ {if (Error > 0) and (Error <> Length(LogFiles)) then
+ MainTaskBar.TaskBarState := 4;
+ if Error = Length(LogFiles) then
+ MainTaskBar.TaskBarState := 3;}
+ {$ELSE MACOS}
+ var Application: NSApplication := TNSApplication.Wrap(TNSApplication.OCClass.sharedApplication);
+ Application.requestUserAttention(NSCriticalRequest);
+ {$ENDIF}
+
+ renderingTimer.Enabled := False;
end;
end;
@@ -578,7 +510,7 @@ procedure TRenderingForm.StopwatchTimerTimer(Sender: TObject);
// This causes on macOS
// [dccosx64 Fatal Error] RenderingUnit.pas(587): F2084 Internal Error: URW1237
// Workaround: Get string that is already in array and pass it through an inline variable
- var TimeElapsed: String := Language[LANG].RenderingForm.TimeElapsed;
+ var TimeElapsed: String := Language[Settings.Language].RenderingForm.TimeElapsed;
timeElapsedLabel.Text := TimeElapsed + FormatDateTime('hh:nn:ss', Now - CurrentTime);
end;
diff --git a/src/SettingsUnit.fmx b/src/SettingsUnit.fmx
index 6dd63b9..491032f 100644
--- a/src/SettingsUnit.fmx
+++ b/src/SettingsUnit.fmx
@@ -5,8 +5,8 @@ object SettingsForm: TSettingsForm
BorderIcons = [biSystemMenu]
BorderStyle = SizeToolWin
Caption = 'AErender Launcher Settings'
- ClientHeight = 438
- ClientWidth = 552
+ ClientHeight = 547
+ ClientWidth = 574
Position = MainFormCenter
Quality = HighQuality
StyleBook = MainForm.AERModernStyle
@@ -20,18 +20,18 @@ object SettingsForm: TSettingsForm
DesignerMasterStyle = 0
object settingsFormLayout: TLayout
Align = Contents
- Size.Width = 552.000000000000000000
- Size.Height = 438.000000000000000000
+ Size.Width = 574.000000000000000000
+ Size.Height = 547.000000000000000000
Size.PlatformDefault = False
TabOrder = 7
object OpenDialog1: TOpenDialog
Filter = 'After Effects Render Engine|aerender.exe'
Left = 24
- Top = 408
+ Top = 488
end
object SettingsToolbar: TToolBar
PopupMenu = hiddenS
- Size.Width = 552.000000000000000000
+ Size.Width = 574.000000000000000000
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
@@ -39,8 +39,8 @@ object SettingsForm: TSettingsForm
Align = Left
AutoSize = True
StyledSettings = [Family, FontColor]
- Margins.Left = 20.000000000000000000
- Position.X = 20.000000000000000000
+ Margins.Left = 16.000000000000000000
+ Position.X = 16.000000000000000000
Size.Width = 208.000000000000000000
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
@@ -65,150 +65,18 @@ object SettingsForm: TSettingsForm
Visible = False
end
end
- object aerenderPathLayout: TLayout
- Align = Top
- Position.Y = 33.000000000000000000
- Size.Width = 552.000000000000000000
- Size.Height = 55.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 2
- object aerenderPathLabel: TLabel
- Align = Top
- StyledSettings = [Family, Size, FontColor]
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 5.000000000000000000
- Size.Width = 542.000000000000000000
- Size.Height = 17.000000000000000000
- Size.PlatformDefault = False
- TextSettings.Font.StyleExt = {00070000000000000004000000}
- TextSettings.HorzAlign = Center
- Text = 'Aerender module path'
- TabOrder = 0
- end
- object aerenderPath: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Client
- TabOrder = 1
- Margins.Left = 5.000000000000000000
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 486.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- end
- object aerenderPathSelect: TButton
- Align = Right
- Hint = 'Choose aerender path'
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 496.000000000000000000
- Position.Y = 27.000000000000000000
- Size.Width = 23.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 3
- Text = '...'
- OnClick = aerenderPathSelectClick
- end
- object refreshAerender: TButton
- Align = Right
- StyledSettings = [Size, FontColor]
- Hint = 'Detect aerender automatically'
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 524.000000000000000000
- Position.Y = 27.000000000000000000
- Size.Width = 23.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 2
- TextSettings.Font.Family = 'Segoe MDL2 Assets'
- OnClick = refreshAerenderClick
- object RefreshIcon: TPath
- Align = Contents
- Data.Path = {
- 81000000000000009A198742A470FD3F02000000B99E92423433634002000000
- 152E9D42295CBF400200000071BDA642C2F51441020000000B57B0428FC24941
- 020000009A99B842EB51844102000000E27ABF42D7A3A841020000006766C642
- 48E1CC410200000071BDCB42C2F5F441020000007C94CF425C8F104202000000
- 4961D3421E85264202000000CE4CD5421E853D4202000000CE4CD54266665542
- 02000000CE4CD542C2F56842020000002005D44247E17B42020000000180D142
- 3D0A874202000000E2FACE42D7239042020000004961CB42D7A3984202000000
- 90C2C6425C8FA04202000000D823C242A470A842020000009A99BC4214AEAF42
- 02000000B91EB642142EB64202000000B99EAF42F5A8BC42020000006766A842
- 3333C242020000000180A042EBD1C642020000007C949842A370CB4202000000
- 7C1490423D0ACF4202000000E2FA86425C8FD1420200000091C27B427B14D442
- 020000000CD76842295CD54202000000B0475542295CD5420200000054B84142
- 295CD54202000000CFCC2E427B14D442020000009C991C425C8FD14202000000
- 69660A423D0ACF4202000000D2CCF241A470CB4202000000BD1ED341EBD1C642
- 020000009E99B3413333C24202000000DCA39641F5A8BC4202000000B7477941
- 142EB64202000000AD70454114AEAF4202000000C11E1941C275A84202000000
- FE51E8405C8FA0420200000079669E40D7A3984202000000BE994940D7239042
- 02000000D0EBF13F5C0F8742020000004448213F00007C420200000080B123BC
- 7A1469420200000080B123BC295C55420200000080B123BCC3F5414202000000
- 4448213F3E0A2F42020000002C7BF43F14AE1C4202000000C9704D40EB510A42
- 02000000C147A140703DF24102000000B770ED400AD7D14102000000E0A31C41
- 1E85B1410200000052E14A417B14944102000000DCA380413D0A734102000000
- 8AEB9B4185EB3D410200000057B8BA41D6A3104102000000D2CCDC41A270D540
- 01000000C31E5541A270D54001000000C31E5541000080B501000000C5F51F42
- 000080B501000000C5F51F42285CD54101000000B0470542285CD54101000000
- B0470542275C334102000000FA28EA41646652410200000056B8CC41AC477941
- 020000006A66B241703D944102000000743D984114AEAB410200000093C28141
- FFFFC54102000000783D5E41285CE34102000000CAF53841EB51004202000000
- E87A1C41B81E104202000000F35108417A14214202000000D2F5E840FFFF3142
- 02000000DCCCD440A370434202000000DCCCD440285C554202000000DCCCD440
- A3706642020000007666E64084EB764202000000C01E0541856B834202000000
- 5AB816410A578B4202000000FE283041AEC7924202000000E97A504152B89942
- 02000000CAF57041B89EA0420200000089EB8B4166E6A6420200000056B8A241
- D7A3AC42020000009E99B941EB51B24202000000D1CCD2413333B74202000000
- 6A66EE418F42BB42020000007D140542CC4CBF42020000004AE11342E17AC242
- 0200000054B8234214AEC44202000000E37A334285EBC642020000007D144442
- 1E05C84202000000B04755421E05C842020000002B5C66421E05C84202000000
- 0CD7764284EBC642020000004961834214AEC44202000000CE4C8B42E17AC242
- 0200000072BD9242CC4CBF420200000016AE99428F42BB42020000007C94A042
- 3333B742020000002ADCA6420A57B242020000009B99AC42D7A3AC4202000000
- AF47B24285EBA64202000000F728B742B89EA042020000005338BB4252B89942
- 020000009042BF42AEC7924202000000A570C24248618B4202000000D8A3C442
- C37583420200000049E1C642F728774202000000E2FAC7425D8F664202000000
- E2FAC7422A5C554202000000E2FAC7422085404202000000EC51C642E27A2C42
- 02000000A5F0C242B91E1942020000005D8FBF420BD70542020000002ADCBA42
- 5E8FE84102000000EDD1B44249E1C84102000000B0C7AE423433A94102000000
- 5E8FA7420CD78D410200000035339F42C5F56C41020000000CD796425E8F3E41
- 020000009B998D42E47A1C41020000003F8A8342733D0641010000009B198742
- 0829FC3F030000009A198742A470FD3F}
- Fill.Color = claWhite
- HitTest = False
- Margins.Left = 4.000000000000000000
- Margins.Top = 4.000000000000000000
- Margins.Right = 4.000000000000000000
- Margins.Bottom = 4.000000000000000000
- Size.Width = 15.000000000000000000
- Size.Height = 15.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- Stroke.Thickness = 0.500000000000000000
- WrapMode = Fit
- end
- end
- end
object BehaviourExpander: TExpander
Align = Top
StyledSettings = [Family, Size, FontColor]
TextSettings.Font.StyleExt = {00070000000000000004000000}
- Margins.Left = 5.000000000000000000
- Margins.Top = 10.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 10.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 268.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 345.000000000000000000
ShowCheck = False
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 130.000000000000000000
Size.PlatformDefault = False
Text = 'Behaviour'
@@ -216,17 +84,16 @@ object SettingsForm: TSettingsForm
ContentSize = '105'
object Layout2: TLayout
Align = Top
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
object HandleCheckBox: TCheckBox
Align = Client
- Hint = 'Not available on macOS now!'
IsChecked = True
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Size.Width = 522.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Size.Width = 542.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
@@ -237,27 +104,39 @@ object SettingsForm: TSettingsForm
object Layout3: TLayout
Align = Top
Position.Y = 32.000000000000000000
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
object delFilesCheckBox: TCheckBox
Align = Client
IsChecked = True
- Margins.Left = 10.000000000000000000
- Margins.Right = 10.000000000000000000
- Size.Width = 522.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Size.Width = 414.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Text = 'Delete temporary files on close'
OnChange = delFilesCheckBoxChange
end
+ object TempFilesLabel: TLabel
+ Align = Right
+ AutoSize = True
+ Enabled = False
+ Margins.Right = 16.000000000000000000
+ Position.X = 430.000000000000000000
+ Size.Width = 112.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'XXXX Temporary files'
+ end
end
object onRenderStartLayout: TLayout
Align = Top
Position.Y = 64.000000000000000000
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
@@ -268,19 +147,19 @@ object SettingsForm: TSettingsForm
'Minimize Launcher'
'Close Launcher')
ItemIndex = 0
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 367.000000000000000000
- Size.Height = 22.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 382.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
OnChange = onRenderStartBoxChange
end
object onRenderStartLabel: TLabel
Align = Left
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
Size.Width = 160.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
@@ -289,111 +168,25 @@ object SettingsForm: TSettingsForm
end
end
end
- object defaultOutputLayout: TLayout
- Align = Top
- Position.Y = 120.000000000000000000
- Size.Width = 552.000000000000000000
- Size.Height = 32.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 4
- object defOutPathLabel: TLabel
- Align = Left
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
- Size.Width = 160.000000000000000000
- Size.Height = 32.000000000000000000
- Size.PlatformDefault = False
- Text = 'Default output directory'
- TabOrder = 0
- end
- object defaultOutputPath: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Client
- TabOrder = 1
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 349.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- end
- object Button3: TButton
- Align = Right
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 524.000000000000000000
- Position.Y = 5.000000000000000000
- Size.Width = 23.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 2
- Text = '...'
- OnClick = Button3Click
- end
- end
- object defaultProjectsLayout: TLayout
- Align = Top
- Position.Y = 88.000000000000000000
- Size.Width = 552.000000000000000000
- Size.Height = 32.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 5
- object defProjPathLabel: TLabel
- Align = Left
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
- Size.Width = 160.000000000000000000
- Size.Height = 32.000000000000000000
- Size.PlatformDefault = False
- Text = 'Default projects directory'
- TabOrder = 0
- end
- object defaultProjectsPath: TEdit
- Touch.InteractiveGestures = [LongTap, DoubleTap]
- Align = Client
- TabOrder = 1
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 349.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- end
- object Button2: TButton
- Align = Right
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Position.X = 524.000000000000000000
- Position.Y = 5.000000000000000000
- Size.Width = 23.000000000000000000
- Size.Height = 22.000000000000000000
- Size.PlatformDefault = False
- TabOrder = 2
- Text = '...'
- OnClick = Button2Click
- end
- end
object UIExpander: TExpander
Align = Top
StyledSettings = [Family, Size, FontColor]
TextSettings.Font.StyleExt = {00070000000000000004000000}
- Margins.Left = 5.000000000000000000
- Margins.Top = 10.000000000000000000
- Margins.Right = 5.000000000000000000
- Position.X = 5.000000000000000000
- Position.Y = 162.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 241.000000000000000000
ShowCheck = False
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 96.000000000000000000
Size.PlatformDefault = False
Text = 'User Interface'
- TabOrder = 6
+ TabOrder = 4
ContentSize = '71'
object styleLayout: TLayout
Align = Top
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
@@ -404,19 +197,19 @@ object SettingsForm: TSettingsForm
'AErender Modern Animated'
'Onyx Blue (Old Style)')
ItemIndex = 0
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 367.000000000000000000
- Size.Height = 22.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 382.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
OnChange = styleBoxChange
end
object styleLabel: TLabel
Align = Left
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
Size.Width = 160.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
@@ -552,7 +345,7 @@ object SettingsForm: TSettingsForm
object langLayout: TLayout
Align = Top
Position.Y = 32.000000000000000000
- Size.Width = 542.000000000000000000
+ Size.Width = 558.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 2
@@ -562,19 +355,19 @@ object SettingsForm: TSettingsForm
'English'
#1056#1091#1089#1089#1082#1080#1081' (Russian)')
ItemIndex = 0
- Margins.Top = 5.000000000000000000
- Margins.Right = 5.000000000000000000
- Margins.Bottom = 5.000000000000000000
- Size.Width = 367.000000000000000000
- Size.Height = 22.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 382.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
OnChange = langBoxChange
end
object langLabel: TLabel
Align = Left
- Margins.Left = 10.000000000000000000
- Position.X = 10.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
Size.Width = 160.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
@@ -596,12 +389,13 @@ object SettingsForm: TSettingsForm
TextSettings.HorzAlign = Center
Text = 'Changes will take effect after restarting the program'
Visible = False
+ TabOrder = 3
end
end
object StatusBar1: TStatusBar
- Position.Y = 406.000000000000000000
+ Position.Y = 515.000000000000000000
ShowSizeGrip = True
- Size.Width = 552.000000000000000000
+ Size.Width = 574.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
@@ -612,10 +406,417 @@ object SettingsForm: TSettingsForm
OnClick = Button1Click
end
end
+ object RenderingExpander: TExpander
+ Align = Top
+ StyledSettings = [Family, Size, FontColor]
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 41.000000000000000000
+ ShowCheck = False
+ Size.Width = 558.000000000000000000
+ Size.Height = 192.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Rendering'
+ TabOrder = 2
+ ContentSize = '167'
+ object aerenderPathLayout: TLayout
+ Align = Top
+ Size.Width = 558.000000000000000000
+ Size.Height = 64.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 0
+ object aerenderPathLabel: TLabel
+ Align = Top
+ StyledSettings = [Family, Size, FontColor]
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 546.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ TextSettings.HorzAlign = Center
+ Text = 'Aerender module path'
+ end
+ object aerenderPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Size.Width = 478.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object aerenderPathSelect: TButton
+ Align = Right
+ Hint = 'Choose aerender path'
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 490.000000000000000000
+ Position.Y = 28.000000000000000000
+ Size.Width = 28.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ Text = '...'
+ OnClick = aerenderPathSelectClick
+ end
+ object refreshAerender: TButton
+ Align = Right
+ StyledSettings = [Size, FontColor]
+ Hint = 'Detect aerender automatically'
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 522.000000000000000000
+ Position.Y = 28.000000000000000000
+ Size.Width = 28.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Family = 'Segoe MDL2 Assets'
+ OnClick = refreshAerenderClick
+ object RefreshIcon: TPath
+ Align = Contents
+ Data.Path = {
+ 81000000000000009A198742A470FD3F02000000B99E92423433634002000000
+ 152E9D42295CBF400200000071BDA642C2F51441020000000B57B0428FC24941
+ 020000009A99B842EB51844102000000E27ABF42D7A3A841020000006766C642
+ 48E1CC410200000071BDCB42C2F5F441020000007C94CF425C8F104202000000
+ 4961D3421E85264202000000CE4CD5421E853D4202000000CE4CD54266665542
+ 02000000CE4CD542C2F56842020000002005D44247E17B42020000000180D142
+ 3D0A874202000000E2FACE42D7239042020000004961CB42D7A3984202000000
+ 90C2C6425C8FA04202000000D823C242A470A842020000009A99BC4214AEAF42
+ 02000000B91EB642142EB64202000000B99EAF42F5A8BC42020000006766A842
+ 3333C242020000000180A042EBD1C642020000007C949842A370CB4202000000
+ 7C1490423D0ACF4202000000E2FA86425C8FD1420200000091C27B427B14D442
+ 020000000CD76842295CD54202000000B0475542295CD5420200000054B84142
+ 295CD54202000000CFCC2E427B14D442020000009C991C425C8FD14202000000
+ 69660A423D0ACF4202000000D2CCF241A470CB4202000000BD1ED341EBD1C642
+ 020000009E99B3413333C24202000000DCA39641F5A8BC4202000000B7477941
+ 142EB64202000000AD70454114AEAF4202000000C11E1941C275A84202000000
+ FE51E8405C8FA0420200000079669E40D7A3984202000000BE994940D7239042
+ 02000000D0EBF13F5C0F8742020000004448213F00007C420200000080B123BC
+ 7A1469420200000080B123BC295C55420200000080B123BCC3F5414202000000
+ 4448213F3E0A2F42020000002C7BF43F14AE1C4202000000C9704D40EB510A42
+ 02000000C147A140703DF24102000000B770ED400AD7D14102000000E0A31C41
+ 1E85B1410200000052E14A417B14944102000000DCA380413D0A734102000000
+ 8AEB9B4185EB3D410200000057B8BA41D6A3104102000000D2CCDC41A270D540
+ 01000000C31E5541A270D54001000000C31E5541000080B501000000C5F51F42
+ 000080B501000000C5F51F42285CD54101000000B0470542285CD54101000000
+ B0470542275C334102000000FA28EA41646652410200000056B8CC41AC477941
+ 020000006A66B241703D944102000000743D984114AEAB410200000093C28141
+ FFFFC54102000000783D5E41285CE34102000000CAF53841EB51004202000000
+ E87A1C41B81E104202000000F35108417A14214202000000D2F5E840FFFF3142
+ 02000000DCCCD440A370434202000000DCCCD440285C554202000000DCCCD440
+ A3706642020000007666E64084EB764202000000C01E0541856B834202000000
+ 5AB816410A578B4202000000FE283041AEC7924202000000E97A504152B89942
+ 02000000CAF57041B89EA0420200000089EB8B4166E6A6420200000056B8A241
+ D7A3AC42020000009E99B941EB51B24202000000D1CCD2413333B74202000000
+ 6A66EE418F42BB42020000007D140542CC4CBF42020000004AE11342E17AC242
+ 0200000054B8234214AEC44202000000E37A334285EBC642020000007D144442
+ 1E05C84202000000B04755421E05C842020000002B5C66421E05C84202000000
+ 0CD7764284EBC642020000004961834214AEC44202000000CE4C8B42E17AC242
+ 0200000072BD9242CC4CBF420200000016AE99428F42BB42020000007C94A042
+ 3333B742020000002ADCA6420A57B242020000009B99AC42D7A3AC4202000000
+ AF47B24285EBA64202000000F728B742B89EA042020000005338BB4252B89942
+ 020000009042BF42AEC7924202000000A570C24248618B4202000000D8A3C442
+ C37583420200000049E1C642F728774202000000E2FAC7425D8F664202000000
+ E2FAC7422A5C554202000000E2FAC7422085404202000000EC51C642E27A2C42
+ 02000000A5F0C242B91E1942020000005D8FBF420BD70542020000002ADCBA42
+ 5E8FE84102000000EDD1B44249E1C84102000000B0C7AE423433A94102000000
+ 5E8FA7420CD78D410200000035339F42C5F56C41020000000CD796425E8F3E41
+ 020000009B998D42E47A1C41020000003F8A8342733D0641010000009B198742
+ 0829FC3F030000009A198742A470FD3F}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Stroke.Thickness = 0.500000000000000000
+ WrapMode = Fit
+ end
+ end
+ end
+ object defaultProjectsLayout: TLayout
+ Align = Top
+ Position.Y = 64.000000000000000000
+ Size.Width = 558.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 1
+ object defProjPathLabel: TLabel
+ Align = Left
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Size.Width = 160.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Default projects directory'
+ end
+ object defaultProjectsPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 354.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object Button2: TButton
+ Align = Right
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 526.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = '...'
+ OnClick = Button2Click
+ end
+ end
+ object defaultOutputLayout: TLayout
+ Align = Top
+ Position.Y = 96.000000000000000000
+ Size.Width = 558.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 3
+ object defOutPathLabel: TLabel
+ Align = Left
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Size.Width = 160.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Default output directory'
+ end
+ object defaultOutputPath: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 354.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object Button3: TButton
+ Align = Right
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Position.X = 526.000000000000000000
+ Position.Y = 4.000000000000000000
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = '...'
+ OnClick = Button3Click
+ end
+ end
+ object GridPanelLayout2: TGridPanelLayout
+ Align = Top
+ Enabled = False
+ Position.Y = 128.000000000000000000
+ Size.Width = 558.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 4
+ ColumnCollection = <
+ item
+ Value = 64.999999999999960000
+ end
+ item
+ Value = 35.000000000000040000
+ end>
+ ControlCollection = <
+ item
+ Column = 0
+ Control = Layout1
+ Row = 0
+ end
+ item
+ Column = 1
+ Control = Layout4
+ Row = 0
+ end>
+ RowCollection = <
+ item
+ Value = 100.000000000000000000
+ end
+ item
+ SizeStyle = Auto
+ end>
+ object Layout1: TLayout
+ Align = Client
+ Size.Width = 362.700012207031300000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ object renderingModeLabel: TLabel
+ Align = Left
+ Anchors = []
+ Margins.Left = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Size.Width = 160.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Multi rendering mode'
+ end
+ object GridPanelLayout3: TGridPanelLayout
+ Align = Client
+ Size.Width = 194.700012207031300000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ ColumnCollection = <
+ item
+ Value = 29.999999999999960000
+ end
+ item
+ Value = 70.000000000000040000
+ end>
+ ControlCollection = <
+ item
+ Column = 0
+ Control = allAtOnce
+ Row = 0
+ end
+ item
+ Column = 1
+ Control = SpeedButton2
+ Row = 0
+ end>
+ RowCollection = <
+ item
+ Value = 100.000000000000000000
+ end
+ item
+ SizeStyle = Auto
+ end>
+ object allAtOnce: TSpeedButton
+ StaysPressed = True
+ Align = Client
+ GroupName = 'renderingMode'
+ Size.Width = 58.410003662109380000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'All at once'
+ end
+ object SpeedButton2: TSpeedButton
+ StaysPressed = True
+ Align = Client
+ GroupName = 'renderingMode'
+ IsPressed = True
+ Size.Width = 136.290008544921900000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Limit simultaneous threads'
+ end
+ end
+ end
+ object Layout4: TLayout
+ Align = Client
+ Size.Width = 195.299987792968800000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ object Label1: TLabel
+ Align = Left
+ Anchors = []
+ AutoSize = True
+ Margins.Left = 10.000000000000000000
+ Position.X = 10.000000000000000000
+ Size.Width = 41.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.WordWrap = False
+ Text = 'Limit to'
+ end
+ object MaxThreadsCountEdit: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Left
+ KeyboardType = DecimalNumberPad
+ Position.X = 59.000000000000000000
+ Position.Y = 6.000000000000000000
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 6.000000000000000000
+ Margins.Bottom = 6.000000000000000000
+ Size.Width = 70.000000000000000000
+ Size.Height = 20.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object Label2: TLabel
+ Align = Left
+ Margins.Left = 8.000000000000000000
+ Position.X = 137.000000000000000000
+ Size.Width = 120.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'threads'
+ end
+ end
+ end
+ object limitRenderLayout: TLayout
+ Align = Top
+ Position.Y = 128.000000000000000000
+ Size.Width = 558.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 2
+ object limitRenderCheckbox: TCheckBox
+ Align = Left
+ IsChecked = True
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Size.Width = 209.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 0
+ Text = 'Limit render threads amount to'
+ OnChange = limitRenderCheckboxChange
+ end
+ object limitRenderEdit: TEdit
+ Touch.InteractiveGestures = [LongTap, DoubleTap]
+ Align = Client
+ TabOrder = 1
+ KeyboardType = NumberPad
+ FilterChar = '1234567890'
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 91.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ KillFocusByReturn = True
+ end
+ object limitRenderSubLabel: TLabel
+ Align = Right
+ Margins.Left = 8.000000000000000000
+ Position.X = 328.000000000000000000
+ Size.Width = 230.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'simultaneous renders'
+ TabOrder = 2
+ end
+ end
+ end
end
object hiddenS: TPopupMenu
- Left = 80
- Top = 408
+ Left = 88
+ Top = 488
object opSettingsLabel: TMenuItem
Enabled = False
Text = 'Optional Settings'
diff --git a/src/SettingsUnit.pas b/src/SettingsUnit.pas
index aba3d39..96cffa7 100644
--- a/src/SettingsUnit.pas
+++ b/src/SettingsUnit.pas
@@ -2,10 +2,10 @@
(* AErender Launcher *)
(* SettingsUnit.pas *)
-(* Lily Stilson // 2019 - 2020 *)
+(* Lily Stilson // 2019 - 2021 *)
(* MIT License *)
(* *)
-(* Copyright (c) 2019 - 2020 Alice Romanets *)
+(* Copyright (c) 2019 - 2021 Alice Romanets *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
(* of this software and associated documentation files (the "Software"), to deal *)
@@ -55,6 +55,9 @@ interface
FMX.Menus,
{$ENDREGION}
+ AErenderLauncher.SysUtils,
+ AErenderLauncher.Types,
+
{$REGION ' Windows Only Libraries '}{$IFDEF MSWINDOWS}
Winapi.ShellAPI, Winapi.Windows, FMX.Platform.Win, Winapi.TlHelp32;
{$ENDIF MSWINDOWS}{$ENDREGION}
@@ -116,6 +119,22 @@ TSettingsForm = class(TForm)
resetLanucher: TMenuItem;
opSettingsLabel: TMenuItem;
separatorItem5: TMenuItem;
+ RenderingExpander: TExpander;
+ renderingModeLabel: TLabel;
+ GridPanelLayout2: TGridPanelLayout;
+ Layout1: TLayout;
+ GridPanelLayout3: TGridPanelLayout;
+ allAtOnce: TSpeedButton;
+ SpeedButton2: TSpeedButton;
+ Layout4: TLayout;
+ Label1: TLabel;
+ MaxThreadsCountEdit: TEdit;
+ Label2: TLabel;
+ TempFilesLabel: TLabel;
+ limitRenderLayout: TLayout;
+ limitRenderCheckbox: TCheckBox;
+ limitRenderEdit: TEdit;
+ limitRenderSubLabel: TLabel;
procedure langBoxChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure aerenderPathSelectClick(Sender: TObject);
@@ -138,11 +157,13 @@ TSettingsForm = class(TForm)
procedure SetLanguage(LanguageCode: Integer);
procedure openConfigClick(Sender: TObject);
procedure resetLanucherClick(Sender: TObject);
+ procedure limitRenderCheckboxChange(Sender: TObject);
private
{ Private declarations }
- {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
+
public
{ Public declarations }
+ {$IFDEF MSWINDOWS}procedure CreateHandle; override;{$ENDIF MSWINDOWS}
end;
procedure ChangeDPI(DPI: Single);
@@ -264,7 +285,7 @@ procedure TSettingsForm.SetLanguage(LanguageCode: Integer);
Language[LanguageCode].SettingsForm.MinimizeLauncher,
Language[LanguageCode].SettingsForm.CloseLauncher
]);
- onRenderStartBox.ItemIndex := ONRENDERSTART;
+ onRenderStartBox.ItemIndex := Settings.OnRenderStart;
end;
@@ -304,7 +325,7 @@ procedure TSettingsForm.aerenderPathSelectClick(Sender: TObject);
//AERPATH := OpenDialog1.FileName;
end;
{$ENDIF MSWINDOWS}
- AERPATH := aerenderPath.Text;
+ Settings.AErenderPath := aerenderPath.Text;
end;
procedure TSettingsForm.Button1Click(Sender: TObject);
@@ -389,7 +410,7 @@ procedure TSettingsForm.Button3Click(Sender: TObject);
procedure TSettingsForm.delFilesCheckBoxChange(Sender: TObject);
begin
- MainUnit.DelTempFiles := BoolToStr(delFilesCheckBox.IsChecked, True);
+ Settings.DeleteTemporary := delFilesCheckBox.IsChecked;
end;
procedure TSettingsForm.dpi100Change(Sender: TObject);
@@ -420,26 +441,31 @@ procedure TSettingsForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := True;
SettingsForm.Close;
- AERPATH := aerenderPath.Text;
- LANG := langBox.ItemIndex;
- DEFPRGPATH := defaultProjectsPath.Text;
- DEFOUTPATH := defaultOutputPath.Text;
- ONRENDERSTART := onRenderStartBox.ItemIndex;
+ Settings.AErenderPath := aerenderPath.Text;
+ Settings.Language := langBox.ItemIndex;
+ Settings.DefaultProjectPath := defaultProjectsPath.Text;
+ Settings.DefaultOutputPath := defaultOutputPath.Text;
+ Settings.OnRenderStart := onRenderStartBox.ItemIndex;
end;
procedure TSettingsForm.FormCreate(Sender: TObject);
{var
LangFiles: TArray;}
begin
- try
- if AERPATH.IsEmpty then
- AERPATH := DetectAerender + {$IFDEF MSWINDOWS}'\Support Files\aerender.exe'{$ENDIF MSWINDOWS}
- {$IFDEF MACOS}'/aerender'{$ENDIF MACOS};
- except
- on Exception do
- AERPATH := '';
- end;
- {$IFDEF MSWINDOWS}OpenDialog1.InitialDir := 'C:\Program Files\Adobe';{$ENDIF MSWINDOWS}
+ var AErenderDetectionThread: TThread := TThread.CreateAnonymousThread(procedure begin
+ try
+ if Settings.AErenderPath.IsEmpty then
+ Settings.AErenderPath := DetectAerender + {$IFDEF MSWINDOWS}'\Support Files\aerender.exe'{$ENDIF MSWINDOWS}
+ {$IFDEF MACOS}'/aerender'{$ENDIF MACOS};
+ except
+ on Exception do
+ Settings.AErenderPath := '';
+ end;
+ {$IFDEF MSWINDOWS}OpenDialog1.InitialDir := 'C:\Program Files\Adobe';{$ENDIF MSWINDOWS}
+ limitRenderEdit.Text := (GetPlatformThreadsCount / 2).ToString;
+ end);
+
+ AErenderDetectionThread.Start;
end;
procedure TSettingsForm.FormKeyDown(Sender: TObject; var Key: Word;
@@ -454,13 +480,13 @@ procedure TSettingsForm.FormKeyDown(Sender: TObject; var Key: Word;
procedure TSettingsForm.FormShow(Sender: TObject);
begin
- aerenderPath.Text := AERPATH;
- defaultProjectsPath.Text := DEFPRGPATH;
- defaultOutputPath.Text := DEFOUTPATH;
- HandleCheckBox.IsChecked := StrToBool(AERH);
- delFilesCheckBox.IsChecked := StrToBool(DelTempFiles);
- langBox.ItemIndex := LANG;
- onRenderStartBox.ItemIndex := ONRENDERSTART;
+ aerenderPath.Text := Settings.AErenderPath;
+ defaultProjectsPath.Text := Settings.DefaultProjectPath;
+ defaultOutputPath.Text := Settings.DefaultOutputPath;
+ HandleCheckBox.IsChecked := Settings.AErenderHandle;
+ delFilesCheckBox.IsChecked := Settings.AErenderHandle;
+ langBox.ItemIndex := Settings.Language;
+ onRenderStartBox.ItemIndex := Settings.OnRenderStart;
{$IFDEF MSWINDOWS}
aerenderPath.TextPrompt := 'C:\Program Files\Adobe\Adobe After Effects CC\Support Files\aerender.exe';
OpenDialog1.Filter := 'After Effects Render Engine|aerender.exe';
@@ -469,20 +495,18 @@ procedure TSettingsForm.FormShow(Sender: TObject);
aerenderPath.TextPrompt := '/Applications/Adobe After Effects CC/aerender';
OpenDialog1.Filter := 'After Effects Render Engine|aerender';
{$ENDIF MACOS}
+ TempFilesLabel.Text := Format('%d %s', [GetTempFilesCount, 'temporary files']);
end;
procedure TSettingsForm.HandleCheckBoxChange(Sender: TObject);
begin
- if HandleCheckBox.IsChecked then
- begin
- AERH := 'True';
- RenderingForm.emptyLabel.Text := Language[LANG].RenderingForm.QueueIsEmpty;
- end
- else
- begin
- AERH := 'False';
- RenderingForm.emptyLabel.Text := Language[LANG].RenderingForm.HandleDisabled;
- end;
+ if HandleCheckBox.IsChecked then begin
+ Settings.AErenderHandle := True;
+ RenderingForm.emptyLabel.Text := Language[Settings.Language].RenderingForm.QueueIsEmpty;
+ end else begin
+ Settings.AErenderHandle := False;
+ RenderingForm.emptyLabel.Text := Language[Settings.Language].RenderingForm.HandleDisabled;
+ end;
end;
procedure TSettingsForm.langBoxChange(Sender: TObject);
@@ -491,13 +515,18 @@ procedure TSettingsForm.langBoxChange(Sender: TObject);
/// will be invoked by the OnShow event of the form
if (not langChangeLabel.Visible) and (langBox.IsFocused) then begin
UIExpander.Height := 112;
- LANG := langBox.ItemIndex;
- langChangeLabel.Text := Language[LANG].SettingsForm.LangChange;
+ Settings.Language := langBox.ItemIndex;
+ langChangeLabel.Text := Language[Settings.Language].SettingsForm.LangChange;
langChangeLabel.Visible := True;
end;
//MainUnit.ChangeLanguage(langBox.ItemIndex);
end;
+procedure TSettingsForm.limitRenderCheckboxChange(Sender: TObject);
+begin
+ limitRenderEdit.Enabled := limitRenderCheckbox.IsChecked;
+end;
+
procedure TSettingsForm.onRenderStartBoxChange(Sender: TObject);
begin
//ONRENDERSTART := onRenderStartBox.ItemIndex;
@@ -509,7 +538,7 @@ procedure TSettingsForm.refreshAerenderClick(Sender: TObject);
aerenderPath.Text := DetectAerender + {$IFDEF MSWINDOWS}'\Support Files\aerender.exe'{$ENDIF MSWINDOWS} {$IFDEF MACOS}'/aerender'{$ENDIF MACOS};
except
on E: Exception do begin
- TDialogServiceSync.MessageDialog((Language[LANG].Errors.aerenderUndetectable + #13#10 + E.ToString()), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0)
+ TDialogServiceSync.MessageDialog((Language[Settings.Language].Errors.aerenderUndetectable + #13#10 + E.ToString()), TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0)
end;
end;
end;
@@ -529,7 +558,7 @@ procedure TSettingsForm.resetLanucherClick(Sender: TObject);
if (TDialogServiceSync.MessageDialog(('Launcher configuration will be renewed. This will delete all your setting and output modules. Application will be restarted'
+ #13#10 + 'This action is irreversible! Proceed?'), TMsgDlgType.mtWarning, mbOKCancel, TMsgDlgBtn.mbOK, 0) = 1) then
begin
- InitConfiguration(APPFOLDER + 'AErenderConfiguration.xml');
+ Settings.ResetAndSave(APPFOLDER + 'AErenderConfiguration.xml');
{$IFDEF MSWINDOWS}ShellExecute(0, 'OPEN', PChar(ParamStr(0)), '', '', SW_SHOWNORMAL);{$ENDIF MSWINDOWS}
{$IFDEF MACOS}_system(PAnsiChar('open "' + AnsiString(ParamStr(0)) + '" &'));{$ENDIF MACOS}
Halt;
@@ -540,7 +569,7 @@ procedure TSettingsForm.styleBoxChange(Sender: TObject);
begin
case styleBox.ItemIndex of
0:begin
- STYLE := 0;
+ Settings.Style := 0;
MainForm.SettingsIcon.Fill.Color := $FFFFFFFF;
MainForm.InfoIcon.Fill.Color := $FFFFFFFF;
@@ -561,7 +590,7 @@ procedure TSettingsForm.styleBoxChange(Sender: TObject);
OutputModuleEditorForm.StyleBook := MainForm.AERModernStyle;
end;
1:begin
- STYLE := 1;
+ Settings.Style := 1;
MainForm.SettingsIcon.Fill.Color := $FFFFFFFF;
MainForm.InfoIcon.Fill.Color := $FFFFFFFF;
@@ -582,7 +611,7 @@ procedure TSettingsForm.styleBoxChange(Sender: TObject);
OutputModuleEditorForm.StyleBook := MainForm.AERModernAnimatedStyle;
end;
2:begin
- STYLE := 2;
+ Settings.Style := 2;
MainForm.SettingsIcon.Fill.Color := $FF000000;
MainForm.InfoIcon.Fill.Color := $FF000000;
diff --git a/src/SplashScreenUnit.fmx b/src/SplashScreenUnit.fmx
index 7194374..393d8b8 100644
--- a/src/SplashScreenUnit.fmx
+++ b/src/SplashScreenUnit.fmx
@@ -65,150 +65,150 @@ object SplashScreenForm: TSplashScreenForm
PNG = {
89504E470D0A1A0A0000000D4948445200000080000000800806000000C33E61
CB000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 11D749444154785EED9D097415559AC72F84EC7B48C2128210C84242C8026421
- 2C0D08822DAE2D228BDDEAD0226833CDB881DAF6E0443DDA760FA3D8D0B68328
- 03B48E6D0B4454441C810EB2648F842490B08404921092909584CCFD57AAC27B
- AFEA55D5CBC2AB4ADDDF39DF79756FBD9043BE7FDDEF7EB7EE3280F40CE1E7F1
- 39909A83C427C07DC118CA74981868A77643E253B82F7CDA4C771D22385370F2
- 206ACE26E6C41BEE0962107E1713813CA64E159C0D6BE5ADC5C4DAA8998AC166
- 21D8EA0CE1FBA64E77A5E64ECD73FAED8B437E36F791D97E01C1112EAEEEFE6E
- AEAEBEED0EEEBE1DADADB8CFB091014E4E0D0EED0D358D4D4D35CD4D0D55572A
- CF177CFFCD47FB7FF876FB197ABB9E5A03B5266AA66200AA85608B00F05D181C
- EF42CD839AD7B4D98BC3E7DDB3E2C1A0611129DEFE01A3681DA38FA9ADAA2C2D
- 2B2F38FCD5179B3E3DB87FFB295A5547ED1AB5666A1082EAD640AD00F03D34E3
- 68D6E1789F88F129A31E5DF9F68A3123421638780638D23AC62DA6BDBEF27AD1
- D9A2DD5B373FB7A920EF7029ADAAA1865601A1C2B48F60153502109E7A34F75E
- 8E8E8E816B5FDDFD445468CA32273F0FD6B46B80D62BD71AF28B0E7FFCFACB0B
- 365FBF7EFD32AD428B2084055911280940703EE2BC6F5050F8E8175277A58EB8
- 2D6C0A6E32B4C5C5F385875F5B7BF74B6565A74A6811AD01FA07B222901380A9
- F307A7CC5A14BBFCC90D7FF4F60F548CF32D2DCD24E7D8519275F408B95C7E91
- D4545771D6780D618AA18487A717F1F5F7273E7E83C99061C3496CD214121D3F
- 893839A31196A7B6EA72E9A67756AD39F2C3FF66D16235355911581300EAD1D3
- EF74FECC87E29F7AEE830F5C5CDC7D70D31A2773B2C89E4F76909CE347C9F556
- 8421466FE1ECEC42264C4E240B1E7A98844545F3B5D2D08CA1E6DDB71EFF97C3
- 07FE96418B820890218844202500D4C1D0D3F7A3CD7E68EA3B3F6CF1F60DBC0D
- 37A5B8505A42B6BFFF6792917E98AF61F42593A7CE200F2F5F4186078FE46BC4
- A02578F15FA73F46C341112D5EA1860C01023013819400D0DB47AFDE9B76F882
- FFF441EE3B41C1E1C9DC1D0B3A3A3AC8EE9DFF4376FC7533BD46A79371AB1838
- 702059FAE45364FEFD0BC98001526E24E45C4941FA334F4C789A760CCFD3622D
- B5EBD4CC1C8566DE14FC4BA873A316B82E75CFD3E15149F7E0862568E237BDF5
- 1A49FB74272D59ED6330FA083C7CD9C77E24572A2F93988424E2E060E94AFA04
- FBFA078F0A8D1F7070FF76F4074CC708BAC0D36E0A0480A7DF2B747CF29871F1
- 539770B516C0F9A9CFAE2607F77DCDD730ECC581BD7BC81B2FFC1B696BC3C32D
- 26266CC6E2D0718921F4D28B1A7C6BD65C98CA0637D0EBE79EFE352F6E7F3668
- 78E878DC3005CAFBF39BA924E3C83FF91A86BDA9AC2827B557AE90F8E4145138
- 707075720A1A19E1F1DDDE2DE9B4D848CDAC15306D0184E6DF2369FA03E32246
- 47CCE76A2DD8B5731B39F4ED377C89A115F6A7ED225FFFE333BE644EF8A8F03B
- E1537A89515CF8B84B2596210043BD9E77DEBBEA1752C3BBE74BCE909D7FFD0B
- 5F62688D8FDFFB2F525176812FDD04BE9C77F7AA07E8A52735F8B80B4100C2D3
- 8FD4CF2B38383209959620D563BD7DEDD2DEDE4EFEF6C166BE644E7008E753F4
- 03E0E3AE56402480E419BF08F5F11F12CCD59AF0537626C964715FF3A47FFF1D
- 397DEA245FBA899FEF90910953EF0FA597920200DCB0EF8CDB97FDACB3684EDA
- 273BF82B86D6E94CCDC5CC9CF7C80CFA81D15DF89AC3B40540A54BE0D0E030AE
- C684E6A6266E7897A10F328FA44BA685014346C2B76801E06B5108E004E0EAEA
- 3598AB31811BDBBF2E9D6732B44753630339998DB11F735C3A7D6B5500880B8E
- CEEEAEA2173E5947914232F444E68F629F7938BBC1B7C8EE24FB005C2BE0ECEA
- E9DD59BC496545057FC5D00B523E73F4F08000BA9E7E602A005C0F7273F6C448
- A019355595FC15432FD4548B7DE6E6C2F91602E8F2BB6908104C04267330F485
- 8CCFCC7C6DDA0200490134B0993CBAA3A11EB3C62531F3B1A50018068309C0E0
- 08CD015E1004508BFAFC4087E825FFA25929FC953618353694F80EF6E74BF214
- E6E71A3284B9B8BA920FD3BEE54B37B96FE6803BE8473E35F4125B7527800103
- 06920FBFDCC74D9254C3F1C307C91F5E7E812F1907B502D05D08F0F6F355ED7C
- 103339D1A6EF1B0DDD092060C850FE4A1D8E4E4E24322E9E2F312CD19D00FC6D
- 1400C054298634BA1340D048ABCB13AC3231698AD5A9D346477702C0EA185BF1
- 0B0824C1A3C7F0258629BA1200D6CC858E8BE44BB6119FCCD6B34AA12B014C98
- 9CC0A58152343562C6B375583F401A5D0920364172AE2A475EC63172EE4C315F
- 12133A2E8A787A8BDE741B1EDD08004F7E6C82E412458E5379B9243F138B61A5
- 412750EEE78D8A6E04303A2C8C78F9585F9D7E2A2F87E4659EE04BD2B0302046
- 3702907B7AB156B1A4B09014E464C9AE5B88A17D088741980FC110D08F0012AD
- C77FCC83C72C58BCF48110ACE1E6EE41C2C7CB6FAE6034742100A5F40FCDBF80
- 621848B26F181834C8910B6543470493B1119164C2A40432383090BF7BEBD185
- 00E4D23F800EA040BE06FA01E870C2A9C85AEE5EB484AC5AFB327963F316B2F5
- CB6FC9B66FBE277FF97B1AF9CF8F7692FF78EF7DB2EECD3F9195CFBFC4FFE4AD
- 471702904BFF40A18900D01A608D9C35B0ADCAD0A0117CA9F740DF627CFC24F2
- CB55ABC9866D9F928D3B3F272FBCF13659FCEB9564DA9C79645468187176C1A2
- 1C31F6EC97685E009DE99F7501949D2D25D7EAB12D5E2758C5547C12AFBBAD13
- 97D43BA382EE9E9E2465F65CB2FAE5F5E4FDCFD3C84B7FD840E63FB090040E1B
- C67F43FB685E009DE99F2F5F1263DAFC0B2886815E10C0ECBBEEA14EFF923CFD
- E22B2479E66CAE83A947342F00A5C19B53F9373B80027203422032268EB8BA89
- 963FD844485838B75193DED1BE0064D23F909F217EDA0B7FCA935DCB88981B3D
- 71325FEA1E0835FD014D0B4029FDABB8709E545DBEC4976E8281A14293D4508A
- 9E66034A2F9FF482A605A094FEE5CAC47AA5301097982CFB6F2BD1DCD47B02B8
- 5456C65FDD7A342D00A5F42FEFC431FE4A8CD28090B7AF1F17C7BB8B9A1600C3
- D21768967270DF5764EBC60DE4F7AB5792D54B1792950BEF25CBEFBB93FCEAE7
- B79325736770FB2DDA0BCD0A4029FDC37675724F3986875B9AE5E3744FC2C00D
- 99B10681E3870F91671E5D4236BEFE2AD9FBD927A420379B5CBA5846AE545592
- FADA5AAE1FD1DED6C6FD5FEC856605A094FE95149E32CBFF2DC11FB620279B2F
- 49D35BE3017A46B302504AFFF2328EF357D6510A0308016A5718F557B42B0085
- F42F578500940684405C92B127896852004AE91F727CD33780D6282D2E525C17
- 68EFB783F6469302504AFF90E3B7B6E0481C796EDCB8414E6667F22569A2274E
- E2560F19154D0A4029FDCB9549FF2C51EA07E00D1D86868D8AE604A094FE81DC
- 13CAF15FE0A72CF9012160E4B9829A5B1E8E9EF96B9BFE9B2F4973E29F8768F3
- AE9C8703086A52CA34BE24CDE5F272B27AE98336E5E333E7DF459E78762D5F92
- E6D8A11FC8DBBF93FF4E5FA1DBE5E1B189CAB9F9C42953B97373D49892F301DE
- DF7767CD617F408302906FFEFB0AA386014D09A0276BFF7A8A514705352500A5
- F4AF2F091F3F8113A0D1D09400947AFF7D0966F7603B19A3A11901A849FFFA1A
- 238601CD08607468A8ECDBBF5B013AA052E7EFF56734330E70FFD25F91858F2D
- E74B62EAEB6AC937FFF83B5FEA1E773DF4B0E28E61BF5FFD2429C8557ECFD05F
- C601342380F5EF6E266191A2630ABBC021951B5F5FCF97BAC7F3AFBDA5D8CCEF
- DAB18D3B1C4B093610D48BA849FFB001444FC151AB4A18AD1FA00901A849FF72
- 25A67FDB8A9A738F8247879080A1FA59D9D353342100A5DEFFC57367B943927B
- 4AB99569E49618A915B0BB0054BDFD5331FB470DC289DB4AF4C6D231BD607701
- A849FFD4CCFF538B9A301015379138BB18637F61BB0B4069F227E6D6AB79A7AF
- 168849E9F85B4747476EA9B711B0BF0014DEFE9D2E28E8D5FDFE71944AF149F1
- D1AA9618250CD855005CFA1719C597A4B165FA975AD48401BC1E36C2FEC27615
- 80BAF4AFF705A0A62388F502B78DC559CBFD1BBB0A40A9F78F99BF45F9797CA9
- F7385DF01377BCAA12F12A6627E91DBB09404DFA773227AB4FCE2CC61E426A32
- 0B23CC12B29B00D4A47FB6CCFEB595EC63CAFD803111E3B855C4FD19BB0940CD
- BEBD79997D27809CE3CAFD006E7F613BCD51BC55D84D0063155EFE9C3D5D4CCE
- 165BDFFDBBA7602A388E945362DC8458FECA9CD6D656FECA3AD8A944EBD8ED75
- 30366972F7F0E44B626AAFD6F4F91F107B05F9FAE1487DEB6009BAD47E40E8C3
- C42725CBEEF187790575F4FF610FFAEDB9810C75F4DB730319BD0B1380C16102
- 30384C00068709C0E03001181C260083C304607098000C0E1380C1B11480E426
- 397A3D0DC3C8E0381B2B98F95810002AADEE90E4EB6FECED54F588AF9FACCFBA
- FC6DD902B437B6D48BF64137FA7EBA7AC467B0F82D676333E75BB3EDD54C0580
- C9F2ED0D8D75A22DB8F5740A16A313A9F58D2D4DF5B5F40302E85A18611A0250
- D976FD5AD355AEC60435B37718DA426ABE657363237CDB460DBE360B01284019
- AD4DCDF5A2190C38DE14AB6518FA00936D2263E3F9D24D9A1A6BE15BCCB281AF
- 450280325A2E5D3C739AAB3101930BA2A90818FA20667292E4035B5E5602DF62
- 976DF8DA4C000095CD07BEDE7AB0B368CECF1F5CC45F31B48E355F7DF7D587F0
- 2DE6B7C1D71C9621A0E978FAEED33555E517B95A13A26893A2348F9F617F12A6
- CD905C6E57555D5E96F163DA197A09014886004E00D4EA4A4A7224E763E32064
- 23AC97D32BD8EB70D1E34FF02573CE1571FBE623C36BA62612004025E2436DDA
- A71BF65CADAAEC6A260446868C210F3DF66BBEC4D01A7840874B6C7A0D5FA67D
- F1EE6E7A893450100087A900A008ACC3BA96716CEFC9D273B907B85A0BEE59BC
- 8CA4CC9AC397185A61FADCF956637F6949D6818C237BB1261EEBECE163EEE907
- 5202C0AAC9EA2DEFFCF6E3AA965AD1847884006C8F161615CDD730EC4D44F404
- B27CCD7392E1193EDCF2DE331FD3CB2BD4E0DBAE0C00586E8BD9F52FD45EBDD4
- 113626D677E4A8F1A2CDFBB0182265F61C7299F615CF97A05FC1B017D3E6DC41
- 7EFB4AAAD5738F320FEEFA6CEF171BF7D2CB726A104057FC079602C08DAE9B47
- 0FED3E9F90BC20DA67F0D0A17C551710017A9CF8C56A8E6763F42E5899B478F9
- 0AB274C5535657279D2ECECE7AF5F93BDEEEE8E8384F8B1805441FCF6C7F1C6B
- 1BE37243851D1DED1D27D2F7144E9DB5688AAB9BF8FD229A9C88E8184E085597
- 2A4845D905FE0EA32FC136766BFE3D95FBBB5BCBCA2E55965D5CBF66D6EF1A1A
- 6AB1C0B28A9AF0F49B21B7333244D0DED858D776AE24F74CE2D47BA73B3A3A3B
- 77DE32074BA8A7DE3E9744C6C4737BFA420C38B28DD17B60642F363199C6FAE7
- C97D4B1EA17F73EB4BEB9B1AEBEB37A42E7EE54C7116CECEADA0564FCD2CF60B
- C825F510071C8EDF343C267E4EC26FD67EB8CECF7FF870DC94038B29B10D4BD6
- D174525951416AAAAB484D5515696CE8BDCD9EFA339880833918780D1F40A36F
- 5CE214EE7D0C86E495C093BFE9CD4753B38EEFC3DE3A18D0C3F83F9A7ED1D30F
- E404807BC812B0619E0FB5E183034786AD5BFFC57321E1B11368D966EC794AB6
- 9EE8EE605B49515676EADA056F55575F28A445381F711F797FD7DB3F4B947E13
- EE0B2D8137B54007078711BF59B7ED9789F1F3EE72F6F131C66E8A1AA7E5EAD5
- E6A327F6EEDEF0FAB28FDADBDBD1E1C3CA5F0CFA084FBED5274F8DD484960022
- C0E440EC993264C4E8A8D0C79FFCE3E2E8B8D8E90E8302E5FA128C3EA2BDED72
- 7B7646C6FF6DD9F4CC8E0B25F945B40A1B21575343874FE8F1CB36BB6ADB1A7C
- 0F8664134F3D4E57821002E226CE8D987FDF53778E0A8F8F0DF00F12A58B8CDE
- A7B2AAACA2F45446D69ECF367C9993B9BF0055D4E07874F6D0E4E39D3F1CAF18
- 73D50A40002D019E7608013D12A486080DE8287AC74DBE2364DA9C65C941C3C6
- 8E76F3F2F271F7F0F56A7777F5F077F656EEBD30446014CFA1A1E95AC3B59ABA
- C6BABAAB65E5C525DF7FBD353DE7C43E8CBEA18947070F711EBD6B8CDA0A933D
- 54A760B60A0008AD01461F30EB002D021CEC460D21029F282364E0BE03193810
- DF8578BAF3FB8C089EDC1B349746EA068762881E4D3A9C8C899D70383E51C613
- 8FFB429AA7F8D49BD213870842408B0083B3D132C070DDE9FC4EC733E7DB4EA7
- 083A4D10010C4F390CD7A8173A7936395EA0379C22080126385B30C09CDF7D04
- 1100410C82094EEF96E3190C0683C16030180C863121E4FF0184240A537FCB10
- A70000000049454E44AE426082}
+ 11D649444154785EED9D097415559AC72F84907D25094B0886250B84AC4016C2
+ D28020D8E2DA22B2D8AD0E2D8236D38C1BA86D0F4ED4A36DF7308A0D6D3B8832
+ 40EBD8B6404445C411E8204BF64808818425242109210959E191B9FF4A5578EF
+ 55BDAA7A597855A9FB3BE73BAFEEAD1772C8F7AFFBDDEFD65DFA91EE21FC3C3E
+ FB537392F804B82F184399763303266A37243E85FBC2A7DD74D521823305270F
+ A0E662660379C33D410CC2EF622290C7DCA982B3616DBCB59AD9756AE662B05B
+ 08F63A43F8BEB9D3DDA87950F39A76FBA2513F9BF3C82CFFC0904857378F0077
+ 37373F9393879FA9A505F71976E2E4EADAE8646AAC6D6A6EAE6D696EACBE5C75
+ BEF0FB6F3EDAF7C3B7DBCED0DB0DD41AA93553331703502D047B0480EFC2E078
+ 576A9ED4BCA7CE5A1431F79EE50F060F8D4CF509080CA5758C5EA6AEBAAAB4AC
+ BCF0D0575F6CFCF4C0BE6D2769553DB5ABD45AA84108AA5B03B502C0F7D08CA3
+ 5987E37D23C7A7863EBAE2EDE5A38787CE77F21AEC4CEB18B7185343E5B55367
+ 4FEFDAB2E9B98D85F9874A69552D35B40A0815E67D049BA81180F0D4A3B9F776
+ 76760E5AF3EAAE27A2C252970EF4F7644DBB0668BB7CB5B1E0D4A18F5F7F79FE
+ A66BD7AE5DA255681184B0202B02250108CE479CF70B0E8E18F942DACEB4E1B7
+ 854FC64D86B6B878BEE8D06B6BEE7EA9ACEC64092DA23540FF40560472023077
+ FEA0D4990BE3963DB9FE8F3E01418A71BEB5B585E41E3D42B28F1C2697CA2F92
+ DA9A6ACE9AAE224C3194F0F4F2267E0101C4D77F10193C7418894B9E4CA21326
+ 92812E6884E5A9ABBE54BAF19D95AB0FFFF0BFD9B458434D5604B604807AF4F4
+ 3B9C3FE3A184A79EFBE00357570F5FDCB4C589DC6CB2FB93ED24F7D81172AD0D
+ 6188D153B8B8B89298494964FE430F93F0A868BE561A9A31D4BEFBD6E3FF7268
+ FFDF326951100132049108A404803A187AFAFEB4D90F4B7BE787CD3E7E41B7E1
+ A614174A4BC8B6F7FF4C32330EF1358CDE64D294E9E4E165CBC9B090117C8D18
+ B4042FFEEBB4C7683838458B97A9214380002C44202500F4F6D1ABF7A11DBE90
+ 3F7D90F74E7048440A77C78AF6F676B26BC7FF90ED7FDD44AFD1E964DC2AFAF7
+ EF4F963CF9149977FF02D2AF9F941B0939575298F1CC13314FD38EE1795AACA3
+ 768D9A85A3D0CC9B837F0975EED482D6A6ED7E3A222AF91EDCB0064DFCC6B75E
+ 23E99FEEA0259B7D0C462F81872FE7E88FE472D525129B984C9C9CAC5D499F60
+ BF8090D0B0847E07F66D437FC07C8CA0133CEDE6400078FABDC3C6A78C1E9B30
+ 6531576B059C9FF6EC2A7260EFD77C0DC351ECDFB39BBCF1C2BF91EBD7F1708B
+ 890D9FBE286C6CD2287AE94D0DBEB5682ECC65831BE8F5734FFFEA17B73D1B3C
+ 2C6C3C6E9803E5FDF9CD349279F89F7C0DC3D154559493BACB9749424AAA281C
+ 38B90D1C183C22D2F3BB3D9B3368B1899A452B60DE0208CDBF67F2B407C6468E
+ 0C9FC7D55AB173C75672F0DB6FF812432BEC4BDF49BEFEC7677CC99288D0B03B
+ E1537A89515CF8B85325D6210043BD5E77DEBBF21752C3BBE74BCE901D7FFD0B
+ 5F62688D8FDFFB2F525176812FDD04BE9C7BF7CA07E8A51735F8B8134100C2D3
+ 8FD4CF3B24645C322AAD41AAC77AFBDAC5643291BF7DB0892F5912328AF329FA
+ 01F071672B201240CAF45F84F9060C0EE16ACDF829278B64B1B8AF7932BEFF8E
+ 9C3E79822FDDC4DF6FF088C429F787D14B4901006ED877FAED4B7FD651B424FD
+ 93EDFC1543EB74A4E66266CC7D643AFDC0E82E7CCD61DE02A0D2356848483857
+ 63464B733337BCCBD00759873324D3C2C0C123E05BB400F0B5280470027073F3
+ 1EC4D598C18DED5F93CE3319DAA3B9A9919CC8C1D88F25AE1DBEB52900C40567
+ 170F37D10B9FEC234821197A22EB47B1CF3C5DDCE15B6477927D00AE157071F3
+ F2E928DEA4AAA282BF62E805299F397B7A42009D4F3F301700AE07B8BB786124
+ D082DAEA2AFE8AA1176A6BC43E7377E57C0B0174FADD3C04082602933918FA42
+ C66716BE366F0180A4001AD94C1EDDD1D88059E39258F8D85A000C83C1046070
+ 84E6002F0802A9457DBEBF5DF4927FE1CC54FE4A1B848E09237E8302F8923C45
+ 0579860C61AE6E6EE4C3F46FF9D24DEE9BD1EF0EFA51400DBDC436DD09A05FBF
+ FEE4C32FF7729324D570ECD001F287975FE04BC641AD007417027CFCFD543B1F
+ C44E4AB2EBFB46437702081C3C84BF5287F3C081645C7C025F6258A33B0104D8
+ 290080A9520C69742780E011369727D86442F2649B53A78D8EEE0480D531F6E2
+ 1F184442468EE64B0C73742500AC990B1B3B8E2FD947420A5BCF2A85AE041033
+ 29914B03A5686EC28C67DBB07E8034BA12405CA2E45C558EFCCCA3E4DC9962BE
+ 24266C6C14F1F211BDE9363CBA11009EFCB844C9258A1C27F3F348411616C34A
+ 834EA0DCCF1B15DD0860647838F1F6B5BD3AFD647E2EC9CF3ACE97A46161408C
+ 6E0420F7F462AD6249511129CCCD965DB7104BFB104E03301F8221A01F0124D9
+ 8EFF98078F59B078E90321D8C2DDC393448C97DF5CC168E842004AE91F9A7F01
+ C53090ECD8303060803317CA860C0F216322C791988989645050107FF7D6A30B
+ 01C8A57F001D4081020DF403D0E1845391B5DCBD703159B9E665F2C6A6CD64CB
+ 97DF92ADDF7C4FFEF2F774F29F1FED20FFF1DEFB64ED9B7F222B9E7F89FFC95B
+ 8F2E042097FE81223301A035C01A395B605B9521C1C3F952CF81BEC5F88489E4
+ 972B5791F55B3F251B767C4E5E78E36DB2E8D72BC8D4D973496858387171C5A2
+ 1C318EEC97685E001DE99F6D01949D2D25571BB02D5E0758C5547C02AFBB6D13
+ 9FDC33A3821E5E5E2475D61CB2EAE575E4FDCFD3C94B7F584FE63DB080040D1D
+ CA7F43FB685E001DE99F1F5F1263DEFC0B2886811E10C0ACBBEEA14EFF923CFD
+ E22B2465C62CAE83A947342F00A5C19B9305373B8002720342605C6C3C717317
+ 2D7FB08B51E111DC464D7A47FB029049FF4041A6F8692FFA295F762D23626EF4
+ 84497CA96B20D4F405342D00A5F4AFE2C279527DA9922FDD0403434566A9A114
+ DDCD06945E3EE9054D0B4029FDCB9389F54A61203E2945F6DF56A2A5B9E70450
+ 5956C65FDD7A342D00A5F42FFFF851FE4A8CD280908F9F3F17C7BB8A9A1600C3
+ D21768967260EF5764CB86F5E4F7AB5690554B1690150BEE25CBEEBB93FCEAE7
+ B793C573A673FB2D3A0ACD0A4029FDC37675724F3986875B5BE4E37477C2C00D
+ 99B1068163870E92671E5D4C36BCFE2AD9F3D927A4302F87545E2C2397ABAB48
+ 435D1DD78F305DBFCEFD5F1C856605A094FE95149DB4C8FFADC11FB63037872F
+ 49D353E3017A46B302504AFFF2338FF157B6510A0308016A5718F555B42B0085
+ F42F4F8500940684407CB2B127896852004AE91F727CF33780B6282D3EA5B82E
+ D0D16F071D8D2605A094FE21C76F6BC59138F2DCB871839CC8C9E24BD2444F98
+ C8AD1E322A9A148052FA972793FE59A3D40FC01B3A0C0D1B15CD094029FD0379
+ C795E3BFC04FD9F20342C0C8730535B73C1C3DF3D736FE375F92E6F83F0FD2E6
+ 5D390F0710D4C4D4A97C499A4BE5E564D59207EDCAC767CCBB8B3CF1EC1ABE24
+ CDD1833F90B77F27FF9DDE42B7CBC3E3929473F30993A770E7E6A83125E703BC
+ BFEFCA9AC3BE80060520DFFCF716460D039A124077D6FE7517A38E0A6A4A004A
+ E95F6F12313E8613A0D1D09400947AFFBD0966F7603B19A3A11901A849FF7A1B
+ 238601CD0860645898ECDBBF5B013AA052E7EFF56534330E70FF925F91058F2D
+ E34B621AEAEBC837FFF83B5FEA1A773DF4B0E28E61BF5FF52429CC537ECFD057
+ C60134238075EF6E22E1E344C7147682432A37BCBE8E2F758DE75F7B4BB199DF
+ B97D2B773896126C20A8075193FE610388EE82A35695305A3F4013025093FEE5
+ 494CFFB61735E71E858C1C450287E867654F77D18400947AFF17CF9DE50E49EE
+ 2EE536A6915B63A456C0E10250F5F64FC5EC1F3508276E2BD1134BC7F482C305
+ A026FD5333FF4F2D6AC24054FC04E2E26A8CFD851D2E00A5C99F985BAFE69DBE
+ 5A2026A5E36F9D9D9DB9A5DE46C0F1025078FB77BAB0B047F7FBC7512AC527C4
+ 47AB5A639430E0500170E9DFB828BE248D3DD3BFD4A2260CE0F5B011F61776A8
+ 00D4A57F3D2F00351D41AC17B86D0CCE5AEEDB3854004ABD7FCCFC3D5590CF97
+ 7A8ED3853F71C7AB2A91A0627692DE719800D4A47F2772B37BE5CC62EC21A426
+ B330C22C218709404DFA67CFEC5F7BC939AADC0F181D39965B45DC97719800D4
+ ECDB9B9FD57B02C83DA6DC0FE0F61776D01CC55B85C3043046E1E5CFD9D3C5E4
+ 6CB1EDDDBFBB0BA682E3483925C6C6C4F15796B4B5B5F157B6C14E255AC761AF
+ 83B1499387A7175F125377A5B6D7FF80D82BC8CF1F47EADB064BD0A5F603421F
+ 26213945768F3FCC2BA8A7FF0F47D067CF0D64A8A3CF9E1BC8E85998000C0E13
+ 80C1610230384C00068709C0E03001181C260083C304607098000C8EB5002437
+ C9D1EB69184606C7D9D8C0C2C782005069738724BF00636FA7AA47FCFC657DD6
+ E96FEB16C0D4D4DA20DA07DDE8FBE9EA11DF41E2B79C4D2D9C6F2DB657331700
+ 26CB9B1A9BEA455B70EBE9142C460752EB1B5B9B1BEAE80704D0B930C23C04A0
+ F2FAB5ABCD57B81A33D4CCDE61680BA9F9962D4D4DF0ED756AF0B545084001CA
+ 686B6E6910CD60C0F1A6582DC3D007986C332E2E812FDDA4B9A90EBEC52C1BF8
+ 5A240028A3B5F2E299D35C8D19985C104D45C0D007B19392251FD8F2B212F816
+ BB6CC3D7160200A86CD9FFF596031D454B7EFEE042FE8AA1756CF9EABBAF3E84
+ 6F31BF0DBEE6B00E01CDC732769DAEAD2EBFC8D59A11459B14A579FC0CC79338
+ 75BAE472BBEA9AF2B2CC1FD3CFD04B084032047002A0565F52922B391F1B0721
+ 1B61BD9C5EC15E870B1F7F822F5972EE14B76F3E32BC166A22010054223ED4A5
+ 7FBA7EF7954B959DCD84C08851A3C9438FFD9A2F31B4061ED061129B5EC397E9
+ 5FBCBB8B5E220D1404C0612E002802EBB0AE661EDD73A2F442C17EAED68A7B16
+ 2D25A93367F32586569836679ECDD85F7A36777FE6E13D58138F75F6F031F7F4
+ 03290160D564CDE6777EFB71756B9D68423C4200B6470B8F8AE66B188E26323A
+ 862C5BFD9C6478860F37BFF7CCC7F4F23235F8B6330300D6DB6276FE0B75572A
+ DBC347C7F98D081D2FDABC0F8B215267CD2697685FF17C09FA150C473175F61D
+ E4B7AFA4D93CF728EBC0CECFF67CB1610FBD2CA7060174C67F602D00DCE8BC79
+ E4E0AEF38929F3A37D070D19C257750211A0C7895FACE6783646CF8295498B96
+ 2D274B963F657375D2E9E29CEC579FBFE3EDF6F6F6F3B4885140F4F12CF6C7B1
+ B5312E3754D8DE6E6A3F9EB1BB68CACC8593DDDCC5EF17D1E44446C77242A8AE
+ AC20156517F83B8CDE04DBD8ADFEF734EEEF6E2B2BABAC2ABBB86EF5CCDF3536
+ D66181653535E1E9B7406E676488C0D4D4547FFD5C49DE99A429F74E73767671
+ E9B8650996504FB97D0E19179BC0EDE90B31E0C83646CF8191BDB8A4141AEB9F
+ 27F72D7E84FECD6D2FAD6F6E6A68589FB6E89533C5D9383BB7825A03358BD82F
+ 2097D4431C70387ED3B0D884D989BF59F3E15AFF8061C370530E2CA6C4362CD9
+ 473248554505A9ADA926B5D5D5A4A9B1E7367BEACB60020EE660E0357C208DBE
+ F14993B9F731189257024FFEC6371F4DCB3EB6177BEB60400FE3FF68FA454F3F
+ 901300EE214BC08679BED4860D0A1A11BE76DD17CF8D8A888BA165BB71E429D9
+ 7AA2AB836D25A7B273D2D6CC7FABA6E642112DC2F988FBC8FB3BDFFE59A3F49B
+ 705F68097CA8053939390DFFCDDAADBF4C4A987B978BAFAF317653D438AD57AE
+ B41C39BE67D7FAD7977E643299D0E1C3CA5F0CFA084FBECD274F8DD484960022
+ C0E440EC993278F8C8A8B0C79FFCE3A2E8F898694E0386C8F52518BD84E97A85
+ 292733FBFF366F7C66FB85928253B40A1B21D75043874FE8F1CB36BB6ADB1A7C
+ 0F8664134F3D4E57821002E327CC899C77DF5377864624C40506048BD24546CF
+ 53555D56517A32337BF767EBBFCCCDDA57882A6A703C3A7B68F2F1CE1F8E578C
+ B96A05208096004F3B84801E095243840674147DE227DD316AEAECA529C143C7
+ 8C74F7F6F6F5F0F4F33679B87906B8F828F75E1822308AE7D4D87CB5F16A6D7D
+ 537DFD95B2F2E292EFBFDE92917B7C2F46DFD0C4A38387388FDE35466D85C91E
+ AA53307B050084D600A30F98758016010E76A78610814F94113270DF89F4EF8F
+ EF423C5DF97D46044FEE0D9A4B2375834331448F261D4EC6C44E381C9F28E389
+ C77D21CD537CEACDE98E430421A04580C1D9681960B8EE707E87E399F3EDA743
+ 041D26880086A71C866BD40B9D3CBB1C2FD0134E118400139C2D1860CEEF3A82
+ 08802006C104A777C9F10C0683C16030180C06C39810F2FF64A80A533637E0C4
+ 0000000049454E44AE426082}
FileName =
'E:\YandexDisk\Development\Delphi\AErender Launcher\src\AErender ' +
'CC\icon_128.png'
@@ -220,310 +220,310 @@ object SplashScreenForm: TSplashScreenForm
PNG = {
89504E470D0A1A0A0000000D49484452000001000000010008060000005C72A8
66000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 25E249444154785EED9D077C5455DAFF4F1AE9994C12020124104A28A1242414
- 290151545E9445DDF5B5EDEBAAABEBA28BAEF2BA2EB8C515FDAB6B6F58B0ADBA
- BE9645855DBB08882E9D9046127A27BDF7F23FCFF51CF6322433F7CEBD9364E6
- FEBE9FCFF9DCF3DC994926CAF33BCF739E73CFF163BD1B7F7195C8EFEB7895F4
- F6BF07F8061DE22A91B6E355D22EAEBD8EDEE8306AA7A73E7D476AF27E577DA2
- 37FE3DC0F7503B3839B7B43BEB53530B40AF1283DEE2308E0E2DAF01E22A9BB4
- E975EACBF711EA3E009EA433476F1357B2A94F57D9A42D5F577FB64721A7E929
- D4CEAA7666EA078A6B90E8CB265F93EFA3ABBAC9BFA727FF2EE0BB48C7958EAC
- 6ED2C95B459FAEB2B5A8EEA9C580FA12BAD7EDF484A390A3126A87978E4D8D9C
- BE8FAA05279C3322E2DC593F4BEADB3FB17F4C74FFBE11D1317DC3C26DB12121
- 91B1A1A1E1B17DFA84C53436D4DB6C317EF26703E031AACA3BDA4342C3AA9A9B
- EBCB1B1AEACA1A1B6BCAEAEBAACA6A2BCB4BCA2B4F96949C3C74F2FB0DEFED3F
- 71A4A886BFBDD9A1911848612001500B02D1AD42D09D0240BF4B36E9F86A870F
- 56B590096973FB5DBCE8B6CC21C3526786C747A44604C4D27D00BC82DAB6B2A6
- FA92DA1D07F6EEFC6EED074FADCFC9FAF614BFDDC85B93AAA905412D04B2799C
- EE1000E9F4847AB4974E1FC25B286F61E75D74C3F059175C3D67F090B1333A58
- D0E89898D8EEF87E007894F2F2B20ED6D19877E4D09E4D1BBE7C67DD379FBDBA
- 97DFAEE7AD8137290A2406EAA880F0B81078DAC164484E4E4F7DE9F8A79D3EC2
- DE37FACE7BFE7645F2D8298BC223A207F37B00F83475B595870B7237AF7EE2E1
- EB3EA8AD28A9E4B7D462208580A20129041E4B0B3C2900E4F0F4F3D5A1BE74FC
- 88C0C0C0C8C54B5FBD386DFAA5374685DB06F07B00588AEABAAAE33B367DB2EA
- B9476FF8B4B5B595E60B6A799342A04E0D280AF08808784200E8675293233EB5
- D38E4FED17B73C3A23F3A26B6EB545278CE0360096A6BCF264E1FACFDE5CF9E6
- 8BF77CC74D12823ADEA4109008C888C0F494C06C015087FC32DC27C70FE72D6A
- E195774FF8AF458B17F7ED37249DDB00001525A70E6E5BF3E1B3CFAE79FFB1DD
- DCACE64D0A817A7E80302D1A305300D421BF9CD90FE32D2A2424D2BEE2A97577
- 46C70DB91C137B00740D4D1856961EFC70D992394F3436D654F05B2404344720
- 2B06A6A604E4AC66E0E8FC34EA47F2169D34327DF0034F6F786CD0E051734343
- C3E0FC0038817CC41E3B60CCEC79D7A6E6EEDEB8A3A2EC38393D219D5EA601E4
- 4B86D3013304403A3F85FC54D693CE6F9FFB5F374D58B2FCADA763ECF123B90D
- 00D04858B82D61E67957CEAEAA2ACD3B50B483E605A4E313A68980D11159EDFC
- 32E4A7893EFB8D8B9FBAE0BC85BF581E161449F74CA7B2AC8CED2FDCC32ACA4A
- 7F6CA5A5AC5CD5AFADAE621D1D86FEDB00A0E0E7EFCFA26CD1CC1E1BCB5B1CB3
- C7F5FDF1AAF4E3D8B0E4D12C2A3A5ABCDB5C5A5A6AEB3EFF64D503AB9EBDE32B
- 6E524A4095029912D0BC00FD23773B1D3022009D397F54606060CCEF1F587BFD
- C4C9E937FBF9C5D27B4CE3F8E1436CEBA60D6CEB771BD8DEFC3C7117809EC5CF
- CF9F25A78C63E9D3672AADFFC041E21573E8E8286BDFBE65CB4B0F2FBFF4F5D6
- D6D6327E8B22025344C05D01A0CF9173530A41CE4FB3FC91DCF9E31E7961EBBD
- 43874FBC94DB86A1119C1C7DEB77EB15A73F71F488780580DECBA0214359C68C
- 59BC65B2A491C9E2AE71F6EDDDF5F1EF6ECD7848250254252011A08941393FA0
- 0B7704803E434D3ABF32F2F31673DF83FFBC316DDAFC5B78DF30E4F86FBFF81C
- CBDFBD4BDC01C0FB989031855D7DF3AF59E2B0E1E28E31B66DFE74E58ADFCD7F
- 9577CB795357086475409708B8330928477EF56CBFFD86DB9E9C9779C1FCBBFD
- FC8CCDF49FE4A3FCCB4F3CCAFEF6FCD3ACF4D449711700EFE4D4F163ECEBB51F
- 2B578A06C222688ACC7D1206C6A48586F73FB46BEBE7C7B8291708A9AB031E15
- 00727E6A72759F32E137F7A21B522FBFFEDE87FA04445344E016D59515ECED97
- 5E602B1F79901D39B05FDC05C03738BC7F2FFBE2E3D5ACBEAE9625258F627D82
- DD7BB89506D8C12353A6559C3AB9FDE0BE5D34294823BF6CD2F9358B801E0150
- E7FDF4ED29EF8F1E969C3EE4CE656F3D1E1E6A8BE1B65B7CFFCD57EC81BB97B0
- 829CDD98B9073E4B7B7B3B2BCCCD512282418943D98073DC7BF62D2820386874
- 6A6646D6D62F3754969FA095827295A05A0434A155001CF37E727E5B444474FC
- 5FFEBAEE91E8B87E6E25381D1DEDECBDD75E666F3CFB246B6DA5BF0100DFA7A5
- B999FDB0EE6B16D4278825A78CE7A3BAFEAC39B84F48E484C9178FF9FA9FAFAC
- 6F6D6D962B04A9E99A0CD42A0032F497793F85FE312B9EDE78F7394347CFE67D
- DD343634B0A7FFF247AE869F883B00588B9C1DDBD8A9E34759EA94735940809E
- 60FC4722226CFD2766CC8BFE72EDCBDBB8A91601CDA98096DFDA59E86F5F70C5
- 928C495317DD1D1A1AAA5BBE4A4E9E602B962E61F95998E107D6E6F0FE7D2C7B
- FB569636753A0B097363CD9C7FF0A8D696FAED457BB694704BAE0BD09C0A9063
- BB420A008DFE5200A2162CFCCD2D76BB5DB7F35379EFF7B7DEA8FCE10000633E
- 410FD72DB8E2CE9B7997AA71E49BE4A3E4ABE4B32EFDD35504A01EFD29F75766
- FDAFB971C5ECC9332EBD96F7754123FFFDBFBD8DD55455893B0000A2A1BE9EED
- F8F7263663EE3C16124A59B6762223ED09FEFE814539BBD61DE5264501EAA706
- 9DE22A02900220CB7EE13C57B1CDB9E8FA9B785F17F4073EBAFC1E383F005D50
- 565CCC1EBBEF5ED6D2221F00D4CEDCF937DC44BEC9BB140590AF92CFBA8C029C
- 4500EAD19FC20A65F4BFF5EE972F4D99907909EF6B8666FB9FFACB1FB0AA0F00
- 17949514B3F2D262967EEE4C5DD581B0B0C8187BEC80935BBF5F4379046D32AA
- 290A701501C8D19F04202C2C2AC63E79D665FF432FE8E1FF5E7D996DDBB45158
- 000067ACFFEC5FECD30FDF13967626675E7E3DF928EFD26C22F9AC8C02BAC4D9
- 8B243FD4A40084DFF1BFAF5D668BB0F7E37DCD6CFAE64BF6D1DB6F0A0B00A085
- BFBDF02CCBDABA5958DA20DF5CB2F4B545BC2B2703C977A51F774A5702203F44
- E13FCD282AF9FFE8313317F0AB66AA2ACAD9CB8F3D2C2C008056286D7EEEA1FB
- 95B9333D8C1E3B83D273390F40BE4B3EDCA5083813007A4DCEFE87669E7FCD88
- 08BB7D20EF6BE6C3375F5316FC0000F4535D59C9FEF9FEDF85A58D487BCCC099
- E75D45BB6D5329817C977C987C59970010F49AACFD87CE9C7BF52CBAA9157A76
- 9FD63C0300DC67CDFFBDC32ACBE9F17FEDCC3C4FF1551200F25DB926A0533A7B
- 41860BF41AE510144A84250E9D30955F35F3EE2B2B595B1B4D420200DCA5A9B1
- 5189A4F5903472DC147EA18940C772E059514057CA40F765FE1F9C3C6E7A7FFF
- A010CD0FFC14E5E5B2CD1BBE151600C0081449EBD90DCB2F2062C4A831D368B2
- 5E4600320D388BCE6E4AA590F97FC845972E9EAE753F7F7A9C9776F201009803
- 3D46FCEEAA1785E51AF2D58B7F72DB74DEA50840CE03688A00E41BE83E850EF4
- E1E0E4D1933587FF4579396C4F7696B0000066B079FD3A65B72CAD8C1839691A
- BF5004403E2CD300E20C11E82A0220C55004203E7E882D3E2A721CBDA0852D1B
- 37881E00C04CB67DBF51F45C131F631F47BECBBB5200641470069D0900DD9322
- 1094317D615240643CE5112EA1F09F76F00500988F9ED5B4E4B319332E1DCABB
- 720E807CFA2C7F77BC211582EE936A04C52724C62B773470ECD04165F3430080
- F914E4E4287B676A252E7E304D049200E84E01E8BE920644DBFBF7A59B5AC07A
- 7F003C07AD0EDCFEC32661B9C61E9710C72F32FC279F3EC3F909970210618BD5
- BCD9271DDE0100F01C7A06595B441CF9AE4101888AD62400E525C56C5F41BEB0
- 00009E80B60F6B6A6A149673226C76B70480382D0211E1767ABCD025FB0B0B44
- 0F00E0299A9B9A349F9B11161E4DBEDBA5F3138E02406F524700012161919A04
- 804EE50500781E3A195B0BA1E18AEF2A7ECC9B14813384C0510008F906450802
- 8322A996E8123A921B00E079B40EB60141117466B97AF43FC3F989AE0440717E
- BA464634D26EA32E41040040F7A075B08D8C6822DF3DEDCBA29D81A300C837C8
- 37FB6B3DE3BF1C020040B7A075B015BEEBE8FCF2AAD09573CB0F9CF166672005
- 00A07BD039D83AF5E5CE0440FD46ED025046079300003C8DCEC1D6A93F3B0BEF
- E9CD9A05A0B6BA5AF400009EA4A6AA52F434E1D48F9D09802E70AC3700DD4387
- B663FF34619A000000BC0F08000016060200808581000060612000005818C7F2
- 003D3A483B8946F1D69FB7C1ABD775ACE65797FCF779B40929E88AC93333594A
- 5ABAB0CCA3F8C409E5F4185461AC43746C2C5BF9FE27C272CEA2397E7456E061
- DE4EF246B57A7A96B8953705084037F1F4DBEFB3F88401C232973FDFB11847AF
- 5B0833050029403761D3B6AD825BA44F9F297A00E80302D00D040505B1E0103A
- AACD33A44D43F405DC0302D00D84475246E53912069DC3FAF306805E2000DD40
- 44A4A62D150C9136E55CD103403B10806E20D2461BB37896B4691000A01F0840
- 3770CED024D1F31CA3C74F64A161E1C202401B10806E60D8A831A2E739020203
- D9F8F40C6101A00D0840373062B4E70580489B8A6A00D00704C0C3C4C6C7B301
- 831385E55952A74E637E7EF85F0AB4837F2D1E66E2643AA6BD7B888AB6B361C9
- A38405806B20001E66E2E4A9A2D73DA01A00F40001F0208181416CDCA4EE9D98
- C33C00D00304C08324A78C6321A19E5B02DC1943468C6431719A4F7407160702
- E041264EE9BEFC5F4D6A0FFD5EE07D40003C88BBF9FFDEFC3CD6D6D6262CFDE0
- E120A015088087A0F29FBB2B00B7FFF01DDB57902F2CFDA44C4A67417DFA080B
- 80AE8100780823E5BF829CDD2C6FD74E61E9273838848D9998262C00BA0602E0
- 21DC0DFF29F4DF979FCFF2B3DC170062D2549403816B20001EC048F9EFE0DE42
- D6D4D4A84401EDEDEDE2AE7E52B900F8F9693ED90D58140880073052FE2BC8DE
- AD5C1B1B1AD8BE3DEECF03F4ED9FC006260E1116009D0301F00046CA7F34F24B
- 8CA601A806005740003C8091E5BF0539D9A2C758AE5101C0AA40E0020880C918
- 29FF159F38CE2ACBCB84C558A1C17980E4941416E1E1FD08817703013019A3E5
- 3F350DF5F56C7FE11E61E9871E0D9ED0CD0F2301EF020260326685FF1223EB01
- 083C1D089C01013011A34FFFEDC9CE12BDFF6074227062C654161010202C00CE
- 0402602246CA7F75B5B5ECD8A143C2FA0F7BB277B38E0EF7E701C22323D98831
- 29C2B21E247E340F42C7B20D1D91CCC6A64E625366CD6673E62F600B7E7615FB
- D90DBF64BFF8CD6FD90D4BEE52CE57B01A381BD044AEB96531BBE4CAAB85A58F
- 9D9B7F600FDF7BB7B0CEE4C11756B124033BFD7CF2EEDBEC9D979E1796EF4191
- 176DBB4693AF839392D8394392D8A0214395EDD843C3C2C4BB5CF3C11BAFF2B6
- 4A58BD179C0DD84B3196FF9F3901A8262F6B87E8B9479A8F2C0BA6958DFD060C
- 64193366B1CBAEBD9E2DB9EF7EF6D7D7DE666F7CFA357BE49537D8EDCBFEC816
- 5E759DB2FE81467C3DCE4F0406D2F8672D20002661A4FC471476320128C93538
- 1148A3617C4282B0BC0BDADC24F3C28BD9E27BFFC05E78FF63F6D45BEFB1BBEE
- 7F4809DDA7CD99CB06250EC11C870120002661A4FCA73C00E464D92F2D0F3632
- 0F40A47AC9D16174B8C9243E825F7FFB9DEC313EBA3FFFDE47ECD67B96B39917
- 5CC8A26362C5BB805940004CC248F87FA0B0407900A82BEAEB6AD981A22261B9
- 476F5E161C69B3B10B2EF909FBE393CFB1559F7CC696AE78845DB4E80A3CCBD0
- 0D40004CC068F9CF59FE2FC9DB656C1E606C6A5AB7EF4FE88CE0901036FDBC0B
- D8FF72675FF9C11A76E39D4B95E3CDFCFDF14FB23BC17F6D1330BAF9A7160130
- BA1E80442A252D5D583D07ED5444CEFED23FD6B2DB97FF49894C90C3F71C1000
- 1330BAF967672B001DA145421D1D1DC2728FDEF070D0D0E12395703F38A4F744
- 23560602600246F2FF53C78FB1AA8A7261750D2D143AB4D7E03C003609010E40
- 000C62B4FC472BFDB49267300DA0052443F808DC933434D48B1EE80D40000C62
- F4ECBF9C1DDB44CF35B9062702899E7E38889E7004BD070880418C84FF841E01
- F8711EC0D87A809E2E073642007A15100003182DFF1D3B74905594950ACB3575
- 35356C7F6181B0DC6358F26866B3C708ABFB410AD0BB800018C068F92F5BC7E8
- 2FC9DEAEFF338EF4E4D1616DADADACA5A54558A0A7810018C068F92F7BFB56D1
- D38E3B9F710469009040000C6024FFA75C3E3F6B97B0B453989BCD5A9A9B85E5
- 1EE3D3272BE94B4FD11B27029B9B9AD8418365566F04FB01B80995FF9E7B57D3
- 7F9A4E29CACB65F7DD76B3B0F4B1ECD1270DCD3D102B96DE614A34E10EF4E8EE
- E0A4E1C2328F9AAA2A76F2D851A59D3A4EED18ABADAE66CD5C305B79DAD1D2DC
- 74BAFFE3B55911D396E616D6D6D66A78A1557781FD007A01B4D59611F4CCFE3B
- E2CEDC81233DB947001D7A62060DF5756CCBC6F5ECE5C71F61B75D7539FBE5A2
- F98AA83EF7D0FDCAE61E1BBFFC5CD9682577E77665B9354DA01E3D78401188F2
- 9262565D59A94423ADAD2D5EE3FC6603017013C3F9FF0EF747DF1C93E6017A6A
- 55607BBB39CEF6FA334FB0C7FFF87BF6F5DA8F59E9291AE0805E20006E60B4FC
- 47F966516E8EB0F443B96A6D0D4573EE433BEB58710F3C7026100037305AFEA3
- 053D464A61745848EE4E3356055A6BDE069C0D04C00D7AA2FCE7882969008E0E
- B33C10003730BEFC77BBE8B98F191381C9E3C6B3F0880861012B0201D089D1A7
- FF287737A3DE4C252EA3135FB41107AD0900D60502A01333CA7F461FE821A86C
- 65C6B260CC03581B08804E8CE6FF6684FF12236B0924F43833F6E1B32EF83FAF
- 03A3E53FC2CCD577393B8D8B09EDC83B7CD4186101AB0101D081D1F25FC9C913
- ACF8C471611987B6123BBC7FAFB0DC076980758100E8C08CF0DFEC25A7A63C1E
- EC23478701FD40007460B4FC6764F96F5798310F90386CB852DD00D60302A011
- A3E53FC2CC094049FEEE5DCAD1624649F392A3C380B940003462B4FC47B97A75
- 6585B0CC839EAC2BCA73FFB90209E601AC09044023C697FF1A0FD5BBC28CCA02
- 9D1A141C4C5B41002B0101D08019E53F3372F5AE30435CE8C8AE31A969C20256
- 013B026960ECC43476DFE3CF08CB3D563DF1286B6CD4B71186D68A41406020FB
- D5D2DF1B7EBEFFCB351F29DFD3D3FCE9A917D8A871E385E53E2F3CFC005BFFF9
- A7C2B20E66EE080401D0C035B72C66975C79B5B07C97B2E26276DB5597797C77
- 1C088031B025583763B4FCE72DFC58E918262C600520002E30A3FCE74DF4F4D1
- 61A07B8100B8C068F9CFDBE8C9CD4241F703017081D1F29FB731624C8AF28010
- B0061000279851FEF336A89260F4C463E03D40009C60F4E93F6F05AB02AD0304
- C009560BFF251332262B6B0B80EF0301708255CA7F8E84854728D10FF07D2000
- 5D60B5F29F23D832DC1A4000BAC06AE53F47500EB40610802EB06AFE2F193038
- 91F51F384858C0578100748215CB7F9D81ADC27C1F08402758B5FCE708D200DF
- 0702D009560FFF256326A4B2D0B03061015F0402D009562DFF39426B01900AF9
- 36D80FC0012AFF3DF7AEA63FB94BB66C5CCF9EF8D3B21F8D1EE2E1975F678393
- 860BCB7DBEFDEC9F6CE5230F0ACB1CB01F8031B01F800731A3FC97BD6D8BB2A9
- 464FB6ACAD5BC4B731462A4F87FCFCF0CFC457C1FF5907264E3141003CB8FF9F
- 5676731132039B3D86258D4C1616F03520002A7E2CFF193B2E9B8EECA6A3BB7B
- 9A3DD959ACB9A94958C6C0C341BE0B04408519E53FDAA19742F09EA6A5B999E5
- 67ED149631B01EC0778100A830A3FCE789E3BFDC25CBA4348052007B6C9CB080
- 2F0101506146F9CF13C77FB98B59F30044EA54AC8DF045200002339EFEF3D4F1
- 5FEE72ECD041565E5A222C63A4E2EC409F04022030A5FCE7C1E3BFDC81E622CC
- 8A02C6A76728A70701DF02022030A5FC67C2197D666396000487842A4B83816F
- 0101E09851FE6B6B6D554A6FBD0D1225B3AA122807FA1E10008E19E5BFC2BC1C
- E5A8EEDE464D55153B5058202C63D03C80D1F30741EF0202C031A5FCD7CBF27F
- 3566A501F109096CE0E04461015F0002C031A5FCD70BF37F49D6D6CDA2671CA4
- 01BE85E505C08CF25F437D3DDB57902FACDE47515EAE69E9095605FA16961700
- 33CA7F79BB76B0B6B63661F53E5A5B5B582EFF8E66909C329E4544D2D3E2C017
- 8000F8C8D37FAED86D521AE0EFEFCF26644C1116F0762C2D006694FF88DE9CFF
- 4BCC7A2E80401AE03B585A00CC28FF559695B163870F09ABF772EAD8515672F2
- 84B08C415153404080B0803763690130EBE9BFDEF0F8AF2BCC5C164C730023C6
- 8C1516F066AC2D002694FF7A73FDDF1153CB81383ACC27B0AC009875F65F8E17
- 4C004A72776EE79140BBB08C817900DFC0B2026046F9CFCCC76DBB83BADA5A56
- 949F272C639078F6ED9F202CE0AD5857002C52FE73C4AC72208128C0FBB1A400
- 9855FEEB8D8FFFBA62B749DB8513383ACCFBB1A4009851FE6B6F6F67F959BB84
- E53DD092E5FABA5A6119636CEA24161C42E7C8006FC592026046F96FDF1EF31C
- A93BA125CB66552E828282584A5ABAB08037624D0130A3FCD78B76FFD58B999B
- 85220DF06E2C2700A695FFBCA8FEEF88A902306D3A3609F1622C2700E34D98FC
- 6B6A6A64457939C2F23E6849F089A34784650C3A2F2071F80861016FC3720210
- 141C2C7AEEF3EF75DFB0969616617927EBFEB546F48C13658B163D6D34730135
- 83A646738E3EB332963B1E9C4EBA4D1C36CCED2A006DFE71E4C07EA50AE0CD50
- D8DE7FE02066B3DBC51DF7A8AFAB6387F7EF139636468F9FC8322F9AAF9463DD
- A5B2BC8CAD7EEB75657193D530F37870CB090000DE8E990260C92A0000E04720
- 0000581808000016060200808581000060612000005818080000160602008085
- 8100006061200000581808000016060200808581000060612000005818080000
- 1606020080858100006061200000581808000016060200808581000060614C13
- 009C0E0340F7E077D666DEEE639A004444D14EE200004F1315ADEF2016679826
- 00F6D8BEA20700F024D1B171A2671C6702D0219A26EC71E67D290040D744C7C4
- 889E269CFA71670220DFAC7CB0BCBC4C9308C498A84A0080AEB1C7C48A9E733A
- 3ACAE8FC3AB5009CE5CB5D4500F2431D612CB846B9E3023AAE0800E079B4A600
- 35B58AEF9EF665BAE788A300C837C90FB4D7B3DA4AE58E0BE898680080E7D11A
- 01B436D754F18BD328A0AB1440717EDEDA1A6BABE987B804020040F760D32800
- 75F5353478B7F1E62802A7E94A00E8034AABABA9D41401248D1C257A00004F41
- 47AA270E1B2E2CE734D49693EF9EF665DE5C0A80540929026DB57515E5FCEA92
- D8F8782E02C9C202007882B1699358685898B09C53535D51C12F8E1100B5D374
- 35092815A3ADAAAA44930010E93366891E00C013A44F9F297AAEA9AA507C570A
- 00B5B3703607401F6C2D2F3D5E4637B590311D0200802799346DBAE8B9A6A2FC
- 4429BFB4F246BE7CD6E84F389B035004A0E4D461FA219A183464288B4F18202C
- 00809924258F623171DA57DC96141F520B00F9B46E0168D9F6C3DAC39525C5F4
- 435C420F0465200D00C023E809FFC967B7FFF0AF23BCDBC29B6601A037480120
- A76F292D3E545DD75091CFFB9AC89891297A000033493F57BB00D43494E691EF
- F22E0900F9B214803344C05904A008006F4DF9B9DF6FE7574D24A78C6323C78E
- 131600C00C52A79ECB06270D13966B0AB33793CF36F1E6280067E06C12903ED4
- CC5BC3976B5EDC52515171D6873B83D2806B7FB558580000A3904F5D75D3AF84
- E51AF2D5CFD6BCB085771B78231F265F967E7D069DA50004E50CD4E8C38D85F9
- 9B4F3636D61CA417B4401100E60200308759F32ED235FAB734571CD85BB0F514
- EF36F2463E2CFD993843049C4500F4012505E0ADE160C1B61DFCAA19522C7FFF
- CE7E3C00402B414141ECA7BFF8A5B0B4B12F7FFB4E7EA9E74DA600E4CBD2AFCF
- A02B0F950240A103FD90FA8DEBFEFE03BF6A66C0E0443667FE25C20200B8C385
- 8BAE6071F1FD84A58DF5EBDE255FA5F09F7C977C580AC059388B0068D2E07404
- F0C3860FF65595965258A1999FFECF8D2C3838445800003D848547B085575F27
- 2C6D5457969EDCBCE11FFB78570A00F970A71500C2598C4E6F3E1D01F0569795
- F5D537FCAA19DA23E0A6DF2E151600400FB72CBD974546D984A58DAC1D5F908F
- D6F12653003901D82901E2DA15B4FD28BD2788B73ED9DBBF2E9E77C98DB3FB04
- 876B7B1A81434F2E353735B1829C6C710700E08A2B78F43C6FE1226169A3B6A6
- A4ECCF775FFC744B4B630937E9317E12023909D8A908389B03A026E7016836B1
- AEAEAEB27CDD17EFACE67D5DFCF74DBF52EA980000D74C99359B5DFEF3EB85A5
- 9D6F3E7FE71FE4A3BC4B8E4F3EABCEFF750900411F50CF03D00FAD79FDF9A55F
- 979F3A7E94F73543D580DF2CFF131B943844DC0100740645CCBFFEDD72E6E7E7
- CC35CFA6B8F4F891375E584AE13F6D0346BEEA98FF778AABDF421F2415511604
- F156DBDEDE52B9F6A3A7DFE37D5D848685B3A52B1E611191383F0080CEA0FDFE
- 973EF0300B0E091577B4F3E9074FBD47BEC9BBB5BC392E00EA12577300129A0B
- 20B1A016B8276753F5ACB9D78C8BB4E9DB078C9C3F79DC78B6EDBB8DACB99904
- 0A004044DA6CEC9E07FFAA3C51AB9763470AF73CFEC0557FE35DCAFD69131075
- 0A4002D0A5086899049448115026051BEAAB2B468ECD9C1D1A1AAAEB9C22AA69
- 4EC99CC3B2B76F6535559A761B03C0A7A1557E7F78FC1976CED02471473BB4EC
- F79D55BF7FE6D0FEDD54FAA3BD3B2805A00A00450014FE3B456B0420391D091C
- DC97559F3EF5C2FEF1FD87EA962C8A046879E3E1FDFBD8C9A3F4C42200D664D2
- B9339491DF66D775D8C769F615FCFBDBD79EBFEB13DE9533FF94025078ED74F2
- 4FA245001C47F8D391C077EB3FD83763CE4F5322A3F41F0A1014D4879D3BE77C
- A54458988B1221B01E3FB9FA3A76F35DF7B0A03E7DC41D7D9C385A5478EF92CC
- 27DB5B5B68811E85FE34FA53FE4FA1BFCBD19FD01B0148942880FF62BFACEDDF
- 14CD3CEFA7538375AC0D90D0534EE3D3272BBB08EDDEBA85B5B5D1F706C0B7A1
- D5B1B7DEB38CCDBFE24AC507DCA1B2ACB4F4FEA5F3FE5F65F9090AA1A9F447CF
- FE3BD6FD9D8EFE84560170FC96F4839548A0BAAAA4F5F8B1BD87274E3FFFDC3E
- 016181CAAB3A491C3682CDB978016B68A86787F616B18E0E97DF1B00AF83CAE1
- E72F58C87E7BFF8386F6CC68A9AC6C7CE6C95F3E9A9FB3710F3729EF97A3BFCB
- 957F8EB81B014814213876784F43907F70E5C0C4F119A1A1616E495A485898B2
- E1E1B4D973597969093B7EF890780500EF8776CABAEBFE8758E685F35948A8EE
- 60F9347456E747AB1F7FF1CB352F6DE626E5FD34FACBD29FD375FF9DE1AE00C8
- 1F2EAF7EB9591B4A878F4C0D4A4C4A192DEEB945A42D5A991B183729831D3F74
- 889595148B5700F03E68A4FFCD7D7F66975C79B552EA33CAD6EF3E5EFDEA7377
- ACE55D720C19FACBBABF2EE727DC19AD29FFA7CFD1F301C1BC85F366E72D8EC7
- 38092B9E58B778CCF85933B86D184A05F66467F13F7A03DBB669032B3E7142BC
- 0240EF253E2181A54F9FA56C8A336ADC04B7F37C47F2766FF86ED99D739E63ED
- EDE408B4E3AFACF9CB557FE4F89A26FF24EE7C33FA0C351202CAF969D952046F
- D1BC9108F4BBF3776F5D993269DEC298985873FE720E89C19103FBB8106CE482
- B0911D282A10AF00D0F30C1D91CC1D7EA6E2F854CF37CBE9090AFB77EFFCFCA3
- A71EBCEE3DEEFC34E3AF767EF5ACBFAED19F70F75BAA458022017AE8FF3F22C0
- 58DFCBAF593EFB273FBFE386883EB11425984E69F129B6BF600FCD86B272DE2A
- A895FEE75A5B43911100E6406B57EC7171CA21B8F21AC31B1DD54DFBF5EBDDB4
- 432BB5CD654D1FBDF9F8AB1FBEFDE0B7DCA49C9F9C5F2EF9A5D57EBAF37E3546
- 644A8A00CD23C874804480121D5A17D077CACC4529BFBE6BE5ED51B678F75639
- 18A0A3435724048053F43E9C6306D555C5E5CF3E7AF3335B377D9CC34D727E9A
- F1978B7D343DEDE70A230240A84580D201190944F2A6CC0B0C1C3C3A71D98AD5
- B7270C4AD676A42900801D3F5AB0F7C1658B9E3976389FCA6132E4A7529F69CE
- 4F182D034AE417A06197BED4E9565355DAF8D5BFDED83E72CCD498F8FE4312CD
- CC8D00F03568AE2B7BE7B71B962FC97CBAA2FC043D762F4B7D72A18FACF51B76
- 7EC22C0120E497711481D6B6B6E6D66FBF7823FBE4D17D4583868CE91F658BD3
- BD7418005FE7E8E13D45AB9EBD63E51B2BEF5EDBD6D642653E727E1AF9C9F9D5
- 5B7CB99DF33B62E6702CD301591D9015022A13524A4073039416D817FEECAEC9
- 0B2EBBE3B2B87E8312B80D80A5395572F4F8A71F3CB9FAE3F71EA3C33CC8E1A9
- 51AE2F37F79033FDA63A3F61763C2E45809A7A72500A01ED06422DDADF3FC87E
- ED4D2B3233E7FD7C414C6C3F1206002C4579D9A98AF55FBCB9F6AD5796AD6F6F
- 6F21A7A7D97D1AED65B84F8E2F6BFCEA90DF14E727CC1600420A0021270765A9
- 90D64052A3888084C01616668BB9E9F6672E4CCDB86856746C5F5D1B8C00E08D
- 54969594EEDCFAD986579EB9FDF3FAFA2ACAEF69B427A797CFF25393253E99EF
- 13A63A3FE10901904821A09440AE17A0E71ED51181AC189018444C9A764952E6
- 9CABD293474D1BD77750E239983004BE004DEC151F3D78A470CFBFB3D7AFFBFB
- B6ED3FACA1CD3B6884974E4F33FBEA119F96F5CAFABEA921BF239EF630290204
- 45033222904240D1801403D9947B4386A7F69B77C94D6963C7674E1838A8EFF0
- 80C07833272C01F0286DADC56DC78E14EFCDCDDE90F5C59A57761CDCBB9356F0
- 9183D3E84ECE2E9BBC271D5F8EF81E1BF5D574C7102B7F8714038A061C854046
- 059426C85481AE742F34B6EFA0C80969E79FD3B75F62AC2D2E21C66EEF1B1D16
- 1967B345C644850547474584DA2243EC11E18818407740237A63456D5D6D4355
- 4D7D5365755D4D7975754D69554545496555E989F2925387CAB2767C75A4ACE4
- 288DEEE4E0D428A497A1BDB4C9E91D1DDF71C4F798F313DDE931CE8480D203BA
- 9210A845814440DA7495EF934D46157EFEFE41FCDA217FB6FC5D009889704CBF
- 8EF6F616392927476B394B4F8DC277726AE9DC8ECE4E57F9BE1E717C494F388A
- FC9DD251E51C81140379950E2FE70ED44EAF767EF9796AF26702E029A493CAFC
- 9C9A14014721206727279782209D5DEDF43DE2F8929E7416F9BBE5553AB01403
- E9DC6AC777747869D3E7E46701F0346AA7558B80BAAF1603F53DEACBCF113DE2
- F812E97C3D8D746089A3534B9B1C5EDE97AFA96D6A00781AE9FCEA261D9B1A39
- BABCA7BE2F9D9E90F77A94DEE830F23BA9BF1BF5E5E8AE7EBDB3F7128E360066
- E0E8B0D2563BB3BC4AC79738BEDE2BE8ED8EA2FE7ECEBE2B1C1EF404CE9CB933
- E707000000000000000000000000000000000000000000000000000000000030
- 0063FF1FAB803D3AE7B2ABCC0000000049454E44AE426082}
+ 25E549444154785EED9D077C5455DAFF4F1A492665326924B44028A184929050
+ A40444117D511675D7D7B6AFABAEAE8B2EBACAEBBAE01657F4AFAEBD612FABAE
+ AF652DB06B1701D1A504086990D0420DE9BD97FF7D2EE7B0972199B977EE9D49
+ 66EEEFFBF99CCF3DCF9D9964A23CBFF33CE739F71C3FD6BFF1E75781F8BEF657
+ 417FFF7B806FD0CDAF0261DB5F055DFCDAEFE88F0EA3747AEAD377A426EEF7D6
+ 27FAE3DF037C0FA58393730BBBA73E35A500F42B31E82F0E63EFD0E21AC0AFA2
+ 099B5EA7BE781FA1EC03E04E7A72F44E7E259BFA74154DD8E275E567FB14729A
+ BE42E9AC4A67A67E20BF06F1BE68E235F13EBA2A9BF87BFAF2EF02BE8B705CE1
+ C8CA269CBC83F7E92A5ABBE29E520CA82FA07B1EA72F1C851C95503ABC706C6A
+ E4F403142D3871E8E8F073E6FE2C392E2129213A2A212E3C2A3ACE12668D0909
+ 8988090D0D8B1930C012DDD2D860B5C6FA899F0D80DBA8ADE8EE0A090BAF6D6B
+ 6BAA6A6E6EAC6C69A9AF6C6AACAD6CA8A92AAFAA292D2F2F2D29FD61E37B074E
+ 1C29AE97DEDE66D7480C84309000280581F0A810785200E87789261C5FE9F0C1
+ 8A1632397DC1C00B97DE9A357C64DA9CB0F8F0B4F08018BA0F8057D0D059D9DA
+ 54DEB0E3E0BE9DDFAFFBE0C90D7939DF9D946EB748AD55D19482A01402D1DC8E
+ 270440383DA11CED85D387482D546A9673175D3F6AEEF957CD1F367CC2ECCEAE
+ 8071B1B1719EF87E00B8958A8AF26E7FBFB68223257B366FFCEA9DF5DF7EFEEA
+ 3EE97693D49AA5264481C4401915106E1702773B9808C9C9E9A92F1CFFB4D387
+ DBE2A2EEB8FB6F97A74C98BE342C3C6A98740F009FA6B1A1E6F0DEFC2D1F3DFE
+ D0B51F345497D748B79462208480A20121046E4B0BDC2900E4F0F4F395A1BE70
+ FCF0C0C0C088652B5EBD307DD625374486590749F7003015758DB5C7776CFEF4
+ 95671FB9FEB38E8E0E9A2F68909A1002656A4051805B44C01D02403F939A18F1
+ A99D767C6ABFB8F991D9598BAEBEC51A95385AB20130355535A5451B3E7F73CD
+ 9B2FDCFDBD649210344A4D0801898088080C4F098C160065C82FC27D72FC30A9
+ 452EB9E2AEC9FFB574D9B2B881C333241B00A0A0FCE4A1ED6B3F7CE699B5EF3F
+ BA5B32EBA4268440393F4018160D182900CA905FCCEC5BA416191212615BFDE4
+ FA3B22A3875D86893D007A87260CEBAA0E7FB872F9FCC75B5AEAABA55B240434
+ 47202A0686A604E4AC4660EFFC34EA47482D2A794CC6B0FB9FDAF8E890616317
+ 582C61707E001C403E628B19347EDEC26BD2F2776FDA515D799C9C9E104E2FD2
+ 00F225DDE9801102209C9F427E2AEB09E7B72DF8AF1B272F5FF5D653D1B6F831
+ 920D00508925CC9A38E7DC2BE6D5D656141C2CDE41F302C2F109C34440EF88AC
+ 747E11F2D3449FED86654F9E7FEE925FACB20445D03DC3A9A9AC64078AF6B0EA
+ CA8A53ADA2825529FA0D75B5ACBB5BD77F1B0064FCFCFD59A4358AD96262A416
+ CB6CB171A7AE723F968D4C19C722A3A2F8BB8DA5BDBDA1F18B4F5FB9FF95676E
+ FF5A322925A04A814809685E80FE91BB9C0EE811809E9C3F32303030FAF7F7AF
+ BB6ECAB4F49BFCFCE2E83D8671FC7009DBB67923DBF6FD46B6AFB080DF05A06F
+ F1F3F36729A91359C6AC39724B183C84BF620CDDDDE55DD95BB7BFF8D0AA4B5E
+ EFE8E8A8946E5144608808B82A00F439726E4A21C8F969963F4272FED8879FDF
+ 76CF8851532E916CDDD0084E8EBEEDFB0DB2D39F387A84BF0240FF65C8F0112C
+ 73F65CA965B1E43129FCAE7EF6EFDBF5C9EF6EC97C50210254252011A0894131
+ 3FA0095704803E434D38BF3CF24B2DFADE07FE7943FACC8B6E96FABA21C77FFB
+ 856759E1EE5DFC0E00DEC7E4CCE9ECAA9B7ECD92468EE277F4B17DCB676B56FF
+ EEA257A56E95D4941502511DD02402AE4C028A915F39DB6FBBFED62716669DBF
+ E82E3F3F7D33FDA5D228FFD2E38FB0BF3DF714AB3859CAEF02E09D9C3C7E8C7D
+ B3EE13F94AD180259CA6C85C277170547A685862C9AE6D5F1C934CB14048591D
+ 70AB0090F35313ABFBE409BF058BAE4FBBECBA7B1E1C1060A388C025EA6AAAD9
+ DB2F3ECFD63CFC003B72F000BF0B806F70F8C03EF6E5271FB1A6C606969C3296
+ 0D0876EDE1561A60878D499D597DB234FBD0FE5D34294823BF68C2F9558B8016
+ 0150E6FDF4ED29EF8F1A999231FC8E956F3D16166A8D966C97F8E1DBAFD9FD77
+ 2D677BF37663E61EF82C5D5D5DAC283F4F8E0886248D608386BAF6EC5B504070
+ D0B8B4ACCC9C6D5F6DACA93A412B05C52A41A508A842AD00D8E7FDE4FCD6F0F0
+ A8F8BFFC75FDC351B1035D4A70BABBBBD87BAFBDC4DE78E609D6D1417F0300BE
+ 4F7B5B1BFB71FD372C6840104B499D248DEADAB3E6E001211193A75D38FE9B7F
+ BEBCA1A3A34DAC10A4A6693250AD0088D05FE4FD14FA47AF7E6AD35D43478C9B
+ 27F535D3D2DCCC9EFACB1F2535FC94DF01C05CE4EDD8CE4E1E3FCAD2A69FC302
+ 02B404E3A7080FB7264CC95C18F5D5BA97B64BA6520454A7026A7E6B4FA1BF6D
+ F1E5CB33D3A62DB9CB62B16896AFF2D2136CF58AE5AC300733FCC0DC1C3EB09F
+ E5666F63E93366B1108BF635735D2C686C67477376F19EADE59229D605A84E05
+ C8B19D210480467F2100918B97FCE6E6989818CDCE4FE5BDDFDF7283FC870300
+ F4F9043D5CB7F8F23B6E92BA548D23DF241F255F259F75EA9FCE2200E5E84FB9
+ BF3CEB7FF50DABE74D9B7DC935525F1334F2DFF7DB5B597D6D2DBF0300209A9B
+ 9AD88E7F6F66B3172C6421A19465AB2722C296E8EF1F589CB76BFD51C9A42840
+ F9D4A0439C4500420044D92F4CCA55ACF3175D77A3D4D704FD818FACBA1BCE0F
+ 402F549695B147EFBD87B5B78B0700D5B3E0A2EB6F24DF94BA140590AF92CF3A
+ 8D021C4500CAD19FC20A79F4BFE5AE972E499D9C75B1D4570DCDF63FF9973F60
+ 551F004EA82C2F635515652CE39C399AAA03164B44B42D6650E9B61FD6521E41
+ 9B8CAA8A029C450062F42701B05822A36DD3E65EFA3FF48216FEEFD597D8F6CD
+ 9BB8050070C486CFFFC53EFBF03D6EA9675AD665D7918F4A5D9A4D249F155140
+ AF387A91E4879A1080B0DBFFF7B54BADE1B681525F359BBFFD8A7DFCF69BDC02
+ 00A8E16FCF3FC372B66DE1963AC83797AF786DA9D4159381E4BBC28F7BA43701
+ 101FA2F09F6614E5FC7FDCF8398BA5AB6A6AABABD84B8F3EC42D00805A286D7E
+ F6C1FBE4B9332D8C9B309BD273310F40BE4B3EDCAB083812007A4DCCFE87669D
+ 77F5E8709B6DB0D457CD876FBE262FF8010068A7AEA686FDF3FDBF734B1D11B6
+ E8C173CEBD9276DBA65202F92EF930F9B2260120E83551FB0F9DB3E0AAB97453
+ 2DF4EC3EAD790600B8CEDAFF7B87D554D1E3FFEA9973AEECAB2400E4BB624D40
+ 8FF4F4820817E835CA212894B0248D983C43BAAAE6DD97D7B0CE4E9A840400B8
+ 4A6B4B8B1C496B2179CCC4E9D2852602EDCB81674501BD2903DD17F97F70CAC4
+ 59092C6080EA077E8A0BF2D9968DDF710B00A0078AA4B5EC86D5ED67193D76FC
+ 4C9AAC1711804803CEA2A79B422944FE1FB2E89265B3D4EEE74F8FF3D24E3E00
+ 0063A0C788DF7DE5056E39877CF5C29FDC3A4BEA520420E601544500E20D749F
+ 4207FA7070CAB869AAC3FFE2823CB62737875B000023D8B261BDBC5B965A468F
+ 993A53BA5004403E2CD200E20C11E82D0220C59005203E7EB8353E326C22BDA0
+ 86AD9B36F21E00C048B6FFB089F79C131F6D9D48BE2B7585008828E00C7A1200
+ BA2744202873D692E4808804CA239C42E13FEDE00B00301E2DAB69C96733675F
+ 3242EA8A3900F2E9B3FCDDFE865008BA4FAA11149F98142FDF51C1B19243F2E6
+ 870000E3D99B9727EF9DA996D8F86134114802A03905A0FB721A10654B88A39B
+ 6AC07A7F00DC07AD0ECCFE7133B79C638B4D8C952E22FC279F3EC3F909A70210
+ 6E8D51BDD9271DDE0100701F5A06596B782CF9AE4E01888C52250055E5656CFF
+ DE426E0100DC016D1FD6DADAC22DC7845B6D2E0900715A04C2C36CF478A1530E
+ 14EDE53D0080BB686B6D557D6E86252C8A7CB757E727EC0580DEA48C0002422C
+ 11AA04804EE50500B81F3A195B0DA161B2EFCA7E2C352102670881BD0010E20D
+ B210040645502DD12974243700C0FDA81D6C0382C2E9CC72E5E87F86F313BD09
+ 80ECFC748D086FA2DD469D82080000CFA076B08D086F26DF3DEDCBBC9D81BD00
+ 88378837FBAB3DE3BF0A02008047503BD872DFB5777E7195E9CDB9C507CE78B3
+ 23900200E019340EB60E7DB9270150BE51BD0054D2C124000077A371B075E8CF
+ 8EC27B7AB36A0168A8ABE33D00803BA9AFADE13D5538F4634702A0091CEB0D80
+ 67E85677EC9F2A0C13000080F7010100C0C440000030311000004C0C04000013
+ 635F1EA047076927D148A925486DD847EBBB3F92AE4EF9EF73691352D01BD3E6
+ 64B1D4F40C6E1947D98913F2E931A8C29887A89818B6E6FD4FB9E598A5F3FDE8
+ ACC0C3522B951AD5EAE959E20EA9C940003CC4536FBFCFE2130771CB58FE7CFB
+ 321CBD6E228C1400A4001EC2AA6E5B0597C8983587F700D00604C003040505B1
+ E0103AAACD3DA4CF44F4055C0302E001C22228A3721F894386B204A901A01508
+ 8007088F50B5A5822ED2A79FC37B00A80702E00122ACB4318B7B499F090100DA
+ 81007880A1239279CF7D8C9B3485855AC2B805803A20001E60E4D8F1BCE73E02
+ 0203D9A48C4C6E01A00E088007183DCEFD0240A4CF403500680302E06662E2E3
+ D9A06149DC722F693366323F3FFC2F05EAC1BF163733651A1DD3EE1922A36C6C
+ 64CA586E01E01C08809B99326D06EF79065403801620006E243030884D9CEAD9
+ 8939CC03002D4000DC484AEA441612EABE25C03D317CF418161DABFA44776072
+ 20006E64CA74CFE5FF4AD2FAE8F702EF0302E0465CCDFFF71516B0CECE4E6E69
+ 070F0701B54000DC0495FF5C5D0198FDE3F76CFFDE426E6927756A060B1A3080
+ 5B00F40E04C04DE829FFEDCDDBCD0A76EDE49676828343D8F829E9DC02A07720
+ 006EC2D5F09F42FFFD8585AC30C7750120A6CE403910380702E006F494FF0EED
+ 2B62ADAD2D7214D0D5D5C5EF6A274D12003F3FD527BB0193020170037ACA7F7B
+ 7377CBD796E666B67F8FEBF3007109896C70D2706E01D033100037A0A7FC4723
+ BF406F1A806A00700604C00DE859FEBB372F97F718CBD72B005815089C000130
+ 183DE5BFB213C7594D5525B7182BD2390F90929ACAC2DDBC1F21F06E200006A3
+ B7FCA7A4B9A9891D28DAC32DEDD0A3C1933DFC3012F02E2000066354F82FD0B3
+ 1E80C0D381C011100003D1FBF4DF9EDC1CDEFB0F7A2702A764CE60010101DC02
+ E04C200006A2A7FCD7D8D0C08E959470EB3FECC9DDCDBABB5D9F07088B8860A3
+ C7A772CB7C90F8D13C081DCB3662740A9B9036954D9F3B8FCDBF68315BFCB32B
+ D9CFAEFF25FBC56F7ECBAE5F7EA77CBE82D9C0D9800672F5CDCBD8C5575CC52D
+ 6DECDCF2237BE89EBBB875260F3CFF0A4BD6B1D3CFA7EFBECDDE79F1396EF91E
+ 1479D1B66B34F93A2C39990D1D9ECC860C1F216FC71E6AB1F07739E783375E95
+ DA2BDCEABFE06CC07E8ABEFCFFCC09402505393B78CF35D27D645930AD6C1C38
+ 6830CB9C3D975D7ACD756CF9BDF7B1BFBEF6367BE3B36FD8C32FBFC16E5BF947
+ B6E4CA6BE5F50F34E26B717E223090C63F73010130083DE53FA2A887094041BE
+ CE89401A0DE31313B9E55DD0E62659175CC896DDF307F6FCFB9FB027DF7A8FDD
+ 79DF8372E83E73FE0236246938E63874000130083DE53FF9012007CB7E6979B0
+ 9E790022CD4B8E0EA3C34DA64A23F875B7DDC11E9546F7E7DEFB98DD72F72A36
+ E7FC0B5854740C7F17300A088041E809FF0F16ED951F00EA8DA6C60676B0B898
+ 5BAED19F97054758ADECFC8B7FC2FEF8C4B3EC954F3F672B563FCC162DBD1CCF
+ 327800088001E82DFF39CAFF0505BBF4CD034C484BF7F8FE848E080E0961B3CE
+ 3D9FFDAFE4EC6B3E58CB6EB863857CBC99BF3FFE497A12FCD73600BD9B7FAA11
+ 00BDEB0148A452D333B8D577D04E45E4EC2FFE631DBB6DD59FE4C804397CDF01
+ 013000BD9B7FF6B402D01E5A24D4DDDDCD2DD7E80F0F078D1835460EF78343FA
+ 4F346266200006A027FF3F79FC18ABADAEE256EFD042A1927D3AE701B04908B0
+ 0302A013BDE53F5AE9A796029D69002D20192E8DC07D49737313EF81FE000440
+ 277ACFFECBDBB19DF79C93AF732290E8EB8783E80947D07F8000E8444FF84F68
+ 118053F300FAD603F47539B00502D0AF8000E8406FF9EF58C921565D59C12DE7
+ 34D6D7B303457BB9E51A2353C631AB2D9A5B9E072940FF0202A003BDE5BF5C0D
+ A3BF20375BFB67ECE9CBA3C33A3B3A587B7B3BB7405F0301D081DEF25F6EF636
+ DE538F2B9FB107690010400074A027FFA75CBE306717B7D453949FCBDADBDAB8
+ E51A9332A6C9E94B5FD11F2702DB5A5BD9219D65566F04FB01B80895FF9E7D57
+ D57F9A1E292EC867F7DE7A13B7B4B1F2912774CD3D10AB57DC6E4834E10AF4E8
+ EEB0E451DC328EFADA5A567AECA8DC4E1EA7768C35D4D5B13649303BA4B4A3BD
+ ADF574FFD4B54D16D3F6B676D6D9D9A17BA195A7C07E00FD00DA6A4B0F5A66FF
+ ED7165EEC09EBEDC23800E3D3182E6A646B675D306F6D2630FB35BAFBC8CFD72
+ E945B2A83EFBE07DF2E61E9BBEFA42DE68257F67B6BCDC9A26508F1E3A280B44
+ 557919ABABA991A3918E8E76AF717EA38100B888EEFC7F87EBA36F9E41F3007D
+ B52AB0ABCB18677BFDE9C7D9637FFC3DFB66DD27ACE2240D70402B100017D05B
+ FEA37CB3383F8F5BDAA15CB5A19EA239D7A19D75CCB8071E381308800BE82DFF
+ D1821E3DA5303A2C247FA711AB02CD356F03CE0602E0027D51FEB3C790340047
+ 87991E08800BE85FFE9BCD7BAE63C44460CAC4492C2C3C9C5BC08C400034A2F7
+ E93FCADD8DA83753894BEFC4176DC4416B028079810068C488F29FDE077A082A
+ 5B19B12C18F300E60602A011BDF9BF11E1BF40CF5A02013DCE8C7DF8CC0BFECF
+ 6B406FF98F3072F55DDE4EFD62423BF28E1A3B9E5BC06C400034A0B7FC575E7A
+ 82959D38CE2DFDD05662870FECE396EB200D302F10000D1811FE1BBDE4D490C7
+ 837DE4E830A01D088006F496FFF42CFFED0D23E60192468E92AB1BC07C400054
+ A2B7FC471839012828DCBD4B3E5A4C2FE95E727418301608804AF496FF2857AF
+ ABA9E69671D09375C505AE3F5720C03C80398100A844FFF25FFDA17A6F185159
+ A053838283692B08602620002A30A2FC6744AEDE1B46880B1DD9353E2D9D5BC0
+ 2C604720154C9892CEEE7DEC696EB9C62B8F3FC25A5AB46D84A1B662101018C8
+ 7EB5E2F7BA9FEFFF6AEDC7F2F774377F7AF2793676E2246EB9CEF30FDDCF367C
+ F119B7CC83913B0241005470F5CDCBD8C5575CC52DDFA5B2AC8CDD7AE5A56EDF
+ 1D0702A00F6C09E661F496FFBC8553958E91DC02660002E00423CA7FDE445F1F
+ 1D063C0B04C0097ACB7FDE465F6E160A3C0F04C0097ACB7FDEC6E8F1A9F20342
+ C01C40001C6044F9CFDBA04A82DE138F81F700017080DEA7FFBC15AC0A340F10
+ 0007982DFC174CCE9C26AF2D00BE0F04C0016629FFD963090B97A31FE0FB4000
+ 7AC16CE53F7BB065B8398000F482D9CA7FF6A01C680E2000BD60D6FC5F306858
+ 124B183C845BC0578100F48019CB7F3D81ADC27C1F08400F98B5FC670FD200DF
+ 0702D003660FFF05E327A7B1508B855BC0178100F48059CB7FF6D05A00A442BE
+ 0DF603B083CA7FCFBEABEA4FEE95AD9B36B0C7FFB4F294D1473CF4D2EB6C58F2
+ 286EB9CE779FFF93AD79F8016E1903F603D007F60370234694FF72B76F9537D5
+ E8CB96B36D2BFF36FA4893D2213F3FFC33F155F07FD68E29D30D100037EEFFA7
+ 96DD92081981D516CD92C7A4700BF81A100005A7CA7FFA8ECBA623BBE9E8EEBE
+ 664F6E0E6B6B6DE5963EF07090EF0201506044F98F76E8A510BCAF696F6B6385
+ 393BB9A50FAC07F05D20000A8C28FFB9E3F82F57C931280DA014C01613CB2DE0
+ 4B4000141851FE73C7F15FAE62D43C009136036B237C110800C788A7FFDC75FC
+ 97AB1C2B39C4AA2ACAB9A58F349C1DE8934000388694FFDC78FC972BD05C8451
+ 51C0A48C4CF9F420E05B4000388694FF0C38A3CF688C1280E09050796930F02D
+ 2000124694FF3A3B3AE4D25B7F8344C9A8AA04CA81BE070440C288F25F51419E
+ 7C54777FA3BEB6961D2CDACB2D7DD03C80DEF30741FF0202206148F9AF9FE5FF
+ 4A8C4A03E21313D9E06149DC02BE000440C290F25F3FCCFF0539DBB6F09E7E90
+ 06F816A6170023CA7FCD4D4D6CFFDE426EF53F8A0BF20D4B4FB02AD0B730BD00
+ 1851FE2BD8B58375767672ABFFD1D1D1CEF2A5EF680429A9935878043D2D0E7C
+ 0108808F3CFDE78CDD06A501FEFEFE6C72E6746E016FC7D4026044F98FE8CFF9
+ BFC0A8E70208A401BE83A905C088F25F4D65253B76B8845BFD9793C78EB2F2D2
+ 13DCD207454D010101DC02DE8CA905C0A8A7FFFAC3E3BFCE30725930CD018C1E
+ 3F815BC09B31B7001850FEEBCFF57F7B0C2D07E2E8309FC0B40260D4D97F795E
+ 300128C8DF992D45025DDCD207E6017C03D30A8011E53F231FB7F5048D0D0DAC
+ B8B0805BFA20F18C4B48E416F056CC2B002629FFD9635439904014E0FD985200
+ 8C2AFFF5C7C77F9DB1DBA0EDC2091C1DE6FD9852008C28FF757575B1C29C5DDC
+ F21E68C972536303B7F431216D2A0B0EA1736480B7624A0130A2FCB77F8F718E
+ E44968C9B251958BA0A020969A9EC12DE08D9853008C28FFF5A3DD7FB562E466
+ A14803BC1BD3098061E53F2FAAFFDB63A800CC9C854D42BC18D309C0240326FF
+ 5A5B5B5871411EB7BC0F5A127CE2E8116EE983CE0B481A359A5BC0DB309D0004
+ 0507F39EEBFC7BFDB7ACBDBD9D5BDEC9FA7FADE53DFD445AA3784F1D6D92801A
+ 416B8B31479F9919D31D0F4E27DD268D1CE972158036FF3872F0805C05F06628
+ 6C4F183C84596D367EC7359A1A1BD9E103FBB9A58E7193A6B0AC4517C9E55857
+ A9A9AA641FBDF5BABCB8C96C18793CB8E90400006FC748013065150000700A08
+ 0000260602008089810000606220000098180800002606020080898100006062
+ 2000009818080000260602008089810000606220000098180800002606020080
+ 898100006062200000981808000026060200808981000060622000009818C304
+ 00A7C300E019FCCEDACCDB750C1380F048DA491C00E06E22A3B41DC4E208C304
+ C01613C77B000077121513CB7BFA712400DDBCA9C2166BDC970200F44E547434
+ EFA9C2A11FF72400E2CDF2072B2ACA558940B481AA0400E81D5B740CEF39A6BB
+ BB9CCEAF530AC059BEDC5B04203ED41DEE1F5A2FDF71021D570400703F6A5380
+ FA06D9774FFB32DDB3C75E00C49BC407BA9A58438D7CC709744C3400C0FDA88D
+ 003ADAEA6BA58BC328A0B71440767EA975B634D4D10F710A040000CF60552900
+ 8D4DF53478774ACD5E044ED39B00D007E4D6585FA32A02481E3396F70000EE82
+ 8E544F1A398A5B8E696EA822DF3DEDCB52732A004225840874363456574957A7
+ C4C4C74B2290C22D00803B98903E95855A2CDC724C7D5D75B574B18F00A89DA6
+ B74940A1189DB5B5E5AA0480C8983D97F70000EE2063D61CDE734E6DB5ECBB42
+ 00A89D85A33900FA604755C5F14ABAA986CC59100000DCC9D499B378CF39D555
+ 272AA44B87D4C897CF1AFD09477300B200949F3C4C3F441543868F60F18983B8
+ 05003092E494B12C3A56FD8ADBF2B212A500904F6B1680F6ED3FAE3B5C73B294
+ 7E8853E881A04CA40100B8052DE13FF96CF68FFF3A2275DBA5A65A00E80D4200
+ C8E9DB2BCA4AEA1A5B6B0BA5BE2A326767F11E00C04832CE512F00F5AD5505E4
+ BB529704807C5908C01922E028029005406AAD85F93F644B5755A4A44E646326
+ 4CE41600C008D2669CC386258FE496738A72B790CFB64ACD5E00CEC0D124207D
+ A84D6ACD5FAD7D616B6565E5591FEE094A03AEF9D5326E0100F4423E75E58DBF
+ E29673C8573F5FFBFC56A9DB2C35F261F265E1D767D0530A4050CE408D3EDC52
+ 54B8A5B4ADADF110BDA0068A003017008031CC5DB848D3E8DFD9517B70DFDE6D
+ 27A56E8BD4C887853F13678880A308803E20A700526B3EB477FB0EE9AA1A522C
+ 7FFF9E7E3C00402D414141ECA7BFF825B7D4B1BF307BA77469929A4801C89785
+ 5F9F416F1E2A04804207FA214D9BD6FFFD47E9AA9A41C392D8FC8B2EE61600C0
+ 152E587A398B8D1FC82D756C58FF2EF92A85FFE4BBE4C34200CEC25104409306
+ A723801F377EB0BFB6A282C20AD5FCF47F6E60C1C121DC020068C11216CE965C
+ 752DB7D451575351BA65E33FF64B5D2100E4C33D56000847313ABDF9740420B5
+ C69C9CAFBF95AEAAA13D026EFCED0A6E0100B470F38A7B5844A4955BEAC8D9F1
+ 25F968A3D4440A2026007B24805F7B83B61FA5F704496D406EF637650B2FBE61
+ DE80E030754F2348D0934B6DADAD6C6F5E2EBF030070C6E552F4BC70C9526EA9
+ A3A1BEBCF2CF775DF8547B7B4BB964D263FC24046212B04711703407404DCC03
+ D06C626363634DD5FA2FDFF948EA6BE2BF6FFC955CC704003867FADC79ECB29F
+ 5FC72DF57CFBC53BFF201F95BAE4F8E4B3CAFC5F930010F401E53C00FDD0FAD7
+ 9F5BF14DD5C9E347A5BE6AA81AF09B557F62439286F33B00809EA088F9D7BF5B
+ C5FCFC1CB9E6D994551C3FF2C6F32B28FCA76DC0C857EDF3FF1E71F65BE883A4
+ 22F28220A9357475B5D7ACFBF8A9F7A4BE26422D616CC5EA87597804CE0F00A0
+ 2768BFFF15F73FC4824342F91DF57CF6C193EF916F4ADD06A9D92F00EA156773
+ 00029A0B20B1A016B8276F73DDDC05574F8CB06ADB078C9C3F65E224B6FDFB4D
+ ACAD8D040A00404458ADECEE07FE2A3F51AB9563478AF63C76FF957F93BA94FB
+ D32620CA148004A05711503309281022204F0A3637D5558F1A37679EC562D174
+ 4E11D534A767CD67B9D9DB587DADAADDC600F0696895DF1F1E7B9A0D1D91CCEF
+ A88796FDFEFDD5954F971CD84DA53FDABB835200AA00500440E1BF43D4460082
+ D391C0A1FD394D99331725C4278CD02C591409D0F2C6C307F6B3D2A3F4C42200
+ E664EA39B3E591DF6AD374D8C7690E146DF9EEB5E7EEFC54EA8A997F4A0128BC
+ 7638F927502300F623FCE948E0FB0D1FEC9F3DFFA7A91191DA0F05080A1AC0CE
+ 997F9E5C222CCA478910988F9F5C752DBBE9CEBB59D08001FC8E364E1C2D2EBA
+ 6779D6135D1DEDB4408F427F1AFD29FFA7D0DFE9E84F688D0004721420FD62BF
+ 9CEC6F8BE79CFBD319C11AD60608E829A74919D3E45D84766FDBCA3A3BE97B03
+ E0DBD0EAD85BEE5EC92EBAFC0AD9075CA1A6B2A2E2BE150BFF5F4DD5090AA1A9
+ F447CFFEDBD7FD1D8EFE845A01B0FF96F483E548A0AEB6BCE3F8B17D87A7CC3A
+ EF9C01019640F9558D248D1CCDE65FB898353737B1927DC5ACBBDBE9F706C0EB
+ A072F8798B97B0DFDEF780AE3D33DA6B6A5A9E7EE2978F14E66DDA239994F78B
+ D1DFE9CA3F7B5C8D0004B2101C3BBCA739C83FB82671686AA6C512E692A48558
+ 2CF2868733E72D605515E5ECF8E112FE0A00DE0FED9475E77D0FB2AC0B2E6221
+ A19A83E5D3D0599D9F7CFCF80B5FAD7D718B6452DE4FA3BF28FD395CF7DF13AE
+ 0A80F8E1E2EA979FB3B162744A7A505272EA387ECF2522AC51F2DCC0C4A999EC
+ 784909AB2C2FE3AF00E07DD048FF9B7BFFCC2EBEE22AB9D4A797ED9B3FFDE8D5
+ 676F5F2775C93144E82FEAFE9A9C9F7065B4A6FC9F3E47CF07044B2D4C6A36A9
+ C54A314EE2EAC7D72F1B3F69EE6CC9D60DA5027B7273D8B6EF374A7FF8465676
+ E2047F0580FE4B7C6222CB983557DE1467ECC4C92EE7F9F614ECDEF8FDCA3BE6
+ 3FCBBABAC81168C75F51F317ABFEC8F1554DFE095CF966F4196A240494F3D3B2
+ A570A945498D4460E01DBF7BEB8AF169E72D898D8D33E62F972031387270BF24
+ 049B2441D8C40E16EFE5AF00D0F78C189D2239FC1CD9F1A99E6F94D31314F6E7
+ E57CF5F1930F5CFB9EE4FC34E3AF747EE5ACBFA6D19F70F55B2A458022017AE8
+ FF3F22C058DC6557AF9AF7939FDF7E7DF880188A120CA7A2EC243BB0770FCD86
+ B22AA95553ABF8CFB5A19E2223008C81D6AED86263E54370C5355A6A745437ED
+ D7AF75D30EB534B455B67EFCE663AF7EF8F603DF4926E5FCE4FC62C92FADF6D3
+ 9CF72BD123534204681E41A403240294E8D0BA80B8E97396A6FEFACE35B7455A
+ E35D5BE5A083EE6E4D9110000ED1FA708E11D4D596553DF3C84D4F6FDBFC499E
+ 6492F3D38CBF58ECA3EA693F67E81100422902940E884820426AF2BCC0E061E3
+ 9256AEFEE8B6C42129EA8E340500B0E347F7EE7B60E5D2A78F1D2EA4729808F9
+ A9D46798F3137ACB8002F10568D8A52F75BAD5D756B47CFDAF37B2C78C9F111D
+ 9F303CC9C8DC08005F83E6BA72777EB771D5F2ACA7AAAB4ED063F7A2D42716FA
+ 885ABF6EE7278C1200427C197B11E8E8EC6CEBF8EECB37724B8FEE2F1E327C7C
+ 42A43556F3D261007C9DA387F714BFF2CCED6BDE5873D7BACECE762AF391F3D3
+ C84FCEAFDCE2CBE59CDF1E238763910E88EA80A81050999052029A1BA0B4C0B6
+ E467774E5B7CE9ED97C60E1C9228D900989A93E5478F7FF6C1131F7DF2DEA374
+ 9807393C35CAF5C5E61E62A6DF50E7278C8EC7850850534E0E0A21A0DD40A845
+ F9FB07D9AEB9717556D6C29F2F8E8E1948C20080A9A8AA3C59BDE1CB37D7BDF5
+ F2CA0D5D5DEDE4F434BB4FA3BD08F7C9F1458D5F19F21BE2FC84D10240080120
+ C4E4A02815D21A486A14119010582D166BF48DB73D7D415AE6A2B95131719A36
+ 1801C01BA9A92CAFD8B9EDF38D2F3F7DDB174D4DB594DFD3684F4E2F9EE5A726
+ 4A7C22DF270C757EC21D02201042402981582F40CF3D2A230251312031089F3A
+ F3E2E4ACF95766A48C9D39316E48D2504C18025F8026F6CA8E1E3A52B4E7DFB9
+ 1BD6FF7D7BF68F6B69F30E1AE185D3D3CCBE72C4A765BDA2BE6F68C86F8FBB3D
+ 4C880041D18088088410503420C44034F9DEF0516903175E7C63FA8449599307
+ 0F891915109860E48425006EA5B3A3B4F3D8918A7DF9B91B73BE5CFBF28E43FB
+ 76D20A3E72701ADDC9D94513F784E38B11DF6DA3BE124F0CB1E2770831A068C0
+ 5E0844544069824815E84AF74263E286444C4E3F6F68DCC0A4186B6C62B4CD16
+ 17658988B55A23A2232DC15191E1A1D688105B78182206E00968446FA96E686C
+ 68AEAD6F6AADA96BACAFAAABABAFA8ADAE2EAFA9AD3851557EB2A43267C7D747
+ 2ACB8FD2E84E0E4E8D427A11DA0B9B9CDEDEF1ED477CB7393FE1498F71240494
+ 1ED0958440290A2402C2A6AB789F6822AAF0F3F70F92AEDDE2678BDF05809170
+ C7F4EBEEEA6A17937262B416B3F4D4287C27A716CE6DEFEC7415EFEB13C717F4
+ 85A388DF291C55CC1108311057E1F062EE40E9F44AE7179FA7267E2600EE4238
+ A9C8CFA90911B01702727672722108C2D9954EDF278E2FE84B6711BF5B5C8503
+ 0B3110CEAD747C7B8717367D4E7C160077A3745AA50828FB4A3150DEA3BEF81C
+ D1278E2F10CED7D7080716D83BB5B0C9E1C57DF19AD2A60680BB11CEAF6CC2B1
+ A991A38B7BCAFBC2E90971AF4FE98F0E23BE93F2BB515F8CEECAD77B7A2F616F
+ 036004F60E2B6CA5338BAB707C81FDEBFD82FEEE28CAEFE7E8BBC2E1415FE0C8
+ 997B727E00000000000000000000000000000000000000000000000000000000
+ 00001D30F6FF01967F3F46ED7D2A740000000049454E44AE426082}
FileName =
'E:\YandexDisk\Development\Delphi\AErender Launcher\src\AErender ' +
'CC\icon_256.png'
@@ -535,684 +535,684 @@ object SplashScreenForm: TSplashScreenForm
PNG = {
89504E470D0A1A0A0000000D4948445200000200000002000806000000F478D4
FA000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- 549B49444154785EEDDD077C1CC5DDFFF151EFB625DB72EFBDDB72078C6D8A29
- A1F3E40143020904082990841020104842092D05481E5268212424E14F0BD554
- 630810F722F75E254BB6E4AA5EFEFB3B769CF1F9249FA4DBDBBDDBCFFBF59AEC
- CC4ABA93CFC4BFEFCEEEEC262844937CDE7CE600105AA3DD100514A3C84BB4B7
- CDE1730780A38553F81BEC2D228042D4364D157BF373D5FDE0CFBAA9CF9EBF13
- 00F1AAA9221FBC5F8FCDFD4DFD2CA1A09528362D13AAE09B9FA1F975BD3FD43E
- D986FAEC43ED03807812AA90CBBE50455F17F750FB44A8D72210848982D3BC50
- 855A8FCDAFE9BEB94F177E199B7DF37BF45698FB01205E99C55EE8BEDEAFC752
- C8CDBE30BF477F2DB86F32BF8620149C63852AC47A9FDE2FDBE0021F6A6BB6E0
- 7D426FF56B09BDAF29C7FB3A00B8E578C5D6FC7AF0D1BD2ED6D274F10FB52F78
- 2BCCBE6C753385DAE76B1493FF328BB090CFC66CFAEBBAAF0BBAEE0737FDB5A6
- B622B8AF49DF1C03402C0B2EBEBA1FAA8837B70DD5CCAF495FE8BED94CF275DF
- F37B91D1C557D39F4770A14EB29A1E9B4DF607F7CD7D7A1CEA6785F91ED29726
- F41600E2852EC266410E2EDA6693FDF541FBF4D8DC1FFC3DD2F4CF0A3D96ADD0
- EFA7E9FDBEE3D742A38BAE661662D9CAD82CDCD2370BBB1E1FAF25AAE4E4E413
- A75D9C3F72CC8C3E5DBB0FEC9393DBB95B5A6A5A5672726A6672725266624A46
- 466A637266627A52467D725A4666637546424D6DB2F5B30010371A5353EA2A12
- D22A93EAAA2B1BAAEA2B6B12EA2A1A6A2B2BEBEAEA2BEAEA6A2AAA6BAA0F1F2C
- 2F2D2ADEB5616BE1B2B95BFFFDF18B25AAAEAECEFA5129D052CCC369F2BDE6F7
- 4B5F87013304E8FD26FD35DFF05B00D0455EE83FBB2EF87AFB45E13EB698EB26
- C5596F8FF4C519177CA7DF8891D38676EADCD32AF41D7B676777E899519FD423
- A9438774EB7B000061AADFB7AFAA32A97EE7A143FB761C2CDFBB6D4FE98EAD2B
- 0B3F5E33E795DF6EB6728104036952D883FBBAF807371D0C741030038119067C
- 1304FC1200820BBF1EEBBE1471D9EAFE51C5DDDEA6D87DBD4D3EF5ACAFF59A7A
- F29727F4E83D747C56A7EE637252D3F3ACFD0000871CACA92A3B5CBA6BE9CEED
- 6B167F36EF8585EFBFF5CC766BB70E01B5C6568ABD190C745F0ABC0E033A0808
- B32FE23E08C47B0068AAF04B41378BBF6E4D157BD9A64E98FCA5FC53CFF9C694
- 9E7D868DEFDCA9D798B48CCC2ED67E00804BAA2B2B7697EED9BE6CC7D6D58BDE
- 7FFD89CF17FEE78D126B778DD5CC30102A14E8A60BBFF4856F8240BC0680E315
- 7ED9EAE2AF0BBCF4538DB1F453BA771F9473F935F7CD183A6AEA192A217D7C5E
- 5EC778FDCC0020A69595ED6D548D558BD6ACF86CCE5FFFF4E3B9BB76AD3F68ED
- 96C26F0602E94BB1D7631D0264EBAB20106FC54CFE3CFACFA4B752E875D3855F
- 8ABC6E52EC7593A29F9A9C9C9E7EE5371F9C3076D2AC33BBE5779D9694D63EC3
- DA0F008811F5D5FB2B8B4A8A3F5E3AFFEDB7FFFCFB5B17D6D5555559BBA5F8EB
- 30A09B8400DD741090AD6E420701D99AA120A6C5530090C2AEC99F4BC6B20D3E
- DA0F59F4AD9636F38C2B7A9F75D10D1774EB3DECB4ECF4CCCED63E00408C3B54
- 55515AB46DF57B6FBDF4E82B1FCE79769BB5ABDA6ACD8581E05901E9C7DD6C40
- 3C0400F933E83F8759F875D1D74D177E5DF08F14FEB32FFAEEC0B32FBCE18AEE
- 3D724F4948E868060900409C686CDCDBB06B67F9076FBEFCE8B36FBEF4D8066B
- 971904CC40A043806E3A00984140B666288839B11C00CCC22FCCA2DFD4117FA0
- E0EBED972FFBF1A899E75EF3D5F4B4F627E6E6E6C6F267010008537979796355
- F5FE7FBFFFDA1F9F7DF16FBF28B476E920A0B7CDCD0804CF06C46C1088D5A267
- 167F5DF8656B1EF14BC197E26F1EEDCB7AFCB4AF5C73FFF819A77FE58A8E9D7B
- 4CB4C600009FDABB67E7FCB973FEF2EC734FDCB6D81A4A0030AF1590260140C2
- 80392320053FE667036231009853F4BAF8EBA3FEA68EF8A5A59F7BF1F7865C78
- D92D37E6E6751D678D010008D8535ABCF8957FFCE2D1375E7C74AD3594102061
- A0A91981A66603641C33622900C8EFAA7F5F5DF8651B7CD46F1EF1070A7FCFBE
- 23F2BE7FDBB357F71BD4E7A284848EF27D00001CA5B1716FFDA6755B5FFCE5BD
- 973F59B47D4DB9B54B07017346206E6603622500842AFEFAC8DF3CEA370B7F86
- 4A4ECEB8F1E6A74F9B7AF245DF4E4BCFEC64ED0300A059D555157B3E9BF7D2EF
- 1E79E8EBEFA9BABA4A6B9734330884BA3E20E642402C040029F45AF0517FA8C2
- 2FE7F9334E3DF3AA01977CFDE7DFEB9CDF6382350600A0454A4B762EFCC7D377
- FEE6FDB79FDA680D250404CF08E820103C1B203C1F02BC1E0074F1D747FD66F1
- 97C22F01409FE30F1CF5A7A76767DDF5F09CAB06F71E7C59624E27F91E00005A
- A5E1E09EDA75DBD6FDED673F3CE3A9AAAA4387AD5D7A3640370900E669011D02
- 74F1D781C073A4907A5570F197A60BBF3EEA0F1CED5B2DD36A5993A69ED7E7A7
- 0FBFFD40CF3EC36725A4657AF9CF06008801524B3AE5F71A7BDA595F9BB063CB
- DAE5453BD7CB2C80D425DD84EE873AE26F6ABFEBBC5824E5C30A2EFEF27BEA73
- FD474DF55B4D8A7FF6B537FC76FAE5D7DEF350564E5E6F6B0C0040C4A467E674
- 193BE5C2333A75EABA63F1FCB7765BBB74D1D74D33FB5AA87DAEF35A00303F48
- D9EAE2AF03C07F2FF0B38B7F5656FBF6F7FC66DEF54346CDB8313BBB1DCFDD07
- 0038222D2D25BD73D741A79E70F245599F7DF4C2CADADA6A39B237EB5673C2F9
- 9EA8F25200303F44D99AC55F4FF94BD19722FFC594FF4917F6FBC943731EE8D9
- 7BF0291919199EFB700100F1456A4DC7CE3D469E72D655E38BB6AD5BB673C75A
- B926C0AC5D7ABABFA9D3019EE19500201F8AF901EAC26F1EF5EB23FF40F1BFE2
- BA074EF8DAF5F7FF2A3BAB432F6B0C0040D4A46764E54F39F9FC333332DB6F5A
- B6E8BD126B9759DC830BBD8C752008FE9A6BBCF08BC8EFA07F0F39EAD74D8ABF
- 3EF237A7FDB3BE7BCBD3A7CF38F19C1FC7CB55FED5D555AA78C70EB56BFB36B5
- 6BDB56B5A7A458551EAE50959515AAAAC2DA5AADAAF2B0BDAD548D0D9EBC9E04
- 808F252525A9B48C0C9591991968E919F6D66A9959D9AA4BB7EEAA5BAFDEAABB
- D5BAF4E8A19293E3E29F6F557FB0B476EE27AFDFFBDB07AF7ACF1AEA5502E67D
- 03F452417DAF00CF2C13743B001CAFF8EB237F99F6CFB25AE6ADF7BCFA3F8386
- 9D78435E5E47B77FF756292B2D51854B16A94D6BD7A89D56B12FB28AFE9E12B9
- 9E0400FC21313151E5DB81A047EF3E6AD0B0116AF8D80295D3BEBDFD1DB1A5AC
- 6C6FE3FAD5FF7EF4FE3BCEFF7FD6B0C26A120464B58034CF8600378BA859FC65
- 2B53FEC1C55F5FE92F77F5CBB9F797EF5F357CF4C95758E3987160DF3EB56AD9
- 62B572F122B5C22AFCC53BB6DB5F010098FA0C18A8468C1BAF465A6DE8E83181
- 99835852B86CDEB33FF9E1A94FA9BABA83D650CF04E89B07992140DF2F40B816
- 02DC0A002D29FE99494969ED1EFAC3FC1FF41B30FA1C6BEC79BB77ED541FBFFB
- B69AFFF13CB56D933C721A00D0120909896AC090A16ACA8C99EAC45367A9DC8E
- B17137F72D1B97BFF6C3EB26FDBABEBEFA803594D900CF8600B70280147B21EF
- 2F7D7DC1DF31C5BF7DFBFCDC07FEEFF33BBB74EF37CD1A7BD6E18307D5E71F7D
- A0E6BDF3B65A5BB8DCDE0B00682B0903A3274C54D34E3F534D3C699A4A4B97F2
- E05DC5BB367C7CEBB74EFCF9FEFD25F240A1A6428004000902BAF0EBD30251E3
- 460068AEF8EBA57E81E29F9696D5EED74F2CF979B79E834EB2C69ED3D8D8A096
- CEFF8FFAE8ED37D5A24F3F56B5B5F2F70A00704A7A46869A3C7DA69A71E697D4
- D05163AC70E0D6716CF324047CE78A917705CD04480B7E86806B2120DA9F9CBC
- 9F6EBAF84B93C2AFAFF60F2CF34B4A4ACA79E80F8B6FF2E2B47F434383FA6CEE
- FBEA95BF3EABB66FDE64EF050044D3E0E123D5855FB9528D9D3CD5934160F3C6
- E5AFDF7C5DC12FEBEBEBE59A00B9305082805E1D204D02801902A27A2A209A9F
- 5870F1972647FED2CC697FB9DA3FFBEE47E65E3372F4F4AF587DCFA8ABAB551F
- BF3B47BDFAFC735CCC07001ED177D06075E1E557AA49D34E0E9C2EF092954BE7
- FDE58EEF4F7FC2EA1EB29A5E26A84F07C82C80BE2620EA21408EBEA341177E71
- DCE27FEB3DAF7CB960E219D7587D4F90C2FFDE6BAFAA477E7E67E0E2BE430764
- 460700E005FBCAF6AACFE77EA03EFFE8C3C0CA815EFDFA7B664620BF6B9F317D
- 078C3DF8EF0FFF2157849B055E9A9EF2D7055FB651FBC5A315007424D3C55FDE
- 579FF3D7012050FCBFFDA327CF183976D60F3332323DF1B7B772C922F5E0ED3F
- 52F3DE794B551C96F00600F0A283FBF7A9059F7CA496CDFF8FEA3B688867560E
- 64E6749ED4ABCFE09D0B3EFDD7366BA80BBF59F4755FE81060EE7344340280FC
- 4174D3C55F5FF427C53F70C19FD5B2BF72CDFD53CF3E7DF65D991D3A452B9834
- 69DFDEBDEA4FBF7A503DF787DF59FF51EDB7F70200BCAE6C4FA9FAE08DD7D401
- 2B100C1E314AA5A6CAB1A67BE480B66FD7DE27A466775CB77CF17B72E73773BA
- 3FEA53FF9AD385F678C55F8EFC03C57FD24917F4FDEAF50F3C9C9AD95E02816B
- EAEBEBD53BAFBCA87E79D78FD5A6756BECBD0080D8D2A836AE59ADE6BEF586EA
- 90D751F5EE3FC0D5D30209699949FD86144CDDB271C5C7453BD6C9747270F18F
- 3AA73F8DE0A97F29FCC714FFACAC761D1E7B66DD23B99DBA0CB3C6AED9B669A3
- FABFFBEF565B36ACB7F70000E2C1F0B1E3D4B76EB94375EAD2D5DEE38E7D65BB
- 577DE78AC1DF3B7CF8C03E6B281706CACA00F31E01D2241848137A1B714ECE00
- 9847FFF23EFAE85F9FF73F32F57FF7AFE77EB367DFA1D3ADBE2B1A1B1B0329F1
- 9777DEA6CA4A4BEDBD008078515A5CAC3E7AE72DD5B36FBFC00389DC929E91DD
- 79F89819E9EFBFF9E4526BA8670082B7C2F15901A7028059FC9B3DEFFF8DEF3C
- 3A7DEAF48BBF63F55D214FD7FBC343F7A9979FFBB36AA897E598008078545B53
- A33EFDE0DDC09355478C2B5089894E1E03372D29257B78C78E5D372D593067A7
- 3594A26F3629FC8E177FE1D49FDE9CFA97C22FEF635EF11F28FE0513CFEA7BC5
- F5F7DF97949422FBA34EEED37FEFCDDF532B972EB6F70000E2DDFA55856AF9C2
- F96AF484492A333BFA0F1CCAC8C848E83768F4844D6B977C52B46B835C0F105C
- FC839B1C4CCB36A29C0800E6D1BFBCBE0E01120074F1CFCACA6AD7EEAE87E7DC
- 9B9DD3B197358EBAB96FBFA11EFEC96D6A7F7999BD0700E017B252E0A3396FAA
- DEFD06A86E3DA35F86E4C07754C18CA1EFBFF1C487B5B5D5FA6E8066D3053FE2
- 855F8B7400308BBF39F51F7CDE3FEBCE87DFFD469F7E234FB5FA5125E7FB5FFA
- CB33EAD9DF3DC2943F00F8D817A704DE571DF3F355BF4183EDBDD19391D92E7F
- E88893123F78FB6979825C70F137438023221D00CCA97FF3C8FFA8A3FF19675E
- 39E4E41997DF929E99A9BF3F2AE41EFECFFCF637EAB5BFFFD5DE0300F0B746B5
- E8D34F544A6AAA1A327274D4970A76CCCA1A56525EF2D9960DCB64558014FDE0
- 6703485F485F7EB9888582480680E0A37F29FEE6D1BF14FFCCA4A4A476B7DDF3
- CA1D1D3B77EB6E8DA3469ED4F7DB7B7F1698F20100C054B878A1AA3C7C588D9E
- 3831AA2140EE0F30706041EF375F79ECA3C6C646FD5C00F394800E021117C900
- A08FE6E535750B9EFACFFEF64D4F9C3172DC8C8BAD7ED454561C0EDCCE77C9E7
- 9FDA7B000038DAFAD52BD5EE5D3B55C1D413A3BA422033BB7DD7BC4E3DE456C1
- 5BAC61A8EB01B488CE0244EA4F187CF42FCDBCE18F0480AC9E7D8675BEE29B8F
- FE2C2D2D45C65121C5FFEE9B6E50EB0A57D87B0000084D6E082737839B327DA6
- 1502A27796BA739721C33FFFE4FFBD7BE8C05EB9295053170546742620520120
- F8E8DF3CF71F28FE56CBB9FD176F5CD7BD67DF71563F2A64DA5F8EFC29FE0080
- 7015EDD8AEF6ECDEAD269C7852D44E07A4A5A5660C1E3639FDDD379E9075E912
- 007433038088D82C40240240F0D1BF79EEFFC8857F679E7FFDC859E75C7C6342
- 42742EFC930BFE1EBBF7A74CFB03005A6CEBC60DAAA6BA3A70AF8068C9EB943E
- A8BCECC0828DEB16EEB586C121409841A0CD221100A4A0EBE26F1EFD4BF19716
- 78CCEF6D77BF72476656746EC22C4BFD9E79ECD76ADE9CB7EC3D0000B4CCBA95
- 2B547A4666E08982D12007C87D068EEBF3FA0BBF7ADF1A4AE1D7170506CF0268
- 6D0A036D0D00A18EFEE5DCBF9EFA0F5CF93FFB6B3F9F3CE184732EB3FA5121EB
- FC5FFB074BFD00006D23770CECD2BDA7EA3360A0BDC7595959EDF21312135716
- 2E9D5B640DA5E84B08903020C55E5AC46601DA3A1D2F855FC8EBE826A1428780
- 40109879FA95B3AD6D547CF8D6EBEA85679EB0470000B4CDEF1FBC37B04C305A
- A6CFFA9AD44C3988961A2A17D34B4D95DA6AD65AA16B70ABE817690DFDC67A06
- 407E39F31440A0F89F77E9CD233B77EF3DC6EA3B4ECED93CF59B87ED1100006D
- 575F5FAF1EBDE7A76ADF5E3935EFBCAE5D7B8F3DEFCB378DB4BA721A5DD753A9
- ADBACEEABA2BF4B6C5DA1200343391E853007A0960DAACB3AFBDD4DA3A4E9EEE
- F49B9FDD11B8F21F0080483AB0AF3C7061B95C601E0DB3CEFDA6D44E09007A06
- 409AD458B3E6B6892489D6D0E94337791DB3F0CB857F59A79F73EDF053CFBCF2
- 1AABEF28B9E8EFF70FFD42AD5AB6C4DE03004064951617A9848444357CACF3AB
- D9DBB5CFEB5156BAEBF34DEB17EB15017274AB5704982B035AADAD09428ABFBC
- 869E969000A0A72BD2CFFB9FEF5F626D1DF7E19BAFAB7FBFFF8E3D0200C0192F
- 3EFB945AB964913D72D6B997FC406AA8791A406AACAEB7527BA506B75A6B0380
- 79F42FAF21CD5C019076D2CC4BFB66E6743EC9EA3B4A9EE9FFF463BFB2470000
- 3847669C1FBBF7675179947CCF5E9D4F9A76CAEC3E565766D6A5B64A9D354F03
- 98B5B8C55A1300CC37D201E09819802F5D7CE3D979791D5BF54B854B2ECCF8ED
- 7D77071EE908004034EC2BDBAB9EF8B5F3179C2724744C3CFBA2EF7EC9EAEA19
- 00694DCD00B4B8DEB6260068F2B3BAF89B17FFA5A6A66666F61B307ABAD577D4
- 9C57FE5F6006000080685AF0C9476AE9FCCFED9173FAF61F3D5D6AAAD5D53300
- 526765AB4340ABEB786B7E5052864E1AA14240EAFF7EEDCEF169E999B956DF31
- E57BF7A8179E66BD3F00C01D4F3FFA2BC767A0D333B2722FB9F227055657CF00
- 842AFE665D0E5B4B03807E03D99AC5FFC8D1BFD5D2264CFDD2A9D6D6517F79FC
- B1C0D23F0000DC208F0E7EF5F9E7EC9173264C3D476AAABE0E40D75B330498B5
- 396C2D0D009ABC890E01F24BE81090DAB5C7C0F61D7B7673F4E9092B162D509F
- 7EF09E3D0200C01DAFFEEDD9401070525EAF6E933B77EDD7DEEAEA00A0EBAE2E
- FE2D2AFC5A4B03807E2369FA1790E98823D3FF977CF5CE69D9C91D25A938426E
- F4F3D423BFB4470000B8476A929C0A90D5014E919A3AFBEB3F9555753A00E8BA
- ABEBB0599BC3D6920060BEB04E1DFACD03C55FDAF071D3665A5BC77CF0C6BF02
- CF6A0600C00BE46240A7EF0D306AF4C9525B0375D66AE62C80D462B396871D02
- 5A3A0320F4CFC8569A4E22C9630A4EEF9A92D27E84D577445D5D6D54CEB70000
- D0122F3FF767BBE78CC4D49C915263ADEE919A2BBBED26F4366C2DF9014915BA
- C9CFE9F4716406E09433BF3621373737ECF4D152F3E6BCADCA4A4BEC110000DE
- B072E962B56EE50A7B1479725F9D99675D39DEEA06CF0048939A6CD6E8B0841B
- 00825F50BF992EFE81D667D0E8D1D6D61172D39F57FEF6AC3D0200C05B9C9E05
- E8DB6F8C3C59F748CDB59AD460A9C5C1B53CAC10106E00D0E4FB759337962988
- C036292929AD4B977EF2F842477CF6E1FBAAA468973D0200C05B96FCE733B565
- FD3A7B1479799DFB8D905A6B758FD45E7B6BD6E6B0B5E89B6D922CF4D1BFFE05
- 52A64EFBDF9E72C302AB1F718D8D0DEAE5BF3A9BAC000068AB971D9CA9CE6997
- 953775DAC53DADAE1CFD9BC55FD7E516093700E81797A653863479F3C054C4D4
- E9178EB5B68E58FCD9A76AE7D62DF60800006F9A3F6FAE2ADEB9C31E45DEA493
- 02B5D63C05A0438034B3561F97FCC0F104BF908CF59BEA96DCABEF28C7CEFFCF
- 7DFB4DBB07008077C9FD003E7EF76D7B1479FD068D1D656DF4D1BFD942D5EA66
- 851300349D3074CA08147E69494949A99DBAF51E6EF523EEE081FD6AF1E7FFB6
- 470000789B0400A76E0C94DFA5F770ABE6EA53003A08484D366B7458C2FE469B
- BC897E239D3A52669E7955DF8CB4CC1CAB1F7172F15F7D5D9D3D0200C0DB4A8A
- 8AD4DA42679604A6A665B6B36A6E3FABAB6BB034A9C9BA3E872D9C0060BEA859
- FC8F8480E1A34E1C646D1D31EF9DB7EC1E0000B1C1C9D30043BFA8B9FA1A00B3
- 269BB55AF79B144E00D0F40BEA76240074EAD257AE4A8CB85DDBB7A90DAB57D9
- 2300006283CC5E3BF5A8E0AE5DFBF6B03681FA6B355DF8CD16969604007154E1
- B75AE01C4487BC6EDDAD6DC43999A00000704AC5E1436AF167CE5CBFD62E375F
- 0280790D801904C276BC00A05F4C177EFD066608486A9FD3CE910030FFE38FEC
- 1E0000B1C5A91A96D33EAF9BB5D145DF2CFE669D167A1B927C6338CC1739EA8D
- 525333521AEA93BAC8172269DFDEBDACFD0700C42C793E8013AB01721213BB24
- 25A5EAA37FB3266BCD167E2DDC0020E40575939F0B1CFD8F9E34AB4B874E9DE5
- 1789A8954B9D7DB42200004EDA57B657EDDAB6D51E454E524EE79482C967C881
- 77A00E5B4D8700DDC2D2920020E4FB75F10F6C870D3FC1910B000B1D7EB63200
- 004E5BE9502D1B3CFC845ED6E6482DB6B7D2C216CE379B47FDC21C27F6E83548
- 2E468838A73E340000A2C5A983D91E3D8748EDD5455FD765113C6E922EEA4D09
- 7E0119EB379496D42EAF5BC4CFFFCB4D14A4010010CB562D5D1278A05DA4E575
- EE966F6DCC237F69A16A7693E4079AD254F117BA9F9096929E11D813419CFF07
- 00C48343070FA8AD1B37DAA3C8494949CFB436476AB1ECB3B428043417004CE6
- 0B986F9898929616F100B071CD6ABB0700406CDBB826F237B44B490DD4DE23B5
- D8DE6A66BF49E104007921B31DF586A9C9919F01D8B53DF2574D0200E006B9AB
- 6DA425A7A6A75B9B636A72506B56380140D32F66BE7862726AAA030120F21F16
- 00006E70A2A6A5AA40ED358BBE66F69BD5920020F4F7EB374C484A494E0BEC89
- 90CA8AC3819B000100100F8A1C08004919C97A06C06C2DAAE9E17CB3BCA84927
- 0ED926AAE424F92522A668FB76BB070040EC2B29DAA5EAEA6AED51642427040E
- BEBFA8C3FF0D00A6E0F131C209005A132F9611D100B0D381BB260100E0968686
- 06B57BE74E7B141949E9C7D45E5DA38F5BF8B5960400D37F1347654584670038
- FF0F00882F91BE0E20B5E6B0790AA055B53CDC1F329385EE07342625CB8D0822
- A67477B1DD0300203EEC89706D3B50971CEA193C66AD3EAED6CE008863C24024
- C845800000C493CACA0ABB1751661D6E713DF6600070E4430200C03555CED4B6
- 36D5E1960400F34D225EF835873E2400005CE3F0C16DABEA734B6700E4851D2B
- FEC2A1691200005C53159DDAD6A2FADCD6530011C70C000020DE383803A06B71
- 8B6B725B0280887808E01A000040BCA9AAACB47B11D5A61ADCD60010710E7D48
- 0000B8C68BB3DB9E0B008D8D0D760F0080F8D0E0C1DAE6B9000000009C470000
- 00C08708000000F810010000001F22000000E043040000007C88000000800F11
- 000000F021020000003E44000000C08708000000F810010000001F6AEE5182F2
- 356949564BB65A9AD532AC966DB57656CB93F6D44B65CFE7E6E646ECB1C0979E
- 72A2DD035A273D234375CAEF628FBC6DFFBE727570FF7E7B04205EF51F3254DD
- F7F893F6A8EDCACBCB1BAFBA286FB6D52DB3DB01AB1DB29A3C52B7DA6A7556AB
- B75AA3DD8E4100405C1933698AFAFE5DF7044240AC285CBC50DD7BF3F7546363
- C8FF8F0288035E0C009C02405C3979D6993155FCC5C882096ADC9413EC110044
- 07010071A57BAFDE762FB64C3BED0CBB0700D14100405CC9CA96B353B167CCA4
- C92A2959CEB401407410001057B2DBE5D8BDD8929995AD868C1C658F00C07904
- 00C48DA4A4A440218D55055C0700208A0800881B99D9B15BFC45C11456C00088
- 1E0200E246764E6C9EFFD7BAF7EEA3BA74EF618F00C0590400C48DEC76B11D00
- 04CB0101440B01007123D66700C4F8A99C0600101D0400C48D789801183E669C
- CAC8CCB44700E01C0200E246561CCC00C8BD00468D9F688F00C0390400C48D0E
- 791DED5E6CE33A0000D1400040DCE83768B0DD8B6D723F808404FEAF09C059FC
- 2B83B8909090A0060E1D6E8F625BFBDC3CD57FF0107B0400CE2000202E74E9D1
- 5365E5C4E66D8043E1340000A711001017060E1D66F7E24301CB0101388C0080
- B83070D808BB171FE414406EC74EF60800228F0080B8307844FC3D496FDC94A9
- 760F00228F00809817AF17CD8D9BCC7500009C430040CC1B3371B2DD8B2FA327
- 4C5429A9A9F60800228B0080983776D214BB175FD2D23302B706060027100010
- D3121313D5E88993EC51FC61392000A7100010D3E4E63FF1F014C0A6144C3931
- 709323008834020062DAD8C9F139FDAFE577EBA67AF4EE638F00207208008869
- 6327C5FF52394E030070020100312BB0FC6FC8507B14BFB82B200027100010B3
- E275F95FB0212347C7F5750E00DC410040CC8AD7E57FC164A5835FC20E80E821
- 002026C5FBF2BF605C070020D208008849F1BEFC2F98AC76484A4AB24700D076
- 0400C4243796FF6DDBB4D1EE459F849D41C3E3EB898700DC4500404C7263F9DF
- 4B7F79461D3E78D01E451FA701004412010031C7ADE57FEB5717AA3585CBED51
- F4C95D01012052080088396E5C11BF6FEF5E55565AAAD6AE5866EF89BE5EFDFA
- ABCE5DBBD92300681B0200628E1BCBFF36AC59A51A1B1BD59AE5EE0500C16900
- 00914200404C716BF9DF86D52B03DB4DEBD6AADA9A9A40DF0D05040000114200
- 404C716BF9DFFAD5AB02DBBABA5AABFF451870C38871E3555A7ABA3D0280D623
- 0020A6B8B1FC4FA6FE37AD5D638F945ABBC2BD0B01535252D4C88209F608005A
- 8F008098E2C6F2BF9DDBB6AACA8AC3F648B9BA1240701A00402410001033DC5A
- FEB7D19EFED7D615AE508D8D0DF628FAE4E980090909F608005A87008098E1D6
- 0371F405809ACC066CDDE8DE5D01733B76527D060EB24700D03A0400C40CB79E
- FEB761CD6ABBF75F6B5CBC1F802898CC6900006D4300404C706BF99F2CF9DBB6
- F9D8A37D376F0824E4340000B405010031C1ADE57F9BD7AF55F57575F6E8BFD6
- B8B812400C183A2C704D0400B416010031C18DE57F6243D005805AF9DE3DAAA4
- 68973D8A3EB908D0ADCF04407C20002026B8B1FC4FC82D809BB2DAE5DB02731D
- 0080B62000C0F3DC5AFE2782570098D616BA1B00464F9CAC929353EC1100B40C
- 01009EE7D6F2BF83FBF7ABD2E2627B742CB7AF03C8C8CC5443478FB14700D032
- 0400789E6BCBFFACA37FB90D70538AB66F0B84043771574000AD450080A7B9B5
- FC4F3477FE5F041E0FECF67240020080562200C0D3DC5AFE2742DD002898DB01
- A06BCF5EAA9BD500A0A50800F034B796BAC9BDFED7AF2CB4474D73F3C9801A37
- 0502D01A0400789A5BCBFFB66C58AF2A0E1FB2474DDBBC619DAAAAACB447EEE0
- 340080D62000C0B3DC5CFEB77AD952BBD73CB94BE0EAE5E17DAF53868E1EAB32
- B3B2ED110084870000CF726BF99F58B56C89DD3BBE954B16D93D77242525A9D1
- 13DCB95012B147FE7B9125A4ED3A74501DF3F303D790F4EE3F500D1C365C0D1D
- 35865B4CFB48730F1597AF494BB25AB2D5D2AC96613539D490ABB2E4BF92BCA7
- 5E2A7B3E373737620F27BFF414CE67E20B37DCF13375C229A7D9A3E891ABFBAF
- B9E06C75E8E0017B4FF3FA0E1AACEEFFC3D3F6C81D1FCD794B3DFEC03DF6087E
- 909090A872DAB7571DF23A5A2D2F68FB456B9F9BABD23332556A5A9A4A494D0D
- 6C6565CDF1BCF7DA2BEA895F3F648F1009329B79DFE34FDAA3B62B2F2F6FBCEA
- A2BCD956B7CC6EF20F969CB7947392D556938798D45B4DD632875CCF4C008027
- C93F527F7CF90D5756006CDBB441FDE81B57DAA3E3937F88FFF48A3BBFAB7660
- DF3EF5CDFF3957353434D87B100F72DAB50F1CA177EB25AB3D7A07FAF9DDBBDB
- C53D2FAC62DE1A72FD8B84E0FA7AA91F88042F06004E01C093DC5CFEB72ACCF3
- FF9AAC1858B964B13D72874CE7CA1302117B92929355EFFE03D4E4E933D50597
- 5FA1AEBFE50EF5F3DFFEC10A956F069AF4659F7C4DBEA7DFA0212AB76327C78A
- BF906B4AB8CD74FC2300C093DC7CD2DDEA169CFFD7DCBE0E408C633580E749B1
- EF3B70903AE54BE7AAABBF7FB3BAF7F127D4336FBCA71E7CE259F5FDBBEE5197
- 5E7D9D9A7EC6596AF0F09181A37FC049040078925BCBFF446BAEEA2F5CBCD0EE
- B9A7600AA7CFBC448ED04315FBFBFFF88CBAF6A65BD5E9E75EA0060C19A65252
- 38D2863B0800F09C761D725D5BFEB763EB96C0F9F4962ADAB15D95EFDD638FDC
- 21C526AF73BE3D42B4252424A82EDD7B040AFBF77F7AAFFAD3CB6F52ECE16904
- 00788E9BCBFF5A33FD2F64E540E162F74F037053A0E892ABF0A7CE382550E41F
- FDEB0BEA91E7FE1938DA9F7CF20C959593637F17E04D040078CEB8C9EE4DFFB7
- 64FD7FB0C225EE9F06E03A0067C932BA51E327AACBAEFD5660E9A71CE5DF78E7
- DD8169FECE5DBBD9DF05C40602003C45CE9BBAF5F43F11EE1D0043717B258018
- 55302150A41019F2DFA39C8E3A7FF657D54F7EF9A87AF25F73D4ED0FFD469D77
- E9E581FB3F00B18C00004F7173F99F9CC7DF57B6D71EB5DC9EDDC56AF7AE9DF6
- C81D52FC478C2DB047688DB4F4F4C00DA8E4AA7CB91785ACDD9E7DCD37D58871
- E339878FB8420080A7B8B9FCAF2DD3FF9A175603701AA0E56479DED84953D4B7
- 6FBB53FDF1A5D70377A19435F76EDEDC09701A01009EE2E6F2BF554B2310003C
- 703F00793CB05C918EE6C96724EBEDAFBAE107EAF17FBEAA6EBDFF976ADAE967
- A8B474B9E12910FF0800F00C3797FF89D6AE003079E13A804EF95D54AF7EFDED
- 1182F5ECD3575D72D5B5EA91E75E08DC656FD6051707EEA408F80D01009EE1E6
- F23F39775FB6A7D41EB5DE817DE56ADBA68DF6C83D2C073C5A7A46863AF792CB
- 02EBF21F7EFAAFEAC2AF5CA9F2BB71D53EFC8D0000CF88D5E57FC1B82DB0B7C8
- 236FEFFBFD53EAF2EBBE1DB85912802F1000E009B1BCFC2F9817AE03183C6264
- E02635506AF4F849AA7BAFDEF6088046008027B8B9FC4F44720640C2843C21D0
- 4DF28862B9AA1D4A75EAD2D5EE01301100E0096E2EFF93F5FBD222459EA5BE71
- ED1A7BE49E7193390D202A2B2AEC1E001301009EE0EAF2BF081EFD6B5EB80E60
- CCA42981F5ED7E77F8D001BB07C0440080EBDC5FFE17B9F3FF9A171E0C94959D
- AD868C18658FFCEBF0C183760F80890000D7B9B9FC4FAC5C1AF962BDAE7085AA
- ABABB547EE6135000100680A0100AE7373F95F49D12EAB15D9A3C8A9AEAE52EB
- 5616DA23F7703F003905400000422100C0556E2FFF5BE1E0BDFBBD701D408F3E
- 7D5597EE3DEC913F1D6206000889000057B9BDFCAF70D102BB17795EB80E40F8
- FD3400A70080D0080070959BCBFF849337EDD9B06695AAAAACB447EEF1FB6980
- AACA0AD5D0E0EE7D19002F2200C0556E2EFFDBB261BD3AB87FBF3D8ABCFABABA
- 883C60A8AD868F1DA7323233ED91FF343636721D0010020100AE717BF95FE162
- E7A6FFB5158B9CBBC6205CC9C9296A64C1447BE44F9C06008E4500806BDC5EFE
- 178DE2BC220A21231C7E3F0D5071E890DD03A01100E01A3797FFC9F4FC9A15CB
- EC9173766CD9ACF69797D923F78C9B3235F07C00BFE21400702C02005CE1F6F2
- BFB52B57A8EAAA2A7BE41C39FF5CE8E052C37075C8EBA8FA0D1E6C8FFC870000
- 1C8B000057B8BFFC2F7A45D90BD70188822927DA3DFFA9AD71FFAE8C80D71000
- E00AD797FF45F1A8DC0B3300C2CFD701D4D7D7D93D84A36C4FA9AAA9A9B64788
- 570400B8C2CDE57FF278D88D6B57DB23E7ED29D9AD8A776CB747EE9115171D3A
- 76B447FE22D77CF8557D7DBD3A74F04060C9AB6C0F1F3A64FD7FE070E01E1572
- CBEADA9A9AC0732BE4FB1A1B1B5491F5DFEAEBFF783E70FA0AF12DC1DE86225F
- 9396643579A6689AD532AC966D3599BBCD93F6D44B65CFE7E6E636F73A2D72E9
- 29FE9DA6F40B59FEF7C7975EB747D1B7E8B37FAB876EFF913D8A8EABBFF74375
- FA7917DA23F7FCE1E15FA80FDF74EFB377CB5537FC40CDBAE0627B14DB0E1ED8
- AF76EFDCA97617ED5407CACB03D737485197A58E81BEB5AD387C28700BE40A6B
- 2CD7BA50CCDD2701FCBEC79FB4476D575E5EDE78D54579B3ADAE5C652C4D9E7B
- 2DCB5DE4EE63327D23A9B7DE6AF2971FF23F0066001075EE2FFF8BFED23C37DE
- 3314BF9E06A88BB1530007F695ABB585CBD54773DE52FF7CEA4FEAD17BEE523F
- BEFE6A75F5F967AA6B2E385BDDF1ED6BD463F7FC54FDF9778FA8FFF7E7A7D45B
- 2FFE53CD7BE72DB5E8D34F02AB5BB66DDAA8CA4A4B0247F9147F34850080A873
- 73F99F70F2FEFF4D59B974B127FE211E3D61924A4949B147FE515F270742DE25
- 53F39F7DF8BEFAFD83F7A96FFDEF05EADA8BCE5177DD70BD7AFC817BD44BCF3D
- A33EFDE03DB569ED1A6E688488220020AADC5EFEB76FEF5EB573DB567B143DF2
- 0FF7E6756BED917BD2D233D4B031E3EC917F3434782B00C8B9F6752B57A8179E
- 7942DDF1AD6BD4B5177E493D72F79D6AEEDB6F042EC003A2810080A8727BF99F
- 3CFED7AD2371EE0A086DD5B2A5EACEEF7E53BDF8ECD3818746F1B022B8810080
- A8727FF99F7B45D833F703987A924A4888D875BB006214010051E5E6F23FB1C2
- C567F4CB946F6DADFB37A4C9EFD64D75EFDDC71E01F02B0200A2C6EDA7FFEDDA
- BE2D7065B45B6AAAABD5DA283C7F201C9C0600400040D4B8BDFCCF8DABFF8379
- E534C0380200E07B0400448DDBCBFFDC9CFED7BC7221E0D0516354564E8E3D02
- E04704004485DBCBFF64D9D5AA658BED917BB6AC5F17B86B9BDBE4EFC3ED1919
- 00EE2200202ADC5EFEB7D123375191E55E2B97B83F1321C64DE63400E0670400
- 4485FBCBFFBC517485576E0B3C6ECAD4C04C00007FE2FFFD880AD797FF79A4E8
- 0AAF3C1E586664060D1F698F00F80D01008E737BF99F3CEE54D6E07B45F1CE1D
- 6A6F897BCB114D0553390D00F81501008E73FB6233793A9A8400AF905B117B65
- 3500D70100FE450080E3DC3EFF2FF7FFF71AAFDC0FA077FF01AA5397AEF60880
- 9F1000E0282F2C37F3CA39779357560208EE0A08F81301008E727BF99F2CFD93
- B5F75EB3AF6CAFDABE79933D7217770504FC89000047B9BEFCCF3AD2F6EAA356
- BD721DC0C882092A2D3DDD1E01F00B02001CE5F6F23F2F4EFF6B5EB90E202525
- 458D1C37DE1E01F00B02001CE3F6F23FE1C50B00B535CB97AAFAFA7A7BE42E4E
- 0300FE43008063DCBEF86F4FC96EB57BE70E7BE43D9515156AC3EA95F6C85D05
- 534F54090909F608801F1000E018F76FFFBB30B0E6DECBBC721A20AF5367D567
- C0407B04C00F080070841796FF79A5B836C74BD728144C39D1EE01F00302001C
- E1F6F23FE1A5B5F64DD9B07A95AAAEAAB447EEE23A00C05F08007084DBD3FFB2
- C65ED6DA7B5D5D5DAD5AB56CA93D72D7C061C303176E02F00702001CE1FAD3FF
- 3CB2C63E1C5E7952A15C0438CEE5E006207A080088382F2CFF2B5CECFDE97FCD
- 4BBF2BA70100FF200020E2DCBEF84FEEFCB77AD9127BE47D72BAE2C0BE727BE4
- 2EF9BB4B4E4EB14700E219010011E7F6F9FFF5AB0A036BEC6345636383676E58
- 949199A5868C1A6D8F00C433020022CA1B4FFF8B9DE97FADD0434B16C74F6539
- 20E007040044941796FF79E5A2BA96F0D22D8BB90E00F007020022CAEDE97F59
- 532F6BEB63CD9EDDC5AAD823B72DEED6B357A001886F04004494DBCBFF562F5F
- 16585B1F8B980500104D0400448C279EFE1783D3FF9AB76E0B4C0000E21D0100
- 11E3F6C57FC24B45B4A5562D59EC9987170D1B332EB0220040FC6AEEF99FF235
- 6949564BB65A9AD532AC966D35B9CA2B4FDA532F953D9F9B9B1BB1E7885E7A0A
- 5720C7AAEFDEF15375E229A7DB2377C80C80DC07E0B8C22CB4E17C57D8453B8C
- EF1B397EA24A49F1C63AFC5FFFEC0EF59F8F3EB447B16DF635DF54E7CFFEAA3D
- 72DFCAA58BD5DD3FF8AE3D821FC8ECE87D8F3F698FDAAEBCBCBCF1AA8BF2665B
- DD32BB1DB0DA21ABC9C345AAAD5667B57AABC93F3C21FFF12100202264F9DF1F
- 5F7EC3F51500889C8FE6BCA51E7FE01E7B14DB0800709B170300A70010115E58
- FE87C81A3779AA4A48E09F08205EF1FF6E4484DBCBFF1079ED3A74500386BA7B
- 512700E7100010116E2FFF83330AB82B2010B7080068332F2CFF83330A26B31C
- 1088570400B4991796FFC1197D070D56799D3ADB2300F184008036E3FC7F7CE3
- AE80407C2200A04DBCF0F43F388BEB0080F84400409BB0FC2FFE8D2C18AF52D3
- E4362000E20901006DC2F47FFC4B4B4B57C3C78CB34700E20501006DC2F23F7F
- E03400107F0800683596FFF9873C1D3021216277FC06E0010400B41A17FFF947
- A72E5D55CFBEFDEC118078400040AB71FEDF5F0AA6701A0088270400B40ACBFF
- FCA7602AF70300E2090100ADC2F23FFF193C62A4CA69D7DE1E0188750400B40A
- D3FFFE238F061E3389591F205E1000D02A2CFFF327AE0300E20701002DC6F23F
- FF1A33698A4A4A4AB24700621901002DC6C57FFE95959DAD068F18658F00C432
- 02005A8CF3FFFEC65D0181F84000408BB0FC0F3C1E18880F0400B408CBFFD0B3
- 4F5F95DFADBB3D0210AB08006811A6FF21E4D90000621B01002DC2F23F08AE03
- 00621F01006163F91FB4E163C7A9F48C0C7B042016110010362EFE83969C9CA2
- 468D9F688F00C4220200C2C6F97F98B82B2010DB0800080BCBFF106CDCE4A981
- E70300884DFCBF176161F91F8275E8D851F51B34C81E01883504008485E97F84
- C26A0020761100101696FF2114AE0300625782BD0D45BE264D1EFD956CB534AB
- C9BA9F6CABC95C709EB4A75E2A7B3E3737B7B9D769914B4FE11F14AF91E57F7F
- 7CE9757BE49E7F3EF527F5CADF9EB547FE74D76F7EA7868C1C6D8FBCE19BFF73
- 9EDA57B6D71E79D3EC6BBEA9CE9FFD557BE4BE954B17ABBB7FF05D7B043F9025
- D4F73DFEA43D6ABBF2F2F2C6AB2ECA9B6D75CBEC76C06A87AC5669B56AABD559
- ADDE6A8D763B063300382EAF5CFCB77CE17CD5D0D0E0EBB66CC17CFBD3F00EB9
- 181040EC2100E0B8BC70FEBFE2F021B569DD1A7BE45FCB17FEC7EE7947C1546E
- 0B0CC42202009AE595E57F2B972C0E1C01FBDDA6B56BD4E18307ED91378C1A3F
- 49A5A4A4D82300B1820080667965F9DF8AC50BED9EBF49085AB178813DF206B9
- 25F0D0D163ED118058410040B3BCB2FCAF7091B78A9E9BE45A08AF19CF724020
- E61000D02C2F2CFF2B2B2D51453BB6DB232CF7E08580723F808484882D060210
- 05040034C92B4FFF5BB168A16A6C0CB98AC597F694EC56BBB66DB547DE90DFAD
- BBEAD6ABB73D02100B080068925796FF79ED9CB71778F13400370502620B0100
- 4DF2CCF9FFC58BEC1EB4650B580E08A06D080008C92BCBFFB66FDEE4F9BBCCB9
- 61D5B225AABE4E6EF4E51D43478D5159D972A35000B180008090BCB3FC8FE9FF
- 50AAABAAD49AC2E5F6C81B24348EE691D140CC20002024A6FFBDCF93A701B80E
- 008819040084E485E57F72D39BD5CB96D82304F3E28580121C65260080F7F1FF
- 541CC32BCBFFD6AF2A54951515F608C1B66ED8A00EECDB678FBC21A75D7B3570
- D8087B04C0CB080038866796FF2DE2F6BFCD696C6CB03E236FDE140880F71100
- 700CEF9CFFE702C0E3F1E2E3810BA6B01C10880504001CC52BCBFFAA2A2BD5FA
- D5ABEC119AB2DC833300BDFB0F509DF2BBD823005E4500C051BCB2FC4F2EFEF3
- DA3A772FDAB777AFDAB669A33DF28E71CC02009E4700C051BC32FDCFF9FFF02D
- 5FE8C5BB02721D00E07504001CC50BCBFF0437000A9F17AF0318396EBC4A4B4B
- B74700BC88008023BCB2FC6F7F7999DAB165B33DC2F1AC2D5CAE6A6B6AEC9137
- A4A4A6AA1105E3ED11002F2200E0082F2DFFE3F1BFE1ABA9AE0E3C1BC06B580D
- 00781B0100477867F91FE7FF5BCA9B8F073E41252424D823005E430040805796
- FF090240CB793100E475CE0F2C0904E04D0400047865F95FD18EED6A4FC96E7B
- 8470C93513E57BF7D823EF603500E05D0400047867F91F57FFB7865C33B1DC93
- 77052400005E450040806796FFB1FEBFD5BC781A60E0B0E1AA5D870EF6088097
- 1000E099E57FF2709B55CB16DB23B494DC16D86BAB27E42240AF844B00472300
- C03317FF6D5CBB461D3E78D01EA1A50EEEDFAF36AF5F678FBCA3602ACB01012F
- 2200C03BCBFF98FE6F332F9E06908099949C6C8F00780501C0E7BCB4FC8F0B00
- DB6EF902EF3D172023334B0D1D39DA1E01F00A0280CF7965F99FDCCD6EDDAA42
- 7B84D65AB7B250555755DA23EF603920E03D04009FF3CAF4BF17EF671F8BEAEA
- 6AD5CA25DEBB90920000780F01C0E7BCB3FC8FE9FF4859E6C1D300DD7AF6525D
- AD06C03B08003EE695E57F82F5FF91E3C50B0145C1645603005E4200F031AF5C
- FC77E8E001B565C37A7B84B62ADEB943EDD95D6C8FBC83E58080B710007CCC4B
- 4FFF939B002132E466405E3C0D306CF4D8C08A0000DE4000F0296F2DFF63FA3F
- D2BC781A40EE05307AC2447B04C06D04009FF2CAF23FC105809157B864912767
- 55783810E01D04009FF2CAF47F495191D576D923448ADC5279FDEA55F6C83BC6
- 4D99AA1212F86707F002FE9FE8539E59FEB798A37FA778F1F1C0B2F264804756
- 9E007E4700F0212F2DFF2B64FADF319E5D0EC86A00C01308003EE4958BFF849C
- AB863336AE59A52A0E1FB247DEC17500803710007CC82BE7FF65EDBF3CC216CE
- A8AFAF57858BBD17B0FA0E1AACF23A75B64700DC4200F0192F2DFF2BE4FCBFE3
- BC7A1A60DC646F5C8302F81901C067BCB5FC8FF5FF4E5BBED07B3704123C1C08
- 701F01C067BC32FD2F4FAD5BB362993D8253649965F18EEDF6C83B468E9FA052
- 5253ED11003710007CC62BCBFFD615CA73EBABEC119CE4C5D3006969E96AF8D8
- 027B04C00D04001FF1D4D3FF38FF1F35CB3C7A1DC0F8292C0704DC4400F0112F
- 2DFFE3F6BFD1B36AE9E2C08A00AF91EB00121212EC1180682300F88857CEFFCB
- DAF4CDEBD6DA2338ADB2A242AD5BB9C21E7947A72E5D558F3E7DED1180682300
- F8849796FFAD5CE2CD23D278E6DDBB02B21A00700B01C0273CB5FC6F31CBFFA2
- 6DD9028F2E07E4AE80806B08003EE195E97FC1FDFFA36FCBFA75EAE001EFDD75
- 71C8C8919E09A680DF10007CC22BCBFFCAF694AA220FAE4B8F770D0D0D56F0F2
- DECC8B3C1A78CC24EF8453C04F08003EE0A9E57F56116A6C6CB4478826CF9E06
- E0E980802B08003EE0A9A7FFB1FEDF35CB3D7AEA4566A7929292EC1180682100
- F88097CEFF7301A07BCA4A4BD48EAD5BEC9177646567AB41C347DA2300D14200
- F08161A3C6D83D77EDD8B259EDDBBBD71EC10DCB3DBB1A80D30040B411007C40
- 2E00F3824F3F7CDFEEC12DF33FFEC8EE794B564E8EDD03102D04001F3874F0A0
- DD73CFE14387D49C975FB047708B3C81F1C3B75EB747DE71E8E001BBE78C1D5B
- BC75EA4366C300B73577236EF99A34B93A27D96A6956CBB05AB6D564E16E9EB4
- A75E2A7B3E3737376237F4BEF4146E0C12699DBB760B5C0898EDC25196CC3E6C
- 5EBF2E702B5A9EFEE70DB2F4AE57BFFE6AC8C85181F3EF6E2B2FDBAB3EFFF003
- 555DEDDC7F1F39EDDAAB07FEF48CCAEB9C6FEF718F84E1876EFF118FC3F61959
- 8975DFE34FDAA3B62B2F2F6FBCEAA2BCD956B7CC6E92A20F59ADD26AD556ABB3
- 9ADC7255965D855C7A450000E00BF2E0A1DEFD07A80E1D3BD97BA2AFAAA2426D
- 58B34AD5D7C9BFCDF0130240180800008078E3C500C035000000F81001000000
- 1F22000000E043040000007C88000000800F11000000F021020000003E440000
- 00C08708000000F810010000001F22000000E043040000007C88000000800F11
- 000000F021020000003E44000000C08708000000F810010000001F22000000E0
- 43040000007C88000000800F11000000F021020000003E44000000C087080000
- 00F810010000001F22000000E043040000007C88000000800F11000000F02102
- 0000003E44000000C08708000000F810010000001F22000000E043040000007C
- 88000000800F11000000F021020000003E44000000C08708000000F810010000
- 001F22000000E043040000007CC873012021814C0200882F8989DEAB6D9EFB8D
- D233D2ED1E0000F1213D23D3EE7987070380F73E240000DA223D23C3EE7987E7
- 02404626010000105F0800614827000000E24C5A3A01E0B83232B3EC1E0000F1
- C1A11980467BDB2A6D0900F2C66D7AF3503805000088370E9E0268751D6E6900
- 70A4E89B080000807813850BDC5B5C9F5B1200CC173ED24F68A8AFB7BB11D131
- BF8BDD0300203EE477ED66F72223A1BECEACBD21EBF3F1B4F9144066427AF517
- C3C8E8D1BB8FDD0300203E74EBD5CBEE4548466695F5BF813A1C18B7429B0340
- 5D5AA5FC1211D3AD576FBB0700407CE8D2A3A7DD8B9440ED3503408B8340B801
- C07CE1A3DEA4AEA63EA201A03B01000010473AE6E7ABB4B408DFE5B63664ED6D
- 511868CD4580A2C16AD26FACAD8F6C00C8CCCA56ED73F3EC110000B1AD5BCFC8
- 1FD8D6D5D6CAE9F7401DB69AD4E4166BED458047D456554734000866010000F1
- A25BCF089FFFB7D45537597B43D6EA50C20900C12FA68FFE65DB50D75013F900
- C08580008038E14400A8ADAF92DA1BA8C3560B350B70DC20D0D25300E61BC88B
- 37565755443C00F41F32D4EE010010DB060E1B6EF722A7E68B1980401D0EECF8
- 42700868566B4E01C8F648E2A8AEADAC949D913472DC78BB070040EC928BFF06
- 0C19668F22A7A6AAAAC2DA9847FF668D0E4BB8A700CC76D41BEE2FDB5D6A6D23
- 2ABF5B77D5891B02010062DC9051A3555272B23D8A9CF2F262A9BDC7D4E4A0D6
- AC706700CC1792FE9137DCB56DED2ED919490909096A4401B3000080D836625C
- 81DD8BAC5D3B564BED0D2EFE9AD96F52730120F805F49B88236FB876D5E7110F
- 0082D3000080583762AC33B56CCD8ACF8BACCD915A2CFB2CC14140048F8F68E9
- 458042DE40B7FAA50BDED95D5F5F1AD1E7018811639D494D000044833CDCAEDF
- E021F62872F6ED29AD5BBEF8BDDD56576AAF59939B2CF6A11C2F00C88BE9A65F
- FCA87DB5B55575070E259658FD88CAEB9CEFC8D2090000A261E8A8312A2929C9
- 1E454E634A42A9D45EAB1B5C9745A87D21B5740640A70C69923C02ED705969B1
- B58DB889D3A6DB3D000062CBA49367D8BDC83AF445CD3D5283AD66D6E6B0B524
- 00988942BF61E0CDF794EF7224009C7CFA99760F0080D891929AAA263B1400CA
- F7EE94F3FF66009066D6E8B0841B00CC1794C27F5408282DDEE4C885803DFBF6
- 53FD1D387F02008093269C7052E0D9364E28DEBD556AAEAEC1BA26CB560B2B04
- B4240004BFD191E4B16EE5E79BADAD234E9E7596DD030020364C7370067B6DE1
- BFB7589B2335D86A666DD6FDE30AE722409359FC8F84800FDE7E767345F541B9
- 2B51C49D70CA698E5C440100801372DAB75763264EB64791555376E8F0DC779E
- 93836EA9BFFA42403304989A0D022DBD08505E4C37793379F3BA8686DABABDBB
- B6ACB5FA11D7AE43AE1A3B698A3D0200C0DB4E98691DB83A70F73F517C60CB5A
- A9B956579A59F8750B5B3801C07C6169478EFC8D56BB79FDB255D6D611279F71
- B6DD0300C0DBA69FF925BB17799B37046A6DADD582EB70701090D6ACD6CE0098
- 2120F08BFCE7B37F391600269E74B2EACA3D0100001E3762DC78472F5EFFFC93
- 57A4D61EA9BD76338B7FD85A1200E40D7493379137D55310B59FCE7B715B55D5
- E103563FE2121313D505977DD51E0100E04D175E7E85DD8BBCAAB243073EFFF8
- A5ED56578ABF791A401F98EB1696704F019874F1D7ED8B5FA2A1A176D7CE0D8E
- 5C0720A69D76064F08040078963CF75F66009C52B467E31AA9B55657177EB385
- AAD5CD0A7706405E48373365C89BCA2F23AD66F39A458E9D06900B2ACE9BFD15
- 7B040080B75C78F99581A7D93A65E386408DADB19AAEBB5283CD9A6CD6EAE36A
- E9350042BFB84E1D92440289E483F79F5B666D1D33F3AC735487BC8EF6080000
- 6FE8DD7F802A987A823D72C687EF3DB7DCDA1CA9B956D37538ECA26F6A6900D0
- 0943A70D3304D4AC5AF2617149F196F556DF11726BC5732FB9CC1E0100E00DE7
- 5FF655EBE8BF35C7D4E129DAB9659DD458AB2B330066F1378FFE651BB6969C02
- D0CC00A093C891B66CC1BB9F5A5BC79C7EDE852ABF5B377B040080BB060C19A6
- A6CE38D51E3963F99239525B8FAAB756931A6C0600CDEC37A92571455E503779
- 339D3E8ECC00487BE16FBFF8CFBED212193B22352D4D7DFD869BEC110000EE91
- 73FE577FEF8781D56A4EA93F5852FBD25F7EF11FAB1BA8B356336700A4E900A0
- 5B585AF31BEB17D7A943CF0204424069F1E6FDFBF6152DB5FA8E1937796AE0DE
- 000000B8E9B4732F50FD870CB547CED85CBC6B5949C9565966AF8B7FF0D1BFD0
- DBB0B57406406FE58D647BCC0C80D5AA3FFBF415474F03882BBF7DA34A4B4BB7
- 4700004497DCF3FF92ABAFB547CE59F0EF57FE6D6DAAAD166A0640D7644DD7EA
- E36AE90C801902F49B4BD3E72302BFDCABCF3FB8ACB2EAF041ABEF984E5DBAAA
- 8BAFF8BA3D020020BA2EBFEEDB2A3BA79D3D7286DC60EFD5BF3F242BEC74F1D7
- F5363804E816B6D69E02D04D5287FE258ECC025457571C5EBF66C102ABEFA8B3
- BF7C89EAD1A7AF3D0200203A068F18A5A69FE1FCE3EA37AC5EB0C0AAA9F2B45D
- 1D00CCC2AF67E35B54F8B5B6CC00E80020BF843EFA976D609AE28D171F7DBFBC
- BCBC55BF54B8929353D4B76FFD89634F5D020020587A4686FAD62DB73BBAEC4F
- 480D7DEDA5473FB0BA525FCD5300526B43058016D5DCD6FEF6FA0DE5CD750890
- 54A20340F5FC4F5EDEBABF7C87A317030AB9F8E2ABD77FD71E0100E0AC6B6FBA
- 352A0FA83BB077C712AB966EB1BA81BA6A35A9B37A0640D75F5D8F5B54FC456B
- 4F0108FDC6F28BE800A0D34995D5AA5FFDC7C3AF5B5BC79D71C1C56AD2B4E9F6
- 080000679CFAA5F3D409A79C668F9CF5F23F1F941AAA6B6AF0D1BF34A9C1528B
- 5BA52D0140E804A203803E1510F885E7BEF3ECFA6DDBD7AEB4FA8E927598D7DD
- FC63D5B92B3708020038A357BFFEEACAEF7CCF1E396BDBB6352B3F7AF7B90D56
- B7A9E2AFEBAF16951900216F64B6E000A0A72BAADE7EE9D1A8CC02646567ABEF
- DD7537D7030000224E969D7FEFCEBB0337A38B86375F0CD4CEC06CBADD7400D0
- A70082EB708BB5F50A065DFCCD59007D2A201000DE7AE5FF56EFDCB6C9B1E703
- 98E4768C577EEB067B040040645C73D32D515B7556B473FDBA39FF7A5C9EFC27
- 0140CF00E8FA2AB556B756157E2DC9DEB685840879FEA134E94B93D7952687E3
- C9A9A9E91563279E3ED5EA3B6EC0D0E1B20E51AD2D5C61EF0100A0F52EBBE67A
- 75FAF917DA23E7BDF8FC037F5E5BF8E956AB7BC86A87AD566937F33480147F39
- F86EF50C405B02802EFAC22CFED23F2A00AC59FDD9FEE9B3BE3E2627A77DAE35
- 76DCC882096A4F49B1DABA212A130F00803875F6C597A82F7FFD1B816BCDA2A1
- 64F7A64D0FFF7CF63F5563A3DC4C4F8ABF0E003213609E0230CFFFB74A5B0280
- D021407F32B20D9E0548B2FE20C9870F96EF1E3C62DAB48C8C4CC73F45F98B2A
- 9872A2DAB2619D2ADAB1DDDE0B0040F84E3CE57475CD4D373BBEDE5F2B2BDBDB
- F8D73FDEF67F5B362EDB610D9B3AFA9700A08FFC45AB4F03B4F54FA5A71EE497
- D14D92897931A0A496CAB9EFFC795DD1F6151F5BFDA8484A4A5237DEF9F3C0DD
- 9A0000688951E327AAEB6F75FE663FA65DDB0AE7CD7DEF2FEBACAE3EF76F5EFC
- A78FFA75D3F5B7D522110034E9CB2FA82F54382A00487BEC81AB5FDC77F890A4
- 9AA890AB367F74DF83AA77FF01F61E00009A271794FFE067F705EE361B2D9595
- 870EFEF6C1AB5F94AEDDCC00A0EBAA3EF7AFB52900B4F51440307D0AC03C1520
- 2D703DC0E143E50D79795D6B860C9F3CD61A47852CD9983AF354B566C572B5B7
- B4C4DE0B00C0B1E41AB25BEFFFA5CAC8CCB4F744C79C571F7FFEE30F9E2FB4BA
- 72906C4EFF4B10901020C55FCF0248E16F53F117910A0052F075D3740890F7D0
- DBA4A5F3DF299D79C615C3B37372F3AC7154480838E1D4D3D4D68D1B5431D704
- 0000429832FD14F5FD9FDDABD2D2A3FBA8F9E25D9B36DC7DEB397FB36ABA5CF8
- D7DC95FFBAF80BCF0400930E013A00C8D608018D89A5253B8A4F987ECAB48404
- E72F08D4929393D554EB2F776FC9EE40100000409B75FE45EABA9B6F0BD48A68
- 6A68D8D3F0BB876FFCDDCE6DAB765A437DF42F4FFFD3C55F9F0288D8B97F2D92
- 01C02CFCA19A040069C93BB7ADAE183A62664EB71E83A27A723E3131514D3871
- 9AAAADE13E0100802FFCCF9557ABCBAEFD56A04644DB92F9F3DEFDDB53B7CFB5
- BA52F8F5D23F09007AEADF2CFED284E702809042AF852AFED2E43D933EFFF4D5
- 2DD34EFBEAE8ECECF61DAC71D4C81241B9BA33C77ADB158B16A8C606FD790200
- FC242525455DF3835BD497BE7C49A03644DBEEDDDBB7FEE40733FE585F5B73C0
- 1AEAA37FF302C050EBFE2352FC855301C0DC9A4D078044EB0F9CB079C3924DA3
- 675E784266727AF42EB5B40D1C3A5C8D9938D90A010B5545F4162600003C401E
- E7FBE3077FADC64D8ECA4D6A8FB1A77A7FE5A33FF9F2AF8B76AE2FB6865284E4
- C85F1FFD9BC55F9A39EDEFD90020CCE2AF9901E0C84C4069F196EAACE4F47D23
- C7CE186F8DA32EAF5367357DD659AA68C736B56B9BDC75110010EF6465D82DF7
- 3DA83A77E96AEF89BE7F3DF7E0531FBEF3E7E6AEFA9716F10BFF4C4E04005370
- 18D041E04818285C3A77EFD091D33A74EDDE3F3A4F590812582638E35495D3AE
- 9D5AB17821A70400204EC994FF5537DEA4667FE39B2A2535D5DE1B7D4B17BEF7
- D1EF1EBAEA4DAB6B4EFDEB0BFFCCA37F29483A00E816314E0580E0822F745FB7
- 23B301F33F7965D3B4D32F1B9D95D5A1BD358E3A39F73370D8083576D214B566
- F95275F0C07EFB2B008078D0B36F3F75EB2F1E5605534F0CFC9BEF969292ADDB
- 7F72E3CCDFD7D5554BA1093EFAD7C55F9A147E990170E4E85F38390310EA13D6
- FB74089096687D106AEBC6159B46CD387FAA1BD70368724AE09473CE0FAC015D
- B77285AAAF97CF1E0010ABE4DFF3D9DFB84E5DFFA3DB555EE7CEF65E77C879FF
- C77E36FB373BB7AF95F3FE72C5BFBEEA3FD4D4BFA3C55F387D0A4033C3C051C5
- 5FF74B8A375725D6D7978E1E376E7C4242A6EC77853C4360E8A831EAA4D366A9
- 92A25DAA68FB36FB2B0080583269DA7475CB7D0F076677DD58E2676A68D853FF
- C2D3F7FF69DEBB7F5D690DCD1BFE984BFEA4393EF5AF393D0320CDA4C7E6D78E
- 8480B5859F966566E61F1C3AF2843181AFB8282B3B27F024A87E8387AAF5AB0A
- 592900003122BF5B77F59DDBEF52177DE56B2A332BCBDEEBAE575F78FC2FFF78
- FAA79F5A5DB3F84BD34BFE74F1D701C091A26F8AC60C8059F483E920A05BE2D2
- 85EF16E777EDD7D86FE0D8A1D6D875DD7BF556A79E739EF51F5176E00E82D555
- F2770500F09A0E791D0337F5B9FE96DB55CF3EAE5C571ED2FB739E7DF94FBFF9
- D6BB56574FFB9BE7FDF5D1BF14FE5057FD3B16044215E5483BAAC05B4D42879C
- E79726375CCEB05AB6DD72ACD64EDA4FEE7F7376C1E4B34EB1FA9E51535DAD3E
- 78F335F5AFBFFF5595F1602100F0844EF95DD479B3BFA2669E758EAB57F787B2
- F0F337DEBFF7B6739EB7BA52F8E5AA7F6952FC2504E800A02FFC330380A3C55F
- 442300087DF245B6660890BFA934ABC91C8D3C7A49428004002B0824B6BFFFD1
- 4FBE3164D4D489D6D853EAEA6AD5BC396FAB579FFF8BDABD4B6EDF0C0088B6AE
- 3D7AAA0B2EBF2270CD56341FDD1BAEB52B3E5B70EB0D273D61D574B9E25F0ABF
- 3EFA97F3FE1202F4D4BF59FCA509BD754CB402809E01103A04C8131774080839
- 13909C96D1FE57BF5FF8DD5E7D870FB7C69E23AB04E67FFC911506DE54CB16FC
- 4735700F010070945CCC3766D21435E38CB3D584934E0E5CB8ED45DB36AD5879
- D3B726FFB6AEBA32B8F89B47FEBAF89B17FE09C78FFE45B40280D021409A1902
- A449009099000901321B2001408240FB76ED3AE7DDF3C8DCEBBD1A02B47D657B
- D5A71FBCA7E6BDF396DAB261BDBD170010097D070D5627CF3A33707176FBE83D
- 4DBE55B66F59B5EA8E1B673C7EE040E95E6B68167F7DDE5F8EFC25009817FD49
- 8BCAD4BF16CD0020824380443769320BA06702E454C051A7036426E09E87DEFF
- BA174F0784B26DD3062B08CC51F33F9E1B584A08006839B99A7FD2B41981C2DF
- BB7F541F1EDB6A32ED7FC7CDA73E6D1FF9EBF3FE7ADA3F78C99F5EEF1FF5E22F
- A21D0084147E6186007D3A406601F4E980E06B02DADDFE8BD7FE77C294B3675A
- E398B16777B15AB964B12A5CB248152E5EA8CAF7EEB1BF020030E576ECA44616
- 4C5023C78D5723C615A84E2EDEABBF35167DFAFA07F7DC7EFE0B563DD747FD66
- F1D7D3FEE6AD7E83AFFAD7A700A2C28D00205A1A02E49440A0DD78DBB367CF98
- F5D5F3AD7ECC696C6C54C53B770482C0C635ABD5AEEDDB02371AE2D6C300FC26
- A75D7BD5AD57EFC052EB014387050ABF5CD4E7E66D7ADBE283B7FFFCCA630F7C
- ED2DAB2B855F37CF167FE1D6272DEFABDF5BB6120024084808304F079821E048
- 10B8F2BA874E3EEF7FBF76596262271D24629A040009023BB76D0D6C4B7717AB
- AA8A0A5569B5AACA2FB6BA2F4B1101C08B64095E4666A6D5B202DBF40CE95B5B
- ABC993F7BAF7EE1328F852F82500C403B9C3DFBFFEF9CCF37FFEC3CDF3ACA159
- F8838BBF9EF6D7E7FC2500E8E21FD5A97FCDCDA865860029E4C13301C121402E
- 0ED42120FBC24B7E3461F6A5B77D2DA54307F91EDF9095063CB11080E75847EE
- 5EBD22DF29B5FBF6553DFFF75F3CF3F23F1E5C680DA5E0EBE22F17FB0517FFE0
- 237FFD0FB92BC55FB81900447321409A793AE098D98051E366F6B9E196A7AEEE
- D4A56F4F6B0C004054ECD9BD65C7A30F5CF5E48A251F6EB586C147FDD2A4F0EB
- 697F29FC9E2AFEC22B714D4240F087A03F98504D3496146FA978EF8DA7160D18
- 3A21BB6BF7017DECFD00003866E9A2773FBEE3C6994F184FF5D3C5BFA9237F29
- FC9E2AFEC24BF335C12120B86F36F90003DBBABA9AFA8FDEF9CB9A0495583AB8
- EF986149E9E9327300004044D5ECDB57F5C2DFEFFFCBEF1EFAC65B56ED31D7F7
- CB56AFF1D747FDE6B4BF2EFC9E29FEC26B276C7408303F18DDD7FB75F1D7FD40
- 2B5C36B778F59ACF0B4716CCEC9F95D5213EAE2E0100784249C9D6EDF7FFEC7F
- 7F37F79D670BADA1147C5DFCA5F0EB237F5DFCA5F04B00308FFC836B99EBBC78
- C586BE26C0A43FB0E0261FAA7CB8817EE9EEAD87DF7FE3C9C57D068C49EFDA3D
- B74F424266A8D70200202C0D0D7B1A16FD67EEDCBBBE7FEA53453BD79B53FEFA
- A8DF9CF2378FFC3D5DFC8517038068AA70EB0F4F9A3EFA97BEFE90E59440EDC7
- EFFF6DED964D1B56F51B3CBE67BB76791DACFD0000B4C88E1D1BB6FCDFC337FC
- E1EF4FFFE463ABB6C80D5B74E197ADBED8AFA92BFD3D5DFC85570380080E01FA
- C393A63F541D02F4F84810D8B96DCD81B75EFEDDA2CCCC7607FA741BD52F39C3
- 63CF880400785255D9A1C3AFFFEBB72FFEE2F6F3FEB973DBEA226B9759F8CD29
- 7F29FE72D4AFA7FD83AFF497BA2474EDF214AF4F91EB1BFDC8EF297DD94A6891
- 26F70AD0F70BD0CB05F59241B967C091FB0774E9D63FEFDB373D717E8F7EA3A7
- E4E575F4FA9F1900E082B2B2BD8DDB362FFBFCF7BFBCE6D5DD459BCAAC5D66A1
- 97BE3EDA0F9EEE37A7FCF5C1A92EF8D2F7242FCF0008F90075C136D393F4839B
- 4E5CD2F45F84F4EB0E1F2AAFFEF09D3FAF2A2FDDB16EE0A0093DB272B8481000
- F05FA5BBB66E7BF6F73F7CEAD93FDEFCA15533CAAD5DFA885FB75047FDE6F97E
- B3066966DF7362E568587E4FFDBBCA56DF3048B6FAA641E66C40F00D8474CBB4
- 7E24F3DC2F7F7FD459175C3FAB5BF701FDAC7D00009F2ADAB961F35BAF3EFECE
- 6B2FFC668555AFCDF3FA66D347FD52F0CD73FD7A899F0E0072302AF481A9A7C5
- 4A0010A142806CF529011D04240498A705F4564E079861207DD6B9D70D3BE7E2
- 1B67F5EA336C90350600F8C4D64D85EBDE78F9B177DE7DFD8F6BACA11477B3E0
- 4B08D0D3FCE674BF345DF8F54CB39E818EA9E22F62290068FABA00111C027410
- D0B301C161E048F137C6E9279F3A7BE0B997DE72FAC0816346586300409CDAB0
- 61D9CAD7FEF1D03BF3DEFBEB466BA80BBF6CCD10105CF4CDA37E5DF8CDE2AF79
- 7ACA3F582C060021BFB7FEDD651B2A084808089E11D04120544B9B70E2057DCF
- 39FF5B270D1A35656C667A8ECC180000625C45D5C18AF52B3E5FFAE62BBFFD78
- FEA7FF927BF7EB23FB504DBE167CC46F5EE46716FE983BEA37C56A0010660810
- 660890BE9E0D686A46408701331404FAA9195919E75C78E3A813A65F3CB16FFF
- 9EC39292F3E5B5000031A2BEAEA47ECBA61DAB3FFDE8C505AFBFFCC88A9ACAC3
- E691BD59EC43157DF3885F1FF54BC10F75D41F93C55FC47200D0CC5302F2E7D1
- 41408780E02060860129F8B2D5C5DF6C81FDF9DDFAB53FFFCB3F185F3079D6F8
- AEDD07F3C02100F0B0E25DEBB62E9CFFEEC2D7FEF9CBC525459BE5E63D52E0A5
- A0EB22AF9BB9DF2CFAC1855F177F5DF8CD626F068198130F01406B2A08E81020
- 631D0242CD0A48D385DF0C017A9B327CF4C95D4F9A79C9888143A60CECD177D0
- 80CC0C4E1300809B2A2A0F56ECDCB27AE386B50B377CF2E13F56AE5A3E4F6ED7
- 2B45DC2CEEBAE807177CDD74D1D75B7DB46F1EF1C74DE1D7E2290008F9F3E83F
- 93DEEA9900330C483383806C750890B12EFAA19A7CDD6A89A9934E3AAFE7C4A9
- E70E1E38A46050F78E7DFBA676E8203309000087C813F9B6EDDDBA79CBDA451B
- 167CF6DABAF99FFC6B87558F7511D7853F5493C26F7EDD2CF8B2D5055F177DD9
- EA42AF8BBF6CCD2010D3E22D0068A1660344A820D05418907E50D13FAAAF5BE0
- E7929353534F987E71EF41234FECD5B56BBFFCCEF9BDF233F3BA76EAD82E2137
- 31B193F9FB00008E431EC2B3F74063794559F19ED292ED25C5C59B4BD617FE7B
- FBA71FBDB8ADAEAE460AB859BCCDA6BFA6FB7A7CBCA26F167E119747FDA6780D
- 005A384140F6C9560AB9DE0687013D3EA6F0076D753BF27AA9E99929C3479EDC
- 79E0D0095D7AF61C9C9FD7B95B5E4A46765A7A6A7A7A4A62665A7266525A5A72
- 4E6A4A5A5A5A636A5D6ACD2195CAED8A01C41BB9CD6E6AB6AA49A849AEA9ADB6
- D41DACA9ABA8AFAE6DA8A8AEAAA9AAAAAD3C545D565A54B663C7BA920D6B16EE
- 5E5538AFB4A6AA42176929D87AAB9B59C8F5D66CB22FB8E84B335F4F8ABA6C7D
- 55F8353F141AF9339A7F4EE99B41406FA5E93070A480DB5B29F0663F78ABBFA6
- 9B7E0DB3C96BEBA67F07732BAC6D62626A6AAAEC0380B85153536315D206B3B8
- CA568FCDAD6E5290839B2EE2C14D1778BD95EF35FB7A2BCD7C6DA1B7FA77D0A4
- 6F8EE38E2E3C7E611656F9B39B4DBE66B650455C1777B3D0EBAD0E024D35790F
- D9CA6BEBF733B742B6BA2FCC3E00C4A2A68AAA6C75D135B75290A5AF8B74A826
- C55DB666810F55ECCD26AF6D36790FB369F2355FF06B8191A2ABE9CFA0A9C2AC
- 8BB62EE4665F9A0400D9A7B7C1DF63EED3CD7C7DDD17D20FB5058058A58B6BF0
- D62CC2BAAF8BB3345DB4CD02AEB7CD15F9E07EF0EBEBAD90BEA6F7F986DF0B8C
- 2EBC9A7C1E660B2ED6B295626EF6838B7BA87D66335F2F5433058F0120D69845
- 56C83854338B73A86616F650FBE467CD7EF0D66C26F9BA2F5160BED054F1359B
- 146D21C55D842AEA4DED93BEFC9C7EAD504D93EF0780786416DBE0A26C3629E4
- B295EF370BB9D982F709F939A1BF6E3653A87DBE63161E7C21B8200BBDCFFC9A
- 59E485EE076F851E0737A1BF47E87DC2EC03402C338BADD9D7855B1764B3E9AF
- E9621EBC15E63E217DB39942EDF3358A4CF3CCE2ACE9CF4CB6BA09FDBD3236FB
- C1DF17DCD75BDD078078671663731BDC37F705177E11FC3D7A6BD2DF8B20149D
- 9609271088E6F689E65E0700E2DDF10AB559D0838B7BA87D260A7E98283A6D13
- AA900BF3730D15009AFADC9BFBFB68EE6B00E025A10AB3D6D4D7CCFDA10A7C53
- 3F47C16F258A4A64C9E779BCCFB4B59F397F5700624553C5FA788EF773F2F5D6
- BE36825054A2279C7000007E4791070000000000000000000000000000000000
+ 549849444154785EEDDD077C5D65F9C0F1377BB72549D3A67BEF996EA0B4EC21
+ 5354282A28531CA02282822032643900FDE36009282AB2649659868074B7E9DE
+ 3BCDE84A9B3DFEE7B99CB7BEBDBD496F927BEE39F79EDFF7F3797DDFF724B937
+ BDC53ECF79D749508826F9BCF9CC0120B466BB200A0846919768D7ADE1730780
+ 438513F89BEC1A114020EA989682BDF9B9EA76F067DDD267CFDF098078D55290
+ 0FBEAEFBE6F5967E96A4A09D08366D132AE09B9FA1F9757D3DD435A9437DF6A1
+ AE01403C0915C8E55AA8A0AF837BA86B22D46B9110848980D3BA50815AF7CDAF
+ E9B6794D077EE99B6DF37B742DCCEB0010AFCC602F745B5FD77D09E4665B98DF
+ A3BF16DC36995F431002CEE14205627D4D5F973A38C087AACD127C4DE85ABF96
+ D0D75A72A4AF03805B8E146CCDAF07DFDDEB602D4507FF50D7826B61B6A5D6C5
+ 14EA9AAF114CFEC70CC2423E1BB3E8AFEBB60EE8BA1D5CF4D75AAA45705B93B6
+ D9078058161C7C753B54106FAD0E55CCAF495BE8B6594CF275DFF37B90D1C157
+ D39F4770A04EB28AEE9B45AE07B7CD6BBA1FEA6785F91ED29622740D00F14207
+ 61332007076DB3C8F5C6A06BBA6F5E0FFE1E29FA6785EE4B2DF4FB69FABAEFF8
+ 35D0E8A0AB9981586AE99B815BDA6660D7FD239544959C9C7CCCF4F30B468D9D
+ D9B77B8F417D738EEA5A98969A96959C9C9A999C9C949998929191DA9C9C9998
+ 9E94D1989C9691D95C9B9150579B6CFD2C00C48DE6D4B486AA84B4EAA486DAEA
+ A69AC6EABA8486AAA6FAEAEA8686C6AA8686BAAADABADA0395BBCB76946C5FBB
+ A978F19C4DFFF9F0B952D5D0D060FDA8046809E6E114F95EF3FBA5AD93013309
+ D0D74DFA6BBEE1B704400779A1FFEC3AE0EBFAF3C07D7830D74582B3AE0FB6C5
+ A9E77EB7FFC851D387E577ED6505FABC3ED9D95D7A653426F54CEAD225DDFA1E
+ 0040981AF7ECA9A94E6ADCB67FFF9EAD95BB2B3697976DDDB4ACF8C395B35FFC
+ DD062B2F90C4408A04F6E0B60EFEC14527063A113013023319F04D22E0970420
+ 38F0EBBE6E4B10975AB70F09EE769D62B7759D7CE2E9DFE83DEDB82F4FECD967
+ D884ACFC1E637352D373ADEB00008754D6D5EC3A50B67DD1B62D2B177CF2C1B3
+ F3DE79FD892DD6659D04D41BB5047B3331D06D09F03A19D0898030DB22EE1381
+ 784F005A0AFC12D0CDE0AF4B4BC15EEAD48953BE5070E299974FEDD577F884AE
+ F9BDC7A6656476B3AE03005C525B5DB5B3AC7CCBE2AD9B56CC7FE795473E9DF7
+ DF574BADCB75563193815049812E3AF04B5BF8261188D704E048815F6A1DFC75
+ 809776AAD197764A8F1E8373BE7AC55D33878D9E766A5373EA84FCFCAEF1FA99
+ 01404C2B2F2F6B4E4CA89BBF72E927B3FFFAE79FCED9BE7D4DA5755902BF9910
+ 485B82BDEEEB24406A5F2502F116CCE4CFA3FF4CBA9640AF8B0EFC12E4759160
+ AF8B04FDD4E4E4F4F44BBE75EFC471934F39ADB0A0FBF4A4B4CE19D67500408C
+ 68ACDD5BBDA3B4E4C3459FBDF1C65FFE70E3BC86869A1AEBB2047F9D0CE82249
+ 802E3A11905A17A11301A9CDA420A6C5530220815D933F97F4A50EBEDB0F19F4
+ AD9276FCA917F739FD8BD79C5BD867F849D9E9995DAD6B008018B7BFA6AA6CC7
+ E6156FBFFEFC832FBE37FBC9CDD6A55AABB4960C048F0A483BEE4603E2210190
+ 3F83FE7398815F077D5D74E0D701FF60E03FE38BDF1B74C679D75CDCA367E713
+ 1212BA9A890400204E343797356DDFB6F7DDD75E78F0C9D79E7F68AD75C94C04
+ CC84402701BAE804C04C04A43693829813CB098019F88519F45BBAE30F047C5D
+ 7FF9A29F8E3EFEAC2BBE9E9A92734C5E5E5E2C7F1600803055545434D7D557FE
+ E79D97FFF4E4737FFB65B175492702BA6E6D4420783420661381580D7A66F0D7
+ 815F6AF38E5F02BE047FF36E5FF6E3A77DED8ABB27CC3CF96B17E775ED39C9EA
+ 03007CAAA27CDB6773663FF5E4D38FFC6481D59504C05C2B204512004906CC11
+ 0109F8313F1A108B09803944AF83BFBEEB6FE98E5F4AFA59E77F7FE87917DD70
+ ED51B9DDC75B7D000002CACB4A16BCF88F5F3EF8EA730FAEB2BA92044832D0D2
+ 88404BA301D28F19B19400C8EFAA7F5F1DF8A50EBEEB37EFF80381BF57BF91B9
+ 3FF8C99397F51FDCFB8B09095DE5FB00003844737359E3FAD55B9EFBD59D5F7D
+ 74C79695BBAD4B3A11304704E266342056128050C15FDFF99B77FD66E0CF50C9
+ C919D75EFFF849D38EFBE277D2D233F3AD6B0000B4AAB6A6AAFC930F9EFFFD03
+ F77DF36DD5D0506D5D92622602A1D607C45C12100B0980047A2DF8AE3F54E097
+ 79FE8C134FBB74E005DFFCC5F7BB16F49C68F501006893B2D26DF3FEF1F82DBF
+ 7DE78DC7D6595D49028247047422103C1A203C9F04783D01D0C15FDFF59BC15F
+ 02BF24007A8E3F70D79F9E9E9D75EBFDB32F1DD267D045893905F23D0000B44B
+ 536569FDEACD6BFF76DB8F4E7DACA666FF01EB921E0DD0451200735A4027013A
+ F8EB84C07324907A5570F097A203BFBEEB0FDCED5B25D32A5993A79DDDF7E7F7
+ BF714FAFBE234E4948CBF2F29F0D0010032496E417F41E77D2E9DF98B875E3AA
+ 253BB6AD915100894BBA08DD0E75C7DFD275D7793148CA87151CFCE5F7D473FD
+ 870CF55B45827FF695D7FC6EC657AFBCE3BEAC9CDC3E561F00808849CFCCE936
+ 6EEA79A7E6E777DFBAE0B3D7775A9774D0D74533DB5AA86BAEF35A02607E9052
+ EBE0AF1380FF2DF0B3837F5656E7CE77FCF683AB078F3CEEDA9C9CCE3C771F00
+ E088B4B494F4BC8281271E33E3FCAC4FDE7F76597D7DADDCD99B71AB35E17C4F
+ 54792901303F44A9CDE0AF87FC25E84B90FF7CC8FFD8F3FAFFECBED9F7F4EA33
+ E484CCCC4CCF7DB80080F822B126AF6BCF51279C7EE9841D9B572FDEB67595AC
+ 093063971EEE6F693AC033BC9200C887627E803AF09B77FDFACE3F10FC2FBEEA
+ 9EA3BF71F5DDBFCECEEAD2DBEA03001035E9195905538F3BE7B48CCCCEEB17CF
+ 7FBBD4BA6406F7E0402F7D9D10047FCD355EF845E477D0BF87DCF5EB22C15FDF
+ F99BC3FE59DFBBE1F193671E73C64FE365957F6D6D8D2AD9BA556DDFB2596DDF
+ BC49959796A8EA0355AABABA4AD55459B5556AAA0FD875B56A6EF2E47A12003E
+ 969494A4D2323254466666A0A467D8B55532B3B255B7C21EAAB0771FD5C32ADD
+ 7AF654C9C971F1CFB76AACDC593FE7A3D7EEFCDDBD97BE6D75F52E01F3DC00BD
+ 55509F15E0996D826E2700470AFEFACE5F86FDB3AC9279E31D2F7D69E0D069D7
+ E4E77775FB776F975D65A5AA78E17CB57ED54AB5CD0AF63BACA05F5E2AEB4900
+ C01F12131355819D10F4ECD3570D1E3E528D1857A4723A77B6BF23B694979735
+ AF5BF5C98377DF7CCEBFAC6E9555241190DD02523C9B04B81944CDE02FB50CF9
+ 07077FBDD25F4EF5CBB9F357EF5C3A62CC71175BFD98B16FCF1EB57CF102B56C
+ C17CB5D40AFC255BB7D85F010098FA0E1CA4468E9FA0465965D898B181918358
+ 52BCF883277FF6A3131F530D0D9556578F04E8C383CC24409F17205C4B02DC4A
+ 00DA12FC339392D23ADDF7C7CF7ED87FE09833ADBEE7EDDCBE4D7DF8D61BEAB3
+ 0F3F509BD7CB23A701006D919090A8060E1DA6A6CE3C5E1D73E229EAA8BCD838
+ CD7DE3BA252FFFE8AAC9BF696CACDD67756534C0B349805B0980047B21EF2F6D
+ BDE0EFB0E0DFB973C151F7FCDFA7B774EBD17FBAD5F7AC039595EAD3F7DF551F
+ BCF9865A55BCC4BE0A00E8284906C64C9CA4A69F7C9A9A74EC7495962EE1C1BB
+ 4AB6AFFDF0C66F1FF38BBD7B4BE581422D250192004822A003BF9E16881A3712
+ 80D682BFDEEA1708FE6969599D7EF3C8C25F14F61A7CACD5F79CE6E626B5E8B3
+ FFAAF7DF784DCDFFF843555F2F7FAF0000A7A46764A829338E57334FFB821A36
+ 7AAC951CB8751FDB3A4902BE7BF1A85B834602A4043F43C0B52420DA9F9CBC9F
+ 2E3AF84B91C0AF57FB07B6F9252525E5DCF7C705D77971D8BFA9A9497D32E71D
+ F5E25F9F545B36ACB7AF0200A269C88851EABCAF5DA2C64D99E6C94460C3BA25
+ AF5C7F55D1AF1A1B1B654D802C0C944440EF0E90220980990444752A209A9F58
+ 70F0972277FE52CC617F59ED9F7DFB0373AE183566C6D7ACB6673434D4AB0FDF
+ 9AAD5E7AE66916F3018047F41B3C449DF7D54BD4E4E9C705A60BBC64D9A20F9E
+ BAF907331EB19AFBADA2B709EAE9001905D06B02A29E04C8DD7734E8C02F8E18
+ FC6FBCE3C52F174D3AF50AABED0912F8DF7EF925F5C02F6E092CEEDBBF4F4674
+ 00005EB0675785FA74CEBBEAD3F7DF0BEC1CE8DD7F806746040ABAF71DDB6FE0
+ B8CAFFBCF70F59116E0678297AC85F077CA9A3F68B472B01D029990EFEF2BE7A
+ CE5F270081E0FF9D1F3F7AEA883127FD283333CB137F7BCB16CE57F7DEF463F5
+ C19BAFABAA0392BC0100BCA872EF1E35F7A3F7D5E2CFFEABFA0D1EEA999D03E9
+ 597993FBF41BBA6DEEC7FFDE6C7575E03783BE6E0B9D0498D71C118D0440FE20
+ BAE8E0AF17FD49F00F2CF8B34AF6D7AEB87BDA19275F706BD65105D14A4C5AB4
+ A7A242FDF9D7F7AAA7FFF87BEB3FAABDF6550080D7ED2A2F53EFBEFAB2DA6725
+ 0443468E56A9A972AFE91EB9A1EDD7BDD7D1A9D9F9AB972C785B4E7E3387FBA3
+ 3EF4AF391D688F14FCE5CE3F10FC271F7B6EBFAF5F7DCFFDA9995D2421704D63
+ 63A37AF3C5E7D4AF6EFDA95ABF7AA57D1500105B9AD5BA952BD49CD75F555D72
+ F3549F01035D9D164848CB4AEA3FB468DAC6754B3FDCB175B50C270707FFA873
+ FAD3081EFA97C07F58F0CFCAEAD4E5A127563F70547EB7E156DF359BD7AF53FF
+ 77F7ED6AE3DA35F61500403C18316EBCFAF60D37ABFC6EDDED2BEED8B36BE7F2
+ EF5E3CE4FB070EECDB63756561A0EC0C30CF089022898114A1EB88737204C0BC
+ FB97F7D177FF7ADEFFE0D0FFEDBF99F3AD5EFD86CDB0DAAE686E6E0E6489BFBA
+ E5276A5759997D1500102FCA4A4AD4FB6FBEAE7AF5EB1F7820915BD233B2BB8E
+ 183B33FD9DD71E5D6475F50840702D1C1F15702A0130837FABF3FE977FF7C119
+ D3669CFF5DABED0A79BADE1FEFBB4BBDF0F45F5453A36CC70400C4A3FABA3AF5
+ F1BB6F059EAC3A727C914A4C74F21EB86509499923F2F30BD72F9C3B7B9BD595
+ A06F1609FC8E077FE1D49FDE1CFA97C02FEF63AEF80F04FFA249A7F7BBF8EABB
+ EF4A4A4A91EB5127E7F4DF79FDF7D5B2450BEC2B008078B76679B15A32EF3335
+ 66E26495991DFD070E65666626F41F3C66E2FA550B3FDAB17DADAC07080EFEC1
+ 456EA6A58E28271200F3EE5F5E5F27019200E8E09F9595D5A9D3ADF7CFBE333B
+ 27AFB7D58FBA396FBCAAEEFFD94FD4DEDDBBEC2B0000BF909D02EFCF7E4DF5E9
+ 3F5015F68A7E18921BDFD1453387BDF3EA23EFD5D7D7EAD300CDA2037EC403BF
+ 16E904C00CFEE6D07FF0BC7FD62DF7BF7579DFFEA34EB4DA5125F3FDCF3FF584
+ 7AF2F70F30E40F003EF6F994C03B2AAFA040F51F3CC4BE1A3D19999D0A868D3C
+ 36F1DD371E9727C805077F33097044A4130073E8DFBCF33FE4EE7FE669970C3D
+ EEB85937A46765E9EF8F0A39C3FF89DFFD56BDFCF7BFDA570000FED6ACE67FFC
+ 914A494D5543478D89FA56C1BCAC8CE1A5BBCB3ED9B876B1EC0A90A01FFC6C00
+ 690B69CB2F17B1A420920940F0DDBF047FF3EE5F827F66525252A79FDCF1E2CD
+ 79053D7A58FDA89127F5FDEECEDB02433E0000988A17CC53D5070EA831932645
+ 350990F301060D2AEAF3DA8B0FBDDFDCDCAC9F0B604E09E84420E2229900E8BB
+ 79794D5D8287FEB3BF73DD23A78E1A3FF37CAB1D35D5550702C7F92EFCF463FB
+ 0A0000875AB36299DAB97D9B2A9A764C547708646677EE9E9BDF538E0ADE6875
+ 43AD07D0223A0A10A93F61F0DDBF14F3C01F4900B27AF51DDEF5E26F3D785B5A
+ 5A8AF4A34282FFEDD75DA356172FB5AF0000109A1C082787C14D9D71BC950444
+ 6F96BA6BB7A1233EFDE85F6FEDDF57218702B5B42830A22301914A0082EFFECD
+ B9FF40F0B74ACE4DBF7CF5AA1EBDFA8DB7DA5121C3FE72E74FF00700846BC7D6
+ 2DAA7CE74E35F19863A3361D9096969A3164F894F4B75E7D44F6A54B02A08B99
+ 0088888D0244220108BEFB37E7FE0F2EFC3BED9CAB479D72E679D726244467E1
+ 9F2CF87BE8CE9F33EC0F0068B34DEBD6AABADADAC05901D1929B9F3A78F7AECA
+ B9EB56CFABB0BAC149803013810E8B440220015D077FF3EE5F82BF94C0637E7F
+ 72FB8B376766758FCA21CCB2D5EF89877EA33E98FDBA7D050080B659BD6CA94A
+ CFC80C3C51301AE406B9EFA0F17D5F79F6D7EF585D09FC7A5160F02880D6A164
+ A0A30940A8BB7F99FBD743FF8195FFB3BEF18B29138F3EF322AB1D15B2CFFFE5
+ 7FB0D50F00D031726260B71EBD54DF8183EC2BCECACAEA54909098B8AC78D19C
+ 1D565782BE2401920C48B09712B151808E0EC74BE017F23ABA4852A193804022
+ 70FCC997CCB2EAA878EFF557D4B34F3C62F70000E8983FDC7B67609B60B4CC38
+ E51B1233E5265A62A82CA697982AB1D58CB542C7E076D12FD21EFA8DF50880FC
+ 72E6144020F89F7DE1F5A3BAF6E833D66A3B4EE66C1EFBEDFD760F00808E6B6C
+ 6C540FDEF173B5A742A6E69DD7BD7B9F71677FF9BA515653A6D1753C95D8AAE3
+ AC8EBB42D76DD69104403333123D05A0B700A69D72C695175AB5E3E4E94EBFBD
+ EDE6C0CA7F00002269DF9EDD8185E5B2C03C1A4E39EB5B123B2501D023005224
+ C69A31B7432493680F9D7DE822AF63067E59F89775F299578E38F1B44BAEB0DA
+ 8E92457F7FB8EF976AF9E285F615000022ABAC64874A48485423C639BF9BBD53
+ E7DC9EBBCAB67FBA7ECD02BD2340EE6EF58E00736740BB75348390E02FAFA187
+ 252401D0C315E9677FE9071758B5E3DE7BED15F59F77DEB47B000038E3B9271F
+ 53CB16CEB77BCE3AEB821F4A0C35A70124C6EA782BB1576270BBB5370130EFFE
+ E535A4983B00D28E3DFEC27EE95979C75A6D47C933FD1F7FE8D7760F0000E7C8
+ 88F34377DE169547C9F7EA9D77ECF41366F5B59A32B22EB155E2AC390D60C6E2
+ 366B4F0260BE914E000E1B01F8C2F9D79E919FDFB55DBF54B86461C6EFEEBA3D
+ F048470000A261CFAE0AF5C86F9C5F709E90D035F18C2F7EEF0B56538F004869
+ 6904A0CDF1B63D0980263FAB83BFB9F82F35353533B3FFC03133ACB6A366BFF8
+ AFC008000000D134F7A3F7D5A2CF3EB57BCEE93760CC0C89A956538F00489C95
+ 5A2701ED8EE3EDF941C93274A6112A0948FDCA376E9990969E7994D576CCEE8A
+ 72F5ECE3ECF70700B8E3F1077FEDF808747A46D651175CF2B322ABA947004205
+ 7F332E87ADAD09807E03A9CDE07FF0EEDF2A6913A77DE144AB76D4530F3F14D8
+ FA0700801BE4D1C12F3DF3B4DD73CEC469674A4CD5EB0074BC359300333687AD
+ AD0980266FA29300F925741290DABDE7A0CE79BD0A1D7D7AC2D2F973D5C7EFBE
+ 6DF7000070C74B7F7B3290083829B777E194AEDDFB77B69A3A01D0715707FF36
+ 057EADAD09807E2329FA1790E18883C3FF177CFD96E9D9C97992A938420EFA79
+ EC815FD93D0000DC233149A6026477805324A6CEFAE6CF65579D4E0074DCD571
+ D88CCD616B4B0260BEB0CE3AF49B0782BF9411E3A71F6FD58E79F7D57F079ED5
+ 0C008017C86240A7CF06183DE63889AD81386B1573144062B119CBC34E02DA3A
+ 0220F4CF482D456722C9638B4EEE9E949433D26A3BA2A1A13E2AF32D0000B4C5
+ 0B4FFFC56E3924396B94C458691945C761A1EBB0B5E50724ABD0457E4E671F07
+ 47004E38ED1B13F3F2F2C2CE3EDAEA83D96FA85D65A5760F00006F58B668815A
+ BD6CA9DD8B3C3957E7F8D32F996035834700A4484C36637458C24D00825F50BF
+ 990EFE81D277F0983156ED0839F4E7C5BF3D69F70000F016A74701FAF51F2B4F
+ D63D1873AD2231586271702C0F2B09083701D0E4FB759137962188409D949494
+ D6AD5B7F797CA1233E79EF1D55BA63BBDD0300C05B16FEF713B571CD6ABB1779
+ B95DFB8F94586B350FC65EBB366373D8DAF4CD36C92CF4DDBFFE0552A64DFF4A
+ 2F39B0C06A475C7373937AE1AF0ECFAF0000D0412F3838529DD3292B77DAF4F3
+ 7B594DB9FB3783BF8ECB6D126E02A05F5C8ACE32A4C89B078622A6CD386F9C55
+ 3B62C1271FAB6D9B36DA3D0000BCE9B30FE6A8926D5BED5EE44D3E36106BCD29
+ 009D04483163F511C90F1C49F00B495FBFA92EC9BDFB8D766CFE7FCE1BAFD92D
+ 0000BC4BCE03F8F0AD37EC5EE4F51F3C6EB455E9BB7FB3848AD5AD0A2701D074
+ 86A1B38C40E097929494949A5FD86784D58EB8CA7D7BD5824FFF63F70000F036
+ 49009C3A18A8A05B9F1156CCD553003A1190986CC6E8B084FD8D367913FD463A
+ EB4839FEB44BFB65A465E658ED8893C57F8D0D0D760F00006F2BDDB143AD2A76
+ 664B606A5A66272BE6F6B79A3A064B9198ACE373D8C24900CC173583FFC12460
+ C4E863065BB5233E78F375BB0500406C70721A60D8E73157AF013063B219AB75
+ BB45E124009A7E415D0E2600F9DDFAC9AAC488DBBE65B35ABB62B9DD03002036
+ C8E8B5538F0AEEDEBD5F4FAB0AC45FABE8C06F96B0B425011087047EAB04E620
+ BAE416F6B0EA887332830200C0295507F6AB059F38B37EADD351059200986B00
+ CC44206C474A00F48BE9C0AFDFC04C02923AE774722401F8ECC3F7ED160000B1
+ C5A91896D339B7D0AA74D03783BF19A785AE43926F0C87F92287BC516A6A464A
+ 537D4237F94224EDA9A860EF3F002066C9F3019CD80D9093A8BA2525A5EABB7F
+ 33266BAD067E2DDC0440C80BEA223F17B8FB1F33F9946E5D0ABAC92F1251CB16
+ 39FB684500009CB4675785DABE7993DD8B9CA49C6E2945534E951BEF401CB68A
+ 4E0274094B5B120021DFAF837FA01E3EE268471600163BFC6C6500009CB6CCA1
+ 583664C4D1BDADEA602CB66B29610BE79BCDBB7E61F6137BF61E2C8B1122CEA9
+ 0F0D00806871EA66B667AFA1127B75D0D7715904F75BA4837A4B825F40FAFA0D
+ A52475CA2D8CF8FCBF1CA22005008058B67CD1C2C003ED222DB76B6181559977
+ FE5242C5EC16C90FB4A4A5E02F743B212D253D2370258298FF0700C483FD95FB
+ D4A675EBEC5EE4A4A4A4675AD5C1582CD72C6D4A025A4B004CE60B986F989892
+ 9616F10460DDCA15760B0080D8B66E65E40FB44B490DC4DE83B1D8AE35B3DDA2
+ 7012007921B31CF286A9C9911F01D8BE25F2AB26010070839C6A1B69C9A9E9E9
+ 5675584C0E2AAD0A2701D0F48B992F9E989C9AEA400210F90F0B0000373811D3
+ 525520F69A415F33DBAD6A4B0220F4F7EB374C484A494E0B5C8990EAAA038143
+ 80000088073B1C4800923292F5088059DA14D3C3F966795193CE38A44E54C949
+ F24B44CC8E2D5BEC160000B1AF74C776D5D0506FF72223392170F3FD791CFE5F
+ 02600AEE1F269C04406BE1C532229A006C73E0D4240000DCD2D4D4A4766EDB66
+ F7222329FDB0D8AB63F41103BFD69604C0F4BF8CE3C0FE088F0030FF0F00882F
+ 915E07905A57694E01B42B9687FB436666A1DB018D49C9721041C494ED2CB15B
+ 0000C487F208C7B63D75C9A19EC163C6EA236AEF0880382C1988045904080040
+ 3CA9AEAEB25B1165C6E136C7630F26008E7C480000B8A6C699D8D6A138DC9604
+ C07C9388077ECDA10F090000D7387C73DBAEF8DCD611007961C782BF70689804
+ 0000D7D44427B6B5293E77740A20E218010000C41B074700742C6E734CEE4802
+ 20229E04B0060000106F6AAAABED56447528067734018838873E2400005CE3C5
+ D16DCF2500CDCD4D760B0080F8D0E4C1D8E6B904000000388F040000001F2201
+ 0000C08748000000F021120000007C88040000001F22010000C08748000000F0
+ 21120000007C88040000001F22010000C08748000000F0A1D61E25285F939264
+ 9564ABA45925C32AD956E964955C298FFCABFC99BCBCBC883D16F8C2138EB15B
+ 40FBA46764A8FC826E76CFDBF6EED9AD2AF7EEB57B00E2D580A1C3D45D0F3F6A
+ F73AAEA2A2A2F9F22FE5CFB29ABBECB2CF2AFBAD228FD4ADB54A83551AADD26C
+ 97C3900020AE8C9D3C55FDE0D63B024940AC285E304FDD79FDF7557373C8FF8F
+ 0288035E4C009802405C39EE94D3622AF88B514513D5F8A947DB3D00880E1200
+ C4951EBDFBD8ADD832FDA453ED160044070900E24A56B6CC4EC59EB193A7A8A4
+ 6499690380E82001405CC9EE9463B7624B6656B61A3A6AB4DD0300E79100206E
+ 242525050269AC2A621D008028220140DCC8CC8EDDE02F8AA6B2030640F49000
+ 206E64E7C4E6FCBFD6A34F5FD5AD474FBB0700CE220140DCC8EE14DB0980603B
+ 208068210140DC88F5110031611AD30000A283040071231E4600468C1DAF3232
+ 33ED1E003887040071232B0E4600E42C80D11326D93D00700E0900E24697DC3C
+ BB15DB580700201A48001037FA0F1E62B7629B9C079090C0FF3501388B7F6510
+ 17121212D4A06123EC5E6CEB7C54AE1A3064A8DD0300679000202E74EBD94B65
+ E5C4E631C0A1300D00C0692400880B83860DB75BF1A188ED80001C460280B830
+ 68F848BB151F640AE0A8BC7CBB070091470280B8306464FC3D496FFCD469760B
+ 00228F0400312F5E17CD8D9FC23A0000CE210140CC1B3B698ADD8A2F63264E52
+ 29A9A9760F00228B0400316FDCE4A9762BBEA4A567048E06060027900020A625
+ 2626AA319326DBBDF8C37640004E2101404C93C37FE2E129802D299A7A4CE090
+ 230088341200C4B47153E273F85F2B282C543DFBF4B57B00103924008869E326
+ C7FF5639A6010038810400312BB0FD6FE830BB17BF3815108013480010B3E275
+ FB5FB0A1A3C6C4F53A0700EE200140CC8AD7ED7FC164A7835F921D00D1430280
+ 9814EFDBFF82B10E0040A491002026C5FBF6BF60B2DB212929C9EE0140C79100
+ 2026B9B1FD6FF3FA75762BFA24D9193C22BE9E7808C05D240088496E6CFF7BFE
+ A927D481CA4ABB177D4C030088241200C41CB7B6FFAD5951AC56162FB17BD127
+ A7020240A4900020E6B8B1227E4F4585DA5556A6562D5D6C5F89BEDEFD07A8AE
+ DD0BED1E00740C0900628E1BDBFFD6AE5CAE9A9B9BD5CA25EE25008269000091
+ 42028098E2D6F6BFB52B9605EAF5AB57A9FABABA40DB0D452400002284040031
+ C5ADED7F6B562C0FD40D0DF556FBF364C00D23C74F5069E9E9760F00DA8F0400
+ 31C58DED7F32F4BF7ED54ABBA7D4AAA5EE2D044C494951A38A26DA3D00683F12
+ 00C41437B6FF6DDBBC4955571DB07BCAD59D00826900009140028098E1D6F6BF
+ 75F6F0BFB6BA78A96A6E6EB27BD1274F074C4848B07B00D03E240088196E3D10
+ 472F00D4643460D33AF74E053C2A2F5FF51D34D8EE0140FB90002066B8F5F4BF
+ B52B57D8ADFF59E9E27900A2680AD300003A86040031C1ADED7FB2E56FF386C3
+ EFF6DD3C1048C83400007404090062825BDBFF36AC59A51A1B1AECDEFFAC7471
+ 278018386C78604D0400B417090062821BDBFFC4DAA00580DAEE8A7255BA63BB
+ DD8B3E5904E8D66702203E90002026B8B1FD4FC811C02D59E1F2B1C0AC0300D0
+ 112400F03CB7B6FF89E01D00A655C5EE260063264D51C9C929760F00DA860400
+ 9EE7D6F6BFCABD7B55594989DD3B9CDBEB00323233D5B03163ED1E00B40D0900
+ 3CCFB5ED7FD6DDBF1C03DC921D5B3607920437712A2080F6220180A7B9B5FD4F
+ B436FF2F028F07767B3B2009008076220180A7B9B5FD4F843A002898DB0940F7
+ 5EBD55A15500A0AD4800E0696E6D7593B3FED72C2BB67B2D73F3C9801A870201
+ 680F1200789A5BDBFF36AE5DA3AA0EECB77B2DDBB076B5AAA9AEB67BEE601A00
+ 407B9000C0B3DCDCFEB762F122BBD53A392570C592F0BED729C3C68C539959D9
+ 760F00C2430200CF726BFB9F58BE78A1DD3AB2650BE7DB2D77242525A93113DD
+ 592889D823FFBDC816D24E5DBAA8BC8282C01A923E0306A941C347A861A3C772
+ C4B48FB4F65071F99A9424AB245B25CD2A1956915B0D599525FF95E43EF2AFF2
+ 67F2F2F222F670F20B4F603E139FBBE6E6DBD4D1279C64F7A24756F75F71EE19
+ 6A7FE53EFB4AEBFA0D1EA2EEFEE3E376CF1DEFCF7E5D3D7CCF1D760F7E909090
+ A8723A77565D72F3AC921B547F5E3A1F75944ACFC854A969692A25353550CBCE
+ 9A2379FBE517D523BFB9CFEE21126434F3AE871FB57B1D575151D17CF997F267
+ 59CD5D76917FB064DE52E6246BAD220F3169B48AEC650EB99F9904009E24FF48
+ FDE985575DD901B079FD5AF5E3CB2FB17B4726FF10FFF945777E576DDF9E3DEA
+ 5B5F3A4B353535D957100F723A750EDCA117F696DD1E7D02ED821E3DECE09E1B
+ 56306F0F59FF22497063A3C40F4482171300A600E0496E6EFF5B1EE6FCBF263B
+ 06962D5C60F7DC21C3B9F28440C49EA4E464D567C0403565C6F1EADCAF5EACAE
+ BEE166F58BDFFDD14A2A5F0B1469CB35F99A7C4FFFC143D55179F98E057F216B
+ 4A38663AFE9100C093DC7CD2DD8A36CCFF6B6EAF0310E3D90DE07912ECFB0D1A
+ AC4EF8C259EAB21F5CAFEE7CF811F5C4AB6FAB7B1F7952FDE0D63BD485975DA5
+ 669C7ABA1A326254E0EE1F701209003CC9ADED7FA23DABFA8B17CCB35BEE299A
+ CAF49997C81D7AA8607FF79F9E50575E77A33AF9AC73D5C0A1C3554A0A77DA70
+ 0709003CA75397A35CDBFEB775D3C6C07C7A5BEDD8BA45EDAE28B77BEE906093
+ DBB5C0EE21DA12121254B71E3D0381FD073FBF53FDF985D708F6F0341200788E
+ 9BDBFFDA33FC2F64E740F102F7A701381428BA6415FEB499270482FC837F7D56
+ 3DF0F43F0377FB538E9BA9B27272ECEF02BC8904009E337E8A7BC3FF6DD9FF1F
+ AC78A1FBD300AC0370966CA31B3D6192BAE8CA6F07B67ECA5DFEB5B7DC1E18E6
+ EFDABDD0FE2E20369000C05364DED4ADA7FF89704F000CC5ED9D006274D1C440
+ 904264C87F8F321D75CEACAFAB9FFDEA41F5E8BF67AB9BEEFBAD3AFBC2AF06CE
+ 7F00621909003CC5CDED7F328FBF675785DD6BBBF29D256AE7F66D76CF1D12FC
+ 478E2BB27B688FB4F4F4C00154B22A5FCEA290BDDBB3AEF8961A397E0273F888
+ 2B2400F01437B7FF7564F85FF3C26E00A601DA4EB6E78D9B3C557DE727B7A83F
+ 3DFF4AE0144AD973EFE6E14E80D34800E0296E6EFF5BBE2802098007CE0390C7
+ 03CB8A74B44E3E23D96F7FE9353F540FFFF32575E3DDBF52D34F3E55A5A5CB81
+ A740FC23018067B8B9FD4FB4770780C90BEB00F20BBAA9DEFD07D83D04EBD5B7
+ 9FBAE0D22BD5034F3F1B3865EF9473CF0F9CA408F80D09003CC3CDED7F3277BF
+ ABBCCCEEB5DFBE3DBBD5E6F5EBEC9E7BD80E78A8F48C0C75D6051705F6E5DFFF
+ F85FD5795FBB441514B26A1FFE460200CF88D5ED7FC13816D85BE491B777FDE1
+ 31F5D5ABBE13382C09C0E74800E009B1BCFD2F9817D6010C19392A70480D941A
+ 3361B2EAD1BB8FDD03A09100C013DCDCFE2722390220C9843C21D04DF2886259
+ D50EA5F2BB75B75B004C2400F00437B7FFC9FE7D299122CF525FB76AA5DD73CF
+ F8294C0388EAAA2ABB05C04402004F7075FB5F04EFFE352FAC03183B796A607F
+ BBDF1DD8BFCF6E01309100C075EE6FFF8BDCFCBFE6850703656567ABA12347DB
+ 3DFF3A505969B700984800E03A37B7FF89658B221FAC57172F550D0DF576CF3D
+ EC062001005A420200D7B9B9FDAF74C776ABECB07B91535B5BA3562F2BB67BEE
+ E13C00990220010042210180ABDCDEFEB7D4C1B3FBBDB00EA067DF7EAA5B8F9E
+ 76CF9FF63302008444020057B9BDFDAF78FE5CBB15795E580720FC3E0DC01400
+ 101A09005CE5E6F63FE1E4A13D6B572E5735D5D576CF3D7E9F06A8A9AE524D4D
+ EE9ECB00781109005CE5E6F6BF8D6BD7A8CABD7BED5EE435363444E401431D35
+ 62DC7895919969F7FCA7B9B999750040082400708DDBDBFF8A173837FCAF2D9D
+ EFDC1A83702527A7A8514593EC9E3F310D001C8E0400AE717BFB5F3482F3D228
+ 2419E1F0FB3440D5FEFD760B80460200D7B8B9FD4F86E7572E5D6CF79CB375E3
+ 06B577F72EBBE79EF153A7059E0FE0574C0100872301802BDCDEFEB76AD95255
+ 5B5363F79C23F3CFC50E6E350C5797DC3CD57FC810BBE73F2400C0E14800E00A
+ F7B7FF452F287B611D80289A7A8CDDF29FFA3AF74F6504BC860400AE707DFB5F
+ 14EFCABD300220FCBC0EA0B1B1C16E211CBBCACB545D5DADDD43BC2201802BDC
+ DCFE278F875DB76A85DD735E79E94E55B2758BDD738FECB8E8929767F7FC45D6
+ 7CF8556363A3DA5FB92FB0E555EA03FBF75BFF1F381038A3428EACAEAFAB0B3C
+ B742BEAFB9B949EDB0FE5B7DE51FCF04A6AF10DF12EC3A14F99A9424ABC83345
+ D3AC9261956CABC8D86DAE9447FE55FE4C5E5E5E6BAFD326179EE0DF614ABF90
+ ED7F7F7AFE15BB177DF33FF98FBAEFA61FDBBDE8B8ECFB3F52279F7D9EDD73CF
+ 1FEFFFA57AEF35F73E7BB75C7ACD0FD529E79E6FF7625BE5BEBD6AE7B66D6AE7
+ 8E6D6ADFEEDD81F50D12D465AB63A06DD55507F6078E40AEB2FAB2D68560EE3E
+ 49C0EF7AF851BBD771151515CD977F297F96D59455C652E4B9D7B2DD454E1F93
+ E11BC97A1BAD227FF921FF0360040051E7FEF6BFE86FCD73E33D43F1EB344043
+ 8C4D01ECDBB35BAD2A5EA2DE9FFDBAFAE7637F560FDE71ABFAE9D597A9CBCE39
+ 4D5D71EE19EAE6EF5CA11EBAE3E7EA2FBF7F40FDEB2F8FA9D79FFBA7FAE0CDD7
+ D5FC8F3F0AEC6ED9BC7E9DDA55561AB8CB27F8A3252400883A37B7FF0927CFFF
+ 6FC9B2450B3CF10FF1988993554A4A8ADDF38FC606B911F22E199AFFE4BD77D4
+ 1FEEBD4B7DFB2BE7AA2BBF78A6BAF59AABD5C3F7DCA19E7FFA09F5F1BB6FABF5
+ AB5672A011228A040051E5F6F6BF3D15156ADBE64D762F7AE41FEE0DAB57D93D
+ F7A4A567A8E163C7DB3DFF686AF256022073EDAB972D55CF3EF188BAF9DB57A8
+ 2BCFFB827AE0F65BD49C375E0D2CC003A281040051E5F6F63F79FCAF5B77E29C
+ 0A086DF9E245EA96EF7D4B3DF7E4E3818746F1B022B881040051E5FEF63FF782
+ B067CE039876AC4A4888D8BA5D00318A040051E5E6F63FB1D4C567F4CB906F7D
+ BDFB07D2141416AA1E7DFADA3D007E450280A871FBE97FDBB76C0EAC8C764B5D
+ 6DAD5A1585E70F84836900002400881AB7B7FFB9B1FA3F9857A601C6930000BE
+ 470280A8717BFB9F9BC3FF9A5716020E1B3D5665E5E4D83D007E440280A8707B
+ FB9F6CBB5ABE7881DD73CFC635AB03A7B6B94DFE3EDC1E9101E02E12004485DB
+ DBFFD679E41015D9EEB56CA1FB231162FC14A601003F23014054B8BFFDCF1B41
+ 5778E558E0F153A705460200F813FFEF4754B8BEFDCF23415778E5F1C0322233
+ 78C428BB07C06F4800E038B7B7FFC9E34E650FBE57946CDBAA2A4ADDDB8E682A
+ 9AC63400E0572400709CDB8BCDE4E968920478851C45EC95DD00AC0300FC8B04
+ 008E737BFE5FCEFFF71AAF9C07D067C04095DFADBBDD03E0272400709417B69B
+ 7965CEDDE4959D00825301017F220180A3DCDEFE275BFF64EFBDD7ECD955A1B6
+ 6C586FF7DCC5A980803F9100C051AE6FFFB3EEB4BDFAA855AFAC0318553451A5
+ A5A7DB3D007E41020047B9BDFDCF8BC3FF9A57D601A4A4A4A851E327D83D007E
+ 410200C7B8BDFD4F787101A0B672C922D5D8D868F7DCC53400E03F2400708CDB
+ 8BFFCA4B77AA9DDBB6DA3DEFA9AEAA526B572CB37BEE2A9A768C4A4848B07B00
+ FC8004008E71FFF8DF79813DF75EE6956980DCFCAEAAEFC041760F801F9000C0
+ 115ED8FEE795E0DA1A2FAD51289A7A8CDD02E00724007084DBDBFF8497F6DAB7
+ 64ED8AE5AAB6A6DAEEB98B750080BF9000C0116E0FFFCB1E7BD96BEF750D0DF5
+ 6AF9E24576CF5D83868F082CDC04E00F24007084EB4FFFF3C81EFB7078E54985
+ B20870BCCB891B80E8210140C47961FB5FF102EF0FFF6B5EFA5D990600FC8304
+ 0011E7F6E23F39F96FC5E28576CFFB64BA62DF9EDD76CF5DF277979C9C62F700
+ C4331200449CDBF3FF6B961707F6D8C78AE6E626CF1C58949199A5868E1E63F7
+ 00C43312004494379EFE173BC3FF5AB187B62C4E98C67640C00F480010515ED8
+ FEE79545756DE1A5238B590700F803090022CAEDE17FD9532F7BEB634DF9CE12
+ 55E291638B0B7BF50E1400F18D040011E5F6F6BF154B1607F6D6C72246010044
+ 13090022C6134FFF8BC1E17FCD5BC702930000F18E040011E3F6E23FE1A520DA
+ 56CB172EF0CCC38B868F1D1FD81100207EB5F6FC4FF99A9424AB245B25CD2A19
+ 56C9B68AACF2CA95F2C8BFCA9FC9CBCB8BD873442F3C8115C8B1EA7B37FF5C1D
+ 73C2C976CF1D320220E7001C519881369CEF0A3B6887F17DA3264C522929DED8
+ 87FF9BDB6E56FF7DFF3DBB17DB665DF12D75CEACAFDB3DF72D5BB440DDFEC3EF
+ D93DF8818C8EDEF5F0A376AFE32A2A2A9A2FFF52FE2CABB9CB2EFBACB2DF2AF2
+ 70915AAB3458A5D12AF20F4FC87F7C48001011B2FDEF4F2FBCEAFA0E0044CEFB
+ B35F570FDF7387DD8B6D2400709B171300A60010115ED8FE87C81A3F659A4A48
+ E09F08205EF1FF6E4484DBDBFF10799DBA74510387B9BBA8138073480010116E
+ 6FFF83338A381510885B2400E8302F6CFF83338AA6B01D1088572400E8302F6C
+ FF8333FA0D1EA272F3BBDA3D00F18404001DC6FC7F7CE35440203E9100A043BC
+ F0F43F388B7500407C22014087B0FD2FFE8D2A9AA052D3E4181000F18404001D
+ C2F07FFC4B4B4B5723C68EB77B00E20509003A84ED7FFEC03400107F4800D06E
+ 6CFFF30F793A604242C44EFC06E0012400683716FFF9477EB7EEAA57BFFE760F
+ 403C200140BB31FFEF2F4553990600E2090900DA85ED7FFE53348DF300807842
+ 02807661FB9FFF0C19394AE574EA6CF700C43A1200B40BC3FFFE238F061E3B99
+ 511F205E9000A05DD8FEE74FAC0300E2070900DA8CED7FFE3576F25495949464
+ F700C4321200B4198BFFFC2B2B3B5B0D1939DAEE01886524006833E6FFFD8D53
+ 0181F84002803661FB1F783C30101F4800D0266CFF43AFBEFD5441610FBB0720
+ 569100A04D18FE8790670300886D24006813B6FF41B00E00887D2400081BDBFF
+ A08D18375EA56764D83D00B18804006163F11FB4E4E414357AC224BB07201691
+ 00206CCCFFC3C4A980406C23014058D8FE8760E3A74C0B3C1F00406CE2FFBD08
+ 0BDBFF10AC4B5E9EEA3F78B0DD03106B4800101686FF110ABB0180D8450280B0
+ B0FD0FA1B00E00885D09761D8A7C4D8A3CFA2BD92A6956917D3FD95691B1E05C
+ 298FFCABFC99BCBCBCD65EA74D2E3C817F50BC46B6FFFDE9F957EC9E7BFEF9D8
+ 9FD58B7F7BD2EEF9D3ADBFFDBD1A3A6A8CDDF3866F7DE96CB5675785DDF3A659
+ 577C4B9D33EBEB76CF7DCB162D50B7FFF07B760F7E205BA8EF7AF851BBD77115
+ 1515CD977F297F96D5DC65977D56D96F956AABD45AA5C12A8D5669B6CB611801
+ C0117965F1DF92799FA9A6A6265F97C5733FB33F0DEF90C58000620F09008EC8
+ 0BF3FF5507F6ABF5AB57DA3DFF5A32EFBF76CB3B8AA6712C30108B4800D02AAF
+ 6CFF5BB67041E00ED8EFD6AF5AA90E5456DA3D6F183D61B24A4949B17B006205
+ 09005AE595ED7F4B17CCB35BFE2649D0D20573ED9E37C891C0C3C68CB37B0062
+ 0509005AE595ED7FC5F3BD15F4DC246B21BC6602DB018198430280567961FBDF
+ AEB252B563EB16BB87251E5C0828E7012424446C331080282001408BBCF2F4BF
+ A5F3E7A9E6E690BB587CA9BC74A7DABE7993DDF38682C21EAAB0771FBB072016
+ 9000A0455ED9FEE7B5396F2FF0E23400870201B18504002DF2CCFCFF82F9760B
+ DAE2B96C0704D031240008C92BDBFFB66C58EFF953E6DCB07CF142D5D820077D
+ 79C7B0D1635556B61C140A201690002024EF6CFF63F83F94DA9A1AB5B27889DD
+ F306491AC7F0C86820669000202486FFBDCF93D300AC03006206090042F2C2F6
+ 3F39F466C5E285760FC1BCB810501247190900E07DFC3F1587F1CAF6BF35CB8B
+ 55755595DD43B04D6BD7AA7D7BF6D83D6FC8E9D4590D1A3ED2EE01F03212001C
+ C633DBFFE673FC6F6B9A9B9BACCFC89B870201F03E12001CC63BF3FF2C003C12
+ 2F3E1EB8682ADB018158400280437865FB5F4D75B55AB362B9DD434B96787004
+ A0CF80812ABFA09BDD03E0552400388457B6FFC9E23FAFED73F7A23D15156AF3
+ FA7576CF3BC6330A00781E09000EE195E17FE6FFC3B7649E174F05641D00E075
+ 2400388417B6FF090E000A9F17D7018C1A3F41A5A5A5DB3D005E44028083BCB2
+ FD6FEFEE5D6AEBC60D760F47B2AA7889AAAFABB37BDE90929AAA46164DB07B00
+ BC880400077969FB1F8FFF0D5F5D6D6DE0D9005EC36E00C0DB4800709077B6FF
+ 31FFDF56DE7C3CF0D12A2121C1EE01F01A1200047865FB9F2001683B2F2600B9
+ 5D0B025B02017813090002BCB2FD6FC7D62DAABC74A7DD43B864CDC4EE8A72BB
+ E71DEC0600BC8B040001DED9FEC7EAFFF69035134B3C792A200900E055240008
+ F0CCF63FF6FFB79B17A701060D1FA13A75E962F700780909003CB3FD4F1E6EB3
+ 7CF102BB87B6926381BDB67B4216017A25B904702812007866F1DFBA552BD581
+ CA4ABB87B6AADCBB576D58B3DAEE7947D134B603025E440200EF6CFF63F8BFC3
+ BC380D2009665272B2DD03E01524003EE7A5ED7F2C00ECB82573BDF75C808CCC
+ 2C356CD418BB07C02B48007CCE2BDBFFE434BBD5CB8BED1EDA6BF5B262555B53
+ 6DF7BC83ED8080F79000F89C5786FFBD789E7D2C6A68A857CB167A6F21250900
+ E03D24003EE79DED7F0CFF47CA620F4E0314F6EAADBA5B0580779000F89857B6
+ FF09F6FF478E1717028AA229EC0600BC8404C0C7BCB2F86F7FE53EB571ED1ABB
+ 878E2AD9B65595EF2CB17BDEC17640C05B48007CCC4B4FFF9343801019721890
+ 17A701868F1917D81100C01B48007CCA5BDBFF18FE8F342F4E03C8590063264E
+ B27B00DC4602E0535ED9FE2758001879C50BE77B725485870301DE4102E0535E
+ 19FE2FDDB1C32ADBED1E22458E545EB362B9DDF38EF153A7A98404FED901BC80
+ FF27FA9467B6FF2DE0EEDF295E7C3CB0EC3C19E8919D2780DF9100F89097B6FF
+ 1533FCEF18CF6E07643700E00924003EE495C57F42E6AAE18C752B97ABAA03FB
+ ED9E77B00E00F00612001FF2CAFCBFECFD9747D8C2198D8D8DAA7881F712AC7E
+ 8387A8DCFCAE760F805B48007CC64BDBFF8A99FF779C57A701C64FF1C61A14C0
+ CF48007CC65BDBFFD8FFEFB425F3BC772090E0E14080FB48007CC62BC3FFF2D4
+ BA954B17DB3D3845B659966CDD62F7BC63D484892A2535D5EE0170030980CF78
+ 65FBDFEA62796E7D8DDD8393BC380D909696AE468C2BB27B00DC4002E0239E7A
+ FA1FF3FF51B3D8A3EB00264C653B20E02612001FF1D2F63F8EFF8D9EE58B1604
+ 7604788DAC03484848B07B00A28D04C047BC32FF2F7BD337AC5E65F7E0B4EAAA
+ 2AB57AD952BBE71DF9DDBAAB9E7DFBD93D00D14602E0135EDAFEB76CA137EF48
+ E399774F05643700E01612009FF0D4F6BF056CFF8BB6C5733DBA1D90530101D7
+ 9000F8845786FF05E7FF47DFC635AB55E53EEF9DBA3874D428CF24A680DF9000
+ F88457B6FFED2A2F533B3CB82F3DDE353535598997F7465EE4D1C063277B2739
+ 05FC8404C0073CB5FDCF0A42CDCDCD760FD1E4D969009E0E08B88204C0073CF5
+ F43FF6FFBB668947A75E64742A2929C9EE01881612001FF0D2FC3F0B00DDB3AB
+ AC546DDDB4D1EE79475676B61A3C6294DD03102D24003E307CF458BBE5AEAD1B
+ 37A83D1515760F6E58E2D9DD004C0300D14602E003B200CC0B3E7EEF1DBB05B7
+ 7CF6E1FB76CB5BB27272EC1680682101F081FD959576CB3D07F6EF57B35F78D6
+ EEC12DF204C6F75E7FC5EE79C7FECA7D76CB195B377A6BEA4346C300B7B57610
+ B77C4D8AACCE49B64A9A5532AC926D15D9B89B2BE5917F953F93979717B103BD
+ 2F3C81834122AD6BF7C2C042C06C17EEB264F461C39AD581A36879FA9F37C8D6
+ BBDEFD07A8A1A34607E6DFDDB67B5785FAF4BD77556DAD73FF7DE474EAACEEF9
+ F3132AB76B817DC53D920CDF77D38F791CB6CFC84EACBB1E7ED4EE755C454545
+ F3E55FCA9F653577D945B2E8FD56A9B64AAD551AAC2247AECAB6AB905BAF4800
+ 00F8823C78A8CF8081AA4B5EBE7D25FA6AAAAAD4DA95CB556383FCDB0C3F2101
+ 080309000020DE783101600D0000003E44020000800F91000000E04324000000
+ F810090000003E44020000800F91000000E04324000000F810090000003E4402
+ 0000800F91000000E04324000000F810090000003E44020000800F91000000E0
+ 4324000000F810090000003E44020000800F91000000E04324000000F8100900
+ 00003E44020000800F91000000E04324000000F810090000003E44020000800F
+ 91000000E04324000000F810090000003E44020000800F91000000E043240000
+ 00F810090000003E44020000800F91000000E04324000000F810090000003E44
+ 020000800F91000000E04324000000F810090000003E44020000800F91000000
+ E04324000000F890E712808404721200407C494CF45E6CF3DC6F949E916EB700
+ 00880FE9199976CB3B3C980078EF430200A023D23332EC9677782E01C8C82401
+ 0000C417128030A493000000E24C5A3A09C011656466D92D0000E283432300CD
+ 76DD2E1D4900E48D3BF4E6A13005000088370E4E01B43B0EB735017024E89B48
+ 000000F1260A0BDCDB1C9FDB9200982F7CB09DD4D4D868372322AFA09BDD0200
+ 203E14742FB45B9191D4D860C6DE90F1F9483A3C0590999459FB7937327AF6E9
+ 6BB70000880F85BD7BDBAD08C9CAAEB1FE37108703FD76E87002D090562DBF44
+ C414F6EE63B70000880FDD7AF6B25B911288BD6602D0E64420DC04C07CE143DE
+ A4A1AE31A209400F120000401CC92B28506969113EE5B63E64EC6D5332D09E45
+ 80A2C92AD26EAE6F8C6C02909995AD3A1F956BF70000886D85BD227F63DB505F
+ 2FD3EF81386C1589C96DD6DE458007D5D7D4463401108C020000E24561AF08CF
+ FF5B1A6A5B8CBD21637528E12400C12FA6EFFEA56E6A68AA8B7C02C042400040
+ 9C702201A86FAC91D81B88C35609350A70C444A0AD5300E61BC88B37D7D65445
+ 3C0118307498DD020020B60D1A3EC26E454EDDE7230081381CB8F0B9E024A055
+ ED990290FA60C6515B5F5D2D172369D4F809760B0080D8258BFF060E1D6EF722
+ A7AEA6A6CAAACCBB7F33468725DC2900B31CF2867B77ED2CB3EA882A28ECA1F2
+ 3910080010E3868E1EA3929293ED5EE4ECDE5D22B1F7B0981C545A15EE0880F9
+ 42D23EF886DB37AFDA2E1723292121418D2C6214000010DB468E2FB25B91B57D
+ EB0A89BDC1C15F33DB2D6A2D01087E01FD26E2E01BAE5AFE69C41300C1340000
+ 20D68D1CE74C2C5BB9F4D31D56753016CB354B70222082FB07B57511A09037D0
+ A571D1DC37773636EE8CE8F300C4C871CE644D000044833CDCAEFF90A1762F72
+ F694EE6C58B2E0ED9D565362AF19935B0CF6A11C29019017D345BFF821D7EAEB
+ 6B1AF6ED4F2EB5DA1195DBB5C091AD13000044C3B0D16355525292DD8B9CE6B4
+ A43289BD5633382E8B50D7426AEB0880CE32A448E61128077695955875C44D9A
+ 3EC36E0100105B261F37D36E45D6FECF63EEC1186C15333687AD2D09809951E8
+ 370CBC79F9EEED8E2400C79D7C9ADD02002076A4A4A6AA290E2500BB2BB6C9FC
+ BF99004831637458C24D00CC1794C07F48125056B2DE918580BDFAF557031C98
+ 3F0100C049138F3E36F06C1B2794ECDC243157C7601D93A5D6C24A02DA920004
+ BFD1C1CC63F5B24F3758B5238E3BE574BB0500406C98EEE008F6AAE2FF6CB4AA
+ 8331D82A666CD6ED230A6711A0C90CFE07938077DF787243556DA59C4A147147
+ 9F7092238B28000070424EE7CE6AECA429762FB2EA76ED3F30E7CDA7E5A65BE2
+ AF5E08682601A6561381B62E029417D345DE4CDEBCA1A9A9BEA162FBC655563B
+ E23A75394A8D9B3CD5EE0100E06D471F6FDDB83A70FA9F28D9B77195C45CAB29
+ C50CFCBA842D9C04C07C612907EFFC8D52BF61CDE2E556ED88E34E3DC36E0100
+ E06D334EFB82DD8ABC0D6B03B1B6DE2AC17138381190D2AAF68E00984940E017
+ F9EF27FF762C019874EC71AA3B670200003C6EE4F8098E2E5EFFF4A31725D61E
+ 8CBD7631837FD8DA9200C81BE8226F226FAA8720EA3FFEE0B9CD353507F659ED
+ 884B4C4C54E75EF475BB070080379DF7D58BED56E4D5ECDABFEFD30F9FDF6235
+ 25F89BD300FAC65C97B0843B0560D2C15F97CF7F89A6A6FAEDDBD63AB20E404C
+ 3FE9549E100800F02C79EEBF8C00386547F9BA95126BADA60EFC660915AB5B15
+ EE0880BC902E6696216F2ABF8C94BA0D2BE73B360D200B2ACE9EF535BB070080
+ B79CF7D54B024FB375CABAB581185B67151D7725069B31D98CD547D4D6350042
+ BFB8CE3A2413096424EFBEF3F462AB76CCF1A79FA9BAE4E6D93D0000BCA1CF80
+ 81AA68DAD176CF19EFBDFDF412AB3A1873ADA2E370D841DFD4D6044067183ADB
+ 309380BAE50BDF2B292DD9B8C66A3B428E563CEB828BEC1E0000DE70CE455FB7
+ EEFEDB734F1D9E1DDB36AE96186B356504C00CFEE6DDBFD4616BCB1480662600
+ 3A13395816CF7DEB63AB76CCC9679FA70A0A0BED1E0000EE1A3874B89A36F344
+ BBE78C250B674B6C3D24DE5A4562B099006866BB456D4957E405759137D3D9C7
+ C1110029CFFEED97FFDDB3B344FA8E484D4B53DFBCE63ABB0700807B64CEFFB2
+ EFFF28B05BCD298D9525F5CF3FF5CBFF5ACD409CB58A390220452700BA84A53D
+ BFB17E719D75E8518040125056B261EF9E7D3B17596DC78C9F322D7036000000
+ 6E3AE9AC73D580A1C3EC9E333694942C2E2DDD24DBEC75F00FBEFB17BA0E5B5B
+ 4700742D6F24F561230056A9FDE4E3171D9D0610977CE75A9596966EF7000088
+ 2E39F3FF82CBAEB47BCE99FB9F17FF6355B556093502A063B2A663F511B57504
+ C04C02F49B4BD1F311815FEEA567EE5D5C5D73A0D26A3B26BF5B7775FEC5DFB4
+ 7B000044D757AFFA8ECACEE964F79C2107ECBDF4F7FB64879D0EFE3ADE062701
+ BA84ADBD5300BA48D6A17F8983A300B5B55507D6AC9C3BD76A3BEA8C2F5FA07A
+ F6ED67F70000888E212347AB19A73AFFB8FAB52BE6CEB562AA3C6D57270066E0
+ D7A3F16D0AFC5A474600740220BF84BEFB973A304CF1EA730FBE535151D1AE5F
+ 2A5CC9C929EA3B37FECCB1A72E0100102C3D23437DFB869B1CDDF6272486BEFC
+ FC83EF5A4D89AFE61480C4DA5009409B626E7B7F7BFD86F2E63A0990AC442700
+ B59F7DF4C2A6CABDDB1D5D0C2864F1C5D7AFFE9EDD0300C059575E7763541E50
+ B77FF7F685562CDD68350371D52A1267F508808EBF3A1EB729F88BF64E0108FD
+ C6F28BE8044067273556A97DE91FF7BF62D58E3BF5DCF3D5E4E933EC1E0000CE
+ 38F10B67ABA34F38C9EE39EB857FDE2B3154C7D4E0BB7F2912832516B74B4712
+ 00A133109D00E8A980C02F3CE7CD27D76CDEB26A99D57694ECC3BCEAFA9FAAAE
+ DD39200800E08CDEFD07A84BBEFB7DBBE7ACCD9B572E7BFFADA7D75ACD9682BF
+ 8EBF5A54460084BC91598213003D5C51F3C6F30F466514202B3B5B7DFFD6DB59
+ 0F00008838D976FEFD5B6E0F1C46170DAF3D17889D81D174BBE804404F0104C7
+ E136EBE80A061DFCCD51003D151048005E7FF1FF566CDBBCDEB1E70398E438C6
+ 4BBE7D8DDD03002032AEB8EE86A8ED3ADBB16DCDEAD9FF7E589EFC2709801E01
+ D0F15562AD2EED0AFC5A925D77842411F2FC4329D29622AF2B456EC7935353D3
+ ABC64D3A799AD576DCC06123641FA25A55BCD4BE020040FB5D74C5D5EAE473CE
+ B37BCE7BEE997BFEB2AAF8E34D5673BF550E58A5DA2EE63480047FB9F96EF708
+ 404712001DF48519FCA57D4802B072C5277B679CF2CDB139399D8FB2FA8E1B55
+ 3451959796A84D6BA332F000008853679C7F81FAF2372F0FAC358B86D29DEBD7
+ DFFF8B59FF54CDCD72989E047F9D00C84880390560CEFFB74B471200A19300FD
+ C9481D3C0A9064FD41920F54EEDE3968F831D33333B31CFF14E52FAA68EA316A
+ E3DAD56AC7D62DF6550000C277CC0927AB2BAEBBDE8A2912D29C575E5ED6FCB7
+ 3FFFF4FF36AE5BBCD5EAB674F72F0980BEF317ED9E06E8E89F4A0F3DC82FA38B
+ 6426E66240C95AAAE7BCF997D53BB72DFBD06A4745525292BAF6965F044E6B02
+ 00A02D464F98A4AEBED1F9C37E4C255B977F30E7EDA7565B4D3DF76F2EFED377
+ FDBAE8F8DB6E9148003469CB2FA8172A1C92004879E89ECB9EDB7360BF643551
+ 21AB367F7CD7BDAACF8081F61500005A270BCA7F78DB5D81D366A3A5BA7A7FE5
+ EFEEBDEC3969DAC54C00745CD573FF5A8712808E4E0104D35300E6548094C07A
+ 8003FB7737E5E676AF1B3A62CA38AB1F15B26563DAF127AA954B97A88AB252FB
+ 2A00008793356437DEFD2B959199695F898ED92F3DFCCC87EF3E536C35E526D9
+ 1CFE974440920009FE7A1440027F8782BF88540220015F174D2701F21EBA4E5A
+ F4D99B65C79F7AF188EC9CA372AD7E54481270F48927A94DEBD6AA12D6040000
+ 42983AE304F583DBEE5469E9D17DD47CC9F6F56B6FBFF1CCBF59315D16FEB5B6
+ F25F077FE19904C0A493009D00486D2401CD8965A55B4B8E9E31737A4282F30B
+ 02B5E4E46435CDFACBAD28DD1948040000D04E39E78BEAAAEB7F128815D1D4D4
+ 54DAF4FBFBBFFFFB6D9B976FB3BAFAEE5F9EFEA783BF9E0288D8DCBF16C904C0
+ 0CFCA18A24005292B76D5E51356CE40939853D074775723E3131514D3C66BAAA
+ AFE39C0000C0E7BE74C965EAA22BBF1D8811D1B6F0B30FDFFADB6337CDB19A12
+ F8F5D63F4900F4D0BF19FCA508CF25004202BD162AF84B91F74CFAF4E397364E
+ 3FE9EB63B2B33B77B1FA51235B046575678EF5B64BE7CF55CD4DFAF30400F849
+ 4A4A8ABAE28737A82F7CF982406C88B69D3BB76CFAD90F67FEA9B1BE6E9FD5D5
+ 77FFE602C050FBFE2312FC85530980599B45270089D61F3861C3DA85EBC71C7F
+ DED199C9E9D15B6A691B346C841A3B698A9504CC5355D1DB980000F000799CEF
+ 4FEFFD8D1A3F252A87D41EA6BC766FF5833FFBF26F766C5B5362752508C99DBF
+ BEFB3783BF1473D8DFB309803083BF662600074702CA4A36D66625A7EF19356E
+ E604AB1F75B9F95DD58C534E573BB66E56DB37CBA98B008078273BC36EB8EB5E
+ D5B55B77FB4AF4FDFBE97B1F7BEFCDBFB4B6EA5F4AC417FE999C48004CC1C980
+ 4E040E2603C58BE6540C1B35BD4BF71E03A2F3948520816D82334F54399D3AA9
+ A50BE631250000714A86FC2FBDF63A35EBF26FA994D454FB6AF42D9AF7F6FBBF
+ BFEFD2D7ACA639F4AF17FE9977FF12907402A04BC438950004077CA1DBBA1C1C
+ 0DF8ECA317D74F3FF9A23159595D3A5BFDA893B99F41C347AA7193A7AA954B16
+ A9CA7D7BEDAF0000E241AF7EFDD58DBFBC5F154D3B26F06FBE5B4A4B376DF9D9
+ B5C7FFA1A1A156024DF0DDBF0EFE5224F0CB08802377FFC2C91180509FB0BEA6
+ 93002989D607A136AD5BBA7EF4CC73A6B9B11E4093298113CE3C27B00774F5B2
+ A5AAB1513E7B0040AC927FCF675D7E95BAFAC737A9DCAE5DEDABEE9079FF876E
+ 9BF5DB6D5B56C9BCBFACF8D7ABFE430DFD3B1AFC85D353009A990C1C12FC75BB
+ B464434D626363D998F16327242464C97557C83304868D1EAB8E3DE91455BA63
+ BBDAB165B3FD1500402C993C7D86BAE1AEFB03A3BB6E6CF133353595363EFBF8
+ 3D7FFEE0ADBF2EB3BAE6813FE6963F298E0FFD6B4E8F004831E9BEF9B58349C0
+ AAE28F77656676AB1C36EAE8B181AFB8282B3B27F024A8FE4386A935CB8BD929
+ 000031A2A0B087FAEE4DB7AA2F7EED1B2A332BCBBEEAAE979EFDC353FF78FCE7
+ 1F5B4D33F84BD15BFE74F0D709802341DF148D110033E807D389802E898BE6BD
+ 5552D0BD7F73FF41E386597DD7F5E8DD479D78E6D9D67F44D98113046B6BE4EF
+ 0A00E0355D72F30287FA5C7DC34DAA575F57D69587F4CEEC275FF8F36FBFFD96
+ D5D4C3FEE6BCBFBEFB97C01F6AD5BF638940A8A01C69870478AB48D221F3FC52
+ E4C0E50CAB64DB25C72A9DA4FCECEED766154D39FD04ABED1975B5B5EADDD75E
+ 56FFFEFB5FD52E1E2C04009E905FD04D9D3DEB6BEAF8D3CF7475757F28F33E7D
+ F59D3B7F72E633565302BFACFA9722C15F92009D00E8857F6602E068F017D148
+ 00849E7C91DA4C02E46F2ACD2A3246238F5E92244012002B1148EC7CF7831F5D
+ 3E74F4B44956DF531A1AEAD507B3DF502F3DF394DAB95D8E6F0600445BF79EBD
+ D4B95FBD38B0662B9A8FEE0DD7AAA59FCCBDF19A631FB162BAACF897C0AFEFFE
+ 65DE5F92003DF46F067F2942D78E895602A04700844E02E4890B3A0908391290
+ 9C96D1F9D77F98F7BDDEFD468CB0FA9E23BB043EFBF07D2B19784D2D9EFB5FD5
+ C4190200E02859CC3776F25435F3D433D4C4638F0B2CDCF6A2CDEB972EBBEEDB
+ 537ED7505B1D1CFCCD3B7F1DFCCD857FC2F1BB7F11AD0440E824408A99044891
+ 04404602240990D10049002411E8DCA953D7DC3B1E9873B55793006DCFAE0AF5
+ F1BB6FAB0FDE7C5D6D5CBBC6BE0A0088847E8387A8E34E392DB038BB73F49E26
+ DF2E5B362E5F7EF3B5331FDEB7AFACC2EA9AC15FCFFBCB9DBF2400E6A23F2951
+ 19FAD7A2990088E02440523729320AA04702642AE090E9001909B8E3BE77BEE9
+ C5E9805036AF5F6B2502B3D5671FCE096C250400B49DACE69F3C7D6620F0F719
+ 10D587C7B69B0CFBDF7CFD898FDB77FE7ADE5F0FFB076FF9D3FBFDA31EFC45B4
+ 130021815F9849809E0E9051003D1D10BC26A0D34DBF7CF92B13A79E71BCD58F
+ 19E53B4BD4B2850B54F1C2F9AA78C13CB5BBA2DCFE0A00C074545EBE1A553451
+ 8D1A3F418D1C5FA4F25D3CABBF3DE67FFCCABB77DC74CEB3563CD777FD66F0D7
+ C3FEE651BFC1ABFEF5144054B8910088B6260132251028D7FEE4C933669EF2F5
+ 73AC76CC696E6E5625DBB6061281752B57A8ED5B36070E1AE2E861007E93D3A9
+ B32AECDD27B0D57AE0B0E181C02F8BFADC3CA6B723DE7DE32F2F3E74CF375EB7
+ 9A12F875F16CF0176E7DD2F2BEFABDA596044012014902CCE90033093898085C
+ 72D57DC79DFD958B2F4A4C2CD089444C93044012816D9B3705EAB29D25AAA6AA
+ 4A555BA5A6FAF35AB7652B220078916CC1CBC8CCB44A56A04ECF90B6555B459E
+ BCD7A34FDF40C097C02F09403C9013FEFEFDCF279FF9CB1FAFFFC0EA9A813F38
+ F8EB617F3DE72F09800EFE511DFAD7DC4CB5CC24400279F048407012208B0375
+ 12907DDE053F9E38EBC29F7C23A54B17F91EDF909D063CB11080E75877EE5E5D
+ 91EF94FA3D7B6A9EF9FB2F9F78E11FF7CEB3BA12F075F097C57EC1C13FF8CE5F
+ FF43EE4AF0176E2600A2B524408A391D70D868C0E8F1C7F7BDE686C72ECBEFD6
+ AF97D50700202ACA776EDCFAE03D973EBA74E17B9BAC6EF05DBF1409FC7AD85F
+ 02BFA782BFF04ABA264940F087A03F9850453497966CAC7AFBD5C7E60F1C3631
+ BB7B8F817DEDEB00003866D1FCB73EBCF9DAE31F319EEAA7837F4B77FE12F83D
+ 15FC8597C66B829380E0B659E4030CD40D0D758DEFBFF9D4CA04955836A4DFD8
+ E149E9E9327200004044D5EDD953F3ECDFEF7EEAF7F75DFEBA157BCCFDFD52EB
+ 3DFEFAAEDF1CF6D781DF33C15F786DC2462701E607A3DBFABA0EFEBA1D28C58B
+ E794AC58F969F1A8A2E307646575898FD52500004F282DDDB4E5EEDBBEF2FB39
+ 6F3E596C7525E0EBE02F815FDFF9EBE02F815F1200F3CE3F3896B9CE8B2B36F4
+ 9A0093FEC0828B7CA8F2E106DA653B371D78E7D54717F41D3836BD7B8FCE7D13
+ 12B242BD16000061696A2A6D9AFFDFF7E7DCFA83131FDBB16D8D39E4AFEFFACD
+ 217FF3CEDFD3C15F783101102D056EFDE149D177FFD2D61FB24C09D47FF8CEDF
+ 566D5CBF6E79FF21137A75EA94DBC5BA0E00409B6CDDBA76E3FFDD7FED1FFFFE
+ F8CF3EB4628B1CD8A203BFD47AB15F4B2BFD3D1DFC85571300119C04E80F4F8A
+ FE507512A0FB0713816D9B57EE7BFD85DFCFCFCCECB4AF6FE1E8FEC9191E7B46
+ 2400C0936A76ED3FF0CABF7FF7DC2F6F3AFB9FDB36AFD8615D3203BF39E42FC1
+ 5FEEFAF5B07FF04A7F894B42C72E4FF1FA10B93EE8477E4F694B2D498B14392B
+ 409F17A0B70BEA2D837266C0C1F303BA150EC8FDCE758F9C53D877D4D4FCFCAE
+ 5EFF3303005C505E5ED6BC75D3D24FFFF0AB2B5EDAB963FD2EEB9219E8A5ADEF
+ F68387FBCD217F7D73AA03BEB43DC9CB2300423E401DB0CDEC49DAC145675C52
+ F45F84B41B0EECDF5DFBDE9B7F59BEA77CDBEA418327F6CCCA61912000E07FCA
+ B66FDAFCD41FAF7FECC93F5DFF9E1533765B97F41DBF2EA1EEFACDF97E330669
+ 66DB7362E56E587E4FFDBB4AAD0F0C925A1F1A648E06041F20A44BA6F5239967
+ 7DF907A34F3FF7EA530A7B0CEC6F5D0300F8D48E6D6B37BCFED2C36FBEFCEC6F
+ 975AF1DA9CD7378BBEEB97806FCEF5EB2D7E3A01909B51A16F4C3D2D56120011
+ 2A09905A4F09E844409200735A40D7321D602603E9A79C75D5F033CFBFF694DE
+ 7D870FB6FA00009FD8B4BE78F5AB2F3CF4E65BAFFC69A5D595E06E067C4902F4
+ 30BF39DC2F45077E3DD2AC47A0632AF88B584A0034BD2E400427013A11D0A301
+ C1C9C0C1E06FF4D38F3B71D6A0B32EBCE1E44183C68EB4FA008038B576EDE265
+ 2FFFE3BE373F78FBAFEBACAE0EFC529B494070D037EFFA75E03783BFE6E921FF
+ 60B1980008F9BDF5EF2E75A844409280E011019D08842A69138F39B7DF99E77C
+ FBD8C1A3A78ECB4CCF91110300408CABAAA9AC5AB3F4D345AFBDF8BB0F3FFBF8
+ DF7276BFBEB30F55E46BC177FCE6223F33F0C7DC5DBF29561300612601C24C02
+ A4AD47035A1A11D0C980991404DAA9195919679E77EDE8A3679C3FA9DF801EC3
+ 9392BBCB6B01006244634349E3C6F5DB577CFCFE73735F79E181A575D507CC3B
+ 7B33D8870AFAE61DBFBEEB97801FEAAE3F2683BF88E5044033A704E4CFA31301
+ 9D04042702663220015F6A1DFCCD12B85E50D8BFF3395FFEE184A229A74CE8DE
+ 63080F1C02000F2BD9BE7AD3BCCFDE9AF7F23F7FB5A074C70639BC4702BC0474
+ 1DE47531AF9B413F38F0EBE0AF03BF19ECCD4420E6C44302A0B59408E82440FA
+ 3A0908352A2045077E3309D075CA8831C7753FF6F80B460E1A3A7550CF7E8307
+ 6666304D00006EAAAAAEACDAB671C5BAB5ABE6ADFDE8BD7F2C5BBEE40339AE57
+ 82B819DC75D00F0EF8BAE8A0AF6B7DB76FDEF1C74DE0D7E2290110F2E7D17F26
+ 5DEB910033199062260252EB2440FA3AE8872AF275AB24A64E3EF6EC5E93A69D
+ 3564D0D0A2C13DF2FAF54BEDD245461200000E9127F26DAED8B461E3AAF96BE7
+ 7EF2F2EACF3EFAF7562B1EEB20AE037FA82281DFFCBA19F0A5D6015F077DA975
+ A0D7C15F6A33118869F1960068A1460344A844A0A56440DA4141FF90B62E819F
+ 4B4E4E4D3D7AC6F97D068F3AA677F7EEFD0BBA16F42EC8CCED9E9FD7A9F9A8C4
+ C402F3F701001C813C84A7625FC2EEAA5D25E565A55B4A4B4A3694AE29FECF96
+ 8FDF7F6E7343439D047033789B457F4DB775FF4841DF0CFC222EEFFA4DF19A00
+ 68E12402724D6A09E4BA0E4E0674FFB0C01F54EB72F0F552D33353468C3AAEEB
+ A06113BBF5EA35A420B76B616E4A46765A7A6A7A7A4A62665A7266525A5A724E
+ 6A4A5A5A5A736A436ACDBEA6548E2B06106FE498DDF44E89750975C975F5B596
+ 86CABA86AAC6DAFAA6AADA9ABA9A9AFAEAFDB5BBCA76ECDABA7575E9DA95F376
+ 2E2FFEA0ACAEA64A076909D8BAD6C50CE4BA368B5C0B0EFA52CCD793A02EB5AF
+ 02BFE68740237F46F3CF296D3311D0B5149D0C1C0CE0762D01DE6C07D7FA6BBA
+ E8D7308BBCB62EFA77306B61D58989A9A9A9720D00E2465D5D9D15489BCCE02A
+ B5EE9BB52E1290838B0EE2C14507785DCBF79A6D5D4B315F5BE85AFF0E9AB4CD
+ 7EDCD181C72FCCC02A7F76B3C8D7CC122A88EBE06E067A5DEB44A0A522EF21B5
+ BCB67E3FB31652EBB630DB00108B5A0AAA52EBA06BD61290A5AD8374A822C15D
+ 6A33C0870AF66691D7368BBC875934F99A2FF835C048D0D5F467D05260D6415B
+ 0772B32D451200B9A6EBE0EF31AFE962BEBE6E0B6987AA012056E9E01A5C9B41
+ 58B7757096A283B619C075DD5A900F6E07BFBEAE85B4357DCD37FC1E6074E0D5
+ E4F3304B70B0965A82B9D90E0EEEA1AE99C57CBD50C514DC07805863065921FD
+ 50C50CCEA18A19D8435D939F35DBC1B5594CF2755F22C07CAEA5E06B1609DA42
+ 82BB0815D45BBA266DF939FD5AA18A26DF0F00F1C80CB6C141D92C12C8A596EF
+ 3703B95982AF09F939A1BF6E1653A86BBE63061E7C2E38200B7DCDFC9A19E485
+ 6E07D742F7838BD0DF23F43561B601209699C1D66CEBC0AD03B259F4D774300F
+ AE85794D48DB2CA650D77C8D20D33A33386BFA33935A17A1BF57FA663BF8FB82
+ DBBAD66D008877663036EBE0B6792D38F08BE0EFD1B5497F2F821074DA269C84
+ 40B4764DB4F63A0010EF8E14A8CD801E1CDC435D3311F0C344D0E99850815C98
+ 9F6BA804A0A5CFBDB5BF8FD6BE06005E122A306B2D7DCDBC1E2AC0B7F47304FC
+ 7622A844967C9E47FA4CDBFB99F377052056B414AC8FE4483F275F6FEF6B2308
+ 41257AC2490E00C0EF08F2000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
- 000000000000000000000000000000000000000000000000C07F94FAFF7C41D8
- 4937BF6CA10000000049454E44AE426082}
+ 000000000000000000000000000000000000000000F88F52FF0FC8CDDA5741E0
+ 81170000000049454E44AE426082}
FileName =
'E:\YandexDisk\Development\Delphi\AErender Launcher\src\AErender ' +
'CC\icon_512.png'
@@ -1224,1574 +1224,1574 @@ object SplashScreenForm: TSplashScreenForm
PNG = {
89504E470D0A1A0A0000000D49484452000004000000040008060000007F1D2B
83000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
- C51E49444154785EECDD077C6545D9F8F1C9A6275BB2D9C2F6BE6C2FC9B6ECD2
- A429202888A0A8D8F07DED282A166C7F5154AC585E2BA888D81510A42BA28022
- DB93EDBDB76CCDA6B7FF79EECE84C9C9B9C94D72EFCD29BFAF9FF9CC3C736F36
- F79C64659FE79C3393A18070EAEDEF367F3700000082AD55F73DD5DBAF077C87
- 240741D093DF537EB7010000D01B3D2900503480AF9124C1EFE2FD8EA6F27797
- BF17000000E190CA843CDE9F4D1100BE45A283BED09DDFBB9EFE8EF6E4EBF8FB
- 000000104EE9BC9ADF9DAFA35880B422E1415FE8ECF72E91DFC978EFE9EE7C77
- 24E3CF00000040EA2423998EF7677477DED6D97B92F199818491D42015BAFABD
- EACEEF9DD77BDD73F1FEBC44DF273A7B0D000000C1D79D443CDE7B13795F67DF
- C7ADABF776E7CF02BA44D28354E869A2ED7ECD8EE37D9D99EFCE7BDDE2CD1B5D
- BD0E0000007FE869429DC8BC1977E7BD46BCAF113D7D0DE836121BF4464F136A
- E1F51E33E77ECD8E65DCD9D78A7863C33DE7F51E116F1E000000FE162F714E24
- 31B7E7E28D0D99EBEC3D268EF7B55D89F79E44BE16E8800407BD9148726D33AF
- D9EF71BFDFFD1EAFF77ABD263AFB1A2391F724AAA75F07000080DEE969026C7F
- 9D19BBFFACEEBCC7EBF5CE5E139DBDD78BD76B9DBD1F888B04068988F77BD2D9
- EF8FD76B3267CFBBC75EAF79CDDBAFD9CC6BEE79E1FE1AAFF718EED73A7BAFE8
- EA7500000024475789AFFBF544126B776F9339D36CF6D7D8AFD971BC79D1D96B
- 86D79C11EFB5CEBE0620714142BC7E4FBA9A3363F7FB2436CDE635DFDB39AF5E
- B8C776ECA5B7AF0300002039BA4A701379DD7E8FD7D8DD0B199B66F4664E7436
- 6FF7C2FD1E91E81CD086C405B678BF0F9DFD9ED8AFC9D8FD5E13DBAFB9C7A6B7
- E7853D6737E11EBBFBCEE684D7D89EF3D2D5EBF1F4F4EB000000A2A6A7096C57
- 5F675EB7DFE71EBBDF136FCEF4EEB1BB19EE39BB8F37B6D9AF09F7EBB678AF75
- F63588101213D8BC7E1FBA9A93B13B36BDD7FBEC79AFB1BB09E9FB9D197ABED6
- 556C7A33165EAFBB253AD7959E7C0D00004014F52451F5FA9ACEE6DCBD90B1D7
- EBEEF9CEE216A779BD6637E135B6E7841DC79B17F6D848740E114462126DEE9F
- 7F67BF0FF66B3276C7A6778FBD62BB0949EECD587A3BD98F37F66AA2AB58B85F
- B7B9DF67B8DF070000007F899718BB935F134BEF7E9F3DD7596C376127FFF1C6
- D24B2C64ECD544BC58985ED8F3C21EBBB95FEBECBD0831929A684B24C135F3D2
- 7BBDDF9E37637713D29B04DE24FCEEE695ECDBEFF57ADDBCE6D584FD3ED39BB1
- B0E7EDDEE86E0C000080D4EA2A998D17BB7B2163F77C5749BA34E195E84B335F
- 1FEF75BB79BDD7FD1ED3847B6CC49BB7B9DF8F0822798986783FE7CE7EFEF29A
- 698619DBF3D227928CDB89BC7BCE7CBDFD9E7873666CCF09F39AB0E7EDF70ABB
- 3763E1F5BA9778F3000000E81B5D25BCEE5EC8D8EB757BDE9D94BB9375BBD973
- 5EEF73CFD9AFD9EF71CFD94D98F7087BDEF4C2CCDB736EF15EEBEC6B10022433
- D1E0F573EE6C4E7AFB7513DBAFDB09B6D7D824E466CEAB4FE4757B4EC47B8F70
- 8F33C64C98553061D2EC8183078F2CE83F686861FFC2C10505FD0716E4170C28
- C8CDCB2FC8CD292CC8C9C9C9CFCEC92FC872FACCEC9C829CECBCFC7EAA5F4166
- 4E6E417666767EBF2C95DF98D19C75E68F050000801F65B76636B534A9DAC6E6
- C6DAE686FA9A16D552D3D05857DBDCD850D3D4D050DBD8505BD3E0F4F50DD535
- F575B535B535553535A74FD59CAE3E5E73FA6465F5F1E3076A766EAF38B577E7
- BA1AE78FB313683BE9B6937433965ED8B1D77BDCAF75F5BA8C859913F6EBA609
- 772CDCAFBB253A8710912409E113EFE7EA356FE66209F399618C19B74BA8ADE6
- 4EBADDAF25D267BAE29EF4AAB07050F6B20B5E3F72EAACA5E3468E9A32B6A8F8
- ACB10503868CED5F38606C4E4EDE60790F00000090888686BAE3A7ABABF6D454
- 1DDD73E2D8A13D07F66FDDB365DDBF77BFF0EC1F0F54579F6CD46F7327EC89F6
- CDAE38D1DE3477EC6E42DE234C2CECD7ED79C36B4EC49B4740491285F0F1FAB9
- BAE74C2C7DBCB130C9B6BBB54BC2752F716749BDDDEC39FB7D5E5F1F1BCF9C73
- 7ED18225978F1F3B61C6B821C3C68D1D5834746C6EE1A0B1CD750D238B860CE5
- 0A3D00000052E6C4D1CAA6CCBC9C03F5D527F79C3A51B9E7E891DD7BF6ECDCB0
- 7BC58B8FED5A5FFECF13CE5B245996E4DB9DBCDB49BFFB353317EF35E9EDAF17
- EED7DDCDBC4FC6A68F37B6B963E135870093040BC117EFE7E8352F73A619EE39
- 3B3689B83D965E98D84EDAEDF7D8CDBCCF1E7BBDAF5F66666EE66BAEFFF094D2
- C59795140F1D35B9B0A0686CE1C0FE63B2B20A063AAF03000000BED2D45473AA
- FAD4E9BDD53527F65456EEDFBAFABF8FAFFECBEFEFDADADC5C2FC9BB24E4F19A
- 24D8D2BB8B04EED7CDD8EB0E026162FB35D3843B165E7386D79C88378F809004
- 0CC1E7F57374CF496C9A61CFC56B266177F75E49BF3BC1778F3D5BA6E3922BDF
- 3D61C9B2AB4BC64E985E52543C641EC93E000000824C8A02478F1E5EB37FD796
- 552FBEF0E0AAA71FF9F1CE6687F39224E8F19A9DE0C71B4B93B15731C0EEBB6A
- 86D79C70C7C26B0E0122C9198227DECFCD6B5EE64C13A697E45B48EC1EC7EBCD
- 38D1443F6E7CE12B6F1C5D76C1F50BC64D9859523874D4BC013979C5CE3C0000
- 00104A550D75C7AA8FEC5FBD77F786552FFCE3772B9F79F2BE7DCEB449E8DD85
- 01AF5892EFCEC6D2CCD8AB17EEB130B1F4A6B979CD8978F3F02949DA103C5E3F
- 37F79CC4A609AF5892717BDEC476EFD5BA4AFAEDB9D878F1B9D79C75C12BDF52
- 3A61E2EC922145634A72FB170C77E60100008048AAAFAD3974F4E8DED53B7754
- AC7AF6C95FADFCEF730F1C72A62529B7937F19DBB1FDBA24DFEED7EC26AFBB7B
- D34C2CEC79E18E0D772CBCE6E06392C0C1FFE2FD9CBCE665CE34617A49C64D6F
- 5E377392A49BD8F476F34AF2DDB1998BF5C3464E2878CB3BEF5836614AE982A1
- C3479614140C1AEDCC03000000F0505373725FE5E103AB766E5DB9E2573FFBF4
- 0B470EEC94ED08255137497E67C58078B13449D24D2FAF0B139BD784E94D526F
- 5E37B1CD6B4EC49B874F98E410FEE6F57372CF496C9A70C7929C9BD88CED3E5E
- B3937B13BBE7637D66666EF65BDFFD95F90BCB5EFDAAA29123CF2BC81A50E0CC
- 03000000E8869AA6AA9A13FB0FFC73F98B7F7DF2973FFED4EAE6E67AD97E5012
- 74BB08608F4DF39A733749D2DDBD190B134B13EED870C7C26B0E3E629243F893
- FBE7E3F5F39239D384E9253137BD79DD8CA5376393C4DB63D39BB169F66B6DF3
- 975EF59E09AFBAE29DAF1C3366D625DCDA0F000000244FFDE99AC37BF7AE7BFA
- 89477FF6E4530FFF68A73365927C3BD9B77B3376CF4B72EE1E4B3363E9CD5898
- 5EE64C6F9A9B7BCEEB3DF00149FAE05FF6CFC7FDB332B1F4EE26244937B1194B
- 1FAF7596E4DBE3589B3DEFFC21AF7BF3A72F9A346DE1A58306164F73E6000000
- 00A4D0C953C736EDD8BCFCC9DFFFEACB7FDFB0E6D963CE9449F84D93A4DD3D76
- CFC56B92B49BDE8C8589ED264C6FD8B1FB35F8844916E10FEE9F87D7CFC7CC49
- 6F8F254917D29BD7CC587ABB99A4DE8EDDADC37C71F1C8FCB7BEE7EBE7CC9C73
- DEA543CF2A5C9C913144E601000000A4D18963479B1A1BAA5F5AB7F69F4FDEF7
- E38F3F7FECD8813A67DA24F976B2EF9E33F3A6B9636992BC9BDE8C859913E635
- 617A9B7BCEEB3DE8032681843FD83F0FF7CFC6C4D2BBC7A649D2EEEEED66127B
- 7BDC96E07BB6ACACAC1BDFFEC5B98BCFBBFA5523868CBD20ABB0B0BF330F0000
- 00C0079AAAAB4FEF3FB2E71FCB9F7FF0C9FB7EF1D9B5AAA9A9C9997627FDEE26
- C9BCE9DD63D3246977F77613EEB1CD8EDDAFA18F489288BEE7FE3978C5A6093B
- 962689BCBBB79B24F3EE71FB445FA92C7B3C7ED2EC01FFF3A1FFBB7AF2C4B957
- E60D281AE9CC01000000F0B1BAAA1307B6ED58FBC84FBFF3FE07776DAFA872A6
- EC6280576140127BD3BBC7A649F2EEEEED26DCB1D1558C349364117DCFFE39B8
- 7F26127B352189BC8C4D72EF6E92CCBBC76D49BEC738EBEC19CB06BFEB03DFBE
- 76E2F859D770B51F000000081EB92B60EBAEB50FFCFCFB1FFBD3E60D2F1C9729
- A749721FAF202089BDE9DD637793245E7A61927E77B3D9B1FB35A4994924915E
- EEF3EEF5739039D384F492C00BE94D2CBD24EF269671BCDE9DF4B7C5F3175F36
- FCADEFFACAF5E3C64DBC32337750BE330700000020C09AEB4FD6EEDCB9FDE1FB
- EFFEE4EF572D7FF2884CE926C9BF57314012FB78BD24EF3296DEC4D20B130BE9
- 4D7373CF79BD072964924BA4977DDEDD3F03134BEFD54CD22FBDBBD9C9BEE94D
- 6BBBCA6F8F975E70DDA837BEEDB36F1C337EE465FDFA0DCD71E6000000008448
- 4B4B65C3DE5D071EFFEDBD5FFCEDBF9FFDC37E67CA24FC7621C02E0848B3937F
- D3BB9B24F0A6F76AC2F4861DBB5F438A492289D48B779EED793396DE1E4B221F
- AF374D9279D37B3593F4B725FE17BFFA5DE35FF7865BDF3472CC904B58CD1F00
- 0000083FD93DA0FA54E5DF1EF8FD9DBFFEDB633FDFE54CB90B01EE2280DD24D1
- 37BD5701C0DD0BE9EDB1618F6DF1E6912426D1446A799D677B4EC6A6093BB613
- 7EE9255937B149F03B6B76F29F75D5EB6F99F2EA6B3EF096ECBC411714170F91
- 3F0700000040841C3B76B4B5B1EEE4B37F7DE0FBBF7AF88FDFDEEA4CD90580CE
- 8A00763389BE8CA57717004C13EE58D863C36B0E494402985AEEF3EB75BE65CE
- 3461127D6976F26F1700A4791500CC157E33362DF3FA1B3F3FFB922BDEF99661
- 23C62D756200000000509587F7BCF0C45FEFFED51F7F79FB3A279464DEAB10E0
- 55149044DF8C257197D8AB0820636162696EEE39AFF720094CD289D4B0CFAFFB
- 5C9B587A777327FE76B3137E3BD977F7B176DD8D9F9D79D96BDFF7AEE2212316
- 3831000000007470ECE8C1158F3DF0FD9FFEF1FE3B3638A1BB08E0EEDDCD24FF
- 769324DEF4EE264C6FD8B1FB3524892499483EF779F58A4D13D24B72EFEEED66
- 27FC766B4BF6AD387BF28CC5833FF4F19FDFD47FD0C82B070F1E6CBE0F000000
- 00783A7EFC786BD589030F7FF7CEB7DDB36DD3F213CE54A3D3ECE4DF347701C0
- B4CE8A00A617D29B66EB2A462F9118A6867D5EDDE75862AFE695F84B42EFEEED
- 64DF8E632D333333E7A39FFBFD650B4B2EFFDFEC01F9839C390000000048585D
- 5DDD8955FF7DF4A7DFBCFDFAC79B9B9B1B9C293BF9B70B00762C09BEBB374D12
- 79D37B359B1DBB5F432F49C289E431E7D3EBBCCA9C69427A49EADDBDDD4C926F
- B77609BFD5B2AF7CFD87A75CFBE6DB3E5454346CB61303000000408F9D387EB8
- E24FBFFECA771EF9E35DB250A0B91BC0AB998280DDEC0280BB08607A21BD696E
- F67B900426194572C8F9F43AA766DEAB7925FD5EC9BF24F9A6CFD663E9B3C64E
- 9C35E896DB7EF5B60993C75E93913144BE16000000007AADB5F568F3B6ADBB1F
- FCF697DEF48BFDBB379E72A624E197628024F9EE4704EC02803449F44D6F373B
- E97737B778F3E8014940D173EEF3E7753E4D922FECB1F4124B222F63D34CC26F
- 9A7D955FE258D22F4D6EF7FFE0277E79E19273AE796F5E41FE10670E00000000
- 92AEAEA6F6E88BCF3FF0C3EFDDF9D6675C8F0598628089E315024C9358127A19
- 0B531010F6D8E69EA320D0435E092B12679F3FF7B934B13BE19766C626E1B77B
- 93E8DBBDDD6205804BAF78D7C4EBDFFEC50F0E1D36A2D4890100000020E52A8F
- 1C58F9DB7B3FFBDDBFFDF59E9D4E680A0076F26F9A24FAA63789BFDD9B2280F4
- 662C4CDF59D2EF7E0D097227AD488CFBBC79C5A6093BE137BD6992E4BB9B57D2
- 2FF3D943478CEFFFF1CFFDFEC661C3275D573464A8BC06000000006973E26865
- D3E1835B7FFFF52FBDF1579507779D76A6DC8F04B80B01EE2649BE6926F9B78B
- 003236CDD6558C2E980415DD639F37F73994D8AB49022F7D67C9BF49F8656C6E
- F56FEBDF77EBDDE79E77E11B3F90975F78961303000000409FA9ABAD3EF4AF67
- 7EFBFD1F7CFD5DCF39A149FEED5E92FD788500771140E64CD2EF6E363B76BF86
- 2E48428AC4B9CF971DCBD83421BD24F9A6376349EEDDC9BF49FA4D01C04EFC73
- 468F9B3EE0D35FFECB2D23474FBDD88901000000C0370EECDBF2B73B6E7BCDB7
- F7EDDE58E584667D00F7DD0092E0BB0B0192FC9BC4DF2E06985E486F9A618F85
- 3B461C9274227126B917EEB169C24EF8CDD84EFADD89BE69B1845F8F73657CD5
- 751F9E7ECB27EFFF7AF1B051F39D18000000007C65C0C021935E71F15BCFAF6F
- AC5DB765C38B279D29C97D849D1FD9F9923DF6625E97C4DEEB7D9D7D2D3AC189
- 4B8CFB3CD9B18CBD9AF9259784DF5D0088570868EB333333733F7EFB03572E2C
- 5BFABE7EFD864A5100000000007CABA5A5B261C5BF5FF8BF3B3FFFBABF363737
- D73B53F69D005E7704B8EF0670DF1120BD5733ECB170C7709104155DB3CF937B
- ECD54CC26F927E77F22F89BEE9EDC43F361E3B7666D127BFFA975B468D9AFC0A
- 270600000080C038B867DB335FFEF46BEEDAB367FD092734C9BFBB102089BEBB
- 10600A00A618D0DD22803D86074942119F49E80DF7D86EEE84DF4EFA25C137CD
- 24FAA6C9D5FDB6DBFE5F73DD47677CF833BFBCB3B878E45C27060000008040E9
- 3FA878E205AF7ACBF9CD0DF5EB37ADFF8F3C1220243FB2F327C36BCE30735EAF
- 19F66BF1FE1C6814003AE7FE6532BDBB995F6677E26F3777F26F92FE5801406E
- F9FFD41D0F5D7DF9A5377C36A77F719133070000000081949D9D3770EE8C05AF
- 9A3AFBFCD32F3CFBFB6DADADB18BF3267F324C1EE5C53DEFF53E3317EFCF800B
- 27CA5B67BF483227BFA8C28CCD2FAE197B25FFEE2689BFF4D91326CC19FCF12F
- 3FF0919123279FEFC400000000101A07F66FFBE7D73E7DCDB776EE2C3FEE84E6
- 7100F3288057B31F09B01F05B0C7C21EDBCC9CD76B9126C9293A9264DE9DFC9B
- 3993FC9B645F9ACCC74BFAE52ABFE93B5CF9BFFA868FCFBCF9E33FFBDAE021A3
- 663B310000000084CA8001C5E32FB8F8860B9A55EB868D15CF4B11C0E45A5E7D
- BC3949E6ED39776C73C7D03831ED75F60B649A90DE9DFCCBD85D0030BDBB0890
- 2DB7FCDF76C7C3D74C9AB2E8DD454386CA6B00000000105A2D55958D2BD7BDF4
- E3AF7EE6AA07F52E01EEBB014C2F57FFED3B01CCDD00D24BE2EFBE13407AD36C
- F6EB7098841667D849BE61E6CCBC49FADD57FE4D01C04EFC4D6B4BFC9D963376
- E2DC419FFED243B79E356AC2794E0C00000000917168FFCE7FDDF199D77E7DCF
- 8EB5B2406083D3DC8500D3EC42802900D84500D30B199B66F39A8B2C4954D131
- C937DCF376F26F127ED34CB26FC66D09BFDDE62E7CE5C8CF7DF5A16F140F1D35
- CF89010000002052FA0F281A7FCE2BAE5FB27DEBEAFF1EDABFADD69972E75DA6
- 17F6BC17794D12FC78EF31F39DFD1991C1493843CE83FB5C9839336F5FF197DE
- 5D003089BF69EDAEFA4B7FF1656F1FFF8E9BBFFDD5C2FCA2114E8C80A8A93EAD
- 0EEFDFEFF4D5AAB6B646D5D5387D8DD33B63E9ED719D2B96D6D820454D000000
- 74A65FBF0C959B97AFF20A0A547E7EC1995EB73C278EF5B171BEF37A61DBEBF2
- DAC04183D4F051A3545696FCD31B41515D7BE2E0DDDFBEF993FF78EABE5D4E28
- 57FFBBBA1BC06EE60E00FB8E0061AEF84BB379CD458E496EA3CA1CBFFB3C486C
- 9A4834F997FFC77127FFD272AE79E327665EFDA6CFDF317040FE202786CFB4B4
- B4A823070FA8FDBB77A9FD7B76C7DA01A7ED73E293C78FE977010000C0AFFAF5
- EBA7868F1CA5468E1DA7468F1B1FEB47E936B068B0CAC830FFB4879F9CAAAA3D
- F9E7DF7CFEB6877EF3F50D4EE82E00982280E9935104B0FBC889FADF0273FCF6
- 7990B169A2ABE4DFBEEA6F92FFD8157F337EFB7BBEB9E8CAAB6FFA7C66EEA07C
- 27461FAAAEAAB212FC5D4E827FA63FB86F9F6A6A92FF5F01000040D81414F68F
- 1502DA8A02E3C6C7FA11A3C7A8EC1CF9A73BFA5273FDC9DABF3CF8D32FFCF247
- B7BEE4847611C08CED3B01DC8580EE1401CCD89E8B1493E4468DFBB84D6C7A49
- F24D2F7326F997DE2E00B8137FE94DF21F7BE6FF43B7DD7BD1FCD22B3ECE4AFF
- 7D43AEDEAF5FBD4A55AC5AA1D639EDE0BEBDFA15000000445D46463F3579DA74
- 35AB64819A5DBA409D3D7B8ECACDCDD3AF229D4E1CAD6C5AB5E2B13BBFFB95B7
- 3EE38492F89BE45F7A49FADD8500BB0060927F7711C02E06D8BD11B942803B11
- 8E0AFBB8CDD8F48924FF92CC4B2F89BEE94D8B25FED23EFD95BF5E3379DAD2F7
- 0E1E3CD8FE7E48A1EAD3A7D586352F27FC7B766CD7AF000000009DCBCCCA5267
- CF9CDD561098326326EB0AA4D1F1E3C75BB76F7CFE075FBAEDAA079CD02E0048
- 6F9A24F9A63785809E16012800849CFB78ED58C68926FF7693FF47307D2CF197
- 3DFEBF74D7BFDE317DF6D21B9C1829545F57AB3696AF8D25FB92F4EFD8BC59B5
- B69ABFE300000040CFE5E4E6AA69B3E7C68A0152149838759A72FEADAF5F45AA
- 6C58F7FCAF3FFBA10B7ED1DCDC5CEF84F6DD005E7702245A04E82CF18F4C21C0
- 9D10879D3BE1B7FB9E26FF7673FE3FA220FFCE1FBEF8A1F113675FEEC44881DD
- DBB7AA17FFF98F58D2BF65C37AD5DC247FE701000080D4CA2F285433E7CD57B3
- 4B17AAB2575CA4060F19AA5F41B2EDDA51F1D827DEBBE43BF5F535B24DA0FB2E
- 809E16018449F6EDA49F0240C8B88FD38E659C94E4BF68E8E8015FB9EB5FB78D
- 183D71991323894E1C3BAA9EFFDB53EA9F4F3EA6766DDBAA6701000080BE21EB
- 07CC59B0509DFFCACBD5A273CF8B6D6188E43A7C60C7F39FB8F9BCAF9CA8DC57
- E584C92A027496F887BE10E04E8CC3CA9DF01B327627FFD29B26897F57C97FEC
- B6FFF193E70DFE7F773E7A7BD19051739C1849D0505FAF963FFFAF58D2BFE6A5
- FF726B3F0000007C292F3F5F2DB9E0C2583140EE1090E20092E3C4D1FDE5FFEF
- 13577C6ED7B635C79DD07E1CA0B32280290498966811800240C0B98F2F5EF2EF
- 4EFCA5259CFCCF2BBDE4AC8FFDBFDF7CB5FF80A1139D18BD2049BE3CD32F49FF
- 7FFEF18CAAADA9D6AF00000000FE3764F87075DEA597A9F39D366ADC783D8BDE
- 3875F2E8F66FDDFEC64FAD59F9F42127EC6911C04EFC3B2B0288D01602A25400
- 708F4D9364DFEE4DE26F170024D9F74CFEC74F9A57FCA5BB9EFE26C97FEF1CDC
- BB47FDF3A927D4BF9E7A5C1D397840CF02000000C13579DA0C75FEAB2E57CB2E
- BC440D183448CFA2274E5755EEF8CC2D977CA48B3B014C6F0A00A649426F927E
- D39B66C41B878A24BC61E43E2E3B96B1DDCC157F19772BF92F1A3A6AC0B77FB0
- F22B45C3CE9AEDC4E82659BCEFB9BF3DA5FEF6F0836AF3FA0A3D0B000000848B
- EC1C5052B64C5D76CDEB63BB09646448EA81EE92C7016E79CFA2DB4E54EE376B
- 02D84500197BDD05E02E02B80B0076B26F8F853B0EBCB0FEE6D9C7E51EDBCDBE
- FAEF4EFEA599E45F12FE76C97F6E6E41DE5DF7547C8E05FFBAAFB1A141FDE3F1
- BFAA877EF32B5579E8A09E05000000C26FCA8C99EA756F797BAC204021A0FB0E
- EEDBF1C2876F9A7D7B7D7D4D9D139A22805D08307702B80B00D2E2DD056027FA
- F1C6A110D6DF38735CEEE33309BF69E6EABF24FBA69784DF4EFEEDC43FD66766
- 66E67DFB276B6F193B69E6654E8C04C99EFD4F3FFC907AF8F7BF56278E1ED5B3
- 00000040F48C9F3C455DFDE6B7A925E7BF42F5EB27A90812255B047EF47FE6DF
- D5DCDC6C17014C01C05D0430770348D26F7A770140629B49FC2900048449F06D
- 26E137AF49B3137FD324E977DFF26F0A00D272BFF2BD17DE317DF6D21B9C3112
- 50537D5A3DF1C09FD4A37FFC9DAA3A7552CF020000001835769CBAFACD6F55E7
- 5C74A9CACC92340489D8B0EEF95FDFF681737FE10CEB9DE65504308500F7E300
- A6106027FEA6206093980280CF99E3711F9749F8A599228049FE4D01C024FE32
- F64AFC63C9FF6D5F7EE49A454B5FFD5E678C2E549D3CA91EFDD3EF62C9BF1401
- 00000000781B3662A47AED0D6F51175CF66A959D2D6908BAB2FC85477E70C7A7
- AF7AD019DA4500772140927DBB1020C9BEBB0860927D77C26F62F77C6049B21B
- 2626F137BD3089BF3493FCDB89BF69F6957FE9EDC43FD63EF8C95F5C3C6BDE25
- 1FCECFCFB7FF7CB8C8EDFD7FB8F71EF5FD3BBEA02A56AD508D8DF27710000000
- 403C35A74FAB95FF7941FDE3B147628F048C9B345965655108E84C7EFF610BC7
- 4E98BEEFBFCF3FB45B4FD9246997BCCD2B790F4D42DF5D6129009804DF306333
- 6F9A49FC656C27FED29BC45F7A6976F29FFBD6777F7DD1B2F3AEFFF4E0E22161
- 39674977E2D851F5EB9FFC50FDE0AB5F8CEDE5DFDC2C45360000000089AAABAD
- 516B5E7A51FDED9187546B6B4B6C2B41D945001DC985D9E2C163960E1A3C7CF3
- 9A154F1D72A63A4BECCD6BEE5E72C3AE987C32F0C2F29B64FF30CCD8FC904CB3
- AFFECB719B66AEFC9BABFE1D0A00AFBDFE6333AFBFE6C35F2A282E96182E2D2D
- 2DEAC987FEACBEF5B9DB9CC47F4D2C06000000D0730DF5F5AA62E572F5C2DF9F
- 56A3C68C5523468FD1AFC0965750D0EFECA9B396D5D635ACDEBCFEDFF1561AEF
- EA8ABFE4895EE2CD0756D00B0026B937DC6349F685B9F26F927FE9CD957F73D5
- DF1401ECE43FF7C257DE38E186777DEBCEFC4103FA3B315CB66E5CAFBEF1994F
- AA671E7B845BFD0100008024ABAEAA52CF3DFDA4DAB363BB3A7BE61C555058A8
- 5F81D12F2B2F7BF28CF3971D3FB2EB3FBBB6AF95C5C7ECABFC76F2EF1EBB137C
- 3367BFCF9D63BABF2650C2500030BC7E30D224D997DE24FED29BC45F7A93FC4B
- C26F92FF5CE9E72CB864C47B3FF5B3AF0FEA3F608813C372BAEA94FAE50FBEAB
- EEB9EB1BEAF8D14A3D0B0000002015F6EDDA197B2C40D60598327D065B07BAE4
- E666E7CD587861D9B64D2B9E3B7C607BAD9EF64AFEED399B57F26FC87C2804FD
- 40CCE7B78F43C67693BF19A6D9C9BF7DC5DFB4B62BFFE3C7CF1EFCA5EF3DF3CD
- FE03864E746268F21CD2B34F3CA6EEFFF1FFC556F907000000905E63264C5437
- 7DF8636AC6DCF97A06C6E9AACA1D9FF9E0851FDDB5ABE2B813C6DB22D0EC0A60
- 7606B0770770EF0A601704CCD89E0B143B710E2293E41B2636CD4EFE4D01C09D
- FC4B6F12FF58CBCCCCCCFBFEBD5B3E3F62F4C4654E0C6DF7F6ADEA9EBBBEA936
- 55ACD53300000000FACAF9AFBC5CBDF9DDEF53830617EB19884307763CFFFE1B
- A7DEDEDCDC5CE784A600609A24FD5E4500BB00D05511C08E034512E220B2937C
- 9B49FA853BF1EFECEA7FDB957F69B77DE5AFAF3B7BC6A26B9C311CB53535EAB7
- 77FF48FDE86B5F5695870EEA59000000007D69D7B6ADEA99471F560585FDD5C4
- A9D35446863B3D8AA6FE03068F9B74F682EA7FFDEDD75BF4943B618F97C0BB13
- 7D39A1EEF79A931CC8931DE40280DD0B199B2649BFF4727C7601C04EFCED0240
- 5B11E035D77D74E639E7BFE153B29AA413475A6B6BAB7AF19FCFA8AFDD76AB5A
- BBFCBFB118000000807F343634A855FF7941AD7AF1DFB122C0E0A143F52BD156
- 905F3CBFB5B565E5A6333B034822639A88D71B124B3EE99E0FBCA015004C826F
- 98B19937CD5CF9F74AFE4D6BBBE55FB7DC7113E714DF7CDBCFBF3C7050F14027
- 8EB4BADA5AF5E3AF7F59FDFEE777C7F62205000000E05FB230B7ECCC95959DAD
- A6CD9E13F9BB0162DB03CE5A5CF2E2738FFCBDEAE411B9E5DF4D927B3BC137E3
- EE24FD26FF0C8C2016000C333627DD343BF93705003BF1B7AFFAB75DF997E7FE
- EFF8DEF31F1F523C72A613479A3CEB7FC7AD1F56EB56AFD43300000000FC4EEE
- D8AD58B95C6DDDB841CD5BB844E5E6E5E957A229273BAF7FC9A24B473DFE971F
- FCDB3937F25CBF3089BF57C2DF55F26F5E37B968E004B500609F7093F40B77E2
- 6F9ABB00605FF99738F7535F7CE8B5D36795BDCE194796FC1FC6DF1F7D587DEB
- F3B7A993C78FE95900000000417268DF5EF5FCDF9E5293A7CF5443CF3A4BCF46
- D3808143C68D9F3CEFD4737FFFADAC07608A00865D0870731706DC497F208B00
- 412C00B8937FD324E9975E8EC92E00C4BBF22F2D76EBFF95D7DD32E3DC57BC29
- D2CFFDCB427F3FFAFA57D483F7FF52B534CB229800000000824AFE7DFFCF271F
- E39100C7A8C143E7D73636AED8BCFE3FB235A049FAED26DCBD21B19C3CF7BC08
- DC490D4A01404EAC693693F44B93B169EEE4DF2E02D857FF73468F9B55F4D14F
- DDFBE50145C5839C389264F5D03B6EFD905ABF66959E0100000010743C127046
- 466E41E6B41965F35F7CE1A1BF559DAC94F500BC927E3BC177BFEE66CF9B1CD5
- 9DABFA52900A00762F4CD2EFEE4DF26F1700DC57FE63850079EEFF2BDFFBD7AD
- 83878D9EE5C49113BBE5FFAF7F3973CBFF09298601000000081B7924E0B9A79F
- 545366C8230123F46CB464E7E60D9857F2AA514F3CDCB61E8049FAED64DE8CBD
- E6EC5C34B0FC5E0090936C9F683336F3D24CF22FC7620A0092F4BB0B00EDAEFC
- 4BFBF8ED0FBC66C6EC65D73AE3C8A9ADA9563FFCDA1DEAA15FDFA75A5ADC8FC2
- 000000000813D9D94B1E09C8CC8AEE2301038B868C1F3F61EE89E7FEF13B590F
- C04EF6DD89BFBB175E736E2647F5AD2014000C333627D53449FA4D93E331CD4E
- FEDD4580DC57BFEEE6E9575EF696DBE47610278E949D5BB7C456F9DFB066B59E
- 0100000010766D8F046C58AFE62D8AE62301238B879454D5D52DDFBAF1BF279C
- D0EB4E003BB6E73A637255DF0B4A01C03EA126E9178924FF1DAEFE8F1E3F7DD0
- CD9FB9FFCB79FD8B8B9C38525EF8FBD3EA6BB7DDAA4E71CB3F000000104987F6
- EF8B3D123067C12255545CAC67A3A15F6E61E6D4D9CBE6BFF4FC837FD7EB0108
- 3BD18F97F8BBC79297DA7381280204AD0020BD6992F44B2FC7600A0092F47B15
- 00DA8A00999999B95FFECEF31F1B3A74D46C278E94C7FFFC07F5E36F7C955BFE
- 010000808893470264AB40791C6058C4D605C8CDC91B3077E1A5239EFCCB0FBD
- D603B09BE11E4B1E6ACF05865F0B0026C937CC587A93F89B2BFF26F937CD4EFE
- A56F77F5FF3D1FFDC905F3175EFA16671C1972ABCFEF7EF613F5DB7B7EAC6700
- 000000445D5363A37AE16F4FA9B11327A9D1E3C6EBD968183870E884C1C52377
- BDF4EF87F7EA2993F4DB574BCD9C49F64D6FF39A73E7B3BEE1E7028061C6E624
- 4A8B97FCBB0B0026F18F8D878D9834E8BDB7FCF0FF65656517387124343737AB
- 9F7EEBCED8D57F00000000B0C9DDC1FFF9C733AA78E83035F1EC697A361A468F
- 9D3EF39F7FFBED9335A78F3738A13BD1773723DE58D879AC2FF9BD00609F4049
- F6ED02807C76BB0060127F93FC9B668A00B99FBBF3B1B79D3572E242671C090D
- F5F5EA3BB77F36F6DC3F00000000786B552BFEFD9CCACCCC52D3E7CC8BCC0E01
- 59D93905D3662ECE7CFAD17BD63AA124F3F11E0710A637E2C5BE3E797E2E00D8
- 27CE24FDA6B79B3BF9B70B00B1C45FFA8B2FBB69F2E557BFE123191905F235A1
- 575D55A5EEFCD447D5DAE52FE91900000000886FDDAA154E1E714ACD5BBC2432
- 4580C143F2A7551E39FAC28EADAB4E3AA149F8BD760710EE381EDF9E3CBF1500
- E444996693A4DD7ECD24FE768B77E55F16FECBBBED8E873E5550188DD52D8E1F
- AD545FFCE8CD6AFBA68D7A0600000000BAB675E37A7560EF1EB560D9B9AA5F3F
- BFA58BC9271788274F5B34FED13F7FE71F71160414EE58C49B334C4EEBCE6DFB
- 94DF7EA25E27C924FCA6B79B49FCDD57FF25F16FBB03E0E64FDD7BF18C39E75E
- ED8C434FFEB27EE1960FA8834E0F00000000DDB567C776B565FD3AB5E8DCF355
- 76B6A455E1565030E0ACE1674D3CF0E2730FEC74C2AE760570C7812249B49F49
- D26F17054CF32A04D8C50019C70A006327CC2A2A3BEFF53739E3D0DBB66983FA
- DC07DFAD2A0F1DD43300000000D07DE52B5E525FFCE807D5A91327F44CB82D7B
- C5EBDF397ADCCC81CE50F248FB02B3C92FA5B9F3503B4715F6D897E420FCC47D
- C2EC936A4EB239F9E60761FF60CC55FFD8957FE93FFBD5C76F1A3E62DC5C671C
- 6A152B97ABAF7CE223AAA6BA5ACF0000000040CFC9A3C5CB9FFF975A74CEF9AA
- A0B050CF8653665676FED93317E73FF5C84F5738A1B9C29FC8A280A6B79939DF
- 1503FC52003049BE7D824CD22F4CF2EF5504B0937FBB0090F3EAD7DD3CBDB4EC
- B51FCCCF2FF0DD894F26794E4792FFFABA3A3D0300000000BD77FAD429B5E6A5
- 17D539175FAA7272E51A6B88F5CB9BDAD850BD7CEBC6978E3951678F02B89B21
- 6377EE69625FE4A426C1F61B3939E604C96794B19DFCDB63772120560CC8CCCC
- C979DD0D9F7A5F71F1105F9CE854D9BF67B7BAF3931F23F9070000009012FB76
- ED545FFBD4ADAABE3EDC3987E48ED7DFF8D9F74A2EE984893C0A608F4DCE2AEC
- 7CD657E403FB813939766F9F44D3CC093627DFFC50CC957FD3E77EF4F3BFBD7C
- DACCC5973BE3D03A567944DD7ECB07D4896347F50C0000000024DFD12387D5AE
- 6D5BD5D20B2E52FDFA494A164E79F9FD878E1E7BF6B1179EFDE33627B4EF0270
- 8F85E965CECD6BAECFF9E9276727FFF6D8F4A608609A1400A4D9D598583160EA
- F4C5834B975DF136671C5AB2CFBFDCF65F79F8909E0100000080D459F59F17D4
- 4FBEF955D5DAEACBDC36694ACFB9EA6D93A62E18EC0CCD056777DE29CD9D9F7A
- E5B0EEB93E271FBC2F9993629F10199B13E83EA9E6C49B5E7E20A6C5AEFC4BFF
- D93B1F7DEFB0A163663AE3506AA8AF57777EEAA3ECF30F00000020ADE42E80C6
- C6063567C1223D133ED999D9B9D3A6970D78E2E11FFDD709CD157FFB0E00D384
- 3BB6D97326E7B573DFB4F34301C0DD9B661701E4734A93B1A9BCD80580B6E4FF
- 756FFAD49CB90B2E7F4F7E7EBEF93343A5B9B959DDF585CFC4B6E50000000080
- 74DB54B1561514F6575367CED633E1D3DA2F67526666BFD51BCA9F3B22A1D3E2
- 1501CC6300C2CC09D3FB8A24D47E13AF08601702EC660A01B1FECAABDFFFF6C1
- 83078732F9975B6DEEFED6D7D48A179ED33300000000907EBFFCC177D5734F3F
- A9A3F0919CF2D54E6EE90CDB724DDD7BE5A4266FB57358D37C453E6C5FB24F8A
- 7D92ECC4DF9C50E9CD09373F00B9F2DFB6F8DF756FFDDCBCC5E7BCE64DCE3894
- 7E77CF8FD5E30FFC514700000000D077E4C2E4941933D588D163F44CB8E4170E
- 1CDEDADCB276DDDA7F1E7642FBEABF7D378030F3C23DB67B93FBF61949ACFB82
- 9DECDBEC79BB722263D3A400608A0076CBBEE48A9BDEE0F4A1F4D89F7EAF1EFC
- F57D3A0200000080BE258F277FEBF3B7A9AD1BD7EB99F0B9E4F277498E69AEFE
- DBCDE4A576AEEA95CB9A6678CDA58D7C303FB04F80DDDB27D39C5C93FCDB4580
- EC2BAFFDF0D9C3CF1A57E28C43E7F9BF3FA5EEFDBFEFE80800000000FCA1BEAE
- 4EDDF9A98FA9FD7B76EB997019366A5CE9ABAFF9D05467681701EC9CD4CE554D
- F3CA6DCDB84FC987F30B7352A49993669F446972624DB34F7CD6AB5FF781EB9D
- 3E74766CD9A47EF8D53B740400000000FE5275F2A4FAC6673EA1EA6A6BF54CB8
- 5CF1BA0F4AAEE995FC9BE6CE5BED9CD6345F900FD557EC9360C6766F9F387352
- CD0936273FD62EB9FCA689B9F9C54B9C71A8D4D654ABBBBEF059D5D4D4A86700
- 000000C07FE40E807BEEFA7A6CE1F2B0C92F2C2EBBE8F2774C7086EDF250A7D9
- 0500D3DBB9AC70F7C21EA7957CB074920335CDB0E7A4999365C6A699936BB7D8
- 897FCD1B3F765DD856FE97BF383FF9C657D5A1FDFBF40C00000000F8D7BF9E7A
- 42FDE3F1BFEA283C24D7BCFABA5BDD7701B89B9DBB7AE5B6A6195E7329271FC8
- 2FCC814B6F9F3C7332CD8935273DD6969E7FDDE83163879DEB8C43E5E9871F54
- FFFEC7DF750400000000FEF7F3EF7E4BEDD9B15D47E13166C2F07325F77486ED
- F251A7D90500D39B66E7B8BE201FAA2F99645F7AAFB169F609352D76C2AFBFF1
- D3D765640C91D74263E796CDEADEEFB3E81F000000806069A8AF5777DDFE5955
- 5F17AEF50024E7BCEEAD9F7EBD337427FED2EC9CD5B47839AEF47D463E809F98
- 93624E8C194B3327D79CF0AC92C5979D553478F42B9C7168C49EFB77FEC2F0DC
- 3F0000008020DAB76BA7FAD977BEA9A3F0185C34FAC2B90B5F7996336CCB499D
- 6617014C73E7B5BE211F281DE4A0DD076ECF99B1DDEC936827FEE60467BDE96D
- 5FB8B668C850990B85D873FFDFBC531DDCB757CF0000000040F03CFBC463B116
- 26927BBEF9A62FBDCE19B6CB4BADD8CE5FBD725C618F0DAFB994485701C0661F
- 98395069F2594C6F377362ED963D63D6B9C513A74DBCC41987C6D38F3CA4FEFD
- CCDF740400000000C1F5B3BBBEA1F6EEDAA9A370983C75C2A567CF5A5AEC0CED
- 2280DDDCF9AC9DEB9A66D8E3B4900F924E5E076B9F04333627C87D324D7525EB
- ADEFB9F3EACCCC6139CE3814766EDDA27EF9FDBB740400000000C1565F5FA7EE
- FAC267627D58480EFAB6FFFDC66B9D615B6E2AD3AE66E7B4D2847B6CD8E3944B
- 7701C0701FB034F92C76739F44D3B2C64F9A3370CAD459973BE35030CFFD3736
- F2DC3F00000080F0D8BB7387FAC5F7BEADA370387BDAAC2B9C9C749033F44AFE
- 4D73E7B726EF35EC71DAC807E92BF6093063D3EC13654E605B75E5A6F77FE7AA
- ACDC41F9CE38F0DA9EFBDFBB47CF0000000040783CF3E823EA5F4F3DA1A3E093
- 5CF41D1FF8CE95CED0E4A926679566E7B2EE3C57D8E3B4930F952E5E076CC6A6
- D927CB3E896D2D3333277BEAF4C5AF74C6A1F0C2DF9FE2B97F00000000A176CF
- 5D5F57C78E1CD651F04D737252C94D9DA1E4A9A60860E7B1766EEBCE7B857B9C
- 16F26152C91C94FB80EC79D3CC89B14F9469E62466BEF1ED9F9B97575038C419
- 075E4DF569F5CB1F7C4F4700000000104E75B5B5EABE1F8627F7C9CB2F1C7AFD
- 5B3F33CF19B6E5AABAB973593BD775375BBCF9A4920F924EF601D9BD69F68992
- 669FC8D823008B975D7D91D387C2EF7FF65375F2F8311D010000004078FDFB1F
- 7F576B97FF5747C1B7F8BCD75DE8746D8FAA5BCD9DD7DA39AFB07B334E0BF930
- E9660E529A3919F6C991669F3C69B1133A74E8D882D1C5A3CB9C71E0EDDCB259
- 3DF1E09F750400000000E1F7B3EF7E2B348B9F8F1D3C7AA9E4A8CEB02D677535
- 779E6BE7C0A6A5957CF3BEE43E0132769F3033CEBAE19DB72FCB2C2ACA73C681
- D6DADAA2EEBEEBEBB11E00000000A242163F7FE477BFD651B0496EFAC6777C61
- A933B4937FAF9CD6CE77A5EF33F201D2C51CB43063D3E473B89B7DD2626DCEBC
- 8B5EE1F481F7F7471F515B37ACD7110000000044C703F7DFAB8E1C3CA0A3609B
- 33FF22790CA043EEEA34AF1CD79D070B7B9C72F22152CD3E187370763327C23E
- 31D2CC898B3D53317BEE854333F30AE73AE3403B75E284FAF54F7EA023000000
- 00889686FA7AF58BEFDFA5A360CBCAEB3F77E6BC0B6491FA58DEEAB47805003B
- F77537C31EA7847C8054F03A1837FB3DF68991664E98397999D7BCE9D60B8A8B
- 8774F6E705C26F7EFA43555D55A52300000000889E152F3CA756FCFB791D0597
- E4A8AF7BE3C72F70866DB9ABD3EC9CD66E760E1C4F22EFE931F910E9601F807D
- 40D2CC8990DE7DC24CCB9A3C7DA19CD440DBBCAE5C3DF3D8233A0200000080E8
- FAC5F7BEADEAEBEB74145C53662C9247D5EDFC559A3BBFB5735FBB097B9C52F2
- 01D2C53E48F9BEA60973524C33272A760BC52BAF7ACFE44183868D77C681D5DC
- DCACEEFEF637740400000000D126EB003C74FF7D3A0A2EC9552FBDF2DD939C61
- 5B0EAB9B3BC715F69C9D23A7857CD3BE648A01F6814B6C4E56EC045E78D9DB02
- BFF8DF130FFE51EDDEBE55470000000080BFFCF6FED8CE004177F1ABDE2E8B01
- 9AE4DFCE69DDB9AEF47D463E40AA998315662C4DBEB73901D2CB093227A92DCE
- CFEF9F3361D2BC739D71601D3F5AA9FEF0F3BB750400000000104D4D8DEA67DF
- FD966A6D6DD533C1347ECADCF37272F2B39DA1675EABC7EE3CD834618F5346BE
- 71AAD81FDE1C8C34F701DB27479A3941B176DD8D9F9D9F97975FE48C03EB0FBF
- B85BD5D6D4E8080000000060AC5DFE5FB5E6A51775144C797905456F78DBE7E7
- 3BC376F9ACD3DCB96EBCBC589A618F934ABE613275F6E1DD0721B1396073F0EE
- 9395B970E955815EFCAFF2F021F5EC138FE90800000000E0F6C0AFEE0DFC5D00
- 8BCF798D7B3700D34CBE6BE7C03613DBF332362D69E49BA752BC0390669F00BB
- 9913943972CC94FEA3C60E5DEC8C03EBE1DFDEAF9A9B9A74040000000070DB54
- B1566D58BB5A47C13472F49025C3474E2A74866D39ADEEED66E7C27633EC71D2
- C9374E35FB80EC0317766CB758A5E4F56FF9ECE2CCCC6139CE38904E1C3BAAFE
- FEE8C33A0200000000C4237701045966D6F09C37BCEDF34B64A89B57AE2B4DB8
- 6377212025CC374B373930F9DEE6204D6C574A32274D5B20CF5004D65FFFF05B
- D5D8D0A02300000000403CE52B5E52DB366DD051304D99BA609ED3D90500D3BB
- 735FE9D34EBE71AA98831366EC6E6DC9BE1EB7C562C4F009B39D7120559D3AA9
- 9EFACB033A02000000007425E877010C1F3961B6E4B2CED033CFD563AFDC589A
- B0C74927DF3CD9DC1FD61C8069E680ED03B74F48ECA42C5E76F5A8BC82C221CE
- 38901EFFF31F545D6DAD8E00000000005D59FEFCBFD4EEEDDB74143C79F98543
- 172E7DCD4867D821C7755A6739B1693677DC6BF20D53C9FEC0F60199B17C7FD3
- CC49899DA0B20BAF9BEBF481545B531D2B000000000000BAE7A15FDFA747C174
- EE85D74B2E6B27FED2ECFCD72B3736EC71D2C9374F357340A6998336076EC7A6
- 654E98306F8ED307D2930FFD59559F3EAD230000000040A25E78E66FEAE0DE3D
- 3A0A9E0993E74A2E6B27FFB11C57F75E39B1DD524ABE6132787D60F7D8ABB90F
- 3C7652E49989A2A1E3673AE3C0A9AFAF8B2DFE0700000000E8BED6D616F5D06F
- 7EA5A3E0197AD6C4997A1D00C973BDEE02B07362BB19EEB1FBF51E936F9E0AF1
- 3EB069E604D8ADED049D7FD19BC70D1C903FC81907CEDF1FF98B3A75E2848E00
- 00000000DDF5CF271F5395870FE92858F2F2F28BCEBBF0CD639C61875CD79A93
- E6952B1BF63869E49BA68AFB00849933CD3E7869B113B2F8BCAB0379FB7F6363
- A3FACB6FEFD71100000000A0279A9B9BD5C301CEAD169FFB5AB30E803BE795E6
- CE8B6D5E734923DF3C95EC83B29BFBE0ED3873DCC4D9812C00FCF38947D5F1A3
- 953A0200000000F4D4DF1F7D589D3C7E4C47C13266E21CB30E805D04F0CA85BD
- 5ACAC8374D36FB43DB07619AFB40CD09899D9CCCCC9CCC61678D9CE18C03E7A9
- 871FD42300000000406F343634A87F3EF9B88E8265C090513324B77586761140
- 7A3B178E570410F63869925900707F38F70777377312642C7DAC5D72E54D93B2
- B3FB173AE34091BD2A776ED9AC2300000000406FC95A00ADADAD3A0A8EA2C2C2
- FE975CF18E49CEB02DD7759AC97DDD8500BB09D31BEEB8C7E49BA742BC0F680E
- CA3473224C31A0DFC2259707F2F6FF7F3D15CCCA1400000000F8D59E1DDBD5AE
- 6D5B75142C0B965C39DBE93AE4BC4E73E7C55EE2CDF78A7CF354711F8C395073
- D02636D58FD8DCD8B1B366397DA0B4B4B4A87F3DFD848E0000000000C912D48B
- ADE3C6CFB40B001D725FDD4C6C482C2D25EC6FD413E6C3D91FD0FD61EDF798D7
- CCD89C80583524AF7060F6D0FEC5817BFEBF62E57275E2E8511D010000000092
- E5B9A79F8CED0A1034439CDC362FAF30DB194ADE6DE7BE261F16666CCF19761C
- EF3DDDD2DB02805BBC0F68E6E5FBD94DE6DBE2575DF9EE2999454579CE3850E4
- B9140000000040F2C94E00152B5ED251706439B9EDA557BD7B8A338C9B03EB26
- ECDC599A618F7BCD7CB364B23FB019C79B33071C1BCF2BBD3870CFFFD7D6D4A8
- FFFEEB591D0100000000922DA8BB01CC5BF44AF318803BFF354DD8B17B2EA9E4
- 9BA7837C70FB60CDD8B4D82300C3474E18EFF481F2DF7FFE4335D4D7EB080000
- 0000906C2F3DFF4F555B53ADA3E0183674FC04A73379AF49EAEDD81EA79C7CA3
- 543007663721BD3938D3DA0EBCFFC0E2514E1F28DCFE0F00000000A925175D5F
- FCE73F74141C45C543473A9D49F26317BE9DE6CE858599B35BD2C9374C35AF03
- 3127C01C70BFCCCC9CCCFE85AD727202A3F2D041B56EF54A1D010000000052E5
- 5F017C0CA05F61C6C84C870C9DE6950BBB5B4AC9374D16FB03DB07605ABC038D
- CDCD99F78AA19959C3739C7160C86A940000000080D4938BAF72113648FA670D
- C99DE5E4BACE306E2EAC9B3D6F9AB0C7BD26DFA8B7DC1FC6EB837ABD47BE775B
- 2564E6FCF3463B7D60B4B6B672FB3F00000000A451102FC2CE9A77813CEADE21
- 07769ACDCE9DEDB1CD1D775B320A0036AF0F640EC034F99EE680DBE25163A707
- EAF9FF6D9B36A8FD7B76EB0800000000906AFF7CEAF1D8C5D820D1B9AE671E6C
- C5A6B979CDF5987CC364737F7033EEF480870D1F13A802C08BCF3EA347000000
- 008074D8BF7B97DAB76BA78E8261D88871E60E003B17B6C7D284C486793DA9CC
- 374A06F787331FD8FDC165EC3EE0CC01C52302550058B76A851E0100000000D2
- A52260B958D1E0B324D735B7FE9B5CD8F486C98F4DB3B9E31E936F9A6C5E1F5C
- 7A73B0EE038EB5A281FD03B30340755595DAB165B38E0000000000E9B26E55B0
- 76622BCC1F20B96E5BEEEB349387BB736461BFCFCC258DF9C6A9E2FEF0E600CC
- 3876B0454346E4D5D5670E91178260FD9A55817BEE0400000000C260FD9A95AA
- A5A54547FED7D8D26FE880A2E1B9CED04EF64D2E6E7263BBA54C6F0A00F68773
- 7FC8CE5EB30F38F6BE050BAF183178F060F7FB7C8BDBFF01000000A06FC81DD9
- BBB66DD191FF49AEBB70C9E5F65D00EE2280617262F33E5B67AF25ACA70500AF
- 6FE8F541CC9C5713B1F1E4E9A581DA023068CF9C00000000409804EDA2EC9469
- 8BEC85008519DBCD4BBCD7E2BDBF533D2D007497F9D0E643CAF735558F8C11A3
- A7046601C093C78FA9BD3B77E80800000000906E415B0760E4999CD7E4C4261F
- 1666CE6E2993EC0280FD81BDC6EEB9D881170F1919980240D07ED10000000020
- 6C36AC5DAD9A9B9A74E47F45C5A324E73589BF9D13DB4D985ED8F34991EC0280
- 617F78F70198036E6B838A86046607009EFF0700000080BE55575BABB66DDEA8
- 23FF1B7826E76D97073BCD2E0608F7EB4997AC0280F9705E1FD88ECD01B61501
- FA399A0A83B30520CFFF0300000040DF5BB73238B959FEA0012325F775867173
- 63DD841DDB73BD26DF2C55DC1FDA7C60D3CBF7EE3771F28241437307E59F99F2
- B7CA4307D5A1FDFB740400000000E82BEB5607E7F1EC82EC010592FB3AC3581E
- 1C9B6C9F23BB5B4A24A300E0F5E1DC73F681486BFBBE23C74DEDAF87BEC7F3FF
- 00000000E00F9B2AD6AAC686061DF9DFC83193EDDC577262779E6C73C7C26BAE
- 5B7A530088F7CDEDF9780721BD7CEF7E03071417C6660280DBFF01000000C01F
- 24F9DFB27E9D8EFCAFFFA021054E17CB839D66E7C6F1C47BADB3AFE9546F0A00
- 5D910F15AFB5E93FA03810B7FFB7B6B6B2002000000000F848902ED20E1CD821
- F7F5CA954D4B89641600E27D48F741D87146E180A23C99F4BBE3472BD5B1CA23
- 3A0200000000F4B56D1BD7EB91FF15140E96DCB75D3EEC34617A618F0DAFB91E
- 495601C0FD81243673666C3773CB434641E1C040DC017060CF6E3D0200000000
- F8C1FE00E569F905FDE51100C39D239B26ECB1E18E7B24D98F0074F5A1DC0794
- 9197DF3F10058020FD62010000004014C84E6D0DF5F53AF2B7FCFCFE720780E4
- E0E682B8CDE4C86E5E733D96EC02809BFD61CD0199B9D83837BB20108F005000
- 00000000007F91B5DA0EEEDBAB237FCBC92DB42F7E9BDCD85D0CB0C74997CC02
- 80F9A0EEDEADDD7C767E4130EE00D8BD4B8F00000000007E1194C7B5F373F3ED
- 35004457397357EFEBB6641400BAFA30F2BA6946DB5C6E1E770000000000007A
- 2628B95A766EBEFB0E00A32D3F8E45F175F57A97527107803063AF0F28736D2D
- 3727CFF77700C83325F26C0900000000C05F0EECDDA347FE969D1FBB03407270
- 73DB7FBC7CD9EE85D7FB7A249905002FE6A0EC264CAF72B2F27C7F07803C5322
- CF960000000000FC65FF9E603CAE9D9DE57907809D2B9B9632C92E0074F5A1ED
- D762E3EC6CFF170082F20B050000000051236B0004E1826DAE93FC3A5D879CF8
- CCB003F35ABCD77B24D5770008FB4377F8F099D939BE7F0480E7FF01000000C0
- 9FAA4F9F5655274FE8C8BFB27373BC2E7EDBB972877C39D97A5A00889BD05BDC
- AF797E4D4E66AC0AE26B4159551200000000A22808176D33B2626B00D8E2E5D5
- EED816EF6B12928E3B00DCE483B6B57ED999FE7F046037050000000000F0AB20
- E46C79D959F62300A6A5554F0A005D7DC8440EA2ED3D99791DAA20BE22CF92B0
- 060000000000F85710EE00C86ABFFE5DB7F2E63812F933DA49C522805E64DE34
- 2316E73454FBBA0070F2D831555B53A3230000000080DF1C08C045DBCCAC58EE
- EB9917EBE625DE7C8FA4F21100F781787EF0938DFDB2F4D0970EEEDFA7470000
- 0000003F3A1480BCEDE4C97ED97AE866E7CA760E9D74C92A0074E7039A034AE9
- 81254BCDE92A3D0200000000F891EC0410103DCD8793923BA7EA0E00F7C19871
- 523E743AD5D672FB3F00000000F8595D70F3363B57F6CAA1932A190580C025F5
- DD51C7F3FF00000000E06B75B5B5B105DC43AED7B9772AD70008051600040000
- 00007F93E4BFBEAE4E478197B28BECE92E0004EE6E8100DF4A02000000009111
- D0BBB7D39A23A7BA002007639A11A8220077000000000080FF0570FD36AF3C39
- A5F9328F0074419E250100000000F81B776F772D150580C05EEDF7C222800000
- 0000E07F21B87BDB9D3F273D9F4EE71D005E1FDEF70502B6010400000000FF0B
- C8C5DB3ECD8BD35100F07D92DF19EE000000000000FF0BC1C55BC99D539A3FF7
- C51A00E6A002511860114000000000F0BF005DBCEDB39C984500BBC023000000
- 0000E07F5CBCED1A05802EF0080000000000F81FBB00748D0240176A6BAAF508
- 00000000E057DC01D0350A005D68A86FD02300000000805F35D4D5E911E2A100
- 0000000000400450000000000000200228000000000000100114000000000000
- 88000A0000000000004400050000000000002280020000000000001140010000
- 0000008008A00000000000004004500000000000002002280000000000001001
- 1400000000000088000A00000000000044000500000000000022800200000000
- 000011400100000000008008A000000000000040045000000000000020022800
- 000000000010011400000000000088000A000000000000440005000000000000
- 22800200000000000011400100000000008008A0000000000000400450000000
- 000000200228000000000000100119BAEF0EF91AF375D24B11C1F4994ECBD27D
- B6D372AC96EBB43CA7E55B7DFE3D7FAABCAFB878484F3E475ADC70F179AAB5B5
- 454700907E03060E5213A69EAD0AFAF7D7334886E6A62675EAF871B56BDB5655
- 5F5FA767010040505D7AD5D5EAA65B6ED591FF1C3B76B4F5A66B87DEE80C6B75
- 937F8098BEDE690D566B745AB3D39A742F4969ABD50BE9CD38213D49BCE56BCC
- D799C4DFF41400002089CEB9E852F5BFB77E52E5E6CAFF6D2215AA4E9D54F77E
- FF2EF5DCD34FEA19000010441400BAC6230000E053038B06ABFFF9E82748FE53
- 4CEEB078CFC76F53E3264DD133000000E1440100007C6A76E90295972F374B21
- D5B2B2B2D52B2EBB4247000000E1440100007C6AF8C8517A84745874EEF92A23
- C3B74FA4010000F41A050000F0A9FE0306E811D261D888916AF4F8093A020000
- 081F0A0000E05379F9057A8474295D7A8E1E010000840F050000F0A9FC020A00
- E9565A46010000008417050000F029EE0048BF69B367ABFE0306EA080000205C
- 280000804FE5710740DA6564F453F31697E9080000205C280000804FE5730740
- 9F285DBA4C8F000000C285020000F8147700F48DF98BCA546666A68E000000C2
- 83020000F8545E7EBE1E219D0A070C505367CED61100004078500000009F6217
- 80BEC376800000208C280000800F6564647007401F2A2D631D000000103E1400
- 00C087727272632BD2A36F8C9930510D1F395247000000E1C0BF2E01C0875800
- B0EF952CE12E000000102E140000C08764213AF42DD60100000061430100007C
- 6870F1103D425F995552CA3A0C00002054280000800F150D19AA47E82B5959D9
- 6A76E9421D010000041F050000F0A1C114007CA1B48CC7000000407850000000
- 1F2A1E4A01C00F643B40D992110000200C280000800F15B106802F140D19A226
- 4C395B47000000C1460100007C68307700F846E952B603040000E1400100007C
- 883500FCA3A48C0200000008070A0000E033F2CCF9E0213C02E01753A6CF5483
- 0617EB08000020B828000080CFC8F3FFB979EC3FEF27254B96EA110000407051
- 0000009F193769B21EC12F4A97B21D200000083E0A0000E0331400FC67EEC2C5
- 2A2B2B5B47000000C1440100007C860280FFE4E5E7AB19F3E6EB080000209828
- 000080CF8C9B34458FE027A5EC06000000028E020000F8486656961A3D7EBC8E
- E027B20E80ECD00000001054140000C047C64E98C8B3E63E75D6A8D16AE498B1
- 3A020000081E0A0000E02333E795EA11FC88DD0000004090510000001F9939BF
- 448FE04725AC03000000028C020000F844BF7EFDD48C791400FC6CFA9C79AAB0
- 7F7F1D010000040B050000F0897193A7905CFA5C6666A69ABB70B18E00000082
- 85020000F8C4ACF93CFF1F04AC03000000828A020000F8C4BC454BF4087E367F
- F1D2D8E31A00000041C3BF6000C00772F3F258003020060C1AA4A64C9FA92300
- 0080E0A00000003E30AB6481CACACAD611FC8EC70000004010510000001F98BF
- B84C8F10046C070800008288020000F4B18C8C8CD873E5088EF193A7A821C387
- EB0800002018280000401F1B3966AC1A3E72A48E1014A54BB80B000000040B05
- 0000E8635CFD0F26D6010000004143010000FAD8FC253CFF1F44B34B17AADCDC
- 3C1D010000F81F050000E8436CFF175CD939396A6649A98E000000FC8F020000
- F421B6FF0B361E030000004142010000FA10DBFF059B2C0428BB380000000401
- 050000E8236CFF177CB215E0D8899375040000E06F140000A08FB0FD5F38942E
- 653B400000100C140000A08F70F53F1C4ACB280000008060A00000007D84EDFF
- C261EACCD96AC0A0413A020000F02F0A0000D007D8FE2F3C58CB010000040505
- 0000E8036CFF172E6C070800008280020000F401B6FF0B97798B16ABCCAC2C1D
- 010000F81305000048336E190F9F82C2FE6ADAEC393A020000F0270A00009066
- 6CFF174EA5653C06000000FC8D020000A41957FFC389ED00010080DF51000080
- 3463FBBF701A356EBC1A317A8C8E000000FC87020000A411DBFF855B09770100
- 00001FA300000069C4F67FE1C663000000C0CF280000401AB1FD5FB8CD9C57A2
- F20B0A74040000E02F140000204DD8FE2FFC32B3B2D49C058B74040000E02F14
- 0000204DA2B2FD5F7D7D9DFAE6E73EA5A3E8295DCA76800000C09F280000409A
- 44E5EAFFAEAD5BD4AAFFFC5B35D4D7EB99682959B2546564F09F570000E03FFC
- 0B0500D2242ADBFF6DDFBC49353535AA2D1BD6E999681934B8584D3A7B9A8E00
- 0000FC83020000A44194B6FFDBB17963ACDF54BE26D647118F010000003FA200
- 00006910A5EDFFE40E00B1616D740B00256C070800007C88020000A44154B6FF
- 930500F7EFDE151B6FDDB04EB5B6B6C4C651238F000C1E325447000000FE4001
- 0000522C4ADBFFC90280CDCDCDB1716D4D8DDAB1654B6C1C4525656CF9080000
- FC85020000A45854B6FF13E6F67F23D2EB0094B10E000000F0170A0000906251
- B9FA2FCC0280C6C6081700E62C58A8B2737274040000D0F7280000408A4565FB
- 3FD1E10E808A723D8A9EDCBC7C35735E34767E000000C14001000052284ADBFF
- 35D4D7B72D00689C3876541DDCB75747D1C376800000C04F280000400A4569FB
- BF9D5B37B72D00688BF26300254B96C51681040000F0030A0000904251D9FE4F
- B86FFF373695AFD5A3E891C51F478F1BAF23000080BE4501000052244ADBFF09
- F70280C68608DF0120780C000000F8050500004891286DFF27E2DD017068DF5E
- 75EAC4711D450F05000000E0171400002045A274F5DF6B0140A3B5B5556D581B
- DDBB00CE9E3547F51F3050470000007D87020000A44894B6FF8BB700A011E575
- 00FAF5EBA7E62D5AA223000080BE4301000052204ADBFF8978B7FF1B1BCB57EB
- 5134952E5DA6470000007D87020000A44094B6FF13F1160034766DDBAAEA6A6B
- 75143DF31697A9CCCC4C1D010000F40D0A0000900251DAFE4F6CDBB8418FBCC9
- E3015BD657E8287A640D80A93367E9080000A06F50000080248BDAF67FD5A74F
- AB7DBB77EB28BE8D51DF0EB08CDD00000040DFA20000004916B5EDFFB66E58A7
- 5A5B5B7414DFC608EF0420D80E100000F4350A0000906451BAFA2F36AF2BD7A3
- CE6DDDB8BED39D02C26ECC84896AD888E81486000080FF50000080248BD2F67F
- 62F3BAC49EEDAFAFAB533BB674BE5B40D89594B11B000000E83B1400002089A2
- B6FD5F6B6BABDABA61BD8EBA16F5C7001650000000007D880200002451D4B6FF
- DBB363BBAAADA9D651D73655ACD5A3689AE9FC7E4891080000A02F5000008024
- 8ADAF67F893EFF6F44BD00909D9DAD66972ED4110000407A510000802489DAF6
- 7FA2BB7BFB9F3A7142EDDFBD4B47D1C46E000000A0AF500000802489DAF67F22
- D105006D1BCA23BE1D60D9B258B108000020DD280000409244EDEA7FD5A993EA
- E0BEBD3A4ADCA6F2683F063078C850357ECA541D010000A40F0500004892A86D
- FFB7655D456C1780EEDA58BE5A8FA2ABB48CC700000040FA510000802488DAF6
- 7FA2BB0B001A470E1E54C78F56EA289A4A97B21D200000483F0A0000900451DB
- FE4F6CEEE6028086DC35B0716DB4D701983C6D861A34B85847000000E9410100
- 0092206ADBFFB5B4B4A86D1B37E8A8FB36467C21C0D88E11117B64040000F43D
- 0A0000D04B51DCFE6FD7B62DAABEAE4E47DD17F50280601D000000906E140000
- A097A2B8FD9F2C00D81B7B766C57B535D53A8AA6B90B1747EEB1110000D0B728
- 0000402F45EDEABFD8D4CB02803C42B0B9A2678B0886457E41819A3E779E8E00
- 0000528F020000F452149FE5DEB2BEF7C9FB061E0360370000009056140000A0
- 17A2B8FDDF896347635BF9F5D6A6F2B57A145DAC03000000D289020000F44214
- B7FFDBB2BE22B6955F6F6DDDB85E353535EA289A468C1E135B43020000201D28
- 0000402F446DFB3FB1B997CFFF1B8D0D0D6AFBA68D3A8AAED2A5DC05000000D2
- 83020000F45014B7FF13C9DCC26FE35AD601A000000000D285020000F45014B7
- FFABAFAB55DB376FD251EF6DAC601D80E973E6A982C2FE3A020000481D0A0000
- D04351BCFA2FB7FF373735E9A8F73655AC4DCA7A0241969999A9E62E5CAC2300
- 0080D4A10000003D14C5EDFFD6AF59A547C9515D55A5766CD9ACA3E8623B4000
- 00900E140000A007A2B8FD9FD890E4028058B76A851E4597DC4DD2AF1FFF4906
- 0000A9C5BF3600A007A2B8FD5F437DBDDAB671838E92A78202801A5854A4264F
- 9FA123000080D4A00000003D10C5EDFFB6ACAF508D8DC9DFB77FE3DAD5AAB9B9
- 5947D1555AC66E00000020B528000040374575FBBF643FFF6FD4D7D5A92DEBD7
- E928BAD80E1040B2C9A34579F9F96AC0A0416AC8F0E16AC498B16ADCA4C96ACA
- F4996AC6DCF96ADEA2256AE139E7A9A5175EAC2EB8EC0A75E95557AB2B5EFF06
- 75F59B6E54AFBBF11DEAB26B5EAF169F7781CAC9CDD57F2280A0CBD07D77C8D7
- 98AF935E8A08A6CF745A96EEE5DED81CABC9FF73E4392DDFEAF3EFF953E57DC5
- C5437AF239D2E2868BCF53ADAD2D3A0200A5468D1DA7BE75EF6F74141DB7DFF2
- 81941501AE7BFBBBD4B56F7D878EA2EB7D6FB8461D3B72584700A24C8ACD0585
- 856A50F11035D869454E1B545C1CEB8B9C7E50D16095ED24E6929CE7E4E4A8EC
- 1CE9739D3E273627BDEC32920CA7AB4EA92F7DEC436A278BB6C2E7A48875D32D
- B7EAC87F8E1D3BDA7AD3B5436F7486B5BAD5597DBDD31AAC26B75DCA2D92B2FD
- 92F49294CAD649A617D2776B3BA59E24DEF235E6EB4CE26F7A0A000042EF8A6B
- DFA0DEFAFE9B75140D72EBFF3BAF7AA56A6C90FF1E25DFCC7925EA73DFFEBE8E
- A2EBEE6F7F5D3DFDF0833A02104692980F1A2C89BC49E6CF24F42F8F7582EFF4
- D9D9FE596B46B66DFDFCCDEFD511E04F1400BAD693C45BBEC67C9D49FC4D4F01
- 0040E8DDF6B56F476EDFF60D6B57AB2F7CF8FD3A4A3EF947EE3D7F7922F2B799
- AEFCF7F3EA6B9FFEB88E00044D46463F553C6CA81A39669CD3C6AA11A3C7A8A2
- 213AA98F25FD4354E18001FADDC152575BABDE71E5A5CEBF8BBB956B00694501
- A06B92B4030012C4F67FA9217718C8D5A5A89B5DBA90676D810090247ECA8C99
- EAFC575EAEDEF0CEFF551FFEFC17D5D7EEBE57DDFBE8D3EAFF7EFB80FACC37BE
- A36EFAF0C7D4ABAF7BA33AE7A24BD5ACF9A56AF4F809814DFE85AC25208F2400
- 08360A0000D00D51DCFE4FAC5FB35A8F52A76225DB014AF22F890280BE27B7EA
- 8F9D3829B608DE6B6FB851BDE7E3B7A9DBBFF723F5D3071E55F73CF4B8FAD2FF
- FD54BDEF939F51D7BCE56DAAEC828BD4B84953425FC0EB97A4350500F41D0A00
- 00D00D51DCFEAFB9A9496D5957A1A3D4A958B95C8FA28DDD0080F4EA3F6060EC
- EE9B575D7DAD7AFB076F893DE6F5BD5FFF51FDF2B1BFABAFDF739FFAC817BEAC
- 6EF89FF7A8575CF66A75F6AC39B115F50120A82800004082A2BAFDDFB64D1B54
- 7DBD3C9A965A3BB76E5635D5A775145DA565E7C47ED700249F24FB73162C8A5D
- D1BFE5F35F52DFBDFF8FEAEE871E8BDDB2FF8E9B3F12DBF64ED678193662247F
- 0F01841205000048902CE8347CE4481D45473A6EFF17CDCDCD6A439ABE979FC9
- 5EDD72DB3180DE193070D0CBC9FEFFBB2376555F92FD4F7FFDAED815FD25175C
- 18C9FF4F07106D140000204151BCFA2F52BD00A0AD9CC700624ACB96E9118044
- 48B22F57EEAF7ED3CBC9FE4F1F7CF4E564FFFC57C4AEEA0340D45100008004CD
- 5F12BDE7FF5B5A5AD4E675E53A4ABD75AB580850B00E00109FAC462F57F64DB2
- FFFDDFFC2996ECCBB3FB6F7C17C93E0074860200002420AADBFF6DDFBC51D5D6
- D4E828F5F6EEDCA14E9D38A1A3E89A3A73160B8D015A7E41A12A59B254BDE97F
- DF175B79FF9EBF3C11BBB26F92FDA1678DD0EF040074850200002420AADBFFA5
- FB99FCD6D656EE02706464F48BE48E138090BDF2172C3B57DDF8DE0FAA2FFFE8
- 67EA670F3FAE3EF1956FA8D7BCF1CDB1BDF733D98A0E007A8C0200002420AAC9
- D8FAD52BF5287DD80EF00CD90D008802B9DB65D1B917A8B7BDFF43EACE9FDEAB
- EE7EF03175EB97EE54AFBEEE8D6AD2D9D3620531004072F0FFA800D085A86EFF
- D7DADAA23696AFD551FA54700740CCBCC54B546656968E80F01834B858955D70
- 917AE7CD1F89EDB3FFD3071E551FBDFDCBEAF26BAF57E3274F61FB3D0048210A
- 0000D085A86EFFB763CB16555B53ADA3F4397C60BFAA3C7C4847D15550D85F4D
- 9B3547474070656767C716ED7BEBFB6E56DFFCF9FDEAC77F7A587DF8F35F54AF
- BCFA5AB6BC048034A30000005D60FBBFF4927500780CE08CD2A56C0788602A1E
- 365C5DFCEAD7A88F7DF1AB6D7BEF5FF1FA37A8D1E327E8770000FA02050000E8
- 4214B7FF13EBFBA800205808F00CD6014050C8C27CD3E7CC8DADCCFFB5BBEF55
- 3FF8DD03EA7F3EFA09B5F09CF3546E5EBE7E1700A0AF510000804E4475FB3FB9
- 0ABFB17C8D8ED2AF62250500316ADC7875D6A8D13A02FC656051913AEFD2CBD4
- CD9FF982FAC99FFFAAFEDF777E18DB9B7FDCA429FA1D0000BFA10000009D88EA
- F67FBBB76F53D555553A4ABFE3472BD5FEDDBB74146D25653C06007F90C5F964
- 55FE6BDFFA8ED87EFC3FFED323EAFD9FFAAC5A76D125B1ADFB0000FE47010000
- 3A11D5EDFFFAEAF97F1BBB019CB160298F01A0EF48D23F65FA4CF596F7BC5F7D
- EFD77F8CEDCB7FDDDBDF15DB8F9FD5FA012078280000401C51DDFE4FF4E5F3FF
- 06EB009C3163DE7C955F50A02320F5DC49FF977EF05375E5F56F5243CF1AA1DF
- 0100082A0A0000104754B7FF131BD6AED6A3BEB37EF5AAD85A0451278FA0CC2E
- 5DA423203548FA01201A280000401C51BDFABF77E70E5575F2A48EFA4ED5A993
- 6AD7D62D3A8A36B603442A48D23F79DA8C58D2FFDDFBFF40D20F001140010000
- E260FBBFBEC73A006794962D739235FE938DE41835769CBAE17FDE134BFAEFF8
- E1DDB1A47FD88868DEED040051C3BF2600C04354B7FF137E5800D0601D803306
- 0D2E5613CF3E5B4740F7E51714AA8B5E7D95BAFD7B3F52DFBAF737EAB537DC48
- D20F0011440100003C4475FB3FB161ED1A3DEA7B1BCBD7A8E6E6661D455B6919
- BB01A07BE4AE9159F34B635BF5FDF84F0FABFFFDE827D5D9B3E6E85701005144
- 0100003C4475FBBFFD7B76AB13C78EEAA8EFD5D6D4A86D1BD7EB28DA4AD90E10
- 09922BFBAF7FDB3BD5777EF57BF5D96F7D4F9D77E9652A273757BF0A0088320A
- 0000E012E9EDFF56AFD423FF601D8033269D3D4D150D19A223A0A37193A6A8CF
- 7CE33BB155FC5FFFB69B22BB8B0900203E0A0000E012E9EDFFD6F4FDF67F6E15
- 2B97EB114A9644B33085CE49D1F2E22B5F1B5BD06F76E9423D0B004047140000
- C025AA57FF859F760030B6AC5FA71A1B1A74146DAC03002F57BCFE0DEA7F3EF2
- 71959D1DCD754B000089A30000002E51DDFEEFE0BEBDEAF8D14A1DF98724FF9B
- 2AD6EA28DAE62E5C4492870EA6CD9EAB470000748E02000058A2BDFD9FFF6EFF
- 375807E08CDCBC7C35635E347F3F11DF980913F5080080CE510000004B94B7FF
- F3E3EDFF06EB00BC8CDD0060CBCCCA5223468FD11100009DA300000096A86EFF
- 2736F8B800B063F3A6D8968038B30E802CFA068896E6167E1F000009A3000000
- 5A94B7FF3B72F080AA3C7C4847FED3DCDCECEB02453AC90E15A3C68DD711A2AE
- B5B545D55457EB080080CE510000002DCADBFFADF7F1F3FF46C54AD601304ACB
- 96E911A0547555951E0100D0390A0000A04579FBBF205C5D6721C097B10E006C
- D5A74FE91100009DA30000005A54B7FF137E5E00D0D8B363BBAA3A795247D126
- DBBE150E18A023441D7700000012450100001C51DEFEEFD891C3B13500FC4E9E
- 75E62E8033FAF5EBA7E62D5AA223445DF5E9D37A040040E72800008023DADBFF
- AD7692EB561DF9DB3A0A006D64370040700700002051140000C011E5EDFFD6AD
- 0E4E52CD1D002F934756E44E00A0FA340500004062F8970380C88BF2F67FA27C
- C5723DF2BF43FBF6C61E598052FD070C545367CED611A2ACBA8A4500010089A1
- 000020F2A2BCFDDF4127A1AE3C745047FE278F2A94B31D609BD2A56C07081E01
- 0000248E020080C88BF2D5FF8A95C1B9FA6FB00EC0CB580700E2348F00000012
- 44010040E44579FBBFF20016005807E06563274E5243CF1AA123441577000000
- 1245010040A44579FB3FB99D7EFDAA953A0A0E5903E0C0DE3D3A4269198F0144
- 1D05000040A228000088B4286FFFB773EB665575EAA48E8285BB005E56BA94C7
- 00A28E5D00000089A2000020D2A2BCFD5F9056FF770BE2DA05A922452CB99305
- D1C51D00008044510000105951DFFE2FC849B43CBA208F3040A9ECEC6C35BB64
- 818E1045DC01000048140500009115E5EDFF9A9A1AD5A6F2B53A0A1E797461C7
- 96CD3A028F01445B4B4B8BAAADA9D6110000F1510000105951BEFABFA9A25CD5
- D7D7E92898780CE0652565CB6277B420BA780C000090080A0000222BCADBFF85
- 21792E5FF1921EA178E830357EF2141D218A4E530000002480020080488AF2F6
- 7F220CC9F3A68AB5AAB1B15147282DE3318028AB397D5A8F0000888F02008048
- 8AF2F67F35D5A7D58ECD9B74145C0DF5F56A734570D7314836D60188B6EAD3A7
- F4080080F828000088A4286FFFB77EF52AD5DCDCACA3602B671D803693A7CF50
- 038B06EB0851C32300008044500000103951DFFE2F4CCFCE57ACA00060C8EF75
- 4984D7B5883A160104002482020080C889F2F67FA262D50A3D0ABEED9B37C61E
- 69C019AC03105DD5A729000000BA46010040E444F9EAFFF1A3956AFFEE5D3A0A
- 3ED9FF7C5D880A1ABD3577D192C8AE6D1175DC01000048040500009113E5EDFF
- E4F6FFD6D6561D8543F94A0A00467E41819A3667AE8E10251400000089A00000
- 2052A2BEFD5F450893E58A10AD69900C0BD80D2092EA6A6BF4080080F8280000
- 8894286FFF272A42B86AFE81BD7BD4B123877584D2B2657A8428690AC9CE1E00
- 80D4A200002052A2BCFDDFBE5D3BD5B1CA233A0A0F79A4A19CDD00DA8C183336
- B6D025A2A5B9A9498F0000888F020080C888FAF67F615AFDDFAD621505005B09
- 7701440E0500A4435D0D8F9A00414701004064447DFB3F590030ACCA43F86843
- 6FB00E40F4500040AA9D3A7142353636EA084050510000101951BEFADFDADAA2
- 36AC59A5A3F03971F4A8DABB73878E307DEE7C5550D85F478882A6660A0048AD
- 179E795A8F0004190500009111E5EDFFB66DDCA8AA4F9FD65138857181C39ECA
- CCCC5473162ED211A2803B00A249D640912D200F1FD8AFF6EEDA195BEB65FF9E
- DDEAE0DE3DEAD0FE7DCEFC015579E8A03A7AF8706C0D1829969E3A715C559D3C
- A9AA4E9D8C7D6D4DF569555B53A3EAEB6A55437D7DEC2A7F5353A36A6E6E8EBD
- 67FFEE5DEACFF7FD5CFDEE9E1FEBEF0A20C83274DF1DF235E6EBA4972282E933
- 9D96A57B59663BC76AB94ECB735ABED5E7DFF3A7CAFB8A8B87F4E473A4C50D17
- 9F17BB720620D864FBBF7BFEF27864770078E057F7AADFFDEC273A0A27B9EDFD
- D63BBEA6233CFBC463EA87777E494708BB31E327A86FFCFC7E1D214824E9AE39
- 7D5A9D3EED24E34E93A45C0AB6D5B1F1A933E3B6B95367DE2B89BBD34BE2CEBF
- 5381975D7AD5D5EAA65B6ED591FF1C3B76B4F5A66B87DEE80C6B75ABB3FA7AA7
- 35584D9EB9912D5EA4C22BBDFC656FB57A21BD1927A42789B77C8DF93A93F89B
- 9E0200005F2A7592C38F473839FCE2473EA8D6AD5EA9A370CA2F288C1579FAF5
- E3E63621CFEBBEFBDAABF86F5844C8EE0F77FDF2B73A825FC8DFC383FBF7C6AE
- C81FDCB74F1DDAB7571D3974D049E09DC43E96C457F15C3D90441400BAC6BF92
- 00444294B7FF93AB4B9BD757E828BC6A6BAAD5D60DEB74848145456AF2F4E93A
- 42D8F10840DF3971ECA8DA58BE563DFBF8A3B13BADBE73FB67D5A7DEFD4EF5CE
- AB5EA5FEF775AF569FFBC0BBD50FBEFAA5D86DF4CFFFFD29B5795D79ECB6FA93
- C78F91FC03483B0A0000422FEADBFF6D2C5FA31A1BA4901C7EAC03D09EDCF982
- 68A000905AC78F56AAF56B56A9671E7D44FDE6A73F52DFFEC267D427FFF7EDEA
- EDAFBE44BDE7F5AF51FFEF43EF553FFCDA1DB1C7ADFEFD8FBFAB1D5B36C59EAD
- 0700BFA1000020F4A2BEFD5F9492E2F21514006CA5651400A2A2890240D2C85D
- 53EB57AF8A25F35FFDE447D54DAF79957AEF75AF55B7DFF201F5E36F7C453DF4
- 9BFBD48BCF3EA3766EDDA2EA6AE5CE5D00080E0A0000422FCA57FF459492E22D
- EBD7A9FA7A798C0E62C294A9AA78D8701D21CC9AD906B0C764457C49E87FF97F
- DF559F7EEFBBD43BAE7AA5BAFD231F88DDCEBFFABFFF892DBE07006141010040
- E84579FB3F59684AAE5245856C5DB561CD6A1D41942C8976012C2A5A9A59ECB1
- 3B647BBBBFFDF52FEA4B1FFB907ACFEBAF8ADDD2FFE89F7EA7B66DDAC0E31400
- 428D0200805093EDFF66CE2FD151F4AC5BB92272ABC0B30E407BAC03009C2157
- F29F79EC11F5954F7C24F6DCFE4FBF7967ECFF2F64BF7B00880A0A0000426D56
- C982C8EEFD2FCA23980C97AF78498F20E6942E5439B9B2132F106D8FFCFED7EA
- C75FFF8A5AF3D28B5CE5071059140000845A94B7FF1351BC1ABE7BFBF6D8DEDB
- 384392FF99F3A27B170C00007819050000A115F5EDFF2A0F1D5487F6EFD35174
- C8230F3C06D01E8F010000004101004068457DFB3F59FDBFB5B55547D152B18A
- 02804D0A005210030000D14601004068457DFBBF285F058FD2D68789183AFC2C
- 3566C2441D010080A8A2000020B4A2BCFD9FA858B5428FA2E7C8C103917CFCA1
- 33A5653C06000040D4510000104A51DFFE6FF7F6ADEAE4F1633A8A26D60168AF
- 74E9323D020000514501004028457DFBBF8A95D1BDFA6FF018407B67CF9AAD06
- 0C1CA423000010451400008452D4B7FF632F7CA5D6AD5E11D94510BD6464F453
- F3162FD111000088220A00004227EADBFF353737AB0D6B57EB28BAAA4E9E543B
- B76ED61104EB000000106D140000844ED4B7FFDBB27E9DAAABADD551B4F12844
- 7BF31697A9CCCC4C1D010080A8A100002074D8FE8FDBFF0D1E8568AFB07F7F75
- F6AC393A0200005143010040E8447EFB3F56BF6FB3A97CAD6A6A6AD41144E952
- 1E03000020AA2800000895A86FFF27B7FE6FD9B05E47A8AFAF539B2ACA750451
- 5AC6768000004415050000A112F5EDFF36AC59A59A9B9A7404C11D11ED8D1E3F
- 410D1F394A470000204A2800000895C86FFF47B2DB01EB0074C45D0000004413
- 050000A111F5EDFF0457BB3BDAB17993AAA93EAD2308D6010000209A28000008
- 8DA86FFF77EAC471B567C7761DC1686E6E56EB56ADD41184AC9391979FAF2300
- 0010151400008446D4AFFECBEDFFADADAD3A828D3B23DA937532E62C58A42300
- 0010151400008446E4B7FF5B41921B0F6B2374545AC663000000440D050000A1
- 10F5EDFF04496E7C07F6EC56C72A8FE808A2A46CA9CAC8E09F0100004409FFE5
- 07100A51DFFEEFE0BEBDAAF2D0411DC14D1E8DE03180F68A8A87A889679FAD23
- 000010051400008402DBFF91DC76A59C47243A603B400000A285020080C063FB
- 3F16B94B04E7A823D6010000205A28000008BCA86FFF27B7B7AF679BBB2E1D3F
- 5AA9F6EEDAA9238849D3A6ABA2214374040000C28E020080C08BFAD5FF9D5B37
- ABAA53277584CE701740472511FFFB03004094500000107851DFFE8F67DB1357
- BEE2253D8251BA9475000000880A0A0000028DEDFF486ABB63C39AD5AAA5A545
- 471073172E56D9D9D1DD4103008028A1000020D0A2BEFD5F5353A3DA5C51AE23
- 74A5A6FAB4DABA71BD8E2072F3F2D5F4B9F375040000C28C020080408BFAF67F
- 9B9CE4BFBEBE4E474804EB0074B46029BB01000010051400000416DBFF71FB7F
- 4F54B0664207A54BCF8DFD7D020000E14601004060457DFB3FC1D5ECEEDBB2BE
- 82BB265CE4EFD1A871E375040000C28A020080C08AFAD57F799E7DC7E64D3A42
- A21A1B1BD5C635AB7504A36409BB01000010761400000456D4B7FF5BBF7A956A
- 6E6ED611BAA37CE50A3D82C176800000841F05000081C4F67F3CFFDF1B152B39
- 776ED3E7CC53850306E808000084110500008114F5EDFF4439CFFFF7D8AE6DDB
- 54D5C9933A82E8D7AF9F9ABB70B18E00004018510000104851DFFEEFF8D14A75
- 60CF6E1DA1BB5A5B5B54C52A1E03702B2D633B400000C28C020080C061FBBF33
- B7FFB7B6B6EA083D51C123141D94942D8DDD09000000C289FFCA03081CB6FF93
- 0200B7FFF75639EB0074D07FC0403575E66C1D010080B0A100002070A27EF55F
- 54F0FC7FAF1D3E70C069FB7504A3A48CDD000000082B0A00000227EADBFFEDDB
- B533B606007A8F85143B2AA5000000406851000010286CFFA758BC2E895807A0
- A3719326ABA1C3CFD211000008130A00000285EDFFCE2C0088E4A098E28DC700
- 000008270A00000225EADBFFC9F675EB57AFD2117AABEAE449B573CB661DC128
- 5DCA76800000841105000081C1F67F4A6DDBB851D5549FD61192A16215EB00B8
- CD2E59A07273F374040000C282020080C060FB3F6EFF4F05B654EC283B2747CD
- 2A5DA023000010161400000406DBFFB1777D2A6C2C5FA39A9A1A750483DD0000
- 00081F0A00000223EADBFF35D4D7AB2DEB2A748464A9AFAB539B2B38AF6EB20E
- 803C76030000C2830200804060FBBF3357AA1B1BB9529D0A152B790CC0AD78E8
- 30357EF2141D01008030A000002010D8FE8F24359578B4C21BDB010200102E14
- 00000442D4B7FF132C56973ADB376D54B535D53A82515AC67680000084090500
- 00BEC7F67F4A9DAE3AA5766EDDA223245B7373B35ABF7A958E604C9931530D2C
- 2AD2110000083A0A00007C8FEDFF945AB772856A6D6DD11152812D163BA2F806
- 0040B8500000E07B2420F28C3AB7FFA71AE7D85BE952D6010000202C280000F0
- BDA86FFF27B83A9D7AFB77EF52C78F56EA08C6BC454B22BF0027000061410100
- 80AFB1FD9F5295870EAAC307F6EB08A9D2DADACA4E0B1EF20B0AD5B439737504
- 0000828C0200005F63FBBF33ABFF4B728AD463A7056FA56C0708004028500000
- E06B6CFFA7B82A9D469C6B6FA54BD90E10008030A00000C0B75881FC8C8A552B
- F408A976ACF288DAB76BA78E60C84E1C239C060000828D020000DF62FB3FA576
- 6FDFAA4E1E3FA623A40305176FA54B780C000080A0A30000C0B7B8FA2FB7A493
- 8CA61B3B2E78633B400000828F020000DF62FB3F92D1BEB07EF52AD5DADAA223
- 1833E695C47604000000C1450100802FB1FD9F52CDCDCD6AC3DAD53A42BAD454
- 9F565B376CD0118CCCCC4C3577E1221D01008020A20000C097D8FE4FA92DEBD7
- A9BADA5A1D219DD80DC05B6919BB0100001064140000F812DBFF4912CAEDFF7D
- A59C73EFA9A46C99CAC8E09F0E00000415FF1507E03B6CFF770657A1FBCE9675
- 15AAA1BE5E4730061615A9C9D3A7EB080000044D86EEBB43BEC67C9DF4524430
- 7DA6D3B2742FF7EEE6582DD769794ECBB7FAFC7BFE54795F71F1909E7C8EB4B8
- E1E2F3580C0A48B35163C7A96FDDFB1B1D45D7FD3FFE3FD5DCD4ACA3F85A9DFF
- 25A2B53581F725F21E47427F9623A17725F97B26F2E725F227BDE68D6F56C347
- 8ED2118C3FDFF773F5FB9FDFAD23F8852CD0F8F3479ED411BCFCEE673F510FFC
- EA5E1D0108A34BAFBA5ADD74CBAD3AF29F63C78EB6DE74EDD01B9DA13CE329AD
- CEEAE5CA4383D51A9D26FF106CD2BD24A5F24F18D30BE913F9674D9B9E24DEF2
- 35E6EB4CE26F7A0A00007AED8A6BDFA0DEFAFE9B7504C04F766ED9AC3EF9EE77
- E8087E4101A06B140080F0A300D0351E0100E03B6CFF07F8D784A967ABE2A1C3
- 7404000082840200005F61FB3FC0FF4A96B0460700004144010080AFB0FD1FE0
- 7FA54BD90E10008020A20000C057D8FE0FF0BFD90B16AA9C5C59DA0700000409
- 050000BEC1F67F4030E4E6E6A999F37854070080A0A10000C037468E19AB868F
- 1CA923007E565AB64C8F00004050500000E01B5CFD078243D60190BB76000040
- 70500000E01B6CFF0704C7D0B346A8311326EA0800000401050000BEC0F67F40
- F094F01800000081420100802FB0FD1F103CA5656C0708004090500000E00B6C
- FF0704CFB4D9B3D580818374040000FC8E0200803EC7F67F40306564F4537317
- 2DD1110000F03B0A0000FA1CDBFF01C155BA9475000000080A0A0000FA1C57FF
- 81E092BFBF9999993A0200007E460100409F63FB3F20B80AFBF75767CF9AA323
- 0000E067140000F429B6FF03828FED00010008060A0000FA14DBFF01C157BA94
- ED00010008020A0000FA14DBFF01C13766FC0416F204002000280000E8336CFF
- 078447C9121E030000C0EF280000E8336CFF0784078F010000E07F140000F419
- AEFE03E131ABA454E5E5E7EB080000F8110500007D86EDFF80F090C53CE72C58
- A4230000E047140000F409B6FF03C28775000000F0370A0000FA04DBFF01E153
- 5AB64C6564F04F0B0000FC8AFF4A03E8136CFF07844FD190216AE2D4A93A0200
- 007E43010040DAB1FD1F105E25653C060000805F51000090766CFF078417DB01
- 0200E05F140000A41D57FF81F09A3C6D862A2A1EA2230000E027140000A41DDB
- FF01E156B284221F00007E440100405AB1FD1F107EAC030000803F5100009056
- 6CFF0784DFDC858B5576367FCF0100F01B0A0000D28AEDFF80F0CBCBCF57D3E7
- CED7110000F00B0A0000D286EDFF80E828E5310000007C87020080B461FB3F20
- 3A162C3B3756F4030000FE41010040DA70F51F888EE12347A99163C7E9080000
- F80105000069C3F67F40B4F018000000FE420100405AB0FD1F103DA565E7E811
- 0000F0030A0000D282EDFF80E8993E779E2AECDF5F470000A0AF51000090166C
- FF07444FBF7EFDD4DC454B74040000FA1A05000029C7F67F4074B10E000000FE
- 41010040CAB1FD1F105DF3972C8DDD09000000FA1EFF450690725CFD07A26BC0
- C0416ACA8C593A0200007D890200809463FB3F20DA780C0000007FA0000020A5
- D8FE0F40E9520A000000F80105000029C5F67F00C64D9AA2860E3F4B470000A0
- AF50000090526CFF0740942C612D100000FA1A05000029C3F67F008CD2A5E7E8
- 110000E82B140000A40CDBFF013066972E54B9B9793A0200007D8102008094E1
- EA3F00233B2747CD2A5DA0230000D0172800004819B6FF03602B613B400000FA
- 1405000029C1F67F00DC16942D8BAD0D020000FA0605000029C1F67F00DC8A87
- 0D57E3264DD611000048370A00005282EDFF0078E131000000FA0E05000049C7
- F67F00E2613B400000FA0E05000049C7F67F00E2993A63961A5854A423000090
- 4E140000241D57FF01C4237708CD5BC423420000F4050A0000928EEDFF007486
- C7000000E81B14000024956CFF37631EDBFF01886FFEE2252A332B4B47000020
- 5D280000482AD9FE2F3B9BEDFF00C4975F50A8A6CF9EAB230000902E14000024
- 15DBFF014804DB010200907E140000240DDBFF014814EB000000907E14000024
- 0DDBFF0148D4A8B1E3D488D16374040000D281020080A4E1EA3F80EEE0310000
- 00D28B020080A461FB3F00DD514A01000080B4CAD07D77C8D798AF935E8A08A6
- CF749AECEB23BD2C039E63B55CA7E5392DDFEAF3EFF953E57DC5C5437AF239D2
- E2868BCF53ADAD2D3A02108F6CFF77F7438FB30380F6BE375CA34E1E3FA62344
- D1073FFD795576C1453A8297E6A626F5AEAB2F57B535357A063D253B2BFCFC91
- 2775042FBFFBD94FD403BFBA574700C2E8D2ABAE5637DD72AB8EFCE7D8B1A3AD
- 375D3BF4466758AB5B9DD5D73BADC16A8D4E6B765A93EE25296DB57A21BD1927
- 843B00002405DBFFBD6CF7F66DEAD891C3B1E48616DDB6E6A517F56F04E2C9CC
- CA5273162CD211000048350A00009282EDFF5E56B172B91E21CAD62EFFAF1EA1
- 33EC06000040FA500000D06B6CFFD75EF98A97F4085176F4F061B56FD74E1D21
- 1E59072023837F8E0000900EFC171740AFB1FDDFCB9A9B9BD586B5AB7584A8E3
- 2E80AE0D2C1AAC264F9BAE230000904A140000F41A57FF5FB665FD3A55572B6B
- B9008A750012C476800000A407050000BDC6F67F2FAB58C9EDFF7899DC0DD2D4
- 248BF8A233A54B29000000900E140000F48A6CFF37635E898E50BE820500F1B2
- FABA3AB5A97CAD8E10CFC4A9D3D4E021437504000052850200805E61FBBF97C9
- ADFF5B37AED71170068F0124A6A48C4789000048350A00007A85EDFF5EB67EF5
- CAD8FEEF808D850013535AC676800000A41A0500003DC6F67FED95AFE4F67F74
- B46BDB3675EAC4711D219E390B17A9EC9C1C1D01008054A00000A0C7D8FEAFBD
- F2152C00888E5A5B5BD49A97B80BA02BB9B9796A26EB8900009052140000F418
- 57FF5F76E2D851B56FD74E1D01EDF11840624A97F218000000A9440100408FB1
- FDDFCB64F5FFD6D6561D01ED717748624ACB96C51E2D020000A9410100408FB0
- FD5F7B15AB78FE1FF1C91D22BBB66DD511E2193662A41A3D7E828E000040B251
- 0000D0236CFFD75E050B00A20B3C069018B90B000000A4060500003DC2F67F2F
- DBBF67B73A7AF8B08E006F140012C33A000000A40E050000DDC6F67FED55F07C
- 3712B0B17C8D6AA8AFD711E299367B8EEA3F60A08E00004032510000D06D6CFF
- D75E39B7FF23018D0D0D6AC39A553A423C1919FDD4BC454B7404000092890200
- 806EE3EAFFCB648FF7F5AB57EA08E8DC1A1E034848E952D60100002015280000
- E836B6FF7BD9B68D1B55F5E9D33A023AB7F6A517F5089D9122636666A68E0000
- 40B2500000D02DB9B96CFF67637F7774C7BEDDBBD4B1CA233A423C850306A8A9
- 3367E9080000240B050000DD32B3A494EDFF2CE52B29002071ADADADEC0690A0
- D2327603000020D9280000E89692253CFF6FC88AEE5BD655E808480C0580C4B0
- 1D200000C947010040C2D8FEAF3DD9D6ADB1B151474062E4B111B913009D1B33
- 61A21A3682DD46000048260A000012C6F67FEDF1FC3F7AA2EAE449B563F3261D
- A1332565EC06000040325100009030AEFEB757BE72B91E01DDC3630089594001
- 000080A4A2000020616CFFF7B2AA5327D5AEAD5B750474CF1AB6034CC8CC9205
- 2A372F4F470000A0B72800004808DBFFB557B172856A6D6DD111D03D5BD6AF53
- 75B5B53A423CB2E3C8ECD2853A020000BD4501004042D8FEAFBD0A9EFF472F34
- 3535AA75AB57EA089D6137000000928702008084B0FD5F7BE52B2900A077780C
- 2031A565CB623B90000080DEA30000A04B6CFFD7DEE10307620DE80D16024CCC
- E02143D5F82953750400007A830200802EB1FD5F7B5CFD47321CDAB7571D3948
- 212911A5653C0600004032500000D025AEFEB7C7F3FF4886D6D6561E034850E9
- 52B60304002019280000E812DBFFB557B16A851E01BDC363008999327DA61A34
- B858470000A0A7280000E814DBFFB5B773CB665575F2A48E80DE59B76A856A69
- 613BC94450880400A0F7280000E814DBFFB557BE72B91E01BD577DFAB4DABA61
- 9D8ED019D6010000A0F7280000E814DBFFB557CEF3FF48321E0348CCDC858B55
- 5616C54800007A83020080B8D8FEAFBDA6A646B5A97CAD8E80E458FB12058044
- E41714A8E973E7E9080000F40405000071B1FD5F7B9B2ACA557D7D9D8E80E4D8
- B66943EC5100748DDD000000E81D0A0000E2E2EA7F7B153CFF8F14686E6EE677
- 2B41AC03000040EF5000001017AB6EB7C7F3FF4815D60148CC88D16362772601
- 00809EA10000C013DBFFB557537D5AEDD8BC494740725100485CE952EE020000
- A0A7280000F0C4F67FEDAD5BB53276AB36900A470E1E5007F6EED1113A430100
- 00809EA30000C053C9626EFFB795F38C36528CBB0012337DCE3C5550D85F4700
- 00A03B280000E820B6FDDF1256DBB655F0FC3F526CED4B2FEA113A939999A9E6
- 2E5CAC230000D01D14000074C0F67FED1D3B7298DBB39172EB56AF54CD4D4D3A
- 4267D80E1000809EA10000A003B6FF6BAF7CC572D5DADAAA232035EA6A6BD5A6
- 75E53A42674A962C53FDFAF14F180000BA8BFF7A02E880EDFFDA2B5FC9EDFF48
- 0FD60148CC804183D4E4E9337404000012450100403B6CFFD751C5AA157A04A4
- 16EB0024AEB48CDD000000E82E0A0000DA61FBBFF6F6EEDCA14E1C3DAA2320B5
- 766CD9A2AA4E9DD4113AC376800000741F050000EDB0FD5F7BE5ACFE8F346A6D
- 6D51E5CBF99D4BC4F8C953D490E1C37504000012410100401BB6FFEBA87CE572
- 3D02D263CD721E0348942C0608000012470100401BB6FF6BAFA5A5456D58B34A
- 47407A700740E24ACB28000000D01D140000B461FBBFF6B6ACAF50B535353A02
- D2E358E591D8DA13E8DAECD2852A273757470000A02B140000B461FBBFF6CA57
- 70FB3FFAC61A7603488824FFB3E697EA080000748502008018B6FFEBA86225B7
- 62A36FAC5DFE5F3D4257D80D000080C451000010C3F67FEDD5D7D5AAAD1B36E8
- 0848AF8D6BD7A8C6C6461DA133A565E7C416300500005DA300002086EDFFDA5B
- BF66B56A6A220143DFA8AFAF531BD7AED6113A235B018E9D3849470000A03314
- 0000B0FD9F87F215DCFE8FBEB5E6251E034814BB01000090180A0000D8FECF43
- C54A160044DF621D80C4B10E00000089A1000080EDFF5C4E9D38AEF6ECD8AE23
- A06FECD9B14D9D38765447E8CCD499B3D580418374040000E2A1000080EDFF5C
- E4F6FFD6D6561D017D437E07B90B2031B1C79858C70400802E510000228EEDFF
- 3A2A5FC1EDFFF0070A008993DD00000040E728000011C7F67F1DF1FC3FFC62ED
- 7216A34CD4BCC54B546656968E000080170A0040C4B1FD5F7B07F6EE5195870F
- E908E85BB21EC5CE2D9B7584CE1414F657D366CDD1110000F04201008830B6FF
- EB88ABFFF01B1E03485CE952FEFF0C0080CE500000228CEDFF3A920500013F59
- F3D28B7A84AEB00E0000009DA300004418DBFFB527ABAEAF5BBD5247803F6C5E
- 57AEEAEBEB7484CE8C1A375E9D356AB48E0000801B050020C2D8FEAFBDED9B37
- AAEAAA2A1D01FED0D8D8A8D6AF5EA52374A5A48CC70000008887020010516CFF
- D711DBFFC1AF580720710B96F218000000F1500000228AEDFF3AE2F97FF815EB
- 00246EE6BC12955F50A023000060A300004414DBFFB5D7D8D0107BD61AF0A303
- 7B76ABA3870FEB089DC9CCCA52B34B17E9080000D8280000117466FB3F1600B4
- 6D2C5F132B02007E240B54F21840E2D80E1000006F140080083AB3FDDF281D41
- 70FB3FFC8EC70012575AB64C6564F04F1C0000DCF8AF2310416CFFD751C54A16
- 0084BFC9EFA8DC0980AE0D1A5CAC269E7DB68E0000804101008820B6FF6BEF74
- D529B573EB161D01FE24BFA7DB366DD011BA525AC66E000000B85100002286ED
- FF3A5AB772856A6969D111E05F6B790C2061A56C07080040071400808861FBBF
- 8ECAB9FD1F01C14280899B74F634553464888E000080A00000440CDBFF75C402
- 80088A2D1BD6ABDA9A1A1DA12B25EC760200403B1400800861FBBF8E8E1C3CA0
- 0E1FD8AF23C0DF9A9B9A58B0B21B5807000080F628000011C2F67F1D95AF6065
- 75040B8F01246EEEC2453CF204008085020010216CFFD751F94A6EFF47B05000
- 485C6E5E3E8B9E020060A100004408DBFF75B46ED50A3D0282E1D0FE7DB186C4
- B01B0000002FA300004404DBFF75B46BDB5675EAC4091D01C1C15D0089937500
- 64FD130000400100880CB6FFEB88D5FF1154140012377CE448356ADC781D0100
- 106D1400808860FBBF8ECA594D1D0155B172856A6969D111BA525AB64C8F0000
- 88360A004004B0FD5F47B29DDAC6B5AB7504044B6D4DB5DABCAE4247E80AEB00
- 0000700605002002D8FEAFA34DEBCA557D5D9D8E80E0E13180C44D9B3D57150E
- 18A0230000A28B020010016CFFD751C50A6EFF47B0AD7DE9453D4257FAF5EBA7
- E62D5AA2230000A28B020010016CFFD751F94A160044B06DDFBC51555755E908
- 5D91DD000000883A0A0040C8B1FD5F47F2FCF4F64D1B750404932C0248212B71
- 5208953B0100008832FE4B08841CDBFF75B47EF52AD5DCDCAC2320B858072071
- FD070C545367CED6110000D14401000839B6FFEBA87C05574D110E6B5FA200D0
- 1DA54BD90E1000106D1400801063FB3F6FE52B590010E15079F890DABF7B978E
- D015D6010000441D050020C4D8FEAFA3E3472B4998102A3C0690B8B11327A9A1
- 678DD0110000D14301000831B6FFEB486EFF6F6D6DD511107C6BD80EB05B4ACB
- 780C0000105D1400801063FBBF8ECA5770FB3FC265FD9A55AAB9A94947E84AE9
- 521E0300004417050020A4D8FECF5B05CFFF2364EAEBEAD4C68AB53A42576695
- 2C50B979793A0200205A28000021C5F67F1DEDDDB533B6060010363C069038F9
- FFC5D9250B74040040B4500000428AEDFF3AAA60FB3F84140B01760F8F010000
- A28A020010426CFFE78DEDFF1056BBB66E55A74E9CD011BA5252B62CF6FF9300
- 00440D05002084D8FEAFA3969616B561CD6A1D01E1D2DADAC25D00DD503C7498
- 1A3F798A8E0000880E0A004008B1FD5F475B37AE5735D5A77504840F0580EE29
- 2DE331000040F45000004288EDFF3AE2F97F84DDDA151400BA83750000005144
- 01000819B6FFF356BE82E7FF116E278E1E55BBB76FD511BA3279FA0C35B068B0
- 8E000088060A0040C8B0FD5F47F5F5756ACBFA753A02C28BC70012278B009670
- B71400206228000021C3F67F1DC9E27F4D4D8D3A02C26BCD4B1400BA83750000
- 00514301000811B6FFF356CEF3FF88888DE56B546343838ED095B98B16ABAC2C
- EE980200440705002044D8FECF5BC54A9EFF473448F2BF7ECD2A1DA12BF90585
- 6ADA9CB93A020020FC28000021C2F67F1D9D3A7142EDDEBE5D4740F8B10E40F7
- 2C6037000040845000004284EDFF3A92ABFFADAD2D3A02C26FCD4B2FEA111251
- 5AB64C8F0000083F0A004048B0FD9FB7F2953CFF8F68D9B76BA73A7EB45247E8
- CA883163638F4F010010051400809060FB3F6FE52B78FE1FD1D2DADAAAD6B21B
- 40B79470170000202228000021C1F67F1D1DDCB757551E3AA823203AD62CE731
- 80EE601D000040545000004280EDFFBC95B3FA3F224AB6BE943B019098E973E7
- C77604000020EC28000021C0F67FDE2A9C240888A2AA9327D58E2D9B7584AE64
- 6666AAB98B16EB080080F0A200008400DBFF7524573FD7AD5AA923207AD80EB0
- 7B4ACB780C0000107E1400801060FBBF8EE4EAE7E9AA533A02A2672DDB01764B
- C992A52A23837F160100C28DFFD201213076E2243D82C1EDFF88BACDEB2A547D
- 5DAD8ED0958145456AE2D967EB08008070A20000049C2C003860D0201DC158C3
- EDCF88B8A6A6461E83E9A6B3468DD6230000C2890200107039B9B92A2B2B5B47
- 10D5A74FAB8DE56B740444D7F37F7F5A8F9088C14386EA110000E144010008B8
- 86FA7A75F2F8311D413CFFF413AAB9A949474074BDF8EC33AAF2F0211DA12B47
- 8F1CD6A3E0A9ABADE5FFF7BA70FAE4493D0280E8A20000049CAC76BFE285E775
- 84DDDBB7AAFB7FFC031D01D1268F017CF9E3B7A8E3472BF50CE291AD1337AC59
- ADA3E0696D6D097401231D288601805219BAEF0EF91AF375D24B11C1F4994ECB
- D2BDDC939C63B55CA7E5392DDFEAF3EFF953E57DC5C5437AF239D2E2868BCF8B
- FD4715F033D9C3FAAA37BC49CD5DB4440D1D3E22526B02343737A913478FC612
- 9C179E795A3DF7D413AAB1B151BF0A40E41714AAF35E79995A7CEEF9AA78D870
- 55545CCC8AF7DAF1CA236AD7F66DEA0FBFB85BEDDFBD4BCF06D39BFEE7BDEA35
- 37BC4547B0C99D721FBEF18DAAB6A65ACF0008A34BAFBA5ADD74CBAD3AF29F63
- C78EB6DE74EDD01B9DA1ACD22BADCEEAEB9DD66035F9076DB3D3E4F62EE92529
- 6DB57A21BD1927A42789B77C8DF93A93F89B9E02000000401F9042CFAD77DCA9
- 66CE2BD13310B225EC0FEFBC43AD78E1393D0320AC280074AD2789B77C8DF93A
- 93F89B9E02000000401F919D6166CE2F5563274C5443869FA532B3E49F64D174
- EAC4095579E8A05AF5E2BF557555959E0510661400BAD693C45BBEC67C9D49FC
- 4D4F01000000000090761400BA26493B000000000008390A0000000000004400
- 0500000000000022800200000000000011400100000000008008A00000000000
- 0040045000000000000020022800000000000010011400000000000088000A00
- 0000000000440005000000000000228002000000000000114001000000000080
- 08A0000000000000400450000000000000200228000000000000100114000000
- 00000088000A0000000000004400050000000000002280020000000000001140
- 0100000000008008A00000000000004004500000000000002002280000000000
- 0010011400000000000088000A00000000000044000500000000000022800200
- 000000000011400100000000008008A000000000000040045000000000000020
- 022800000000000010011400000000000088000A000000000000440005000000
- 00000022800200000000000011400100000000008008A0000000000000400450
- 00000000000020022800000000000010011400000000000088000A0000000000
- 0044000500000000000022800200000000000011400100000000008008A00000
- 0000000040045000000000000020022800000000000010011400000000000088
- 000A000000000000440005000000000000228002000000000000114001000000
- 00008008A0000000000000400450000000000000200228000000000000100114
- 00000000000088000A0000000000004400050000000000002280020000000000
- 0011400100000000008008A00000000000004004500000000000002002280000
- 0000000010011400000000000088000A00000000000044000500000000000022
- 800200000000000011400100000000008008A000000000000040045000000000
- 000020022800000000000010011400000000000088000A000000000000440005
- 00000000000022800200000000000011400100000000008008A0000000000000
- 40045000000000000020022800000000000010011400000000000088000A0000
- 0000000044000500000000000022800200000000000011400100000000008008
- A000000000000040045000000000000020022800000000000010011400000000
- 000088000A000000000000440005000000000040F06564E801E2A100D0859C9C
- 1C3D0200000000F8555E7EBE1E211E0A005DC82B28D02300000000805FE5E593
- BB7585024017A8220100000080FF91BB758D024017F2B90300000000007C8F02
- 40D728007481DB4800000000C0FF72F328007485024017B8030000000000FC8F
- 3B00BA4601A00B2C020800000000FE4701A06B1400BAC01D0000000000E07F3C
- 02D0350A005D600D0000000000F03FEE00E81A05802E70070000000000F81F05
- 80AEF54501A0D56ABE47010000000000FC2F40776FF7594E9C8E02402012FD78
- 78040000000000FC2F372F4F8F022BE5B9733AEF00F03A18DF1707B803000000
- 0000FC2D23A39FCACEC9D191AFF5695E9C8A0280FDE17D9FE07725AFA0508F00
- 000000007E24CFFF676464E828D0529A4FB30860170A0A290000000000809F15
- 0E18A047E84CAA0B0052B130CD6857C5E8D7D2D2AC87BE347CC4283D02000000
- 00F8D1C83163F5C8BF0665B734E9A1E1CE93DDB973D2A5FB0E808E07935F50A7
- 47BE543C6C681816930000000080D00A4201A021A7D02BF74D69C2EFE6834700
- 6A7D5D0090C524468E1DA7230000000080DF04A100D05C9770EE9BB2A240320A
- 00BDFB708DCDBE2E008851140000000000C0B78270D1B6A5F7B96FAF0B03A9BA
- 03403E98FDE1CCB8C3076EAE6DA2000000000000E8B1403C02D0DCE895FBDAB9
- B2570E9D54C92A0074E7C399038BB5C6D6FA001400C6EB1100000000C04F32B3
- B2D4D0B346E8C8BF1A9B6B24F76D970F3B2D51DD796F5CA95C03C07D509E1FB8
- BEA18E3B0000000000003D72D6A8D12A33335347FED5D4E0790780B073653B87
- 4EBA641700E27D507310F6EBB1B8A1D6FF05809163FD7F3B0900000000445110
- 6EFF170DF5B1DCD7332FD6CD4BBCF91EE94901A0AB0F90C8076C7B4F638BBF77
- 0110B979F9AA78D8701D0100000000FC62E49860DCB1AD0B0046B7F2E63812F9
- 33DA49E52300F1C8876C6B0D75F5B532E977A3C7B10E0000000000F84D50EED8
- AE6FECD51A0049D1D30280F9A09D7D60F76B9E5FD3505FEDFB3B004410B69500
- 00000080A809CC230075B102802D5E5EED8E6DF1BE2621E9B803403E58DC0F59
- 575B158802000B010200000080FF8C0AC82300F5B5D55E77BFDBB972877C39D9
- 52B10860671FDC7E2D36AEADA1000000000000E8BEBCFC7C35A8B85847FE567D
- 26F7ED90139F1976605E8BF77A8FA4FA0E00FB43DB1FDEF4AAAEF67420D60018
- C51A0000000000E02BB200604646868EFCADA6E6847DF1DBCE8DDD2D65925900
- B03FA819C7FBF0E6C05A6B4E9F0C440160C8B0E16A6051918E00000000007D6D
- EAACD97AE47FB5A74F49EEDBA29BC989DDCC9CFD9AD7FB7A24190580AE3E8CBC
- 6E9AB0E3D6D355C703510090AAD2ACF9A53A0200000000F4B520E568AEDCD7E4
- C7C2CE913BD3D5EB5D4AC51D00EEDEADDDFCC9134702B10680985DBA508F0000
- 0000007D6DE6BC123DF2BF53A72ADD17BFBBCA99BBCAADBB2D1D6B001832364D
- C4C6470EEF3E7D26F4BF59250BF40800000000D097C64D9AAC060C1AA423FFAB
- 3CB8B3DAE93AE4C4BA19F638E9925D00E8EAC39AD7CD41B66EDEF8E2C9D34D47
- EB63B33E77D6A8D16AC8F0E13A0200000000F4959941BAFDDFC979376F5E7ED2
- 19B6E5C2326FF5F174F57AB724AB00E0FE50EE0372B797173D68696969AE6A3E
- E88C7D4FD60198CD5D0000000000D0E782F4FC7FD3A9A68392FB3AC38E39F1CB
- B13461E66CEEB84752B106809BF9F0E6753B8ECD9D387EE890F441C063000000
- 0000D0B7E4E2EC8C79F375E47F278F1D3617BD3BE4C3562FECB1E135D723A95C
- 03C01C9057B3B51EABDC7F408F7D6FD67C0A0000000000D097C64F9EA2FA0F18
- A823FFAB3CBA570A001D72E14E5A4AF4A60010EF43D9F3EEF798587A738B43CB
- 81FD5B035300903500468C19AB230000000040BA05E9F97F7170FFD6FD4ED796
- 033BCDCE8DE389F75A675FD3A964DC01E0F5CDDD7312DB4D0EB8CDB64D2B03B1
- 0680C13A0000000000D07782F668F6F6CDABDC39AF2902D8CDE68E85D75CB7A4
- FB110061FAB6EAC7DAE54F4835243058070000000000FA4646463F3563EE3C1D
- 05C3DAE54FCA5DEF6D39B0CC39EC1CD9DD5222590500F301BD3EB03D27076AC7
- B15659B9AFAEB6F6F471671C08B3E697E81100000000209D269E7DB62A28ECAF
- 23FFABADA93A2E39AF33EC900B3BCD9D230B3BB6E77A2D5D770018EEB9B6F8F8
- C98381D9096060D160356ED2641D0100000000D265E6BC603DFF7FEA786C0780
- B8B9702C3AC39EB3E79326D90580781FD88ECDD8BEFDA1B5EAE56D110281C700
- 0000000020FD6697062B173BFE7201A05D0EAC9B708F0D7B3E2952790780B00F
- C26EEE836E3D726077607602108BCFBB408F0000000000E9205BFF05AD0070F8
- D02EF71D001DF261574B999E1600BC3E94D7873573A6C5AB74B4ECDBB3295005
- 80E973E6AA612346EA0800000000906A4B5F7191CACACAD65130ECDFBDD16C01
- E8990B5B632FF15E8BF7FE4EF5E60E00FB83B8BF7967AF99036C57F1D8B8EE85
- 40150064E5C9F32EBD4C470000000080543BEF95C1CBC136543C2FB96E5BEEEB
- 343B27B6C99CE9CDD8E8ECB584A5E311007713662C071C6B6B573E73A4B9EA48
- A3330E8CF32F7D951E010000000052E9AC51A3D5D499B375140CCD55871B2B56
- 3F5BE90CDB725FA779E5C6764B99541400BC3EBCF4EE03B60FBCB5A5A5B1A5BA
- A9F9B0330E8C1163C6AAB303F60B08000000004174DEA5AF521919193A0A86AA
- E6D64392EB3AC3B6DCD769764E6C9AC4C27E9F994B9A641600DC1F2EDE0797B1
- 7D02DA0EFAE4A9A381DA09409CF7AACBF50800000000902AE75EFC4A3D0A8E93
- 2762396E5BCEEB343B0F96DE30F3A6D9DC718FA5F20E00C38CBD0ED88E5B0F1F
- DCBDD7E90325888B500000000040904C9D392B760776D0541EDAB5CFE9DA725E
- A7C5CB8B85C486793DA9925D00F0FA80E6839BE675C0CDD2CA573EB3C1E90345
- B6A158B0EC1C1D0100000000922DA80BB097AFF8FB7AA78BE5BB4E73E7C1766C
- 9A9BD75C8F25A300E0FE40897C68894DE2DF76D07F7BF49EADB24882330E1476
- 030000000080D4C8CCCA524B2FBC5847C121B9ED537FFDE9366718CB779DE6CE
- 816D2636EF15F1DED363C95E03C0FEA072506DC97D02732DA74F1F6BA83C55B5
- D51907CAFC25656AC0C0413A0200000000244BC992A581CCB724B7ADA939D9E0
- 0CDB725EA779E5C2F69CDD843DEEB554AC01E0E6FEE0D2DC27A02DDEB57DDD46
- A70F14590360D94597E80800000000902CE75D12CCEDD777EC2C9747DCE3E6BE
- 3A364D983E65525500B00F449A7D70EE033571EC24AC5CF1843C231138E7B31B
- 0000000000245541617F55BA34986BAEAD79F149C96D6379AED33ACB85BD5E93
- 9674E9B803409803B00FDC6EE63988967F3CFE8BED4D274ED439E3409974F674
- 356ADC781D01000000007A4B765DCBCEC9D15170343A39ED334FDEBBC31976C8
- 79AD66E7C8D2522E150500FBC3BBC7A637CD7DE02DF5F5354D474E1DD9E28C03
- 252323435D72E56B750400000000E8AD4B5E73B51E05CB915387B7486EEB0C3B
- E4BC7A6C9AB07BAF71D224BB00607F40F381ED660ED83E707B1C8B776C5F13B8
- 7500C4C557BE86C500010000002009E62D2E5313A74ED351B0ECDCB6C63CFFEF
- CE85EDB13DE76E863DEEB5DE160012F980F67BCC6B662CB741482F072DE3D86D
- 11CBFFF34820D701C8CDCB5757BCFE0D3A0200000000F4D4356F7EAB1E05CF7F
- FFFDB02900B4E5B94EB3736069C28CED39C38EE3BDA75B52B90680FDE1A43707
- 2CBD69129B93615AF3B34FFD7A57C3B1D3D5CE38705E75CDB5B1852A00000000
- 003D337DCEBC580B22C965FFF5B7DFEE72861D725DA779E5C4A617D29B71D2A5
- AA0010EF039B8331CD1CA87D625A5B5A1A5B0E9DDCB3D919078E24FF52040000
- 000000F44C90AFFE1F3AB963B3E4B4CED0E4BCD2ECE4DFE4C3A6798937DF2BC9
- 2C00B83FA089CD41B99BBB1A629ACC376FDFB23290EB00882BAE7D83CACDCDD3
- 11000000002051F2DCFFDC454B74143CDBB6AE96DBFF6379ADD3E2E5BC5E39B2
- 34617AC31DF7582AEE00707F70779303B6637352DA9DA0175F783090EB008801
- 83060576B54A00000000E84B57BFF9ADB15DD682EA3FCFC572593BD9B7735E3B
- 1796393B364DD8E3A449E51A00C23E08BB9993610ED88E6327E8DFCFFE795F5D
- 5DF529671C48575E7F83CACECED61100000000A02BA3C68D578BCF3B5F47C123
- 39EC8BFF7C70BF33B4137FD3BC7261AF9632E95A04D0B00F4A9A7DF0AED6D2BC
- 7FDFB64DCE3890060F19AA2EBCE22A1D0100000000BA72F59B6E541919A9BE4E
- 9D3A07F76DDBE8E4B24DCED0E4B6EE228034775E6CF39A4B9A549D59FB039B03
- B09BD70970CF35EFD8B83CB08F0188D7BCF1CD2A33335347000000008078868D
- 18A9CEB9E8521D05D3968D2F796DFF272D5E1EEC6E863D4E9A641500BAFAC0F6
- EBA609333627462A256D27EAC1DF7F734573F3111907D2D0B346A8F32EBD4C47
- 000000008078621750B3B274143C92BB3EF0FB6F2C778676926F725DE9BD7261
- BB19EEB1FBF51E4BC7BD15F6079626076F7AFB84D84DE69AF7EE5E7F6AFFEECA
- B5CE38B05E1BF05B580000000020D58A8A87A8575CF66A1D05D3FEDD07D71ED8
- BDB1CA19C6F259A779E5B9666CE7C6764BA95467A6F601D807E43E50FB64D827
- A5F9BFCF3FF46FA70FAC9163C6AAA5175EA4230000000080DB95D7BF5165E7E4
- E828985E7CEE91179CAE5D3EEBEADD39B030B1618F932E150500F7073607649A
- 3970FBC4D84DE6DBDA9F7FF3D5350DC74E573BE3C07AC33BFF971D0100000000
- C0C3F091A3D42B5F7BAD8E824972D6077E7BA7DCBDDE2E9F755ABC9CD7CE8DED
- 6673C7BD96CA3B00EC033063773307EF3E416DE39A9A930DDBF6AF91E72802EB
- AC51A3D5D56F7E9B8E0000000000C63B6EFE88CAC9CDD551306DDDBBE625C95D
- 9D61BB7CD61ADB735EB9B134618F93AEAF1E4E9703F23A707342DA9DA8679FBC
- 2FD08F010859D0420A01000000008033169D7BBE2A59B25447C1F5EC53BF949C
- B52D87D5CDE4B5EEBCD7E4C269978E0280394861927B69C28EED13D4AE3DF1F0
- 4FB71D3D75ECB0330E2C799EE59D377F444700000000106D72D5FF6DEFFF908E
- 82EB64E5B1434F3E72F77667D82197759A9DEB9A26DCB19D37A74C5F2C02689A
- 1CA83D36CD7DC29CD6D2B4B5E2B9179D71A0CD5B5CA6965C70A18E0000000020
- BA5EF796B7C7B64E0FBA4D9B24576DB1B7B49766725B3BD7F5CA854D33EC71D2
- 25BB00D0D901B80F4462FB64B89B7DF29A1EFDF3F76445C5C07BDBFB6E56B979
- 793A0200000080E891DDD25E7DFD0D3A0AB687FF7897DCFEEF550088D7BC7263
- BB1732362D6952BD08A0617F78FBA0ED589A7DC2DAB5B52B9E3E7CE4D0CE2DCE
- 38D08A870D57D7BDFD261D0100000040F4BCF3431F0DC54E69870FEEDC52B1FA
- 19795CDD338FD5CDCE79E3E5C5D20C7B9C54E95E03C08CA5D9072CBD7D62DC27
- 2CD6562D7FEA3F4E1F7897BFEE7A3566C2441D010000004074945D70919AB360
- 918E826DCDF2A7BD16FF33CDCE6FA577E7C1A6097B9C32E9280074460ED03E78
- 7372CC0932E358FBF3FD77BED45C75A4D119075A6656967AD72DB7EA08000000
- 00A2411E877EEBFB3EA8A36093DCF40FBFBA43B6AC6F97B73ACD9DD7DAF9AEF4
- 7D269D050073D0420EDC3E11E6C498664E96DD9A0E1DD8767AF791836B9D71E0
- 4D9F334F5DF0AACB750400000000E1F7FAB7DD147B2C3A0CF61CD9BFE6C8A19D
- 55CED0FDFCBF69EE1CD7E4BF664E98B9B4485701C03E207380D2CC819BB17DA2
- CC584E66DB097DF15F0F84623140F1E677BF5F15F6EFAF230000000008AF31E3
- 27A82BAEBD5E47C1F79F671F30B7FF9B9CD52E04B8F35B77FE6B9A618F532655
- 0580CE0EC8EE4D3327C234F70993163BA17FFECD9DE5B57535526509BC814583
- D51BDFF51E1D010000004078BDF3431F8B3D0E1D06B575D5557FFEDDD7CB9DA1
- 9DB39A66E7B476B37360E1EE85FB3D4995AE45000DFB604C3327C2EEA5D927B0
- AD92D2585FD3B0A9FC85D0DC0570C955AF55F3162DD1110000000084CFABAF7B
- A39A39BF4447C1B7B9E2F9E7253775861D7256DD4C5EEB95F3BA9B618F53A2AF
- D6003063D3CCC9B14F947DF24C8B9DD45FFDF4134F856131409191D14FBDFF53
- 9F5383870CD53300000000101E53A6CF5437FC4F78EE7C6EAE3ADC78EF8F3EF9
- 940C9DE64EFC4DF3CA71DD79B0B0C72997CE0280173950FB4498136437F7096D
- DAB665E5B14D3B363CEF8C4361605191FAD0E76E8F150300000000202C0A0AFB
- AB9B3F7BBBCACA0AFE9EFFC6866D9B9EDBB16DD57167687255776F3777BE2B7D
- 9FE98B8CD31CBC7D02A4B7C7EE1366C7D29AEEFFE9671F6F69A9947128C8AE00
- 6F78E7FFE8080000000082EF3D1FBF4D0D1F395247C12739E8FDF77CEA096728
- C9BE69B11CD5695EB9AC57BE2BBD696995EE02807D90766F9A3949763327AFDD
- 095E5FF1CF235B376D7BD11987C66BDFF4163577E1621D010000004070BDEAEA
- 6BD5E2F32ED051386CD9B8ED3F1B2B9E3FE20CDD79AA89BDF2593BE715766FC6
- 6991EA02803920F741D9F3A6C9C931BD7DB2CC4975F74DBFBDF7F6C78E1D3B2A
- 5F130AF208C0076E633D0000000000C13671EA34F596F77E5047E120B9E7EF7E
- F1F9C79DA13BE977373BA7B5735D77B3C59B4FAA74DE01600EC43E283336CD3E
- 41EE93D82EF997B6EAC5470F1C3BBA6785330E0DD91AF0E6CF7E81F500000000
- 0004527E41416C8DB3ECECF03CF72F8E1DDDBD62D54B4F1C70866D39A9D3DC79
- AB699D25FFC23D4E8BBECC32BD0E5E9A9C20BB9913689FE4B613FDE7FBBFF4A8
- D387CA8CB9F3D5F5EF78978E000000002038FEF7A39F5423468FD15178FCF1BE
- 3B24F7EC343F759A3B9FB5735D618FD3AEAF0A00F6019B13E03E51E604BA9B39
- B9B113FDEF67FFB467E7CEF56B9C71A85CFDE61BD59C058B740400000000FE77
- C95557ABA5175EACA3F0D8B963DD9A17FFF5A73DCED04EF8EDC4DFDDDCF9AD3B
- F1B7C769F3FFDBBB13F0AACA6BFFE39BCC098419640623F3A40C2222501410B5
- 5E6BADF7B6B5D3FDDBDE6B6B27B57A9D6BD5D656ADD50E5AB1B576D2D67AB575
- A6A87544641090799E0992908129849090FF5EC7B37217AF7B9F9C0081337C3F
- CFB39EF77DD7DE09E4E4E0E3EFDDFB9C73BC3700827E60FB40E85C1F20F7413C
- 2CFCFB7550C6E7FF7AEFCBFE9852E42500DFBEF936AF6D870ED10E0000000024
- AE5E457DBD2F5FF99DE82AB53CFFE44F25733664D068D98C6ACB665A29E1CE95
- 9D37BB13710780FBC36AE903A43B245AEE83A90F76C303FEAF7FFE7EFDF66D6B
- 57F8F39412793F809B793F0000000000892D372FCFBBEAB63BBD9CDCDC682775
- 6CD9BA6685644E7F6A43BFCDA4B6DC3C6BB3AE96B2F3E322333A1E2F2D9C51D8
- 9E2D21C9574AD63AD792BF7B43BFBEBEC5EE51679C7FA63F4F299DBA74F50ADB
- B4F116CD991DED0000000040E2900B9657FFE087DE80A1C3A29DD4F2B7C76EFF
- E39A95733FF4A707FCAAF14BEE02D0D1966E02C8C640D04680703701C471DB08
- 38D11B0032BA25649460AFA396ACE5EF6C7BB2CE5CB3724EE5C4295F195CD8BA
- 5D7B7F9D52FA0E1CECD5D5D5792B17A7DC5B1D000000004872575C7B8337EE9C
- 29D1556AD9B17DE3DAFB7F74D973FE342CF8CBDABD1B4002BF8E1AF835E41FB7
- B01F2411EE0010B2B6C76C69F0B7A15FEBB0CD80FCFC967B878F9A7C863F4F39
- 434E1BE95594957A1BD6AC8E7600000000E0C4FADC57AFF0CEFFCCBF4757A9E7
- EF7FBDFBF1154BDED9E64F25E8DB4D00BB1110F47200F7EABF94CE4F1809CE89
- C2EE88D807CBEEA0D8D207B9A19E7EE2274BCBCBB66FF6E729A7458B16DE57AF
- BACE3B7DFCC46807000000004E9CF33E7DA9F7A9CBBE145DA59EF21D5B363DF3
- C43D4BFDA966CEB0B02F65B3AB96CDB809E178DF0160C9557DA5733BDAD2ABFC
- EEDA96DFAFCFC8CCC8AC3C75F4D4B1FE3AE564646478A3C74DF0562C5EE4ED2C
- D911ED02000000C0F175E6A473BC2BAEBB21A5DFB0FCA9C7EFFAC3CAA591ABFF
- F2DA7FBDDA6FE7BA2110B4196037016C29777D5C9CA80D0009F17614B6A7F368
- B03FAC9CD01FF91974CC58B97456F9D8F19FEAD1B67DD7AEFE3AE564666579A7
- 4FF844E44D0177555444BB00000000707C0C1931CABBFAF6BBBCCCCCAC6827F5
- 6C58B7E8FD9FDFF5E597FCA9DEEAAFC15FD67A37806E00D8BB0224F4CBE8867E
- 1BF68F7BF05789B45D631F20DD29B13B275AF260DA07581FF4865FC0AFEFFFE6
- 537B6BCBE41794925AB66AE5DD78F7CF229F100000000000C74B9F7EFDBD6BEF
- FCB1979D9D1DEDA49EBD07CB0E3CFCD3AF3FE54F0FCB99D1D1CDA34199D5665A
- AD8490281B00F641B1A37D10E5C1B5A50FBA2DE91F5CBD7C76E982D767BEE8CF
- 5356BB0E1DBD9BEEB93FF2118100000000D0DC3A77EDE6DDF893FBBCFC8296D1
- 4E6A5AF0C63F5F5CBD72CE4E7FAAC13FA8DC7C6AB36B50B6D5F90975A23600F4
- 01701F04DBD7074EE75AF641D6075E7F090DBFA05FDEF7D5572B2A8AB7FBF394
- D5B5474FEF06FF1F606E5E5EB40300000000C75EEBB6ED221720DBA4DEA7AE1F
- A672E7F6E25FDEF7B557FDA99B31ED6680CDA436AB066559292BAC7F5C9CC837
- 0114F2DA7D3B0ADBD3B9BEDE5FCA9D6BC95ADF0F20E3505D6D8B9A03074A468D
- BDE04C7F9DB2DA77ECE4F51D38D87BF7F557BDFA43F23C030000008063272F3F
- DFBBE5BE9F7B3DFB14453BA9EB0F8FDCF09BD5CB66CB8564FB517FF6F5FF32EA
- 6680BD282D614C4637E0BBF3132AD136007414B667CB6E00E83AA85AAC5D396F
- D788332EE8DCB153F71EFE3A659DD4ADBBD7A3571F6FDEACB7D8040000000070
- CC48F8BFEE47F778FD870C8B7652D7AA1573E73CFCB32BE4EABF0DFC76234046
- BD0B209E3B014E78E07725E21D00C2F6DDB9AD48D08F8E0DC1DFAED7AE98B779
- F4799F1F5F909597BAEF52E1EBD1E764AFDFA021DEDCB7DFF4EA6AE5B9080000
- 0000474EDE6FEC967B7FEE0D189AFAE17FE7815DFBEFBBF9D30FEDAA28D9EB2F
- 8382BFBDF21FB601E006FF84DB0438D11B009604773B0ADBD3126ED0D7B9DBCB
- ACACD851DBABEB29B545FD460EF1D7294DEE04183E7A8C37EF9D37BD9A0329FB
- 2108000000009A59C793BA78B7DDFFA0D7ABE8946827B5CD9AF1F833AFBEF4DB
- 15FE54C2BE7B074058F897D15EF98F75F53F2136031265034083BD8EC2F6DCB9
- 067C9DDBF0FFB1DEC2B9338B275D70F9F096058529FF96F9F29E00A3CF9AE0BD
- 3F7B9657B54F36AF00000000207E3D4F2EF2C3FFAFD2E663C7CB776EDE7CFB75
- E73F71E8509D04FF78C3BFBDF21F14FCDD794248D40D001D85DB93602F642DA5
- 415FE70DC15FCBFF45B6D8B7A77C7BFF219F18979F9F2FC7529ADCAA73E6D993
- BD25EFCFF376555444BB0000000010DB80A1C3BD9BEF7D20F2AEFFE9A0A2A2A2
- FECF8F5CFFC8FA350B4AFCA5867E37FCDBB29B0012FC6594801FEBEA7FC29080
- 9C88EC83A60FA4EEACD85D1699DB9D18AD8FFDA25E9FF1FB75DBB72E9FE5CFD3
- 42BB0E1DBDDB1E78C81B386C78B40300000000E1469E799677D3BDF77B2D0B0B
- A39DD4B77DCB9259AFCFFCE33A7FFAB10CE9979B33257FBA7954E79A5985CDB3
- 092591DE0340D92BF47A655FE8DC96B06BF7EABF9D672C5FF2F6A6F1D32E1F97
- 979393E3AF539EFC98E3CE99EA6DDEB0CE7F626F8E7601000000E0709F9876BE
- F7ED9B6EF3B2D3232A4554EEDBB7F7AE9B3EF9F0DEDDE5FBFCA57BE5DFBD0BC0
- 6E0404857F0DFC6EF877D72754A26D004860B7A3253DF7B88C1AF46DD9F0AF63
- 86FF8BADEDDCA95B75BF8163D2E6B27866569637F613E7781565A5DEC635ABA3
- 5D00000000F8C8459FFB82F7FFBE738D97919988D7879BCF6B2F4E7FF2AD571E
- 5FE54F83C2BF067F1BFEF50E80A0F06F4BD9794248960D00DB8F5591A0EFAC6D
- 3F63C19C19C513CEFE6C51EBB61D3BF9EBB4909191E18D3A73BC77E8509DB772
- F107D12E0000008074F7C5AF7FD3FBCC972FF75AB490D8943EB66D5AB9FC8737
- 5EF4BF7E46B7E1DF967BD5DF6E0068F86FECEA7FC249D60D0061E736F46BB91B
- 01D1AACF58BCE88DD5E3277F694C6E6E6E9EDF4B0BF20F7AE888515EABC2D6DE
- 07F3E644BB00000000D291DC29FCF5EB6EF2CEFDD425D14EFAD85FB5A7F2B6FF
- 99F6CBDD951FFBCC7F2D09FBEE1D0012FC650C0AFFB6125A22DFE321C1DDD2B5
- 867AA1F3B0D2E0AFF3C8B8BBB2F4E081FD95DB469E31764C8B1605D24B1B7D07
- 0DF1060D3F35B20970A07A7FB40B000000205DC867FCDF78F77DDEC8B1E3A29D
- F4515F5F76E8D1876E7C78E19C97B7F84B09FBF2B17F1AFC35F0DB79D8D57F37
- F4BBE1DF1E4B1889BA01A0A1DC8673B76747771E54BA011099AF5D39BFA277D1
- 988C9EBD07F7F7D769A573D76EDE84A9D3BC8D6BD77825DB8BA35D00000000A9
- 6EF45913BC1B7FF233AF4BF71ED14E7A99FDE68B2FFC71FAF5EFFA5337FCDB72
- C3BF5EF9D70D0009F6417700283B4F28C9B40120642D0FA6EDDB7375AE57FE6D
- E8973AAC3FFBAD67364E38E7F3A714B6E9D0D15FA795BCFC026FFC94695E6666
- A6B7FC83457E27619FA3000000008E92FC7FFF97AEFCB6F7E52BBFEBE5E4E646
- BBE965DB96D52BBF7FCDE427EAEB0FB9C15FD76EE897B55EF9B757FFED268048
- 9A30958C1B00F6987B9E047B1DEDB186D06F47FF17EF2D59F8FAEA4913BF3426
- 3B3FFDFE15C8FB020C3A75845FA7798BE7CDF5AAF7F3920000000020D5446EF9
- FFC9CFBC33269E9D766FF6A7F697EFD9FD831BA7FD7257C5877BFCA50DFD1AFC
- A582360124E4EBA8C15F4BD879C24BE4F7005061CF50EDEBA8E1DFF663556423
- 607765496DD581BDC527F71F33263F3FBDDE0F4075EED235F292804DEBD6F292
- 000000002085A4FB2DFFA2BCBCACFEC93FDE3AFDFD392FE8EBFEDD0D002DDD08
- D0F06FAFFCCB2841DFDD0470C37F502F6124FA068006723798CB5A1ED4A0C02E
- 3DEDEBD57EA9A079645CBB6A6EE580A1635BF4EC3D28EDDE0F40E5E5E77BE3A7
- 9C1B7937D0E58B78490000000090CCB8E5FFFF2C9CF3D24B7F987E9DBCEE5F43
- BF8C7AC5DF067F0DFF326AF8B79B001AFE65146ED84FF810952C1B0042E74163
- 5089A0BED4611B0032BEF7E6D31B274EFE7CDFC2D61D3AF8EBB4147949C0F0D3
- BCC1A78DF03E983F8797040000000049885BFEFFCFD64D6B567DFF7BE73C5E5F
- 7F48C3BE84FFC63600F4967F1BFC35FC6BC877C37EC2877F914C1B0022E8D92B
- 3DEDDBB9D075A325EF07B074D19B6B264DF8D2E959F93969BD45D6A94B576FE2
- B9E7F12901000000409219356E7CE423FED2F9967F555DBE77F71D379FF76065
- C5F6DDFE52C3BF86FE58E15F2A2CFCBB25744C78C9F01E004242BA1D55585F44
- 82FD47D3862BFD42FB5A0D7701ECAADC5173A0AE6A7B9FBEA7A7EDFB01A8DCBC
- 7C6FC2D473BDC2366DBD554B9778B507E5DF030000008044D4AAB0B5F79FDFBE
- DAFBC215577AB9B979D16EFA8ABCEEFFF1DB7E336FF6739BFCA50DFFEE26800D
- FE32B7B7FD6B055DFD0F0AFD09BF11902A1B0042E6EE79DA0B5B6BF86FA8D52B
- E6540C1E3A2EB347EF81FDFC755A93DB85FA0E1AEC4D9A7681575951E66D5EBF
- 2E7A0400000040A238FB820BBDEB7E78B73770D8F0B4BFE55F2D9E3F73C6630F
- 5DF38E3F0D0AFE32D7ABFE5AF6CABF867E1BFCDDBB009252B23D3B34A82B5D4B
- 6998974D0D99CB9865C6EC68E54447B9CDDF966C93C9B1BCACACDCFC071E5DFC
- DDEEBDFAA7FD2680B56CD102EFD1077EEA156F964D34000000002752AFA2BEDE
- D7AEBED6EB3F6458B403B17DDB9AD5DFF9CF61BFA8AD3D206F6A56ED97847E19
- 25F8DB92E0AF7701E82680847F1D25F4CB186B03C05D27B464B9034069F8D751
- C95A1E74DB77E7616B190F7B89C0A14375DEB2C56FAD1E7FCEA52372725B1644
- FB694F3E2E70F2851779B97979DEEA654BBCBA3AF9B700000000E078924FF0BA
- EC8A2BBD2BAEBBD1EB745297681762EF9ED2B23BAFBFF0A18AB2E2A0D7FDEB5C
- 037F50E8D7E0AF25395346E186FDA409FE2A593700840DF0EEE8CE834A04F565
- 33C0DB55B1E3E0FAD58B569E31F19251D959E9FDA680564646A63770D8A9DE84
- A9D3BCD21D1F723700000000701C9D79F664EF7F7E748F377CF418FFFFCD23D1
- 0551FBABF7EDB9FBD64B7FBE7AC57B3BFCA5BDC2EF96067F2D0DFE36FC6BD8D7
- 90EF86FDA40BFF2299370084BB16DA8B67D4121F5BEFD8BE7E7FE9F68DEB878D
- 9B343A27B3405E4680A88256ADBC71674FF18AFA0FF4562F5FEA55EDDD1B3D02
- 000000E058EBD2A3A7F7DD5BEFF02EFADC17BDFC8296D12ED4C1CACAEA077FF6
- F507E7CD7E6EB3BF9490AF57FBED1D00F6CABFDD04080AFFEE268096D031E924
- DB0680B2A1DD92B5FC326C5FE641E7694FE7B64464BE69C3923D35FBAAB79E3A
- 7AF4A88C8C966CB139BAF6ECE54DB9F0535E8B8C0C6FCDF265DEA143F2EF0400
- 0000C0B1909D93E35DFA95CBBD6FDD749BD7B547CF6817565D5D69DD1F7E77E7
- 23AFBEF4DBD5FE3228F8BB1B004157FF35FC6B49AED47063C3BF95741B01A9B8
- 0110764CB9E7D8126EAFC59A1573CAB3B3DB9575ED39F4D4FCFC7C3D0F519959
- 59DE90112323B72355EC2CF5B6F1B200000000E0A8C8BBF9CBFF5F7FEF8E1F7B
- A3CF9AE06566266B746B5E151515F52F3D33FD8F4F3F7ED7227FD958F0B71B00
- 12FAED0680DD08B0813F2CFC27A5547816C50AE41AE2859D2B7B4CE9797AB53F
- B25EB2F0B51D5D7BF6DDDFB7FFC8C11FB5E12A6CDD26F21FA9B19F38C7ABDAB7
- D7DBB26183DF4D997F2B00000040B393D7F54F9C76BEF79D5BEFF0A6FEDBC55E
- CBC2C2E8110479EB5F8F3FFDD88357CDF2A71AF6650340427ED846807BF5DFBD
- EA2F65E76EA009EA258D64DF00080AF061EC399150FFD1B4611E54A2613EFFDD
- E7B716F51B91D5BDD7C053648D60ADDBB6F3C64C98E48D9F72AE575373C0DBBC
- 61BD57CF4B0300000080505959D9DEE44F5EE47DF7FB777A93CEBBC02B6CD326
- 7A0461E6BCF3EC3F1FF8D11766FA531BF6DDE0EF5EF90FBBEA6FCB867F1BF693
- 36F82B0DB9C9CAFEFDDDB9967EC49F6C76C85C462979533FA96C33E6989277FE
- D7512BCFFF167977FDE2CDCF0D1A367E9CBF461CCA4A4ABCE79F7CDC7BEDC5E7
- BC8335F26F1000000080C8C9CDF5A6FCDBC5DE85FFF179AF7DC74ED12E1AB3F4
- 833767DD7AD5394FFA795D3EDFDFFD8CFFC6360224F4DB8D0009FD324AC07737
- 0054D83CA9D8D09C8CDCBFBF5D6BF817326AE9068096DD00D00ADB0088545656
- 4EFEDDD3E77CB5A8E8B4E1FE1A71DA5551EEBDF8D45FBD99CF3EE355EFDF1FED
- 02000000E927BFA0C09B76F167BC0B2EFD6CE40E5AC46FFDBA458BAFFFFA198F
- D6D6D648A8B0C15FCB6E00D8E02FA15F37006CD9ABFF423701941BF8D90038C1
- DCE0AFA32DBB09603702DCBB007403C0D6C736015A16B66B75CF43F3AFECD6A3
- 88970334D1DE3DBBBD19CF3CE5BDFCF4DFBC7D7C7C20000000D248ABC2D67EE8
- FF0F3FFC5FCAEBFB8F40F1D675EBAEFDFAA807F7EFDBB5CF5F4AC897ABFF1AF8
- ED064058F8775F02A0615F475B424761E74949C372B2737F0E5D6BF8D70ADA04
- 90E06FCB6E00C85C43BFDD0CC89379874EBDDADCFBD07B57B5EBD8B59BBF4613
- EDAFDAE7BDF2ECDFBD575F78D62BD95E1CED02000000A9A74BF71EDEE40B3F15
- B9DD5FAEFEA3E976966DDF76C337C6FEBCAC74F32E7F29015F6FFDD70D003B4A
- D8D75142BF2DF7AA7F3CE15FB8EBA4A3413955E8CF637F2E0DFF5212FA75D40D
- 00BB092073BD0BC0BD13403701744320527DFA8DE874C74F675C5DD8BA737B7F
- 8D23505F5FEFAD5EB6C47B6BE60C6FF6EBAF453E410000000048762D5BB5F2C6
- 9D3DC59B30ED7CAFDFA021918FF6C391D9BBA7B4EC96ABA7DEBF69DD073BFDA5
- 5EE9D7B2C15F4BAFFC4B49E0B7E1DF6E0048A877370094CE6D2FA9A5DA33507F
- 1EF7E792B5966E0248D8B79B00762340C2BF7B3740E826C0B01193BB5DF78327
- BEC526C0D19337097C7FF63B91CD804573667B87F8F4000000002411F9BCFED3
- CE38D39B78EEF9DEC8B1E3BCEC1C890F381A7B769794DFFB83CB7EB564E16B72
- DB70BCE15FC2BEBDFAAFC15FC3BF8C12ECC3C2BFD0B5DB4F5A6E504E151AF62D
- 1BFEB5DC4D00BD0B40C37FD09D00EE0640642D77027CFFCE17AE6C7752B7AEFE
- 1AC7C0EECA0A6FD66BAF44360336AC5915ED0200000089A768C0C048E8972BFE
- ADDBB68D7671B42A766E2FBEE3A64FFE7AE39A85A5FED2067EBB01E0867F2D0D
- FEEE957F0DFF5ABA0960E9B194E286E454A13F97FBF3B91B00B276EF02D0D2BB
- 0024E0BB1B010DC1DFCE3B9DD4A7ED9DF7BCF6DF27F52A2AF2D73886B66C58EF
- BDFDCA0CBFFEE95594C95D3F000000C089251FDB3761EA79DE8473CFF37AF4EE
- 13EDE25829DEBA7EDD0FAE9DFC9BD21D1B2BFDA51BFE75EE067F99EBD57F0DFD
- B624ECBB57FD656D69F067032049D89FCB9DDBD20D81A04D00F7A500419B0076
- 0320D2934F07B8E3A76FFC6751FFE143FD358E317949C0B285EF7B73DE7AC35B
- EA8F1F6EDD123D0200000034BFAE3D7A7A43478CF2C64C9CE40DF1C78C0C8912
- 38D636AE5DB8E4966B26FF61DF9E0A7983301BF475032056F8D70A0AFF1AF835
- FC6BA9B0794A90F09B8ADC9FCBAE656E4BEF02D0B21B00B6DC4D80862BFFEE98
- 9595937FFBBDAF7C76F06913C7FA6B34A3B292126FD9A2F7239B024B16BCEF95
- 9796448F0000000047AF43E7CEDED091A323A17FC86923BDF69D3A478FA0B92C
- 5DFCF6ECDBBF37E5C9DADA9A58EFF2AFA3867F29BDF2EF867FBDEAAF65837FAC
- C0EFAE939E0DC6A9C8FE7CEE5C4B42BF8EF16E0248D077CBB91B2023EF863B9F
- BEF08CF1174FF5D7380EE4D30476146F8B6C06C8DD0132EEAE94BB8500000080
- F8C8EBF7E5CABE047E09FE9DBB76E3DDFB8FA3B9B39E9DF9E35B2E79D1CFE9FA
- F9FE1AF635F0BBD594F02F81DEDD005061F39492EACF64F7E7B36B0DFD423701
- 24F4EB283D09FDEE46806E00046D04389B005ECE37AFFDEDD9A3C65DF2E976ED
- DAB97F173433D910D8BA7183B774C1FCC886C0F2450BBDFD55FBA24701000000
- CF2B68D9CA1B7CDA888FAEF0FBD5A3CFC904FE13A0A2A2A27EFEDB4FFDFDA1FB
- AF78DD5FDA801F16FE25ECEB28A1DF96067F1925CCEB283DA19B00CA0DFC6C00
- 2439FB73BAF363B1092063C34B009C31E7B2AFDE75FA259FFFDA1732333BC9F7
- C109525757E7EDD8B6D52BDEB23952DBFDDAB6795364DCB37B57F42C000000A4
- A2C2D66DBC6EBD7A7BDD7AF6F2BAFA25A3D449DD7B443EBA0F274E5D5D69DDD3
- 7F7DE4CF7FF9ED2DF3FDA5067C0DFD76B4A15FC76319FE5336F82B1B865399FB
- 73DAB5CC9BBA0920815F460DFFBA1110B80120F30B3F73D5E0CF5E71CBE5ADB2
- 3B481F09463600EC86806E12C886816C1C00000020F149909740AFE1DE067ED9
- 0040E2D97BB0ECC093D37FF8BB179E7E60B9BFB457FADD0D000DFC1AFE25ECDB
- 0D00F99F76198F34FC0B3600528C1BFC75D4124DBD13C0DD00704B027F643360
- C2D997155DFEBD47FEBB6DCB96ADFC3592405D6DAD57F2E176AFA4789B57B56F
- 9FB7BFAACAABDE5F1519EDBCBACA3FE6CFABA37D9D57EFDF1FFD4E0000008847
- 5E7EBE975750E0E5E7FBE58F3ACF2B68F9D13ADAB7F382962DBDCEDDBA7B9DBB
- 74F532B3E47FD3910C2AF7EDDBFBE87DFF35FD9DD7FFB2C15F6AD8B781DF2DDD
- 00B0C13FDEF02F732DA1A3B0F394A6A1375DB83FAFAE65D41247BA09A01B01F6
- EABFADDCE1A3A776BBF6D63F7FA3B075E7F6FE1A29AEBEFE9077B046FEFB0400
- 0080C664E7647B2D5AC8FF7623D5EDD95D52FED33BBFF8EBC5F35F29F69761A1
- 5FFB36F81FEBF02FDC75CAD2C09B6EECCFAD7319B5C4D16E0234847E679DD3A7
- EF691DAFBBEDE9AF74EB51748ABF0600000080B451BC75FDBA7B6FBBE4F71BD7
- 7F50E62FC342BF56ACF0AF1B005CF98F9304D974A4215F05ADE5C9106B0C12F4
- 0492DE615559FEE18199CF3FBCA077D1B0CC96852715E5E7E7877D3F00000000
- 4809F24EFF4B16CC7CE5D6AB273D515E56BCDB6FE92DFFB624E4BB1B0012F48F
- 75F84F4BE9BA01A034780705701BF6834615D453D20BEC1F3A5477E89DD79F5C
- 7BA8AE66F3C943CE1A9897932377070000000040CAA9DCB777EFDFFF74FB638F
- FEEAAA77FC2C249FF12F61DF067DB7742340C3BF847B1D8F24FC5B41BDB4C006
- C0E1A3CB0DFD768C459F5032DAAFFB98D5CBDF2BFB60EECB0B878F9CD2ABB075
- 7BDE1700000000404AD9BE75D5DABB6EFCE4AFE7BEF38F4DFED20DFA5A12EE75
- 5340E65AF68ABF06FFA309FF692DDD3700ACB0501F14FE839E487ACCB2E7057D
- 4D4465F987D5339F9FBEB0679F212D5A16762ECACF2F08FBBB00000000405228
- 2F2FAB5F34EFE557BE7FCD94BF94EFDC26B7FCBBA13FA834F4BBA3067F2D09FB
- 92B1E20DFF41BDB4C306C047347087056F0DFD760C629F503A0FEAB9E42501F5
- B3DEF8DBFADADAFD9B060F9F30203B3B47DE3C100000000092CEFEFD7BF73CF9
- BB5B1FFBFDC3D7BEEB679D786EF79792B90DFD5AC722FCC3C706C0C7C5BB0910
- 4BD071E9B97DED35D49A1573CBE7CD7E71D1F01193BBB76ED3A183DF03000000
- 80A4B16DF3EA35B75F77EEC3F3E7BCB0D95FEA9BFBE92640D866806E02D80D00
- 37F84B49D8D7920C154FF8777B698B0D80C369F88F671340D92753D0932D6CB4
- E7DAB9B7AB6247F58CE71E5ED0A3F7A016AD5A773985970400000000487472CB
- FFFBB39FFFE76DDF9BF2D7CA8A0FF7F8ADA0A02FA59B004157FD6594A06F3700
- 24E4EB5CB25353C23F0C3600C205856E7902B99B00BA0E628FC9E89608ECD7D7
- 1FAA7FF7CDA7D65757EFDD3074C0C401D9F9B9BC24000000004042DA5FBE67F7
- 5FFE78F3A37F7AE4FAF7FC2C6343BE5EFD8FE7CABF867E1BFEA5740340B2921B
- FEED2680D590ADF07FD8000866C3BDA581DE0DFDB62FF4983D27682EA37BAEF6
- 22B56ED5BC8A39739F5D78EAF029DD5BB7EBC84B02000000002494AD9B56ADFA
- C14D53A72F98F3D2167F29A13E28F0EBD57E9D6BE8D75183BF0DFF12EEDDF02F
- A5D92956F8470036001A176B1340B8C72D394F9F7C766C6C2E745DBFBBB2F4C0
- 8C171E5ED8AA4D873D3DFA0C3A393B2B373B7206000000009C2055D57BAA66BE
- F0DB7FFCF8E68B9ED955B1436EF90FBACA1FD4D30D000DFFB6DCF06F43BFCD4C
- B1C2BFDB4354ACF08AD8215F7A191F4D1BE63ADA924D165B594E4998D7CA696C
- DDAD47FF76DFBAF6D10B079D3A7E8CBF0600000080E3AAA2A2A2BE78EBB2B90F
- DDF3B5178AB7AEAAF45B6EA86F6C1D16FA6D69E8774761E796F6828EC1C71D00
- 4D17B41960C9934DCE719F74EE933168D412416B6FCFEEB2EAD7663CB67CC78E
- CD6BFB0F3CBD477E416161E4280000000034B3F29DC5C57FFACDF57FF8DDAFBE
- FB969F4DF6FA2DBDAA2FE55EEDB76B1BFEED26800DFC76AE6573912D15364780
- C6C22C3EE23E4E762DF3A0D23B02649345EF04B07704E81D003297ABFB7A3780
- BD2B20EC8E003927272B2B27F78AAB1F9A3076CAC5E7B5CAE9C09B0402000000
- 6816072B2BABDF98F5D48C471EF8D63BB5B5351AEC35D44BC95AC37D58E09751
- 027E58F8D751827C53C3BF70D770484045FCECE3E5CEB584867F291BFEB57413
- C06E046869C00F0AFE81D5FB9453DB5F79EDF48BFA0F3C6384BF060000008063
- 66F5B2390B1FBAEFBF9EDBB46149B9BFD460AFE56E04D8B2E1DF96067F0DFD5A
- BAD6A02F73A16B1BF0C3E688410228E2A7015FB96B213D7D02061DB7F43C1963
- CD63D6AE8A1DD5AFBEF8DBA5BB77EDDCD467C0E85E05F92D5BFA7D0000000038
- 62651525257F9AFE3F7F7AF8FE2BFEB5ABB224E873FDE54E0009F86E3F6C1340
- 02BE8C1AF6DD0D0029C9383A0A9B7D949DA3091A0BA808661F37F73194B52DBD
- 1BC08EF68E007B2740BC770484564E5E41DE37AE993E69FCD8A953B30A4F921E
- 00000000C4ADB6B6A4E6ED375E79E5E1FBFEFB8D9AEAAA6A69F965437D58D9B0
- 6F4B83BF1BFA752E81DE1D6D5976ED1E43232490A2E9DCC72D681D54BA096037
- 00EC268056D006809DCB4B02741D58FD078FED78C5771FBCB8A8FFC8A1FE1A00
- 0000001AB57EF582A5D37FFECD7FAC5EFE5EA9BFB4A15EAEECEB5CFBB667475B
- 1AFADDF02F256B09F141A15FCB6A6C8D4648D8C4919330AFECDC254FCC58C785
- 7DF2EADC8E41FF28C2FEA11C2A2BDDBA7FE60B8F2C3A50BD7F6BEF9E43BAE6B7
- E2D3020000000004ABD851BCFD6F7FFEE193BFF8C95766F85962B7DFD25BF965
- 746FF50F9ACBA81514FE35F0CB68AB21C3F8256CAEB1ECDA3D863835164A119B
- FBF885ADE52ABF90B5DE0560472DD990D1D1BD1340D772855FE67AB5DFDE0920
- 73F7EE007F9E9173C965D70F9D76D115533A9FD4BBA7DF0300000000AFB478D3
- E6192F4E7FED9927EE5EEA677009F212DC6D900FEAE95C02BDF6B4A4A76358F0
- 9700EF8E42E6C20DF88DAD112737B0E2C8D8C7D17D4C752DA35BF16E02D8B92D
- 0DFD766E82BF3B66E49CFFE92B079C7FF177A6F4ECD5AFC8EF010000004843C5
- 5BD7AE7BE1E95FBCFAF23F1E5CEDE76E1BF2DDD1EDB9732D37F8C713FEDD123A
- 2ABB768FA189247CE2E8B98F63D0E32A3D2DA1E15F4AE7BA09A01B003A066D00
- C85A03BE960DFC4EF83FFCF8E4F32E2FBAE8B3D74CE9D567C8007F0D00000020
- 0D6C5CB76CE5B3FF7BDFAB6FCC786CBDBF94202F013D28DCCB68E77A5CD7F275
- B6A7A15F03BF8E61C15FE642D7522EB717740E9A40C3288E2DFBB8BA8FB1AC6D
- 49C81732EA5A4B83BF9D4B80B773B76CE0B7EBC00D817193FEBDE7C597DD38B9
- 63C73E43DBB56B277F3E000000801452515151BF73E7C6A5FF78E2C7AFBDFBC6
- 535BFC960DF46EC80F0AFB76ADA561DFCE25D4DBB99604770DFCBAB665D9B57B
- 0C4789C0D73CDCC735681D56762340C3BF96067F7703C0CE6D05857EF758A446
- 9C7E7EB7CF7EE5FB93FB0FEE776A8B161DE4CF0200000090C4EAEBCB0EAD5AB1
- 66D1DF7E7FC7BF16CE7BB9D86FD9001F14ECC33601B434F0EBDC960DFCBA9600
- 1F14F86D598DAD71942468A2F9D8C7D77DAC65AD2564D4E02DA3AC25D86B5FE6
- EE28E15D463B6F08F5A624ECCBB1A08D80C38E0F1A36B1F317BE7AC7D903870E
- 1E9D99D9497A0000000092485D5D69DDCAA5CBE73FFEE8F75F5FB1E4AD12BF25
- 815E427958B06FECB81CD3D1CE6DD8D75142BBCC6594B5D0BE9051CBB26BF718
- 8E110D9F681EEEE31BF4784B4F4B68F89792B9AE752E25C13C56D970AF6B0DFF
- B20EDB0868A853FA8D68FFC5FFFAC9A41EC3CF18DD31B74DBEDF0300000090C0
- 761ED8B57FEBE239F3FFFC9B1BDE58B76661B9DFB2213EA834F8EB5C465D6BC9
- 3A5649B8D792E06EE7BA16BA9672B9BDA073700C68E844F3B28F73D0632E3D2D
- 21A3067F2DBB01A025615E47B724C8EB1854722C6853E0B0AF292868937BE1A5
- 570D1D3BFE9251BD4FE9362023A3A31C0700000090000E1DDA59B77943F1CAD9
- 6F3DB3E085FF7D606955D52EF9CC7E37C0CBE8867D9D07951E93D12D09F43ABA
- 6543BEAE85ED2B3B57413D1C431A38D1BCDCC739E871D79E8C4125415F479D4B
- 18D7B5CC75AD7337D0DB79AC9ED6615FDBAD47FFD617FDC7F7468C18336D64E7
- 937AF7F47B000000004E80921D9BB62C9C3363C1734FFD6C41F1D6D57BFC9684
- 7237C00755D0B1A0AF95514A82BC9DEB5AC2BAAE752E6350091D859D5B617D1C
- 23122271FCD9C7DDFD1DC85A4BC828A15E68F0B7A39684753B77CB067A1D1BC2
- BD33BA7DBB8ED469A3CEED72DE45DF183564C4D891AD0ABBB4F57B000000009A
- D1DE3D1F562E5BF8DE8219CFFDFAFD45EFCFFCD06F693097D2006F43BCBB6EAC
- 2FA35B36F4EB5C4B03BECC85F6841ED3B5B26BF7189A99864C1C5FEEE31EF47B
- 909E969060AF6B990BED4928D7BECCED26809DDB101F34D7A01FB676CFCFCCC8
- C8CA9E72FEE5A77C62EA1746F51A346458AB9C0EB97E1F000000C031B0B7A6EC
- C0E615CB96BCF9CAE3EFBFFAF2EFD61D3A54ABB7EF4BB9A15D83BD0DF5EEDA9E
- 1B349710EFCE35D8CB5C465DDB929EB03D97DB0B3A07CD48C3254E8CA0C7DFED
- C93AAC7403C08EB624A4EBE8CE6DA80F9ADBB1B17323F356ADDBE77DEA33570F
- 1933F1D3A37AF6EED28F8F13040000009A4E3EBE6FD3FA0F57CF9FF5F705CF3E
- 7DFFB2BDBBCBABFD765060B73D5DBBC7EC3961F3B0D0EF96067B3B0F2ACB5D8B
- A01E8E03098D3871C21E7FB72F6B2D21A3866B19F598CE65B4A521DD5DDB8A2B
- E4C73197CAE8D97B489B4F7EE6AAD3060C1ED3B7558FDE457C9200000000104E
- DEC17FEFD64DEB572D9FBBF6C5A71F58B465D3B25D7E5B82B60673A9A0006F7B
- EE3A6C6E4BC3BDBBD692B0EE8EC2CE65D4B2DCB50AEBA39969A04462B0BF0FF7
- 77A36B19DD1212EC75AD415FE69140EECC8346B7DC50AFEBB0BE5B0DDF372B2B
- 276BCC5917773F7DDC85FD4EEE3BA26F7ECFCE7D3A6777CEF18F0100000069A9
- E46049CDFE2D251B37AC5DB876DEBB2FAC993BEB1FDB6A6B6B6C489780AD735B
- 61813FAC1F54FABD65D4B98472772EA5730DED762EA39D5B76ED1EC309A2E111
- 89C1FD7D04FD7EA4A7257494C0ADA3F4DC51C2B8AE35A0DB7924AC375261613F
- ACECF76DF8F372720A72CE9AF4EF3D4F3DFDBC7EFD069E5A5490DBA177DB4E9D
- E57B0300000029A9B2B4A4765F75D9A6B5AB3E58FFC1BC196B66BDF1D4969A9A
- AA1AFF901BC8ED18AB6205FCB0B2DFDFCE25A0CB5C465DDB51E8283D2DA1A3E5
- F682CEC109A0E11189C9FE7EDCDF95ACB5845DDB92D0ED8E0D613C60ED06F7A0
- 7553CAFDBEBAD6B1454141EBDC09533EDF67F8A8697D4FE937E4944E27B5EF91
- 91D1518E0100000049493E9FBFB4B872CBBAF54BD62F7EFF9F6BDF7EF52F1BAB
- AA76CB67F44B180E0BE35AEE3ADE8AF57DF4CFD19E5DCBDFC91D834AB86B65D7
- EE3124080984485CEEEF27E8F7253D2D61D76E49E8D631ACC282BAAD787B5AF6
- 7BD9B98CF2F7396CDDBA6DE7FC4993BF78F29091E79CD2B57B9FAE6DDB75EA74
- B036B35DFBF61DE45C00000020A1949797D56767D555545694966EDFB671FBB2
- 05FF5AF7C66B7FDEB0BBB264BF7F58C2B00DE3EE5A469D6BB9EBB05E505FD732
- BAF3A092BF8F8E6125DCB5E5F682CE410220502587A0DF93DB93B596B06BB724
- 6CEBE8CE6DD9606E479DDB72CF0B3BE69E277F76D0FAB0BF534141EB9CC1C3C7
- 772CEA3BBA73F75E033A77EED6BB63FBD6DD3B65746ED7913718040000C0F120
- 6FD477A8A46267F9EE6DA525C59B766EDBBCAA64FDDAF925CB17BFB3B3AA6AB7
- DCCEEF066B09DF3A4A2F68ADE7DB9EADC68EB9C7EDE896FCD9EE5CC6B012EE5A
- B96B11D44302919085C417F67B0AEA4B4F4BB86B09D4BAD6B91D756E43B80674
- 2D1BD8DDD19EAB6B7BDC1ED3B9EDB97FB65BDA6F18BBF71CD06AE0B0F19DFB14
- 0DEFD4B56BDF4E6DBA74EFD4A97DB78E85AD5BB4E7A504000000680AB9757FCF
- EEFAF2D2F2E29DBB3EDC56BA7DFBDAD28DEB1797AE5CF24EC9B62DABF6FAA748
- C87503B4866A5BD29720AEA37BDCF66C70D7B2C7ECF1A0514BD7F6CFD6633AB7
- A3CE85AEA584BBB6827A22AC8F0421210AC927E8F7E6F664AD25DCB586685B1A
- B26DC0D6B906763BD7B26B9DBBBD585F637BFAFDDDBF8F94FB77D251E7A2A197
- 9593973968F099EDDB76EC5A50D0B25D5ECB966D735B15B6C9CDCD6B9557D0B2
- 30372FAF656E8E5F79397939D93979B939B905FEB19CDCCC1CE965E764D716E4
- 666757E5641676CE8E7C6700000024B4BA3D25070F1E2CA839985575A0BAE660
- 4D5DCDBE03FEE440EDC10335D535FBFD79953FD977A0DAAFAA7D7BFCF5DEEABD
- 7B761DD8B7AFD25F575457EEDC5EB562F9ECF2DA9A6A0DCF521A90DDD0ACA33B
- B73DFD3E6E5097B23D99BBE7E8DA3D4FE7BAD63FDBCEA5DCBF93AC6D494FD89E
- 70D7CA5D8BA01E12980425249FB0DF5B503F1286A32574D4C02C6B373C878D61
- C1DCF6DD601F6BAD73FDDE761EF4E7D89ECE65D4B9B0BDA012EE5AB8C71B6465
- E564E415B4CAF4FF137958DFE7AE010000707C7D144033BCFAEAEAAA3A3FB86B
- A8551A5065B46155D7EEF1A0D2EF6943B4CE6574E7B61716D06D90B7F3586BFD
- 7EF698EDEBF70E1B85AE85F6742DA3962BA827C2FA48500498D4607F8F61BF53
- E96B29DB73CB0DD26EE8B6213D6C6E4B03BE2DFB7DC28E07ADC346A1EBB012EE
- 5AB8C783B8FDB0F3000000D0BCDCE0D9584095D19EA36BF77850B9E139D6A8E5
- AEA534A4DBB0EE1E777B7A7ED85CBF8F1DB5DCB55B2AA867B9E7228911605243
- 5382A91CD3526E2F2C4407856E1D75EE6E00B8BDA61C778F35360A5DDB127A5C
- D7EE7161D7B6AFDC5ED039000000687E6E100D0AA66E70D5B5CEED5A486016F6
- B894F6DDA01D36BAC13C2CB437E5B8DB0B1BDD92BEB03D15D473B9C7629D8B24
- 4080494D4D09AF32BAF3A0B52D1BB26D00D731A8276350F8D779D0DAF68246B7
- 27EC312DA1C775ED1E1741EB20617D57BCE7010000E070F106CDB0F36C5FE641
- 6BEDE9181496A5B41F14B6DD9E1D6DB93DBB96B90DF9EEB1B0D19DBB25C2D642
- 47E5AE45500F498C80929A9A125CB527A39DEB68E7364407056E9D1FCD18CF39
- 3286F5824AE839CA3D2E74EE8EAEB0BE2BDEF300000070B8788367D879DA7747
- 21732D257309D3C21E772B56088F35C6734E3CA3CE85F6849DEB792256CF0AEA
- 89B03E921401253D04FD9EDD9E5D4B5856DA97D1CEF51C1BAC6D10778F6BAF29
- A3965DC73A164FA9B05ED018A6B1E3000000685E8D0557771432D752B6D758D9
- 30EEAEC38EC53BEA5C04F5828E0B3D4FE828F45C61FBC25D8BA01E520801263D
- 84FD9E1BEBCB68CF71FBB6848C12C8859DBB015EC4EAB9C7746E7BC23D4FD8F3
- 6C093B06F5ECA8DCB58AF73C0000001C1B61E1B4B160ABEBA031ACE796080AE4
- B6678FB9F3A0F3E3E9093BD7F36C091D4558DF6A6A1F2982D0929E827EEF8DF5
- 641EB4767B8D05F158154FD81741E7D91232DABF8B8E761E34AAC6FA00000048
- 0C6E680D0BBF6EDF8E6EAFB1D0ADA581DDCEF56BDDF3DC5E3C25ECDF45B8C745
- D0DA156F0F298C30939EC27EEFB19E0FF698CCDDB58EEEDCAE6D20B7C71A0BF4
- B684DD0C9031ECFBBA6B11D41341E7C4AB29E7020000E0C83525B0CAB9F67CF7
- 6BF5B87B8EEDB96B1BC665D4D06FCF8B5541E70BF7FBDA63EE5CD9BEB07357D8
- B1585F831444708115F47C88D57347617BEEF17883BA8CC7E25C11D413BA8E75
- 4CB8C744500F000000C75F50806D2C144B4FCB0AEABBBD7882BAAE9B7AAE708F
- 0B1D85DBB3C754BC3DA421820CACB0E743ACE7893D2673771D366A091D35C88B
- A07362AD85DBB3A3CE55D039AEA09E08EB030000E0F80A0BB68DF56574CFB13D
- F73C5D0BB7D7D85A84057CBB0E1A853D4FD8B92BEC58ACAF411A21C8201EF186
- 63DB93B97B8EEDB9E78A581B00C2AEED18D4D351E72AECDC20615F0B000080C4
- E206DC7842B23B2A59879D13764CE742D7B6E76E00089DBBE70AB7E71E17F1F6
- 8006041AC423EC79D2D4F01CD40B1A859EEFF6628D42E6EE3A687405F5DD5ED8
- D7020000E0C472836F53C2B1F6DD51C8DC5DC71A85CCB5947B9E3D26DCF385BB
- B6C28EC5FA1A804083A3124F6856B6AFF3585F1F74CE911E13416BB7D798A69E
- 0F000080E3A3A9C157CE77BF266CED8EE2488FA9585FE78AF5F5409310687034
- C29E3FF13CAF82CED19E7BCCEDC7F3B541E7A8B073627D0D00000092971B9875
- 1D2B48BBE7049DDBD839F17C6D2C61E7C4F3B5C0C71078D01C829E57F13CD7C2
- 0279ACAF75CF89E75C15766EACEF01000080E4116F808E15A8F5983B06093B27
- D6D7A8A073E2F93A206E041D3487C69E574D79DE059DEBF6C2BE5F3CE7857D2D
- 00000052533C413B2C78C7735ED8D70669ECDCA67C2FA051841F9C08B19E77F1
- 3C27C3CE696A3F9623F91A000000248E2309CF615FD3D4BE15EB9C23F93B0247
- 8C90831321DEE7DDD13C3F9BF2B5C7FADF01FFAE0000008E8D631D909BF2FD8E
- E6CF8EF76BD900C071455041228BF5FC6C8EE72EFF1E00000052537304ED58DF
- 93608F8494191D81447434819C300F000080A3418847CA610300381C1B070000
- 00A9E548833C1B004839841DA4329EDF0000003812847F000000000000000000
+ C52549444154785EECDD077C6545F9F0F1C9A6275BB29B6CEF8DED25D9965D9A
+ 54A90A2A082AA0622F282A2A28FA8AA262C5F2B7810511BB028274419022B23D
+ D9DE7BCBD66C7A7BCF7377264C4EEE4D6E927B6F4EF97DFDCC67E6997BB3B9E7
+ 242BFB3CE79C99340504534F7FB7F9BB010000E06F2DBAEFAE9E7E3DE0392439
+ F083EEFC9EF2BB0D0000809EE84E0180A2013C8D24095E17EB773499BFBBFCBD
+ 00000008866426E4B1FE6C8A00F02C121DF486AEFCDE75F777B43B5FC7DF0700
+ 0080604AE5D5FCAE7C1DC502A414090F7A4347BF77F1FC4EC67A4F57E7BB2211
+ 7F06000000922711C974AC3FA3ABF3B68EDE9388CF0CC48DA406C9D0D9EF5557
+ 7EEFA2BDD73D17EBCF8BF77DA2A3D7000000E07F5D49C463BD379EF775F47DDC
+ 3A7B6F57FE2CA053243D4886EE26DAEED7EC38D6D799F9AEBCD72DD6BCD1D9EB
+ 000000F086EE26D4F1CC9B7157DE6BC4FA1AD1DDD7802E23B1414F7437A116D1
+ DE63E6DCAFD9B18C3BFA5A116B6CB8E7A2BD47C49A07000080B7C54A9CE349CC
+ EDB9586343E63A7A8F89637D6D6762BD279EAF05DA21C1414FC4935CDBCC6BF6
+ 7BDCEF77BF27DA7BA3BD263AFA1A239EF7C4ABBB5F070000809EE96E026C7F9D
+ 19BBFFACAEBC27DAEB1DBD263A7A6F34D15EEBE8FD404C24308847ACDF938E7E
+ 7FA2BD2673F6BC7B1CEDB568F3F66B36F39A7B5EB8BF26DA7B0CF76B1DBD5774
+ F63A00000012A3B3C4D7FD7A3C89B5BBB7C99C6936FB6BECD7EC38D6BCE8E835
+ 23DA9C11EBB58EBE062071415CA2FD9E743667C6EEF7496C9A2DDA7C4FE7A2F5
+ C23DB6E3687AFA3A00000012A3B304379ED7EDF7441BBB7B2163D38C9ECC898E
+ E6ED5EB8DF23E29D035A91B8C016EBF7A1A3DF13FB3519BBDF6B62FB35F7D8F4
+ F6BCB0E7EC26DC6377DFD19C8836B6E7A2E9ECF558BAFB7500000061D3DD04B6
+ B3AF33AFDBEF738FDDEF8935677AF7D8DD0CF79CDDC71ADBECD784FB755BACD7
+ 3AFA1A840889096CD17E1F3A9B93B13B367DB4F7D9F3D1C6EE26A4EF736A18F5
+ B5CE62D39BB188F6BA5BBC739DE9CED700000084517712D5685FD3D19CBB1732
+ 8EF6BA7BBEA3B8D969D15EB39B8836B6E7841DC79A17F6D888770E214462126E
+ EE9F7F47BF0FF66B3276C7A6778FA3C5761392DC9BB1F476B21F6B1CAD89CE62
+ E17EDDE67E9FE17E1F000000BC255662EC4E7E4D2CBDFB7DF65C47B1DD849DFC
+ C71A4B2FB19071B42662C5C2F4C29E17F6D8CDFD5A47EF458091D4845B3C09AE
+ 99973EDAFBED7933763721BD49E04DC2EF6ED1927DFBBDD15E37AF456BC27E9F
+ E9CD58D8F3766F743506000040727596CCC68ADDBD90B17BBEB3245D9A8896E8
+ 4B335F1FEB75BB457BAFFB3DA609F7D888356F73BF1F2144F2120EB17ECE1DFD
+ FCE535D30C33B6E7A58F2719B71379F79CF97AFB3DB1E6CCD89E13E63561CFDB
+ EF15766FC622DAEBD1C49A07000040EFE82CE175F742C6D15EB7E7DD49B93B59
+ B79B3D17ED7DEE39FB35FB3DEE39BB09F31E61CF9B5E98797BCE2DD66B1D7D0D
+ 028064261CA2FD9C3B9A93DE7EDDC4F6EB76821D6D6C12723317AD8FE7757B4E
+ C47A8F708FD3468D9B91376EC2CCFE03070ECFEB3BA028BF6FFEC0BCBCBEFDF3
+ 72F3FAE565E7E4E66567E5E7656565E56666E5E665387D7A66565E56664E6E1F
+ D5272F3D2B3B2F333D33B74F86CA6D486BCA38F5C7020000C08B325BD21B9B1B
+ 554D4353434D537D5D75B36AAEAE6FA8AD696AA8AF6EACAFAF69A8AFA9AE77FA
+ BAFAAAEABADA9AEA9AEACAEAEA9327AA4F561DAD3E79BCA2EAE8D17DD5DBB796
+ 9FD8BD7D4DB5F3C7D909B49D74DB49BA194B2FEC38DA7BDCAF75F6BA8C859913
+ F6EBA609772CDCAFBBC53B8700912409C113EBE71A6DDECC4512E653C308336E
+ 93505BCD9D74BB5F8BA74F77C5DDE9557EFE80CC2567BF6DF8E4198BC70C1F31
+ 6974C1A0A1A3F3FA158EEE9BDF6F745656CE40790F000000108FFAFADAA327AB
+ 2A7755571EDE75ECC8815DFBF66EDEB569CD2B3B5F7EFEAFFBAAAA8E37E8B7B9
+ 13F678FB26571C6F6F9A3B763721EF112616F6EBF6BC116D4EC49A874F491285
+ E089F67375CF9958FA586361926D776B9384EB5EE28E927ABBD973F6FBA27D7D
+ 643C7DD65905F3165D3C76F4B869630A078F19DDBFA0687476FE80D14DD5B5C3
+ 0B060FE10A3D00000092E6D8A1838DE97939FBEAAA8EEF3A71AC62D7E1433B77
+ EDDABE6EE7B2571FDFB1B6EC8563CE5B245996E4DB9DBCDB49BFFB353317EB35
+ E9EDAF17EED7DDCDBC4FC6A68F35B6B963116D0E3E260916FC2FD6CF31DABCCC
+ 9966B8E7ECD824E2F6587A61623B69B7DF6337F33E7B1CED7D7DD2D3B3D3DF74
+ F52727952CBCA87850D18889F97905A3F3FBF71D959191D7DF791D000000F094
+ C6C6EA1355274EEEAEAA3EB6ABA262EFE695FF7B62E53FFE7CF7E6A6A63A49DE
+ 25218FD524C196DE5D2470BF6EC6D1EE201026B65F334DB863116DCE88362762
+ CDC327240183FF45FB39BAE72436CDB0E7623593B0BBFB6849BF3BC1778FA3B6
+ 74C7F9977D70DCA22557148F1E37B5B86050E11C927D000000F89914050E1F3E
+ B86AEF8E4D2B5E7DF9A115CF3CFAF3ED4D0EE72549D063353BC18F359626E368
+ C500BBEFAC19D1E6843B16D1E6E023929CC17F62FDDCA2CDCB9C69C2F4927C0B
+ 89DDE358BD19C79BE8C78CCFB9F0BA91A5675F3D6FCCB8E9C5F94523E6F4CBCA
+ 19E4CC030000008154595F7BA4EAD0DE95BB77AE5BF1F2BFFFB4FCB9A7EEDFE3
+ 4C9B84DE5D1888164BF2DDD1589A1947EB857B2C4C2CBD696ED1E644AC797894
+ 246DF09F683F37F79CC4A68968B124E3F6BC89ED3E5AEB2CE9B7E722E385675C
+ 39F4EC0BDF55326EFCCCE2C28251C5D97DF38638F30000004028D5D5541F387C
+ 78F7CAEDDBCA573CFFD4EF96FFEFC5070F38D39294DBC9BF8CEDD87E5D926FF7
+ 6B7693D7DDBD692616F6BC70C7863B16D1E6E06192C0C1FB62FD9CA2CDCB9C69
+ C2F4928C9BDEBC6EE6244937B1E9ED162DC977C7662ED20F1E3E2EEF5DEFBD73
+ C9B84925F38A860C2FCECB1B30D29907000000104575F5F13D1507F7ADD8BE79
+ F9B2DFFDEA0B2F1FDAB75DB6239444DD24F91D150362C5D2244937BDBC2E4C6C
+ 5E13A63749BD79DDC4B6687322D63C3CC22487F0B6683F27F79CC4A609772CC9
+ B989CDD8EE63353BB937B17B3ED2A7A767675EFFC16FCC9D5F7AE91B0B860F3F
+ 332FA35F9E330F000000A00BAA1B2BAB8FEDDDF7C2D257FFF9D46F7F7EEBCAA6
+ A63AD97E501274BB08608F4D8B36E76E92A4BB7B3316269626DCB1E18E45B439
+ 7888490EE14DEE9F4FB49F97CC99264C2F89B9E9CDEB662CBD199B24DE1E9BDE
+ 8C4DB35F6B9DBFE0F20F8D7BE325EFBD70D4A819E7736B3F00000090387527AB
+ 0FEEDEBDE699271FFBD5534F3FF2B3EDCE9449F2ED64DFEECDD83D2FC9B97B2C
+ CD8CA53763617A9933BD696EEEB968EF810748D207EFB27F3EEE9F9589A57737
+ 2149BA89CD58FA58ADA324DF1E47DACC396715BEE59D5F3877C294F9170CE83F
+ 688A330700000020898E9F38B261DBC6A54FFDF9775F7F76DDAAE78F385326E1
+ 374D9276F7D83D17AB49D26E7A331626B69B30BD61C7EED7E01126598437B87F
+ 1ED17E3E664E7A7B2C49BA90DEBC66C6D2DBCD24F576EC6EEDE6070D1A9E7BFD
+ 87BE7DFAF459675E50343477615ADA6099070000009042C72A0E353634D6BCB6
+ 66F50B4FDDFFF3CFBE74E4C8BE5A67DA24F976B2EF9E33F3A6B9636992BC9BDE
+ 8C859913E635617A9B7B2EDA7BD00B4C02096FB07F1EEE9F8D89A5778F4D93A4
+ DDDDDBCD24F6F6B835C18FDA323232AE7BF757672F3CF38A370E2B1C7D76467E
+ 7E5F671E00000080073456559DDC7B68D7BF97BEF4D053F7FFE6F6D5AAB1B1D1
+ 997627FDEE26C9BCE9DD63D3246977F77613EEB1CD8EDDAFA197489288DEE7FE
+ 39448B4D13762C4D1279776F3749E6DDE3B689BE5219F678EC8499FDDEFF89FF
+ BB62E2F8D997E5F42B18EECC01000000F0B0DACA63FBB66C5BFDE83D3FF8E843
+ 3BB696573A537631205A6140127BD3BBC7A649F2EEEEED26DCB1D1598C149364
+ 11BDCFFE39B87F2612476B421279199BE4DEDD2499778F5B93FC28E38CD3A62D
+ 19F8BE8F7DFFADE3C7CEB892ABFD00000080FFC85D019B77AC7EF0D73FFECCDF
+ 36AE7BF9A84C394D92FB58050149EC4DEF1EBB9B24F1D20B93F4BB9BCD8EDDAF
+ 21C54C2289D4729FF7683F0799334D482F09BC90DEC4D24BF26E6219C7EADD49
+ 7F6B3C77E14543AE7FDF37AE1E3366FC65E9D903729D39000000003ED65477BC
+ 66FBF6AD8F3C70EFE7FFBC62E95387644A3749FEA3150324B18FD54BF22E63E9
+ 4D2CBD30B190DE3437F75CB4F720894C7289D4B2CFBBFB676062E9A33593F44B
+ EF6E76B26F7AD35AAFF2DBE3C5675F35E29A1B6EBF66D4D8A117F5E93324CB99
+ 030000001020CDCD07EB77EF38F0C41FEFFBEA1F5F79FE2F7B9D2993F0DB8500
+ BB2020CD4EFE4DEF6E92C09B3E5A13A637ECD8FD1A924C1249245FACF36CCF9B
+ B1F4F65812F958BD6992CC9B3E5A33497F6BE27FDEA5EF1BFB96B7DFF28EE1A3
+ 069ECF6AFE00000040F0C9EE0155278FFCEBC13FDFF5FB7F3DFEEB1DCE94BB10
+ E02E02D84D127DD3472B00B87B21BD3D36ECB12DD63C12C4249A48AE68E7D99E
+ 93B169C28EED845F7A49D64D6C12FC8E9A9DFC675CFEB69B275D7AE5C7DE959E
+ D5EFECA2A2C1F2E70000000008918A8A432D4DF595CFFFF3C11FFFEE91BF7E7F
+ B3336517003A2A02D8CD24FA3296DE5D00304DB863618F8D6873482012C0E472
+ 9FDF68E75BE64C1326D1976627FF7601405AB40280B9C26FC6A6A55F7DDD9767
+ 9E7FC97BDF3578D898C54E0C00000000AAE2E0AE979FFCE7BDBFFBEB6FEF58E3
+ 8492CC472B04442B0A48A26FC692B84B1CAD0820636162696EEEB968EF410298
+ A413C9619F5FF7B936B1F4EEE64EFCED6627FC76B2EFEE23EDAAEB6E9F7ED19B
+ 3FF2BE4185C3E6393100000000B473E4F0FE658F3FF8E37BFEFAC09DEB9CD05D
+ 0470F7EE66927FBB49126F7A7713A637ECD8FD1A1244924C249EFBBC468B4D13
+ D24B72EFEEED6627FC766B4DF6AD3873E2B485033FF1D95FDF98D76FE8658585
+ 85E6FB000000004054870F1F6EA93A71E0911FDE75C32FB76C587ACC996A709A
+ 9DFC9BE62E0098D65111C0F4427AD36C9DC5E82112C3E4B0CFABFB1C4B1CAD45
+ 4BFC25A177F776B26FC791969E9E9EF5E92FFDF9A2F9C5177F20B35FEE00670E
+ 00000000E2565B5B7B6CC5FF1EBBE7BB775CFD44535353BD336527FF7601C08E
+ 25C177F7A649226FFA68CD66C7EED7D04392702271CCF98C765E65CE3421BD24
+ F5EEDE6E26C9B75B9B84DF6A9997BDED9393DEFACEDB3E51503078A613030000
+ 0040B71D3B7AB0FC6FBFFFC60F1EFDEBDDB250A0B91B205A330501BBD9050077
+ 11C0F4427AD3DCECF720014C328AC490F319ED9C9AF9682D5AD21F2DF99724DF
+ F4997A2C7DC6E8F13306DC7CDBEF6E183771E495696983E56B01000000A0C75A
+ 5A0E356DD9BCFBA1EF7FED1DBFD9BB73FD09674A127E29064892EF7E44C02E00
+ 489344DFF476B3937E77738B358F6E900414DDE73E7FD1CEA749F2853D965E62
+ 49E4656C9A49F84DB3AFF24B1C49FAA5C9EDFE1FFFDC6FCF5974FA951FCEC9CB
+ 2D74E60000000020E16AAB6B0EBFFAD2833FFDD15DD73FE77A2CC014034C1CAB
+ 10609AC492D0CB58988280B0C736F71C05816E8A96B0227EF6F9739F4B13BB13
+ 7E69666C127EBB3789BEDDDB2D5200B8E092F78DBFFADD5FFD78D1E061254E0C
+ 0000000049577168DFF23FDE77FB0FFFF5CF5F6E77425300B0937FD324D137BD
+ 49FCEDDE1401A4376361FA8E927EF76B88933B69457CDCE72D5A6C9AB0137ED3
+ 9B2649BEBB454BFA653EB368D8D8BE9FFDD29FAF1B5C34EEAA82C143E4350000
+ 0000489963870E361E3CB8F5CFDFFEDA35BFABD8BFE3A433E57E24C05D087037
+ 49F24D33C9BF5D0490B169B6CE6274C224A8E81AFBBCB9CFA1C4D19A24F0D277
+ 94FC9B845FC6E656FFD6FE23B7DC7BC699E75CF3B19CDCFCA14E0C00000000BD
+ A6B6A6EAC07F9EFBE38F7FF2EDF7BDE88426F9B77B49F6631502DC4500993349
+ BFBBD9ECD8FD1A3A210929E2E73E5F762C63D384F492E49BDE8C25B97727FF26
+ E93705003BF1CF1A39666ABF2F7CFD1F370F1F39F93C270600000000CFD8B767
+ D3BFEEBCED4DDFDFB3737DA5139AF501DC77034882EF2E0448F26F127FBB1860
+ 7A21BD69863D16EE183148D289F899E45EB8C7A6093BE137633BE97727FAA645
+ 127E3DCE96F1E5577D72EACD9F7FE0DB83068F98EBC400000000E029FDFA174E
+ 78C379D79F55D750B366D3BA578F3B5392FB083B3FB2F3257B1C8D795D12FB68
+ EFEBE86BD1014E5C7CDCE7C98E651CAD995F7249F8DD0580588580D63E3D3D3D
+ FBB3773C78D9FCD2451FE9D36788140500000000C0B39A9B0FD62F7BE5BFFF77
+ D797DFF2CFA6A6A63A67CABE1320DA1D01EEBB01DC7704481FAD19F658B863B8
+ 48828ACED9E7C93D8ED64CC26F927E77F22F89BEE9EDC43F321E3D7A7AC1E7BF
+ F98F9B478C98F806270600000000DFD8BF6BCB735FFFC29BEEDEB56BED312734
+ C9BFBB102089BEBB10600A00A618D0D522803D46149284223693D01BEEB1DDDC
+ 09BF9DF44B826F9A49F44D93ABFBADB7FDBFE9AA4F4FFBE4177F7BD7A041C367
+ 3B3100000000F84ADF0183C69FFDC6779DD5545FB776C3DAFFCA230142F2233B
+ 7F32A2CD19662EDA6B86FD5AAC3F071A05808EB97F994CEF6EE697D99DF8DBCD
+ 9DFC9BA43F5200905BFE6FBDF3E12B2EBEE0EDB767F52D2C70E600000000C097
+ 323373FACF9E56FCC6C933CF3EF9F2F37FDED2D212B9386FF227C3E451D1B8E7
+ A3BDCFCCC5FA33E0C2898AAEA35F2499935F5461C6E617D78CA325FFEE2689BF
+ F499E3C6CD1AF8D9AF3FF8A9E1C3279EE5C4000000001018FBF66E79E15B5FB8
+ F27BDBB7971D7542F338807914205AB31F09B01F05B0C7C21EDBCC5CB4D7424D
+ 9253B427C9BC3BF9377326F937C9BE34998F95F4CB557ED3B7BBF27FC5B59F9D
+ 7ED3677FF5AD818523663A3100000000044ABF7E83C69E7DDEB56737A99675EB
+ CB5F922280C9B5A2F5B1E62499B7E7DCB1CD1D43E3C4B4D5D12F9069427A77F2
+ 2F637701C0F4EE2240A6DCF27FDB9D8F5C3961C2BC0F160C1E22AF0100000040
+ 6035571E6C58BE66D9CFBFF9C5CB1FD2BB04B8EF0630BD5CFDB7EF0430770348
+ 2F89BFFB4E00E94DB3D9AFC361125A9C6227F9869933F326E9775FF93705003B
+ F137AD35F1775AD6E8F1B3077CE16B0FDF3274C4B8339D180000000042E3C0DE
+ EDFFB9F38B6FFEF6AE6DAB6581C07AA7B90B01A6D985005300B08B00A6173236
+ CD166D2EB4245145FB24DF70CFDBC9BF49F84D33C9BE19B726FC769B3DFFC2E1
+ 5FFAE6C3DF195434628E130300000040A8F4ED5730F6F4375CBD68EBE695FF3B
+ B0774B8D33E5CEBB4C2FECF968E43549F063BDC7CC77F467840627E114390FEE
+ 7361E6CCBC7DC55F7A7701C024FEA6B5B9EA2FFD7917BD7BEC7B6EFAFE37F373
+ 0B8639317CA2BAEAA43AB877AFD357A99A9A6A555BEDF4D54EEF8CA5B7C7B5AE
+ 585A43BD1435010000D0913E7DD254764EAECAC9CB53B9B979A77ADD729C38D2
+ 47C6B9CEEBF9ADAFCB6BFD070C5043468C501919F24F6FF84555CDB1FDF77EFF
+ A6CFFFFBE9FB7738A15CFDEFEC6E00BB993B00EC3B0284B9E22FCD166D2E744C
+ 721B56E6F8DDE74162D344BCC9BFFC3F8E3BF9979675E5359F9B7EC53BBE7C67
+ FF7EB9039C181ED3DCDCAC0EEDDFA7F6EEDCA1F6EEDA1969FB9CB6C7898F1F3D
+ A2DF05000000AFEAD3A78F1A327C841A3E7A8C1A39666CA41FA15BFF82812A2D
+ CDFCD31E5E72A2B2E6F8DFFFF0E5DB1EFEC3B7D739A1BB00608A00A64F4411C0
+ EE4327EC7F0BCCF1DBE741C6A689CE927FFBAABF49FE2357FCCDF8DD1FFAEE82
+ CBAEB8F1CBE9D903729D18BDA8AAB2D24AF0773809FEA97EFF9E3DAAB151FE7F
+ 05000000419397DF375208682D0A8C191BE9878D1CA532B3E49FEEE84D4D75C7
+ 6BFEF1D03D5FF9EDCF6E79CD09ED228019DB7702B80B015D290298B13D172A26
+ C90D1BF7719BD8F492E49B5EE64CF22FBD5D007027FED29BE43FF2CCFF276EBB
+ EFDCB9732FFA2C2BFDF70EB97ABF76E50A55BE62995AE3B4FD7B76EB57000000
+ 107669697DD4C42953D58CE2796A66C93C75DACC592A3B3B47BF8A543A76E860
+ E38A154FDEF5C36F5CFF9C134AE26F927FE925E9771702EC028049FEDD4500BB
+ 1860F746E80A01EE44382CECE33663D3C793FC4B322FBD24FAA6372D92F84BFB
+ C237FE79E5F8C98B3E5C5858687F3F2451D5C9936ADDAAD713FE5DDBB6EA5700
+ 0000808EA56764A8D3A6CF6C2D084C9A369D750552E8F0E1C32DDB37BEF293AF
+ DD76F9834E681700A4374D927CD39B4240778B00140002CE7DBC762CE378937F
+ BBC9FF23983E92F8CB1EFF5FBBFB3FEF993A73F1B54E8C24AAABAD51EBCB5647
+ 927D49FAB76DDCA85A5ACCDF71000000A0FBB2B2B3D59499B323C500290A8C9F
+ 3C4539FFD6D7AF2259D6AD79E9F7B77FE2ECDF343535D539A17D3740B43B01E2
+ 2D027494F887A610E04E8883CE9DF0DB7D77937FBB39FF1F91977BD74F5FFDC4
+ D8F1332F766224C1CEAD9BD5AB2FFC3B92F46F5AB7563535CADF7900000020B9
+ 72F3F2D5F43973D5CC92F9AAF40DE7AA818545FA1524DA8E6DE58F7FEEC38B7E
+ 5057572DDB04BAEF02E86E11409864DF4EFA2900048CFB38ED58C60949FE0B8A
+ 46F6FBC6DDFFB96DD8C8F14B9C180974ECC861F5D2BF9E562F3CF5B8DAB165B3
+ 9E050000007A87AC1F306BDE7C75D68517AB05679C19D9C210897570DFB6973E
+ 77D399DF3856B1A7D209135504E828F10F7C21C09D1807953BE13764EC4EFEA5
+ 374D12FFCE92FFC86DFF6327CE19F8FFEE7AEC8E82C211B39C1809505F57A796
+ BEF49F48D2BFEAB5FF716B3F0000003C292737572D3AFB9C483140EE1090E200
+ 12E3D8E1BD65FFEF73977C69C79655479DD07E1CA0A32280290498166F118002
+ 80CFB98F2F56F2EF4EFCA5C59DFCCF29397FE867FEDF1FBED9B75FD17827460F
+ 48922FCFF44BD2FFDF7F3FA76AAAABF42B00000080F7150E19A2CEBCE0227596
+ D3468C19AB67D113278E1FDEFABD3BAEB975D5F2670E3861778B0076E2DF5111
+ 4004B61010A602807B6C9A24FB766F127FBB0020C97ED4E47FEC843983BE76F7
+ 33DF25F9EF99FDBB77A9179E7E52FDE7E927D4A1FDFBF42C000000E05F13A74C
+ 5367BDF162B5E49CF355BF0103F42CBAE36465C5B62FDE7CFEA73AB913C0F4A6
+ 00609A24F426E937BD6946AC71A048C21B44EEE3B26319DBCD5CF197719792FF
+ 82A211FDBEFF93E5DF28183C74A613A38B64F1BE17FFF5B4FAD7230FA98D6BCB
+ F52C000000102CB2734071E91275D1956F8BEC26909626A907BA4A1E07B8F943
+ 0B6E3B56B1D7AC09601701641CED2E007711C05D00B0937D7B2CDCB1EF05F537
+ CF3E2EF7D86EF6D57F77F22FCD24FF92F0B749FEB3B3F372EEFE65F99758F0AF
+ EB1AEAEBD5BF9FF8A77AF80FBF531507F6EB5900000020F8264D9BAEDEF2AE77
+ 470A021402BA6EFF9E6D2F7FF2C69977D4D555D73AA12902D88500732780BB00
+ 202DD65D0076A21F6B1C0841FD8D33C7E53E3E93F09B66AEFE4BB26F7A49F8ED
+ E4DF4EFC237D7A7A7ACEF77FB1FAE6D113A65FE4C48893ECD9FFCC230FAB47FE
+ FC7B75ECF0613D0B00000084CFD88993D415EFBC412D3AEB0DAA4F1F4945102F
+ D922F0D3EF9F7B775353935D043005007711C0DC0D2049BFE9DD0500896D26F1
+ A700E01326C1B79984DFBC26CD4EFC4D93A4DF7DCBBF290048CBFEC68F5E7ECF
+ D4998BAF75C6884375D549F5E4837F538FFDF54FAAF2C4713D0B00000060C4E8
+ 31EA8A775EAF4E3FF702959E216908E2B16ECD4BBFBFED6367FCC619D6392D5A
+ 11C01402DC8F039842809DF89B82804D620A001E678EC77D5C26E197668A0026
+ F937050093F8CB385AE21F49FE6FFBFAA3572E587CE9879D313A5179FCB87AEC
+ 6F7F8A24FF52040000000010DDE061C3D59BAF7D973AFBA24B5566A6A421E8CC
+ D2971FFDC99D5FB8FC2167681701DC850049F6ED428024FBEE228049F6DD09BF
+ 89DDF3BE25C96E9098C4DFF4C224FED24CF26F27FEA6D957FEA5B713FF48FBF8
+ E77F73DEB459E77E322F2FCFFEF3E122B7F7FFE5BE5FAA1FDFF91555BE62996A
+ 6890BF830000000062A93E79522DFFEFCBEADF8F3F1A792460CC84892A238342
+ 4047B2F30AE78F193F6DCFFF5E7A78A79EB249D22E795BB4E43D30097D5705A5
+ 0060127CC38CCDBC6926F197B19DF84B6F127FE9A5D9C97FF6F51FFCF68225A7
+ BFED0B838A0607E59C25DCB12387D5EF7FF153F5936F7E35B2977F539314D900
+ 000000C4ABB6A65AAD7AED55F5AF471F562D2DCD91AD04651701B4271766070D
+ 18B178C0A0A11B572D7BFA8033D551626F5E73F7921B76C6E493BE1794DF24FB
+ 8761C6E687649A7DF55F8EDB3473E5DF5CF56F570078F3D59F997EF5959FFC5A
+ 5E61A1C470696E6E564F3DFC77F5BD2FDDE624FEAB223100000080EEABAFAB53
+ E5CB97AA979F7D468D18355A0D1B394ABF025B4E7E7E9FD326CF5852535BBF72
+ E3DA5762AD34DED9157FC913A38935EF5B7E2F0098E4DE708F25D917E6CABF49
+ FEA53757FECD557F5304B093FFEC732EBC6EDCB5EFFBDE5DB903FAF57562B86C
+ 5EBF567DE78B9F57CF3DFE28B7FA0300000009565559A95E7CE629B56BDB5675
+ DAF4592A2F3F5FBF02A34F464EE6C469672D397A68C77F776C5D2D8B8FD957F9
+ EDE4DF3D7627F866CE7E9F3BC7747F8DAF04A1006044FBC14893645F7A93F84B
+ 6F127FE94DF22F09BF49FEB3A59F35EFFC611FBEF557DF1ED0B75FA113C372B2
+ F284FAED4F7EA87E79F777D4D1C3157A160000004032ECD9B13DF25880AC0B30
+ 69EA34B60E74C9CECECC9936FF9CD22D1B96BD7870DFD61A3D1D2DF9B7E76CD1
+ 927F43E603C1EF07623EBF7D1C32B69BFCCD30CD4EFEED2BFEA6B55EF91F3B76
+ E6C0AFFDE8B9EFF6ED5734DE89A1C97348CF3FF9B87AE0E7FF1759E51F000000
+ 406A8D1A375EDDF8C9CFA869B3E7EA1918272B2BB67DF1E3E77C7AC78EF2A34E
+ 186B8B40B32B80D919C0DE1DC0BD2B805D1030637BCE57ECC4D98F4C926F98D8
+ 343BF937050077F22FBD49FC232D3D3D3DE7C7F76DFAF2B091E3973831B49D5B
+ 37AB5FDEFD5DB5A17CB59E01000000D05BCEBAF062F5CE0F7E440D183848CF40
+ 1CD8B7EDA58F5E37F98EA6A6A65A27340500D324E98F5604B00B009D1501ECD8
+ 572421F6233BC9B799A45FB813FF8EAEFEB75EF99776DB37FEF996D3A62DB8D2
+ 19C351535DADFE78EFCFD4CFBEF575557160BF9E05000000D09B766CD9AC9E7B
+ EC119597DF578D9F3C45A5A5B9D3A370EADB6FE09809A7CDABFACFBF7EBF494F
+ B913F65809BC3BD19713EA7EAF39C9BE3CD97E2E00D8BD90B16992F44B2FC767
+ 1700ECC4DF2E00B41601DE74D5A7A79F7EC655B7CA6A924E1C6A2D2D2DEAD517
+ 9E53DFBAED16B57AE9FF223100000000EF68A8AF572BFEFBB25AF1EA2B9122C0
+ C0A222FD4AB8E56517CC6D512DCB379CDA19401219D344ACDE9058F249F7BCEF
+ F9AD0060127CC38CCDBC69E6CA7FB4E4DFB4D65BFE75CB1E337ED6A09B6EFBF5
+ D7FB1714F677E250ABADA9513FFFF6D7D59F7F7D6F642F5200000000DE250B73
+ CBCE5C1999996ACACC59A1BF1B20B23DE08C85C5AFBEF8E8B395C70FC92DFF6E
+ 92DCDB09BE197725E937F9A76FF8B1006098B139E9A6D9C9BF2900D889BF7DD5
+ BFF5CABF3CF77FE78F5EFA6CE1A0E1D39D38D4E459FF3B6FF9A45AB372B99E01
+ 000000E07572C76EF9F2A56AF3FA756ACEFC452A3B2747BF124E5999397D8B17
+ 5C30E2897FFCE415E7DCC873FDC224FED112FECE927FF3BAC9457DC7AF0500FB
+ 849BA45FB8137FD3DC0500FBCABFC4D9B77EF5E1374F9D51FA16671C5AF27F18
+ CF3EF688FADE976F53C78F1ED1B300000000FCE4C09EDDEAA57F3DAD264E9DAE
+ 8A860ED5B3E1D4AF7FE198B113E79C78F1D93FCA7A00A60860D88500377761C0
+ 9DF4FBB208E0C702803BF9374D927EE9E598EC0240AC2BFFD222B7FE5F76D5CD
+ D3CE38EB9A503FF72F0BFDFDECDBDF500F3DF05BD5DC248B6002000000F02BF9
+ F7FD0B4F3DCE23018E110307CDAD69685CB671ED7F656B4093F4DB4DB87B4362
+ 3979EE79E1BB93EA9702809C58D36C26E9972663D3DCC9BF5D04B0AFFE678D1C
+ 33A3E0D3B7DEF7F57E030B07387128C9EAA177DEF209B576D50A3D03000000C0
+ EF7824E094B4ECFCF429D34AE7BEFAF2C3FFAA3C5E21EB01444BFAED04DFFDBA
+ 9B3D6F725477AEEA497E2A00D8BD3049BFBB37C9BF5D00705FF98F1402E4B9FF
+ 6FFCE83FB70C1C3C728613874EE496FF7FFEE3D42DFFC7A418060000002068E4
+ 9180179F794A4D9A268F040CD3B3E192999DD36F4EF11B473CF948EB7A0026E9
+ B79379338E3667E7A2BEE5F502809C64FB449BB1999766927F3916530090A4DF
+ 5D006873E55FDA67EF78F04DD3662E79AB330E9D9AEA2AF5D36FDDA91EFEFDFD
+ AAB9D9FD280C0000008020919DBDE49180F48CF03E12D0BFA070ECD871B38FBD
+ F8EF3FC97A0076B2EF4EFCDDBD8836E7667254CFF24301C0306373524D93A4DF
+ 34391ED3ECE4DF5D04C8BEF42D374DBDECA277DC26B7833871A86CDFBC29B2CA
+ FFBA552BF50C00000080A06B7D2460DD5A356741381F09183E686071656DDDD2
+ CDEBFF77CC09A3DD0960C7F65C474CAEEA797E2900D827D424FD229EE4BFDDD5
+ FF9163A70EB8E98B0F7C3DA76F61811387CACBCF3EA3BE75DB2DEA04B7FC0300
+ 0000A17460EF9EC82301B3E62D50058306E9D970E893DD377DF2CC25735F7BE9
+ A167F57A00C24EF46325FEEEB1E4A5F69C2F8A007E2B00486F9A24FDD2CB3198
+ 028024FDD10A00AD4580F4F4F4ECAFFFE0A5CF14158D98E9C4A1F2C4DFFFA27E
+ FE9D6F72CB3F0000001072F248806C15288F030C0ED9BA00D95939FD66CFBF60
+ D853FFF869B4F500EC66B8C79287DA73BEE1D5028049F20D3396DE24FEE6CABF
+ 49FE4DB3937FE9DB5CFDFFD0A77F71F6DCF917BCCB198786DCEAF3A75FFD42FD
+ F1973FD73300000000C2AEB1A141BDFCAFA7D5E8F113D4C83163F56C38F4EF5F
+ 346EE0A0E13B5E7BE591DD7ACA24FDF6D5523367927DD3DBA2CDB9F359CFF072
+ 01C030637312A5C54AFEDD050093F847C683874D18F0E19B7FFAFF323232F39C
+ 38149A9A9AD43DDFBB2B72F51F000000006C7277F07FFFFD9C1A5434588D3F6D
+ 8A9E0D8791A3A74E7FE15F7F7CAAFAE4D17A277427FAEE66C41A0B3B8FF524AF
+ 1700EC1328C9BE5D0090CF6E17004CE26F927FD34C1120FB4B773D7EC3D0E1E3
+ E73BE350A8AFAB533FB8E3F6C873FF00000000105D8B5AF6CA8B2A3D3D434D9D
+ 3527343B04646466E54D99BE30FD99C77EB9DA0925998FF5388030BD112BF6F4
+ C9F37201C03E7126E937BDDDDCC9BF5D008824FED29F77D18D132FBEE2AA4FA5
+ A5E5CBD7045E5565A5BAEBD64FABD54B5FD3330000000010DB9A15CB9C3CE284
+ 9AB37051688A00030BB3A7541C3AF2F2B6CD2B8E3BA149F8A3ED0E20DC712C9E
+ 3D795E2B00C88932CD2649BBFD9A49FCED16EBCABF2CFC9773DB9D0FDF9A973F
+ 2C14AB5B1C3D5CA1BEFAE99BD4D60DEBF50C00000000746EF3FAB56ADFEE5D6A
+ DE9233549F3E5E4B17134F2E104F9CB260EC637FFFC1BF632C0828DCB1883567
+ 989CD69DDBF62AAFFD44A39D2493F09BDE6E26F1775FFD97C4BFF50E809B6EBD
+ EFBC69B3CEB8C219079EFC65FDCACD1F53FB9D1E00000000BA6AD7B6AD6AD3DA
+ 356AC11967A9CC4C49AB822D2FAFDFD02143C7EF7BF5C507B73B6167BB02B863
+ 5F9124DACB24E9B78B02A6452B04D8C50019470A00A3C7CD28283DF36D373AE3
+ C0DBB2619DFAD2C73FA82A0EECD73300000000D07565CB5E535FFDF4C7D58963
+ C7F44CB02D79C3DBDE3B72CCF4FECE50F248FB02B3C92FA5B9F3503B4715F6D8
+ 93E420BCC47DC2EC936A4EB239F9E60761FF60CC55FFC8957FE96FFFE613370E
+ 193666B6330EB4F2E54BD5373EF729555D55A56700000000A0FBE4D1E2A52FFD
+ 472D38FD2C95979FAF6783293D2333F7B4E90B739F7EF49E654E68AEF0C7B328
+ A0E96D66CE73C500AF14004C926F9F2093F40B93FC472B02D8C9BF5D00C8BAF4
+ 2D374D9DBBF0F28FE7E5E57BEEC427923CA723C97F5D6DAD9E01000000809E3B
+ 79E2845AF5DAABEAF4F32E5059D9728D35B89A55D6E4C686EAA59BD7BF762412
+ BE9EF077D60C19BB734F137B22273509B6D7C8C93127483EA38CEDE4DF1EBB0B
+ 019162407A7A56D65BAEBDF5234545833D71A29365EFAE9DEAAECF7F86E41F00
+ 00004052ECD9B15D7DEBD65B545D5DB0730EC91DAFBEEEF60F4B2EE984F13C0A
+ 608F4DCE2AEC7CD653E4037B813939766F9F44D3CC093627DFFC50CC957FD367
+ 7FFACB7FBC78CAF485173BE3C03A527148DD71F3C7D4B12387F50C0000000024
+ DEE14307D58E2D9BD5E2B3CF557DFA484A164C39B97D8B468E3EEDC8CBCFFF75
+ 8B13DA7701B8C7C2F432E7166DAED779E9276727FFF6D8F4A608609A1400A4D9
+ D598483160F2D485034B965C7283330E2CD9E75F6EFBAF387840CF0000000040
+ F2ACF8EFCBEA17DFFDA66A69F1646E9B3025A75F7EC384C9F3063A4373C1D99D
+ 774A73E7A7D17258F75CAF930FDE9BCC49B14F888CCD09749F5473E24D2F3F10
+ D32257FEA5BFFDAEC73E3CB868D474671C48F57575EAAE5B3FCD3EFF00000000
+ 524AEE026868A857B3E62DD033C193999E993D656A69BF271FF9D9FF9CD05CF1
+ B7EF00304DB8639B3D67725E3BF74D392F1400DCBD697611403EA734199BCA8B
+ 5D00684DFEDFF28E5B67CD2C7EE387F2F2F2CC9F19284D4D4DEAEEAF7C31B22D
+ 0700000000A4DA86F2D52A2FBFAF9A3C7DA69E099E2695312123237DE5BAB217
+ 0F39A124F2B18A00E6310061E684E93D45126AAF895504B00B0176338580487F
+ D9151F7D7761616120937FB9D5E6DEEF7D4B2D7BF9453D0300000000A9F7DB9F
+ FC50BDF8CC533A0A1EC9292F75724B67D89A6BEA3E5A4E6AF2563B8735CD53E4
+ C3F626FBA4D827C94EFCCD0995DE9C70F303902BFFAD8BFF5D75FD97E62C3CFD
+ 4DEF70C681F4A75FFE5C3DF1E05F750400000000BD472E4C4E9A365D0D1B394A
+ CF044B6E7EFF212D4DCDABD7AC7EE1A013DA57FFEDBB01849917EEB1DD9BDCB7
+ D74862DD1BEC64DF66CFDB9513199B2605005304B05BE6F997DCF876A70FA4C7
+ FFF667F5D0EFEFD71100000000F42E793CF97B5FBE4D6D5EBF56CF04CFF917BF
+ 4F724C73F5DF6E262FB573D568B9AC6946B4B994910FE605F609B07BFB649A93
+ 6B927FBB089079D95B3F79DA90A1638A9D71E0BCF4ECD3EABEFFFB818E000000
+ 00C01BEA6A6BD55DB77E46EDDDB553CF04CBE011634A2EBDF213939DA15D04B0
+ 73523B57352D5A6E6BC6BD4A3E9C57989322CD9C34FB244A93136B9A7DE2332E
+ 7DCBC7AE76FAC0D9B66983FAE937EFD41100000000784BE5F1E3EA3B5FFC9CAA
+ ADA9D133C172C95B3E2EB966B4E4DF3477DE6AE7B4A679827CA8DE629F0433B6
+ 7BFBC499936A4EB039F99176FEC5378ECFCC2E58E48C03A5A6BA4ADDFD95DB55
+ 6363839E0100000000EF913B007E79F7B7230B97074D766E41E9B917BF679C33
+ 6C93873ACD2E0098DECE6585BB17F638A5E483A5921CA869863D27CD9C2C3336
+ CD9C5CBB454EFC9BAEF9CC55415BF95FFEE2FCE23BDF5407F6EED13300000000
+ E05DFF79FA49F5EF27FEA9A3E0905CF38AAB6E71DF05E06E76EE1A2DB735CD88
+ 369774F281BCC21CB8F4F6C93327D39C5873D2236DF159578D1C35BAF00C671C
+ 28CF3CF2907AE5DFCFEA0800000000BCEFD73FFC9EDAB56DAB8E8263D4B8A233
+ 24F774866DF251A7D90500D39B66E7B89E201FAA3799645FFA6863D3EC136A5A
+ E4845F7DDD17AE4A4B1B2CAF05C6F64D1BD57D3F66D13F00000000FE525F57A7
+ EEBEE37655571BACF50024E7BCEAFA2FBCCD19BA137F6976CE6A5AAC1C57FA5E
+ 231FC04BCC493127C68CA599936B4E7846F1C28B86160C18FE06671C1891E7FE
+ 9DBF303CF70F000000C08FF6ECD8AE7EF583EFEA283806F61F7ECEECF9170E75
+ 86AD39A9D3EC228069EEBCD633E403A5821CB4FBC0ED3933B69B7D12EDC4DF9C
+ E08C77DCF095B7160C1E2273811079EEFFBB77A9FD7B76EB1900000000F09FE7
+ 9F7C3CD2824472CF77DEF8B5B738C33679A915DBF96BB41C57D86323DA5C52A4
+ AA0060B30FCC1CA834F92CA6B79B39B176CB9C36E38C41E3A78C3BDF1907C633
+ 8F3EAC5E79EE5F3A0200000000FFFAD5DDDF51BB776CD751304C9C3CF682D366
+ 2C1EE40CED2280DDDCF9AC9DEB9A66D8E394900F924AD10ED63E09666C4E90FB
+ 649AEA4AC6F51FBAEB8AF4F42159CE3810B66FDEA47EFBE3BB750400000000FE
+ 565757ABEEFECA17237D50480E7AC307BEF36667D89A9BCAB4ABD939AD34E11E
+ 1BF638E9525D0030DC072C4D3E8BDDDC27D1B48CB11366F59F3479C6C5CE3810
+ CC73FF0D0D3CF70F0000002038766FDFA67EF3A3EFEB28184E9B32E31227271D
+ E00CA325FFA6B9F35B93F71AF63865E483F416FB0498B169F6893227B0B5BA72
+ E3477F707946F6805C67EC7BADCFFDEFDEA5670000000020389E7BEC51F59FA7
+ 9FD491FF492EFA9E8FFDE0326768F25493B34AB37359779E2BEC71CAC9874A95
+ 68076CC6A6D927CB3E89AD2D3D3D2B73F2D485173AE34078F9D9A779EE1F0000
+ 0040A0FDF2EE6FAB23870EEAC8FFA63839A9E4A6CE50F2545304B0F3583BB775
+ E7BDC23D4E09F930C9640ECA7D40F6BC69E6C4D827CA347312D3AF79F797E6E4
+ E4E5173A63DFABAE3AA97EFB931FE9080000000082A9B6A646DDFFD3E0E43E39
+ B9F945575FFFC539CEB03557D5CD9DCBDAB9AEBBD962CD27947C9054B20FC8EE
+ 4DB34F9434FB44461E0158B8E48A739D3E10FEFCAB7BD4F1A347740400000000
+ C1F5CABF9F55AB97FE4F47FEB7F0CCB79CE374AD8FAA5BCD9DD7DA39AFB07B33
+ 4E09F930A9660E529A3919F6C991669F3C6991135A54343A6FE4A091A5CED8F7
+ B66FDAA89E7CE8EF3A0200000080E0FBD50FBF1798C5CF470F1CB958725467D8
+ 9AB3BA9A3BCFB57360D3524ABE796F729F0019BB4F9819675CFBDE3B96A41714
+ E438635F6B696956F7DEFDED480F0000000061218B9F3FFAA7DFEBC8DF2437BD
+ E63D5F59EC0CEDE43F5A4E6BE7BBD2F71AF900A9620E5A98B169F239DCCD3E69
+ 91366BCEB96F707ADF7BF6B147D5E6756B750400000000E1F1E003F7A943FBF7
+ E9C8DF66CD3D571E036897BB3A2D5A8EEBCE83853D4E3AF910C9661F8C3938BB
+ 9913619F1869E6C4459EA99839FB9CA2B4ACDCD9CED8D74E1C3BA67EFF8B9FE8
+ 0800000000C2A5BEAE4EFDE6C777EBC8DFFA64E5CD9E3EE76C59A43E92B73A2D
+ 5601C0CE7DDDCDB0C749211F2019A21D8C9BFD1EFBC4483327CC9CBCF42BDF71
+ CBD94545833BFAF37CE10FF7FC54555556EA0800000000C267D9CB2FAA65AFBC
+ A423FF921CF52DD77CF66C67D89ABB3ACDCE69ED66E7C0B1C4F39E6E930F910A
+ F601D80724CD9C08E9DD27CCB48C8953E7CB49F5B58D6BCAD4738F3FAA230000
+ 000008AFDFFCE8FBAAAEAE5647FE3569DA027954DDCE5FA5B9F35B3BF7B59BB0
+ C749251F2055EC8394EF6B9A3027C53473A222B7505C78F987260E183078AC33
+ F6ADA6A62675EFF7BFA3230000000008375907E0E107EED7917F49AE7AC1651F
+ 9CE00C5B7358DDDC39AEB0E7EC1C3925E49BF626530CB00F5C6273B22227F09C
+ 8B6EF0FDE27F4F3EF457B573EB661D0100000000FEF1C707223B03F8DD796F7C
+ B72C0668927F3BA775E7BAD2F71AF900C9660E5698B134F9DEE604482F27C89C
+ A4D63837B76FD6B80973CE70C6BE75F47085FACBAFEFD5110000000040343636
+ A85FFDF07BAAA5A545CFF8D3D849B3CFCCCACACD748651F35A3D76E7C1A6097B
+ 9C34F28D93C5FEF0E660A4B90FD83E39D2CC098AB4ABAEBB7D6E4E4E6E8133F6
+ ADBFFCE65E55535DAD230000000080B17AE9FFD4AAD75ED5913FE5E4E415BCFD
+ 862FCF75866DF259A7B973DD5879B134C31E27947CC344EAE8C3BB0F426273C0
+ E6E0DD272B7DFEE2CB7DBDF85FC5C103EAF9271FD71100000000C0EDC1DFDDE7
+ FBBB00169EFE26F76E00A6997CD7CE816D26B6E7656C5AC2C8374FA6580720CD
+ 3E01763327287DF8A8497D478C2E5CE88C7DEB913F3EA09A1A1B750400000000
+ 70DB50BE5AAD5BBD5247FE347C64E1A221C327E43BC3D69C56F776B37361BB19
+ F638E1E41B279B7D40F6810B3BB65BA452F2B677DDBE303D7D489633F6A56347
+ 0EAB671F7B4447000000008058E42E003F4BCF1892F5F61BBEBC4886BA45CB75
+ A50977EC2E042485F966A9260726DFDB1CA489ED4A49FA8429F3E4190ADFFAE7
+ 5FFEA81AEAEB75040000000088A56CD96B6ACB86753AF2A74993E7CD713ABB00
+ 607A77EE2B7DCAC9374E167370C28CDDAD35D9D7E3D6580C1B326EA633F6A5CA
+ 13C7D5D3FF7850470000000080CEF8FD2E8021C3C7CD945CD61946CD73F5385A
+ 6E2C4DD8E384936F9E68EE0F6B0EC03473C0F681DB27247252162EB962444E5E
+ 7EA133F6A527FEFE17555B53A32300000000406796BEF41FB573EB161DF94F4E
+ 6E7ED1FCC56F1AEE0CDBE5B84EEB282736CDE68E7B4CBE6132D91FD83E203396
+ EF6F9A39299113547ACE55B39DDE976AAAAB2205000000000040D73CFCFBFBF5
+ C89FCE38E76AC965EDC45F9A9DFF46CB8D0D7B9C70F2CD93CD1C9069E6A0CD81
+ DBB169E9E3C6CD99E5F4BEF4D4C37F5755274FEA080000000010AF979FFB97DA
+ BF7B978EFC67DCC4D992CBDAC97F24C7D57DB49CD86E4925DF3011A27D60F738
+ 5A731F78E4A4C83313054563A73B63DFA9ABAB8D2CFE0700000000E8BA969666
+ F5F01F7EA723FF291A3A7EBA5E0740F2DC687701D839B1DD0CF7D8FD7AB7C937
+ 4F86581FD8347302ECD67A82CE3AF79D63FAF7CB1DE08C7DE7D947FFA14E1C3B
+ A623000000004057BDF0D4E3AAE2E0011DF94B4E4E6EC199E7BC7394336C97EB
+ 5A73D2A2E5CA863D4E18F9A6C9E23E0061E64CB30F5E5AE4842C3CF30A5FDEFE
+ DFD0D0A0FEF1C707740400000000E88EA6A626F5888F73AB8567BCD9AC03E0CE
+ 79A5B9F3625BB4B984916F9E4CF641D9CD7DF0769C3E66FC4C5F16005E78F231
+ 75F470858E0000000000DDF5EC638FA8E3478FE8C85F468D9F65D601B08B00D1
+ 72E1682D69E49B269AFDA1ED8330CD7DA0E684444E4E7A7A56FAE0A1C3A73963
+ DF79FA9187F40800000000D0130DF5F5EA85A79ED091BFF42B1C314D725B6768
+ 1701A4B773E1584500618F1326910500F787737F7077332741C6D247DAF997DD
+ 382133B36FBE33F615D9AB72FBA68D3A0200000000F494AC05D0D2D2A223FF28
+ C8CFEF7BFE25EF99E00C5B735DA799DCD75D08B09B30BDE18EBB4DBE7932C4FA
+ 80E6A04C3327C21403FACC5F74B12F6FFFFFCFD3FEAC4C010000008057EDDAB6
+ 55EDD8B25947FE326FD165339DAE5DCEEB34775E1C4DACF91E916F9E2CEE8331
+ 076A0EDAC4A6FA11991B3D7AC60CA7F795E6E666F59F679ED411000000002051
+ FC7AB175CCD8E97601A05DEEAB9B890D89A52585FD8DBAC37C38FB03BA3FACFD
+ 1EF39A199B1310A986E4E4F7CF2CEA3BC877CFFF972F5FAA8E1D3EAC23000000
+ 0040A2BCF8CC53915D01FCA6D0C96D7372F2339DA1E4DD76EE6BF26161C6F69C
+ 61C7B1DED3253D2D00B8C5FA80665EBE9FDD64BE357EE3651F9C945E5090E38C
+ 7D459E4B0100000000249EEC0450BEEC351DF9478693DB5E70F9072739C39839
+ B06EC2CE9DA519F6B8C7CC374B24FB039B71AC3973C091F19C92F37CF7FC7F4D
+ 75B5FADF7F9ED7110000000020D1FCBA1BC09C05179AC700DCF9AF69C28EDD73
+ 0925DF3C15E483DB076BC6A6451E0118327CDC58A7F795FFBDF06F555F57A723
+ 0000000040A2BDF6D20BAAA6BA4A47FE31B868EC38A73379AF49EAEDD81E279D
+ 7CA3643007663721BD3938D35A0FBC6FFF41239CDE57B8FD1F00000000924B2E
+ BABEFAC2BF75E41F05838A863B9D49F22317BE9DE6CE858599B35BC2C9374CB6
+ 6807624E8039E03EE9E959E97DF35BE4E4F846C581FD6ACDCAE53A0200000000
+ 24CB7F7CF818409FFCB4E1E90E193A2D5A2EEC6E4925DF3451EC0F6C1F8069B1
+ 0E3432376BCE1B8AD23386643963DF90D5280100000000C927175FE522AC9FF4
+ CD28CC9EE1E4BACE30662EAC9B3D6F9AB0C73D26DFA8A7DC1F26DA078DF61EF9
+ DEAD9590E973CF1CE9F4BED1D2D2C2EDFF0000000090427EBC083B63CED9F2A8
+ 7BBB1CD869363B77B6C73677DC65892800D8A27D207300A6C9F73407DC1A8F18
+ 3DD557CFFF6FD9B04EEDDDB553470000000080647BE1E927221763FD44E7BA51
+ F3602B36CD2DDA5CB7C9374C34F70737E30E0F78F09051BE2A00BCFAFC737A04
+ 000000004885BD3B77A83D3BB6EBC81F060F1B63EE00B073617B2C4D486C98D7
+ 13CA7CA344707F38F381DD1F5CC6EE034EEF376898AF0A006B562CD323000000
+ 0040AA94FB2C172B183854725D73EBBFC9854D6F98FCD8349B3BEE36F9A68916
+ ED834B6F0ED67DC09156D0BFAF6F7600A8AAAC54DB366DD411000000002055D6
+ ACF0D74E6CF9B9FD24D76DCD7D9D66F270778E2CECF799B98431DF3859DC1FDE
+ 1C8019470EB6A070584E754D5AA1BCE0076B57ADF0DD73270000000010046B57
+ 2D57CDCDCD3AF2BEBA4655D4AF6048B633B4937D938B9BDCD86E49D3930280FD
+ E1DC1FB2A3D7EC038EBC6FDEFC4B86151616BADFE759DCFE0F00000000BD43EE
+ C8DEB165938EBC4F72DDF98B2EB6EF027017010C93139BF7D93A7A2D6EDD2D00
+ 44FB86D13E88998BD644643C716A89AFB600F4DB33270000000010247EBB283B
+ 69CA027B214061C6768B26D66BB1DEDFA1EE1600BACA7C68F321E5FB9AAA47DA
+ B091937CB300E0F1A347D4EEEDDB7404000000004835BFAD0330FC54CE6B7262
+ 930F0B3367B7A4497401C0FEC0D1C6EEB9C8810F2A1CEE9B0280DF7ED1000000
+ 002068D6AD5EA99A1A1B75E47D05834648CE6B127F3B27B69B30BDB0E71322D1
+ 0500C3FEF0EE033007DCDA061414FA6607009EFF0700000080DE555B53A3B66C
+ 5CAF23EFEB7F2AE76D93073BCD2E0608F7EB0997A80280F970D13EB01D9B036C
+ 2D02F47134E6FB670B409EFF0700000080DEB766B97F72B3DC01FD864BEEEB0C
+ 63E6C6BA093BB6E77A4CBE59B2B83FB4F9C0A697EFDD67FCC479038AB207E49E
+ 9AF2B68A03FBD581BD7B740400000000E82D6B56FAE7F1ECBCCC7E7992FB3AC3
+ 481E1C996C9B23BB5B5224A20010EDC3B9E7EC0391D6FA7D878F99DC570F3D8F
+ E7FF01000000C01B3694AF560DF5F53AF2BEE1A326DAB9AFE4C4EE3CD9E68E45
+ B4B92EE9490120D637B7E7631D84F4F2BDFBF4EF37283F32E303DCFE0F000000
+ 00DE20C9FFA6B56B74E47D7D0714E6395D240F769A9D1BC712EBB58EBEA6433D
+ 290074463E54ACD6AA6FBF41BEB8FDBFA5A585050001000000C043FC7491B67F
+ FF76B96FB45CD9B4A448640120D687741F841DA7E5F72BC89149AF3B7AB8421D
+ A938A42300000000406FDBB27EAD1E795F5EFE40C97DDBE4C34E13A617F6D888
+ 36D72D892A00B83F90C466CE8CED666E7948CBCBEFEF8B3B00F6EDDAA9470000
+ 0000002FD8EBA33C2D37AFAF3C0260B87364D3843D36DC71B724FA1180CE3E94
+ FB80D27272FBFAA200E0A75F2C000000000803D9A9ADBEAE4E47DE969BDB57EE
+ 00901CDC5C10B7991CD92DDA5CB725BA00E0667F587340662E32CECECCF3C523
+ 00140000000000C05B64ADB6FD7B76EBC8DBB2B2F3ED8BDF2637761703EC71C2
+ 25B200603EA8BB776B339F999BE78F3B0076EED023000000008057F8E571EDDC
+ EC5C7B0D00D159CEDCD9FBBA2C110580CE3E8CBC6E9AD13A979DC31D00000000
+ 0080EEF14BAE96999DEBBE03C068CD8F23516C9DBDDEA964DC0120CC38DA0794
+ B9D6969D95E3F93B00E4991279B60400000000E02DFB76EFD2236FCBCC8DDC01
+ 2039B8B9ED3F56BE6CF722DAFBBA2591058068CC41D94D985E6565E478FE0E00
+ 79A6449E2D010000000078CBDE5DFE785C3B3323EA1D0076AE6C5AD224BA00D0
+ D987B65F8B8C3333BD5F00F0CB2F1400000000848DAC01E0870BB6D94EF2EB74
+ ED72E253C376CC6BB15EEF9664DF0120EC0FDDEEC3A7676679FE11009EFF0700
+ 0000006FAA3A7952551E3FA623EFCACCCE8A76F1DBCE95DBE5CB89D6DD0240CC
+ 84DEE27E2DEAD764A547AA209EE697552501000000208CFC70D1362D23B20680
+ 2D565EED8E6DB1BE262EA9B803C04D3E686BEB9399EEFD470076520000000000
+ 00AFF243CE969399613F02605A4A75A700D0D9878CE7205ADF939ED3AE0AE229
+ F22C096B00000000008077F9E10E808CB6EBDF75296F8E219E3FA38D642C0218
+ 8DCC9B6644E2ACFA4A4F17008E1F39A26AAAAB750400000000F09A7D3EB8689B
+ 9E71D2BE03C030B13D678B35DF2DC97C04C07D20513FF8D1BA3E197AE849FBF7
+ EED1230000000080171DF041DE76F4685AA61EBAD9B9B29D43275CA20A005DF9
+ 80E680927A6089527DB2528F00000000005E243B01F84477F3E184E4CEC9BA03
+ C07D30669C900F9D4A3535DCFE0F000000005E56EBDFBCCDCE95A3E5D0099588
+ 0280EF92FAAEA8E5F97F00000000F0B4DA9A9AC802EE01D7E3DC3B996B000402
+ 0B000200000080B749F25F575BAB23DF4BDA45F65417007C77B7808F6F250100
+ 000080D0F0E9DDDB29CD91935D00908331CDF05511803B0000000000C0FB7CB8
+ 7E5BB43C39A9F9328F0074429E250100000000781B776F772E190500DF5EED8F
+ 86450001000000C0FB0270F7B63B7F4E783E9DCA3B00A27D78CF1708D8061000
+ 000000BCCF27176F7B352F4E4501C0F3497E47B8030000000000BC2F00176F25
+ 774E6AFEDC1B6B009883F2456180450001000000C0FB7C74F1B6D772621601EC
+ 048F000000000080F771F1B67314003AC1230000000000E07DEC02D0390A009D
+ A8A9AED223000000008057710740E7280074A2BEAE5E8F00000000005E555F5B
+ AB4788850200000000000021400100000000008010A000000000000040085000
+ 000000000020042800000000000010021400000000000008010A000000000000
+ 84000500000000000042800200000000000021400100000000008010A0000000
+ 0000004008500000000000002004280000000000001002140000000000000801
+ 0A00000000000084000500000000000042800200000000000021400100000000
+ 008010A000000000000040085000000000000020042800000000000010021400
+ 000000000008010A000000000000840005000000000000428002000000000000
+ 21400100000000008010A00000000000004008A4E9BE2BE46BCCD7492F4504D3
+ A73B2D43F7994ECBB25AB6D3729C966BF5B9F7FCE5E0FD454583BBF33952E2DA
+ F3CE542D2DCD3A0280D4EBD77F801A37F93495D7B7AF9E4122343536AA13478F
+ AA1D5B36ABBABA5A3D0B0000FCEA82CBAF5037DE7C8B8EBCA7A2E250CBFBAF1A
+ 729D33ACD14DFE0162FA3AA7D55BADC1694D4E6BD4BD24A52D562FA437E3B874
+ 27F196AF315F67127FD353000080043AFDDC0BD4076EF9BCCACE96FFDB443254
+ 9E38AEEEFBF1DDEAC5679ED2330000C08F2800748E470000C0A3FA170C54EFFF
+ F4E748FE934CEEB0F8D0676F5363264CD233000000C1440100003C6A66C93C95
+ 932B374B21D9323232D51B2EBA4447000000C1440100003C6AC8F0117A845458
+ 70C6592A2DCDB34FA4010000F418050000F0A8BEFDFAE9115261F0B0E16AE4D8
+ 713A020000081E0A0000E05139B9797A845429597CBA1E010000040F050000F0
+ A8DC3C0A00A956524A010000000417050000F028EE0048BD293367AABEFDFAEB
+ 08000020582800008047E5700740CAA5A5F551731696EA080000205828000080
+ 47E5720740AF2859BC448F000000828502000078147700F48EB90B4A557A7ABA
+ 8E000000828302000078544E6EAE1E2195F2FBF55393A7CFD411000040705000
+ 00008F621780DEC37680000020882800008007A5A5A57107402F2A29651D0000
+ 00103C140000C083B2B2B2232BD2A3778C1A375E0D193E5C47000000C1C0BF2E
+ 01C0835800B0F7152FE22E000000102C140000C08364213AF42ED60100000041
+ 430100003C68E0A0423D426F99515CC23A0C000020502800008007151416E911
+ 7A4B4646A69A59325F47000000FE470100003C682005004F2829E53100000010
+ 1C140000C08306155100F002D90E50B66404000008020A0000E04105AC01E009
+ 0585856ADCA4D374040000E06F140000C0830672078067942C663B400000100C
+ 140000C0835803C03B8A4B290000008060A00000001E23CF9C0F2CE41100AF98
+ 3475BA1A3070908E000000FC8B020000788C3CFF9F9DC3FEF35E52BC68B11E01
+ 0000F817050000F098311326EA11BCA26431DB01020000FFA30000001E4301C0
+ 7B66CF5FA832323275040000E04F140000C0632800784F4E6EAE9A3667AE8E00
+ 0000FC8902000078CC980993F4085E52C26E000000C0E72800008087A46764A8
+ 9163C7EA085E22EB00C80E0D0000007E450100003C64F4B8F13C6BEE5143478C
+ 54C3478DD611000080FF500000000F993EA7448FE045EC06000000FC8C020000
+ 78C8F4B9C57A042F2A661D000000E063140000C023FAF4E9A3A6CDA100E06553
+ 67CD51F97DFBEA080000C05F28000080478C993889E4D2E3D2D3D3D5ECF90B75
+ 040000E02F140000C02366CCE5F97F3F601D000000E057140000C023E62C58A4
+ 47F0B2B90B17471ED7000000F01BFE0503001E909D93C302803ED16FC0003569
+ EA741D010000F807050000F08019C5F3544646A68EE0753C06000000FC880200
+ 0078C0DC85A57A043F603B400000E047140000A097A5A5A5459E2B877F8C9D38
+ 49150E19A2230000007FA0000000BD6CF8A8D16AC8F0E13A825F942CE22E0000
+ 00E02F140000A09771F5DF9F5807000000F80D050000E8657317F1FCBF1FCD2C
+ 99AFB2B37374040000E07D140000A017B1FD9F7F656665A9E9C5253A020000F0
+ 3E0A0000D08BD8FECFDF780C000000F809050000E8456CFFE76FB210A0ECE200
+ 0000E007140000A097B0FD9FFFC95680A3C74FD411000080B7510000805EC2F6
+ 7FC150B298ED000100803F500000805EC2D5FF602829A500000000FC81020000
+ F412B6FF0B86C9D367AA7E0306E8080000C0BB280000402F60FBBFE0602D0700
+ 00E017140000A017B0FD5FB0B01D200000F0030A0000D00BD8FE2F58E62C58A8
+ D2333274040000E04D14000020C5B8653C78F2F2FBAA293367E9080000C09B28
+ 0000408AB1FD5F309594F218000000F0360A000090625CFD0F26B6030400005E
+ 47010000528CEDFF8269C498B16AD8C8513A020000F01E0A000090426CFF176C
+ C5DC050000003C8C020000A410DBFF051B8F010000002FA300000029C4F67FC1
+ 367D4EB1CACDCBD311000080B7500000801461FBBFE04BCFC850B3E62DD01100
+ 0080B7500000801409CBF67F7575B5EABB5FBA5547E153B298ED000100803751
+ 0000801409CBD5FF1D9B37A915FF7D45D5D7D5E99970295EB458A5A5F19F5700
+ 00E03DFC0B050052242CDBFF6DDDB841353636A84DEBD6E89970193070909A70
+ DA141D01000078070500004881306DFFB76DE3FA48BFA16C55A40F231E030000
+ 005E4401000052204CDBFFC91D0062DDEAF016008AD90E100000781005000048
+ 81B06CFF270B00EEDDB92332DEBC6E8D6A69698E8CC3461E01185858A4230000
+ 006FA00000004916A6EDFF6401C0A6A6A6C8B8A6BA5A6DDBB429320EA3E252B6
+ 7C040000DE42010000922C2CDBFF0973FBBF11EA75004A5907000000780B0500
+ 0048B2B05CFD17660140637D880B00B3E6CD579959593A020000E87D14000020
+ C9C2B2FD9F6877074079991E854F764EAE9A3E271C3B3F0000007FA000000049
+ 14A6EDFFEAEBEA5A1700348E1D39ACF6EFD9ADA3F0613B400000E02514000020
+ 89C2B4FDDFF6CD1B5B1700B485F93180E2454B228B40020000780105000048A2
+ B06CFF27DCB7FF1B1BCA56EB51F8C8E28F23C78CD511000040EFA20000004912
+ A6EDFF847B0140635D88EF00103C06000000BC82020000244998B6FF13B1EE00
+ 38B067B73A71ECA88EC28702000000F00A0A0000902461BAFA1F6D0140A3A5A5
+ 45AD5B1DDEBB004E9B314BF5EDD75F47000000BD87020000244998B6FF8BB500
+ A011E67500FAF4E9A3E62C58A423000080DE4301000092204CDBFF8958B7FF1B
+ EBCB56EA5138952C5EA247000000BD87020000244198B6FF13B1160034766CD9
+ AC6A6B6A74143E731696AAF4F4741D010000F40E0A0000900461DAFE4F6C59BF
+ 4E8FA293C70336AD2DD751F8C81A0093A7CFD011000040EFA00000000916B6ED
+ FFAA4E9E547B76EED4516CEBC3BE1D6029BB01000080DE45010000122C6CDBFF
+ 6D5EB746B5B434EB28B6F521DE0940B01D200000E86D14000020C1C274F55F6C
+ 5C53A6471DDBBC7E6D873B0504DDA871E3D5E061E1290C010000EFA100000009
+ 16A6EDFFC4C635F13DDB5F575BABB66DEA78B780A02B2E6537000000D07B2800
+ 004002856DFBBF969616B579DD5A1D752EEC8F01CCA3000000007A1105000048
+ A0B06DFFB76BDB5655535DA5A3CE6D285FAD47E134DDF9FD9022110000406FA0
+ 0000000914B6EDFFE27DFEDF087B0120333353CD2C99AF23000080D4A2000000
+ 0912B6EDFF4457F7F63F71EC98DABB73878EC289DD000000406FA10000000912
+ B6EDFF44BC0B00DAD695857C3BC0D225916211000040AA510000800409DBD5FF
+ CA13C7D5FE3DBB7514BF0D65E17E0C606061911A3B69B28E0000005287020000
+ 2448D8B6FFDBB4A63CB20B4057AD2F5BA947E15552CA6300000020F528000040
+ 02846DFB3FD1D505008D43FBF7ABA3872B74144E258BD90E100000A41E050000
+ 4880B06DFF27367671014043EE1A58BF3ADCEB004C9C324D0D18384847000000
+ A94101000012206CDBFF353737AB2DEBD7E9A8EBD6877C21C0C88E11217B6404
+ 0000F43E0A0000D04361DCFE6FC7964DAAAEB656475D17F60280601D00000090
+ 6A140000A087C2B8FD9F2C00D813BBB66D5535D5553A0AA7D9F31786EEB11100
+ 00D0BB280000400F85EDEABFD8D0C302803C42B0B1BC7B8B0806456E5E9E9A3A
+ 7B8E8E000000928F020000F450189FE5DEB4B6E7C9FB3A1E0360370000009052
+ 140000A007C2B8FDDFB12387235BF9F5D486B2D57A145EAC0300000052890200
+ 00F44018B7FFDBB4B63CB2955F4F6D5EBF56353636E8289C868D1C1559430200
+ 002015280000400F846DFB3FB1B187CFFF1B0DF5F56AEB86F53A0AAF92C5DC05
+ 0000005283020000745318B7FF1389DCC26FFD6AD601A0000000005285020000
+ 745318B7FFABABAD515B376ED051CFAD2F671D80A9B3E6A8BCFCBE3A02000048
+ 1E0A0000D04D61BCFA2FB7FF373536EAA8E73694AF4EC87A027E969E9EAE66CF
+ 5FA823000080E4A1000000DD14C6EDFFD6AE5AA14789515559A9B66DDAA8A3F0
+ 623B400000900A140000A01BC2B8FD9F5897E0028058B362991E8597DC4DD2A7
+ 0FFF49060000C9C5BF3600A01BC2B8FD5F7D5D9DDAB27E9D8E12A79C0280EA5F
+ 50A0264E9DA623000080E4A0000000DD10C6EDFF36AD2D570D0D89DFB77FFDEA
+ 95AAA9A94947E15552CA6E00000020B928000040178575FBBF443FFF6FD4D5D6
+ AA4D6BD7E828BCD80E1040A2C9A34539B9B9AADF8001AA70C810356CD4683566
+ C2443569EA74356DF65C3567C12235FFF433D5E273CE53675F7489BAE0F22BD4
+ 256F7BBBBAE21DD7A9B75CF71E75D1956F530BCF3C5B656567EB3F1180DFA5E9
+ BE2BE46BCCD7492F4504D3A73B2D43F7726F6C96D5E4FF39729C966BF5B9F7FC
+ E5E0FD454583BBF33952E2DAF3CE542D2DCD3A0200A5468C1EA3BE77DF1F7414
+ 1E77DCFCB1A41501AE7AF7FBD45BAF7F8F8EC2EB236FBF521D3974504700C24C
+ 8ACD79F9F96AC0A04235D069054E1B306850A42F70FA01050355A693984B729E
+ 9595A532B3A4CF76FAACC89CF4B2CB48229CAC3CA1BEF6994FA8ED2CDA0A8F93
+ 22D68D37DFA223EFA9A838D4F2FEAB865CE70C6B74ABB5FA3AA7D55B4D6EBB94
+ 5B2465FB25E9252995AD934C2FA4EFD2764ADD49BCE56BCCD799C4DFF4140000
+ 04DE256F7DBBBAFEA337E9281CE4D6FFF75E7EA16AA897FF1E25DEF439C5EA4B
+ DFFFB18EC2EBDEEF7F5B3DF3C8433A02104492980F182889BC49E64F25F4AF8F
+ 7582EFF49999DE596B46B66DFDF24D1FD611E04D14003AD79DC45BBEC67C9D49
+ FC4D4F010040E0DDF6ADEF876EDFF675AB57AAAF7CF2A33A4A3CF947EE2FFFF1
+ 64E86F335DFECA4BEA5B5FF8AC8E00F84D5A5A1F356870911A3E6A8CD346AB61
+ 2347A982429DD44792FE4295DFAF9F7EB7BFD4D6D4A8F75C7681F3EFE22EE51A
+ 404A5100E89C24ED008038B1FD5F72C81D06727529EC6696CCE7595BC0072489
+ 9F346DBA3AEBC28BD5DBDFFB01F5C92F7F557DEBDEFBD47D8F3DA3FEEF8F0FAA
+ 2F7EE707EAC64F7E465D7AD535EAF4732F5033E696A89163C7F936F917B29680
+ 3C9200C0DF28000040178471FB3FB176D54A3D4A9EF2E56C0728C9BF240A007A
+ 9FDCAA3F7AFC84C822786FBEF63AF5A1CFDEA6EEF8D1CFD43D0F3EA67EF9F013
+ EA6BFF778FFAC8E7BFA8AE7CD70DAAF4EC73D5980993025FC0EB93A0350500F4
+ 1E0A0000D00561DCFEAFA9B1516D5A53AEA3E4295FBE548FC28DDD0080D4EADB
+ AF7FE4EE9B375EF156F5EE8FDF1C79CCEB47BFFFABFAEDE3CFAA6FFFF27EF5A9
+ AF7C5D5DFBFE0FA9375C74A93A6DC6ACC88AFA00E057140000204E61DDFE6FCB
+ 8675AAAE4E1E4D4BAEED9B37AAEAAA933A0AAF92D2D323BF6B00124F92FD59F3
+ 1644AEE8DFFCE5AFA91F3EF05775EFC38F476ED97FCF4D9F8A6C7B276BBC0C1E
+ 369CBF87000289020000C44916741A327CB88EC22315B7FF8BA6A626B52E45DF
+ CBCB64AF6EB9ED1840CFF4EB3FE0F564FFFFDD19B9AA2FC9FE17BE7D77E48AFE
+ A2B3CF09E5FFA70308370A000010A7305EFD17C95E00D056C663001125A54BF4
+ 08403C24D9972BF757BCE3F564FF9E871E7B3DD93FEB0D91ABFA001076140000
+ 204E731785EFF9FFE6E666B5714D998E926FCD0A160214AC0300C426ABD1CB95
+ 7D93ECFFF80F7F8B24FBF2ECFE35EF23D907808E50000080388475FBBFAD1BD7
+ AB9AEA6A1D25DFEEEDDBD48963C774145E93A7CF60A13140CBCDCB57C58B16AB
+ 777CE0239195F77FF98F272357F64DB25F3474987E2700A033140000200E61DD
+ FE2FD5CFE4B7B4B4701780232DAD4F28779C0084EC953F6FC919EABA0F7F5C7D
+ FD67BF52BF7AE409F5B96F7C47BDE99A7746F6DE4F672B3A00E8360A00001087
+ B026636B572ED7A3D4613BC053643700200CE46E9705679CAD6EF8E827D45DF7
+ DCA7EE7DE87175CBD7EE52975E758D9A70DA9448410C009018FC3F2A007422AC
+ DBFFB5B434ABF565AB75943AE5DC01103167E122959E91A1232038060C1CA44A
+ CF3E57BDF7A64F45F6D9BFE7C1C7D4A7EFF8BABAF8AD57ABB11327B1FD1E0024
+ 11050000E84458B7FFDBB66993AAA9AED251EA1CDCB757551C3CA0A3F0CACBEF
+ ABA6CC98A523C0BF323333238BF65DFF919BD4777FFD80FAF9DF1E519FFCF257
+ D58557BC952D2F0120C52800004027D8FE2FB5641D001E0338A56431DB01C29F
+ 060D1EA2CEBBF44DEA335FFD66EBDEFB97BCEDED6AE4D871FA1D0080DE400100
+ 003A11C6EDFFC4DA5E2A000816023C857500E017B230DFD459B3232BF37FEBDE
+ FBD44FFEF4A07AFFA73FA7E69F7EA6CACEC9D5EF0200F4360A0000D081B06EFF
+ 2757E1D797ADD251EA952FA70020468C19AB868E18A923C05BFA1714A8332FB8
+ 48DDF4C5AFA85FFCFD9FEAFFFDE0A791BDF9C74C98A4DF0100F01A0A0000D081
+ B06EFFB773EB16555559A9A3D43B7AB842EDDDB94347E1565CCA6300F006599C
+ 4F56E57FEBF5EF89ECC7FFF3BF3DAA3E7AEBED6AC9B9E747B6EE0300781F0500
+ 00E84058B7FFEBADE7FF6DEC0670CABCC53C0680DE2349FFA4A9D3D5BB3EF451
+ F5A3DFFF35B22FFF55EF7E5F643F7E56EB0700FFA1000000318475FB3FD19BCF
+ FF1BAC0370CAB43973556E5E9E8E80E47327FD5FFBC93DEAB2ABDFA18A860ED3
+ EF0000F8150500008821ACDBFF8975AB57EA51EF59BB7245642D82B093475066
+ 962CD011901C24FD00100E1400002086B05EFDDFBD7D9BAA3C7E5C47BDA7F2C4
+ 71B563F3261D851BDB01221924E99F38655A24E9FFE1037F21E9078010A00000
+ 0031B0FD5FEF631D80534A4A9738C91AFFC946628C183D465DFBFE0F4592FE3B
+ 7F7A6F24E91F3C2C9C773B0140D8F0AF09008822ACDBFF092F2C0068B00EC029
+ 03060E52E34F3B4D4740D7E5E6E5AB732FBD5CDDF1A39FA9EFDDF707F5E66BAF
+ 23E9078010A2000000518475FB3FB16EF52A3DEA7DEBCB56A9A6A6261D855B49
+ 29BB01A06BE4AE9119734B225BF5FDFC6F8FA80F7CFAF3EAB419B3F4AB008030
+ A2000000518475FBBFBDBB76AA63470EEBA8F7D55457AB2DEBD7EA28DC4AD80E
+ 1071922BFB6FBBE1BDEA07BFFBB3BAFD7B3F52675E7091CACACED6AF0200C28C
+ 020000B8847AFBBF95CBF5C83B5807E09409A74D510585853A02DA1B336192FA
+ E2777E1059C5FF6D37DC18DA5D4C0000B15100000097506FFFB7AAF7B7FF732B
+ 5FBE548F50BC289C8529744C8A96E75DF6E6C8827E334BE6EB590000DAA30000
+ 002E61BDFA2FBCB40380B169ED1AD5505FAFA370631D004473C9DBDEAEDEFFA9
+ CFAACCCC70AE5B0200881F0500007009EBF67FFBF7EC56470F57E8C83B24F9DF
+ 50BE5A47E1367BFE02923CB43365E66C3D0200A063140000C012EEEDFFBC77FB
+ BFC13A00A764E7E4AA6973C2F9FB89D8468D1BAF470000748C02000058C2BCFD
+ 9F176FFF375807E075EC06005B7A46861A3672948E0000E818050000B08475FB
+ 3FB1CEC305806D1B3744B604C4A9750064D13740343735F3FB0000881B050000
+ D0C2BCFDDFA1FDFB54C5C1033AF29EA6A6264F1728524976A8183166AC8E1076
+ 2D2DCDAABAAA4A470000748C0200006861DEFE6FAD879FFF37CA97B30E805152
+ BA448F00A5AA2A2BF50800808E510000002DCCDBFFF9E1EA3A0B01BE8E750060
+ AB3A79428F0000E818050000D0C2BAFD9FF0F20280C6AE6D5B55E5F1E33A0A37
+ D9F62DBF5F3F1D21ECB8030000102F0A0000E008F3F67F470E1D8CAC01E075F2
+ AC3377019CD2A74F1F3567C1221D21ECAA4E9ED42300003A460100001CE1DEFE
+ 6FA5935CB7E8C8DBD650006825BB0100823B000000F1A20000008E306FFFB766
+ A57F926AEE00789D3CB222770200552729000000E2C3BF1C00845E98B7FF1365
+ CB96EA91F71DD8B33BF2C80294EADBAFBF9A3C7DA68E106655952C020800880F
+ 050000A117E6EDFFF63B0975C581FD3AF23E7954A18CED005B952C663B40F008
+ 0000207E140000845E98AFFE972FF7CFD57F8375005EC73A0010277904000010
+ 270A0000422FCCDBFF95F9B000C03A00AF1B3D7E822A1A3A4C47082BEE000000
+ C48B020080500BF3F67F723BFDDA15CB75E41FB206C0BEDDBB748492521E0308
+ 3B0A00008078510000106A61DEFE6FFBE68DAAF2C4711DF90B7701BCAE64318F
+ 01841DBB000000E245010040A88579FB3F3FADFEEFE6C7B50B92458A5872270B
+ C28B3B000000F1A2000020B4C2BEFD9F9F93687974411E6180529999996A66F1
+ 3C1D218CB8030000102F0A0000422BCCDBFF353636A80D65AB75E43FF2E8C2B6
+ 4D1B75041E0308B7E6E66655535DA523000062A3000020B4C27CF57F437999AA
+ ABABD5913FF118C0EB8A4B9744EE684178F1180000201E140000845698B7FF0B
+ 42F25CB6EC353DC2A0A2C16AECC4493A42189DA40000008803050000A114E6ED
+ FF441092E70DE5AB554343838E5052CA630061567DF2A41E0100101B050000A1
+ 14E6EDFFAAAB4EAA6D1B37E8C8BFEAEBEAD4C672FFAE639068AC03106E55274F
+ E8110000B1510000104A61DEFE6FEDCA15AAA9A94947FE56C63A00AD264E9DA6
+ FA170CD411C28647000000F1A000002074C2BEFD5F909E9D2F5F4601C090DFEB
+ E210AF6B11762C0208008807050000A113E6EDFF44F98A657AE47F5B37AE8F3C
+ D28053580720BCAA4E52000000748E020080D009F3D5FFA3872BD4DE9D3B74E4
+ 7FB2FFF99A0015347A6AF68245A15DDB22ECB8030000100F0A00004227CCDBFF
+ C9EDFF2D2D2D3A0A86B2E514008CDCBC3C3565D66C1D214C28000000E2410100
+ 40A8847DFBBFF20026CBE5015AD32011E6B11B4028D5D654EB110000B1510000
+ 102A61DEFE4F940770D5FC7DBB77A923870EEA0825A54BF40861D218909D3D00
+ 00C945010040A88479FBBF3D3BB6AB23158774141CF2484319BB01B41A366A74
+ 64A14B844B5363A31E0100101B050000A111F6EDFF82B4FABF5BF90A0A00B662
+ EE02081D0A004885DA6A1E3501FC8E020080D008FBF67FB20060509505F0D186
+ 9E601D80F0A10080643B71EC986A6868D01100BFA200002034C27CF5BFA5A559
+ AD5BB54247C173ECF061B57BFB361D61EAECB92A2FBFAF8E10068D4D1400905C
+ 2F3FF78C1E01F0330A00004223CCDBFF6D59BF5E559D3CA9A3600AE20287DD95
+ 9E9EAE66CD5FA023840177008493AC81225B401EDCB757EDDEB13DB2D6CBDE5D
+ 3BD5FEDDBBD481BD7B9CF97DAAE2C07E75F8E0C1C81A30522C3D71ECA8AA3C7E
+ 5C559E381EF9DAEAAA93AAA6BA5AD5D5D6A8FABABAC855FEC6C606D5D4D41479
+ CFDE9D3BD4DFEFFFB5FAD32F7FAEBF2B003F4BD37D57C8D798AF935E8A08A64F
+ 775A86EE6599ED2CAB653B2DC769B9569F7BCF5F0EDE5F5434B83B9F2325AE3D
+ EFCCC8953300FE26DBFFFDF21F4F84760780077F779FFAD3AF7EA1A36092DBDE
+ 6FB9F35B3AC2F34F3EAE7E7AD7D77484A01B35769CFACEAF1FD011FC4492EEEA
+ 9327D5C9934E32EE3449CAA5605B15199F38356E9D3B71EABD92B83BBD24EEFC
+ 3B1578DD05975FA16EBCF9161D794F45C5A196F75F35E43A6758A35BADD5D739
+ ADDE6AF2CC8D6CF122155EE9E52F7B8BD50BE9CD382EDD49BCE56BCCD799C4DF
+ F4140000785289931C7E36C4C9E1573FF571B566E5721D05536E5E7EA4C8D3A7
+ 0F37B709795EF7836FBD9CFF868584ECFE70F76FFFA8237885FC3DDCBF7777E4
+ 8AFCFE3D7BD4813DBBD5A103FB9D04DE49EC23497C25CFD503094401A073FC2B
+ 0940288479FB3FB9BAB4716DB98E82ABA6BA4A6D5EB74647E85F50A0264E9DAA
+ 23041D8F00F49E63470EABF565ABD5F34F3C16B9D3EA0777DCAE6EFDE07BD57B
+ 2F7FA3FAC05B2E555FFAD807D54FBEF9B5C86DF42F3DFBB4DAB8A62C725BFDF1
+ A34748FE01A41C0500008117F6EDFFD697AD520DF552480E3ED601684BEE7C41
+ 38500048AEA3872BD4DA552BD4738F3DAAFE70CFCFD4F7BFF245F5F90FBC5BBD
+ FBD2F3D587DEF626F5FF3EF161F5D36FDD1979DCEA957F3FABB66DDA1079B61E
+ 00BC86020080C00BFBF67F614A8ACB965100B095945200088B460A000923774D
+ AD5DB92292CC7FF3F39F5637BEE98DEAC357BD59DD71F3C7D4CFBFF30DF5F01F
+ EE57AF3EFF9CDABE7993AAAD913B7701C03F28000008BC305FFD17614A8A37AD
+ 5DA3EAEAE4313A88719326AB418387E80841D6C43680DD262BE24B42FFDBFFFB
+ A1FAC287DFA7DE73F985EA8E4F7D2C723BFFCAFFFD37B2F81E00040505000081
+ 17E6EDFF64A129B94A1516B275D5BA552B750451BC28DC05B0B0686E62B1C7AE
+ 90EDEDFEF5CF7FA8AF7DE613EA436FBB3C724BFF637FFB93DAB2611D8F530008
+ 340A0000024DB6FF9B3EB75847E1B366F9B2D0AD02CF3A006DB10E00708A5CC9
+ 7FEEF147D5373EF7A9C873FBF77CF7AEC8FF5FC87EF700101614000004DA8CE2
+ 79A1DDFB5F948530192E5BF69A1E41CC2A99AFB2B265275E20DC1EFDF3EFD5CF
+ BFFD0DB5EAB557B9CA0F20B428000008B4306FFF27C278357CE7D6AD91BDB771
+ 8A24FFD3E784F72E180000F03A0A0000022BECDBFF551CD8AF0EECDDA3A3F090
+ 471E780CA02D1E0300000082020080C00AFBF67FB2FA7F4B4B8B8EC2A57C0505
+ 009B1400A420060000C28D020080C00AFBF67F61BE0A1EA6AD0FE3513464A81A
+ 356EBC8E00004058510000105861DEFE4F94AF58A647E17368FFBE503EFED091
+ 92521E03000020EC28000008A4B06FFFB773EB6675FCE8111D8513EB00B455B2
+ 78891E010080B0A200002090C2BEFD5FF9F2F05EFD37780CA0ADD366CC54FDFA
+ 0FD011000008230A00000229ECDBFFB117BE526B562E0BED2288D1A4A5F55173
+ 162ED211000008230A00000227ECDBFF353535A975AB57EA28BC2A8F1F57DB37
+ 6FD41104EB000000106E140000044ED8B7FFDBB4768DAAADA9D151B8F128445B
+ 731696AAF4F4741D010080B0A100002070D8FE8FDBFF0D1E85682BBF6F5F75DA
+ 8C593A0200006143010040E0847EFB3F56BF6FB5A16CB56A6C6CD01144C9621E
+ 03000020AC2800000894B06FFF27B7FE6F5AB75647A8ABAB551BCACB74045152
+ CA7680000084150500008112F6EDFFD6AD5AA19A1A1B7504C11D116D8D1C3B4E
+ 0D193E42470000204C2800000894D06FFF47B2DB0EEB00B4C75D000000841305
+ 00008111F6EDFF0457BBDBDBB67183AAAE3AA92308D6010000209C280000088C
+ B06FFF77E2D851B56BDB561DC1686A6A526B562CD71184AC9391939BAB230000
+ 10161400000446D8AFFECBEDFF2D2D2D3A828D3B23DA92753266CD5BA0230000
+ 10161400000446E8B7FF5B46921B0B6B23B45752CA63000000840D0500008110
+ F6EDFF04496E6CFB76ED54472A0EE908A2B874B14A4BE39F0100008409FFE507
+ 100861DFFE6FFF9EDDAAE2C07E1DC14D1E8DE03180B60A0615AAF1A79DA62300
+ 0010061400000402DBFF91DC76A68C4724DA613B400000C285020000DF63FB3F
+ 16B98B07E7A83DD6010000205C280000F0BDB06FFF27B7B7AF659BBB4E1D3D5C
+ A176EFD8AE23880953A6AA82C2421D010080A0A30000C0F7C27EF57FFBE68DAA
+ F2C4711DA123DC05D05E71C8FFFE00001026140000F85ED8B7FFE3D9F6F8952D
+ 7B4D8F60942C661D000000C2820200005F63FB3F92DAAE58B76AA56A6E6ED611
+ C4ECF90B5566667877D00000204C280000F0B5B06FFFD7D8D8A0369697E9089D
+ A9AE3AA936AF5FAB2388EC9C5C3575F65C1D01008020A30000C0D7C2BEFDDF06
+ 27F9AFABABD511E2C13A00EDCD5BCC6E0000008401050000BEC5F67FDCFEDF1D
+ E5AC99D04EC9E233227F9F000040B0510000E05B61DFFE4F7035BBEB36AD2DE7
+ AE0917F97B3462CC581D010080A0A20000C0B7C27EF55F9E67DFB671838E10AF
+ 868606B57ED54A1DC1285EC46E000000041D050000BE15F6EDFFD6AE5CA19A9A
+ 9A7484AE285BBE4C8F60B01D200000C1470100802FB1FD1FCFFFF744F972CE9D
+ DBD45973547EBF7E3A02000041440100802F857DFB3F51C6F3FFDDB663CB1655
+ 79FCB88E20FAF4E9A366CF5FA82300001044140000F852D8B7FF3B7AB842EDDB
+ B55347E8AA96966655BE82C700DC4A4AD90E10008020A30000C077D8FEEFD4ED
+ FF2D2D2D3A427794F308453BC5A58B23770200008060E2BFF2007C87EDFFA400
+ C0EDFF3D55C63A00EDF4EDD75F4D9E3E534700002068280000F09DB05FFD17E5
+ 3CFFDF6307F7ED73DA5E1DC1282E6537000000828A020000DF09FBF67F7B766C
+ 8FAC01809E6321C5F64A280000001058140000F80ADBFF2916AF4B20D601686F
+ CC8489AA68C8501D01008020A10000C057D8FEEFD40280480C8A29D1F1180000
+ 00C144010080AF847DFB3FD9BE6EEDCA153A424F551E3FAEB66FDAA82318258B
+ D90E10008020A20000C037D8FE4FA92DEBD7ABEAAA933A422294AF601D00B799
+ C5F35476768E8E00004050500000E01B6CFFC7EDFFC9C0968AED656665A91925
+ F3740400008282020000DF60FB3FF6AE4F86F565AB546363838E60B01B000000
+ C1430100806F847DFBBFFABA3AB5694DB98E902875B5B56A6339E7D54DD60190
+ C76E00004070500000E00B6CFF77EA4A75430357AA93A17C398F01B80D2A1AAC
+ C64E9CA42300001004140000F802DBFF91A426138F5644C776800000040B0500
+ 00BE10F6EDFF048BD525CFD60DEB554D75958E609494B21D2000004142010080
+ E7B1FD9F52272B4FA8ED9B37E90889D6D4D4A4D6AE5CA1231893A64D57FD0B0A
+ 74040000FC8E020000CF63FB3FA5D62C5FA65A5A9A758464608BC5F628BE0100
+ 102C140000781E09883CA3CEEDFFC9C6398EAE6431EB0000001014140000785E
+ D8B7FF135C9D4EBEBD3B77A8A3872B740463CE8245A15F80130080A0A00000C0
+ D3D8FE4FA98A03FBD5C17D7B75846469696961A7852872F3F2D59459B3750400
+ 00FC8C0200004F63FBBF53ABFF4B728AE463A785E84AD80E10008040A00000C0
+ D3D8FE4F71553A8538D7D1952C663B4000008280020000CF6205F253CA572CD3
+ 2324DB918A436ACF8EED3A82213B710C731A0000F0370A00003C8BEDFF94DAB9
+ 75B33A7EF4888E900A145CA22B59C463000000F81D0500009EC5D57FB9259D64
+ 34D5D871213AB6030400C0FF280000F02CB6FF2319ED0D6B57AE502D2DCD3A82
+ 316D4E716447000000E05F1400007812DBFF29D5D4D4A4D6AD5EA923A44A75D5
+ 49B579DD3A1DC1484F4F57B3E72FD0110000F0230A00003C89EDFF94DAB4768D
+ AAADA9D1115289DD00A22B296537000000FC8C0200004F62FB3F4942B9FDBFB7
+ 9471EEA32A2E5DA2D2D2F8A70300007EC57FC501780EDBFF9DC255E8DEB3694D
+ B9AAAFABD3118CFE05056AE2D4A93A0200007E93A6FBAE90AF315F27BD14114C
+ 9FEEB40CDDCBBDBB5956CB765A8ED372AD3EF79EBF1CBCBFA86870773E474A5C
+ 7BDE992C0605A4D888D163D4F7EEFB838EC2EB819FFF9F6A6A6CD2516C2DCEFF
+ E2D1D212C7FBE2798F23AE3FCB11D7BB12FC3DE3F9F3E2F993DE74CD3BD590E1
+ 237404E3EFF7FF5AFDF9D7F7EA085E210B34FEFAD1A7748468FEF4AB5FA8077F
+ 779F8E0004D105975FA16EBCF9161D794F45C5A196F75F35E43A6728CF784AAB
+ B57AB9F2506FB506A7C93F041B752F49A9FC13C6F442FA78FE59D3AA3B89B77C
+ 8DF93A93F89B9E0200801EBBE4AD6F57D77FF4261D01F092ED9B36AACF7FF03D
+ 3A82575000E81C050020F82800748E470000780EDBFF01DE356EF2696A50D160
+ 1D0100003FA10000C053D8FE0FF0BEE245ACD10100801F510000E0296CFF0778
+ 5FC962B6030400C08F280000F014B6FF03BC6FE6BCF92A2B5B96F60100007E42
+ 01008067B0FD1FE00FD9D9396AFA1C1ED50100C06F280000F08CE1A346AB21C3
+ 87EB08809795942ED1230000E017140000780657FF01FF907500E4AE1D0000E0
+ 1F1400007806DBFF01FE513474981A356EBC8E0000801F500000E0096CFF07F8
+ 4F318F010000E02B1400007802DBFF01FE5352CA76800000F8090500009EC0F6
+ 7F80FF4C993953F5EB3F40470000C0EB280000E8756CFF07F8535A5A1F357BC1
+ 221D010000AFA30000A0D7B1FD1FE05F258B5907000000BFA00000A0D771F51F
+ F02FF9FB9B9E9EAE230000E065140000F43AB6FF03FC2BBF6F5F75DA8C593A02
+ 00005E46010040AF62FB3FC0FFD80E1000007FA00000A057B1FD1FE07F258BD9
+ 0E1000003FA00000A057B1FD1FE07FA3C68E63214F00007C800200805EC3F67F
+ 4070142FE231000000BC8E0200805EC3F67F4070F018000000DE47010040AFE1
+ EA3F101C338A4B544E6EAE8E00008017510000D06BD8FE0F080E59CC73D6BC05
+ 3A0200005E44010040AF60FB3F207858070000006FA30000A057B0FD1F103C25
+ A54B545A1AFFB40000C0ABF8AF34805EC1F67F40F0141416AAF19327EB080000
+ 780D05000029C7F67F40701597F2180000005E45010040CAB1FD1F105C6C0708
+ 00807751000090725CFD07826BE29469AA6050A18E0000809750000090726CFF
+ 07045BF1228A7C0000781105000029C5F67F40F0B10E000000DE440100404AB1
+ FD1F107CB3E72F549999FC3D0700C06B2800004829B6FF03822F2737574D9D3D
+ 57470000C02B2800004819B6FF03C2A384C7000000F01C0A00005286EDFF80F0
+ 98B7E48C48D10F0000780705000029C3D57F203C860C1FA1868F1EA3230000E0
+ 05140000A40CDBFF01E1C263000000780B05000029C1F67F40F894949EAE4700
+ 00C00B2800004809B6FF03C267EAEC392ABF6F5F1D010080DE460100404AB0FD
+ 1F103E7DFAF451B3172CD2110000E86D140000241DDBFF01E1C53A0000007807
+ 05000049C7F67F4078CD5DB4387227000000E87DFC171940D271F51F08AF7EFD
+ 07A849D366E8080000F4260A0000928EEDFF8070E331000000BC81020080A462
+ FB3F00258B29000000E0051400002415DBFF01183361922A1A3254470000A0B7
+ 50000090546CFF0740142F622D1000007A1B05000049C3F67F008C92C5A7EB11
+ 0000E82D140000240DDBFF01306696CC57D9D9393A020000BD81020080A4E1EA
+ 3F0023332B4BCD2899A7230000D01B280000481AB6FF03602B663B4000007A15
+ 05000049C1F67F00DCE6952E89AC0D0200007A0705000049C1F67F00DC060D1E
+ A2C64C98A8230000906A1400002405DBFF018886C7000000E83D140000241CDB
+ FF018885ED000100E83D140000241CDBFF018865F2B419AA7F41818E0000402A
+ 51000090705CFD07108BDC213467018F080100D01B2800004838B6FF03D0111E
+ 030000A0775000009050B2FDDFB4396CFF0720B6B90B17A9F48C0C1D01008054
+ A1000020A164FBBFCC4CB6FF03105B6E5EBE9A3A73B68E000040AA5000009050
+ 6CFF07201E6C07080040EA51000090306CFF07205EAC03000040EA5100009030
+ 6CFF07205E23468F51C3468ED211000048050A00001286ABFF00BA82C7000000
+ 482D0A00001286EDFF0074450905000000522A4DF75D215F63BE4E7A2922983E
+ DD69B2AF8FF4B20C7896D5B29D96E3B45CABCFBDE72F07EF2F2A1ADC9DCF9112
+ D79E77A66A6969D611805864FBBF7B1F7E821D00B48FBCFD4A75FCE8111D218C
+ 3EFE852FABD2B3CFD511A2696A6C54EFBBE26255535DAD67D05DB2B3C2AF1F7D
+ 4A4788E64FBFFA857AF077F7E90840105D70F915EAC69B6FD191F754541C6A79
+ FF5543AE738635BAD55A7D9DD3EAADD6E0B426A735EA5E92D216AB17D29B715C
+ B803004042B0FDDFEB766EDDA28E1C3A18496E68E16DAB5E7B55FF462096F48C
+ 0C356BDE021D01008064A300002021D8FEEF75E5CB97EA11C26CF5D2FFE9113A
+ C26E000000A40E0500003DC6F67F6D952D7B4D8F1066870F1E547B766CD71162
+ 917500D2D2F8E7080000A9C07F7101F418DBFFBDAEA9A949AD5BBD5247083BEE
+ 02E85CFF82816AE294A93A020000C9440100408F71F5FF759BD6AE51B535B296
+ 0BA05807204E6C070800406A500000D0636CFFF7BAF2E5DCFE8FD7C9DD208D8D
+ B2882F3A52B29802000000A9400100408FC8F67FD3E614EB0865CB580010AFAB
+ ABAD551BCA56EB08B18C9F3C450D2C2CD211000048160A00007A84EDFF5E27B7
+ FE6F5EBF5647C0293C06109FE2521E25020020D9280000E811B6FF7BDDDA95CB
+ 23FBBF033616028C4F4929DB010200906C140000741BDBFFB555B69CDBFFD1DE
+ 8E2D5BD489634775845866CD5FA032B3B27404000092810200806E63FBBFB6CA
+ 96B10020DA6B696956AB5EE32E80CE6467E7A8E9AC2702004052510000D06D5C
+ FD7FDDB12387D59E1DDB7504B4C56300F12959CC630000002413050000DDC6F6
+ 7FAF93D5FF5B5A5A7404B4C5DD21F129295D1279B40800002407050000DDC2F6
+ 7F6D95AFE0F97FC4267788ECD8B259478865F0B0E16AE4D8713A020000894601
+ 0040B7B0FD5F5BE52C00884EF018407CE42E000000901C140000740BDBFFBD6E
+ EFAE9DEAF0C1833A02A2A300101FD60100002079280000E832B6FF6BAB9CE7BB
+ 1187F565AB547D5D9D8E10CB9499B354DF7EFD7504000012890200802E63FBBF
+ B6CAB8FD1F7168A8AF57EB56ADD01162494BEBA3E62C58A42300009048140000
+ 741957FF5F277BBCAF5DB95C4740C756F118405C4A16B30E000000C940010040
+ 97B1FDDFEBB6AC5FAFAA4E9ED411D0B1D5AFBDAA47E8881419D3D3D375040000
+ 12850200802EC9CE66FB3F1BFBBBA32BF6ECDCA18E541CD21162C9EFD74F4D9E
+ 3E434700002051280000E892E9C5256CFF67295B4E0100F16B69696137803895
+ 94B21B000000894601004097142FE2F97F435674DFB4A65C47407C2800C487ED
+ 000100483C0A0000E2C6F67F6DC9B66E0D0D0D3A02E2238F8DC89D00E8D8A871
+ E3D5E061EC36020040225100001037B6FF6B8BE7FFD11D95C78FAB6D1B37E808
+ 1D292E65370000001289020080B871F5BFADB2E54BF508E81A1E0388CF3C0A00
+ 000024140500007163FBBFD7559E38AE766CDEAC23A06B56B11D605CA617CF53
+ D939393A0200003D450100405CD8FEAFADF2E5CB544B4BB38E80AED9B4768DAA
+ ADA9D11162911D476696CCD7110000E8290A0000E2C2F67F6D95F3FC3F7AA0B1
+ B141AD59B95C47E808BB0100009038140000C485EDFFDA2A5B4E01003DC36300
+ F129295D12D981040000F41C0500009D62FBBFB60EEEDB1769404FB010607C06
+ 1616A9B19326EB080000F4040500009D62FBBFB6B8FA8F4438B067B73AB49F42
+ 523C4A4A790C00008044A00000A0535CFD6F8BE7FF91082D2D2D3C0610A792C5
+ 6C0708004022500000D029B6FF6BAB7CC5323D027A86C700E23369EA743560E0
+ 201D010080EEA20000A0436CFFD7D6F64D1B55E5F1E33A027A66CD8A65AAB999
+ ED24E341211200809EA30000A0436CFFD756D9F2A57A04F45CD5C9936AF3BA35
+ 3A424758070000809EA30000A0436CFFD75619CFFF23C1780C203EB3E72F5419
+ 1914230100E8090A00006262FBBFB61A1B1BD486B2D53A021263F56B1400E291
+ 9B97A7A6CE9EA3230000D01D140000C4C4F67F6D6D282F537575B53A021263CB
+ 8675914701D03976030000A0672800008889ABFF6D95F3FC3F92A0A9A989DFAD
+ 38B10E0000003D430100404CACBADD16CFFF23595807203EC3468E8ADC990400
+ 00BA87020080A8D8FEAFADEAAA936ADBC60D3A02128B0240FC4A167317000000
+ DD45010040546CFFD7D69A15CB23B76A03C97068FF3EB56FF72E1DA123140000
+ 00E83E0A0000A22A5EC8EDFFB6329ED146927117407CA6CE9AA3F2F2FBEA0800
+ 007405050000ED44B6FF5BC46ADBB6729EFF4792AD7EED553D4247D2D3D3D5EC
+ F90B75040000BA8202008076D8FEAFAD23870E727B36926ECDCAE5AAA9B15147
+ E808DB010200D03D140000B4C3F67F6D952D5BAA5A5A5A740424476D4D8DDAB0
+ A64C47E848F1A225AA4F1FFE0903004057F15F4F00EDB0FD5F5B65CBB9FD1FA9
+ C13A00F1E93760809A38759A8E000040BC2800006883EDFFDA2B5FB14C8F80E4
+ 621D80F89594B21B0000005D450100401B6CFFD7D6EEEDDBD4B1C387750424D7
+ B64D9B54E589E33A4247D80E100080AEA30000A00DB6FF6BAB8CD5FF91422D2D
+ CDAA6C29BF73F1183B71922A1C3244470000201E140000B462FBBFF6CA962FD5
+ 232035562DE5318078C962800000207E140000B462FBBFB69A9B9BD5BA552B74
+ 04A4067700C4AFA494020000005D410100402BB6FF6B6BD3DA7255535DAD2320
+ 358E541C8AAC3D81CECD2C99AFB2B2B3750400003A430100402BB6FF6BAB6C19
+ B7FFA377AC623780B848F23F636E898E000040672800008860FBBFF6CA97732B
+ 367AC7EAA5FFD3237486DD000000881F050000116CFFD7565D6D8DDABC6E9D8E
+ 80D45ABF7A956A6868D0113A52527A7A6401530000D0390A000022D8FEAFADB5
+ AB56AAC6461230F48EBABA5AB57EF54A1DA123B215E0E8F113740400003A4201
+ 0000DBFF4551B68CDBFFD1BB56BDC66300F16237000000E243010000DBFF4551
+ BE9C0500D1BB5807207EAC030000407C28000060FB3F9713C78EAA5DDBB6EA08
+ E81DBBB66D51C78E1CD6113A3279FA4CD56FC0001D0100805828000060FB3F17
+ B9FDBFA5A5454740EF90DF41EE02884FE43126D6310100A0531400809063FBBF
+ F6CA9671FB3FBC810240FC6437000000D0310A0040C8B1FD5F7B3CFF0FAF58BD
+ 94C528E33567E122959E91A1230000100D050020E4D8FEAFAD7DBB77A98A8307
+ 7404F42E598F62FBA68D3A4247F2F2FBAA293366E9080000444301000831B6FF
+ 6B8FABFFF01A1E03885FC962FEFF0C00808E500000428CEDFFDA930500012F59
+ F5DAAB7A84CEB00E0000001DA300008418DBFFB525ABAEAF59B95C4780376C5C
+ 53A6EAEA6A75848E8C1833560D1D3152470000C08D020010626CFFD7D6D68DEB
+ 555565A58E006F686868506B57AED0113A535CCA63000000C44201000829B6FF
+ 6B8FEDFFE055AC0310BF798B790C0000805828000021C5F67FEDF1FC3FBC8A75
+ 00E2377D4EB1CACDCBD3110000B0510000428AEDFFDA6AA8AF8F3C6B0D78D1BE
+ 5D3BD5E1830775848EA46764A899250B740400006C140080103AB5FD1F0B00DA
+ D697AD8A1401002F92052A790C207E6C0708004074140080103AB5FDDF081D41
+ 70FB3FBC8EC700E25752BA44A5A5F14F1C0000DCF8AF2310426CFFD75EF97216
+ 0084B7C9EFA8DC0980CE0D1838488D3FED341D01000083020010426CFFD7D6C9
+ CA136AFBE64D3A02BC497E4FB76C58A72374A6A494DD00000070A30000840CDB
+ FFB5B766F932D5DCDCAC23C0BB56F31840DC4AD80E1000807628000021C3F67F
+ ED9571FB3F7C828500E337E1B429AAA0B050470000405000004286EDFFDA6301
+ 40F8C5A6756B554D75B58ED09962763B0100A00D0A004088B0FD5F7B87F6EF53
+ 07F7EDD511E06D4D8D8D2C58D905AC030000405B1400801061FBBFF6CA96B1B2
+ 3AFC85C700E2377BFE021E790200C04201000811B6FF6BAF6C39B7FFC35F2800
+ C42F3B2797454F0100B05000004284EDFFDA5BB362991E01FE7060EF9E48437C
+ D80D000080D75100004282EDFFDADBB165B33A71EC988E00FFE02E80F8C93A00
+ B2FE090000A000008406DBFFB5C7EAFFF02B0A00F11B327CB81A3166AC8E0000
+ 08370A004048B0FD5F7B65ACA60E9F2A5FBE4C353737EB089D29295DA2470000
+ 841B05002004D8FEAF3DD94E6DFDEA953A02FCA5A6BA4A6D5C53AE2374867500
+ 00003885020010026CFFD7DE863565AAAEB6564780FFF01840FCA6CC9CADF2FB
+ F5D3110000E14501000801B6FF6BAF7C19B7FFC3DF56BFF6AA1EA1337DFAF451
+ 73162CD2110000E14501000801B6FF6BAF6C390B00C2DFB66E5CAFAA2A2B7584
+ CEC86E000000841D050020E0D8FEAF3D797E7AEB86F53A02FC491601A490153F
+ 2984CA9D0000008419FF2504028EEDFFDA5BBB72856A6A6AD211E05FAC0310BF
+ BEFDFAABC9D367EA08008070A20000041CDBFFB557B68CABA60886D5AF5100E8
+ 8A92C56C07080008370A004080B1FD5F7465CB590010C15071F080DABB73878E
+ D019D6010000841D050020C0D8FEAFBDA3872B489810283C0610BFD1E327A8A2
+ A1C374040040F8500000028CEDFFDA93DBFF5B5A5A7404F8DF2AB603EC929252
+ 1E0300008417050020C0D8FEAFBDB265DCFE8F6059BB6A856A6A6CD4113A53B2
+ 98C7000000E14501000828B6FF8BAE9CE7FF113075B5B56A7DF96A1DA133338A
+ E7A9EC9C1C1D0100102E1400808062FBBFF676EFD81E590300081A1E03889FFC
+ FFE2CCE2793A0200205C28000001C5F67FED95B3FD1F028A8500BB86C7000000
+ 614501000820B6FF8B8EEDFF10543B366F56278E1DD3113A535CBA24F2FF9300
+ 00840D05002080D8FEAFBDE6E666B56ED54A1D01C1D2D2D2CC5D005D30A868B0
+ 1A3B71928E0000080F0A004000B1FD5F7B9BD7AF55D555277504040F0580AE29
+ 29E531000040F85000000288EDFFDAE3F97F04DDEA651400BA82750000006144
+ 01000818B6FF8BAE6C19CFFF23D88E1D3EAC766EDDAC237466E2D469AA7FC140
+ 1D0100100E1400808061FBBFF6EAEA6AD5A6B56B740404178F01C44F16012CE6
+ 6E290040C85000000286EDFFDA93C5FF1A1B1B740404D7AAD728007405EB0000
+ 00C286020010206CFF175D19CFFF2324D697AD520DF5F53A4267662F58A83232
+ B8630A00101E1400800061FBBFE8CA97F3FC3FC24192FFB5AB56E8089DC9CDCB
+ 575366CDD6110000C14701000810B6FF6BEFC4B1636AE7D6AD3A02828F7500BA
+ 661EBB0100004284020010206CFFD79E5CFD6F6969D611107CAB5E7B558F108F
+ 92D2257A040040F05100000282EDFFA22B5BCEF3FF08973D3BB6ABA3872B7484
+ CE0C1B353AF2F8140000614001000808B6FF8BAE6C19CFFF235C5A5A5AD46A76
+ 03E89262EE020000840405002020D8FEAFBDFD7B76AB8A03FB750484C7AAA53C
+ 06D015AC030000080B0A004000B0FD5F7465ACFE8F9092AD2FE54E00C467EAEC
+ B9911D010000083A0A004000B0FD5F74E54E12048451E5F1E36ADBA68D3A4267
+ D2D3D3D5EC050B75040040705100000280EDFFDA93AB9F6B562CD711103E6C07
+ D83525A53C060000083E0A004000B0FD5F7B72F5F364E5091D01E1B39AED00BB
+ A478D1629596C63F8B0000C1C67FE98000183D7E821EC1E0F67F84DDC635E5AA
+ AEB64647E84CFF820235FEB4D374040040305100007C4E1600EC3760808E60AC
+ E2F667845C6363038FC174D1D01123F508008060A20000F85C5676B6CAC8C8D4
+ 1144D5C9936A7DD92A1D01E1F5D2B3CFE811E231B0B0488F000008260A0080CF
+ D5D7D5A9E3478FE808E2A5679E544D8D8D3A02C2EBD5E79F5315070FE8089D39
+ 7CE8A01EF94F6D4D0DFFBFD78993C78FEB110084170500C0E764B5FB652FBFA4
+ 23ECDCBA593DF0F39FE8080837790CE0EB9FBD591D3D5CA167108B6C9DB86ED5
+ 4A1DF94F4B4BB3AF0B18A940310C00944AD37D57C8D798AF935E8A08A64F775A
+ 86EEE59EE42CAB653B2DC769B9569F7BCF5F0EDE5F5434B83B9F2325AE3DEFCC
+ C87F54012F933DAC2F7FFB3BD4EC058B54D19061A15A13A0A9A9511D3B7C3892
+ E0BCFCDC33EAC5A79F540D0D0DFA550022372F5F9D79E1456AE11967A9418387
+ A882418358F15E3B5A7148EDD8BA45FDE537F7AABD3B77E8597F7AC7FB3FACDE
+ 74EDBB74049BDC29F7C9EBAE5135D5557A0640105D70F915EAC69B6FD191F754
+ 541C6A79FF5543AE7386B24AAFB45AABAF735ABDD5E41FB44D4E93DBBBA497A4
+ B4C5EA85F4661C97EE24DEF235E6EB4CE26F7A0A00000000BD400A3DB7DC7997
+ 9A3EA758CF40C896B03FBDEB4EB5ECE517F50C80A0A200D0B9EE24DEF235E6EB
+ 4CE26F7A0A00000000BD447686993EB7448D1E375E150E19AAD233E49F64E174
+ E2D831557160BF5AF1EA2BAAAAB252CF0208320A009DEB4EE22D5F63BECE24FE
+ A6A700000000000048390A009D93A41D0000000000041C050000000000004280
+ 0200000000000021400100000000008010A00000000000004008500000000000
+ 0020042800000000000010021400000000000008010A00000000000084000500
+ 000000000042800200000000000021400100000000008010A000000000000040
+ 085000000000000020042800000000000010021400000000000008010A000000
+ 00000084000500000000000042800200000000000021400100000000008010A0
+ 0000000000004008500000000000002004280000000000001002140000000000
+ 0008010A00000000000084000500000000000042800200000000000021400100
+ 000000008010A000000000000040085000000000000020042800000000000010
+ 021400000000000008010A000000000000840005000000000000428002000000
+ 00000021400100000000008010A0000000000000400850000000000000200428
+ 00000000000010021400000000000008010A0000000000008400050000000000
+ 0042800200000000000021400100000000008010A00000000000004008500000
+ 0000000020042800000000000010021400000000000008010A00000000000084
+ 000500000000000042800200000000000021400100000000008010A000000000
+ 000040085000000000000020042800000000000010021400000000000008010A
+ 0000000000008400050000000000004280020000000000002140010000000000
+ 8010A00000000000004008500000000000002004280000000000001002140000
+ 0000000008010A00000000000084000500000000000042800200000000000021
+ 400100000000008010A000000000000040085000000000000020042800000000
+ 000010021400000000000008010A000000000000840005000000000000428002
+ 00000000000021400100000000008010A0000000000000400850000000000000
+ 20042800000000000010021400000000000008010A0000000000008400050000
+ 0000000042800200000000000021400100000000008010A00000000000004008
+ 5000000000000020042800000000000010021400000000000008010A00000000
+ 00008400050000000000004280020000000000C0FFD2D2F400B15000E8445656
+ 961E0100000000BC2A2737578F100B05804EE4E4E5E91100000000C0AB7272C9
+ DD3A4301A013549100000000C0FBC8DD3A4701A013B9DC0100000000009E4701
+ A07314003AC16D2400000000E07DD93914003A4301A013DC010000000000DEC7
+ 1D009DA300D00916010400000000EFA300D0390A009DE00E0000000000F03E1E
+ 01E81C05804EB0060000000000781F7700748E024027B8030000000000BC8F02
+ 40E77AA300D06235CFA3000000000000DEE7A3BBB77B2D274E4501C017897E2C
+ 3C020000000000DE979D93A347BE95F4DC39957700443B18CF1707B803000000
+ 0000BC2D2DAD8FCACCCAD291A7F56A5E9C8C0280FDE13D9FE07726272F5F8F00
+ 000000005E24CFFFA7A5A5E9C8D7929A4FB3086027F2F22900000000008097E5
+ F7EBA747E848B20B0052B130CD6853C5C8686E6ED2434F1A326C841E01000000
+ 00BC68F8A8D17AE45D03B39B1BF5D070E7C9EEDC39E1527D0740FB83C9EF5BAB
+ 479E346870511016930000000080C0F24301A03EAB5FB4DC37A909BF9B071E01
+ A8F17401401693183E7A8C8E00000000005EE3870240536DDCB96FD28A028928
+ 00F4ECC3353479BA00204650000000000000CFF2C345DBE69EE7BE3D2E0C24EB
+ 0E00F960F68733E3761FB8A9A691020000000000A0DB7CF108405343B4DCD7CE
+ 95A3E5D00995A80240573E9C39B0486B68A9F3410160AC1E0100000000BC243D
+ 2343150D1DA623EF6A68AA96DCB74D3EECB47875E5BD3125730D00F74145FDC0
+ 75F5B5DC010000000000E896A12346AAF4F4741D7957637DD43B00849D2BDB39
+ 74C225BA0010EB839A83B05F8FC4F535DE2F000C1FEDFDDB4900000000208CFC
+ 70FBBFA8AF8BE4BE51F362DDA28935DF2DDD290074F601E2F980ADEF6968F6F6
+ 2E00223B27570D1A3C44470000000000AF183ECA1F776CEB0280D1A5BC398678
+ FE8C3692F908402CF2215B5B7D6D5D8D4C7ADDC831AC0300000000005EE3973B
+ B6EB1A7AB406404274B700603E68471FD8FD5AD4AFA9AFABF2FC1D00C20FDB4A
+ 0000000040D8F8E61180DA4801C0162BAF76C7B6585F139754DC01201F2CE687
+ ACADA9F4450180850001000000C07B46F8E41180BA9AAA6877BFDBB972BB7C39
+ D192B10860471FDC7E2D32AEA9A6000000000000E8BA9CDC5C3560D0201D795B
+ D5A9DCB75D4E7C6AD88E792DD6EBDD92EC3B00EC0F6D7F78D3ABDA9A93BE5803
+ 60046B000000000080A7C802806969693AF2B6EAEA63F6C56F3B3776B7A44964
+ 01C0FEA0661CEBC39B036BA93E79DC170580C2C14354FF82021D01000000007A
+ DBE41933F5C8FB6A4E9E90DCB759379313BB9939FBB568EFEB964414003AFB30
+ F2BA69C28E5B4E561EF5450140AA4A33E696E80800000000D0DBFC94A3B9725F
+ 931F0B3B47EE4867AF772A197700B87BB736F3C78F1DF2C51A006266C97C3D02
+ 00000000F4B6E9738AF5C8FB4E9CA8705FFCEE2C67EE2CB7EEB254AC0160C8D8
+ 3411191F3AB8F3E4A9D0FB6614CFD32300000000406F1A3361A2EA3760808EBC
+ AF62FFF62AA76B9713EB66D8E3844B7401A0B30F6B5E3707D9B271FDABC74F36
+ 1EAE8BCC7ADCD0112355E190213A0200000000F496E97EBAFDDFC979376E5C7A
+ DC19B6E6C2326FF5B174F67A9724AA00E0FE50EE0372B7D7173D686E6E6EAA6C
+ DAEF8C3D4FD60198C95D0000000000D0EBFCF4FC7FE389C6FD92FB3AC3F639F1
+ EBB13461E66CEEB85B92B106809BF9F0E6753B8ECC1D3B7AE080F47EC0630000
+ 000000D0BBE4E2ECB4397375E47DC78F1C3417BDDBE5C3562FECB1116DAE5B92
+ B9068039A068CDD672A462EF3E3DF6BC1973290000000000406F1A3B7192EADB
+ AFBF8EBCAFE2F06E2900B4CB853B6849D1930240AC0F65CFBBDF6362E9CD2D0E
+ CDFBF66EF64D0140D60018366AB48E0000000000A9E6A7E7FFC5FEBD9BF73A5D
+ 6B0EEC343B378E25D66B1D7D4D8712710740B46FEE9E93D86E72C0ADB66C58EE
+ 8B35000CD6010000000080DEE3B747B3B76E5CE1CE794D11C06E36772CA2CD75
+ 49AA1F0110A66FAD7EAC5EFAA454437C83750000000000A077A4A5F551D366CF
+ D1913FAC5EFA94DCF5DE9A03CB9CC3CE91DD2D29125500301F30DA07B6E7E440
+ ED38D22A2AF6D4D6D49C3CEA8C7D61C6DC623D0200000000A4D2F8D34E5379F9
+ 7D75E47D35D5954725E77586ED7261A7B9736461C7F65C8FA5EA0E00C33DD71A
+ 1F3DBEDF373B01F42F18A8C64C98A8230000000040AA4C9FE3AFE7FF4F1C8DEC
+ 001033178E44A7D873F67CC224BA0010EB03DBB119DBB73FB454BEBE2D822FF0
+ 180000000000A4DECC127FE562475F2F00B4C9817513EEB161CF274432EF0010
+ F641D8CD7DD02D87F6EDF4CD4E0062E19967EB1100000000201564EB3FBF1500
+ 0E1ED8E1BE03A05D3EEC6A49D3DD0240B40F15EDC39A39D362553A9AF7ECDAE0
+ AB02C0D459B3D5E061C375040000000048B6C56F3857656464EAC81FF6EE5C6F
+ B6008C9A0B5BE36862BD16EBFD1DEAC91D00F607717FF38E5E3307D8A6E2B17E
+ CDCBBE2A00C8CA93675E70918E0000000000C976E685FECBC1D695BF24B96E6B
+ EEEB343B27B6C99CE9CDD8E8E8B5B8A5E211007713662C071C69AB973F77A8A9
+ F2408333F68DB32E78A31E01000000009269E888916AF2F4993AF287A6CAFD0D
+ E52B9FAF7086ADB9AFD3A2E5C6764B9A641400A27D78E9DD076C1F784B737343
+ 735563CB4167EC1BC3468D56A7F9EC171000000000FCE8CC0BDEA8D2D2D274E4
+ 0F954D690724D77586ADB9AFD3EC9CD8348985FD3E339730892C00B83F5CAC0F
+ 2E63FB04B41EF4F113877DB5138038F38D17EB11000000002059CE38EF423DF2
+ 8FE3C722396E6BCEEB343B0F96DE30F3A6D9DC71B725F30E00C38CA31DB01DB7
+ 1CDCBF73B7D3FB8A1F17A100000000003F993C7D46E40E6CBFA938B0638FD3B5
+ E6BC4E8B95170B890DF37A4225BA0010ED039A0F6E5AB4036E9256B6FCB9754E
+ EF2BB20DC5BC25A7EB080000000090687E5D80BD6CD9B36B9D2E92EF3ACD9D07
+ DBB1696ED1E6BA2D110500F7078AE7434B6C12FFD683FED763BFDC2C8B243863
+ 5F61370000000000488EF48C0CB5F89CF374E41F92DB3EFDCF7BB638C348BEEB
+ 34770E6C33B179AF88F59E6E4BF41A00F60795836A4DEEE3986B3E79F2487DC5
+ 89AACDCED857E62E2A55FDFA0FD0110000000020518A172DF665BE25B96D75F5
+ F17A67D89AF33A2D5A2E6CCFD94DD8E31E4BC61A006EEE0F2ECD7D025AE31D5B
+ D7AC777A5F913500969C7BBE8E00000000008972E6F9FEDC7E7DDBF63279C43D
+ 66EEAB63D384E99326590500FB40A4D907E73E5013474EC2F2654FCA3312BE73
+ 16BB01000000004042E5E5F755258BFDB9E6DAAA579F92DC3692E73AADA35C38
+ DA6BD2122E157700087300F681DBCD3C07D1FCEF277EB3B5F1D8B15A67EC2B13
+ 4E9BAA468C19AB2300000000404FC9AE6B9959593AF28F0627A77DEEA9FBB639
+ C37639AFD5EC1C595AD225A300607F78F7D8F4A6B90FBCB9AEAEBAF1D089439B
+ 9CB1AFA4A5A5A9F32F7BB38E00000000003D75FE9BAED0237F3974E2E026C96D
+ 9D61BB9C578F4D13761F6D9C30892E00D81FD07C60BB9903B60FDC1E47E26D5B
+ 57F96E1D0071DE656F623140000000004880390B4BD5F8C95374E42FDBB7AC32
+ CFFFBB73617B6CCFB99B618F7BACA70580783EA0FD1EF39A19CB6D10D2CB41CB
+ 38725BC4D2FF3EEACB7500B27372D5256F7BBB8E0000000000DD75E53BAFD723
+ FFF9DF2B8F9802406B9EEB343B079626CCD89E33EC38D67BBA24996B00D81F4E
+ 7A73C0D29B26B13919A6353DFFF4EF77D41F3959E58C7DE78D57BE35B2500500
+ 000000A07BA6CE9A13697E24B9EC7FFEF5C71DCEB05DAEEBB46839B1E985F466
+ 9C70C92A00C4FAC0E6604C33076A9F9896E6E686E603C7776D74C6BE23C9BF14
+ 010000000000DDE3E7ABFF078E6FDB2839AD333439AF343BF937F9B069D1C49A
+ EF91441600DC1FD0C4E6A0DCCD5D0D314DE69BB66E5AEECB7500C4256F7DBBCA
+ CECED11100000000205EF2DCFFEC058B74E43F5B36AF94DBFF2379ADD362E5BC
+ D1726469C2F4863BEEB664DC01E0FEE0EE26076CC7E6A4B43941AFBEFC902FD7
+ 0110FD060CF0ED6A9500000000D09BAE78E7F5915DD6FCEABF2F4672593BD9B7
+ 735E3B1796393B364DD8E38449E61A00C23E08BB9993610ED88E2327E895E7FF
+ BEA7B6B6EA8433F6A5CBAEBE56656666EA0800000000D0991163C6AA85679EA5
+ 23FF911CF6D5171EDAEB0CEDC4DFB468B970B49634A95A04D0B00F4A9A7DF0AE
+ D6DCB477CF960DCED897061616A9732EB95C470000000080CE5CF18EEB545A5A
+ B2AF5327CFFE3D5BD63BB96CA33334B9ADBB0820CD9D17DBA2CD254CB2CEACFD
+ 81CD01D82DDA0970CF356D5BBFD4B78F0188375DF34E959E9EAE230000000040
+ 2C83870D57A79F7B818EFC69D3FAD7A26DFF272D561EEC6E863D4E984415003A
+ FBC0F6EBA609333627462A25AD27EAA13F7F775953D30119FB52D1D061EACC0B
+ 2ED211000000002096C805D48C0C1DF98FE4AE0FFEF93B4B9DA19DE49B5C57FA
+ 68B9B0DD0CF7D8FD7AB7A5E2DE0AFB034B938337BD7D42EC26734DBB77AE3DB1
+ 77E791D5CED8B7DEECF35B580000000020D90A0615AA375C74A98EFC69EFCE83
+ ABF7ED5C5FE90C23F9ACD3A2E5B9666CE7C6764BAA6467A6F601D807E43E50FB
+ 64D827A5E97F2F3DFC8AD3FBD6F051A3D5E273CED51100000000C0EDB2ABAF51
+ 9959593AF2A7575F7CF465A76B93CFBA7A770E2C4C6CD8E3844B4601C0FD81CD
+ 0199660EDC3E317693F9D6F6F73F7C7355FD919355CED8B7DEFEDE0FB0230000
+ 000000443164F80875E19BDFAA237F929CF5C13FDE2577AFB7C9679D162BE7B5
+ 7363BBD9DC718F25F30E00FB00CCD8DDCCC1BB4F50EBB8BAFA78FD96BDABE439
+ 0ADF1A3A62A4BAE29D37E8080000000060BCE7A64FA9ACEC6C1DF9D3E6DDAB5E
+ 93DCD519B6C967ADB13D172D379626EC71C2F5D6C3E97240D10EDC9C903627EA
+ F9A7EEF7F563004216B490420000000000E09405679CA58A172DD6917F3DFFF4
+ 6F25676DCD61753379AD3BEF35B970CAA5A200600E5298E45E9AB063FB04B569
+ 4F3E72CF96C3278E1C74C6BE25CFB3BCF7A64FE90800000000C24DAEFADFF0D1
+ 4FE8C8BF8E571C39F0D4A3F76E7586ED7259A7D9B9AE69C21DDB7973D2F4C622
+ 80A6C981DA63D3DC27CC69CD8D9BCB5F7CD519FBDA9C85A56AD1D9E7E8080000
+ 0000C2EB2DEF7A7764EB74BFDBB04172D5667B4B7B6926B7B573DD68B9B06986
+ 3D4EB84417003A3A00F781486C9F0C77B34F5EE3637FFF91ACA8E87B377CE426
+ 959D93A32300000000081FD92DEDD2ABAFD591BF3DF2D7BBE5F6FF680580582D
+ 5A6E6CF742C6A6254CB2170134EC0F6F1FB41D4BB34F589BB67AD933070F1DD8
+ BEC919FBDAA0C143D455EFBE514700000000103EEFFDC4A703B153DAC1FDDB37
+ 95AF7C4E1E578F9AC7EA66E7BCB1F26269863D4EA854AF0160C6D2EC0396DE3E
+ 31EE1316692B963EFD5FA7F7BD8BDF72B51A356EBC8E00000000203C4ACF3E57
+ CD9AB74047FEB66AE933D116FF33CDCE6FA577E7C1A6097B9C34A9280074440E
+ D03E787372CC0932E348FBFB0377BDD65479A0C119FB5A7A46867ADFCDB7E808
+ 00000000C2411E87BEFE231FD791BF496EFA97DFDD295BD6B7C95B9DE6CE6BED
+ 7C57FA5E93CA0280396821076E9F0873624C3327CB6E8D07F66D39B9F3D0C1D5
+ CED8F7A6CE9AA3CE7EE3C53A0200000080E07BDB0D37461E8B0E825D87F6AF3A
+ 74607BA533743FFF6F9A3BC735F9AF9913662E25525500B00FC81CA03473E066
+ 6C9F28339693D97A425FFDCF8381580C50BCF3831F55F97DFBEA080000000082
+ 6BD4D871EA92B75EAD23FFFBEFF30F9ADBFF4DCE6A1702DCF9AD3BFF35CDB0C7
+ 4993AC0240470764F7A69913619AFB84498B9CD0BFFFE1AEB29ADA6AA9B2F85E
+ FF8281EA9AF77D484700000000105CEFFDC467228F4307414D6D55E5DFFFF4ED
+ 326768E7ACA6D939ADDDEC1C58B87BE17E4F42A56A1140C33E18D3CC89B07B69
+ F6096CADA434D455D76F287B393077019C7FF99BD59C058B740400000000C173
+ E955D7A8E9738B75E47F1BCB5F7A49725367D82E67D5CDE4B5D1725E7733EC71
+ 52F4D61A00666C9A3939F689B24F9E699193FABB7B3EF7741016031469697DD4
+ 476FFD921A5858A467000000002038264D9DAEAE7D7F70EE7C6EAADCDF70DFCF
+ 3EFFB40C9DE64EFC4D8B96E3BAF360618F932E95058068E440ED13614E90DDDC
+ 27B471CBA6E547366CDBF092330E84FE0505EA135FBA23520C0000000080A0C8
+ CBEFAB6EBAFD0E9591E1FF3DFF8D755B36BDB86DCB8AA3CED0E4AAEEDE6EEE7C
+ 57FA5ED31B19A73978FB04486F8FDD27CC8EA5353E70CFED4F34371F947120C8
+ AE006F7FEFFB750400000000FEF7A1CFDEA6860C1FAE23FF931CF4815FDEFAA4
+ 339464DFB4488EEAB468B96CB47C577AD3522AD50500FB20EDDE347392EC664E
+ 5E9B13BCB6FC85439B376C7BD51907C69BDFF12E357BFE421D01000000807FBD
+ F18AB7AA85679EADA360D8B47EDB7FD797BF74C819BAF3541347CB67ED9C57D8
+ BD19A744B20B00E680DC0765CF9B2627C7F4F6C93227D5DD37FEF1BE3B1EAFA8
+ 38245F1308F208C0C76E633D0000000000FE367EF214F5AE0F7F5C47C120B9E7
+ 9F7EF3E5279CA13BE977373BA7B5735D77B3C59A4FA854DE01600EC43E283336
+ CD3E41EE93D826F997B6E2D5C7F61D3BBA6799330E0CD91AF0A6DBBFC27A0000
+ 0000007C29372F2FB2C6596666709EFB17C78EEE5EB6E2B527F739C3D69CD469
+ EEBCD5B48E927FE11EA7446F6699D10E5E9A9C20BB9913689FE4D613FDF707BE
+ F698D307CAB4D973D5D5EF799F8E00000000C03F3EF0E9CFAB612347E92838FE
+ 7AFF9D927B76989F3ACD9DCFDAB9AEB0C729D75B0500FB80CD09709F287302DD
+ CD9CDCC8897EE5F9BFEDDABE7DED2A671C2857BCF33A356BDE021D0100000080
+ F79D7FF9156AF139E7E92838B66F5BB3EAD5FFFC6D9733B4137E3BF177B7FFDF
+ DE9DC047559FFB1F3F644F20EC847D31EC20288B8808140545ADD75AEBBD6DED
+ 76FFF6DE6B6B37B57AABD6AAD5D656ADD52E5AB15ABBA8AD7AB56AB15297BA22
+ 020AC8BEEF0448C80284100221FFF38CF3A40F3FCF994C809099C9E7FD7A3DAF
+ DFEFF79C934026832FBFBF7366C6CDB76EF0B7F313E6446F0004FDC0F681D0B9
+ 3E40EE837844F8F7EBA08C7FFBCBDD2FF9634A9197007CEBFBB778ED3B758A76
+ 000000002071F5291CE07DF9CA6F4757A9E56F4FFE4C32677D068D96CDA8B66C
+ A69512EE5CD979936B8E3B00DC1F564B1F20DD21D1721F4C7DB0EB1FF07FFEE3
+ F7EBB76F5BBBC29FA794C8FB017C9FF7030000000090D8B27372BCAB6EB9DDCB
+ CACE8E7652C796AD6B5648E6F4A736F4DB4C6ACBCDB336EB6A293B3F21D2A3E3
+ 89D2CA1985EDD912927CA564AD732DF9BBD7F7EBEA5AED1973FAF967F8F394D2
+ A55B772FBF5D3B6FD1DC39D10E00000000240EB96079F5AD3FF2069F3C22DA49
+ 2D4F3DFAC33FAE59396F873F3DE0578D5F7217808EB6741340360682360284BB
+ 09204ED84640736F00C8E896905182BD8E5AB296BFB3EDC93A7DCDCAB91593A7
+ 7D65587EDB0E1DFD754A19306498575B5BEBAD5C9C726F750000000020C95D71
+ EDF5DE84B3A74557A965E7F68D6BEFFDF1652FF8D3B0E02F6BF76E0009FC3A6A
+ E0D7907FC2C27E9044B80340C8DA1EB3A5C1DF867EAD23360372735B578E1C33
+ F5747F9E72869F3ADA2B2F2DF136AC591DED0000000040F3FADC57AFF0CEFFCC
+ BF4757A9E7AF7FB9F3F1154BDED9E64F25E8DB4D00BB1110F47200F7EABF94CE
+ 9B8D04E744617744EC836577506CE9835C5FCF3CF1D3A565A5DB37FBF394D3AA
+ 552BEFAB575DE79D367172B40300000000CDE7BC4F5FEA7DEAB22F4557A9A76C
+ E7964DCF3E71D7527FAA99332CEC4BD9ECAA65336E4238D177005872555FE9DC
+ 8EB6F42ABFBBB6E5F7EBD2D2D3D22B4E197BCE787F9D72D2D2D2BCB11326792B
+ 162FF27615EF8C7601000000E0C43A63CAD9DE15D75D9FD26F58FEF4E377FC61
+ E5D2C8D57F79EDBF5EEDB773DD1008DA0CB09B00B694BB3E219A6B034042BC1D
+ 85EDE93C1AEC8F2827F4477E061DD3562E9D5D367EE2A77AB5EFD8BDBBBF4E39
+ E91919DE69933E117953C0DDE5E5D12E000000009C18C3478DF1AEFEE11D5E7A
+ 7A46B4937A36AC5BF4C12FEEF8F2DFFDA9DEEAAFC15FD67A37806E00D8BB0224
+ F4CBE8867E1BF64F78F05789B45D631F20DD29B13B275AF260DA07581FF4FA5F
+ C06FEEFDC6D395874AE51794925AB769E3DD70E7CF239F100000000000274ABF
+ 8183BC6B6FFF8997999919EDA49ECA83A5071EFCD9D79EF6A747E4CCE8E8E6D1
+ A0CC6A33AD564248940D00FBA0D8D13E88F2E0DAD207DD96F40FAE5E3EA764C1
+ EB2FBFE8CF5356874E9DBD1BEFBA37F2118100000000D0D40ABAF7F06EF8E93D
+ 5E6E5EEB6827352D78E31F2FAE5E3977973FD5E01F546E3EB5D93528DBEABC59
+ 35D706803E00EE8360FBFAC0E95CCB3EC8FAC0EB2FA1FE17F4AB7BBEFA6A7979
+ D1767F9EB2BAF7EAED5DEFFF03CCCEC9897600000000E0F86BDBBE43E40264BB
+ D4FBD4F52354ECDA5EF4AB7BFEEB557FEA664CBB196033A9CDAA415956CA0AEB
+ 9F10CDF92680425EBB6F47617B3AD7D7FB4BB9732D59EBFB01A41DAE3DD4AAE6
+ C081E231E32F38C35FA7AC8E9DBB7803860CF3DE7DFD55AFEEB03CCF00000000
+ E0F8C9C9CDF56EBAE7175EEF7E85D14EEAFAC343D7FF76F5B2397221D97ED49F
+ 7DFDBF8CBA19602F4A4B1893D10DF8EEBC5925DA06808EC2F66CD90D005D0755
+ ABB52BE7EF1E75FA05059DBBF4ECE5AF5356D71E3DBD5E7DFA79F367BFC52600
+ 00000080E346C2FF753FBECB1B347C44B493BA56AD9837F7C19F5F2157FF6DE0
+ B71B0132EA5D00F1DC09D0EC81DF9588770008DB77E7B622413F3AD6077FBB5E
+ BB62FEE6B1E77D7E625E464EEABE4B85AF57BF93BC8143877BF3DE7ED3AB3D24
+ CF4500000000387AF27E6337DDFD0B6FF0C9A91FFE771DD8BDFF9EEF7FFA81DD
+ E5C595FE3228F8DB2BFF611B006EF04FB84D80E6DE00B024B8DB51D89E967083
+ BECEDD5E7A45F9CE437DBAF73F543870F4707F9DD2E44E809163C779F3DF79D3
+ AB3990B21F8200000000A08975EEDACDBBE5DEFBBD3E85FDA39DD4367BD6E3CF
+ BEFAF78757F85309FBEE1D0061E15F467BE53FD6D5FF84D80C48940D000DF63A
+ 0ADB73E71AF0756EC3FFC77A0BE7BD5C34E582CB47B6CECB4FF9B7CC97F70418
+ 7BE624EF8339B3BDAA7DB2790500000000F1EB7D52A11FFE7FDD623E76BC6CD7
+ E6CD3FBCEEFC270E1FAE95E01F6FF8B757FE8382BF3B4F0889BA01A0A3707B12
+ EC85ACA534E8EBBC3EF86BF9BFC856FBF6966D1F3074D284BCBC3C3996D2E456
+ 9D33CE9AEA2DF960BEB7BBBC3CDA0500000080D8069F3CD2FBFEDDF745DEF5BF
+ 25282D2DAD7BFCB7D73FB47ECD82627FA9A1DF0DFFB6EC2680047F1925E0C7BA
+ FA9F3024202722FBA0E903A93B2B769745E6762746EB63BFA8D767FD7EDDCEA2
+ 95B3FD798BD0A15367EF96FB1EF0868C1819ED0000000040B8D1679CE9DD78F7
+ BD5EEBFCFC6827F5EDDCB66CF6EB2FFF719D3FFD5886F4CBCD99923FDD3CAA73
+ CDACC2E6D9849248EF01A0EC157ABDB22F746E4BD8B57BF5DFCED3962F797BD3
+ C4E9974FC8C9CACAF2D7294F7ECC09679FE36DDEB0CEDBBE6573B40B00000000
+ 47FAC4F4F3BD6FDD788B97D932A25244C5BE7D9577DCF8C9072BF794EDF397EE
+ 957FF72E00BB111014FE35F0BBE1DF5D37AB44DB0090C06E474B7AEE711935E8
+ DBB2E15FC734FF177BA8A04B8FEA8143C6B598CBE2E91919DEF84F9CED959796
+ 781BD7AC8E7601000000E023177DEE0BDEFFFBF6355E5A7A225E1F6E3AAFBD38
+ E3C9B75E797C953F0D0AFF1AFC6DF8D73B0082C2BF2D65E709215936006C3F56
+ 4582BEB3B6FDB4057367154D3AEBB3856DDB77EEE2AF5B84B4B4346FCC1913BD
+ C3876BBD958B3F8C7601000000B4745FFCDA37BCCF7CF972AF552B894D2DC7B6
+ 4D2B97FFE8868BFECFCFE836FCDB72AFFADB0D000DFF0D5DFD4F38C9BA0120EC
+ DC867E2D7723205A75698B17BDB17AE2D42F8DCBCECECEF17B2D82FC833E79D4
+ 18AF4D7E5BEFC3F973A35D000000002D91DC29FCB5EB6EF4CEFDD425D14ECBB1
+ BF6A6FC52DFF3BFD577B2A3EF699FF5A12F6DD3B0024F8CB1814FE6D25B444BE
+ C74382BBA56B0DF542E761A5C15FE791714F45C9C103FB2BB68D3E7DDCB856AD
+ 5A4BAFC5183074B83774E429914D8003D5FBA35D000000002D857CC6FF0D77DE
+ E38D1E3F21DA6939EAEA4A0E3FF2C08D0F2E9CFBD2167F29615F3EF64F83BF06
+ 7E3B0FBBFAEF867E37FCDB6309235137003494DB70EEF6ECE8CE834A370022F3
+ B52BDF2FEF5B787A5AEFBEC306F9EB16A5A07B0F6FD239D3BD8D6BD778C5DB8B
+ A25D00000000A96EEC9993BC1B7EFA73AF5BCF5ED14ECB32E7CDBFCFFCE38CEF
+ BDEB4FDDF06FCB0DFF7AE55F370024D807DD01A0EC3CA124D3068090B53C98B6
+ 6FCFD5B95EF9B7A15FEA88FE9CB79EDD38E9ECCFF7CF6FD7A9B3BF6E517272F3
+ BC89D3A67BE9E9E9DEF20F17F99D847D8E020000003846F2FFFD5FBAF25BDE97
+ AFFC8E97959D1DEDB62CDBB6AC5E79F335539FA8AB3BEC067F5DBBA15FD67AE5
+ DF5EFDB79B002269C254326E00D863EE7912EC75B4C7EA43BF1DFD5FBCB764E1
+ EBABA74CFED2B8CCDC96F7AF40DE1760E829A3FC3AD55B3C7F9E57BD9F970400
+ 000000A92672CBFF4F7FEE9D3EF9AC16F7667F6A7FD9DE3DB7DE30FD57BBCB77
+ ECF59736F46BF0970ADA049090AFA3067F2D61E7092F91DF0340853D43B5AFA3
+ 867FDB8F55918D803D15C587AA0E5416F51D30765C5E5ECB7A3F0055D0AD7BE4
+ 25019BD6ADE52501000000400A69E9B7FC8B5DBB4AEA9EFAD3CD333E983B535F
+ F7EF6E0068E94680867F7BE55F4609FAEE26801BFE837A0923D137003490BBC1
+ 5CD6F2A0060576E9695FAFF64B05CD23E3DA55F32A868C38A355EFBE435BDCFB
+ 01A89CDC5C6FE2B47323EF06BA7C112F09000000009219B7FCFFCBA2792FFDFD
+ 0F33AE93D7FD6BE89751AFF8DBE0AFE15F460DFF761340C3BF8CC20DFB091FA2
+ 92650340E83C680C2A11D4973A620340C6F7DE7C66E3E4A99F1F90DFB653277F
+ DD22455E1230F2546FD8A9A3BC0FDF9FCB4B020000008024C42DFFFFB275D39A
+ 55377FF7ECC7EBEA0E6BD897F0DFD00680DEF26F83BF867F0DF96ED84FF8F02F
+ 92690340043D7BA5A77D3B17BA6EB0E4FD00962E7A73CD94495F3A2D2337AB45
+ 6F9175E9D6DD9B7CEE797C4A000000009064C64C9818F988BF967CCBBFAA2EAB
+ DC73DBF7CFBBBFA27CFB1E7FA9E15F437FACF02F1516FEDD123A26BC64780F00
+ 2121DD8E2AAC2F22C1FEA369FD957EA17DADFABB007657ECAC39505BB5BD4FE1
+ 9816FB7E002A3B27D79B74CEB95E7EBBF6DEAAA54BBC4307E5DF030000008044
+ D426BFADF79FDFBADAFBC215577AD9D939D16ECB1579DDFF13B7FE76FE9C1736
+ F94B1BFEDD4D001BFC656E6FFBD70ABAFA1F14FA137E232055360084CCDDF3B4
+ 17B6D6F05F5FAB57CC2D1F3EE2CCF45E7D870CF4D72D9ADC2E3460E8306FCAF4
+ 0BBC8AF2526FF3FA75D1230000000012C559175CE85DF7A33BBD212346B6F85B
+ FED5920F5E99F5E803D7BCE34F8382BFCCF5AABF96BDF2AFA1DF067FF72E80A4
+ 946CCF0E0DEA4AD7521AE6655343E632669831335A59D1516EF3B725DB64722C
+ 2723233BF7BE47167FA7679F412D7E13C05AB66881F7C87D3FF38A36CB261A00
+ 000080E6D4A77080F75F575FEB0D1A3E22DA81D8BE6DCDEA6FFFE7885F1E3A74
+ 40DED4ACDA2F09FD324AF0B725C15FEF02D04D0009FF3A4AE89731D60680BB4E
+ 68C9720780D2F0AFA392B53CE8B6EFCEC3D6321EF11281C3876BBD658BDF5A3D
+ F1EC4B476565B7CE8BF65B3CF9B8C0A9175EE465E7E478AB972DF16A6BE5DF02
+ 0000008013493EC1EBB22BAEF4AEB8EE06AF4BD76ED12E44E5DE92D2DBBF77E1
+ 03E5A54541AFFBD7B906FEA0D0AFC15F4B72A68CC20DFB4913FC55B26E00081B
+ E0DDD19D079508EACB6680B7BB7CE7C1F5AB17AD3C7DF2256332335AF69B025A
+ 6969E9DE9011A77893CE99EE95ECDCC1DD00000000C00974C65953BDFFFDF15D
+ DEC8B1E3FCFF378F441744EDAFDEB7F7CE1F5CFA8BD52BDEDBE92FED157EB734
+ F86B69F0B7E15FC3BE867C37EC275DF817C9BC0120DCB5D05E3CA396F8D87AE7
+ F6F5FB4BB66F5C3F62C294B159E979F2320244E5B569E34D386B9A57386888B7
+ 7AF952AFAAB2327A04000000C0F1D6AD576FEF3B3FB8CDBBE8735FF472F35A47
+ BB50072B2AAAEFFFF9D7EE9F3FE785CDFE5242BE5EEDB77700D82BFF76132028
+ FCBB9B005A42C7A4936C1B00CA86764BD6F2CBB07D99079DA73D9DDB1291F9A6
+ 0D4BF6D6ECABDE7ACAD8D163D2D2DAB0C5E6E8DEBB8F37EDC24F79ADD2D2BC35
+ CB9779870FCBBF1300000000C74366569677E9572EF7BE79E32D5EF75EBDA35D
+ 58B5B53B6BFFF0BB1F3DF4EADF1F5EED2F8382BFBB011074F55FC3BF96E44A0D
+ 3736FC5B49B711908A1B0061C7947B8E2DE1F65AAD5931B72C33B36369D79EC3
+ 4EC9CBCBD3F310959E91E10D1F353A723B52F9AE126F1B2F0B000000008E89BC
+ 9BBFFCFFF5776FFB8937F6CC495E7A7AB246B7A6555A5A5AF7D25F7FFBC7671E
+ BF6391BF6C28F8DB0D0009FD7603C06E04D8C01F16FE93522A3C8B6205720DF1
+ C2CE953DA6F43CBDDA1F592F59F8DACE1E7D06EE1F3068F4B08FDA70E5B76D17
+ F98FD4F84F9CED55EDABF4B66CD8E07753E6DF0A000000D0E4E475FD93A79FEF
+ 7DFB07B779E7FCDBC55EEBFCFCE8110479FBF5279E79F4FEAB66FB530DFBB201
+ 20213F6C23C0BDFAEF5EF597B27337D004F59246B26F000405F830F69C48A8FF
+ 685A3F0F2A513F7FFFDDBF6D2D1C382AA3679F21FD658D606DDB77F0C64D9AE2
+ 4D9C76AE575373C0DBBC61BD57C74B030000008050191999DED44F5EE47DE7E6
+ DBBD29E75DE0E5B76B173D823073DF79FE1FF7FDF80B2FFB531BF6DDE0EF5EF9
+ 0FBBEA6FCB867F1BF69336F82B0DB9C9CAFEFDDDB9967EC49F6C76C85C462979
+ 533FA94C3366999277FED7512BC7FF163977FCF2CDCF0D1D317182BF461C4A8B
+ 8BBDBF3DF9B8F7DA8B2F78076BE4DF200000000091959DED4DFBB78BBD0BFFE3
+ F35EC7CE5DA25D3464E9876FCEFEC155673FE9E775F97C7FF733FE1BDA0890D0
+ 6F370224F4CB2801DFDD005061F3A46243733272FFFE76ADE15FC8A8A51B005A
+ 7603402B6C032052191959B977CE98FBD5C2C25347FA6BC469777999F7E2D37F
+ F15E7EFE59AF7AFFFE6817000000687972F3F2BCE9177FC6BBE0D2CF46EEA045
+ FCD6AF5BB4F87B5F3BFD9143876A2454D8E0AF6537006CF097D0AF1B00B6ECD5
+ 7FA19B00CA0DFC6C00343337F8EB68CB6E02D88D00F72E00DD00B0F5B14D80D6
+ F91DDADCF5C0FB57F6E855C8CB011AA972EF1E6FD6B34F7B2F3DF394B78F8F0F
+ 040000400BD226BFAD1FFAFFC30FFF97F2FAFEA350B475DDBA6BBF36E6FEFDFB
+ 76EFF39712F2E5EABF067EBB011016FEDD970068D8D7D196D051D87952D2B09C
+ ECDC9F43D71AFEB582360124F8DBB21B0032D7D06F37037264DEA94B9F76773F
+ F0DE551D3A77EFE1AFD148FBABF679AF3CFF57EFD599CF7BC5DB8BA25D000000
+ 20F574EBD9CB9B7AE1A722B7FBCBD57F34DEAED2EDDBAEFFFAF85F94966CDEED
+ 2F25E0EBADFFBA01604709FB3A4AE8B7E55EF58F27FC0B779D743428A70AFD79
+ ECCFA5E15F4A42BF8EBA0160370164AE7701B87702E826806E0844AADFC0515D
+ 6EFBD9ACABF3DB1674F4D7380A757575DEEA654BBCB75E9EE5CD79FDB5C82708
+ 00000000C9AE759B36DE84B3A67993A69FEF0D1C3A3CF2D17E383A957B4B4A6F
+ BAFA9C7B37ADFB7097BFD42BFD5A36F86BE9957F2909FC36FCDB0D0009F5EE06
+ 80D2B9ED25B5547B06EACFE3FE5CB2D6D24D0009FB7613C06E0448F877EF0608
+ DD0418316A6A8FEB6E7DE29B6C021C3B7993C00FE6BC13D90C5834778E77984F
+ 0F000000401291CFEB3FF5F433BCC9E79EEF8D1E3FC1CBCC92F88063B1774F71
+ D9DDB75EF6EB250B5F93DB86E30DFF12F6EDD57F0DFE1AFE6594601F16FE85AE
+ DD7ED2728372AAD0B06FD9F0AFE56E02E85D001AFE83EE04703700226BB913E0
+ E6DB675ED9A16B8FEEFE1AC7C19E8A726FF66BAF44360336AC5915ED02000000
+ 89A770F09048E8972BFE6DDBB78F7671ACCA776D2FBAEDC64FFE66E39A8525FE
+ D2067EBB01E0867F2D0DFEEE957F0DFF5ABA0960E9B194E286E454A13F97FBF3
+ B91B00B276EF02D0D2BB0024E0BB1B01F5C1DFCEBB74EDD7FEF6BB5EFB9FAE7D
+ 0A0BFD358EA32D1BD67B6FBF32CBAF7F78E5A572D70F000000D0BCE463FB269D
+ 739E37E9DCF3BC5E7DFB45BB385E8AB6AE5F77EBB5537F5BB2736385BF74C3BF
+ CEDDE02F73BDFAAFA1DF96847DF7AABFAC2D0DFE6C002409FB73B9735BBA2110
+ B409E0BE14206813C06E00447AF2E900B7FDEC8DFF2C1C34F2647F8DE34C5E12
+ B06CE107DEDCB7DEF096FAE38EAD5BA24700000080A6D7BD576FEFE45163BC71
+ 93A778C3FD312D4DA2048EB78D6B172EB9E99AA97FD8B7B75CDE20CC067DDD00
+ 8815FEB582C2BF067E0DFF5A2A6C9E1224FCA622F7E7B26B99DBD2BB00B4EC06
+ 802D7713A0FECABF3B666464E5FEF0EE573E3BECD4C9E3FD359A506971B1B76C
+ D107914D81250B3EF0CA4A8AA3470000008063D7A9A0C03B79F4D848E81F7EEA
+ 68AF639782E8113495A58BDF9EF3C3EF4E7BF2D0A19A58EFF2AFA3867F29BDF2
+ EF867FBDEAAF65837FACC0EFAE939E0DC6A9C8FE7CEE5C4B42BF8EF16E0248D0
+ 77CBB91B202DE7FADB9FB9F0F489179FE3AF7102C8A709EC2CDA16D90C90BB03
+ 64DC5321770B01000000F191D7EFCB957D09FC12FC0BBAF7E0DDFB4FA079B39F
+ 7FF927375DF2A29FD3F5F3FD35EC6BE077AB31E15F02BDBB01A0C2E62925D59F
+ C9EECF67D71AFA856E0248E8D7517A12FADD8D00DD0008DA08703601BCAC6F5C
+ FBF059A3C65FFCE94E9D3AB97F173431D910D8BA7183B774C1FB910D81E58B16
+ 7AFBABF6458F020000009E97D7BA8D37ECD4511F5DE1F7AB57BF9308FCCDA0B4
+ B4B46EC1EC67FEFAC0BD57BCEE2F6DC00F0BFF12F67594D06F4B83BF8C12E675
+ 949ED04D00E5067E3600929CFD39DDF9F1D80490B1FE2500CE9875D957EF38ED
+ 92CF5FFE85F4F4AEF27DD04C6A6B6BBD9DDBB67A455B36476ABB5FDB366F8A8C
+ 7BF7EC8E9E050000805494DFB69DD7A34F5FAF47EF3E5E77BF6494EADAB357E4
+ A3FBD07C6A6B77D63EF397871FFBF3C337BDEF2F35E06BE8B7A30DFD3A1ECFF0
+ 9FB2C15FD9309CCADC9FD3AE65DED84D0009FC326AF8D78D80C00D00995FF899
+ AB867DF68A9B2E6F93D949FA4830B201603704749340360C64E300000000894F
+ 82BC047A0DF736F0CB0600124FE5C1D2034FCEF8D1EF663E73DF727F69AFF4BB
+ 1B001AF835FC4BD8B71B00F23FED321E6DF8176C00A41837F8EBA8251A7B2780
+ BB01E09604FEC866C0A4B32E2BBCFCBB0FFD4FFBD6ADDBF86B2481DA4387BCE2
+ 1DDBBDE2A26D5ED5BE7DDEFEAA2AAF7A7F5564B4F3EA2AFF983FAF8EF6755EBD
+ 7F7FF43B010000201E39B9B95E4E5E9E979BEB973FEA3C27AFF547EB68DFCEF3
+ 5AB7F60A7AF4F40ABA75F7D233E47FD3910C2AF6EDAB7CE49EFF9EF1CEEB7FDE
+ E02F35ECDBC0EF966E00D8E01F6FF897B996D051D8794AD3D0DB52B83FAFAE65
+ D41247BB09A01B01F6EABFADEC9163CFE971ED0F1EFB7A7EDB828EFE1A29AEAE
+ EEB077B046FEFB04000080866466657AAD5AC9FF7623D5EDDD535CF6B3DBBFF8
+ 9BC5EFBF52E42FC342BFF66DF03FDEE15FB8EB94A581B7A5B13FB7CE65D412C7
+ BA09501FFA9D7556BF01A776BEEE9667BED2A357617F7F0D000000002D46D1D6
+ F5EBEEBEE592DF6F5CFF61A9BF0C0BFD5AB1C2BF6E0070E53F4E12645B220DF9
+ 2A682D4F86586390A02790F48EA88AB21D075EFEDB830BFA168E48CF6DDDA530
+ 2F2F2FECFB01000000404A9077FA5FBAF095577E70F59427CA4A8BF6F82DBDE5
+ DF96847C77034082FEF10EFF2D524BDD00501ABC8302B80DFB41A30AEA29E905
+ F60F1FAE3DFCCEEB4FAEAD3B7C70F349C3CF1C9293952577070000000040CAA9
+ D85759F9DC63B73DFAC8AFAF7AC7CF42F219FF12F66DD0774B370234FC4BB8D7
+ F168C2BF15D46B11D800387274B9A1DF8EB1E8134A46FB751FB37AF97BA51FCE
+ 7B69E1C8D1D3FAE4B7EDC8FB02000000004829DBB7AE5A7BC70D9FFCCDBC779E
+ DBE42FDDA0AF25E15E370564AE65AFF86BF03F96F0DFA2B5F40D002B2CD40785
+ FFA027921EB3EC79415F135151B6A3FAE5BFCD58D8BBDFF056B9AD3B17E6E5B5
+ 0EFBBB000000004052D8B5ABA4EEC3F767BD72F335D3FE5CB66B9BDCF2EF86FE
+ A0D2D0EF8E1AFCB524EC4BC68A37FC07F55A1C36003EA2813B2C786BE8B76310
+ FB84D27950CF252F09A89BFDC653EB6B6BAB370D1B396970666696BC79200000
+ 0000249DFDFB2BF73EF5E8CD8FFEFEC16BDFF5B34E3CB7FB4BC9DC867EADE311
+ FEE16303E0E3E2DD048825E8B8F4DCBEF6EA6BCD8A7965F3E7BCB868E4A8A93D
+ DBB6EBD4C9EF0100000040D2D8B679F59A1F5E77EE83EFCF9DB9D95FEA9BFBE9
+ 2640D866806E02D80D0037F84B49D8D7920C154FF8777B2D161B0047D2F01FCF
+ 2680B24FA6A0275BD868CFB5736F77F9CEEA592F3CB8A057DFA1ADF2DA14F4E7
+ 250100000000129DDCF2BFE0BD99FFB8E5BBD3FE5251BE63AFDF0A0AFA52BA09
+ 1074D55F4609FA76034042BECE253B3526FCC36003205C50E8962790BB09A0EB
+ 20F6988C6E89C07E5DDDE1BA77DF7C7AFD8103FB369C3C78F2E0CCDC6C5E1200
+ 0000002021ED2FDBBBE72F7FBAE9913F3DF4BDF7FC2C6343BE5EFD8FE7CABF86
+ 7E1BFEA5740340B2921BFEED2680559FADF02F6C0004B3E1DED240EF867EDB17
+ 7ACC9E133497D13D577B915AB76A7EF9DC79CF2F3C65E4B49E6D3B74E6250100
+ 00000012CAD64DAB56DD7AE3393316CCFDFB167F29A13E28F0EBD57E9D6BE8D7
+ 5183BF0DFF12EEDDF02FA5D92956F8470036001A166B1340B8C72D394F9F7C76
+ 6C682E745DB7A7A2E4C0AC990F2E6CD3AED3DE5EFD869E9499919D1939030000
+ 00009A4955F5DEAA97673EFCDC4FBE7FD1B3BBCB77CA2DFF4157F9837ABA01A0
+ E1DF961BFE6DE8B7992956F8777B888A155E113BE44B2FEDA369FD5C475BB2C9
+ 622BC32909F35A590DAD7BF41AD4E19BD73E72E1D053268EF3D7000000007042
+ 959696D6ED285A31EF81BBFE6B66D1D655157ECB0DF50DADC342BF2D0DFDEE28
+ ECDCD25ED031F8B803A0F18236032C79B2C939EE93CE7D32068D5A2268EDEDDD
+ 535AFDDAAC4797EFDCB979EDA021A7F5CACDCBCF8F1C05000000802656B6ABA8
+ E8B187AFFFC3EF7EFD9DB7FC6C52E9B7F4AABE947BB5DFAE6DF8B79B0036F0DB
+ B996CD45B654D81C011A0AB3F888FB38D9B5CC834AEF08904D16BD13C0DE11A0
+ 7700C85CAEEEEBDD00F6AE80B03B02E49CAC8C8CACEC2BAE7E60D2F869179FD7
+ 26AB136F1208000000A0491CACA8A87E63F6D3B31EBAEF9BEF1C3A54A3C15E43
+ BD94AC35DC87057E1925E087857F1D25C83736FC0B770D870454C4CF3E5EEE5C
+ 4B68F897B2E15F4B3701EC46809606FCA0E01F587DFB9FD2F1CA6B675C3468C8
+ E9A3FC35000000001C37AB97CD5DF8C03DFFFDC2A60D4BCAFCA5067B2D7723C0
+ 960DFFB634F86BE8D7D2B5067D990B5DDB801F36470C1240113F0DF8CA5D0BE9
+ E91330E8B8A5E7C9186B1EB37697EFAC7EF5C58797EED9BD6B53BFC163FBE4E5
+ B66EEDF701000000E0A895961717FF69C6FFFEE9C17BAFF8E7EE8AE2A0CFF597
+ 3B0124E0BBFDB04D0009F8326AD8773700A424E3E8286CF651768E466828A022
+ 987DDCDCC750D6B6F46E003BDA3B02EC9D00F1DE11105A593979395FBF66C694
+ 89E3A79E9391DF5D7A0000000010B743878A6BDE7EE395571EBCE77FDEA8A9AE
+ AA96965F36D487950DFBB634F8BBA15FE712E8DDD19665D7EE31344002291ACF
+ 7DDC82D641A59B007603C06E0268056D00D8B9BC2440D7813568D8F8CE577CE7
+ FE8B0B078D3ED95F030000004083D6AF5EB074C62FBEF1DCEAE5EF95F84B1BEA
+ E5CABECEB56F7B76B4A5A1DF0DFF52B296101F14FAB5AC86D66880844D1C3D09
+ F3CACE5DF2C48C755CD827AFCEED18F48F22EC1FCAE1D292ADFB5F9EF9D0A203
+ D5FBB7F6ED3DBC7B6E1B3E2D0000000040B0F29D45DB9F7AEC474FFEF2A75F99
+ E567893D7E4B6FE597D1BDD53F682EA35650F8D7C02FA3ADFA0CE397B0B9C6B2
+ 6BF718E2D45028456CEEE317B696ABFC42D67A17801DB564434647F74E005DCB
+ 157E99EBD57E7B2780CCDDBB03FC795AD625977DEFE4E9175D31ADA06BDFDE7E
+ 0F00000000BC92A24D9B67BD38E3B5679FB873A99FC125C84B70B7413EA8A773
+ 09F4DAD3929E8E61C15F02BC3B0A990B37E037B4469CDCC08AA3631F47F731D5
+ B58C6EC5BB0960E7B634F4DBB909FEEE989675FEA7AF1C7CFEC5DF9ED6BBCFC0
+ 42BF07000000A0052ADABA76DDCC677EF9EA4BCFDDBFDACFDD36E4BBA3DB73E7
+ 5A6EF08F27FCBB25745476ED1E432349F8C4B1731FC7A0C7557A5A42C3BF94CE
+ 7513403700740CDA0090B5067C2D1BF89DF07FE4F1A9E75D5E78D167AF99D6A7
+ DFF0C1FE1A000000400BB071DDB295CFFFDF3DAFBE31EBD1F5FE5282BC04F4A0
+ 702FA39DEB715DCBD7D99E867E0DFC3A86057F990B5D4BB9DC5ED03968040DA3
+ 38BEECE3EA3EC6B2B625215FC8A86B2D0DFE762E01DECEDDB281DFAE03370426
+ 4CF9F7DE175F76C3D48E1DFB9CDCA95327F9F301000000A490D2D2D2BAB2B2CD
+ 4B9F7BE227AFBDFBC6D35BFC960DF46EC80F0AFB76ADA561DFCE25D4DBB99604
+ 770DFCBAB665D9B57B0CC788C0D734DCC735681D56762340C3BF96067F7703C0
+ CE6D05857EF758A4469D767E8FCF7EE5E6A98386F53FA555AB2EF26701000000
+ 48627575258757AD58B7E8A9DFDFF6CF85F35F2AF25B36C00705FBB04D002D0D
+ FC3AB76503BFAE25C007057E5B56436B1C23099A683AF6F1751F6B596B091935
+ 78CB286B09F6DA97B93B4A7897D1CEEB43BD2909FB722C6823E088E343474C2E
+ F8C2576F3B6BC8C943C6A6A777951E0000008024525BBBB376E5D295EF3FFEC8
+ CDAFAF58F256B1DF92402FA13C2CD837745C8EE968E736ECEB28A15DE632CA5A
+ 685FC8A865D9B57B0CC789864F340DF7F10D7ABCA5A72534FC4BC95CD73A9792
+ 601EAB6CB8D7B5867F59876D04D457FF81A33A7EF1BF7F3AA5D7C8D3C776CE6E
+ 97EBF70000000024B05D0776EFDFBA78EEFB8FFDF6FA37D6AD5958E6B76C880F
+ 2A0DFE3A9751D75AB28E5512EEB524B8DBB9AE85AEA55C6E2FE81C1C071A3AD1
+ B4ECE31CF4984B4F4BC8A8C15FCB6E00684998D7D12D09F23A06951C0BDA1438
+ E26BF2F2DA655F78E955278F9F78C998BEFDBB0D4E4B2B90E30000000012C0E1
+ C3C5B59B37EC5839E7AD6717CCFCBFFB965655ED96CFEC7703BC8C6ED8D77950
+ E93119DD9240AFA35B36E4EB5AD8BEB27315D4C371A481134DCB7D9C831E77ED
+ C9185412F475D4B984715DCB5CD73A7703BD9DC7EA691DF1B53D7A0D6A7BD17F
+ 7C77D4A871D3471774EDDBDBEF010000006806C53B376D593877D682179EFEF9
+ 82A2ADABF7FA2D09E56E800FAAA063415F2BA39404793BD7B584755DEB5CC6A0
+ 123A0A3BB7C2FA384E2444E2C4B38FBBFB3B90B596905142BDD0E06F472D09EB
+ 76EE960DF43AD6877B6774FB761DA953C79CDBEDBC8BBE3E66F8A8F1A3DBE477
+ 6BEFF70000000034A1CABD3B2A962D7C6FC1AC177EF3C1A20F5EDEE1B734984B
+ 6980B721DE5D37D497D12D1BFA75AEA5015FE6427B428FE95AD9B57B0C4D4C43
+ 264E2CF7710FFA3D484F4B48B0D7B5CC85F624946B5FE67613C0CE6D880F9A6B
+ D00F5BBBE7A7A7A565644E3BFFF2FE9F38E70B63FA0C1D3EA24D56A76CBF0F00
+ 0000E038A8AC293DB079C5B2256FBEF2F807AFBEF4BB75870F1FD2DBF7A5DCD0
+ AEC1DE867A776DCF0D9A4B8877E71AEC652EA3AE6D494FD89ECBED059D8326A4
+ E112CD23E8F1777BB20E2BDD00B0A32D09E93ABA731BEA83E6766CE8DCC8BC4D
+ DB8E399FFACCD5C3C74DFEF498DE7D0B06F2718200000040E3C9C7F76D5A5FBC
+ FAFDD97F5DF0FC33F72EABDC5356EDB78302BBEDE9DA3D66CF099B87857EB734
+ D8DB795059EE5A04F57002486844F3097BFCDDBEACB5848C1AAE65D4633A97D1
+ 968674776D2BAE901FC75C2AAD77DFE1ED3EF999AB4E1D3C6CDC8036BDFA16F2
+ 490200000040387907FFCAAD9BD6AF5A3E6FED8BCFDCB768CBA665BBFDB6046D
+ 0DE6524101DEF6DC75D8DC96867B77AD2561DD1D859DCBA865B96B15D64713D3
+ 4089C4607F1FEEEF46D732BA2524D8EB5A83BECC2381DC99078D6EB9A15ED761
+ 7DB7EABF6F464656C6B8332FEE79DA840B079E3460D480ECDE05FDBA651664F9
+ C7000000801669C7C1E29A035B8A376E58BB70EDFC7767AE9937FBB96D870ED5
+ D8902E015BE7B6C2027F583FA8F47BCBA87309E5EE5C4AE71ADAED5C463BB7EC
+ DA3D8666A2E11189C1FD7D04FD7EA4A7257494C0ADA3F4DC51C2B8AE35A0DB79
+ 24AC375061613FACECF7ADFFF3B2B2F2B2CE9CF2EFBD4F39EDBC8103879C5298
+ 97D9A16FFBAEDDE47B0300000029A962E78E43FB6ACA37AD5DF5E1FA0FE7CF5A
+ 33FB8DA7B7D4D454D5F887DC406EC758152BE08795FDFE762E015DE632EADA8E
+ 4247E969091D2DB717740E9A8186472426FBFB717F57B2D612766D4B42B73BD6
+ 87F180B51BDC83D68D29F7FBEA5AC75679796DB3274DFB7CBF9163A60FE83F70
+ 78FF2E5DDBF74A4B2B9063000000405292CFE72F29DAB365DDFA25EB177FF08F
+ B56FBFFAE78D55557BE433FA250C8785712D771D6FC5FA3EFAE768CFAEE5EFE4
+ 8E4125DCB5B26BF71812840442242EF7F713F4FB929E96B06BB72474EB185661
+ 41DD56BC3D2DFBBDEC5C46F9FB1CB16EDBBE2077CAD42F9E347CF4D9FDBBF7EC
+ D7BD7D872E5D0ED4B4EAD0B9731739170000004828BB7695D46567D595579497
+ 946CDFB671FBB205FF5CF7C66B8F6DD85351BCDF3F2C61D88671772DA3CEB5DC
+ 75582FA8AF6B19DD7950C9DF47C7B012EEDA727B41E7200110A89243D0EFC9ED
+ C95A4BD8B55B12B67574E7B66C30B7A3CE6DB9E7851D73CF933F3B687DC4DF29
+ 2FAF6DD6B091133B170E185BD0B3CFE082821E7D3B776CDBB34B5A4187CEBCC1
+ 200000004E0479A3BEC3C5E5BBCAF66C2B292EDAB46BDBE655C5EBD7BE5FBC7C
+ F13BBBAAAAF6C8EDFC6EB096F0ADA3F482D67ABEEDD96AE8987BDC8E6EC99FED
+ CE650C2BE1AE95BB16413D24100959487C61BFA7A0BEF4B484BB9640AD6B9DDB
+ 51E736846B40D7B281DD1DEDB9BAB6C7ED319DDB9EFB67BBA5FDFAB167EFC16D
+ 868C9858D0AF706497EEDD077469D7AD67972E1D7B74CE6F5BD7919712000000
+ A031E4D6FDBD7B5A95959415EDDABD635BC9F6ED6B4B36AE5F5CB272C93BC5DB
+ B6ACAAF44F9190EB06680DD5B6A42F415C47F7B8EDD9E0AE658FD9E341A396AE
+ ED9FADC7746E479D0B5D4B09776D05F544581F09424214924FD0EFCDEDC95A4B
+ B86B0DD1B63464DB80AD730DEC76AE65D73A777BB1BEC6F6F4FBBB7F1F29F7EF
+ A4A3CE457D2F232B277DE8B0333AB6EFDC3D2FAF75879CD6ADDB67B7C96F979D
+ 9DD32627AF757E764E4EEBEC2CBF72B272B232B372B2B3B2F3FC6359D9E959D2
+ CBCCCA3C94979D995999959EDF2D33F29D01000090D06AF7EE3878F0609B9A83
+ 195507AA6B0ED6D4D6EC3BE04F0E1C3A78A0A6BA66BF3FAFF227FB0E54FB55B5
+ 6FAFBFAEACAEDCBBFBC0BE7D15FEBABCBA62D7F6AA15CBE7941DAAA9D6F02CA5
+ 01D90DCD3ABA73DBD3EFE3067529DB93B97B8EAEDDF374AE6BFDB3ED5CCAFD3B
+ C9DA96F484ED0977ADDCB508EA2181495042F209FBBD05F52361385A42470DCC
+ B276C373D81816CC6DDF0DF6B1D63AD7EF6DE7417F8EEDE95C469D0BDB0B2AE1
+ AE857BBC5E4646565A4E5E9B74FF3F9147F47DEE1A00000027D6470134CDABAB
+ AEAEAAF583BB865AA50155461B5675ED1E0F2AFD9E3644EB5C46776E7B6101DD
+ 06793B8FB5D6EF678FD9BE7EEFB051E85A684FD7326AB9827A22AC8F04458049
+ 0DF6F718F63B95BE96B23DB7DC20ED866E1BD2C3E6B634E0DBB2DF27EC78D03A
+ 6C14BA0E2BE1AE857B3C88DB0F3B0F0000004DCB0D9E0D055419ED39BA768F07
+ 951B9E638D5AEE5A4A43BA0DEBEE71B7A7E787CDF5FBD851CB5DBBA5827A967B
+ 2E9218012635342698CA312DE5F6C2427450E8D651E7EE0680DB6BCC71F75843
+ A3D0B52DA1C775ED1E17766DFBCAED059D03000080A6E706D1A060EA06575DEB
+ DCAE850466618F4B69DF0DDA61A31BCCC3427B638EBBBDB0D12DE90BDB53413D
+ 977B2CD6B948020498D4D498F02AA33B0F5ADBB221DB06701D837A3206857F9D
+ 07AD6D2F68747BC21ED3127A5CD7EE7111B40E12D677C57B1E0000008E146FD0
+ 0C3BCFF6651EB4D69E8E4161594AFB4161DBEDD9D196DBB36B99DB90EF1E0B1B
+ DDB95B226C2D7454EE5A04F590C40828A9A931C1557B32DAB98E766E437450E0
+ D6F9B18CF19C2363582FA8849EA3DCE342E7EEE80AEBBBE23D0F000000478A37
+ 78869DA77D771432D7523297302DEC71B76285F058633CE7C433EA5C684FD8B9
+ 9E2762F5ACA09E08EB234911505A86A0DFB3DBB36B09CB4AFB32DAB99E6383B5
+ 0DE2EE71ED3566D4B2EB58C7E22915D60B1AC334741C0000004DABA1E0EA8E42
+ E65ACAF61A2A1BC6DD75D8B178479D8BA05ED071A1E7091D859E2B6C5FB86B11
+ D4430A21C0B40C61BFE786FA32DA73DCBE2D21A3047261E76E8017B17AEE319D
+ DB9E70CF13F63C5BC28E413D3B2A77ADE23D0F000000C74758386D28D8EA3A68
+ 0CEBB9258202B9EDD963EE3CE8FC787AC2CEF53C5B424711D6B71ADB478A20B4
+ B44C41BFF7867A320F5ABBBD868278AC8A27EC8BA0F36C0919EDDF45473B0F1A
+ 55437D000000240637B486855FB76F47B7D750E8D6D2C06EE7FAB5EE796E2F9E
+ 12F6EF22DCE32268ED8AB7871446986999C27EEFB19E0FF698CCDDB58EEEDCAE
+ 6D20B7C71A0AF4B684DD0C9031ECFBBA6B11D41341E7C4AB31E7020000E0E835
+ 26B0CAB9F67CF76BF5B87B8EEDB96B1BC665D4D06FCF8B5541E70BF7FBDA63EE
+ 5CD9BEB07357D8B1585F831444708115F47C88D57347617BEEF17883BA8CC7E3
+ 5C11D413BA8E754CB8C744500F000000275E50806D28144B4FCB0AEABBBD7882
+ BAAE1B7BAE708F0B1D85DBB3C754BC3DB44004195861CF8758CF137B4CE6EE3A
+ 6CD4123A6A901741E7C45A0BB767479DABA0735C413D11D6070000C08915166C
+ 1BEACBE89E637BEE79BA166EAFA1B5080BF8761D340A7B9EB07357D8B1585F83
+ 1684208378C41B8E6D4FE6EE39B6E79E2B626D0008BBB663504F479DABB07383
+ 847D2D000000128B1B70E309C9EEA8641D764ED8319D0B5DDB9EBB012074EE9E
+ 2BDC9E7B5CC4DB03EA1168108FB0E74963C373502F68147ABEDB8B350A99BBEB
+ A0D115D4777B615F0B000080E6E506DFC68463EDBBA390B9BB8E350A996B29F7
+ 3C7B4CB8E70B776D851D8BF535008106C7249ED0AC6C5FE7B1BE3EE89CA33D26
+ 82D66EAF218D3D1F00000027466383AF9CEF7E4DD8DA1DC5D11E53B1BECE15EB
+ EB814621D0E058843D7FE2795E059DA33DF798DB8FE76B83CE5161E7C4FA1A00
+ 0000242F3730EB3A569076CF093AB7A173E2F9DA58C2CE89E76B818F21F0A029
+ 043DAFE279AE8505F2585FEB9E13CFB92AECDC58DF03000000C923DE001D2B50
+ EB31770C12764EACAF5141E7C4F37540DC083A680A0D3DAF1AF3BC0B3AD7ED85
+ 7DBF78CE0BFB5A000000A4A678827658F08EE7BCB0AF0DD2D0B98DF95E408308
+ 3F680EB19E77F13C27C3CE696C3F96A3F91A000000248EA309CF615FD3D8BE15
+ EB9CA3F93B02478D9083E610EFF3EE589E9F8DF9DAE3FDEF807F57000000C7C7
+ F10EC88DF97EC7F267C7FBB56C00E08422A82091C57A7E36C573977F0F000000
+ A9A9298276ACEF49B047424A8F8E40223A96404E98070000C0B120C423E5B001
+ 001C898D03000080D472B4419E0D00A41CC20E5219CF6F0000001C0DC23F0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -2800,8 +2800,8 @@ object SplashScreenForm: TSplashScreenForm
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
- 000000000000000000000000000000000000000000000000000000E9C6F3FE3F
- D71C5008D1829C820000000049454E44AE426082}
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 008096C6F3FE3F4DE24F1B78A2530E0000000049454E44AE426082}
FileName =
'E:\YandexDisk\Development\Delphi\AErender Launcher\src\AErender ' +
'CC\icon_512@2x.png'
diff --git a/src/lib/AErenderLauncher.AerenderParser.pas b/src/lib/AErenderLauncher.AerenderParser.pas
new file mode 100644
index 0000000..f36c4db
--- /dev/null
+++ b/src/lib/AErenderLauncher.AerenderParser.pas
@@ -0,0 +1,300 @@
+unit AErenderLauncher.AerenderParser;
+
+(* AErender Data Parser *)
+(* Lily Stilson // 2020 *)
+(* MIT License *)
+(* *)
+(* Copyright (c) 2020 Alice Romanets *)
+(* *)
+(* Permission is hereby granted, free of charge, to any person obtaining a copy *)
+(* of this software and associated documentation files (the "Software"), to deal *)
+(* in the Software without restriction, including without limitation the rights *)
+(* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell *)
+(* copies of the Software, and to permit persons to whom the Software is *)
+(* furnished to do so, subject to the following conditions: *)
+(* *)
+(* The above copyright notice and this permission notice shall be included in all *)
+(* copies or substantial portions of the Software. *)
+(* *)
+(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *)
+(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)
+(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *)
+(* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *)
+(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *)
+(* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE *)
+(* SOFTWARE. *)
+
+{$EXTENDEDCOMPATIBILITY ON}
+
+interface
+
+uses
+ System.SysUtils;
+
+type
+ ///
+ ///A set of constants that will determine current aerender state.
+ ///
+ TAErenderLogType = record
+ const
+ Information: Integer = 0;
+ Rendering: Integer = 1;
+ Error: Integer = 2;
+ end;
+
+ ///
+ ///A more convinient way to call Single-type framerates.
+ ///
+ TFrameRate = Real;
+
+ ///
+ ///Record that represents standard After Effects timecode data.
+ ///
+ TTimecode = record
+ H, MM, SS, FR: Cardinal;
+ private
+ {Private declartions}
+ public
+ constructor Create(const H, MM, SS, FR: Cardinal);
+ procedure Clear;
+
+ ///
+ /// Converts parsed timecode to string with 'H:MM:SS:FR' format.
+ ///
+ function ToSingleString: String;
+
+ ///
+ /// Converts parsed timecode to string with H, MM, SS, FR being separated.
+ ///
+ function ToExpandedString(Delimeter: String): String;
+
+ ///
+ /// Calculates total ammount of seconds from timecode
+ ///
+ function ToSeconds(): Cardinal;
+
+ ///
+ /// Calculates total ammount of frames from timecode
+ ///
+ function ToFrames(): Cardinal;
+ end;
+
+ ///
+ ///Parsed aerender frame string data type.
+ ///
+ TAErenderFrameData = record
+ Timecode: TTimecode;
+ Frame: Cardinal;
+ ElapsedTime: Cardinal;
+ InitialMessage: String;
+ end;
+
+ ///
+ /// Transforms string with 'H:MM:SS:FR' format to TTimecode.
+ ///
+ function StrToTimecode (const ITimecodeString: String; var ATimecode: TTimecode): String;
+
+ function TimecodeToFrames (const Timecode: TTimecode; const FrameRate: TFrameRate): Cardinal;
+
+ ///
+ ///Parses aerender log string and returns record of it's contents.
+ ///
+ function ParseAErenderFrameLogString (const ILogString: String): TAErenderFrameData;
+
+ ///
+ ///Parses aerender log string and returns TTimecode value of render area duration.
+ ///
+ function ParseAErenderDurationLogString (const ILogString: String): TTimecode;
+
+ ///
+ ///Parses aerender log string and returns TFrameRate value of render framerate.
+ ///
+ function ParseAErenderFrameRateLogString (const ILogString: String): TFrameRate;
+
+implementation
+
+constructor TTimecode.Create(const H, MM, SS, FR: Cardinal);
+begin
+ Self.H := H;
+ Self.MM := MM;
+ Self.SS := SS;
+ Self.FR := FR;
+end;
+
+procedure TTimecode.Clear;
+begin
+ Self.H := 0;
+ Self.MM := 0;
+ Self.SS := 0;
+ Self.FR := 0;
+end;
+
+function TTimecode.ToSingleString(): String;
+begin
+ Result := Result + Self.H.ToString + ':';
+
+ if Self.MM < 10 then
+ Result := Result + '0' + Self.MM.ToString + ':'
+ else
+ Result := Result + Self.MM.ToString + ':';
+
+ if Self.SS < 10 then
+ Result := Result + '0' + Self.SS.ToString + ':'
+ else
+ Result := Result + Self.SS.ToString + ':';
+
+ if Self.FR < 10 then
+ Result := Result + '0' + Self.FR.ToString
+ else
+ Result := Result + Self.FR.ToString;
+end;
+
+function TTimecode.ToExpandedString(Delimeter: String): String;
+begin
+ Result := Result + 'H: ' + Self.H.ToString + Delimeter;
+
+ if Self.MM < 10 then
+ Result := Result + 'M: ' + '0' + Self.MM.ToString + Delimeter
+ else
+ Result := Result + 'M: ' + Self.MM.ToString + ':';
+
+ if Self.SS < 10 then
+ Result := Result + 'S: ' + '0' + Self.SS.ToString + Delimeter
+ else
+ Result := Result + 'S: ' + Self.SS.ToString + Delimeter;
+
+ if Self.FR < 10 then
+ Result := Result + 'FR: ' + '0' + Self.FR.ToString
+ else
+ Result := Result + 'FR: ' + Self.FR.ToString;
+end;
+
+function TTimecode.ToSeconds(): Cardinal;
+begin
+ // {H -> MM} + {MM -> SS} + SS
+ Result := (Self.H * 60 * 60) + (Self.MM * 60) + Self.SS;
+end;
+
+function TTimecode.ToFrames(): Cardinal;
+begin
+ // {H -> MM} + {MM -> SS} + SS
+ Result := (Self.H * 60 * 60) + (Self.MM * 60) + Self.SS + Self.FR;
+end;
+
+function StrToTimecode (const ITimecodeString: String; var ATimecode: TTimecode): String;
+var
+ ATimecodeString: String;
+begin
+ ATimecodeString := ITimecodeString;
+
+ //Read hours from timecode and remove it from temporary string
+ ATimecode.H := StrToInt(ATimecodeString[1]);
+ Delete(ATimecodeString, 1, 2);
+ { AString = '00:00:00 (1): 0 Seconds' }
+
+ //Read minutes from timecode and remove it from temporary string
+ ATimecode.MM := StrToInt(ATimecodeString[1] + ATimecodeString[2]);
+ Delete(ATimecodeString, 1, 3);
+ { AString = '00:00 (1): 0 Seconds' }
+
+ //Read seconds from timecode and remove it from temporary string
+ ATimecode.SS := StrToInt(ATimecodeString[1] + ATimecodeString[2]);
+ Delete(ATimecodeString, 1, 3);
+ { AString = '00 (1): 0 Seconds' }
+
+ //Read frames from timecode and remove it from temporary string
+ ATimecode.FR := StrToInt(ATimecodeString[1] + ATimecodeString[2]);
+ Delete(ATimecodeString, 1, 4);
+ { AString = '1): 0 Seconds' }
+
+ Result := ATimecodeString;
+end;
+
+function TimecodeToFrames (const Timecode: TTimecode; const FrameRate: TFrameRate): Cardinal;
+begin
+ Result := Trunc(Timecode.ToSeconds * FrameRate) + Timecode.FR;
+end;
+
+function ParseAErenderFrameLogString (const ILogString: String): TAErenderFrameData;
+var
+ AString: String;
+begin
+ Result.InitialMessage := ILogString;
+ AString := ILogString;
+ { AString = 'PROGRESS: 0:00:00:00 (1): 0 Seconds' }
+ if ILogString.Contains('PROGRESS: ') then begin
+ //Get rid of PROGRESS response in initial string
+ AString := AString.Replace('PROGRESS: ', '');
+ { AString = '0:00:00:00 (1): 0 Seconds' }
+
+ AString := StrToTimecode(AString, Result.Timecode);
+
+ //Read current render frame from timecode and remove it from temporary string
+ var AFrame: String;
+ while AString[1] <> ')' do begin
+ AFrame := AFrame + AString[1];
+ Delete(AString, 1, 1);
+ end;
+ Result.Frame := StrToInt(AFrame);
+ Delete(AString, 1, 3);
+ { AString = '0 Seconds' }
+
+ //Read elapsed time to render one frame and clear the string
+ var AElapsedTime: String;
+ while AString[2] <> 'S' do begin
+ AElapsedTime := AElapsedTime + AString[1];
+ Delete(AString, 1, 1);
+ end;
+ Result.ElapsedTime := StrToInt(AElapsedTime);
+ { AString = ' Seconds' }
+ end else begin
+ raise Exception.Create('Parsing error (-1): Provided string cannot be interpreted as current rendering frame data.');
+ end;
+end;
+
+function ParseAErenderDurationLogString (const ILogString: String): TTimecode;
+var
+ AString: String;
+begin
+ AString := ILogString;
+ { AString = 'PROGRESS: Duration: 0:00:10:00' }
+ //if AString.Contains ('Duration: ') then begin
+ AString := AString.Replace('PROGRESS: Duration: ', '');
+ { AString = '0:00:10:00' }
+
+ AString := StrToTimecode (AString, Result);
+ { AString = '' }
+ {end else begin
+ raise Exception.Create('Parsing error (-1): Provided string cannot be parsed.');
+ end;}
+
+end;
+
+function ParseAErenderFrameRateLogString (const ILogString: String): TFrameRate;
+var
+ AString: String;
+begin
+ //Added to get rid of decimal separators
+ if ILogString.Contains(',') then
+ AString := ILogString.Replace(',', '.')
+ else
+ AString := ILogString;
+ { AString = 'PROGRESS: Frame Rate: 60.00 (comp)' }
+
+ //if AString.Contains ('Frame Rate: ') then begin
+ AString := AString.Replace('PROGRESS: Frame Rate: ', '');
+ { AString = '60.00 (comp)' }
+ var AFrameRate: String;
+ for var i := 1 to Length (AString) do
+ if AString[i + 1] <> '(' then begin
+ AFrameRate := AFrameRate + AString[i]
+ end else begin
+ break
+ end;
+ Result := StrToFloat(AFrameRate);
+ {end else begin
+ raise Exception.Create('Parsing error (-1): Provided string cannot be parsed.');
+ end;}
+end;
+
+end.
diff --git a/src/lib/AErenderLauncher.IO.pas b/src/lib/AErenderLauncher.IO.pas
new file mode 100644
index 0000000..d851cf7
--- /dev/null
+++ b/src/lib/AErenderLauncher.IO.pas
@@ -0,0 +1,99 @@
+unit AErenderLauncher.IO;
+
+interface
+
+uses
+ System.Classes, System.Types, System.SysUtils,
+ {$IFDEF MSWINDOWS}
+ Winapi.ShellAPI, Winapi.Windows;
+ {$ELSE MACOS}
+ Posix.Stdlib, Posix.Unistd;
+ {$ENDIF}
+
+ function Open(Path: String; Args: TArray = []): Integer;
+ function Execute(Path: String): Integer;
+ function BackgroundExecute(Path: String): Integer;
+
+ procedure CreateCmd(const ACommand, AFile: String);
+ //function ExecuteAndWait(Path: String; Timeout: Cardinal): WideString;
+
+implementation
+
+function Open(Path: String; Args: TArray = []): Integer;
+begin
+ {$IFDEF MSWINDOWS}
+ var TempPath: String := Path;
+ for var i := 0 to High(Args) do
+ TempPath := TempPath + Args[i];
+
+ Result := ShellExecute(0, 'open', PWideChar(TempPath), nil, nil, SW_SHOW);
+ {$ELSE MACOS}
+ var TempArgs: String := '';
+ for var i := 0 to High(Args) do
+ TempArgs := TempArgs + Format('"%s" ', [Args[i]]);
+
+ Result := _system(PAnsiChar(Format('open -a "%s" --args %s & disown', [AnsiString(Path), AnsiString(TempArgs)])));
+ {$ENDIF}
+end;
+
+function Execute(Path: String): Integer;
+begin
+ {$IFDEF MSWINDOWS}
+ Result := ShellExecute(0, 'OPEN', PWideChar(Path), '', '', SW_SHOWNORMAL)
+ {$ELSE MACOS}
+ _system(PAnsiChar(Format('chmod +x "%s"', [AnsiString(Path)])));
+ Result := _system(PAnsiChar(Format('command "%s"', [AnsiString(Path)])));
+ {$ENDIF}
+end;
+
+function BackgroundExecute(Path: String): Integer;
+begin
+ {$IFDEF MSWINDOWS}
+ Result := ShellExecute(0, 'OPEN', PWideChar(Path), '', '', SW_HIDE);
+// var exInfo: SHELLEXECUTEINFO;
+// exInfo.lpVerb := 'open';
+// exInfo.lpFile := PWideChar(Path);
+// exInfo.nShow := SW_HIDE;
+// exInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
+// Result := ShellExecuteExA(@exInfo).ToInteger;
+ {$ELSE MACOS}
+ _system(PAnsiChar(Format('chmod +x "%s"', [AnsiString(Path)])));
+ Result := _system(PAnsiChar(Format('command "%s" & disown', [AnsiString(Path)])));
+ {$ENDIF}
+end;
+
+function OpenAndWait(Path: String; Args: TArray; Timeout: Cardinal): WideString;
+begin
+ //
+end;
+
+procedure CreateCmd(const ACommand, AFile: String);
+var
+ F: TextFile;
+begin
+ AssignFile(F, AFile);
+ Rewrite(F);
+ Writeln(F, ACommand);
+ CloseFile(F);
+end;
+
+procedure CreateCmdAndExecute(const ACommand, AFile: String; const Background: Boolean = True);
+begin
+ CreateCmd(ACommand, AFile);
+
+ if Background then
+ Execute(AFile)
+ else
+ BackgroundExecute(AFile);
+end;
+
+procedure CreateCmdAndOpen(const ACommand, AFile: String; const Args: TArray);
+begin
+ CreateCmd(ACommand, AFile);
+
+ Open(AFile, Args);
+end;
+
+//initialization
+
+end.
diff --git a/src/lib/AErenderLauncherLocalization.pas b/src/lib/AErenderLauncher.Localization.pas
similarity index 99%
rename from src/lib/AErenderLauncherLocalization.pas
rename to src/lib/AErenderLauncher.Localization.pas
index da0b9ba..b7ff2de 100644
--- a/src/lib/AErenderLauncherLocalization.pas
+++ b/src/lib/AErenderLauncher.Localization.pas
@@ -1,4 +1,4 @@
-unit AErenderLauncherLocalization;
+unit AErenderLauncher.Localization;
interface
diff --git a/src/MathExpParser.pas b/src/lib/AErenderLauncher.Math.ExpParser.pas
similarity index 98%
rename from src/MathExpParser.pas
rename to src/lib/AErenderLauncher.Math.ExpParser.pas
index a8f4cb5..434d67f 100644
--- a/src/MathExpParser.pas
+++ b/src/lib/AErenderLauncher.Math.ExpParser.pas
@@ -1,9 +1,9 @@
-unit MathExpParser;
+unit AErenderLauncher.Math.ExpParser;
interface
-Uses
- Sysutils, Classes, DateUtils, Math, Generics.Collections;
+uses
+ System.SysUtils, System.Classes, System.DateUtils, System.Math, System.Generics.Collections;
type
TAssociativity = (asNone,asLeft, asRight);
diff --git a/src/lib/AErenderLauncher.Math.pas b/src/lib/AErenderLauncher.Math.pas
new file mode 100644
index 0000000..19d8cee
--- /dev/null
+++ b/src/lib/AErenderLauncher.Math.pas
@@ -0,0 +1,52 @@
+unit AErenderLauncher.Math;
+
+interface
+
+ //function IfThen(const AValue: Boolean; const ATrue: Variant): Variant;
+
+ function IfThenElse(const AValue: Boolean; const ATrue: String; const AFalse: String): String; overload;
+ function IfThenElse(const AValue: Boolean; const ATrue: Integer; const AFalse: Integer): Integer; overload;
+ function IfThenElse(const AValue: Boolean; const ATrue: Variant; const AFalse: Variant): Variant; overload;
+
+ function IntToCardinal(I: Integer): Cardinal;
+
+implementation
+
+{function IfThen(const AValue: Boolean; const ATrue: Variant): Variant;
+begin
+ if AValue then Result := ATrue;
+end; }
+
+function IfThenElse(const AValue: Boolean; const ATrue: String; const AFalse: String): String; overload;
+begin
+ if AValue then
+ Result := ATrue
+ else
+ Result := AFalse;
+end;
+
+function IfThenElse(const AValue: Boolean; const ATrue: Integer; const AFalse: Integer): Integer; overload;
+begin
+ if AValue then
+ Result := ATrue
+ else
+ Result := AFalse;
+end;
+
+function IfThenElse(const AValue: Boolean; const ATrue: Variant; const AFalse: Variant): Variant; overload;
+begin
+ if AValue then
+ Result := ATrue
+ else
+ Result := AFalse;
+end;
+
+function IntToCardinal(I: Integer): Cardinal;
+begin
+ if I < 0 then
+ Result := 0
+ else
+ Result := I;
+end;
+
+end.
diff --git a/src/lib/AErenderLauncher.Rendering.pas b/src/lib/AErenderLauncher.Rendering.pas
new file mode 100644
index 0000000..b790c2a
--- /dev/null
+++ b/src/lib/AErenderLauncher.Rendering.pas
@@ -0,0 +1,520 @@
+unit AErenderLauncher.Rendering;
+
+{$M+}
+
+interface
+
+uses
+ System.SysUtils, System.Classes, System.Generics.Collections, System.JSON,
+
+ AErenderLauncher.Math,
+ AErenderLauncher.IO,
+ AErenderLauncher.AerenderParser;
+
+type
+ AERParamException = class(Exception);
+ AERFrameSpanException = class(Exception);
+ AERCompositionException = class(Exception);
+
+ TRenderState = (RS_WAITING, RS_RENDERING, RS_FINISHED, RS_STOPPED, RS_ERROR);
+ TRenderMode = (RM_NORMAL, RM_TILED, RM_ALL_AT_ONCE);
+
+ TExecutable = record
+ Contents: WideString;
+ Exec: TextFile;
+ /// Add procedure to start executable
+ end;
+
+ ///
+ TFrameSpan = record
+ StartFrame, EndFrame: Integer;
+ constructor Create(const StartFrame, EndFrame: Integer); overload;
+ constructor Create(const StartFrame, EndFrame: String); overload;
+ function Split(const Division: Integer): TArray;
+ end;
+
+ ///
+ TComposition = record
+ CompName: String;
+ Frames: TFrameSpan;
+ Split: Cardinal;
+ Executable: TExecutable;
+ IsRendering: Boolean;
+ constructor Create(const CompName: String; const Frames: TFrameSpan; const Split: Integer = 1);
+ end;
+
+ /// Rendering Events
+// TRenderStartEvent = procedure (Task: TObject) of object;
+// TRenderFinishEvent = procedure (Task: TObject) of object;
+
+ ///
+ /// Structure that contains basic required
+ /// data for displaying rendering progress
+ /// ; const ARenderMode: TRenderMode); overload;
+ //constructor Create(const ALogFile: String; const ATask: TRenderTask); overload; deprecated 'Use non-overloaded constructor';
+ end;
+
+ ///
+ /// Class for storing rendering tasks data
+ ///
+ TRenderTask = class(TObject)
+ private // Declare all the private variables
+ FProject,
+ FOutput,
+ FOutputModule,
+ FRenderSettings,
+ FCustomProp: String;
+ FMissingFiles,
+ FSound,
+ FMultiprocessing: Boolean;
+ FCacheLimit,
+ FMemoryLimit: Single;
+ //FFrames: TArray;
+ FCompositions: TList;
+ FLogFilePaths: TList;
+ FState: TRenderState;
+
+ //FRenderThread: TRenderThread;
+
+// FRenderStartEvent: TRenderStartEvent;
+// FRenderFinishEvent: TRenderFinishEvent;
+
+ //procedure TaskTerminate(Sender: TObject);
+ function ToExec: TList;
+ published // Make some properties for tasks to use
+ // Standard
+ property Project: String read FProject write FProject;
+ property Output: String read FOutput write FOutput;
+ property OutputModule: String read FOutputModule write FOutputModule;
+ property RenderSettings: String read FRenderSettings write FRenderSettings;
+
+ // AErender Properties
+ property MissingFiles: Boolean read FMissingFiles write FMissingFiles default False;
+ property Sound: Boolean read FSound write FSound default True;
+ property Multiprocessing: Boolean read FMultiprocessing write FMultiprocessing default True;
+ property CustomProperties: String read FCustomProp write FCustomProp;
+ property CacheLimit: Single read FCacheLimit write FCacheLimit;
+ property MemoryLimit: Single read FMemoryLimit write FMemoryLimit;
+
+ // Compositions and Frames
+ //property Frames: TArray read FFrames write FFrames;
+ property Compositions: TList read FCompositions write FCompositions;
+
+ property LogFilePaths: TList read FLogFilePaths write FLogFilePaths;
+ property State: TRenderState read FState write FState default TRenderState.RS_WAITING;
+
+// property OnRenderStart: TRenderStartEvent read FRenderStartEvent write FRenderStartEvent;
+// property OnRenderFinish: TRenderFinishEvent read FRenderFinishEvent write FRenderFinishEvent;
+
+ constructor Create (const Project, Output, OutputModule, RenderSettings: String;
+ const MissingFiles, Sound, Multiprocessing: Boolean;
+ const CustomProperties: String;
+ const CacheLimit, MemoryLimit: Single;
+ const Compositions: TList);
+
+ constructor CreateFromJSON (const Project, Output, OutputModule, RenderSettings: String;
+ const MissingFiles, Sound, Multiprocessing: Boolean;
+ const CustomProperties: String;
+ const CacheLimit, MemoryLimit: Single;
+ const ProjectJSON: String);
+
+ procedure Render(const ThreadsLimit: Integer = 4{; const Mode: TRenderMode = RM_NORMAL});
+ function ToString: String; override;
+ function Count: Integer;
+ end;
+
+ function GetTaskByProject(const AProject: String): TRenderTask;
+ function GetTaskByCompName(const ACompName: String): TRenderTask; deprecated 'Useless in this context, we can get Project without browsing through compositions';
+ function GetCompByName(const ATask: TRenderTask; const ACompName: String): TComposition;
+ function GetCompIndexInTask(const ATask: TRenderTask; const ACompName: String): Integer;
+
+var
+ AErenderPath, Errors: String;
+ RenderTasks: TObjectList;
+ RenderQueue: TList;
+ AbortRender: Boolean = False;
+ TiledRenderThread: TThread;
+
+implementation
+
+uses
+ AErenderLauncher.Types;
+
+(****************)
+(* TFrameSpan *)
+(****************)
+function TFrameSpan.Split(const Division: Integer): TArray;
+var
+ I, J, K: Integer;
+begin
+ SetLength(Result, Division);
+ Result[0].StartFrame := StartFrame;
+ J := EndFrame - StartFrame;
+ K := J div Division;
+ Result[0].EndFrame := StartFrame + K;
+ for I := 1 to Division - 1 do
+ begin
+ Result[I].StartFrame := StartFrame + K * I + 1;
+ Result[I].EndFrame := StartFrame + K * (I + 1);
+ end;
+ Result[Division - 1].EndFrame := EndFrame;
+end;
+
+constructor TFrameSpan.Create(const StartFrame, EndFrame: Integer);
+begin
+ Self.StartFrame := StartFrame;
+ Self.EndFrame := EndFrame;
+end;
+
+constructor TFrameSpan.Create(const StartFrame, EndFrame: String);
+begin
+ if StartFrame <> '' then
+ Self.StartFrame := StrToInt(StartFrame)
+ else
+ Self.StartFrame := 0;
+
+ if EndFrame <> '' then
+ Self.EndFrame := StrToInt(EndFrame)
+ else
+ Self.EndFrame := 0;
+end;
+
+(******************)
+(* TComposition *)
+(******************)
+constructor TComposition.Create(const CompName: String; const Frames: TFrameSpan; const Split: Integer = 1);
+begin
+ if CompName <> '' then
+ Self.CompName := CompName;
+ {else
+ raise AERCompositionException.Create('Composition name cannot be empty');}
+
+ Self.Frames := Frames;
+ Self.Split := Split;
+end;
+
+(***********************)
+(* TRenderQueueObject *)
+(***********************)
+//function TRenderQueueObject.GetDuration: TTimecode;
+//begin
+// Result := FDuration;
+//end;
+//
+//procedure TRenderQueueObject.SetDuration(Value: TTimecode);
+//begin
+// FDuration := Value;
+//end;
+//
+//function TRenderQueueObject.GetFrameRate: TFrameRate;
+//begin
+// Result := FFrameRate;
+//end;
+//
+//procedure TRenderQueueObject.SetFrameRate(Value: TFrameRate);
+//begin
+// FFrameRate := Value;
+//end;
+
+constructor TRenderQueueObject.Create(const ATempFilePath: String; const ADuration: TTimecode; const AFrameRate: TFrameRate);
+begin
+ Self.TempFilePath := ATempFilePath;
+ Self.Duration := ADuration;
+ Self.FrameRate := AFrameRate;
+end;
+
+//constructor TRenderQueueObject.Create(const ALogFile: String; const ATask: TRenderTask);
+//begin
+// Self.LogFile := ALogFile;
+// Self.Compositions := ATask.Compositions;
+// Self.RenderMode := RM_NORMAL;
+//end;
+
+(*****************)
+(* TRenderTask *)
+(*****************)
+function TRenderTask.ToString: String;
+begin
+ var Res: String := Format('(%s, %s, %s, %s, [%s, %s, %s], "%s", %f, %f, ',
+ [Project, Output, OutputModule, RenderSettings, BoolToStr(MissingFiles, True), BoolToStr(Sound, True), BoolToStr(Multiprocessing, True), CustomProperties, CacheLimit, MemoryLimit]);
+ for var i := 0 to Compositions.Count - 1 do
+ with Compositions.Items[i] do
+ if i = Compositions.Count - 1 then
+ Res := Res + Format('Comp[%d](%s, [%d, %d], %d)', [i + 1, CompName, Frames.StartFrame, Frames.EndFrame, Split])
+ else
+ Res := Res + Format('Comp[%d](%s, [%d, %d], %d), ', [i + 1, CompName, Frames.StartFrame, Frames.EndFrame, Split]);
+ Res := Res + ')';
+
+ Result := Res;
+end;
+
+function TRenderTask.Count: Integer;
+begin
+ var Res: Integer := 0;
+ for var Comp in Compositions do begin
+ if Comp.Split > 1 then
+ Res := Res + Comp.Split
+ else
+ Res := Res + 1;
+ end;
+ Result := Res;
+end;
+
+///
+/// Creates executable files for Launcher to start and provides a list of
+/// paths to them in *.ext format.
+///
+///
+/// "ext" must be replaced with a special format!!!
+///
+///
+/// A list of paths to executable files
+/// ;
+begin
+ // Start with empty string
+ var TempStr: String := '';
+ var List: TList := TList.Create();
+
+ for var Composition: TComposition in Compositions do begin
+ for var i := 0 to Composition.Split - 1 do begin
+
+ var SplitFrameSpans: TArray := Composition.Frames.Split(Composition.Split);
+ SetLength(SplitFrameSpans, Length(SplitFrameSpans)); // Calculate split once, so we don't have to calculate it everytime
+
+ // should match \[(.*?)\]\_\[(.*?)\]\_\[(.*?)\]\_\[(.*?)\]\.bat
+ var FilePath: String := APPFOLDER + Format('[%s]_[%s]_[%d]_[%d].ext', [ExtractFileName(Project).Replace('.aep', ''), Composition.CompName, SplitFrameSpans[i].StartFrame, SplitFrameSpans[i].EndFrame]);
+
+ // Add Pass output path to temporary wariable
+ var AdjustedOutput: String := Output;
+
+ // Create folder if '[projectName]/' or '[projectName]\' is used
+ // Because aerender won't do it for you
+ if Output.Contains('[projectName]' + PLATFORMPATHSEPARATOR) then
+ begin
+ AdjustedOutput := StringReplace(AdjustedOutput, '[projectName]', ExtractFileName(Project), [rfReplaceAll, rfIgnoreCase]);
+ if not DirectoryExists(ExtractFilePath(AdjustedOutput)) then
+ CreateDir(ExtractFilePath(AdjustedOutput));
+ end;
+
+ // Adjust file output path if split render is enabled
+ // because they can conflict
+ if Composition.Split > 1 then
+ begin
+ var OutFilePath: String := ExtractFilePath(AdjustedOutput);
+ var OutFileName: String := StringReplace(ExtractFileName(AdjustedOutput), ExtractFileExt(AdjustedOutput), '', [rfReplaceAll, rfIgnoreCase]);
+ var OutFileExt: String := ExtractFileExt(AdjustedOutput);
+ AdjustedOutput := OutFilePath + OutFileName + '_' + i.ToString + OutFileExt;
+ end;
+
+ // Append all the nesesary information in the beginning
+ TempStr := Format('"%s" -project "%s" -output "%s" %s %s %s -OMtemplate "%s" -RStemplate "%s" -mem_usage "%d" "%d" %s -comp "%s" -s "%d" -e "%d"', [
+ AErenderPath,
+ Project,
+ AdjustedOutput,
+ IfThenElse(Sound, '-sound ON', ''), // yeet
+ IfThenElse(Multiprocessing, '-mp', ''), // double yeet
+ IfThenElse(MissingFiles, '-continueOnMissingFootage', ''), // tripple yeet
+ OutputModule,
+ RenderSettings,
+ Trunc(MemoryLimit),
+ Trunc(CacheLimit),
+ IfThenElse(CustomProperties.IsEmpty, CustomProperties, ''), // quadruple yeet
+ Composition.CompName,
+ SplitFrameSpans[i].StartFrame,
+ SplitFrameSpans[i].EndFrame
+ ]);
+
+ if SplitFrameSpans[i].StartFrame = 0 then
+ if SplitFrameSpans[i].EndFrame = 0 then
+ TempStr := TempStr.Replace('-s "0" -e "0"', '');
+
+ CreateCmd(
+ {$IFDEF MSWINDOWS}'chcp 65001' + #13#10 + {$ENDIF}Format('(%s) > "%s"', [TempStr, FilePath.Replace('.ext', '.log')]),
+ FilePath.Replace('.ext', {$IFDEF MSWINDOWS}'.bat'{$ELSE MACOS}'.command'{$ENDIF})
+ );
+ List.Add(FilePath);
+ end;
+ end;
+
+ Result := List;
+
+ {for var Comp in Compositions do begin
+ if Comp.Split = 0 then
+ // yeet
+ else
+ for var FrameSpan in Comp.Frames.Split(Comp.Split) do
+ TempStr := TempStr + Format('-s %d -e %d ', [FrameSpan.StartFrame, FrameSpan.EndFrame]);
+ end; }
+end;
+
+procedure TRenderTask.Render(const ThreadsLimit: Integer = 4{; const Mode: TRenderMode = RM_NORMAL});
+begin
+ var Executables: TList := ToExec;
+ //var i: Integer := 0;
+
+ /// If files to render count is less than ThreadsLimit
+ /// then render them all at once, no need for continous execution here
+ if Executables.Count <= ThreadsLimit then
+ for var i := 0 to Executables.Count - 1 do begin
+ BackgroundExecute(Executables[i].Replace('.ext', {$IFDEF MSWINDOWS}'.bat'{$ELSE MACOS}'.command'{$ENDIF}));
+ RenderQueue.Add(Executables[i]);
+ end
+ else begin
+ /// This thread will launch new renders when the existing ones will finish
+ ///
+ /// Will be started only if the ammount of things to render is more than ThreadsLimit const
+ /// If otherwise, it has a problem of not starting some of the renders, which bothers me...
+ TiledRenderThread := TThread.CreateAnonymousThread(procedure begin
+ var i: Integer := 0; /// Counter
+
+ while Executables.Count > 0 do begin
+ while RenderQueue.Count <> ThreadsLimit do begin
+ BackgroundExecute(Executables[i].Replace('.ext', {$IFDEF MSWINDOWS}'.bat'{$ELSE MACOS}'.command'{$ENDIF}));
+ RenderQueue.Add(Executables[i]);
+ Executables.Delete(i);
+ inc(i);
+
+ if AbortRender then
+ exit;
+ end;
+ i := 0;
+ end;
+ end);
+
+ TiledRenderThread.Start;
+ end;
+end;
+
+constructor TRenderTask.Create(const Project, Output, OutputModule, RenderSettings: String;
+ const MissingFiles, Sound, Multiprocessing: Boolean;
+ const CustomProperties: String;
+ const CacheLimit, MemoryLimit: Single;
+ const Compositions: TList);
+begin
+ if (Project.IsEmpty or Output.IsEmpty or (Compositions.Count = 0)) then
+ raise AERParamException.Create('Internal Error (EI001) - Project, Output or Compositions may be empty.');
+
+ Self.Project := Project;
+ Self.Output := Output;
+ Self.OutputModule := OutputModule;
+ Self.RenderSettings := RenderSettings;
+
+ Self.MissingFiles := MissingFiles;
+ Self.Sound := Sound;
+ Self.Multiprocessing := Multiprocessing;
+ Self.CustomProperties := CustomProperties;
+ Self.CacheLimit := CacheLimit;
+ Self.MemoryLimit := MemoryLimit;
+
+ Self.Compositions := Compositions;
+end;
+
+constructor TRenderTask.CreateFromJSON(const Project, Output, OutputModule, RenderSettings: String;
+ const MissingFiles, Sound, Multiprocessing: Boolean;
+ const CustomProperties: String;
+ const CacheLimit, MemoryLimit: Single;
+ const ProjectJSON: String);
+begin
+ var ParsedProjectJSON: TJSONValue := TJSONObject.ParseJSONValue(ProjectJSON);
+
+ var Compositions: TList := TList.Create;
+
+ for var i := 0 to (ParsedProjectJSON as TJSONArray).Count - 1 do
+
+ Compositions.Add(TComposition.Create(
+ ParsedProjectJSON.A[i].P['Name'].Value,
+ TFrameSpan.Create(ParsedProjectJSON.A[i].P['Frames'].A[0].Value, ParsedProjectJSON.A[i].P['Frames'].A[1].Value),
+ 1
+ ));
+
+ Self.Project := Project;
+ Self.Output := Output;
+
+ Self.OutputModule := OutputModule;
+ Self.RenderSettings := RenderSettings;
+
+ Self.MissingFiles := MissingFiles;
+ Self.Sound := Sound;
+ Self.Multiprocessing := Multiprocessing;
+ Self.CustomProperties := CustomProperties;
+ Self.CacheLimit := CacheLimit;
+ Self.MemoryLimit := MemoryLimit;
+
+ Self.Compositions := Compositions;
+end;
+
+(*************)
+(* Helpers *)
+(*************)
+function GetTaskByProject(const AProject: String): TRenderTask;
+begin
+ for var Task: TRenderTask in RenderTasks do
+ if ExtractFileName(Task.Project) = AProject then begin
+ Result := Task;
+ exit
+ end;
+ Result := nil;
+end;
+
+function GetTaskByCompName(const ACompName: String): TRenderTask;
+begin
+ for var Task: TRenderTask in RenderTasks do
+ for var Comp in Task.Compositions do
+ if Comp.CompName = ACompName then begin
+ Result := Task;
+ exit;
+ end;
+ Result := nil;
+end;
+
+function GetCompByName(const ATask: TRenderTask; const ACompName: String): TComposition;
+begin
+ for var Comp in ATask.Compositions do
+ if Comp.CompName = ACompName then begin
+ Result := Comp;
+ exit
+ end;
+ //Result := nil;
+end;
+
+function GetCompIndexInTask(const ATask: TRenderTask; const ACompName: String): Integer;
+begin
+ for var i := 0 to ATask.Compositions.Count - 1 do
+ if ATask.Compositions[i].CompName = ACompName then begin
+ Result := i;
+ exit;
+ end;
+ Result := -1;
+end;
+
+(********************)
+(* Initialization *)
+(********************)
+initialization
+ RenderTasks := TObjectList.Create;
+ RenderQueue := TList.Create;
+ Errors := '';
+
+
+(******************)
+(* Finalization *)
+(******************)
+finalization
+ if Assigned(RenderTasks) then begin
+ RenderTasks.OnNotify := nil;
+ FreeAndNil(RenderTasks);
+ end;
+
+ if Assigned(RenderQueue) then begin
+ RenderQueue.OnNotify := nil;
+ FreeAndNil(RenderQueue);
+ end;
+
+end.
diff --git a/src/lib/AErenderLauncher.SysUtils.pas b/src/lib/AErenderLauncher.SysUtils.pas
new file mode 100644
index 0000000..76b470c
--- /dev/null
+++ b/src/lib/AErenderLauncher.SysUtils.pas
@@ -0,0 +1,97 @@
+unit AErenderLauncher.SysUtils;
+
+interface
+
+uses
+ System.SysUtils, System.IOUtils,
+
+ {$IFDEF MSWINDOWS}
+ FMX.Platform.Win, Winapi.ShellAPI, Winapi.Windows, Winapi.TlHelp32;
+ {$ELSE MACOS}
+ FMX.Platform.Mac, Posix.Stdlib, Posix.Unistd, Posix.SysSysctl, Posix.SysTypes;
+ {$ENDIF}
+
+ ///
+ /// Gets system's memory size
+ ///
+ /// System's RAM size in bytes
+ function GetPlatformMemorySize: Int64;
+
+ ///
+ /// Gets system's CPU threads count
+ ///
+ /// System's CPU threads count
+ ///
+ /// This function is actually defined in RTL
+ /// but inaccessable for some reason
+ ///
+ function GetPlatformThreadsCount: Integer;
+
+ ///
+ /// Reads directory contents
+ ///
+ /// Path to directory contents of which need to be returned
+ /// An array of all filepaths in profidd
+ function GetDirectoryFiles(Directory: String): TArray;
+
+ ///
+ /// Gets the count of all Launcher's temporary files
+ ///
+ /// Count of all Launcher's temporary files
+ function GetTempFilesCount: Integer;
+
+implementation
+
+uses
+ AErenderLauncher.Types;
+
+function GetPlatformMemorySize: Int64;
+begin
+ {$IFDEF MSWINDOWS}
+ var MS_Ex: MemoryStatusEx;
+ FillChar(MS_Ex, SizeOf(MemoryStatusEx), #0);
+ MS_Ex.dwLength := SizeOf(MemoryStatusEx);
+ GlobalMemoryStatusEx(MS_Ex);
+ Result := MS_Ex.ullTotalPhys;
+ {$ELSE MACOS}
+ var len: size_t := SizeOf(Result);
+ var res: Int64 := SysCtlByName('hw.memsize', @Result, @len, nil, 0);
+ if res <> 0 then
+ RaiseLastOSError;
+ {$ENDIF MACOS}
+end;
+
+function GetPlatformThreadsCount: Integer;
+begin
+ {$IFDEF MSWINDOWS}
+ var SysInfo: TSystemInfo;
+ GetSystemInfo(SysInfo);
+ Result := SysInfo.dwNumberOfProcessors;
+ {$ELSE MACOS}
+ Result := sysconf(_SC_NPROCESSORS_ONLN);
+ {$ENDIF}
+end;
+
+function GetDirectoryFiles(Directory: String): TArray;
+var
+ Files: System.TArray;
+begin
+ Files := TDirectory.GetFiles(Directory);
+ for var i := 0 to High(Files) do
+ begin
+ SetLength(Result, i + 1);
+ Result[i] := Files[i];
+ end;
+end;
+
+function GetTempFilesCount: Integer;
+begin
+ var LauncherDirectory: TArray := GetDirectoryFiles(APPFOLDER);
+ var Res: Integer := 0;
+ for var i := 0 to High(LauncherDirectory) do
+ if (LauncherDirectory[i].Contains('.bat')) or (LauncherDirectory[i].Contains('.command')) or (LauncherDirectory[i].Contains('.log')) then
+ inc(Res);
+ Result := Res;
+end;
+
+end.
diff --git a/src/lib/AErenderLauncher.Types.pas b/src/lib/AErenderLauncher.Types.pas
new file mode 100644
index 0000000..b60d3a3
--- /dev/null
+++ b/src/lib/AErenderLauncher.Types.pas
@@ -0,0 +1,334 @@
+unit AErenderLauncher.Types;
+
+interface
+
+uses
+ System.SysUtils, System.Generics.Collections, AErenderLauncher.Rendering,
+ Xml.xmldom,
+ Xml.XMLIntf,
+ Xml.adomxmldom,
+ Xml.XMLDoc,
+ Xml.omnixmldom;
+
+type
+ AERSettingsException = class(Exception);
+
+ OutputModule = record
+ Module,
+ Mask: String;
+ Imported: Boolean;
+ class operator Equal(a: OutputModule; b: OutputModule): Boolean;
+ class operator NotEqual(a: OutputModule; b: OutputModule): Boolean;
+ end;
+
+ TSettings = record
+ private
+ procedure InitOutputModules;
+ public
+ Language: Integer;
+ Style: Integer;
+ AErenderPath: String;
+ OnRenderStart: Integer;
+ DefaultProjectPath: String;
+ DefaultOutputPath: String;
+ AErenderHandle: Boolean;
+ DeleteTemporary: Boolean;
+
+ RenderTasks: TList;
+
+ LastProjectPath: String;
+ LastOutputPath: String;
+ TemporarySavePath: String;
+
+ MissingFiles: Boolean;
+ Sound: Boolean;
+ Multithreaded: Boolean;
+ CustomPropertiesEnabled: Boolean;
+ CustomProperties: String;
+ MemoryLimit: Single;
+ CacheLimit: Single;
+
+ SelectedOutputModule: Integer;
+ OutputModules: TArray;
+ RenderSettings: String;
+
+ RecentProjects: array [0..9] of String;
+ constructor LoadFromXMLFile(const APath: String; const Skip: Boolean = True);
+ constructor LoadFromXMLFileLegacy(const APath: String);
+ procedure SaveToFile(const APath: String);
+ procedure Reset;
+ procedure ResetAndSave(const APath: String);
+ end;
+
+const
+ PLATFORMPATHSEPARATOR = {$IFDEF MSWINDOWS}'\'{$ELSE MACOS}'/'{$ENDIF};
+
+var
+ APPFOLDER: String;
+ Settings: TSettings;
+
+implementation
+
+{$REGION ' OutputModule '}
+
+class operator OutputModule.Equal(a: OutputModule; b: OutputModule): Boolean;
+begin
+ Result := (a.Module = b.Module) and (a.Mask = b.Mask);
+end;
+
+class operator OutputModule.NotEqual(a: OutputModule; b: OutputModule): Boolean;
+begin
+ Result := (a.Module <> b.Module) or (a.Mask <> b.Mask);
+end;
+
+{$ENDREGION}
+
+{$REGION ' TSettings '}
+
+procedure TSettings.InitOutputModules;
+begin
+ SetLength(Self.OutputModules, 10);
+
+ Self.OutputModules[0].Module := 'Lossless';
+ Self.OutputModules[0].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[0].Imported := False;
+
+ Self.OutputModules[1].Module := 'AIFF 48kHz';
+ Self.OutputModules[1].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[1].Imported := False;
+
+ Self.OutputModules[2].Module := 'Alpha Only';
+ Self.OutputModules[2].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[2].Imported := False;
+
+ Self.OutputModules[3].Module := 'AVI DV NTSC 48kHz';
+ Self.OutputModules[3].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[3].Imported := False;
+
+ Self.OutputModules[4].Module := 'AVI DV PAL 48kHz';
+ Self.OutputModules[4].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[4].Imported := False;
+
+ Self.OutputModules[5].Module := 'Lossless with Alpha';
+ Self.OutputModules[5].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[5].Imported := False;
+
+ Self.OutputModules[6].Module := 'Multi-Machine Sequence';
+ Self.OutputModules[6].Mask := '[compName]_[#####].[fileExtension]';
+ Self.OutputModules[6].Imported := False;
+
+ Self.OutputModules[7].Module := 'Photoshop';
+ Self.OutputModules[7].Mask := '[compName]_[#####].[fileExtension]';
+ Self.OutputModules[7].Imported := False;
+
+ Self.OutputModules[8].Module := 'Save Current Preview';
+ Self.OutputModules[8].Mask := '[compName].[fileExtension]';
+ Self.OutputModules[8].Imported := False;
+
+ Self.OutputModules[9].Module := 'TIFF Sequence with Alpha';
+ Self.OutputModules[9].Mask := '[compName]_[#####].[fileExtension]';
+ Self.OutputModules[9].Imported := False;
+end;
+
+constructor TSettings.LoadFromXMLFile(const APath: String; const Skip: Boolean = True);
+var
+ Config: IXMLDocument;
+ RootNode: IXMLNode;
+begin
+ Config := TXMLDocument.Create(nil);
+ Config.LoadFromFile(APath);
+ Config.Active := True;
+
+ RootNode := Config.DocumentElement;
+
+ Self.Language := RootNode.ChildNodes['Language'].Text.ToInteger;
+ Self.Style := RootNode.ChildNodes['Style'].Text.ToInteger;
+ Self.AErenderPath := RootNode.ChildNodes['AErenderPath'].Text;
+ Self.OnRenderStart := RootNode.ChildNodes['OnRenderStart'].Text.ToInteger;
+ Self.DefaultProjectPath := RootNode.ChildNodes['DefaultProjectPath'].Text;
+ Self.DefaultOutputPath := RootNode.ChildNodes['DefaultOutputPath'].Text;
+ Self.AErenderHandle := RootNode.ChildNodes['AErenderHandle'].Text.ToBoolean;
+ Self.DeleteTemporary := RootNode.ChildNodes['DeleteTemporary'].Text.ToBoolean;
+
+ Self.LastProjectPath := RootNode.ChildNodes['LastProjectPath'].Text;
+ Self.LastOutputPath := RootNode.ChildNodes['LastOutputPath'].Text;
+ Self.TemporarySavePath := RootNode.ChildNodes['TemporarySavePath'].Text;
+
+ Self.MissingFiles := RootNode.ChildNodes['MissingFiles'].Text.ToBoolean;
+ Self.Sound := RootNode.ChildNodes['Sound'].Text.ToBoolean;
+ Self.Multithreaded := RootNode.ChildNodes['Multithreaded'].Text.ToBoolean;
+ Self.CustomPropertiesEnabled := StrToBool(RootNode.ChildNodes['CustomProperties'].Attributes['Enabled']);
+ Self.CustomProperties := RootNode.ChildNodes['CustomProperties'].Text;
+ Self.MemoryLimit := RootNode.ChildNodes['MemoryLimit'].Text.ToSingle;
+ Self.CacheLimit := RootNode.ChildNodes['CacheLimit'].Text.ToSingle;
+
+ if RootNode.ChildNodes['OutputModules'].ChildNodes.Count <> 0 then begin
+ SetLength(Self.OutputModules, RootNode.ChildNodes['OutputModules'].ChildNodes.Count);
+ for var i := 0 to High(Self.OutputModules) do begin
+ Self.OutputModules[i].Module := RootNode.ChildNodes['OutputModules'].ChildNodes[i].ChildNodes['Module'].Text;
+ Self.OutputModules[i].Mask := RootNode.ChildNodes['OutputModules'].ChildNodes[i].ChildNodes['Mask'].Text;
+ Self.OutputModules[i].Imported := StrToBool(RootNode.ChildNodes['OutputModules'].ChildNodes[i].Attributes['Imported']);
+ end;
+ Self.SelectedOutputModule := StrToInt(RootNode.ChildNodes['OutputModules'].Attributes['Selected']);
+ end else
+ Self.InitOutputModules;
+
+ Self.RenderSettings := RootNode.ChildNodes['RenderSettings'].Text;
+
+ for var i := 0 to 9 do begin
+ Self.RecentProjects[i] := RootNode.ChildNodes['RecentProjects'].ChildNodes[i].Text;
+ end;
+
+end;
+
+constructor TSettings.LoadFromXMLFileLegacy(const APath: String);
+var
+ Config: IXMLDocument;
+ RootNode: IXMLNode;
+begin
+ Config := TXMLDocument.Create(nil);
+ Config.LoadFromFile(APath);
+ Config.Active := True;
+
+ RootNode := Config.DocumentElement;
+
+ Self.Language := RootNode.ChildNodes['lang'].Text.ToInteger;
+ Self.Style := RootNode.ChildNodes['style'].Text.ToInteger;
+ Self.AErenderPath := RootNode.ChildNodes['aerender'].Text;
+ Self.OnRenderStart := RootNode.ChildNodes['onRenderStart'].Text.ToInteger;
+ Self.DefaultProjectPath := RootNode.ChildNodes['defprgpath'].Text;
+ Self.DefaultOutputPath := RootNode.ChildNodes['defoutpath'].Text;
+ Self.AErenderHandle := RootNode.ChildNodes['handle'].Text.ToBoolean;
+ Self.DeleteTemporary := RootNode.ChildNodes['delTempFiles'].Text.ToBoolean;
+
+ Self.LastProjectPath := RootNode.ChildNodes['projectPath'].Text;
+ Self.LastOutputPath := RootNode.ChildNodes['outputPath'].Text;
+ Self.TemporarySavePath := RootNode.ChildNodes['tempSavePath'].Text;
+
+ Self.MissingFiles := RootNode.ChildNodes['missingFiles'].Text.ToBoolean;
+ Self.Sound := RootNode.ChildNodes['sound'].Text.ToBoolean;
+ Self.Multithreaded := RootNode.ChildNodes['thread'].Text.ToBoolean;
+ Self.CustomPropertiesEnabled := StrToBool(RootNode.ChildNodes['prop'].Attributes['enabled']);
+ Self.CustomProperties := RootNode.ChildNodes['prop'].Text;
+ Self.MemoryLimit := RootNode.ChildNodes['memoryLimit'].Text.ToSingle;
+ Self.CacheLimit := RootNode.ChildNodes['cacheLimit'].Text.ToSingle;
+
+ if RootNode.ChildNodes['outputModule'].ChildNodes.Count <> 0 then begin
+ SetLength(Self.OutputModules, RootNode.ChildNodes['outputModule'].ChildNodes.Count);
+ for var i := 0 to High(Self.OutputModules) do begin
+ Self.OutputModules[i].Module := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['moduleName'].Text;
+ Self.OutputModules[i].Mask := RootNode.ChildNodes['outputModule'].ChildNodes[i].ChildNodes['filemask'].Text;
+ Self.OutputModules[i].Imported := StrToBool(RootNode.ChildNodes['outputModule'].ChildNodes[i].Attributes['imported']);
+ end;
+ Self.SelectedOutputModule := StrToInt(RootNode.ChildNodes['outputModule'].Attributes['selected']);
+ end else
+ Self.InitOutputModules;
+
+ Self.RenderSettings := RootNode.ChildNodes['renderSettings'].Text;
+
+ for var i := 0 to 9 do begin
+ Self.RecentProjects[i] := RootNode.ChildNodes['recentProjects'].ChildNodes[i].Text;
+ end;
+end;
+
+procedure TSettings.SaveToFile(const APath: string);
+var
+ Config: IXMLDocument;
+ RootNode: IXMLNode;
+begin
+ Config := TXMLDocument.Create(nil);
+ Config.Active := True;
+ Config.Encoding := 'utf-8';
+ Config.Options := [doNodeAutoIndent];
+
+ RootNode := Config.AddChild('LauncherConfig');
+
+ RootNode.AddChild('Language').Text := Self.Language.ToString;
+ RootNode.AddChild('Style').Text := Self.Style.ToString;
+ RootNode.AddChild('AErenderPath').Text := Self.AErenderPath;
+ RootNode.AddChild('OnRenderStart').Text := Self.OnRenderStart.ToString;
+ RootNode.AddChild('DefaultProjectPath').Text := Self.DefaultProjectPath;
+ RootNode.AddChild('DefaultOutputPath').Text := Self.DefaultOutputPath;
+ RootNode.AddChild('AErenderHandle').Text := BoolToStr(Self.AErenderHandle, True);
+ RootNode.AddChild('DeleteTemporary').Text := BoolToStr(Self.DeleteTemporary, True);
+
+ RootNode.AddChild('LastProjectPath').Text := Self.LastProjectPath;
+ RootNode.AddChild('LastOutputPath').Text := Self.LastOutputPath;
+ RootNode.AddChild('TemporarySavePath').Text := Self.TemporarySavePath;
+
+ RootNode.AddChild('MissingFiles').Text := BoolToStr(Self.MissingFiles, True);
+ RootNode.AddChild('Sound').Text := BoolToStr(Self.Sound, True);
+ RootNode.AddChild('Multithreaded').Text := BoolToStr(Self.Multithreaded, True);
+ RootNode.AddChild('CustomProperties').Text := Self.CustomProperties;
+ RootNode.ChildNodes['CustomProperties'].Attributes['Enabled'] := BoolToStr(Self.CustomPropertiesEnabled, True);
+
+ RootNode.AddChild('MemoryLimit').Text := Self.MemoryLimit.ToString;
+ RootNode.AddChild('CacheLimit').Text := Self.CacheLimit.ToString;
+
+ var ChildNode: IXMLNode := RootNode.AddChild('OutputModules');
+ ChildNode.Attributes['Selected'] := Self.SelectedOutputModule;
+ for var i := 0 to High(OutputModules) do begin
+ var ModuleNode: IXMLNode := RootNode.ChildNodes['OutputModules'].AddChild('OutputModule');
+ ModuleNode.Attributes['Imported'] := BoolToStr(OutputModules[i].Imported, True);
+ ModuleNode.AddChild('Module').Text := OutputModules[i].Module;
+ ModuleNode.AddChild('Mask').Text := OutputModules[i].Mask;
+ end;
+
+ ChildNode := RootNode.AddChild('RenderSettings');
+ ChildNode.Text := Self.RenderSettings;
+
+ ChildNode := RootNode.AddChild('RecentProjects');
+ for var i := 0 to 9 do begin
+ if Self.RecentProjects[i] = '' then
+ ChildNode.AddChild('Project').Text := '(empty)'
+ else
+ ChildNode.AddChild('Project').Text := Self.RecentProjects[i]
+ end;
+
+ Config.SaveToFile(APath);
+end;
+
+procedure TSettings.Reset;
+begin
+ Self.InitOutputModules;
+
+ Self.Language := 0;
+ Self.Style := 0;
+ Self.AErenderPath := '';
+ Self.OnRenderStart := 0;
+ Self.DefaultProjectPath := '';
+ Self.DefaultOutputPath := '';
+ Self.AErenderHandle := True;
+ Self.DeleteTemporary := True;
+
+ Self.LastProjectPath := '';
+ Self.LastOutputPath := '';
+ Self.TemporarySavePath := '';
+
+ Self.MissingFiles := False;
+ Self.Sound := True;
+ Self.Multithreaded := False;
+ Self.CustomPropertiesEnabled := False;
+ Self.CustomProperties := '';
+ Self.MemoryLimit := 100;
+ Self.CacheLimit := 100;
+
+ Self.RenderSettings := 'Best Settings';
+
+ for var i := 0 to 9 do begin
+ Self.RecentProjects[i] := '(empty)';
+ end;
+end;
+
+procedure TSettings.ResetAndSave(const APath: string);
+begin
+ Self.Reset;
+ Self.SaveToFile(APath);
+end;
+
+{$ENDREGION}
+
+initialization
+ APPFOLDER := {$IFDEF MSWINDOWS}'C:\ProgramData\AErender'{$ELSE MACOS}GetEnvironmentVariable('HOME') + '/Documents/AErender/'{$ENDIF};
+
+end.
diff --git a/src/lib/AErenderLauncher.Values.pas b/src/lib/AErenderLauncher.Values.pas
new file mode 100644
index 0000000..b23ed65
--- /dev/null
+++ b/src/lib/AErenderLauncher.Values.pas
@@ -0,0 +1,7 @@
+unit AErenderLauncher.Values;
+
+interface
+
+implementation
+
+end.
diff --git a/src/lib/Components/TCompLabel/Package/CompLabel.dpk b/src/lib/Components/TCompLabel/Package/CompLabel.dpk
new file mode 100644
index 0000000..4999faa
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Package/CompLabel.dpk
@@ -0,0 +1,42 @@
+package CompLabel;
+
+{$R *.res}
+{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION OFF}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DEFINE DEBUG}
+{$ENDIF IMPLICITBUILDING}
+{$IMPLICITBUILD ON}
+
+requires
+ rtl,
+ fmx,
+ designide,
+ vcl,
+ vclactnband,
+ vclx,
+ xmlrtl;
+
+contains
+ FMX.CompLabel in 'FMX.CompLabel.pas';
+
+end.
diff --git a/src/lib/Components/TCompLabel/Package/CompLabel.dproj b/src/lib/Components/TCompLabel/Package/CompLabel.dproj
new file mode 100644
index 0000000..b90db7d
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Package/CompLabel.dproj
@@ -0,0 +1,915 @@
+
+
+ {A4E9E299-9B51-4D63-955F-C0270900B84E}
+ CompLabel.dpk
+ 19.2
+ FMX
+ True
+ Debug
+ Win32
+ 4099
+ Package
+
+
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Base
+ true
+
+
+ .\$(Platform)\$(Config)
+ .\$(Platform)\$(Config)
+ false
+ false
+ false
+ false
+ false
+ true
+ true
+ System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)
+ All
+ CompLabel
+ C:\YandexDisk\Development\Delphi\AErender Launcher\src\lib\Components\TCompLabel\Package;$(DCC_UnitSearchPath)
+ bpl
+
+
+ None
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ rtl;fmx;xmlrtl;$(DCC_UsePackage)
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ None
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ rtl;fmx;xmlrtl;$(DCC_UsePackage)
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ None
+ rtl;fmx;xmlrtl;$(DCC_UsePackage)
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png
+
+
+ None
+ rtl;fmx;xmlrtl;$(DCC_UsePackage)
+
+
+ rtl;fmx;xmlrtl;$(DCC_UsePackage)
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers
+ Debug
+
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+ rtl;fmx;vcl;xmlrtl;vclactnband;vclx;$(DCC_UsePackage)
+
+
+ rtl;fmx;vcl;xmlrtl;vclactnband;vclx;$(DCC_UsePackage)
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+
+
+ DEBUG;$(DCC_Define)
+ true
+ false
+ true
+ true
+ true
+
+
+ false
+
+
+ false
+ RELEASE;$(DCC_Define)
+ 0
+ 0
+
+
+
+ MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cfg_2
+ Base
+
+
+ Base
+
+
+ Cfg_1
+ Base
+
+
+
+ Delphi.Personality.12
+ Package
+
+
+
+ CompLabel.dpk
+
+
+
+ False
+ False
+ False
+ False
+ True
+ True
+ True
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ CompLabel.bpl
+ true
+
+
+
+
+ CompLabel.bpl
+ true
+
+
+
+
+ 1
+
+
+ 0
+
+
+
+
+ classes
+ 1
+
+
+ classes
+ 1
+
+
+
+
+ res\xml
+ 1
+
+
+ res\xml
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\values-v21
+ 1
+
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ 1
+ .framework
+
+
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
diff --git a/src/lib/Components/TCompLabel/Package/CompLabel.res b/src/lib/Components/TCompLabel/Package/CompLabel.res
new file mode 100644
index 0000000..c224198
Binary files /dev/null and b/src/lib/Components/TCompLabel/Package/CompLabel.res differ
diff --git a/src/lib/Components/TCompLabel/Package/CompLabelDesign.style b/src/lib/Components/TCompLabel/Package/CompLabelDesign.style
new file mode 100644
index 0000000..cfc5d98
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Package/CompLabelDesign.style
@@ -0,0 +1,97 @@
+object TRectangle
+ StyleName = 'complabelstyle'
+ Align = Center
+ ClipChildren = True
+ Fill.Kind = None
+ HitTest = False
+ Size.Width = 971.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TText
+ StyleName = 'comp'
+ Align = Client
+ HitTest = False
+ Margins.Left = 20.000000000000000000
+ Size.Width = 439.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.Trimming = Character
+ TextSettings.WordWrap = False
+ TextSettings.HorzAlign = Leading
+ end
+ object TText
+ StyleName = 'inframe'
+ Align = Right
+ HitTest = False
+ Position.X = 651.000000000000000000
+ Size.Width = 96.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TText
+ StyleName = 'outframe'
+ Align = Right
+ HitTest = False
+ Position.X = 763.000000000000000000
+ Size.Width = 96.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TText
+ StyleName = 'split'
+ Align = Right
+ HitTest = False
+ Position.X = 875.000000000000000000
+ Size.Width = 64.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TLayout
+ StyleName = 'Layout1'
+ Align = Right
+ Position.X = 459.000000000000000000
+ Size.Width = 192.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 0
+ object TProgressBar
+ StyleName = 'progressbar'
+ Align = Contents
+ HitTest = False
+ Orientation = Horizontal
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Size.Width = 184.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TText
+ StyleName = 'progress'
+ Align = Contents
+ Enabled = False
+ HitTest = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Size.Width = 176.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ Visible = False
+ end
+ end
+end
\ No newline at end of file
diff --git a/src/lib/Components/TCompLabel/Package/FMX.CompLabel.pas b/src/lib/Components/TCompLabel/Package/FMX.CompLabel.pas
new file mode 100644
index 0000000..fca198f
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Package/FMX.CompLabel.pas
@@ -0,0 +1,239 @@
+unit FMX.CompLabel;
+
+interface
+
+uses
+ System.Types, System.SysUtils, System.Classes, System.UITypes,
+ FMX.Types, FMX.Controls, FMX.Styles, FMX.StdCtrls, FMX.Objects;
+
+type
+ TCompLabel = class(TStyledControl)
+ private
+ FComposition, FProgress, FSplit: String;
+ FValue, FInFrame, FOutFrame: Single;
+
+ function GetCompName: String;
+ procedure SetCompName(Value: String);
+
+ function GetProgress: String;
+ procedure SetProgress(Value: String);
+
+ function GetValue: Single;
+ procedure SetValue(Value: Single);
+
+ function GetInFrame: Single;
+ procedure SetInFrame(Value: Single);
+
+ function GetOutFrame: Single;
+ procedure SetOutFrame(Value: Single);
+
+ function GetSplit: String;
+ procedure SetSplit(Value: String);
+
+ protected
+ function GetStyleObject: TFmxObject; override;
+ procedure ApplyStyle; override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ published
+ property Align default TAlignLayout.None;
+ property HitTest default False;
+ property Position;
+ property Size;
+
+ property Composition: String read GetCompName write SetCompName;
+ property Progress: String read GetProgress write SetProgress;
+ property Value: Single read GetValue write SetValue;
+ property InFrame: Single read GetInFrame write SetInFrame;
+ property OutFrame: Single read GetOutFrame write SetOutFrame;
+ property Split: String read GetSplit write SetSplit;
+ end;
+
+procedure Register;
+
+implementation
+
+{$R *.res}
+
+{ TCompLabel }
+
+function TCompLabel.GetStyleObject: TFmxObject;
+const
+ Style = 'complabelstyle';
+begin
+ if (StyleLookup = '') then
+ begin
+ Result := TControl(TStyleStreaming.LoadFromResource(HInstance, Style, RT_RCDATA));
+ Exit;
+ end;
+ Result := inherited GetStyleObject;
+end;
+
+{$REGION ' Composition '}
+
+function TCompLabel.GetCompName: String;
+begin
+ var Base: TFmxObject := FindStyleResource('comp');
+ if Base <> nil then
+ FComposition := TText(Base).Text;
+
+ Result := FComposition;
+end;
+
+procedure TCompLabel.SetCompName(Value: String);
+begin
+ FComposition := Value;
+ var Base: TFmxObject := FindStyleResource('comp');
+ if Base <> nil then
+ TText(Base).Text := Value;
+end;
+
+{$ENDREGION}
+
+{$REGION ' Progress '}
+
+function TCompLabel.GetProgress: String;
+begin
+ var Base: TFmxObject := FindStyleResource('progress');
+ if Base <> nil then
+ FProgress := TText(Base).Text;
+
+ Result := FProgress;
+end;
+
+procedure TCompLabel.SetProgress(Value: String);
+begin
+ FProgress := Value;
+ var Base: TFmxObject := FindStyleResource('progress');
+ if Base <> nil then
+ TText(Base).Text := Value;
+end;
+
+{$ENDREGION}
+
+{$REGION ' Value '}
+
+function TCompLabel.GetValue: Single;
+begin
+ var Base: TFmxObject := FindStyleResource('progressbar');
+ if Base <> nil then
+ FValue := TProgressBar(Base).Value;
+
+ Result := FValue;
+end;
+
+procedure TCompLabel.SetValue(Value: Single);
+begin
+ FValue := Value;
+ var Base: TFmxObject := FindStyleResource('progressbar');
+ if Base <> nil then begin
+ TProgressBar(Base).Value := Value;
+ TProgressBar(Base).Visible := Value >= FInFrame;
+ end;
+end;
+
+{$ENDREGION}
+
+{$REGION ' InFrame '}
+
+function TCompLabel.GetInFrame: Single;
+begin
+ var Base: TFmxObject := FindStyleResource('inframe');
+ if Base <> nil then
+ FInFrame := StrToFloat(TText(Base).Text);
+
+ Result := FInFrame;
+end;
+
+procedure TCompLabel.SetInFrame(Value: Single);
+begin
+ FInFrame := Value;
+ var Base: TFmxObject := FindStyleResource('inframe');
+ if Base <> nil then
+ TText(Base).Text := IntToStr(Trunc(Value));
+
+ var ProgressBarBase: TFmxObject := FindStyleResource('progressbar');
+ if ProgressBarBase <> nil then
+ TProgressBar(ProgressBarBase).Min := FInFrame;
+end;
+
+{$ENDREGION}
+
+{$REGION ' OutFrame '}
+
+function TCompLabel.GetOutFrame: Single;
+begin
+ var Base: TFmxObject := FindStyleResource('outframe');
+ if Base <> nil then
+ FOutFrame := StrToFloat(TText(Base).Text);
+
+ Result := FOutFrame;
+end;
+
+procedure TCompLabel.SetOutFrame(Value: Single);
+begin
+ FOutFrame := Value;
+ var Base: TFmxObject := FindStyleResource('outframe');
+ if Base <> nil then
+ TText(Base).Text := IntToStr(Trunc(Value));
+
+ var ProgressBarBase: TFmxObject := FindStyleResource('progressbar');
+ if ProgressBarBase <> nil then
+ TProgressBar(ProgressBarBase).Max := FOutFrame;
+end;
+
+{$ENDREGION}
+
+{$REGION ' Split '}
+
+function TCompLabel.GetSplit: String;
+begin
+ var Base: TFmxObject := FindStyleResource('split');
+ if Base <> nil then
+ FSplit := TText(Base).Text;
+
+ Result := FSplit;
+end;
+
+procedure TCompLabel.SetSplit(Value: String);
+begin
+ FSplit := Value;
+ var Base: TFmxObject := FindStyleResource('split');
+ if Base <> nil then
+ TText(Base).Text := Value;
+end;
+
+{$ENDREGION}
+
+procedure TCompLabel.ApplyStyle;
+begin
+ inherited;
+ SetCompName(FComposition);
+ SetProgress(FProgress);
+ SetValue(FValue);
+ SetInFrame(FInFrame);
+ SetOutFrame(FOutFrame);
+ SetSplit(FSplit);
+end;
+
+constructor TCompLabel.Create(AOwner: TComponent);
+begin
+ inherited;
+ Height := 24;
+ Width := 400;
+
+ Composition := '';
+ Progress := '';
+ Value := -1;
+ InFrame := 0;
+ OutFrame := 100;
+ Split := '';
+ HitTest := False;
+end;
+
+procedure Register;
+begin
+ RegisterComponents('AErender Launcher', [TCompLabel]);
+end;
+
+end.
diff --git a/src/lib/Components/TCompLabel/Package/FMX.CompLabel.rc b/src/lib/Components/TCompLabel/Package/FMX.CompLabel.rc
new file mode 100644
index 0000000..f572f75
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Package/FMX.CompLabel.rc
@@ -0,0 +1 @@
+complabelstyle RCDATA "CompLabelDesign.style"
\ No newline at end of file
diff --git a/src/lib/Components/TCompLabel/Package/FMX.CompLabel.res b/src/lib/Components/TCompLabel/Package/FMX.CompLabel.res
new file mode 100644
index 0000000..482f46a
Binary files /dev/null and b/src/lib/Components/TCompLabel/Package/FMX.CompLabel.res differ
diff --git a/src/lib/Components/TCompLabel/TCompLabel.groupproj b/src/lib/Components/TCompLabel/TCompLabel.groupproj
new file mode 100644
index 0000000..0ca951a
--- /dev/null
+++ b/src/lib/Components/TCompLabel/TCompLabel.groupproj
@@ -0,0 +1,48 @@
+
+
+ {EE1941E1-8B82-410B-8888-9A849E41EE5E}
+
+
+
+
+
+
+
+
+
+
+ Default.Personality.12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/Components/TCompLabel/Test Project/CompLabelDesign.fmx b/src/lib/Components/TCompLabel/Test Project/CompLabelDesign.fmx
new file mode 100644
index 0000000..1396e11
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Test Project/CompLabelDesign.fmx
@@ -0,0 +1,75 @@
+object Form2: TForm2
+ Left = 0
+ Top = 0
+ Caption = 'Form2'
+ ClientHeight = 480
+ ClientWidth = 640
+ FormFactor.Width = 320
+ FormFactor.Height = 480
+ FormFactor.Devices = [Desktop]
+ DesignerMasterStyle = 0
+ object StyleBook1: TStyleBook
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060E636F6D706C6162656C7374796C6503C5
+ 0600545046300A5452656374616E676C6500095374796C654E616D65060E636F
+ 6D706C6162656C7374796C6505416C69676E070643656E7465720C436C697043
+ 68696C6472656E090946696C6C2E4B696E6407044E6F6E650748697454657374
+ 080A53697A652E576964746805000000000000C0F208400B53697A652E486569
+ 6768740500000000000000C003401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500055454657874000953
+ 74796C654E616D650604636F6D7005416C69676E0706436C69656E7407486974
+ 54657374080C4D617267696E732E4C6566740500000000000000A003400A5369
+ 7A652E57696474680500000000000080DB07400B53697A652E48656967687405
+ 00000000000000C003401453697A652E506C6174666F726D44656661756C7408
+ 0454657874060454657874165465787453657474696E67732E466F6E74436F6C
+ 6F720708636C615768697465155465787453657474696E67732E5472696D6D69
+ 6E670709436861726163746572155465787453657474696E67732E576F726457
+ 72617008165465787453657474696E67732E486F727A416C69676E07074C6561
+ 64696E67000005545465787400095374796C654E616D650607696E6672616D65
+ 05416C69676E070552696768740748697454657374080A506F736974696F6E2E
+ 5805000000000000C0A208400A53697A652E57696474680500000000000000E0
+ 05400B53697A652E4865696768740500000000000000C003401453697A652E50
+ 6C6174666F726D44656661756C74080454657874060454657874165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C6157686974651654657874
+ 53657474696E67732E486F727A416C69676E07074C656164696E670000055454
+ 65787400095374796C654E616D6506086F75746672616D6505416C69676E0705
+ 52696768740748697454657374080A506F736974696F6E2E5805000000000000
+ C0BE08400A53697A652E57696474680500000000000000E005400B53697A652E
+ 4865696768740500000000000000C003401453697A652E506C6174666F726D44
+ 656661756C74080454657874060454657874165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C615768697465165465787453657474696E6773
+ 2E486F727A416C69676E07074C656164696E6700000554546578740009537479
+ 6C654E616D65060573706C697405416C69676E07055269676874074869745465
+ 7374080A506F736974696F6E2E5805000000000000C0DA08400A53697A652E57
+ 696474680500000000000000C005400B53697A652E4865696768740500000000
+ 000000C003401453697A652E506C6174666F726D44656661756C740804546578
+ 74060454657874165465787453657474696E67732E466F6E74436F6C6F720708
+ 636C615768697465165465787453657474696E67732E486F727A416C69676E07
+ 074C656164696E67000007544C61796F757400095374796C654E616D6506074C
+ 61796F75743105416C69676E070552696768740A506F736974696F6E2E580500
+ 000000000080E507400A53697A652E57696474680500000000000000C006400B
+ 53697A652E4865696768740500000000000000C003401453697A652E506C6174
+ 666F726D44656661756C7408085461624F726465720200000C5450726F677265
+ 737342617200095374796C654E616D65060B70726F677265737362617205416C
+ 69676E0708436F6E74656E74730748697454657374080B4F7269656E74617469
+ 6F6E070A486F72697A6F6E74616C0B4D617267696E732E546F70050000000000
+ 00008002400D4D617267696E732E526967687405000000000000008002400E4D
+ 617267696E732E426F74746F6D05000000000000008002400A53697A652E5769
+ 6474680500000000000000B806400B53697A652E486569676874050000000000
+ 00008002401453697A652E506C6174666F726D44656661756C74080000055454
+ 65787400095374796C654E616D65060870726F677265737305416C69676E0708
+ 436F6E74656E747307456E61626C6564080748697454657374080C4D61726769
+ 6E732E4C65667405000000000000008002400D4D617267696E732E5269676874
+ 05000000000000008002400A53697A652E57696474680500000000000000B006
+ 400B53697A652E4865696768740500000000000000C003401453697A652E506C
+ 6174666F726D44656661756C7408045465787406045465787416546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465165465787453
+ 657474696E67732E486F727A416C69676E07074C656164696E67075669736962
+ 6C650800000000}
+ end>
+ Left = 24
+ Top = 24
+ end
+end
diff --git a/src/lib/Components/TCompLabel/Test Project/CompLabelDesign.pas b/src/lib/Components/TCompLabel/Test Project/CompLabelDesign.pas
new file mode 100644
index 0000000..6f14306
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Test Project/CompLabelDesign.pas
@@ -0,0 +1,25 @@
+unit CompLabelDesign;
+
+interface
+
+uses
+ System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
+ FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs;
+
+type
+ TForm2 = class(TForm)
+ StyleBook1: TStyleBook;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ Form2: TForm2;
+
+implementation
+
+{$R *.fmx}
+
+end.
diff --git a/src/lib/Components/TCompLabel/Test Project/CompLabelTest.dpr b/src/lib/Components/TCompLabel/Test Project/CompLabelTest.dpr
new file mode 100644
index 0000000..742c2d7
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Test Project/CompLabelTest.dpr
@@ -0,0 +1,17 @@
+program CompLabelTest;
+
+uses
+ System.StartUpCopy,
+ FMX.Forms,
+ CompLabelUnit in 'CompLabelUnit.pas' {Form1},
+ CompLabelDesign in 'CompLabelDesign.pas' {Form2},
+ FMX.CompLabel in '..\Package\FMX.CompLabel.pas';
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.CreateForm(TForm2, Form2);
+ Application.Run;
+end.
diff --git a/src/lib/Components/TCompLabel/Test Project/CompLabelTest.dproj b/src/lib/Components/TCompLabel/Test Project/CompLabelTest.dproj
new file mode 100644
index 0000000..349764e
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Test Project/CompLabelTest.dproj
@@ -0,0 +1,1103 @@
+
+
+ {A4B195DE-B5AE-4ADF-8E60-D326D61BD406}
+ 19.2
+ FMX
+ True
+ Debug
+ Win32
+ 37907
+ Application
+ CompLabelTest.dpr
+
+
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ .\$(Platform)\$(Config)
+ .\$(Platform)\$(Config)
+ false
+ false
+ false
+ false
+ false
+ System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ $(BDS)\bin\delphi_PROJECTICON.ico
+ $(BDS)\bin\delphi_PROJECTICNS.icns
+ CompLabelTest
+
+
+ DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ Debug
+ true
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ Debug
+ true
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;TMSFMXPackPkgDXE13;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+ CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers
+ iPhoneAndiPad
+ true
+ Debug
+ $(MSBuildProjectName)
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;fgx;DBXInformixDriver;IndyIPClient;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers
+ Debug
+ true
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;TMSFMXPackPkgDXE13;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;fgx;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+ $(BDS)\bin\default_app.manifest
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;fgx;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+ $(BDS)\bin\default_app.manifest
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
+
+
+ DEBUG;$(DCC_Define)
+ true
+ false
+ true
+ true
+ true
+
+
+ false
+ true
+ PerMonitorV2
+
+
+ true
+ PerMonitorV2
+
+
+ false
+ RELEASE;$(DCC_Define)
+ 0
+ 0
+
+
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png
+
+
+ true
+ PerMonitorV2
+
+
+ true
+ PerMonitorV2
+
+
+
+ MainSource
+
+
+
+ fmx
+
+
+
+ fmx
+
+
+
+ Cfg_2
+ Base
+
+
+ Base
+
+
+ Cfg_1
+ Base
+
+
+
+ Delphi.Personality.12
+ Application
+
+
+
+ CompLabelTest.dpr
+
+
+
+ True
+ True
+ True
+ False
+ True
+ True
+ True
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ CompLabelTest.exe
+ true
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ classes
+ 1
+
+
+ classes
+ 1
+
+
+
+
+ res\xml
+ 1
+
+
+ res\xml
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\values-v21
+ 1
+
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ Contents
+ 1
+
+
+ Contents
+ 1
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
diff --git a/src/lib/Components/TCompLabel/Test Project/CompLabelUnit.fmx b/src/lib/Components/TCompLabel/Test Project/CompLabelUnit.fmx
new file mode 100644
index 0000000..e3560bc
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Test Project/CompLabelUnit.fmx
@@ -0,0 +1,3414 @@
+object Form1: TForm1
+ Left = 0
+ Top = 0
+ Caption = 'Form1'
+ ClientHeight = 480
+ ClientWidth = 1110
+ Fill.Color = xFF1C1C1C
+ Fill.Kind = Solid
+ StyleBook = StyleBook1
+ FormFactor.Width = 320
+ FormFactor.Height = 480
+ FormFactor.Devices = [Desktop]
+ OnMouseMove = FormMouseMove
+ DesignerMasterStyle = 0
+ object Button1: TButton
+ Position.X = 312.000000000000000000
+ Size.Width = 137.000000000000000000
+ Size.Height = 65.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Button1'
+ end
+ object CompLabel1: TCompLabel
+ Position.X = 32.000000000000000000
+ Position.Y = 152.000000000000000000
+ Size.Width = 1025.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Composition = 'Composition'
+ OutFrame = 150.000000000000000000
+ Split = '0'
+ end
+ object Label1: TLabel
+ Align = Bottom
+ StyledSettings = [Family, Size, Style]
+ Position.Y = 463.000000000000000000
+ Size.Width = 1110.000000000000000000
+ Size.Height = 17.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ Text = 'Label1'
+ end
+ object StyleBook1: TStyleBook
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
+ AF00060B627574746F6E7374796C6503BA040609656469747374796C6503A305
+ 060A6C6162656C7374796C65031501060D67726F7570626F787374796C650383
+ 02060D747261636B6261727374796C65038107060D636865636B626F78737479
+ 6C6503880506147363726F6C6C62617268747261636B7374796C65033B010614
+ 7363726F6C6C62617276747261636B7374796C65033B0106157363726F6C6C62
+ 6172626F74746F6D627574746F6E03220406137363726F6C6C6261726C656674
+ 627574746F6E03390406147363726F6C6C6261727269676874627574746F6E03
+ 3A0406127363726F6C6C626172746F70627574746F6E033804060E7363726F6C
+ 6C6261727374796C65035804060A7468756D627374796C65033B02060B737769
+ 7463687374796C6503D101060D636F6D626F626F787374796C6503F607060E63
+ 6F6D626F656469747374796C65038209060F746162636F6E74726F6C7374796C
+ 65039C01060B746162646F747374796C65035901060C7461626974656D737479
+ 6C6503E404060D7468756D626261727374796C65034F03060C6C697374626F78
+ 7374796C6503A207060D6C697374626F78666F6F74657203800106106C697374
+ 626F786974656D7374796C65031B0306126C697374626F78706C61696E686561
+ 646572033B020609677269647374796C65039808060F6865616465726974656D
+ 7374796C6503C303061970726F67726573736261726D696E696572726F727374
+ 796C65035603061170726F677265737363656C6C7374796C65039A0206106D65
+ 6E756261726974656D7374796C6503250B060C6D656E756261727374796C6503
+ 6C02060D6D656E756974656D7374796C6503520B06126D656E75736570617261
+ 746F727374796C65037801060D6D656E75766965777374796C65039102060E69
+ 6D61676563656C6C7374796C65033201060E706F70757063656C6C7374796C65
+ 03C603060D7465787463656C6C7374796C65039B0106096D656D6F7374796C65
+ 03DC07060E6C696E6B6C6162656C7374796C65034503060E7374617475736261
+ 727374796C6503E401060C7370696E626F787374796C65031E08060D73697A65
+ 677269707374796C6503F004060C746F6F6C6261727374796C6503CA00061570
+ 726F67726573736261726572726F727374796C65036404060F64726F70746172
+ 6765747374796C65036804061464726F707461726765746669656C647374796C
+ 6503890E060C706F706F7665727374796C65032A02060D706F707570626F7873
+ 74796C6503320606147374617475736261726E6F677269707374796C6503D400
+ 0613736D616C6C7363726F6C6C6261727374796C6503A301060D73706C697474
+ 65727374796C650360040610636C6F7365627574746F6E7374796C6503660406
+ 0E6D6178627574746F6E7374796C6503F603060E726573627574746F6E737479
+ 6C65030F04060E6D696E627574746F6E7374796C65030E04060F746F6F6C7769
+ 6E646F777374796C6503B20D061177696E646F77626F726465727374796C6503
+ 4A100610726164696F627574746F6E7374796C6503AE050618756C63656E7465
+ 72726164696F627574746F6E7374796C650352050617756C7269676874726164
+ 696F627574746F6E7374796C650355050616756C6C656674726164696F627574
+ 746F6E7374796C65035005061070726F67726573736261727374796C65035F04
+ 060D657870616E6465727374796C650366060613657870616E64657262757474
+ 6F6E7374796C650376020615657870616E646572636865636B626F787374796C
+ 6503D005060E6C6162656C66696C6C7374796C6503B8010613636F6D626F6564
+ 69746572726F727374796C65038709061E70726F6772657373626172696E6465
+ 7465726D696E61626C657374796C650379040611616E69696E64696361746F72
+ 7374796C6503BA010615616E69696E64696361746F72686F727A7374796C6503
+ 8A02060A70616E656C7374796C65031E01060E6C6F67627574746F6E7374796C
+ 65038A07061470726F67726573736261726D696E697374796C65035103061B74
+ 72656576696577657870616E646572627574746F6E7374796C65037E02061174
+ 726565766965776974656D7374796C65031305060D7472656576696577737479
+ 6C650336070619616374696F6E746F6F6C627574746F6E6D756C746976696577
+ 033407060E616464627574746F6E7374796C65032C070617696E666F746F6F6C
+ 627574746F6E6D756C74697669657703A90D061B6F7267616E697A65746F6F6C
+ 627574746F6E6D756C74697669657703EE06061B73657474696E6773746F6F6C
+ 627574746F6E6D756C746976696577037D13061172656D6F7665627574746F6E
+ 7374796C6503CF060614706F7075706261636B67726F756E647374796C6503BA
+ 0000545046300A5452656374616E676C6500095374796C654E616D65060F6261
+ 636B67726F756E647374796C6505416C69676E070643656E7465720A46696C6C
+ 2E436F6C6F7207097846463244324432440A53697A652E576964746805000000
+ 000000009407400B53697A652E4865696768740500000000000080D206401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650756697369626C650800005450463007544C61796F7574000953
+ 74796C654E616D65060B627574746F6E7374796C6505416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E
+ 31084475726174696F6E05000000000000000000000C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463230
+ 323032300953746F7056616C7565070978464634303430343007547269676765
+ 72063049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C73653B4973466F63757365643D66616C73650E54726967676572496E766572
+ 7365063149734D6F7573654F7665723D66616C73653B4973507265737365643D
+ 66616C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F7241
+ 6E696D6174696F6E32084475726174696F6E05000000000000000000000C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463430343034300953746F7056616C756507097846463137353739
+ 430754726967676572062F4973507265737365643D747275653B49734D6F7573
+ 654F7665723D747275653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E33084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463241383245320953746F7056616C75650709784646
+ 3137353739430754726967676572062E4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062F4973507265737365643D66616C73653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650000
+ 0005545465787400095374796C654E616D6506047465787405416C69676E0706
+ 436C69656E7413456E61626C6544726167486967686C69676874080748697454
+ 657374080A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C7408165465787453657474696E67732E466F6E74436F6C6F720708
+ 636C6157686974650000005450463007544C61796F757400095374796C654E61
+ 6D650609656469747374796C6505416C69676E070643656E7465720A53697A65
+ 2E57696474680500000000000000C805400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508000C5442727573684F626A65637400095374796C654E616D65
+ 060A666F726567726F756E6400000C5442727573684F626A6563740009537479
+ 6C654E616D65060973656C656374696F6E0B42727573682E436F6C6F72070978
+ 393632413832453200000B54466F6E744F626A65637400095374796C654E616D
+ 650604666F6E7409466F6E742E53697A650500000000000000D0024000000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646
+ 3230323032300748697454657374080A53697A652E5769647468050000000000
+ 0000C805400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650614656469745374726F6B65416E696D6174696F6E3108447572
+ 6174696F6E05000000000000000000000C50726F70657274794E616D65060C53
+ 74726F6B652E436F6C6F720A537461727456616C756507097846463135313531
+ 350953746F7056616C756507097846463241383245320754726967676572060E
+ 4973466F63757365643D747275650E54726967676572496E7665727365060F49
+ 73466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650614656469745374726F6B65416E696D6174696F6E
+ 32084475726174696F6E050000000000000000000007496E7665727365090C50
+ 726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456
+ 616C756507097846463135313531350953746F7056616C756507097846463443
+ 344334430754726967676572062149734D6F7573654F7665723D747275653B49
+ 73466F63757365643D66616C73653B0E54726967676572496E76657273650622
+ 49734D6F7573654F7665723D66616C73653B4973466F63757365643D66616C73
+ 653B00000007544C61796F757400095374796C654E616D650607627574746F6E
+ 7305416C69676E07055269676874064C6F636B6564090B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 0000008000400E4D617267696E732E426F74746F6D0500000000000000800040
+ 0A506F736974696F6E2E580500000000000000C004400A506F736974696F6E2E
+ 5905000000000000008000400A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000A803401453697A652E50
+ 6C6174666F726D44656661756C7408000007544C61796F757400095374796C65
+ 4E616D650607636F6E74656E7405416C69676E0706436C69656E74064C6F636B
+ 6564090C4D617267696E732E4C65667405000000000000008001400B4D617267
+ 696E732E546F7005000000000000008000400D4D617267696E732E5269676874
+ 05000000000000008000400E4D617267696E732E426F74746F6D050000000000
+ 00008000400A53697A652E57696474680500000000000000A804400B53697A65
+ 2E4865696768740500000000000000A803401453697A652E506C6174666F726D
+ 44656661756C7408000006544C6162656C00095374796C654E616D6506067072
+ 6F6D7074064C6F636B656409074F706163697479050000000000000080FE3F16
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 04546578740604546578740000005450463007544C61796F757400095374796C
+ 654E616D65060A6C6162656C7374796C6505416C69676E070643656E7465720A
+ 53697A652E57696474680500000000000000C805400B53697A652E4865696768
+ 740500000000000000C803401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C65080005545465787400095374796C654E616D65060474
+ 65787405416C69676E0708436F6E74656E74730748697454657374080A53697A
+ 652E57696474680500000000000000C805400B53697A652E4865696768740500
+ 000000000000C803401453697A652E506C6174666F726D44656661756C740816
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 0000005450463007544C61796F757400095374796C654E616D65060D67726F75
+ 70626F787374796C6505416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000F004400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508000A5452656374616E676C6500095374796C654E616D65060A6261636B
+ 67726F756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E64
+ 07044E6F6E650748697454657374080C4D617267696E732E4C65667405000000
+ 00000000C000400B4D617267696E732E546F7005000000000000009002400D4D
+ 617267696E732E52696768740500000000000000C000400E4D617267696E732E
+ 426F74746F6D0500000000000000C000400A53697A652E576964746805000000
+ 00000000D804400B53697A652E48656967687405000000000000009804401453
+ 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
+ 7207097846463135313531350005545465787400095374796C654E616D650604
+ 74657874084175746F53697A65090A436C6970506172656E7409074869745465
+ 7374080C4D617267696E732E4C6566740500000000000000A002400A506F7369
+ 74696F6E2E5805000000000060559502400A506F736974696F6E2E5905000000
+ 00004055D501C00A53697A652E576964746805000000000000B8C703400B5369
+ 7A652E4865696768740500000000000060FF02401453697A652E506C6174666F
+ 726D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F
+ 720708636C615768697465155465787453657474696E67732E576F7264577261
+ 7008000000005450463007544C61796F757400095374796C654E616D65060D74
+ 7261636B6261727374796C6505416C69676E070643656E7465720A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C805401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C65080B46697865644865696768740211000A5452656374616E676C65
+ 00095374796C654E616D65060668747261636B05416C69676E070A5665727443
+ 656E7465720A46696C6C2E436F6C6F7207097846463135313531350748697454
+ 657374080A506F736974696F6E2E590500000000000000BC04400A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000A001401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730946696C6C2E4B696E6407044E6F6E65064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C6566740500000000000000C001400B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 0500000000000000C001400E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000B005400B53697A65
+ 2E4865696768740500000000000000C000401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265
+ 6374616E676C6500095374796C654E616D650609686967686C6967687405416C
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464632413832453207
+ 48697454657374080C50616464696E672E4C6566740500000000000000A00240
+ 0A53697A652E57696474680500000000000000F003400B53697A652E48656967
+ 68740500000000000000A001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6500000B54476C6F77456666
+ 6563740008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C
+ 6F720709784646324138324532074F706163697479050000000000000080FF3F
+ 07456E61626C6564080000000A5452656374616E676C6500095374796C654E61
+ 6D65060676747261636B05416C69676E070A486F727A43656E7465720A46696C
+ 6C2E436F6C6F7207097846463135313531350748697454657374080A506F7369
+ 74696F6E2E580500000000000000BC04400A53697A652E576964746805000000
+ 00000000A001400B53697A652E4865696768740500000000000000C805401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E65000A5452656374616E676C6500095374796C654E616D65060A62
+ 61636B67726F756E6405416C69676E0708436F6E74656E74730946696C6C2E4B
+ 696E6407044E6F6E65064C6F636B6564090748697454657374080C4D61726769
+ 6E732E4C6566740500000000000000C001400B4D617267696E732E546F700500
+ 00000000000080FF3F0D4D617267696E732E52696768740500000000000000C0
+ 01400E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A
+ 652E576964746805000000000000000000000B53697A652E4865696768740500
+ 000000000000C405401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C650009
+ 5374796C654E616D650609686967686C6967687405416C69676E0703546F700A
+ 46696C6C2E436F6C6F7207097846463241383245320748697454657374080A53
+ 697A652E57696474680500000000000000A001400B53697A652E486569676874
+ 0500000000000000F003401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6500000B54476C6F774566666563
+ 740008536F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F72
+ 0709784646324138324532074F706163697479050000000000000080FF3F0745
+ 6E61626C65640800000006545468756D6200095374796C654E616D6506066874
+ 68756D62064C6F636B6564090A506F736974696F6E2E580500000000003033AB
+ 03400A506F736974696F6E2E59050000000000FFFFA304400A53697A652E5769
+ 6474680500000000000000F002400B53697A652E486569676874050000000000
+ 0000F002401453697A652E506C6174666F726D44656661756C74080B5374796C
+ 654C6F6F6B7570060D7468756D626261727374796C65000006545468756D6200
+ 095374796C654E616D650606767468756D62064C6F636B6564090A506F736974
+ 696F6E2E58050000000000CBCCA804400A506F736974696F6E2E590500000000
+ 009899B103400A53697A652E57696474680500000000000000F002400B53697A
+ 652E4865696768740500000000000000F002401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B7570060D7468756D6262617273
+ 74796C650000005450463007544C61796F757400095374796C654E616D65060D
+ 636865636B626F787374796C6505416C69676E070643656E7465720A53697A65
+ 2E5769647468050000000000ACAA8006400B53697A652E486569676874050000
+ 00000058559904401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C65080007544C61796F75740005416C69676E07044C6566740A5369
+ 7A652E576964746805000000000000009003400B53697A652E48656967687405
+ 000000000058559904401453697A652E506C6174666F726D44656661756C7408
+ 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
+ 756E6405416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463230323032300748697454657374080A53697A652E57696474680500000000
+ 000000F002400B53697A652E4865696768740500000000000000F00240145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653105416C69676E0706436C69656E740A46696C
+ 6C2E436F6C6F720709784646324138324532074869745465737408074F706163
+ 69747905000000000000000000000C4D617267696E732E4C6566740500000000
+ 0000008000400B4D617267696E732E546F7005000000000000008000400D4D61
+ 7267696E732E526967687405000000000000008000400E4D617267696E732E42
+ 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
+ 000000B002400B53697A652E4865696768740500000000000000B00240145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D
+ 65061B6368656368626F7856697362696C697479416E696D6174696F6E310844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 074F7061636974790A537461727456616C756505000000000000000000000953
+ 746F7056616C75650500000000000000C805400754726967676572060E497343
+ 6865636B65643D747275650E54726967676572496E7665727365060F49734368
+ 65636B65643D66616C73650000000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650618636865636B626F785374726F6B65416E696D617469
+ 6F6E31084475726174696F6E05000000000000000000000C50726F7065727479
+ 4E616D65060C5374726F6B652E436F6C6F720A537461727456616C7565070978
+ 46463135313531350953746F7056616C75650709784646324138324532075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C736500000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650617636865636B626F78436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572061049734D6F7573654F7665723D747275650E5472
+ 6967676572496E7665727365061149734D6F7573654F7665723D66616C736500
+ 00000005545465787400095374796C654E616D6506047465787405416C69676E
+ 0706436C69656E740A53697A652E57696474680500000000005855DD05400B53
+ 697A652E48656967687405000000000058559904401453697A652E506C617466
+ 6F726D44656661756C7408165465787453657474696E67732E466F6E74436F6C
+ 6F720708636C615768697465000000545046300A5452656374616E676C650009
+ 5374796C654E616D6506147363726F6C6C62617268747261636B7374796C6505
+ 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646313531
+ 3531350748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 650756697369626C65080006545468756D6200095374796C654E616D65060574
+ 68756D62064C6F636B6564090A53697A652E5769647468050000000000000080
+ 03400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060A746875
+ 6D627374796C65000000545046300A5452656374616E676C6500095374796C65
+ 4E616D6506147363726F6C6C62617276747261636B7374796C6505416C69676E
+ 070643656E7465720A46696C6C2E436F6C6F7207097846463135313531350748
+ 697454657374080A53697A652E57696474680500000000000000C804400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507566973
+ 69626C65080006545468756D6200095374796C654E616D6506057468756D6206
+ 4C6F636B6564090A53697A652E57696474680500000000000000C804400B5369
+ 7A652E48656967687405000000000000008003401453697A652E506C6174666F
+ 726D44656661756C74080B5374796C654C6F6F6B7570060A7468756D62737479
+ 6C650000005450463007544C61796F757400095374796C654E616D6506157363
+ 726F6C6C626172626F74746F6D627574746F6E05416C69676E070643656E7465
+ 720756697369626C6508000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C6970
+ 4368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F72
+ 07097846463230323032300748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572
+ 6174696F6E05000000000000000000000C50726F70657274794E616D65060A46
+ 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
+ 53746F7056616C75650709784646343034303430075472696767657206204973
+ 4D6F7573654F7665723D747275653B4973507265737365643D66616C73650E54
+ 726967676572496E7665727365062149734D6F7573654F7665723D66616C7365
+ 3B4973507265737365643D66616C736500000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
+ 696F6E32084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463430343034300953746F7056616C7565070978464631373537394307547269
+ 67676572061F4973507265737365643D747275653B49734D6F7573654F766572
+ 3D747275650E54726967676572496E766572736506204973507265737365643D
+ 66616C73653B49734D6F7573654F7665723D7472756500000007544C61796F75
+ 7400095374796C654E616D6506074C61796F75743105416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000A002400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080005545061746800095374796C654E616D650605506174683105
+ 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
+ 000000000000C8420000C84201000000000096430000C8420100000000004843
+ 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080A53697A652E576964746805000000000000
+ 00A002400B53697A652E4865696768740500000000000000C001401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000000005450463007544C61796F757400095374796C654E616D650613
+ 7363726F6C6C6261726C656674627574746F6E05416C69676E070643656E7465
+ 720756697369626C6508000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C6970
+ 4368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F72
+ 07097846463230323032300748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572
+ 6174696F6E05000000000000000000000C50726F70657274794E616D65060A46
+ 696C6C2E436F6C6F720A537461727456616C7565070978464632303230323009
+ 53746F7056616C75650709784646343034303430075472696767657206204973
+ 4D6F7573654F7665723D747275653B4973507265737365643D66616C73650E54
+ 726967676572496E7665727365062149734D6F7573654F7665723D66616C7365
+ 3B4973507265737365643D66616C736500000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
+ 696F6E32084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463430343034300953746F7056616C7565070978464631373537394307547269
+ 67676572061F4973507265737365643D747275653B49734D6F7573654F766572
+ 3D747275650E54726967676572496E766572736506204973507265737365643D
+ 66616C73653B49734D6F7573654F7665723D7472756500000007544C61796F75
+ 7400095374796C654E616D6506074C61796F75743105416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000A002400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080005545061746800095374796C654E616D650605506174683105
+ 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
+ 000000000000C8420000C84201000000000096430000C8420100000000004843
+ 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080D526F746174696F6E416E676C6505000000
+ 00000000B405400A53697A652E57696474680500000000000000A002400B5369
+ 7A652E4865696768740500000000000000C001401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000000
+ 5450463007544C61796F757400095374796C654E616D6506147363726F6C6C62
+ 61727269676874627574746F6E05416C69676E070643656E7465720756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080D526F746174696F6E416E676C650500000000000000B405
+ C00A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
+ 4C61796F757400095374796C654E616D6506127363726F6C6C626172746F7062
+ 7574746F6E05416C69676E070643656E7465720756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0706436C69656E740C436C69704368696C6472656E090A436C6970
+ 506172656E74090A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E31084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463230323032300953746F7056616C75650709784646
+ 3430343034300754726967676572062049734D6F7573654F7665723D74727565
+ 3B4973507265737365643D66616C73650E54726967676572496E766572736506
+ 2149734D6F7573654F7665723D66616C73653B4973507265737365643D66616C
+ 736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463430343034300953746F705661
+ 6C756507097846463137353739430754726967676572061F4973507265737365
+ 643D747275653B49734D6F7573654F7665723D747275650E5472696767657249
+ 6E766572736506204973507265737365643D66616C73653B49734D6F7573654F
+ 7665723D7472756500000007544C61796F757400095374796C654E616D650607
+ 4C61796F75743105416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080005545061746800
+ 095374796C654E616D650605506174683105416C69676E0706436C69656E7409
+ 446174612E506174680A3400000004000000000000000000C8420000C8420100
+ 0000000096430000C842010000000000484300009643030000000000C8420000
+ C8420A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0D526F746174696F6E416E676C650500000000000000B406400A53697A652E57
+ 696474680500000000000000A002400B53697A652E4865696768740500000000
+ 000000C001401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000000005450463007544C61796F75740009
+ 5374796C654E616D65060E7363726F6C6C6261727374796C6505416C69676E07
+ 0643656E7465720756697369626C6508000754427574746F6E00095374796C65
+ 4E616D65060A6C656674627574746F6E05416C69676E07044C656674064C6F63
+ 6B6564090A506F736974696F6E2E5905000000000000008003400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 000000009003401453697A652E506C6174666F726D44656661756C74080B5374
+ 796C654C6F6F6B757006137363726F6C6C6261726C656674627574746F6E0000
+ 0754427574746F6E00095374796C654E616D65060B7269676874627574746F6E
+ 05416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E58
+ 05000000000000008804400A506F736974696F6E2E5905000000000000008003
+ 400A53697A652E576964746805000000000000008003400B53697A652E486569
+ 67687405000000000000009003401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B757006147363726F6C6C6261727269676874
+ 627574746F6E00000754427574746F6E00095374796C654E616D65060C626F74
+ 746F6D627574746F6E05416C69676E0706426F74746F6D064C6F636B6564090A
+ 506F736974696F6E2E5905000000000000008804400A53697A652E5769647468
+ 0500000000000000C804400B53697A652E486569676874050000000000000080
+ 03401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F
+ 6F6B757006157363726F6C6C626172626F74746F6D627574746F6E0000065454
+ 7261636B00095374796C654E616D65060668747261636B05416C69676E070643
+ 6C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F72697A
+ 6F6E74616C0A53697A652E576964746805000000000000009003400B53697A65
+ 2E48656967687405000000000000009003401453697A652E506C6174666F726D
+ 44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C62617268
+ 747261636B7374796C6500000654547261636B00095374796C654E616D650606
+ 76747261636B05416C69676E0706436C69656E74064C6F636B6564090B4F7269
+ 656E746174696F6E070A486F72697A6F6E74616C0A53697A652E576964746805
+ 000000000000009003400B53697A652E48656967687405000000000000009003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B757006147363726F6C6C62617276747261636B7374796C6500000754427574
+ 746F6E00095374796C654E616D650609746F70627574746F6E05416C69676E07
+ 03546F700A53697A652E57696474680500000000000000C804400B53697A652E
+ 48656967687405000000000000008003401453697A652E506C6174666F726D44
+ 656661756C74080B5374796C654C6F6F6B757006127363726F6C6C626172746F
+ 70627574746F6E000000545046300A5452656374616E676C6500095374796C65
+ 4E616D65060A7468756D627374796C6505416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463444344434440748697454657374080A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D6506147468756D62436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463444344434440953746F7056616C7565070978464631
+ 37353739430754726967676572060E4973507265737365643D747275650E5472
+ 6967676572496E7665727365060F4973507265737365643D66616C736500000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
+ 72416E696D6174696F6E315374796C65084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463444344434440953746F7056616C7565070763
+ 6C61477261790754726967676572061049734D6F7573654F7665723D74727565
+ 0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C
+ 7365000000545046300D545377697463684F626A65637400095374796C654E61
+ 6D65060B7377697463687374796C6505416C69676E070643656E746572044B69
+ 6E64070C466164696E67547261636B730A53697A652E57696474680500000000
+ 000000C805400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C740812547261636B696E675468756D
+ 625363616C65050000000000000080FF3F0756697369626C65080A46696C6C2E
+ 436F6C6F7207097846463230323032300C46696C6C4F6E2E436F6C6F72070978
+ 46463137353739430B46696C6C4F6E2E4B696E640705536F6C69640B5374726F
+ 6B652E4B696E6407044E6F6E650B5468756D622E436F6C6F7207097846463430
+ 343034300D5468756D624F6E2E436F6C6F7207097846463241383245320C5468
+ 756D624F6E2E4B696E640705536F6C6964105468756D625374726F6B652E4B69
+ 6E6407044E6F6E650F5468756D625374726F6B652E4361700705526F756E6410
+ 5468756D625374726F6B652E446173680706437573746F6D105468756D625374
+ 726F6B652E4A6F696E0705526F756E64165468756D625374726F6B652E437573
+ 746F6D446173680A08000000000000000000000000005450463007544C61796F
+ 757400095374796C654E616D65060D636F6D626F626F787374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000C5442727573684F62
+ 6A65637400095374796C654E616D65060A666F726567726F756E6400000B5446
+ 6F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E
+ 53697A650500000000000000D00240000007544C61796F757400095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E650007544C61796F757400095374796C654E616D6506114275
+ 74746F6E5374796C654F626A65637405416C69676E070846697452696768740B
+ 4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E52
+ 69676874050000000000000080FF3F0E4D617267696E732E426F74746F6D0500
+ 00000000000080FF3F0A506F736974696F6E2E580500000000005ED99705400A
+ 506F736974696F6E2E59050000000000000080FF3F0A53697A652E5769647468
+ 050000000000889AB803400B53697A652E4865696768740500000000000000B8
+ 03401453697A652E506C6174666F726D44656661756C74080007544C61796F75
+ 7400095374796C654E616D6506074C61796F75743105416C69676E070643656E
+ 7465720C4D617267696E732E4C656674050000000000000080FF3F0A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000C001401453697A652E506C6174666F726D44656661756C74080005
+ 545061746800095374796C654E616D650605506174683105416C69676E070643
+ 6C69656E7409446174612E506174680A3400000004000000000000000000C842
+ 0000C84201000000000096430000C84201000000000048430000964303000000
+ 0000C8420000C8420A46696C6C2E436F6C6F720708636C615768697465074869
+ 7454657374080A53697A652E57696474680500000000000000A002400B53697A
+ 652E4865696768740500000000000000C001401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463230323032300953746F7056616C75650709
+ 7846463430343034300754726967676572063049734D6F7573654F7665723D74
+ 7275653B4973507265737365643D66616C73653B4973466F63757365643D6661
+ 6C73650E54726967676572496E7665727365063149734D6F7573654F7665723D
+ 66616C73653B4973507265737365643D66616C73653B4973466F63757365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3208447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463430343034300953746F
+ 7056616C756507097846463137353739430754726967676572062F4973507265
+ 737365643D747275653B49734D6F7573654F7665723D747275653B4973466F63
+ 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E330844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463241383245
+ 320953746F7056616C756507097846463137353739430754726967676572062E
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D747275650E54726967676572496E7665727365062F49
+ 73507265737365643D66616C73653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D747275650000000007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E74064C6F63
+ 6B6564090C4D617267696E732E4C65667405000000000000008000400B4D6172
+ 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
+ 740500000000000000D803400E4D617267696E732E426F74746F6D0500000000
+ 0000008000400A53697A652E576964746805000000000000008E05400B53697A
+ 652E4865696768740500000000000000A803401453697A652E506C6174666F72
+ 6D44656661756C74080000005450463007544C61796F757400095374796C654E
+ 616D65060E636F6D626F656469747374796C6505416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000C805400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508000C5442727573684F626A6563740009537479
+ 6C654E616D65060A666F726567726F756E6400000B54466F6E744F626A656374
+ 00095374796C654E616D650604666F6E7409466F6E742E53697A650500000000
+ 000000D00240000007544C61796F757400095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C803401453697A652E506C6174666F726D44656661756C7408000A54526563
+ 74616E676C6500095374796C654E616D65060A52656374616E676C653105416C
+ 69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230323032
+ 300748697454657374080A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464632
+ 3032303230000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E
+ 050000000000000000000007496E7665727365090C50726F70657274794E616D
+ 65060C5374726F6B652E436F6C6F720A537461727456616C7565070978464632
+ 30323032300953746F7056616C75650709784646343034303430075472696767
+ 6572062049734D6F7573654F7665723D747275653B4973466F63757365643D66
+ 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
+ 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174
+ 696F6E325374796C65084475726174696F6E050000000000000000000007496E
+ 7665727365090C50726F70657274794E616D65060C5374726F6B652E436F6C6F
+ 720A537461727456616C756507097846463430343034300953746F7056616C75
+ 6507097846463241383245320754726967676572061F49734D6F7573654F7665
+ 723D747275653B4973466F63757365643D747275650E54726967676572496E76
+ 65727365062049734D6F7573654F7665723D747275653B4973466F6375736564
+ 3D66616C7365000007544C61796F757400095374796C654E616D650605617272
+ 6F7705416C69676E070846697452696768740B4D617267696E732E546F700500
+ 00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
+ FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A506F73
+ 6974696F6E2E580500000000005ED99705400A506F736974696F6E2E59050000
+ 000000000080FF3F0A53697A652E5769647468050000000000889AB803400B53
+ 697A652E4865696768740500000000000000B803401453697A652E506C617466
+ 6F726D44656661756C7408000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653105416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F7207097846463330333033300748697454657374080A5369
+ 7A652E5769647468050000000000889AB803400B53697A652E48656967687405
+ 00000000000000B803401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E3153
+ 74796C65084475726174696F6E050000000000000000000007496E7665727365
+ 090C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463330333033300953746F7056616C7565070978464634
+ 30343034300754726967676572062049734D6F7573654F7665723D747275653B
+ 4973466F63757365643D66616C73650E54726967676572496E76657273650621
+ 49734D6F7573654F7665723D66616C73653B4973466F63757365643D66616C73
+ 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463430343034300953746F7056616C75
+ 6507097846463137353739430754726967676572061F4973466F63757365643D
+ 747275653B49734D6F7573654F7665723D7472756500000007544C61796F7574
+ 00095374796C654E616D6506074C61796F75743105416C69676E070643656E74
+ 65720C4D617267696E732E4C656674050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000A002400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C7408000554
+ 5061746800095374796C654E616D650605506174683105416C69676E0706436C
+ 69656E7409446174612E506174680A3400000004000000000000000000C84200
+ 00C84201000000000096430000C8420100000000004843000096430300000000
+ 00C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080A53697A652E57696474680500000000000000A002400B53697A65
+ 2E4865696768740500000000000000C001401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000000000
+ 0C5442727573684F626A65637400095374796C654E616D65060973656C656374
+ 696F6E0B42727573682E436F6C6F720709783936324138324532000007544C61
+ 796F757400095374796C654E616D650607636F6E74656E7405416C69676E0706
+ 436C69656E740C4D617267696E732E4C65667405000000000000008000400B4D
+ 617267696E732E546F7005000000000000008000400D4D617267696E732E5269
+ 6768740500000000000000F003400E4D617267696E732E426F74746F6D050000
+ 00000000008000400A53697A652E576964746805000000000000008805400B53
+ 697A652E4865696768740500000000000000A803401453697A652E506C617466
+ 6F726D44656661756C74080000005450463007544C61796F757400095374796C
+ 654E616D65060F746162636F6E74726F6C7374796C6505416C69676E07064365
+ 6E7465720A53697A652E576964746805000000000000008E06400B53697A652E
+ 486569676874050000000000FFFFC905401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000A5452656374616E676C6500095374
+ 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F720709784646333033303330064C6F636B6564
+ 090748697454657374080C50616464696E672E4C656674050000000000000080
+ 00400B50616464696E672E546F7005000000000000008000400D50616464696E
+ 672E526967687405000000000000008000400E50616464696E672E426F74746F
+ 6D05000000000000008000400A53697A652E576964746805000000000000008E
+ 06400B53697A652E486569676874050000000000FFFFC905401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 46313531353135000000545046300A5452656374616E676C6500095374796C65
+ 4E616D65060B746162646F747374796C6505416C69676E070643656E7465720A
+ 46696C6C2E436F6C6F7207097846463135313531350748697454657374080A53
+ 697A652E576964746805000000000000008005400B53697A652E486569676874
+ 05000000000000008001401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000F5443
+ 6F6C6F72416E696D6174696F6E00084475726174696F6E05000000000018B7D1
+ F23F0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463135313531350953746F7056616C75650709784646
+ 3241383245320754726967676572060F497353656C65637465643D747275650E
+ 54726967676572496E76657273650610497353656C65637465643D66616C7365
+ 0000005450463007544C61796F757400095374796C654E616D65060C74616269
+ 74656D7374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508000A5452656374616E676C6500095374796C654E616D650603746F700541
+ 6C69676E0708436F6E74656E74730C436C69704368696C6472656E0907436F72
+ 6E6572730B07546F704C65667408546F705269676874000A46696C6C2E436F6C
+ 6F720709784646323032303230064C6F636B6564090748697454657374080553
+ 696465730B03546F70044C656674055269676874000A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F720709784646313531353135000654476C79706800095374796C654E
+ 616D65060A676C7970687374796C650C4D617267696E732E4C65667405000000
+ 000000008001400D4D617267696E732E526967687405000000000000008001C0
+ 05416C69676E07044C6566740A53697A652E5769647468050000000000000080
+ 03400B53697A652E48656967687405000000000000008003401453697A652E50
+ 6C6174666F726D44656661756C7408000005545465787400095374796C654E61
+ 6D6506047465787405416C69676E0706436C69656E74064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C6566740500000000000000C000400B
+ 4D617267696E732E546F700500000000000000C000400D4D617267696E732E52
+ 696768740500000000000000C000400E4D617267696E732E426F74746F6D0500
+ 000000000000C000400A53697A652E57696474680500000000000000B004400B
+ 53697A652E48656967687405000000000000009803401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C615768697465155465787453657474696E67732E576F726457
+ 7261700800000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650612746162436F6C6F72416E696D6174696F6E310D416E696D6174696F6E54
+ 7970650705496E4F7574084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463230323032300953746F7056616C7565070978464634303430
+ 34300754726967676572062149734D6F7573654F7665723D747275653B497353
+ 656C65637465643D66616C73650E54726967676572496E766572736506224973
+ 4D6F7573654F7665723D66616C73653B497353656C65637465643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061274
+ 6162436F6C6F72416E696D6174696F6E32084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463230323032300953746F7056616C75650709
+ 7846463241383245320754726967676572060F497353656C65637465643D7472
+ 75650E54726967676572496E76657273650610497353656C65637465643D6661
+ 6C736500000000545046300A5452656374616E676C6500095374796C654E616D
+ 65060D7468756D626261727374796C6505416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463241383245320748697454657374080A5369
+ 7A652E57696474680500000000000000A003400B53697A652E48656967687405
+ 00000000000000A003401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F7207097846463135313531350756697369626C65
+ 08000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061474
+ 68756D62436F6C6F72416E696D6174696F6E31084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463241383245320953746F7056616C7565
+ 07097846463137353739430754726967676572061F4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275650E54726967676572496E7665
+ 72736506104973507265737365643D66616C73653B00000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D6506147468756D62436F6C6F72416E
+ 696D6174696F6E32084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463241383245320953746F7056616C75650709784646343039424646
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D6506157468756D62
+ 5374726F6B65416E696D6174696F6E31084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A
+ 537461727456616C756507097846463135313531350953746F7056616C756507
+ 097846463137353739430754726967676572061F4973507265737365643D7472
+ 75653B49734D6F7573654F7665723D747275650E54726967676572496E766572
+ 7365060F4973507265737365643D66616C73650000005450463007544C61796F
+ 757400095374796C654E616D65060C6C697374626F787374796C6505416C6967
+ 6E070643656E7465720A53697A652E5769647468050000000000FFFFE905400B
+ 53697A652E48656967687405000000000000008306401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508000C5442727573684F626A
+ 65637400095374796C654E616D650618416C7465726E6174696E67526F774261
+ 636B67726F756E640B42727573682E436F6C6F72070978464632433243324300
+ 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
+ 756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709
+ 784646323032303230064C6F636B6564090748697454657374080C5061646469
+ 6E672E4C65667405000000000000008000400B50616464696E672E546F700500
+ 0000000000008000400D50616464696E672E5269676874050000000000000080
+ 00400E50616464696E672E426F74746F6D05000000000000008000400A53697A
+ 652E5769647468050000000000FFFFE905400B53697A652E4865696768740500
+ 0000000000008306401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F7207097846463135313531350007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E740C436C69704368696C6472656E090A53697A652E57696474680500000000
+ 00FFFFC105400B53697A652E4865696768740500000000000000DE0540145369
+ 7A652E506C6174666F726D44656661756C7408000A5452656374616E676C6500
+ 095374796C654E616D65060973656C656374696F6E0A46696C6C2E436F6C6F72
+ 07097846463241383245320748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D
+ 650610666F637573656473656C656374696F6E0A46696C6C2E436F6C6F720709
+ 7846463241383245320748697454657374080A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000000000C8044014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E650B5374726F6B652E446173680703446F740000000A54536372
+ 6F6C6C42617200095374796C654E616D65060A767363726F6C6C62617205416C
+ 69676E070552696768740B536D616C6C4368616E676505000000000000000000
+ 000B4F7269656E746174696F6E0708566572746963616C0A506F736974696F6E
+ 2E58050000000000FFFFC505400A506F736974696F6E2E590500000000000000
+ 8000400A53697A652E576964746805000000000000008003400B53697A652E48
+ 65696768740500000000000000DE05401453697A652E506C6174666F726D4465
+ 6661756C740800000A545363726F6C6C42617200095374796C654E616D65060A
+ 687363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0A506F736974696F6E2E5805000000000000008000400A506F
+ 736974696F6E2E590500000000000000E205400A53697A652E57696474680500
+ 00000000FFFFE105400B53697A652E4865696768740500000000000000800340
+ 1453697A652E506C6174666F726D44656661756C740800000F54536D616C6C53
+ 63726F6C6C42617200095374796C654E616D65060F76736D616C6C7363726F6C
+ 6C62617205416C69676E070552696768740B536D616C6C4368616E6765050000
+ 00000000000000000B4F7269656E746174696F6E0708566572746963616C0C4D
+ 617267696E732E4C65667405000000000000008000400A506F736974696F6E2E
+ 580500000000000000C605400A506F736974696F6E2E59050000000000000080
+ 00400A53697A652E576964746805000000000000008002400B53697A652E4865
+ 6967687405000000000000008002401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C650800000F54536D616C6C5363726F6C6C426172
+ 00095374796C654E616D65060F68736D616C6C7363726F6C6C62617205416C69
+ 676E0706426F74746F6D0B536D616C6C4368616E676505000000000000000000
+ 000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E
+ 732E546F7005000000000000008000400A506F736974696F6E2E580500000000
+ 0000008000400A506F736974696F6E2E590500000000000000E205400A53697A
+ 652E576964746805000000000000009606400B53697A652E4865696768740500
+ 0000000000008002401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C65080000000B54476C6F774566666563740008536F66746E6573
+ 73050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846464636394532
+ 44074F7061636974790500000000006666E6FE3F0754726967676572060E4973
+ 466F63757365643D7472756507456E61626C6564080000005450463007544C61
+ 796F757400095374796C654E616D65060D6C697374626F78666F6F7465720541
+ 6C69676E070643656E7465720A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C65080005545465787400
+ 095374796C654E616D6506047465787405416C69676E0706436C69656E74064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 00000000A001400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E52696768740500000000000000A001400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 00000000FC04400B53697A652E4865696768740500000000000000B003401453
+ 697A652E506C6174666F726D44656661756C7408165465787453657474696E67
+ 732E466F6E74436F6C6F720708636C6157686974650000005450463007544C61
+ 796F757400095374796C654E616D6506106C697374626F786974656D7374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000D605400B53697A652E4865696768740500000000000000C003401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508000654476C
+ 79706800095374796C654E616D65060A676C7970687374796C650C4D61726769
+ 6E732E4C65667405000000000000008000400B4D617267696E732E546F700500
+ 00000000000080FF3F0D4D617267696E732E5269676874050000000000000080
+ 00400E4D617267696E732E426F74746F6D050000000000000080FF3F05416C69
+ 676E07044C6566740A53697A652E576964746805000000000000008003400B53
+ 697A652E48656967687405000000000000008003401453697A652E506C617466
+ 6F726D44656661756C7408000005545465787400095374796C654E616D650604
+ 7465787405416C69676E0706436C69656E740748697454657374080C4D617267
+ 696E732E4C6566740500000000000000C000400B4D617267696E732E546F7005
+ 0000000000000080FF3F0D4D617267696E732E52696768740500000000000000
+ C000400E4D617267696E732E426F74746F6D050000000000000080FF3F0A5369
+ 7A652E57696474680500000000000000CA05400B53697A652E48656967687405
+ 00000000000000B003401453697A652E506C6174666F726D44656661756C7408
+ 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
+ 65155465787453657474696E67732E576F726457726170081654657874536574
+ 74696E67732E486F727A416C69676E07074C656164696E670000095443686563
+ 6B426F7800095374796C654E616D650605636865636B05416C69676E07084D6F
+ 73744C6566740843616E466F637573081244697361626C65466F637573456666
+ 656374090A53697A652E57696474680500000000000000A003400B53697A652E
+ 4865696768740500000000000000C003401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C65080000005450463007544C61796F757400
+ 095374796C654E616D6506126C697374626F78706C61696E6865616465720541
+ 6C69676E070643656E7465720A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463244324432
+ 44064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000000009205400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000005545465787400095374796C654E616D65
+ 06047465787405416C69676E0706436C69656E74064C6F636B65640907486974
+ 54657374080C4D617267696E732E4C6566740500000000000000A001400B4D61
+ 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
+ 68740500000000000000A001400E4D617267696E732E426F74746F6D05000000
+ 000000008000400A53697A652E57696474680500000000000000FC04400B5369
+ 7A652E4865696768740500000000000000B003401453697A652E506C6174666F
+ 726D44656661756C7408165465787453657474696E67732E466F6E74436F6C6F
+ 720708636C6157686974650000005450463007544C61796F757400095374796C
+ 654E616D650609677269647374796C6505416C69676E070643656E7465720A53
+ 697A652E5769647468050000000000FFFFE905400B53697A652E486569676874
+ 05000000000000008306401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508000C5442727573684F626A65637400095374796C654E
+ 616D650618416C7465726E6174696E67526F774261636B67726F756E640B4272
+ 7573682E436F6C6F72070978333237383738373800000C5442727573684F626A
+ 65637400095374796C654E616D6506086C696E6566696C6C0B42727573682E43
+ 6F6C6F72070978464631353135313500000A5452656374616E676C6500095374
+ 796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564
+ 090748697454657374080C50616464696E672E4C656674050000000000000080
+ 00400B50616464696E672E546F7005000000000000008000400D50616464696E
+ 672E526967687405000000000000008000400E50616464696E672E426F74746F
+ 6D05000000000000008000400A53697A652E5769647468050000000000FFFFE9
+ 05400B53697A652E48656967687405000000000000008306401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 4631353135313500075448656164657200095374796C654E616D650606686561
+ 6465720553696465730B03546F70044C65667406426F74746F6D055269676874
+ 0005416C69676E0703546F700748697454657374080A506F736974696F6E2E58
+ 05000000000000008000400A506F736974696F6E2E5905000000000000008000
+ 400A53697A652E5769647468050000000000FFFFE105400B53697A652E486569
+ 6768740500000000000000A803401453697A652E506C6174666F726D44656661
+ 756C7408000007544C61796F757400095374796C654E616D650607636F6E7465
+ 6E7405416C69676E0706436C69656E740C436C69704368696C6472656E090A53
+ 697A652E5769647468050000000000FFFFC105400B53697A652E486569676874
+ 0500000000000000B405401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060973656C656374
+ 696F6E0A46696C6C2E436F6C6F72070978464632413832453207486974546573
+ 7408074F706163697479050000000000000080FD3F0A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E61
+ 6D650605666F6375730A46696C6C2E436F6C6F72070978414632413832453207
+ 48697454657374080C4D617267696E732E4C656674050000000000000080FF3F
+ 0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
+ 5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
+ 0000000000000080FF3F0A53697A652E57696474680500000000000000C80440
+ 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6507
+ 595261646975730500000000000000C000400000000A545363726F6C6C426172
+ 00095374796C654E616D65060A767363726F6C6C62617205416C69676E070552
+ 696768740B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E0708566572746963616C0A506F736974696F6E2E5805000000
+ 0000FFFFC505400A506F736974696F6E2E590500000000000000B803400A5369
+ 7A652E576964746805000000000000008003400B53697A652E48656967687405
+ 00000000000000B405401453697A652E506C6174666F726D44656661756C7408
+ 00000A545363726F6C6C42617200095374796C654E616D65060A687363726F6C
+ 6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E7461
+ 6C0A506F736974696F6E2E5805000000000000008000400A506F736974696F6E
+ 2E590500000000000000E205400A53697A652E5769647468050000000000FFFF
+ E105400B53697A652E48656967687405000000000000008003401453697A652E
+ 506C6174666F726D44656661756C740800000F54536D616C6C5363726F6C6C42
+ 617200095374796C654E616D65060F76736D616C6C7363726F6C6C6261720541
+ 6C69676E070552696768740B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E73
+ 2E4C65667405000000000000008000400A506F736974696F6E2E580500000000
+ 000000C605400A506F736974696F6E2E5905000000000000008000400A53697A
+ 652E576964746805000000000000008002400B53697A652E4865696768740500
+ 0000000000008002401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C650800000F54536D616C6C5363726F6C6C42617200095374796C
+ 654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F
+ 74746F6D0B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005
+ 000000000000008000400A506F736974696F6E2E580500000000000000800040
+ 0A506F736974696F6E2E590500000000000000E205400A53697A652E57696474
+ 6805000000000000009606400B53697A652E4865696768740500000000000000
+ 8002401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508000000005450463007544C61796F757400095374796C654E616D65060F68
+ 65616465726974656D7374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000000009205400B53697A652E4865696768740500
+ 000000000000D003401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 0A6261636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C
+ 2E436F6C6F720709784646344334433443064C6F636B65640907486974546573
+ 74080A53697A652E576964746805000000000000009205400B53697A652E4865
+ 696768740500000000000000D003401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D6506156865616465
+ 72436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463443344334430953746F7056616C7565070978
+ 46463241383245320754726967676572060E4973507265737365643D74727565
+ 0E54726967676572496E7665727365060F4973507265737365643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061668
+ 65616465725374726F6B65416E696D6174696F6E31084475726174696F6E0500
+ 0000000000000000000C50726F70657274794E616D65060C5374726F6B652E43
+ 6F6C6F720A537461727456616C756507097846463135313531350953746F7056
+ 616C756507097846463241383245320754726967676572060E49735072657373
+ 65643D747275650E54726967676572496E7665727365060F4973507265737365
+ 643D66616C736500000005545465787400095374796C654E616D650604746578
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0C4D617267696E732E4C6566740500000000000000A001400B4D617267696E73
+ 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
+ 0000000000A001400E4D617267696E732E426F74746F6D050000000000000080
+ 00400A53697A652E57696474680500000000000000FC04400B53697A652E4865
+ 696768740500000000000000B003401453697A652E506C6174666F726D446566
+ 61756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 6157686974650000005450463007544C61796F757400095374796C654E616D65
+ 061970726F67726573736261726D696E696572726F727374796C6505416C6967
+ 6E070643656E7465720A53697A652E576964746805000000000033338505400B
+ 53697A652E4865696768740500000000009999E104401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508000A5452656374616E676C
+ 6500095374796C654E616D65060668747261636B05416C69676E0708436F6E74
+ 656E74730A46696C6C2E436F6C6F720709784646343034303430064C6F636B65
+ 64090748697454657374080A53697A652E576964746805000000000033338505
+ 400B53697A652E4865696768740500000000009999E104401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000A5452656374616E676C6500095374796C654E616D65060A68696E64696361
+ 746F7205416C69676E07044C6566740A46696C6C2E436F6C6F72070978464645
+ 3232413241064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E650000000A5452656374616E676C6500095374796C65
+ 4E616D65060676747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646343034303430064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000A545265637461
+ 6E676C6500095374796C654E616D65060A76696E64696361746F7205416C6967
+ 6E0706426F74746F6D0A46696C6C2E436F6C6F72070978464645323241324106
+ 4C6F636B6564090748697454657374080A506F736974696F6E2E590500000000
+ 0099998D04400A53697A652E576964746805000000000033338505400B53697A
+ 652E4865696768740500000000000000A803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054
+ 50463007544C61796F757400095374796C654E616D65061170726F6772657373
+ 63656C6C7374796C6505416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000F805400B53697A652E48656967687405000000000000
+ 00FC05401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C65080007544C61796F757400095374796C654E616D65060668747261636B05
+ 416C69676E0708436F6E74656E7473064C6F636B6564090C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A53697A652E57
+ 696474680500000000000000F005400B53697A652E4865696768740500000000
+ 000000F405401453697A652E506C6174666F726D44656661756C7408000A5452
+ 656374616E676C6500095374796C654E616D65060A68696E64696361746F7205
+ 416C69676E07044C6566740A46696C6C2E436F6C6F7207097846463241383245
+ 32064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
+ 0000000000000080FF3F0B4D617267696E732E546F70050000000000000080FF
+ 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805
+ 0000000000000080FF3F0A506F736974696F6E2E59050000000000000080FF3F
+ 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
+ 68740500000000000000F005401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D6506106D656E756261726974656D737479
+ 6C6505416C69676E070643656E7465720C4D617267696E732E4C656674050000
+ 000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D
+ 4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E73
+ 2E426F74746F6D050000000000000080FF3F0A53697A652E5769647468050000
+ 00000000009205400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C74080756697369626C6508000A
+ 5452656374616E676C650005416C69676E0708436F6E74656E74730A46696C6C
+ 2E436F6C6F720709784646324138324532074869745465737408074F70616369
+ 747905000000000017B7D1F13F0A53697A652E57696474680500000000000000
+ 9205400B53697A652E4865696768740500000000000000D003401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E65000F54466C6F6174416E696D6174696F6E00084475726174696F6E050000
+ 00000018B7D1F23F0C50726F70657274794E616D6506074F7061636974790A53
+ 7461727456616C756505000000000000000000000953746F7056616C75650500
+ 00000000000080FF3F0754726967676572060F497353656C65637465643D7472
+ 75650E54726967676572496E76657273650610497353656C65637465643D6661
+ 6C73650000000A5452656374616E676C6500095374796C654E616D65060A6261
+ 636B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F
+ 6C6F720709784646324138324532074869745465737408074F70616369747905
+ 000000000017B7D1F13F0A53697A652E57696474680500000000000000920540
+ 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 0F54466C6F6174416E696D6174696F6E00084475726174696F6E050000000000
+ 18B7D1F23F0C50726F70657274794E616D6506074F7061636974790A53746172
+ 7456616C756505000000000000000000000953746F7056616C75650500000000
+ 00000080FF3F0754726967676572061049734D6F7573654F7665723D74727565
+ 0E54726967676572496E7665727365061149734D6F7573654F7665723D66616C
+ 736500000007544C61796F757400095374796C654E616D650605676C79706805
+ 416C69676E07044C6566740A53697A652E57696474680500000000000000C803
+ 400B53697A652E4865696768740500000000000000D003401453697A652E506C
+ 6174666F726D44656661756C74080007544C61796F757400095374796C654E61
+ 6D650609636865636B6D61726B05416C69676E0708436F6E74656E7473074F70
+ 61636974790500000000006F1283F53F0A53697A652E57696474680500000000
+ 000000C803400B53697A652E4865696768740500000000000000D00340145369
+ 7A652E506C6174666F726D44656661756C7408000554506174680005416C6967
+ 6E070643656E74657209446174612E506174680A580000000700000000000000
+ 56D9524391AE2C43010000009276664365021643010000009F3983432B7C3C43
+ 010000009E9AA64382D2B442010000006F1CB04375A4D1420100000026DF8243
+ 263F67430300000056D9524391AE2C430A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080A53697A652E576964746805000000000000
+ 00B002400B53697A652E4865696768740500000000000000B002401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6500000F54466C6F6174416E696D6174696F6E00084475726174696F6E05
+ 0000000000CDCCCCFB3F0C50726F70657274794E616D6506074F706163697479
+ 0A537461727456616C756505000000000000000000000953746F7056616C7565
+ 050000000000000080FF3F0754726967676572060E4973436865636B65643D74
+ 7275650E54726967676572496E7665727365060F4973436865636B65643D6661
+ 6C73650000000654476C79706800095374796C654E616D65060A676C79706873
+ 74796C650C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
+ 67696E732E546F7005000000000000008000400D4D617267696E732E52696768
+ 740500000000000000C000400E4D617267696E732E426F74746F6D0500000000
+ 00000080FF3F05416C69676E070552696768740A53697A652E57696474680500
+ 0000000000008003400B53697A652E4865696768740500000000000000800340
+ 1453697A652E506C6174666F726D44656661756C740800000654496D61676500
+ 095374796C654E616D6506066269746D61700E4D756C74695265734269746D61
+ 700E01000005416C69676E0708436F6E74656E74730C4D617267696E732E4C65
+ 667405000000000000008000400B4D617267696E732E546F7005000000000000
+ 008000400D4D617267696E732E526967687405000000000000008000400E4D61
+ 7267696E732E426F74746F6D05000000000000008000400A53697A652E576964
+ 74680500000000000000A803400B53697A652E48656967687405000000000000
+ 00B003401453697A652E506C6174666F726D44656661756C7408000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E07044C656674
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 0000000000008002400D4D617267696E732E5269676874050000000000000080
+ 02400A506F736974696F6E2E5805000000000000008404400A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000D003401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746516546578
+ 7453657474696E67732E486F727A416C69676E07074C656164696E6700000554
+ 5465787400095374796C654E616D65060873686F727463757405416C69676E07
+ 055269676874064C6F636B6564090748697454657374080C4D617267696E732E
+ 4C6566740500000000000000C002400D4D617267696E732E5269676874050000
+ 0000000000C001400A506F736974696F6E2E580500000000000000C000C00A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000D003401453697A652E506C6174666F726D44656661756C74
+ 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
+ 7465165465787453657474696E67732E486F727A416C69676E07074C65616469
+ 6E67000007544C61796F757400095374796C654E616D6506077375626D61726B
+ 05416C69676E070552696768740A506F736974696F6E2E580500000000000000
+ D404400A53697A652E57696474680500000000000000A003400B53697A652E48
+ 65696768740500000000000000D003401453697A652E506C6174666F726D4465
+ 6661756C7408000554506174680005416C69676E070643656E74657209446174
+ 612E506174680A34000000040000000000000000000000000000000100000000
+ 0000000000803F010000000000803F0000003F0300000000000000000000000A
+ 46696C6C2E436F6C6F720708636C615768697465064C6F636B65640907486974
+ 54657374080A53697A652E57696474680500000000000000E001400B53697A65
+ 2E48656967687405000000000000008002401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450
+ 46300A5452656374616E676C6500095374796C654E616D65060C6D656E756261
+ 727374796C6505416C69676E070643656E7465720C436C69704368696C647265
+ 6E090946696C6C2E4B696E6407044E6F6E650748697454657374080A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E650756697369626C6508000A5452656374
+ 616E676C650005416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080C4D617267696E732E4C656674
+ 050000000000000080FFBF0B4D617267696E732E546F70050000000000000080
+ FFBF0D4D617267696E732E5269676874050000000000000080FFBF0A53697A65
+ 2E57696474680500000000000000D004400B53697A652E486569676874050000
+ 0000000000CC04401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F720709784646313531353135000007544C61796F7574
+ 00095374796C654E616D650607636F6E74656E7405416C69676E0706436C6965
+ 6E740C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A53697A652E57696474680500000000000000C004400B53697A652E
+ 4865696768740500000000000000C004401453697A652E506C6174666F726D44
+ 656661756C74080000005450463007544C61796F757400095374796C654E616D
+ 65060D6D656E756974656D7374796C6505416C69676E070643656E7465720C4D
+ 617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E54
+ 6F70050000000000000080FF3F0D4D617267696E732E52696768740500000000
+ 00000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F
+ 0A53697A652E57696474680500000000008EE3F605400B53697A652E48656967
+ 68740500000000008EE3F003401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508000A5452656374616E676C650005416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F72070978464632413832453207
+ 4869745465737408074F70616369747905000000000017B7D1F13F0A53697A65
+ 2E57696474680500000000008EE3F605400B53697A652E486569676874050000
+ 0000008EE3F003401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00084475726174696F6E05000000000018B7D1F23F0C50726F70657274794E
+ 616D6506074F7061636974790A537461727456616C7565050000000000000000
+ 00000953746F7056616C7565050000000000000080FF3F075472696767657206
+ 0F497353656C65637465643D747275650E54726967676572496E766572736506
+ 10497353656C65637465643D66616C73650000000A5452656374616E676C6500
+ 095374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F
+ 6E74656E74730A46696C6C2E436F6C6F72070978464632413832453207486974
+ 5465737408074F70616369747905000000000000000000000A53697A652E5769
+ 6474680500000000008EE3F605400B53697A652E486569676874050000000000
+ 8EE3F003401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008
+ 4475726174696F6E05000000000018B7D1F23F07496E7665727365090C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572061049734D6F7573654F7665723D747275650E5472696767657249
+ 6E7665727365061149734D6F7573654F7665723D66616C736500000007544C61
+ 796F757400095374796C654E616D650605676C79706805416C69676E07044C65
+ 66740A53697A652E57696474680500000000000000C803400B53697A652E4865
+ 696768740500000000008EE3F003401453697A652E506C6174666F726D446566
+ 61756C74080007544C61796F757400095374796C654E616D650609636865636B
+ 6D61726B05416C69676E0708436F6E74656E7473074F70616369747905000000
+ 00006F1283F53F0A53697A652E57696474680500000000000000C803400B5369
+ 7A652E4865696768740500000000008EE3F003401453697A652E506C6174666F
+ 726D44656661756C7408000554506174680005416C69676E070643656E746572
+ 09446174612E506174680A58000000070000000000000056D9524391AE2C4301
+ 0000009276664365021643010000009F3983432B7C3C43010000009E9AA64382
+ D2B442010000006F1CB04375A4D1420100000026DF8243263F67430300000056
+ D9524391AE2C430A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080A53697A652E57696474680500000000000000B002400B53697A65
+ 2E4865696768740500000000000000B002401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C
+ 6F6174416E696D6174696F6E00084475726174696F6E050000000000CDCCCCFB
+ 3F0C50726F70657274794E616D6506074F7061636974790A537461727456616C
+ 756505000000000000000000000953746F7056616C7565050000000000000080
+ FF3F0754726967676572060E4973436865636B65643D747275650E5472696767
+ 6572496E7665727365060F4973436865636B65643D66616C7365000000065447
+ 6C79706800095374796C654E616D65060A676C7970687374796C650C4D617267
+ 696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F7005
+ 000000000000008000400D4D617267696E732E52696768740500000000000000
+ C000400E4D617267696E732E426F74746F6D050000000000000080FF3F05416C
+ 69676E07044C6566740A53697A652E576964746805000000000000008003400B
+ 53697A652E48656967687405000000000000008003401453697A652E506C6174
+ 666F726D44656661756C740800000654496D61676500095374796C654E616D65
+ 06066269746D61700E4D756C74695265734269746D61700E01000005416C6967
+ 6E07044C6566740C4D617267696E732E4C65667405000000000000008000400B
+ 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
+ 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
+ 0000000000008000400A506F736974696F6E2E5805000000000000008000400A
+ 506F736974696F6E2E5905000000000000008000400A53697A652E5769647468
+ 0500000000000000A803400B53697A652E4865696768740500000000008EE3D0
+ 03401453697A652E506C6174666F726D44656661756C74080000000554546578
+ 7400095374796C654E616D6506047465787405416C69676E07044C656674064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 000000008002400D4D617267696E732E52696768740500000000000000800240
+ 0A506F736974696F6E2E5805000000000000008404400A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000008EE3
+ F003401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465165465787453
+ 657474696E67732E486F727A416C69676E07074C656164696E67000005545465
+ 787400095374796C654E616D65060873686F727463757405416C69676E070552
+ 69676874064C6F636B6564090748697454657374080C4D617267696E732E4C65
+ 66740500000000000000C002400D4D617267696E732E52696768740500000000
+ 000000C001400A506F736974696F6E2E580500000000001CC7BD04400A53697A
+ 652E57696474680500000000000000C804400B53697A652E4865696768740500
+ 000000008EE3F003401453697A652E506C6174666F726D44656661756C740816
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 165465787453657474696E67732E486F727A416C69676E07074C656164696E67
+ 000007544C61796F757400095374796C654E616D6506077375626D61726B0541
+ 6C69676E070552696768740A506F736974696F6E2E580500000000008EE3CE05
+ 400A53697A652E57696474680500000000000000A003400B53697A652E486569
+ 6768740500000000008EE3F003401453697A652E506C6174666F726D44656661
+ 756C7408000554506174680005416C69676E070643656E74657209446174612E
+ 506174680A340000000400000000000000000000000000000001000000000000
+ 000000803F010000000000803F0000003F0300000000000000000000000A4669
+ 6C6C2E436F6C6F720708636C615768697465064C6F636B656409074869745465
+ 7374080A53697A652E57696474680500000000000000C001400B53697A652E48
+ 65696768740500000000000000A002401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000000054504630
+ 07544C61796F757400095374796C654E616D6506126D656E7573657061726174
+ 6F727374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 080005544C696E650005416C69676E0703546F70084C696E6554797065070354
+ 6F700C4D617267696E732E4C656674050000000000000080FFBF0B4D61726769
+ 6E732E546F7005000000000000008000400D4D617267696E732E526967687405
+ 0000000000000080FFBF0A506F736974696F6E2E58050000000000000080FFBF
+ 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
+ 680500000000000000D004400B53697A652E4865696768740500000000000000
+ 80FF3F1453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135000000545046300A5452656374616E
+ 676C6500095374796C654E616D65060D6D656E75766965777374796C6505416C
+ 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463230323032
+ 300A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F72070978464631353135313507566973
+ 69626C6508000A5452656374616E676C650005416C69676E0706436C69656E74
+ 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000D54536861
+ 646F77456666656374000844697374616E636505000000000000008001400944
+ 6972656374696F6E0500000000000000B4044008536F66746E65737305000000
+ 0000000080FE3F074F706163697479050000000000000080FE3F0B536861646F
+ 77436F6C6F720708636C61426C61636B00000007544C61796F75740009537479
+ 6C654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D61
+ 7267696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A
+ 53697A652E57696474680500000000000000C004400B53697A652E4865696768
+ 740500000000000000C004401453697A652E506C6174666F726D44656661756C
+ 74080000005450463007544C61796F757400095374796C654E616D65060E696D
+ 61676563656C6C7374796C6505416C69676E070643656E746572075669736962
+ 6C6508000654496D61676500095374796C654E616D650605696D6167650E4D75
+ 6C74695265734269746D61700E01000005416C69676E0706436C69656E74064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A53697A652E576964746805000000
+ 00000000C004400B53697A652E4865696768740500000000000000C004401453
+ 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
+ 6F757400095374796C654E616D65060E706F70757063656C6C7374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000000000BB
+ 06400B53697A652E4865696768740500000000000000AE04401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C65080007544C61796F75
+ 740005416C69676E070552696768740A506F736974696F6E2E58050000000000
+ 0000AC06400A53697A652E57696474680500000000000000F002400B53697A65
+ 2E4865696768740500000000000000AE04401453697A652E506C6174666F726D
+ 44656661756C7408000554506174680005416C69676E070643656E7465720944
+ 6174612E506174680A400000000500000000000000000000000000803F010000
+ 000000803F0000803F010000000000003F000000000100000000000000000080
+ 3F0300000000000000000000000A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080B4D617267696E732E546F700500000000000000E0
+ 01C00A53697A652E576964746805000000000000008002400B53697A652E4865
+ 6967687405000000000000008001401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000005545061746800
+ 05416C69676E070643656E74657209446174612E506174680A34000000040000
+ 00000000000000000000000000010000000000803F0000000001000000000000
+ 3F0000803F0300000000000000000000000A46696C6C2E436F6C6F720708636C
+ 6157686974650748697454657374080B4D617267696E732E546F700500000000
+ 000000C001400A53697A652E576964746805000000000000008002400B53697A
+ 652E48656967687405000000000000008001401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000554
+ 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
+ 656E74064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 740500000000000000A001400B4D617267696E732E546F700500000000000000
+ 8000400D4D617267696E732E52696768740500000000000000A001400E4D6172
+ 67696E732E426F74746F6D05000000000000008000400A53697A652E57696474
+ 680500000000000000A206400B53697A652E4865696768740500000000000000
+ 9E04401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465000000545046
+ 3007544C61796F757400095374796C654E616D65060D7465787463656C6C7374
+ 796C6505416C69676E070643656E7465720756697369626C65080007544C6179
+ 6F757400095374796C654E616D650607636F6E74656E7405416C69676E070843
+ 6F6E74656E7473064C6F636B6564090C4D617267696E732E4C65667405000000
+ 000000008001400B4D617267696E732E546F7005000000000000008001400D4D
+ 617267696E732E526967687405000000000000008001400E4D617267696E732E
+ 426F74746F6D05000000000000008001400A53697A652E576964746805000000
+ 00000000A804400B53697A652E4865696768740500000000000000A804401453
+ 697A652E506C6174666F726D44656661756C740800000C5442727573684F626A
+ 65637400095374796C654E616D65060A666F726567726F756E6400000C544272
+ 7573684F626A65637400095374796C654E616D65060973656C656374696F6E0B
+ 42727573682E436F6C6F72070978393632413832453200000B54466F6E744F62
+ 6A65637400095374796C654E616D650604666F6E740000005450463007544C61
+ 796F757400095374796C654E616D6506096D656D6F7374796C6505416C69676E
+ 070643656E7465720A53697A652E5769647468050000000000CCCC8806400B53
+ 697A652E4865696768740500000000006666F405401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508000C5442727573684F626A65
+ 637400095374796C654E616D65060A666F726567726F756E6400000C54427275
+ 73684F626A65637400095374796C654E616D65060973656C656374696F6E0B42
+ 727573682E436F6C6F72070978374634343735394400000B54466F6E744F626A
+ 65637400095374796C654E616D650604666F6E7400000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080A53697A652E5769647468050000000000CCCC8806400B5369
+ 7A652E4865696768740500000000006666F405401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350007544C61796F757400095374796C654E616D650607636F6E74656E7405
+ 416C69676E0706436C69656E740C4D617267696E732E4C656674050000000000
+ 00008000400B4D617267696E732E546F7005000000000000008000400D4D6172
+ 67696E732E526967687405000000000000008000400E4D617267696E732E426F
+ 74746F6D05000000000000008000400A53697A652E5769647468050000000000
+ 9899E905400B53697A652E4865696768740500000000006666CC05401453697A
+ 652E506C6174666F726D44656661756C740800000A545363726F6C6C42617200
+ 095374796C654E616D65060A687363726F6C6C62617205416C69676E0706426F
+ 74746F6D06437572736F72070763724172726F770B536D616C6C4368616E6765
+ 05000000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E
+ 74616C0A506F736974696F6E2E590500000000006666D405400A53697A652E57
+ 69647468050000000000CCCC8806400B53697A652E4865696768740500000000
+ 0000008003401453697A652E506C6174666F726D44656661756C740800000A54
+ 5363726F6C6C42617200095374796C654E616D65060A767363726F6C6C626172
+ 05416C69676E0705526967687406437572736F72070763724172726F770B536D
+ 616C6C4368616E676505000000000000000000000B4F7269656E746174696F6E
+ 0708566572746963616C0A506F736974696F6E2E580500000000009899F10540
+ 0A53697A652E576964746805000000000000008003400B53697A652E48656967
+ 68740500000000006666D405401453697A652E506C6174666F726D4465666175
+ 6C7408000007544C61796F75740005416C69676E0706436C69656E740A53697A
+ 652E57696474680500000000009899F105400B53697A652E4865696768740500
+ 000000006666D405401453697A652E506C6174666F726D44656661756C740800
+ 0F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F76736D
+ 616C6C7363726F6C6C62617205416C69676E0705526967687406437572736F72
+ 070763724172726F770B536D616C6C4368616E67650500000000000000000000
+ 0B4F7269656E746174696F6E0708566572746963616C0C4D617267696E732E4C
+ 65667405000000000000008000400A53697A652E576964746805000000000000
+ 008002400B53697A652E48656967687405000000000000008002401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C650800000F54536D
+ 616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C6C73
+ 63726F6C6C62617205416C69676E0706426F74746F6D06437572736F72070763
+ 724172726F770B536D616C6C4368616E676505000000000000000000000B4F72
+ 69656E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F
+ 7005000000000000008000400A53697A652E5769647468050000000000000096
+ 06400B53697A652E48656967687405000000000000008002401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C65080000000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D6506146D656D6F5374726F
+ 6B65416E696D6174696F6E31084475726174696F6E0500000000000000000000
+ 07496E7665727365090C50726F70657274794E616D65060C5374726F6B652E43
+ 6F6C6F720A537461727456616C756507097846463135313531350953746F7056
+ 616C756507097846463430343034300754726967676572062049734D6F757365
+ 4F7665723D747275653B4973466F63757365643D66616C73650E547269676765
+ 72496E7665727365062149734D6F7573654F7665723D66616C73653B4973466F
+ 63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D6506146D656D6F5374726F6B65416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0C5374726F6B652E436F6C6F720A537461727456616C75650709784646343034
+ 3034300953746F7056616C756507097846463241383245320754726967676572
+ 060E4973466F63757365643D747275650E54726967676572496E766572736506
+ 0F4973466F63757365643D66616C7365000000005450463007544C61796F7574
+ 00095374796C654E616D65060E6C696E6B6C6162656C7374796C6505416C6967
+ 6E070643656E7465720A53697A652E5769647468050000000000CCCC8006400B
+ 53697A652E4865696768740500000000009A998104401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C65080005545465787400095374
+ 796C654E616D6506047465787405416C69676E0708436F6E74656E7473074869
+ 7454657374080A53697A652E5769647468050000000000CCCC8006400B53697A
+ 652E4865696768740500000000009A998104401453697A652E506C6174666F72
+ 6D44656661756C74081A5465787453657474696E67732E466F6E742E5374796C
+ 654578740A0D0000000404000000000000000400000016546578745365747469
+ 6E67732E466F6E74436F6C6F72070D636C61446F64676572626C7565000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
+ 6E696D6174696F6E315374796C65084475726174696F6E050000000000000000
+ 000007496E7665727365090C50726F70657274794E616D650616546578745365
+ 7474696E67732E466F6E74436F6C6F720A537461727456616C7565070D636C61
+ 446F64676572626C75650953746F7056616C7565070E636C6144656570736B79
+ 626C75650754726967676572063049734D6F7573654F7665723D747275653B49
+ 73507265737365643D66616C73653B4973466F63757365643D66616C73650E54
+ 726967676572496E7665727365063149734D6F7573654F7665723D66616C7365
+ 3B4973507265737365643D66616C73653B4973466F63757365643D66616C7365
+ 00000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65061443
+ 6F6C6F72416E696D6174696F6E325374796C65084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D6506165465787453657474696E
+ 67732E466F6E74436F6C6F720A537461727456616C7565070E636C6144656570
+ 736B79626C75650953746F7056616C7565070978464631373537394307547269
+ 67676572062F4973507265737365643D747275653B49734D6F7573654F766572
+ 3D747275653B4973466F63757365643D66616C736500000000545046300A5452
+ 656374616E676C6500095374796C654E616D65060E7374617475736261727374
+ 796C6505416C69676E070643656E7465720C436C69704368696C6472656E090A
+ 46696C6C2E436F6C6F7207097846463235323532350748697454657374080553
+ 696465730B03546F70000A53697A652E57696474680500000000000000F00440
+ 0B53697A652E4865696768740500000000000000C804401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 35313531350756697369626C65080007544C61796F757400095374796C654E61
+ 6D6506074C61796F75743105416C69676E070552696768740A506F736974696F
+ 6E2E5805000000000000008C04400A53697A652E576964746805000000000000
+ 00C803400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C740800095453697A654772697000095374
+ 796C654E616D65060973697A65677267697005416C69676E0706426F74746F6D
+ 0A506F736974696F6E2E590500000000000000C803400A53697A652E57696474
+ 680500000000000000C803400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C740800000000545046
+ 3007544C61796F757400095374796C654E616D65060C7370696E626F78737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 006666E005400B53697A652E4865696768740500000000000000A80340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632
+ 30323032300A53697A652E57696474680500000000006666E005400B53697A65
+ 2E4865696768740500000000000000A803401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F
+ 6C6F72416E696D6174696F6E315374796C65084475726174696F6E0500000000
+ 00000000000007496E7665727365090C50726F70657274794E616D65060C5374
+ 726F6B652E436F6C6F720A537461727456616C75650709784646313531353135
+ 0953746F7056616C756507097846463430343034300754726967676572061049
+ 734D6F7573654F7665723D747275650E54726967676572496E76657273650611
+ 49734D6F7573654F7665723D66616C73650000000C5442727573684F626A6563
+ 7400095374796C654E616D65060A666F726567726F756E640B42727573682E43
+ 6F6C6F72070978464645414541454100000C5442727573684F626A6563740009
+ 5374796C654E616D65060973656C656374696F6E0B42727573682E436F6C6F72
+ 0709783936324138324532000007544C61796F757400095374796C654E616D65
+ 0607636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A53697A652E576964746805000000000070668405400B53697A652E486569
+ 67687405000000000000008803401453697A652E506C6174666F726D44656661
+ 756C740800000754427574746F6E00095374796C654E616D65060B6D696E7573
+ 627574746F6E05416C69676E07074669744C6566740843616E466F6375730806
+ 437572736F72070763724172726F770C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E526967687405000000000000008000400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A506F736974696F6E2E5805000000
+ 000000008000400A506F736974696F6E2E5905000000000000008000400A5369
+ 7A652E5769647468050000000000E8FF8703400B53697A652E48656967687405
+ 000000000000008803401453697A652E506C6174666F726D44656661756C7408
+ 0B5374796C654C6F6F6B7570060B627574746F6E7374796C6500055450617468
+ 0005416C69676E0706436C69656E7409446174612E506174680A400000000500
+ 0000000000000000803F00000000010000000000803F0000803F010000000000
+ 00000000003F010000000000803F00000000030000000000803F000000000A46
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D6172
+ 67696E732E4C6566740500000000000000C001400B4D617267696E732E546F70
+ 0500000000000000C001400D4D617267696E732E526967687405000000000000
+ 00C001400E4D617267696E732E426F74746F6D0500000000000000C001400A53
+ 697A652E5769647468050000000000A0FF9F01400B53697A652E486569676874
+ 0500000000000000A001401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E650000000754427574746F6E0009
+ 5374796C654E616D65060A706C7573627574746F6E05416C69676E0708466974
+ 52696768740843616E466F6375730806437572736F72070763724172726F770C
+ 4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 000000008000400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A506F736974696F6E2E580500000000006A66BA05400A506F736974696F6E
+ 2E5905000000000000008000400A53697A652E5769647468050000000000F0FF
+ 8703400B53697A652E48656967687405000000000000008803401453697A652E
+ 506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060B6275
+ 74746F6E7374796C65000554506174680005416C69676E0706436C69656E7409
+ 446174612E506174680A34000000040000000000000000000000000000000100
+ 0000000000000000803F010000000000803F0000003F03000000000000000000
+ 00000A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0C4D617267696E732E4C6566740500000000000000C001400B4D617267696E73
+ 2E546F700500000000000000C001400D4D617267696E732E5269676874050000
+ 0000000000C001400E4D617267696E732E426F74746F6D0500000000000000C0
+ 01400A53697A652E5769647468050000000000C0FF9F01400B53697A652E4865
+ 696768740500000000000000A001401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007
+ 544C61796F757400095374796C654E616D65060D73697A65677269707374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000C803400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508000A545265
+ 6374616E676C6500095374796C654E616D65060A52656374616E676C65310541
+ 6C69676E070643656E7465720A46696C6C2E436F6C6F72070978464636303630
+ 36300A53697A652E57696474680500000000000000A000400B53697A652E4865
+ 696768740500000000000000A000401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E6500000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653205416C6967
+ 6E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036300C
+ 4D617267696E732E4C6566740500000000000000A002400A53697A652E576964
+ 74680500000000000000A000400B53697A652E48656967687405000000000000
+ 00A000401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C65
+ 4E616D65060A52656374616E676C653305416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463630363036300C4D617267696E732E4C6566
+ 740500000000000000A002400B4D617267696E732E546F700500000000000000
+ A002400A53697A652E57696474680500000000000000A000400B53697A652E48
+ 65696768740500000000000000A000401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374
+ 616E676C6500095374796C654E616D65060A52656374616E676C653405416C69
+ 676E070643656E7465720A46696C6C2E436F6C6F720709784646363036303630
+ 0B4D617267696E732E546F700500000000000000A002400A53697A652E576964
+ 74680500000000000000A000400B53697A652E48656967687405000000000000
+ 00A000401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C65
+ 4E616D65060A52656374616E676C653505416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463630363036300B4D617267696E732E546F70
+ 0500000000000000A002400D4D617267696E732E526967687405000000000000
+ 00A002400A53697A652E57696474680500000000000000A000400B53697A652E
+ 4865696768740500000000000000A000401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A54526563
+ 74616E676C6500095374796C654E616D65060A52656374616E676C653605416C
+ 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463630363036
+ 300C4D617267696E732E4C6566740500000000000000A002400E4D617267696E
+ 732E426F74746F6D0500000000000000A002400A53697A652E57696474680500
+ 000000000000A000400B53697A652E4865696768740500000000000000A00040
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000545046300A5452656374616E676C6500095374796C
+ 654E616D65060C746F6F6C6261727374796C6505416C69676E070643656E7465
+ 720A46696C6C2E436F6C6F720709784646323532353235074869745465737408
+ 0553696465730B06426F74746F6D000A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 097846463135313531350756697369626C650800005450463007544C61796F75
+ 7400095374796C654E616D65061570726F67726573736261726572726F727374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 000033338505400B53697A652E4865696768740500000000009999E104401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000A54
+ 52656374616E676C6500095374796C654E616D65060668747261636B05416C69
+ 676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464632303230
+ 3230064C6F636B6564090748697454657374080A53697A652E57696474680500
+ 0000000033338505400B53697A652E4865696768740500000000009999E10440
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F720709784646313531353135000A5452656374616E676C6500095374796C
+ 654E616D65060A68696E64696361746F7205416C69676E07044C6566740A4669
+ 6C6C2E436F6C6F720709784646453232413241064C6F636B6564090748697454
+ 657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
+ 67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
+ 74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
+ 00000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F73
+ 6974696F6E2E59050000000000000080FF3F0A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000009999D9044014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E650000000A5452656374616E676C6500095374796C654E616D65
+ 060676747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F
+ 6C6F720709784646323032303230064C6F636B6564090748697454657374080A
+ 53697A652E576964746805000000000033338505400B53697A652E4865696768
+ 740500000000009999E104401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000A54526563
+ 74616E676C6500095374796C654E616D65060A76696E64696361746F7205416C
+ 69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846464532324132
+ 41064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
+ 0000000000000080FF3F0B4D617267696E732E546F70050000000000000080FF
+ 3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D61726769
+ 6E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805
+ 0000000000000080FF3F0A506F736974696F6E2E590500000000009999890440
+ 0A53697A652E576964746805000000000033338105400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65060F64726F707461726765747374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ ACAAD905400B53697A652E4865696768740500000000000000CF05401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508000A545265
+ 6374616E676C650005416C69676E0708436F6E74656E74730946696C6C2E4B69
+ 6E6407044E6F6E650748697454657374080A53697A652E576964746805000000
+ 0000ACAAD905400B53697A652E4865696768740500000000000000CF05401453
+ 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
+ 720708636C615768697465105374726F6B652E546869636B6E65737305000000
+ 000000008001400B5374726F6B652E4461736807044461736807585261646975
+ 730500000000000000C0024007595261646975730500000000000000C0024000
+ 05545465787400095374796C654E616D6506047465787405416C69676E070642
+ 6F74746F6D0748697454657374080C4D617267696E732E4C6566740500000000
+ 000000A002400D4D617267696E732E52696768740500000000000000A002400A
+ 506F736974696F6E2E580500000000000000A002400A506F736974696F6E2E59
+ 0500000000000000D604400A53697A652E5769647468050000000000ACAAB105
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000001254466C6F61744B6579416E696D
+ 6174696F6E00084475726174696F6E050000000000999999FE3F044B6579730E
+ 010001034B6579050000000000000080FE3F0556616C75650500000000000000
+ A003C00001034B6579050000000000000080FF3F0000044C6F6F70090C50726F
+ 70657274794E616D65060B50616464696E672E546F7010537461727446726F6D
+ 43757272656E74080754726967676572060F4973447261674F7665723D747275
+ 6500000554506174680005416C69676E070643656E74657209446174612E5061
+ 74680AC4000000100000000000000008EC8343F087A4430100000008EC834308
+ 3CFB430200000035BE7143504DF9430200000012835C43A8E6F54302000000F0
+ 674943F803F1430100000008EC8343FC0116440100000008EC8343FC51164401
+ 00000000408443FC5116440100000010689A43FC412B4401000000081CD043F8
+ 03F14302000000915DC64321E0F54302000000919DBB439643F9430200000008
+ 7CB043F833FB4301000000087CB043F087A4430100000008EC8343F087A44303
+ 00000000000000000000000A46696C6C2E436F6C6F720708636C615768697465
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000100C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
+ 005450463007544C61796F757400095374796C654E616D65061464726F707461
+ 726765746669656C647374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000000A08A07400B53697A652E4865696768740500
+ 000000000000B204401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 0A52656374616E676C653105416C69676E0706436C69656E740946696C6C2E4B
+ 696E6407044E6F6E650748697454657374080A53697A652E5769647468050000
+ 00000000A08A07400B53697A652E4865696768740500000000000000B2044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F7207097846463241383245320005545465787400095374796C654E616D6506
+ 047465787405416C69676E0706436C69656E740748697454657374080A53697A
+ 652E576964746805000000000000809A05400B53697A652E4865696768740500
+ 000000000000B204401453697A652E506C6174666F726D44656661756C740816
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 000007544C61796F757400095374796C654E616D6506074C61796F7574310541
+ 6C69676E07044C6566740A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000B204401453697A652E506C61
+ 74666F726D44656661756C74080005545061746800095374796C654E616D6506
+ 05506174683105416C69676E070643656E74657209446174612E506174680A24
+ 010000180000000000000073B8AC43C14A7843010000006D2717435849DD4302
+ 00000086CB0A431078E343020000009683ED421078E34302000000DACED44258
+ 49DD43020000009A19BC42081CD743020000009A19BC424C17CD4302000000DA
+ CED4421DEAC64301000000B4288B4385EB61430100000068D1D4426811584202
+ 000000281CBC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D0
+ 4D144102000000A886ED429CC245C002000000CCCC0A439CC245C002000000B4
+ 281743D04D14410100000016B9AC43918D4B4302000000BECFAF43A5BB514302
+ 0000009F5AB143F1D25943020000009F5AB14343EB614302000000A05AB1439C
+ 046A4302000000FACEAF43711D72430200000073B8AC43C14A78430300000073
+ B8AC43C14A78430A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080A53697A652E57696474680500000000000000F002400B53697A65
+ 2E4865696768740500000000000000F002401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D
+ 6F64650703466974000005545061746800095374796C654E616D650605506174
+ 683205416C69676E070643656E74657209446174612E506174680A2401000018
+ 0000000000000073B8AC43C14A7843010000006D2717435849DD430200000086
+ CB0A431078E343020000009683ED421078E34302000000DACED4425849DD4302
+ 0000009A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421D
+ EAC64301000000B4288B4385EB61430100000068D1D442681158420200000028
+ 1CBC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D144102
+ 000000A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D0
+ 4D14410100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F
+ 5AB143F1D25943020000009F5AB14343EB614302000000A05AB1439C046A4302
+ 000000FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C1
+ 4A78430A46696C6C2E436F6C6F720708636C6157686974650748697454657374
+ 080C4D617267696E732E4C6566740500000000000000A004400A53697A652E57
+ 696474680500000000000000F002400B53697A652E4865696768740500000000
+ 000000F002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E6508577261704D6F6465070346697400000554
+ 5061746800095374796C654E616D650605506174683305416C69676E07064365
+ 6E74657209446174612E506174680A24010000180000000000000073B8AC43C1
+ 4A7843010000006D2717435849DD430200000086CB0A431078E3430200000096
+ 83ED421078E34302000000DACED4425849DD43020000009A19BC42081CD74302
+ 0000009A19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385
+ EB61430100000068D1D4426811584202000000281CBC42CAA126420200000028
+ 1CBC42E6FBAC410200000068D1D442D04D144102000000A886ED429CC245C002
+ 000000CCCC0A439CC245C002000000B4281743D04D14410100000016B9AC4391
+ 8D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F
+ 5AB14343EB614302000000A05AB1439C046A4302000000FACEAF43711D724302
+ 00000073B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080D4D617267696E732E5269
+ 6768740500000000000000A004400A53697A652E576964746805000000000000
+ 00F002400B53697A652E4865696768740500000000000000F002401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6508577261704D6F6465070346697400000007544C61796F757400095374
+ 796C654E616D6506074C61796F75743205416C69676E070552696768740A506F
+ 736974696F6E2E580500000000000040B106400A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000B20440
+ 1453697A652E506C6174666F726D44656661756C740800055450617468000953
+ 74796C654E616D650605506174683105416C69676E070643656E746572094461
+ 74612E506174680A24010000180000000000000073B8AC43C14A784301000000
+ 6D2717435849DD430200000086CB0A431078E343020000009683ED421078E343
+ 02000000DACED4425849DD43020000009A19BC42081CD743020000009A19BC42
+ 4C17CD4302000000DACED4421DEAC64301000000B4288B4385EB614301000000
+ 68D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6FBAC41
+ 0200000068D1D442D04D144102000000A886ED429CC245C002000000CCCC0A43
+ 9CC245C002000000B4281743D04D14410100000016B9AC43918D4B4302000000
+ BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343EB6143
+ 02000000A05AB1439C046A4302000000FACEAF43711D72430200000073B8AC43
+ C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080D526F746174696F6E416E676C6505000000
+ 00000000B406400A53697A652E57696474680500000000000000F002400B5369
+ 7A652E4865696768740500000000000000F002401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
+ 704D6F64650703466974000005545061746800095374796C654E616D65060550
+ 6174683205416C69676E070643656E74657209446174612E506174680A240100
+ 00180000000000000073B8AC43C14A7843010000006D2717435849DD43020000
+ 0086CB0A431078E343020000009683ED421078E34302000000DACED4425849DD
+ 43020000009A19BC42081CD743020000009A19BC424C17CD4302000000DACED4
+ 421DEAC64301000000B4288B4385EB61430100000068D1D44268115842020000
+ 00281CBC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D14
+ 4102000000A886ED429CC245C002000000CCCC0A439CC245C002000000B42817
+ 43D04D14410100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000
+ 009F5AB143F1D25943020000009F5AB14343EB614302000000A05AB1439C046A
+ 4302000000FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC
+ 43C14A78430A46696C6C2E436F6C6F720708636C615768697465074869745465
+ 7374080C4D617267696E732E4C6566740500000000000000A004400D526F7461
+ 74696F6E416E676C650500000000000000B406400A53697A652E576964746805
+ 00000000000000F002400B53697A652E4865696768740500000000000000F002
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6508577261704D6F64650703466974000005545061746800
+ 095374796C654E616D650605506174683305416C69676E070643656E74657209
+ 446174612E506174680A24010000180000000000000073B8AC43C14A78430100
+ 00006D2717435849DD430200000086CB0A431078E343020000009683ED421078
+ E34302000000DACED4425849DD43020000009A19BC42081CD743020000009A19
+ BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385EB61430100
+ 000068D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6FB
+ AC410200000068D1D442D04D144102000000A886ED429CC245C002000000CCCC
+ 0A439CC245C002000000B4281743D04D14410100000016B9AC43918D4B430200
+ 0000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343EB
+ 614302000000A05AB1439C046A4302000000FACEAF43711D72430200000073B8
+ AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F72070863
+ 6C6157686974650748697454657374080D4D617267696E732E52696768740500
+ 000000000000A004400D526F746174696F6E416E676C650500000000000000B4
+ 06400A53697A652E57696474680500000000000000F002400B53697A652E4865
+ 696768740500000000000000F002401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F6465
+ 070346697400000000005450463007544C61796F757400095374796C654E616D
+ 65060C706F706F7665727374796C6505416C69676E070643656E746572075669
+ 7369626C6508000A5452656374616E676C6500095374796C654E616D65060262
+ 6705416C69676E0706436C69656E740A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 7846463135313531350007544C61796F757400095374796C654E616D65060763
+ 6F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
+ 680500000000000000C004400B53697A652E4865696768740500000000000000
+ C004401453697A652E506C6174666F726D44656661756C740800000D54536861
+ 646F77456666656374000844697374616E63650500000000000000C000400944
+ 6972656374696F6E0500000000000000B4054008536F66746E65737305000000
+ 0000000080FE3F074F706163697479050000000000000080FE3F0B536861646F
+ 77436F6C6F720708636C61426C61636B000000005450463007544C61796F7574
+ 00095374796C654E616D65060D706F707570626F787374796C6505416C69676E
+ 070643656E7465720A53697A652E57696474680500000000000080C406400B53
+ 697A652E4865696768740500000000000000D404401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508000A5452656374616E676C65
+ 00095374796C654E616D65060A6261636B67726F756E6405416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080A53697A652E57696474680500000000000080C406400B53697A
+ 652E4865696768740500000000000000D404401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E315374796C65084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463230323032300953746F7056616C7565070978464634
+ 30343034300754726967676572062049734D6F7573654F7665723D747275653B
+ 4973507265737365643D66616C73650E54726967676572496E76657273650621
+ 49734D6F7573654F7665723D66616C73653B4973507265737365643D66616C73
+ 6500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614
+ 436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E050000
+ 00000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F
+ 720A537461727456616C756507097846463430343034300953746F7056616C75
+ 6507097846463241383245320754726967676572062049734D6F7573654F7665
+ 723D747275653B4973507265737365643D747275653B0E54726967676572496E
+ 7665727365062049734D6F7573654F7665723D747275653B4973507265737365
+ 643D66616C736500000007544C61796F75740005416C69676E07055269676874
+ 0A506F736974696F6E2E580500000000000080B506400A53697A652E57696474
+ 680500000000000000F002400B53697A652E4865696768740500000000000000
+ D404401453697A652E506C6174666F726D44656661756C740800055450617468
+ 0005416C69676E070643656E74657209446174612E506174680A400000000500
+ 000000000000000000000000803F010000000000803F0000803F010000000000
+ 003F0000000001000000000000000000803F0300000000000000000000000A46
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080B4D6172
+ 67696E732E546F700500000000000000E001C00A53697A652E57696474680500
+ 0000000000008002400B53697A652E4865696768740500000000000000800140
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E6500000554506174680005416C69676E070643656E74657209
+ 446174612E506174680A34000000040000000000000000000000000000000100
+ 00000000803F00000000010000000000003F0000803F03000000000000000000
+ 00000A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0B4D617267696E732E546F700500000000000000C001400A53697A652E576964
+ 746805000000000000008002400B53697A652E48656967687405000000000000
+ 008001401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6500000005545465787400095374796C654E616D65
+ 06047465787405416C69676E0706436C69656E740748697454657374080C4D61
+ 7267696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A
+ 53697A652E57696474680500000000000080B306400B53697A652E4865696768
+ 740500000000000000CC04401453697A652E506C6174666F726D44656661756C
+ 7408165465787453657474696E67732E466F6E74436F6C6F720708636C615768
+ 697465000000545046300A5452656374616E676C6500095374796C654E616D65
+ 06147374617475736261726E6F677269707374796C6505416C69676E07064365
+ 6E7465720C436C69704368696C6472656E090A46696C6C2E436F6C6F72070978
+ 46463235323532350553696465730B03546F70000A53697A652E576964746805
+ 00000000000000F004400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F7207097846463135313531350756697369626C65080000545046300754
+ 4C61796F757400095374796C654E616D650613736D616C6C7363726F6C6C6261
+ 727374796C6505416C69676E070643656E7465720756697369626C6508000654
+ 547261636B00095374796C654E616D65060668747261636B05416C69676E0706
+ 436C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F7269
+ 7A6F6E74616C0A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C626172
+ 68747261636B7374796C6500000654547261636B00095374796C654E616D6506
+ 0676747261636B05416C69676E0706436C69656E74064C6F636B6564090B4F72
+ 69656E746174696F6E070A486F72697A6F6E74616C0A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F
+ 6F6B757006147363726F6C6C62617276747261636B7374796C65000000545046
+ 3007544C61796F757400095374796C654E616D65060D73706C69747465727374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000A904400B53697A652E4865696768740500000000000080C105401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463330
+ 333033300748697454657374080553696465730B044C65667405526967687400
+ 0A53697A652E57696474680500000000000000A904400B53697A652E48656967
+ 68740500000000000080C105401453697A652E506C6174666F726D4465666175
+ 6C74080C5374726F6B652E436F6C6F720709784646313531353135000007544C
+ 61796F757400095374796C654E616D6506064C61796F757405416C69676E0706
+ 436C69656E740A53697A652E57696474680500000000000000A904400B53697A
+ 652E4865696768740500000000000080C105401453697A652E506C6174666F72
+ 6D44656661756C74080007544C61796F757400095374796C654E616D65060467
+ 72697005416C69676E070A5665727443656E746572064C6F636B6564090A506F
+ 736974696F6E2E5905000000000000008004400A53697A652E57696474680500
+ 000000000000A904400B53697A652E4865696768740500000000000000800440
+ 1453697A652E506C6174666F726D44656661756C7408000754436972636C6500
+ 095374796C654E616D650607436972636C653305416C69676E070643656E7465
+ 720A46696C6C2E436F6C6F720709784646343034303430074869745465737408
+ 0E4D617267696E732E426F74746F6D0500000000000000A003400A53697A652E
+ 57696474680500000000000000E001400B53697A652E48656967687405000000
+ 00000000E001401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F72070978464631353135313500000754436972636C6500
+ 095374796C654E616D650607436972636C653205416C69676E070643656E7465
+ 720A46696C6C2E436F6C6F720709784646343034303430074869745465737408
+ 0B4D617267696E732E546F700500000000000000A003400A53697A652E576964
+ 74680500000000000000E001400B53697A652E48656967687405000000000000
+ 00E001401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F72070978464631353135313500000754436972636C6500095374
+ 796C654E616D650607436972636C653105416C69676E070643656E7465720A46
+ 696C6C2E436F6C6F7207097846463430343034300748697454657374080A5369
+ 7A652E57696474680500000000000000E001400B53697A652E48656967687405
+ 00000000000000E001401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F7207097846463135313531350000000000545046
+ 3007544C61796F757400095374796C654E616D650610636C6F7365627574746F
+ 6E7374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 000A5452656374616E676C6500095374796C654E616D65060B636C6F73656275
+ 74746F6E05416C69676E0706436C69656E740A46696C6C2E436F6C6F72070978
+ 46463230323032300748697454657374080A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463230323032300953746F70
+ 56616C756507097846464646363135370754726967676572062049734D6F7573
+ 654F7665723D747275653B4973507265737365643D66616C73650E5472696767
+ 6572496E7665727365062149734D6F7573654F7665723D66616C73653B497350
+ 7265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C6508
+ 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978464646463631
+ 35370953746F7056616C75650709784646453234463435075472696767657206
+ 1F49734D6F7573654F7665723D747275653B4973507265737365643D74727565
+ 0E54726967676572496E7665727365062049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C736500000005545061746800095374796C
+ 654E616D650605506174683105416C69676E070643656E74657209446174612E
+ 506174680AC400000010000000000000000000A0C00000704101000000000070
+ 410000A0C001000000000048420000F041010000000000AA420000A0C0010000
+ 000000D242000070410100000000008C4200004842010000000000D2420000B4
+ 42010000000000AA420000DC42020000003BDF34429E6F8C4202000000FE547D
+ 427FAAB04202000000000048420000964201000000000070410000DC42010000
+ 000000A0C00000B442010000000000F04100005C42010000000000A0C0000070
+ 41030000000000A0C0000070410A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080A53697A652E57696474680500000000000000A002
+ 400B53697A652E4865696768740500000000000000A002401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0000005450463007544C61796F757400095374796C654E616D65060E6D617862
+ 7574746F6E7374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D6506096D6178
+ 627574746F6E05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000C804400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650614436F6C6F72416E696D6174696F6E315374796C65084475726174
+ 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646323032303230095374
+ 6F7056616C756507097846463241383245320754726967676572062049734D6F
+ 7573654F7665723D747275653B4973507265737365643D66616C73650E547269
+ 67676572496E7665727365062149734D6F7573654F7665723D66616C73653B49
+ 73507265737365643D66616C736500000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650614436F6C6F72416E696D6174696F6E325374796C
+ 65084475726174696F6E05000000000000000000000C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463241
+ 383245320953746F7056616C7565070978464631373537394307547269676765
+ 72061F49734D6F7573654F7665723D747275653B4973507265737365643D7472
+ 75650E54726967676572496E7665727365062049734D6F7573654F7665723D74
+ 7275653B4973507265737365643D66616C736500000005545061746800095374
+ 796C654E616D650605506174683105416C69676E070643656E74657209446174
+ 612E506174680A5800000007000000000000000000C8420000C8420100000000
+ 002F440000C8420100000000002F4400002F4401000000008009440080094401
+ 0000000080094400007A430100000000007A4300007A43030000000000C84200
+ 00C8420A46696C6C2E436F6C6F720708636C6157686974650748697454657374
+ 080A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000A002401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C
+ 61796F757400095374796C654E616D65060E726573627574746F6E7374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C803401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508000A54526563
+ 74616E676C6500095374796C654E616D650609726573627574746F6E05416C69
+ 676E0706436C69656E740A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C803401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F
+ 72416E696D6174696F6E315374796C65084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463230323032300953746F7056616C7565070978
+ 46463241383245320754726967676572062049734D6F7573654F7665723D7472
+ 75653B4973507265737365643D66616C73650E54726967676572496E76657273
+ 65062149734D6F7573654F7665723D66616C73653B4973507265737365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650614436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463241383245320953746F7056
+ 616C756507097846463137353739430754726967676572061F49734D6F757365
+ 4F7665723D747275653B4973507265737365643D747275650E54726967676572
+ 496E7665727365062049734D6F7573654F7665723D747275653B497350726573
+ 7365643D66616C736500000005545061746800095374796C654E616D65060550
+ 6174683105416C69676E070643656E74657209446174612E506174680A580000
+ 0007000000000000000000C8420000C8420100000000002F440000C842010000
+ 0000002F4400002F44010000000080094400800944010000000080094400007A
+ 430100000000007A4300007A43030000000000C8420000C8420A46696C6C2E43
+ 6F6C6F720708636C6157686974650748697454657374080D526F746174696F6E
+ 416E676C650500000000000000B406400A53697A652E57696474680500000000
+ 000000A002400B53697A652E4865696768740500000000000000A00240145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000005450463007544C61796F757400095374796C654E616D6506
+ 0E6D696E627574746F6E7374796C6505416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508000A5452656374616E676C6500095374796C654E616D65
+ 06096D696E627574746F6E05416C69676E0706436C69656E740A46696C6C2E43
+ 6F6C6F7207097846463230323032300748697454657374080A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C6508
+ 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978464632303230
+ 32300953746F7056616C75650709784646324138324532075472696767657206
+ 2049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
+ 650E54726967676572496E7665727365062149734D6F7573654F7665723D6661
+ 6C73653B4973507265737365643D66616C736500000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E
+ 325374796C65084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463241383245320953746F7056616C756507097846463137353739430754
+ 726967676572061F49734D6F7573654F7665723D747275653B49735072657373
+ 65643D747275650E54726967676572496E7665727365062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650000000554506174
+ 6800095374796C654E616D650605506174683105416C69676E070643656E7465
+ 7209446174612E506174680A40000000050000000000000000002F4400800944
+ 0100000000002F4400002F44010000000000C84200002F44010000000000C842
+ 008009440300000000002F44008009440A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080B4D617267696E732E546F70050000000000
+ 0000A002400D526F746174696F6E416E676C650500000000000000B406400A53
+ 697A652E57696474680500000000000000A002400B53697A652E486569676874
+ 0500000000000000C000401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C61796F
+ 757400095374796C654E616D65060F746F6F6C77696E646F777374796C650541
+ 6C69676E070643656E7465720A53697A652E576964746805000000000056D5AF
+ 07400B53697A652E4865696768740500000000000000B306401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C6500095374796C654E616D6506046D61736B05416C69676E0708436F6E
+ 74656E74730A46696C6C2E436F6C6F7207097846463130313031300A53697A65
+ 2E576964746805000000000056D5AF07400B53697A652E486569676874050000
+ 0000000000B306401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E650756697369626C6508000007544C6179
+ 6F757400095374796C654E616D6506046C65667405416C69676E07084D6F7374
+ 4C656674064C6F636B6564090A506F736974696F6E2E590500000000000000C8
+ 03400A53697A652E57696474680500000000000000A001400B53697A652E4865
+ 6967687405000000000000009A06401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C650005416C69676E07084D6F73744C65
+ 66740A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080553696465730B044C656674055269676874000A53697A652E576964746805
+ 00000000000000A001400B53697A652E48656967687405000000000000009506
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F72070978464631353135313500000A5452656374616E676C6500095374
+ 796C654E616D65060A52656374616E676C653105416C69676E070A4D6F737442
+ 6F74746F6D13456E61626C6544726167486967686C69676874080A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A506F73697469
+ 6F6E2E5905000000000000009506400553696465730B044C65667406426F7474
+ 6F6D000A53697A652E57696474680500000000000000A001400B53697A652E48
+ 65696768740500000000000000A001401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350007
+ 544C61796F757400095374796C654E616D6506074C61796F75743305416C6967
+ 6E07094D6F737452696768740A506F736974696F6E2E58050000000000000080
+ 01400A53697A652E5769647468050000000000000080FF3F0B53697A652E4865
+ 696768740500000000000000A001401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D65060A5265
+ 6374616E676C653105416C69676E0703546F700A46696C6C2E436F6C6F720709
+ 7846463135313531350748697454657374080A53697A652E5769647468050000
+ 000000000080FF3F0B53697A652E486569676874050000000000000080FF3F14
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000000000007544C61796F757400095374796C654E616D6506
+ 05726967687405416C69676E07094D6F73745269676874064C6F636B6564090A
+ 506F736974696F6E2E580500000000005655AD07400A506F736974696F6E2E59
+ 0500000000000000C803400A53697A652E57696474680500000000000000A001
+ 400B53697A652E48656967687405000000000000009A06401453697A652E506C
+ 6174666F726D44656661756C7408000A5452656374616E676C650005416C6967
+ 6E07094D6F737452696768740A46696C6C2E436F6C6F72070978464632303230
+ 32300748697454657374080553696465730B044C656674055269676874000A53
+ 697A652E57696474680500000000000000A001400B53697A652E486569676874
+ 05000000000000009506401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F72070978464631353135313500000A54526563
+ 74616E676C6500095374796C654E616D65060A52656374616E676C653105416C
+ 69676E070A4D6F7374426F74746F6D13456E61626C6544726167486967686C69
+ 676874080A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080A506F736974696F6E2E5905000000000000009506400553696465730B
+ 06426F74746F6D055269676874000A53697A652E576964746805000000000000
+ 00A001400B53697A652E4865696768740500000000000000A001401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 7846463135313531350007544C61796F757400095374796C654E616D6506074C
+ 61796F75743305416C69676E07084D6F73744C6566740A53697A652E57696474
+ 68050000000000000080FF3F0B53697A652E4865696768740500000000000000
+ A001401453697A652E506C6174666F726D44656661756C7408000A5452656374
+ 616E676C6500095374796C654E616D65060A52656374616E676C653105416C69
+ 676E0703546F700A46696C6C2E436F6C6F720709784646313531353135074869
+ 7454657374080A53697A652E5769647468050000000000000080FF3F0B53697A
+ 652E486569676874050000000000000080FF3F1453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000000
+ 0A5452656374616E676C650005416C69676E07074D6F7374546F700A46696C6C
+ 2E436F6C6F720709784646323032303230064C6F636B65640907486974546573
+ 74080A53697A652E576964746805000000000056D5AF07400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000754
+ 4C61796F757400095374796C654E616D65060763617074696F6E05416C69676E
+ 0708436F6E74656E7473064C6F636B6564090748697454657374090A53697A65
+ 2E576964746805000000000056D5AF07400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F75740005416C69676E0706436C69656E74064C6F636B6564090C
+ 4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E
+ 546F70050000000000000080FF3F0D4D617267696E732E526967687405000000
+ 0000000080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF
+ 3F0A53697A652E576964746805000000000056D5AE07400B53697A652E486569
+ 6768740500000000000000B803401453697A652E506C6174666F726D44656661
+ 756C74080007544C61796F75740005416C69676E07044C656674064C6F636B65
+ 64090A53697A652E576964746805000000000000009002400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C7408000007544C61796F757400095374796C654E616D65060773797362
+ 746E7305416C69676E0706436C69656E74064C6F636B6564090A53697A652E57
+ 696474680500000000005655AA07400B53697A652E4865696768740500000000
+ 000000B803401453697A652E506C6174666F726D44656661756C7408000C5453
+ 70656564427574746F6E00095374796C654E616D650605636C6F736505416C69
+ 676E07055269676874064C6F636B6564090A506F736974696F6E2E5805000000
+ 000056D59D07400A53697A652E57696474680500000000000000C803400B5369
+ 7A652E4865696768740500000000000000B803401453697A652E506C6174666F
+ 726D44656661756C74080B5374796C654C6F6F6B75700610636C6F7365627574
+ 746F6E7374796C65000005545465787400095374796C654E616D650605746974
+ 6C6505416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 080A53697A652E576964746805000000000056D59D07400B53697A652E486569
+ 6768740500000000000000B803401453697A652E506C6174666F726D44656661
+ 756C7408045465787406055469746C65165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465000000000007544C61796F75740009
+ 5374796C654E616D650606636C69656E7405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374090A53697A652E57696474680500000000
+ 0056D5AA07400B53697A652E4865696768740500000000000000950640145369
+ 7A652E506C6174666F726D44656661756C7408000007544C61796F7574000953
+ 74796C654E616D650606626F74746F6D05416C69676E0706426F74746F6D064C
+ 6F636B6564090A506F736974696F6E2E580500000000000000A001400A506F73
+ 6974696F6E2E590500000000000000AE06400A53697A652E5769647468050000
+ 00000056D5AA07400B53697A652E4865696768740500000000000000A0014014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 6500095374796C654E616D6506047265637405416C69676E0706426F74746F6D
+ 0A46696C6C2E436F6C6F7207097846463230323032300553696465730B03546F
+ 7006426F74746F6D000A53697A652E576964746805000000000056D5AA07400B
+ 53697A652E4865696768740500000000000000A001401453697A652E506C6174
+ 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
+ 31353135000000005450463007544C61796F757400095374796C654E616D6506
+ 1177696E646F77626F726465727374796C6505416C69676E070643656E746572
+ 0A53697A652E576964746805000000000056D5AF07400B53697A652E48656967
+ 68740500000000000000B306401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508000A5452656374616E676C6500095374796C654E
+ 616D6506046D61736B05416C69676E0708436F6E74656E74730A46696C6C2E43
+ 6F6C6F7207097846463130313031300A53697A652E5769647468050000000000
+ 56D5AF07400B53697A652E4865696768740500000000000000B306401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E650756697369626C6508000007544C61796F757400095374796C654E61
+ 6D6506046C65667405416C69676E07084D6F73744C656674064C6F636B656409
+ 0A506F736974696F6E2E590500000000000000F003400A53697A652E57696474
+ 680500000000000000A001400B53697A652E4865696768740500000000000000
+ 9506401453697A652E506C6174666F726D44656661756C7408000A5452656374
+ 616E676C650005416C69676E07084D6F73744C6566740A46696C6C2E436F6C6F
+ 7207097846463230323032300748697454657374080553696465730B044C6566
+ 74055269676874000A53697A652E57696474680500000000000000A001400B53
+ 697A652E48656967687405000000000000009006401453697A652E506C617466
+ 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
+ 35313500000A5452656374616E676C6500095374796C654E616D65060A526563
+ 74616E676C653105416C69676E070A4D6F7374426F74746F6D13456E61626C65
+ 44726167486967686C69676874080A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080A506F736974696F6E2E590500000000000000
+ 9006400553696465730B044C65667406426F74746F6D000A53697A652E576964
+ 74680500000000000000A001400B53697A652E48656967687405000000000000
+ 00A001401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F7207097846463135313531350007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743305416C69676E07094D6F73745269676874
+ 0A506F736974696F6E2E5805000000000000008001400A53697A652E57696474
+ 68050000000000000080FF3F0B53697A652E4865696768740500000000000000
+ A001401453697A652E506C6174666F726D44656661756C7408000A5452656374
+ 616E676C6500095374796C654E616D65060A52656374616E676C653105416C69
+ 676E0703546F700A46696C6C2E436F6C6F720709784646313531353135074869
+ 7454657374080A53697A652E5769647468050000000000000080FF3F0B53697A
+ 652E486569676874050000000000000080FF3F1453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000000
+ 07544C61796F757400095374796C654E616D650605726967687405416C69676E
+ 07094D6F73745269676874064C6F636B6564090A506F736974696F6E2E580500
+ 000000005655AD07400A506F736974696F6E2E590500000000000000F003400A
+ 53697A652E57696474680500000000000000A001400B53697A652E4865696768
+ 7405000000000000009506401453697A652E506C6174666F726D44656661756C
+ 7408000A5452656374616E676C650005416C69676E07094D6F73745269676874
+ 0A46696C6C2E436F6C6F72070978464632303230323007486974546573740805
+ 53696465730B044C656674055269676874000A53697A652E5769647468050000
+ 0000000000A001400B53697A652E486569676874050000000000000090064014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F72070978464631353135313500000A5452656374616E676C6500095374796C
+ 654E616D65060A52656374616E676C653105416C69676E070A4D6F7374426F74
+ 746F6D13456E61626C6544726167486967686C69676874080A46696C6C2E436F
+ 6C6F7207097846463230323032300748697454657374080A506F736974696F6E
+ 2E5905000000000000009006400553696465730B06426F74746F6D0552696768
+ 74000A53697A652E57696474680500000000000000A001400B53697A652E4865
+ 696768740500000000000000A001401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646313531353135000754
+ 4C61796F757400095374796C654E616D6506074C61796F75743305416C69676E
+ 07084D6F73744C6566740A53697A652E5769647468050000000000000080FF3F
+ 0B53697A652E4865696768740500000000000000A001401453697A652E506C61
+ 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
+ 4E616D65060A52656374616E676C653105416C69676E0703546F700A46696C6C
+ 2E436F6C6F7207097846463135313531350748697454657374080A53697A652E
+ 5769647468050000000000000080FF3F0B53697A652E48656967687405000000
+ 0000000080FF3F1453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6500000000000A5452656374616E676C6500
+ 05416C69676E07074D6F7374546F700A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 6805000000000056D5AF07400B53697A652E4865696768740500000000000000
+ F003401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F7207097846463135313531350007544C61796F757400095374796C
+ 654E616D65060763617074696F6E05416C69676E0708436F6E74656E7473064C
+ 6F636B6564090748697454657374090A53697A652E5769647468050000000000
+ 56D5AF07400B53697A652E4865696768740500000000000000F003401453697A
+ 652E506C6174666F726D44656661756C7408000007544C61796F75740005416C
+ 69676E0706436C69656E74064C6F636B6564090C4D617267696E732E4C656674
+ 050000000000000080FF3F0B4D617267696E732E546F70050000000000000080
+ FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267
+ 696E732E426F74746F6D050000000000000080FF3F0A53697A652E5769647468
+ 05000000000056D5AE07400B53697A652E4865696768740500000000000000E0
+ 03401453697A652E506C6174666F726D44656661756C74080007544C61796F75
+ 740005416C69676E07044C656674064C6F636B6564090A53697A652E57696474
+ 6805000000000000009002400B53697A652E4865696768740500000000000000
+ E003401453697A652E506C6174666F726D44656661756C7408000007544C6179
+ 6F757400095374796C654E616D65060469636F6E064C6F636B6564090A506F73
+ 6974696F6E2E5805000000000000009002400A506F736974696F6E2E59050000
+ 0000000000E001400A53697A652E57696474680500000000000000C803400B53
+ 697A652E4865696768740500000000000000A803401453697A652E506C617466
+ 6F726D44656661756C7408000007544C61796F757400095374796C654E616D65
+ 060773797362746E7305416C69676E0706436C69656E74064C6F636B6564090A
+ 53697A652E57696474680500000000005655AA07400B53697A652E4865696768
+ 740500000000000000E003401453697A652E506C6174666F726D44656661756C
+ 7408000C545370656564427574746F6E00095374796C654E616D650605636C6F
+ 736505416C69676E07055269676874064C6F636B6564090A506F736974696F6E
+ 2E5805000000000056559107400A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000E003401453697A652E
+ 506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700610636C
+ 6F7365627574746F6E7374796C6500000C545370656564427574746F6E000953
+ 74796C654E616D6506036D617805416C69676E07055269676874064C6F636B65
+ 64090A506F736974696F6E2E5805000000000056558207400A53697A652E5769
+ 6474680500000000000000F003400B53697A652E486569676874050000000000
+ 0000E003401453697A652E506C6174666F726D44656661756C74080B5374796C
+ 654C6F6F6B7570060E6D6178627574746F6E7374796C6500000C545370656564
+ 427574746F6E00095374796C654E616D65060372657305416C69676E07055269
+ 676874064C6F636B6564090A506F736974696F6E2E58050000000000ACAAE606
+ 400A53697A652E57696474680500000000000000F003400B53697A652E486569
+ 6768740500000000000000E003401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B7570060E726573627574746F6E7374796C65
+ 00000C545370656564427574746F6E00095374796C654E616D6506036D696E05
+ 416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E5805
+ 0000000000ACAAC806400A53697A652E57696474680500000000000000F00340
+ 0B53697A652E4865696768740500000000000000E003401453697A652E506C61
+ 74666F726D44656661756C74080B5374796C654C6F6F6B7570060E6D696E6275
+ 74746F6E7374796C65000005545465787400095374796C654E616D6506057469
+ 746C6505416C69676E0706436C69656E74064C6F636B65640907486974546573
+ 74080A53697A652E5769647468050000000000ACAAC806400B53697A652E4865
+ 696768740500000000000000E003401453697A652E506C6174666F726D446566
+ 61756C7408045465787406055469746C65165465787453657474696E67732E46
+ 6F6E74436F6C6F720708636C615768697465000000000007544C61796F757400
+ 095374796C654E616D650606636C69656E7405416C69676E0706436C69656E74
+ 064C6F636B6564090748697454657374090A53697A652E576964746805000000
+ 000056D5AA07400B53697A652E48656967687405000000000000009006401453
+ 697A652E506C6174666F726D44656661756C7408000007544C61796F75740009
+ 5374796C654E616D650606626F74746F6D05416C69676E0706426F74746F6D06
+ 4C6F636B6564090A506F736974696F6E2E580500000000000000A001400A506F
+ 736974696F6E2E590500000000000000AE06400A53697A652E57696474680500
+ 0000000056D5AA07400B53697A652E4865696768740500000000000000A00140
+ 1453697A652E506C6174666F726D44656661756C7408000A5452656374616E67
+ 6C6500095374796C654E616D6506047265637405416C69676E0706426F74746F
+ 6D0A46696C6C2E436F6C6F720709784646323032303230074869745465737408
+ 0553696465730B03546F7006426F74746F6D000A53697A652E57696474680500
+ 0000000056D5AA07400B53697A652E4865696768740500000000000000A00140
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F720709784646313531353135000000005450463007544C61796F75740009
+ 5374796C654E616D650610726164696F627574746F6E7374796C6505416C6967
+ 6E070643656E7465720A53697A652E57696474680500000000000000F205400B
+ 53697A652E4865696768740500000000000000A803401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C65080007544C61796F75740005
+ 416C69676E07044C6566740A53697A652E57696474680500000000000000A803
+ 400B53697A652E4865696768740500000000000000A803401453697A652E506C
+ 6174666F726D44656661756C7408000854456C6C6970736500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E070643656E7465720A4669
+ 6C6C2E436F6C6F720709784646323032303230064C6F636B6564090748697454
+ 657374080A53697A652E57696474680500000000000000F002400B53697A652E
+ 4865696768740500000000000000F002401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 0854456C6C6970736500095374796C654E616D650609636865636B6D61726B05
+ 416C69676E0706436C69656E740A46696C6C2E436F6C6F720709784646324138
+ 324532064C6F636B656409074869745465737408074F70616369747905000000
+ 000000000000000C4D617267696E732E4C65667405000000000000008000400B
+ 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
+ 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
+ 0000000000008000400A53697A652E57696474680500000000000000B002400B
+ 53697A652E4865696768740500000000000000B002401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
+ 54466C6F6174416E696D6174696F6E00095374796C654E616D65061A6F706163
+ 697479436865636B6D61726B416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D6506074F706163697479
+ 0A537461727456616C756505000000000000000000000953746F7056616C7565
+ 050000000000000080FF3F0754726967676572060E4973436865636B65643D74
+ 7275650E54726967676572496E7665727365060F4973436865636B65643D6661
+ 6C73650000000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 65061A726164696F627574746F6E436F6C6F72416E696D6174696F6E31084475
+ 726174696F6E050000000000000000000007496E7665727365090C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572061049734D6F7573654F7665723D747275650E54726967676572
+ 496E7665727365061149734D6F7573654F7665723D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E315374796C65084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461
+ 727456616C756507097846463135313531350953746F7056616C756507097846
+ 463241383245320754726967676572060E4973436865636B65643D747275650E
+ 54726967676572496E7665727365060F4973436865636B65643D66616C736500
+ 00000005545465787400095374796C654E616D6506047465787405416C69676E
+ 0706436C69656E74064C6F636B6564090748697454657374080A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000A803401453697A652E506C6174666F726D44656661756C740816546578
+ 7453657474696E67732E466F6E74436F6C6F720708636C615768697465000000
+ 5450463007544C61796F757400095374796C654E616D650618756C63656E7465
+ 72726164696F627574746F6E7374796C6505416C69676E070643656E7465720A
+ 53697A652E57696474680500000000005655FB05400B53697A652E4865696768
+ 740500000000000000A004401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C65080007544C61796F75740005416C69676E0706426F74
+ 746F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E57
+ 696474680500000000005655FB05400B53697A652E4865696768740500000000
+ 000000C001401453697A652E506C6174666F726D44656661756C7408000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0708436F6E74656E747307436F726E6572730B07546F704C656674
+ 0A426F74746F6D4C656674000A46696C6C2E436F6C6F72070978464632303230
+ 3230064C6F636B6564090748697454657374080A53697A652E57696474680500
+ 000000005655FB05400B53697A652E4865696768740500000000000000C00140
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F720709784646313531353135000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D6506216261636B67726F756E64556C427574746F6E436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 0007496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572061049734D6F7573654F
+ 7665723D747275650E54726967676572496E7665727365061149734D6F757365
+ 4F7665723D66616C736500000A5452656374616E676C6500095374796C654E61
+ 6D650609636865636B6D61726B05416C69676E0708436F6E74656E747307436F
+ 726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C6C2E
+ 436F6C6F720709784646324138324532064C6F636B6564090748697454657374
+ 08074F70616369747905000000000000000000000C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
+ 680500000000005655F705400B53697A652E4865696768740500000000000000
+ 8001401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00095374
+ 796C654E616D65061A636865636B6D61726B4F706163697479416E696D617469
+ 6F6E31084475726174696F6E05000000000000000000000C50726F7065727479
+ 4E616D6506074F7061636974790A537461727456616C75650500000000000000
+ 0000000953746F7056616C7565050000000000000080FF3F0754726967676572
+ 060E4973436865636B65643D747275650E54726967676572496E766572736506
+ 0F4973436865636B65643D66616C736500000000000554546578740009537479
+ 6C654E616D6506047465787405416C69676E0706436C69656E74064C6F636B65
+ 64090748697454657374080A53697A652E57696474680500000000005655FB05
+ 400B53697A652E48656967687405000000000000008804401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D650617756C7269676874726164696F627574746F6E737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000A00440145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C65080007544C
+ 61796F75740005416C69676E0706426F74746F6D0A506F736974696F6E2E5905
+ 000000000000008804400A53697A652E57696474680500000000005655FB0540
+ 0B53697A652E4865696768740500000000000000C001401453697A652E506C61
+ 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 07436F726E6572730B08546F7052696768740B426F74746F6D5269676874000A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080A53697A652E57696474680500000000005655FB05400B53697A
+ 652E4865696768740500000000000000C001401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 35000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65062162
+ 61636B67726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E31
+ 084475726174696F6E050000000000000000000007496E7665727365090C5072
+ 6F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75
+ 6507097846463230323032300953746F7056616C756507097846463430343034
+ 300754726967676572061049734D6F7573654F7665723D747275650E54726967
+ 676572496E7665727365061149734D6F7573654F7665723D66616C736500000A
+ 5452656374616E676C6500095374796C654E616D650609636865636B6D61726B
+ 05416C69676E0708436F6E74656E747307436F726E6572730B08546F70526967
+ 68740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978464632
+ 4138324532064C6F636B656409074869745465737408074F7061636974790500
+ 0000000000000000000C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000005655F705
+ 400B53697A652E48656967687405000000000000008001401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000F54466C6F6174416E696D6174696F6E00095374796C654E616D65061A6368
+ 65636B6D61726B4F706163697479416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D6506074F70616369
+ 74790A537461727456616C756505000000000000000000000953746F7056616C
+ 7565050000000000000080FF3F0754726967676572060E4973436865636B6564
+ 3D747275650E54726967676572496E7665727365060F4973436865636B65643D
+ 66616C7365000000000005545465787400095374796C654E616D650604746578
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
+ 687405000000000000008804401453697A652E506C6174666F726D4465666175
+ 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
+ 686974650000005450463007544C61796F757400095374796C654E616D650616
+ 756C6C656674726164696F627574746F6E7374796C6505416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000005655FB05400B53697A652E
+ 4865696768740500000000000000A004401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C65080007544C61796F75740005416C69676E
+ 0706426F74746F6D0A506F736974696F6E2E5905000000000000008804400A53
+ 697A652E57696474680500000000005655FB05400B53697A652E486569676874
+ 0500000000000000C001401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
+ 6F756E6405416C69676E0708436F6E74656E747307436F726E6572730B07546F
+ 704C6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080A53697A652E5769
+ 6474680500000000005655FB05400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F720709784646313531353135000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D6506216261636B67726F756E64556C427574
+ 746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000
+ 00000000000007496E7665727365090C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463430343034300754726967676572061049734D
+ 6F7573654F7665723D747275650E54726967676572496E766572736506114973
+ 4D6F7573654F7665723D66616C736500000A5452656374616E676C6500095374
+ 796C654E616D650609636865636B6D61726B05416C69676E0708436F6E74656E
+ 747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A
+ 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
+ 745465737408074F70616369747905000000000000000000000C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E57696474680500000000005655F705400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D65061A636865636B6D61726B4F706163697479416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C73650000000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000880440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D65061070726F67726573736261727374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000033
+ 338505400B53697A652E4865696768740500000000009999E104401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508000A54526563
+ 74616E676C6500095374796C654E616D65060668747261636B05416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F72070978464632303230323006
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 0033338505400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000A5452656374616E676C6500095374796C654E61
+ 6D65060A68696E64696361746F7205416C69676E07044C6566740A46696C6C2E
+ 436F6C6F720709784646324138324532064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267696E
+ 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
+ 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
+ 80FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F73697469
+ 6F6E2E59050000000000000080FF3F0A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000009999D904401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E650000000A5452656374616E676C6500095374796C654E616D65060676
+ 747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 0709784646323032303230064C6F636B6564090748697454657374080A53697A
+ 652E576964746805000000000033338505400B53697A652E4865696768740500
+ 000000009999E104401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646313531353135000A5452656374616E
+ 676C6500095374796C654E616D65060A76696E64696361746F7205416C69676E
+ 0706426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A506F736974696F6E2E5805000000
+ 0000000080FF3F0A506F736974696F6E2E5905000000000099998904400A5369
+ 7A652E576964746805000000000033338105400B53697A652E48656967687405
+ 00000000000000A803401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F
+ 757400095374796C654E616D65060D657870616E6465727374796C6505416C69
+ 676E070643656E7465720A53697A652E576964746805000000000000C0840740
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060B626772656374616E676C6505416C69676E
+ 0708436F6E74656E74730C436C69704368696C6472656E090A46696C6C2E436F
+ 6C6F720709784646324432443244064C6F636B6564090748697454657374080A
+ 53697A652E576964746805000000000000C08407400B53697A652E4865696768
+ 740500000000000000C803401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F7207097846463135313531350007544C6179
+ 6F757400095374796C654E616D6506074C61796F75743305416C69676E070354
+ 6F700A53697A652E576964746805000000000000C08407400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080007544C61796F757400095374796C654E616D6506074C61796F75
+ 743405416C69676E0708436F6E74656E74730A53697A652E5769647468050000
+ 00000000C08407400B53697A652E4865696768740500000000000000C8034014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 6500095374796C654E616D65060A52656374616E676C653205416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F720709784646323532353235064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 00C08407400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 0978464631353135313500000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653105416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646313531353135064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000000C08407400B53697A65
+ 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F
+ 6174416E696D6174696F6E00095374796C654E616D650614466C6F6174416E69
+ 6D6174696F6E315374796C65084475726174696F6E050000000000CDCCCCFB3F
+ 0D496E746572706F6C6174696F6E070843697263756C61720C50726F70657274
+ 794E616D6506075363616C652E580A537461727456616C756505000000000000
+ 0080FF3F0953746F7056616C7565050000000000000000000007547269676765
+ 72060F4973457870616E6465643D747275650E54726967676572496E76657273
+ 6506104973457870616E6465643D66616C73650000000007544C61796F757400
+ 095374796C654E616D6506074C61796F75743305416C69676E0708436F6E7465
+ 6E74730A53697A652E576964746805000000000000C08407400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080005545465787400095374796C654E616D650604746578740541
+ 6C69676E07044C656674084175746F53697A65090A436C6970506172656E7409
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 000000000000A002400A506F736974696F6E2E580500000000000000A002400A
+ 53697A652E576964746805000000000000B8C703400B53697A652E4865696768
+ 740500000000000000C803401453697A652E506C6174666F726D44656661756C
+ 7408165465787453657474696E67732E466F6E74436F6C6F720708636C615768
+ 697465165465787453657474696E67732E486F727A416C69676E07074C656164
+ 696E670000000F54457870616E646572427574746F6E00095374796C654E616D
+ 650606627574746F6E05416C69676E07055269676874064C6F636B6564090A50
+ 6F736974696F6E2E580500000000000080F506400A53697A652E576964746805
+ 00000000000000A003400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C7408000000000054504630
+ 07544C61796F757400095374796C654E616D650613657870616E646572627574
+ 746F6E7374796C6505416C69676E070643656E7465720B4D617267696E732E54
+ 6F70050000000000000080FF3F0A53697A652E57696474680500000000000000
+ B003400B53697A652E4865696768740500000000000000B003401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C650800055450617468
+ 00095374796C654E616D650605506174683105416C69676E070643656E746572
+ 09446174612E506174680A3400000004000000000000000000C8420000C84201
+ 000000000096430000C842010000000000484300009643030000000000C84200
+ 00C8420A46696C6C2E436F6C6F720708636C6157686974650748697454657374
+ 080D526F746174696F6E416E676C650500000000000000B405400A53697A652E
+ 57696474680500000000000000A002400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E
+ 00095374796C654E616D650614466C6F6174416E696D6174696F6E315374796C
+ 65084475726174696F6E050000000000CDCCCCFB3F0D496E746572706F6C6174
+ 696F6E070843697263756C61720C50726F70657274794E616D65060D526F7461
+ 74696F6E416E676C650A537461727456616C75650500000000000000B4054009
+ 53746F7056616C756505000000000000000000000754726967676572060F4973
+ 457870616E6465643D747275650E54726967676572496E766572736506104973
+ 457870616E6465643D66616C7365000000005450463007544C61796F75740009
+ 5374796C654E616D650615657870616E646572636865636B626F787374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000000
+ 008406400B53697A652E48656967687405000000000000008404401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C65080007544C6179
+ 6F75740005416C69676E07044C6566740A53697A652E57696474680500000000
+ 000000C003400B53697A652E4865696768740500000000000000840440145369
+ 7A652E506C6174666F726D44656661756C7408000554506174680005416C6967
+ 6E0706436C69656E7409446174612E506174680AD80100002700000000000000
+ FEC8BA4402E79244020000002592AD4402E79244020000006D5BA544FEB09E44
+ 020000006D5BA544FEB09E440200000093A4A4446A0C9F44020000004A80AC44
+ FC79AA4402000000046EBA44FC79AA44020000004A00C844FC79AA4402000000
+ 0080CF44FEB09E44020000000080CF44FEB09E44020000000080CF44FEB09E44
+ 020000004C5BC84402E7924402000000FEC8BA4402E7924400000000FE88BA44
+ FE30974402000000B876BF44FE309744020000000277C344EEA09A4402000000
+ 0277C34404DE9E44020000000277C344121BA34402000000B876BF44008CA644
+ 02000000FE88BA44008CA644020000004C9BB544008CA64402000000009CB144
+ 121BA34402000000009CB14404DE9E4402000000009CB144EEA09A4402000000
+ 4C9BB544FE30974402000000FE88BA44FE309744000000000080BA44045E9B44
+ 02000000146EB844045E9B440200000000C0B64454F79C440200000000C0B644
+ 00F09E440200000000C0B644ACE8A04402000000146EB844FC81A24402000000
+ 0080BA44FC81A24402000000EC91BC44FC81A244020000000040BE44ACE8A044
+ 020000000040BE4400F09E44020000000040BE4454F79C4402000000EC91BC44
+ 045E9B44020000000080BA44045E9B440A46696C6C2E436F6C6F720709783630
+ 3030303030300748697454657374080C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E526967687405000000000000008000400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 00000000A003400B53697A652E4865696768740500000000000000E803401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E6508577261704D6F64650703466974000F54436F6C6F72416E696D
+ 6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7836303030303030300953746F7056616C75650708636C61426C61636B075472
+ 6967676572060E4973436865636B65643D7472756500000F54436F6C6F72416E
+ 696D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 0708636C61426C61636B0953746F7056616C7565070978363030303030303007
+ 54726967676572060F4973436865636B65643D66616C73650000000005545465
+ 787400095374796C654E616D6506047465787405416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080C4D617267696E732E4C65667405
+ 000000000000008002400B4D617267696E732E546F7005000000000000008000
+ 400D4D617267696E732E5269676874050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000C605400B53697A652E48656967687405000000
+ 00000000F803401453697A652E506C6174666F726D44656661756C7408165465
+ 787453657474696E67732E466F6E74436F6C6F72070978464645454545454516
+ 5465787453657474696E67732E486F727A416C69676E07074C656164696E6700
+ 00005450463007544C61796F757400095374796C654E616D65060E6C6162656C
+ 66696C6C7374796C6505416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C803401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C6508000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 7207097846463135313531350A53697A652E57696474680500000000000000C8
+ 05400B53697A652E4865696768740500000000000000C803401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 65000005545465787400095374796C654E616D6506047465787405416C69676E
+ 0708436F6E74656E74730748697454657374080A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C740816546578745365747469
+ 6E67732E466F6E74436F6C6F720708636C615768697465000000545046300754
+ 4C61796F757400095374796C654E616D650613636F6D626F656469746572726F
+ 727374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000C803
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 000C5442727573684F626A65637400095374796C654E616D65060A666F726567
+ 726F756E6400000B54466F6E744F626A65637400095374796C654E616D650604
+ 666F6E7409466F6E742E53697A650500000000000000D00240000007544C6179
+ 6F757400095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
+ 4E616D65060A52656374616E676C653105416C69676E0706436C69656E740A46
+ 696C6C2E436F6C6F7207097846463230323032300748697454657374080A5369
+ 7A652E57696474680500000000000000C805400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0C5374726F6B652E436F6C6F720709784646323032303230000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E315374796C65084475726174696F6E05000000000000000000000749
+ 6E7665727365090C50726F70657274794E616D65060C5374726F6B652E436F6C
+ 6F720A537461727456616C756507097846463230323032300953746F7056616C
+ 756507097846463430343034300754726967676572062049734D6F7573654F76
+ 65723D747275653B4973466F63757365643D66616C73650E5472696767657249
+ 6E7665727365062149734D6F7573654F7665723D66616C73653B4973466F6375
+ 7365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009537479
+ 6C654E616D650614436F6C6F72416E696D6174696F6E325374796C6508447572
+ 6174696F6E050000000000000000000007496E7665727365090C50726F706572
+ 74794E616D65060C5374726F6B652E436F6C6F720A537461727456616C756507
+ 097846463430343034300953746F7056616C7565070978464645323241324107
+ 54726967676572061F49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D747275650E54726967676572496E7665727365062049734D6F757365
+ 4F7665723D747275653B4973466F63757365643D66616C7365000007544C6179
+ 6F757400095374796C654E616D6506056172726F7705416C69676E0708466974
+ 52696768740B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
+ 5ED99705400A506F736974696F6E2E59050000000000000080FF3F0A53697A65
+ 2E5769647468050000000000889AB803400B53697A652E486569676874050000
+ 0000000000B803401453697A652E506C6174666F726D44656661756C7408000A
+ 5452656374616E676C6500095374796C654E616D65060A52656374616E676C65
+ 3105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846
+ 463330333033300748697454657374080A53697A652E57696474680500000000
+ 00889AB803400B53697A652E4865696768740500000000000000B80340145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650614436F6C6F72416E696D6174696F6E315374796C65084475726174696F6E
+ 050000000000000000000007496E7665727365090C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646333033
+ 3033300953746F7056616C756507097846463430343034300754726967676572
+ 062049734D6F7573654F7665723D747275653B4973466F63757365643D66616C
+ 73650E54726967676572496E7665727365062149734D6F7573654F7665723D66
+ 616C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F
+ 6E325374796C65084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463430343034300953746F7056616C7565070978464639433137313707
+ 54726967676572061F4973466F63757365643D747275653B49734D6F7573654F
+ 7665723D7472756500000007544C61796F757400095374796C654E616D650607
+ 4C61796F75743105416C69676E070643656E7465720C4D617267696E732E4C65
+ 6674050000000000000080FF3F0A53697A652E57696474680500000000000000
+ A002400B53697A652E4865696768740500000000000000C001401453697A652E
+ 506C6174666F726D44656661756C74080005545061746800095374796C654E61
+ 6D650605506174683105416C69676E0706436C69656E7409446174612E506174
+ 680A3400000004000000000000000000C8420000C84201000000000096430000
+ C842010000000000484300009643030000000000C8420000C8420A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080A53697A652E5769
+ 6474680500000000000000A002400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E650000000000000C5442727573684F626A656374
+ 00095374796C654E616D65060973656C656374696F6E0B42727573682E436F6C
+ 6F720709783936324138324532000007544C61796F757400095374796C654E61
+ 6D650607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E
+ 732E4C65667405000000000000008000400B4D617267696E732E546F70050000
+ 00000000008000400D4D617267696E732E52696768740500000000000000F003
+ 400E4D617267696E732E426F74746F6D05000000000000008000400A53697A65
+ 2E576964746805000000000000008805400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080000
+ 005450463007544C61796F757400095374796C654E616D65061E70726F677265
+ 7373626172696E64657465726D696E61626C657374796C6505416C69676E0706
+ 43656E7465720A53697A652E5769647468050000000000ABAAB006400B53697A
+ 652E4865696768740500000000000000C003401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508000A5452656374616E676C650009
+ 5374796C654E616D65060676747261636B05416C69676E0708436F6E74656E74
+ 7307456E61626C6564080A46696C6C2E436F6C6F720709784646323032303230
+ 064C6F636B6564090748697454657374080A53697A652E576964746805000000
+ 00000000E006400B53697A652E48656967687405000000000000009404401453
+ 697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F
+ 7207097846463135313531350756697369626C6508000A5452656374616E676C
+ 6500095374796C654E616D65060A76696E64696361746F7205416C69676E0706
+ 426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532064C6F63
+ 6B6564090748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A506F736974696F6E2E58050000000000
+ 000080FF3F0A506F736974696F6E2E590500000000000000F002400A53697A65
+ 2E57696474680500000000000000DE06400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E6500000007544C61796F75740009537479
+ 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A53
+ 697A652E5769647468050000000000ABAAB006400B53697A652E486569676874
+ 0500000000000000C003401453697A652E506C6174666F726D44656661756C74
+ 08000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
+ 6F756E6405416C69676E0708436F6E74656E74730C436C69704368696C647265
+ 6E090A46696C6C2E436F6C6F720709784646324138324532064C6F636B656409
+ 0748697454657374080A53697A652E5769647468050000000000ABAAB006400B
+ 53697A652E4865696768740500000000000000C003401453697A652E506C6174
+ 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
+ 31353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614436F6C6F72416E696D6174696F6E315374796C6507456E61626C65640908
+ 4475726174696F6E0500000000000000800140044C6F6F70090C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463230323032300953746F7056616C75650709784646324138324532075472
+ 6967676572060E497356697369626C653D747275650000000000545046300754
+ 4C61796F757400095374796C654E616D650611616E69696E64696361746F7273
+ 74796C6505416C69676E070643656E7465720756697369626C65080004544172
+ 6300095374796C654E616D65060341726305416C69676E0708436F6E74656E74
+ 730748697454657374080D526F746174696F6E416E676C650500000000000000
+ B407400A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720708636C615768697465105374
+ 726F6B652E546869636B6E657373050000000000000080004008456E64416E67
+ 6C650500000000000000B405C0000F54466C6F6174416E696D6174696F6E0009
+ 5374796C654E616D650603616E6907456E61626C656409084475726174696F6E
+ 050000000000000080FF3F044C6F6F70090C50726F70657274794E616D65060D
+ 526F746174696F6E416E676C650A537461727456616C75650500000000000000
+ 0000000953746F7056616C75650500000000000000B407400754726967676572
+ 060E497356697369626C653D74727565000000005450463007544C61796F7574
+ 00095374796C654E616D650615616E69696E64696361746F72686F727A737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000040C006400B53697A652E4865696768740500000000000000800040145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D65060A52656374616E676C653105
+ 416C69676E0706436C69656E740C436C69704368696C6472656E090A46696C6C
+ 2E436F6C6F7207097846463430343034300A53697A652E576964746805000000
+ 00000040C006400B53697A652E48656967687405000000000000008000401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650005544C696E6500095374796C654E616D6506054C696E653108
+ 4C696E65547970650706426F74746F6D0A53697A652E57696474680500000000
+ 000000A00B400B53697A652E4865696768740500000000000000800040145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646324138324532105374726F6B652E546869636B6E65737305000000
+ 000000008002400B5374726F6B652E44617368070444617368000F54466C6F61
+ 74416E696D6174696F6E00095374796C654E616D650603616E6907456E61626C
+ 656409084475726174696F6E0500000000000000800340044C6F6F70090C5072
+ 6F70657274794E616D65060A506F736974696F6E2E580A537461727456616C75
+ 650500000000000000C808C00953746F7056616C756505000000000000000000
+ 000754726967676572060E497356697369626C653D7472756500000000005450
+ 463007544C61796F757400095374796C654E616D65060A70616E656C7374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000C006400B53697A652E4865696768740500000000000000A406401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C6508000A545265
+ 6374616E676C6500095374796C654E616D65060A6261636B67726F756E640541
+ 6C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230
+ 323032300A53697A652E57696474680500000000000000C006400B53697A652E
+ 4865696768740500000000000000A406401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000054504630
+ 07544C61796F757400095374796C654E616D65060E6C6F67627574746F6E7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000C005400B53697A652E4865696768740500000000000000C005401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0706436C69656E740C436C69704368696C6472656E090A436C69
+ 70506172656E74090A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080A53697A652E57696474680500000000000000C005400B5369
+ 7A652E4865696768740500000000000000C005401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E
+ 436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463230323032300953746F7056616C756507097846
+ 463430343034300754726967676572063049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C73653B4973466F63757365643D66616C73
+ 650E54726967676572496E7665727365063149734D6F7573654F7665723D6661
+ 6C73653B4973507265737365643D66616C73653B4973466F63757365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463430343034300953746F7056
+ 616C756507097846463137353739430754726967676572062F49735072657373
+ 65643D747275653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3308447572
+ 6174696F6E05000000000000000000000C50726F70657274794E616D65060A46
+ 696C6C2E436F6C6F720A537461727456616C7565070978464632413832453209
+ 53746F7056616C756507097846463137353739430754726967676572062E4973
+ 507265737365643D747275653B49734D6F7573654F7665723D747275653B4973
+ 466F63757365643D747275650E54726967676572496E7665727365062F497350
+ 7265737365643D66616C73653B49734D6F7573654F7665723D747275653B4973
+ 466F63757365643D74727565000005545061746800095374796C654E616D6506
+ 05506174683105416C69676E0706436C69656E7409446174612E506174680A5C
+ 02000032000000000000000000A841CDCCCC40010000000000A8410000C04101
+ 0000000000C03F0000C041010000000000C03F00000000010000009A99694100
+ 000000010000000000A841CDCCCC40030000000000A841CDCCCC400000000000
+ 009C410000F04001000000000058410000F04001000000000058410000C03F01
+ 000000000040400000C03F01000000000040400000B4410100000000009C4100
+ 00B4410100000000009C410000F0400300000000009C410000F0400000000000
+ 0040410000F04001000000000090400000F04001000000000090400000C04001
+ 000000000040410000C04001000000000040410000F040030000000000404100
+ 00F0400000000000009040000010410100000000009041000010410100000000
+ 0090410000284101000000000090400000284101000000000090400000104103
+ 0000000000904000001041000000000000904000004041010000000000904100
+ 0040410100000000009041000058410100000000009040000058410100000000
+ 0090400000404103000000000090400000404100000000000090400000704101
+ 0000000000904100007041010000000000904100008441010000000000904000
+ 0084410100000000009040000070410300000000009040000070410000000000
+ 00904000009041010000000000904100009041010000000000904100009C4101
+ 0000000000904000009C41010000000000904000009041030000000000904000
+ 00904100000000000070410000C04001000000333393410000C0400100000000
+ 0070416666264001000000000070410000C04003000000000070410000C0400A
+ 46696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000A002400B4D617267696E732E546F
+ 700500000000000000A002400D4D617267696E732E5269676874050000000000
+ 0000A002400E4D617267696E732E426F74746F6D0500000000000000A002400A
+ 53697A652E576964746805000000000000009805400B53697A652E4865696768
+ 7405000000000000009805401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F6465070346
+ 6974000000005450463007544C61796F757400095374796C654E616D65061470
+ 726F67726573736261726D696E697374796C6505416C69676E070643656E7465
+ 720A53697A652E576964746805000000000033338505400B53697A652E486569
+ 6768740500000000009999E104401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508000A5452656374616E676C6500095374796C65
+ 4E616D65060668747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646343034303430064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000A545265637461
+ 6E676C6500095374796C654E616D65060A68696E64696361746F7205416C6967
+ 6E07044C6566740A46696C6C2E436F6C6F720709784646324138324532064C6F
+ 636B6564090748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000009999E104401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650000000A5452656374616E676C6500095374796C654E616D6506067674
+ 7261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646343034303430064C6F636B6564090748697454657374080A53697A65
+ 2E576964746805000000000033338505400B53697A652E486569676874050000
+ 0000009999E104401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000A5452656374616E676C6500095374
+ 796C654E616D65060A76696E64696361746F7205416C69676E0706426F74746F
+ 6D0A46696C6C2E436F6C6F720709784646324138324532064C6F636B65640907
+ 48697454657374080A506F736974696F6E2E5905000000000099998D04400A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000000000A803401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C6179
+ 6F757400095374796C654E616D65061B7472656576696577657870616E646572
+ 627574746F6E7374796C6505416C69676E070643656E7465720B4D617267696E
+ 732E546F70050000000000000080FF3F0A53697A652E57696474680500000000
+ 000000B003400B53697A652E4865696768740500000000000000B00340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800055450
+ 61746800095374796C654E616D650605506174683105416C69676E070643656E
+ 74657209446174612E506174680A3400000004000000000000000000C8420000
+ C84201000000000096430000C842010000000000484300009643030000000000
+ C8420000C8420A46696C6C2E436F6C6F720708636C6157686974650748697454
+ 657374080D526F746174696F6E416E676C650500000000000000B405C00A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174
+ 696F6E00095374796C654E616D650614466C6F6174416E696D6174696F6E3153
+ 74796C65084475726174696F6E05000000000000000000000D496E746572706F
+ 6C6174696F6E070843697263756C61720C50726F70657274794E616D65060D52
+ 6F746174696F6E416E676C650A537461727456616C75650500000000000000B4
+ 05C00953746F7056616C75650500000000000000000000075472696767657206
+ 0F4973457870616E6465643D747275650E54726967676572496E766572736506
+ 104973457870616E6465643D66616C736500000000545046300A545265637461
+ 6E676C6500095374796C654E616D65061174726565766965776974656D737479
+ 6C6505416C69676E070643656E7465720946696C6C2E4B696E6407044E6F6E65
+ 0748697454657374080553696465730B06426F74746F6D000A53697A652E5769
+ 6474680500000000000000AE05400B53697A652E486569676874050000000000
+ 0000A004401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F7207097846463135313531350756697369626C6508000C5453
+ 70656564427574746F6E00095374796C654E616D650606627574746F6E05416C
+ 69676E07044C6566740A53697A652E57696474680500000000000000A003400B
+ 53697A652E4865696768740500000000000000A004401453697A652E506C6174
+ 666F726D44656661756C74080B5374796C654C6F6F6B7570061B747265657669
+ 6577657870616E646572627574746F6E7374796C65000007544C61796F757400
+ 05416C69676E0708436F6E74656E74730C4D617267696E732E4C656674050000
+ 0000000000A003400A53697A652E576964746805000000000000008605400B53
+ 697A652E4865696768740500000000000000A004401453697A652E506C617466
+ 6F726D44656661756C7408000954436865636B426F7800095374796C654E616D
+ 650605636865636B05416C69676E07044C6566740843616E466F637573081244
+ 697361626C65466F637573456666656374090A53697A652E5769647468050000
+ 0000000000A003400B53697A652E4865696768740500000000000000A0044014
+ 53697A652E506C6174666F726D44656661756C740800000654476C7970680009
+ 5374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C65
+ 667405000000000000008000400B4D617267696E732E546F7005000000000000
+ 0080FF3F0D4D617267696E732E526967687405000000000000008000400E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F05416C69676E07044C
+ 6566740A506F736974696F6E2E580500000000000000B003400A506F73697469
+ 6F6E2E59050000000000000080FF3F0A53697A652E5769647468050000000000
+ 00008003400B53697A652E48656967687405000000000000009804401453697A
+ 652E506C6174666F726D44656661756C7408000005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E74064C6F636B6564
+ 090748697454657374080A53697A652E57696474680500000000000000BC0440
+ 0B53697A652E4865696768740500000000000000A004401453697A652E506C61
+ 74666F726D44656661756C740804546578740604546578741654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746515546578745365
+ 7474696E67732E576F72645772617008165465787453657474696E67732E486F
+ 727A416C69676E07074C656164696E670000000A5452656374616E676C650005
+ 416C69676E07074669744C6566740946696C6C2E4B696E6407044E6F6E650748
+ 697454657374080E4D617267696E732E426F74746F6D050000000000000080FF
+ 3F0553696465730B044C656674000A53697A652E576964746805000000000098
+ 6F8905400B53697A652E48656967687405000000000000009C04401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 784646324138324532105374726F6B652E546869636B6E657373050000000000
+ 00008000400000005450463007544C61796F757400095374796C654E616D6506
+ 0D74726565766965777374796C6505416C69676E070643656E7465720A53697A
+ 652E57696474680500000000000000E106400B53697A652E4865696768740500
+ 0000000000808107401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000C5442727573684F626A65637400095374796C654E616D
+ 650618416C7465726E6174696E67526F774261636B67726F756E640B42727573
+ 682E436F6C6F72070978304646464646464600000A5452656374616E676C6500
+ 095374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F
+ 6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C6F63
+ 6B6564090748697454657374080C50616464696E672E4C656674050000000000
+ 000080FF3F0D50616464696E672E5269676874050000000000000080FF3F0A53
+ 697A652E57696474680500000000000000E106400B53697A652E486569676874
+ 05000000000000808107401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
+ 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
+ 69656E740C436C69704368696C6472656E090B4D617267696E732E546F700500
+ 00000000000080FF3F0A53697A652E57696474680500000000000000CD06400B
+ 53697A652E4865696768740500000000000000F006401453697A652E506C6174
+ 666F726D44656661756C7408000A5452656374616E676C6500095374796C654E
+ 616D65060973656C656374696F6E0A46696C6C2E436F6C6F7207097846463241
+ 383245320748697454657374080A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E6500000A5452656374616E676C6500095374796C654E616D650610666F6375
+ 73656473656C656374696F6E0A46696C6C2E436F6C6F72070978464632413832
+ 45320748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0B5374726F6B652E446173680703446F740000000A545363726F6C6C42617200
+ 095374796C654E616D65060A767363726F6C6C62617205416C69676E07055269
+ 6768740B536D616C6C4368616E676505000000000000000000000B4F7269656E
+ 746174696F6E0708566572746963616C0C4D617267696E732E4C656674050000
+ 00000000008000400A506F736974696F6E2E580500000000000000D006400A53
+ 697A652E576964746805000000000000008003400B53697A652E486569676874
+ 0500000000000000F106401453697A652E506C6174666F726D44656661756C74
+ 0800000A545363726F6C6C42617200095374796C654E616D65060A687363726F
+ 6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E676505
+ 000000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E74
+ 616C0B4D617267696E732E546F7005000000000000008000400A506F73697469
+ 6F6E2E58050000000000000080FF3F0A506F736974696F6E2E59050000000000
+ 0000F306400A53697A652E57696474680500000000000000DF06400B53697A65
+ 2E48656967687405000000000000008003401453697A652E506C6174666F726D
+ 44656661756C740800000F54536D616C6C5363726F6C6C42617200095374796C
+ 654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E07055269
+ 6768740B536D616C6C4368616E676505000000000000000000000B4F7269656E
+ 746174696F6E0708566572746963616C0C4D617267696E732E4C656674050000
+ 00000000008000400A506F736974696F6E2E580500000000000000C605400A50
+ 6F736974696F6E2E5905000000000000008000400A53697A652E576964746805
+ 000000000000008002400B53697A652E48656967687405000000000000008002
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 00000F54536D616C6C5363726F6C6C42617200095374796C654E616D65060F68
+ 736D616C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D61
+ 6C6C4368616E676505000000000000000000000B4F7269656E746174696F6E07
+ 0A486F72697A6F6E74616C0B4D617267696E732E546F70050000000000000080
+ 00400A506F736974696F6E2E5805000000000000008000400A506F736974696F
+ 6E2E590500000000000000E205400A53697A652E576964746805000000000000
+ 009606400B53697A652E48656967687405000000000000008002401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C6508000000005450
+ 463007544C61796F757400095374796C654E616D650619616374696F6E746F6F
+ 6C627574746F6E6D756C74697669657705416C69676E070643656E7465720A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C65080B46697865644865696768740232000654476C797068
+ 00095374796C654E616D65060A676C7970687374796C650C4D617267696E732E
+ 4C65667405000000000000009002400B4D617267696E732E546F700500000000
+ 0000009002400E4D617267696E732E426F74746F6D0500000000000000900240
+ 05416C69676E07044C6566740A506F736974696F6E2E58050000000000000090
+ 02400A506F736974696F6E2E5905000000000000009002400A53697A652E5769
+ 64746805000000000000008004400B53697A652E486569676874050000000000
+ 00008004401453697A652E506C6174666F726D44656661756C740800000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0706436C69656E740C436C69704368696C6472656E090A436C6970
+ 506172656E74090A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080C4D617267696E732E4C6566740500000000000000C804C00A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E31084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572063049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365063149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E33084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463241383245320953746F7056616C75650709784646
+ 3137353739430754726967676572062E4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062F4973507265737365643D66616C73653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650000
+ 0005545465787400095374796C654E616D6506047465787405416C69676E0706
+ 436C69656E740748697454657374080A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C615768697465000007544C61796F7574000953
+ 74796C654E616D6506074C61796F75743205416C69676E07044C6566740A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000C804401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D65060469636F6E05416C69676E0706
+ 43656E74657209446174612E506174680A1801000017000000000000000000C0
+ 3F0000C03F010000000000000000000000010000000000404000000000010000
+ 000000C03F0000C03F030000000000C03F0000C03F0000000000009040000000
+ 000100000000004041000000000100000000004041CDCC4C3F01000000000090
+ 40CDCC4C3F010000000000904000000000030000000000904000000000000000
+ 0000009040333373400100000000009040000040400100000000004041000040
+ 4001000000000040413333734001000000000090403333734003000000000090
+ 403333734000000000000090409A99D94001000000000090400000C040010000
+ 00000040410000C04001000000000040419A99D94001000000000090409A99D9
+ 4003000000000090409A99D9400A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080A53697A652E57696474680500000000000000D003
+ 400B53697A652E4865696768740500000000000000E003401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 08577261704D6F64650703466974000000005450463007544C61796F75740009
+ 5374796C654E616D65060E616464627574746F6E7374796C6505416C69676E07
+ 0643656E7465720A53697A652E57696474680500000000000000C805400B5369
+ 7A652E4865696768740500000000000000C003401453697A652E506C6174666F
+ 726D44656661756C74080756697369626C65080B466978656448656967687402
+ 18000654476C79706800095374796C654E616D65060A676C7970687374796C65
+ 0C4D617267696E732E4C65667405000000000000009002400B4D617267696E73
+ 2E546F7005000000000000009002400E4D617267696E732E426F74746F6D0500
+ 00000000000090024005416C69676E07044C6566740A506F736974696F6E2E58
+ 05000000000000009002400A506F736974696F6E2E5905000000000000009002
+ 400A53697A652E576964746805000000000000008004400B53697A652E486569
+ 67687405000000000000008004401453697A652E506C6174666F726D44656661
+ 756C740800000A5452656374616E676C6500095374796C654E616D65060A6261
+ 636B67726F756E6405416C69676E0706436C69656E740C436C69704368696C64
+ 72656E090A436C6970506172656E74090A46696C6C2E436F6C6F720709784646
+ 3230323032300748697454657374080C4D617267696E732E4C65667405000000
+ 00000000C003C00A53697A652E57696474680500000000000000C805400B5369
+ 7A652E4865696768740500000000000000C003401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E
+ 436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463230323032300953746F7056616C756507097846
+ 463430343034300754726967676572063049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C73653B4973466F63757365643D66616C73
+ 650E54726967676572496E7665727365063149734D6F7573654F7665723D6661
+ 6C73653B4973507265737365643D66616C73653B4973466F63757365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0615627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463241383245320953746F7056
+ 616C756507097846463137353739430754726967676572062E49735072657373
+ 65643D747275653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D747275650E54726967676572496E7665727365062F4973507265737365
+ 643D66616C73653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D7472756500000005545465787400095374796C654E616D650604746578
+ 7405416C69676E0706436C69656E740748697454657374080A53697A652E5769
+ 64746805000000000000009805400B53697A652E486569676874050000000000
+ 0000C003401453697A652E506C6174666F726D44656661756C74080454657874
+ 060454657874165465787453657474696E67732E466F6E74436F6C6F72070863
+ 6C615768697465000007544C61796F757400095374796C654E616D6506074C61
+ 796F75743205416C69676E07044C6566740A53697A652E576964746805000000
+ 00000000C003400B53697A652E4865696768740500000000000000C003401453
+ 697A652E506C6174666F726D44656661756C7408000554506174680009537479
+ 6C654E616D65060469636F6E05416C69676E0708436F6E74656E747309446174
+ 612E506174680AAC0000000E00000000000000CDCC34410000C0400100000000
+ 00C0400000C040010000000000C040CDCC3441010000009A99A940CDCC344101
+ 0000009A99A9400000C04001000000000000000000C04001000000000000009A
+ 99A940010000009A99A9409A99A940010000009A99A940000000000100000000
+ 00C04000000000010000000000C0409A99A94001000000CDCC34419A99A94001
+ 000000CDCC34410000C04003000000CDCC34410000C0400A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080C4D617267696E732E4C65
+ 667405000000000000008001400B4D617267696E732E546F7005000000000000
+ 008001400D4D617267696E732E526967687405000000000000008001400E4D61
+ 7267696E732E426F74746F6D05000000000000008001400A53697A652E576964
+ 746805000000000000008003400B53697A652E48656967687405000000000000
+ 008003401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6508577261704D6F64650703466974000000005450
+ 463007544C61796F757400095374796C654E616D650617696E666F746F6F6C62
+ 7574746F6E6D756C74697669657705416C69676E070643656E7465720A53697A
+ 652E57696474680500000000000000C805400B53697A652E4865696768740500
+ 000000000000C804401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C65080B46697865644865696768740232000654476C7970680009
+ 5374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C65
+ 667405000000000000009002400B4D617267696E732E546F7005000000000000
+ 009002400E4D617267696E732E426F74746F6D05000000000000009002400541
+ 6C69676E07044C6566740A506F736974696F6E2E580500000000000000900240
+ 0A506F736974696F6E2E5905000000000000009002400A53697A652E57696474
+ 6805000000000000008004400B53697A652E4865696768740500000000000000
+ 8004401453697A652E506C6174666F726D44656661756C740800000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0706436C69656E740C436C69704368696C6472656E090A436C69705061
+ 72656E74090A46696C6C2E436F6C6F7207097846463230323032300748697454
+ 657374080C4D617267696E732E4C6566740500000000000000C804C00A53697A
+ 652E57696474680500000000000000C805400B53697A652E4865696768740500
+ 000000000000C804401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174
+ 696F6E31084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463230323032300953746F7056616C7565070978464634303430343007547269
+ 67676572063049734D6F7573654F7665723D747275653B497350726573736564
+ 3D66616C73653B4973466F63757365643D66616C73650E54726967676572496E
+ 7665727365063149734D6F7573654F7665723D66616C73653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F
+ 72416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C
+ 6F72416E696D6174696F6E33084475726174696F6E0500000000000000000000
+ 0C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456
+ 616C756507097846463241383245320953746F7056616C756507097846463137
+ 353739430754726967676572062E4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275653B4973466F63757365643D747275650E547269
+ 67676572496E7665727365062F4973507265737365643D66616C73653B49734D
+ 6F7573654F7665723D747275653B4973466F63757365643D7472756500000005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706436C
+ 69656E740748697454657374080A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C740804546578740604546578741654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746500000754
+ 4C61796F757400095374796C654E616D6506074C61796F75743205416C69676E
+ 07044C6566740A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080005545061746800095374796C654E616D65060469636F
+ 6E05416C69676E070643656E74657209446174612E506174680A84070000A000
+ 0000000000009A9987429A99074302000000010076429A990743020000000100
+ 5E42CDCC064302000000343347423433054302000000010030429A9903430200
+ 000067661A42CE4C01430200000067660642CECCFC4202000000CECCE4410100
+ F742020000000100C041CECCEF420200000034339F419B99E74202000000CECC
+ 7C416866DF4202000000353343413533D64202000000CECC14413533CC420200
+ 00009A99C9400000C24202000000000080403333B742020000009A991940CDCC
+ AB4202000000CDCC4C3F3333A042020000000000000033339442020000000000
+ 00009A99874202000000000000000100764202000000CDCC4C3F01005E420200
+ 00009A991940CECC4642020000000000804000003042020000009A99C9406666
+ 1A42020000003333134166660642020000009A994141CCCCE441020000003333
+ 7B41FFFFBF410200000066669E4132339F41020000003333BF41CACC7C410200
+ 00000000E441313343410200000000000642CACC14410200000066661A429A99
+ C94002000000000030420000804002000000333347429A991940020000000000
+ 5E42CDCC4C3F020000006666764200000000020000009A998742000000000200
+ 00003433944200000000020000003433A042CDCC4C3F02000000CDCCAB429A99
+ 1940020000003333B74200008040020000000000C2429A99C940020000003333
+ CC4233331341020000003333D6429A994141020000006666DF4233337B410200
+ 00009999E74266669E4102000000CCCCEF423333BF4102000000FFFFF6420000
+ E44102000000CCCCFC420000064202000000CC4C014300001A42020000009999
+ 03439A992F420200000033330543CDCC464202000000CDCC064300005E420200
+ 0000999907430000764202000000999907439A99874202000000999907433433
+ 944202000000CCCC06433433A0420200000033330543CDCCAB42020000009999
+ 03436766B74202000000CD4C01433333C24202000000CCCCFC423433CC420200
+ 0000FFFFF6423433D64202000000CCCCEF426766DF42020000009999E7429A99
+ E742020000006666DF42CDCCEF42020000003333D6420000F742020000003333
+ CC42CDCCFC42020000003333C242CD4C0143020000006666B7429A9903430200
+ 0000CCCCAB4233330543020000003333A042CDCC064302000000333394429A99
+ 0743020000009A9987429A990743030000009A9987429A990743000000009A99
+ 874200001041020000009A9979420000104102000000CECC644233331B410200
+ 0000CECC50429A99314102000000CECC3C42000048410200000001002A420000
+ 684102000000CECC184200008841020000003433074200009C41020000003633
+ EF41CDCCB441020000006966D2419A99D141020000009C99B5416766EE410200
+ 00009C999D41CDCC064202000000D0CC88416666184202000000A09969410000
+ 2A4202000000A099494166663C42020000003A333341CCCC5042020000003333
+ 1B4133336542020000000000104100007A4202000000000010419A9987420200
+ 000000001041343392420200000033331B41CDCC9C42020000009A993141CDCC
+ A6420200000000004841CDCCB04202000000000068413333BA42020000000000
+ 88410000C3420200000000009C41CDCCCB4202000000CDCCB4419A99D3420200
+ 00009A99D141CDCCDA42020000006766EE410000E24202000000CDCC06420000
+ E84202000000666618423333ED420200000000002A423333F242020000006666
+ 3C423333F64202000000666650420000F9420200000066666442CDCCFB420200
+ 0000333379423333FD4202000000666687423333FD4202000000333392423333
+ FD420200000099999C42CDCCFB42020000009999A6420000F942020000009999
+ B0423333F64202000000FFFFB9423333F24202000000CCCCC2423333ED420200
+ 00009999CB423333E842020000006666D3420000E242020000009999DA42CDCC
+ DA4202000000CCCCE1429A99D34202000000CCCCE742CDCCCB4202000000FFFF
+ EC420000C34202000000FFFFF1423333BA4202000000FFFFF5420000B1420200
+ 0000CCCCF8420000A742020000009999FB4200009D4202000000FFFFFC429A99
+ 924202000000FFFFFC42CDCC874202000000FFFFFC4200007A42020000009999
+ FB423433654202000000CCCCF8423433514202000000FFFFF54234333D420200
+ 0000FFFFF14267662A4202000000FFFFEC42CECC184202000000FFFFE7423433
+ 074202000000CCCCE1423633EF41020000009999DA426966D241020000006666
+ D3429C99B541020000009999CB429C999D4102000000CCCCC242D0CC88410200
+ 0000FFFFB942A099694102000000CCCCB042A0994941020000009999A6423A33
+ 334102000000CDCC9C4233331B41020000006666924200001041020000009A99
+ 874200001041030000009A998742000010410000000033337D42CDCC10420100
+ 00009A999042CDCC1042010000009A999042CDCC34420100000034337D42CDCC
+ 34420100000034337D42CDCC10420300000033337D42CDCC1042000000003333
+ 7D4233335942010000009A99904233335942010000009A9990420000C7420100
+ 000034337D420000C7420100000034337D42333359420300000033337D423333
+ 59420A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0A53697A652E57696474680500000000000000D003400B53697A652E48656967
+ 68740500000000000000E003401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F64650703
+ 466974000000005450463007544C61796F757400095374796C654E616D65061B
+ 6F7267616E697A65746F6F6C627574746F6E6D756C74697669657705416C6967
+ 6E070643656E7465720A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C65080B46697865644865696768
+ 740232000654476C79706800095374796C654E616D65060A676C797068737479
+ 6C650C4D617267696E732E4C65667405000000000000009002400B4D61726769
+ 6E732E546F7005000000000000009002400E4D617267696E732E426F74746F6D
+ 050000000000000090024005416C69676E07044C6566740A506F736974696F6E
+ 2E5805000000000000009002400A506F736974696F6E2E590500000000000000
+ 9002400A53697A652E576964746805000000000000008004400B53697A652E48
+ 656967687405000000000000008004401453697A652E506C6174666F726D4465
+ 6661756C740800000A5452656374616E676C6500095374796C654E616D65060A
+ 6261636B67726F756E6405416C69676E0706436C69656E740C436C6970436869
+ 6C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978
+ 46463230323032300748697454657374080C4D617267696E732E4C6566740500
+ 000000000000C804C00A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D65061562757474
+ 6F6E436F6C6F72416E696D6174696F6E31084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463230323032300953746F7056616C75650709
+ 7846463430343034300754726967676572063049734D6F7573654F7665723D74
+ 7275653B4973507265737365643D66616C73653B4973466F63757365643D6661
+ 6C73650E54726967676572496E7665727365063149734D6F7573654F7665723D
+ 66616C73653B4973507265737365643D66616C73653B4973466F63757365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3308447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463241383245320953746F
+ 7056616C756507097846463137353739430754726967676572062E4973507265
+ 737365643D747275653B49734D6F7573654F7665723D747275653B4973466F63
+ 757365643D747275650E54726967676572496E7665727365062F497350726573
+ 7365643D66616C73653B49734D6F7573654F7665723D747275653B4973466F63
+ 757365643D7472756500000005545465787400095374796C654E616D65060474
+ 65787405416C69676E0706436C69656E740748697454657374080A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C7408165465
+ 787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
+ 07544C61796F757400095374796C654E616D6506074C61796F75743205416C69
+ 676E07044C6566740A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080005545061746800095374796C654E616D65060469
+ 636F6E05416C69676E070643656E74657209446174612E506174680AD0000000
+ 11000000000000009A99E9409A99C940010000006666664066661E4101000000
+ 000000009A99C940010000000000003F9A99B94001000000CDCC4C409A990941
+ 01000000CDCC4C40000000000100000000008040000000000100000000008040
+ 00000841010000006666D6406666B640010000009A99E9409A99C94003000000
+ 9A99E9409A99C940000000009A99993E00004041010000009A99993E33333341
+ 010000000000E04033333341010000000000E04000004041010000009A99993E
+ 00004041030000009A99993E000040410A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080A53697A652E576964746805000000000000
+ 00D003400B53697A652E4865696768740500000000000000E003401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6508577261704D6F64650703466974000000005450463007544C61796F75
+ 7400095374796C654E616D65061B73657474696E6773746F6F6C627574746F6E
+ 6D756C74697669657705416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C7408075669736962
+ 6C65080B46697865644865696768740232000654476C79706800095374796C65
+ 4E616D65060A676C7970687374796C650C4D617267696E732E4C656674050000
+ 00000000009002400B4D617267696E732E546F7005000000000000009002400E
+ 4D617267696E732E426F74746F6D050000000000000090024005416C69676E07
+ 044C6566740A506F736974696F6E2E5805000000000000009002400A506F7369
+ 74696F6E2E5905000000000000009002400A53697A652E576964746805000000
+ 000000008004400B53697A652E48656967687405000000000000008004401453
+ 697A652E506C6174666F726D44656661756C740800000A5452656374616E676C
+ 6500095374796C654E616D65060A6261636B67726F756E6405416C69676E0706
+ 436C69656E740C436C69704368696C6472656E090A436C6970506172656E7409
+ 0A46696C6C2E436F6C6F7207097846463230323032300748697454657374080C
+ 4D617267696E732E4C6566740500000000000000C804C00A53697A652E576964
+ 74680500000000000000C805400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E3108
+ 4475726174696F6E05000000000000000000000C50726F70657274794E616D65
+ 060A46696C6C2E436F6C6F720A537461727456616C7565070978464632303230
+ 32300953746F7056616C75650709784646343034303430075472696767657206
+ 3049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
+ 653B4973466F63757365643D66616C73650E54726967676572496E7665727365
+ 063149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
+ 6C73653B4973466F63757365643D66616C736500000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E69
+ 6D6174696F6E33084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463241383245320953746F7056616C7565070978464631373537394307
+ 54726967676572062E4973507265737365643D747275653B49734D6F7573654F
+ 7665723D747275653B4973466F63757365643D747275650E5472696767657249
+ 6E7665727365062F4973507265737365643D66616C73653B49734D6F7573654F
+ 7665723D747275653B4973466F63757365643D74727565000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7407
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C7408045465787406045465787416546578745365747469
+ 6E67732E466F6E74436F6C6F720708636C615768697465000007544C61796F75
+ 7400095374796C654E616D6506074C61796F75743205416C69676E07044C6566
+ 740A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080005545061746800095374796C654E616D65060469636F6E05416C69
+ 676E070643656E74657209446174612E506174680A540D00001C010000000000
+ 00333351423333E7410200000033335142CDCCE84102000000333351426666EA
+ 4102000000333351423333EB410200000033335142CDCCEC4102000000333351
+ 426666EE4102000000333351423333EF410200000033335142CDCCF041020000
+ 00333351426666F24102000000333351423333F3410200000033335142CDCCF4
+ 4102000000333351426666F64102000000333351423333F7410100000099996F
+ 4266660E4201000000CDCC5C4200003C420100000000003A4200003442020000
+ 000000384200003642020000000000364200003842020000000000344200003A
+ 420100000000003C42CDCC5C4201000000CDCC0E429A996F42010000000000F8
+ 4133335142020000006666F6413333514202000000CDCCF44133335142020000
+ 000000F44133335142020000006666F2413333514202000000CDCCF041333351
+ 42020000000000F04133335142020000006666EE413333514202000000CDCCEC
+ 4133335142020000000000EC4133335142020000006666EA4133335142020000
+ 00CDCCE84133335142020000000000E84133335142010000006666C24199996F
+ 4201000000FFFF4F41CCCC5C4201000000FFFF6F41FFFF394202000000FFFF67
+ 41FFFF374202000000FFFF5F41FFFF354202000000FFFF5741FFFF3342010000
+ 0098999940FFFF3B420100000000000000CDCC0E42010000003333F3400000F8
+ 41020000003333F3406666F641020000003333F340CDCCF441020000003333F3
+ 400000F441020000003333F3406666F241020000003333F340CDCCF041020000
+ 003333F3400000F041020000003333F3406666EE41020000003333F340CDCCEC
+ 41020000003333F3400000EC41020000003333F3406666EA41020000003333F3
+ 40CDCCE841020000003333F3400000E8410100000000000000CDCCC041010000
+ 0066669640CDCC4C410100000066665641CDCC6C410200000066665E41CDCC64
+ 410200000066666641CDCC5C410200000066666E41CDCC54410100000066664E
+ 413433934001000000CDCCC04100000000010000006666E6413333F340020000
+ 000000E8413333F340020000009999E9413333F340020000006666EA413333F3
+ 40020000000000EC413333F340020000009999ED413333F340020000006666EE
+ 413333F340020000000000F0413333F340020000009999F1413333F340020000
+ 006666F2413333F340020000000000F4413333F340020000009999F5413333F3
+ 40020000006666F6413333F34001000000CDCC0E42000000000100000000003C
+ 4266669640010000000000344266665641020000000000364266665E41020000
+ 0000003842666666410200000000003A4266666E4101000000CDCC5C4266664E
+ 41010000009A996F429A99C14101000000333351423333E74103000000333351
+ 423333E7410000000033334342CDCC02420200000033334342CDCC0042020000
+ 00999943426766FE4102000000999943426766FA4102000000999943426766F6
+ 4102000000FFFF43423433F34102000000FFFF43423433EF4102000000FFFF43
+ 423433EB4102000000FFFF43420100E84102000000999943420100E441020000
+ 00999943420100E0410200000033334342CECCDC410200000033334342CECCD8
+ 4101000000CDCC5E426866B64101000000CDCC54429B99854101000000CDCC34
+ 42CECC9441020000006766324234338F4102000000000030429B998941020000
+ 0033332D42010084410200000066662A42CECC7C410200000000002842353373
+ 4102000000CDCC24429C9969410100000067662C423833D34001000000010014
+ 4238338340010000006766024202003041020000006766004202003041020000
+ 009B99FD4168662E41020000009B99F94168662E41020000009B99F54168662E
+ 41020000006866F241CECC2C41020000006866EE41CECC2C41020000006866EA
+ 41CECC2C41020000003533E741CECC2C41020000003533E34168662E41020000
+ 003533DF4168662E41020000000200DC4102003041020000000200D841020030
+ 41010000009C99B5413733834001000000CFCC84413733D34001000000020094
+ 419C9969410200000068668E413633734102000000CFCC8841CFCC7C41020000
+ 0035338341010084410200000036337B419A998941020000009D99714167668E
+ 410200000004006841CECC9441010000000800D0409B99854101000000080080
+ 406866B641010000006A662E419B99D941020000006A662E419B99DD41020000
+ 00D0CC2C41CECCE04102000000D0CC2C41CECCE44102000000D0CC2C41CECCE8
+ 410200000036332B410100EC410200000036332B410100F0410200000036332B
+ 410100F4410200000036332B413433F74102000000D0CC2C413433FB41020000
+ 00D0CC2C413433FF41020000006A662E4134330142020000006A662E41343303
+ 42010000000700804067661442010000000700D040CDCC2C4201000000040068
+ 4133332542020000009E997141000028420200000037337B41CDCC2A42020000
+ 003533834199992D4202000000CECC884165663042020000009B998D41CCCC32
+ 4202000000020094413333354201000000CFCC844133335542010000009C99B5
+ 4133335F4201000000CFCCD8419999434202000000CFCCDC4199994342020000
+ 000200E041FFFF4342020000000200E441FFFF4342020000000200E841FFFF43
+ 42020000003533EB4165664442020000003533EF4165664442020000003533F3
+ 4165664442020000006866F64165664442020000006866FA41FFFF4342020000
+ 006866FE41FFFF434202000000CECC00429999434202000000CECC0242999943
+ 42010000000100144233335F420100000067662C423333554201000000CDCC24
+ 4233333542020000009A992742CDCC32420200000067662A4266663042020000
+ 0033332D4299992D4202000000FFFF2F42CCCC2A420200000066663242666628
+ 4202000000CDCC34423333254201000000CDCC5442CDCC2C4201000000CDCC5E
+ 42676614420100000033334342CDCC02420300000033334342CDCC0242000000
+ 003333EF4133339741020000003333FB4133339741020000009A990342999999
+ 4102000000CDCC084266669E410200000000000E423333A34102000000CDCC12
+ 429999A94102000000CDCC16429999B14102000000CDCC1A429999B941020000
+ 0000001E423333C34102000000676620429999CD4102000000CDCC2242FFFFD7
+ 410200000001002442FFFFE34102000000010024420000F04102000000010024
+ 420100FC4102000000CECC224200000442020000006766204233330942020000
+ 0001001E4266660E4202000000CDCC1A423333134202000000CDCC1642333317
+ 4202000000CDCC124233331B420200000000000E4266661E4202000000CDCC08
+ 42CDCC2042020000009A99034233332342020000003433FB4167662442020000
+ 003433EF4167662442020000003433E34167662442020000003433D741343323
+ 4202000000CECCCC41CDCC2042020000006866C24167661E4202000000CECCB8
+ 4133331B4202000000CECCB0413333174202000000CECCA84133331342020000
+ 006866A24166660E42020000009B999D413333094202000000CECC9841000004
+ 4202000000686696410000FC4102000000686696410000F04102000000686696
+ 410000E44102000000CECC98410000D841020000009B999D419A99CD41020000
+ 006866A2413433C34102000000CECCA8419A99B94102000000CECCB0419A99B1
+ 4102000000CECCB8419A99A941020000006866C2413433A34102000000CECCCC
+ 4167669E41020000000000D8419A999941020000003333E34133339741020000
+ 003333EF4133339741030000003333EF4133339741000000003333EF41CDCC16
+ 42020000000000F841CDCC1642020000000000004200001642020000009A9903
+ 42676614420200000034330742CDCC124202000000CDCC0A4267661042020000
+ 009A990D429A990D420200000067661042CDCC0A4202000000CDCC12429A9907
+ 4202000000676614429A99034202000000010016420000004202000000CDCC16
+ 423433F74102000000CDCC16423433EF4102000000CDCC16426766E641020000
+ 00000016426766DE4102000000676614423433D74102000000CDCC12420100D0
+ 410200000067661042CECCC841020000009A990D423433C34102000000CDCC0A
+ 429A99BD41020000009A990742CECCB841020000009A9903429A99B541020000
+ 00000000426766B241020000003433F741CDCCB041020000003433EF41CDCCB0
+ 41020000006766E641CDCCB041020000006766DE416766B241020000003433D7
+ 419A99B541020000000100D041CDCCB84102000000CECCC8419A99BD41020000
+ 003433C3413433C341020000009A99BD41CECCC84102000000CECCB8413433CF
+ 41020000009A99B5413433D741020000006766B2416766DE4102000000CDCCB0
+ 413433E74102000000CDCCB0413433EF4102000000CDCCB0410100F841020000
+ 006766B24100000042020000009A99B5419A99034202000000CDCCB841343307
+ 42020000009A99BD41CDCC0A42020000003433C3419A990D4202000000CECCC8
+ 4167661042020000003433CF41CDCC1242020000003433D74167661442020000
+ 003333DF4100001642020000003333E741CDCC1642020000003333EF41CDCC16
+ 42030000003333EF41CDCC16420A46696C6C2E436F6C6F720708636C61576869
+ 74650748697454657374080A53697A652E57696474680500000000000000D003
+ 400B53697A652E4865696768740500000000000000E003401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 08577261704D6F64650703466974000000005450463007544C61796F75740009
+ 5374796C654E616D65061172656D6F7665627574746F6E7374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C003401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C65080B466978656448656967
+ 68740218000654476C79706800095374796C654E616D65060A676C7970687374
+ 796C650C4D617267696E732E4C65667405000000000000009002400B4D617267
+ 696E732E546F7005000000000000009002400E4D617267696E732E426F74746F
+ 6D050000000000000090024005416C69676E07044C6566740A506F736974696F
+ 6E2E5805000000000000008404400A506F736974696F6E2E5905000000000000
+ 009002400A53697A652E576964746805000000000000008004400B53697A652E
+ 4865696768740500000000000000C001401453697A652E506C6174666F726D44
+ 656661756C740800000A5452656374616E676C6500095374796C654E616D6506
+ 0A6261636B67726F756E6405416C69676E0706436C69656E740C436C69704368
+ 696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F720709
+ 7846463230323032300748697454657374080C4D617267696E732E4C65667405
+ 00000000000000C003C00A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C003401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574
+ 746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E0500000000
+ 0000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
+ 537461727456616C756507097846463230323032300953746F7056616C756507
+ 097846463430343034300754726967676572063049734D6F7573654F7665723D
+ 747275653B4973507265737365643D66616C73653B4973466F63757365643D66
+ 616C73650E54726967676572496E7665727365063149734D6F7573654F766572
+ 3D66616C73653B4973507265737365643D66616C73653B4973466F6375736564
+ 3D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650615627574746F6E436F6C6F72416E696D6174696F6E33084475726174
+ 696F6E05000000000000000000000C50726F70657274794E616D65060A46696C
+ 6C2E436F6C6F720A537461727456616C75650709784646324138324532095374
+ 6F7056616C756507097846463137353739430754726967676572062E49735072
+ 65737365643D747275653B49734D6F7573654F7665723D747275653B4973466F
+ 63757365643D747275650E54726967676572496E7665727365062F4973507265
+ 737365643D66616C73653B49734D6F7573654F7665723D747275653B4973466F
+ 63757365643D7472756500000005545465787400095374796C654E616D650604
+ 7465787405416C69676E0706436C69656E740748697454657374080A53697A65
+ 2E576964746805000000000000009805400B53697A652E486569676874050000
+ 0000000000C003401453697A652E506C6174666F726D44656661756C74080454
+ 657874060454657874165465787453657474696E67732E466F6E74436F6C6F72
+ 0708636C615768697465000007544C61796F757400095374796C654E616D6506
+ 074C61796F75743205416C69676E07044C6566740A53697A652E576964746805
+ 00000000000000C003400B53697A652E4865696768740500000000000000C003
+ 401453697A652E506C6174666F726D44656661756C7408000554506174680009
+ 5374796C654E616D65060469636F6E05416C69676E0708436F6E74656E747309
+ 446174612E506174680A4C000000060000000000000000004041CDCC4C3F0100
+ 000000000000CDCC4C3F01000000000000000000000001000000000040410000
+ 00000100000000004041CDCC4C3F0300000000004041CDCC4C3F0A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080C4D617267696E73
+ 2E4C65667405000000000000008001400B4D617267696E732E546F7005000000
+ 000000008001400D4D617267696E732E52696768740500000000000000800140
+ 0E4D617267696E732E426F74746F6D05000000000000008001400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 000000008003401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6508577261704D6F64650703466974000000
+ 00545046300A5452656374616E676C6500095374796C654E616D650614706F70
+ 75706261636B67726F756E647374796C6505416C69676E070643656E7465720A
+ 46696C6C2E436F6C6F7207097846463244324432440A53697A652E5769647468
+ 05000000000000009407400B53697A652E4865696768740500000000000080D2
+ 06401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F7207097846463135313531350756697369626C65080000}
+ end>
+ Left = 56
+ Top = 32
+ end
+end
diff --git a/src/lib/Components/TCompLabel/Test Project/CompLabelUnit.pas b/src/lib/Components/TCompLabel/Test Project/CompLabelUnit.pas
new file mode 100644
index 0000000..18bb3d0
--- /dev/null
+++ b/src/lib/Components/TCompLabel/Test Project/CompLabelUnit.pas
@@ -0,0 +1,38 @@
+unit CompLabelUnit;
+
+interface
+
+uses
+ System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
+ FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
+ FMX.CompLabel, FMX.Controls.Presentation, FMX.StdCtrls;
+
+type
+ TForm1 = class(TForm)
+ Button1: TButton;
+ CompLabel1: TCompLabel;
+ Label1: TLabel;
+ StyleBook1: TStyleBook;
+ procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
+ Y: Single);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{$R *.fmx}
+
+procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
+ Y: Single);
+begin
+ if ObjectAtPoint(TPointF.Create(X, Y)) <> nil then
+ Label1.Text := Format('X = %n; Y = %n; Class = %s', [X, Y, ObjectAtPoint(TPointF.Create(X, Y)).GetObject.ClassName]);
+end;
+
+end.
diff --git a/src/lib/Components/TRenderProgress/Package/FMX.RenderProgress.pas b/src/lib/Components/TRenderProgress/Package/FMX.RenderProgress.pas
new file mode 100644
index 0000000..24871c9
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Package/FMX.RenderProgress.pas
@@ -0,0 +1,318 @@
+unit FMX.RenderProgress;
+
+interface
+
+uses
+ System.Types, System.SysUtils, System.Classes,
+ FMX.Types, FMX.Controls, FMX.Styles, FMX.StdCtrls, FMX.Objects, FMX.ActnList, FMX.Memo,
+ AErenderLauncher.AerenderParser;
+
+type
+ TRenderProgress = class(TStyledControl)
+ private
+ FComposition, FStatus,
+ FST_WaitingForAErender, FST_Rendering, FST_FinishedRender, FST_RenderError: String;
+ FLog: TStrings;
+ FInFrame, FOutFrame, FValue: Single;
+ FMemoVisible, FIsError: Boolean;
+ FDuration: TTimecode;
+ FFrameRate: Real;
+
+ function GetComposition: String;
+ procedure SetComposition(Value: String);
+
+// function GetStatus: String;
+// procedure SetStatus(Value: String);
+
+ function GetInFrame: Single;
+ procedure SetInFrame(Value: Single);
+
+ function GetOutFrame: Single;
+ procedure SetOutFrame(Value: Single);
+
+ function GetValue: Single;
+ procedure SetValue(Value: Single);
+
+ function GetLog: TStrings;
+ procedure SetLog(Value: TStrings);
+
+ function GetMemoVisible: Boolean;
+ procedure SetMemoVisible(Value: Boolean);
+
+ function GetIsError: Boolean;
+ procedure SetIsError(Value: Boolean);
+
+ procedure LogButtonClick(Sender: TObject);
+ protected
+ function GetStyleObject: TFmxObject; override;
+ procedure ApplyStyle; override;
+ public
+ procedure GoToTextEnd;
+ constructor Create(AOwner: TComponent); override;
+ published
+ property Align default TAlignLayout.None;
+ property Size;
+ property Position;
+ property Margins;
+
+ property Composition: String read GetComposition write SetComposition;
+
+ property ST_WaitingForAErender: String read FST_WaitingForAErender write FST_WaitingForAErender;
+ property ST_Rendering: String read FST_Rendering write FST_Rendering;
+ property ST_FinishedRender: String read FST_FinishedRender write FST_FinishedRender;
+ property ST_RenderError: String read FST_RenderError write FST_RenderError;
+
+ property InFrame: Single read GetInFrame write SetInFrame;
+ property OutFrame: Single read GetOutFrame write SetOutFrame;
+ property Value: Single read GetValue write SetValue;
+ property MemoVisible: Boolean read GetMemoVisible write SetMemoVisible;
+ property IsError: Boolean read GetIsError write SetIsError;
+
+ property Log: TStrings read GetLog write SetLog;
+
+ property Duration: TTimecode read FDuration write FDuration;
+ property FrameRate: Real read FFrameRate write FFrameRate;
+ end;
+
+procedure Register;
+
+implementation
+
+{$R *.res}
+
+{$REGION 'Compoisition'}
+
+function TRenderProgress.GetComposition: String;
+begin
+ FComposition := StylesData['comp.text'].AsString;
+ Result := FComposition;
+end;
+
+procedure TRenderProgress.SetComposition(Value: String);
+begin
+ StylesData['comp.text'] := Value;
+ FComposition := Value;
+end;
+
+{$ENDREGION}
+
+{$REGION '[DEPRECATED] Status'}
+//
+//function TRenderProgress.GetStatus: String;
+//begin
+// FStatus := StylesData['status.text'].AsString;
+// Result := FStatus;
+//end;
+//
+//procedure TRenderProgress.SetStatus(Value: String);
+//begin
+// StylesData['status.text'] := Value;
+// FStatus := Value;
+//end;
+//
+{$ENDREGION}
+
+{$REGION 'InFrame'}
+
+function TRenderProgress.GetInFrame: Single;
+begin
+ FInFrame := StylesData['progressbar.min'].AsExtended;
+ Result := FInFrame;
+end;
+
+procedure TRenderProgress.SetInFrame(Value: Single);
+begin
+ StylesData['progressbar.min'] := Value;
+ FInFrame := Value;
+
+ if FValue = -1 then
+ StylesData['frames.text'] := '...'
+ else
+ StylesData['frames.text'] := Format('%s / %s', [IntToStr(Trunc(FValue)), IntToStr(Trunc(FOutFrame))])
+end;
+
+{$ENDREGION}
+
+{$REGION 'OutFrame'}
+
+function TRenderProgress.GetOutFrame: Single;
+begin
+ FOutFrame := StylesData['progressbar.max'].AsExtended;
+ Result := FOutFrame;
+end;
+
+procedure TRenderProgress.SetOutFrame(Value: Single);
+begin
+ StylesData['progressbar.max'] := Value;
+ FOutFrame := Value;
+
+ if FValue = -1 then
+ StylesData['frames.text'] := '...'
+ else
+ StylesData['frames.text'] := Format('%s / %s', [IntToStr(Trunc(FValue)), IntToStr(Trunc(FOutFrame))])
+end;
+
+{$ENDREGION}
+
+{$REGION 'Value'}
+function TRenderProgress.GetValue: Single;
+begin
+ FValue := StylesData['progressbar.value'].AsExtended;
+ Result := FValue;
+end;
+
+procedure TRenderProgress.SetValue(Value: Single);
+begin
+ // Set Progressbar value
+ StylesData['progressbar.value'] := Value;
+ FValue := Value;
+
+ // Set Progressbar visibility
+ StylesData['progressbar.visible'] := Trunc(Value) >= 0;
+ StylesData['ani.visible'] := Trunc(Value) = -1;
+
+ if not FIsError then
+ if FValue = -1 then begin // Waiting for aerender
+ StylesData['frames.text'] := '...';
+ StylesData['status.text'] := FST_WaitingForAErender;
+ end else
+ if (FValue >= 0) and (FValue <= FOutFrame) then begin // Rendering
+ if FValue = FOutFrame then begin // Finished rendering
+ StylesData['status.text'] := FST_FinishedRender;
+ StylesData['progressbar.stylelookup'] := 'progressbarminifinishstyle';
+ end else begin // Still rendering
+ StylesData['status.text'] := FST_Rendering;
+ StylesData['progressbar.stylelookup'] := 'progressbarministyle';
+ end;
+ StylesData['frames.text'] := Format('%s / %s', [IntToStr(Trunc(FValue)), IntToStr(Trunc(FOutFrame))])
+ end;
+
+end;
+{$ENDREGION}
+
+{$REGION 'Log'}
+function TRenderProgress.GetLog: TStrings;
+begin
+ FLog := StylesData['log.lines'].AsType;
+ Result := FLog;
+end;
+
+procedure TRenderProgress.SetLog(Value: TStrings);
+begin
+ StylesData['log.lines'] := Value;
+ FLog := Value;
+
+ var memo: TMemo := StylesData['log'].AsType;
+ if memo <> nil then
+ memo.GoToTextEnd;
+end;
+{$ENDREGION}
+
+{$REGION 'Memo'}
+function TRenderProgress.GetMemoVisible: Boolean;
+begin
+ FMemoVisible := StylesData['log.visible'].AsBoolean;
+ Result := FMemoVisible;
+end;
+
+procedure TRenderProgress.SetMemoVisible(Value: Boolean);
+begin
+ if Value then
+ Height := 240
+ else
+ Height := 48;
+ StylesData['log.visible'] := Value;
+ FMemoVisible := Value;
+end;
+{$ENDREGION}
+
+{$REGION 'IsError'}
+function TRenderProgress.GetIsError: Boolean;
+begin
+ Result := FIsError;
+end;
+
+procedure TRenderProgress.SetIsError(Value: Boolean);
+begin
+ if Value then begin
+ StylesData['status.text'] := FST_RenderError;
+ StylesData['progressbar.stylelookup'] := 'progressbarminierrorstyle';
+ //StylesData['frames.text'] := '...';
+ end else
+ if (FValue >= 0) and (FValue < FOutFrame) then begin
+ StylesData['status.text'] := FST_Rendering;
+ StylesData['progressbar.stylelookup'] := 'progressbarministyle';
+ end else begin
+ StylesData['status.text'] := FST_FinishedRender;
+ StylesData['progressbar.stylelookup'] := 'progressbarminifinishstyle';
+ end;
+
+ FIsError := Value;
+end;
+{$ENDREGION}
+
+function TRenderProgress.GetStyleObject: TFmxObject;
+const
+ Style = 'RenderProgressDesignStyle';
+begin
+ if StyleLookup = '' then begin
+ Result := TControl(TStyleStreaming.LoadFromResource(HInstance, Style, RT_RCDATA));
+ exit;
+ end;
+ Result := inherited GetStyleObject;
+end;
+
+procedure TRenderProgress.ApplyStyle;
+var
+ LogButton: TButton;
+begin
+ inherited;
+
+ if FindStyleResource('logbutton', LogButton) then
+ if not Assigned(LogButton.OnClick) then
+ LogButton.OnClick := LogButtonClick;
+end;
+
+procedure TRenderProgress.LogButtonClick(Sender: TObject);
+begin
+ if MemoVisible then
+ MemoVisible := False
+ else
+ MemoVisible := True;
+end;
+
+procedure TRenderProgress.GoToTextEnd;
+var
+ Memo: TMemo;
+begin
+ if FindStyleResource('log', Memo) then
+ Memo.GoToTextEnd;
+end;
+
+constructor TRenderProgress.Create(AOwner: TComponent);
+begin
+ inherited;
+ Height := 240;
+ Width := 480;
+ Composition := 'comptext';
+ ST_WaitingForAErender := 'Waiting for aerender...';
+ ST_Rendering := 'Rendering';
+ ST_FinishedRender := 'Rendering finished';
+ ST_RenderError := 'ERROR: See log for more info';
+ InFrame := -1;
+ OutFrame := 100;
+ Value := -1;
+ Log := TStringList.Create;
+ MemoVisible := False;
+
+ Duration := TTimecode.Create(0, 0, 0, 0);
+ FrameRate := 0.00;
+ //Log := TStrings.Create;
+end;
+
+procedure Register;
+begin
+ RegisterComponents('AErender Launcher', [TRenderProgress]);
+end;
+
+end.
diff --git a/src/lib/Components/TRenderProgress/Package/FMX.RenderProgress.rc b/src/lib/Components/TRenderProgress/Package/FMX.RenderProgress.rc
new file mode 100644
index 0000000..e21c559
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Package/FMX.RenderProgress.rc
@@ -0,0 +1 @@
+RenderProgressDesignStyle RCDATA "RenderProgressDesign.style"
diff --git a/src/lib/Components/TRenderProgress/Package/RenderProgress.dpk b/src/lib/Components/TRenderProgress/Package/RenderProgress.dpk
new file mode 100644
index 0000000..2890643
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Package/RenderProgress.dpk
@@ -0,0 +1,38 @@
+package RenderProgress;
+
+{$R *.res}
+{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION OFF}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DEFINE DEBUG}
+{$ENDIF IMPLICITBUILDING}
+{$IMPLICITBUILD ON}
+
+requires
+ rtl,
+ designide,
+ fmx;
+
+contains
+ FMX.RenderProgress in 'FMX.RenderProgress.pas';
+
+end.
diff --git a/src/lib/Components/TRenderProgress/Package/RenderProgress.dproj b/src/lib/Components/TRenderProgress/Package/RenderProgress.dproj
new file mode 100644
index 0000000..d813187
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Package/RenderProgress.dproj
@@ -0,0 +1,896 @@
+
+
+ {43162C7F-3069-4108-A170-0A27EE47F323}
+ RenderProgress.dpk
+ 19.2
+ FMX
+ True
+ Debug
+ Win32
+ 1
+ Package
+
+
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Base
+ true
+
+
+ .\$(Platform)\$(Config)
+ .\$(Platform)\$(Config)
+ false
+ false
+ false
+ false
+ false
+ true
+ true
+ System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)
+ All
+ RenderProgress
+
+
+ None
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ rtl;fmx;$(DCC_UsePackage)
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ None
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ rtl;fmx;$(DCC_UsePackage)
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ None
+ rtl;fmx;$(DCC_UsePackage)
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png
+
+
+ None
+ rtl;fmx;$(DCC_UsePackage)
+
+
+ rtl;fmx;$(DCC_UsePackage)
+
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+ rtl;fmx;$(DCC_UsePackage)
+
+
+ rtl;fmx;$(DCC_UsePackage)
+
+
+ DEBUG;$(DCC_Define)
+ true
+ false
+ true
+ true
+ true
+
+
+ false
+
+
+ false
+ RELEASE;$(DCC_Define)
+ 0
+ 0
+
+
+
+ MainSource
+
+
+
+
+
+
+
+
+
+ Cfg_2
+ Base
+
+
+ Base
+
+
+ Cfg_1
+ Base
+
+
+
+ Delphi.Personality.12
+ Package
+
+
+
+ RenderProgress.dpk
+
+
+
+ False
+ False
+ False
+ False
+ False
+ True
+ False
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ RenderProgress.bpl
+ true
+
+
+
+
+ 1
+
+
+ 0
+
+
+
+
+ classes
+ 1
+
+
+ classes
+ 1
+
+
+
+
+ res\xml
+ 1
+
+
+ res\xml
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\values-v21
+ 1
+
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ 1
+ .framework
+
+
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
diff --git a/src/lib/Components/TRenderProgress/Package/RenderProgressDesign.style b/src/lib/Components/TRenderProgress/Package/RenderProgressDesign.style
new file mode 100644
index 0000000..5d6c106
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Package/RenderProgressDesign.style
@@ -0,0 +1,118 @@
+object TLayout
+ StyleName = 'renderprogressstyle'
+ Align = Center
+ Size.Width = 572.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object TPanel
+ StyleName = 'bgpanel'
+ Align = Contents
+ Size.Width = 572.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'content'
+ Align = Contents
+ Size.Width = 572.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object TLabel
+ StyleName = 'comp'
+ Align = MostLeft
+ AutoSize = True
+ StyledSettings = [Family, Style, FontColor]
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 40.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ TextSettings.WordWrap = False
+ Text = 'comp'
+ end
+ object TMemo
+ StyleName = 'log'
+ Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
+ DataDetectorTypes = []
+ StyledSettings = [Style, FontColor]
+ TextSettings.Font.Family = 'Consolas'
+ Align = MostBottom
+ Position.Y = 48.000000000000000000
+ Size.Width = 572.000000000000000000
+ Size.Height = 192.000000000000000000
+ Size.PlatformDefault = False
+ Viewport.Width = 568.000000000000000000
+ Viewport.Height = 188.000000000000000000
+ end
+ object TAniIndicator
+ StyleName = 'ani'
+ Align = Client
+ Enabled = True
+ StyleLookup = 'aniindicatorhorzstyle'
+ HitTest = False
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Bottom = 16.000000000000000000
+ Size.Width = 380.000000000000000000
+ Size.Height = 3.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLabel
+ StyleName = 'status'
+ Align = Top
+ StyledSettings = [Family, Size, FontColor]
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Position.X = 72.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 380.000000000000000000
+ Size.Height = 17.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'status'
+ end
+ object TProgressBar
+ StyleName = 'progressbar'
+ Align = Client
+ HitTest = False
+ Orientation = Horizontal
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Bottom = 16.000000000000000000
+ Size.Width = 391.000000000000000000
+ Size.Height = 3.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'progressbarministyle'
+ Value = 50.000000000000000000
+ Visible = False
+ end
+ object TButton
+ StyleName = 'logbutton'
+ Align = MostRight
+ Position.X = 524.000000000000000000
+ Size.Width = 48.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'logbuttonstyle'
+ end
+ object TLabel
+ StyleName = 'frames'
+ Align = MostRight
+ AutoSize = True
+ StyledSettings = [Family, FontColor]
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Position.X = 460.000000000000000000
+ Size.Width = 48.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ TextSettings.WordWrap = False
+ Text = 'frames'
+ end
+ end
+end
diff --git a/src/lib/Components/TRenderProgress/RenderProgressComponent.groupproj b/src/lib/Components/TRenderProgress/RenderProgressComponent.groupproj
new file mode 100644
index 0000000..693f187
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/RenderProgressComponent.groupproj
@@ -0,0 +1,48 @@
+
+
+ {C7B9F1BA-6D22-4F9E-B690-1ED1812117BB}
+
+
+
+
+
+
+
+
+
+
+ Default.Personality.12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/Components/TRenderProgress/TRenderProgress.groupproj b/src/lib/Components/TRenderProgress/TRenderProgress.groupproj
new file mode 100644
index 0000000..e3f9f09
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/TRenderProgress.groupproj
@@ -0,0 +1,48 @@
+
+
+ {6DC5DB84-E3A9-48CB-8B52-E81110201511}
+
+
+
+
+
+
+
+
+
+
+ Default.Personality.12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/Components/TRenderProgress/Test Project/RenderProgressTest.dpr b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTest.dpr
new file mode 100644
index 0000000..47145b6
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTest.dpr
@@ -0,0 +1,15 @@
+program RenderProgressTest;
+
+uses
+ System.StartUpCopy,
+ FMX.Forms,
+ FMX.RenderProgress in '..\Package\FMX.RenderProgress.pas',
+ RenderProgressUnit in 'RenderProgressUnit.pas' {Form1};
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
diff --git a/src/lib/Components/TRenderProgress/Test Project/RenderProgressTest.dproj b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTest.dproj
new file mode 100644
index 0000000..489f74e
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTest.dproj
@@ -0,0 +1,1098 @@
+
+
+ {4F833CCA-91A8-41FF-9C6D-D740C8DD9CF6}
+ 19.2
+ FMX
+ True
+ Debug
+ Win32
+ 37907
+ Application
+ RenderProgressTest.dpr
+
+
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Cfg_1
+ true
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ true
+ Cfg_2
+ true
+ true
+
+
+ .\$(Platform)\$(Config)
+ .\$(Platform)\$(Config)
+ false
+ false
+ false
+ false
+ false
+ System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ $(BDS)\bin\delphi_PROJECTICON.ico
+ $(BDS)\bin\delphi_PROJECTICNS.icns
+ RenderProgressTest
+
+
+ DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ Debug
+ true
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+ package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=
+ Debug
+ true
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png
+ $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png
+ $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png
+ android-support-v4.dex.jar;cloud-messaging.dex.jar;com-google-android-gms.play-services-ads-base.17.2.0.dex.jar;com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar;com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar;com-google-android-gms.play-services-ads.17.2.0.dex.jar;com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar;com-google-android-gms.play-services-analytics.16.0.8.dex.jar;com-google-android-gms.play-services-base.16.0.1.dex.jar;com-google-android-gms.play-services-basement.16.2.0.dex.jar;com-google-android-gms.play-services-gass.17.2.0.dex.jar;com-google-android-gms.play-services-identity.16.0.0.dex.jar;com-google-android-gms.play-services-maps.16.1.0.dex.jar;com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar;com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar;com-google-android-gms.play-services-stats.16.0.1.dex.jar;com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar;com-google-android-gms.play-services-tasks.16.0.1.dex.jar;com-google-android-gms.play-services-wallet.16.0.1.dex.jar;com-google-firebase.firebase-analytics.16.4.0.dex.jar;com-google-firebase.firebase-common.16.1.0.dex.jar;com-google-firebase.firebase-iid-interop.16.0.1.dex.jar;com-google-firebase.firebase-iid.17.1.1.dex.jar;com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar;com-google-firebase.firebase-messaging.17.5.0.dex.jar;fmx.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar
+ $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;TMSFMXPackPkgDXE13;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+ CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers
+ iPhoneAndiPad
+ true
+ Debug
+ $(MSBuildProjectName)
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;bindcompfmx;FmxTeeUI;fmx;FireDACIBDriver;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;fgx;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXInterBaseDriver;emsclientfiredac;tethering;DataSnapFireDAC;FireDACMSSQLDriver;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;fmx;FireDACIBDriver;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;soapserver;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;FireDACDSDriver;rtl;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;bindcomp;fgx;DBXInformixDriver;IndyIPClient;CompLabel;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers
+ Debug
+ true
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;TMSFMXPackPkgDXE13;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;fgx;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;CompLabel;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+ $(BDS)\bin\default_app.manifest
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
+
+
+ DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;fgx;DBXInformixDriver;IndyIPClient;bindcompvcl;TeeUI;CompLabel;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage)
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
+ true
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ 1033
+ $(BDS)\bin\default_app.manifest
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png
+ $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png
+
+
+ DEBUG;$(DCC_Define)
+ true
+ false
+ true
+ true
+ true
+
+
+ false
+ true
+ PerMonitorV2
+
+
+ true
+ PerMonitorV2
+
+
+ false
+ RELEASE;$(DCC_Define)
+ 0
+ 0
+
+
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png
+ $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png
+ $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png
+
+
+ true
+ PerMonitorV2
+
+
+ true
+ PerMonitorV2
+
+
+
+ MainSource
+
+
+
+
+
+
+ Cfg_2
+ Base
+
+
+ Base
+
+
+ Cfg_1
+ Base
+
+
+
+ Delphi.Personality.12
+ Application
+
+
+
+ RenderProgressTest.dpr
+
+
+
+ True
+ True
+ True
+ False
+ True
+ True
+ True
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ true
+
+
+
+
+ RenderProgressTest.exe
+ true
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ classes
+ 1
+
+
+ classes
+ 1
+
+
+
+
+ res\xml
+ 1
+
+
+ res\xml
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\armeabi
+ 1
+
+
+ library\lib\armeabi
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ library\lib\mips
+ 1
+
+
+ library\lib\mips
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\values-v21
+ 1
+
+
+ res\values-v21
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-ldpi
+ 1
+
+
+ res\drawable-ldpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-mdpi
+ 1
+
+
+ res\drawable-mdpi
+ 1
+
+
+
+
+ res\drawable-hdpi
+ 1
+
+
+ res\drawable-hdpi
+ 1
+
+
+
+
+ res\drawable-xhdpi
+ 1
+
+
+ res\drawable-xhdpi
+ 1
+
+
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+ res\drawable-xxhdpi
+ 1
+
+
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+ res\drawable-xxxhdpi
+ 1
+
+
+
+
+ res\drawable-small
+ 1
+
+
+ res\drawable-small
+ 1
+
+
+
+
+ res\drawable-normal
+ 1
+
+
+ res\drawable-normal
+ 1
+
+
+
+
+ res\drawable-large
+ 1
+
+
+ res\drawable-large
+ 1
+
+
+
+
+ res\drawable-xlarge
+ 1
+
+
+ res\drawable-xlarge
+ 1
+
+
+
+
+ res\values
+ 1
+
+
+ res\values
+ 1
+
+
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ Contents\MacOS
+ 1
+ .framework
+
+
+ 0
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .dll;.bpl
+
+
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ Contents\MacOS
+ 1
+ .dylib
+
+
+ 0
+ .bpl
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ Contents\Resources\StartUp\
+ 0
+
+
+ 0
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+ ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+ ..\$(PROJECTNAME).launchscreen
+ 64
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+ ..\
+ 1
+
+
+ ..\
+ 1
+
+
+
+
+ Contents
+ 1
+
+
+ Contents
+ 1
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ Contents\MacOS
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
diff --git a/src/lib/Components/TRenderProgress/Test Project/RenderProgressTestUnit.fmx b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTestUnit.fmx
new file mode 100644
index 0000000..d6b9aee
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTestUnit.fmx
@@ -0,0 +1,3638 @@
+object Form1: TForm1
+ Left = 0
+ Top = 0
+ Caption = 'Form1'
+ ClientHeight = 447
+ ClientWidth = 1054
+ StyleBook = StyleBook2
+ FormFactor.Width = 320
+ FormFactor.Height = 480
+ FormFactor.Devices = [Desktop]
+ DesignerMasterStyle = 0
+ object Layout1: TLayout
+ Align = Center
+ Enabled = False
+ Size.Width = 690.000000000000000000
+ Size.Height = 256.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ object Panel1: TPanel
+ Align = Top
+ Margins.Left = 8.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 8.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 674.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object Label1: TLabel
+ Align = MostLeft
+ StyledSettings = [Family, Style, FontColor]
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Margins.Bottom = 8.000000000000000000
+ Position.X = 16.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 120.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ Text = 'Composition'
+ end
+ object Label2: TLabel
+ Align = MostRight
+ AutoSize = True
+ StyledSettings = [Family, FontColor]
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 16.000000000000000000
+ Position.X = 551.000000000000000000
+ Size.Width = 59.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.Size = 16.000000000000000000
+ TextSettings.WordWrap = False
+ Text = '56 / 600'
+ end
+ object Button1: TButton
+ Align = MostRight
+ Position.X = 626.000000000000000000
+ Size.Width = 48.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'logbuttonstyle'
+ end
+ object Label3: TLabel
+ Align = Top
+ StyledSettings = [Family, Size, FontColor]
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 8.000000000000000000
+ Position.X = 152.000000000000000000
+ Position.Y = 8.000000000000000000
+ Size.Width = 391.000000000000000000
+ Size.Height = 17.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.Font.StyleExt = {00070000000000000004000000}
+ Text = 'Status Text'
+ end
+ object ProgressBar1: TProgressBar
+ Align = Client
+ HitTest = False
+ Orientation = Horizontal
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Bottom = 16.000000000000000000
+ Size.Width = 391.000000000000000000
+ Size.Height = 3.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'progressbarministyle'
+ Value = 50.000000000000000000
+ Visible = False
+ end
+ object AniIndicator1: TAniIndicator
+ Align = Client
+ Enabled = True
+ StyleLookup = 'aniindicatorhorzstyle'
+ HitTest = False
+ Margins.Left = 16.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Bottom = 16.000000000000000000
+ Size.Width = 391.000000000000000000
+ Size.Height = 3.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object Memo1: TMemo
+ Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
+ DataDetectorTypes = []
+ StyledSettings = [Family, FontColor]
+ Align = MostBottom
+ Position.Y = 48.000000000000000000
+ Size.Width = 674.000000000000000000
+ Size.Height = 192.000000000000000000
+ Size.PlatformDefault = False
+ Viewport.Width = 670.000000000000000000
+ Viewport.Height = 188.000000000000000000
+ end
+ end
+ end
+ object StyleBook1: TStyleBook
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501061372656E64657270726F67726573737374
+ 796C65037608005450463007544C61796F757400095374796C654E616D650613
+ 72656E64657270726F67726573737374796C6505416C69676E070643656E7465
+ 720A53697A652E576964746805000000000000008F08400B53697A652E486569
+ 6768740500000000000000F006401453697A652E506C6174666F726D44656661
+ 756C740800065450616E656C00095374796C654E616D650607626770616E656C
+ 05416C69676E0706436C69656E740A53697A652E576964746805000000000000
+ 008F08400B53697A652E4865696768740500000000000000F006401453697A65
+ 2E506C6174666F726D44656661756C74080006544C6162656C00095374796C65
+ 4E616D650604636F6D7005416C69676E07084D6F73744C6566740E5374796C65
+ 6453657474696E67730B0646616D696C79055374796C6509466F6E74436F6C6F
+ 72000C4D617267696E732E4C65667405000000000000008003400B4D61726769
+ 6E732E546F7005000000000000008002400E4D617267696E732E426F74746F6D
+ 05000000000000008002400A506F736974696F6E2E5805000000000000008003
+ 400A506F736974696F6E2E5905000000000000008002400A53697A652E576964
+ 74680500000000000000F005400B53697A652E48656967687405000000000000
+ 008004401453697A652E506C6174666F726D44656661756C7408165465787453
+ 657474696E67732E466F6E742E53697A65050000000000000080034004546578
+ 74060B436F6D706F736974696F6E000006544C6162656C00095374796C654E61
+ 6D6506066672616D657305416C69676E07094D6F73745269676874084175746F
+ 53697A65090E5374796C656453657474696E67730B0646616D696C7909466F6E
+ 74436F6C6F72000C4D617267696E732E4C65667405000000000000008002400D
+ 4D617267696E732E526967687405000000000000008003400A506F736974696F
+ 6E2E580500000000000080E007400A53697A652E576964746805000000000000
+ 00EC04400B53697A652E4865696768740500000000000000C004401453697A65
+ 2E506C6174666F726D44656661756C7408165465787453657474696E67732E46
+ 6F6E742E53697A650500000000000000800340155465787453657474696E6773
+ 2E576F72645772617008045465787406083536202F2036303000000754427574
+ 746F6E00095374796C654E616D6506096C6F67627574746F6E05416C69676E07
+ 094D6F737452696768740A506F736974696F6E2E580500000000000000830840
+ 0A53697A652E57696474680500000000000000C004400B53697A652E48656967
+ 68740500000000000000C004401453697A652E506C6174666F726D4465666175
+ 6C74080B5374796C654C6F6F6B7570060E6C6F67627574746F6E7374796C6500
+ 0006544C6162656C00095374796C654E616D65060673746174757305416C6967
+ 6E0703546F700E5374796C656453657474696E67730B0646616D696C79045369
+ 7A6509466F6E74436F6C6F72000C4D617267696E732E4C656674050000000000
+ 00008003400B4D617267696E732E546F7005000000000000008002400A506F73
+ 6974696F6E2E5805000000000000009806400A506F736974696F6E2E59050000
+ 00000000008002400A53697A652E576964746805000000000000809007400B53
+ 697A652E48656967687405000000000000008803401453697A652E506C617466
+ 6F726D44656661756C74081A5465787453657474696E67732E466F6E742E5374
+ 796C654578740A0D000000000700000000000000040000000454657874060B53
+ 7461747573205465787400000C5450726F677265737342617200095374796C65
+ 4E616D65060B70726F677265737362617205416C69676E0706436C69656E7407
+ 48697454657374080B4F7269656E746174696F6E070A486F72697A6F6E74616C
+ 0C4D617267696E732E4C65667405000000000000008003400B4D617267696E73
+ 2E546F7005000000000000008001400E4D617267696E732E426F74746F6D0500
+ 0000000000008003400A53697A652E57696474680500000000000080C307400B
+ 53697A652E4865696768740500000000000000C000401453697A652E506C6174
+ 666F726D44656661756C74080B5374796C654C6F6F6B7570061470726F677265
+ 73736261726D696E697374796C650556616C75650500000000000000C8044007
+ 56697369626C650800000D54416E69496E64696361746F7200095374796C654E
+ 616D650603616E6905416C69676E0706436C69656E7407456E61626C6564090B
+ 5374796C654C6F6F6B75700615616E69696E64696361746F72686F727A737479
+ 6C650748697454657374080C4D617267696E732E4C6566740500000000000000
+ 8003400B4D617267696E732E546F7005000000000000008001400E4D61726769
+ 6E732E426F74746F6D05000000000000008003400A53697A652E576964746805
+ 000000000000809007400B53697A652E4865696768740500000000000000C000
+ 401453697A652E506C6174666F726D44656661756C7408000005544D656D6F00
+ 095374796C654E616D6506036C6F6719546F7563682E496E7465726163746976
+ 6547657374757265730B0350616E074C6F6E6754617009446F75626C65546170
+ 0011446174614465746563746F7254797065730B000E5374796C656453657474
+ 696E67730B055374796C6509466F6E74436F6C6F720018546578745365747469
+ 6E67732E466F6E742E46616D696C790608436F6E736F6C617305416C69676E07
+ 0A4D6F7374426F74746F6D0A506F736974696F6E2E590500000000000000C004
+ 400A53697A652E576964746805000000000000008F08400B53697A652E486569
+ 6768740500000000000000C006401453697A652E506C6174666F726D44656661
+ 756C74080E56696577706F72742E576964746805000000000000008E08400F56
+ 696577706F72742E4865696768740500000000000000BC064000000000}
+ end>
+ Left = 24
+ Top = 24
+ end
+ object StyleBook2: TStyleBook
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
+ AF00060B627574746F6E7374796C6503BA040609656469747374796C6503A305
+ 060A6C6162656C7374796C65031501060D67726F7570626F787374796C650383
+ 02060D747261636B6261727374796C65038107060D636865636B626F78737479
+ 6C6503880506147363726F6C6C62617268747261636B7374796C65033B010614
+ 7363726F6C6C62617276747261636B7374796C65033B0106157363726F6C6C62
+ 6172626F74746F6D627574746F6E03220406137363726F6C6C6261726C656674
+ 627574746F6E03390406147363726F6C6C6261727269676874627574746F6E03
+ 3A0406127363726F6C6C626172746F70627574746F6E033804060E7363726F6C
+ 6C6261727374796C65035804060A7468756D627374796C65033B02060B737769
+ 7463687374796C6503D101060D636F6D626F626F787374796C6503F607060E63
+ 6F6D626F656469747374796C65038209060F746162636F6E74726F6C7374796C
+ 65039C01060B746162646F747374796C65035901060C7461626974656D737479
+ 6C6503E404060D7468756D626261727374796C65034F03060C6C697374626F78
+ 7374796C6503A207060D6C697374626F78666F6F74657203800106106C697374
+ 626F786974656D7374796C65031B0306126C697374626F78706C61696E686561
+ 646572033B020609677269647374796C65039808060F6865616465726974656D
+ 7374796C6503C303061970726F67726573736261726D696E696572726F727374
+ 796C65035603061170726F677265737363656C6C7374796C65039A0206106D65
+ 6E756261726974656D7374796C6503250B060C6D656E756261727374796C6503
+ 6C02060D6D656E756974656D7374796C6503520B06126D656E75736570617261
+ 746F727374796C65037801060D6D656E75766965777374796C65039102060E69
+ 6D61676563656C6C7374796C65033201060E706F70757063656C6C7374796C65
+ 03C603060D7465787463656C6C7374796C65039B0106096D656D6F7374796C65
+ 03DC07060E6C696E6B6C6162656C7374796C65034503060E7374617475736261
+ 727374796C6503E401060C7370696E626F787374796C65035407060D73697A65
+ 677269707374796C6503F004060C746F6F6C6261727374796C6503CA00061570
+ 726F67726573736261726572726F727374796C65036404060F64726F70746172
+ 6765747374796C65036804061464726F707461726765746669656C647374796C
+ 6503890E060C706F706F7665727374796C65032A02060D706F707570626F7873
+ 74796C6503320606147374617475736261726E6F677269707374796C6503D400
+ 0613736D616C6C7363726F6C6C6261727374796C6503A301060D73706C697474
+ 65727374796C650360040610636C6F7365627574746F6E7374796C6503660406
+ 0E6D6178627574746F6E7374796C6503F603060E726573627574746F6E737479
+ 6C65030F04060E6D696E627574746F6E7374796C65030E04060F746F6F6C7769
+ 6E646F777374796C6503B20D061177696E646F77626F726465727374796C6503
+ 4A100610726164696F627574746F6E7374796C6503AE050618756C63656E7465
+ 72726164696F627574746F6E7374796C650352050617756C7269676874726164
+ 696F627574746F6E7374796C650355050616756C6C656674726164696F627574
+ 746F6E7374796C65035005061670726F677265737362617266696E6973687374
+ 796C65036504060D657870616E6465727374796C650366060613657870616E64
+ 6572627574746F6E7374796C650376020615657870616E646572636865636B62
+ 6F787374796C6503D005060E6C6162656C66696C6C7374796C6503B801061363
+ 6F6D626F656469746572726F727374796C65038709061E70726F677265737362
+ 6172696E64657465726D696E61626C657374796C650379040611616E69696E64
+ 696361746F727374796C6503DF010615616E69696E64696361746F72686F727A
+ 7374796C65038A02060A70616E656C7374796C65031E01060E6C6F6762757474
+ 6F6E7374796C65038A07061470726F67726573736261726D696E697374796C65
+ 035103061B7472656576696577657870616E646572627574746F6E7374796C65
+ 037E02061174726565766965776974656D7374796C65031405060D7472656576
+ 6965777374796C650336070619616374696F6E746F6F6C627574746F6E6D756C
+ 746976696577033F07060E616464627574746F6E7374796C65032C070617696E
+ 666F746F6F6C627574746F6E6D756C74697669657703A90D061B6F7267616E69
+ 7A65746F6F6C627574746F6E6D756C74697669657703EE06061B73657474696E
+ 6773746F6F6C627574746F6E6D756C746976696577037D13061172656D6F7665
+ 627574746F6E7374796C6503CF060614706F7075706261636B67726F756E6473
+ 74796C6503BA00061A70726F67726573736261726D696E6966696E6973687374
+ 796C65035703061070726F67726573736261727374796C65035F040054504630
+ 0A5452656374616E676C6500095374796C654E616D65060F6261636B67726F75
+ 6E647374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F72
+ 07097846463244324432440A53697A652E576964746805000000000000009407
+ 400B53697A652E4865696768740500000000000080D206401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0756697369626C650800005450463007544C61796F757400095374796C654E61
+ 6D65060B627574746F6E7374796C6505416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000C805400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508000A5452656374616E676C6500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E0706436C69656E740C436C697043
+ 68696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650615627574746F6E436F6C6F72416E696D6174696F6E310844757261
+ 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463430343034300754726967676572063049734D
+ 6F7573654F7665723D747275653B4973507265737365643D66616C73653B4973
+ 466F63757365643D66616C73650E54726967676572496E766572736506314973
+ 4D6F7573654F7665723D66616C73653B4973507265737365643D66616C73653B
+ 4973466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D617469
+ 6F6E32084475726174696F6E05000000000000000000000C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3430343034300953746F7056616C756507097846463137353739430754726967
+ 676572062F4973507265737365643D747275653B49734D6F7573654F7665723D
+ 747275653B4973466F63757365643D66616C736500000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
+ 696D6174696F6E33084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463241383245320953746F7056616C75650709784646313735373943
+ 0754726967676572062E4973507265737365643D747275653B49734D6F757365
+ 4F7665723D747275653B4973466F63757365643D747275650E54726967676572
+ 496E7665727365062F4973507265737365643D66616C73653B49734D6F757365
+ 4F7665723D747275653B4973466F63757365643D747275650000000554546578
+ 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
+ 13456E61626C6544726167486967686C69676874080748697454657374080A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
+ 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
+ 74650000005450463007544C61796F757400095374796C654E616D6506096564
+ 69747374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08000C5442727573684F626A65637400095374796C654E616D65060A666F7265
+ 67726F756E6400000C5442727573684F626A65637400095374796C654E616D65
+ 060973656C656374696F6E0B42727573682E436F6C6F72070978393632413832
+ 453200000B54466F6E744F626A65637400095374796C654E616D650604666F6E
+ 7409466F6E742E53697A650500000000000000D0024000000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000C803401453697A652E506C6174
+ 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
+ 31353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614656469745374726F6B65416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060C5374726F6B652E
+ 436F6C6F720A537461727456616C756507097846463135313531350953746F70
+ 56616C756507097846463241383245320754726967676572060E4973466F6375
+ 7365643D747275650E54726967676572496E7665727365060F4973466F637573
+ 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614656469745374726F6B65416E696D6174696F6E320844757261
+ 74696F6E050000000000000000000007496E7665727365090C50726F70657274
+ 794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75650709
+ 7846463135313531350953746F7056616C756507097846463443344334430754
+ 726967676572062149734D6F7573654F7665723D747275653B4973466F637573
+ 65643D66616C73653B0E54726967676572496E7665727365062249734D6F7573
+ 654F7665723D66616C73653B4973466F63757365643D66616C73653B00000007
+ 544C61796F757400095374796C654E616D650607627574746F6E7305416C6967
+ 6E07055269676874064C6F636B6564090B4D617267696E732E546F7005000000
+ 000000008000400D4D617267696E732E52696768740500000000000000800040
+ 0E4D617267696E732E426F74746F6D05000000000000008000400A506F736974
+ 696F6E2E580500000000000000C004400A506F736974696F6E2E590500000000
+ 0000008000400A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000A803401453697A652E506C6174666F72
+ 6D44656661756C7408000007544C61796F757400095374796C654E616D650607
+ 636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D61
+ 7267696E732E4C65667405000000000000008001400B4D617267696E732E546F
+ 7005000000000000008000400D4D617267696E732E5269676874050000000000
+ 00008000400E4D617267696E732E426F74746F6D05000000000000008000400A
+ 53697A652E57696474680500000000000000A804400B53697A652E4865696768
+ 740500000000000000A803401453697A652E506C6174666F726D44656661756C
+ 7408000006544C6162656C00095374796C654E616D65060670726F6D7074064C
+ 6F636B656409074F706163697479050000000000000080FE3F16546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465045465787406
+ 04546578740000005450463007544C61796F757400095374796C654E616D6506
+ 0A6C6162656C7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C65080005545465787400095374796C654E616D6506047465787405416C
+ 69676E0708436F6E74656E74730748697454657374080A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465000000545046
+ 3007544C61796F757400095374796C654E616D65060D67726F7570626F787374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000F004400B53697A652E4865696768740500000000000000C804401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000C000
+ 400B4D617267696E732E546F7005000000000000009002400D4D617267696E73
+ 2E52696768740500000000000000C000400E4D617267696E732E426F74746F6D
+ 0500000000000000C000400A53697A652E57696474680500000000000000D804
+ 400B53697A652E48656967687405000000000000009804401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 3135313531350005545465787400095374796C654E616D650604746578740841
+ 75746F53697A65090A436C6970506172656E74090748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000A002400A506F736974696F6E2E58
+ 05000000000060559502400A506F736974696F6E2E590500000000004055D501
+ C00A53697A652E576964746805000000000000B8C703400B53697A652E486569
+ 6768740500000000000060FF02401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 5768697465155465787453657474696E67732E576F7264577261700800000000
+ 5450463007544C61796F757400095374796C654E616D65060D747261636B6261
+ 727374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000C805
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 0B46697865644865696768740211000A5452656374616E676C6500095374796C
+ 654E616D65060668747261636B05416C69676E070A5665727443656E7465720A
+ 46696C6C2E436F6C6F7207097846463135313531350748697454657374080A50
+ 6F736974696F6E2E590500000000000000BC04400A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000A001
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000A5452656374616E676C6500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946696C
+ 6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000C001400B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 0000C001400E4D617267696E732E426F74746F6D050000000000000080FF3F0A
+ 53697A652E57696474680500000000000000B005400B53697A652E4865696768
+ 740500000000000000C000401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C
+ 6500095374796C654E616D650609686967686C6967687405416C69676E07044C
+ 6566740A46696C6C2E436F6C6F72070978464632413832453207486974546573
+ 74080C50616464696E672E4C6566740500000000000000A002400A53697A652E
+ 57696474680500000000000000F003400B53697A652E48656967687405000000
+ 00000000A001401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6500000B54476C6F77456666656374000853
+ 6F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846
+ 46324138324532074F706163697479050000000000000080FF3F07456E61626C
+ 6564080000000A5452656374616E676C6500095374796C654E616D6506067674
+ 7261636B05416C69676E070A486F727A43656E7465720A46696C6C2E436F6C6F
+ 7207097846463135313531350748697454657374080A506F736974696F6E2E58
+ 0500000000000000BC04400A53697A652E57696474680500000000000000A001
+ 400B53697A652E4865696768740500000000000000C805401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
+ 756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E
+ 6F6E65064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 740500000000000000C001400B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E52696768740500000000000000C001400E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
+ 6805000000000000000000000B53697A652E4865696768740500000000000000
+ C405401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E
+ 616D650609686967686C6967687405416C69676E0703546F700A46696C6C2E43
+ 6F6C6F7207097846463241383245320748697454657374080A53697A652E5769
+ 6474680500000000000000A001400B53697A652E486569676874050000000000
+ 0000F003401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E6500000B54476C6F774566666563740008536F66
+ 746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F72070978464632
+ 4138324532074F706163697479050000000000000080FF3F07456E61626C6564
+ 0800000006545468756D6200095374796C654E616D650606687468756D62064C
+ 6F636B6564090A506F736974696F6E2E580500000000003033AB03400A506F73
+ 6974696F6E2E59050000000000FFFFA304400A53697A652E5769647468050000
+ 0000000000F002400B53697A652E4865696768740500000000000000F0024014
+ 53697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75
+ 70060D7468756D626261727374796C65000006545468756D6200095374796C65
+ 4E616D650606767468756D62064C6F636B6564090A506F736974696F6E2E5805
+ 0000000000CBCCA804400A506F736974696F6E2E590500000000009899B10340
+ 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
+ 68740500000000000000F002401453697A652E506C6174666F726D4465666175
+ 6C74080B5374796C654C6F6F6B7570060D7468756D626261727374796C650000
+ 005450463007544C61796F757400095374796C654E616D65060D636865636B62
+ 6F787374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 050000000000ACAA8006400B53697A652E486569676874050000000000585599
+ 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 080007544C61796F75740005416C69676E07044C6566740A53697A652E576964
+ 746805000000000000009003400B53697A652E48656967687405000000000058
+ 559904401453697A652E506C6174666F726D44656661756C7408000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463230323032
+ 300748697454657374080A53697A652E57696474680500000000000000F00240
+ 0B53697A652E4865696768740500000000000000F002401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 3531353135000A5452656374616E676C6500095374796C654E616D65060A5265
+ 6374616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F
+ 720709784646324138324532074869745465737408074F706163697479050000
+ 00000000000000000C4D617267696E732E4C6566740500000000000000800040
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
+ 000000000000008000400A53697A652E57696474680500000000000000B00240
+ 0B53697A652E4865696768740500000000000000B002401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 0F54466C6F6174416E696D6174696F6E00095374796C654E616D65061B636865
+ 6368626F7856697362696C697479416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D6506074F70616369
+ 74790A537461727456616C756505000000000000000000000953746F7056616C
+ 75650500000000000000C805400754726967676572060E4973436865636B6564
+ 3D747275650E54726967676572496E7665727365060F4973436865636B65643D
+ 66616C73650000000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650618636865636B626F785374726F6B65416E696D6174696F6E31084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060C
+ 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
+ 31350953746F7056616C75650709784646324138324532075472696767657206
+ 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
+ 4973436865636B65643D66616C736500000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650617636865636B626F78436F6C6F72416E696D61
+ 74696F6E31084475726174696F6E05000000000000000000000C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463230323032300953746F7056616C75650709784646343034303430075472
+ 6967676572061049734D6F7573654F7665723D747275650E5472696767657249
+ 6E7665727365061149734D6F7573654F7665723D66616C736500000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E740A53697A652E57696474680500000000005855DD05400B53697A652E4865
+ 6967687405000000000058559904401453697A652E506C6174666F726D446566
+ 61756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 615768697465000000545046300A5452656374616E676C6500095374796C654E
+ 616D6506147363726F6C6C62617268747261636B7374796C6505416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F720709784646313531353135074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369
+ 626C65080006545468756D6200095374796C654E616D6506057468756D62064C
+ 6F636B6564090A53697A652E576964746805000000000000008003400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B7570060A7468756D627374796C
+ 65000000545046300A5452656374616E676C6500095374796C654E616D650614
+ 7363726F6C6C62617276747261636B7374796C6505416C69676E070643656E74
+ 65720A46696C6C2E436F6C6F7207097846463135313531350748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C650800
+ 06545468756D6200095374796C654E616D6506057468756D62064C6F636B6564
+ 090A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B7570060A7468756D627374796C6500000054
+ 50463007544C61796F757400095374796C654E616D6506157363726F6C6C6261
+ 72626F74746F6D627574746F6E05416C69676E070643656E7465720756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080A53697A652E57696474680500000000000000A002400B53
+ 697A652E4865696768740500000000000000C001401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 005450463007544C61796F757400095374796C654E616D6506137363726F6C6C
+ 6261726C656674627574746F6E05416C69676E070643656E7465720756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080D526F746174696F6E416E676C650500000000000000B405
+ 400A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
+ 4C61796F757400095374796C654E616D6506147363726F6C6C62617272696768
+ 74627574746F6E05416C69676E070643656E7465720756697369626C6508000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0706436C69656E740C436C69704368696C6472656E090A436C
+ 6970506172656E74090A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463230323032300953746F7056616C7565070978
+ 46463430343034300754726967676572062049734D6F7573654F7665723D7472
+ 75653B4973507265737365643D66616C73650E54726967676572496E76657273
+ 65062149734D6F7573654F7665723D66616C73653B4973507265737365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463430343034300953746F70
+ 56616C756507097846463137353739430754726967676572061F497350726573
+ 7365643D747275653B49734D6F7573654F7665723D747275650E547269676765
+ 72496E766572736506204973507265737365643D66616C73653B49734D6F7573
+ 654F7665723D7472756500000007544C61796F757400095374796C654E616D65
+ 06074C61796F75743105416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000A002400B53697A652E48656967687405000000000000
+ 00C001401453697A652E506C6174666F726D44656661756C7408000554506174
+ 6800095374796C654E616D650605506174683105416C69676E0706436C69656E
+ 7409446174612E506174680A3400000004000000000000000000C8420000C842
+ 01000000000096430000C842010000000000484300009643030000000000C842
+ 0000C8420A46696C6C2E436F6C6F720708636C61576869746507486974546573
+ 74080D526F746174696F6E416E676C650500000000000000B405C00A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000C001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F7574
+ 00095374796C654E616D6506127363726F6C6C626172746F70627574746F6E05
+ 416C69676E070643656E7465720756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 06436C69656E740C436C69704368696C6472656E090A436C6970506172656E74
+ 090A46696C6C2E436F6C6F720709784646323032303230074869745465737408
+ 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
+ 68740500000000000000C804401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646343034303430
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463430343034300953746F7056616C7565070978
+ 46463137353739430754726967676572061F4973507265737365643D74727565
+ 3B49734D6F7573654F7665723D747275650E54726967676572496E7665727365
+ 06204973507265737365643D66616C73653B49734D6F7573654F7665723D7472
+ 756500000007544C61796F757400095374796C654E616D6506074C61796F7574
+ 3105416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080005545061746800095374796C65
+ 4E616D650605506174683105416C69676E0706436C69656E7409446174612E50
+ 6174680A3400000004000000000000000000C8420000C8420100000000009643
+ 0000C842010000000000484300009643030000000000C8420000C8420A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080D526F746174
+ 696F6E416E676C650500000000000000B406400A53697A652E57696474680500
+ 000000000000A002400B53697A652E4865696768740500000000000000C00140
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000005450463007544C61796F757400095374796C654E
+ 616D65060E7363726F6C6C6261727374796C6505416C69676E070643656E7465
+ 720756697369626C6508000754427574746F6E00095374796C654E616D65060A
+ 6C656674627574746F6E05416C69676E07044C656674064C6F636B6564090A50
+ 6F736974696F6E2E5905000000000000008003400A53697A652E576964746805
+ 000000000000008003400B53697A652E48656967687405000000000000009003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B757006137363726F6C6C6261726C656674627574746F6E0000075442757474
+ 6F6E00095374796C654E616D65060B7269676874627574746F6E05416C69676E
+ 07055269676874064C6F636B6564090A506F736974696F6E2E58050000000000
+ 00008804400A506F736974696F6E2E5905000000000000008003400A53697A65
+ 2E576964746805000000000000008003400B53697A652E486569676874050000
+ 00000000009003401453697A652E506C6174666F726D44656661756C74080B53
+ 74796C654C6F6F6B757006147363726F6C6C6261727269676874627574746F6E
+ 00000754427574746F6E00095374796C654E616D65060C626F74746F6D627574
+ 746F6E05416C69676E0706426F74746F6D064C6F636B6564090A506F73697469
+ 6F6E2E5905000000000000008804400A53697A652E5769647468050000000000
+ 0000C804400B53697A652E48656967687405000000000000008003401453697A
+ 652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700615
+ 7363726F6C6C626172626F74746F6D627574746F6E00000654547261636B0009
+ 5374796C654E616D65060668747261636B05416C69676E0706436C69656E7406
+ 4C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A
+ 53697A652E576964746805000000000000009003400B53697A652E4865696768
+ 7405000000000000009003401453697A652E506C6174666F726D44656661756C
+ 74080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B73
+ 74796C6500000654547261636B00095374796C654E616D65060676747261636B
+ 05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E74617469
+ 6F6E070A486F72697A6F6E74616C0A53697A652E576964746805000000000000
+ 009003400B53697A652E48656967687405000000000000009003401453697A65
+ 2E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570061473
+ 63726F6C6C62617276747261636B7374796C6500000754427574746F6E000953
+ 74796C654E616D650609746F70627574746F6E05416C69676E0703546F700A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 05000000000000008003401453697A652E506C6174666F726D44656661756C74
+ 080B5374796C654C6F6F6B757006127363726F6C6C626172746F70627574746F
+ 6E000000545046300A5452656374616E676C6500095374796C654E616D65060A
+ 7468756D627374796C6505416C69676E070643656E7465720A46696C6C2E436F
+ 6C6F7207097846463444344434440748697454657374080A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D6506147468756D62436F6C6F72416E69
+ 6D6174696F6E31084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463444344434440953746F7056616C7565070978464631373537394307
+ 54726967676572060E4973507265737365643D747275650E5472696767657249
+ 6E7665727365060F4973507265737365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E315374796C65084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463444344434440953746F7056616C75650707636C6147726179
+ 0754726967676572061049734D6F7573654F7665723D747275650E5472696767
+ 6572496E7665727365061149734D6F7573654F7665723D66616C736500000054
+ 5046300D545377697463684F626A65637400095374796C654E616D65060B7377
+ 697463687374796C6505416C69676E070643656E746572044B696E64070C4661
+ 64696E67547261636B730A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C740812547261636B696E675468756D625363616C65
+ 050000000000000080FF3F0756697369626C65080A46696C6C2E436F6C6F7207
+ 097846463230323032300C46696C6C4F6E2E436F6C6F72070978464631373537
+ 39430B46696C6C4F6E2E4B696E640705536F6C69640B5374726F6B652E4B696E
+ 6407044E6F6E650B5468756D622E436F6C6F7207097846463430343034300D54
+ 68756D624F6E2E436F6C6F7207097846463241383245320C5468756D624F6E2E
+ 4B696E640705536F6C6964105468756D625374726F6B652E4B696E6407044E6F
+ 6E650F5468756D625374726F6B652E4361700705526F756E64105468756D6253
+ 74726F6B652E446173680706437573746F6D105468756D625374726F6B652E4A
+ 6F696E0705526F756E64165468756D625374726F6B652E437573746F6D446173
+ 680A08000000000000000000000000005450463007544C61796F757400095374
+ 796C654E616D65060D636F6D626F626F787374796C6505416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000C5442727573684F626A6563740009
+ 5374796C654E616D65060A666F726567726F756E6400000B54466F6E744F626A
+ 65637400095374796C654E616D650604666F6E7409466F6E742E53697A650500
+ 000000000000D00240000007544C61796F757400095374796C654E616D65060A
+ 6261636B67726F756E6405416C69676E0708436F6E74656E74730A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C803401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E650007544C61796F757400095374796C654E616D650611427574746F6E5374
+ 796C654F626A65637405416C69676E070846697452696768740B4D617267696E
+ 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
+ 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
+ 80FF3F0A506F736974696F6E2E580500000000005ED99705400A506F73697469
+ 6F6E2E59050000000000000080FF3F0A53697A652E5769647468050000000000
+ 889AB803400B53697A652E4865696768740500000000000000B803401453697A
+ 652E506C6174666F726D44656661756C74080007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720C4D61
+ 7267696E732E4C656674050000000000000080FF3F0A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080005545061746800
+ 095374796C654E616D650605506174683105416C69676E0706436C69656E7409
+ 446174612E506174680A3400000004000000000000000000C8420000C8420100
+ 0000000096430000C842010000000000484300009643030000000000C8420000
+ C8420A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0A53697A652E57696474680500000000000000A002400B53697A652E48656967
+ 68740500000000000000C001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572063049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C73650E5472
+ 6967676572496E7665727365063149734D6F7573654F7665723D66616C73653B
+ 4973507265737365643D66616C73653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463430343034300953746F7056616C7565
+ 07097846463137353739430754726967676572062F4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275653B4973466F63757365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463241383245320953746F70
+ 56616C756507097846463137353739430754726967676572062E497350726573
+ 7365643D747275653B49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D747275650E54726967676572496E7665727365062F49735072657373
+ 65643D66616C73653B49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D747275650000000007544C61796F757400095374796C654E616D6506
+ 07636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D
+ 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 000000D803400E4D617267696E732E426F74746F6D0500000000000000800040
+ 0A53697A652E576964746805000000000000008E05400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080000005450463007544C61796F757400095374796C654E616D65060E63
+ 6F6D626F656469747374796C6505416C69676E070643656E7465720A53697A65
+ 2E57696474680500000000000000C805400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508000C5442727573684F626A65637400095374796C654E616D65
+ 060A666F726567726F756E6400000B54466F6E744F626A65637400095374796C
+ 654E616D650604666F6E7409466F6E742E53697A650500000000000000D00240
+ 000007544C61796F757400095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0708436F6E74656E74730A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070643
+ 6C69656E740A46696C6C2E436F6C6F7207097846463230323032300748697454
+ 657374080A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464632303230323000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C
+ 6F72416E696D6174696F6E315374796C65084475726174696F6E050000000000
+ 000000000007496E7665727365090C50726F70657274794E616D65060C537472
+ 6F6B652E436F6C6F720A537461727456616C7565070978464632303230323009
+ 53746F7056616C75650709784646343034303430075472696767657206204973
+ 4D6F7573654F7665723D747275653B4973466F63757365643D66616C73650E54
+ 726967676572496E7665727365062149734D6F7573654F7665723D66616C7365
+ 3B4973466F63757365643D66616C736500000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E325374
+ 796C65084475726174696F6E050000000000000000000007496E766572736509
+ 0C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172
+ 7456616C756507097846463430343034300953746F7056616C75650709784646
+ 3241383245320754726967676572061F49734D6F7573654F7665723D74727565
+ 3B4973466F63757365643D747275650E54726967676572496E76657273650620
+ 49734D6F7573654F7665723D747275653B4973466F63757365643D66616C7365
+ 000007544C61796F757400095374796C654E616D6506056172726F7705416C69
+ 676E070846697452696768740B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
+ 580500000000005ED99705400A506F736974696F6E2E59050000000000000080
+ FF3F0A53697A652E5769647468050000000000889AB803400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D65060A5265
+ 6374616E676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F
+ 6C6F7207097846463330333033300748697454657374080A53697A652E576964
+ 7468050000000000889AB803400B53697A652E48656967687405000000000000
+ 00B803401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650614436F6C6F72416E696D6174696F6E315374796C650844
+ 75726174696F6E050000000000000000000007496E7665727365090C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463330333033300953746F7056616C7565070978464634303430343007
+ 54726967676572062049734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D66616C73650E54726967676572496E7665727365062149734D6F7573
+ 654F7665723D66616C73653B4973466F63757365643D66616C736500000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
+ 6E696D6174696F6E325374796C65084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463430343034300953746F7056616C75650709784646
+ 3137353739430754726967676572061F4973466F63757365643D747275653B49
+ 734D6F7573654F7665723D7472756500000007544C61796F757400095374796C
+ 654E616D6506074C61796F75743105416C69676E070643656E7465720C4D6172
+ 67696E732E4C656674050000000000000080FF3F0A53697A652E576964746805
+ 00000000000000A002400B53697A652E4865696768740500000000000000C001
+ 401453697A652E506C6174666F726D44656661756C7408000554506174680009
+ 5374796C654E616D650605506174683105416C69676E0706436C69656E740944
+ 6174612E506174680A3400000004000000000000000000C8420000C842010000
+ 00000096430000C842010000000000484300009643030000000000C8420000C8
+ 420A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A
+ 53697A652E57696474680500000000000000A002400B53697A652E4865696768
+ 740500000000000000C001401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650000000000000C5442727573
+ 684F626A65637400095374796C654E616D65060973656C656374696F6E0B4272
+ 7573682E436F6C6F720709783936324138324532000007544C61796F75740009
+ 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
+ 0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73
+ 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
+ 0000000000F003400E4D617267696E732E426F74746F6D050000000000000080
+ 00400A53697A652E576964746805000000000000008805400B53697A652E4865
+ 696768740500000000000000A803401453697A652E506C6174666F726D446566
+ 61756C74080000005450463007544C61796F757400095374796C654E616D6506
+ 0F746162636F6E74726F6C7374796C6505416C69676E070643656E7465720A53
+ 697A652E576964746805000000000000008E06400B53697A652E486569676874
+ 050000000000FFFFC905401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F720709784646333033303330064C6F636B6564090748697454
+ 657374080C50616464696E672E4C65667405000000000000008000400B506164
+ 64696E672E546F7005000000000000008000400D50616464696E672E52696768
+ 7405000000000000008000400E50616464696E672E426F74746F6D0500000000
+ 0000008000400A53697A652E576964746805000000000000008E06400B53697A
+ 652E486569676874050000000000FFFFC905401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 35000000545046300A5452656374616E676C6500095374796C654E616D65060B
+ 746162646F747374796C6505416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463135313531350748697454657374080A53697A652E5769
+ 64746805000000000000008005400B53697A652E486569676874050000000000
+ 00008001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E
+ 696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463135313531350953746F7056616C75650709784646324138324532
+ 0754726967676572060F497353656C65637465643D747275650E547269676765
+ 72496E76657273650610497353656C65637465643D66616C7365000000545046
+ 3007544C61796F757400095374796C654E616D65060C7461626974656D737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D650603746F7005416C69676E0708
+ 436F6E74656E74730C436C69704368696C6472656E0907436F726E6572730B07
+ 546F704C65667408546F705269676874000A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080553696465730B03
+ 546F70044C656674055269676874000A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000654476C79706800095374796C654E616D65060A67
+ 6C7970687374796C650C4D617267696E732E4C65667405000000000000008001
+ 400D4D617267696E732E526967687405000000000000008001C005416C69676E
+ 07044C6566740A53697A652E576964746805000000000000008003400B53697A
+ 652E48656967687405000000000000008003401453697A652E506C6174666F72
+ 6D44656661756C7408000005545465787400095374796C654E616D6506047465
+ 787405416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C6566740500000000000000C000400B4D617267696E
+ 732E546F700500000000000000C000400D4D617267696E732E52696768740500
+ 000000000000C000400E4D617267696E732E426F74746F6D0500000000000000
+ C000400A53697A652E57696474680500000000000000B004400B53697A652E48
+ 656967687405000000000000009803401453697A652E506C6174666F726D4465
+ 6661756C7408165465787453657474696E67732E466F6E74436F6C6F72070863
+ 6C615768697465155465787453657474696E67732E576F726457726170080000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650612746162
+ 436F6C6F72416E696D6174696F6E310D416E696D6174696F6E54797065070549
+ 6E4F7574084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463230323032300953746F7056616C7565070978464634303430343007547269
+ 67676572062149734D6F7573654F7665723D747275653B497353656C65637465
+ 643D66616C73650E54726967676572496E7665727365062249734D6F7573654F
+ 7665723D66616C73653B497353656C65637465643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650612746162436F6C6F
+ 72416E696D6174696F6E32084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646324138
+ 3245320754726967676572060F497353656C65637465643D747275650E547269
+ 67676572496E76657273650610497353656C65637465643D66616C7365000000
+ 00545046300A5452656374616E676C6500095374796C654E616D65060D746875
+ 6D626261727374796C6505416C69676E070643656E7465720A46696C6C2E436F
+ 6C6F7207097846463241383245320748697454657374080A53697A652E576964
+ 74680500000000000000A003400B53697A652E48656967687405000000000000
+ 00A003401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F7207097846463135313531350756697369626C6508000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D6506147468756D62436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463241383245320953746F7056616C7565070978464631
+ 37353739430754726967676572061F4973507265737365643D747275653B4973
+ 4D6F7573654F7665723D747275650E54726967676572496E7665727365061049
+ 73507265737365643D66616C73653B00000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F
+ 6E32084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 41383245320953746F7056616C75650709784646343039424646075472696767
+ 6572062049734D6F7573654F7665723D747275653B4973507265737365643D66
+ 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
+ 3D66616C73653B4973507265737365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D6506157468756D625374726F6B65
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456
+ 616C756507097846463135313531350953746F7056616C756507097846463137
+ 353739430754726967676572061F4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275650E54726967676572496E7665727365060F4973
+ 507265737365643D66616C73650000005450463007544C61796F757400095374
+ 796C654E616D65060C6C697374626F787374796C6505416C69676E070643656E
+ 7465720A53697A652E5769647468050000000000FFFFE905400B53697A652E48
+ 656967687405000000000000008306401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000C5442727573684F626A656374000953
+ 74796C654E616D650618416C7465726E6174696E67526F774261636B67726F75
+ 6E640B42727573682E436F6C6F72070978464632433243324300000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032
+ 303230064C6F636B6564090748697454657374080C50616464696E672E4C6566
+ 7405000000000000008000400B50616464696E672E546F700500000000000000
+ 8000400D50616464696E672E526967687405000000000000008000400E506164
+ 64696E672E426F74746F6D05000000000000008000400A53697A652E57696474
+ 68050000000000FFFFE905400B53697A652E4865696768740500000000000000
+ 8306401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F7207097846463135313531350007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C436C69
+ 704368696C6472656E090A53697A652E5769647468050000000000FFFFC10540
+ 0B53697A652E4865696768740500000000000000DE05401453697A652E506C61
+ 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
+ 4E616D65060973656C656374696F6E0A46696C6C2E436F6C6F72070978464632
+ 41383245320748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6500000A5452656374616E676C6500095374796C654E616D650610666F63
+ 7573656473656C656374696F6E0A46696C6C2E436F6C6F720709784646324138
+ 3245320748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 650B5374726F6B652E446173680703446F740000000A545363726F6C6C426172
+ 00095374796C654E616D65060A767363726F6C6C62617205416C69676E070552
+ 696768740B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E0708566572746963616C0A506F736974696F6E2E5805000000
+ 0000FFFFC505400A506F736974696F6E2E5905000000000000008000400A5369
+ 7A652E576964746805000000000000008003400B53697A652E48656967687405
+ 00000000000000DE05401453697A652E506C6174666F726D44656661756C7408
+ 00000A545363726F6C6C42617200095374796C654E616D65060A687363726F6C
+ 6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E7461
+ 6C0A506F736974696F6E2E5805000000000000008000400A506F736974696F6E
+ 2E590500000000000000E205400A53697A652E5769647468050000000000FFFF
+ E105400B53697A652E48656967687405000000000000008003401453697A652E
+ 506C6174666F726D44656661756C740800000F54536D616C6C5363726F6C6C42
+ 617200095374796C654E616D65060F76736D616C6C7363726F6C6C6261720541
+ 6C69676E070552696768740B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E73
+ 2E4C65667405000000000000008000400A506F736974696F6E2E580500000000
+ 000000C605400A506F736974696F6E2E5905000000000000008000400A53697A
+ 652E576964746805000000000000008002400B53697A652E4865696768740500
+ 0000000000008002401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C650800000F54536D616C6C5363726F6C6C42617200095374796C
+ 654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F
+ 74746F6D0B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005
+ 000000000000008000400A506F736974696F6E2E580500000000000000800040
+ 0A506F736974696F6E2E590500000000000000E205400A53697A652E57696474
+ 6805000000000000009606400B53697A652E4865696768740500000000000000
+ 8002401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 65080000000B54476C6F774566666563740008536F66746E6573730500000000
+ 00CDCCCCFC3F09476C6F77436F6C6F720709784646463639453244074F706163
+ 6974790500000000006666E6FE3F0754726967676572060E4973466F63757365
+ 643D7472756507456E61626C6564080000005450463007544C61796F75740009
+ 5374796C654E616D65060D6C697374626F78666F6F74657205416C69676E0706
+ 43656E7465720A53697A652E576964746805000000000000009205400B53697A
+ 652E4865696768740500000000000000D003401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C65080005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000A001
+ 400B4D617267696E732E546F7005000000000000008000400D4D617267696E73
+ 2E52696768740500000000000000A001400E4D617267696E732E426F74746F6D
+ 05000000000000008000400A53697A652E57696474680500000000000000FC04
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D6506106C697374626F786974656D7374796C6505416C6967
+ 6E070643656E7465720A53697A652E57696474680500000000000000D605400B
+ 53697A652E4865696768740500000000000000C003401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508000654476C797068000953
+ 74796C654E616D65060A676C7970687374796C650C4D617267696E732E4C6566
+ 7405000000000000008000400B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E526967687405000000000000008000400E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F05416C69676E07044C65
+ 66740A53697A652E576964746805000000000000008003400B53697A652E4865
+ 6967687405000000000000008003401453697A652E506C6174666F726D446566
+ 61756C7408000005545465787400095374796C654E616D650604746578740541
+ 6C69676E0706436C69656E740748697454657374080C4D617267696E732E4C65
+ 66740500000000000000C000400B4D617267696E732E546F7005000000000000
+ 0080FF3F0D4D617267696E732E52696768740500000000000000C000400E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F0A53697A652E576964
+ 74680500000000000000CA05400B53697A652E48656967687405000000000000
+ 00B003401453697A652E506C6174666F726D44656661756C7408165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C6157686974651554657874
+ 53657474696E67732E576F72645772617008165465787453657474696E67732E
+ 486F727A416C69676E07074C656164696E6700000954436865636B426F780009
+ 5374796C654E616D650605636865636B05416C69676E07084D6F73744C656674
+ 0843616E466F637573081244697361626C65466F637573456666656374090A53
+ 697A652E57696474680500000000000000A003400B53697A652E486569676874
+ 0500000000000000C003401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C65080000005450463007544C61796F757400095374796C65
+ 4E616D6506126C697374626F78706C61696E68656164657205416C69676E0706
+ 43656E7465720A53697A652E576964746805000000000000009205400B53697A
+ 652E4865696768740500000000000000D003401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508000A5452656374616E676C650009
+ 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
+ 74656E74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B
+ 6564090748697454657374080A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 46313531353135000005545465787400095374796C654E616D65060474657874
+ 05416C69676E0706436C69656E74064C6F636B6564090748697454657374080C
+ 4D617267696E732E4C6566740500000000000000A001400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 00000000A001400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A53697A652E57696474680500000000000000FC04400B53697A652E486569
+ 6768740500000000000000B003401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 57686974650000005450463007544C61796F757400095374796C654E616D6506
+ 09677269647374796C6505416C69676E070643656E7465720A53697A652E5769
+ 647468050000000000FFFFE905400B53697A652E486569676874050000000000
+ 00008306401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978333237383738373800000C5442727573684F626A656374000953
+ 74796C654E616D6506086C696E6566696C6C0B42727573682E436F6C6F720709
+ 78464631353135313500000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F720709784646323032303230064C6F636B6564090748697454
+ 657374080C50616464696E672E4C65667405000000000000008000400B506164
+ 64696E672E546F7005000000000000008000400D50616464696E672E52696768
+ 7405000000000000008000400E50616464696E672E426F74746F6D0500000000
+ 0000008000400A53697A652E5769647468050000000000FFFFE905400B53697A
+ 652E48656967687405000000000000008306401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 3500075448656164657200095374796C654E616D650606686561646572055369
+ 6465730B03546F70044C65667406426F74746F6D0552696768740005416C6967
+ 6E0703546F700748697454657374080A506F736974696F6E2E58050000000000
+ 00008000400A506F736974696F6E2E5905000000000000008000400A53697A65
+ 2E5769647468050000000000FFFFE105400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F757400095374796C654E616D650607636F6E74656E7405416C69
+ 676E0706436C69656E740C436C69704368696C6472656E090A53697A652E5769
+ 647468050000000000FFFFC105400B53697A652E486569676874050000000000
+ 0000B405401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060973656C656374696F6E0A4669
+ 6C6C2E436F6C6F720709784646324138324532074869745465737408074F7061
+ 63697479050000000000000080FD3F0A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6500000A5452656374616E676C6500095374796C654E616D650605666F
+ 6375730A46696C6C2E436F6C6F72070978414632413832453207486974546573
+ 74080C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6507595261646975
+ 730500000000000000C000400000000A545363726F6C6C42617200095374796C
+ 654E616D65060A767363726F6C6C62617205416C69676E070552696768740B53
+ 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
+ 6E0708566572746963616C0A506F736974696F6E2E58050000000000FFFFC505
+ 400A506F736974696F6E2E590500000000000000B803400A53697A652E576964
+ 746805000000000000008003400B53697A652E48656967687405000000000000
+ 00B405401453697A652E506C6174666F726D44656661756C740800000A545363
+ 726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261720541
+ 6C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000000000
+ 0000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F7369
+ 74696F6E2E5805000000000000008000400A506F736974696F6E2E5905000000
+ 00000000E205400A53697A652E5769647468050000000000FFFFE105400B5369
+ 7A652E48656967687405000000000000008003401453697A652E506C6174666F
+ 726D44656661756C740800000F54536D616C6C5363726F6C6C42617200095374
+ 796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E0705
+ 52696768740B536D616C6C4368616E676505000000000000000000000B4F7269
+ 656E746174696F6E0708566572746963616C0C4D617267696E732E4C65667405
+ 000000000000008000400A506F736974696F6E2E580500000000000000C60540
+ 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
+ 6805000000000000008002400B53697A652E4865696768740500000000000000
+ 8002401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 650800000F54536D616C6C5363726F6C6C42617200095374796C654E616D6506
+ 0F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B53
+ 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
+ 6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000000000
+ 008000400A506F736974696F6E2E5805000000000000008000400A506F736974
+ 696F6E2E590500000000000000E205400A53697A652E57696474680500000000
+ 0000009606400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800000000
+ 5450463007544C61796F757400095374796C654E616D65060F68656164657269
+ 74656D7374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 6805000000000000009205400B53697A652E4865696768740500000000000000
+ D003401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508000A5452656374616E676C6500095374796C654E616D65060A6261636B67
+ 726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 0709784646344334433443064C6F636B6564090748697454657374080A53697A
+ 652E576964746805000000000000009205400B53697A652E4865696768740500
+ 000000000000D003401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646313531353135000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615686561646572436F6C6F72
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463443344334430953746F7056616C7565070978464632413832
+ 45320754726967676572060E4973507265737365643D747275650E5472696767
+ 6572496E7665727365060F4973507265737365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D65061668656164657253
+ 74726F6B65416E696D6174696F6E31084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53
+ 7461727456616C756507097846463135313531350953746F7056616C75650709
+ 7846463241383245320754726967676572060E4973507265737365643D747275
+ 650E54726967676572496E7665727365060F4973507265737365643D66616C73
+ 6500000005545465787400095374796C654E616D6506047465787405416C6967
+ 6E0706436C69656E74064C6F636B6564090748697454657374080C4D61726769
+ 6E732E4C6566740500000000000000A001400B4D617267696E732E546F700500
+ 0000000000008000400D4D617267696E732E52696768740500000000000000A0
+ 01400E4D617267696E732E426F74746F6D05000000000000008000400A53697A
+ 652E57696474680500000000000000FC04400B53697A652E4865696768740500
+ 000000000000B003401453697A652E506C6174666F726D44656661756C740816
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 0000005450463007544C61796F757400095374796C654E616D65061970726F67
+ 726573736261726D696E696572726F727374796C6505416C69676E070643656E
+ 7465720A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000A5452656374616E676C650009537479
+ 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646343034303430064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A68696E64696361746F7205416C
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464645323241324106
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000000A5452656374616E676C6500095374796C654E616D650606
+ 76747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 720709784646343034303430064C6F636B6564090748697454657374080A5369
+ 7A652E576964746805000000000033338505400B53697A652E48656967687405
+ 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C650009
+ 5374796C654E616D65060A76696E64696361746F7205416C69676E0706426F74
+ 746F6D0A46696C6C2E436F6C6F720709784646453232413241064C6F636B6564
+ 090748697454657374080A506F736974696F6E2E5905000000000099998D0440
+ 0A53697A652E576964746805000000000033338505400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65061170726F677265737363656C6C7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000F805400B53697A652E4865696768740500000000000000FC05401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000754
+ 4C61796F757400095374796C654E616D65060668747261636B05416C69676E07
+ 08436F6E74656E7473064C6F636B6564090C4D617267696E732E4C6566740500
+ 0000000000008000400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
+ 000000000000F005400B53697A652E4865696768740500000000000000F40540
+ 1453697A652E506C6174666F726D44656661756C7408000A5452656374616E67
+ 6C6500095374796C654E616D65060A68696E64696361746F7205416C69676E07
+ 044C6566740A46696C6C2E436F6C6F720709784646324138324532064C6F636B
+ 6564090748697454657374080C4D617267696E732E4C65667405000000000000
+ 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
+ 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F0A506F736974696F6E2E5805000000000000
+ 0080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00000000F005401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F757400
+ 095374796C654E616D6506106D656E756261726974656D7374796C6505416C69
+ 676E070643656E7465720C4D617267696E732E4C656674050000000000000080
+ FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E
+ 732E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F
+ 6D050000000000000080FF3F0A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C650005416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 0709784646324138324532074869745465737408074F70616369747905000000
+ 000017B7D1F13F0A53697A652E576964746805000000000000009205400B5369
+ 7A652E4865696768740500000000000000D003401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F5446
+ 6C6F6174416E696D6174696F6E00084475726174696F6E05000000000018B7D1
+ F23F0C50726F70657274794E616D6506074F7061636974790A53746172745661
+ 6C756505000000000000000000000953746F7056616C75650500000000000000
+ 80FF3F0754726967676572060F497353656C65637465643D747275650E547269
+ 67676572496E76657273650610497353656C65637465643D66616C7365000000
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978
+ 4646324138324532074869745465737408074F70616369747905000000000017
+ B7D1F13F0A53697A652E576964746805000000000000009205400B53697A652E
+ 4865696768740500000000000000D003401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F61
+ 74416E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C
+ 50726F70657274794E616D6506074F7061636974790A537461727456616C7565
+ 05000000000000000000000953746F7056616C7565050000000000000080FF3F
+ 0754726967676572061049734D6F7573654F7665723D747275650E5472696767
+ 6572496E7665727365061149734D6F7573654F7665723D66616C736500000007
+ 544C61796F757400095374796C654E616D650605676C79706805416C69676E07
+ 044C6566740A53697A652E57696474680500000000000000C803400B53697A65
+ 2E4865696768740500000000000000D003401453697A652E506C6174666F726D
+ 44656661756C74080007544C61796F757400095374796C654E616D6506096368
+ 65636B6D61726B05416C69676E0708436F6E74656E7473074F70616369747905
+ 00000000006F1283F53F0A53697A652E57696474680500000000000000C80340
+ 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
+ 74666F726D44656661756C7408000554506174680005416C69676E070643656E
+ 74657209446174612E506174680A58000000070000000000000056D9524391AE
+ 2C43010000009276664365021643010000009F3983432B7C3C43010000009E9A
+ A64382D2B442010000006F1CB04375A4D1420100000026DF8243263F67430300
+ 000056D9524391AE2C430A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080A53697A652E57696474680500000000000000B002400B53
+ 697A652E4865696768740500000000000000B002401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000F
+ 54466C6F6174416E696D6174696F6E00084475726174696F6E050000000000CD
+ CCCCFB3F0C50726F70657274794E616D6506074F7061636974790A5374617274
+ 56616C756505000000000000000000000953746F7056616C7565050000000000
+ 000080FF3F0754726967676572060E4973436865636B65643D747275650E5472
+ 6967676572496E7665727365060F4973436865636B65643D66616C7365000000
+ 0654476C79706800095374796C654E616D65060A676C7970687374796C650C4D
+ 617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 000000C000400E4D617267696E732E426F74746F6D050000000000000080FF3F
+ 05416C69676E070552696768740A53697A652E57696474680500000000000000
+ 8003400B53697A652E48656967687405000000000000008003401453697A652E
+ 506C6174666F726D44656661756C740800000654496D61676500095374796C65
+ 4E616D6506066269746D61700E4D756C74695265734269746D61700E01000005
+ 416C69676E0708436F6E74656E74730C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E526967687405000000000000008000400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 00000000A803400B53697A652E4865696768740500000000000000B003401453
+ 697A652E506C6174666F726D44656661756C7408000000055454657874000953
+ 74796C654E616D6506047465787405416C69676E07044C656674064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ 8002400D4D617267696E732E526967687405000000000000008002400A506F73
+ 6974696F6E2E5805000000000000008404400A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C61576869746516546578745365747469
+ 6E67732E486F727A416C69676E07074C656164696E6700000554546578740009
+ 5374796C654E616D65060873686F727463757405416C69676E07055269676874
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 000000000000C002400D4D617267696E732E52696768740500000000000000C0
+ 01400A506F736974696F6E2E580500000000000000C000C00A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000D003401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746516546578
+ 7453657474696E67732E486F727A416C69676E07074C656164696E6700000754
+ 4C61796F757400095374796C654E616D6506077375626D61726B05416C69676E
+ 070552696768740A506F736974696F6E2E580500000000000000D404400A5369
+ 7A652E57696474680500000000000000A003400B53697A652E48656967687405
+ 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
+ 000554506174680005416C69676E070643656E74657209446174612E50617468
+ 0A34000000040000000000000000000000000000000100000000000000000080
+ 3F010000000000803F0000003F0300000000000000000000000A46696C6C2E43
+ 6F6C6F720708636C615768697465064C6F636B6564090748697454657374080A
+ 53697A652E57696474680500000000000000E001400B53697A652E4865696768
+ 7405000000000000008002401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300A545265
+ 6374616E676C6500095374796C654E616D65060C6D656E756261727374796C65
+ 05416C69676E070643656E7465720C436C69704368696C6472656E090946696C
+ 6C2E4B696E6407044E6F6E650748697454657374080A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E650756697369626C6508000A5452656374616E676C6500
+ 05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FFBF0B4D617267696E732E546F70050000000000000080FFBF0D4D6172
+ 67696E732E5269676874050000000000000080FFBF0A53697A652E5769647468
+ 0500000000000000D004400B53697A652E4865696768740500000000000000CC
+ 04401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F720709784646313531353135000007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D6172
+ 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
+ 050000000000000080FF3F0D4D617267696E732E526967687405000000000000
+ 0080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53
+ 697A652E57696474680500000000000000C004400B53697A652E486569676874
+ 0500000000000000C004401453697A652E506C6174666F726D44656661756C74
+ 080000005450463007544C61796F757400095374796C654E616D65060D6D656E
+ 756974656D7374796C6505416C69676E070643656E7465720C4D617267696E73
+ 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
+ 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
+ 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E
+ 57696474680500000000008EE3F605400B53697A652E48656967687405000000
+ 00008EE3F003401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508000A5452656374616E676C650005416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F72070978464632413832453207486974546573
+ 7408074F70616369747905000000000017B7D1F13F0A53697A652E5769647468
+ 0500000000008EE3F605400B53697A652E4865696768740500000000008EE3F0
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008447572
+ 6174696F6E05000000000018B7D1F23F0C50726F70657274794E616D6506074F
+ 7061636974790A537461727456616C756505000000000000000000000953746F
+ 7056616C7565050000000000000080FF3F0754726967676572060F497353656C
+ 65637465643D747275650E54726967676572496E76657273650610497353656C
+ 65637465643D66616C73650000000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0A46696C6C2E436F6C6F72070978464632413832453207486974546573740807
+ 4F70616369747905000000000000000000000A53697A652E5769647468050000
+ 0000008EE3F605400B53697A652E4865696768740500000000008EE3F0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008447572617469
+ 6F6E05000000000018B7D1F23F07496E7665727365090C50726F70657274794E
+ 616D6506074F7061636974790A537461727456616C7565050000000000000000
+ 00000953746F7056616C7565050000000000000080FF3F075472696767657206
+ 1049734D6F7573654F7665723D747275650E54726967676572496E7665727365
+ 061149734D6F7573654F7665723D66616C736500000007544C61796F75740009
+ 5374796C654E616D650605676C79706805416C69676E07044C6566740A53697A
+ 652E57696474680500000000000000C803400B53697A652E4865696768740500
+ 000000008EE3F003401453697A652E506C6174666F726D44656661756C740800
+ 07544C61796F757400095374796C654E616D650609636865636B6D61726B0541
+ 6C69676E0708436F6E74656E7473074F7061636974790500000000006F1283F5
+ 3F0A53697A652E57696474680500000000000000C803400B53697A652E486569
+ 6768740500000000008EE3F003401453697A652E506C6174666F726D44656661
+ 756C7408000554506174680005416C69676E070643656E74657209446174612E
+ 506174680A58000000070000000000000056D9524391AE2C4301000000927666
+ 4365021643010000009F3983432B7C3C43010000009E9AA64382D2B442010000
+ 006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE2C
+ 430A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A
+ 53697A652E57696474680500000000000000B002400B53697A652E4865696768
+ 740500000000000000B002401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E69
+ 6D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70
+ 657274794E616D6506074F7061636974790A537461727456616C756505000000
+ 000000000000000953746F7056616C7565050000000000000080FF3F07547269
+ 67676572060E4973436865636B65643D747275650E54726967676572496E7665
+ 727365060F4973436865636B65643D66616C73650000000654476C7970680009
+ 5374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C65
+ 6674050000000000000080FF3F0B4D617267696E732E546F7005000000000000
+ 008000400D4D617267696E732E52696768740500000000000000C000400E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F05416C69676E07044C
+ 6566740A53697A652E576964746805000000000000008003400B53697A652E48
+ 656967687405000000000000008003401453697A652E506C6174666F726D4465
+ 6661756C740800000654496D61676500095374796C654E616D6506066269746D
+ 61700E4D756C74695265734269746D61700E01000005416C69676E07044C6566
+ 740C4D617267696E732E4C65667405000000000000008000400B4D617267696E
+ 732E546F7005000000000000008000400D4D617267696E732E52696768740500
+ 0000000000008000400E4D617267696E732E426F74746F6D0500000000000000
+ 8000400A506F736974696F6E2E5805000000000000008000400A506F73697469
+ 6F6E2E5905000000000000008000400A53697A652E5769647468050000000000
+ 0000A803400B53697A652E4865696768740500000000008EE3D003401453697A
+ 652E506C6174666F726D44656661756C74080000000554546578740009537479
+ 6C654E616D6506047465787405416C69676E07044C656674064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C65667405000000000000008002
+ 400D4D617267696E732E526967687405000000000000008002400A506F736974
+ 696F6E2E5805000000000000008404400A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000008EE3F00340145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C615768697465165465787453657474696E67
+ 732E486F727A416C69676E07074C656164696E67000005545465787400095374
+ 796C654E616D65060873686F727463757405416C69676E07055269676874064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 00000000C002400D4D617267696E732E52696768740500000000000000C00140
+ 0A506F736974696F6E2E580500000000001CC7BD04400A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000008EE3
+ F003401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465165465787453
+ 657474696E67732E486F727A416C69676E07074C656164696E67000007544C61
+ 796F757400095374796C654E616D6506077375626D61726B05416C69676E0705
+ 52696768740A506F736974696F6E2E580500000000008EE3CE05400A53697A65
+ 2E57696474680500000000000000A003400B53697A652E486569676874050000
+ 0000008EE3F003401453697A652E506C6174666F726D44656661756C74080005
+ 54506174680005416C69676E070643656E74657209446174612E506174680A34
+ 0000000400000000000000000000000000000001000000000000000000803F01
+ 0000000000803F0000003F0300000000000000000000000A46696C6C2E436F6C
+ 6F720708636C615768697465064C6F636B6564090748697454657374080A5369
+ 7A652E57696474680500000000000000C001400B53697A652E48656967687405
+ 00000000000000A002401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F
+ 757400095374796C654E616D6506126D656E75736570617261746F727374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C65080005544C69
+ 6E650005416C69676E0703546F70084C696E65547970650703546F700C4D6172
+ 67696E732E4C656674050000000000000080FFBF0B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 0080FFBF0A506F736974696F6E2E58050000000000000080FFBF0A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 000000D004400B53697A652E486569676874050000000000000080FF3F145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000000545046300A5452656374616E676C65000953
+ 74796C654E616D65060D6D656E75766965777374796C6505416C69676E070643
+ 656E7465720A46696C6C2E436F6C6F7207097846463230323032300A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F7207097846463135313531350756697369626C650800
+ 0A5452656374616E676C650005416C69676E0706436C69656E740A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000D54536861646F77456666
+ 656374000844697374616E636505000000000000008001400944697265637469
+ 6F6E0500000000000000B4044008536F66746E657373050000000000000080FE
+ 3F074F706163697479050000000000000080FE3F0B536861646F77436F6C6F72
+ 0708636C61426C61636B00000007544C61796F757400095374796C654E616D65
+ 0607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E
+ 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
+ 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
+ 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
+ 696474680500000000000000C004400B53697A652E4865696768740500000000
+ 000000C004401453697A652E506C6174666F726D44656661756C740800000054
+ 50463007544C61796F757400095374796C654E616D65060E696D61676563656C
+ 6C7374796C6505416C69676E070643656E7465720756697369626C6508000654
+ 496D61676500095374796C654E616D650605696D6167650E4D756C7469526573
+ 4269746D61700E01000005416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000C004
+ 400B53697A652E4865696768740500000000000000C004401453697A652E506C
+ 6174666F726D44656661756C74080000005450463007544C61796F7574000953
+ 74796C654E616D65060E706F70757063656C6C7374796C6505416C69676E0706
+ 43656E7465720A53697A652E57696474680500000000000000BB06400B53697A
+ 652E4865696768740500000000000000AE04401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C65080007544C61796F75740005416C69
+ 676E070552696768740A506F736974696F6E2E580500000000000000AC06400A
+ 53697A652E57696474680500000000000000F002400B53697A652E4865696768
+ 740500000000000000AE04401453697A652E506C6174666F726D44656661756C
+ 7408000554506174680005416C69676E070643656E74657209446174612E5061
+ 74680A400000000500000000000000000000000000803F010000000000803F00
+ 00803F010000000000003F0000000001000000000000000000803F0300000000
+ 000000000000000A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080B4D617267696E732E546F700500000000000000E001C00A53697A
+ 652E576964746805000000000000008002400B53697A652E4865696768740500
+ 0000000000008001401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E6500000554506174680005416C69676E
+ 070643656E74657209446174612E506174680A34000000040000000000000000
+ 00000000000000010000000000803F00000000010000000000003F0000803F03
+ 00000000000000000000000A46696C6C2E436F6C6F720708636C615768697465
+ 0748697454657374080B4D617267696E732E546F700500000000000000C00140
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650000000554546578740009
+ 5374796C654E616D6506047465787405416C69676E0706436C69656E74064C6F
+ 636B6564090748697454657374080C4D617267696E732E4C6566740500000000
+ 000000A001400B4D617267696E732E546F7005000000000000008000400D4D61
+ 7267696E732E52696768740500000000000000A001400E4D617267696E732E42
+ 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
+ 000000A206400B53697A652E48656967687405000000000000009E0440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D65060D7465787463656C6C7374796C6505416C
+ 69676E070643656E7465720756697369626C65080007544C61796F7574000953
+ 74796C654E616D650607636F6E74656E7405416C69676E0708436F6E74656E74
+ 73064C6F636B6564090C4D617267696E732E4C65667405000000000000008001
+ 400B4D617267696E732E546F7005000000000000008001400D4D617267696E73
+ 2E526967687405000000000000008001400E4D617267696E732E426F74746F6D
+ 05000000000000008001400A53697A652E57696474680500000000000000A804
+ 400B53697A652E4865696768740500000000000000A804401453697A652E506C
+ 6174666F726D44656661756C740800000C5442727573684F626A656374000953
+ 74796C654E616D65060A666F726567726F756E6400000C5442727573684F626A
+ 65637400095374796C654E616D65060973656C656374696F6E0B42727573682E
+ 436F6C6F72070978393632413832453200000B54466F6E744F626A6563740009
+ 5374796C654E616D650604666F6E740000005450463007544C61796F75740009
+ 5374796C654E616D6506096D656D6F7374796C6505416C69676E070643656E74
+ 65720A53697A652E5769647468050000000000CCCC8806400B53697A652E4865
+ 696768740500000000006666F405401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C6508000C5442727573684F626A65637400095374
+ 796C654E616D65060A666F726567726F756E6400000C5442727573684F626A65
+ 637400095374796C654E616D65060973656C656374696F6E0B42727573682E43
+ 6F6C6F72070978374634343735394400000B54466F6E744F626A656374000953
+ 74796C654E616D650604666F6E7400000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E5769647468050000000000CCCC8806400B53697A652E486569
+ 6768740500000000006666F405401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F7207097846463135313531350007544C
+ 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
+ 06436C69656E740C4D617267696E732E4C65667405000000000000008000400B
+ 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
+ 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
+ 0000000000008000400A53697A652E57696474680500000000009899E905400B
+ 53697A652E4865696768740500000000006666CC05401453697A652E506C6174
+ 666F726D44656661756C740800000A545363726F6C6C42617200095374796C65
+ 4E616D65060A687363726F6C6C62617205416C69676E0706426F74746F6D0643
+ 7572736F72070763724172726F770B536D616C6C4368616E6765050000000000
+ 00000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F
+ 736974696F6E2E590500000000006666D405400A53697A652E57696474680500
+ 00000000CCCC8806400B53697A652E4865696768740500000000000000800340
+ 1453697A652E506C6174666F726D44656661756C740800000A545363726F6C6C
+ 42617200095374796C654E616D65060A767363726F6C6C62617205416C69676E
+ 0705526967687406437572736F72070763724172726F770B536D616C6C436861
+ 6E676505000000000000000000000B4F7269656E746174696F6E070856657274
+ 6963616C0A506F736974696F6E2E580500000000009899F105400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00006666D405401453697A652E506C6174666F726D44656661756C7408000007
+ 544C61796F75740005416C69676E0706436C69656E740A53697A652E57696474
+ 680500000000009899F105400B53697A652E4865696768740500000000006666
+ D405401453697A652E506C6174666F726D44656661756C7408000F54536D616C
+ 6C5363726F6C6C42617200095374796C654E616D65060F76736D616C6C736372
+ 6F6C6C62617205416C69676E0705526967687406437572736F72070763724172
+ 726F770B536D616C6C4368616E676505000000000000000000000B4F7269656E
+ 746174696F6E0708566572746963616C0C4D617267696E732E4C656674050000
+ 00000000008000400A53697A652E576964746805000000000000008002400B53
+ 697A652E48656967687405000000000000008002401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C650800000F54536D616C6C536372
+ 6F6C6C42617200095374796C654E616D65060F68736D616C6C7363726F6C6C62
+ 617205416C69676E0706426F74746F6D06437572736F72070763724172726F77
+ 0B536D616C6C4368616E676505000000000000000000000B4F7269656E746174
+ 696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F700500000000
+ 0000008000400A53697A652E576964746805000000000000009606400B53697A
+ 652E48656967687405000000000000008002401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C65080000000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D6506146D656D6F5374726F6B65416E696D
+ 6174696F6E31084475726174696F6E050000000000000000000007496E766572
+ 7365090C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53
+ 7461727456616C756507097846463135313531350953746F7056616C75650709
+ 7846463430343034300754726967676572062049734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D66616C73650E54726967676572496E766572
+ 7365062149734D6F7573654F7665723D66616C73653B4973466F63757365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D6506146D656D6F5374726F6B65416E696D6174696F6E32084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060C5374726F6B
+ 652E436F6C6F720A537461727456616C75650709784646343034303430095374
+ 6F7056616C756507097846463241383245320754726967676572060E4973466F
+ 63757365643D747275650E54726967676572496E7665727365060F4973466F63
+ 757365643D66616C7365000000005450463007544C61796F757400095374796C
+ 654E616D65060E6C696E6B6C6162656C7374796C6505416C69676E070643656E
+ 7465720A53697A652E5769647468050000000000CCCC8006400B53697A652E48
+ 65696768740500000000009A998104401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C65080005545465787400095374796C654E616D
+ 6506047465787405416C69676E0708436F6E74656E7473074869745465737408
+ 0A53697A652E5769647468050000000000CCCC8006400B53697A652E48656967
+ 68740500000000009A998104401453697A652E506C6174666F726D4465666175
+ 6C74081A5465787453657474696E67732E466F6E742E5374796C654578740A0D
+ 00000004040000000000000004000000165465787453657474696E67732E466F
+ 6E74436F6C6F72070D636C61446F64676572626C7565000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469
+ 6F6E315374796C65084475726174696F6E050000000000000000000007496E76
+ 65727365090C50726F70657274794E616D6506165465787453657474696E6773
+ 2E466F6E74436F6C6F720A537461727456616C7565070D636C61446F64676572
+ 626C75650953746F7056616C7565070E636C6144656570736B79626C75650754
+ 726967676572063049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365063149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E325374796C65084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D6506165465787453657474696E67732E466F6E
+ 74436F6C6F720A537461727456616C7565070E636C6144656570736B79626C75
+ 650953746F7056616C756507097846463137353739430754726967676572062F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D66616C736500000000545046300A5452656374616E67
+ 6C6500095374796C654E616D65060E7374617475736261727374796C6505416C
+ 69676E070643656E7465720C436C69704368696C6472656E090A46696C6C2E43
+ 6F6C6F7207097846463235323532350748697454657374080553696465730B03
+ 546F70000A53697A652E57696474680500000000000000F004400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
+ 56697369626C65080007544C61796F757400095374796C654E616D6506074C61
+ 796F75743105416C69676E070552696768740A506F736974696F6E2E58050000
+ 00000000008C04400A53697A652E57696474680500000000000000C803400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C740800095453697A654772697000095374796C654E616D
+ 65060973697A65677267697005416C69676E0706426F74746F6D0A506F736974
+ 696F6E2E590500000000000000C803400A53697A652E57696474680500000000
+ 000000C803400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C7408000000005450463007544C6179
+ 6F757400095374796C654E616D65060C7370696E626F787374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000006666E00540
+ 0B53697A652E4865696768740500000000000000C003401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300A
+ 53697A652E57696474680500000000006666E005400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E69
+ 6D6174696F6E315374796C65084475726174696F6E0500000000000000000000
+ 07496E7665727365090C50726F70657274794E616D65060C5374726F6B652E43
+ 6F6C6F720A537461727456616C756507097846463135313531350953746F7056
+ 616C756507097846463430343034300754726967676572061049734D6F757365
+ 4F7665723D747275650E54726967676572496E7665727365061149734D6F7573
+ 654F7665723D66616C73650000000C5442727573684F626A6563740009537479
+ 6C654E616D65060A666F726567726F756E640B42727573682E436F6C6F720709
+ 78464645414541454100000C5442727573684F626A65637400095374796C654E
+ 616D65060973656C656374696F6E0B42727573682E436F6C6F72070978393632
+ 4138324532000007544C61796F757400095374796C654E616D650607636F6E74
+ 656E7405416C69676E0706436C69656E74064C6F636B6564090C4D617267696E
+ 732E4C65667405000000000000008000400B4D617267696E732E546F70050000
+ 00000000008000400D4D617267696E732E526967687405000000000000008000
+ 400E4D617267696E732E426F74746F6D05000000000000008000400A53697A65
+ 2E5769647468050000000000CCCCF004400B53697A652E486569676874050000
+ 0000000000A003401453697A652E506C6174666F726D44656661756C74080000
+ 0754427574746F6E00095374796C654E616D65060B6D696E7573627574746F6E
+ 05416C69676E07044C6566740843616E466F6375730806437572736F72070763
+ 724172726F770C4D617267696E732E4C65667405000000000000008000400B4D
+ 617267696E732E546F7005000000000000008000400D4D617267696E732E5269
+ 67687405000000000000008000400E4D617267696E732E426F74746F6D050000
+ 00000000008000400A506F736974696F6E2E5805000000000000008000400A50
+ 6F736974696F6E2E5905000000000000008000400A53697A652E576964746805
+ 00000000000000A003400B53697A652E4865696768740500000000000000A003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B7570060B627574746F6E7374796C65000554506174680005416C69676E0706
+ 43656E74657209446174612E506174680A400000000500000000000000000080
+ 3F00000000010000000000803F0000803F01000000000000000000003F010000
+ 000000803F00000000030000000000803F000000000A46696C6C2E436F6C6F72
+ 0708636C6157686974650748697454657374080A53697A652E57696474680500
+ 0000000000008002400B53697A652E4865696768740500000000000000800240
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E650000000754427574746F6E00095374796C654E616D65060A
+ 706C7573627574746F6E05416C69676E070552696768740843616E466F637573
+ 0806437572736F72070763724172726F770C4D617267696E732E4C6566740500
+ 0000000000008000400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A506F736974696F6E2E580500
+ 000000006666B405400A506F736974696F6E2E5905000000000000008000400A
+ 53697A652E57696474680500000000000000A003400B53697A652E4865696768
+ 740500000000000000A003401453697A652E506C6174666F726D44656661756C
+ 74080B5374796C654C6F6F6B7570060B627574746F6E7374796C650005545061
+ 74680005416C69676E070643656E74657209446174612E506174680A34000000
+ 0400000000000000000000000000000001000000000000000000803F01000000
+ 0000803F0000003F0300000000000000000000000A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 00000000008002400B53697A652E486569676874050000000000000080024014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000000005450463007544C61796F757400095374796C654E61
+ 6D65060D73697A65677269707374796C6505416C69676E070643656E7465720A
+ 53697A652E57696474680500000000000000C803400B53697A652E4865696768
+ 740500000000000000C803401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C6508000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653105416C69676E070643656E7465720A46696C
+ 6C2E436F6C6F7207097846463630363036300A53697A652E5769647468050000
+ 0000000000A000400B53697A652E4865696768740500000000000000A0004014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D6506
+ 0A52656374616E676C653205416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463630363036300C4D617267696E732E4C65667405000000
+ 00000000A002400A53697A652E57696474680500000000000000A000400B5369
+ 7A652E4865696768740500000000000000A000401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6533
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463630
+ 363036300C4D617267696E732E4C6566740500000000000000A002400B4D6172
+ 67696E732E546F700500000000000000A002400A53697A652E57696474680500
+ 000000000000A000400B53697A652E4865696768740500000000000000A00040
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D65
+ 060A52656374616E676C653405416C69676E070643656E7465720A46696C6C2E
+ 436F6C6F7207097846463630363036300B4D617267696E732E546F7005000000
+ 00000000A002400A53697A652E57696474680500000000000000A000400B5369
+ 7A652E4865696768740500000000000000A000401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6535
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463630
+ 363036300B4D617267696E732E546F700500000000000000A002400D4D617267
+ 696E732E52696768740500000000000000A002400A53697A652E576964746805
+ 00000000000000A000400B53697A652E4865696768740500000000000000A000
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D
+ 65060A52656374616E676C653605416C69676E070643656E7465720A46696C6C
+ 2E436F6C6F7207097846463630363036300C4D617267696E732E4C6566740500
+ 000000000000A002400E4D617267696E732E426F74746F6D0500000000000000
+ A002400A53697A652E57696474680500000000000000A000400B53697A652E48
+ 65696768740500000000000000A000401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000000545046300A
+ 5452656374616E676C6500095374796C654E616D65060C746F6F6C6261727374
+ 796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463235323532350748697454657374080553696465730B06426F74746F6D000A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135075669736962
+ 6C650800005450463007544C61796F757400095374796C654E616D6506157072
+ 6F67726573736261726572726F727374796C6505416C69676E070643656E7465
+ 720A53697A652E576964746805000000000033338505400B53697A652E486569
+ 6768740500000000009999E104401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508000A5452656374616E676C6500095374796C65
+ 4E616D65060668747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720709784646313531353135000A
+ 5452656374616E676C6500095374796C654E616D65060A68696E64696361746F
+ 7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646453232
+ 413241064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
+ 58050000000000000080FF3F0A506F736974696F6E2E59050000000000000080
+ FF3F0A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000009999D904401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E650000000A5452656374
+ 616E676C6500095374796C654E616D65060676747261636B05416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 33338505400B53697A652E4865696768740500000000009999E104401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000A5452656374616E676C6500095374796C654E616D
+ 65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C6C
+ 2E436F6C6F720709784646453232413241064C6F636B65640907486974546573
+ 74080C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F736974
+ 696F6E2E5905000000000099998904400A53697A652E57696474680500000000
+ 0033338105400B53697A652E4865696768740500000000000000A80340145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000000005450463007544C61796F757400095374796C654E616D65
+ 060F64726F707461726765747374796C6505416C69676E070643656E7465720A
+ 53697A652E5769647468050000000000ACAAD905400B53697A652E4865696768
+ 740500000000000000CF05401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C6508000A5452656374616E676C650005416C69676E0708
+ 436F6E74656E74730946696C6C2E4B696E6407044E6F6E650748697454657374
+ 080A53697A652E5769647468050000000000ACAAD905400B53697A652E486569
+ 6768740500000000000000CF05401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F720708636C615768697465105374726F
+ 6B652E546869636B6E65737305000000000000008001400B5374726F6B652E44
+ 61736807044461736807585261646975730500000000000000C0024007595261
+ 646975730500000000000000C002400005545465787400095374796C654E616D
+ 6506047465787405416C69676E0706426F74746F6D0748697454657374080C4D
+ 617267696E732E4C6566740500000000000000A002400D4D617267696E732E52
+ 696768740500000000000000A002400A506F736974696F6E2E58050000000000
+ 0000A002400A506F736974696F6E2E590500000000000000D604400A53697A65
+ 2E5769647468050000000000ACAAB105400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74081654
+ 65787453657474696E67732E466F6E74436F6C6F720708636C61576869746500
+ 00001254466C6F61744B6579416E696D6174696F6E00084475726174696F6E05
+ 0000000000999999FE3F044B6579730E010001034B6579050000000000000080
+ FE3F0556616C75650500000000000000A003C00001034B657905000000000000
+ 0080FF3F0000044C6F6F70090C50726F70657274794E616D65060B5061646469
+ 6E672E546F7010537461727446726F6D43757272656E74080754726967676572
+ 060F4973447261674F7665723D7472756500000554506174680005416C69676E
+ 070643656E74657209446174612E506174680AC4000000100000000000000008
+ EC8343F087A4430100000008EC8343083CFB430200000035BE7143504DF94302
+ 00000012835C43A8E6F54302000000F0674943F803F1430100000008EC8343FC
+ 0116440100000008EC8343FC5116440100000000408443FC5116440100000010
+ 689A43FC412B4401000000081CD043F803F14302000000915DC64321E0F54302
+ 000000919DBB439643F94302000000087CB043F833FB4301000000087CB043F0
+ 87A4430100000008EC8343F087A4430300000000000000000000000A46696C6C
+ 2E436F6C6F720708636C6157686974650748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000100C804401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E650000005450463007544C61796F7574000953
+ 74796C654E616D65061464726F707461726765746669656C647374796C650541
+ 6C69676E070643656E7465720A53697A652E576964746805000000000000A08A
+ 07400B53697A652E4865696768740500000000000000B204401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653105416C6967
+ 6E0706436C69656E740946696C6C2E4B696E6407044E6F6E6507486974546573
+ 74080A53697A652E576964746805000000000000A08A07400B53697A652E4865
+ 696768740500000000000000B204401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646324138324532000554
+ 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
+ 656E740748697454657374080A53697A652E576964746805000000000000809A
+ 05400B53697A652E4865696768740500000000000000B204401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C615768697465000007544C61796F757400095374796C
+ 654E616D6506074C61796F75743105416C69676E07044C6566740A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000B204401453697A652E506C6174666F726D44656661756C7408000554
+ 5061746800095374796C654E616D650605506174683105416C69676E07064365
+ 6E74657209446174612E506174680A24010000180000000000000073B8AC43C1
+ 4A7843010000006D2717435849DD430200000086CB0A431078E3430200000096
+ 83ED421078E34302000000DACED4425849DD43020000009A19BC42081CD74302
+ 0000009A19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385
+ EB61430100000068D1D4426811584202000000281CBC42CAA126420200000028
+ 1CBC42E6FBAC410200000068D1D442D04D144102000000A886ED429CC245C002
+ 000000CCCC0A439CC245C002000000B4281743D04D14410100000016B9AC4391
+ 8D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F
+ 5AB14343EB614302000000A05AB1439C046A4302000000FACEAF43711D724302
+ 00000073B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080A53697A652E5769647468
+ 0500000000000000F002400B53697A652E4865696768740500000000000000F0
+ 02401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6508577261704D6F646507034669740000055450617468
+ 00095374796C654E616D650605506174683205416C69676E070643656E746572
+ 09446174612E506174680A24010000180000000000000073B8AC43C14A784301
+ 0000006D2717435849DD430200000086CB0A431078E343020000009683ED4210
+ 78E34302000000DACED4425849DD43020000009A19BC42081CD743020000009A
+ 19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385EB614301
+ 00000068D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6
+ FBAC410200000068D1D442D04D144102000000A886ED429CC245C002000000CC
+ CC0A439CC245C002000000B4281743D04D14410100000016B9AC43918D4B4302
+ 000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343
+ EB614302000000A05AB1439C046A4302000000FACEAF43711D72430200000073
+ B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708
+ 636C6157686974650748697454657374080C4D617267696E732E4C6566740500
+ 000000000000A004400A53697A652E57696474680500000000000000F002400B
+ 53697A652E4865696768740500000000000000F002401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650857
+ 7261704D6F64650703466974000005545061746800095374796C654E616D6506
+ 05506174683305416C69676E070643656E74657209446174612E506174680A24
+ 010000180000000000000073B8AC43C14A7843010000006D2717435849DD4302
+ 00000086CB0A431078E343020000009683ED421078E34302000000DACED44258
+ 49DD43020000009A19BC42081CD743020000009A19BC424C17CD4302000000DA
+ CED4421DEAC64301000000B4288B4385EB61430100000068D1D4426811584202
+ 000000281CBC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D0
+ 4D144102000000A886ED429CC245C002000000CCCC0A439CC245C002000000B4
+ 281743D04D14410100000016B9AC43918D4B4302000000BECFAF43A5BB514302
+ 0000009F5AB143F1D25943020000009F5AB14343EB614302000000A05AB1439C
+ 046A4302000000FACEAF43711D72430200000073B8AC43C14A78430300000073
+ B8AC43C14A78430A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080D4D617267696E732E52696768740500000000000000A004400A53
+ 697A652E57696474680500000000000000F002400B53697A652E486569676874
+ 0500000000000000F002401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669
+ 7400000007544C61796F757400095374796C654E616D6506074C61796F757432
+ 05416C69676E070552696768740A506F736974696F6E2E580500000000000040
+ B106400A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000B204401453697A652E506C6174666F726D4465
+ 6661756C74080005545061746800095374796C654E616D650605506174683105
+ 416C69676E070643656E74657209446174612E506174680A2401000018000000
+ 0000000073B8AC43C14A7843010000006D2717435849DD430200000086CB0A43
+ 1078E343020000009683ED421078E34302000000DACED4425849DD4302000000
+ 9A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEAC643
+ 01000000B4288B4385EB61430100000068D1D4426811584202000000281CBC42
+ CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D144102000000
+ A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D1441
+ 0100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143
+ F1D25943020000009F5AB14343EB614302000000A05AB1439C046A4302000000
+ FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A7843
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080D52
+ 6F746174696F6E416E676C650500000000000000B406400A53697A652E576964
+ 74680500000000000000F002400B53697A652E48656967687405000000000000
+ 00F002401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6508577261704D6F64650703466974000005545061
+ 746800095374796C654E616D650605506174683205416C69676E070643656E74
+ 657209446174612E506174680A24010000180000000000000073B8AC43C14A78
+ 43010000006D2717435849DD430200000086CB0A431078E343020000009683ED
+ 421078E34302000000DACED4425849DD43020000009A19BC42081CD743020000
+ 009A19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385EB61
+ 430100000068D1D4426811584202000000281CBC42CAA1264202000000281CBC
+ 42E6FBAC410200000068D1D442D04D144102000000A886ED429CC245C0020000
+ 00CCCC0A439CC245C002000000B4281743D04D14410100000016B9AC43918D4B
+ 4302000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB1
+ 4343EB614302000000A05AB1439C046A4302000000FACEAF43711D7243020000
+ 0073B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F72
+ 0708636C6157686974650748697454657374080C4D617267696E732E4C656674
+ 0500000000000000A004400D526F746174696F6E416E676C6505000000000000
+ 00B406400A53697A652E57696474680500000000000000F002400B53697A652E
+ 4865696768740500000000000000F002401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F
+ 64650703466974000005545061746800095374796C654E616D65060550617468
+ 3305416C69676E070643656E74657209446174612E506174680A240100001800
+ 00000000000073B8AC43C14A7843010000006D2717435849DD430200000086CB
+ 0A431078E343020000009683ED421078E34302000000DACED4425849DD430200
+ 00009A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEA
+ C64301000000B4288B4385EB61430100000068D1D4426811584202000000281C
+ BC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D14410200
+ 0000A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D
+ 14410100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5A
+ B143F1D25943020000009F5AB14343EB614302000000A05AB1439C046A430200
+ 0000FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A
+ 78430A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0D4D617267696E732E52696768740500000000000000A004400D526F74617469
+ 6F6E416E676C650500000000000000B406400A53697A652E5769647468050000
+ 0000000000F002400B53697A652E4865696768740500000000000000F0024014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F646507034669740000000000545046300754
+ 4C61796F757400095374796C654E616D65060C706F706F7665727374796C6505
+ 416C69676E070643656E7465720756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D650602626705416C69676E0706436C69656E740A
+ 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
+ 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
+ 69656E740C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
+ 67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
+ 74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
+ 00000080FF3F0A53697A652E57696474680500000000000000C004400B53697A
+ 652E4865696768740500000000000000C004401453697A652E506C6174666F72
+ 6D44656661756C740800000D54536861646F7745666665637400084469737461
+ 6E63650500000000000000C0004009446972656374696F6E0500000000000000
+ B4054008536F66746E657373050000000000000080FE3F074F70616369747905
+ 0000000000000080FE3F0B536861646F77436F6C6F720708636C61426C61636B
+ 000000005450463007544C61796F757400095374796C654E616D65060D706F70
+ 7570626F787374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000080C406400B53697A652E486569676874050000000000
+ 0000D404401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080A53697A652E57696474
+ 680500000000000080C406400B53697A652E4865696768740500000000000000
+ D404401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646323032303230
+ 0953746F7056616C756507097846463430343034300754726967676572062049
+ 734D6F7573654F7665723D747275653B4973507265737365643D66616C73650E
+ 54726967676572496E7665727365062149734D6F7573654F7665723D66616C73
+ 653B4973507265737365643D66616C736500000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E3253
+ 74796C65084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463430343034300953746F7056616C7565070978464632413832453207547269
+ 67676572062049734D6F7573654F7665723D747275653B497350726573736564
+ 3D747275653B0E54726967676572496E7665727365062049734D6F7573654F76
+ 65723D747275653B4973507265737365643D66616C736500000007544C61796F
+ 75740005416C69676E070552696768740A506F736974696F6E2E580500000000
+ 000080B506400A53697A652E57696474680500000000000000F002400B53697A
+ 652E4865696768740500000000000000D404401453697A652E506C6174666F72
+ 6D44656661756C7408000554506174680005416C69676E070643656E74657209
+ 446174612E506174680A400000000500000000000000000000000000803F0100
+ 00000000803F0000803F010000000000003F0000000001000000000000000000
+ 803F0300000000000000000000000A46696C6C2E436F6C6F720708636C615768
+ 6974650748697454657374080B4D617267696E732E546F700500000000000000
+ E001C00A53697A652E576964746805000000000000008002400B53697A652E48
+ 656967687405000000000000008001401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000055450617468
+ 0005416C69676E070643656E74657209446174612E506174680A340000000400
+ 0000000000000000000000000000010000000000803F00000000010000000000
+ 003F0000803F0300000000000000000000000A46696C6C2E436F6C6F72070863
+ 6C6157686974650748697454657374080B4D617267696E732E546F7005000000
+ 00000000C001400A53697A652E576964746805000000000000008002400B5369
+ 7A652E48656967687405000000000000008001401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706436C
+ 69656E740748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A53697A652E5769647468050000000000
+ 0080B306400B53697A652E4865696768740500000000000000CC04401453697A
+ 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C615768697465000000545046300A5452656374
+ 616E676C6500095374796C654E616D6506147374617475736261726E6F677269
+ 707374796C6505416C69676E070643656E7465720C436C69704368696C647265
+ 6E090A46696C6C2E436F6C6F7207097846463235323532350553696465730B03
+ 546F70000A53697A652E57696474680500000000000000F004400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
+ 56697369626C650800005450463007544C61796F757400095374796C654E616D
+ 650613736D616C6C7363726F6C6C6261727374796C6505416C69676E07064365
+ 6E7465720756697369626C6508000654547261636B00095374796C654E616D65
+ 060668747261636B05416C69676E0706436C69656E74064C6F636B6564090B4F
+ 7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C74080B5374796C654C
+ 6F6F6B757006147363726F6C6C62617268747261636B7374796C650000065454
+ 7261636B00095374796C654E616D65060676747261636B05416C69676E070643
+ 6C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F72697A
+ 6F6E74616C0A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
+ 44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C62617276
+ 747261636B7374796C650000005450463007544C61796F757400095374796C65
+ 4E616D65060D73706C69747465727374796C6505416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000A904400B53697A652E486569
+ 6768740500000000000080C105401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508000A5452656374616E676C6500095374796C65
+ 4E616D65060A52656374616E676C653105416C69676E0706436C69656E740A46
+ 696C6C2E436F6C6F720709784646333033303330074869745465737408055369
+ 6465730B044C656674055269676874000A53697A652E57696474680500000000
+ 000000A904400B53697A652E4865696768740500000000000080C10540145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000007544C61796F757400095374796C654E616D65
+ 06064C61796F757405416C69676E0706436C69656E740A53697A652E57696474
+ 680500000000000000A904400B53697A652E4865696768740500000000000080
+ C105401453697A652E506C6174666F726D44656661756C74080007544C61796F
+ 757400095374796C654E616D6506046772697005416C69676E070A5665727443
+ 656E746572064C6F636B6564090A506F736974696F6E2E590500000000000000
+ 8004400A53697A652E57696474680500000000000000A904400B53697A652E48
+ 656967687405000000000000008004401453697A652E506C6174666F726D4465
+ 6661756C7408000754436972636C6500095374796C654E616D65060743697263
+ 6C653305416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463430343034300748697454657374080E4D617267696E732E426F74746F6D05
+ 00000000000000A003400A53697A652E57696474680500000000000000E00140
+ 0B53697A652E4865696768740500000000000000E001401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 353135313500000754436972636C6500095374796C654E616D65060743697263
+ 6C653205416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463430343034300748697454657374080B4D617267696E732E546F7005000000
+ 00000000A003400A53697A652E57696474680500000000000000E001400B5369
+ 7A652E4865696768740500000000000000E001401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 313500000754436972636C6500095374796C654E616D650607436972636C6531
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463430
+ 343034300748697454657374080A53697A652E57696474680500000000000000
+ E001400B53697A652E4865696768740500000000000000E001401453697A652E
+ 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
+ 464631353135313500000000005450463007544C61796F757400095374796C65
+ 4E616D650610636C6F7365627574746F6E7374796C6505416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000A5452656374616E676C6500095374
+ 796C654E616D65060B636C6F7365627574746F6E05416C69676E0706436C6965
+ 6E740A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469
+ 6F6E315374796C65084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646464636313537
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E325374796C65084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846464646363135370953746F7056616C756507097846
+ 464532344634350754726967676572061F49734D6F7573654F7665723D747275
+ 653B4973507265737365643D747275650E54726967676572496E766572736506
+ 2049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
+ 6500000005545061746800095374796C654E616D650605506174683105416C69
+ 676E070643656E74657209446174612E506174680AC400000010000000000000
+ 000000A0C00000704101000000000070410000A0C001000000000048420000F0
+ 41010000000000AA420000A0C0010000000000D242000070410100000000008C
+ 4200004842010000000000D2420000B442010000000000AA420000DC42020000
+ 003BDF34429E6F8C4202000000FE547D427FAAB0420200000000004842000096
+ 4201000000000070410000DC42010000000000A0C00000B442010000000000F0
+ 4100005C42010000000000A0C000007041030000000000A0C0000070410A4669
+ 6C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000A002401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E650000005450463007544C61796F757400
+ 095374796C654E616D65060E6D6178627574746F6E7374796C6505416C69676E
+ 070643656E7465720A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508000A5452656374616E676C65
+ 00095374796C654E616D6506096D6178627574746F6E05416C69676E0706436C
+ 69656E740A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E315374796C65084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463230323032300953746F7056616C7565070978464632413832
+ 45320754726967676572062049734D6F7573654F7665723D747275653B497350
+ 7265737365643D66616C73650E54726967676572496E7665727365062149734D
+ 6F7573654F7665723D66616C73653B4973507265737365643D66616C73650000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C
+ 6F72416E696D6174696F6E325374796C65084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463241383245320953746F7056616C75650709
+ 7846463137353739430754726967676572061F49734D6F7573654F7665723D74
+ 7275653B4973507265737365643D747275650E54726967676572496E76657273
+ 65062049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C736500000005545061746800095374796C654E616D65060550617468310541
+ 6C69676E070643656E74657209446174612E506174680A580000000700000000
+ 0000000000C8420000C8420100000000002F440000C8420100000000002F4400
+ 002F44010000000080094400800944010000000080094400007A430100000000
+ 007A4300007A43030000000000C8420000C8420A46696C6C2E436F6C6F720708
+ 636C6157686974650748697454657374080A53697A652E576964746805000000
+ 00000000A002400B53697A652E4865696768740500000000000000A002401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650000005450463007544C61796F757400095374796C654E616D65
+ 060E726573627574746F6E7374796C6505416C69676E070643656E7465720A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508000A5452656374616E676C6500095374796C654E616D
+ 650609726573627574746F6E05416C69676E0706436C69656E740A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646323032
+ 3032300953746F7056616C756507097846463241383245320754726967676572
+ 062049734D6F7573654F7665723D747275653B4973507265737365643D66616C
+ 73650E54726967676572496E7665727365062149734D6F7573654F7665723D66
+ 616C73653B4973507265737365643D66616C736500000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F
+ 6E325374796C65084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463241383245320953746F7056616C7565070978464631373537394307
+ 54726967676572061F49734D6F7573654F7665723D747275653B497350726573
+ 7365643D747275650E54726967676572496E7665727365062049734D6F757365
+ 4F7665723D747275653B4973507265737365643D66616C736500000005545061
+ 746800095374796C654E616D650605506174683105416C69676E070643656E74
+ 657209446174612E506174680A5800000007000000000000000000C8420000C8
+ 420100000000002F440000C8420100000000002F4400002F4401000000008009
+ 4400800944010000000080094400007A430100000000007A4300007A43030000
+ 000000C8420000C8420A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080D526F746174696F6E416E676C650500000000000000B40640
+ 0A53697A652E57696474680500000000000000A002400B53697A652E48656967
+ 68740500000000000000A002401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C61
+ 796F757400095374796C654E616D65060E6D696E627574746F6E7374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508000A5452656374
+ 616E676C6500095374796C654E616D6506096D696E627574746F6E05416C6967
+ 6E0706436C69656E740A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E315374796C65084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463230323032300953746F7056616C756507097846
+ 463241383245320754726967676572062049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C73650E54726967676572496E7665727365
+ 062149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463241383245320953746F705661
+ 6C756507097846463137353739430754726967676572061F49734D6F7573654F
+ 7665723D747275653B4973507265737365643D747275650E5472696767657249
+ 6E7665727365062049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C736500000005545061746800095374796C654E616D6506055061
+ 74683105416C69676E070643656E74657209446174612E506174680A40000000
+ 050000000000000000002F44008009440100000000002F4400002F4401000000
+ 0000C84200002F44010000000000C842008009440300000000002F4400800944
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080B4D
+ 617267696E732E546F700500000000000000A002400D526F746174696F6E416E
+ 676C650500000000000000B406400A53697A652E576964746805000000000000
+ 00A002400B53697A652E4865696768740500000000000000C000401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650000005450463007544C61796F757400095374796C654E616D65060F74
+ 6F6F6C77696E646F777374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000056D5AF07400B53697A652E4865696768740500
+ 000000000000B306401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 046D61736B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 07097846463130313031300A53697A652E576964746805000000000056D5AF07
+ 400B53697A652E4865696768740500000000000000B306401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0756697369626C6508000007544C61796F757400095374796C654E616D650604
+ 6C65667405416C69676E07084D6F73744C656674064C6F636B6564090A506F73
+ 6974696F6E2E590500000000000000C803400A53697A652E5769647468050000
+ 0000000000A001400B53697A652E48656967687405000000000000009A064014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 650005416C69676E07084D6F73744C6566740A46696C6C2E436F6C6F72070978
+ 46463230323032300748697454657374080553696465730B044C656674055269
+ 676874000A53697A652E57696474680500000000000000A001400B53697A652E
+ 48656967687405000000000000009506401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 000A5452656374616E676C6500095374796C654E616D65060A52656374616E67
+ 6C653105416C69676E070A4D6F7374426F74746F6D13456E61626C6544726167
+ 486967686C69676874080A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080A506F736974696F6E2E59050000000000000095064005
+ 53696465730B044C65667406426F74746F6D000A53697A652E57696474680500
+ 000000000000A001400B53697A652E4865696768740500000000000000A00140
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F7207097846463135313531350007544C61796F757400095374796C654E61
+ 6D6506074C61796F75743305416C69676E07094D6F737452696768740A506F73
+ 6974696F6E2E5805000000000000008001400A53697A652E5769647468050000
+ 000000000080FF3F0B53697A652E4865696768740500000000000000A0014014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 6500095374796C654E616D65060A52656374616E676C653105416C69676E0703
+ 546F700A46696C6C2E436F6C6F72070978464631353135313507486974546573
+ 74080A53697A652E5769647468050000000000000080FF3F0B53697A652E4865
+ 69676874050000000000000080FF3F1453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000000007544C61
+ 796F757400095374796C654E616D650605726967687405416C69676E07094D6F
+ 73745269676874064C6F636B6564090A506F736974696F6E2E58050000000000
+ 5655AD07400A506F736974696F6E2E590500000000000000C803400A53697A65
+ 2E57696474680500000000000000A001400B53697A652E486569676874050000
+ 00000000009A06401453697A652E506C6174666F726D44656661756C7408000A
+ 5452656374616E676C650005416C69676E07094D6F737452696768740A46696C
+ 6C2E436F6C6F7207097846463230323032300748697454657374080553696465
+ 730B044C656674055269676874000A53697A652E576964746805000000000000
+ 00A001400B53697A652E48656967687405000000000000009506401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 78464631353135313500000A5452656374616E676C6500095374796C654E616D
+ 65060A52656374616E676C653105416C69676E070A4D6F7374426F74746F6D13
+ 456E61626C6544726167486967686C69676874080A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A506F736974696F6E2E590500
+ 0000000000009506400553696465730B06426F74746F6D055269676874000A53
+ 697A652E57696474680500000000000000A001400B53697A652E486569676874
+ 0500000000000000A001401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
+ 757400095374796C654E616D6506074C61796F75743305416C69676E07084D6F
+ 73744C6566740A53697A652E5769647468050000000000000080FF3F0B53697A
+ 652E4865696768740500000000000000A001401453697A652E506C6174666F72
+ 6D44656661756C7408000A5452656374616E676C6500095374796C654E616D65
+ 060A52656374616E676C653105416C69676E0703546F700A46696C6C2E436F6C
+ 6F7207097846463135313531350748697454657374080A53697A652E57696474
+ 68050000000000000080FF3F0B53697A652E4865696768740500000000000000
+ 80FF3F1453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000000000A5452656374616E676C650005416C69
+ 676E07074D6F7374546F700A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000056D5AF07400B53697A652E4865696768740500000000000000C8034014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F7207097846463135313531350007544C61796F757400095374796C654E616D
+ 65060763617074696F6E05416C69676E0708436F6E74656E7473064C6F636B65
+ 64090748697454657374090A53697A652E576964746805000000000056D5AF07
+ 400B53697A652E4865696768740500000000000000C803401453697A652E506C
+ 6174666F726D44656661756C7408000007544C61796F75740005416C69676E07
+ 06436C69656E74064C6F636B6564090C4D617267696E732E4C65667405000000
+ 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A53697A652E576964746805000000
+ 000056D5AE07400B53697A652E4865696768740500000000000000B803401453
+ 697A652E506C6174666F726D44656661756C74080007544C61796F7574000541
+ 6C69676E07044C656674064C6F636B6564090A53697A652E5769647468050000
+ 00000000009002400B53697A652E4865696768740500000000000000B8034014
+ 53697A652E506C6174666F726D44656661756C7408000007544C61796F757400
+ 095374796C654E616D65060773797362746E7305416C69676E0706436C69656E
+ 74064C6F636B6564090A53697A652E57696474680500000000005655AA07400B
+ 53697A652E4865696768740500000000000000B803401453697A652E506C6174
+ 666F726D44656661756C7408000C545370656564427574746F6E00095374796C
+ 654E616D650605636C6F736505416C69676E07055269676874064C6F636B6564
+ 090A506F736974696F6E2E5805000000000056D59D07400A53697A652E576964
+ 74680500000000000000C803400B53697A652E48656967687405000000000000
+ 00B803401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B75700610636C6F7365627574746F6E7374796C650000055454657874
+ 00095374796C654E616D6506057469746C6505416C69676E0706436C69656E74
+ 064C6F636B6564090748697454657374080A53697A652E576964746805000000
+ 000056D59D07400B53697A652E4865696768740500000000000000B803401453
+ 697A652E506C6174666F726D44656661756C7408045465787406055469746C65
+ 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
+ 65000000000007544C61796F757400095374796C654E616D650606636C69656E
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737409
+ 0A53697A652E576964746805000000000056D5AA07400B53697A652E48656967
+ 687405000000000000009506401453697A652E506C6174666F726D4465666175
+ 6C7408000007544C61796F757400095374796C654E616D650606626F74746F6D
+ 05416C69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E
+ 580500000000000000A001400A506F736974696F6E2E590500000000000000AE
+ 06400A53697A652E576964746805000000000056D5AA07400B53697A652E4865
+ 696768740500000000000000A001401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D6506047265
+ 637405416C69676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646
+ 3230323032300553696465730B03546F7006426F74746F6D000A53697A652E57
+ 6964746805000000000056D5AA07400B53697A652E4865696768740500000000
+ 000000A001401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000000005450463007544C61
+ 796F757400095374796C654E616D65061177696E646F77626F72646572737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 0056D5AF07400B53697A652E4865696768740500000000000000B30640145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D6506046D61736B05416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463130313031300A
+ 53697A652E576964746805000000000056D5AF07400B53697A652E4865696768
+ 740500000000000000B306401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000007
+ 544C61796F757400095374796C654E616D6506046C65667405416C69676E0708
+ 4D6F73744C656674064C6F636B6564090A506F736974696F6E2E590500000000
+ 000000F003400A53697A652E57696474680500000000000000A001400B53697A
+ 652E48656967687405000000000000009506401453697A652E506C6174666F72
+ 6D44656661756C7408000A5452656374616E676C650005416C69676E07084D6F
+ 73744C6566740A46696C6C2E436F6C6F72070978464632303230323007486974
+ 54657374080553696465730B044C656674055269676874000A53697A652E5769
+ 6474680500000000000000A001400B53697A652E486569676874050000000000
+ 00009006401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F72070978464631353135313500000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070A4D
+ 6F7374426F74746F6D13456E61626C6544726167486967686C69676874080A46
+ 696C6C2E436F6C6F7207097846463230323032300748697454657374080A506F
+ 736974696F6E2E5905000000000000009006400553696465730B044C65667406
+ 426F74746F6D000A53697A652E57696474680500000000000000A001400B5369
+ 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350007544C61796F757400095374796C654E616D6506074C61796F75743305
+ 416C69676E07094D6F737452696768740A506F736974696F6E2E580500000000
+ 0000008001400A53697A652E5769647468050000000000000080FF3F0B53697A
+ 652E4865696768740500000000000000A001401453697A652E506C6174666F72
+ 6D44656661756C7408000A5452656374616E676C6500095374796C654E616D65
+ 060A52656374616E676C653105416C69676E0703546F700A46696C6C2E436F6C
+ 6F7207097846463135313531350748697454657374080A53697A652E57696474
+ 68050000000000000080FF3F0B53697A652E4865696768740500000000000000
+ 80FF3F1453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000000000007544C61796F757400095374796C654E
+ 616D650605726967687405416C69676E07094D6F73745269676874064C6F636B
+ 6564090A506F736974696F6E2E580500000000005655AD07400A506F73697469
+ 6F6E2E590500000000000000F003400A53697A652E5769647468050000000000
+ 0000A001400B53697A652E48656967687405000000000000009506401453697A
+ 652E506C6174666F726D44656661756C7408000A5452656374616E676C650005
+ 416C69676E07094D6F737452696768740A46696C6C2E436F6C6F720709784646
+ 3230323032300748697454657374080553696465730B044C6566740552696768
+ 74000A53697A652E57696474680500000000000000A001400B53697A652E4865
+ 6967687405000000000000009006401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F72070978464631353135313500000A
+ 5452656374616E676C6500095374796C654E616D65060A52656374616E676C65
+ 3105416C69676E070A4D6F7374426F74746F6D13456E61626C65447261674869
+ 67686C69676874080A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080A506F736974696F6E2E590500000000000000900640055369
+ 6465730B06426F74746F6D055269676874000A53697A652E5769647468050000
+ 0000000000A001400B53697A652E4865696768740500000000000000A0014014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F7207097846463135313531350007544C61796F757400095374796C654E616D
+ 6506074C61796F75743305416C69676E07084D6F73744C6566740A53697A652E
+ 5769647468050000000000000080FF3F0B53697A652E48656967687405000000
+ 00000000A001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0703546F700A46696C6C2E436F6C6F7207097846463135313531
+ 350748697454657374080A53697A652E5769647468050000000000000080FF3F
+ 0B53697A652E486569676874050000000000000080FF3F1453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 000000000A5452656374616E676C650005416C69676E07074D6F7374546F700A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080A53697A652E576964746805000000000056D5AF07400B53697A
+ 652E4865696768740500000000000000F003401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 350007544C61796F757400095374796C654E616D65060763617074696F6E0541
+ 6C69676E0708436F6E74656E7473064C6F636B6564090748697454657374090A
+ 53697A652E576964746805000000000056D5AF07400B53697A652E4865696768
+ 740500000000000000F003401453697A652E506C6174666F726D44656661756C
+ 7408000007544C61796F75740005416C69676E0706436C69656E74064C6F636B
+ 6564090C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A53697A652E576964746805000000000056D5AE07400B53697A65
+ 2E4865696768740500000000000000E003401453697A652E506C6174666F726D
+ 44656661756C74080007544C61796F75740005416C69676E07044C656674064C
+ 6F636B6564090A53697A652E576964746805000000000000009002400B53697A
+ 652E4865696768740500000000000000E003401453697A652E506C6174666F72
+ 6D44656661756C7408000007544C61796F757400095374796C654E616D650604
+ 69636F6E064C6F636B6564090A506F736974696F6E2E58050000000000000090
+ 02400A506F736974696F6E2E590500000000000000E001400A53697A652E5769
+ 6474680500000000000000C803400B53697A652E486569676874050000000000
+ 0000A803401453697A652E506C6174666F726D44656661756C7408000007544C
+ 61796F757400095374796C654E616D65060773797362746E7305416C69676E07
+ 06436C69656E74064C6F636B6564090A53697A652E5769647468050000000000
+ 5655AA07400B53697A652E4865696768740500000000000000E003401453697A
+ 652E506C6174666F726D44656661756C7408000C545370656564427574746F6E
+ 00095374796C654E616D650605636C6F736505416C69676E0705526967687406
+ 4C6F636B6564090A506F736974696F6E2E5805000000000056559107400A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000E003401453697A652E506C6174666F726D44656661756C7408
+ 0B5374796C654C6F6F6B75700610636C6F7365627574746F6E7374796C650000
+ 0C545370656564427574746F6E00095374796C654E616D6506036D617805416C
+ 69676E07055269676874064C6F636B6564090A506F736974696F6E2E58050000
+ 00000056558207400A53697A652E57696474680500000000000000F003400B53
+ 697A652E4865696768740500000000000000E003401453697A652E506C617466
+ 6F726D44656661756C74080B5374796C654C6F6F6B7570060E6D617862757474
+ 6F6E7374796C6500000C545370656564427574746F6E00095374796C654E616D
+ 65060372657305416C69676E07055269676874064C6F636B6564090A506F7369
+ 74696F6E2E58050000000000ACAAE606400A53697A652E576964746805000000
+ 00000000F003400B53697A652E4865696768740500000000000000E003401453
+ 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
+ 060E726573627574746F6E7374796C6500000C545370656564427574746F6E00
+ 095374796C654E616D6506036D696E05416C69676E07055269676874064C6F63
+ 6B6564090A506F736974696F6E2E58050000000000ACAAC806400A53697A652E
+ 57696474680500000000000000F003400B53697A652E48656967687405000000
+ 00000000E003401453697A652E506C6174666F726D44656661756C74080B5374
+ 796C654C6F6F6B7570060E6D696E627574746F6E7374796C6500000554546578
+ 7400095374796C654E616D6506057469746C6505416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 000000ACAAC806400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C7408045465787406055469746C
+ 65165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
+ 7465000000000007544C61796F757400095374796C654E616D650606636C6965
+ 6E7405416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 090A53697A652E576964746805000000000056D5AA07400B53697A652E486569
+ 67687405000000000000009006401453697A652E506C6174666F726D44656661
+ 756C7408000007544C61796F757400095374796C654E616D650606626F74746F
+ 6D05416C69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E
+ 2E580500000000000000A001400A506F736974696F6E2E590500000000000000
+ AE06400A53697A652E576964746805000000000056D5AA07400B53697A652E48
+ 65696768740500000000000000A001401453697A652E506C6174666F726D4465
+ 6661756C7408000A5452656374616E676C6500095374796C654E616D65060472
+ 65637405416C69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846
+ 463230323032300748697454657374080553696465730B03546F7006426F7474
+ 6F6D000A53697A652E576964746805000000000056D5AA07400B53697A652E48
+ 65696768740500000000000000A001401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350000
+ 00005450463007544C61796F757400095374796C654E616D650610726164696F
+ 627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000F205400B53697A652E4865696768740500000000
+ 000000A803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C65080007544C61796F75740005416C69676E07044C6566740A53697A65
+ 2E57696474680500000000000000A803400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080008
+ 54456C6C6970736500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646323032
+ 303230064C6F636B6564090748697454657374080A53697A652E576964746805
+ 00000000000000F002400B53697A652E4865696768740500000000000000F002
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F720709784646313531353135000854456C6C6970736500095374796C65
+ 4E616D650609636865636B6D61726B05416C69676E0706436C69656E740A4669
+ 6C6C2E436F6C6F720709784646324138324532064C6F636B6564090748697454
+ 65737408074F70616369747905000000000000000000000C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A53697A652E57
+ 696474680500000000000000B002400B53697A652E4865696768740500000000
+ 000000B002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00
+ 095374796C654E616D65061A6F706163697479436865636B6D61726B416E696D
+ 6174696F6E31084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D6506074F7061636974790A537461727456616C75650500000000
+ 0000000000000953746F7056616C7565050000000000000080FF3F0754726967
+ 676572060E4973436865636B65643D747275650E54726967676572496E766572
+ 7365060F4973436865636B65643D66616C73650000000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D65061A726164696F627574746F6E436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 0007496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572061049734D6F7573654F
+ 7665723D747275650E54726967676572496E7665727365061149734D6F757365
+ 4F7665723D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060C
+ 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
+ 31350953746F7056616C75650709784646324138324532075472696767657206
+ 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
+ 4973436865636B65643D66616C73650000000005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000A803401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C6157686974650000005450463007544C61796F757400095374
+ 796C654E616D650618756C63656E746572726164696F627574746F6E7374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 5655FB05400B53697A652E4865696768740500000000000000A004401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C65080007544C61
+ 796F75740005416C69676E0706426F74746F6D0A506F736974696F6E2E590500
+ 0000000000008804400A53697A652E57696474680500000000005655FB05400B
+ 53697A652E4865696768740500000000000000C001401453697A652E506C6174
+ 666F726D44656661756C7408000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E747307
+ 436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E57696474680500000000005655FB05400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720709784646313531353135000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D6506216261636B
+ 67726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E31084475
+ 726174696F6E050000000000000000000007496E7665727365090C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572061049734D6F7573654F7665723D747275650E54726967676572
+ 496E7665727365061149734D6F7573654F7665723D66616C736500000A545265
+ 6374616E676C6500095374796C654E616D650609636865636B6D61726B05416C
+ 69676E0708436F6E74656E747307436F726E6572730B07546F704C6566740A42
+ 6F74746F6D4C656674000A46696C6C2E436F6C6F720709784646324138324532
+ 064C6F636B656409074869745465737408074F70616369747905000000000000
+ 000000000C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
+ 67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
+ 74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
+ 00000080FF3F0A53697A652E57696474680500000000005655F705400B53697A
+ 652E48656967687405000000000000008001401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C
+ 6F6174416E696D6174696F6E00095374796C654E616D65061A636865636B6D61
+ 726B4F706163697479416E696D6174696F6E31084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D6506074F7061636974790A5374
+ 61727456616C756505000000000000000000000953746F7056616C7565050000
+ 000000000080FF3F0754726967676572060E4973436865636B65643D74727565
+ 0E54726967676572496E7665727365060F4973436865636B65643D66616C7365
+ 000000000005545465787400095374796C654E616D6506047465787405416C69
+ 676E0706436C69656E74064C6F636B6564090748697454657374080A53697A65
+ 2E57696474680500000000005655FB05400B53697A652E486569676874050000
+ 00000000008804401453697A652E506C6174666F726D44656661756C74081654
+ 65787453657474696E67732E466F6E74436F6C6F720708636C61576869746500
+ 00005450463007544C61796F757400095374796C654E616D650617756C726967
+ 6874726164696F627574746F6E7374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
+ 68740500000000000000A004401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C65080007544C61796F75740005416C69676E0706426F
+ 74746F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E
+ 57696474680500000000005655FB05400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E747307436F726E6572730B08546F70526967
+ 68740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000005655FB05400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D6506216261636B67726F756E64556C427574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 0000000007496E7665727365090C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572061049734D6F75
+ 73654F7665723D747275650E54726967676572496E7665727365061149734D6F
+ 7573654F7665723D66616C736500000A5452656374616E676C6500095374796C
+ 654E616D650609636865636B6D61726B05416C69676E0708436F6E74656E7473
+ 07436F726E6572730B08546F7052696768740B426F74746F6D5269676874000A
+ 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
+ 745465737408074F70616369747905000000000000000000000C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E57696474680500000000005655F705400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D65061A636865636B6D61726B4F706163697479416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C73650000000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000880440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D650616756C6C656674726164696F627574746F
+ 6E7374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000005655FB05400B53697A652E4865696768740500000000000000A004
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 0007544C61796F75740005416C69676E0706426F74746F6D0A506F736974696F
+ 6E2E5905000000000000008804400A53697A652E576964746805000000000056
+ 55FB05400B53697A652E4865696768740500000000000000C001401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674
+ 000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65640907
+ 48697454657374080A53697A652E57696474680500000000005655FB05400B53
+ 697A652E4865696768740500000000000000C001401453697A652E506C617466
+ 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
+ 353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 216261636B67726F756E64556C427574746F6E436F6C6F72416E696D6174696F
+ 6E31084475726174696F6E050000000000000000000007496E7665727365090C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572061049734D6F7573654F7665723D747275650E5472
+ 6967676572496E7665727365061149734D6F7573654F7665723D66616C736500
+ 000A5452656374616E676C6500095374796C654E616D650609636865636B6D61
+ 726B05416C69676E0708436F6E74656E747307436F726E6572730B07546F704C
+ 6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F72070978464632
+ 4138324532064C6F636B656409074869745465737408074F7061636974790500
+ 0000000000000000000C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000005655F705
+ 400B53697A652E48656967687405000000000000008001401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000F54466C6F6174416E696D6174696F6E00095374796C654E616D65061A6368
+ 65636B6D61726B4F706163697479416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D6506074F70616369
+ 74790A537461727456616C756505000000000000000000000953746F7056616C
+ 7565050000000000000080FF3F0754726967676572060E4973436865636B6564
+ 3D747275650E54726967676572496E7665727365060F4973436865636B65643D
+ 66616C7365000000000005545465787400095374796C654E616D650604746578
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
+ 687405000000000000008804401453697A652E506C6174666F726D4465666175
+ 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
+ 686974650000005450463007544C61796F757400095374796C654E616D650616
+ 70726F677265737362617266696E6973687374796C6505416C69676E07064365
+ 6E7465720A53697A652E576964746805000000000033338505400B53697A652E
+ 4865696768740500000000009999E104401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000A5452656374616E676C6500095374
+ 796C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080A53697A652E576964746805000000000033338505400B53697A
+ 652E4865696768740500000000009999E104401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 35000A5452656374616E676C6500095374796C654E616D65060A68696E646963
+ 61746F7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646
+ 324345323434064C6F636B6564090748697454657374080C4D617267696E732E
+ 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
+ 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
+ 4D617267696E732E426F74746F6D050000000000000080FF3F0A506F73697469
+ 6F6E2E58050000000000000080FF3F0A506F736974696F6E2E59050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000009999D904401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000A5452
+ 656374616E676C6500095374796C654E616D65060676747261636B05416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000A5452656374616E676C6500095374796C65
+ 4E616D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46
+ 696C6C2E436F6C6F720709784646324345323434064C6F636B65640907486974
+ 54657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D61
+ 7267696E732E546F70050000000000000080FF3F0D4D617267696E732E526967
+ 6874050000000000000080FF3F0E4D617267696E732E426F74746F6D05000000
+ 0000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F
+ 736974696F6E2E5905000000000099998904400A53697A652E57696474680500
+ 0000000033338105400B53697A652E4865696768740500000000000000A80340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000005450463007544C61796F757400095374796C654E
+ 616D65060D657870616E6465727374796C6505416C69676E070643656E746572
+ 0A53697A652E576964746805000000000000C08407400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508000A5452656374616E676C6500095374796C654E
+ 616D65060B626772656374616E676C6505416C69676E0708436F6E74656E7473
+ 0C436C69704368696C6472656E090A46696C6C2E436F6C6F7207097846463244
+ 32443244064C6F636B6564090748697454657374080A53697A652E5769647468
+ 05000000000000C08407400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F7207097846463135313531350007544C61796F757400095374796C65
+ 4E616D6506074C61796F75743305416C69676E0703546F700A53697A652E5769
+ 64746805000000000000C08407400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080007544C61
+ 796F757400095374796C654E616D6506074C61796F75743405416C69676E0708
+ 436F6E74656E74730A53697A652E576964746805000000000000C08407400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C7408000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653205416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646323532353235064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000000C08407400B53697A65
+ 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 00000A5452656374616E676C6500095374796C654E616D65060A52656374616E
+ 676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646313531353135064C6F636B6564090748697454657374080A53697A65
+ 2E576964746805000000000000C08407400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D650614466C6F6174416E696D6174696F6E31537479
+ 6C65084475726174696F6E050000000000CDCCCCFB3F0D496E746572706F6C61
+ 74696F6E070843697263756C61720C50726F70657274794E616D650607536361
+ 6C652E580A537461727456616C7565050000000000000080FF3F0953746F7056
+ 616C756505000000000000000000000754726967676572060F4973457870616E
+ 6465643D747275650E54726967676572496E766572736506104973457870616E
+ 6465643D66616C73650000000007544C61796F757400095374796C654E616D65
+ 06074C61796F75743305416C69676E0708436F6E74656E74730A53697A652E57
+ 6964746805000000000000C08407400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740800055454
+ 65787400095374796C654E616D6506047465787405416C69676E07044C656674
+ 084175746F53697A65090A436C6970506172656E7409064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C6566740500000000000000A002400A
+ 506F736974696F6E2E580500000000000000A002400A53697A652E5769647468
+ 05000000000000B8C703400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74081654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746516546578745365
+ 7474696E67732E486F727A416C69676E07074C656164696E670000000F544578
+ 70616E646572427574746F6E00095374796C654E616D650606627574746F6E05
+ 416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E5805
+ 00000000000080F506400A53697A652E57696474680500000000000000A00340
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C740800000000005450463007544C61796F75740009
+ 5374796C654E616D650613657870616E646572627574746F6E7374796C650541
+ 6C69676E070643656E7465720B4D617267696E732E546F700500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000B003400B53697A652E48
+ 65696768740500000000000000B003401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C65080005545061746800095374796C654E616D
+ 650605506174683105416C69676E070643656E74657209446174612E50617468
+ 0A3400000004000000000000000000C8420000C84201000000000096430000C8
+ 42010000000000484300009643030000000000C8420000C8420A46696C6C2E43
+ 6F6C6F720708636C6157686974650748697454657374080D526F746174696F6E
+ 416E676C650500000000000000B405400A53697A652E57696474680500000000
+ 000000A002400B53697A652E4865696768740500000000000000C00140145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D
+ 650614466C6F6174416E696D6174696F6E315374796C65084475726174696F6E
+ 050000000000CDCCCCFB3F0D496E746572706F6C6174696F6E07084369726375
+ 6C61720C50726F70657274794E616D65060D526F746174696F6E416E676C650A
+ 537461727456616C75650500000000000000B405400953746F7056616C756505
+ 000000000000000000000754726967676572060F4973457870616E6465643D74
+ 7275650E54726967676572496E766572736506104973457870616E6465643D66
+ 616C7365000000005450463007544C61796F757400095374796C654E616D6506
+ 15657870616E646572636865636B626F787374796C6505416C69676E07064365
+ 6E7465720A53697A652E576964746805000000000000008406400B53697A652E
+ 48656967687405000000000000008404401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C65080007544C61796F75740005416C69676E
+ 07044C6566740A53697A652E57696474680500000000000000C003400B53697A
+ 652E48656967687405000000000000008404401453697A652E506C6174666F72
+ 6D44656661756C7408000554506174680005416C69676E0706436C69656E7409
+ 446174612E506174680AD80100002700000000000000FEC8BA4402E792440200
+ 00002592AD4402E79244020000006D5BA544FEB09E44020000006D5BA544FEB0
+ 9E440200000093A4A4446A0C9F44020000004A80AC44FC79AA4402000000046E
+ BA44FC79AA44020000004A00C844FC79AA44020000000080CF44FEB09E440200
+ 00000080CF44FEB09E44020000000080CF44FEB09E44020000004C5BC84402E7
+ 924402000000FEC8BA4402E7924400000000FE88BA44FE30974402000000B876
+ BF44FE309744020000000277C344EEA09A44020000000277C34404DE9E440200
+ 00000277C344121BA34402000000B876BF44008CA64402000000FE88BA44008C
+ A644020000004C9BB544008CA64402000000009CB144121BA34402000000009C
+ B14404DE9E4402000000009CB144EEA09A44020000004C9BB544FE3097440200
+ 0000FE88BA44FE309744000000000080BA44045E9B4402000000146EB844045E
+ 9B440200000000C0B64454F79C440200000000C0B64400F09E440200000000C0
+ B644ACE8A04402000000146EB844FC81A244020000000080BA44FC81A2440200
+ 0000EC91BC44FC81A244020000000040BE44ACE8A044020000000040BE4400F0
+ 9E44020000000040BE4454F79C4402000000EC91BC44045E9B44020000000080
+ BA44045E9B440A46696C6C2E436F6C6F72070978363030303030303007486974
+ 54657374080C4D617267696E732E4C65667405000000000000008000400B4D61
+ 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
+ 687405000000000000008000400E4D617267696E732E426F74746F6D05000000
+ 000000008000400A53697A652E57696474680500000000000000A003400B5369
+ 7A652E4865696768740500000000000000E803401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
+ 704D6F64650703466974000F54436F6C6F72416E696D6174696F6E0008447572
+ 6174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46
+ 696C6C2E436F6C6F720A537461727456616C7565070978363030303030303009
+ 53746F7056616C75650708636C61426C61636B0754726967676572060E497343
+ 6865636B65643D7472756500000F54436F6C6F72416E696D6174696F6E000844
+ 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C75650708636C61426C61636B
+ 0953746F7056616C756507097836303030303030300754726967676572060F49
+ 73436865636B65643D66616C73650000000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
+ 48697454657374080C4D617267696E732E4C6566740500000000000000800240
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 5269676874050000000000000080FF3F0A53697A652E57696474680500000000
+ 000000C605400B53697A652E4865696768740500000000000000F80340145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720709784646454545454545165465787453657474696E
+ 67732E486F727A416C69676E07074C656164696E670000005450463007544C61
+ 796F757400095374796C654E616D65060E6C6162656C66696C6C7374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508000A5452656374
+ 616E676C6500095374796C654E616D65060A52656374616E676C653105416C69
+ 676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464631353135
+ 31350A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000005545465787400
+ 095374796C654E616D6506047465787405416C69676E0708436F6E74656E7473
+ 0748697454657374080A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000C803401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C6157686974650000005450463007544C61796F757400095374
+ 796C654E616D650613636F6D626F656469746572726F727374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000C5442727573684F62
+ 6A65637400095374796C654E616D65060A666F726567726F756E6400000B5446
+ 6F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E
+ 53697A650500000000000000D00240000007544C61796F757400095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F720709784646323032303230000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
+ 084475726174696F6E050000000000000000000007496E7665727365090C5072
+ 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572062049734D6F7573654F7665723D747275653B4973
+ 466F63757365643D66616C73650E54726967676572496E766572736506214973
+ 4D6F7573654F7665723D66616C73653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F
+ 6C6F72416E696D6174696F6E325374796C65084475726174696F6E0500000000
+ 00000000000007496E7665727365090C50726F70657274794E616D65060C5374
+ 726F6B652E436F6C6F720A537461727456616C75650709784646343034303430
+ 0953746F7056616C756507097846464532324132410754726967676572061F49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062049734D6F7573654F7665723D747275653B
+ 4973466F63757365643D66616C7365000007544C61796F757400095374796C65
+ 4E616D6506056172726F7705416C69676E070846697452696768740B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E580500000000005ED99705400A506F7369
+ 74696F6E2E59050000000000000080FF3F0A53697A652E576964746805000000
+ 0000889AB803400B53697A652E4865696768740500000000000000B803401453
+ 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646333033303330074869
+ 7454657374080A53697A652E5769647468050000000000889AB803400B53697A
+ 652E4865696768740500000000000000B803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E315374796C65084475726174696F6E05000000000000000000
+ 0007496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463330333033300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973466F63
+ 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
+ 0953746F7056616C756507097846463943313731370754726967676572061F49
+ 73466F63757365643D747275653B49734D6F7573654F7665723D747275650000
+ 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
+ 69676E070643656E7465720C4D617267696E732E4C6566740500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000A002400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080005545061746800095374796C654E616D650605506174683105
+ 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
+ 000000000000C8420000C84201000000000096430000C8420100000000004843
+ 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080A53697A652E576964746805000000000000
+ 00A002400B53697A652E4865696768740500000000000000C001401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650000000000000C5442727573684F626A65637400095374796C654E616D
+ 65060973656C656374696F6E0B42727573682E436F6C6F720709783936324138
+ 324532000007544C61796F757400095374796C654E616D650607636F6E74656E
+ 7405416C69676E0706436C69656E740C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E52696768740500000000000000F003400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 000000008805400B53697A652E4865696768740500000000000000A803401453
+ 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
+ 6F757400095374796C654E616D65061E70726F6772657373626172696E646574
+ 65726D696E61626C657374796C6505416C69676E070643656E7465720A53697A
+ 652E5769647468050000000000ABAAB006400B53697A652E4865696768740500
+ 000000000000C003401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 0676747261636B05416C69676E0708436F6E74656E747307456E61626C656408
+ 0A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564090748
+ 697454657374080A53697A652E57696474680500000000000000E006400B5369
+ 7A652E48656967687405000000000000009404401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350756697369626C6508000A5452656374616E676C6500095374796C654E61
+ 6D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
+ 74696F6E2E590500000000000000F002400A53697A652E576964746805000000
+ 00000000DE06400B53697A652E4865696768740500000000000000A803401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E6500000007544C61796F757400095374796C654E616D6506066874
+ 7261636B05416C69676E0708436F6E74656E74730A53697A652E576964746805
+ 0000000000ABAAB006400B53697A652E4865696768740500000000000000C003
+ 401453697A652E506C6174666F726D44656661756C7408000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730C436C69704368696C6472656E090A46696C6C2E436F
+ 6C6F720709784646324138324532064C6F636B6564090748697454657374080A
+ 53697A652E5769647468050000000000ABAAB006400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E69
+ 6D6174696F6E315374796C6507456E61626C656409084475726174696F6E0500
+ 000000000000800140044C6F6F70090C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463241383245320754726967676572060E497356
+ 697369626C653D7472756500000000005450463007544C61796F757400095374
+ 796C654E616D650611616E69696E64696361746F727374796C6505416C69676E
+ 070643656E7465720756697369626C650800045441726300095374796C654E61
+ 6D65060341726305416C69676E0708436F6E74656E7473074869745465737408
+ 0D526F746174696F6E416E676C650500000000000000B407400A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720708636C615768697465105374726F6B652E546869636B
+ 6E65737305000000000000008001400A5374726F6B652E4361700705526F756E
+ 640B5374726F6B652E4A6F696E0705426576656C08456E64416E676C65050000
+ 0000000000B405C0000F54466C6F6174416E696D6174696F6E00095374796C65
+ 4E616D650603616E6907456E61626C656409084475726174696F6E0500000000
+ 00000080FF3F044C6F6F70090C50726F70657274794E616D65060D526F746174
+ 696F6E416E676C650A537461727456616C756505000000000000000000000953
+ 746F7056616C75650500000000000000B407400754726967676572060E497356
+ 697369626C653D74727565000000005450463007544C61796F75740009537479
+ 6C654E616D650615616E69696E64696361746F72686F727A7374796C6505416C
+ 69676E070643656E7465720A53697A652E57696474680500000000000040C006
+ 400B53697A652E48656967687405000000000000008000401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508000A5452656374616E
+ 676C6500095374796C654E616D65060A52656374616E676C653105416C69676E
+ 0706436C69656E740C436C69704368696C6472656E090A46696C6C2E436F6C6F
+ 7207097846463430343034300A53697A652E57696474680500000000000040C0
+ 06400B53697A652E48656967687405000000000000008000401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 650005544C696E6500095374796C654E616D6506054C696E6531084C696E6554
+ 7970650706426F74746F6D0A53697A652E57696474680500000000000000A00B
+ 400B53697A652E48656967687405000000000000008000401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 324138324532105374726F6B652E546869636B6E657373050000000000000080
+ 02400B5374726F6B652E44617368070444617368000F54466C6F6174416E696D
+ 6174696F6E00095374796C654E616D650603616E6907456E61626C6564090844
+ 75726174696F6E0500000000000000800340044C6F6F70090C50726F70657274
+ 794E616D65060A506F736974696F6E2E580A537461727456616C756505000000
+ 00000000C808C00953746F7056616C7565050000000000000000000007547269
+ 67676572060E497356697369626C653D7472756500000000005450463007544C
+ 61796F757400095374796C654E616D65060A70616E656C7374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C00640
+ 0B53697A652E4865696768740500000000000000A406401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300A
+ 53697A652E57696474680500000000000000C006400B53697A652E4865696768
+ 740500000000000000A406401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C6179
+ 6F757400095374796C654E616D65060E6C6F67627574746F6E7374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000000000C0
+ 05400B53697A652E4865696768740500000000000000C005401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
+ 6E74090A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080A53697A652E57696474680500000000000000C005400B53697A652E4865
+ 696768740500000000000000C005401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463230323032300953746F7056616C7565070978464634303430
+ 34300754726967676572063049734D6F7573654F7665723D747275653B497350
+ 7265737365643D66616C73653B4973466F63757365643D66616C73650E547269
+ 67676572496E7665727365063149734D6F7573654F7665723D66616C73653B49
+ 73507265737365643D66616C73653B4973466F63757365643D66616C73650000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574
+ 746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E0500000000
+ 0000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
+ 537461727456616C756507097846463430343034300953746F7056616C756507
+ 097846463137353739430754726967676572062F4973507265737365643D7472
+ 75653B49734D6F7573654F7665723D747275653B4973466F63757365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0615627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463241383245320953746F7056
+ 616C756507097846463137353739430754726967676572062E49735072657373
+ 65643D747275653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D747275650E54726967676572496E7665727365062F4973507265737365
+ 643D66616C73653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D74727565000005545061746800095374796C654E616D65060550617468
+ 3105416C69676E0706436C69656E7409446174612E506174680A5C0200003200
+ 0000000000000000A841CDCCCC40010000000000A8410000C041010000000000
+ C03F0000C041010000000000C03F00000000010000009A996941000000000100
+ 00000000A841CDCCCC40030000000000A841CDCCCC400000000000009C410000
+ F04001000000000058410000F04001000000000058410000C03F010000000000
+ 40400000C03F01000000000040400000B4410100000000009C410000B4410100
+ 000000009C410000F0400300000000009C410000F04000000000000040410000
+ F04001000000000090400000F04001000000000090400000C040010000000000
+ 40410000C04001000000000040410000F04003000000000040410000F0400000
+ 0000000090400000104101000000000090410000104101000000000090410000
+ 2841010000000000904000002841010000000000904000001041030000000000
+ 9040000010410000000000009040000040410100000000009041000040410100
+ 0000000090410000584101000000000090400000584101000000000090400000
+ 4041030000000000904000004041000000000000904000007041010000000000
+ 9041000070410100000000009041000084410100000000009040000084410100
+ 0000000090400000704103000000000090400000704100000000000090400000
+ 9041010000000000904100009041010000000000904100009C41010000000000
+ 904000009C410100000000009040000090410300000000009040000090410000
+ 0000000070410000C04001000000333393410000C04001000000000070416666
+ 264001000000000070410000C04003000000000070410000C0400A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080C4D617267696E73
+ 2E4C6566740500000000000000A002400B4D617267696E732E546F7005000000
+ 00000000A002400D4D617267696E732E52696768740500000000000000A00240
+ 0E4D617267696E732E426F74746F6D0500000000000000A002400A53697A652E
+ 576964746805000000000000009805400B53697A652E48656967687405000000
+ 000000009805401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6508577261704D6F64650703466974000000
+ 005450463007544C61796F757400095374796C654E616D65061470726F677265
+ 73736261726D696E697374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000033338505400B53697A652E4865696768740500
+ 000000009999E104401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 0668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646343034303430064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C6500
+ 095374796C654E616D65060A68696E64696361746F7205416C69676E07044C65
+ 66740A46696C6C2E436F6C6F720709784646324138324532064C6F636B656409
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000009999E104401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
+ 000A5452656374616E676C6500095374796C654E616D65060676747261636B05
+ 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464634
+ 3034303430064C6F636B6564090748697454657374080A53697A652E57696474
+ 6805000000000033338505400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000A5452656374616E676C6500095374796C654E61
+ 6D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 7374080A506F736974696F6E2E5905000000000099998D04400A53697A652E57
+ 6964746805000000000033338505400B53697A652E4865696768740500000000
+ 000000A803401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000000005450463007544C61796F75740009
+ 5374796C654E616D65061B7472656576696577657870616E646572627574746F
+ 6E7374796C6505416C69676E070643656E7465720B4D617267696E732E546F70
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000B003
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508000554506174680009
+ 5374796C654E616D650605506174683105416C69676E070643656E7465720944
+ 6174612E506174680A3400000004000000000000000000C8420000C842010000
+ 00000096430000C842010000000000484300009643030000000000C8420000C8
+ 420A46696C6C2E436F6C6F720708636C6157686974650748697454657374080D
+ 526F746174696F6E416E676C650500000000000000B405C00A53697A652E5769
+ 6474680500000000000000A002400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0009
+ 5374796C654E616D650614466C6F6174416E696D6174696F6E315374796C6508
+ 4475726174696F6E05000000000000000000000D496E746572706F6C6174696F
+ 6E070843697263756C61720C50726F70657274794E616D65060D526F74617469
+ 6F6E416E676C650A537461727456616C75650500000000000000B405C0095374
+ 6F7056616C756505000000000000000000000754726967676572060F49734578
+ 70616E6465643D747275650E54726967676572496E7665727365061049734578
+ 70616E6465643D66616C736500000000545046300A5452656374616E676C6500
+ 095374796C654E616D65061174726565766965776974656D7374796C6505416C
+ 69676E070643656E7465720946696C6C2E4B696E6407044E6F6E650748697454
+ 657374080553696465730B06426F74746F6D000A53697A652E57696474680500
+ 000000000000AE05400B53697A652E4865696768740500000000000000A00440
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F7207097846463135313531350756697369626C6508000C54537065656442
+ 7574746F6E00095374796C654E616D650606627574746F6E05416C69676E0704
+ 4C6566740A53697A652E57696474680500000000000000A003400B53697A652E
+ 4865696768740500000000000000A004401453697A652E506C6174666F726D44
+ 656661756C74080B5374796C654C6F6F6B7570061B7472656576696577657870
+ 616E646572627574746F6E7374796C65000007544C61796F75740005416C6967
+ 6E0708436F6E74656E74730C4D617267696E732E4C6566740500000000000000
+ A003400A53697A652E576964746805000000000000008605400B53697A652E48
+ 65696768740500000000000000A004401453697A652E506C6174666F726D4465
+ 6661756C7408000954436865636B426F7800095374796C654E616D6506056368
+ 65636B05416C69676E07044C6566740843616E466F637573081244697361626C
+ 65466F637573456666656374090A53697A652E57696474680500000000000000
+ A003400B53697A652E4865696768740500000000000000A004401453697A652E
+ 506C6174666F726D44656661756C740800000654476C79706800095374796C65
+ 4E616D65060A676C7970687374796C650C4D617267696E732E4C656674050000
+ 00000000008000400B4D617267696E732E546F70050000000000000080FF3F0D
+ 4D617267696E732E526967687405000000000000008000400E4D617267696E73
+ 2E426F74746F6D050000000000000080FF3F05416C69676E07044C6566740A50
+ 6F736974696F6E2E580500000000000000B003400A506F736974696F6E2E5905
+ 0000000000000080FF3F0A53697A652E57696474680500000000000000800340
+ 0B53697A652E48656967687405000000000000009804401453697A652E506C61
+ 74666F726D44656661756C7408000005545465787400095374796C654E616D65
+ 06047465787405416C69676E0706436C69656E74064C6F636B65640907486974
+ 54657374080A53697A652E57696474680500000000000000BC04400B53697A65
+ 2E4865696768740500000000000000A004401453697A652E506C6174666F726D
+ 44656661756C74080454657874060454657874165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C615768697465155465787453657474696E67
+ 732E576F72645772617008165465787453657474696E67732E486F727A416C69
+ 676E07074C656164696E670000000A5452656374616E676C650005416C69676E
+ 0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65074869745465
+ 7374080E4D617267696E732E426F74746F6D050000000000000080FF3F055369
+ 6465730B044C656674000A53697A652E57696474680500000000000000AE0540
+ 0B53697A652E48656967687405000000000000009C04401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464632
+ 4138324532105374726F6B652E546869636B6E65737305000000000000008000
+ 400000005450463007544C61796F757400095374796C654E616D65060D747265
+ 65766965777374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000E106400B53697A652E486569676874050000000000
+ 00808107401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978304646464646464600000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B656409
+ 0748697454657374080C50616464696E672E4C656674050000000000000080FF
+ 3F0D50616464696E672E5269676874050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000E106400B53697A652E48656967687405000000
+ 000000808107401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F7207097846463135313531350007544C61796F75740009
+ 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090B4D617267696E732E546F70050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000CD06400B53697A65
+ 2E4865696768740500000000000000F006401453697A652E506C6174666F726D
+ 44656661756C7408000A5452656374616E676C6500095374796C654E616D6506
+ 0973656C656374696F6E0A46696C6C2E436F6C6F720709784646324138324532
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
+ 0A5452656374616E676C6500095374796C654E616D650610666F637573656473
+ 656C656374696F6E0A46696C6C2E436F6C6F7207097846463241383245320748
+ 697454657374080A53697A652E57696474680500000000000000C804400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650B537472
+ 6F6B652E446173680703446F740000000A545363726F6C6C4261720009537479
+ 6C654E616D65060A767363726F6C6C62617205416C69676E070552696768740B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0C4D617267696E732E4C65667405000000000000
+ 008000400A506F736974696F6E2E580500000000000000D006400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00000000F106401453697A652E506C6174666F726D44656661756C740800000A
+ 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
+ 7205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D
+ 617267696E732E546F7005000000000000008000400A506F736974696F6E2E58
+ 050000000000000080FF3F0A506F736974696F6E2E590500000000000000F306
+ 400A53697A652E57696474680500000000000000DF06400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C740800000F54536D616C6C5363726F6C6C42617200095374796C654E616D
+ 65060F76736D616C6C7363726F6C6C62617205416C69676E070552696768740B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0C4D617267696E732E4C65667405000000000000
+ 008000400A506F736974696F6E2E580500000000000000C605400A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 0000008002400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800000F54
+ 536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C
+ 6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A50
+ 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
+ 00000000000000E205400A53697A652E57696474680500000000000000960640
+ 0B53697A652E48656967687405000000000000008002401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C650800000000545046300754
+ 4C61796F757400095374796C654E616D650619616374696F6E746F6F6C627574
+ 746F6E6D756C74697669657705416C69676E070643656E7465720A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C65080B46697865644865696768740232000654476C79706800095374
+ 796C654E616D65060A676C7970687374796C650C4D617267696E732E4C656674
+ 05000000000000009002400B4D617267696E732E546F70050000000000000090
+ 02400E4D617267696E732E426F74746F6D050000000000000090024005416C69
+ 676E07044C6566740A506F736974696F6E2E5805000000000000009002400A50
+ 6F736974696F6E2E5905000000000000009002400A53697A652E576964746805
+ 000000000000008004400B53697A652E48656967687405000000000000008004
+ 401453697A652E506C6174666F726D44656661756C740800000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
+ 6E74090A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080C4D617267696E732E4C6566740500000000000000C804C00A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
+ 6E31084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 30323032300953746F7056616C75650709784646343034303430075472696767
+ 6572063049734D6F7573654F7665723D747275653B4973507265737365643D66
+ 616C73653B4973466F63757365643D66616C73650E54726967676572496E7665
+ 727365063149734D6F7573654F7665723D66616C73653B497350726573736564
+ 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
+ 416E696D6174696F6E33084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463241383245320953746F7056616C7565070978464631373537
+ 39430754726967676572062E4973507265737365643D747275653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D747275650E5472696767
+ 6572496E7665727365062F4973507265737365643D66616C73653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D74727565000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E740748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C7408045465787406045465787416546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465000007544C61
+ 796F757400095374796C654E616D6506074C61796F75743205416C69676E0704
+ 4C6566740A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080005545061746800095374796C654E616D65060469636F6E05
+ 416C69676E070643656E74657209446174612E506174680A1801000017000000
+ 000000000000C03F0000C03F0100000000000000000000000100000000004040
+ 00000000010000000000C03F0000C03F030000000000C03F0000C03F00000000
+ 00009040000000000100000000004041000000000100000000004041CDCC4C3F
+ 0100000000009040CDCC4C3F0100000000009040000000000300000000009040
+ 0000000000000000000090403333734001000000000090400000404001000000
+ 0000404100004040010000000000404133337340010000000000904033337340
+ 03000000000090403333734000000000000090409A99D9400100000000009040
+ 0000C04001000000000040410000C04001000000000040419A99D94001000000
+ 000090409A99D94003000000000090409A99D9400A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 0000000000D003400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F64650703466974000000005450463007544C
+ 61796F757400095374796C654E616D65060E616464627574746F6E7374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000C003401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C65080B4669786564
+ 4865696768740218000654476C79706800095374796C654E616D65060A676C79
+ 70687374796C650C4D617267696E732E4C65667405000000000000009002400B
+ 4D617267696E732E546F7005000000000000009002400E4D617267696E732E42
+ 6F74746F6D050000000000000090024005416C69676E07044C6566740A506F73
+ 6974696F6E2E5805000000000000009002400A506F736974696F6E2E59050000
+ 00000000009002400A53697A652E576964746805000000000000008004400B53
+ 697A652E48656967687405000000000000008004401453697A652E506C617466
+ 6F726D44656661756C740800000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C
+ 69704368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080C4D617267696E732E4C
+ 6566740500000000000000C003C00A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000C003401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572063049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73653B4973466F637573
+ 65643D66616C73650E54726967676572496E7665727365063149734D6F757365
+ 4F7665723D66616C73653B4973507265737365643D66616C73653B4973466F63
+ 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E330844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463241383245
+ 320953746F7056616C756507097846463137353739430754726967676572062E
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D747275650E54726967676572496E7665727365062F49
+ 73507265737365643D66616C73653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D7472756500000005545465787400095374796C654E61
+ 6D6506047465787405416C69676E0706436C69656E740748697454657374080A
+ 53697A652E576964746805000000000000009805400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080454657874060454657874165465787453657474696E67732E466F6E7443
+ 6F6C6F720708636C615768697465000007544C61796F757400095374796C654E
+ 616D6506074C61796F75743205416C69676E07044C6566740A53697A652E5769
+ 6474680500000000000000C003400B53697A652E486569676874050000000000
+ 0000C003401453697A652E506C6174666F726D44656661756C74080005545061
+ 746800095374796C654E616D65060469636F6E05416C69676E0708436F6E7465
+ 6E747309446174612E506174680AAC0000000E00000000000000CDCC34410000
+ C040010000000000C0400000C040010000000000C040CDCC3441010000009A99
+ A940CDCC3441010000009A99A9400000C04001000000000000000000C0400100
+ 0000000000009A99A940010000009A99A9409A99A940010000009A99A9400000
+ 0000010000000000C04000000000010000000000C0409A99A94001000000CDCC
+ 34419A99A94001000000CDCC34410000C04003000000CDCC34410000C0400A46
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D6172
+ 67696E732E4C65667405000000000000008001400B4D617267696E732E546F70
+ 05000000000000008001400D4D617267696E732E526967687405000000000000
+ 008001400E4D617267696E732E426F74746F6D05000000000000008001400A53
+ 697A652E576964746805000000000000008003400B53697A652E486569676874
+ 05000000000000008003401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669
+ 74000000005450463007544C61796F757400095374796C654E616D650617696E
+ 666F746F6F6C627574746F6E6D756C74697669657705416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C65080B46697865644865696768740232000654
+ 476C79706800095374796C654E616D65060A676C7970687374796C650C4D6172
+ 67696E732E4C65667405000000000000009002400B4D617267696E732E546F70
+ 05000000000000009002400E4D617267696E732E426F74746F6D050000000000
+ 000090024005416C69676E07044C6566740A506F736974696F6E2E5805000000
+ 000000009002400A506F736974696F6E2E5905000000000000009002400A5369
+ 7A652E576964746805000000000000008004400B53697A652E48656967687405
+ 000000000000008004401453697A652E506C6174666F726D44656661756C7408
+ 00000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
+ 6F756E6405416C69676E0706436C69656E740C436C69704368696C6472656E09
+ 0A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632303230
+ 32300748697454657374080C4D617267696E732E4C6566740500000000000000
+ C804C00A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572063049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C73650E5472
+ 6967676572496E7665727365063149734D6F7573654F7665723D66616C73653B
+ 4973507265737365643D66616C73653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463241383245320953746F7056616C7565
+ 07097846463137353739430754726967676572062E4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275653B4973466F63757365643D74
+ 7275650E54726967676572496E7665727365062F4973507265737365643D6661
+ 6C73653B49734D6F7573654F7665723D747275653B4973466F63757365643D74
+ 72756500000005545465787400095374796C654E616D6506047465787405416C
+ 69676E0706436C69656E740748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C7408045465787406045465
+ 7874165465787453657474696E67732E466F6E74436F6C6F720708636C615768
+ 697465000007544C61796F757400095374796C654E616D6506074C61796F7574
+ 3205416C69676E07044C6566740A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080005545061746800095374796C654E61
+ 6D65060469636F6E05416C69676E070643656E74657209446174612E50617468
+ 0A84070000A0000000000000009A9987429A99074302000000010076429A9907
+ 430200000001005E42CDCC064302000000343347423433054302000000010030
+ 429A9903430200000067661A42CE4C01430200000067660642CECCFC42020000
+ 00CECCE4410100F742020000000100C041CECCEF420200000034339F419B99E7
+ 4202000000CECC7C416866DF4202000000353343413533D64202000000CECC14
+ 413533CC42020000009A99C9400000C24202000000000080403333B742020000
+ 009A991940CDCCAB4202000000CDCC4C3F3333A0420200000000000000333394
+ 4202000000000000009A99874202000000000000000100764202000000CDCC4C
+ 3F01005E42020000009A991940CECC4642020000000000804000003042020000
+ 009A99C94066661A42020000003333134166660642020000009A994141CCCCE4
+ 410200000033337B41FFFFBF410200000066669E4132339F41020000003333BF
+ 41CACC7C41020000000000E441313343410200000000000642CACC1441020000
+ 0066661A429A99C94002000000000030420000804002000000333347429A9919
+ 400200000000005E42CDCC4C3F020000006666764200000000020000009A9987
+ 4200000000020000003433944200000000020000003433A042CDCC4C3F020000
+ 00CDCCAB429A991940020000003333B74200008040020000000000C2429A99C9
+ 40020000003333CC4233331341020000003333D6429A994141020000006666DF
+ 4233337B41020000009999E74266669E4102000000CCCCEF423333BF41020000
+ 00FFFFF6420000E44102000000CCCCFC420000064202000000CC4C014300001A
+ 4202000000999903439A992F420200000033330543CDCC464202000000CDCC06
+ 4300005E4202000000999907430000764202000000999907439A998742020000
+ 00999907433433944202000000CCCC06433433A0420200000033330543CDCCAB
+ 4202000000999903436766B74202000000CD4C01433333C24202000000CCCCFC
+ 423433CC4202000000FFFFF6423433D64202000000CCCCEF426766DF42020000
+ 009999E7429A99E742020000006666DF42CDCCEF42020000003333D6420000F7
+ 42020000003333CC42CDCCFC42020000003333C242CD4C0143020000006666B7
+ 429A99034302000000CCCCAB4233330543020000003333A042CDCC0643020000
+ 00333394429A990743020000009A9987429A990743030000009A9987429A9907
+ 43000000009A99874200001041020000009A9979420000104102000000CECC64
+ 4233331B4102000000CECC50429A99314102000000CECC3C4200004841020000
+ 0001002A420000684102000000CECC184200008841020000003433074200009C
+ 41020000003633EF41CDCCB441020000006966D2419A99D141020000009C99B5
+ 416766EE41020000009C999D41CDCC064202000000D0CC884166661842020000
+ 00A099694100002A4202000000A099494166663C42020000003A333341CCCC50
+ 420200000033331B4133336542020000000000104100007A4202000000000010
+ 419A9987420200000000001041343392420200000033331B41CDCC9C42020000
+ 009A993141CDCCA6420200000000004841CDCCB04202000000000068413333BA
+ 4202000000000088410000C3420200000000009C41CDCCCB4202000000CDCCB4
+ 419A99D342020000009A99D141CDCCDA42020000006766EE410000E242020000
+ 00CDCC06420000E84202000000666618423333ED420200000000002A423333F2
+ 420200000066663C423333F64202000000666650420000F94202000000666664
+ 42CDCCFB4202000000333379423333FD4202000000666687423333FD42020000
+ 00333392423333FD420200000099999C42CDCCFB42020000009999A6420000F9
+ 42020000009999B0423333F64202000000FFFFB9423333F24202000000CCCCC2
+ 423333ED42020000009999CB423333E842020000006666D3420000E242020000
+ 009999DA42CDCCDA4202000000CCCCE1429A99D34202000000CCCCE742CDCCCB
+ 4202000000FFFFEC420000C34202000000FFFFF1423333BA4202000000FFFFF5
+ 420000B14202000000CCCCF8420000A742020000009999FB4200009D42020000
+ 00FFFFFC429A99924202000000FFFFFC42CDCC874202000000FFFFFC4200007A
+ 42020000009999FB423433654202000000CCCCF8423433514202000000FFFFF5
+ 4234333D4202000000FFFFF14267662A4202000000FFFFEC42CECC1842020000
+ 00FFFFE7423433074202000000CCCCE1423633EF41020000009999DA426966D2
+ 41020000006666D3429C99B541020000009999CB429C999D4102000000CCCCC2
+ 42D0CC884102000000FFFFB942A099694102000000CCCCB042A0994941020000
+ 009999A6423A33334102000000CDCC9C4233331B410200000066669242000010
+ 41020000009A99874200001041030000009A998742000010410000000033337D
+ 42CDCC1042010000009A999042CDCC1042010000009A999042CDCC3442010000
+ 0034337D42CDCC34420100000034337D42CDCC10420300000033337D42CDCC10
+ 420000000033337D4233335942010000009A99904233335942010000009A9990
+ 420000C7420100000034337D420000C7420100000034337D4233335942030000
+ 0033337D42333359420A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080A53697A652E57696474680500000000000000D003400B5369
+ 7A652E4865696768740500000000000000E003401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
+ 704D6F64650703466974000000005450463007544C61796F757400095374796C
+ 654E616D65061B6F7267616E697A65746F6F6C627574746F6E6D756C74697669
+ 657705416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000000C805400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C65080B466978
+ 65644865696768740232000654476C79706800095374796C654E616D65060A67
+ 6C7970687374796C650C4D617267696E732E4C65667405000000000000009002
+ 400B4D617267696E732E546F7005000000000000009002400E4D617267696E73
+ 2E426F74746F6D050000000000000090024005416C69676E07044C6566740A50
+ 6F736974696F6E2E5805000000000000009002400A506F736974696F6E2E5905
+ 000000000000009002400A53697A652E57696474680500000000000000800440
+ 0B53697A652E48656967687405000000000000008004401453697A652E506C61
+ 74666F726D44656661756C740800000A5452656374616E676C6500095374796C
+ 654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C
+ 436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E43
+ 6F6C6F7207097846463230323032300748697454657374080C4D617267696E73
+ 2E4C6566740500000000000000C804C00A53697A652E57696474680500000000
+ 000000C805400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463230323032300953746F70
+ 56616C756507097846463430343034300754726967676572063049734D6F7573
+ 654F7665723D747275653B4973507265737365643D66616C73653B4973466F63
+ 757365643D66616C73650E54726967676572496E7665727365063149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C73653B497346
+ 6F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E33
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646324138
+ 3245320953746F7056616C756507097846463137353739430754726967676572
+ 062E4973507265737365643D747275653B49734D6F7573654F7665723D747275
+ 653B4973466F63757365643D747275650E54726967676572496E766572736506
+ 2F4973507265737365643D66616C73653B49734D6F7573654F7665723D747275
+ 653B4973466F63757365643D7472756500000005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E740748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 5768697465000007544C61796F757400095374796C654E616D6506074C61796F
+ 75743205416C69676E07044C6566740A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080005545061746800095374796C65
+ 4E616D65060469636F6E05416C69676E070643656E74657209446174612E5061
+ 74680AD000000011000000000000009A99E9409A99C940010000006666664066
+ 661E4101000000000000009A99C940010000000000003F9A99B94001000000CD
+ CC4C409A99094101000000CDCC4C400000000001000000000080400000000001
+ 0000000000804000000841010000006666D6406666B640010000009A99E9409A
+ 99C940030000009A99E9409A99C940000000009A99993E00004041010000009A
+ 99993E33333341010000000000E04033333341010000000000E0400000404101
+ 0000009A99993E00004041030000009A99993E000040410A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080A53697A652E5769647468
+ 0500000000000000D003400B53697A652E4865696768740500000000000000E0
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6508577261704D6F646507034669740000000054504630
+ 07544C61796F757400095374796C654E616D65061B73657474696E6773746F6F
+ 6C627574746F6E6D756C74697669657705416C69676E070643656E7465720A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C65080B46697865644865696768740232000654476C797068
+ 00095374796C654E616D65060A676C7970687374796C650C4D617267696E732E
+ 4C65667405000000000000009002400B4D617267696E732E546F700500000000
+ 0000009002400E4D617267696E732E426F74746F6D0500000000000000900240
+ 05416C69676E07044C6566740A506F736974696F6E2E58050000000000000090
+ 02400A506F736974696F6E2E5905000000000000009002400A53697A652E5769
+ 64746805000000000000008004400B53697A652E486569676874050000000000
+ 00008004401453697A652E506C6174666F726D44656661756C740800000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0706436C69656E740C436C69704368696C6472656E090A436C6970
+ 506172656E74090A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080C4D617267696E732E4C6566740500000000000000C804C00A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E31084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572063049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365063149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E33084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463241383245320953746F7056616C75650709784646
+ 3137353739430754726967676572062E4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062F4973507265737365643D66616C73653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650000
+ 0005545465787400095374796C654E616D6506047465787405416C69676E0706
+ 436C69656E740748697454657374080A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080454657874060454657874165465
+ 787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
+ 07544C61796F757400095374796C654E616D6506074C61796F75743205416C69
+ 676E07044C6566740A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080005545061746800095374796C654E616D65060469
+ 636F6E05416C69676E070643656E74657209446174612E506174680A540D0000
+ 1C01000000000000333351423333E7410200000033335142CDCCE84102000000
+ 333351426666EA4102000000333351423333EB410200000033335142CDCCEC41
+ 02000000333351426666EE4102000000333351423333EF410200000033335142
+ CDCCF04102000000333351426666F24102000000333351423333F34102000000
+ 33335142CDCCF44102000000333351426666F64102000000333351423333F741
+ 0100000099996F4266660E4201000000CDCC5C4200003C420100000000003A42
+ 0000344202000000000038420000364202000000000036420000384202000000
+ 0000344200003A420100000000003C42CDCC5C4201000000CDCC0E429A996F42
+ 010000000000F84133335142020000006666F6413333514202000000CDCCF441
+ 33335142020000000000F44133335142020000006666F2413333514202000000
+ CDCCF04133335142020000000000F04133335142020000006666EE4133335142
+ 02000000CDCCEC4133335142020000000000EC4133335142020000006666EA41
+ 3333514202000000CDCCE84133335142020000000000E8413333514201000000
+ 6666C24199996F4201000000FFFF4F41CCCC5C4201000000FFFF6F41FFFF3942
+ 02000000FFFF6741FFFF374202000000FFFF5F41FFFF354202000000FFFF5741
+ FFFF33420100000098999940FFFF3B420100000000000000CDCC0E4201000000
+ 3333F3400000F841020000003333F3406666F641020000003333F340CDCCF441
+ 020000003333F3400000F441020000003333F3406666F241020000003333F340
+ CDCCF041020000003333F3400000F041020000003333F3406666EE4102000000
+ 3333F340CDCCEC41020000003333F3400000EC41020000003333F3406666EA41
+ 020000003333F340CDCCE841020000003333F3400000E8410100000000000000
+ CDCCC0410100000066669640CDCC4C410100000066665641CDCC6C4102000000
+ 66665E41CDCC64410200000066666641CDCC5C410200000066666E41CDCC5441
+ 0100000066664E413433934001000000CDCCC04100000000010000006666E641
+ 3333F340020000000000E8413333F340020000009999E9413333F34002000000
+ 6666EA413333F340020000000000EC413333F340020000009999ED413333F340
+ 020000006666EE413333F340020000000000F0413333F340020000009999F141
+ 3333F340020000006666F2413333F340020000000000F4413333F34002000000
+ 9999F5413333F340020000006666F6413333F34001000000CDCC0E4200000000
+ 0100000000003C42666696400100000000003442666656410200000000003642
+ 66665E410200000000003842666666410200000000003A4266666E4101000000
+ CDCC5C4266664E41010000009A996F429A99C14101000000333351423333E741
+ 03000000333351423333E7410000000033334342CDCC02420200000033334342
+ CDCC004202000000999943426766FE4102000000999943426766FA4102000000
+ 999943426766F64102000000FFFF43423433F34102000000FFFF43423433EF41
+ 02000000FFFF43423433EB4102000000FFFF43420100E8410200000099994342
+ 0100E44102000000999943420100E0410200000033334342CECCDC4102000000
+ 33334342CECCD84101000000CDCC5E426866B64101000000CDCC54429B998541
+ 01000000CDCC3442CECC9441020000006766324234338F410200000000003042
+ 9B9989410200000033332D42010084410200000066662A42CECC7C4102000000
+ 000028423533734102000000CDCC24429C9969410100000067662C423833D340
+ 0100000001001442383383400100000067660242020030410200000067660042
+ 02003041020000009B99FD4168662E41020000009B99F94168662E4102000000
+ 9B99F54168662E41020000006866F241CECC2C41020000006866EE41CECC2C41
+ 020000006866EA41CECC2C41020000003533E741CECC2C41020000003533E341
+ 68662E41020000003533DF4168662E41020000000200DC410200304102000000
+ 0200D84102003041010000009C99B5413733834001000000CFCC84413733D340
+ 01000000020094419C9969410200000068668E413633734102000000CFCC8841
+ CFCC7C410200000035338341010084410200000036337B419A99894102000000
+ 9D99714167668E410200000004006841CECC9441010000000800D0409B998541
+ 01000000080080406866B641010000006A662E419B99D941020000006A662E41
+ 9B99DD4102000000D0CC2C41CECCE04102000000D0CC2C41CECCE44102000000
+ D0CC2C41CECCE8410200000036332B410100EC410200000036332B410100F041
+ 0200000036332B410100F4410200000036332B413433F74102000000D0CC2C41
+ 3433FB4102000000D0CC2C413433FF41020000006A662E413433014202000000
+ 6A662E4134330342010000000700804067661442010000000700D040CDCC2C42
+ 010000000400684133332542020000009E997141000028420200000037337B41
+ CDCC2A42020000003533834199992D4202000000CECC88416566304202000000
+ 9B998D41CCCC324202000000020094413333354201000000CFCC844133335542
+ 010000009C99B54133335F4201000000CFCCD8419999434202000000CFCCDC41
+ 99994342020000000200E041FFFF4342020000000200E441FFFF434202000000
+ 0200E841FFFF4342020000003533EB4165664442020000003533EF4165664442
+ 020000003533F34165664442020000006866F64165664442020000006866FA41
+ FFFF4342020000006866FE41FFFF434202000000CECC00429999434202000000
+ CECC024299994342010000000100144233335F420100000067662C4233335542
+ 01000000CDCC244233333542020000009A992742CDCC32420200000067662A42
+ 666630420200000033332D4299992D4202000000FFFF2F42CCCC2A4202000000
+ 666632426666284202000000CDCC34423333254201000000CDCC5442CDCC2C42
+ 01000000CDCC5E42676614420100000033334342CDCC02420300000033334342
+ CDCC0242000000003333EF4133339741020000003333FB413333974102000000
+ 9A9903429999994102000000CDCC084266669E410200000000000E423333A341
+ 02000000CDCC12429999A94102000000CDCC16429999B14102000000CDCC1A42
+ 9999B9410200000000001E423333C34102000000676620429999CD4102000000
+ CDCC2242FFFFD7410200000001002442FFFFE34102000000010024420000F041
+ 02000000010024420100FC4102000000CECC2242000004420200000067662042
+ 333309420200000001001E4266660E4202000000CDCC1A423333134202000000
+ CDCC16423333174202000000CDCC124233331B420200000000000E4266661E42
+ 02000000CDCC0842CDCC2042020000009A99034233332342020000003433FB41
+ 67662442020000003433EF4167662442020000003433E3416766244202000000
+ 3433D7413433234202000000CECCCC41CDCC2042020000006866C24167661E42
+ 02000000CECCB84133331B4202000000CECCB0413333174202000000CECCA841
+ 33331342020000006866A24166660E42020000009B999D413333094202000000
+ CECC98410000044202000000686696410000FC4102000000686696410000F041
+ 02000000686696410000E44102000000CECC98410000D841020000009B999D41
+ 9A99CD41020000006866A2413433C34102000000CECCA8419A99B94102000000
+ CECCB0419A99B14102000000CECCB8419A99A941020000006866C2413433A341
+ 02000000CECCCC4167669E41020000000000D8419A999941020000003333E341
+ 33339741020000003333EF4133339741030000003333EF413333974100000000
+ 3333EF41CDCC1642020000000000F841CDCC1642020000000000004200001642
+ 020000009A990342676614420200000034330742CDCC124202000000CDCC0A42
+ 67661042020000009A990D429A990D420200000067661042CDCC0A4202000000
+ CDCC12429A99074202000000676614429A990342020000000100164200000042
+ 02000000CDCC16423433F74102000000CDCC16423433EF4102000000CDCC1642
+ 6766E64102000000000016426766DE4102000000676614423433D74102000000
+ CDCC12420100D0410200000067661042CECCC841020000009A990D423433C341
+ 02000000CDCC0A429A99BD41020000009A990742CECCB841020000009A990342
+ 9A99B54102000000000000426766B241020000003433F741CDCCB04102000000
+ 3433EF41CDCCB041020000006766E641CDCCB041020000006766DE416766B241
+ 020000003433D7419A99B541020000000100D041CDCCB84102000000CECCC841
+ 9A99BD41020000003433C3413433C341020000009A99BD41CECCC84102000000
+ CECCB8413433CF41020000009A99B5413433D741020000006766B2416766DE41
+ 02000000CDCCB0413433E74102000000CDCCB0413433EF4102000000CDCCB041
+ 0100F841020000006766B24100000042020000009A99B5419A99034202000000
+ CDCCB84134330742020000009A99BD41CDCC0A42020000003433C3419A990D42
+ 02000000CECCC84167661042020000003433CF41CDCC1242020000003433D741
+ 67661442020000003333DF4100001642020000003333E741CDCC164202000000
+ 3333EF41CDCC1642030000003333EF41CDCC16420A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 0000000000D003400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F64650703466974000000005450463007544C
+ 61796F757400095374796C654E616D65061172656D6F7665627574746F6E7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C003401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C65080B4669
+ 7865644865696768740218000654476C79706800095374796C654E616D65060A
+ 676C7970687374796C650C4D617267696E732E4C656674050000000000000090
+ 02400B4D617267696E732E546F7005000000000000009002400E4D617267696E
+ 732E426F74746F6D050000000000000090024005416C69676E07044C6566740A
+ 506F736974696F6E2E5805000000000000008404400A506F736974696F6E2E59
+ 05000000000000009002400A53697A652E576964746805000000000000008004
+ 400B53697A652E4865696768740500000000000000C001401453697A652E506C
+ 6174666F726D44656661756C740800000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080C4D617267696E
+ 732E4C6566740500000000000000C003C00A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C003401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572063049734D6F75
+ 73654F7665723D747275653B4973507265737365643D66616C73653B4973466F
+ 63757365643D66616C73650E54726967676572496E7665727365063149734D6F
+ 7573654F7665723D66616C73653B4973507265737365643D66616C73653B4973
+ 466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E
+ 33084475726174696F6E05000000000000000000000C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463241
+ 383245320953746F7056616C7565070978464631373537394307547269676765
+ 72062E4973507265737365643D747275653B49734D6F7573654F7665723D7472
+ 75653B4973466F63757365643D747275650E54726967676572496E7665727365
+ 062F4973507265737365643D66616C73653B49734D6F7573654F7665723D7472
+ 75653B4973466F63757365643D7472756500000005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E7407486974546573
+ 74080A53697A652E576964746805000000000000009805400B53697A652E4865
+ 696768740500000000000000C003401453697A652E506C6174666F726D446566
+ 61756C74080454657874060454657874165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743205416C69676E07044C6566740A53697A65
+ 2E57696474680500000000000000C003400B53697A652E486569676874050000
+ 0000000000C003401453697A652E506C6174666F726D44656661756C74080005
+ 545061746800095374796C654E616D65060469636F6E05416C69676E0708436F
+ 6E74656E747309446174612E506174680A4C0000000600000000000000000040
+ 41CDCC4C3F0100000000000000CDCC4C3F010000000000000000000000010000
+ 0000004041000000000100000000004041CDCC4C3F0300000000004041CDCC4C
+ 3F0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080C
+ 4D617267696E732E4C65667405000000000000008001400B4D617267696E732E
+ 546F7005000000000000008001400D4D617267696E732E526967687405000000
+ 000000008001400E4D617267696E732E426F74746F6D05000000000000008001
+ 400A53697A652E576964746805000000000000008003400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507
+ 0346697400000000545046300A5452656374616E676C6500095374796C654E61
+ 6D650614706F7075706261636B67726F756E647374796C6505416C69676E0706
+ 43656E7465720A46696C6C2E436F6C6F7207097846463244324432440A53697A
+ 652E576964746805000000000000009407400B53697A652E4865696768740500
+ 000000000080D206401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F7207097846463135313531350756697369626C6508
+ 00005450463007544C61796F757400095374796C654E616D65061A70726F6772
+ 6573736261726D696E6966696E6973687374796C6505416C69676E070643656E
+ 7465720A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000A5452656374616E676C650009537479
+ 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646343034303430064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A68696E64696361746F7205416C
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464632434532343406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000000A5452656374616E676C6500095374796C654E616D650606
+ 76747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 720709784646343034303430064C6F636B6564090748697454657374080A5369
+ 7A652E576964746805000000000033338505400B53697A652E48656967687405
+ 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C650009
+ 5374796C654E616D65060A76696E64696361746F7205416C69676E0706426F74
+ 746F6D0A46696C6C2E436F6C6F720709784646324345323434064C6F636B6564
+ 090748697454657374080A506F736974696F6E2E5905000000000099998D0440
+ 0A53697A652E576964746805000000000033338505400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65061070726F6772657373626172737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 0033338505400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D65060668747261636B05416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000A5452656374616E676C6500095374796C65
+ 4E616D65060A68696E64696361746F7205416C69676E07044C6566740A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
+ 74696F6E2E59050000000000000080FF3F0A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000009999D904401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650000000A5452656374616E676C6500095374796C654E616D6506
+ 0676747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646323032303230064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F720709784646313531353135000A5452656374
+ 616E676C6500095374796C654E616D65060A76696E64696361746F7205416C69
+ 676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 00000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F
+ 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
+ 732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E580500
+ 00000000000080FF3F0A506F736974696F6E2E5905000000000099998904400A
+ 53697A652E576964746805000000000033338105400B53697A652E4865696768
+ 740500000000000000A803401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000000}
+ end>
+ Left = 192
+ Top = 24
+ end
+ object RenderProgress1: TRenderProgress
+ Position.X = 272.000000000000000000
+ Position.Y = 104.000000000000000000
+ Size.Width = 657.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ Composition = 'CompName'
+ Status = '...'
+ Value = -1.000000000000000000
+ InFrame = -1.000000000000000000
+ OutFrame = -1.000000000000000000
+ end
+end
diff --git a/src/lib/Components/TRenderProgress/Test Project/RenderProgressTestUnit.pas b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTestUnit.pas
new file mode 100644
index 0000000..3a38f21
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Test Project/RenderProgressTestUnit.pas
@@ -0,0 +1,29 @@
+unit RenderProgressTestUnit;
+
+interface
+
+uses
+ System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
+ FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
+ FMX.StdCtrls, FMX.Controls.Presentation, FMX.Layouts, FMX.Memo.Types,
+ FMX.ScrollBox, FMX.Memo, FMX.RenderProgress;
+
+type
+ TForm1 = class(TForm)
+ StyleBook1: TStyleBook;
+ StyleBook2: TStyleBook;
+ RenderProgress1: TRenderProgress;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{$R *.fmx}
+
+end.
diff --git a/src/lib/Components/TRenderProgress/Test Project/RenderProgressUnit.fmx b/src/lib/Components/TRenderProgress/Test Project/RenderProgressUnit.fmx
new file mode 100644
index 0000000..4a948eb
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Test Project/RenderProgressUnit.fmx
@@ -0,0 +1,3566 @@
+object Form1: TForm1
+ Left = 0
+ Top = 0
+ Caption = 'Form1'
+ ClientHeight = 351
+ ClientWidth = 1024
+ StyleBook = StyleBook1
+ FormFactor.Width = 320
+ FormFactor.Height = 480
+ FormFactor.Devices = [Desktop]
+ DesignerMasterStyle = 0
+ object StyleBook1: TStyleBook
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501060F6261636B67726F756E647374796C6503
+ AF00060B627574746F6E7374796C6503BA040609656469747374796C6503A305
+ 060A6C6162656C7374796C65031501060D67726F7570626F787374796C650383
+ 02060D747261636B6261727374796C65038107060D636865636B626F78737479
+ 6C6503880506147363726F6C6C62617268747261636B7374796C65033B010614
+ 7363726F6C6C62617276747261636B7374796C65033B0106157363726F6C6C62
+ 6172626F74746F6D627574746F6E03220406137363726F6C6C6261726C656674
+ 627574746F6E03390406147363726F6C6C6261727269676874627574746F6E03
+ 3A0406127363726F6C6C626172746F70627574746F6E033804060E7363726F6C
+ 6C6261727374796C65035804060A7468756D627374796C65033B02060B737769
+ 7463687374796C6503D101060D636F6D626F626F787374796C6503F607060E63
+ 6F6D626F656469747374796C65038209060F746162636F6E74726F6C7374796C
+ 65039C01060B746162646F747374796C65035901060C7461626974656D737479
+ 6C6503E404060D7468756D626261727374796C65034F03060C6C697374626F78
+ 7374796C6503A207060D6C697374626F78666F6F74657203800106106C697374
+ 626F786974656D7374796C65031B0306126C697374626F78706C61696E686561
+ 646572033B020609677269647374796C65039808060F6865616465726974656D
+ 7374796C6503C303061970726F67726573736261726D696E696572726F727374
+ 796C65035603061170726F677265737363656C6C7374796C65039A0206106D65
+ 6E756261726974656D7374796C6503250B060C6D656E756261727374796C6503
+ 6C02060D6D656E756974656D7374796C6503520B06126D656E75736570617261
+ 746F727374796C65037801060D6D656E75766965777374796C65039102060E69
+ 6D61676563656C6C7374796C65033201060E706F70757063656C6C7374796C65
+ 03C603060D7465787463656C6C7374796C65039B0106096D656D6F7374796C65
+ 03DC07060E6C696E6B6C6162656C7374796C65034503060E7374617475736261
+ 727374796C6503E401060C7370696E626F787374796C65035407060D73697A65
+ 677269707374796C6503F004060C746F6F6C6261727374796C6503CA00061570
+ 726F67726573736261726572726F727374796C65036404060F64726F70746172
+ 6765747374796C65036804061464726F707461726765746669656C647374796C
+ 6503890E060C706F706F7665727374796C65032A02060D706F707570626F7873
+ 74796C6503320606147374617475736261726E6F677269707374796C6503D400
+ 0613736D616C6C7363726F6C6C6261727374796C6503A301060D73706C697474
+ 65727374796C650360040610636C6F7365627574746F6E7374796C6503660406
+ 0E6D6178627574746F6E7374796C6503F603060E726573627574746F6E737479
+ 6C65030F04060E6D696E627574746F6E7374796C65030E04060F746F6F6C7769
+ 6E646F777374796C6503B20D061177696E646F77626F726465727374796C6503
+ 4A100610726164696F627574746F6E7374796C6503AE050618756C63656E7465
+ 72726164696F627574746F6E7374796C650352050617756C7269676874726164
+ 696F627574746F6E7374796C650355050616756C6C656674726164696F627574
+ 746F6E7374796C65035005061670726F677265737362617266696E6973687374
+ 796C65036504060D657870616E6465727374796C650366060613657870616E64
+ 6572627574746F6E7374796C650376020615657870616E646572636865636B62
+ 6F787374796C6503D005060E6C6162656C66696C6C7374796C6503B801061363
+ 6F6D626F656469746572726F727374796C65038709061E70726F677265737362
+ 6172696E64657465726D696E61626C657374796C650379040611616E69696E64
+ 696361746F727374796C6503DF010615616E69696E64696361746F72686F727A
+ 7374796C65038A02060A70616E656C7374796C65031E01060E6C6F6762757474
+ 6F6E7374796C65038A07061470726F67726573736261726D696E697374796C65
+ 035103061B7472656576696577657870616E646572627574746F6E7374796C65
+ 037E02061174726565766965776974656D7374796C65031405060D7472656576
+ 6965777374796C650336070619616374696F6E746F6F6C627574746F6E6D756C
+ 746976696577033F07060E616464627574746F6E7374796C65032C070617696E
+ 666F746F6F6C627574746F6E6D756C74697669657703A90D061B6F7267616E69
+ 7A65746F6F6C627574746F6E6D756C74697669657703EE06061B73657474696E
+ 6773746F6F6C627574746F6E6D756C746976696577037D13061172656D6F7665
+ 627574746F6E7374796C6503CF060614706F7075706261636B67726F756E6473
+ 74796C6503BA00061A70726F67726573736261726D696E6966696E6973687374
+ 796C65035703061070726F67726573736261727374796C65035F040054504630
+ 0A5452656374616E676C6500095374796C654E616D65060F6261636B67726F75
+ 6E647374796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F72
+ 07097846463244324432440A53697A652E576964746805000000000000009407
+ 400B53697A652E4865696768740500000000000080D206401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0756697369626C650800005450463007544C61796F757400095374796C654E61
+ 6D65060B627574746F6E7374796C6505416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000C805400B53697A652E48656967687405
+ 00000000000000C803401453697A652E506C6174666F726D44656661756C7408
+ 0756697369626C6508000A5452656374616E676C6500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E0706436C69656E740C436C697043
+ 68696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C65
+ 4E616D650615627574746F6E436F6C6F72416E696D6174696F6E310844757261
+ 74696F6E05000000000000000000000C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463430343034300754726967676572063049734D
+ 6F7573654F7665723D747275653B4973507265737365643D66616C73653B4973
+ 466F63757365643D66616C73650E54726967676572496E766572736506314973
+ 4D6F7573654F7665723D66616C73653B4973507265737365643D66616C73653B
+ 4973466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D617469
+ 6F6E32084475726174696F6E05000000000000000000000C50726F7065727479
+ 4E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709784646
+ 3430343034300953746F7056616C756507097846463137353739430754726967
+ 676572062F4973507265737365643D747275653B49734D6F7573654F7665723D
+ 747275653B4973466F63757365643D66616C736500000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
+ 696D6174696F6E33084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463241383245320953746F7056616C75650709784646313735373943
+ 0754726967676572062E4973507265737365643D747275653B49734D6F757365
+ 4F7665723D747275653B4973466F63757365643D747275650E54726967676572
+ 496E7665727365062F4973507265737365643D66616C73653B49734D6F757365
+ 4F7665723D747275653B4973466F63757365643D747275650000000554546578
+ 7400095374796C654E616D6506047465787405416C69676E0706436C69656E74
+ 13456E61626C6544726167486967686C69676874080748697454657374080A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
+ 08165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
+ 74650000005450463007544C61796F757400095374796C654E616D6506096564
+ 69747374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 0500000000000000C805400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 08000C5442727573684F626A65637400095374796C654E616D65060A666F7265
+ 67726F756E6400000C5442727573684F626A65637400095374796C654E616D65
+ 060973656C656374696F6E0B42727573682E436F6C6F72070978393632413832
+ 453200000B54466F6E744F626A65637400095374796C654E616D650604666F6E
+ 7409466F6E742E53697A650500000000000000D0024000000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000C803401453697A652E506C6174
+ 666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846463135
+ 31353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614656469745374726F6B65416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060C5374726F6B652E
+ 436F6C6F720A537461727456616C756507097846463135313531350953746F70
+ 56616C756507097846463241383245320754726967676572060E4973466F6375
+ 7365643D747275650E54726967676572496E7665727365060F4973466F637573
+ 65643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C
+ 654E616D650614656469745374726F6B65416E696D6174696F6E320844757261
+ 74696F6E050000000000000000000007496E7665727365090C50726F70657274
+ 794E616D65060C5374726F6B652E436F6C6F720A537461727456616C75650709
+ 7846463135313531350953746F7056616C756507097846463443344334430754
+ 726967676572062149734D6F7573654F7665723D747275653B4973466F637573
+ 65643D66616C73653B0E54726967676572496E7665727365062249734D6F7573
+ 654F7665723D66616C73653B4973466F63757365643D66616C73653B00000007
+ 544C61796F757400095374796C654E616D650607627574746F6E7305416C6967
+ 6E07055269676874064C6F636B6564090B4D617267696E732E546F7005000000
+ 000000008000400D4D617267696E732E52696768740500000000000000800040
+ 0E4D617267696E732E426F74746F6D05000000000000008000400A506F736974
+ 696F6E2E580500000000000000C004400A506F736974696F6E2E590500000000
+ 0000008000400A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000A803401453697A652E506C6174666F72
+ 6D44656661756C7408000007544C61796F757400095374796C654E616D650607
+ 636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D61
+ 7267696E732E4C65667405000000000000008001400B4D617267696E732E546F
+ 7005000000000000008000400D4D617267696E732E5269676874050000000000
+ 00008000400E4D617267696E732E426F74746F6D05000000000000008000400A
+ 53697A652E57696474680500000000000000A804400B53697A652E4865696768
+ 740500000000000000A803401453697A652E506C6174666F726D44656661756C
+ 7408000006544C6162656C00095374796C654E616D65060670726F6D7074064C
+ 6F636B656409074F706163697479050000000000000080FE3F16546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465045465787406
+ 04546578740000005450463007544C61796F757400095374796C654E616D6506
+ 0A6C6162656C7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000C805400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C65080005545465787400095374796C654E616D6506047465787405416C
+ 69676E0708436F6E74656E74730748697454657374080A53697A652E57696474
+ 680500000000000000C805400B53697A652E4865696768740500000000000000
+ C803401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465000000545046
+ 3007544C61796F757400095374796C654E616D65060D67726F7570626F787374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000F004400B53697A652E4865696768740500000000000000C804401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000C000
+ 400B4D617267696E732E546F7005000000000000009002400D4D617267696E73
+ 2E52696768740500000000000000C000400E4D617267696E732E426F74746F6D
+ 0500000000000000C000400A53697A652E57696474680500000000000000D804
+ 400B53697A652E48656967687405000000000000009804401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 3135313531350005545465787400095374796C654E616D650604746578740841
+ 75746F53697A65090A436C6970506172656E74090748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000A002400A506F736974696F6E2E58
+ 05000000000060559502400A506F736974696F6E2E590500000000004055D501
+ C00A53697A652E576964746805000000000000B8C703400B53697A652E486569
+ 6768740500000000000060FF02401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 5768697465155465787453657474696E67732E576F7264577261700800000000
+ 5450463007544C61796F757400095374796C654E616D65060D747261636B6261
+ 727374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000C805
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 0B46697865644865696768740211000A5452656374616E676C6500095374796C
+ 654E616D65060668747261636B05416C69676E070A5665727443656E7465720A
+ 46696C6C2E436F6C6F7207097846463135313531350748697454657374080A50
+ 6F736974696F6E2E590500000000000000BC04400A53697A652E576964746805
+ 00000000000000C805400B53697A652E4865696768740500000000000000A001
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E65000A5452656374616E676C6500095374796C654E616D65
+ 060A6261636B67726F756E6405416C69676E0708436F6E74656E74730946696C
+ 6C2E4B696E6407044E6F6E65064C6F636B6564090748697454657374080C4D61
+ 7267696E732E4C6566740500000000000000C001400B4D617267696E732E546F
+ 70050000000000000080FF3F0D4D617267696E732E5269676874050000000000
+ 0000C001400E4D617267696E732E426F74746F6D050000000000000080FF3F0A
+ 53697A652E57696474680500000000000000B005400B53697A652E4865696768
+ 740500000000000000C000401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000A5452656374616E676C
+ 6500095374796C654E616D650609686967686C6967687405416C69676E07044C
+ 6566740A46696C6C2E436F6C6F72070978464632413832453207486974546573
+ 74080C50616464696E672E4C6566740500000000000000A002400A53697A652E
+ 57696474680500000000000000F003400B53697A652E48656967687405000000
+ 00000000A001401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6500000B54476C6F77456666656374000853
+ 6F66746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F7207097846
+ 46324138324532074F706163697479050000000000000080FF3F07456E61626C
+ 6564080000000A5452656374616E676C6500095374796C654E616D6506067674
+ 7261636B05416C69676E070A486F727A43656E7465720A46696C6C2E436F6C6F
+ 7207097846463135313531350748697454657374080A506F736974696F6E2E58
+ 0500000000000000BC04400A53697A652E57696474680500000000000000A001
+ 400B53697A652E4865696768740500000000000000C805401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000A5452656374616E676C6500095374796C654E616D65060A6261636B67726F
+ 756E6405416C69676E0708436F6E74656E74730946696C6C2E4B696E6407044E
+ 6F6E65064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 740500000000000000C001400B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E52696768740500000000000000C001400E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A53697A652E57696474
+ 6805000000000000000000000B53697A652E4865696768740500000000000000
+ C405401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E
+ 616D650609686967686C6967687405416C69676E0703546F700A46696C6C2E43
+ 6F6C6F7207097846463241383245320748697454657374080A53697A652E5769
+ 6474680500000000000000A001400B53697A652E486569676874050000000000
+ 0000F003401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E6500000B54476C6F774566666563740008536F66
+ 746E657373050000000000CDCCCCFC3F09476C6F77436F6C6F72070978464632
+ 4138324532074F706163697479050000000000000080FF3F07456E61626C6564
+ 0800000006545468756D6200095374796C654E616D650606687468756D62064C
+ 6F636B6564090A506F736974696F6E2E580500000000003033AB03400A506F73
+ 6974696F6E2E59050000000000FFFFA304400A53697A652E5769647468050000
+ 0000000000F002400B53697A652E4865696768740500000000000000F0024014
+ 53697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75
+ 70060D7468756D626261727374796C65000006545468756D6200095374796C65
+ 4E616D650606767468756D62064C6F636B6564090A506F736974696F6E2E5805
+ 0000000000CBCCA804400A506F736974696F6E2E590500000000009899B10340
+ 0A53697A652E57696474680500000000000000F002400B53697A652E48656967
+ 68740500000000000000F002401453697A652E506C6174666F726D4465666175
+ 6C74080B5374796C654C6F6F6B7570060D7468756D626261727374796C650000
+ 005450463007544C61796F757400095374796C654E616D65060D636865636B62
+ 6F787374796C6505416C69676E070643656E7465720A53697A652E5769647468
+ 050000000000ACAA8006400B53697A652E486569676874050000000000585599
+ 04401453697A652E506C6174666F726D44656661756C74080756697369626C65
+ 080007544C61796F75740005416C69676E07044C6566740A53697A652E576964
+ 746805000000000000009003400B53697A652E48656967687405000000000058
+ 559904401453697A652E506C6174666F726D44656661756C7408000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E070643656E7465720A46696C6C2E436F6C6F7207097846463230323032
+ 300748697454657374080A53697A652E57696474680500000000000000F00240
+ 0B53697A652E4865696768740500000000000000F002401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 3531353135000A5452656374616E676C6500095374796C654E616D65060A5265
+ 6374616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F
+ 720709784646324138324532074869745465737408074F706163697479050000
+ 00000000000000000C4D617267696E732E4C6566740500000000000000800040
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 526967687405000000000000008000400E4D617267696E732E426F74746F6D05
+ 000000000000008000400A53697A652E57696474680500000000000000B00240
+ 0B53697A652E4865696768740500000000000000B002401453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 0F54466C6F6174416E696D6174696F6E00095374796C654E616D65061B636865
+ 6368626F7856697362696C697479416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D6506074F70616369
+ 74790A537461727456616C756505000000000000000000000953746F7056616C
+ 75650500000000000000C805400754726967676572060E4973436865636B6564
+ 3D747275650E54726967676572496E7665727365060F4973436865636B65643D
+ 66616C73650000000F54436F6C6F72416E696D6174696F6E00095374796C654E
+ 616D650618636865636B626F785374726F6B65416E696D6174696F6E31084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060C
+ 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
+ 31350953746F7056616C75650709784646324138324532075472696767657206
+ 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
+ 4973436865636B65643D66616C736500000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D650617636865636B626F78436F6C6F72416E696D61
+ 74696F6E31084475726174696F6E05000000000000000000000C50726F706572
+ 74794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978
+ 46463230323032300953746F7056616C75650709784646343034303430075472
+ 6967676572061049734D6F7573654F7665723D747275650E5472696767657249
+ 6E7665727365061149734D6F7573654F7665723D66616C736500000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E740A53697A652E57696474680500000000005855DD05400B53697A652E4865
+ 6967687405000000000058559904401453697A652E506C6174666F726D446566
+ 61756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C
+ 615768697465000000545046300A5452656374616E676C6500095374796C654E
+ 616D6506147363726F6C6C62617268747261636B7374796C6505416C69676E07
+ 0643656E7465720A46696C6C2E436F6C6F720709784646313531353135074869
+ 7454657374080A53697A652E57696474680500000000000000C804400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650756697369
+ 626C65080006545468756D6200095374796C654E616D6506057468756D62064C
+ 6F636B6564090A53697A652E576964746805000000000000008003400B53697A
+ 652E4865696768740500000000000000C804401453697A652E506C6174666F72
+ 6D44656661756C74080B5374796C654C6F6F6B7570060A7468756D627374796C
+ 65000000545046300A5452656374616E676C6500095374796C654E616D650614
+ 7363726F6C6C62617276747261636B7374796C6505416C69676E070643656E74
+ 65720A46696C6C2E436F6C6F7207097846463135313531350748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E650756697369626C650800
+ 06545468756D6200095374796C654E616D6506057468756D62064C6F636B6564
+ 090A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C74080B5374796C654C6F6F6B7570060A7468756D627374796C6500000054
+ 50463007544C61796F757400095374796C654E616D6506157363726F6C6C6261
+ 72626F74746F6D627574746F6E05416C69676E070643656E7465720756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080A53697A652E57696474680500000000000000A002400B53
+ 697A652E4865696768740500000000000000C001401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000000
+ 005450463007544C61796F757400095374796C654E616D6506137363726F6C6C
+ 6261726C656674627574746F6E05416C69676E070643656E7465720756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0706436C69656E740C436C69704368696C6472
+ 656E090A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632
+ 30323032300748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E320844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463430343034
+ 300953746F7056616C756507097846463137353739430754726967676572061F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275650E
+ 54726967676572496E766572736506204973507265737365643D66616C73653B
+ 49734D6F7573654F7665723D7472756500000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720A5369
+ 7A652E57696474680500000000000000A002400B53697A652E48656967687405
+ 00000000000000C001401453697A652E506C6174666F726D44656661756C7408
+ 0005545061746800095374796C654E616D650605506174683105416C69676E07
+ 06436C69656E7409446174612E506174680A3400000004000000000000000000
+ C8420000C84201000000000096430000C8420100000000004843000096430300
+ 00000000C8420000C8420A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080D526F746174696F6E416E676C650500000000000000B405
+ 400A53697A652E57696474680500000000000000A002400B53697A652E486569
+ 6768740500000000000000C001401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300754
+ 4C61796F757400095374796C654E616D6506147363726F6C6C62617272696768
+ 74627574746F6E05416C69676E070643656E7465720756697369626C6508000A
+ 5452656374616E676C6500095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0706436C69656E740C436C69704368696C6472656E090A436C
+ 6970506172656E74090A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463230323032300953746F7056616C7565070978
+ 46463430343034300754726967676572062049734D6F7573654F7665723D7472
+ 75653B4973507265737365643D66616C73650E54726967676572496E76657273
+ 65062149734D6F7573654F7665723D66616C73653B4973507265737365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E32084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463430343034300953746F70
+ 56616C756507097846463137353739430754726967676572061F497350726573
+ 7365643D747275653B49734D6F7573654F7665723D747275650E547269676765
+ 72496E766572736506204973507265737365643D66616C73653B49734D6F7573
+ 654F7665723D7472756500000007544C61796F757400095374796C654E616D65
+ 06074C61796F75743105416C69676E070643656E7465720A53697A652E576964
+ 74680500000000000000A002400B53697A652E48656967687405000000000000
+ 00C001401453697A652E506C6174666F726D44656661756C7408000554506174
+ 6800095374796C654E616D650605506174683105416C69676E0706436C69656E
+ 7409446174612E506174680A3400000004000000000000000000C8420000C842
+ 01000000000096430000C842010000000000484300009643030000000000C842
+ 0000C8420A46696C6C2E436F6C6F720708636C61576869746507486974546573
+ 74080D526F746174696F6E416E676C650500000000000000B405C00A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000C001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F7574
+ 00095374796C654E616D6506127363726F6C6C626172746F70627574746F6E05
+ 416C69676E070643656E7465720756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 06436C69656E740C436C69704368696C6472656E090A436C6970506172656E74
+ 090A46696C6C2E436F6C6F720709784646323032303230074869745465737408
+ 0A53697A652E57696474680500000000000000C804400B53697A652E48656967
+ 68740500000000000000C804401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646343034303430
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F
+ 6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000000000
+ 000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374
+ 61727456616C756507097846463430343034300953746F7056616C7565070978
+ 46463137353739430754726967676572061F4973507265737365643D74727565
+ 3B49734D6F7573654F7665723D747275650E54726967676572496E7665727365
+ 06204973507265737365643D66616C73653B49734D6F7573654F7665723D7472
+ 756500000007544C61796F757400095374796C654E616D6506074C61796F7574
+ 3105416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000A002400B53697A652E4865696768740500000000000000C001401453697A
+ 652E506C6174666F726D44656661756C74080005545061746800095374796C65
+ 4E616D650605506174683105416C69676E0706436C69656E7409446174612E50
+ 6174680A3400000004000000000000000000C8420000C8420100000000009643
+ 0000C842010000000000484300009643030000000000C8420000C8420A46696C
+ 6C2E436F6C6F720708636C6157686974650748697454657374080D526F746174
+ 696F6E416E676C650500000000000000B406400A53697A652E57696474680500
+ 000000000000A002400B53697A652E4865696768740500000000000000C00140
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000005450463007544C61796F757400095374796C654E
+ 616D65060E7363726F6C6C6261727374796C6505416C69676E070643656E7465
+ 720756697369626C6508000754427574746F6E00095374796C654E616D65060A
+ 6C656674627574746F6E05416C69676E07044C656674064C6F636B6564090A50
+ 6F736974696F6E2E5905000000000000008003400A53697A652E576964746805
+ 000000000000008003400B53697A652E48656967687405000000000000009003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B757006137363726F6C6C6261726C656674627574746F6E0000075442757474
+ 6F6E00095374796C654E616D65060B7269676874627574746F6E05416C69676E
+ 07055269676874064C6F636B6564090A506F736974696F6E2E58050000000000
+ 00008804400A506F736974696F6E2E5905000000000000008003400A53697A65
+ 2E576964746805000000000000008003400B53697A652E486569676874050000
+ 00000000009003401453697A652E506C6174666F726D44656661756C74080B53
+ 74796C654C6F6F6B757006147363726F6C6C6261727269676874627574746F6E
+ 00000754427574746F6E00095374796C654E616D65060C626F74746F6D627574
+ 746F6E05416C69676E0706426F74746F6D064C6F636B6564090A506F73697469
+ 6F6E2E5905000000000000008804400A53697A652E5769647468050000000000
+ 0000C804400B53697A652E48656967687405000000000000008003401453697A
+ 652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B75700615
+ 7363726F6C6C626172626F74746F6D627574746F6E00000654547261636B0009
+ 5374796C654E616D65060668747261636B05416C69676E0706436C69656E7406
+ 4C6F636B6564090B4F7269656E746174696F6E070A486F72697A6F6E74616C0A
+ 53697A652E576964746805000000000000009003400B53697A652E4865696768
+ 7405000000000000009003401453697A652E506C6174666F726D44656661756C
+ 74080B5374796C654C6F6F6B757006147363726F6C6C62617268747261636B73
+ 74796C6500000654547261636B00095374796C654E616D65060676747261636B
+ 05416C69676E0706436C69656E74064C6F636B6564090B4F7269656E74617469
+ 6F6E070A486F72697A6F6E74616C0A53697A652E576964746805000000000000
+ 009003400B53697A652E48656967687405000000000000009003401453697A65
+ 2E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570061473
+ 63726F6C6C62617276747261636B7374796C6500000754427574746F6E000953
+ 74796C654E616D650609746F70627574746F6E05416C69676E0703546F700A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 05000000000000008003401453697A652E506C6174666F726D44656661756C74
+ 080B5374796C654C6F6F6B757006127363726F6C6C626172746F70627574746F
+ 6E000000545046300A5452656374616E676C6500095374796C654E616D65060A
+ 7468756D627374796C6505416C69676E070643656E7465720A46696C6C2E436F
+ 6C6F7207097846463444344434440748697454657374080A53697A652E576964
+ 74680500000000000000C804400B53697A652E48656967687405000000000000
+ 00C804401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D6506147468756D62436F6C6F72416E69
+ 6D6174696F6E31084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463444344434440953746F7056616C7565070978464631373537394307
+ 54726967676572060E4973507265737365643D747275650E5472696767657249
+ 6E7665727365060F4973507265737365643D66616C736500000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E315374796C65084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463444344434440953746F7056616C75650707636C6147726179
+ 0754726967676572061049734D6F7573654F7665723D747275650E5472696767
+ 6572496E7665727365061149734D6F7573654F7665723D66616C736500000054
+ 5046300D545377697463684F626A65637400095374796C654E616D65060B7377
+ 697463687374796C6505416C69676E070643656E746572044B696E64070C4661
+ 64696E67547261636B730A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C740812547261636B696E675468756D625363616C65
+ 050000000000000080FF3F0756697369626C65080A46696C6C2E436F6C6F7207
+ 097846463230323032300C46696C6C4F6E2E436F6C6F72070978464631373537
+ 39430B46696C6C4F6E2E4B696E640705536F6C69640B5374726F6B652E4B696E
+ 6407044E6F6E650B5468756D622E436F6C6F7207097846463430343034300D54
+ 68756D624F6E2E436F6C6F7207097846463241383245320C5468756D624F6E2E
+ 4B696E640705536F6C6964105468756D625374726F6B652E4B696E6407044E6F
+ 6E650F5468756D625374726F6B652E4361700705526F756E64105468756D6253
+ 74726F6B652E446173680706437573746F6D105468756D625374726F6B652E4A
+ 6F696E0705526F756E64165468756D625374726F6B652E437573746F6D446173
+ 680A08000000000000000000000000005450463007544C61796F757400095374
+ 796C654E616D65060D636F6D626F626F787374796C6505416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000C5442727573684F626A6563740009
+ 5374796C654E616D65060A666F726567726F756E6400000B54466F6E744F626A
+ 65637400095374796C654E616D650604666F6E7409466F6E742E53697A650500
+ 000000000000D00240000007544C61796F757400095374796C654E616D65060A
+ 6261636B67726F756E6405416C69676E0708436F6E74656E74730A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C803401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F
+ 6E650007544C61796F757400095374796C654E616D650611427574746F6E5374
+ 796C654F626A65637405416C69676E070846697452696768740B4D617267696E
+ 732E546F70050000000000000080FF3F0D4D617267696E732E52696768740500
+ 00000000000080FF3F0E4D617267696E732E426F74746F6D0500000000000000
+ 80FF3F0A506F736974696F6E2E580500000000005ED99705400A506F73697469
+ 6F6E2E59050000000000000080FF3F0A53697A652E5769647468050000000000
+ 889AB803400B53697A652E4865696768740500000000000000B803401453697A
+ 652E506C6174666F726D44656661756C74080007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743105416C69676E070643656E7465720C4D61
+ 7267696E732E4C656674050000000000000080FF3F0A53697A652E5769647468
+ 0500000000000000A002400B53697A652E4865696768740500000000000000C0
+ 01401453697A652E506C6174666F726D44656661756C74080005545061746800
+ 095374796C654E616D650605506174683105416C69676E0706436C69656E7409
+ 446174612E506174680A3400000004000000000000000000C8420000C8420100
+ 0000000096430000C842010000000000484300009643030000000000C8420000
+ C8420A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0A53697A652E57696474680500000000000000A002400B53697A652E48656967
+ 68740500000000000000C001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572063049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C73650E5472
+ 6967676572496E7665727365063149734D6F7573654F7665723D66616C73653B
+ 4973507265737365643D66616C73653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463430343034300953746F7056616C7565
+ 07097846463137353739430754726967676572062F4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275653B4973466F63757365643D66
+ 616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463241383245320953746F70
+ 56616C756507097846463137353739430754726967676572062E497350726573
+ 7365643D747275653B49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D747275650E54726967676572496E7665727365062F49735072657373
+ 65643D66616C73653B49734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D747275650000000007544C61796F757400095374796C654E616D6506
+ 07636F6E74656E7405416C69676E0706436C69656E74064C6F636B6564090C4D
+ 617267696E732E4C65667405000000000000008000400B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 000000D803400E4D617267696E732E426F74746F6D0500000000000000800040
+ 0A53697A652E576964746805000000000000008E05400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080000005450463007544C61796F757400095374796C654E616D65060E63
+ 6F6D626F656469747374796C6505416C69676E070643656E7465720A53697A65
+ 2E57696474680500000000000000C805400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080756
+ 697369626C6508000C5442727573684F626A65637400095374796C654E616D65
+ 060A666F726567726F756E6400000B54466F6E744F626A65637400095374796C
+ 654E616D650604666F6E7409466F6E742E53697A650500000000000000D00240
+ 000007544C61796F757400095374796C654E616D65060A6261636B67726F756E
+ 6405416C69676E0708436F6E74656E74730A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C803401453
+ 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070643
+ 6C69656E740A46696C6C2E436F6C6F7207097846463230323032300748697454
+ 657374080A53697A652E57696474680500000000000000C805400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464632303230323000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C
+ 6F72416E696D6174696F6E315374796C65084475726174696F6E050000000000
+ 000000000007496E7665727365090C50726F70657274794E616D65060C537472
+ 6F6B652E436F6C6F720A537461727456616C7565070978464632303230323009
+ 53746F7056616C75650709784646343034303430075472696767657206204973
+ 4D6F7573654F7665723D747275653B4973466F63757365643D66616C73650E54
+ 726967676572496E7665727365062149734D6F7573654F7665723D66616C7365
+ 3B4973466F63757365643D66616C736500000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E325374
+ 796C65084475726174696F6E050000000000000000000007496E766572736509
+ 0C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172
+ 7456616C756507097846463430343034300953746F7056616C75650709784646
+ 3241383245320754726967676572061F49734D6F7573654F7665723D74727565
+ 3B4973466F63757365643D747275650E54726967676572496E76657273650620
+ 49734D6F7573654F7665723D747275653B4973466F63757365643D66616C7365
+ 000007544C61796F757400095374796C654E616D6506056172726F7705416C69
+ 676E070846697452696768740B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
+ 580500000000005ED99705400A506F736974696F6E2E59050000000000000080
+ FF3F0A53697A652E5769647468050000000000889AB803400B53697A652E4865
+ 696768740500000000000000B803401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D65060A5265
+ 6374616E676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F
+ 6C6F7207097846463330333033300748697454657374080A53697A652E576964
+ 7468050000000000889AB803400B53697A652E48656967687405000000000000
+ 00B803401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E000953
+ 74796C654E616D650614436F6C6F72416E696D6174696F6E315374796C650844
+ 75726174696F6E050000000000000000000007496E7665727365090C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463330333033300953746F7056616C7565070978464634303430343007
+ 54726967676572062049734D6F7573654F7665723D747275653B4973466F6375
+ 7365643D66616C73650E54726967676572496E7665727365062149734D6F7573
+ 654F7665723D66616C73653B4973466F63757365643D66616C736500000F5443
+ 6F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F7241
+ 6E696D6174696F6E325374796C65084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463430343034300953746F7056616C75650709784646
+ 3137353739430754726967676572061F4973466F63757365643D747275653B49
+ 734D6F7573654F7665723D7472756500000007544C61796F757400095374796C
+ 654E616D6506074C61796F75743105416C69676E070643656E7465720C4D6172
+ 67696E732E4C656674050000000000000080FF3F0A53697A652E576964746805
+ 00000000000000A002400B53697A652E4865696768740500000000000000C001
+ 401453697A652E506C6174666F726D44656661756C7408000554506174680009
+ 5374796C654E616D650605506174683105416C69676E0706436C69656E740944
+ 6174612E506174680A3400000004000000000000000000C8420000C842010000
+ 00000096430000C842010000000000484300009643030000000000C8420000C8
+ 420A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A
+ 53697A652E57696474680500000000000000A002400B53697A652E4865696768
+ 740500000000000000C001401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650000000000000C5442727573
+ 684F626A65637400095374796C654E616D65060973656C656374696F6E0B4272
+ 7573682E436F6C6F720709783936324138324532000007544C61796F75740009
+ 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
+ 0C4D617267696E732E4C65667405000000000000008000400B4D617267696E73
+ 2E546F7005000000000000008000400D4D617267696E732E5269676874050000
+ 0000000000F003400E4D617267696E732E426F74746F6D050000000000000080
+ 00400A53697A652E576964746805000000000000008805400B53697A652E4865
+ 696768740500000000000000A803401453697A652E506C6174666F726D446566
+ 61756C74080000005450463007544C61796F757400095374796C654E616D6506
+ 0F746162636F6E74726F6C7374796C6505416C69676E070643656E7465720A53
+ 697A652E576964746805000000000000008E06400B53697A652E486569676874
+ 050000000000FFFFC905401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F720709784646333033303330064C6F636B6564090748697454
+ 657374080C50616464696E672E4C65667405000000000000008000400B506164
+ 64696E672E546F7005000000000000008000400D50616464696E672E52696768
+ 7405000000000000008000400E50616464696E672E426F74746F6D0500000000
+ 0000008000400A53697A652E576964746805000000000000008E06400B53697A
+ 652E486569676874050000000000FFFFC905401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 35000000545046300A5452656374616E676C6500095374796C654E616D65060B
+ 746162646F747374796C6505416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463135313531350748697454657374080A53697A652E5769
+ 64746805000000000000008005400B53697A652E486569676874050000000000
+ 00008001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E650756697369626C6508000F54436F6C6F72416E
+ 696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463135313531350953746F7056616C75650709784646324138324532
+ 0754726967676572060F497353656C65637465643D747275650E547269676765
+ 72496E76657273650610497353656C65637465643D66616C7365000000545046
+ 3007544C61796F757400095374796C654E616D65060C7461626974656D737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D650603746F7005416C69676E0708
+ 436F6E74656E74730C436C69704368696C6472656E0907436F726E6572730B07
+ 546F704C65667408546F705269676874000A46696C6C2E436F6C6F7207097846
+ 46323032303230064C6F636B6564090748697454657374080553696465730B03
+ 546F70044C656674055269676874000A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C803401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000654476C79706800095374796C654E616D65060A67
+ 6C7970687374796C650C4D617267696E732E4C65667405000000000000008001
+ 400D4D617267696E732E526967687405000000000000008001C005416C69676E
+ 07044C6566740A53697A652E576964746805000000000000008003400B53697A
+ 652E48656967687405000000000000008003401453697A652E506C6174666F72
+ 6D44656661756C7408000005545465787400095374796C654E616D6506047465
+ 787405416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 080C4D617267696E732E4C6566740500000000000000C000400B4D617267696E
+ 732E546F700500000000000000C000400D4D617267696E732E52696768740500
+ 000000000000C000400E4D617267696E732E426F74746F6D0500000000000000
+ C000400A53697A652E57696474680500000000000000B004400B53697A652E48
+ 656967687405000000000000009803401453697A652E506C6174666F726D4465
+ 6661756C7408165465787453657474696E67732E466F6E74436F6C6F72070863
+ 6C615768697465155465787453657474696E67732E576F726457726170080000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650612746162
+ 436F6C6F72416E696D6174696F6E310D416E696D6174696F6E54797065070549
+ 6E4F7574084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463230323032300953746F7056616C7565070978464634303430343007547269
+ 67676572062149734D6F7573654F7665723D747275653B497353656C65637465
+ 643D66616C73650E54726967676572496E7665727365062249734D6F7573654F
+ 7665723D66616C73653B497353656C65637465643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650612746162436F6C6F
+ 72416E696D6174696F6E32084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646324138
+ 3245320754726967676572060F497353656C65637465643D747275650E547269
+ 67676572496E76657273650610497353656C65637465643D66616C7365000000
+ 00545046300A5452656374616E676C6500095374796C654E616D65060D746875
+ 6D626261727374796C6505416C69676E070643656E7465720A46696C6C2E436F
+ 6C6F7207097846463241383245320748697454657374080A53697A652E576964
+ 74680500000000000000A003400B53697A652E48656967687405000000000000
+ 00A003401453697A652E506C6174666F726D44656661756C74080C5374726F6B
+ 652E436F6C6F7207097846463135313531350756697369626C6508000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D6506147468756D62436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A5374617274
+ 56616C756507097846463241383245320953746F7056616C7565070978464631
+ 37353739430754726967676572061F4973507265737365643D747275653B4973
+ 4D6F7573654F7665723D747275650E54726967676572496E7665727365061049
+ 73507265737365643D66616C73653B00000F54436F6C6F72416E696D6174696F
+ 6E00095374796C654E616D6506147468756D62436F6C6F72416E696D6174696F
+ 6E32084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 41383245320953746F7056616C75650709784646343039424646075472696767
+ 6572062049734D6F7573654F7665723D747275653B4973507265737365643D66
+ 616C73650E54726967676572496E7665727365062149734D6F7573654F766572
+ 3D66616C73653B4973507265737365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D6506157468756D625374726F6B65
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060C5374726F6B652E436F6C6F720A537461727456
+ 616C756507097846463135313531350953746F7056616C756507097846463137
+ 353739430754726967676572061F4973507265737365643D747275653B49734D
+ 6F7573654F7665723D747275650E54726967676572496E7665727365060F4973
+ 507265737365643D66616C73650000005450463007544C61796F757400095374
+ 796C654E616D65060C6C697374626F787374796C6505416C69676E070643656E
+ 7465720A53697A652E5769647468050000000000FFFFE905400B53697A652E48
+ 656967687405000000000000008306401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000C5442727573684F626A656374000953
+ 74796C654E616D650618416C7465726E6174696E67526F774261636B67726F75
+ 6E640B42727573682E436F6C6F72070978464632433243324300000A54526563
+ 74616E676C6500095374796C654E616D65060A6261636B67726F756E6405416C
+ 69676E0708436F6E74656E74730A46696C6C2E436F6C6F720709784646323032
+ 303230064C6F636B6564090748697454657374080C50616464696E672E4C6566
+ 7405000000000000008000400B50616464696E672E546F700500000000000000
+ 8000400D50616464696E672E526967687405000000000000008000400E506164
+ 64696E672E426F74746F6D05000000000000008000400A53697A652E57696474
+ 68050000000000FFFFE905400B53697A652E4865696768740500000000000000
+ 8306401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F7207097846463135313531350007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C436C69
+ 704368696C6472656E090A53697A652E5769647468050000000000FFFFC10540
+ 0B53697A652E4865696768740500000000000000DE05401453697A652E506C61
+ 74666F726D44656661756C7408000A5452656374616E676C6500095374796C65
+ 4E616D65060973656C656374696F6E0A46696C6C2E436F6C6F72070978464632
+ 41383245320748697454657374080A53697A652E576964746805000000000000
+ 00C804400B53697A652E4865696768740500000000000000C804401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E6500000A5452656374616E676C6500095374796C654E616D650610666F63
+ 7573656473656C656374696F6E0A46696C6C2E436F6C6F720709784646324138
+ 3245320748697454657374080A53697A652E57696474680500000000000000C8
+ 04400B53697A652E4865696768740500000000000000C804401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 650B5374726F6B652E446173680703446F740000000A545363726F6C6C426172
+ 00095374796C654E616D65060A767363726F6C6C62617205416C69676E070552
+ 696768740B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E0708566572746963616C0A506F736974696F6E2E5805000000
+ 0000FFFFC505400A506F736974696F6E2E5905000000000000008000400A5369
+ 7A652E576964746805000000000000008003400B53697A652E48656967687405
+ 00000000000000DE05401453697A652E506C6174666F726D44656661756C7408
+ 00000A545363726F6C6C42617200095374796C654E616D65060A687363726F6C
+ 6C62617205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500
+ 0000000000000000000B4F7269656E746174696F6E070A486F72697A6F6E7461
+ 6C0A506F736974696F6E2E5805000000000000008000400A506F736974696F6E
+ 2E590500000000000000E205400A53697A652E5769647468050000000000FFFF
+ E105400B53697A652E48656967687405000000000000008003401453697A652E
+ 506C6174666F726D44656661756C740800000F54536D616C6C5363726F6C6C42
+ 617200095374796C654E616D65060F76736D616C6C7363726F6C6C6261720541
+ 6C69676E070552696768740B536D616C6C4368616E6765050000000000000000
+ 00000B4F7269656E746174696F6E0708566572746963616C0C4D617267696E73
+ 2E4C65667405000000000000008000400A506F736974696F6E2E580500000000
+ 000000C605400A506F736974696F6E2E5905000000000000008000400A53697A
+ 652E576964746805000000000000008002400B53697A652E4865696768740500
+ 0000000000008002401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C650800000F54536D616C6C5363726F6C6C42617200095374796C
+ 654E616D65060F68736D616C6C7363726F6C6C62617205416C69676E0706426F
+ 74746F6D0B536D616C6C4368616E676505000000000000000000000B4F726965
+ 6E746174696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005
+ 000000000000008000400A506F736974696F6E2E580500000000000000800040
+ 0A506F736974696F6E2E590500000000000000E205400A53697A652E57696474
+ 6805000000000000009606400B53697A652E4865696768740500000000000000
+ 8002401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 65080000000B54476C6F774566666563740008536F66746E6573730500000000
+ 00CDCCCCFC3F09476C6F77436F6C6F720709784646463639453244074F706163
+ 6974790500000000006666E6FE3F0754726967676572060E4973466F63757365
+ 643D7472756507456E61626C6564080000005450463007544C61796F75740009
+ 5374796C654E616D65060D6C697374626F78666F6F74657205416C69676E0706
+ 43656E7465720A53697A652E576964746805000000000000009205400B53697A
+ 652E4865696768740500000000000000D003401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C65080005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C6566740500000000000000A001
+ 400B4D617267696E732E546F7005000000000000008000400D4D617267696E73
+ 2E52696768740500000000000000A001400E4D617267696E732E426F74746F6D
+ 05000000000000008000400A53697A652E57696474680500000000000000FC04
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C7408165465787453657474696E67732E466F6E74
+ 436F6C6F720708636C6157686974650000005450463007544C61796F75740009
+ 5374796C654E616D6506106C697374626F786974656D7374796C6505416C6967
+ 6E070643656E7465720A53697A652E57696474680500000000000000D605400B
+ 53697A652E4865696768740500000000000000C003401453697A652E506C6174
+ 666F726D44656661756C74080756697369626C6508000654476C797068000953
+ 74796C654E616D65060A676C7970687374796C650C4D617267696E732E4C6566
+ 7405000000000000008000400B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E526967687405000000000000008000400E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F05416C69676E07044C65
+ 66740A53697A652E576964746805000000000000008003400B53697A652E4865
+ 6967687405000000000000008003401453697A652E506C6174666F726D446566
+ 61756C7408000005545465787400095374796C654E616D650604746578740541
+ 6C69676E0706436C69656E740748697454657374080C4D617267696E732E4C65
+ 66740500000000000000C000400B4D617267696E732E546F7005000000000000
+ 0080FF3F0D4D617267696E732E52696768740500000000000000C000400E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F0A53697A652E576964
+ 74680500000000000000CA05400B53697A652E48656967687405000000000000
+ 00B003401453697A652E506C6174666F726D44656661756C7408165465787453
+ 657474696E67732E466F6E74436F6C6F720708636C6157686974651554657874
+ 53657474696E67732E576F72645772617008165465787453657474696E67732E
+ 486F727A416C69676E07074C656164696E6700000954436865636B426F780009
+ 5374796C654E616D650605636865636B05416C69676E07084D6F73744C656674
+ 0843616E466F637573081244697361626C65466F637573456666656374090A53
+ 697A652E57696474680500000000000000A003400B53697A652E486569676874
+ 0500000000000000C003401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C65080000005450463007544C61796F757400095374796C65
+ 4E616D6506126C697374626F78706C61696E68656164657205416C69676E0706
+ 43656E7465720A53697A652E576964746805000000000000009205400B53697A
+ 652E4865696768740500000000000000D003401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C6508000A5452656374616E676C650009
+ 5374796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E
+ 74656E74730A46696C6C2E436F6C6F720709784646324432443244064C6F636B
+ 6564090748697454657374080A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207097846
+ 46313531353135000005545465787400095374796C654E616D65060474657874
+ 05416C69676E0706436C69656E74064C6F636B6564090748697454657374080C
+ 4D617267696E732E4C6566740500000000000000A001400B4D617267696E732E
+ 546F7005000000000000008000400D4D617267696E732E526967687405000000
+ 00000000A001400E4D617267696E732E426F74746F6D05000000000000008000
+ 400A53697A652E57696474680500000000000000FC04400B53697A652E486569
+ 6768740500000000000000B003401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 57686974650000005450463007544C61796F757400095374796C654E616D6506
+ 09677269647374796C6505416C69676E070643656E7465720A53697A652E5769
+ 647468050000000000FFFFE905400B53697A652E486569676874050000000000
+ 00008306401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978333237383738373800000C5442727573684F626A656374000953
+ 74796C654E616D6506086C696E6566696C6C0B42727573682E436F6C6F720709
+ 78464631353135313500000A5452656374616E676C6500095374796C654E616D
+ 65060A6261636B67726F756E6405416C69676E0708436F6E74656E74730A4669
+ 6C6C2E436F6C6F720709784646323032303230064C6F636B6564090748697454
+ 657374080C50616464696E672E4C65667405000000000000008000400B506164
+ 64696E672E546F7005000000000000008000400D50616464696E672E52696768
+ 7405000000000000008000400E50616464696E672E426F74746F6D0500000000
+ 0000008000400A53697A652E5769647468050000000000FFFFE905400B53697A
+ 652E48656967687405000000000000008306401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 3500075448656164657200095374796C654E616D650606686561646572055369
+ 6465730B03546F70044C65667406426F74746F6D0552696768740005416C6967
+ 6E0703546F700748697454657374080A506F736974696F6E2E58050000000000
+ 00008000400A506F736974696F6E2E5905000000000000008000400A53697A65
+ 2E5769647468050000000000FFFFE105400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080000
+ 07544C61796F757400095374796C654E616D650607636F6E74656E7405416C69
+ 676E0706436C69656E740C436C69704368696C6472656E090A53697A652E5769
+ 647468050000000000FFFFC105400B53697A652E486569676874050000000000
+ 0000B405401453697A652E506C6174666F726D44656661756C7408000A545265
+ 6374616E676C6500095374796C654E616D65060973656C656374696F6E0A4669
+ 6C6C2E436F6C6F720709784646324138324532074869745465737408074F7061
+ 63697479050000000000000080FD3F0A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E640704
+ 4E6F6E6500000A5452656374616E676C6500095374796C654E616D650605666F
+ 6375730A46696C6C2E436F6C6F72070978414632413832453207486974546573
+ 74080C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6507595261646975
+ 730500000000000000C000400000000A545363726F6C6C42617200095374796C
+ 654E616D65060A767363726F6C6C62617205416C69676E070552696768740B53
+ 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
+ 6E0708566572746963616C0A506F736974696F6E2E58050000000000FFFFC505
+ 400A506F736974696F6E2E590500000000000000B803400A53697A652E576964
+ 746805000000000000008003400B53697A652E48656967687405000000000000
+ 00B405401453697A652E506C6174666F726D44656661756C740800000A545363
+ 726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261720541
+ 6C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000000000
+ 0000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F7369
+ 74696F6E2E5805000000000000008000400A506F736974696F6E2E5905000000
+ 00000000E205400A53697A652E5769647468050000000000FFFFE105400B5369
+ 7A652E48656967687405000000000000008003401453697A652E506C6174666F
+ 726D44656661756C740800000F54536D616C6C5363726F6C6C42617200095374
+ 796C654E616D65060F76736D616C6C7363726F6C6C62617205416C69676E0705
+ 52696768740B536D616C6C4368616E676505000000000000000000000B4F7269
+ 656E746174696F6E0708566572746963616C0C4D617267696E732E4C65667405
+ 000000000000008000400A506F736974696F6E2E580500000000000000C60540
+ 0A506F736974696F6E2E5905000000000000008000400A53697A652E57696474
+ 6805000000000000008002400B53697A652E4865696768740500000000000000
+ 8002401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 650800000F54536D616C6C5363726F6C6C42617200095374796C654E616D6506
+ 0F68736D616C6C7363726F6C6C62617205416C69676E0706426F74746F6D0B53
+ 6D616C6C4368616E676505000000000000000000000B4F7269656E746174696F
+ 6E070A486F72697A6F6E74616C0B4D617267696E732E546F7005000000000000
+ 008000400A506F736974696F6E2E5805000000000000008000400A506F736974
+ 696F6E2E590500000000000000E205400A53697A652E57696474680500000000
+ 0000009606400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800000000
+ 5450463007544C61796F757400095374796C654E616D65060F68656164657269
+ 74656D7374796C6505416C69676E070643656E7465720A53697A652E57696474
+ 6805000000000000009205400B53697A652E4865696768740500000000000000
+ D003401453697A652E506C6174666F726D44656661756C74080756697369626C
+ 6508000A5452656374616E676C6500095374796C654E616D65060A6261636B67
+ 726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 0709784646344334433443064C6F636B6564090748697454657374080A53697A
+ 652E576964746805000000000000009205400B53697A652E4865696768740500
+ 000000000000D003401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F720709784646313531353135000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615686561646572436F6C6F72
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463443344334430953746F7056616C7565070978464632413832
+ 45320754726967676572060E4973507265737365643D747275650E5472696767
+ 6572496E7665727365060F4973507265737365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D65061668656164657253
+ 74726F6B65416E696D6174696F6E31084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53
+ 7461727456616C756507097846463135313531350953746F7056616C75650709
+ 7846463241383245320754726967676572060E4973507265737365643D747275
+ 650E54726967676572496E7665727365060F4973507265737365643D66616C73
+ 6500000005545465787400095374796C654E616D6506047465787405416C6967
+ 6E0706436C69656E74064C6F636B6564090748697454657374080C4D61726769
+ 6E732E4C6566740500000000000000A001400B4D617267696E732E546F700500
+ 0000000000008000400D4D617267696E732E52696768740500000000000000A0
+ 01400E4D617267696E732E426F74746F6D05000000000000008000400A53697A
+ 652E57696474680500000000000000FC04400B53697A652E4865696768740500
+ 000000000000B003401453697A652E506C6174666F726D44656661756C740816
+ 5465787453657474696E67732E466F6E74436F6C6F720708636C615768697465
+ 0000005450463007544C61796F757400095374796C654E616D65061970726F67
+ 726573736261726D696E696572726F727374796C6505416C69676E070643656E
+ 7465720A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000A5452656374616E676C650009537479
+ 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646343034303430064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A68696E64696361746F7205416C
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464645323241324106
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000000A5452656374616E676C6500095374796C654E616D650606
+ 76747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 720709784646343034303430064C6F636B6564090748697454657374080A5369
+ 7A652E576964746805000000000033338505400B53697A652E48656967687405
+ 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C650009
+ 5374796C654E616D65060A76696E64696361746F7205416C69676E0706426F74
+ 746F6D0A46696C6C2E436F6C6F720709784646453232413241064C6F636B6564
+ 090748697454657374080A506F736974696F6E2E5905000000000099998D0440
+ 0A53697A652E576964746805000000000033338505400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65061170726F677265737363656C6C7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000F805400B53697A652E4865696768740500000000000000FC05401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C6508000754
+ 4C61796F757400095374796C654E616D65060668747261636B05416C69676E07
+ 08436F6E74656E7473064C6F636B6564090C4D617267696E732E4C6566740500
+ 0000000000008000400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A53697A652E57696474680500
+ 000000000000F005400B53697A652E4865696768740500000000000000F40540
+ 1453697A652E506C6174666F726D44656661756C7408000A5452656374616E67
+ 6C6500095374796C654E616D65060A68696E64696361746F7205416C69676E07
+ 044C6566740A46696C6C2E436F6C6F720709784646324138324532064C6F636B
+ 6564090748697454657374080C4D617267696E732E4C65667405000000000000
+ 0080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267
+ 696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F74
+ 746F6D050000000000000080FF3F0A506F736974696F6E2E5805000000000000
+ 0080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000C804400B53697A652E48656967687405000000
+ 00000000F005401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F757400
+ 095374796C654E616D6506106D656E756261726974656D7374796C6505416C69
+ 676E070643656E7465720C4D617267696E732E4C656674050000000000000080
+ FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E
+ 732E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F
+ 6D050000000000000080FF3F0A53697A652E5769647468050000000000000092
+ 05400B53697A652E4865696768740500000000000000D003401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C650005416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 0709784646324138324532074869745465737408074F70616369747905000000
+ 000017B7D1F13F0A53697A652E576964746805000000000000009205400B5369
+ 7A652E4865696768740500000000000000D003401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F5446
+ 6C6F6174416E696D6174696F6E00084475726174696F6E05000000000018B7D1
+ F23F0C50726F70657274794E616D6506074F7061636974790A53746172745661
+ 6C756505000000000000000000000953746F7056616C75650500000000000000
+ 80FF3F0754726967676572060F497353656C65637465643D747275650E547269
+ 67676572496E76657273650610497353656C65637465643D66616C7365000000
+ 0A5452656374616E676C6500095374796C654E616D65060A6261636B67726F75
+ 6E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978
+ 4646324138324532074869745465737408074F70616369747905000000000017
+ B7D1F13F0A53697A652E576964746805000000000000009205400B53697A652E
+ 4865696768740500000000000000D003401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C6F61
+ 74416E696D6174696F6E00084475726174696F6E05000000000018B7D1F23F0C
+ 50726F70657274794E616D6506074F7061636974790A537461727456616C7565
+ 05000000000000000000000953746F7056616C7565050000000000000080FF3F
+ 0754726967676572061049734D6F7573654F7665723D747275650E5472696767
+ 6572496E7665727365061149734D6F7573654F7665723D66616C736500000007
+ 544C61796F757400095374796C654E616D650605676C79706805416C69676E07
+ 044C6566740A53697A652E57696474680500000000000000C803400B53697A65
+ 2E4865696768740500000000000000D003401453697A652E506C6174666F726D
+ 44656661756C74080007544C61796F757400095374796C654E616D6506096368
+ 65636B6D61726B05416C69676E0708436F6E74656E7473074F70616369747905
+ 00000000006F1283F53F0A53697A652E57696474680500000000000000C80340
+ 0B53697A652E4865696768740500000000000000D003401453697A652E506C61
+ 74666F726D44656661756C7408000554506174680005416C69676E070643656E
+ 74657209446174612E506174680A58000000070000000000000056D9524391AE
+ 2C43010000009276664365021643010000009F3983432B7C3C43010000009E9A
+ A64382D2B442010000006F1CB04375A4D1420100000026DF8243263F67430300
+ 000056D9524391AE2C430A46696C6C2E436F6C6F720708636C61576869746507
+ 48697454657374080A53697A652E57696474680500000000000000B002400B53
+ 697A652E4865696768740500000000000000B002401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000F
+ 54466C6F6174416E696D6174696F6E00084475726174696F6E050000000000CD
+ CCCCFB3F0C50726F70657274794E616D6506074F7061636974790A5374617274
+ 56616C756505000000000000000000000953746F7056616C7565050000000000
+ 000080FF3F0754726967676572060E4973436865636B65643D747275650E5472
+ 6967676572496E7665727365060F4973436865636B65643D66616C7365000000
+ 0654476C79706800095374796C654E616D65060A676C7970687374796C650C4D
+ 617267696E732E4C656674050000000000000080FF3F0B4D617267696E732E54
+ 6F7005000000000000008000400D4D617267696E732E52696768740500000000
+ 000000C000400E4D617267696E732E426F74746F6D050000000000000080FF3F
+ 05416C69676E070552696768740A53697A652E57696474680500000000000000
+ 8003400B53697A652E48656967687405000000000000008003401453697A652E
+ 506C6174666F726D44656661756C740800000654496D61676500095374796C65
+ 4E616D6506066269746D61700E4D756C74695265734269746D61700E01000005
+ 416C69676E0708436F6E74656E74730C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E526967687405000000000000008000400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 00000000A803400B53697A652E4865696768740500000000000000B003401453
+ 697A652E506C6174666F726D44656661756C7408000000055454657874000953
+ 74796C654E616D6506047465787405416C69676E07044C656674064C6F636B65
+ 64090748697454657374080C4D617267696E732E4C6566740500000000000000
+ 8002400D4D617267696E732E526967687405000000000000008002400A506F73
+ 6974696F6E2E5805000000000000008404400A53697A652E5769647468050000
+ 0000000000C804400B53697A652E4865696768740500000000000000D0034014
+ 53697A652E506C6174666F726D44656661756C7408165465787453657474696E
+ 67732E466F6E74436F6C6F720708636C61576869746516546578745365747469
+ 6E67732E486F727A416C69676E07074C656164696E6700000554546578740009
+ 5374796C654E616D65060873686F727463757405416C69676E07055269676874
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 000000000000C002400D4D617267696E732E52696768740500000000000000C0
+ 01400A506F736974696F6E2E580500000000000000C000C00A53697A652E5769
+ 6474680500000000000000C804400B53697A652E486569676874050000000000
+ 0000D003401453697A652E506C6174666F726D44656661756C74081654657874
+ 53657474696E67732E466F6E74436F6C6F720708636C61576869746516546578
+ 7453657474696E67732E486F727A416C69676E07074C656164696E6700000754
+ 4C61796F757400095374796C654E616D6506077375626D61726B05416C69676E
+ 070552696768740A506F736974696F6E2E580500000000000000D404400A5369
+ 7A652E57696474680500000000000000A003400B53697A652E48656967687405
+ 00000000000000D003401453697A652E506C6174666F726D44656661756C7408
+ 000554506174680005416C69676E070643656E74657209446174612E50617468
+ 0A34000000040000000000000000000000000000000100000000000000000080
+ 3F010000000000803F0000003F0300000000000000000000000A46696C6C2E43
+ 6F6C6F720708636C615768697465064C6F636B6564090748697454657374080A
+ 53697A652E57696474680500000000000000E001400B53697A652E4865696768
+ 7405000000000000008002401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000000545046300A545265
+ 6374616E676C6500095374796C654E616D65060C6D656E756261727374796C65
+ 05416C69676E070643656E7465720C436C69704368696C6472656E090946696C
+ 6C2E4B696E6407044E6F6E650748697454657374080A53697A652E5769647468
+ 0500000000000000C804400B53697A652E4865696768740500000000000000C8
+ 04401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E650756697369626C6508000A5452656374616E676C6500
+ 05416C69676E0706436C69656E740A46696C6C2E436F6C6F7207097846463230
+ 323032300748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FFBF0B4D617267696E732E546F70050000000000000080FFBF0D4D6172
+ 67696E732E5269676874050000000000000080FFBF0A53697A652E5769647468
+ 0500000000000000D004400B53697A652E4865696768740500000000000000CC
+ 04401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F720709784646313531353135000007544C61796F757400095374796C
+ 654E616D650607636F6E74656E7405416C69676E0706436C69656E740C4D6172
+ 67696E732E4C656674050000000000000080FF3F0B4D617267696E732E546F70
+ 050000000000000080FF3F0D4D617267696E732E526967687405000000000000
+ 0080FF3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53
+ 697A652E57696474680500000000000000C004400B53697A652E486569676874
+ 0500000000000000C004401453697A652E506C6174666F726D44656661756C74
+ 080000005450463007544C61796F757400095374796C654E616D65060D6D656E
+ 756974656D7374796C6505416C69676E070643656E7465720C4D617267696E73
+ 2E4C656674050000000000000080FF3F0B4D617267696E732E546F7005000000
+ 0000000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F
+ 0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E
+ 57696474680500000000008EE3F605400B53697A652E48656967687405000000
+ 00008EE3F003401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C6508000A5452656374616E676C650005416C69676E0708436F6E7465
+ 6E74730A46696C6C2E436F6C6F72070978464632413832453207486974546573
+ 7408074F70616369747905000000000017B7D1F13F0A53697A652E5769647468
+ 0500000000008EE3F605400B53697A652E4865696768740500000000008EE3F0
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008447572
+ 6174696F6E05000000000018B7D1F23F0C50726F70657274794E616D6506074F
+ 7061636974790A537461727456616C756505000000000000000000000953746F
+ 7056616C7565050000000000000080FF3F0754726967676572060F497353656C
+ 65637465643D747275650E54726967676572496E76657273650610497353656C
+ 65637465643D66616C73650000000A5452656374616E676C6500095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0A46696C6C2E436F6C6F72070978464632413832453207486974546573740807
+ 4F70616369747905000000000000000000000A53697A652E5769647468050000
+ 0000008EE3F605400B53697A652E4865696768740500000000008EE3F0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000F54466C6F6174416E696D6174696F6E0008447572617469
+ 6F6E05000000000018B7D1F23F07496E7665727365090C50726F70657274794E
+ 616D6506074F7061636974790A537461727456616C7565050000000000000000
+ 00000953746F7056616C7565050000000000000080FF3F075472696767657206
+ 1049734D6F7573654F7665723D747275650E54726967676572496E7665727365
+ 061149734D6F7573654F7665723D66616C736500000007544C61796F75740009
+ 5374796C654E616D650605676C79706805416C69676E07044C6566740A53697A
+ 652E57696474680500000000000000C803400B53697A652E4865696768740500
+ 000000008EE3F003401453697A652E506C6174666F726D44656661756C740800
+ 07544C61796F757400095374796C654E616D650609636865636B6D61726B0541
+ 6C69676E0708436F6E74656E7473074F7061636974790500000000006F1283F5
+ 3F0A53697A652E57696474680500000000000000C803400B53697A652E486569
+ 6768740500000000008EE3F003401453697A652E506C6174666F726D44656661
+ 756C7408000554506174680005416C69676E070643656E74657209446174612E
+ 506174680A58000000070000000000000056D9524391AE2C4301000000927666
+ 4365021643010000009F3983432B7C3C43010000009E9AA64382D2B442010000
+ 006F1CB04375A4D1420100000026DF8243263F67430300000056D9524391AE2C
+ 430A46696C6C2E436F6C6F720708636C6157686974650748697454657374080A
+ 53697A652E57696474680500000000000000B002400B53697A652E4865696768
+ 740500000000000000B002401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000F54466C6F6174416E69
+ 6D6174696F6E00084475726174696F6E050000000000CDCCCCFB3F0C50726F70
+ 657274794E616D6506074F7061636974790A537461727456616C756505000000
+ 000000000000000953746F7056616C7565050000000000000080FF3F07547269
+ 67676572060E4973436865636B65643D747275650E54726967676572496E7665
+ 727365060F4973436865636B65643D66616C73650000000654476C7970680009
+ 5374796C654E616D65060A676C7970687374796C650C4D617267696E732E4C65
+ 6674050000000000000080FF3F0B4D617267696E732E546F7005000000000000
+ 008000400D4D617267696E732E52696768740500000000000000C000400E4D61
+ 7267696E732E426F74746F6D050000000000000080FF3F05416C69676E07044C
+ 6566740A53697A652E576964746805000000000000008003400B53697A652E48
+ 656967687405000000000000008003401453697A652E506C6174666F726D4465
+ 6661756C740800000654496D61676500095374796C654E616D6506066269746D
+ 61700E4D756C74695265734269746D61700E01000005416C69676E07044C6566
+ 740C4D617267696E732E4C65667405000000000000008000400B4D617267696E
+ 732E546F7005000000000000008000400D4D617267696E732E52696768740500
+ 0000000000008000400E4D617267696E732E426F74746F6D0500000000000000
+ 8000400A506F736974696F6E2E5805000000000000008000400A506F73697469
+ 6F6E2E5905000000000000008000400A53697A652E5769647468050000000000
+ 0000A803400B53697A652E4865696768740500000000008EE3D003401453697A
+ 652E506C6174666F726D44656661756C74080000000554546578740009537479
+ 6C654E616D6506047465787405416C69676E07044C656674064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C65667405000000000000008002
+ 400D4D617267696E732E526967687405000000000000008002400A506F736974
+ 696F6E2E5805000000000000008404400A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000008EE3F00340145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C615768697465165465787453657474696E67
+ 732E486F727A416C69676E07074C656164696E67000005545465787400095374
+ 796C654E616D65060873686F727463757405416C69676E07055269676874064C
+ 6F636B6564090748697454657374080C4D617267696E732E4C65667405000000
+ 00000000C002400D4D617267696E732E52696768740500000000000000C00140
+ 0A506F736974696F6E2E580500000000001CC7BD04400A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000008EE3
+ F003401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465165465787453
+ 657474696E67732E486F727A416C69676E07074C656164696E67000007544C61
+ 796F757400095374796C654E616D6506077375626D61726B05416C69676E0705
+ 52696768740A506F736974696F6E2E580500000000008EE3CE05400A53697A65
+ 2E57696474680500000000000000A003400B53697A652E486569676874050000
+ 0000008EE3F003401453697A652E506C6174666F726D44656661756C74080005
+ 54506174680005416C69676E070643656E74657209446174612E506174680A34
+ 0000000400000000000000000000000000000001000000000000000000803F01
+ 0000000000803F0000003F0300000000000000000000000A46696C6C2E436F6C
+ 6F720708636C615768697465064C6F636B6564090748697454657374080A5369
+ 7A652E57696474680500000000000000C001400B53697A652E48656967687405
+ 00000000000000A002401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C61796F
+ 757400095374796C654E616D6506126D656E75736570617261746F727374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C65080005544C69
+ 6E650005416C69676E0703546F70084C696E65547970650703546F700C4D6172
+ 67696E732E4C656674050000000000000080FFBF0B4D617267696E732E546F70
+ 05000000000000008000400D4D617267696E732E526967687405000000000000
+ 0080FFBF0A506F736974696F6E2E58050000000000000080FFBF0A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 000000D004400B53697A652E486569676874050000000000000080FF3F145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000000545046300A5452656374616E676C65000953
+ 74796C654E616D65060D6D656E75766965777374796C6505416C69676E070643
+ 656E7465720A46696C6C2E436F6C6F7207097846463230323032300A53697A65
+ 2E57696474680500000000000000C804400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74080C53
+ 74726F6B652E436F6C6F7207097846463135313531350756697369626C650800
+ 0A5452656374616E676C650005416C69676E0706436C69656E740A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000D54536861646F77456666
+ 656374000844697374616E636505000000000000008001400944697265637469
+ 6F6E0500000000000000B4044008536F66746E657373050000000000000080FE
+ 3F074F706163697479050000000000000080FE3F0B536861646F77436F6C6F72
+ 0708636C61426C61636B00000007544C61796F757400095374796C654E616D65
+ 0607636F6E74656E7405416C69676E0706436C69656E740C4D617267696E732E
+ 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
+ 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
+ 4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A652E57
+ 696474680500000000000000C004400B53697A652E4865696768740500000000
+ 000000C004401453697A652E506C6174666F726D44656661756C740800000054
+ 50463007544C61796F757400095374796C654E616D65060E696D61676563656C
+ 6C7374796C6505416C69676E070643656E7465720756697369626C6508000654
+ 496D61676500095374796C654E616D650605696D6167650E4D756C7469526573
+ 4269746D61700E01000005416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000C004
+ 400B53697A652E4865696768740500000000000000C004401453697A652E506C
+ 6174666F726D44656661756C74080000005450463007544C61796F7574000953
+ 74796C654E616D65060E706F70757063656C6C7374796C6505416C69676E0706
+ 43656E7465720A53697A652E57696474680500000000000000BB06400B53697A
+ 652E4865696768740500000000000000AE04401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C65080007544C61796F75740005416C69
+ 676E070552696768740A506F736974696F6E2E580500000000000000AC06400A
+ 53697A652E57696474680500000000000000F002400B53697A652E4865696768
+ 740500000000000000AE04401453697A652E506C6174666F726D44656661756C
+ 7408000554506174680005416C69676E070643656E74657209446174612E5061
+ 74680A400000000500000000000000000000000000803F010000000000803F00
+ 00803F010000000000003F0000000001000000000000000000803F0300000000
+ 000000000000000A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080B4D617267696E732E546F700500000000000000E001C00A53697A
+ 652E576964746805000000000000008002400B53697A652E4865696768740500
+ 0000000000008001401453697A652E506C6174666F726D44656661756C74080B
+ 5374726F6B652E4B696E6407044E6F6E6500000554506174680005416C69676E
+ 070643656E74657209446174612E506174680A34000000040000000000000000
+ 00000000000000010000000000803F00000000010000000000003F0000803F03
+ 00000000000000000000000A46696C6C2E436F6C6F720708636C615768697465
+ 0748697454657374080B4D617267696E732E546F700500000000000000C00140
+ 0A53697A652E576964746805000000000000008002400B53697A652E48656967
+ 687405000000000000008001401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650000000554546578740009
+ 5374796C654E616D6506047465787405416C69676E0706436C69656E74064C6F
+ 636B6564090748697454657374080C4D617267696E732E4C6566740500000000
+ 000000A001400B4D617267696E732E546F7005000000000000008000400D4D61
+ 7267696E732E52696768740500000000000000A001400E4D617267696E732E42
+ 6F74746F6D05000000000000008000400A53697A652E57696474680500000000
+ 000000A206400B53697A652E48656967687405000000000000009E0440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D65060D7465787463656C6C7374796C6505416C
+ 69676E070643656E7465720756697369626C65080007544C61796F7574000953
+ 74796C654E616D650607636F6E74656E7405416C69676E0708436F6E74656E74
+ 73064C6F636B6564090C4D617267696E732E4C65667405000000000000008001
+ 400B4D617267696E732E546F7005000000000000008001400D4D617267696E73
+ 2E526967687405000000000000008001400E4D617267696E732E426F74746F6D
+ 05000000000000008001400A53697A652E57696474680500000000000000A804
+ 400B53697A652E4865696768740500000000000000A804401453697A652E506C
+ 6174666F726D44656661756C740800000C5442727573684F626A656374000953
+ 74796C654E616D65060A666F726567726F756E6400000C5442727573684F626A
+ 65637400095374796C654E616D65060973656C656374696F6E0B42727573682E
+ 436F6C6F72070978393632413832453200000B54466F6E744F626A6563740009
+ 5374796C654E616D650604666F6E740000005450463007544C61796F75740009
+ 5374796C654E616D6506096D656D6F7374796C6505416C69676E070643656E74
+ 65720A53697A652E5769647468050000000000CCCC8806400B53697A652E4865
+ 696768740500000000006666F405401453697A652E506C6174666F726D446566
+ 61756C74080756697369626C6508000C5442727573684F626A65637400095374
+ 796C654E616D65060A666F726567726F756E6400000C5442727573684F626A65
+ 637400095374796C654E616D65060973656C656374696F6E0B42727573682E43
+ 6F6C6F72070978374634343735394400000B54466F6E744F626A656374000953
+ 74796C654E616D650604666F6E7400000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E5769647468050000000000CCCC8806400B53697A652E486569
+ 6768740500000000006666F405401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F7207097846463135313531350007544C
+ 61796F757400095374796C654E616D650607636F6E74656E7405416C69676E07
+ 06436C69656E740C4D617267696E732E4C65667405000000000000008000400B
+ 4D617267696E732E546F7005000000000000008000400D4D617267696E732E52
+ 6967687405000000000000008000400E4D617267696E732E426F74746F6D0500
+ 0000000000008000400A53697A652E57696474680500000000009899E905400B
+ 53697A652E4865696768740500000000006666CC05401453697A652E506C6174
+ 666F726D44656661756C740800000A545363726F6C6C42617200095374796C65
+ 4E616D65060A687363726F6C6C62617205416C69676E0706426F74746F6D0643
+ 7572736F72070763724172726F770B536D616C6C4368616E6765050000000000
+ 00000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0A506F
+ 736974696F6E2E590500000000006666D405400A53697A652E57696474680500
+ 00000000CCCC8806400B53697A652E4865696768740500000000000000800340
+ 1453697A652E506C6174666F726D44656661756C740800000A545363726F6C6C
+ 42617200095374796C654E616D65060A767363726F6C6C62617205416C69676E
+ 0705526967687406437572736F72070763724172726F770B536D616C6C436861
+ 6E676505000000000000000000000B4F7269656E746174696F6E070856657274
+ 6963616C0A506F736974696F6E2E580500000000009899F105400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00006666D405401453697A652E506C6174666F726D44656661756C7408000007
+ 544C61796F75740005416C69676E0706436C69656E740A53697A652E57696474
+ 680500000000009899F105400B53697A652E4865696768740500000000006666
+ D405401453697A652E506C6174666F726D44656661756C7408000F54536D616C
+ 6C5363726F6C6C42617200095374796C654E616D65060F76736D616C6C736372
+ 6F6C6C62617205416C69676E0705526967687406437572736F72070763724172
+ 726F770B536D616C6C4368616E676505000000000000000000000B4F7269656E
+ 746174696F6E0708566572746963616C0C4D617267696E732E4C656674050000
+ 00000000008000400A53697A652E576964746805000000000000008002400B53
+ 697A652E48656967687405000000000000008002401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C650800000F54536D616C6C536372
+ 6F6C6C42617200095374796C654E616D65060F68736D616C6C7363726F6C6C62
+ 617205416C69676E0706426F74746F6D06437572736F72070763724172726F77
+ 0B536D616C6C4368616E676505000000000000000000000B4F7269656E746174
+ 696F6E070A486F72697A6F6E74616C0B4D617267696E732E546F700500000000
+ 0000008000400A53697A652E576964746805000000000000009606400B53697A
+ 652E48656967687405000000000000008002401453697A652E506C6174666F72
+ 6D44656661756C74080756697369626C65080000000F54436F6C6F72416E696D
+ 6174696F6E00095374796C654E616D6506146D656D6F5374726F6B65416E696D
+ 6174696F6E31084475726174696F6E050000000000000000000007496E766572
+ 7365090C50726F70657274794E616D65060C5374726F6B652E436F6C6F720A53
+ 7461727456616C756507097846463135313531350953746F7056616C75650709
+ 7846463430343034300754726967676572062049734D6F7573654F7665723D74
+ 7275653B4973466F63757365643D66616C73650E54726967676572496E766572
+ 7365062149734D6F7573654F7665723D66616C73653B4973466F63757365643D
+ 66616C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D6506146D656D6F5374726F6B65416E696D6174696F6E32084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060C5374726F6B
+ 652E436F6C6F720A537461727456616C75650709784646343034303430095374
+ 6F7056616C756507097846463241383245320754726967676572060E4973466F
+ 63757365643D747275650E54726967676572496E7665727365060F4973466F63
+ 757365643D66616C7365000000005450463007544C61796F757400095374796C
+ 654E616D65060E6C696E6B6C6162656C7374796C6505416C69676E070643656E
+ 7465720A53697A652E5769647468050000000000CCCC8006400B53697A652E48
+ 65696768740500000000009A998104401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C65080005545465787400095374796C654E616D
+ 6506047465787405416C69676E0708436F6E74656E7473074869745465737408
+ 0A53697A652E5769647468050000000000CCCC8006400B53697A652E48656967
+ 68740500000000009A998104401453697A652E506C6174666F726D4465666175
+ 6C74081A5465787453657474696E67732E466F6E742E5374796C654578740A0D
+ 00000004040000000000000004000000165465787453657474696E67732E466F
+ 6E74436F6C6F72070D636C61446F64676572626C7565000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469
+ 6F6E315374796C65084475726174696F6E050000000000000000000007496E76
+ 65727365090C50726F70657274794E616D6506165465787453657474696E6773
+ 2E466F6E74436F6C6F720A537461727456616C7565070D636C61446F64676572
+ 626C75650953746F7056616C7565070E636C6144656570736B79626C75650754
+ 726967676572063049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365063149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E325374796C65084475726174696F6E05000000000000000000
+ 000C50726F70657274794E616D6506165465787453657474696E67732E466F6E
+ 74436F6C6F720A537461727456616C7565070E636C6144656570736B79626C75
+ 650953746F7056616C756507097846463137353739430754726967676572062F
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D66616C736500000000545046300A5452656374616E67
+ 6C6500095374796C654E616D65060E7374617475736261727374796C6505416C
+ 69676E070643656E7465720C436C69704368696C6472656E090A46696C6C2E43
+ 6F6C6F7207097846463235323532350748697454657374080553696465730B03
+ 546F70000A53697A652E57696474680500000000000000F004400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
+ 56697369626C65080007544C61796F757400095374796C654E616D6506074C61
+ 796F75743105416C69676E070552696768740A506F736974696F6E2E58050000
+ 00000000008C04400A53697A652E57696474680500000000000000C803400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C740800095453697A654772697000095374796C654E616D
+ 65060973697A65677267697005416C69676E0706426F74746F6D0A506F736974
+ 696F6E2E590500000000000000C803400A53697A652E57696474680500000000
+ 000000C803400B53697A652E4865696768740500000000000000C80340145369
+ 7A652E506C6174666F726D44656661756C7408000000005450463007544C6179
+ 6F757400095374796C654E616D65060C7370696E626F787374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000006666E00540
+ 0B53697A652E4865696768740500000000000000C003401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300A
+ 53697A652E57696474680500000000006666E005400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E69
+ 6D6174696F6E315374796C65084475726174696F6E0500000000000000000000
+ 07496E7665727365090C50726F70657274794E616D65060C5374726F6B652E43
+ 6F6C6F720A537461727456616C756507097846463135313531350953746F7056
+ 616C756507097846463430343034300754726967676572061049734D6F757365
+ 4F7665723D747275650E54726967676572496E7665727365061149734D6F7573
+ 654F7665723D66616C73650000000C5442727573684F626A6563740009537479
+ 6C654E616D65060A666F726567726F756E640B42727573682E436F6C6F720709
+ 78464645414541454100000C5442727573684F626A65637400095374796C654E
+ 616D65060973656C656374696F6E0B42727573682E436F6C6F72070978393632
+ 4138324532000007544C61796F757400095374796C654E616D650607636F6E74
+ 656E7405416C69676E0706436C69656E74064C6F636B6564090C4D617267696E
+ 732E4C65667405000000000000008000400B4D617267696E732E546F70050000
+ 00000000008000400D4D617267696E732E526967687405000000000000008000
+ 400E4D617267696E732E426F74746F6D05000000000000008000400A53697A65
+ 2E5769647468050000000000CCCCF004400B53697A652E486569676874050000
+ 0000000000A003401453697A652E506C6174666F726D44656661756C74080000
+ 0754427574746F6E00095374796C654E616D65060B6D696E7573627574746F6E
+ 05416C69676E07044C6566740843616E466F6375730806437572736F72070763
+ 724172726F770C4D617267696E732E4C65667405000000000000008000400B4D
+ 617267696E732E546F7005000000000000008000400D4D617267696E732E5269
+ 67687405000000000000008000400E4D617267696E732E426F74746F6D050000
+ 00000000008000400A506F736974696F6E2E5805000000000000008000400A50
+ 6F736974696F6E2E5905000000000000008000400A53697A652E576964746805
+ 00000000000000A003400B53697A652E4865696768740500000000000000A003
+ 401453697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F
+ 6B7570060B627574746F6E7374796C65000554506174680005416C69676E0706
+ 43656E74657209446174612E506174680A400000000500000000000000000080
+ 3F00000000010000000000803F0000803F01000000000000000000003F010000
+ 000000803F00000000030000000000803F000000000A46696C6C2E436F6C6F72
+ 0708636C6157686974650748697454657374080A53697A652E57696474680500
+ 0000000000008002400B53697A652E4865696768740500000000000000800240
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E650000000754427574746F6E00095374796C654E616D65060A
+ 706C7573627574746F6E05416C69676E070552696768740843616E466F637573
+ 0806437572736F72070763724172726F770C4D617267696E732E4C6566740500
+ 0000000000008000400B4D617267696E732E546F700500000000000000800040
+ 0D4D617267696E732E526967687405000000000000008000400E4D617267696E
+ 732E426F74746F6D05000000000000008000400A506F736974696F6E2E580500
+ 000000006666B405400A506F736974696F6E2E5905000000000000008000400A
+ 53697A652E57696474680500000000000000A003400B53697A652E4865696768
+ 740500000000000000A003401453697A652E506C6174666F726D44656661756C
+ 74080B5374796C654C6F6F6B7570060B627574746F6E7374796C650005545061
+ 74680005416C69676E070643656E74657209446174612E506174680A34000000
+ 0400000000000000000000000000000001000000000000000000803F01000000
+ 0000803F0000003F0300000000000000000000000A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 00000000008002400B53697A652E486569676874050000000000000080024014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E65000000005450463007544C61796F757400095374796C654E61
+ 6D65060D73697A65677269707374796C6505416C69676E070643656E7465720A
+ 53697A652E57696474680500000000000000C803400B53697A652E4865696768
+ 740500000000000000C803401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C6508000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653105416C69676E070643656E7465720A46696C
+ 6C2E436F6C6F7207097846463630363036300A53697A652E5769647468050000
+ 0000000000A000400B53697A652E4865696768740500000000000000A0004014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D6506
+ 0A52656374616E676C653205416C69676E070643656E7465720A46696C6C2E43
+ 6F6C6F7207097846463630363036300C4D617267696E732E4C65667405000000
+ 00000000A002400A53697A652E57696474680500000000000000A000400B5369
+ 7A652E4865696768740500000000000000A000401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6533
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463630
+ 363036300C4D617267696E732E4C6566740500000000000000A002400B4D6172
+ 67696E732E546F700500000000000000A002400A53697A652E57696474680500
+ 000000000000A000400B53697A652E4865696768740500000000000000A00040
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D65
+ 060A52656374616E676C653405416C69676E070643656E7465720A46696C6C2E
+ 436F6C6F7207097846463630363036300B4D617267696E732E546F7005000000
+ 00000000A002400A53697A652E57696474680500000000000000A000400B5369
+ 7A652E4865696768740500000000000000A000401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6535
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463630
+ 363036300B4D617267696E732E546F700500000000000000A002400D4D617267
+ 696E732E52696768740500000000000000A002400A53697A652E576964746805
+ 00000000000000A000400B53697A652E4865696768740500000000000000A000
+ 401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B
+ 696E6407044E6F6E6500000A5452656374616E676C6500095374796C654E616D
+ 65060A52656374616E676C653605416C69676E070643656E7465720A46696C6C
+ 2E436F6C6F7207097846463630363036300C4D617267696E732E4C6566740500
+ 000000000000A002400E4D617267696E732E426F74746F6D0500000000000000
+ A002400A53697A652E57696474680500000000000000A000400B53697A652E48
+ 65696768740500000000000000A000401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000000545046300A
+ 5452656374616E676C6500095374796C654E616D65060C746F6F6C6261727374
+ 796C6505416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463235323532350748697454657374080553696465730B06426F74746F6D000A
+ 53697A652E57696474680500000000000000C804400B53697A652E4865696768
+ 740500000000000000C804401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135075669736962
+ 6C650800005450463007544C61796F757400095374796C654E616D6506157072
+ 6F67726573736261726572726F727374796C6505416C69676E070643656E7465
+ 720A53697A652E576964746805000000000033338505400B53697A652E486569
+ 6768740500000000009999E104401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508000A5452656374616E676C6500095374796C65
+ 4E616D65060668747261636B05416C69676E0708436F6E74656E74730A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720709784646313531353135000A
+ 5452656374616E676C6500095374796C654E616D65060A68696E64696361746F
+ 7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646453232
+ 413241064C6F636B6564090748697454657374080C4D617267696E732E4C6566
+ 74050000000000000080FF3F0B4D617267696E732E546F700500000000000000
+ 80FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E4D6172
+ 67696E732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E
+ 58050000000000000080FF3F0A506F736974696F6E2E59050000000000000080
+ FF3F0A53697A652E57696474680500000000000000C804400B53697A652E4865
+ 696768740500000000009999D904401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E650000000A5452656374
+ 616E676C6500095374796C654E616D65060676747261636B05416C69676E0708
+ 436F6E74656E74730A46696C6C2E436F6C6F720709784646323032303230064C
+ 6F636B6564090748697454657374080A53697A652E5769647468050000000000
+ 33338505400B53697A652E4865696768740500000000009999E104401453697A
+ 652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F7207
+ 09784646313531353135000A5452656374616E676C6500095374796C654E616D
+ 65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C6C
+ 2E436F6C6F720709784646453232413241064C6F636B65640907486974546573
+ 74080C4D617267696E732E4C656674050000000000000080FF3F0B4D61726769
+ 6E732E546F70050000000000000080FF3F0D4D617267696E732E526967687405
+ 0000000000000080FF3F0E4D617267696E732E426F74746F6D05000000000000
+ 0080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F736974
+ 696F6E2E5905000000000099998904400A53697A652E57696474680500000000
+ 0033338105400B53697A652E4865696768740500000000000000A80340145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000000005450463007544C61796F757400095374796C654E616D65
+ 060F64726F707461726765747374796C6505416C69676E070643656E7465720A
+ 53697A652E5769647468050000000000ACAAD905400B53697A652E4865696768
+ 740500000000000000CF05401453697A652E506C6174666F726D44656661756C
+ 74080756697369626C6508000A5452656374616E676C650005416C69676E0708
+ 436F6E74656E74730946696C6C2E4B696E6407044E6F6E650748697454657374
+ 080A53697A652E5769647468050000000000ACAAD905400B53697A652E486569
+ 6768740500000000000000CF05401453697A652E506C6174666F726D44656661
+ 756C74080C5374726F6B652E436F6C6F720708636C615768697465105374726F
+ 6B652E546869636B6E65737305000000000000008001400B5374726F6B652E44
+ 61736807044461736807585261646975730500000000000000C0024007595261
+ 646975730500000000000000C002400005545465787400095374796C654E616D
+ 6506047465787405416C69676E0706426F74746F6D0748697454657374080C4D
+ 617267696E732E4C6566740500000000000000A002400D4D617267696E732E52
+ 696768740500000000000000A002400A506F736974696F6E2E58050000000000
+ 0000A002400A506F736974696F6E2E590500000000000000D604400A53697A65
+ 2E5769647468050000000000ACAAB105400B53697A652E486569676874050000
+ 0000000000C804401453697A652E506C6174666F726D44656661756C74081654
+ 65787453657474696E67732E466F6E74436F6C6F720708636C61576869746500
+ 00001254466C6F61744B6579416E696D6174696F6E00084475726174696F6E05
+ 0000000000999999FE3F044B6579730E010001034B6579050000000000000080
+ FE3F0556616C75650500000000000000A003C00001034B657905000000000000
+ 0080FF3F0000044C6F6F70090C50726F70657274794E616D65060B5061646469
+ 6E672E546F7010537461727446726F6D43757272656E74080754726967676572
+ 060F4973447261674F7665723D7472756500000554506174680005416C69676E
+ 070643656E74657209446174612E506174680AC4000000100000000000000008
+ EC8343F087A4430100000008EC8343083CFB430200000035BE7143504DF94302
+ 00000012835C43A8E6F54302000000F0674943F803F1430100000008EC8343FC
+ 0116440100000008EC8343FC5116440100000000408443FC5116440100000010
+ 689A43FC412B4401000000081CD043F803F14302000000915DC64321E0F54302
+ 000000919DBB439643F94302000000087CB043F833FB4301000000087CB043F0
+ 87A4430100000008EC8343F087A4430300000000000000000000000A46696C6C
+ 2E436F6C6F720708636C6157686974650748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000100C804401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E650000005450463007544C61796F7574000953
+ 74796C654E616D65061464726F707461726765746669656C647374796C650541
+ 6C69676E070643656E7465720A53697A652E576964746805000000000000A08A
+ 07400B53697A652E4865696768740500000000000000B204401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C6500095374796C654E616D65060A52656374616E676C653105416C6967
+ 6E0706436C69656E740946696C6C2E4B696E6407044E6F6E6507486974546573
+ 74080A53697A652E576964746805000000000000A08A07400B53697A652E4865
+ 696768740500000000000000B204401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F720709784646324138324532000554
+ 5465787400095374796C654E616D6506047465787405416C69676E0706436C69
+ 656E740748697454657374080A53697A652E576964746805000000000000809A
+ 05400B53697A652E4865696768740500000000000000B204401453697A652E50
+ 6C6174666F726D44656661756C7408165465787453657474696E67732E466F6E
+ 74436F6C6F720708636C615768697465000007544C61796F757400095374796C
+ 654E616D6506074C61796F75743105416C69676E07044C6566740A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000B204401453697A652E506C6174666F726D44656661756C7408000554
+ 5061746800095374796C654E616D650605506174683105416C69676E07064365
+ 6E74657209446174612E506174680A24010000180000000000000073B8AC43C1
+ 4A7843010000006D2717435849DD430200000086CB0A431078E3430200000096
+ 83ED421078E34302000000DACED4425849DD43020000009A19BC42081CD74302
+ 0000009A19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385
+ EB61430100000068D1D4426811584202000000281CBC42CAA126420200000028
+ 1CBC42E6FBAC410200000068D1D442D04D144102000000A886ED429CC245C002
+ 000000CCCC0A439CC245C002000000B4281743D04D14410100000016B9AC4391
+ 8D4B4302000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F
+ 5AB14343EB614302000000A05AB1439C046A4302000000FACEAF43711D724302
+ 00000073B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080A53697A652E5769647468
+ 0500000000000000F002400B53697A652E4865696768740500000000000000F0
+ 02401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6508577261704D6F646507034669740000055450617468
+ 00095374796C654E616D650605506174683205416C69676E070643656E746572
+ 09446174612E506174680A24010000180000000000000073B8AC43C14A784301
+ 0000006D2717435849DD430200000086CB0A431078E343020000009683ED4210
+ 78E34302000000DACED4425849DD43020000009A19BC42081CD743020000009A
+ 19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385EB614301
+ 00000068D1D4426811584202000000281CBC42CAA1264202000000281CBC42E6
+ FBAC410200000068D1D442D04D144102000000A886ED429CC245C002000000CC
+ CC0A439CC245C002000000B4281743D04D14410100000016B9AC43918D4B4302
+ 000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB14343
+ EB614302000000A05AB1439C046A4302000000FACEAF43711D72430200000073
+ B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F720708
+ 636C6157686974650748697454657374080C4D617267696E732E4C6566740500
+ 000000000000A004400A53697A652E57696474680500000000000000F002400B
+ 53697A652E4865696768740500000000000000F002401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650857
+ 7261704D6F64650703466974000005545061746800095374796C654E616D6506
+ 05506174683305416C69676E070643656E74657209446174612E506174680A24
+ 010000180000000000000073B8AC43C14A7843010000006D2717435849DD4302
+ 00000086CB0A431078E343020000009683ED421078E34302000000DACED44258
+ 49DD43020000009A19BC42081CD743020000009A19BC424C17CD4302000000DA
+ CED4421DEAC64301000000B4288B4385EB61430100000068D1D4426811584202
+ 000000281CBC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D0
+ 4D144102000000A886ED429CC245C002000000CCCC0A439CC245C002000000B4
+ 281743D04D14410100000016B9AC43918D4B4302000000BECFAF43A5BB514302
+ 0000009F5AB143F1D25943020000009F5AB14343EB614302000000A05AB1439C
+ 046A4302000000FACEAF43711D72430200000073B8AC43C14A78430300000073
+ B8AC43C14A78430A46696C6C2E436F6C6F720708636C61576869746507486974
+ 54657374080D4D617267696E732E52696768740500000000000000A004400A53
+ 697A652E57696474680500000000000000F002400B53697A652E486569676874
+ 0500000000000000F002401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669
+ 7400000007544C61796F757400095374796C654E616D6506074C61796F757432
+ 05416C69676E070552696768740A506F736974696F6E2E580500000000000040
+ B106400A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000B204401453697A652E506C6174666F726D4465
+ 6661756C74080005545061746800095374796C654E616D650605506174683105
+ 416C69676E070643656E74657209446174612E506174680A2401000018000000
+ 0000000073B8AC43C14A7843010000006D2717435849DD430200000086CB0A43
+ 1078E343020000009683ED421078E34302000000DACED4425849DD4302000000
+ 9A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEAC643
+ 01000000B4288B4385EB61430100000068D1D4426811584202000000281CBC42
+ CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D144102000000
+ A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D1441
+ 0100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5AB143
+ F1D25943020000009F5AB14343EB614302000000A05AB1439C046A4302000000
+ FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A7843
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080D52
+ 6F746174696F6E416E676C650500000000000000B406400A53697A652E576964
+ 74680500000000000000F002400B53697A652E48656967687405000000000000
+ 00F002401453697A652E506C6174666F726D44656661756C74080B5374726F6B
+ 652E4B696E6407044E6F6E6508577261704D6F64650703466974000005545061
+ 746800095374796C654E616D650605506174683205416C69676E070643656E74
+ 657209446174612E506174680A24010000180000000000000073B8AC43C14A78
+ 43010000006D2717435849DD430200000086CB0A431078E343020000009683ED
+ 421078E34302000000DACED4425849DD43020000009A19BC42081CD743020000
+ 009A19BC424C17CD4302000000DACED4421DEAC64301000000B4288B4385EB61
+ 430100000068D1D4426811584202000000281CBC42CAA1264202000000281CBC
+ 42E6FBAC410200000068D1D442D04D144102000000A886ED429CC245C0020000
+ 00CCCC0A439CC245C002000000B4281743D04D14410100000016B9AC43918D4B
+ 4302000000BECFAF43A5BB5143020000009F5AB143F1D25943020000009F5AB1
+ 4343EB614302000000A05AB1439C046A4302000000FACEAF43711D7243020000
+ 0073B8AC43C14A78430300000073B8AC43C14A78430A46696C6C2E436F6C6F72
+ 0708636C6157686974650748697454657374080C4D617267696E732E4C656674
+ 0500000000000000A004400D526F746174696F6E416E676C6505000000000000
+ 00B406400A53697A652E57696474680500000000000000F002400B53697A652E
+ 4865696768740500000000000000F002401453697A652E506C6174666F726D44
+ 656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F
+ 64650703466974000005545061746800095374796C654E616D65060550617468
+ 3305416C69676E070643656E74657209446174612E506174680A240100001800
+ 00000000000073B8AC43C14A7843010000006D2717435849DD430200000086CB
+ 0A431078E343020000009683ED421078E34302000000DACED4425849DD430200
+ 00009A19BC42081CD743020000009A19BC424C17CD4302000000DACED4421DEA
+ C64301000000B4288B4385EB61430100000068D1D4426811584202000000281C
+ BC42CAA1264202000000281CBC42E6FBAC410200000068D1D442D04D14410200
+ 0000A886ED429CC245C002000000CCCC0A439CC245C002000000B4281743D04D
+ 14410100000016B9AC43918D4B4302000000BECFAF43A5BB5143020000009F5A
+ B143F1D25943020000009F5AB14343EB614302000000A05AB1439C046A430200
+ 0000FACEAF43711D72430200000073B8AC43C14A78430300000073B8AC43C14A
+ 78430A46696C6C2E436F6C6F720708636C615768697465074869745465737408
+ 0D4D617267696E732E52696768740500000000000000A004400D526F74617469
+ 6F6E416E676C650500000000000000B406400A53697A652E5769647468050000
+ 0000000000F002400B53697A652E4865696768740500000000000000F0024014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F646507034669740000000000545046300754
+ 4C61796F757400095374796C654E616D65060C706F706F7665727374796C6505
+ 416C69676E070643656E7465720756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D650602626705416C69676E0706436C69656E740A
+ 46696C6C2E436F6C6F7207097846463230323032300748697454657374080A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
+ 757400095374796C654E616D650607636F6E74656E7405416C69676E0706436C
+ 69656E740C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
+ 67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
+ 74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
+ 00000080FF3F0A53697A652E57696474680500000000000000C004400B53697A
+ 652E4865696768740500000000000000C004401453697A652E506C6174666F72
+ 6D44656661756C740800000D54536861646F7745666665637400084469737461
+ 6E63650500000000000000C0004009446972656374696F6E0500000000000000
+ B4054008536F66746E657373050000000000000080FE3F074F70616369747905
+ 0000000000000080FE3F0B536861646F77436F6C6F720708636C61426C61636B
+ 000000005450463007544C61796F757400095374796C654E616D65060D706F70
+ 7570626F787374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000080C406400B53697A652E486569676874050000000000
+ 0000D404401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000A5452656374616E676C6500095374796C654E616D65060A626163
+ 6B67726F756E6405416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080A53697A652E57696474
+ 680500000000000080C406400B53697A652E4865696768740500000000000000
+ D404401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646323032303230
+ 0953746F7056616C756507097846463430343034300754726967676572062049
+ 734D6F7573654F7665723D747275653B4973507265737365643D66616C73650E
+ 54726967676572496E7665727365062149734D6F7573654F7665723D66616C73
+ 653B4973507265737365643D66616C736500000F54436F6C6F72416E696D6174
+ 696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F6E3253
+ 74796C65084475726174696F6E05000000000000000000000C50726F70657274
+ 794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507097846
+ 463430343034300953746F7056616C7565070978464632413832453207547269
+ 67676572062049734D6F7573654F7665723D747275653B497350726573736564
+ 3D747275653B0E54726967676572496E7665727365062049734D6F7573654F76
+ 65723D747275653B4973507265737365643D66616C736500000007544C61796F
+ 75740005416C69676E070552696768740A506F736974696F6E2E580500000000
+ 000080B506400A53697A652E57696474680500000000000000F002400B53697A
+ 652E4865696768740500000000000000D404401453697A652E506C6174666F72
+ 6D44656661756C7408000554506174680005416C69676E070643656E74657209
+ 446174612E506174680A400000000500000000000000000000000000803F0100
+ 00000000803F0000803F010000000000003F0000000001000000000000000000
+ 803F0300000000000000000000000A46696C6C2E436F6C6F720708636C615768
+ 6974650748697454657374080B4D617267696E732E546F700500000000000000
+ E001C00A53697A652E576964746805000000000000008002400B53697A652E48
+ 656967687405000000000000008001401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E650000055450617468
+ 0005416C69676E070643656E74657209446174612E506174680A340000000400
+ 0000000000000000000000000000010000000000803F00000000010000000000
+ 003F0000803F0300000000000000000000000A46696C6C2E436F6C6F72070863
+ 6C6157686974650748697454657374080B4D617267696E732E546F7005000000
+ 00000000C001400A53697A652E576964746805000000000000008002400B5369
+ 7A652E48656967687405000000000000008001401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500000005
+ 545465787400095374796C654E616D6506047465787405416C69676E0706436C
+ 69656E740748697454657374080C4D617267696E732E4C656674050000000000
+ 000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D6172
+ 67696E732E5269676874050000000000000080FF3F0E4D617267696E732E426F
+ 74746F6D050000000000000080FF3F0A53697A652E5769647468050000000000
+ 0080B306400B53697A652E4865696768740500000000000000CC04401453697A
+ 652E506C6174666F726D44656661756C7408165465787453657474696E67732E
+ 466F6E74436F6C6F720708636C615768697465000000545046300A5452656374
+ 616E676C6500095374796C654E616D6506147374617475736261726E6F677269
+ 707374796C6505416C69676E070643656E7465720C436C69704368696C647265
+ 6E090A46696C6C2E436F6C6F7207097846463235323532350553696465730B03
+ 546F70000A53697A652E57696474680500000000000000F004400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313507
+ 56697369626C650800005450463007544C61796F757400095374796C654E616D
+ 650613736D616C6C7363726F6C6C6261727374796C6505416C69676E07064365
+ 6E7465720756697369626C6508000654547261636B00095374796C654E616D65
+ 060668747261636B05416C69676E0706436C69656E74064C6F636B6564090B4F
+ 7269656E746174696F6E070A486F72697A6F6E74616C0A53697A652E57696474
+ 680500000000000000C804400B53697A652E4865696768740500000000000000
+ C804401453697A652E506C6174666F726D44656661756C74080B5374796C654C
+ 6F6F6B757006147363726F6C6C62617268747261636B7374796C650000065454
+ 7261636B00095374796C654E616D65060676747261636B05416C69676E070643
+ 6C69656E74064C6F636B6564090B4F7269656E746174696F6E070A486F72697A
+ 6F6E74616C0A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000000000C804401453697A652E506C6174666F726D
+ 44656661756C74080B5374796C654C6F6F6B757006147363726F6C6C62617276
+ 747261636B7374796C650000005450463007544C61796F757400095374796C65
+ 4E616D65060D73706C69747465727374796C6505416C69676E070643656E7465
+ 720A53697A652E57696474680500000000000000A904400B53697A652E486569
+ 6768740500000000000080C105401453697A652E506C6174666F726D44656661
+ 756C74080756697369626C6508000A5452656374616E676C6500095374796C65
+ 4E616D65060A52656374616E676C653105416C69676E0706436C69656E740A46
+ 696C6C2E436F6C6F720709784646333033303330074869745465737408055369
+ 6465730B044C656674055269676874000A53697A652E57696474680500000000
+ 000000A904400B53697A652E4865696768740500000000000080C10540145369
+ 7A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72
+ 0709784646313531353135000007544C61796F757400095374796C654E616D65
+ 06064C61796F757405416C69676E0706436C69656E740A53697A652E57696474
+ 680500000000000000A904400B53697A652E4865696768740500000000000080
+ C105401453697A652E506C6174666F726D44656661756C74080007544C61796F
+ 757400095374796C654E616D6506046772697005416C69676E070A5665727443
+ 656E746572064C6F636B6564090A506F736974696F6E2E590500000000000000
+ 8004400A53697A652E57696474680500000000000000A904400B53697A652E48
+ 656967687405000000000000008004401453697A652E506C6174666F726D4465
+ 6661756C7408000754436972636C6500095374796C654E616D65060743697263
+ 6C653305416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463430343034300748697454657374080E4D617267696E732E426F74746F6D05
+ 00000000000000A003400A53697A652E57696474680500000000000000E00140
+ 0B53697A652E4865696768740500000000000000E001401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464631
+ 353135313500000754436972636C6500095374796C654E616D65060743697263
+ 6C653205416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846
+ 463430343034300748697454657374080B4D617267696E732E546F7005000000
+ 00000000A003400A53697A652E57696474680500000000000000E001400B5369
+ 7A652E4865696768740500000000000000E001401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 313500000754436972636C6500095374796C654E616D650607436972636C6531
+ 05416C69676E070643656E7465720A46696C6C2E436F6C6F7207097846463430
+ 343034300748697454657374080A53697A652E57696474680500000000000000
+ E001400B53697A652E4865696768740500000000000000E001401453697A652E
+ 506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F72070978
+ 464631353135313500000000005450463007544C61796F757400095374796C65
+ 4E616D650610636C6F7365627574746F6E7374796C6505416C69676E07064365
+ 6E7465720A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C803401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000A5452656374616E676C6500095374
+ 796C654E616D65060B636C6F7365627574746F6E05416C69676E0706436C6965
+ 6E740A46696C6C2E436F6C6F7207097846463230323032300748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C803401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E
+ 696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D617469
+ 6F6E315374796C65084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C7565
+ 07097846463230323032300953746F7056616C75650709784646464636313537
+ 0754726967676572062049734D6F7573654F7665723D747275653B4973507265
+ 737365643D66616C73650E54726967676572496E7665727365062149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C736500000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E325374796C65084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846464646363135370953746F7056616C756507097846
+ 464532344634350754726967676572061F49734D6F7573654F7665723D747275
+ 653B4973507265737365643D747275650E54726967676572496E766572736506
+ 2049734D6F7573654F7665723D747275653B4973507265737365643D66616C73
+ 6500000005545061746800095374796C654E616D650605506174683105416C69
+ 676E070643656E74657209446174612E506174680AC400000010000000000000
+ 000000A0C00000704101000000000070410000A0C001000000000048420000F0
+ 41010000000000AA420000A0C0010000000000D242000070410100000000008C
+ 4200004842010000000000D2420000B442010000000000AA420000DC42020000
+ 003BDF34429E6F8C4202000000FE547D427FAAB0420200000000004842000096
+ 4201000000000070410000DC42010000000000A0C00000B442010000000000F0
+ 4100005C42010000000000A0C000007041030000000000A0C0000070410A4669
+ 6C6C2E436F6C6F720708636C6157686974650748697454657374080A53697A65
+ 2E57696474680500000000000000A002400B53697A652E486569676874050000
+ 0000000000A002401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E650000005450463007544C61796F757400
+ 095374796C654E616D65060E6D6178627574746F6E7374796C6505416C69676E
+ 070643656E7465720A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C74080756697369626C6508000A5452656374616E676C65
+ 00095374796C654E616D6506096D6178627574746F6E05416C69676E0706436C
+ 69656E740A46696C6C2E436F6C6F720709784646323032303230074869745465
+ 7374080A53697A652E57696474680500000000000000C804400B53697A652E48
+ 65696768740500000000000000C803401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E696D61
+ 74696F6E315374796C65084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463230323032300953746F7056616C7565070978464632413832
+ 45320754726967676572062049734D6F7573654F7665723D747275653B497350
+ 7265737365643D66616C73650E54726967676572496E7665727365062149734D
+ 6F7573654F7665723D66616C73653B4973507265737365643D66616C73650000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C
+ 6F72416E696D6174696F6E325374796C65084475726174696F6E050000000000
+ 00000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53
+ 7461727456616C756507097846463241383245320953746F7056616C75650709
+ 7846463137353739430754726967676572061F49734D6F7573654F7665723D74
+ 7275653B4973507265737365643D747275650E54726967676572496E76657273
+ 65062049734D6F7573654F7665723D747275653B4973507265737365643D6661
+ 6C736500000005545061746800095374796C654E616D65060550617468310541
+ 6C69676E070643656E74657209446174612E506174680A580000000700000000
+ 0000000000C8420000C8420100000000002F440000C8420100000000002F4400
+ 002F44010000000080094400800944010000000080094400007A430100000000
+ 007A4300007A43030000000000C8420000C8420A46696C6C2E436F6C6F720708
+ 636C6157686974650748697454657374080A53697A652E576964746805000000
+ 00000000A002400B53697A652E4865696768740500000000000000A002401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650000005450463007544C61796F757400095374796C654E616D65
+ 060E726573627574746F6E7374796C6505416C69676E070643656E7465720A53
+ 697A652E57696474680500000000000000C804400B53697A652E486569676874
+ 0500000000000000C803401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C6508000A5452656374616E676C6500095374796C654E616D
+ 650609726573627574746F6E05416C69676E0706436C69656E740A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646323032
+ 3032300953746F7056616C756507097846463241383245320754726967676572
+ 062049734D6F7573654F7665723D747275653B4973507265737365643D66616C
+ 73650E54726967676572496E7665727365062149734D6F7573654F7665723D66
+ 616C73653B4973507265737365643D66616C736500000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D650614436F6C6F72416E696D6174696F
+ 6E325374796C65084475726174696F6E05000000000000000000000C50726F70
+ 657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C756507
+ 097846463241383245320953746F7056616C7565070978464631373537394307
+ 54726967676572061F49734D6F7573654F7665723D747275653B497350726573
+ 7365643D747275650E54726967676572496E7665727365062049734D6F757365
+ 4F7665723D747275653B4973507265737365643D66616C736500000005545061
+ 746800095374796C654E616D650605506174683105416C69676E070643656E74
+ 657209446174612E506174680A5800000007000000000000000000C8420000C8
+ 420100000000002F440000C8420100000000002F4400002F4401000000008009
+ 4400800944010000000080094400007A430100000000007A4300007A43030000
+ 000000C8420000C8420A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080D526F746174696F6E416E676C650500000000000000B40640
+ 0A53697A652E57696474680500000000000000A002400B53697A652E48656967
+ 68740500000000000000A002401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C61
+ 796F757400095374796C654E616D65060E6D696E627574746F6E7374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508000A5452656374
+ 616E676C6500095374796C654E616D6506096D696E627574746F6E05416C6967
+ 6E0706436C69656E740A46696C6C2E436F6C6F72070978464632303230323007
+ 48697454657374080A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54
+ 436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72
+ 416E696D6174696F6E315374796C65084475726174696F6E0500000000000000
+ 0000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A537461
+ 727456616C756507097846463230323032300953746F7056616C756507097846
+ 463241383245320754726967676572062049734D6F7573654F7665723D747275
+ 653B4973507265737365643D66616C73650E54726967676572496E7665727365
+ 062149734D6F7573654F7665723D66616C73653B4973507265737365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0614436F6C6F72416E696D6174696F6E325374796C65084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463241383245320953746F705661
+ 6C756507097846463137353739430754726967676572061F49734D6F7573654F
+ 7665723D747275653B4973507265737365643D747275650E5472696767657249
+ 6E7665727365062049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C736500000005545061746800095374796C654E616D6506055061
+ 74683105416C69676E070643656E74657209446174612E506174680A40000000
+ 050000000000000000002F44008009440100000000002F4400002F4401000000
+ 0000C84200002F44010000000000C842008009440300000000002F4400800944
+ 0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080B4D
+ 617267696E732E546F700500000000000000A002400D526F746174696F6E416E
+ 676C650500000000000000B406400A53697A652E576964746805000000000000
+ 00A002400B53697A652E4865696768740500000000000000C000401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650000005450463007544C61796F757400095374796C654E616D65060F74
+ 6F6F6C77696E646F777374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000056D5AF07400B53697A652E4865696768740500
+ 000000000000B306401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 046D61736B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72
+ 07097846463130313031300A53697A652E576964746805000000000056D5AF07
+ 400B53697A652E4865696768740500000000000000B306401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 0756697369626C6508000007544C61796F757400095374796C654E616D650604
+ 6C65667405416C69676E07084D6F73744C656674064C6F636B6564090A506F73
+ 6974696F6E2E590500000000000000C803400A53697A652E5769647468050000
+ 0000000000A001400B53697A652E48656967687405000000000000009A064014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 650005416C69676E07084D6F73744C6566740A46696C6C2E436F6C6F72070978
+ 46463230323032300748697454657374080553696465730B044C656674055269
+ 676874000A53697A652E57696474680500000000000000A001400B53697A652E
+ 48656967687405000000000000009506401453697A652E506C6174666F726D44
+ 656661756C74080C5374726F6B652E436F6C6F72070978464631353135313500
+ 000A5452656374616E676C6500095374796C654E616D65060A52656374616E67
+ 6C653105416C69676E070A4D6F7374426F74746F6D13456E61626C6544726167
+ 486967686C69676874080A46696C6C2E436F6C6F720709784646323032303230
+ 0748697454657374080A506F736974696F6E2E59050000000000000095064005
+ 53696465730B044C65667406426F74746F6D000A53697A652E57696474680500
+ 000000000000A001400B53697A652E4865696768740500000000000000A00140
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F7207097846463135313531350007544C61796F757400095374796C654E61
+ 6D6506074C61796F75743305416C69676E07094D6F737452696768740A506F73
+ 6974696F6E2E5805000000000000008001400A53697A652E5769647468050000
+ 000000000080FF3F0B53697A652E4865696768740500000000000000A0014014
+ 53697A652E506C6174666F726D44656661756C7408000A5452656374616E676C
+ 6500095374796C654E616D65060A52656374616E676C653105416C69676E0703
+ 546F700A46696C6C2E436F6C6F72070978464631353135313507486974546573
+ 74080A53697A652E5769647468050000000000000080FF3F0B53697A652E4865
+ 69676874050000000000000080FF3F1453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000000000007544C61
+ 796F757400095374796C654E616D650605726967687405416C69676E07094D6F
+ 73745269676874064C6F636B6564090A506F736974696F6E2E58050000000000
+ 5655AD07400A506F736974696F6E2E590500000000000000C803400A53697A65
+ 2E57696474680500000000000000A001400B53697A652E486569676874050000
+ 00000000009A06401453697A652E506C6174666F726D44656661756C7408000A
+ 5452656374616E676C650005416C69676E07094D6F737452696768740A46696C
+ 6C2E436F6C6F7207097846463230323032300748697454657374080553696465
+ 730B044C656674055269676874000A53697A652E576964746805000000000000
+ 00A001400B53697A652E48656967687405000000000000009506401453697A65
+ 2E506C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709
+ 78464631353135313500000A5452656374616E676C6500095374796C654E616D
+ 65060A52656374616E676C653105416C69676E070A4D6F7374426F74746F6D13
+ 456E61626C6544726167486967686C69676874080A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A506F736974696F6E2E590500
+ 0000000000009506400553696465730B06426F74746F6D055269676874000A53
+ 697A652E57696474680500000000000000A001400B53697A652E486569676874
+ 0500000000000000A001401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F7207097846463135313531350007544C61796F
+ 757400095374796C654E616D6506074C61796F75743305416C69676E07084D6F
+ 73744C6566740A53697A652E5769647468050000000000000080FF3F0B53697A
+ 652E4865696768740500000000000000A001401453697A652E506C6174666F72
+ 6D44656661756C7408000A5452656374616E676C6500095374796C654E616D65
+ 060A52656374616E676C653105416C69676E0703546F700A46696C6C2E436F6C
+ 6F7207097846463135313531350748697454657374080A53697A652E57696474
+ 68050000000000000080FF3F0B53697A652E4865696768740500000000000000
+ 80FF3F1453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E6500000000000A5452656374616E676C650005416C69
+ 676E07074D6F7374546F700A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000056D5AF07400B53697A652E4865696768740500000000000000C8034014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F7207097846463135313531350007544C61796F757400095374796C654E616D
+ 65060763617074696F6E05416C69676E0708436F6E74656E7473064C6F636B65
+ 64090748697454657374090A53697A652E576964746805000000000056D5AF07
+ 400B53697A652E4865696768740500000000000000C803401453697A652E506C
+ 6174666F726D44656661756C7408000007544C61796F75740005416C69676E07
+ 06436C69656E74064C6F636B6564090C4D617267696E732E4C65667405000000
+ 0000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F0D4D
+ 617267696E732E5269676874050000000000000080FF3F0E4D617267696E732E
+ 426F74746F6D050000000000000080FF3F0A53697A652E576964746805000000
+ 000056D5AE07400B53697A652E4865696768740500000000000000B803401453
+ 697A652E506C6174666F726D44656661756C74080007544C61796F7574000541
+ 6C69676E07044C656674064C6F636B6564090A53697A652E5769647468050000
+ 00000000009002400B53697A652E4865696768740500000000000000B8034014
+ 53697A652E506C6174666F726D44656661756C7408000007544C61796F757400
+ 095374796C654E616D65060773797362746E7305416C69676E0706436C69656E
+ 74064C6F636B6564090A53697A652E57696474680500000000005655AA07400B
+ 53697A652E4865696768740500000000000000B803401453697A652E506C6174
+ 666F726D44656661756C7408000C545370656564427574746F6E00095374796C
+ 654E616D650605636C6F736505416C69676E07055269676874064C6F636B6564
+ 090A506F736974696F6E2E5805000000000056D59D07400A53697A652E576964
+ 74680500000000000000C803400B53697A652E48656967687405000000000000
+ 00B803401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B75700610636C6F7365627574746F6E7374796C650000055454657874
+ 00095374796C654E616D6506057469746C6505416C69676E0706436C69656E74
+ 064C6F636B6564090748697454657374080A53697A652E576964746805000000
+ 000056D59D07400B53697A652E4865696768740500000000000000B803401453
+ 697A652E506C6174666F726D44656661756C7408045465787406055469746C65
+ 165465787453657474696E67732E466F6E74436F6C6F720708636C6157686974
+ 65000000000007544C61796F757400095374796C654E616D650606636C69656E
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737409
+ 0A53697A652E576964746805000000000056D5AA07400B53697A652E48656967
+ 687405000000000000009506401453697A652E506C6174666F726D4465666175
+ 6C7408000007544C61796F757400095374796C654E616D650606626F74746F6D
+ 05416C69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E2E
+ 580500000000000000A001400A506F736974696F6E2E590500000000000000AE
+ 06400A53697A652E576964746805000000000056D5AA07400B53697A652E4865
+ 696768740500000000000000A001401453697A652E506C6174666F726D446566
+ 61756C7408000A5452656374616E676C6500095374796C654E616D6506047265
+ 637405416C69676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646
+ 3230323032300553696465730B03546F7006426F74746F6D000A53697A652E57
+ 6964746805000000000056D5AA07400B53697A652E4865696768740500000000
+ 000000A001401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720709784646313531353135000000005450463007544C61
+ 796F757400095374796C654E616D65061177696E646F77626F72646572737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 0056D5AF07400B53697A652E4865696768740500000000000000B30640145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D6506046D61736B05416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463130313031300A
+ 53697A652E576964746805000000000056D5AF07400B53697A652E4865696768
+ 740500000000000000B306401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650756697369626C6508000007
+ 544C61796F757400095374796C654E616D6506046C65667405416C69676E0708
+ 4D6F73744C656674064C6F636B6564090A506F736974696F6E2E590500000000
+ 000000F003400A53697A652E57696474680500000000000000A001400B53697A
+ 652E48656967687405000000000000009506401453697A652E506C6174666F72
+ 6D44656661756C7408000A5452656374616E676C650005416C69676E07084D6F
+ 73744C6566740A46696C6C2E436F6C6F72070978464632303230323007486974
+ 54657374080553696465730B044C656674055269676874000A53697A652E5769
+ 6474680500000000000000A001400B53697A652E486569676874050000000000
+ 00009006401453697A652E506C6174666F726D44656661756C74080C5374726F
+ 6B652E436F6C6F72070978464631353135313500000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070A4D
+ 6F7374426F74746F6D13456E61626C6544726167486967686C69676874080A46
+ 696C6C2E436F6C6F7207097846463230323032300748697454657374080A506F
+ 736974696F6E2E5905000000000000009006400553696465730B044C65667406
+ 426F74746F6D000A53697A652E57696474680500000000000000A001400B5369
+ 7A652E4865696768740500000000000000A001401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350007544C61796F757400095374796C654E616D6506074C61796F75743305
+ 416C69676E07094D6F737452696768740A506F736974696F6E2E580500000000
+ 0000008001400A53697A652E5769647468050000000000000080FF3F0B53697A
+ 652E4865696768740500000000000000A001401453697A652E506C6174666F72
+ 6D44656661756C7408000A5452656374616E676C6500095374796C654E616D65
+ 060A52656374616E676C653105416C69676E0703546F700A46696C6C2E436F6C
+ 6F7207097846463135313531350748697454657374080A53697A652E57696474
+ 68050000000000000080FF3F0B53697A652E4865696768740500000000000000
+ 80FF3F1453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000000000007544C61796F757400095374796C654E
+ 616D650605726967687405416C69676E07094D6F73745269676874064C6F636B
+ 6564090A506F736974696F6E2E580500000000005655AD07400A506F73697469
+ 6F6E2E590500000000000000F003400A53697A652E5769647468050000000000
+ 0000A001400B53697A652E48656967687405000000000000009506401453697A
+ 652E506C6174666F726D44656661756C7408000A5452656374616E676C650005
+ 416C69676E07094D6F737452696768740A46696C6C2E436F6C6F720709784646
+ 3230323032300748697454657374080553696465730B044C6566740552696768
+ 74000A53697A652E57696474680500000000000000A001400B53697A652E4865
+ 6967687405000000000000009006401453697A652E506C6174666F726D446566
+ 61756C74080C5374726F6B652E436F6C6F72070978464631353135313500000A
+ 5452656374616E676C6500095374796C654E616D65060A52656374616E676C65
+ 3105416C69676E070A4D6F7374426F74746F6D13456E61626C65447261674869
+ 67686C69676874080A46696C6C2E436F6C6F7207097846463230323032300748
+ 697454657374080A506F736974696F6E2E590500000000000000900640055369
+ 6465730B06426F74746F6D055269676874000A53697A652E5769647468050000
+ 0000000000A001400B53697A652E4865696768740500000000000000A0014014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F7207097846463135313531350007544C61796F757400095374796C654E616D
+ 6506074C61796F75743305416C69676E07084D6F73744C6566740A53697A652E
+ 5769647468050000000000000080FF3F0B53697A652E48656967687405000000
+ 00000000A001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A52656374616E676C6531
+ 05416C69676E0703546F700A46696C6C2E436F6C6F7207097846463135313531
+ 350748697454657374080A53697A652E5769647468050000000000000080FF3F
+ 0B53697A652E486569676874050000000000000080FF3F1453697A652E506C61
+ 74666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6500
+ 000000000A5452656374616E676C650005416C69676E07074D6F7374546F700A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080A53697A652E576964746805000000000056D5AF07400B53697A
+ 652E4865696768740500000000000000F003401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 350007544C61796F757400095374796C654E616D65060763617074696F6E0541
+ 6C69676E0708436F6E74656E7473064C6F636B6564090748697454657374090A
+ 53697A652E576964746805000000000056D5AF07400B53697A652E4865696768
+ 740500000000000000F003401453697A652E506C6174666F726D44656661756C
+ 7408000007544C61796F75740005416C69676E0706436C69656E74064C6F636B
+ 6564090C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A53697A652E576964746805000000000056D5AE07400B53697A65
+ 2E4865696768740500000000000000E003401453697A652E506C6174666F726D
+ 44656661756C74080007544C61796F75740005416C69676E07044C656674064C
+ 6F636B6564090A53697A652E576964746805000000000000009002400B53697A
+ 652E4865696768740500000000000000E003401453697A652E506C6174666F72
+ 6D44656661756C7408000007544C61796F757400095374796C654E616D650604
+ 69636F6E064C6F636B6564090A506F736974696F6E2E58050000000000000090
+ 02400A506F736974696F6E2E590500000000000000E001400A53697A652E5769
+ 6474680500000000000000C803400B53697A652E486569676874050000000000
+ 0000A803401453697A652E506C6174666F726D44656661756C7408000007544C
+ 61796F757400095374796C654E616D65060773797362746E7305416C69676E07
+ 06436C69656E74064C6F636B6564090A53697A652E5769647468050000000000
+ 5655AA07400B53697A652E4865696768740500000000000000E003401453697A
+ 652E506C6174666F726D44656661756C7408000C545370656564427574746F6E
+ 00095374796C654E616D650605636C6F736505416C69676E0705526967687406
+ 4C6F636B6564090A506F736974696F6E2E5805000000000056559107400A5369
+ 7A652E57696474680500000000000000C804400B53697A652E48656967687405
+ 00000000000000E003401453697A652E506C6174666F726D44656661756C7408
+ 0B5374796C654C6F6F6B75700610636C6F7365627574746F6E7374796C650000
+ 0C545370656564427574746F6E00095374796C654E616D6506036D617805416C
+ 69676E07055269676874064C6F636B6564090A506F736974696F6E2E58050000
+ 00000056558207400A53697A652E57696474680500000000000000F003400B53
+ 697A652E4865696768740500000000000000E003401453697A652E506C617466
+ 6F726D44656661756C74080B5374796C654C6F6F6B7570060E6D617862757474
+ 6F6E7374796C6500000C545370656564427574746F6E00095374796C654E616D
+ 65060372657305416C69676E07055269676874064C6F636B6564090A506F7369
+ 74696F6E2E58050000000000ACAAE606400A53697A652E576964746805000000
+ 00000000F003400B53697A652E4865696768740500000000000000E003401453
+ 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
+ 060E726573627574746F6E7374796C6500000C545370656564427574746F6E00
+ 095374796C654E616D6506036D696E05416C69676E07055269676874064C6F63
+ 6B6564090A506F736974696F6E2E58050000000000ACAAC806400A53697A652E
+ 57696474680500000000000000F003400B53697A652E48656967687405000000
+ 00000000E003401453697A652E506C6174666F726D44656661756C74080B5374
+ 796C654C6F6F6B7570060E6D696E627574746F6E7374796C6500000554546578
+ 7400095374796C654E616D6506057469746C6505416C69676E0706436C69656E
+ 74064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 000000ACAAC806400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C7408045465787406055469746C
+ 65165465787453657474696E67732E466F6E74436F6C6F720708636C61576869
+ 7465000000000007544C61796F757400095374796C654E616D650606636C6965
+ 6E7405416C69676E0706436C69656E74064C6F636B6564090748697454657374
+ 090A53697A652E576964746805000000000056D5AA07400B53697A652E486569
+ 67687405000000000000009006401453697A652E506C6174666F726D44656661
+ 756C7408000007544C61796F757400095374796C654E616D650606626F74746F
+ 6D05416C69676E0706426F74746F6D064C6F636B6564090A506F736974696F6E
+ 2E580500000000000000A001400A506F736974696F6E2E590500000000000000
+ AE06400A53697A652E576964746805000000000056D5AA07400B53697A652E48
+ 65696768740500000000000000A001401453697A652E506C6174666F726D4465
+ 6661756C7408000A5452656374616E676C6500095374796C654E616D65060472
+ 65637405416C69676E0706426F74746F6D0A46696C6C2E436F6C6F7207097846
+ 463230323032300748697454657374080553696465730B03546F7006426F7474
+ 6F6D000A53697A652E576964746805000000000056D5AA07400B53697A652E48
+ 65696768740500000000000000A001401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F7207097846463135313531350000
+ 00005450463007544C61796F757400095374796C654E616D650610726164696F
+ 627574746F6E7374796C6505416C69676E070643656E7465720A53697A652E57
+ 696474680500000000000000F205400B53697A652E4865696768740500000000
+ 000000A803401453697A652E506C6174666F726D44656661756C740807566973
+ 69626C65080007544C61796F75740005416C69676E07044C6566740A53697A65
+ 2E57696474680500000000000000A803400B53697A652E486569676874050000
+ 0000000000A803401453697A652E506C6174666F726D44656661756C74080008
+ 54456C6C6970736500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E070643656E7465720A46696C6C2E436F6C6F720709784646323032
+ 303230064C6F636B6564090748697454657374080A53697A652E576964746805
+ 00000000000000F002400B53697A652E4865696768740500000000000000F002
+ 401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E43
+ 6F6C6F720709784646313531353135000854456C6C6970736500095374796C65
+ 4E616D650609636865636B6D61726B05416C69676E0706436C69656E740A4669
+ 6C6C2E436F6C6F720709784646324138324532064C6F636B6564090748697454
+ 65737408074F70616369747905000000000000000000000C4D617267696E732E
+ 4C65667405000000000000008000400B4D617267696E732E546F700500000000
+ 0000008000400D4D617267696E732E526967687405000000000000008000400E
+ 4D617267696E732E426F74746F6D05000000000000008000400A53697A652E57
+ 696474680500000000000000B002400B53697A652E4865696768740500000000
+ 000000B002401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E00
+ 095374796C654E616D65061A6F706163697479436865636B6D61726B416E696D
+ 6174696F6E31084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D6506074F7061636974790A537461727456616C75650500000000
+ 0000000000000953746F7056616C7565050000000000000080FF3F0754726967
+ 676572060E4973436865636B65643D747275650E54726967676572496E766572
+ 7365060F4973436865636B65643D66616C73650000000F54436F6C6F72416E69
+ 6D6174696F6E00095374796C654E616D65061A726164696F627574746F6E436F
+ 6C6F72416E696D6174696F6E31084475726174696F6E05000000000000000000
+ 0007496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572061049734D6F7573654F
+ 7665723D747275650E54726967676572496E7665727365061149734D6F757365
+ 4F7665723D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060C
+ 5374726F6B652E436F6C6F720A537461727456616C7565070978464631353135
+ 31350953746F7056616C75650709784646324138324532075472696767657206
+ 0E4973436865636B65643D747275650E54726967676572496E7665727365060F
+ 4973436865636B65643D66616C73650000000005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E74064C6F636B656409
+ 0748697454657374080A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000A803401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C6157686974650000005450463007544C61796F757400095374
+ 796C654E616D650618756C63656E746572726164696F627574746F6E7374796C
+ 6505416C69676E070643656E7465720A53697A652E5769647468050000000000
+ 5655FB05400B53697A652E4865696768740500000000000000A004401453697A
+ 652E506C6174666F726D44656661756C74080756697369626C65080007544C61
+ 796F75740005416C69676E0706426F74746F6D0A506F736974696F6E2E590500
+ 0000000000008804400A53697A652E57696474680500000000005655FB05400B
+ 53697A652E4865696768740500000000000000C001401453697A652E506C6174
+ 666F726D44656661756C7408000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E747307
+ 436F726E6572730B07546F704C6566740A426F74746F6D4C656674000A46696C
+ 6C2E436F6C6F720709784646323032303230064C6F636B656409074869745465
+ 7374080A53697A652E57696474680500000000005655FB05400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080C5374726F6B652E436F6C6F720709784646313531353135000F
+ 54436F6C6F72416E696D6174696F6E00095374796C654E616D6506216261636B
+ 67726F756E64556C427574746F6E436F6C6F72416E696D6174696F6E31084475
+ 726174696F6E050000000000000000000007496E7665727365090C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572061049734D6F7573654F7665723D747275650E54726967676572
+ 496E7665727365061149734D6F7573654F7665723D66616C736500000A545265
+ 6374616E676C6500095374796C654E616D650609636865636B6D61726B05416C
+ 69676E0708436F6E74656E747307436F726E6572730B07546F704C6566740A42
+ 6F74746F6D4C656674000A46696C6C2E436F6C6F720709784646324138324532
+ 064C6F636B656409074869745465737408074F70616369747905000000000000
+ 000000000C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
+ 67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
+ 74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
+ 00000080FF3F0A53697A652E57696474680500000000005655F705400B53697A
+ 652E48656967687405000000000000008001401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54466C
+ 6F6174416E696D6174696F6E00095374796C654E616D65061A636865636B6D61
+ 726B4F706163697479416E696D6174696F6E31084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D6506074F7061636974790A5374
+ 61727456616C756505000000000000000000000953746F7056616C7565050000
+ 000000000080FF3F0754726967676572060E4973436865636B65643D74727565
+ 0E54726967676572496E7665727365060F4973436865636B65643D66616C7365
+ 000000000005545465787400095374796C654E616D6506047465787405416C69
+ 676E0706436C69656E74064C6F636B6564090748697454657374080A53697A65
+ 2E57696474680500000000005655FB05400B53697A652E486569676874050000
+ 00000000008804401453697A652E506C6174666F726D44656661756C74081654
+ 65787453657474696E67732E466F6E74436F6C6F720708636C61576869746500
+ 00005450463007544C61796F757400095374796C654E616D650617756C726967
+ 6874726164696F627574746F6E7374796C6505416C69676E070643656E746572
+ 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
+ 68740500000000000000A004401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C65080007544C61796F75740005416C69676E0706426F
+ 74746F6D0A506F736974696F6E2E5905000000000000008804400A53697A652E
+ 57696474680500000000005655FB05400B53697A652E48656967687405000000
+ 00000000C001401453697A652E506C6174666F726D44656661756C7408000A54
+ 52656374616E676C6500095374796C654E616D65060A6261636B67726F756E64
+ 05416C69676E0708436F6E74656E747307436F726E6572730B08546F70526967
+ 68740B426F74746F6D5269676874000A46696C6C2E436F6C6F72070978464632
+ 3032303230064C6F636B6564090748697454657374080A53697A652E57696474
+ 680500000000005655FB05400B53697A652E4865696768740500000000000000
+ C001401453697A652E506C6174666F726D44656661756C74080C5374726F6B65
+ 2E436F6C6F720709784646313531353135000F54436F6C6F72416E696D617469
+ 6F6E00095374796C654E616D6506216261636B67726F756E64556C427574746F
+ 6E436F6C6F72416E696D6174696F6E31084475726174696F6E05000000000000
+ 0000000007496E7665727365090C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572061049734D6F75
+ 73654F7665723D747275650E54726967676572496E7665727365061149734D6F
+ 7573654F7665723D66616C736500000A5452656374616E676C6500095374796C
+ 654E616D650609636865636B6D61726B05416C69676E0708436F6E74656E7473
+ 07436F726E6572730B08546F7052696768740B426F74746F6D5269676874000A
+ 46696C6C2E436F6C6F720709784646324138324532064C6F636B656409074869
+ 745465737408074F70616369747905000000000000000000000C4D617267696E
+ 732E4C656674050000000000000080FF3F0B4D617267696E732E546F70050000
+ 000000000080FF3F0D4D617267696E732E5269676874050000000000000080FF
+ 3F0E4D617267696E732E426F74746F6D050000000000000080FF3F0A53697A65
+ 2E57696474680500000000005655F705400B53697A652E486569676874050000
+ 00000000008001401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D65061A636865636B6D61726B4F706163697479416E
+ 696D6174696F6E31084475726174696F6E05000000000000000000000C50726F
+ 70657274794E616D6506074F7061636974790A537461727456616C7565050000
+ 00000000000000000953746F7056616C7565050000000000000080FF3F075472
+ 6967676572060E4973436865636B65643D747275650E54726967676572496E76
+ 65727365060F4973436865636B65643D66616C73650000000000055454657874
+ 00095374796C654E616D6506047465787405416C69676E0706436C69656E7406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 005655FB05400B53697A652E4865696768740500000000000000880440145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C6157686974650000005450463007544C6179
+ 6F757400095374796C654E616D650616756C6C656674726164696F627574746F
+ 6E7374796C6505416C69676E070643656E7465720A53697A652E576964746805
+ 00000000005655FB05400B53697A652E4865696768740500000000000000A004
+ 401453697A652E506C6174666F726D44656661756C74080756697369626C6508
+ 0007544C61796F75740005416C69676E0706426F74746F6D0A506F736974696F
+ 6E2E5905000000000000008804400A53697A652E576964746805000000000056
+ 55FB05400B53697A652E4865696768740500000000000000C001401453697A65
+ 2E506C6174666F726D44656661756C7408000A5452656374616E676C65000953
+ 74796C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74
+ 656E747307436F726E6572730B07546F704C6566740A426F74746F6D4C656674
+ 000A46696C6C2E436F6C6F720709784646323032303230064C6F636B65640907
+ 48697454657374080A53697A652E57696474680500000000005655FB05400B53
+ 697A652E4865696768740500000000000000C001401453697A652E506C617466
+ 6F726D44656661756C74080C5374726F6B652E436F6C6F720709784646313531
+ 353135000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 216261636B67726F756E64556C427574746F6E436F6C6F72416E696D6174696F
+ 6E31084475726174696F6E050000000000000000000007496E7665727365090C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572061049734D6F7573654F7665723D747275650E5472
+ 6967676572496E7665727365061149734D6F7573654F7665723D66616C736500
+ 000A5452656374616E676C6500095374796C654E616D650609636865636B6D61
+ 726B05416C69676E0708436F6E74656E747307436F726E6572730B07546F704C
+ 6566740A426F74746F6D4C656674000A46696C6C2E436F6C6F72070978464632
+ 4138324532064C6F636B656409074869745465737408074F7061636974790500
+ 0000000000000000000C4D617267696E732E4C656674050000000000000080FF
+ 3F0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E73
+ 2E5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D
+ 050000000000000080FF3F0A53697A652E57696474680500000000005655F705
+ 400B53697A652E48656967687405000000000000008001401453697A652E506C
+ 6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65
+ 000F54466C6F6174416E696D6174696F6E00095374796C654E616D65061A6368
+ 65636B6D61726B4F706163697479416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D6506074F70616369
+ 74790A537461727456616C756505000000000000000000000953746F7056616C
+ 7565050000000000000080FF3F0754726967676572060E4973436865636B6564
+ 3D747275650E54726967676572496E7665727365060F4973436865636B65643D
+ 66616C7365000000000005545465787400095374796C654E616D650604746578
+ 7405416C69676E0706436C69656E74064C6F636B656409074869745465737408
+ 0A53697A652E57696474680500000000005655FB05400B53697A652E48656967
+ 687405000000000000008804401453697A652E506C6174666F726D4465666175
+ 6C7408165465787453657474696E67732E466F6E74436F6C6F720708636C6157
+ 686974650000005450463007544C61796F757400095374796C654E616D650616
+ 70726F677265737362617266696E6973687374796C6505416C69676E07064365
+ 6E7465720A53697A652E576964746805000000000033338505400B53697A652E
+ 4865696768740500000000009999E104401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C6508000A5452656374616E676C6500095374
+ 796C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A
+ 46696C6C2E436F6C6F720709784646323032303230064C6F636B656409074869
+ 7454657374080A53697A652E576964746805000000000033338505400B53697A
+ 652E4865696768740500000000009999E104401453697A652E506C6174666F72
+ 6D44656661756C74080C5374726F6B652E436F6C6F7207097846463135313531
+ 35000A5452656374616E676C6500095374796C654E616D65060A68696E646963
+ 61746F7205416C69676E07044C6566740A46696C6C2E436F6C6F720709784646
+ 324345323434064C6F636B6564090748697454657374080C4D617267696E732E
+ 4C656674050000000000000080FF3F0B4D617267696E732E546F700500000000
+ 00000080FF3F0D4D617267696E732E5269676874050000000000000080FF3F0E
+ 4D617267696E732E426F74746F6D050000000000000080FF3F0A506F73697469
+ 6F6E2E58050000000000000080FF3F0A506F736974696F6E2E59050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000C804400B53697A65
+ 2E4865696768740500000000009999D904401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000000A5452
+ 656374616E676C6500095374796C654E616D65060676747261636B05416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000A5452656374616E676C6500095374796C65
+ 4E616D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46
+ 696C6C2E436F6C6F720709784646324345323434064C6F636B65640907486974
+ 54657374080C4D617267696E732E4C656674050000000000000080FF3F0B4D61
+ 7267696E732E546F70050000000000000080FF3F0D4D617267696E732E526967
+ 6874050000000000000080FF3F0E4D617267696E732E426F74746F6D05000000
+ 0000000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F
+ 736974696F6E2E5905000000000099998904400A53697A652E57696474680500
+ 0000000033338105400B53697A652E4865696768740500000000000000A80340
+ 1453697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B69
+ 6E6407044E6F6E65000000005450463007544C61796F757400095374796C654E
+ 616D65060D657870616E6465727374796C6505416C69676E070643656E746572
+ 0A53697A652E576964746805000000000000C08407400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C74080756697369626C6508000A5452656374616E676C6500095374796C654E
+ 616D65060B626772656374616E676C6505416C69676E0708436F6E74656E7473
+ 0C436C69704368696C6472656E090A46696C6C2E436F6C6F7207097846463244
+ 32443244064C6F636B6564090748697454657374080A53697A652E5769647468
+ 05000000000000C08407400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74080C5374726F6B652E
+ 436F6C6F7207097846463135313531350007544C61796F757400095374796C65
+ 4E616D6506074C61796F75743305416C69676E0703546F700A53697A652E5769
+ 64746805000000000000C08407400B53697A652E486569676874050000000000
+ 0000C803401453697A652E506C6174666F726D44656661756C74080007544C61
+ 796F757400095374796C654E616D6506074C61796F75743405416C69676E0708
+ 436F6E74656E74730A53697A652E576964746805000000000000C08407400B53
+ 697A652E4865696768740500000000000000C803401453697A652E506C617466
+ 6F726D44656661756C7408000A5452656374616E676C6500095374796C654E61
+ 6D65060A52656374616E676C653205416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646323532353235064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000000C08407400B53697A65
+ 2E4865696768740500000000000000C803401453697A652E506C6174666F726D
+ 44656661756C74080C5374726F6B652E436F6C6F720709784646313531353135
+ 00000A5452656374616E676C6500095374796C654E616D65060A52656374616E
+ 676C653105416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F7207
+ 09784646313531353135064C6F636B6564090748697454657374080A53697A65
+ 2E576964746805000000000000C08407400B53697A652E486569676874050000
+ 0000000000C803401453697A652E506C6174666F726D44656661756C74080B53
+ 74726F6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F
+ 6E00095374796C654E616D650614466C6F6174416E696D6174696F6E31537479
+ 6C65084475726174696F6E050000000000CDCCCCFB3F0D496E746572706F6C61
+ 74696F6E070843697263756C61720C50726F70657274794E616D650607536361
+ 6C652E580A537461727456616C7565050000000000000080FF3F0953746F7056
+ 616C756505000000000000000000000754726967676572060F4973457870616E
+ 6465643D747275650E54726967676572496E766572736506104973457870616E
+ 6465643D66616C73650000000007544C61796F757400095374796C654E616D65
+ 06074C61796F75743305416C69676E0708436F6E74656E74730A53697A652E57
+ 6964746805000000000000C08407400B53697A652E4865696768740500000000
+ 000000C803401453697A652E506C6174666F726D44656661756C740800055454
+ 65787400095374796C654E616D6506047465787405416C69676E07044C656674
+ 084175746F53697A65090A436C6970506172656E7409064C6F636B6564090748
+ 697454657374080C4D617267696E732E4C6566740500000000000000A002400A
+ 506F736974696F6E2E580500000000000000A002400A53697A652E5769647468
+ 05000000000000B8C703400B53697A652E4865696768740500000000000000C8
+ 03401453697A652E506C6174666F726D44656661756C74081654657874536574
+ 74696E67732E466F6E74436F6C6F720708636C61576869746516546578745365
+ 7474696E67732E486F727A416C69676E07074C656164696E670000000F544578
+ 70616E646572427574746F6E00095374796C654E616D650606627574746F6E05
+ 416C69676E07055269676874064C6F636B6564090A506F736974696F6E2E5805
+ 00000000000080F506400A53697A652E57696474680500000000000000A00340
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C740800000000005450463007544C61796F75740009
+ 5374796C654E616D650613657870616E646572627574746F6E7374796C650541
+ 6C69676E070643656E7465720B4D617267696E732E546F700500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000B003400B53697A652E48
+ 65696768740500000000000000B003401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C65080005545061746800095374796C654E616D
+ 650605506174683105416C69676E070643656E74657209446174612E50617468
+ 0A3400000004000000000000000000C8420000C84201000000000096430000C8
+ 42010000000000484300009643030000000000C8420000C8420A46696C6C2E43
+ 6F6C6F720708636C6157686974650748697454657374080D526F746174696F6E
+ 416E676C650500000000000000B405400A53697A652E57696474680500000000
+ 000000A002400B53697A652E4865696768740500000000000000C00140145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54466C6F6174416E696D6174696F6E00095374796C654E616D
+ 650614466C6F6174416E696D6174696F6E315374796C65084475726174696F6E
+ 050000000000CDCCCCFB3F0D496E746572706F6C6174696F6E07084369726375
+ 6C61720C50726F70657274794E616D65060D526F746174696F6E416E676C650A
+ 537461727456616C75650500000000000000B405400953746F7056616C756505
+ 000000000000000000000754726967676572060F4973457870616E6465643D74
+ 7275650E54726967676572496E766572736506104973457870616E6465643D66
+ 616C7365000000005450463007544C61796F757400095374796C654E616D6506
+ 15657870616E646572636865636B626F787374796C6505416C69676E07064365
+ 6E7465720A53697A652E576964746805000000000000008406400B53697A652E
+ 48656967687405000000000000008404401453697A652E506C6174666F726D44
+ 656661756C74080756697369626C65080007544C61796F75740005416C69676E
+ 07044C6566740A53697A652E57696474680500000000000000C003400B53697A
+ 652E48656967687405000000000000008404401453697A652E506C6174666F72
+ 6D44656661756C7408000554506174680005416C69676E0706436C69656E7409
+ 446174612E506174680AD80100002700000000000000FEC8BA4402E792440200
+ 00002592AD4402E79244020000006D5BA544FEB09E44020000006D5BA544FEB0
+ 9E440200000093A4A4446A0C9F44020000004A80AC44FC79AA4402000000046E
+ BA44FC79AA44020000004A00C844FC79AA44020000000080CF44FEB09E440200
+ 00000080CF44FEB09E44020000000080CF44FEB09E44020000004C5BC84402E7
+ 924402000000FEC8BA4402E7924400000000FE88BA44FE30974402000000B876
+ BF44FE309744020000000277C344EEA09A44020000000277C34404DE9E440200
+ 00000277C344121BA34402000000B876BF44008CA64402000000FE88BA44008C
+ A644020000004C9BB544008CA64402000000009CB144121BA34402000000009C
+ B14404DE9E4402000000009CB144EEA09A44020000004C9BB544FE3097440200
+ 0000FE88BA44FE309744000000000080BA44045E9B4402000000146EB844045E
+ 9B440200000000C0B64454F79C440200000000C0B64400F09E440200000000C0
+ B644ACE8A04402000000146EB844FC81A244020000000080BA44FC81A2440200
+ 0000EC91BC44FC81A244020000000040BE44ACE8A044020000000040BE4400F0
+ 9E44020000000040BE4454F79C4402000000EC91BC44045E9B44020000000080
+ BA44045E9B440A46696C6C2E436F6C6F72070978363030303030303007486974
+ 54657374080C4D617267696E732E4C65667405000000000000008000400B4D61
+ 7267696E732E546F7005000000000000008000400D4D617267696E732E526967
+ 687405000000000000008000400E4D617267696E732E426F74746F6D05000000
+ 000000008000400A53697A652E57696474680500000000000000A003400B5369
+ 7A652E4865696768740500000000000000E803401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
+ 704D6F64650703466974000F54436F6C6F72416E696D6174696F6E0008447572
+ 6174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D65060A46
+ 696C6C2E436F6C6F720A537461727456616C7565070978363030303030303009
+ 53746F7056616C75650708636C61426C61636B0754726967676572060E497343
+ 6865636B65643D7472756500000F54436F6C6F72416E696D6174696F6E000844
+ 75726174696F6E050000000000CDCCCCFB3F0C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C75650708636C61426C61636B
+ 0953746F7056616C756507097836303030303030300754726967676572060F49
+ 73436865636B65643D66616C73650000000005545465787400095374796C654E
+ 616D6506047465787405416C69676E0706436C69656E74064C6F636B65640907
+ 48697454657374080C4D617267696E732E4C6566740500000000000000800240
+ 0B4D617267696E732E546F7005000000000000008000400D4D617267696E732E
+ 5269676874050000000000000080FF3F0A53697A652E57696474680500000000
+ 000000C605400B53697A652E4865696768740500000000000000F80340145369
+ 7A652E506C6174666F726D44656661756C7408165465787453657474696E6773
+ 2E466F6E74436F6C6F720709784646454545454545165465787453657474696E
+ 67732E486F727A416C69676E07074C656164696E670000005450463007544C61
+ 796F757400095374796C654E616D65060E6C6162656C66696C6C7374796C6505
+ 416C69676E070643656E7465720A53697A652E57696474680500000000000000
+ C805400B53697A652E4865696768740500000000000000C803401453697A652E
+ 506C6174666F726D44656661756C74080756697369626C6508000A5452656374
+ 616E676C6500095374796C654E616D65060A52656374616E676C653105416C69
+ 676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464631353135
+ 31350A53697A652E57696474680500000000000000C805400B53697A652E4865
+ 696768740500000000000000C803401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000005545465787400
+ 095374796C654E616D6506047465787405416C69676E0708436F6E74656E7473
+ 0748697454657374080A53697A652E57696474680500000000000000C805400B
+ 53697A652E4865696768740500000000000000C803401453697A652E506C6174
+ 666F726D44656661756C7408165465787453657474696E67732E466F6E74436F
+ 6C6F720708636C6157686974650000005450463007544C61796F757400095374
+ 796C654E616D650613636F6D626F656469746572726F727374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C80540
+ 0B53697A652E4865696768740500000000000000C803401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000C5442727573684F62
+ 6A65637400095374796C654E616D65060A666F726567726F756E6400000B5446
+ 6F6E744F626A65637400095374796C654E616D650604666F6E7409466F6E742E
+ 53697A650500000000000000D00240000007544C61796F757400095374796C65
+ 4E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E7473
+ 0A53697A652E57696474680500000000000000C805400B53697A652E48656967
+ 68740500000000000000C803401453697A652E506C6174666F726D4465666175
+ 6C7408000A5452656374616E676C6500095374796C654E616D65060A52656374
+ 616E676C653105416C69676E0706436C69656E740A46696C6C2E436F6C6F7207
+ 097846463230323032300748697454657374080A53697A652E57696474680500
+ 000000000000C805400B53697A652E4865696768740500000000000000C80340
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F720709784646323032303230000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650614436F6C6F72416E696D6174696F6E315374796C65
+ 084475726174696F6E050000000000000000000007496E7665727365090C5072
+ 6F70657274794E616D65060C5374726F6B652E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572062049734D6F7573654F7665723D747275653B4973
+ 466F63757365643D66616C73650E54726967676572496E766572736506214973
+ 4D6F7573654F7665723D66616C73653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D650614436F
+ 6C6F72416E696D6174696F6E325374796C65084475726174696F6E0500000000
+ 00000000000007496E7665727365090C50726F70657274794E616D65060C5374
+ 726F6B652E436F6C6F720A537461727456616C75650709784646343034303430
+ 0953746F7056616C756507097846464532324132410754726967676572061F49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062049734D6F7573654F7665723D747275653B
+ 4973466F63757365643D66616C7365000007544C61796F757400095374796C65
+ 4E616D6506056172726F7705416C69676E070846697452696768740B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E580500000000005ED99705400A506F7369
+ 74696F6E2E59050000000000000080FF3F0A53697A652E576964746805000000
+ 0000889AB803400B53697A652E4865696768740500000000000000B803401453
+ 697A652E506C6174666F726D44656661756C7408000A5452656374616E676C65
+ 00095374796C654E616D65060A52656374616E676C653105416C69676E070843
+ 6F6E74656E74730A46696C6C2E436F6C6F720709784646333033303330074869
+ 7454657374080A53697A652E5769647468050000000000889AB803400B53697A
+ 652E4865696768740500000000000000B803401453697A652E506C6174666F72
+ 6D44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E
+ 696D6174696F6E315374796C65084475726174696F6E05000000000000000000
+ 0007496E7665727365090C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463330333033300953746F705661
+ 6C756507097846463430343034300754726967676572062049734D6F7573654F
+ 7665723D747275653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365062149734D6F7573654F7665723D66616C73653B4973466F63
+ 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650614436F6C6F72416E696D6174696F6E325374796C65084475
+ 726174696F6E05000000000000000000000C50726F70657274794E616D65060A
+ 46696C6C2E436F6C6F720A537461727456616C75650709784646343034303430
+ 0953746F7056616C756507097846463943313731370754726967676572061F49
+ 73466F63757365643D747275653B49734D6F7573654F7665723D747275650000
+ 0007544C61796F757400095374796C654E616D6506074C61796F75743105416C
+ 69676E070643656E7465720C4D617267696E732E4C6566740500000000000000
+ 80FF3F0A53697A652E57696474680500000000000000A002400B53697A652E48
+ 65696768740500000000000000C001401453697A652E506C6174666F726D4465
+ 6661756C74080005545061746800095374796C654E616D650605506174683105
+ 416C69676E0706436C69656E7409446174612E506174680A3400000004000000
+ 000000000000C8420000C84201000000000096430000C8420100000000004843
+ 00009643030000000000C8420000C8420A46696C6C2E436F6C6F720708636C61
+ 57686974650748697454657374080A53697A652E576964746805000000000000
+ 00A002400B53697A652E4865696768740500000000000000C001401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E650000000000000C5442727573684F626A65637400095374796C654E616D
+ 65060973656C656374696F6E0B42727573682E436F6C6F720709783936324138
+ 324532000007544C61796F757400095374796C654E616D650607636F6E74656E
+ 7405416C69676E0706436C69656E740C4D617267696E732E4C65667405000000
+ 000000008000400B4D617267696E732E546F7005000000000000008000400D4D
+ 617267696E732E52696768740500000000000000F003400E4D617267696E732E
+ 426F74746F6D05000000000000008000400A53697A652E576964746805000000
+ 000000008805400B53697A652E4865696768740500000000000000A803401453
+ 697A652E506C6174666F726D44656661756C74080000005450463007544C6179
+ 6F757400095374796C654E616D65061E70726F6772657373626172696E646574
+ 65726D696E61626C657374796C6505416C69676E070643656E7465720A53697A
+ 652E5769647468050000000000ABAAB006400B53697A652E4865696768740500
+ 000000000000C003401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 0676747261636B05416C69676E0708436F6E74656E747307456E61626C656408
+ 0A46696C6C2E436F6C6F720709784646323032303230064C6F636B6564090748
+ 697454657374080A53697A652E57696474680500000000000000E006400B5369
+ 7A652E48656967687405000000000000009404401453697A652E506C6174666F
+ 726D44656661756C74080C5374726F6B652E436F6C6F72070978464631353135
+ 31350756697369626C6508000A5452656374616E676C6500095374796C654E61
+ 6D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
+ 74696F6E2E590500000000000000F002400A53697A652E576964746805000000
+ 00000000DE06400B53697A652E4865696768740500000000000000A803401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E6500000007544C61796F757400095374796C654E616D6506066874
+ 7261636B05416C69676E0708436F6E74656E74730A53697A652E576964746805
+ 0000000000ABAAB006400B53697A652E4865696768740500000000000000C003
+ 401453697A652E506C6174666F726D44656661756C7408000A5452656374616E
+ 676C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E
+ 0708436F6E74656E74730C436C69704368696C6472656E090A46696C6C2E436F
+ 6C6F720709784646324138324532064C6F636B6564090748697454657374080A
+ 53697A652E5769647468050000000000ABAAB006400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080C5374726F6B652E436F6C6F720709784646313531353135000F54436F6C
+ 6F72416E696D6174696F6E00095374796C654E616D650614436F6C6F72416E69
+ 6D6174696F6E315374796C6507456E61626C656409084475726174696F6E0500
+ 000000000000800140044C6F6F70090C50726F70657274794E616D65060A4669
+ 6C6C2E436F6C6F720A537461727456616C756507097846463230323032300953
+ 746F7056616C756507097846463241383245320754726967676572060E497356
+ 697369626C653D7472756500000000005450463007544C61796F757400095374
+ 796C654E616D650611616E69696E64696361746F727374796C6505416C69676E
+ 070643656E7465720756697369626C650800045441726300095374796C654E61
+ 6D65060341726305416C69676E0708436F6E74656E7473074869745465737408
+ 0D526F746174696F6E416E676C650500000000000000B407400A53697A652E57
+ 696474680500000000000000C804400B53697A652E4865696768740500000000
+ 000000C804401453697A652E506C6174666F726D44656661756C74080C537472
+ 6F6B652E436F6C6F720708636C615768697465105374726F6B652E546869636B
+ 6E65737305000000000000008001400A5374726F6B652E4361700705526F756E
+ 640B5374726F6B652E4A6F696E0705426576656C08456E64416E676C65050000
+ 0000000000B405C0000F54466C6F6174416E696D6174696F6E00095374796C65
+ 4E616D650603616E6907456E61626C656409084475726174696F6E0500000000
+ 00000080FF3F044C6F6F70090C50726F70657274794E616D65060D526F746174
+ 696F6E416E676C650A537461727456616C756505000000000000000000000953
+ 746F7056616C75650500000000000000B407400754726967676572060E497356
+ 697369626C653D74727565000000005450463007544C61796F75740009537479
+ 6C654E616D650615616E69696E64696361746F72686F727A7374796C6505416C
+ 69676E070643656E7465720A53697A652E57696474680500000000000040C006
+ 400B53697A652E48656967687405000000000000008000401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508000A5452656374616E
+ 676C6500095374796C654E616D65060A52656374616E676C653105416C69676E
+ 0706436C69656E740C436C69704368696C6472656E090A46696C6C2E436F6C6F
+ 7207097846463430343034300A53697A652E57696474680500000000000040C0
+ 06400B53697A652E48656967687405000000000000008000401453697A652E50
+ 6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
+ 650005544C696E6500095374796C654E616D6506054C696E6531084C696E6554
+ 7970650706426F74746F6D0A53697A652E57696474680500000000000000A00B
+ 400B53697A652E48656967687405000000000000008000401453697A652E506C
+ 6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709784646
+ 324138324532105374726F6B652E546869636B6E657373050000000000000080
+ 02400B5374726F6B652E44617368070444617368000F54466C6F6174416E696D
+ 6174696F6E00095374796C654E616D650603616E6907456E61626C6564090844
+ 75726174696F6E0500000000000000800340044C6F6F70090C50726F70657274
+ 794E616D65060A506F736974696F6E2E580A537461727456616C756505000000
+ 00000000C808C00953746F7056616C7565050000000000000000000007547269
+ 67676572060E497356697369626C653D7472756500000000005450463007544C
+ 61796F757400095374796C654E616D65060A70616E656C7374796C6505416C69
+ 676E070643656E7465720A53697A652E57696474680500000000000000C00640
+ 0B53697A652E4865696768740500000000000000A406401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C6508000A5452656374616E67
+ 6C6500095374796C654E616D65060A6261636B67726F756E6405416C69676E07
+ 08436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032300A
+ 53697A652E57696474680500000000000000C006400B53697A652E4865696768
+ 740500000000000000A406401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E650000005450463007544C6179
+ 6F757400095374796C654E616D65060E6C6F67627574746F6E7374796C650541
+ 6C69676E070643656E7465720A53697A652E57696474680500000000000000C0
+ 05400B53697A652E4865696768740500000000000000C005401453697A652E50
+ 6C6174666F726D44656661756C74080756697369626C6508000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
+ 6E74090A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080A53697A652E57696474680500000000000000C005400B53697A652E4865
+ 696768740500000000000000C005401453697A652E506C6174666F726D446566
+ 61756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
+ 416E696D6174696F6E31084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463230323032300953746F7056616C7565070978464634303430
+ 34300754726967676572063049734D6F7573654F7665723D747275653B497350
+ 7265737365643D66616C73653B4973466F63757365643D66616C73650E547269
+ 67676572496E7665727365063149734D6F7573654F7665723D66616C73653B49
+ 73507265737365643D66616C73653B4973466F63757365643D66616C73650000
+ 0F54436F6C6F72416E696D6174696F6E00095374796C654E616D650615627574
+ 746F6E436F6C6F72416E696D6174696F6E32084475726174696F6E0500000000
+ 0000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A
+ 537461727456616C756507097846463430343034300953746F7056616C756507
+ 097846463137353739430754726967676572062F4973507265737365643D7472
+ 75653B49734D6F7573654F7665723D747275653B4973466F63757365643D6661
+ 6C736500000F54436F6C6F72416E696D6174696F6E00095374796C654E616D65
+ 0615627574746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E
+ 05000000000000000000000C50726F70657274794E616D65060A46696C6C2E43
+ 6F6C6F720A537461727456616C756507097846463241383245320953746F7056
+ 616C756507097846463137353739430754726967676572062E49735072657373
+ 65643D747275653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D747275650E54726967676572496E7665727365062F4973507265737365
+ 643D66616C73653B49734D6F7573654F7665723D747275653B4973466F637573
+ 65643D74727565000005545061746800095374796C654E616D65060550617468
+ 3105416C69676E0706436C69656E7409446174612E506174680A5C0200003200
+ 0000000000000000A841CDCCCC40010000000000A8410000C041010000000000
+ C03F0000C041010000000000C03F00000000010000009A996941000000000100
+ 00000000A841CDCCCC40030000000000A841CDCCCC400000000000009C410000
+ F04001000000000058410000F04001000000000058410000C03F010000000000
+ 40400000C03F01000000000040400000B4410100000000009C410000B4410100
+ 000000009C410000F0400300000000009C410000F04000000000000040410000
+ F04001000000000090400000F04001000000000090400000C040010000000000
+ 40410000C04001000000000040410000F04003000000000040410000F0400000
+ 0000000090400000104101000000000090410000104101000000000090410000
+ 2841010000000000904000002841010000000000904000001041030000000000
+ 9040000010410000000000009040000040410100000000009041000040410100
+ 0000000090410000584101000000000090400000584101000000000090400000
+ 4041030000000000904000004041000000000000904000007041010000000000
+ 9041000070410100000000009041000084410100000000009040000084410100
+ 0000000090400000704103000000000090400000704100000000000090400000
+ 9041010000000000904100009041010000000000904100009C41010000000000
+ 904000009C410100000000009040000090410300000000009040000090410000
+ 0000000070410000C04001000000333393410000C04001000000000070416666
+ 264001000000000070410000C04003000000000070410000C0400A46696C6C2E
+ 436F6C6F720708636C6157686974650748697454657374080C4D617267696E73
+ 2E4C6566740500000000000000A002400B4D617267696E732E546F7005000000
+ 00000000A002400D4D617267696E732E52696768740500000000000000A00240
+ 0E4D617267696E732E426F74746F6D0500000000000000A002400A53697A652E
+ 576964746805000000000000009805400B53697A652E48656967687405000000
+ 000000009805401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E6508577261704D6F64650703466974000000
+ 005450463007544C61796F757400095374796C654E616D65061470726F677265
+ 73736261726D696E697374796C6505416C69676E070643656E7465720A53697A
+ 652E576964746805000000000033338505400B53697A652E4865696768740500
+ 000000009999E104401453697A652E506C6174666F726D44656661756C740807
+ 56697369626C6508000A5452656374616E676C6500095374796C654E616D6506
+ 0668747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646343034303430064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C6500
+ 095374796C654E616D65060A68696E64696361746F7205416C69676E07044C65
+ 66740A46696C6C2E436F6C6F720709784646324138324532064C6F636B656409
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000009999E104401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
+ 000A5452656374616E676C6500095374796C654E616D65060676747261636B05
+ 416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F72070978464634
+ 3034303430064C6F636B6564090748697454657374080A53697A652E57696474
+ 6805000000000033338505400B53697A652E4865696768740500000000009999
+ E104401453697A652E506C6174666F726D44656661756C74080B5374726F6B65
+ 2E4B696E6407044E6F6E65000A5452656374616E676C6500095374796C654E61
+ 6D65060A76696E64696361746F7205416C69676E0706426F74746F6D0A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 7374080A506F736974696F6E2E5905000000000099998D04400A53697A652E57
+ 6964746805000000000033338505400B53697A652E4865696768740500000000
+ 000000A803401453697A652E506C6174666F726D44656661756C74080B537472
+ 6F6B652E4B696E6407044E6F6E65000000005450463007544C61796F75740009
+ 5374796C654E616D65061B7472656576696577657870616E646572627574746F
+ 6E7374796C6505416C69676E070643656E7465720B4D617267696E732E546F70
+ 050000000000000080FF3F0A53697A652E57696474680500000000000000B003
+ 400B53697A652E4865696768740500000000000000B003401453697A652E506C
+ 6174666F726D44656661756C74080756697369626C6508000554506174680009
+ 5374796C654E616D650605506174683105416C69676E070643656E7465720944
+ 6174612E506174680A3400000004000000000000000000C8420000C842010000
+ 00000096430000C842010000000000484300009643030000000000C8420000C8
+ 420A46696C6C2E436F6C6F720708636C6157686974650748697454657374080D
+ 526F746174696F6E416E676C650500000000000000B405C00A53697A652E5769
+ 6474680500000000000000A002400B53697A652E486569676874050000000000
+ 0000C001401453697A652E506C6174666F726D44656661756C74080B5374726F
+ 6B652E4B696E6407044E6F6E65000F54466C6F6174416E696D6174696F6E0009
+ 5374796C654E616D650614466C6F6174416E696D6174696F6E315374796C6508
+ 4475726174696F6E05000000000000000000000D496E746572706F6C6174696F
+ 6E070843697263756C61720C50726F70657274794E616D65060D526F74617469
+ 6F6E416E676C650A537461727456616C75650500000000000000B405C0095374
+ 6F7056616C756505000000000000000000000754726967676572060F49734578
+ 70616E6465643D747275650E54726967676572496E7665727365061049734578
+ 70616E6465643D66616C736500000000545046300A5452656374616E676C6500
+ 095374796C654E616D65061174726565766965776974656D7374796C6505416C
+ 69676E070643656E7465720946696C6C2E4B696E6407044E6F6E650748697454
+ 657374080553696465730B06426F74746F6D000A53697A652E57696474680500
+ 000000000000AE05400B53697A652E4865696768740500000000000000A00440
+ 1453697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F
+ 6C6F7207097846463135313531350756697369626C6508000C54537065656442
+ 7574746F6E00095374796C654E616D650606627574746F6E05416C69676E0704
+ 4C6566740A53697A652E57696474680500000000000000A003400B53697A652E
+ 4865696768740500000000000000A004401453697A652E506C6174666F726D44
+ 656661756C74080B5374796C654C6F6F6B7570061B7472656576696577657870
+ 616E646572627574746F6E7374796C65000007544C61796F75740005416C6967
+ 6E0708436F6E74656E74730C4D617267696E732E4C6566740500000000000000
+ A003400A53697A652E576964746805000000000000008605400B53697A652E48
+ 65696768740500000000000000A004401453697A652E506C6174666F726D4465
+ 6661756C7408000954436865636B426F7800095374796C654E616D6506056368
+ 65636B05416C69676E07044C6566740843616E466F637573081244697361626C
+ 65466F637573456666656374090A53697A652E57696474680500000000000000
+ A003400B53697A652E4865696768740500000000000000A004401453697A652E
+ 506C6174666F726D44656661756C740800000654476C79706800095374796C65
+ 4E616D65060A676C7970687374796C650C4D617267696E732E4C656674050000
+ 00000000008000400B4D617267696E732E546F70050000000000000080FF3F0D
+ 4D617267696E732E526967687405000000000000008000400E4D617267696E73
+ 2E426F74746F6D050000000000000080FF3F05416C69676E07044C6566740A50
+ 6F736974696F6E2E580500000000000000B003400A506F736974696F6E2E5905
+ 0000000000000080FF3F0A53697A652E57696474680500000000000000800340
+ 0B53697A652E48656967687405000000000000009804401453697A652E506C61
+ 74666F726D44656661756C7408000005545465787400095374796C654E616D65
+ 06047465787405416C69676E0706436C69656E74064C6F636B65640907486974
+ 54657374080A53697A652E57696474680500000000000000BC04400B53697A65
+ 2E4865696768740500000000000000A004401453697A652E506C6174666F726D
+ 44656661756C74080454657874060454657874165465787453657474696E6773
+ 2E466F6E74436F6C6F720708636C615768697465155465787453657474696E67
+ 732E576F72645772617008165465787453657474696E67732E486F727A416C69
+ 676E07074C656164696E670000000A5452656374616E676C650005416C69676E
+ 0708436F6E74656E74730946696C6C2E4B696E6407044E6F6E65074869745465
+ 7374080E4D617267696E732E426F74746F6D050000000000000080FF3F055369
+ 6465730B044C656674000A53697A652E57696474680500000000000000AE0540
+ 0B53697A652E48656967687405000000000000009C04401453697A652E506C61
+ 74666F726D44656661756C74080C5374726F6B652E436F6C6F72070978464632
+ 4138324532105374726F6B652E546869636B6E65737305000000000000008000
+ 400000005450463007544C61796F757400095374796C654E616D65060D747265
+ 65766965777374796C6505416C69676E070643656E7465720A53697A652E5769
+ 6474680500000000000000E106400B53697A652E486569676874050000000000
+ 00808107401453697A652E506C6174666F726D44656661756C74080756697369
+ 626C6508000C5442727573684F626A65637400095374796C654E616D65061841
+ 6C7465726E6174696E67526F774261636B67726F756E640B42727573682E436F
+ 6C6F72070978304646464646464600000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0708436F6E74656E
+ 74730A46696C6C2E436F6C6F720709784646323032303230064C6F636B656409
+ 0748697454657374080C50616464696E672E4C656674050000000000000080FF
+ 3F0D50616464696E672E5269676874050000000000000080FF3F0A53697A652E
+ 57696474680500000000000000E106400B53697A652E48656967687405000000
+ 000000808107401453697A652E506C6174666F726D44656661756C74080C5374
+ 726F6B652E436F6C6F7207097846463135313531350007544C61796F75740009
+ 5374796C654E616D650607636F6E74656E7405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090B4D617267696E732E546F70050000000000
+ 000080FF3F0A53697A652E57696474680500000000000000CD06400B53697A65
+ 2E4865696768740500000000000000F006401453697A652E506C6174666F726D
+ 44656661756C7408000A5452656374616E676C6500095374796C654E616D6506
+ 0973656C656374696F6E0A46696C6C2E436F6C6F720709784646324138324532
+ 0748697454657374080A53697A652E57696474680500000000000000C804400B
+ 53697A652E4865696768740500000000000000C804401453697A652E506C6174
+ 666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650000
+ 0A5452656374616E676C6500095374796C654E616D650610666F637573656473
+ 656C656374696F6E0A46696C6C2E436F6C6F7207097846463241383245320748
+ 697454657374080A53697A652E57696474680500000000000000C804400B5369
+ 7A652E4865696768740500000000000000C804401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E650B537472
+ 6F6B652E446173680703446F740000000A545363726F6C6C4261720009537479
+ 6C654E616D65060A767363726F6C6C62617205416C69676E070552696768740B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0C4D617267696E732E4C65667405000000000000
+ 008000400A506F736974696F6E2E580500000000000000D006400A53697A652E
+ 576964746805000000000000008003400B53697A652E48656967687405000000
+ 00000000F106401453697A652E506C6174666F726D44656661756C740800000A
+ 545363726F6C6C42617200095374796C654E616D65060A687363726F6C6C6261
+ 7205416C69676E0706426F74746F6D0B536D616C6C4368616E67650500000000
+ 0000000000000B4F7269656E746174696F6E070A486F72697A6F6E74616C0B4D
+ 617267696E732E546F7005000000000000008000400A506F736974696F6E2E58
+ 050000000000000080FF3F0A506F736974696F6E2E590500000000000000F306
+ 400A53697A652E57696474680500000000000000DF06400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C740800000F54536D616C6C5363726F6C6C42617200095374796C654E616D
+ 65060F76736D616C6C7363726F6C6C62617205416C69676E070552696768740B
+ 536D616C6C4368616E676505000000000000000000000B4F7269656E74617469
+ 6F6E0708566572746963616C0C4D617267696E732E4C65667405000000000000
+ 008000400A506F736974696F6E2E580500000000000000C605400A506F736974
+ 696F6E2E5905000000000000008000400A53697A652E57696474680500000000
+ 0000008002400B53697A652E4865696768740500000000000000800240145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C650800000F54
+ 536D616C6C5363726F6C6C42617200095374796C654E616D65060F68736D616C
+ 6C7363726F6C6C62617205416C69676E0706426F74746F6D0B536D616C6C4368
+ 616E676505000000000000000000000B4F7269656E746174696F6E070A486F72
+ 697A6F6E74616C0B4D617267696E732E546F7005000000000000008000400A50
+ 6F736974696F6E2E5805000000000000008000400A506F736974696F6E2E5905
+ 00000000000000E205400A53697A652E57696474680500000000000000960640
+ 0B53697A652E48656967687405000000000000008002401453697A652E506C61
+ 74666F726D44656661756C74080756697369626C650800000000545046300754
+ 4C61796F757400095374796C654E616D650619616374696F6E746F6F6C627574
+ 746F6E6D756C74697669657705416C69676E070643656E7465720A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C7408075669
+ 7369626C65080B46697865644865696768740232000654476C79706800095374
+ 796C654E616D65060A676C7970687374796C650C4D617267696E732E4C656674
+ 05000000000000009002400B4D617267696E732E546F70050000000000000090
+ 02400E4D617267696E732E426F74746F6D050000000000000090024005416C69
+ 676E07044C6566740A506F736974696F6E2E5805000000000000009002400A50
+ 6F736974696F6E2E5905000000000000009002400A53697A652E576964746805
+ 000000000000008004400B53697A652E48656967687405000000000000008004
+ 401453697A652E506C6174666F726D44656661756C740800000A545265637461
+ 6E676C6500095374796C654E616D65060A6261636B67726F756E6405416C6967
+ 6E0706436C69656E740C436C69704368696C6472656E090A436C697050617265
+ 6E74090A46696C6C2E436F6C6F72070978464632303230323007486974546573
+ 74080C4D617267696E732E4C6566740500000000000000C804C00A53697A652E
+ 57696474680500000000000000C805400B53697A652E48656967687405000000
+ 00000000C804401453697A652E506C6174666F726D44656661756C74080B5374
+ 726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D6174696F6E
+ 00095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F
+ 6E31084475726174696F6E05000000000000000000000C50726F70657274794E
+ 616D65060A46696C6C2E436F6C6F720A537461727456616C7565070978464632
+ 30323032300953746F7056616C75650709784646343034303430075472696767
+ 6572063049734D6F7573654F7665723D747275653B4973507265737365643D66
+ 616C73653B4973466F63757365643D66616C73650E54726967676572496E7665
+ 727365063149734D6F7573654F7665723D66616C73653B497350726573736564
+ 3D66616C73653B4973466F63757365643D66616C736500000F54436F6C6F7241
+ 6E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F72
+ 416E696D6174696F6E33084475726174696F6E05000000000000000000000C50
+ 726F70657274794E616D65060A46696C6C2E436F6C6F720A537461727456616C
+ 756507097846463241383245320953746F7056616C7565070978464631373537
+ 39430754726967676572062E4973507265737365643D747275653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D747275650E5472696767
+ 6572496E7665727365062F4973507265737365643D66616C73653B49734D6F75
+ 73654F7665723D747275653B4973466F63757365643D74727565000000055454
+ 65787400095374796C654E616D6506047465787405416C69676E0706436C6965
+ 6E740748697454657374080A53697A652E57696474680500000000000000C804
+ 400B53697A652E4865696768740500000000000000C804401453697A652E506C
+ 6174666F726D44656661756C7408045465787406045465787416546578745365
+ 7474696E67732E466F6E74436F6C6F720708636C615768697465000007544C61
+ 796F757400095374796C654E616D6506074C61796F75743205416C69676E0704
+ 4C6566740A53697A652E57696474680500000000000000C804400B53697A652E
+ 4865696768740500000000000000C804401453697A652E506C6174666F726D44
+ 656661756C74080005545061746800095374796C654E616D65060469636F6E05
+ 416C69676E070643656E74657209446174612E506174680A1801000017000000
+ 000000000000C03F0000C03F0100000000000000000000000100000000004040
+ 00000000010000000000C03F0000C03F030000000000C03F0000C03F00000000
+ 00009040000000000100000000004041000000000100000000004041CDCC4C3F
+ 0100000000009040CDCC4C3F0100000000009040000000000300000000009040
+ 0000000000000000000090403333734001000000000090400000404001000000
+ 0000404100004040010000000000404133337340010000000000904033337340
+ 03000000000090403333734000000000000090409A99D9400100000000009040
+ 0000C04001000000000040410000C04001000000000040419A99D94001000000
+ 000090409A99D94003000000000090409A99D9400A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 0000000000D003400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F64650703466974000000005450463007544C
+ 61796F757400095374796C654E616D65060E616464627574746F6E7374796C65
+ 05416C69676E070643656E7465720A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000C003401453697A65
+ 2E506C6174666F726D44656661756C74080756697369626C65080B4669786564
+ 4865696768740218000654476C79706800095374796C654E616D65060A676C79
+ 70687374796C650C4D617267696E732E4C65667405000000000000009002400B
+ 4D617267696E732E546F7005000000000000009002400E4D617267696E732E42
+ 6F74746F6D050000000000000090024005416C69676E07044C6566740A506F73
+ 6974696F6E2E5805000000000000009002400A506F736974696F6E2E59050000
+ 00000000009002400A53697A652E576964746805000000000000008004400B53
+ 697A652E48656967687405000000000000008004401453697A652E506C617466
+ 6F726D44656661756C740800000A5452656374616E676C6500095374796C654E
+ 616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C436C
+ 69704368696C6472656E090A436C6970506172656E74090A46696C6C2E436F6C
+ 6F7207097846463230323032300748697454657374080C4D617267696E732E4C
+ 6566740500000000000000C003C00A53697A652E576964746805000000000000
+ 00C805400B53697A652E4865696768740500000000000000C003401453697A65
+ 2E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E
+ 6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506
+ 15627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F6E05
+ 000000000000000000000C50726F70657274794E616D65060A46696C6C2E436F
+ 6C6F720A537461727456616C756507097846463230323032300953746F705661
+ 6C756507097846463430343034300754726967676572063049734D6F7573654F
+ 7665723D747275653B4973507265737365643D66616C73653B4973466F637573
+ 65643D66616C73650E54726967676572496E7665727365063149734D6F757365
+ 4F7665723D66616C73653B4973507265737365643D66616C73653B4973466F63
+ 757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00095374
+ 796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E330844
+ 75726174696F6E05000000000000000000000C50726F70657274794E616D6506
+ 0A46696C6C2E436F6C6F720A537461727456616C756507097846463241383245
+ 320953746F7056616C756507097846463137353739430754726967676572062E
+ 4973507265737365643D747275653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D747275650E54726967676572496E7665727365062F49
+ 73507265737365643D66616C73653B49734D6F7573654F7665723D747275653B
+ 4973466F63757365643D7472756500000005545465787400095374796C654E61
+ 6D6506047465787405416C69676E0706436C69656E740748697454657374080A
+ 53697A652E576964746805000000000000009805400B53697A652E4865696768
+ 740500000000000000C003401453697A652E506C6174666F726D44656661756C
+ 74080454657874060454657874165465787453657474696E67732E466F6E7443
+ 6F6C6F720708636C615768697465000007544C61796F757400095374796C654E
+ 616D6506074C61796F75743205416C69676E07044C6566740A53697A652E5769
+ 6474680500000000000000C003400B53697A652E486569676874050000000000
+ 0000C003401453697A652E506C6174666F726D44656661756C74080005545061
+ 746800095374796C654E616D65060469636F6E05416C69676E0708436F6E7465
+ 6E747309446174612E506174680AAC0000000E00000000000000CDCC34410000
+ C040010000000000C0400000C040010000000000C040CDCC3441010000009A99
+ A940CDCC3441010000009A99A9400000C04001000000000000000000C0400100
+ 0000000000009A99A940010000009A99A9409A99A940010000009A99A9400000
+ 0000010000000000C04000000000010000000000C0409A99A94001000000CDCC
+ 34419A99A94001000000CDCC34410000C04003000000CDCC34410000C0400A46
+ 696C6C2E436F6C6F720708636C6157686974650748697454657374080C4D6172
+ 67696E732E4C65667405000000000000008001400B4D617267696E732E546F70
+ 05000000000000008001400D4D617267696E732E526967687405000000000000
+ 008001400E4D617267696E732E426F74746F6D05000000000000008001400A53
+ 697A652E576964746805000000000000008003400B53697A652E486569676874
+ 05000000000000008003401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507034669
+ 74000000005450463007544C61796F757400095374796C654E616D650617696E
+ 666F746F6F6C627574746F6E6D756C74697669657705416C69676E070643656E
+ 7465720A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C65080B46697865644865696768740232000654
+ 476C79706800095374796C654E616D65060A676C7970687374796C650C4D6172
+ 67696E732E4C65667405000000000000009002400B4D617267696E732E546F70
+ 05000000000000009002400E4D617267696E732E426F74746F6D050000000000
+ 000090024005416C69676E07044C6566740A506F736974696F6E2E5805000000
+ 000000009002400A506F736974696F6E2E5905000000000000009002400A5369
+ 7A652E576964746805000000000000008004400B53697A652E48656967687405
+ 000000000000008004401453697A652E506C6174666F726D44656661756C7408
+ 00000A5452656374616E676C6500095374796C654E616D65060A6261636B6772
+ 6F756E6405416C69676E0706436C69656E740C436C69704368696C6472656E09
+ 0A436C6970506172656E74090A46696C6C2E436F6C6F72070978464632303230
+ 32300748697454657374080C4D617267696E732E4C6566740500000000000000
+ C804C00A53697A652E57696474680500000000000000C805400B53697A652E48
+ 65696768740500000000000000C804401453697A652E506C6174666F726D4465
+ 6661756C74080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72
+ 416E696D6174696F6E00095374796C654E616D650615627574746F6E436F6C6F
+ 72416E696D6174696F6E31084475726174696F6E05000000000000000000000C
+ 50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172745661
+ 6C756507097846463230323032300953746F7056616C75650709784646343034
+ 3034300754726967676572063049734D6F7573654F7665723D747275653B4973
+ 507265737365643D66616C73653B4973466F63757365643D66616C73650E5472
+ 6967676572496E7665727365063149734D6F7573654F7665723D66616C73653B
+ 4973507265737365643D66616C73653B4973466F63757365643D66616C736500
+ 000F54436F6C6F72416E696D6174696F6E00095374796C654E616D6506156275
+ 74746F6E436F6C6F72416E696D6174696F6E33084475726174696F6E05000000
+ 000000000000000C50726F70657274794E616D65060A46696C6C2E436F6C6F72
+ 0A537461727456616C756507097846463241383245320953746F7056616C7565
+ 07097846463137353739430754726967676572062E4973507265737365643D74
+ 7275653B49734D6F7573654F7665723D747275653B4973466F63757365643D74
+ 7275650E54726967676572496E7665727365062F4973507265737365643D6661
+ 6C73653B49734D6F7573654F7665723D747275653B4973466F63757365643D74
+ 72756500000005545465787400095374796C654E616D6506047465787405416C
+ 69676E0706436C69656E740748697454657374080A53697A652E576964746805
+ 00000000000000C804400B53697A652E4865696768740500000000000000C804
+ 401453697A652E506C6174666F726D44656661756C7408045465787406045465
+ 7874165465787453657474696E67732E466F6E74436F6C6F720708636C615768
+ 697465000007544C61796F757400095374796C654E616D6506074C61796F7574
+ 3205416C69676E07044C6566740A53697A652E57696474680500000000000000
+ C804400B53697A652E4865696768740500000000000000C804401453697A652E
+ 506C6174666F726D44656661756C74080005545061746800095374796C654E61
+ 6D65060469636F6E05416C69676E070643656E74657209446174612E50617468
+ 0A84070000A0000000000000009A9987429A99074302000000010076429A9907
+ 430200000001005E42CDCC064302000000343347423433054302000000010030
+ 429A9903430200000067661A42CE4C01430200000067660642CECCFC42020000
+ 00CECCE4410100F742020000000100C041CECCEF420200000034339F419B99E7
+ 4202000000CECC7C416866DF4202000000353343413533D64202000000CECC14
+ 413533CC42020000009A99C9400000C24202000000000080403333B742020000
+ 009A991940CDCCAB4202000000CDCC4C3F3333A0420200000000000000333394
+ 4202000000000000009A99874202000000000000000100764202000000CDCC4C
+ 3F01005E42020000009A991940CECC4642020000000000804000003042020000
+ 009A99C94066661A42020000003333134166660642020000009A994141CCCCE4
+ 410200000033337B41FFFFBF410200000066669E4132339F41020000003333BF
+ 41CACC7C41020000000000E441313343410200000000000642CACC1441020000
+ 0066661A429A99C94002000000000030420000804002000000333347429A9919
+ 400200000000005E42CDCC4C3F020000006666764200000000020000009A9987
+ 4200000000020000003433944200000000020000003433A042CDCC4C3F020000
+ 00CDCCAB429A991940020000003333B74200008040020000000000C2429A99C9
+ 40020000003333CC4233331341020000003333D6429A994141020000006666DF
+ 4233337B41020000009999E74266669E4102000000CCCCEF423333BF41020000
+ 00FFFFF6420000E44102000000CCCCFC420000064202000000CC4C014300001A
+ 4202000000999903439A992F420200000033330543CDCC464202000000CDCC06
+ 4300005E4202000000999907430000764202000000999907439A998742020000
+ 00999907433433944202000000CCCC06433433A0420200000033330543CDCCAB
+ 4202000000999903436766B74202000000CD4C01433333C24202000000CCCCFC
+ 423433CC4202000000FFFFF6423433D64202000000CCCCEF426766DF42020000
+ 009999E7429A99E742020000006666DF42CDCCEF42020000003333D6420000F7
+ 42020000003333CC42CDCCFC42020000003333C242CD4C0143020000006666B7
+ 429A99034302000000CCCCAB4233330543020000003333A042CDCC0643020000
+ 00333394429A990743020000009A9987429A990743030000009A9987429A9907
+ 43000000009A99874200001041020000009A9979420000104102000000CECC64
+ 4233331B4102000000CECC50429A99314102000000CECC3C4200004841020000
+ 0001002A420000684102000000CECC184200008841020000003433074200009C
+ 41020000003633EF41CDCCB441020000006966D2419A99D141020000009C99B5
+ 416766EE41020000009C999D41CDCC064202000000D0CC884166661842020000
+ 00A099694100002A4202000000A099494166663C42020000003A333341CCCC50
+ 420200000033331B4133336542020000000000104100007A4202000000000010
+ 419A9987420200000000001041343392420200000033331B41CDCC9C42020000
+ 009A993141CDCCA6420200000000004841CDCCB04202000000000068413333BA
+ 4202000000000088410000C3420200000000009C41CDCCCB4202000000CDCCB4
+ 419A99D342020000009A99D141CDCCDA42020000006766EE410000E242020000
+ 00CDCC06420000E84202000000666618423333ED420200000000002A423333F2
+ 420200000066663C423333F64202000000666650420000F94202000000666664
+ 42CDCCFB4202000000333379423333FD4202000000666687423333FD42020000
+ 00333392423333FD420200000099999C42CDCCFB42020000009999A6420000F9
+ 42020000009999B0423333F64202000000FFFFB9423333F24202000000CCCCC2
+ 423333ED42020000009999CB423333E842020000006666D3420000E242020000
+ 009999DA42CDCCDA4202000000CCCCE1429A99D34202000000CCCCE742CDCCCB
+ 4202000000FFFFEC420000C34202000000FFFFF1423333BA4202000000FFFFF5
+ 420000B14202000000CCCCF8420000A742020000009999FB4200009D42020000
+ 00FFFFFC429A99924202000000FFFFFC42CDCC874202000000FFFFFC4200007A
+ 42020000009999FB423433654202000000CCCCF8423433514202000000FFFFF5
+ 4234333D4202000000FFFFF14267662A4202000000FFFFEC42CECC1842020000
+ 00FFFFE7423433074202000000CCCCE1423633EF41020000009999DA426966D2
+ 41020000006666D3429C99B541020000009999CB429C999D4102000000CCCCC2
+ 42D0CC884102000000FFFFB942A099694102000000CCCCB042A0994941020000
+ 009999A6423A33334102000000CDCC9C4233331B410200000066669242000010
+ 41020000009A99874200001041030000009A998742000010410000000033337D
+ 42CDCC1042010000009A999042CDCC1042010000009A999042CDCC3442010000
+ 0034337D42CDCC34420100000034337D42CDCC10420300000033337D42CDCC10
+ 420000000033337D4233335942010000009A99904233335942010000009A9990
+ 420000C7420100000034337D420000C7420100000034337D4233335942030000
+ 0033337D42333359420A46696C6C2E436F6C6F720708636C6157686974650748
+ 697454657374080A53697A652E57696474680500000000000000D003400B5369
+ 7A652E4865696768740500000000000000E003401453697A652E506C6174666F
+ 726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E6508577261
+ 704D6F64650703466974000000005450463007544C61796F757400095374796C
+ 654E616D65061B6F7267616E697A65746F6F6C627574746F6E6D756C74697669
+ 657705416C69676E070643656E7465720A53697A652E57696474680500000000
+ 000000C805400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C65080B466978
+ 65644865696768740232000654476C79706800095374796C654E616D65060A67
+ 6C7970687374796C650C4D617267696E732E4C65667405000000000000009002
+ 400B4D617267696E732E546F7005000000000000009002400E4D617267696E73
+ 2E426F74746F6D050000000000000090024005416C69676E07044C6566740A50
+ 6F736974696F6E2E5805000000000000009002400A506F736974696F6E2E5905
+ 000000000000009002400A53697A652E57696474680500000000000000800440
+ 0B53697A652E48656967687405000000000000008004401453697A652E506C61
+ 74666F726D44656661756C740800000A5452656374616E676C6500095374796C
+ 654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E740C
+ 436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E43
+ 6F6C6F7207097846463230323032300748697454657374080C4D617267696E73
+ 2E4C6566740500000000000000C804C00A53697A652E57696474680500000000
+ 000000C805400B53697A652E4865696768740500000000000000C80440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E616D
+ 650615627574746F6E436F6C6F72416E696D6174696F6E31084475726174696F
+ 6E05000000000000000000000C50726F70657274794E616D65060A46696C6C2E
+ 436F6C6F720A537461727456616C756507097846463230323032300953746F70
+ 56616C756507097846463430343034300754726967676572063049734D6F7573
+ 654F7665723D747275653B4973507265737365643D66616C73653B4973466F63
+ 757365643D66616C73650E54726967676572496E7665727365063149734D6F75
+ 73654F7665723D66616C73653B4973507265737365643D66616C73653B497346
+ 6F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E0009
+ 5374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E33
+ 084475726174696F6E05000000000000000000000C50726F70657274794E616D
+ 65060A46696C6C2E436F6C6F720A537461727456616C75650709784646324138
+ 3245320953746F7056616C756507097846463137353739430754726967676572
+ 062E4973507265737365643D747275653B49734D6F7573654F7665723D747275
+ 653B4973466F63757365643D747275650E54726967676572496E766572736506
+ 2F4973507265737365643D66616C73653B49734D6F7573654F7665723D747275
+ 653B4973466F63757365643D7472756500000005545465787400095374796C65
+ 4E616D6506047465787405416C69676E0706436C69656E740748697454657374
+ 080A53697A652E57696474680500000000000000C804400B53697A652E486569
+ 6768740500000000000000C804401453697A652E506C6174666F726D44656661
+ 756C7408165465787453657474696E67732E466F6E74436F6C6F720708636C61
+ 5768697465000007544C61796F757400095374796C654E616D6506074C61796F
+ 75743205416C69676E07044C6566740A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080005545061746800095374796C65
+ 4E616D65060469636F6E05416C69676E070643656E74657209446174612E5061
+ 74680AD000000011000000000000009A99E9409A99C940010000006666664066
+ 661E4101000000000000009A99C940010000000000003F9A99B94001000000CD
+ CC4C409A99094101000000CDCC4C400000000001000000000080400000000001
+ 0000000000804000000841010000006666D6406666B640010000009A99E9409A
+ 99C940030000009A99E9409A99C940000000009A99993E00004041010000009A
+ 99993E33333341010000000000E04033333341010000000000E0400000404101
+ 0000009A99993E00004041030000009A99993E000040410A46696C6C2E436F6C
+ 6F720708636C6157686974650748697454657374080A53697A652E5769647468
+ 0500000000000000D003400B53697A652E4865696768740500000000000000E0
+ 03401453697A652E506C6174666F726D44656661756C74080B5374726F6B652E
+ 4B696E6407044E6F6E6508577261704D6F646507034669740000000054504630
+ 07544C61796F757400095374796C654E616D65061B73657474696E6773746F6F
+ 6C627574746F6E6D756C74697669657705416C69676E070643656E7465720A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080756697369626C65080B46697865644865696768740232000654476C797068
+ 00095374796C654E616D65060A676C7970687374796C650C4D617267696E732E
+ 4C65667405000000000000009002400B4D617267696E732E546F700500000000
+ 0000009002400E4D617267696E732E426F74746F6D0500000000000000900240
+ 05416C69676E07044C6566740A506F736974696F6E2E58050000000000000090
+ 02400A506F736974696F6E2E5905000000000000009002400A53697A652E5769
+ 64746805000000000000008004400B53697A652E486569676874050000000000
+ 00008004401453697A652E506C6174666F726D44656661756C740800000A5452
+ 656374616E676C6500095374796C654E616D65060A6261636B67726F756E6405
+ 416C69676E0706436C69656E740C436C69704368696C6472656E090A436C6970
+ 506172656E74090A46696C6C2E436F6C6F720709784646323032303230074869
+ 7454657374080C4D617267696E732E4C6566740500000000000000C804C00A53
+ 697A652E57696474680500000000000000C805400B53697A652E486569676874
+ 0500000000000000C804401453697A652E506C6174666F726D44656661756C74
+ 080B5374726F6B652E4B696E6407044E6F6E65000F54436F6C6F72416E696D61
+ 74696F6E00095374796C654E616D650615627574746F6E436F6C6F72416E696D
+ 6174696F6E31084475726174696F6E05000000000000000000000C50726F7065
+ 7274794E616D65060A46696C6C2E436F6C6F720A537461727456616C75650709
+ 7846463230323032300953746F7056616C756507097846463430343034300754
+ 726967676572063049734D6F7573654F7665723D747275653B49735072657373
+ 65643D66616C73653B4973466F63757365643D66616C73650E54726967676572
+ 496E7665727365063149734D6F7573654F7665723D66616C73653B4973507265
+ 737365643D66616C73653B4973466F63757365643D66616C736500000F54436F
+ 6C6F72416E696D6174696F6E00095374796C654E616D650615627574746F6E43
+ 6F6C6F72416E696D6174696F6E33084475726174696F6E050000000000000000
+ 00000C50726F70657274794E616D65060A46696C6C2E436F6C6F720A53746172
+ 7456616C756507097846463241383245320953746F7056616C75650709784646
+ 3137353739430754726967676572062E4973507265737365643D747275653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650E54
+ 726967676572496E7665727365062F4973507265737365643D66616C73653B49
+ 734D6F7573654F7665723D747275653B4973466F63757365643D747275650000
+ 0005545465787400095374796C654E616D6506047465787405416C69676E0706
+ 436C69656E740748697454657374080A53697A652E5769647468050000000000
+ 0000C804400B53697A652E4865696768740500000000000000C804401453697A
+ 652E506C6174666F726D44656661756C74080454657874060454657874165465
+ 787453657474696E67732E466F6E74436F6C6F720708636C6157686974650000
+ 07544C61796F757400095374796C654E616D6506074C61796F75743205416C69
+ 676E07044C6566740A53697A652E57696474680500000000000000C804400B53
+ 697A652E4865696768740500000000000000C804401453697A652E506C617466
+ 6F726D44656661756C74080005545061746800095374796C654E616D65060469
+ 636F6E05416C69676E070643656E74657209446174612E506174680A540D0000
+ 1C01000000000000333351423333E7410200000033335142CDCCE84102000000
+ 333351426666EA4102000000333351423333EB410200000033335142CDCCEC41
+ 02000000333351426666EE4102000000333351423333EF410200000033335142
+ CDCCF04102000000333351426666F24102000000333351423333F34102000000
+ 33335142CDCCF44102000000333351426666F64102000000333351423333F741
+ 0100000099996F4266660E4201000000CDCC5C4200003C420100000000003A42
+ 0000344202000000000038420000364202000000000036420000384202000000
+ 0000344200003A420100000000003C42CDCC5C4201000000CDCC0E429A996F42
+ 010000000000F84133335142020000006666F6413333514202000000CDCCF441
+ 33335142020000000000F44133335142020000006666F2413333514202000000
+ CDCCF04133335142020000000000F04133335142020000006666EE4133335142
+ 02000000CDCCEC4133335142020000000000EC4133335142020000006666EA41
+ 3333514202000000CDCCE84133335142020000000000E8413333514201000000
+ 6666C24199996F4201000000FFFF4F41CCCC5C4201000000FFFF6F41FFFF3942
+ 02000000FFFF6741FFFF374202000000FFFF5F41FFFF354202000000FFFF5741
+ FFFF33420100000098999940FFFF3B420100000000000000CDCC0E4201000000
+ 3333F3400000F841020000003333F3406666F641020000003333F340CDCCF441
+ 020000003333F3400000F441020000003333F3406666F241020000003333F340
+ CDCCF041020000003333F3400000F041020000003333F3406666EE4102000000
+ 3333F340CDCCEC41020000003333F3400000EC41020000003333F3406666EA41
+ 020000003333F340CDCCE841020000003333F3400000E8410100000000000000
+ CDCCC0410100000066669640CDCC4C410100000066665641CDCC6C4102000000
+ 66665E41CDCC64410200000066666641CDCC5C410200000066666E41CDCC5441
+ 0100000066664E413433934001000000CDCCC04100000000010000006666E641
+ 3333F340020000000000E8413333F340020000009999E9413333F34002000000
+ 6666EA413333F340020000000000EC413333F340020000009999ED413333F340
+ 020000006666EE413333F340020000000000F0413333F340020000009999F141
+ 3333F340020000006666F2413333F340020000000000F4413333F34002000000
+ 9999F5413333F340020000006666F6413333F34001000000CDCC0E4200000000
+ 0100000000003C42666696400100000000003442666656410200000000003642
+ 66665E410200000000003842666666410200000000003A4266666E4101000000
+ CDCC5C4266664E41010000009A996F429A99C14101000000333351423333E741
+ 03000000333351423333E7410000000033334342CDCC02420200000033334342
+ CDCC004202000000999943426766FE4102000000999943426766FA4102000000
+ 999943426766F64102000000FFFF43423433F34102000000FFFF43423433EF41
+ 02000000FFFF43423433EB4102000000FFFF43420100E8410200000099994342
+ 0100E44102000000999943420100E0410200000033334342CECCDC4102000000
+ 33334342CECCD84101000000CDCC5E426866B64101000000CDCC54429B998541
+ 01000000CDCC3442CECC9441020000006766324234338F410200000000003042
+ 9B9989410200000033332D42010084410200000066662A42CECC7C4102000000
+ 000028423533734102000000CDCC24429C9969410100000067662C423833D340
+ 0100000001001442383383400100000067660242020030410200000067660042
+ 02003041020000009B99FD4168662E41020000009B99F94168662E4102000000
+ 9B99F54168662E41020000006866F241CECC2C41020000006866EE41CECC2C41
+ 020000006866EA41CECC2C41020000003533E741CECC2C41020000003533E341
+ 68662E41020000003533DF4168662E41020000000200DC410200304102000000
+ 0200D84102003041010000009C99B5413733834001000000CFCC84413733D340
+ 01000000020094419C9969410200000068668E413633734102000000CFCC8841
+ CFCC7C410200000035338341010084410200000036337B419A99894102000000
+ 9D99714167668E410200000004006841CECC9441010000000800D0409B998541
+ 01000000080080406866B641010000006A662E419B99D941020000006A662E41
+ 9B99DD4102000000D0CC2C41CECCE04102000000D0CC2C41CECCE44102000000
+ D0CC2C41CECCE8410200000036332B410100EC410200000036332B410100F041
+ 0200000036332B410100F4410200000036332B413433F74102000000D0CC2C41
+ 3433FB4102000000D0CC2C413433FF41020000006A662E413433014202000000
+ 6A662E4134330342010000000700804067661442010000000700D040CDCC2C42
+ 010000000400684133332542020000009E997141000028420200000037337B41
+ CDCC2A42020000003533834199992D4202000000CECC88416566304202000000
+ 9B998D41CCCC324202000000020094413333354201000000CFCC844133335542
+ 010000009C99B54133335F4201000000CFCCD8419999434202000000CFCCDC41
+ 99994342020000000200E041FFFF4342020000000200E441FFFF434202000000
+ 0200E841FFFF4342020000003533EB4165664442020000003533EF4165664442
+ 020000003533F34165664442020000006866F64165664442020000006866FA41
+ FFFF4342020000006866FE41FFFF434202000000CECC00429999434202000000
+ CECC024299994342010000000100144233335F420100000067662C4233335542
+ 01000000CDCC244233333542020000009A992742CDCC32420200000067662A42
+ 666630420200000033332D4299992D4202000000FFFF2F42CCCC2A4202000000
+ 666632426666284202000000CDCC34423333254201000000CDCC5442CDCC2C42
+ 01000000CDCC5E42676614420100000033334342CDCC02420300000033334342
+ CDCC0242000000003333EF4133339741020000003333FB413333974102000000
+ 9A9903429999994102000000CDCC084266669E410200000000000E423333A341
+ 02000000CDCC12429999A94102000000CDCC16429999B14102000000CDCC1A42
+ 9999B9410200000000001E423333C34102000000676620429999CD4102000000
+ CDCC2242FFFFD7410200000001002442FFFFE34102000000010024420000F041
+ 02000000010024420100FC4102000000CECC2242000004420200000067662042
+ 333309420200000001001E4266660E4202000000CDCC1A423333134202000000
+ CDCC16423333174202000000CDCC124233331B420200000000000E4266661E42
+ 02000000CDCC0842CDCC2042020000009A99034233332342020000003433FB41
+ 67662442020000003433EF4167662442020000003433E3416766244202000000
+ 3433D7413433234202000000CECCCC41CDCC2042020000006866C24167661E42
+ 02000000CECCB84133331B4202000000CECCB0413333174202000000CECCA841
+ 33331342020000006866A24166660E42020000009B999D413333094202000000
+ CECC98410000044202000000686696410000FC4102000000686696410000F041
+ 02000000686696410000E44102000000CECC98410000D841020000009B999D41
+ 9A99CD41020000006866A2413433C34102000000CECCA8419A99B94102000000
+ CECCB0419A99B14102000000CECCB8419A99A941020000006866C2413433A341
+ 02000000CECCCC4167669E41020000000000D8419A999941020000003333E341
+ 33339741020000003333EF4133339741030000003333EF413333974100000000
+ 3333EF41CDCC1642020000000000F841CDCC1642020000000000004200001642
+ 020000009A990342676614420200000034330742CDCC124202000000CDCC0A42
+ 67661042020000009A990D429A990D420200000067661042CDCC0A4202000000
+ CDCC12429A99074202000000676614429A990342020000000100164200000042
+ 02000000CDCC16423433F74102000000CDCC16423433EF4102000000CDCC1642
+ 6766E64102000000000016426766DE4102000000676614423433D74102000000
+ CDCC12420100D0410200000067661042CECCC841020000009A990D423433C341
+ 02000000CDCC0A429A99BD41020000009A990742CECCB841020000009A990342
+ 9A99B54102000000000000426766B241020000003433F741CDCCB04102000000
+ 3433EF41CDCCB041020000006766E641CDCCB041020000006766DE416766B241
+ 020000003433D7419A99B541020000000100D041CDCCB84102000000CECCC841
+ 9A99BD41020000003433C3413433C341020000009A99BD41CECCC84102000000
+ CECCB8413433CF41020000009A99B5413433D741020000006766B2416766DE41
+ 02000000CDCCB0413433E74102000000CDCCB0413433EF4102000000CDCCB041
+ 0100F841020000006766B24100000042020000009A99B5419A99034202000000
+ CDCCB84134330742020000009A99BD41CDCC0A42020000003433C3419A990D42
+ 02000000CECCC84167661042020000003433CF41CDCC1242020000003433D741
+ 67661442020000003333DF4100001642020000003333E741CDCC164202000000
+ 3333EF41CDCC1642030000003333EF41CDCC16420A46696C6C2E436F6C6F7207
+ 08636C6157686974650748697454657374080A53697A652E5769647468050000
+ 0000000000D003400B53697A652E4865696768740500000000000000E0034014
+ 53697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E
+ 6407044E6F6E6508577261704D6F64650703466974000000005450463007544C
+ 61796F757400095374796C654E616D65061172656D6F7665627574746F6E7374
+ 796C6505416C69676E070643656E7465720A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C003401453
+ 697A652E506C6174666F726D44656661756C74080756697369626C65080B4669
+ 7865644865696768740218000654476C79706800095374796C654E616D65060A
+ 676C7970687374796C650C4D617267696E732E4C656674050000000000000090
+ 02400B4D617267696E732E546F7005000000000000009002400E4D617267696E
+ 732E426F74746F6D050000000000000090024005416C69676E07044C6566740A
+ 506F736974696F6E2E5805000000000000008404400A506F736974696F6E2E59
+ 05000000000000009002400A53697A652E576964746805000000000000008004
+ 400B53697A652E4865696768740500000000000000C001401453697A652E506C
+ 6174666F726D44656661756C740800000A5452656374616E676C650009537479
+ 6C654E616D65060A6261636B67726F756E6405416C69676E0706436C69656E74
+ 0C436C69704368696C6472656E090A436C6970506172656E74090A46696C6C2E
+ 436F6C6F7207097846463230323032300748697454657374080C4D617267696E
+ 732E4C6566740500000000000000C003C00A53697A652E576964746805000000
+ 00000000C805400B53697A652E4865696768740500000000000000C003401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E65000F54436F6C6F72416E696D6174696F6E00095374796C654E61
+ 6D650615627574746F6E436F6C6F72416E696D6174696F6E3108447572617469
+ 6F6E05000000000000000000000C50726F70657274794E616D65060A46696C6C
+ 2E436F6C6F720A537461727456616C756507097846463230323032300953746F
+ 7056616C756507097846463430343034300754726967676572063049734D6F75
+ 73654F7665723D747275653B4973507265737365643D66616C73653B4973466F
+ 63757365643D66616C73650E54726967676572496E7665727365063149734D6F
+ 7573654F7665723D66616C73653B4973507265737365643D66616C73653B4973
+ 466F63757365643D66616C736500000F54436F6C6F72416E696D6174696F6E00
+ 095374796C654E616D650615627574746F6E436F6C6F72416E696D6174696F6E
+ 33084475726174696F6E05000000000000000000000C50726F70657274794E61
+ 6D65060A46696C6C2E436F6C6F720A537461727456616C756507097846463241
+ 383245320953746F7056616C7565070978464631373537394307547269676765
+ 72062E4973507265737365643D747275653B49734D6F7573654F7665723D7472
+ 75653B4973466F63757365643D747275650E54726967676572496E7665727365
+ 062F4973507265737365643D66616C73653B49734D6F7573654F7665723D7472
+ 75653B4973466F63757365643D7472756500000005545465787400095374796C
+ 654E616D6506047465787405416C69676E0706436C69656E7407486974546573
+ 74080A53697A652E576964746805000000000000009805400B53697A652E4865
+ 696768740500000000000000C003401453697A652E506C6174666F726D446566
+ 61756C74080454657874060454657874165465787453657474696E67732E466F
+ 6E74436F6C6F720708636C615768697465000007544C61796F75740009537479
+ 6C654E616D6506074C61796F75743205416C69676E07044C6566740A53697A65
+ 2E57696474680500000000000000C003400B53697A652E486569676874050000
+ 0000000000C003401453697A652E506C6174666F726D44656661756C74080005
+ 545061746800095374796C654E616D65060469636F6E05416C69676E0708436F
+ 6E74656E747309446174612E506174680A4C0000000600000000000000000040
+ 41CDCC4C3F0100000000000000CDCC4C3F010000000000000000000000010000
+ 0000004041000000000100000000004041CDCC4C3F0300000000004041CDCC4C
+ 3F0A46696C6C2E436F6C6F720708636C6157686974650748697454657374080C
+ 4D617267696E732E4C65667405000000000000008001400B4D617267696E732E
+ 546F7005000000000000008001400D4D617267696E732E526967687405000000
+ 000000008001400E4D617267696E732E426F74746F6D05000000000000008001
+ 400A53697A652E576964746805000000000000008003400B53697A652E486569
+ 67687405000000000000008003401453697A652E506C6174666F726D44656661
+ 756C74080B5374726F6B652E4B696E6407044E6F6E6508577261704D6F646507
+ 0346697400000000545046300A5452656374616E676C6500095374796C654E61
+ 6D650614706F7075706261636B67726F756E647374796C6505416C69676E0706
+ 43656E7465720A46696C6C2E436F6C6F7207097846463244324432440A53697A
+ 652E576964746805000000000000009407400B53697A652E4865696768740500
+ 000000000080D206401453697A652E506C6174666F726D44656661756C74080C
+ 5374726F6B652E436F6C6F7207097846463135313531350756697369626C6508
+ 00005450463007544C61796F757400095374796C654E616D65061A70726F6772
+ 6573736261726D696E6966696E6973687374796C6505416C69676E070643656E
+ 7465720A53697A652E576964746805000000000033338505400B53697A652E48
+ 65696768740500000000009999E104401453697A652E506C6174666F726D4465
+ 6661756C74080756697369626C6508000A5452656374616E676C650009537479
+ 6C654E616D65060668747261636B05416C69676E0708436F6E74656E74730A46
+ 696C6C2E436F6C6F720709784646343034303430064C6F636B65640907486974
+ 54657374080A53697A652E576964746805000000000033338505400B53697A65
+ 2E4865696768740500000000009999E104401453697A652E506C6174666F726D
+ 44656661756C74080B5374726F6B652E4B696E6407044E6F6E65000A54526563
+ 74616E676C6500095374796C654E616D65060A68696E64696361746F7205416C
+ 69676E07044C6566740A46696C6C2E436F6C6F72070978464632434532343406
+ 4C6F636B6564090748697454657374080A53697A652E57696474680500000000
+ 000000C804400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E6407
+ 044E6F6E650000000A5452656374616E676C6500095374796C654E616D650606
+ 76747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C6F
+ 720709784646343034303430064C6F636B6564090748697454657374080A5369
+ 7A652E576964746805000000000033338505400B53697A652E48656967687405
+ 00000000009999E104401453697A652E506C6174666F726D44656661756C7408
+ 0B5374726F6B652E4B696E6407044E6F6E65000A5452656374616E676C650009
+ 5374796C654E616D65060A76696E64696361746F7205416C69676E0706426F74
+ 746F6D0A46696C6C2E436F6C6F720709784646324345323434064C6F636B6564
+ 090748697454657374080A506F736974696F6E2E5905000000000099998D0440
+ 0A53697A652E576964746805000000000033338505400B53697A652E48656967
+ 68740500000000000000A803401453697A652E506C6174666F726D4465666175
+ 6C74080B5374726F6B652E4B696E6407044E6F6E65000000005450463007544C
+ 61796F757400095374796C654E616D65061070726F6772657373626172737479
+ 6C6505416C69676E070643656E7465720A53697A652E57696474680500000000
+ 0033338505400B53697A652E4865696768740500000000009999E10440145369
+ 7A652E506C6174666F726D44656661756C74080756697369626C6508000A5452
+ 656374616E676C6500095374796C654E616D65060668747261636B05416C6967
+ 6E0708436F6E74656E74730A46696C6C2E436F6C6F7207097846463230323032
+ 30064C6F636B6564090748697454657374080A53697A652E5769647468050000
+ 00000033338505400B53697A652E4865696768740500000000009999E1044014
+ 53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
+ 6F720709784646313531353135000A5452656374616E676C6500095374796C65
+ 4E616D65060A68696E64696361746F7205416C69676E07044C6566740A46696C
+ 6C2E436F6C6F720709784646324138324532064C6F636B656409074869745465
+ 7374080C4D617267696E732E4C656674050000000000000080FF3F0B4D617267
+ 696E732E546F70050000000000000080FF3F0D4D617267696E732E5269676874
+ 050000000000000080FF3F0E4D617267696E732E426F74746F6D050000000000
+ 000080FF3F0A506F736974696F6E2E58050000000000000080FF3F0A506F7369
+ 74696F6E2E59050000000000000080FF3F0A53697A652E576964746805000000
+ 00000000C804400B53697A652E4865696768740500000000009999D904401453
+ 697A652E506C6174666F726D44656661756C74080B5374726F6B652E4B696E64
+ 07044E6F6E650000000A5452656374616E676C6500095374796C654E616D6506
+ 0676747261636B05416C69676E0708436F6E74656E74730A46696C6C2E436F6C
+ 6F720709784646323032303230064C6F636B6564090748697454657374080A53
+ 697A652E576964746805000000000033338505400B53697A652E486569676874
+ 0500000000009999E104401453697A652E506C6174666F726D44656661756C74
+ 080C5374726F6B652E436F6C6F720709784646313531353135000A5452656374
+ 616E676C6500095374796C654E616D65060A76696E64696361746F7205416C69
+ 676E0706426F74746F6D0A46696C6C2E436F6C6F720709784646324138324532
+ 064C6F636B6564090748697454657374080C4D617267696E732E4C6566740500
+ 00000000000080FF3F0B4D617267696E732E546F70050000000000000080FF3F
+ 0D4D617267696E732E5269676874050000000000000080FF3F0E4D617267696E
+ 732E426F74746F6D050000000000000080FF3F0A506F736974696F6E2E580500
+ 00000000000080FF3F0A506F736974696F6E2E5905000000000099998904400A
+ 53697A652E576964746805000000000033338105400B53697A652E4865696768
+ 740500000000000000A803401453697A652E506C6174666F726D44656661756C
+ 74080B5374726F6B652E4B696E6407044E6F6E6500000000}
+ end>
+ Left = 32
+ Top = 16
+ end
+ object StyleBook2: TStyleBook
+ Styles = <
+ item
+ ResourcesBin = {
+ 464D585F5354594C4520322E3501061372656E64657270726F67726573737374
+ 796C6503FC08005450463007544C61796F757400095374796C654E616D650613
+ 72656E64657270726F67726573737374796C6505416C69676E070643656E7465
+ 720A53697A652E576964746805000000000000008F08400B53697A652E486569
+ 6768740500000000000000F006401453697A652E506C6174666F726D44656661
+ 756C740800065450616E656C00095374796C654E616D650607626770616E656C
+ 05416C69676E0708436F6E74656E74730A53697A652E57696474680500000000
+ 0000008F08400B53697A652E4865696768740500000000000000F00640145369
+ 7A652E506C6174666F726D44656661756C7408000007544C61796F7574000953
+ 74796C654E616D650607636F6E74656E7405416C69676E0708436F6E74656E74
+ 730A53697A652E576964746805000000000000008F08400B53697A652E486569
+ 6768740500000000000000F006401453697A652E506C6174666F726D44656661
+ 756C74080006544C6162656C00095374796C654E616D650604636F6D7005416C
+ 69676E07084D6F73744C656674084175746F53697A65090E5374796C65645365
+ 7474696E67730B0646616D696C79055374796C6509466F6E74436F6C6F72000C
+ 4D617267696E732E4C65667405000000000000008003400B4D617267696E732E
+ 546F7005000000000000008002400E4D617267696E732E426F74746F6D050000
+ 00000000008002400A506F736974696F6E2E5805000000000000008003400A50
+ 6F736974696F6E2E5905000000000000008002400A53697A652E576964746805
+ 00000000000000A004400B53697A652E48656967687405000000000000008004
+ 401453697A652E506C6174666F726D44656661756C7408165465787453657474
+ 696E67732E466F6E742E53697A65050000000000000080034015546578745365
+ 7474696E67732E576F7264577261700804546578740604636F6D70000005544D
+ 656D6F00095374796C654E616D6506036C6F6719546F7563682E496E74657261
+ 637469766547657374757265730B0350616E074C6F6E6754617009446F75626C
+ 655461700011446174614465746563746F7254797065730B000E5374796C6564
+ 53657474696E67730B055374796C6509466F6E74436F6C6F7200185465787453
+ 657474696E67732E466F6E742E46616D696C790608436F6E736F6C617305416C
+ 69676E070A4D6F7374426F74746F6D0A506F736974696F6E2E59050000000000
+ 0000C004400A53697A652E576964746805000000000000008F08400B53697A65
+ 2E4865696768740500000000000000C006401453697A652E506C6174666F726D
+ 44656661756C74080E56696577706F72742E576964746805000000000000008F
+ 08400F56696577706F72742E4865696768740500000000000000C0064000000D
+ 54416E69496E64696361746F7200095374796C654E616D650603616E6905416C
+ 69676E0706436C69656E7407456E61626C6564090B5374796C654C6F6F6B7570
+ 0615616E69696E64696361746F72686F727A7374796C65074869745465737408
+ 0C4D617267696E732E4C65667405000000000000008003400B4D617267696E73
+ 2E546F7005000000000000008001400E4D617267696E732E426F74746F6D0500
+ 0000000000008003400A53697A652E57696474680500000000000000BE07400B
+ 53697A652E4865696768740500000000000000C000401453697A652E506C6174
+ 666F726D44656661756C7408000006544C6162656C00095374796C654E616D65
+ 060673746174757305416C69676E0703546F700E5374796C656453657474696E
+ 67730B0646616D696C790453697A6509466F6E74436F6C6F72000C4D61726769
+ 6E732E4C65667405000000000000008003400B4D617267696E732E546F700500
+ 0000000000008002400A506F736974696F6E2E5805000000000000009005400A
+ 506F736974696F6E2E5905000000000000008002400A53697A652E5769647468
+ 0500000000000000BE07400B53697A652E486569676874050000000000000088
+ 03401453697A652E506C6174666F726D44656661756C74081A54657874536574
+ 74696E67732E466F6E742E5374796C654578740A0D0000000007000000000000
+ 00040000000454657874060673746174757300000C5450726F67726573734261
+ 7200095374796C654E616D65060B70726F677265737362617205416C69676E07
+ 06436C69656E740748697454657374080B4F7269656E746174696F6E070A486F
+ 72697A6F6E74616C0C4D617267696E732E4C6566740500000000000000800340
+ 0B4D617267696E732E546F7005000000000000008001400E4D617267696E732E
+ 426F74746F6D05000000000000008003400A53697A652E576964746805000000
+ 00000080C307400B53697A652E4865696768740500000000000000C000401453
+ 697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
+ 061470726F67726573736261726D696E697374796C650556616C756505000000
+ 00000000C804400756697369626C650800000754427574746F6E00095374796C
+ 654E616D6506096C6F67627574746F6E05416C69676E07094D6F737452696768
+ 740A506F736974696F6E2E5805000000000000008308400A53697A652E576964
+ 74680500000000000000C004400B53697A652E48656967687405000000000000
+ 00C004401453697A652E506C6174666F726D44656661756C74080B5374796C65
+ 4C6F6F6B7570060E6C6F67627574746F6E7374796C65000006544C6162656C00
+ 095374796C654E616D6506066672616D657305416C69676E07094D6F73745269
+ 676874084175746F53697A65090E5374796C656453657474696E67730B064661
+ 6D696C7909466F6E74436F6C6F72000C4D617267696E732E4C65667405000000
+ 000000008002400D4D617267696E732E52696768740500000000000000800340
+ 0A506F736974696F6E2E580500000000000000E607400A53697A652E57696474
+ 680500000000000000C004400B53697A652E4865696768740500000000000000
+ C004401453697A652E506C6174666F726D44656661756C740816546578745365
+ 7474696E67732E466F6E742E53697A6505000000000000008003401554657874
+ 53657474696E67732E576F72645772617008045465787406066672616D657300
+ 000000}
+ end>
+ Left = 112
+ Top = 16
+ end
+ object TrackBar1: TTrackBar
+ CanParentFocus = True
+ Min = -1.000000000000000000
+ Orientation = Horizontal
+ Position.X = 168.000000000000000000
+ Position.Y = 296.000000000000000000
+ Size.Width = 697.000000000000000000
+ Size.Height = 17.000000000000000000
+ Size.PlatformDefault = False
+ Value = -1.000000000000000000
+ OnChange = TrackBar1Change
+ end
+ object CheckBox1: TCheckBox
+ Position.X = 24.000000000000000000
+ Position.Y = 296.000000000000000000
+ Text = 'IsError'
+ OnChange = CheckBox1Change
+ end
+ object RenderProgress1: TRenderProgress
+ Size.Width = 633.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ Position.X = 248.000000000000000000
+ Position.Y = 40.000000000000000000
+ Composition = 'Web Icons'
+ ST_WaitingForAErender = 'Waiting for aerender...'
+ ST_Rendering = 'Rendering'
+ ST_FinishedRender = 'Rendering finished'
+ ST_RenderError = 'ERROR: See log for more info'
+ InFrame = -1.000000000000000000
+ OutFrame = 100.000000000000000000
+ MemoVisible = False
+ IsError = False
+ end
+ object Button1: TButton
+ Position.X = 904.000000000000000000
+ Position.Y = 296.000000000000000000
+ TabOrder = 2
+ Text = 'Button1'
+ OnClick = Button1Click
+ end
+end
diff --git a/src/lib/Components/TRenderProgress/Test Project/RenderProgressUnit.pas b/src/lib/Components/TRenderProgress/Test Project/RenderProgressUnit.pas
new file mode 100644
index 0000000..3145068
--- /dev/null
+++ b/src/lib/Components/TRenderProgress/Test Project/RenderProgressUnit.pas
@@ -0,0 +1,49 @@
+unit RenderProgressUnit;
+
+interface
+
+uses
+ System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
+ FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
+ FMX.RenderProgress, FMX.Controls.Presentation, FMX.StdCtrls;
+
+type
+ TForm1 = class(TForm)
+ StyleBook1: TStyleBook;
+ StyleBook2: TStyleBook;
+ TrackBar1: TTrackBar;
+ CheckBox1: TCheckBox;
+ RenderProgress1: TRenderProgress;
+ Button1: TButton;
+ procedure TrackBar1Change(Sender: TObject);
+ procedure CheckBox1Change(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{$R *.fmx}
+
+procedure TForm1.Button1Click(Sender: TObject);
+begin
+ RenderProgress1.Log.Add('String ' + Random(9999).ToString);
+end;
+
+procedure TForm1.CheckBox1Change(Sender: TObject);
+begin
+ RenderProgress1.IsError := CheckBox1.IsChecked;
+end;
+
+procedure TForm1.TrackBar1Change(Sender: TObject);
+begin
+ RenderProgress1.Value := TrackBar1.Value;
+end;
+
+end.
diff --git a/src/lib/FMX.Platform.Win.pas b/src/lib/FMX.Platform.Win.pas
deleted file mode 100644
index b2ce6a7..0000000
--- a/src/lib/FMX.Platform.Win.pas
+++ /dev/null
@@ -1,6465 +0,0 @@
-{*******************************************************}
-{ }
-{ Delphi FireMonkey Platform }
-{ }
-{ Copyright(c) 2011-2020 Embarcadero Technologies, Inc. }
-{ All rights reserved }
-{ }
-{*******************************************************}
-
-unit FMX.Platform.Win;
-
-(*$HPPEMIT '#if defined(WIN32) && defined(CreateWindow)'*)
-(*$HPPEMIT ' #define __SAVE_CREATEWINDOW CreateWindow'*)
-(*$HPPEMIT ' #undef CreateWindow'*)
-(*$HPPEMIT '#endif'*)
-
-(*$HPPEMIT END '#if defined(__SAVE_CREATEWINDOW)'*)
-(*$HPPEMIT END ' #define CreateWindow __SAVE_CREATEWINDOW'*)
-(*$HPPEMIT END ' #undef __SAVE_CREATEWINDOW'*)
-(*$HPPEMIT END '#endif'*)
-
-{$HPPEMIT NOUSINGNAMESPACE}
-{$R-}
-
-interface
-
-{$SCOPEDENUMS ON}
-
-uses
- Winapi.CommCtrl, Winapi.Windows, Winapi.ActiveX, System.Types, System.Classes, System.UITypes, System.UIConsts,
- System.Generics.Collections, FMX.Forms, FMX.Platform, FMX.Types, FMX.Graphics, FMX.ZOrder.Win;
-
-type
- TWinDropTarget = class;
-
- PRgnRects = ^TRgnRects;
- TRgnRects = array [0..MaxInt div SizeOf(TRect) - 1] of TRect;
-
- TUpdateRects = array of TRectF;
-
- TWinWindowHandle = class(TWindowHandle)
- private class var
- FForcedScale: Single;
- private
- FWnd: HWND;
- FZOrderManager: TWinZOrderManager;
- FBufferBitmap: THandle;
- FBitmapInfo: TBitmapInfo;
- FBufferBits: Pointer;
- FBufferHandle: THandle;
- FBufferSize: TSize;
- FForm: TCommonCustomForm;
- FDisableDeactivate: Boolean;
- FWinDropTarget: TWinDropTarget;
- FCurrentScale: Single;
- FClientSize: TSizeF;
- FWndClientSize: TSize;
- FBounds: TRectF;
- FWndBounds: TRect;
- FNearestIntegerMultiple: Integer;
- procedure UpdateLayer;
- function GetZOrderManager: TWinZOrderManager;
- procedure SetBounds(const Value: TRect);
- procedure SetWndBounds(const Value: TRect);
- procedure SetClientSize(const Value: TSize);
- procedure UpdateClientSize;
- procedure SetWindowSizeByClientSize;
- procedure CalcNearestIntegerMultiple;
- function GetNearestIntegerMultiple: Integer;
- protected
- function GetBounds: TRect; virtual;
- function GetClientSize: TSize; virtual;
- function GetWndBounds: TRect; virtual;
- function GetWndClientSize: TSize; virtual;
- function GetTransparency: Boolean; virtual;
- function GetScale: Single; override;
- public
- constructor Create(const AForm: TCommonCustomForm; const AWnd: HWND);
- destructor Destroy; override;
- class procedure SetForcedScale(NewScale: Single);
- procedure CreateBuffer(const Width, Height: Integer);
- procedure ResizeBuffer(const Width, Height: Integer);
- procedure FreeBuffer;
- procedure CorrectWindowSize(const WindowPos: PWindowPos);
- procedure ScaleChanged;
- procedure DpiChanged(const NewDpi: Integer);
- function WndToForm(const Rect: TRect): TRectF; overload;
- function WndToForm(const Rect: TRectF): TRectF; overload;
- function FormToWnd(const Rect: TRectF): TRectF;
- property Wnd: HWND read FWnd;
- property Form: TCommonCustomForm read FForm;
- property BufferBits: Pointer read FBufferBits;
- property BufferHandle: THandle read FBufferHandle;
- /// Allocated buffer size for native window.
- property BufferSize: TSize read FBufferSize;
- property ZOrderManager: TWinZOrderManager read GetZOrderManager;
- property Transparency: Boolean read GetTransparency;
- property ClientSize: TSize read GetClientSize write SetClientSize;
- property NearestIntegerMultiple: Integer read GetNearestIntegerMultiple;
- property Bounds: TRect read GetBounds write SetBounds;
- property BoundsF: TRectF read FBounds;
- property WndClientSize: TSize read GetWndClientSize;
- property WndBounds: TRect read GetWndBounds write SetWndBounds;
- end;
-
- TWinDropTarget = class(TComponent, IDropTarget)
- private
- Form: TCommonCustomForm;
- function GetDataObject: TDragObject;
- function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
- var dwEffect: Longint): HRESULT; stdcall;
- function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
- function DragLeave: HRESULT; stdcall;
- function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
- var dwEffect: Longint): HRESULT; stdcall;
- end;
-
-function FindWindow(Handle: HWND): TCommonCustomForm;
-function WindowHandleToPlatform(const AHandle: TWindowHandle): TWinWindowHandle;
-
-function FmxHandleToHWND(const FmxHandle: TWindowHandle): HWND;
-function FormToHWND(Form: TCommonCustomForm): HWND;
-function ApplicationHWND: HWND;
-
-procedure RegisterCorePlatformServices;
-procedure UnregisterCorePlatformServices;
-
-const
- IDC_NODROP = PChar(32767);
- IDC_DRAG = PChar(32766);
- IDC_MULTIDRAG = PChar(32763);
- IDC_SQLWAIT = PChar(32762);
-
-type
- TApplicationHWNDProc = function: HWND;
-
-procedure RegisterApplicationHWNDProc(const Proc: TApplicationHWNDProc);
-
-procedure ShutDown; cdecl;
-
-implementation
-
-{$SCOPEDENUMS OFF}
-
-
-uses
- System.Messaging, System.IOUtils, Winapi.CommDlg, Winapi.Messages, Winapi.ShlObj, Winapi.MMSystem, Winapi.ShellAPI,
- Winapi.MultiMon, Winapi.Imm, Winapi.UxTheme, System.Variants, System.SysUtils, System.Math,
- System.Math.Vectors, System.StrUtils, System.DateUtils, System.RTLConsts, System.SyncObjs, System.Rtti, System.Devices,
- FMX.Consts, FMX.Menus, FMX.Helpers.Win, FMX.Printer, FMX.Printer.Win, FMX.Dialogs.Win, FMX.Canvas.GDIP, FMX.Canvas.D2D,
- FMX.Context.DX9, FMX.Context.DX11, FMX.Canvas.GPU, FMX.Forms.Border.Win, FMX.Controls.Win, FMX.Gestures.Win,
- FMX.TextLayout, FMX.Text, FMX.Types3D, FMX.VirtualKeyboard, FMX.Controls, FMX.BehaviorManager, FMX.Styles,
- FMX.MultiTouch.Win, FMX.ImgList, FMX.WebBrowser, FMX.Surfaces, FMX.Utils, FMX.KeyMapping, FMX.AcceleratorKey,
- FMX.AcceleratorKey.Win;
-
-type
-
- EUnavailableMenuId = class(Exception);
-
- TOpenMenuItem = class(TMenuItem);
-
- MySTGMEDIUM = record // for compatibility
- Tymed: DWORD;
- Case Integer Of
- 0:
- (HBITMAP: HBITMAP; UnkForRelease: Pointer { IUnknown } );
- 1:
- (HMETAFILEPICT: THandle);
- 2:
- (HENHMETAFILE: THandle);
- 3:
- (HGLOBAL: HGLOBAL);
- 4:
- (lpszFileName: POleStr);
- 5:
- (stm: Pointer { IStream } );
- 6:
- (stg: Pointer { IStorage } );
- end;
-
- { TDropSource }
-
- TDataObjectInfo = record
- FormatEtc: TFormatEtc;
- StgMedium: TStgMedium;
- OwnedByDataObject: Boolean;
- end;
-
- TDataObjectInfoArray = array of TDataObjectInfo;
-
- TDropSource = class(TComponent, IDataObject, IDropSource)
- private
- Data: TDragObject;
- Formats: TDataObjectInfoArray;
- { IDropSource }
- function QueryContinueDrag(fEscapePressed: BOOL; grfKeyState: Longint): HRESULT; stdcall;
- function GiveFeedback(dwEffect: Longint): HRESULT; stdcall;
- { IDataObject }
- function GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium): HRESULT; stdcall;
- function GetDataHere(const FormatEtc: TFormatEtc; out Medium: TStgMedium): HRESULT; stdcall;
- function QueryGetData(const FormatEtc: TFormatEtc): HRESULT; stdcall;
- function GetCanonicalFormatEtc(const FormatEtc: TFormatEtc; out FormatEtcout: TFormatEtc): HRESULT; stdcall;
- function SetData(const FormatEtc: TFormatEtc; var Medium: TStgMedium; fRelease: BOOL): HRESULT; stdcall;
- function EnumFormatEtc(dwDirection: Longint; out EnumFormatEtc: IEnumFormatEtc): HRESULT; stdcall;
- function dAdvise(const FormatEtc: TFormatEtc; advf: Longint; const advsink: IAdviseSink;
- out dwConnection: Longint): HRESULT; stdcall;
- function dUnadvise(dwConnection: Longint): HRESULT; stdcall;
- function EnumdAdvise(out EnumAdvise: IEnumStatData): HRESULT; stdcall;
- { For IDropSourceHelper }
- function FindFormatEtc(TestFormatEtc: TFormatEtc): Integer;
- function EqualFormatEtc(FormatEtc1, FormatEtc2: TFormatEtc): Boolean;
- function HGlobalClone(HGLOBAL: THandle): THandle;
- function RetrieveOwnedStgMedium(Format: TFormatEtc; var StgMedium: TStgMedium): HRESULT;
- function StgMediumIncRef(const InStgMedium: TStgMedium; var OutStgMedium: TStgMedium;
- CopyInMedium: Boolean): HRESULT;
- function CanonicalIUnknown(const TestUnknown: IUnknown): IUnknown;
- end;
-
-type
- TWin32TimerInfo = record
- TimerID: UIntPtr; // the Windows timer ID for this timer
- TimerHandle: TFmxHandle; // the unique FMX Handle for this timer
- TimerFunc: TTimerProc; // owner function to handle timer
- end;
-
- { TPlatformWin }
-
- TFullScreenParams = record
- BorderStyle: TFmxFormBorderStyle;
- WindowState: TWindowState;
- Position: TPoint;
- Size: TPoint;
- public
- function IsFullScreen: Boolean;
- procedure Clean;
- end;
-
- TWinTimerService = class;
- TImmManager = class;
-
- TPlatformWin = class(TInterfacedObject, IFMXApplicationService, IFMXSystemFontService,
- IFMXWindowService, IFMXDragDropService, IFMXCursorService, IFMXMouseService,
- IFMXScreenService, IFMXLocaleService, IFMXTextService, IFMXContextService, IFMXCanvasService, IFMXDeviceService,
- IFMXWindowBorderService, IFMXSystemInformationService, IFMXLoggingService, IFMXFullScreenWindowService,
- IFMXListingService, IFMXSaveStateService, IFMXDeviceMetricsService, IFMXGestureRecognizersService,
- IFMXWindowsTouchService, IFMXDefaultMetricsService, IFMXKeyMappingService)
- private const
- DefaultWindowsFontSize = 12;
- private
- FTitle: string;
- FDefaultTitle: string;
- FApplicationHWNDProc: TApplicationHWNDProc;
- FApplicationHWND: HWND;
- FIsOutApplicationHWND: Boolean;
- FFullScreenSupport: TDictionary;
- FDiableUpdateState: Boolean;
- FThreadSyncHandle: HWND;
- FInPaintUpdateRects: TDictionary;
- FTerminating: Boolean;
- FRunning: Boolean;
- FCursor: TCursor;
- FCaptionChangedId: Integer;
- FMultiTouchManager: TMultiTouchManagerWin;
- FEnabledInteractiveGestures: TInteractiveGestures;
- FSaveStateStoragePath: string;
- FDragAndDropActive: Boolean;
- FKeyMapping: TKeyMapping;
- FAcceleratorKeyRegistry: IFMXAcceleratorKeyRegistryService;
- FIsPostQuitMessage: Boolean;
- FTimerService: TWinTimerService;
- { IMM }
- FImmManagers: TDictionary;
- procedure ThreadSync(var Msg: TMessage);
- procedure WakeMainThread(Sender: TObject);
- function CreateAppHandle: HWND;
- procedure MinimizeApp;
- procedure RestoreApp;
- // IFMXListingService
- function GetListingHeaderBehaviors: TListingHeaderBehaviors;
- function GetListingSearchFeatures: TListingSearchFeatures;
- function GetListingTransitionFeatures: TListingTransitionFeatures;
- function GetListingEditModeFeatures: TListingEditModeFeatures;
- function IFMXListingService.GetHeaderBehaviors = GetListingHeaderBehaviors;
- function IFMXListingService.GetSearchFeatures = GetListingSearchFeatures;
- function IFMXListingService.GetTransitionFeatures = GetListingTransitionFeatures;
- function IFMXListingService.GetEditModeFeatures = GetListingEditModeFeatures;
- // IFMXSaveStateService
- function GetSaveStateFileName(const ABlockName: string): string;
- function GetSaveStateBlock(const ABlockName: string; const ABlockData: TStream): Boolean;
- function SetSaveStateBlock(const ABlockName: string; const ABlockData: TStream): Boolean;
- function GetSaveStateStoragePath: string;
- procedure SetSaveStateStoragePath(const ANewPath: string);
- function GetSaveStateNotifications: Boolean;
- function IFMXSaveStateService.GetBlock = GetSaveStateBlock;
- function IFMXSaveStateService.SetBlock = SetSaveStateBlock;
- function IFMXSaveStateService.GetStoragePath = GetSaveStateStoragePath;
- procedure IFMXSaveStateService.SetStoragePath = SetSaveStateStoragePath;
- function IFMXSaveStateService.GetNotifications = GetSaveStateNotifications;
- // IFMXDeviceMetricsService
- function GetDisplayMetrics: TDeviceDisplayMetrics;
- procedure UpdateAppTitle;
- procedure CaptionChangedHandler(const Sender: TObject; const Msg: System.Messaging.TMessage);
- function GetApplicationHWND: HWND;
- procedure SetApplicationHWNDProc(const Value: TApplicationHWNDProc);
- procedure UpdateApplicationHwnd;
-
- //IFMXKeyMappingService
- /// Registers a platform key as the given virtual key.
- function RegisterKeyMapping(const PlatformKey, VirtualKey: Word; const KeyKind: TKeyKind): Boolean;
- /// Unegisters a platform key as the given virtual key.
- function UnregisterKeyMapping(const PlatformKey: Word): Boolean;
- /// Obtains the virtual key from a given platform key.
- function PlatformKeyToVirtualKey(const PlatformKey: Word; var KeyKind: TKeyKind): Word;
- /// Obtains the platform key from a given virtual key.
- function VirtualKeyToPlatformKey(const VirtualKey: Word): Word;
- function GetImmManager(const Index: TCommonCustomForm): TImmManager;
- public
- constructor Create;
- destructor Destroy; override;
- { IFMXApplicationService }
- procedure Run;
- function HandleMessage: Boolean;
- procedure WaitMessage;
- function GetDefaultTitle: string;
- function GetTitle: string;
- procedure SetTitle(const Value: string);
- function Terminating: Boolean;
- function Running: Boolean;
- procedure Terminate;
- function GetVersionString: string;
- property ApplicationHWND: HWND read GetApplicationHWND;
- property ApplicationHWNDProc: TApplicationHWNDProc read FApplicationHWNDProc write SetApplicationHWNDProc;
- { IFMXSystemFontService }
- function GetDefaultFontFamilyName: string;
- function GetDefaultFontSize: Single;
- { IFMXWindowService }
- function FindForm(const AHandle: TWindowHandle): TCommonCustomForm;
- function CreateWindow(const AForm: TCommonCustomForm): TWindowHandle;
- procedure DestroyWindow(const AForm: TCommonCustomForm);
- procedure ReleaseWindow(const AForm: TCommonCustomForm);
- procedure SetWindowState(const AForm: TCommonCustomForm; const AState: TWindowState);
- procedure ShowWindow(const AForm: TCommonCustomForm);
- procedure HideWindow(const AForm: TCommonCustomForm);
- procedure BringToFront(const AForm: TCommonCustomForm);
- procedure SendToBack(const AForm: TCommonCustomForm);
- procedure Activate(const AForm: TCommonCustomForm);
- function ShowWindowModal(const AForm: TCommonCustomForm): TModalResult;
- function CanShowModal: Boolean;
- procedure InvalidateWindowRect(const AForm: TCommonCustomForm; R: TRectF);
- procedure InvalidateImmediately(const AForm: TCommonCustomForm);
- procedure SetWindowRect(const AForm: TCommonCustomForm; ARect: TRectF);
- function GetWindowRect(const AForm: TCommonCustomForm): TRectF;
- function GetClientSize(const AForm: TCommonCustomForm): TPointF;
- procedure SetClientSize(const AForm: TCommonCustomForm; const ASize: TPointF);
- procedure SetWindowCaption(const AForm: TCommonCustomForm; const ACaption: string);
- procedure SetCapture(const AForm: TCommonCustomForm);
- procedure ReleaseCapture(const AForm: TCommonCustomForm);
- function ClientToScreen(const AForm: TCommonCustomForm; const Point: TPointF): TPointF;
- function ScreenToClient(const AForm: TCommonCustomForm; const Point: TPointF): TPointF;
- function GetWindowScale(const AForm: TCommonCustomForm): Single;
- // for desingtime and testing only
- procedure SetFullScreen(const AForm: TCommonCustomForm; const AValue: Boolean);
- function GetFullScreen(const AForm: TCommonCustomForm): Boolean;
- procedure SetShowFullScreenIcon(const AForm: TCommonCustomForm; const AValue: Boolean);
- { IFMXWindowBorderService }
- function CreateWindowBorder(const AForm: TCommonCustomForm): TWindowBorder;
- { IFMXDragDropService }
- procedure BeginDragDrop(AForm: TCommonCustomForm; const Data: TDragObject; ABitmap: TBitmap);
- { IFMXCursorService }
- procedure SetCursor(const ACursor: TCursor);
- function GetCursor: TCursor;
- { IFMXMouseService }
- function GetMousePos: TPointF;
- { IFMXScreenService }
- function GetScreenSize: TPointF;
- function GetScreenScale: Single;
- function GetScreenOrientation: TScreenOrientation;
- procedure SetSupportedScreenOrientations(const AOrientations: TScreenOrientations);
- { IFMXLocaleService }
- function GetCurrentLangID: string;
- function GetLocaleFirstDayOfWeek: string;
- function GetFirstWeekday: Byte;
- { IFMXTextService }
- function GetTextServiceClass: TTextServiceClass;
- { IFMXContextService }
- procedure RegisterContextClasses;
- procedure UnregisterContextClasses;
- { IFMXCanvasService }
- procedure RegisterCanvasClasses;
- procedure UnregisterCanvasClasses;
- { IFMXSystemInformationService }
- function GetScrollingBehaviour: TScrollingBehaviours;
- function GetMinScrollThumbSize: Single;
- function GetCaretWidth: Integer;
- function GetMenuShowDelay: Integer;
- { IFMXLoggingService }
- procedure Log(const AFormat: string; const AParams: array of const);
- { IFMXGestureRecognizersService }
- procedure AddRecognizer(const ARec: TInteractiveGesture; const AForm: TCommonCustomForm);
- procedure RemoveRecognizer(const ARec: TInteractiveGesture; const AForm: TCommonCustomForm);
- { IFMXWindowsTouchService }
- procedure HookTouchHandler(const AForm: TCommonCustomForm);
- procedure UnhookTouchHandler(const AForm: TCommonCustomForm);
- { IFMXDeviceService }
- function GetModel: string;
- function GetFeatures: TDeviceFeatures;
- function GetDeviceClass: TDeviceInfo.TDeviceClass;
- { IFMXDefaultMetricsService }
- function SupportsDefaultSize(const AComponent: TComponentKind): Boolean;
- function GetDefaultSize(const AComponent: TComponentKind): TSize;
-
- property ImmManager[const Index: TCommonCustomForm]: TImmManager read GetImmManager;
- property TimerService: TWinTimerService read FTimerService;
- end;
-
- TWinTimerService = class(TInterfacedObject, IFMXTimerService)
- private
- FHandleCounter: TFmxHandle;
- FTimers: TList;
- FPerformanceFrequency: Int64;
- FTerminating: Boolean;
- procedure DestroyTimers;
- { Handlers }
- class procedure TimerCallback(window_hwnd: HWND; Msg: Longint; idEvent: UINT; dwTime: Longint); static; stdcall;
- procedure ApplicationTerminatingHandler(const Sender: TObject; const Msg: System.Messaging.TMessage);
- public
- constructor Create;
- destructor Destroy; override;
-
- { IFMXTimerService }
- function CreateTimer(AInterval: Integer; ATimerFunc: TTimerProc): TFmxHandle;
- function DestroyTimer(Timer: TFmxHandle): Boolean;
- function GetTick: Double;
- end;
-
- TMenuLooperWin = class
- private
- FView: IMenuView;
- function IsItemSelectable(const Item: TFmxObject): Boolean;
- procedure SelectFirstMenuItem(const AView: IMenuView);
- procedure SelectLastMenuItem(const AView: IMenuView);
- procedure SelectNextMenuItem(const AView: IMenuView; const ABackward: Boolean);
- function BackwardSelectNextMenuItem(const AView: IMenuView; const AStartInd, AEndInd: Integer): Boolean;
- function ForwardSelectNextMenuItem(const AView: IMenuView; const AStartInd, AEndInd: Integer): Boolean;
- public
- procedure StartLoop(const AView: IMenuView);
- procedure EndLoop(const AView: IMenuView);
- end;
-
- TWin32MenuInfo = record
- MenuID: Integer;
- FMXMenuItem: TMenuItem;
- constructor Create(const AMenuId: Integer; const AnItem: TMenuItem);
- end;
-
- TMenuServiceWin = class(TInterfacedObject, IFMXMenuService)
- private type
- TState = (CreatingOSMenu, DestroyingMenuItem);
- TStates = set of TState;
- TMenuId = Integer;
- private
- FHMenuMap: TDictionary;
- FHMenuIdMap: TDictionary;
- FStates: TStates;
- FMenuLooper: TMenuLooperWin;
- { Menu Item Id}
- function GenerateMenuId: TMenuId;
- function AssignNewIdToMenu(const AParentMenu, AMenu: HMENU): TMenuId;
- function FindMenuInfoById(const AMenuItemId: TMenuId; var AMenuInfo: TWin32MenuInfo): Boolean;
- { Removing }
- procedure DestroysAllMenuItems(const AMenu: IItemsContainer);
- procedure RemoveMenuFromMaps(const AMenuHandle: TFmxHandle);
- { Menu Item Bitmap }
- procedure AddBitmapToMenu(const AParentMenu: HMENU; const AMenuItemId: TMenuId; const ABitmap: HBITMAP);
- procedure RemoveBitmapFromMenu(const AParentMenu, AMenu: HMENU);
- protected
- procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
- procedure WMInitMenuPopup(var Message: TWMInitMenuPopup); message WM_INITMENUPOPUP;
- procedure WMMenuSelect(var Message: TWMMenuSelect); message WM_MENUSELECT;
- public
- constructor Create;
- destructor Destroy; override;
-
- { IFMXMenuService }
-
- procedure StartMenuLoop(const AView: IMenuView);
- function ShortCutToText(ShortCut: TShortCut): string;
- procedure ShortCutToKey(ShortCut: TShortCut; var Key: Word; var Shift: TShiftState);
- function TextToShortCut(Text: string): Integer;
- procedure CreateOSMenu(AForm: TCommonCustomForm; const AMenu: IItemsContainer);
- procedure UpdateMenuItem(const AItem: IItemsContainer; AChange: TMenuItemChanges);
- procedure DestroyMenuItem(const AItem: IItemsContainer);
- function IsMenuBarOnWindowBorder: Boolean;
- procedure UpdateMenuBar;
- end;
-
- TVirtualKeyboardWin = class(TInterfacedObject, IFMXVirtualKeyboardService)
- private type
- TvkbState = (None, Hidden, Shown);
- private
- FPath: string;
- FExeName: string;
- FWndClassName: string;
- FHTmerLang: TFmxHandle;
- FHTmerVisible: TFmxHandle;
- FKBPresent: Boolean;
- FFormHandle: HWND;
- FInst: HINST;
- FError: Boolean;
- FLastvkbState: TvkbState;
- FLastHandle: HWND;
- FLastTime: TDateTime;
- FNewvkbState: TvkbState;
- FWait: Boolean;
- FStepActivate: Integer;
- FCodeKeyboard: HKL;
- FTimerService: IFMXTimerService;
-
- procedure KillTimerLang;
- procedure TimerLangProc;
- procedure StartTimerLang;
-
- procedure KillTimerVisible;
- procedure TimerVisibleProc;
- procedure StartTimerVisible;
- function FindKeyValue(const Key: HKey; const Name, Value, SubKeyName, SubValueName: string): string;
- function GetVirtualKeyboardState: TVirtualKeyboardStates;
- procedure vkbExecute(FormHandle: HWND);
- function vkbHandle: HWND;
- function vkbState: TvkbState;
- function GetVKBounds: TRect;
- protected
- procedure Clear;
- function IsAutoShow: Boolean;
- public
- constructor Create;
- destructor Destroy; override;
- function ShowVirtualKeyboard(const AControl: TFmxObject): Boolean;
- function HideVirtualKeyboard: Boolean;
- procedure SetTransientState(Value: Boolean);
- property VirtualKeyboardState: TVirtualKeyboardStates read GetVirtualKeyboardState;
- property ExeName: string read FExeName write FExeName;
- property Path: string read FPath write FPath;
- property WndClassName: string read FWndClassName write FWndClassName;
- end;
-
- TMultiDisplayWin = class(TInterfacedObject, IFMXMultiDisplayService)
- private type
- TDisplayWin = record
- Display: TDisplay;
- Handle: HMONITOR;
- constructor Create(const AIndex: Integer; const APrimary: Boolean; const ABounds, AWorkArea: TRect;
- const AHandle: HMONITOR);
- end;
- private
- FDisplayCount: Integer;
- FWorkAreaRect: TRect;
- FDesktopRect: TRect;
- FDisplayList: TList;
- function FindDisplay(const hm: HMONITOR): TDisplay;
- procedure UpdateDisplays;
- public
- destructor Destroy; override;
- procedure UpdateDisplayInformation;
- function GetDisplayCount: Integer;
- function GetWorkAreaRect: TRect;
- function GetDesktopRect: TRect;
- function GetDisplay(const Index: Integer): TDisplay;
- function GetDesktopCenterRect(const Size: TSize): TRect;
- function DisplayFromWindow(const Handle: TWindowHandle): TDisplay;
- function DisplayFromPoint(const Handle: TWindowHandle; const Point: TPoint): TDisplay;
- end;
-
- TOpenForm = class(TCommonCustomForm);
- TTextServiceWin = class;
-
- TImmManager = class
- private
- [Weak] FForm: TCommonCustomForm;
- function GetFormHandle: HWND;
- procedure UpdateCompositionAttributes(const AContext: HIMC; const ATextService: TTextServiceWin);
- procedure UpdateCompositionCursorPos(const AContext: HIMC; const ATextService: TTextServiceWin);
- procedure ProcessImeParameters(const AContext: HIMC; const AParameters: LPARAM; const ATextService: TTextServiceWin);
- protected
- procedure WMStartComposition(var Message: TMessage); message WM_IME_STARTCOMPOSITION;
- procedure WMComposition(var Message: TMessage); message WM_IME_COMPOSITION;
- procedure WMEndComposition(var Message: TMessage); message WM_IME_ENDCOMPOSITION;
- procedure WMSetContext(var Message: TMessage); message WM_IME_SETCONTEXT;
- procedure WMNotify(var Message: TMessage); message WM_IME_NOTIFY;
-
- function GetComposition(const AContext: HIMC): string;
- function GetResultComposition(const AContext: HIMC): string;
- public
- constructor Create(const AForm: TCommonCustomForm);
-
- function UpdateIMEWindowPosition: LRESULT;
-
- property Form: TCommonCustomForm read FForm;
- property FormHandle: HWND read GetFormHandle;
- end;
-
-{ Text Service }
-
- TTextServiceWin = class(TTextService)
- private const
- LCID_Korean_Default = (SUBLANG_KOREAN shl 10) + LANG_KOREAN;
- private
- FMarkedText: string;
- FIsInputting: Boolean;
- FMarkedTextCursorPosition: Integer;
- procedure SetMarkedTextCursorPosition(const Value: Integer);
- procedure RecreateImmContext(const AFormHandle: TWindowHandle);
- procedure Reset;
- protected
- procedure MarkedTextPositionChanged; override;
- procedure CaretPositionChanged; override;
- function GetMarketTextAttributes: TArray; override;
- public
- CompAttrBuf: array of Byte;
-
- procedure InternalSetMarkedText(const AMarkedText: string); override;
- function InternalGetMarkedText: string; override;
- procedure InternalStartIMEInput;
- procedure InternalEndIMEInput;
-
- procedure RefreshImePosition; override;
-
- function TargetClausePosition: TPoint; override;
-
- procedure EnterControl(const AFormHandle: TWindowHandle); override;
- procedure ExitControl(const AFormHandle: TWindowHandle); override;
-
- { Deprecated }
- procedure DrawSingleLine(const ACanvas: TCanvas; const ARect: TRectF; const AFirstVisibleChar: Integer;
- const AFont: TFont; const AOpacity: Single; const AFlags: TFillTextFlags; const ATextAlign: TTextAlign;
- const AVTextAlign: TTextAlign = TTextAlign.Center; const AWordWrap: Boolean = False); overload; override;
- procedure DrawSingleLine(const ACanvas: TCanvas; const S: string; const ARect: TRectF; const Font: TFont;
- const AOpacity: Single; const Flags: TFillTextFlags; const ATextAlign: TTextAlign;
- const AVTextAlign: TTextAlign = TTextAlign.Center; const AWordWrap: Boolean = False); overload; override;
-
- function HasMarkedText: Boolean; override;
-
- /// Returns caret position in MarkedText bounds.
- property MarkedTextCursorPosition: Integer read FMarkedTextCursorPosition write SetMarkedTextCursorPosition;
- end;
-
-var
- VirtualKeyboardWin: TVirtualKeyboardWin;
- MultiDisplayWin: TMultiDisplayWin;
- MenuServiceWin: TMenuServiceWin;
-
-const
- CF_FMOBJECT = CF_PRIVATEFIRST + 1;
-
-var
- WindowAtom: TAtom;
- WindowAtomString: string;
- PlatformWin: TPlatformWin;
- CapturedGestureControl: TComponent;
-
-procedure RegisterCorePlatformServices;
-begin
- PlatformWin := TPlatformWin.Create;
- TPlatformServices.Current.AddPlatformService(IFMXApplicationService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXSystemFontService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXTimerService, PlatformWin.TimerService);
- TPlatformServices.Current.AddPlatformService(IFMXWindowService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXDragDropService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXCursorService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXMouseService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXScreenService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXLocaleService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXTextService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXContextService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXCanvasService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXWindowBorderService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXSystemInformationService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXLoggingService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXFullScreenWindowService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXListingService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXSaveStateService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXDeviceMetricsService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXGestureRecognizersService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXWindowsTouchService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXDeviceService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXDefaultMetricsService, PlatformWin);
- TPlatformServices.Current.AddPlatformService(IFMXKeyMappingService, PlatformWin);
-
- VirtualKeyboardWin := TVirtualKeyboardWin.Create;
- TPlatformServices.Current.AddPlatformService(IFMXVirtualKeyboardService, VirtualKeyboardWin);
-
- MultiDisplayWin := TMultiDisplayWin.Create;
- TPlatformServices.Current.AddPlatformService(IFMXMultiDisplayService, MultiDisplayWin);
-
- MenuServiceWin := TMenuServiceWin.Create;
- TPlatformServices.Current.AddPlatformService(IFMXMenuService, MenuServiceWin);
-end;
-
-procedure UnregisterCorePlatformServices;
-begin
- TPlatformServices.Current.RemovePlatformService(IFMXMenuService);
- TPlatformServices.Current.RemovePlatformService(IFMXDeviceService);
- TPlatformServices.Current.RemovePlatformService(IFMXDeviceMetricsService);
- TPlatformServices.Current.RemovePlatformService(IFMXApplicationService);
- TPlatformServices.Current.RemovePlatformService(IFMXSystemFontService);
- TPlatformServices.Current.RemovePlatformService(IFMXTimerService);
- TPlatformServices.Current.RemovePlatformService(IFMXWindowService);
- TPlatformServices.Current.RemovePlatformService(IFMXDragDropService);
- TPlatformServices.Current.RemovePlatformService(IFMXCursorService);
- TPlatformServices.Current.RemovePlatformService(IFMXMouseService);
- TPlatformServices.Current.RemovePlatformService(IFMXScreenService);
- TPlatformServices.Current.RemovePlatformService(IFMXLocaleService);
- TPlatformServices.Current.RemovePlatformService(IFMXTextService);
- TPlatformServices.Current.RemovePlatformService(IFMXContextService);
- TPlatformServices.Current.RemovePlatformService(IFMXCanvasService);
- TPlatformServices.Current.RemovePlatformService(IFMXWindowBorderService);
- TPlatformServices.Current.RemovePlatformService(IFMXSystemInformationService);
- TPlatformServices.Current.RemovePlatformService(IFMXFullScreenWindowService);
- TPlatformServices.Current.RemovePlatformService(IFMXVirtualKeyboardService);
- TPlatformServices.Current.RemovePlatformService(IFMXDefaultMetricsService);
- TPlatformServices.Current.RemovePlatformService(IFMXLoggingService);
- TPlatformServices.Current.RemovePlatformService(IFMXListingService);
- TPlatformServices.Current.RemovePlatformService(IFMXSaveStateService);
- TPlatformServices.Current.RemovePlatformService(IFMXGestureRecognizersService);
- TPlatformServices.Current.RemovePlatformService(IFMXWindowsTouchService);
- TPlatformServices.Current.RemovePlatformService(IFMXDefaultMetricsService);
- TPlatformServices.Current.RemovePlatformService(IFMXKeyMappingService);
-end;
-
-procedure RaiseIfNil(const AObject: TObject; const AArgumentName: string);
-begin
- if AObject = nil then
- raise EArgumentException.CreateFmt(SParamIsNil, [AArgumentName]);
-end;
-
-{ TPlatformWin }
-
-constructor TPlatformWin.Create;
-begin
- inherited;
- FIsOutApplicationHWND := False;
- WindowAtomString := Format('FIREMONKEY%.8X', [GetCurrentProcessID]);
- WindowAtom := GlobalAddAtomW(PChar(WindowAtomString));
-
- FFullScreenSupport := TDictionary.Create;
- FInPaintUpdateRects := TDictionary.Create;
- FThreadSyncHandle := AllocateHWnd(ThreadSync);
- FKeyMapping := TKeyMapping.Create;
- FAcceleratorKeyRegistry := TWinAcceleratorKeyRegistry.Create;
- System.Classes.WakeMainThread := WakeMainThread;
- Application := TApplication.Create(nil);
- FCaptionChangedId := TMessageManager.DefaultManager.SubscribeToMessage(TMainCaptionChangedMessage,
- CaptionChangedHandler);
- FRunning := False;
-
- FImmManagers := TObjectDictionary.Create([doOwnsValues]);
- FTimerService := TWinTimerService.Create;
-end;
-
-destructor TPlatformWin.Destroy;
-begin
- TMessageManager.DefaultManager.Unsubscribe(TMainCaptionChangedMessage, FCaptionChangedId);
- FreeAndNil(FImmManagers);
- FreeAndNil(Application);
- FInPaintUpdateRects.Free;
- FFullScreenSupport.Free;
- FAcceleratorKeyRegistry := nil;
- FTimerService := nil;
- FKeyMapping.Free;
- GlobalDeleteAtom(WindowAtom);
-
- if FThreadSyncHandle <> 0 then
- DeallocateHWnd(FThreadSyncHandle);
- if PlatformWin = Self then
- PlatformWin := nil;
- inherited;
-end;
-
-{ App }
-
-procedure TPlatformWin.Run;
-begin
- FRunning := True;
- Application.RealCreateForms;
- UpdateAppTitle;
- repeat
- try
- Application.HandleMessage;
- except
- Application.HandleException(Self);
- end;
- until Application.Terminated;
-end;
-
-function TPlatformWin.Terminating: Boolean;
-begin
- Result := FTerminating;
-end;
-
-function TPlatformWin.Running: Boolean;
-begin
- Result := FRunning;
-end;
-
-procedure TPlatformWin.Terminate;
-begin
- FRunning := False;
- FTerminating := True;
- FIsPostQuitMessage := True;
-
- FMultiTouchManager.Free; // release multitouch early so that it does not hold reference to services
-
- // We don't need destroy application handle, if we receive it from out through ApplicationHWNDProc.
- if IsLibrary and FIsOutApplicationHWND and (FApplicationHWND <> 0) then
- begin
- WinApi.Windows.DestroyWindow(FApplicationHWND);
- FApplicationHWND := 0;
- end;
-end;
-
-function TPlatformWin.HandleMessage: Boolean;
-var
- Msg: TMsg;
-begin
- Result := False;
- if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
- begin
- Result := True;
- if Msg.Message <> WM_QUIT then
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- if FIsPostQuitMessage then
- PostQuitMessage(0);
- end
- else
- Application.Terminated := True;
- end;
-end;
-
-procedure TPlatformWin.WaitMessage;
-begin
- Winapi.Windows.WaitMessage;
-end;
-
-function TPlatformWin.GetDefaultTitle: string;
-begin
- Result := FDefaultTitle;
-end;
-
-function TPlatformWin.GetTitle: string;
-begin
- Result := FTitle;
-end;
-
-procedure TPlatformWin.SetTitle(const Value: string);
-begin
- if FTitle <> Value then
- begin
- if (Value = SAppDefault) and (FDefaultTitle <> '') then
- FTitle := FDefaultTitle
- else
- FTitle := Value;
- UpdateAppTitle;
- end;
-end;
-
-function TPlatformWin.GetVersionString: string;
-const
- UndefinedVersionInfo = Cardinal(-1);
-var
- VersionInfo: Cardinal;
-begin
- VersionInfo := GetFileVersion(ParamStr(0));
- if VersionInfo <> UndefinedVersionInfo then
- Result := Format('%d.%d', [HiWord(VersionInfo), LoWord(VersionInfo)])
- else
- Result := string.Empty;
-end;
-
-procedure TPlatformWin.UpdateApplicationHwnd;
-var
- OldApplicationHandler: HWND;
-begin
- OldApplicationHandler := FApplicationHWND;
-
- // The first, we try to extract application handle from IDE.
- if Assigned(FApplicationHWNDProc) then
- begin
- FApplicationHWND := FApplicationHWNDProc;
- FIsOutApplicationHWND := FApplicationHWND <> 0;
- end;
-
- // If IDE or user doesn't set outter application handle, we create our own, if it wasn't created before.
- if FApplicationHWND = 0 then
- begin
- FApplicationHWND := CreateAppHandle;
- FIsOutApplicationHWND := False;
- end;
-
- if OldApplicationHandler <> FApplicationHWND then
- UpdateAppTitle;
-end;
-
-procedure TPlatformWin.UpdateAppTitle;
-begin
- if FApplicationHWND <> 0 then
- begin
- { Don't update the title when working in the IDE }
- if (Application <> nil) and (Application.MainForm <> nil) and ((FTitle = SAppDefault) or
- (FTitle = GetDefaultTitle)) then
- SetWindowText(FApplicationHWND, PChar(Application.MainForm.Caption))
- else if FTitle.IsEmpty then
- SetWindowText(FApplicationHWND, PChar(GetDefaultTitle))
- else
- SetWindowText(FApplicationHWND, PChar(FTitle));
- end;
-end;
-
-procedure TPlatformWin.CaptionChangedHandler(const Sender: TObject; const Msg: System.Messaging.TMessage);
-begin
- UpdateAppTitle;
-end;
-
-procedure TPlatformWin.WakeMainThread(Sender: TObject);
-begin
- PostMessage(FThreadSyncHandle, WM_NULL, 0, 0);
-end;
-
-{ Text Service }
-
-function TTextServiceWin.GetMarketTextAttributes: TArray;
-var
- I: Integer;
-begin
- if FMarkedText.IsEmpty or (Length(CompAttrBuf) = 0) then
- begin
- Result := [];
- Exit;
- end;
-
- SetLength(Result, FMarkedText.Length);
- for I := 0 to FMarkedText.Length - 1 do
- case CompAttrBuf[I] of
- ATTR_INPUT:
- Result[I] := TMarkedTextAttribute.Input;
- ATTR_TARGET_CONVERTED:
- Result[I] := TMarkedTextAttribute.TargetConverted;
- ATTR_CONVERTED:
- Result[I] := TMarkedTextAttribute.Converted;
- ATTR_TARGET_NOTCONVERTED:
- Result[I] := TMarkedTextAttribute.TargetNotConverted;
- ATTR_INPUT_ERROR:
- Result[I] := TMarkedTextAttribute.InputError;
- end;
-end;
-
-procedure TTextServiceWin.SetMarkedTextCursorPosition(const Value: Integer);
-begin
- FMarkedTextCursorPosition := Value;
-end;
-
-procedure TTextServiceWin.InternalSetMarkedText(const AMarkedText: string);
-var
- TextInput: ITextInput;
-begin
- if FIsInputting and Supports(Owner, ITextInput, TextInput) then
- begin
- FMarkedText := AMarkedText;
- FMarkedTextCursorPosition := EnsureRange(FMarkedTextCursorPosition, 0, FMarkedText.Length);
- TextInput.IMEStateUpdated;
- end;
-end;
-
-procedure TTextServiceWin.InternalStartIMEInput;
-var
- TextInput: ITextInput;
-begin
- if not FIsInputting and Supports(Owner, ITextInput, TextInput) then
- begin
- FIsInputting := True;
- Reset;
- TextInput.StartIMEInput;
- end;
-end;
-
-procedure TTextServiceWin.MarkedTextPositionChanged;
-begin
- inherited;
- if FIsInputting then
- RefreshImePosition;
-end;
-
-procedure TTextServiceWin.RecreateImmContext(const AFormHandle: TWindowHandle);
-var
- IMC: HIMC;
- OldIMC: HIMC;
- WindowHandle: HWND;
-begin
- // Our styled controls doesn't have window handle, so form shares IMM context between all text styled controls.
- // It leads to issues in IMM with keeping in memory previous IMM composition string, when user switches focus
- // between out styled text input controls. Even if we rest composition string by ImmSetCompositionString,
- // OS sends WM_IME_COMPOSITION notification message with the previous composition string and this behavior
- // is different, when user uses different IMM provides. So the recreating context guarantees blank IME context
- // without previous states.
-
- WindowHandle := WindowHandleToPlatform(AFormHandle).Wnd;
- IMC := ImmCreateContext;
- OldIMC := ImmAssociateContext(WindowHandle, IMC);
- ImmDestroyContext(OldIMC);
- ImmReleaseContext(WindowHandle, IMC);
-end;
-
-procedure TTextServiceWin.RefreshImePosition;
-
- function FindForm: TCommonCustomForm;
- var
- TmpObject: TFmxObject;
- begin
- TmpObject := Owner.GetObject;
- while (TmpObject <> nil) and not (TmpObject is TCommonCustomForm) do
- TmpObject := TmpObject.Parent;
-
- if TmpObject is TCommonCustomForm then
- Result := TCommonCustomForm(TmpObject)
- else
- Result := nil;
- end;
-
-var
- Form: TCommonCustomForm;
-begin
- inherited;
- Form := FindForm;
- if Form <> nil then
- PlatformWin.ImmManager[Form].UpdateIMEWindowPosition;
-end;
-
-procedure TTextServiceWin.Reset;
-begin
- CompAttrBuf := nil;
- FMarkedText := string.Empty;
- FMarkedTextCursorPosition := 0;
-end;
-
-function TTextServiceWin.InternalGetMarkedText: string;
-begin
- Result := FMarkedText;
-end;
-
-procedure TTextServiceWin.CaretPositionChanged;
-begin
- inherited;
- if FIsInputting then
- RefreshImePosition;
-end;
-
-function TTextServiceWin.TargetClausePosition: TPoint;
-begin
- Result := CaretPosition;
- Result.X := Result.X + MarkedTextCursorPosition;
-end;
-
-procedure TTextServiceWin.InternalEndIMEInput;
-var
- TextInput: ITextInput;
-begin
- if FIsInputting and Supports(Owner, ITextInput, TextInput) then
- begin
- FIsInputting := False;
- FMarkedTextCursorPosition := 0;
- TextInput.EndIMEInput;
- FMarkedText := string.Empty;
- end;
-end;
-
-procedure TTextServiceWin.EnterControl(const AFormHandle: TWindowHandle);
-var
- WindowHandle: HWND;
-begin
- RaiseIfNil(AFormHandle, 'AFormHandle');
-
- WindowHandle := WindowHandleToPlatform(AFormHandle).Wnd;
- if TPlatformServices.Current.SupportsPlatformService(IFMXWBService) then
- SetFocus(WindowHandle);
-
- if ImeMode <> TImeMode.imDisable then
- RecreateImmContext(AFormHandle);
- TImeModeHelper.SetIme(WindowHandle, ImeMode);
-end;
-
-procedure TTextServiceWin.ExitControl(const AFormHandle: TWindowHandle);
-begin
- RaiseIfNil(AFormHandle, 'AFormHandle');
-
- if ImeMode <> TImeMode.imDisable then
- RecreateImmContext(AFormHandle);
-
- Reset;
- TImeModeHelper.ResetIme(WindowHandleToPlatform(AFormHandle).Wnd, ImeMode);
-end;
-
-procedure TTextServiceWin.DrawSingleLine(const ACanvas: TCanvas; const ARect: TRectF; const AFirstVisibleChar: Integer;
- const AFont: TFont; const AOpacity: Single; const AFlags: TFillTextFlags; const ATextAlign: TTextAlign;
- const AVTextAlign: TTextAlign = TTextAlign.Center; const AWordWrap: Boolean = False);
-var
- S: string;
-begin
- S := CombinedText;
- S := S.Substring(AFirstVisibleChar - 1, S.Length - AFirstVisibleChar + 1);
- DrawSingleLine(ACanvas, S, ARect, AFont, AOpacity, AFlags, ATextAlign, AVTextAlign, AWordWrap);
-end;
-
-procedure TTextServiceWin.DrawSingleLine(const ACanvas: TCanvas; const S: string; const ARect: TRectF; const Font: TFont;
- const AOpacity: Single; const Flags: TFillTextFlags; const ATextAlign: TTextAlign;
- const AVTextAlign: TTextAlign = TTextAlign.Center; const AWordWrap: Boolean = False);
-
- procedure UnderlineRegion(const ARegions: TRegion);
- var
- I: Integer;
- Region: TRectF;
- HalfThickness: Single;
- StartPoint, EndPoint: TPointF;
- begin
- HalfThickness := ACanvas.Stroke.Thickness / 2;
- for I := Low(ARegions) to High(ARegions) do
- begin
- Region := ACanvas.AlignToPixel(ARegions[I]);
-
- StartPoint := TPointF.Create(Region.Left, Region.Bottom);
- StartPoint.Offset(-HalfThickness, -HalfThickness);
- EndPoint := Region.BottomRight;
- EndPoint.Offset(-HalfThickness, -HalfThickness);
- ACanvas.DrawLine(StartPoint, EndPoint, AOpacity);
- end;
- end;
-
- procedure UnderlineMarkedText(const ALayout: TTextLayout; const AAttributes: TArray);
- var
- SavedState: TCanvasSaveState;
- Region: TRegion;
- TextRange: TTextRange;
- PositionInLine: Integer;
- I: Integer;
- begin
- SavedState := ACanvas.SaveState;
- try
- ACanvas.Stroke.Assign(ACanvas.Fill);
- ACanvas.Stroke.Thickness := 2;
- ACanvas.Stroke.Dash := TStrokeDash.Solid;
- for I := 0 to FMarkedText.Length - 1 do
- begin
- case AAttributes[I] of
- TMarkedTextAttribute.Input:
- begin
- ACanvas.Stroke.Thickness := 1;
- ACanvas.Stroke.Dash := TStrokeDash.Dash
- end;
- TMarkedTextAttribute.TargetConverted:
- begin
- ACanvas.Stroke.Thickness := 2;
- ACanvas.Stroke.Dash := TStrokeDash.Solid;
- end;
- TMarkedTextAttribute.Converted:
- begin
- ACanvas.Stroke.Thickness := 1;
- ACanvas.Stroke.Dash := TStrokeDash.Solid;
- end;
- TMarkedTextAttribute.TargetNotConverted:
- begin
- ACanvas.Stroke.Thickness := 4;
- ACanvas.Stroke.Dash := TStrokeDash.Solid;
- end;
- TMarkedTextAttribute.InputError:
- begin
- ACanvas.Stroke.Thickness := 1;
- ACanvas.Stroke.Dash := TStrokeDash.Dot
- end;
- end;
-
- // CaretPosition -> MarkedTextPosition
- if CaretPosition.X > S.Length - FMarkedText.Length then
- PositionInLine := S.Length - FMarkedText.Length
- else
- PositionInLine := CaretPosition.X;
- TextRange := TTextRange.Create(PositionInLine + I, 1);
-
- Region := ALayout.RegionForRange(TextRange);
- UnderlineRegion(Region);
- end;
- finally
- ACanvas.RestoreState(SavedState);
- end;
- end;
-
-var
- Layout: TTextLayout;
- Attributes: TArray;
-begin
- Layout := TTextLayoutManager.TextLayoutByCanvas(ACanvas.ClassType).Create;
- try
- Layout.BeginUpdate;
- try
- Layout.TopLeft := ARect.TopLeft;
- Layout.MaxSize := TPointF.Create(ARect.Width, ARect.Height);
- Layout.WordWrap := AWordWrap;
- Layout.HorizontalAlign := ATextAlign;
- Layout.VerticalAlign := AVTextAlign;
- Layout.Font := Font;
- Layout.Color := ACanvas.Fill.Color;
- Layout.Opacity := AOpacity;
- Layout.RightToLeft := TFillTextFlag.RightToLeft in Flags;
- Layout.Text := S;
- finally
- Layout.EndUpdate;
- end;
- Layout.RenderLayout(ACanvas);
-
- Attributes := GetMarketTextAttributes;
- if not FMarkedText.IsEmpty and (Length(Attributes) > 0) then
- UnderlineMarkedText(Layout, Attributes);
- finally
- FreeAndNil(Layout);
- end;
-end;
-
-function TTextServiceWin.HasMarkedText: Boolean;
-begin
- Result := not FMarkedText.IsEmpty;
-end;
-
-function TPlatformWin.GetTextServiceClass: TTextServiceClass;
-begin
- Result := TTextServiceWin;
-end;
-
-{ Window }
-
-procedure TWinWindowHandle.CalcNearestIntegerMultiple;
-const
- MaxMul = 9;
-var
- I: Integer;
-begin
- if not SameValue(Frac(Scale), 0, TEpsilon.Scale) then
- begin
- FNearestIntegerMultiple := Round(Scale);
- for I := 2 to MaxMul do
- if SameValue(Frac(Scale * I), 0, TEpsilon.Scale) then
- begin
- FNearestIntegerMultiple := Trunc(Scale * I);
- Break;
- end;
- end
- else
- FNearestIntegerMultiple := Round(Scale);
-end;
-
-procedure TWinWindowHandle.CorrectWindowSize(const WindowPos: PWindowPos);
-var
- LClientSize: TSizeF;
- WndClientSize: TSize;
- WndClientOffset: TPoint;
- LClientRect, LWindowRect: TRect;
- FinalScale: TPointF;
-begin
- GetClientRect(Wnd, LClientRect);
- ClientToScreen(Wnd, LClientRect.TopLeft);
- ClientToScreen(Wnd, LClientRect.BottomRight);
- GetWindowRect(Wnd, LWindowRect);
-
- WndClientOffset := (LClientRect.TopLeft - LWindowRect.TopLeft) + (LWindowRect.BottomRight - LClientRect.BottomRight);
- WndClientSize := TSize.Create(WindowPos^.cx - WndClientOffset.X, WindowPos^.cy - WndClientOffset.Y);
- if SameValue(Frac(WndClientSize.Width / Scale), 0, TEpsilon.Scale) then
- FinalScale.X := Scale
- else
- FinalScale.X := NearestIntegerMultiple;
- if SameValue(Frac(WndClientSize.Height / Scale), 0, TEpsilon.Scale) then
- FinalScale.Y := Scale
- else
- FinalScale.Y := NearestIntegerMultiple;
-
- LClientSize := TSizeF.Create(Round(WndClientSize.Width / FinalScale.X), Round(WndClientSize.Height / FinalScale.Y));
-
- WindowPos^.cx := Round(LClientSize.Width * FinalScale.X) + WndClientOffset.X;
- WindowPos^.cy := Round(LClientSize.Height * FinalScale.Y) + WndClientOffset.Y;
-end;
-
-class procedure TWinWindowHandle.SetForcedScale(NewScale: Single);
-begin
- if NewScale < 1 then
- NewScale := 1;
- if not SameValue(FForcedScale, NewScale, TEpsilon.Scale) then
- FForcedScale := NewScale;
-end;
-
-constructor TWinWindowHandle.Create(const AForm: TCommonCustomForm; const AWnd: HWND);
-begin
- inherited Create;
- if not (TCanvasManager.DefaultCanvas.InheritsFrom(TCustomCanvasD2D)) or GlobalUseGPUCanvas then
- FForcedScale := 1;
- FForm := AForm;
- FWnd := AWnd;
- GetWindowRect(Wnd, FWndBounds);
- FBounds := TRectF.Create(FWndBounds.Left, FWndBounds.Top, FWndBounds.Width / Scale, FWndBounds.Height / Scale);
- UpdateClientSize;
-end;
-
-function FindWindow(Handle: HWND): TCommonCustomForm;
-begin
- Result := nil;
- if (Handle <> 0) then
- begin
- if GlobalFindAtomW(PChar(WindowAtomString)) = WindowAtom then
- Result := Pointer(GetProp(Handle, MakeIntAtom(WindowAtom)))
- else
- Result := nil;
- end;
-end;
-
-function FmxHandleToHWND(const FmxHandle: TWindowHandle): HWND;
-begin
- if FmxHandle <> nil then
- Result := WindowHandleToPlatform(FmxHandle).Wnd
- else
- Result := 0;
-end;
-
-function WindowHandleToPlatform(const AHandle: TWindowHandle): TWinWindowHandle;
-begin
- Result := TWinWindowHandle(AHandle);
-end;
-
-function FormToHWND(Form: TCommonCustomForm): HWND;
-begin
- if (Form <> nil) and (Form.Handle is TWinWindowHandle) then
- Result := TWinWindowHandle(Form.Handle).Wnd
- else
- Result := 0;
-end;
-
-function ApplicationHWND: HWND;
-begin
- if PlatformWin <> nil then
- Result := PlatformWin.GetApplicationHWND
- else
- Result := 0;
-end;
-
-destructor TWinWindowHandle.Destroy;
-begin
- FreeBuffer;
- FZOrderManager.Free;
- inherited;
-end;
-
-procedure TWinWindowHandle.ScaleChanged;
-begin
- CalcNearestIntegerMultiple;
-
- FWndClientSize := TSize.Create(Ceil(FClientSize.Width * Scale), Ceil(FClientSize.Height * Scale));
- FClientSize := TSizeF.Create(FWndClientSize.Width / Scale, FWndClientSize.Height / Scale);
- SetWindowSizeByClientSize;
-
- Form.RecreateResources;
-end;
-
-procedure TWinWindowHandle.DpiChanged;
-var
- NewScale: Single;
-begin
- NewScale := NewDpi / StandardDpi;
- if not SameValue(FCurrentScale, NewScale, TEpsilon.Scale) then
- begin
- FCurrentScale := NewScale;
- ScaleChanged;
- end;
-end;
-
-procedure TWinWindowHandle.CreateBuffer;
-begin
- FBufferSize := TSize.Create(Width, Height);
- FBitmapInfo.bmiHeader.biSize := SizeOf(TBitmapInfoHeader);
- FBitmapInfo.bmiHeader.biPlanes := 1;
- FBitmapInfo.bmiHeader.biBitCount := 32;
- FBitmapInfo.bmiHeader.biCompression := BI_RGB;
- FBitmapInfo.bmiHeader.biWidth := FBufferSize.Width;
- if FBitmapInfo.bmiHeader.biWidth <= 0 then
- FBitmapInfo.bmiHeader.biWidth := 1;
- FBitmapInfo.bmiHeader.biHeight := -FBufferSize.Height;
- if FBitmapInfo.bmiHeader.biHeight >= 0 then
- FBitmapInfo.bmiHeader.biHeight := -1;
- try
- FBufferBitmap := CreateDIBSection(0, FBitmapInfo, DIB_RGB_COLORS, Pointer(FBufferBits), 0, 0);
- if FBufferBits = nil then
- RaiseLastOSError;
- try
- FBufferHandle := CreateCompatibleDC(0);
- if FBufferHandle = 0 then
- RaiseLastOSError;
- try
- if SelectObject(FBufferHandle, FBufferBitmap) = 0 then
- RaiseLastOSError;
- except
- DeleteDC(FBufferHandle);
- FBufferHandle := 0;
- raise;
- end;
- except
- DeleteObject(FBufferBitmap);
- FBufferBits := nil;
- raise;
- end;
- except
- FBufferBitmap := 0;
- raise;
- end;
-end;
-
-procedure TWinWindowHandle.ResizeBuffer(const Width, Height: Integer);
-begin
- if FBufferHandle = 0 then
- CreateBuffer(Width, Height)
- else if (FBitmapInfo.bmiHeader.biWidth <> Width) or (Abs(FBitmapInfo.bmiHeader.biHeight) <> Height) then
- begin
- FreeBuffer;
- CreateBuffer(Width, Height)
- end;
-end;
-
-function TWinWindowHandle.GetClientSize: TSize;
-begin
- Result := FClientSize.Round;
-end;
-
-function TWinWindowHandle.GetNearestIntegerMultiple: Integer;
-begin
- if FNearestIntegerMultiple = 0 then
- CalcNearestIntegerMultiple;
- Result := FNearestIntegerMultiple;
-end;
-
-procedure TWinWindowHandle.SetWindowSizeByClientSize;
-var
- LClientRect, LWindowRect: TRect;
- NewWindowSize: TSize;
- BorderThickness: TSize;
-begin
- GetClientRect(Wnd, LClientRect);
- GetWindowRect(Wnd, LWindowRect);
-
- BorderThickness := TSize.Create(LWindowRect.Width - LClientRect.Width, LWindowRect.Height - LClientRect.Height);
- NewWindowSize := FWndClientSize + BorderThickness;
-
- if LWindowRect.Size <> NewWindowSize then
- begin
- FWndBounds.Width := NewWindowSize.Width;
- FWndBounds.Height := NewWindowSize.Height;
- FBounds.Width := NewWindowSize.Width / Scale;
- FBounds.Height := NewWindowSize.Height / Scale;
- SetWindowPos(Wnd, 0, LWindowRect.Left, LWindowRect.Top, NewWindowSize.Width, NewWindowSize.Height,
- SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE);
- end;
-end;
-
-procedure TWinWindowHandle.SetClientSize(const Value: TSize);
-begin
- if FClientSize.Round <> Value then
- begin
- FWndClientSize := TSize.Create(Ceil(Value.Width * Scale), Ceil(Value.Height * Scale));
- FClientSize := TSizeF.Create(FWndClientSize.Width / Scale, FWndClientSize.Height / Scale);
- SetWindowSizeByClientSize;
- end;
-end;
-
-function TWinWindowHandle.GetBounds: TRect;
-begin
- Result := FBounds.Ceiling;
-end;
-
-procedure TWinWindowHandle.SetBounds(const Value: TRect);
-var
- CurrentWndRect: TRect;
-begin
- if FBounds.Round <> Value then
- begin
- FWndBounds := TRect.Create(Value.Left, Value.Top, Value.Left + Ceil(Value.Width * Scale),
- Value.Top + Ceil(Value.Height * Scale));
- FBounds := TRectF.Create(FWndBounds.Left, FWndBounds.Top, FWndBounds.Left + FWndBounds.Width / Scale,
- FWndBounds.Top + FWndBounds.Height / Scale);
- GetWindowRect(Wnd, CurrentWndRect);
- if CurrentWndRect <> FWndBounds then
- SetWindowPos(Wnd, 0, FWndBounds.Left, FWndBounds.Top, FWndBounds.Width, FWndBounds.Height,
- SWP_NOACTIVATE or SWP_NOZORDER);
- UpdateClientSize;
- end;
-end;
-
-function TWinWindowHandle.GetWndBounds: TRect;
-begin
- Result := FWndBounds;
-end;
-
-procedure TWinWindowHandle.SetWndBounds(const Value: TRect);
-var
- CurrentWndRect: TRect;
-begin
- if FWndBounds <> Value then
- begin
- FWndBounds := Value;
- FBounds := TRectF.Create(Value.Left, Value.Top, Value.Left + Value.Width / Scale, Value.Top + Value.Height / Scale);
- GetWindowRect(Wnd, CurrentWndRect);
- if CurrentWndRect <> Value then
- SetWindowPos(Wnd, 0, Value.Left, Value.Top, Value.Width, Value.Height,
- SWP_NOACTIVATE or SWP_NOZORDER);
- UpdateClientSize;
- end;
-end;
-
-function TWinWindowHandle.GetWndClientSize: TSize;
-begin
- Result := FWndClientSize;
-end;
-
-procedure TWinWindowHandle.FreeBuffer;
-begin
- if FBufferHandle <> 0 then
- begin
- DeleteDC(FBufferHandle);
- FBufferHandle := 0;
- end;
- if FBufferBitmap <> 0 then
- begin
- DeleteObject(FBufferBitmap);
- FBufferBitmap := 0;
- end;
-end;
-
-function TWinWindowHandle.GetScale: Single;
-begin
- if not SameValue(FForcedScale, 0, TEpsilon.Scale) then
- Result := FForcedScale
- else if not SameValue(FCurrentScale, 0, TEpsilon.Scale) then
- Result := FCurrentScale
- else
- Result := GetWndScale(FWnd);
-
- FCurrentScale := Result;
-end;
-
-function TWinWindowHandle.GetTransparency: Boolean;
-begin
- Result := (Form <> nil) and Form.Transparency;
-end;
-
-function TWinWindowHandle.GetZOrderManager: TWinZOrderManager;
-begin
- if FZOrderManager = nil then
- FZOrderManager := TWinZOrderManager.Create(Self);
- Result := FZOrderManager;
-end;
-
-procedure TWinWindowHandle.UpdateClientSize;
-var
- R: TRect;
- OldWndClientSize: TSize;
-begin
- GetClientRect(Wnd, R);
- OldWndClientSize := FWndClientSize;
- FWndClientSize := TSize.Create(R.Width, R.Height);
- FClientSize := TSizeF.Create(FWndClientSize.Width / Scale, FWndClientSize.Height / Scale);
-
- // We need to update canvas size, based on new Client Size value.
- if (OldWndClientSize <> FWndClientSize) and FForm.IsHandleAllocated then
- TOpenForm(FForm).ResizeHandle;
-end;
-
-procedure TWinWindowHandle.UpdateLayer;
-var
- Blend: TBlendFunction;
- Origin, Size, BitmapOrigin: TPoint;
- ContextObject: IContextObject;
-begin
- if FBufferHandle <> 0 then
- begin
- { Copy from Context }
- if Supports(Form, IContextObject, ContextObject) and (ContextObject.Context <> nil) then
- ContextObject.Context.CopyToBits(FBufferBits, Form.Width * 4, Rect(0, 0, Form.Width, Form.Height));
- { Update }
- Origin := WindowHandleToPlatform(Form.Handle).WndBounds.TopLeft;
- Size := TPoint(FBufferSize);
- Blend.BlendOp := AC_SRC_OVER;
- Blend.AlphaFormat := $01; // AC_SRC_ALPHA;
- Blend.BlendFlags := 0;
- Blend.SourceConstantAlpha := $FF;
- BitmapOrigin := Point(0, 0);
- UpdateLayeredWindow(Wnd, 0, @Origin, @Size, FBufferHandle, @BitmapOrigin, $00000000, @Blend, ULW_ALPHA);
- end;
-end;
-
-function TWinWindowHandle.FormToWnd(const Rect: TRectF): TRectF;
-begin
- Result := TRectF.Create(Rect.Left * Scale, Rect.Top * Scale, Rect.Right * Scale, Rect.Bottom * Scale);
-end;
-
-function TWinWindowHandle.WndToForm(const Rect: TRect): TRectF;
-begin
- Result := WndToForm(TRectF.Create(Rect));
-end;
-
-function TWinWindowHandle.WndToForm(const Rect: TRectF): TRectF;
-begin
- Result := TRectF.Create(Rect.Left / Scale, Rect.Top / Scale, Rect.Right / Scale, Rect.Bottom / Scale);
-end;
-
-function WMPaint(HWND: HWND; uMsg: UINT; wParam: wParam; LPARAM: LPARAM): LRESULT; stdcall;
-var
- I, rgnStatus: Integer;
- Region: HRgn;
- RegionSize: DWORD;
- RegionData: PRgnData;
- R: TRect;
- LForm: TCommonCustomForm;
- UpdateRects, InPaintUpdateRects: TUpdateRects;
- PS: TPaintStruct;
- Wnd: Winapi.Windows.HWND;
- PaintControl: IPaintControl;
-begin
- LForm := FindWindow(HWND);
- if LForm <> nil then
- begin
- Wnd := FormToHWND(LForm);
- GetUpdateRect(Wnd, R, False);
- Region := CreateRectRgn(R.Left, R.Top, R.Right, R.Bottom);
- if Region <> 0 then
- try
- rgnStatus := GetUpdateRgn(Wnd, Region, False);
- if (rgnStatus = 2) or (rgnStatus = 3) then
- begin
- RegionSize := GetRegionData(Region, $FFFF, nil);
- if RegionSize > 0 then
- begin
- GetMem(RegionData, RegionSize);
- try
- if RegionSize = GetRegionData(Region, RegionSize, RegionData) then
- begin
- SetLength(UpdateRects, RegionData.rdh.nCount);
- for I := 0 to RegionData.rdh.nCount - 1 do
- UpdateRects[I] := WindowHandleToPlatform(LForm.Handle).WndToForm(PRgnRects(@RegionData.buffer[0])[I]);
- end;
- finally
- FreeMem(RegionData, RegionSize);
- end;
- if Supports(LForm, IPaintControl, PaintControl) then
- begin
- PaintControl.ContextHandle := BeginPaint(Wnd, PS);
- try
- if PlatformWin.FInPaintUpdateRects.TryGetValue(LForm.Handle, InPaintUpdateRects) and
- (Length(InPaintUpdateRects) > 0) then
- begin
- // add update rects from FInPaintUpdateRects
- for I := 0 to High(InPaintUpdateRects) do
- begin
- SetLength(UpdateRects, Length(UpdateRects) + 1);
- UpdateRects[High(UpdateRects)] := WindowHandleToPlatform(LForm.Handle).WndToForm(InPaintUpdateRects[I]);
- end;
- end;
- PaintControl.PaintRects(UpdateRects);
- if PlatformWin.FInPaintUpdateRects.TryGetValue(LForm.Handle, InPaintUpdateRects) and
- (Length(InPaintUpdateRects) > 0) then
- begin
- // paint second time - when Repaint called in painting
- PlatformWin.FInPaintUpdateRects.TryGetValue(LForm.Handle, UpdateRects);
- SetLength(InPaintUpdateRects, 0);
- PlatformWin.FInPaintUpdateRects.AddOrSetValue(LForm.Handle, InPaintUpdateRects);
- PaintControl.PaintRects(UpdateRects);
- end;
- PaintControl.ContextHandle := 0;
- finally
- EndPaint(Wnd, PS);
- end;
- end;
- end;
- end;
- finally
- DeleteObject(Region);
- end;
- Result := DefWindowProc(HWND, uMsg, wParam, LPARAM);
- end
- else
- Result := DefWindowProc(HWND, uMsg, wParam, LPARAM);
-end;
-
-// When the WM_GESTURENOTIFY message is received, use SetGestureConfig to specify the gestures to receive.
-// This message should always be bubbled up using the DefWindowProc function.
-procedure WMGestureNotify(const AForm: TCommonCustomForm; uMsg: UINT; AGestureNotify: LPARAM);
-const
- // Gestures
- CPan: array [Boolean] of Cardinal = (0, GC_PAN);
- CZoom: array [Boolean] of Cardinal = (0, GC_ZOOM);
- CRotate: array [Boolean] of Cardinal = (0, GC_ROTATE);
- CPressAndTap: array [Boolean] of Cardinal = (0, GC_PRESSANDTAP);
- CTwoFingerTap: array [Boolean] of Cardinal = (0, GC_TWOFINGERTAP);
-var
- LPoint: TPoint;
- LPointF: TPointF;
- LControl: TComponent;
- LConfigs: array of TGestureConfig;
- LGestures: TInteractiveGestures;
- LObj: IControl;
- LGObj: IGestureControl;
- LGestureNotify: ^GESTURENOTIFYSTRUCT;
-begin
- LGestureNotify := Pointer(AGestureNotify);
-
- // Get the location of the gesture.
- LPoint := SmallPointToPoint(LGestureNotify.ptsLocation);
- LPointF := TPointF.Create(LPoint.X, LPoint.Y);
-
- // Find the object that the gesture belongs to.
- LObj := AForm.ObjectAtPoint(LPointF);
- if LObj <> nil then
- LControl := LObj.GetObject
- else
- LControl := AForm;
-
- if Supports(LControl, IGestureControl, LGObj) then
- LGestures := LGObj.GetListOfInteractiveGestures;
-
- SetLength(LConfigs, 5);
- ZeroMemory(@LConfigs[0], SizeOf(GestureConfig) * 5);
-
- // Pan gesture & options
- LConfigs[0].dwID := GID_PAN;
- LConfigs[0].dwWant := CPan[TInteractiveGesture.Pan in LGestures] or GC_PAN_WITH_SINGLE_FINGER_VERTICALLY or
- GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY or GC_PAN_WITH_INERTIA;
- LConfigs[0].dwBlock := CPan[not (TInteractiveGesture.Pan in LGestures)] or GC_PAN_WITH_GUTTER;
-
- // Zoom gesture
- LConfigs[1].dwID := GID_ZOOM;
- LConfigs[1].dwWant := CZoom[TInteractiveGesture.Zoom in LGestures];
- LConfigs[1].dwBlock := CZoom[not (TInteractiveGesture.Zoom in LGestures)];
-
- // Rotate gesture
- LConfigs[2].dwID := GID_ROTATE;
- LConfigs[2].dwWant := CRotate[TInteractiveGesture.Rotate in LGestures];
- LConfigs[2].dwBlock := CRotate[not (TInteractiveGesture.Rotate in LGestures)];
-
- // TwoFingerTap gesture
- LConfigs[3].dwID := GID_TWOFINGERTAP;
- LConfigs[3].dwWant := CTwoFingerTap[TInteractiveGesture.TwoFingerTap in LGestures];
- LConfigs[3].dwBlock := CTwoFingerTap[not (TInteractiveGesture.TwoFingerTap in LGestures)];
-
- // PressAnTap gesture
- LConfigs[4].dwID := GID_PRESSANDTAP;
- LConfigs[4].dwWant := CPressAndTap[TInteractiveGesture.PressAndTap in LGestures];
- LConfigs[4].dwBlock := CPressAndTap[not (TInteractiveGesture.PressAndTap in LGestures)];
-
- SetGestureConfig(FormToHWND(AForm), 0, Length(LConfigs), @LConfigs[0], SizeOf(TGestureConfig));
-end;
-
-function WMGesture(const AForm: TCommonCustomForm; uMsg: UINT; AParam: wParam; AGestureInfo: LPARAM): LRESULT;
-var
- LPoint: TPointF;
- LControl: TComponent;
- LGestureInfo: GestureInfo;
- EventInfo: TGestureEventInfo;
- Obj: IControl;
- LGObj: IGestureControl;
-begin
- Result := 0;
- ZeroMemory(@LGestureInfo, SizeOf(LGestureInfo));
- LGestureInfo.cbSize := SizeOf(LGestureInfo);
- if GetGestureInfo(AGestureInfo, LGestureInfo) then
- try
- ZeroMemory(@EventInfo, SizeOf(EventInfo));
- EventInfo.GestureID := LGestureInfo.dwID + igiFirst;
-
- // Get the control
- LPoint := TPointF.Create(LGestureInfo.ptsLocation.X, LGestureInfo.ptsLocation.Y);
- Obj := AForm.ObjectAtPoint(LPoint);
- if Obj <> nil then
- LControl := Obj.GetObject
- else
- LControl := AForm;
-
- if EventInfo.GestureID = igiBegin then
- CapturedGestureControl := LControl;
-
- // Don't pass GID_BEGIN and GID_END to the control
- if (EventInfo.GestureID <> igiBegin) and
- (EventInfo.GestureID <> igiEnd) then
- begin
- // Set EventInfo fields from LGestureInfo
- EventInfo.Location := AForm.ScreenToClient(LPoint);
- EventInfo.Flags := [];
- if LGestureInfo.dwFlags and GF_BEGIN = GF_BEGIN then
- Include(EventInfo.Flags, TInteractiveGestureFlag.gfBegin);
- if LGestureInfo.dwFlags and GF_INERTIA = GF_INERTIA then
- Include(EventInfo.Flags, TInteractiveGestureFlag.gfInertia);
- if LGestureInfo.dwFlags and GF_END = GF_END then
- Include(EventInfo.Flags, TInteractiveGestureFlag.gfEnd);
- case EventInfo.GestureID of
- igiPan:
- begin
- EventInfo.Distance := Cardinal(LGestureInfo.ullArguments);
- EventInfo.InertiaVector :=
- TPointF(SmallPointToPoint(InertiaVectorFromArgument(LGestureInfo.ullArguments)));
- end;
- igiZoom, igiTwoFingerTap:
- EventInfo.Distance := Cardinal(LGestureInfo.ullArguments);
- igiPressAndTap:
- begin
- // ullArguments is distance/offset. Add to Location to make TapLocation
- LPoint := TPointF(SmallPointToPoint(TSmallPoint(Cardinal(LGestureInfo.ullArguments))));
- // EventInfo.TapLocation := AForm.ScreenToClient(TPointF(LPoint.X + LGestureInfo.ptsLocation.X, LPoint.Y + LGestureInfo.ptsLocation.Y));
- end;
- igiRotate:
- EventInfo.Angle := RotateAngleFromArgument(LGestureInfo.ullArguments);
- end;
- // send message to the control
- if Supports(CapturedGestureControl, IGestureControl, LGObj) then
- LGObj.CMGesture(EventInfo);
- end
- else
- Result := DefWindowProc(FormToHWND(AForm), uMsg, AParam, AGestureInfo);
-
- if EventInfo.GestureID = igiEnd then
- CapturedGestureControl := nil;
-
- finally
- CloseGestureInfoHandle(AGestureInfo);
- end;
-end;
-
-procedure InitializeMultiTouch(const AForm: TCommonCustomForm);
-begin
- if PlatformWin.FMultiTouchManager = nil then
- PlatformWin.FMultiTouchManager := TMultiTouchManagerWin.Create(AForm)
- else if PlatformWin.FMultiTouchManager.Parent <> AForm then
- PlatformWin.FMultiTouchManager.Parent := AForm;
-end;
-
-function WMTouch(const AForm: TCommonCustomForm; uMsg: UINT; TouchInputCount: wParam; TouchInputInfo: LPARAM): LRESULT;
-var
- TouchCount: Integer;
- Inputs: array of TTouchInput;
- Input: TTouchInput;
- I: Integer;
- Touches: TTouches;
- Action: TTouchAction;
- Point: TPointF;
- Control: IControl;
-begin
- Result := 0;
- TouchCount := LoWord(Cardinal(TouchInputCount));
- SetLength(Inputs, TouchCount);
- Action := TTouchAction.None;
-
- if GetTouchInputInfo(TouchInputInfo, TouchCount, @Inputs[0], SizeOf(TTouchInput)) then
- try
- SetLength(Touches, TouchCount);
- for I := 0 to TouchCount - 1 do
- begin
- Input := Inputs[I];
-
- if (Input.dwFlags and TOUCHEVENTF_DOWN) <> 0 then
- Action := TTouchAction.Down
- else if ((Input.dwFlags and TOUCHEVENTF_UP) <> 0) then
- Action := TTouchAction.Up
- else if ((Input.dwFlags and TOUCHEVENTF_MOVE) <> 0) then
- Action := TTouchAction.Move;
-
- // TOUCHINFO point coordinates is in 1/100 of a pixel
- Point := TPointF.Create(Input.X / 100, Input.Y / 100);
- Touches[I].Location := AForm.ScreenToClient(Point);
- end;
-
- if Length(Touches) = 1 then
- Control := AForm.ObjectAtPoint(Point)
- else if Length(Touches) = 2 then
- Control := AForm.ObjectAtPoint(AForm.ClientToScreen(Touches[0].Location.MidPoint(Touches[1].Location)))
- else
- Control := nil;
-
- InitializeMultiTouch(AForm);
- PlatformWin.FMultiTouchManager.SetEnabledGestures(PlatformWin.FEnabledInteractiveGestures);
- PlatformWin.FMultiTouchManager.HandleTouches(Touches, Action, Control);
- Result := DefWindowProc(FormToHWND(AForm), uMsg, TouchInputCount, TouchInputInfo);
- finally
- CloseTouchInputHandle(TouchInputInfo);
- end;
-end;
-
-procedure HandleMouseGestures(const AForm: TCommonCustomForm; uMsg: UINT; const X, Y: Single);
-var
- GestureObj: IGestureControl;
- Control: TComponent;
- Obj: IControl;
- Action: TTouchAction;
- Point: TPointF;
-begin
- if TWinTouchGestureEngine.Supported(AForm) then
- if not ((uMsg <> WM_LBUTTONDOWN) and (PlatformWin.FMultiTouchManager = nil)) then
- begin
- Point := TPointF.Create(X, Y);
- Obj := AForm.ObjectAtPoint(Point);
- if Obj <> nil then
- Control := Obj.GetObject
- else
- Control := AForm;
-
- if Supports(Control, IGestureControl, GestureObj) then
- begin
- Control := GestureObj.GetFirstControlWithGestureEngine;
- if Control <> nil then
- begin
- case uMsg of
- WM_MOUSEMOVE:
- Action := TTouchAction.Move;
- WM_LBUTTONDOWN:
- Action := TTouchAction.Down;
- WM_LBUTTONUP:
- Action := TTouchAction.Up;
- else
- Action := TTouchAction.None;
- end;
-
- InitializeMultiTouch(AForm);
- PlatformWin.FMultiTouchManager.HandleMouseGestures(Point, Action, Obj);
- end;
- end;
- end;
-end;
-
-//
-
-type
- PDestroyChildData = ^TDestroyChildData;
-
- TDestroyChildData = record
- Parent: HWND;
- Recreating: Boolean;
- end;
-
-var
- LastKeyIsDeadKey: Boolean = False;
- LastMousePos: TPoint;
-
-const
- ImpossibleMousePosition: TPoint = (X: Low(FixedInt); Y: Low(FixedInt));
-
-function WndProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
-var
- UpdateRects: array of TRectF;
- LForm: TCommonCustomForm;
- Wnd: Winapi.Windows.HWND;
- WindowBorder: TWindowBorderWin;
-
- procedure ProcessUpdateMessages;
- var
- Msg: TMsg;
- begin
- SetLength(UpdateRects, 1);
- UpdateRects[0] := TRectF.Create(TSmallPoint(Cardinal(wParam)).X, TSmallPoint(Cardinal(wParam)).Y,
- TSmallPoint(Cardinal(lParam)).X, TSmallPoint(Cardinal(lParam)).Y);
- while PeekMessage(Msg, hwnd, WM_ADDUPDATERECT, WM_ADDUPDATERECT, PM_REMOVE) do
- begin
- if Msg.Message = WM_QUIT then
- begin
- { Repost WM_QUIT messages }
- PostQuitMessage(Msg.wParam);
- Break;
- end;
- SetLength(UpdateRects, Length(UpdateRects) + 1);
- UpdateRects[High(UpdateRects)] := RectF(TSmallPoint(Cardinal(Msg.wParam)).X, TSmallPoint(Cardinal(Msg.wParam)).Y,
- TSmallPoint(Cardinal(Msg.lParam)).X, TSmallPoint(Cardinal(Msg.lParam)).Y);
- end;
- end;
-
- procedure PrepareClosePopups;
- begin
- if (Screen <> nil) and (LForm <> nil) and (not WindowHandleToPlatform(LForm.Handle).FDisableDeactivate) then
- begin
- if LForm.FormStyle = TFormStyle.Popup then
- Screen.PrepareClosePopups(LForm)
- else
- Screen.PrepareClosePopups(nil);
- end;
- end;
-
- procedure ClosePopupList;
- begin
- if (Screen <> nil) and (LForm <> nil) and (not WindowHandleToPlatform(LForm.Handle).FDisableDeactivate) then
- Screen.ClosePopupForms;
- end;
-
- procedure InitialActionsOfPopups;
- begin
- case uMsg of
- WM_NCLBUTTONDOWN, WM_NCRBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCLBUTTONDBLCLK, WM_NCRBUTTONDBLCLK, WM_NCMBUTTONDBLCLK:
- begin
- PrepareClosePopups;
- ClosePopupList;
- end;
- WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_MBUTTONDOWN, WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK, WM_MBUTTONDBLCLK:
- PrepareClosePopups;
- end;
- end;
-
- procedure FinalActionsOfPopups;
- begin
- case uMsg of
- WM_LBUTTONUP, WM_RBUTTONUP, WM_MBUTTONUP, WM_DESTROY:
- begin
- LForm := FindWindow(hwnd);
- ClosePopupList;
- end;
- end;
- end;
-
- function DispatchMouseWheelToPopups: Boolean;
- var
- I: Integer;
- Handled: Boolean;
- begin
- Handled := False;
- if Screen <> nil then
- for I := Screen.PopupFormCount - 1 downto 0 do
- if Screen.PopupForms[I].Visible then
- begin
- Screen.PopupForms[I].MouseWheel(KeysToShiftState(wParam), TSmallPoint(Cardinal(wParam)).Y, Handled);
- if Handled then
- Break;
- end;
- Result := Handled;
- end;
-
- procedure CurrentChar(Msg: tagMsg; var Key: Word; var Ch: WideChar; var Shift: TShiftState);
- begin
- Key := wParam;
- Ch := WideChar(Msg.wParam);
- Shift := KeyDataToShiftState(lParam);
- if (Ch >= ' ') then
- begin
- if ((Shift * [ssAlt, ssCtrl]) = [ssAlt, ssCtrl]) then
- begin
- // AltGr + Char (in German keyboard)
- Shift := Shift - [ssAlt, ssCtrl];
- end;
- if (([ssAlt, ssCtrl, ssCommand] * Shift) = []) then
- Key := 0;
- end;
- if ((([ssAlt, ssCtrl, ssCommand] * Shift) <> []) or (Ch < ' ')) and (Key > 0) then
- Ch := #0;
- end;
-
- procedure ScaleMousePos(const Handle: TWindowHandle; var P: TPoint);
- begin
- ScreenToClient(WindowHandleToPlatform(Handle).Wnd, P);
- P := TPoint.Create(Round(P.X / Handle.Scale), Round(P.Y / Handle.Scale));
- end;
-
-var
- R: TRect;
- P: TPoint;
- H: Boolean;
- Key: Word;
- Ch: WideChar;
- tme: TTRACKMOUSEEVENT;
- Message: TMessage;
- Shift: TShiftState;
- Placement: TWindowPlacement;
- Msg: tagMsg;
- PaintControl: IPaintControl;
- Obj: IControl;
- MenuDisplayed: Boolean;
- OldWindowState: TWindowState;
- CharMsg, DeadCharMsg: UInt32;
-const
- FlagZOrder: UINT = SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE;
-
-begin
-
- Result := 0;
- LForm := FindWindow(hwnd);
-
- Message.Msg := uMsg;
- Message.WParam := wParam;
- Message.LParam := lParam;
- Message.Result := 0;
- // Check to see if this is a design message
- if (LForm <> nil) and (LForm.Designer <> nil) and LForm.Designer.IsDesignMsg(LForm, Message) then
- Exit;
-
- if LForm <> nil then
- begin
- LForm.Dispatch(Message);
- Wnd := FormToHWND(LForm);
- try
- InitialActionsOfPopups;
- try
- case uMsg of
- WM_NCHITTEST,
- WM_NCACTIVATE,
- WM_NCADDUPDATERECT,
- WM_NCMOUSEMOVE, WM_NCLBUTTONDOWN, WM_NCLBUTTONUP,
- WM_NCCALCSIZE, WM_NCPAINT:
- Result := WMNCMessages(LForm, uMsg, wParam, lParam);
- $B000 + 74: // CM_DESTROYHANDLE
- begin
- if (LForm.ClassName = 'TFormContainerForm') and (wParam = 1) then
- begin
- // IDE parent recreate
- SetParent(Wnd, GetDesktopWindow);
- SetWindowPos(Wnd, 0, $A000, $A000, 10, 10, SWP_NOSIZE or SWP_NOZORDER);
- end;
- end;
- WM_DESTROY:
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- WM_ACTIVATE:
- begin
- if not ((TFmxFormState.Recreating in LForm.FormState) or (LForm.FormStyle = TFormStyle.Popup) or
- (WindowHandleToPlatform(LForm.Handle).FDisableDeactivate)) then
- begin
- if LoWord(wParam) <> 0 then
- begin
- if HiWord(wParam) = 0 then
- LForm.Activate;
- // If the window is minimized, then do nothing.
- end
- else
- begin
- PrepareClosePopups;
- LForm.Deactivate;
- ClosePopupList;
- end;
- end;
- Result := 0;
- end;
- WM_MOUSEACTIVATE:
- begin
- if not (TFmxFormState.Recreating in LForm.FormState) then
- begin
- if (LForm.FormStyle = TFormStyle.Popup) then
- Result := MA_NOACTIVATE
- else
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- // Default result if nothing happens
- end;
- end;
- WM_ERASEBKGND:
- begin
- Result := 1;
- end;
- WM_PAINT:
- begin
- Result := WMPaint(hwnd, uMsg, wParam, lParam);
- end;
- WM_DPICHANGED:
- begin
- WindowHandleToPlatform(LForm.Handle).DpiChanged(HiWord(wParam));
- Result := 0;
- end;
- WM_ADDUPDATERECT:
- begin
- ProcessUpdateMessages;
- if Supports(LForm, IPaintControl, PaintControl) then
- PaintControl.PaintRects(UpdateRects);
- WindowHandleToPlatform(LForm.Handle).UpdateLayer;
- end;
- WM_WINDOWPOSCHANGING:
- begin
- if ([csLoading, csDesigning] * LForm.ComponentState = [csLoading]) then
- begin
- if (LForm.Position in [TFormPosition.Default, TFormPosition.DefaultPosOnly]) and
- (LForm.WindowState <> TWindowState.wsMaximized) then
- begin
- PWindowPos(lParam)^.Flags := PWindowPos(lParam)^.Flags or SWP_NOMOVE;
- end;
- if (LForm.Position in [TFormPosition.Default, TFormPosition.DefaultSizeOnly]) and
- (LForm.BorderStyle in [TFmxFormBorderStyle.Sizeable, TFmxFormBorderStyle.SizeToolWin]) then
- begin
- PWindowPos(lParam)^.Flags := PWindowPos(lParam)^.Flags or SWP_NOSIZE;
- end;
- end;
- if (not ((PWindowPos(lParam)^.Flags and FlagZOrder) = FlagZOrder)) then
- begin
- if (Screen <> nil) and (LForm <> nil) and (not WindowHandleToPlatform(LForm.Handle).FDisableDeactivate)
- then
- begin
- if (LForm.FormStyle = TFormStyle.Popup) then
- ClosePopupList;
- end;
- end;
- if (not ((PWindowPos(lParam)^.Flags and SWP_NOSIZE) = SWP_NOSIZE)) then
- WindowHandleToPlatform(LForm.Handle).CorrectWindowSize(PWindowPos(lParam));
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- if (TFmxFormState.InDesigner in LForm.FormState) and (TFmxFormState.WasNotShown in LForm.FormState) then
- begin
- TOpenForm(LForm).ShowInDesigner;
- end;
- end;
- WM_WINDOWPOSCHANGED:
- begin
- Placement.Length := SizeOf(TWindowPlacement);
- GetWindowPlacement(hwnd, Placement);
- if (Application.MainForm <> nil) and (LForm = Application.MainForm)
- and (Placement.showCmd = SW_SHOWMINIMIZED) then
- begin
- PlatformWin.MinimizeApp;
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end
- else
- begin
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- if (PWindowPos(lParam)^.Flags and SWP_NOSIZE = 0) or
- (PWindowPos(lParam)^.Flags and SWP_NOMOVE = 0) then
- begin
- GetWindowRect(hwnd, R);
- WindowHandleToPlatform(LForm.Handle).WndBounds := R;
- R := WindowHandleToPlatform(LForm.Handle).Bounds;
- LForm.SetBounds(R.Left, R.Top, R.Width, R.Height);
- end;
- if PWindowPos(lParam)^.Flags and SWP_FRAMECHANGED = SWP_FRAMECHANGED then
- WindowHandleToPlatform(LForm.Handle).UpdateClientSize;
- { update state }
- PlatformWin.FDiableUpdateState := True;
- try
- OldWindowState := LForm.WindowState;
- Placement.Length := SizeOf(TWindowPlacement);
- GetWindowPlacement(hwnd, Placement);
- case Placement.showCmd of
- SW_SHOWMINIMIZED:
- LForm.WindowState := TWindowState.wsMinimized;
- SW_SHOWMAXIMIZED:
- LForm.WindowState := TWindowState.wsMaximized;
- else
- if csDesigning in LForm.ComponentState then
- begin
- { for using Metro-style interface in designer we set Maximized but we can change window size }
- if LForm.WindowState <> TWindowState.wsMaximized then
- LForm.WindowState := TWindowState.wsNormal;
- end
- else
- begin
- if not (TFmxFormState.WasNotShown in LForm.FormState) then
- LForm.WindowState := TWindowState.wsNormal;
- end;
- end;
- if OldWindowState <> LForm.WindowState then
- begin
- PostMessage(hwnd, WM_CLOSEMENU, 0, 0);
- PrepareClosePopups;
- ClosePopupList;
- end;
- finally
- PlatformWin.FDiableUpdateState := False;
- end;
- WMNCMessages(LForm, uMsg, wParam, lParam);
- end;
- end;
- WM_CLOSE:
- LForm.Close;
- WM_LBUTTONDOWN:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseDown(TMouseButton.mbLeft, MouseToShiftState(wParam), P.X, P.Y);
- HandleMouseGestures(LForm, uMsg, P.X, P.Y);
- end;
- WM_LBUTTONDBLCLK:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseDown(TMouseButton.mbLeft, MouseToShiftState(wParam) + [ssDouble], P.X, P.Y);
- end;
- WM_LBUTTONUP:
- begin
- WindowBorder := TWindowBorderWin(LForm.Border.WindowBorder);
- if LForm.Border.IsSupported and WindowBorder.NCClick then
- Result := WMNCMessages(LForm, uMsg, wParam, lParam)
- else
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseUp(TMouseButton.mbLeft, MouseToShiftState(wParam), P.X, P.Y);
- end;
- HandleMouseGestures(LForm, uMsg, P.X, P.Y);
- end;
- WM_RBUTTONDOWN, WM_RBUTTONDBLCLK:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- Obj := IControl(LForm.ObjectAtPoint(P));
- if (Obj <> nil) and (Obj.GetObject <> nil) and not (csDesigning in Obj.GetObject.ComponentState) then
- begin
- Obj.SetFocus;
- MenuDisplayed := Obj.ShowContextMenu(P);
- end
- else
- MenuDisplayed := False;
- if not MenuDisplayed then
- begin
- ScaleMousePos(LForm.Handle, P);
- if uMsg = WM_RBUTTONDBLCLK then
- LForm.MouseDown(TMouseButton.mbRight, MouseToShiftState(wParam) + [ssDouble], P.X, P.Y)
- else
- LForm.MouseDown(TMouseButton.mbRight, MouseToShiftState(wParam), P.X, P.Y);
- end;
- end;
- WM_RBUTTONUP:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseUp(TMouseButton.mbRight, MouseToShiftState(wParam), P.X, P.Y);
- end;
- WM_MBUTTONDOWN:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseDown(TMouseButton.mbMiddle, MouseToShiftState(wParam), P.X, P.Y);
- end;
- WM_MBUTTONUP:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseUp(TMouseButton.mbMiddle, MouseToShiftState(wParam), P.X, P.Y);
- end;
- WM_MBUTTONDBLCLK:
- begin
- GetCursorPos(P);
- LastMousePos := ImpossibleMousePosition;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseDown(TMouseButton.mbMiddle, MouseToShiftState(wParam) + [ssDouble], P.X, P.Y);
- end;
- WM_MENUSELECT:
- begin
- MenuServiceWin.Dispatch(Message);
- end;
- WM_INITMENUPOPUP:
- begin
- MenuServiceWin.Dispatch(Message);
- end;
- WM_MOUSEMOVE:
- begin
- WindowBorder := TWindowBorderWin(LForm.Border.WindowBorder);
- if LForm.Border.IsSupported then
- begin
- if WindowBorder.NCClick then
- Result := WMNCMessages(LForm, uMsg, wParam, lParam)
- else
- begin
- WindowBorder.MouseLeave;
- GetCursorPos(P);
- if P <> LastMousePos then
- begin
- LastMousePos := P;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseMove(MouseToShiftState(wParam), P.X, P.Y);
- end;
- end;
- end
- else
- begin
- GetCursorPos(P);
- if P <> LastMousePos then
- begin
- LastMousePos := P;
- ScaleMousePos(LForm.Handle, P);
- LForm.MouseMove(MouseToShiftState(wParam), P.X, P.Y);
- end;
- end;
- tme.cbSize := SizeOf(tme);
- tme.hwndTrack := hwnd;
- tme.dwFlags := TME_LEAVE;
- tme.dwHoverTime := HOVER_DEFAULT;
- TrackMouseEvent(tme);
- HandleMouseGestures(LForm, uMsg, P.X, P.Y);
- end;
- WM_MOUSELEAVE:
- begin
- WindowBorder := TWindowBorderWin(LForm.Border.WindowBorder);
- if LForm.Border.IsSupported and WindowBorder.NCClick then
- Result := WMNCMessages(LForm, uMsg, wParam, lParam)
- else
- LForm.MouseLeave;
- end;
- WM_MOUSEWHEEL:
- begin
- H := DispatchMouseWheelToPopups;
-
- if not H then
- LForm.MouseWheel(KeysToShiftState(wParam),
- TSmallPoint(Cardinal(wParam)).Y, H);
-
- Result := Integer(H = True);
- end;
- WM_GETDLGCODE:
- begin
- Result := DLGC_WANTTAB or dlgc_WantArrows or DLGC_WANTCHARS;
- end;
- WM_CHAR:
- begin
- Ch := WideChar(wParam);
- Key := 0;
- LForm.KeyDown(Key, Ch, KeyDataToShiftState(lParam));
- LForm.KeyUp(Key, Ch, KeyDataToShiftState(lParam));
- Result := 0;
- end;
- WM_KEYDOWN,
- WM_SYSKEYDOWN:
- begin
- // Check if this key translates to a WM_CHAR/WM_SYSCHAR message
- // and if it does, pass KeyDown with character code
- // and clear the original WM_CHAR from the queue
- Msg.hwnd := hwnd;
- Msg.Message := uMsg;
- Msg.wParam := wParam;
- Msg.lParam := lParam;
-
- Result := 0;
-
- if uMsg = WM_SYSKEYDOWN then
- begin
- CharMsg := WM_SYSCHAR;
- DeadCharMsg := WM_SYSDEADCHAR;
- end
- else
- begin
- CharMsg := WM_CHAR;
- DeadCharMsg := WM_DEADCHAR;
- end;
-
- LastKeyIsDeadKey := False;
- if PeekMessage(Msg, hwnd, DeadCharMsg, DeadCharMsg, PM_NOREMOVE + PM_NOYIELD) then
- LastKeyIsDeadKey := True
- else if TranslateMessage(Msg) then
- begin
- if PeekMessage(Msg, hwnd, CharMsg, CharMsg, PM_REMOVE) then
- begin
- CurrentChar(Msg, Key, Ch, Shift);
- // clear duplicate WM_CHAR
- if CharMsg = WM_CHAR then
- PeekMessage(Msg, hwnd, CharMsg, CharMsg, PM_REMOVE);
- LForm.KeyDown(Key, Ch, Shift);
- end
- else
- begin
- Key := wParam;
- Ch := #0;
- LForm.KeyDown(Key, Ch, KeyDataToShiftState(lParam));
- end;
- end;
-
- // always let the system handle system shortcuts
- if uMsg = WM_SYSKEYDOWN then
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- WM_DEADCHAR:
- begin
- PeekMessage(Msg, hwnd, WM_DEADCHAR, WM_DEADCHAR, PM_REMOVE);
- PeekMessage(Msg, hwnd, WM_CHAR, WM_CHAR, PM_REMOVE);
- end;
- WM_KEYUP:
- begin
- Ch := #0;
- Key := wParam;
- Shift := KeyDataToShiftState(lParam);
- if LastKeyIsDeadKey then
- begin
- Result := 0;
- end
- else
- begin
- Msg.hwnd := hwnd;
- Msg.Message := WM_KEYDOWN;
- Msg.wParam := wParam;
- Msg.lParam := Msg.lParam and $7FFFFFFF;
- if TranslateMessage(Msg) then
- if PeekMessage(Msg, hwnd, WM_CHAR, WM_CHAR, PM_REMOVE) then
- begin
- CurrentChar(Msg, Key, Ch, Shift);
- end;
- LForm.KeyUp(Key, Ch, Shift);
- Result := 0;
- end
- end;
- WM_SYSKEYUP:
- begin
- if (wParam = VK_MENU) or (wParam = VK_F10) then
- begin
- LForm.EnterMenuLoop;
- Result := 0;
- end
- else
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- WM_RELEASEFORM:
- begin
- LForm.Free;
- end;
- { IME }
- WM_INPUTLANGCHANGE:
- begin
- // Result := SetIMECompositionWndPosition(LForm, uMsg, wParam, lParam);
- // OnInputLangChange();
- end;
- WM_IME_SETCONTEXT,
- WM_IME_STARTCOMPOSITION,
- WM_IME_COMPOSITION,
- WM_IME_NOTIFY,
- WM_IME_ENDCOMPOSITION:
- begin
- PlatformWin.ImmManager[LForm].Dispatch(Message);
- Result := Message.Result;
- end;
- WM_COMMAND:
- begin
- MenuServiceWin.Dispatch(Message);
- Result := Message.Result;
- end;
- WM_GESTURENOTIFY:
- begin
- WMGestureNotify(LForm, uMsg, lParam);
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- WM_GESTURE:
- begin
- Result := WMGesture(LForm, uMsg, wParam, lParam);
- end;
- WM_TOUCH:
- begin
- GetCursorPos(P);
- Result := WMTouch(LForm, uMsg, wParam, lParam);
- ScreenToClient(Wnd, P);
- end;
- WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC:
- Result := SendMessage(lParam, CN_BASE + uMsg, wParam, lParam);
- else
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- // Default result if nothing happens
- end;
- finally
- FinalActionsOfPopups;
- end;
- except
- on E: Exception do
- Application.HandleException(E);
- end;
- end
- else { if LForm = nil }
- begin
- if (PlatformWin <> nil) and (hwnd = PlatformWin.FApplicationHWND) then
- begin
- case uMsg of
- WM_SYSCOMMAND:
- begin
- case TWMSysCommand(Message).CmdType of
- SC_MINIMIZE:
- begin
- PlatformWin.MinimizeApp;
- Result := 0;
- end;
- SC_RESTORE:
- begin
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- PlatformWin.RestoreApp;
- end
- else
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- end;
- WM_CLOSE:
- begin
- if Application.MainForm <> nil then
- begin
- try
- if Screen <> nil then
- Screen.ActiveForm := nil;
- Application.MainForm.Close;
- except
- on E: Exception do
- Application.HandleException(E);
- end;
- Exit;
- end;
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- WM_DESTROY:
- Application.Terminate;
- WM_ACTIVATEAPP:
- begin
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- if BOOL(wParam) then
- PlatformWin.RestoreApp;
- end;
- else
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- end
- else
- Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
- end;
- // Default result if nothing happens
-end;
-
-var
- FMAppClass: TWndClass = (
- style: 0;
- lpfnWndProc: @WndProc;
- cbClsExtra: 0;
- cbWndExtra: 0;
- hInstance: 0;
- hIcon: 0;
- hCursor: 0;
- hbrBackground: 0;
- lpszMenuName: nil;
- lpszClassName: 'TFMAppClass');
-
-function TPlatformWin.CreateAppHandle: HWND;
-var
- TempClass: TWndClass;
- P: PChar;
- ClassRegistered: Boolean;
- ModuleName: array [0 .. 255] of Char;
-begin
- GetModuleFileName(MainInstance, ModuleName, Length(ModuleName));
- P := AnsiStrRScan(ModuleName, '\');
- if P <> nil then
- StrCopy(ModuleName, P + 1);
- P := AnsiStrScan(ModuleName, '.');
- if P <> nil then
- P^ := #0;
- CharLower(CharNext(ModuleName));
- FDefaultTitle := ModuleName;
- if Application <> nil then
- FTitle := Application.Title
- else
- FTitle := FDefaultTitle;
- FMAppClass.hInstance := hInstance;
- ClassRegistered := GetClassInfo(hInstance, FMAppClass.lpszClassName, TempClass);
- FMAppClass.hIcon := LoadIconW(MainInstance, PChar('MAINICON'));
- if not ClassRegistered or (TempClass.lpfnWndProc <> @WndProc) then
- begin
- if ClassRegistered then
- Winapi.Windows.UnregisterClass(FMAppClass.lpszClassName, hInstance);
- Winapi.Windows.RegisterClass(FMAppClass);
- end;
- Result := CreateWindowEx(WS_EX_WINDOWEDGE or WS_EX_APPWINDOW, FMAppClass.lpszClassName, PChar(FTitle),
- WS_POPUP or WS_GROUP, 0, 0, 0, 0, GetDesktopWindow, 0, hInstance, nil);
- Winapi.Windows.ShowWindow(Result, SW_SHOWNORMAL);
-end;
-
-function TPlatformWin.GetApplicationHWND: HWND;
-begin
- UpdateApplicationHwnd;
- Result := FApplicationHWND;
-end;
-
-function TPlatformWin.CreateWindow(const AForm: TCommonCustomForm): TWindowHandle;
-var
- DesignerForm: IDesignerForm;
- IsDesignerForm: Boolean;
- WindowClass: TWndClass;
- LDropTarget: TWinDropTarget;
- Style, ExStyle: DWORD;
- Wnd: HWND;
- ParentWnd: HWND;
- WndClassName: string;
- LForm, LParentForm: TCommonCustomForm;
-
- function GetParentFormHandle: HWND;
- begin
- Result := 0;
- if LForm.ParentForm <> nil then
- begin
- if LForm.ParentForm.Handle = nil then
- raise EArgumentException.CreateFMT(SNotInstance, ['ParentForm.Handle'])at ReturnAddress;
- Result := FormToHWND(LForm.ParentForm);
- end;
- end;
-
-begin
- RaiseIfNil(AForm, 'AForm');
-
- LDropTarget := nil;
- LForm := AForm;
- Style := WS_CLIPSIBLINGS or WS_CLIPCHILDREN;
- ExStyle := 0;
- WndClassName := 'FM' + LForm.ClassName;
- IsDesignerForm := TFmxFormState.InDesigner in LForm.FormState;
- if not GetClassInfo(hInstance, PChar(WndClassName), WindowClass) then
- begin
- FillChar(WindowClass, SizeOf(WindowClass), 0);
- WindowClass.style := CS_DBLCLKS or CS_HREDRAW or CS_VREDRAW;
- WindowClass.lpfnWndProc := @WndProc;
- WindowClass.cbClsExtra := 0;
- WindowClass.cbWndExtra := 0;
- WindowClass.hInstance := hInstance;
- WindowClass.hIcon := LoadIconW(MainInstance, PChar('MAINICON'));
- if csDesigning in LForm.ComponentState then
- WindowClass.hCursor := LoadCursorW(0, PChar(IDC_ARROW))
- else
- WindowClass.hCursor := 0;
- WindowClass.hbrBackground := GetStockObject(NULL_BRUSH);
- WindowClass.lpszMenuName := nil;
- WindowClass.lpszClassName := PChar(WndClassName);
- if Winapi.Windows.RegisterClass(WindowClass) = 0 then
- RaiseLastOSError;
- end;
- if (csDesigning in LForm.ComponentState) or IsDesignerForm then
- begin
- Style := Style or WS_CHILD;
- // Parent handle going to set in IDE.
- // Now set temporary value
- ParentWnd := GetDesktopWindow;
- end
- else
- begin
- case LForm.FormStyle of
- TFormStyle.Popup:
- begin
- Style := style or WS_POPUP;
- ExStyle := ExStyle or WS_EX_NOACTIVATE;
- end;
- TFormStyle.StayOnTop:
- begin
- ExStyle := ExStyle or WS_EX_TOPMOST;
- end;
- end;
- if LForm.Transparency then
- begin
- Style := style or WS_POPUP;
- ExStyle := ExStyle or WS_EX_LAYERED;
- end
- else
- begin
- case LForm.BorderStyle of
- TFmxFormBorderStyle.None:
- Style := Style or WS_POPUP or WS_SYSMENU;
- TFmxFormBorderStyle.Single, TFmxFormBorderStyle.ToolWindow:
- Style := Style or (WS_CAPTION or WS_BORDER);
- TFmxFormBorderStyle.Sizeable, TFmxFormBorderStyle.SizeToolWin:
- Style := Style or (WS_CAPTION or WS_THICKFRAME);
- end;
- if LForm.BorderStyle in [TFmxFormBorderStyle.ToolWindow, TFmxFormBorderStyle.SizeToolWin] then
- ExStyle := ExStyle or WS_EX_TOOLWINDOW;
- if LForm.BorderStyle <> TFmxFormBorderStyle.None then
- begin
- if TBorderIcon.biMinimize in LForm.BorderIcons then
- Style := Style or WS_MINIMIZEBOX;
- if TBorderIcon.biMaximize in LForm.BorderIcons then
- Style := Style or WS_MAXIMIZEBOX;
- if TBorderIcon.biSystemMenu in LForm.BorderIcons then
- Style := Style or WS_SYSMENU;
- end;
- end;
- // Use handle of parent form
- ParentWnd := GetParentFormHandle;
- // For Dialogs and Popups we used handle of active form
- if (ParentWnd = 0) and ((TFmxFormState.Modal in LForm.FormState) or (LForm.FormStyle = TFormStyle.Popup)) then
- begin
- if (Screen <> nil) and (Screen.ActiveForm <> nil) then
- ParentWnd := FormToHWND(Screen.ActiveForm);
- if (ParentWnd = 0) then
- begin
- ParentWnd := GetActiveWindow;
- LParentForm := FindWindow(ParentWnd);
- if LParentForm = nil then
- ParentWnd := 0;
- end;
- end;
- // If none parent then we use handle of Application
- if ParentWnd = 0 then
- ParentWnd := ApplicationHWND;
- end;
- Wnd := CheckWinapiHandle(CreateWindowEx(ExStyle, WindowClass.lpszClassName, PChar(LForm.Caption), style,
- Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), ParentWnd, 0,
- hInstance, nil));
- try
- SetProp(Wnd, MakeIntAtom(WindowAtom), THandle(LForm));
- try
- if not ((csDesigning in AForm.ComponentState) or Supports(AForm, IDesignerForm, DesignerForm)) then
- begin
- LDropTarget := TWinDropTarget.Create(nil);
- LDropTarget.Form := LForm;
- end;
- try
- if LDropTarget <> nil then
- RegisterDragDrop(Wnd, LDropTarget);
- Result := TWinWindowHandle.Create(LForm, Wnd);
- TWinWindowHandle(Result).FWinDropTarget := LDropTarget;
- except
- if LDropTarget <> nil then
- RevokeDragDrop(Wnd);
- raise;
- end;
- except
- FreeAndNil(LDropTarget);
- raise;
- end;
- except
- Winapi.Windows.DestroyWindow(Wnd);
- raise;
- end;
- TWinWindowHandle(Result).FWinDropTarget := LDropTarget;
-
- FImmManagers.Add(AForm, TImmManager.Create(AForm));
-end;
-
-function TPlatformWin.CreateWindowBorder(const AForm: TCommonCustomForm): TWindowBorder;
-begin
- Result := FMX.Forms.Border.Win.CreateWindowBorder(AForm);
-end;
-
-procedure TPlatformWin.DestroyWindow(const AForm: TCommonCustomForm);
-var
- Wnd: HWND;
- DesignerForm: IDesignerForm;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- HideWindow(AForm);
- Wnd := FormToHWND(AForm);
- if not ((csDesigning in AForm.ComponentState) or Supports(AForm, IDesignerForm, DesignerForm)) then
- RevokeDragDrop(Wnd);
- WindowHandleToPlatform(AForm.Handle).FWinDropTarget.Free;
- RemoveProp(Wnd, MakeIntAtom(WindowAtom));
- Winapi.Windows.DestroyWindow(Wnd);
-
- FImmManagers.Remove(AForm);
-end;
-
-procedure TPlatformWin.ReleaseWindow(const AForm: TCommonCustomForm);
-begin
-end;
-
-procedure TPlatformWin.InvalidateImmediately(const AForm: TCommonCustomForm);
-begin
- RaiseIfNil(AForm, 'AForm');
-
- InvalidateWindowRect(AForm, AForm.ClientRect);
-end;
-
-procedure TPlatformWin.InvalidateWindowRect(const AForm: TCommonCustomForm; R: TRectF);
-var
- WR: TRect;
- Wnd: HWND;
- PaintControl: IPaintControl;
- UpdateRects: TUpdateRects;
- I: Integer;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if IntersectRect(R, TRectF.Create(0, 0, AForm.ClientWidth, AForm.ClientHeight)) then
- begin
- Wnd := FormToHWND(AForm);
- if AForm.Transparency and not (csDesigning in AForm.ComponentState) then
- begin
- PostMessage(Wnd, WM_ADDUPDATERECT, Integer(SmallPoint(Round(R.Left), Round(R.Top))),
- Integer(SmallPoint(Round(R.Right), Round(R.Bottom))));
- end
- else
- begin
- R := WindowHandleToPlatform(AForm.Handle).FormToWnd(R);
- if Supports(AForm, IPaintControl, PaintControl) and (PaintControl.ContextHandle <> 0) then
- begin
- // In Paint
- if not FInPaintUpdateRects.TryGetValue(AForm.Handle, UpdateRects) then
- begin
- SetLength(UpdateRects, 1);
- UpdateRects[0] := R;
- FInPaintUpdateRects.Add(AForm.Handle, UpdateRects);
- Exit;
- end
- else
- for I := 0 to High(UpdateRects) do
- if (UpdateRects[I] = R) or (UpdateRects[I].Contains(R.TopLeft) and UpdateRects[I].Contains(R.BottomRight))
- then
- Exit;
- SetLength(UpdateRects, Length(UpdateRects) + 1);
- UpdateRects[High(UpdateRects)] := R;
- FInPaintUpdateRects.AddOrSetValue(AForm.Handle, UpdateRects);
- end
- else
- begin
- WR := TRect.Create(Trunc(R.Left), Trunc(R.Top), Ceil(R.Right), Ceil(R.Bottom));
- Winapi.Windows.InvalidateRect(Wnd, @WR, False);
- end;
- end;
- end;
-end;
-
-procedure TPlatformWin.MinimizeApp;
-var
- AnimationEnable: Boolean;
-
- function GetAnimation: Boolean;
- var
- Info: TAnimationInfo;
- begin
- Info.cbSize := SizeOf(TAnimationInfo);
- if SystemParametersInfo(SPI_GETANIMATION, Info.cbSize, @Info, 0) then
- Result := Info.iMinAnimate <> 0
- else
- Result := False;
- end;
-
- procedure SetAnimation(Value: Boolean);
- var
- Info: TAnimationInfo;
- begin
- Info.cbSize := SizeOf(TAnimationInfo);
- Info.iMinAnimate := Integer(BOOL(Value));
- SystemParametersInfo(SPI_SETANIMATION, Info.cbSize, @Info, 0);
- end;
-
- procedure MinimiseAllForms;
- var
- I: Integer;
- WindowHandle: HWND;
- begin
- for I := 0 to Screen.FormCount - 1 do
- begin
- WindowHandle := FormToHWND(Screen.Forms[I]);
- if IsWindowVisible(WindowHandle) then
- DefWindowProc(WindowHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
- end;
- end;
-
-begin
- AnimationEnable := GetAnimation;
- try
- SetAnimation(False);
- if Application.MainForm <> nil then
- begin
- SetWindowPos(ApplicationHWND, FormToHWND(Application.MainForm), Application.MainForm.Left,
- Application.MainForm.Top, Application.MainForm.Width, 0, SWP_SHOWWINDOW);
- MinimiseAllForms;
- end;
- DefWindowProc(ApplicationHWND, WM_SYSCOMMAND, SC_MINIMIZE, 0);
- finally
- SetAnimation(AnimationEnable);
- end;
-end;
-
-function TPlatformWin.GetWindowRect(const AForm: TCommonCustomForm): TRectF;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if AForm.IsHandleAllocated then
- Result := TRectF.Create(WindowHandleToPlatform(AForm.Handle).Bounds)
- else
- Result := TRectF.Create(0, 0, AForm.Width, AForm.Height);
-end;
-
-function TPlatformWin.GetWindowScale(const AForm: TCommonCustomForm): Single;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if AForm.IsHandleAllocated then
- Result := AForm.Handle.Scale
- else
- Result := GetScreenScale;
-end;
-
-procedure TPlatformWin.SetWindowRect(const AForm: TCommonCustomForm; ARect: TRectF);
-begin
- RaiseIfNil(AForm, 'AForm');
-
- { for using Metro-style interface in designer we set Maximized but we can change window size }
- if AForm.IsHandleAllocated and (AForm.WindowState in [TWindowState.wsNormal, TWindowState.wsMaximized]) then
- WindowHandleToPlatform(AForm.Handle).Bounds := ARect.Round;
-end;
-
-procedure TPlatformWin.SetWindowCaption(const AForm: TCommonCustomForm; const ACaption: string);
-begin
- RaiseIfNil(AForm, 'AForm');
-
- SetWindowText(FormToHWND(AForm), ACaption);
-end;
-
-procedure TPlatformWin.RegisterCanvasClasses;
-begin
- if GlobalUseGPUCanvas then
- FMX.Canvas.GPU.RegisterCanvasClasses;
- FMX.Canvas.D2D.RegisterCanvasClasses;
- FMX.Canvas.GDIP.RegisterCanvasClasses;
-end;
-
-procedure TPlatformWin.UnhookTouchHandler(const AForm: TCommonCustomForm);
-begin
- if TOSVersion.Check(6, 1) then
- UnregisterTouchWindow(FormToHWND(AForm));
-end;
-
-procedure TPlatformWin.UnregisterCanvasClasses;
-begin
- if GlobalUseGPUCanvas then
- FMX.Canvas.GPU.UnregisterCanvasClasses;
- FMX.Canvas.D2D.UnregisterCanvasClasses;
- FMX.Canvas.GDIP.UnregisterCanvasClasses;
-end;
-
-procedure TPlatformWin.RegisterContextClasses;
-begin
- FMX.Context.DX9.RegisterContextClasses;
- FMX.Context.DX11.RegisterContextClasses;
-end;
-
-procedure TPlatformWin.UnregisterContextClasses;
-begin
- FMX.Context.DX9.UnregisterContextClasses;
- FMX.Context.DX11.UnregisterContextClasses;
-end;
-
-procedure TPlatformWin.ReleaseCapture(const AForm: TCommonCustomForm);
-begin
- Winapi.Windows.ReleaseCapture;
-end;
-
-procedure TPlatformWin.SetApplicationHWNDProc(const Value: TApplicationHWNDProc);
-begin
- if @FApplicationHWNDProc <> @Value then
- begin
- FApplicationHWNDProc := Value;
- UpdateApplicationHwnd;
- end;
-end;
-
-procedure TPlatformWin.SetCapture(const AForm: TCommonCustomForm);
-begin
- RaiseIfNil(AForm, 'AForm');
-
- Winapi.Windows.SetCapture(FormToHWND(AForm));
-end;
-
-function TPlatformWin.GetCaretWidth: Integer;
-begin
- Result := 1;
-end;
-
-function TPlatformWin.GetClientSize(const AForm: TCommonCustomForm): TPointF;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if AForm.IsHandleAllocated then
- Result := TSizeF.Create(WindowHandleToPlatform(AForm.Handle).ClientSize)
- else
- Result := TSizeF.Create(AForm.Width, AForm.Height);
-end;
-
-procedure TPlatformWin.SetClientSize(const AForm: TCommonCustomForm; const ASize: TPointF);
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if AForm.IsHandleAllocated then
- WindowHandleToPlatform(AForm.Handle).ClientSize := TSizeF.Create(ASize).Round;
-end;
-
-procedure TPlatformWin.HideWindow(const AForm: TCommonCustomForm);
-begin
- RaiseIfNil(AForm, 'AForm');
-
- SetWindowPos(FormToHWND(AForm), 0, 0, 0, 0, 0, SWP_HIDEWINDOW or SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or
- SWP_NOACTIVATE);
-end;
-
-const
- ShowCommands: array [TWindowState] of Integer = (SW_SHOWNORMAL, SW_MINIMIZE, SW_SHOWMAXIMIZED);
-
-procedure TPlatformWin.ShowWindow(const AForm: TCommonCustomForm);
-const
- uFlags = SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE;
-var
- Wnd, WndParent: HWND;
- nCmdShow: Integer;
- OldActiveForm: TCommonCustomForm;
- OldDisableDeactivate: Boolean;
- OldActiveHandle: TWinWindowHandle;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- Wnd := FormToHWND(AForm);
- nCmdShow := ShowCommands[AForm.WindowState];
- if (AForm.FormStyle = TFormStyle.Popup) then
- begin
- nCmdShow := nCmdShow or SW_SHOWNOACTIVATE;
- OldDisableDeactivate := False;
- OldActiveHandle := nil;
- if Screen <> nil then
- begin
- OldActiveForm := Screen.ActiveForm;
- if OldActiveForm <> nil then
- OldActiveHandle := WindowHandleToPlatform(OldActiveForm.Handle);
- end;
- try
- if OldActiveHandle <> nil then
- begin
- OldDisableDeactivate := OldActiveHandle.FDisableDeactivate;
- OldActiveHandle.FDisableDeactivate := True;
- end;
- Winapi.Windows.ShowWindow(Wnd, nCmdShow);
- if OldActiveHandle <> nil then
- SetWindowPos(OldActiveHandle.Wnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER);
- finally
- if OldActiveHandle <> nil then
- OldActiveHandle.FDisableDeactivate := OldDisableDeactivate;
- end;
- end
- else
- Winapi.Windows.ShowWindow(Wnd, nCmdShow);
-
- if AForm.Transparency and not (csDesigning in AForm.ComponentState) then
- PostMessage(FormToHWND(AForm), WM_ADDUPDATERECT, Integer(SmallPoint(0, 0)),
- Integer(SmallPoint(AForm.Width, AForm.Height)));
-
- if AForm.FormStyle in [TFormStyle.StayOnTop, TFormStyle.Popup] then
- begin
- WndParent := GetParent(Wnd);
- if (WndParent = GetDesktopWindow) or (WndParent = 0) then
- SetWindowPos(Wnd, HWND_TOPMOST, 0, 0, 0, 0, uFlags)
- else
- SetWindowPos(Wnd, HWND_TOP, 0, 0, 0, 0, uFlags);
- end;
-end;
-
-procedure TPlatformWin.BringToFront(const AForm: TCommonCustomForm);
-var
- Wnd: HWND;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- Wnd := FormToHWND(AForm);
- SetWindowPos(Wnd, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
-end;
-
-procedure TPlatformWin.SendToBack(const AForm: TCommonCustomForm);
-var
- Wnd: HWND;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- Wnd := FormToHWND(AForm);
- SetWindowPos(Wnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
-end;
-
-procedure TPlatformWin.Activate(const AForm: TCommonCustomForm);
-var
- Wnd: HWND;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- Wnd := FormToHWND(AForm);
- if not IsWindowVisible(Wnd) or IsIconic(Wnd) then
- begin
- if AForm.FormStyle = TFormStyle.Popup then
- Winapi.Windows.ShowWindow(Wnd, SW_RESTORE or SW_SHOWNOACTIVATE)
- else
- Winapi.Windows.ShowWindow(Wnd, SW_RESTORE);
- end;
- if AForm.FormStyle <> TFormStyle.Popup then
- Winapi.Windows.SetActiveWindow(Wnd);
-end;
-
-procedure TPlatformWin.SetWindowState(const AForm: TCommonCustomForm; const AState: TWindowState);
-var
- Wnd: HWND;
-
- procedure DoSetState(const AState: TWindowState);
- begin
- if AForm.FormStyle = TFormStyle.Popup then
- Winapi.Windows.ShowWindow(Wnd, ShowCommands[AState] or SW_SHOWNOACTIVATE)
- else
- begin
- if (Application.MainForm = AForm) and (AState = TWindowState.wsMinimized) then
- Winapi.Windows.ShowWindow(ApplicationHWND, ShowCommands[AState])
- else
- Winapi.Windows.ShowWindow(Wnd, ShowCommands[AState])
- end;
- end;
-
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if AForm.Visible and not FDiableUpdateState then
- begin
- Wnd := FormToHWND(AForm);
- if AForm.FullScreen then
- try
- FDiableUpdateState := True;
- AForm.WindowState := TWindowState.wsMaximized;
- if not Winapi.Windows.IsZoomed(Wnd) then
- DoSetState(TWindowState.wsMaximized);
- finally
- FDiableUpdateState := False;
- end
- else
- DoSetState(AState);
- end;
-end;
-
-function TPlatformWin.ShowWindowModal(const AForm: TCommonCustomForm): TModalResult;
-var
- WindowList: Pointer;
- AppService: IFMXApplicationService;
- CloseRes: TCloseAction;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- Result := mrNone;
- if GetCapture <> 0 then
- SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
- Winapi.Windows.ReleaseCapture;
- AForm.HandleNeeded;
- WindowList := DisableTaskWindows(FormToHWND(AForm));
- try
- CloseRes := TCloseAction.caNone;
- AForm.Show;
- AForm.ModalResult := mrNone;
- SetActiveWindow(FormToHWND(AForm));
- SetFocus(FormToHWND(AForm));
- Screen.ActiveForm := AForm;
- AppService := IFMXApplicationService(TPlatformServices.Current.GetPlatformService(IFMXApplicationService));
- repeat
- if not Application.HandleMessage then
- AppService.WaitMessage;
- if Application.Terminated then
- Break
- else if AForm.ModalResult <> mrNone then
- begin
- CloseRes := AForm.CloseModal;
- Result := AForm.ModalResult;
- end;
- until Result <> mrNone;
- if not Application.Terminated and (CloseRes <> TCloseAction.caFree) then
- AForm.Hide;
- finally
- EnableTaskWindows(WindowList);
- end;
-
- Result := AForm.ModalResult;
-end;
-
-function TPlatformWin.CanShowModal: Boolean;
-begin
- Result := True;
-end;
-
-function TPlatformWin.ClientToScreen(const AForm: TCommonCustomForm; const Point: TPointF): TPointF;
-var
- P: TPoint;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- P := (Point * WindowHandleToPlatform(AForm.Handle).Scale).Round;
- Winapi.Windows.ClientToScreen(FormToHWND(AForm), P);
- Result := TPointF.Create(P);
-end;
-
-function TPlatformWin.ScreenToClient(const AForm: TCommonCustomForm; const Point: TPointF): TPointF;
-var
- P: TPoint;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- P := Point.Round;
- Winapi.Windows.ScreenToClient(FormToHWND(AForm), P);
- Result := TPointF.Create(P) / WindowHandleToPlatform(AForm.Handle).Scale;
-end;
-
-{ Menus }
-
-function TPlatformWin.SupportsDefaultSize(const AComponent: TComponentKind): Boolean;
-begin
- Result := AComponent = TComponentKind.Calendar;
-end;
-
-procedure TPlatformWin.ThreadSync(var Msg: TMessage);
-begin
- if Msg.Msg = WM_NULL then
- begin
- CheckSynchronize;
- Msg.Result := 0;
- end
- else
- Msg.Result := DefWindowProc(FThreadSyncHandle, Msg.Msg, Msg.wParam, Msg.LPARAM);
-end;
-
-procedure TPlatformWin.RemoveRecognizer(const ARec: TInteractiveGesture; const AForm: TCommonCustomForm);
-begin
- Exclude(FEnabledInteractiveGestures, ARec);
-end;
-
-procedure TPlatformWin.RestoreApp;
-var
- I: Integer;
- LWND: HWND;
-begin
- if Screen <> nil then
- if Screen.ActiveForm <> nil then
- Screen.ActiveForm.Activate
- else
- begin
- LWND := GetActiveWindow;
- if LWND <> 0 then
- for I := 0 to Screen.FormCount - 1 do
- if FormToHWND(Screen.Forms[I]) = LWND then
- begin
- Screen.Forms[I].Activate;
- Exit;
- end;
- if Application.MainForm <> nil then
- Application.MainForm.Activate;
- end;
-end;
-
-procedure TPlatformWin.HookTouchHandler(const AForm: TCommonCustomForm);
-begin
- if TOSVersion.Check(6, 1) and TWinTouchGestureEngine.Supported(AForm) then
- RegisterTouchWindow(FormToHWND(AForm), TWF_WANTPALM);
-end;
-
-{ Drag and Drop }
-
-const
- SID_IDropTargetHelper = '{4657278B-411B-11d2-839A-00C04FD918D0}';
- CLSID_DragDropHelper: TGUID = (D1: $4657278A; D2: $411B; D3: $11D2; D4: ($83, $9A, $00, $C0, $4F, $D9, $18, $D0));
-
-type
- IDropTargetHelper = interface(IUnknown)
- [SID_IDropTargetHelper]
- function DragEnter(hwndTarget: HWND; const dataObj: IDataObject; var pt: TPoint;
- dwEffect: Longint): HRESULT; stdcall;
- function DragLeave: HRESULT; stdcall;
- function DragOver(var pt: TPoint; dwEffect: Longint): HRESULT; stdcall;
- function Drop(const dataObj: IDataObject; var pt: TPoint; dwEffect: Longint): HRESULT; stdcall;
- function Show(Show: BOOL): HRESULT; stdcall;
- end;
-
-var
- FDropTargetHelper: IDropTargetHelper;
- FDataObj: IDataObject;
-
-function TWinDropTarget.GetDataObject: TDragObject;
-var
- FormatEtc: TFormatEtc;
- StgMedium: TStgMedium;
- str: string;
- Drop: HDrop;
- I, numFiles, buflen: Integer;
- buffer: MarshaledString;
-begin
- FillChar(Result, SizeOf(Result), 0);
- if FDataObj = nil then
- Exit;
- // get file name first
- FormatEtc.cfFormat := CF_HDROP;
- FormatEtc.ptd := nil;
- FormatEtc.dwAspect := DVASPECT_CONTENT;
- FormatEtc.lindex := -1;
- FormatEtc.Tymed := TYMED_HGLOBAL;
- // get FireMonkey
- if PlatformWin.FDragAndDropActive then
- begin
- FormatEtc.cfFormat := CF_FMOBJECT;
- if FDataObj.GetData(FormatEtc, StgMedium) = S_OK then
- begin
- Result := TDropSource(StgMedium.HGLOBAL).Data;
- Exit;
- end;
- end;
- // files
- str := '';
- FormatEtc.cfFormat := CF_HDROP;
- if FDataObj.GetData(FormatEtc, StgMedium) = S_OK then
- begin
- try
- Drop := HDrop(GlobalLock(StgMedium.HGLOBAL));
- { Replace Text }
- numFiles := DragQueryFile(Drop, $FFFFFFFF, nil, 0);
- SetLength(Result.Files, numFiles);
- for I := 0 to numFiles - 1 do
- begin
- // Setting length of buffer plus 1 for string end char (#0)
- buflen := DragQueryFile(Drop, I, nil, 0) + 1;
- buffer := StrAlloc(buflen);
- DragQueryFile(Drop, I, buffer, buflen);
- Result.Files[I] := buffer;
- StrDispose(buffer);
- if I = 0 then
- Result.Data := Result.Files[0];
- end;
- finally
- GlobalUnlock(StgMedium.HGLOBAL);
- { Free the memory }
- ReleaseStgMedium(StgMedium);
- end;
- Exit;
- end;
- // get text
- FormatEtc.cfFormat := CF_UNICODETEXT;
- if FDataObj.GetData(FormatEtc, StgMedium) = S_OK then
- begin
- try
- { Lock the global memory handle to get a pointer to the data }
- str := PChar(GlobalLock(StgMedium.HGLOBAL));
- Result.Data := str;
- finally
- { Finished with the pointer }
- GlobalUnlock(StgMedium.HGLOBAL);
- { Free the memory }
- ReleaseStgMedium(StgMedium);
- end;
- Exit;
- end;
-end;
-
-function TWinDropTarget.DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
- var dwEffect: Longint): HRESULT;
-var
- Res: HRESULT;
-begin
- try
- FDataObj := dataObj;
- Result := S_OK;
- dwEffect := DROPEFFECT_NONE;
- if (Succeeded(CoCreateInstance(CLSID_DragDropHelper, nil, CLSCTX_INPROC_SERVER, IDropTargetHelper,
- FDropTargetHelper))) and (FDropTargetHelper <> nil) then
- begin
- Res := FDropTargetHelper.DragEnter(FormToHWND(Form), dataObj, pt, dwEffect);
- if (Failed(Res)) then
- FDropTargetHelper := nil;
- end;
- except
- dwEffect := DROPEFFECT_NONE;
- Result := E_UNEXPECTED;
- end;
-end;
-
-function TWinDropTarget.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
-var
- P: TPointF;
- Operation: TDragOperation;
-begin
- Result := E_UNEXPECTED;
- try
- dwEffect := DROPEFFECT_NONE;
- P := PointF(pt.X, pt.Y);
- Operation := TDragOperation.None;
- Form.DragOver(GetDataObject, P, Operation);
- case Operation of
- TDragOperation.None:
- dwEffect := DROPEFFECT_NONE;
- TDragOperation.Move:
- dwEffect := DROPEFFECT_MOVE;
- TDragOperation.Copy:
- dwEffect := DROPEFFECT_COPY;
- TDragOperation.Link:
- dwEffect := DROPEFFECT_LINK;
- end;
-
- // do NOT translate the screen coordinates to form coordinates because
- // it seems that the drop target helper needs screen coordinates
- if FDropTargetHelper <> nil then
- FDropTargetHelper.DragOver(pt, dwEffect);
- Result := S_OK;
- except
- dwEffect := DROPEFFECT_NONE;
- end;
-end;
-
-function TWinDropTarget.DragLeave: HRESULT;
-begin
- Form.DragLeave;
- if (FDropTargetHelper <> nil) then
- FDropTargetHelper.DragLeave;
- FDropTargetHelper := nil;
- FDataObj := nil;
- Result := S_OK;
-end;
-
-function TWinDropTarget.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
- var dwEffect: Longint): HRESULT;
-var
- P: TPointF;
-begin
- Result := S_OK;
- try
- if (dataObj = nil) then
- Exit;
- P := PointF(pt.X, pt.Y);
- Form.DragDrop(GetDataObject, P);
- // do NOT translate the screen coordinates to form coordinates because
- // it seems that the drop target helper needs screen coordinates
- if (FDropTargetHelper <> nil) then
- FDropTargetHelper.Drop(dataObj, pt, dwEffect)
- finally
- FDataObj := nil;
- FDropTargetHelper := nil;
- end;
-end;
-
-{ TDropSource }
-
-{ IDropSource }
-
-function TDropSource.QueryContinueDrag(fEscapePressed: BOOL; grfKeyState: Integer): HRESULT;
-var
- ContinueDrop: Boolean;
-begin
- if fEscapePressed then
- Result := DRAGDROP_S_CANCEL
- else if (grfKeyState and (MK_LBUTTON or MK_RBUTTON) = 0) then
- begin
- ContinueDrop := True;
- if ContinueDrop then
- Result := DRAGDROP_S_DROP
- else
- Result := DRAGDROP_S_CANCEL;
- end
- else
- Result := S_OK;
-end;
-
-function TDropSource.GiveFeedback(dwEffect: Integer): HRESULT;
-begin
- Result := DRAGDROP_S_USEDEFAULTCURSORS;
-end;
-
-{ IDataObject }
-
-function TDropSource.dAdvise(const FormatEtc: TFormatEtc; advf: Longint; const advsink: IAdviseSink;
- out dwConnection: Longint): HRESULT;
-begin
- Result := OLE_E_ADVISENOTSUPPORTED;
-end;
-
-function TDropSource.dUnadvise(dwConnection: Longint): HRESULT;
-begin
- Result := OLE_E_ADVISENOTSUPPORTED;
-end;
-
-function TDropSource.EnumdAdvise(out EnumAdvise: IEnumStatData): HRESULT;
-begin
- Result := OLE_E_ADVISENOTSUPPORTED;
-end;
-
-function TDropSource.EnumFormatEtc(dwDirection: Longint; out EnumFormatEtc: IEnumFormatEtc): HRESULT;
-begin
- if (dwDirection = DATADIR_GET) then
- Result := OleRegEnumFormatEtc(IEnumFormatEtc, dwDirection, EnumFormatEtc)
- else
- Result := E_NOTIMPL;
-end;
-
-function TDropSource.GetCanonicalFormatEtc(const FormatEtc: TFormatEtc; out FormatEtcout: TFormatEtc): HRESULT;
-begin
- Result := DATA_S_SAMEFORMATETC;
-end;
-
-function TDropSource.EqualFormatEtc(FormatEtc1, FormatEtc2: TFormatEtc): Boolean;
-begin
- Result := (FormatEtc1.cfFormat = FormatEtc2.cfFormat) and (FormatEtc1.ptd = FormatEtc2.ptd) and
- (FormatEtc1.dwAspect = FormatEtc2.dwAspect) and (FormatEtc1.lindex = FormatEtc2.lindex) and
- (FormatEtc1.Tymed = FormatEtc2.Tymed)
-end;
-
-function TDropSource.FindFormatEtc(TestFormatEtc: TFormatEtc): Integer;
-var
- I: Integer;
- Found: Boolean;
-begin
- I := 0;
- Found := False;
- Result := -1;
- while (I < Length(Formats)) and not Found do
- begin
- Found := EqualFormatEtc(Formats[I].FormatEtc, TestFormatEtc);
- if Found then
- Result := I;
- Inc(I);
- end
-end;
-
-function TDropSource.HGlobalClone(HGLOBAL: THandle): THandle;
-// Returns a global memory block that is a copy of the passed memory block.
-var
- Size: LongWord;
- Data, NewData: PByte;
-begin
- Size := GlobalSize(HGLOBAL);
- Result := GlobalAlloc(GPTR, Size);
- Data := GlobalLock(HGLOBAL);
- try
- NewData := GlobalLock(Result);
- try
- Move(Data, NewData, Size);
- finally
- GlobalUnlock(Result);
- end
- finally
- GlobalUnlock(HGLOBAL)
- end
-end;
-
-function TDropSource.RetrieveOwnedStgMedium(Format: TFormatEtc; var StgMedium: TStgMedium): HRESULT;
-var
- I: Integer;
-begin
- Result := E_INVALIDARG;
- I := FindFormatEtc(Format);
- if (I > -1) and Formats[I].OwnedByDataObject then
- Result := StgMediumIncRef(Formats[I].StgMedium, StgMedium, False)
-end;
-
-function TDropSource.StgMediumIncRef(const InStgMedium: TStgMedium; var OutStgMedium: TStgMedium;
- CopyInMedium: Boolean): HRESULT;
-begin
- Result := S_OK;
- // Simply copy all fields to start with.
- OutStgMedium := InStgMedium;
- case InStgMedium.Tymed of
- TYMED_HGLOBAL:
- begin
- if CopyInMedium then
- begin
- // Generate a unique copy of the data passed
- OutStgMedium.HGLOBAL := HGlobalClone(InStgMedium.HGLOBAL);
- if OutStgMedium.HGLOBAL = 0 then
- Result := E_OUTOFMEMORY
- end
- else
- // Don't generate a copy just use ourselves and the copy previoiusly saved
- MySTGMEDIUM(OutStgMedium).UnkForRelease := Pointer(Self as IDataObject) // Does increase RefCount
- end;
- TYMED_FILE:
- begin
- if CopyInMedium then
- begin
- OutStgMedium.lpszFileName := CoTaskMemAlloc(lstrLenW(InStgMedium.lpszFileName));
- // !! StrCopyW(PChar(OutStgMedium.lpszFileName), PChar(InStgMedium.lpszFileName))
- end
- else
- MySTGMEDIUM(OutStgMedium).UnkForRelease := Pointer(Self as IDataObject) // Does increase RefCount
- end;
- TYMED_ISTREAM:
-
- IUnknown(MySTGMEDIUM(OutStgMedium).stm)._AddRef;
- TYMED_ISTORAGE:
- IUnknown(MySTGMEDIUM(OutStgMedium).stg)._AddRef;
- TYMED_GDI:
- if not CopyInMedium then
- MySTGMEDIUM(OutStgMedium).UnkForRelease := Pointer(Self as IDataObject)
- // Does not increase RefCount
- else
- Result := DV_E_TYMED; // Don't know how to copy GDI objects right now
- TYMED_MFPICT:
- if not CopyInMedium then
- MySTGMEDIUM(OutStgMedium).UnkForRelease := Pointer(Self as IDataObject)
- // Does not increase RefCount
- else
- Result := DV_E_TYMED;
- // Don't know how to copy MetaFile objects right now
- TYMED_ENHMF:
- if not CopyInMedium then
- MySTGMEDIUM(OutStgMedium).UnkForRelease := Pointer(Self as IDataObject)
- // Does not increase RefCount
- else
- Result := DV_E_TYMED;
- // Don't know how to copy enhanced metafiles objects right now
- else
- Result := DV_E_TYMED
- end;
-
- // I still have to do this. The Compiler will call _Release on the above Self as IDataObject
- // casts which is not what is necessary. The DataObject is released correctly.
- if (MySTGMEDIUM(OutStgMedium).UnkForRelease <> nil) and (Result = S_OK) then
- IUnknown(MySTGMEDIUM(OutStgMedium).UnkForRelease)._AddRef
-end;
-
-function TDropSource.GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium): HRESULT;
-var
- Global: Cardinal;
- P: Pointer;
- TextData: string;
- B: TBitmap;
- BitmapHandle: HBITMAP;
-begin
- FillChar(Medium, SizeOf(Medium), 0);
- Result := DV_E_FORMATETC;
- if QueryGetData(FormatEtcIn) <> S_OK then
- Exit;
-
- case FormatEtcIn.cfFormat of
- CF_UNICODETEXT:
- begin
- TextData := Data.Data.ToString;
- Global := GlobalAlloc(0, (Length(TextData) + 1) * 2);
- P := GlobalLock(Global);
- try
- Move(PChar(TextData)^, P^, GlobalSize(Global));
- finally
- GlobalUnlock(Global);
- end;
- Medium.Tymed := TYMED_HGLOBAL;
- Medium.HGLOBAL := Global;
- Result := S_OK;
- end;
- CF_BITMAP:
- begin
- BitmapHandle := 0;
- if Data.Data.IsType then
- BitmapHandle := BitmapToWinBitmap(TBitmap(Data.Data.AsObject), TAlphaColorRec.White)
- else if Data.Data.IsType then
- begin
- B := TBitmap.Create;
- try
- B.Assign(TBitmapSurface(Data.Data.AsObject));
- BitmapHandle := BitmapToWinBitmap(B, TAlphaColorRec.White);
- finally
- B.Free;
- end;
- end;
- if BitmapHandle <> 0 then
- begin
- Medium.Tymed := TYMED_GDI;
- Medium.HBITMAP := BitmapHandle;
- Result := S_OK;
- end;
- end;
- CF_FMOBJECT:
- if PlatformWin.FDragAndDropActive then
- begin
- Medium.Tymed := TYMED_HGLOBAL;
- Medium.HGLOBAL := THandle(Self);
- Result := S_OK;
- end;
- end;
- if (Result <> S_OK) and (Formats <> nil) then
- begin
- Result := QueryGetData(FormatEtcIn);
- if (Result = S_OK) and (RetrieveOwnedStgMedium(FormatEtcIn, Medium) = E_INVALIDARG) then
- Result := E_UNEXPECTED
- end
-end;
-
-function TDropSource.GetDataHere(const FormatEtc: TFormatEtc; out Medium: TStgMedium): HRESULT;
-begin
- Result := E_NOTIMPL;
-end;
-
-function TDropSource.QueryGetData(const FormatEtc: TFormatEtc): HRESULT;
-var
- I: Integer;
-begin
- Result := DV_E_FORMATETC;
- case FormatEtc.cfFormat of
- CF_UNICODETEXT:
- if not Data.Data.IsObject then
- Result := S_OK;
- CF_BITMAP:
- if Data.Data.IsObject and (Data.Data.IsType or Data.Data.IsType) then
- Result := S_OK;
- CF_FMOBJECT:
- if PlatformWin.FDragAndDropActive then
- Result := S_OK;
- end;
- if Result <> S_OK then
- begin
- if Formats <> nil then
- begin
- I := 0;
- Result := DV_E_FORMATETC;
- while (I < Length(Formats)) and (Result = DV_E_FORMATETC) do
- begin
- if Formats[I].FormatEtc.cfFormat = FormatEtc.cfFormat then
- begin
- if (Formats[I].FormatEtc.dwAspect = FormatEtc.dwAspect) then
- begin
- if (Formats[I].FormatEtc.Tymed and FormatEtc.Tymed <> 0) then
- Result := S_OK
- else
- Result := DV_E_TYMED;
- end
- else
- Result := DV_E_DVASPECT;
- end
- else
- Result := DV_E_FORMATETC;
- Inc(I)
- end
- end
- else
- Result := E_UNEXPECTED;
- end;
-end;
-
-function TDropSource.CanonicalIUnknown(const TestUnknown: IUnknown): IUnknown;
-// Uses COM object identity: An explicit call to the IUnknown::QueryInterface
-// method, requesting the IUnknown interface, will always return the same
-// pointer.
-begin
- if TestUnknown <> nil then
- begin
- if Supports(TestUnknown, IUnknown, Result) then
- IUnknown(Result)._Release
- // Don't actually need it just need the pointer value
- else
- Result := TestUnknown
- end
- else
- Result := TestUnknown
-end;
-
-function TDropSource.SetData(const FormatEtc: TFormatEtc; var Medium: TStgMedium; fRelease: BOOL): HRESULT;
-var
- Index: Integer;
-begin
- // See if we already have a format of that type available.
- Index := FindFormatEtc(FormatEtc);
- if Index > -1 then
- begin
- // Yes we already have that format type stored. Just use the TClipboardFormat
- // in the List after releasing the data
- ReleaseStgMedium(Formats[Index].StgMedium);
- FillChar(Formats[Index].StgMedium, SizeOf(Formats[Index].StgMedium), #0);
- end
- else
- begin
- // It is a new format so create a new TDataObjectInfo record and store it in
- // the Format array
- SetLength(Formats, Length(Formats) + 1);
- Formats[Length(Formats) - 1].FormatEtc := FormatEtc;
- Index := Length(Formats) - 1;
- end;
- // The data is owned by the TClipboardFormat object
- Formats[Index].OwnedByDataObject := True;
-
- if fRelease then
- begin
- // We are simply being given the data and we take control of it.
- Formats[Index].StgMedium := Medium;
- Result := S_OK
- end
- else
- // We need to reference count or copy the data and keep our own references
- // to it.
- Result := StgMediumIncRef(Medium, Formats[Index].StgMedium, True);
-
- // Can get a circular reference if the client calls GetData then calls
- // SetData with the same StgMedium. Because the unkForRelease and for
- // the IDataObject can be marshalled it is necessary to get pointers that
- // can be correctly compared.
- // See the IDragSourceHelper article by Raymond Chen at MSDN.
- if MySTGMEDIUM(Formats[Index].StgMedium).UnkForRelease <> nil then
- begin
- if CanonicalIUnknown(Self) = CanonicalIUnknown(IUnknown(MySTGMEDIUM(Formats[Index].StgMedium).UnkForRelease)) then
- begin
- IUnknown(MySTGMEDIUM(Formats[Index].StgMedium).UnkForRelease)._Release;
- MySTGMEDIUM(Formats[Index].StgMedium).UnkForRelease := nil
- end;
- end;
-end;
-
-{ Platform DragDrop }
-
-procedure TPlatformWin.AddRecognizer(const ARec: TInteractiveGesture; const AForm: TCommonCustomForm);
-begin
- Include(FEnabledInteractiveGestures, ARec);
-end;
-
-procedure TPlatformWin.BeginDragDrop(AForm: TCommonCustomForm; const Data: TDragObject; ABitmap: TBitmap);
-var
- DropSource: TDropSource;
- DropEffect: Longint;
- DragSourceHelper: IDragSourceHelper;
- SHDRAGIMAGE: TSHDRAGIMAGE;
- DragMousePos, Offset: TPointF;
- Control: IControl;
-begin
- DropSource := TDropSource.Create(nil);
- try
- DropSource.Data := Data;
-
- DragMousePos := GetMousePos;
- // CoCreateInstance takes too long to execute so mouse position becomes different when called later
- if (Succeeded(CoCreateInstance(CLSID_DragDropHelper, nil, CLSCTX_INPROC_SERVER, IDragSourceHelper, DragSourceHelper)
- ))
- and (DragSourceHelper <> nil) then
- begin
- if Data.Source is TControl then
- Offset := TControl(Data.Source).AbsoluteToLocal(AForm.ScreenToClient(DragMousePos))
- else
- Offset := PointF((ABitmap.Width div 2), ABitmap.Height div 2);
-
- FillChar(SHDRAGIMAGE, SizeOf(SHDRAGIMAGE), 0);
- SHDRAGIMAGE.sizeDragImage.cx := ABitmap.Width;
- SHDRAGIMAGE.sizeDragImage.cy := ABitmap.Height;
- SHDRAGIMAGE.ptOffset.X := Round(Offset.X);
- SHDRAGIMAGE.ptOffset.Y := Round(Offset.Y);
- SHDRAGIMAGE.hbmpDragImage := BitmapToWinBitmap(ABitmap, True);
- if not Succeeded(DragSourceHelper.InitializeFromBitmap(@SHDRAGIMAGE, DropSource)) then
- DeleteObject(SHDRAGIMAGE.hbmpDragImage);
- end;
-
- if not IsThemeActive then
- begin
- SetCursor(crDrag);
- FDragAndDropActive := True;
- try
- DoDragDrop(DropSource, DropSource, DROPEFFECT_LINK or DROPEFFECT_COPY or DROPEFFECT_MOVE, DropEffect);
- finally
- FDragAndDropActive := False;
- SetCursor(crDefault);
- end;
- end
- else
- try
- FDragAndDropActive := True;
- DoDragDrop(DropSource, DropSource, DROPEFFECT_LINK or DROPEFFECT_COPY or DROPEFFECT_MOVE, DropEffect);
- finally
- FDragAndDropActive := False;
- end;
-
- if (DropEffect = 0) and Supports(Data.Source, IControl, Control) then
- Control.DragEnd;
-
- if DragSourceHelper <> nil then
- DragSourceHelper := nil;
- finally
- DropSource.Free;
- end;
-end;
-
-{ Mouse }
-
-procedure TPlatformWin.SetCursor(const ACursor: TCursor);
-const
- CustomCursorMap: array [crSizeAll .. crNone] of PChar = (
- nil, nil, nil, nil, nil, IDC_SQLWAIT, IDC_MULTIDRAG, nil, nil, IDC_NODROP, IDC_DRAG, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil);
-const
- CursorMap: array [crSizeAll .. crNone] of PChar = (
- IDC_SIZEALL, IDC_HAND, IDC_HELP, IDC_APPSTARTING, IDC_NO, nil, nil, IDC_SIZENS, IDC_SIZEWE, nil, nil, IDC_WAIT,
- IDC_UPARROW, IDC_SIZEWE, IDC_SIZENWSE, IDC_SIZENS, IDC_SIZENESW, IDC_SIZEALL, IDC_IBEAM, IDC_CROSS, IDC_ARROW, nil);
-var
- NewCursor: HCURSOR;
-begin
- if not FDragAndDropActive then
- begin
- // We don't set cursor by default, when we create window. So we should use crArrow cursor by default.
- if (ACursor = crDefault) and not (csDesigning in Application.ComponentState) then
- FCursor := crArrow
- else
- FCursor := ACursor;
-
- if FCursor < 0 then
- begin
- if CustomCursorMap[FCursor] <> nil then
- NewCursor := LoadCursorW(HInstance, CustomCursorMap[FCursor])
- else
- NewCursor := LoadCursorW(0, CursorMap[FCursor]);
- Winapi.Windows.SetCursor(NewCursor);
- end;
- end;
-end;
-
-function TPlatformWin.GetCursor: TCursor;
-begin
- Result := FCursor;
-end;
-
-function TPlatformWin.GetFullScreen(const AForm: TCommonCustomForm): Boolean;
-var
- LFSParam: TFullScreenParams;
-begin
- Result := False;
- if FFullScreenSupport.TryGetValue(AForm, LFSParam) then
- Result := LFSParam.IsFullScreen;
-end;
-
-function TPlatformWin.GetImmManager(const Index: TCommonCustomForm): TImmManager;
-begin
- Result := FImmManagers[Index];
-end;
-
-procedure TPlatformWin.SetFullScreen(const AForm: TCommonCustomForm;
- const AValue: Boolean);
-var
- LFSParam: TFullScreenParams;
- LClean: TFullScreenParams;
-begin
- RaiseIfNil(AForm, 'AForm');
-
- if AValue and not (TFmxFormState.Showing in AForm.FormState) then
- AForm.Visible := True;
- FillChar(LFSParam, SizeOf(LFSParam), 0);
- if not FFullScreenSupport.TryGetValue(AForm, LFSParam) then
- FFullScreenSupport.Add(AForm, LFSParam);
- if AValue and (AForm.Visible or (TFmxFormState.Showing in AForm.FormState)) then
- begin
- LFSParam.WindowState := AForm.WindowState;
- LFSParam.BorderStyle := AForm.BorderStyle;
- if AForm.WindowState = TWindowState.wsNormal then
- begin
- LFSParam.Size := Point(AForm.Width, AForm.Height);
- LFSParam.Position := Point(AForm.Left, AForm.Top);
- end;
- FFullScreenSupport.Items[AForm] := LFSParam;
- if AForm.WindowState = TWindowState.wsMinimized then
- AForm.WindowState := TWindowState.wsMaximized;
- AForm.BorderStyle := TFmxFormBorderStyle.None;
- AForm.WindowState := TWindowState.wsMaximized;
- end
- else
- begin
- LClean := LFSParam;
- LClean.Clean;
- FFullScreenSupport.Items[AForm] := LClean;
- if (LFSParam.Size.X > 0) and (LFSParam.Size.Y > 0) then
- begin
- AForm.BorderStyle := LFSParam.BorderStyle;
- AForm.SetBounds(LFSParam.Position.X, LFSParam.Position.Y, LFSParam.Size.X, LFSParam.Size.Y);
- AForm.WindowState := LFSParam.WindowState;
- end;
- end;
-end;
-
-procedure TPlatformWin.SetShowFullScreenIcon(const AForm: TCommonCustomForm; const AValue: Boolean);
-begin
-end;
-
-function TPlatformWin.GetMousePos: TPointF;
-var
- P: TPoint;
-begin
- GetCursorPos(P);
- Result := PointF(P.X, P.Y);
-end;
-
-{ Screen }
-
-function TPlatformWin.GetScreenSize: TPointF;
-var
- WR: TRect;
-begin
- Winapi.Windows.GetWindowRect(GetDesktopWindow, WR);
- Result := PointF(WR.Right, WR.Bottom);
-end;
-
-function TPlatformWin.GetScreenScale: Single;
-var
- DC: HDC;
-begin
- DC := GetDC(0);
- try
- Result := GetDCScale(DC);
- finally
- ReleaseDC(0, DC);
- end;
-end;
-
-function TPlatformWin.GetScreenOrientation: TScreenOrientation;
-begin
- Result := TScreenOrientation.Landscape;
-end;
-
-procedure TPlatformWin.SetSupportedScreenOrientations(const AOrientations: TScreenOrientations);
-begin
- // Not needed for Windows
-end;
-
-{ IFMXDeviceService }
-
-function TPlatformWin.GetFeatures: TDeviceFeatures;
-var
- Value: Integer;
-begin
- Value := GetSystemMetrics(SM_DIGITIZER);
- if ((Value and NID_READY) = NID_READY) and (((Value and NID_MULTI_INPUT) = NID_MULTI_INPUT)) then
- Result := [TDeviceFeature.HasTouchScreen]
- else
- Result := [];
-end;
-
-function TPlatformWin.GetFirstWeekday: Byte;
-const
- MondayOffset = 1;
-var
- buffer: DWORD;
-begin
- // On Windows zero index corresponds to Monday, so we need to add offset to match DayMonday = 1 in RTL
- if GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, @buffer, SizeOf(buffer) div SizeOf(Char)) > 0 then
- Result := buffer - Ord('0') + MondayOffset
- else
- Result := DayMonday;
-end;
-
-function TPlatformWin.GetModel: string;
-begin
- Result := '';
-end;
-
-function TPlatformWin.GetDeviceClass: TDeviceInfo.TDeviceClass;
-begin
- if (GetSystemMetrics(SM_TABLETPC) <> 0) and (GetSystemMetrics(SM_DIGITIZER) and NID_MULTI_INPUT = NID_MULTI_INPUT)
- then
- Result := TDeviceInfo.TDeviceClass.Tablet
- else
- Result := TDeviceInfo.TDeviceClass.Desktop;
-end;
-
-{ IFMXSystemInformationService }
-
-function TPlatformWin.GetScrollingBehaviour: TScrollingBehaviours;
-var
- Value: Integer;
-begin
- Value := GetSystemMetrics(SM_DIGITIZER);
- if ((Value and NID_READY) = NID_READY) and (((Value and NID_MULTI_INPUT) = NID_MULTI_INPUT)) then
- Result := [TScrollingBehaviour.Animation, TScrollingBehaviour.TouchTracking]
- else
- Result := [];
-end;
-
-function TPlatformWin.GetMinScrollThumbSize: Single;
-begin
- Result := 15;
-end;
-
-function TPlatformWin.GetMenuShowDelay: Integer;
-begin
- if SystemParametersInfo(SPI_GETMENUSHOWDELAY, 0, @Result, 0) then
- Result := Result div 2
- else
- Result := 0;
-end;
-
-function TPlatformWin.GetCurrentLangID: string;
-var
- buffer: MarshaledString;
- UserLCID: LCID;
- buflen: Integer;
-begin
- // defaults
- UserLCID := GetUserDefaultLCID;
- buflen := GetLocaleInfo(UserLCID, LOCALE_SISO639LANGNAME, nil, 0);
- buffer := StrAlloc(buflen);
- if GetLocaleInfo(UserLCID, LOCALE_SISO639LANGNAME, buffer, buflen) <> 0 then
- Result := buffer
- else
- Result := 'en';
- StrDispose(buffer);
-end;
-
-function TPlatformWin.GetDefaultFontFamilyName: string;
-begin
- if TOSVersion.Check(6) then
- Result := 'Segoe UI'
- else
- Result := 'Tahoma';
-end;
-
-function TPlatformWin.GetDefaultFontSize: Single;
-begin
- Result := DefaultWindowsFontSize;
-end;
-
-function TPlatformWin.GetDefaultSize(const AComponent: TComponentKind): TSize;
-begin
- if AComponent = TComponentKind.Calendar then
- Result := TSize.Create(202, 180)
- else
- Result := TSize.Create(80, 22);
-end;
-
-function TPlatformWin.GetLocaleFirstDayOfWeek: string;
-var
- buffer: DWORD;
-begin
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, @buffer, SizeOf(buffer) div SizeOf(Char));
- Result := Chr(buffer);
-end;
-
-function TPlatformWin.FindForm(const AHandle: TWindowHandle): TCommonCustomForm;
-begin
- RaiseIfNil(AHandle, 'AHandle');
-
- if AHandle is TWinWindowHandle then
- Result := TWinWindowHandle(AHandle).Form
- else
- Result := nil;
-end;
-
-procedure TPlatformWin.Log(const AFormat: string; const AParams: array of const);
-begin
- if Length(AParams) = 0 then
- OutputDebugString(PChar(AFormat))
- else
- OutputDebugString(PChar(Format(AFormat, AParams)));
-end;
-
-function TPlatformWin.GetListingHeaderBehaviors: TListingHeaderBehaviors;
-begin
- Result := [];
-end;
-
-function TPlatformWin.GetListingSearchFeatures: TListingSearchFeatures;
-begin
- Result := [TListingSearchFeature.StayOnTop];
-end;
-
-function TPlatformWin.GetListingTransitionFeatures: TListingTransitionFeatures;
-begin
- Result := [];
-end;
-
-function TPlatformWin.GetListingEditModeFeatures: TListingEditModeFeatures;
-begin
- Result := [];
-end;
-
-function TPlatformWin.GetSaveStateFileName(const ABlockName: string): string;
-const
- Prefix = '~';
- Separator = '_';
-var
- S: TStringBuilder;
- FilePath: string;
-begin
- if FSaveStateStoragePath.IsEmpty then
- FilePath := TPath.GetTempPath
- else
- FilePath := FSaveStateStoragePath;
- S := TStringBuilder.Create(FilePath.Length + Length(Prefix) + Length(Separator) + ABlockName.Length);
- try
- S.Append(FilePath);
- S.Append(Prefix);
- S.Append(ChangeFileExt(ExtractFileName(ParamStr(0)), ''));
- S.Append(Separator);
- S.Append(ABlockName);
- Result := S.ToString(True);
- finally
- S.Free;
- end;
-end;
-
-function TPlatformWin.GetSaveStateBlock(const ABlockName: string; const ABlockData: TStream): Boolean;
-
- procedure ReadPersistent(const AFileName: string);
- var
- S: TFileStream;
- begin
- S := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
- try
- ABlockData.CopyFrom(S, S.Size);
- finally
- S.Free;
- end;
- end;
-
-var
- LFileName: string;
-begin
- if ABlockName.IsEmpty or (ABlockData = nil) then
- Exit(False);
- LFileName := GetSaveStateFileName(ABlockName);
- if not TFile.Exists(LFileName) then
- Exit(False);
- try
- ReadPersistent(LFileName);
- except
- Exit(False);
- end;
- Result := True;
-end;
-
-function TPlatformWin.SetSaveStateBlock(const ABlockName: string; const ABlockData: TStream): Boolean;
-
- procedure WritePersistent(const AFileName: string);
- var
- S: TFileStream;
- begin
- S := TFileStream.Create(AFileName, fmCreate or fmShareExclusive);
- try
- ABlockData.Seek(0, TSeekOrigin.soBeginning);
- S.CopyFrom(ABlockData, ABlockData.Size);
- finally
- S.Free;
- end;
- end;
-
-var
- LFileName: string;
-begin
- if ABlockName.IsEmpty then
- Exit(False);
- LFileName := GetSaveStateFileName(ABlockName);
- if (ABlockData = nil) or (ABlockData.Size < 1) then
- begin
- if TFile.Exists(LFileName) then
- TFile.Delete(LFileName);
- end
- else
- try
- WritePersistent(LFileName);
- except
- Exit(False);
- end;
- Result := True;
-end;
-
-function TPlatformWin.GetSaveStateStoragePath: string;
-begin
- Result := FSaveStateStoragePath;
-end;
-
-procedure TPlatformWin.SetSaveStateStoragePath(const ANewPath: string);
-begin
- if not ANewPath.IsEmpty then
- FSaveStateStoragePath := IncludeTrailingPathDelimiter(ANewPath)
- else
- FSaveStateStoragePath := '';
-end;
-
-function TPlatformWin.GetSaveStateNotifications: Boolean;
-begin
- Result := False;
-end;
-
-function TPlatformWin.GetDisplayMetrics: TDeviceDisplayMetrics;
-var
- R: TRect;
-begin
- Winapi.Windows.GetWindowRect(GetDesktopWindow, R);
- Result.PhysicalScreenSize := TSize.Create(R.Width, R.Height);
- Result.RawScreenSize := Result.PhysicalScreenSize;
- Result.LogicalScreenSize := Result.PhysicalScreenSize;
- if Result.PhysicalScreenSize.cx > 0 then
- Result.AspectRatio := Result.PhysicalScreenSize.cy / Result.PhysicalScreenSize.cx
- else
- Result.AspectRatio := 1;
- Result.PixelsPerInch := 96; // Windows Default
- Result.ScreenScale := 1;
- Result.FontScale := 1;
-end;
-
-function TPlatformWin.RegisterKeyMapping(const PlatformKey, VirtualKey: Word; const KeyKind: TKeyKind): Boolean;
-begin
- Result := FKeyMapping.RegisterKeyMapping(PlatformKey, VirtualKey, KeyKind);
-end;
-
-function TPlatformWin.UnregisterKeyMapping(const PlatformKey: Word): Boolean;
-begin
- Result := FKeyMapping.UnregisterKeyMapping(PlatformKey);
-end;
-
-function TPlatformWin.PlatformKeyToVirtualKey(const PlatformKey: Word; var KeyKind: TKeyKind): Word;
-begin
- Result := FKeyMapping.PlatformKeyToVirtualKey(PlatformKey, KeyKind);
-end;
-
-function TPlatformWin.VirtualKeyToPlatformKey(const VirtualKey: Word): Word;
-begin
- Result := FKeyMapping.VirtualKeyToPlatformKey(VirtualKey);
-end;
-
-procedure RegisterApplicationHWNDProc(const Proc: TApplicationHWNDProc);
-begin
- if PlatformWin <> nil then
- PlatformWin.ApplicationHWNDProc := Proc
- else
- raise EArgumentNilException.Create(SArgumentNil);
-end;
-
-{ TVirtualKeyboardWin }
-
-constructor TVirtualKeyboardWin.Create;
-var
- L: Integer;
- S: string;
- HID: HKey;
-begin
- S := '';
- inherited Create;
- SetLength(S, MAX_PATH);
- L := GetSystemDirectory(PChar(S), MAX_PATH);
- SetLength(S, L);
- FPath := S;
- FExeName := 'osk.exe';
- FWndClassName := 'OSKMainClass';
- FKBPresent := True;
- if not TOSVersion.Check(6, 2) then
- begin
- if Winapi.Windows.RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Enum', 0, KEY_READ,
- HID) = ERROR_SUCCESS then
- try
- S := FindKeyValue(HID, 'ClassGUID', '{4D36E96B-E325-11CE-BFC1-08002BE10318}', 'Control',
- 'ActiveService');
- FKBPresent := S <> '';
- finally
- RegCloseKey(HID);
- end;
- end;
- FNewvkbState := vkbState;
- StartTimerLang;
-end;
-
-procedure TVirtualKeyboardWin.Clear;
-var
- H: HWND;
-begin
- H := vkbHandle;
- if (H <> 0) and (FInst > 32) then
- begin
- PostMessage(H, WM_SYSCOMMAND, SC_CLOSE, 0);
- end;
- KillTimerVisible;
- KillTimerLang;
- FInst := 0;
- FError := False;
- FLastTime := 0;
- FLastHandle := 0;
-end;
-
-destructor TVirtualKeyboardWin.Destroy;
-begin
- Clear;
- inherited;
-end;
-
-function TVirtualKeyboardWin.FindKeyValue(const Key: HKey; const Name, Value, SubKeyName, SubValueName: string): string;
-var
- Buf, Val: string;
- R, I, J: Integer;
- SubKey: HKey;
- BufSize, T, ValSize: Cardinal;
-begin
- Result := '';
- I := 0;
- Buf := '';
- Val := '';
- BufSize := 2048;
- SetLength(Buf, BufSize);
- ValSize := BufSize;
- SetLength(Val, ValSize);
- repeat
- BufSize := Length(Buf);
- ValSize := Length(Val);
- R := Winapi.Windows.RegEnumValue(Key, I, @Buf[1], BufSize, nil, @T, @Val[1], @ValSize);
- if (R = ERROR_SUCCESS) then
- begin
- if (string(PChar(Buf)) = Name) and (T = REG_SZ) and (SameText(string(PChar(Val)), Value)) then
- begin
- if Winapi.Windows.RegOpenKeyEx(Key, PChar(SubKeyName), 0, KEY_READ, SubKey) = ERROR_SUCCESS
- then
- try
- J := 0;
- repeat
- BufSize := Length(Buf);
- ValSize := Length(Val);
- R := Winapi.Windows.RegEnumValue(SubKey, J, @Buf[1], BufSize, nil, @T, @Val[1],
- @ValSize);
- if (R = ERROR_SUCCESS) and (string(PChar(Buf)) = SubValueName) and (T = REG_SZ) and
- (string(PChar(Val)) <> '') then
- begin
- Result := string(PChar(Val));
- end;
- Inc(J);
- until (Result <> '') or (R <> ERROR_SUCCESS);
- finally
- RegCloseKey(SubKey);
- end;
- end;
- Inc(I);
- end;
- until (Result <> '') or (R <> ERROR_SUCCESS);
- if Result = '' then
- begin
- I := 0;
- repeat
- R := Winapi.Windows.RegEnumKey(Key, I, PChar(Buf), BufSize);
- if R = ERROR_SUCCESS then
- begin
- if Winapi.Windows.RegOpenKeyEx(Key, PChar(Buf), 0, KEY_READ, SubKey) = ERROR_SUCCESS then
- try
- Result := FindKeyValue(SubKey, Name, Value, SubKeyName, SubValueName);
- finally
- RegCloseKey(SubKey);
- end;
- Inc(I);
- end;
- until (Result <> '') or (R <> ERROR_SUCCESS);
- end;
-end;
-
-function TVirtualKeyboardWin.GetVirtualKeyboardState: TVirtualKeyboardStates;
-var
- LState: TvkbState;
-begin
- if FError then
- Result := [TVirtualKeyboardState.Error]
- else
- Result := [];
- if IsAutoShow then
- Result := Result + [TVirtualKeyboardState.AutoShow];
- if not FError then
- begin
- if Abs(Now - FLastTime) > 1 / SecsPerDay then
- LState := vkbState
- else
- LState := FLastvkbState;
- if LState = TvkbState.Shown then
- Result := Result + [TVirtualKeyboardState.Visible];
- end;
-end;
-
-function TVirtualKeyboardWin.GetVKBounds: TRect;
-begin
- if FLastHandle <> 0 then
- GetWindowRect(FLastHandle, Result);
-end;
-
-function TVirtualKeyboardWin.HideVirtualKeyboard: Boolean;
-begin
- Result := not FError;
- if (not FError) then
- begin
- if IsAutoShow then
- FNewvkbState := TvkbState.Hidden
- else
- FNewvkbState := TvkbState.None;
- if FNewvkbState <> vkbState then
- begin
- StartTimerVisible;
- end;
- end;
-end;
-
-procedure TVirtualKeyboardWin.SetTransientState(Value: Boolean);
-begin
-end;
-
-function TVirtualKeyboardWin.ShowVirtualKeyboard(const AControl: TFmxObject): Boolean;
-var
- Root: IRoot;
-begin
- Result := not FError;
- if (not FError) then
- begin
- FNewvkbState := TvkbState.Shown;
- if FNewvkbState <> vkbState then
- StartTimerVisible;
- FWait := True;
- FFormHandle := 0;
- if (AControl <> nil) then
- begin
- Root := AControl.Root;
- if (Root <> nil) and (Root.GetObject is TCommonCustomForm) then
- FFormHandle := FormToHWND(TCommonCustomForm(Root.GetObject));
- end;
- end;
-end;
-
-function TVirtualKeyboardWin.IsAutoShow: Boolean;
-begin
- Result := (VKAutoShowMode = TVKAutoShowMode.Always) or ((VKAutoShowMode = TVKAutoShowMode.DefinedBySystem) and
- (not FKBPresent));
-end;
-
-procedure TVirtualKeyboardWin.KillTimerLang;
-begin
- if FHTmerLang <> 0 then
- begin
- if (FTimerService <> nil) or
- TPlatformServices.Current.SupportsPlatformService(IFMXTimerService, FTimerService) then
- begin
- FTimerService.DestroyTimer(FHTmerLang);
- FHTmerLang := 0;
- end
- else
- raise EUnsupportedPlatformService.Create('IFMXTimerService');
- end;
-end;
-
-procedure TVirtualKeyboardWin.StartTimerLang;
-begin
- if FHTmerLang = 0 then
- begin
- if (FTimerService <> nil) or
- TPlatformServices.Current.SupportsPlatformService(IFMXTimerService, FTimerService) then
- begin
- FHTmerLang := FTimerService.CreateTimer(250, TimerLangProc);
- end
- else
- raise EUnsupportedPlatformService.Create('IFMXTimerService');
- end;
-end;
-
-procedure TVirtualKeyboardWin.TimerLangProc;
-var
- LCodeKeyboard: HKL;
-begin
- if FStepActivate > 0 then
- begin
- FLastHandle := vkbHandle;
- case FStepActivate of
- 1:
- begin
- SetActiveWindow(FLastHandle);
- SetFocus(FLastHandle);
- end;
- 4:
- begin
- SetActiveWindow(FFormHandle);
- end;
- 5:
- begin
- SetFocus(FFormHandle);
- FCodeKeyboard := GetKeyboardLayout(0);
- end;
- end;
- if FStepActivate = 5 then
- FStepActivate := 0
- else
- begin
- Inc(FStepActivate);
- Exit;
- end;
- end
- else
- begin
- if vkbState = TvkbState.Shown then
- begin
- LCodeKeyboard := GetKeyboardLayout(0);
- if FCodeKeyboard <> LCodeKeyboard then
- begin
- SetActiveWindow(0);
- SetActiveWindow(FFormHandle);
- SetFocus(FFormHandle);
- FCodeKeyboard := LCodeKeyboard;
- end;
- end;
- end;
-end;
-
-procedure TVirtualKeyboardWin.KillTimerVisible;
-begin
- if FHTmerVisible <> 0 then
- begin
- if (FTimerService <> nil) or
- TPlatformServices.Current.SupportsPlatformService(IFMXTimerService, FTimerService) then
- begin
- FTimerService.DestroyTimer(FHTmerVisible);
- FHTmerVisible := 0;
- end
- else
- raise EUnsupportedPlatformService.Create('IFMXTimerService');
- end;
-end;
-
-procedure TVirtualKeyboardWin.StartTimerVisible;
-begin
- if FHTmerVisible = 0 then
- begin
- if (FTimerService <> nil) or
- TPlatformServices.Current.SupportsPlatformService(IFMXTimerService, FTimerService) then
- begin
- FHTmerVisible := FTimerService.CreateTimer(100, TimerVisibleProc);
- end
- else
- raise EUnsupportedPlatformService.Create('IFMXTimerService');
- end;
-end;
-
-procedure TVirtualKeyboardWin.TimerVisibleProc;
-var
- LState: TvkbState;
- procedure Quit;
- begin
- if FLastHandle <> 0 then
- PostMessage(FLastHandle, WM_SYSCOMMAND, SC_CLOSE, 0);
- Sleep(40);
- FLastHandle := 0;
- TMessageManager.DefaultManager.SendMessage(Self, TVKStateChangeMessage.Create(False, TRect.Empty), True);
- end;
- procedure Restore;
- begin
- if FLastHandle <> 0 then
- begin
- if Winapi.Windows.GetActiveWindow <> FLastHandle then
- begin
- SendMessage(FLastHandle, WM_SYSCOMMAND, SC_RESTORE, 0);
- TMessageManager.DefaultManager.SendMessage(Self, TVKStateChangeMessage.Create(True, GetVKBounds), True);
- end;
- end;
- end;
- procedure Hide;
- begin
- if FLastHandle <> 0 then
- PostMessage(FLastHandle, WM_SYSCOMMAND, SC_CLOSE, 0);
- FWait := True;
- FLastHandle := 0;
- TMessageManager.DefaultManager.SendMessage(Self, TVKStateChangeMessage.Create(False, TRect.Empty), True);
- end;
-
-begin
- if FWait then
- begin
- FLastHandle := vkbHandle;
- FWait := False;
- Exit;
- end;
- FWait := True;
- LState := vkbState;
- if LState <> FNewvkbState then
- begin
- case LState of
- TvkbState.None:
- case FNewvkbState of
- TvkbState.Hidden: { none }
- ;
- TvkbState.Shown:
- begin
- vkbExecute(FFormHandle);
- FWait := False;
- FStepActivate := 1;
- Exit;
- end;
- end;
- TvkbState.Hidden:
- case FNewvkbState of
- TvkbState.None:
- Quit;
- TvkbState.Shown:
- Restore;
- end;
- TvkbState.Shown:
- case FNewvkbState of
- TvkbState.None:
- Quit;
- TvkbState.Hidden:
- Hide;
- end;
- end;
- FNewvkbState := vkbState;
- end
- else if (FNewvkbState = TvkbState.Shown) and (FStepActivate = 1) then
- // Here we are sending a deferred message, otherwise there will be incorrect coordinates
- TMessageManager.DefaultManager.SendMessage(Self, TVKStateChangeMessage.Create(True, GetVKBounds), True);
- KillTimerVisible;
-end;
-
-procedure TVirtualKeyboardWin.vkbExecute(FormHandle: HWND);
-
- function IsFileExisted(const AFileName: string): Boolean;
- begin
- if FileExists(AFileName) then
- Exit(True);
-
- TWow64Redirection.Current.Disable;
- try
- Result := FileExists(AFileName);
- finally
- TWow64Redirection.Current.Restore;
- end;
- end;
-
- function LaunchVirtualKeyboardApp(const AFileName: string): HINST;
- begin
- TWow64Redirection.Current.Disable;
- try
- Result := ShellExecute(FormHandle, 'open', PChar(AFileName), nil, PChar(ExtractFileDir(AFileName)), SW_SHOWNOACTIVATE);
- finally
- TWow64Redirection.Current.Restore;
- end;
- end;
-
- function WaitLaunchingVirtualKeyboardApp: Boolean;
- const
- StepPause = 40; //msec
- MaxAttemptsCount = 100;
- var
- AttemptsCount: Integer;
- begin
- AttemptsCount := 0;
- while (AttemptsCount < MaxAttemptsCount) and (vkbState = TvkbState.None) do
- begin
- Inc(AttemptsCount);
- Sleep(StepPause);
- end;
- Result := AttemptsCount < MaxAttemptsCount;
- end;
-
-var
- VKAppFileName: string;
- H: HWND;
-begin
- if FError then
- Exit;
- H := vkbHandle;
- if H = 0 then
- begin
- VKAppFileName := TPath.Combine(Path, ExeName);
-
- if IsFileExisted(VKAppFileName) then
- FInst := LaunchVirtualKeyboardApp(VKAppFileName)
- else
- FInst := 0;
-
- if FInst <= 32 then
- FError := True
- else if not WaitLaunchingVirtualKeyboardApp then
- begin
- FInst := 0;
- FError := True;
- end;
- end;
-end;
-
-function TVirtualKeyboardWin.vkbHandle: HWND;
-begin
- Result := Winapi.Windows.FindWindow(PChar(FWndClassName), nil);
-end;
-
-function TVirtualKeyboardWin.vkbState: TvkbState;
-var
- H: HWND;
-begin
- H := vkbHandle;
- if (H <> INVALID_HANDLE_VALUE) and (H <> 0) then
- begin
- if (not IsWindowVisible(H)) or (IsIconic(H)) then
- Result := TvkbState.Hidden
- else
- Result := TvkbState.Shown;
- FLastHandle := H;
- end
- else
- begin
- Result := TvkbState.None;
- FLastHandle := 0;
- end;
- FLastvkbState := Result;
- FLastTime := Now;
-end;
-
-{ TMultiDisplayWin.TDisplayWin }
-
-constructor TMultiDisplayWin.TDisplayWin.Create(const AIndex: Integer; const APrimary: Boolean; const ABounds,
- AWorkArea: TRect; const AHandle: HMONITOR);
-begin
- Display := TDisplay.Create(AIndex, APrimary, ABounds, AWorkArea);
- Handle := AHandle;
-end;
-
-{ TMultiDisplayWin }
-
-destructor TMultiDisplayWin.Destroy;
-begin
- FDisplayList.Free;
- inherited;
-end;
-
-function TMultiDisplayWin.GetDisplayCount: Integer;
-begin
- if FDisplayCount <= 0 then
- FDisplayCount := GetSystemMetrics(SM_CMONITORS);
- Result := FDisplayCount;
-end;
-
-function TMultiDisplayWin.GetDesktopCenterRect(const Size: TSize): TRect;
- function PointOutOfDisplay(const P: TPoint): Boolean;
- var
- I: Integer;
- begin
- for I := 0 to GetDisplayCount - 1 do
- if PtInRect(GetDisplay(I).Bounds, P) then
- Exit(False);
- Result := True;
- end;
- function CornerOutOfDisplay(const R: TRect): Boolean;
- begin
- Result := PointOutOfDisplay(R.TopLeft) or PointOutOfDisplay(TPoint.Create(R.Right, R.Top)) or
- PointOutOfDisplay(R.BottomRight) or PointOutOfDisplay(TPoint.Create(R.Left, R.Bottom));
- end;
-
-var
- I, MinI: Integer;
- DesktopCenter: TPoint;
- Dist, MinDist: Double;
- WorkArea: TRect;
-begin
- DesktopCenter := GetDesktopRect.CenterPoint;
- Result := TRect.Create(TPoint.Create(DesktopCenter.X - Size.cx div 2, DesktopCenter.Y - Size.cy div 2), Size.cx,
- Size.cy);
- MinDist := MaxInt;
- MinI := -1;
-
- for I := 0 to GetDisplayCount - 1 do
- begin
- Dist := GetDisplay(I).WorkArea.CenterPoint.Distance(DesktopCenter);
- if Dist < MinDist then
- begin
- MinDist := Dist;
- MinI := I;
- end;
- end;
- WorkArea := GetDisplay(MinI).WorkArea;
- if CornerOutOfDisplay(Result) then
- begin
- if Result.Top < WorkArea.Top then
- Result.SetLocation(Result.Left, WorkArea.Top);
- if Result.Bottom > WorkArea.Bottom then
- Result.SetLocation(Result.Left, WorkArea.Bottom - Result.Height);
- if CornerOutOfDisplay(Result) then
- begin
- if Result.Left < WorkArea.Left then
- Result.SetLocation(WorkArea.Left, Result.Top);
- if Result.Right > WorkArea.Right then
- Result.SetLocation(WorkArea.Right - Result.Width, Result.Top);
- end;
- end;
-end;
-
-function TMultiDisplayWin.GetDesktopRect: TRect;
-begin
- if (FDesktopRect.Width <= 0) or (FDesktopRect.Height <= 0) then
- FDesktopRect := TRect.Create(TPoint.Create(GetSystemMetrics(SM_XVIRTUALSCREEN),
- GetSystemMetrics(SM_YVIRTUALSCREEN)), GetSystemMetrics(SM_CXVIRTUALSCREEN), GetSystemMetrics(SM_CYVIRTUALSCREEN));
- Result := FDesktopRect;
-end;
-
-function TMultiDisplayWin.GetWorkAreaRect: TRect;
-begin
- if (FWorkAreaRect.Width <= 0) or (FWorkAreaRect.Height <= 0) then
- if not SystemParametersInfo(SPI_GETWORKAREA, 0, FWorkAreaRect, 0) then
- FWorkAreaRect := TRect.Empty;
- Result := FWorkAreaRect;
-end;
-
-procedure TMultiDisplayWin.UpdateDisplayInformation;
-begin
- FDisplayCount := 0;
- FDesktopRect := TRect.Empty;
- FWorkAreaRect := TRect.Empty;
- FreeAndNil(FDisplayList);
-end;
-
-function TMultiDisplayWin.FindDisplay(const hm: HMONITOR): TDisplay;
- function DoFind(const Handle: HMONITOR): Integer;
- var
- I: Integer;
- begin
- Result := -1;
- if FDisplayList <> nil then
- for I := 0 to FDisplayList.Count - 1 do
- if Handle = FDisplayList[I].Handle then
- Exit(I);
- end;
-
-var
- Index: Integer;
-begin
- if Screen = nil then
- raise EInvalidFmxHandle.Create(sArgumentInvalid);
- Index := DoFind(hm);
- if Index = -1 then
- begin
- UpdateDisplays;
- Index := DoFind(hm);
- end;
- if Index = -1 then
- raise EInvalidArgument.Create(sArgumentInvalid)
- else
- Result := FDisplayList[Index].Display;
-end;
-
-function IsPopupForm(const AForm: TCommonCustomForm): Boolean;
-begin
- Result := (AForm <> nil) and ((AForm.FormStyle = TFormStyle.Popup) or (AForm.Owner is TPopup) or (AForm is TCustomPopupForm));
-end;
-
-function TMultiDisplayWin.DisplayFromWindow(const Handle: TWindowHandle): TDisplay;
-var
- Wnd: TWinWindowHandle;
- Form, ParentForm: TCommonCustomForm;
- ParentControl: TFmxObject;
- Control: TControl;
- P: TPointF;
- ScreenPosition: TPoint;
-begin
- if Handle = nil then
- raise EArgumentNilException.Create(SArgumentNil);
- Wnd := WindowHandleToPlatform(Handle);
- Form := FindWindow(Wnd.Wnd);
- ParentControl := nil;
- if IsPopupForm(Form) then
- begin
- if Form is TCustomPopupForm then
- begin
- if GetKeyState(VK_RBUTTON) <> 0 then
- begin
- GetCursorPos(ScreenPosition);
- Result := FindDisplay(Winapi.MultiMon.MonitorFromPoint(ScreenPosition, MONITOR_DEFAULTTONEAREST));
- Exit;
- end;
- ParentControl := TCustomPopupForm(Form).PlacementTarget;
- end;
- ParentForm := Form.ParentForm;
- if (ParentControl = nil) and (ParentForm <> nil) then
- begin
- while IsPopupForm(ParentForm) and (ParentForm.ParentForm <> nil) do
- ParentForm := ParentForm.ParentForm;
- if ParentControl = nil then
- begin
- ParentControl := Form.Parent;
- while (ParentControl <> nil) and (ParentControl.Root <> nil) and (ParentControl.Root.GetObject <> ParentForm) do
- ParentControl := ParentControl.Parent;
- while (ParentControl <> nil) and not (ParentControl is TControl) do
- ParentControl := ParentControl.Parent;
- end;
- if (ParentControl = nil) and (ParentForm <> nil) and (ParentForm.Focused <> nil) then
- ParentControl := ParentForm.Focused.GetObject;
- end;
- if ParentControl is TControl then
- begin
- Control := TControl(ParentControl);
- P := Control.Padding.Rect.TopLeft;
- P := Control.LocalToAbsolute(P);
- if Control.Root.GetObject is TCommonCustomForm then
- begin
- ParentForm := TCommonCustomForm(Control.Root.GetObject);
- P := ParentForm.ClientToScreen(P);
- end;
- P.Offset((Control.Width - Control.Padding.Right) / 2, (Control.Height - Control.Padding.Bottom) / 2);
- ScreenPosition := TPoint.Create(Round(P.X), Round(P.Y));
- Result := FindDisplay(Winapi.MultiMon.MonitorFromPoint(ScreenPosition, MONITOR_DEFAULTTONEAREST));
- Exit;
- end;
- if ParentForm <> nil then
- Wnd := WindowHandleToPlatform(ParentForm.Handle);
- end;
- if (Wnd = nil) or (Wnd.Wnd = 0) then
- raise EArgumentException.Create(sArgumentInvalid);
- Result := FindDisplay(Winapi.MultiMon.MonitorFromWindow(Wnd.Wnd, MONITOR_DEFAULTTONEAREST));
-end;
-
-function TMultiDisplayWin.DisplayFromPoint(const Handle: TWindowHandle; const Point: TPoint): TDisplay;
-var
- Wnd: TWinWindowHandle;
- Form: TCommonCustomForm;
- DispByPoint, DispByMouse: TDisplay;
- PointF: TPointF;
- ScreenPosition: TPoint;
-begin
- if Handle = nil then
- raise EArgumentNilException.Create(SArgumentNil);
- Wnd := WindowHandleToPlatform(Handle);
- if (Wnd = nil) or (Wnd.Wnd = 0) then
- raise EArgumentException.Create(sArgumentInvalid);
- Form := FindWindow(Wnd.Wnd);
- if not IsPopupForm(Form) then
- begin
- PointF := TPointF.Create(Point);
- ScreenPosition := Form.ClientToScreen(PointF).Round;
- DispByPoint := FindDisplay(Winapi.MultiMon.MonitorFromPoint(ScreenPosition, MONITOR_DEFAULTTONEAREST));
- if (GetKeyState(VK_RBUTTON) <> 0) or (GetKeyState(VK_LBUTTON) <> 0) or (GetKeyState(VK_MBUTTON) <> 0) then
- begin
- Result := DisplayFromWindow(Handle);
- GetCursorPos(ScreenPosition);
- DispByMouse := FindDisplay(Winapi.MultiMon.MonitorFromPoint(ScreenPosition, MONITOR_DEFAULTTONEAREST));
- if DispByMouse.Index <> Result.Index then
- Result := DispByPoint;
- end
- else
- Result := DispByPoint;
- end
- else if Form.Visible and (Form is TCustomPopupForm) then
- Result := FindDisplay(Winapi.MultiMon.MonitorFromWindow(Wnd.Wnd, MONITOR_DEFAULTTONEAREST))
- else
- Result := DisplayFromWindow(Handle);
-end;
-
-function EnumMonitorsProc(hm: HMONITOR; dc: HDC; R: PRect; Data: Pointer): Boolean; stdcall;
-var
- Sender: TMultiDisplayWin;
- MonInfo: TMonitorInfo;
-begin
- Sender := TMultiDisplayWin(Data);
- MonInfo.cbSize := SizeOf(MonInfo);
- if GetMonitorInfo(hm, @MonInfo) then
- begin
- if Sender.FDisplayList = nil then
- Sender.FDisplayList := TList.Create;
- Sender.FDisplayList.Add(TMultiDisplayWin.TDisplayWin.Create(Sender.FDisplayList.Count,
- (MonInfo.dwFlags and MONITORINFOF_PRIMARY) <> 0, MonInfo.rcMonitor, MonInfo.rcWork, hm));
- end;
- Result := True;
-end;
-
-procedure TMultiDisplayWin.UpdateDisplays;
-begin
- UpdateDisplayInformation;
- EnumDisplayMonitors(0, nil, @EnumMonitorsProc, Winapi.Windows.LPARAM(Self));
- if FDisplayList <> nil then
- FDisplayCount := FDisplayList.Count
- else
- FDisplayCount := 0;
-end;
-
-function TMultiDisplayWin.GetDisplay(const Index: Integer): TDisplay;
-begin
- if Index < 0 then
- raise EListError.CreateFMT(SListIndexError, [Index]);
- if (FDisplayList = nil) or (FDisplayList.Count <> GetDisplayCount) then
- UpdateDisplays;
- if Index >= GetDisplayCount then
- raise EListError.CreateFMT(SListIndexError, [Index]);
- Result := FDisplayList[Index].Display;
-end;
-
-{ TFullScreenParams }
-
-procedure TFullScreenParams.Clean;
-begin
- Self.BorderStyle := TFmxFormBorderStyle.None;
- Self.WindowState := TWindowState.wsMaximized;
-end;
-
-function TFullScreenParams.IsFullScreen: Boolean;
-begin
- Result := not ((Self.BorderStyle = TFmxFormBorderStyle.None) and (Self.WindowState = TWindowState.wsMaximized));
-end;
-
-{ TWin32MenuInfo }
-
-constructor TWin32MenuInfo.Create(const AMenuId: Integer; const AnItem: TMenuItem);
-begin
- MenuID := AMenuId;
- FMXMenuItem := AnItem;
-end;
-
-procedure ShutDown;
-begin
- if IsLibrary then
- begin
- FMX.Canvas.D2D.UnregisterCanvasClasses;
- FMX.Context.DX11.UnregisterContextClasses;
- FMX.Forms.FinalizeForms;
- end;
-end;
-
-{ TMenuServiceWin }
-
-procedure TMenuServiceWin.AddBitmapToMenu(const AParentMenu: HMENU; const AMenuItemId: TMenuId; const ABitmap: HBITMAP);
-var
- MenuItemInfo: tagMENUITEMINFOW;
-begin
- if ABitmap <> 0 then
- begin
- FillChar(MenuItemInfo, SizeOf(MenuItemInfo), 0);
- MenuItemInfo.cbSize := SizeOf(MenuItemInfo);
- MenuItemInfo.fMask := MIIM_BITMAP;
- if not GetMenuItemInfo(AParentMenu, AMenuItemId, False, MenuItemInfo) then
- RaiseLastOSError;
- MenuItemInfo.hbmpItem := ABitmap;
- try
- if not SetMenuItemInfo(AParentMenu, AMenuItemId, False, MenuItemInfo) then
- RaiseLastOSError;
- except
- MenuItemInfo.hbmpItem := 0;
- SetMenuItemInfo(AParentMenu, AMenuItemId, False, MenuItemInfo);
- raise;
- end;
- end;
-end;
-
-function TMenuServiceWin.AssignNewIdToMenu(const AParentMenu, AMenu: HMENU): TMenuId;
-var
- MenuItemInfo: tagMENUITEMINFOW;
-begin
- Result := GenerateMenuId;
-
- FillChar(MenuItemInfo, SizeOf(MenuItemInfo), 0);
- MenuItemInfo.cbSize := SizeOf(MenuItemInfo);
- MenuItemInfo.fMask := MIIM_ID;
- if not GetMenuItemInfo(AParentMenu, AMenu, False, MenuItemInfo) then
- RaiseLastOSError;
- MenuItemInfo.wID := Result;
- try
- if not SetMenuItemInfo(AParentMenu, AMenu, False, MenuItemInfo) then
- RaiseLastOSError;
- FHMenuIdMap.Add(Result, AMenu);
- except
- MenuItemInfo.wID := 0;
- SetMenuItemInfo(AParentMenu, AMenu, False, MenuItemInfo);
- raise;
- end;
-end;
-
-constructor TMenuServiceWin.Create;
-begin
- FHMenuMap := TDictionary.Create;
- FHMenuIdMap := TDictionary.Create;
- FMenuLooper := TMenuLooperWin.Create;
-end;
-
-procedure TMenuServiceWin.CreateOSMenu(AForm: TCommonCustomForm; const AMenu: IItemsContainer);
-
- function CalculateItemFlags(const AMenuItem: TMenuItem): Integer;
- begin
- Result := 0;
- if AMenuItem.Text = SMenuSeparator then
- Result := Result or MF_SEPARATOR
- else
- begin
- if AMenuItem.IsChecked then
- Result := Result or MF_CHECKED;
-
- if not AMenuItem.Enabled then
- Result := Result or MF_DISABLED;
-
- Result := Result or MF_STRING;
- end;
- end;
-
- function CalculateVisibleCount(const AMenu: IItemsContainer): Integer;
- var
- I: Integer;
- begin
- Result := 0;
- for I := 0 to AMenu.GetItemsCount - 1 do
- if (AMenu.GetItem(I) is TMenuItem) and TMenuItem(AMenu.GetItem(I)).Visible then
- Inc(Result);
- end;
-
- procedure InsertItems(const AParent: HMENU; AChild: IItemsContainer; const AMenuLevel: Integer);
- var
- I, Flags, VisibleCount: Integer;
- PopupMenu: HMENU;
- Native: INativeControl;
- MenuItem: TMenuItem;
- SubChild: IItemsContainer;
- S: string;
- Bitmap: HBITMAP;
- begin
- if (AChild <> nil) and (AChild.GetObject is TMenuItem) then
- begin
- Bitmap := 0;
- MenuItem := TMenuItem(AChild.GetObject);
- if MenuItem.Visible and Supports(MenuItem, INativeControl, Native) then
- begin
- Flags := CalculateItemFlags(MenuItem);
- VisibleCount := CalculateVisibleCount(AChild);
- if VisibleCount > 0 then
- Flags := Flags or MF_POPUP;
-
- Native.Handle := 0;
- PopupMenu := CreateMenu;
- if PopupMenu = 0 then
- RaiseLastOSError;
- try
- if AMenuLevel > 0 then
- S := ShortCutToText(MenuItem.ShortCut)
- else
- S := string.Empty;
- if not S.IsEmpty then
- S := #9 + S;
- S := MenuItem.Text + S;
- if AppendMenu(AParent, Flags, PopupMenu, PChar(S)) then
- begin
- Bitmap := ImageListToMenuBitmap(AMenuLevel = 0, MenuItem.Images, MenuItem.ImageIndex);
- if Bitmap = 0 then
- Bitmap := BitmapToMenuBitmap(AMenuLevel = 0, MenuItem.Bitmap);
- if Bitmap <> 0 then
- try
- AddBitmapToMenu(AParent, PopupMenu, Bitmap);
- except
- DeleteObject(Bitmap);
- Bitmap := 0;
- raise;
- end;
- FHMenuMap.Add(PopupMenu, TWin32MenuInfo.Create(AssignNewIdToMenu(AParent, PopupMenu), MenuItem));
- if VisibleCount > 0 then
- for I := 0 to AChild.GetItemsCount - 1 do
- if Supports(AChild.GetItem(I), IItemsContainer, SubChild) then
- InsertItems(PopupMenu, SubChild, AMenuLevel + 1);
- Native.Handle := PopupMenu;
- end
- else
- RaiseLastOSError;
- except
- if Bitmap <> 0 then
- RemoveBitmapFromMenu(AParent, PopupMenu);
- DestroyMenu(PopupMenu);
- raise;
- end;
- end;
- end;
- end;
-
-var
- Handle: HMENU;
- Wnd: HWND;
- I, VisibleCount: Integer;
- WindowBorder: TWindowBorderWin;
- Native: INativeControl;
- SavedWindowState: TWindowState;
-begin
- if TState.CreatingOSMenu in FStates then
- Exit;
- SavedWindowState := AForm.WindowState;
- try
- Include(FStates, TState.CreatingOSMenu);
- Wnd := FormToHWND(AForm);
- if Wnd = 0 then
- Exit;
-
- VisibleCount := 0;
- Native := nil;
- if AMenu <> nil then
- begin
- DestroysAllMenuItems(AMenu);
- Supports(AMenu.GetObject, INativeControl, Native);
- if not (csDesigning in AForm.ComponentState) and AForm.Border.IsSupported then
- begin
- WindowBorder := TWindowBorderWin(AForm.Border.WindowBorder);
- WindowBorder.CreateOSMenu(AMenu);
- end
- else if (Native <> nil) and Native.HandleSupported then
- VisibleCount := CalculateVisibleCount(AMenu);
- end;
- Handle := GetMenu(Wnd);
- if VisibleCount > 0 then
- begin
- if Handle = 0 then
- begin
- Native.Handle := 0;
- Handle := CreateMenu;
- if Handle = 0 then
- RaiseLastOSError;
- end;
- try
- for I := 0 to AMenu.GetItemsCount - 1 do
- if AMenu.GetItem(I) is TMenuItem and TMenuItem(AMenu.GetItem(I)).Visible then
- InsertItems(Handle, TMenuItem(AMenu.GetItem(I)), 0);
- except
- DestroyMenu(Handle);
- raise;
- end;
- SetMenu(Wnd, Handle);
- end
- else if Handle <> 0 then
- begin
- if not DestroyMenu(Handle) then
- RaiseLastOSError;
- SetMenu(Wnd, 0);
- Handle := 0;
- end;
- if Native <> nil then
- Native.Handle := Handle;
- finally
- AForm.WindowState := SavedWindowState;
- Exclude(FStates, TState.CreatingOSMenu);
- end;
-end;
-
-destructor TMenuServiceWin.Destroy;
-begin
- FreeAndNil(FMenuLooper);
- FreeAndNil(FHMenuMap);
- FreeAndNil(FHMenuIdMap);
-
- inherited;
-end;
-
-procedure TMenuServiceWin.DestroyMenuItem(const AItem: IItemsContainer);
-var
- Form: TCommonCustomForm;
- MenuItem: TFmxObject;
- Wnd: HWND;
- MenuHandle, Handle: TFmxHandle;
- Native: INativeControl;
- Root: IRoot;
-begin
- if not (TState.DestroyingMenuItem in FStates) and (AItem <> nil) and (AItem.GetObject is TFmxObject) then
- MenuItem := AItem.GetObject
- else
- Exit;
- Include(FStates, TState.DestroyingMenuItem);
- try
- Root := MenuItem.Root;
- if (Root <> nil) and (Root.GetObject is TCommonCustomForm) then
- begin
- Form := TCommonCustomForm(Root.GetObject);
- if (MenuItem <> nil) and Supports(MenuItem, INativeControl, Native) and (Native.Handle <> 0) then
- begin
- Handle := Native.Handle;
- if not (csDesigning in Form.ComponentState) and (Form.Border.WindowBorder is TWindowBorderWin) and
- TWindowBorderWin(Form.Border.WindowBorder).HandleExists(Handle) then
- begin
- TWindowBorderWin(Form.Border.WindowBorder).RemoveHandle(Handle);
- end
- else
- begin
- if Handle <> INVALID_HANDLE_VALUE then
- begin
- Wnd := FormToHWND(Form);
- MenuHandle := GetMenu(Wnd);
- if MenuHandle = Handle then
- begin
- CreateOSMenu(Form, nil);
- SetMenu(Wnd, 0)
- end
- else if MenuHandle <> 0 then
- RemoveBitmapFromMenu(MenuHandle, Handle);
- if IsMenu(Handle) then
- CheckWinapiResult(DestroyMenu(Handle));
- end;
- RemoveMenuFromMaps(Handle);
- end;
- Native.Handle := 0
- end;
- end;
- finally
- Exclude(FStates, TState.DestroyingMenuItem);
- end;
-end;
-
-function TMenuServiceWin.FindMenuInfoById(const AMenuItemId: TMenuId; var AMenuInfo: TWin32MenuInfo): Boolean;
-var
- FmxHandle: TFmxHandle;
-begin
- Result := FHMenuIdMap.TryGetValue(AMenuItemId, FmxHandle) and FHMenuMap.TryGetValue(FmxHandle, AMenuInfo);
-end;
-
-function TMenuServiceWin.GenerateMenuId: TMenuId;
-begin
- Result := NewUniqueMenuCommand;
- if Result > 65535 then
- begin
- FreeUniqueMenuCommand(Result);
- raise EUnavailableMenuId.Create(SUnavailableMenuId);
- end;
-end;
-
-function TMenuServiceWin.IsMenuBarOnWindowBorder: Boolean;
-begin
- Result := True;
-end;
-
-procedure TMenuServiceWin.RemoveBitmapFromMenu(const AParentMenu, AMenu: HMENU);
-var
- MenuItemInfo: tagMENUITEMINFOW;
- MenuInfo: TWin32MenuInfo;
- MenuId: TMenuId;
-begin
- if FHMenuMap.TryGetValue(AMenu, MenuInfo) then
- MenuId := MenuInfo.MenuID
- else
- Exit;
- FillChar(MenuItemInfo, SizeOf(MenuItemInfo), 0);
- MenuItemInfo.cbSize := SizeOf(MenuItemInfo);
- MenuItemInfo.fMask := MIIM_BITMAP;
- if not GetMenuItemInfo(AParentMenu, MenuId, False, MenuItemInfo) then
- RaiseLastOSError;
- if (MenuItemInfo.hbmpItem <> HBITMAP(-1)) and (MenuItemInfo.hbmpItem > HBMMENU_POPUP_MINIMIZE) then
- begin
- if not DeleteObject(MenuItemInfo.hbmpItem) then
- RaiseLastOSError;
-
- MenuItemInfo.hbmpItem := HBITMAP(-1);
- if not SetMenuItemInfo(AParentMenu, MenuId, False, MenuItemInfo) then
- RaiseLastOSError;
- end;
-end;
-
-procedure TMenuServiceWin.DestroysAllMenuItems(const AMenu: IItemsContainer);
-var
- I: Integer;
- ItemsContainer: IItemsContainer;
-begin
- for I := 0 to AMenu.GetItemsCount - 1 do
- if Supports(AMenu.GetItem(I), IItemsContainer, ItemsContainer) then
- DestroysAllMenuItems(ItemsContainer);
- DestroyMenuItem(AMenu);
-end;
-
-procedure TMenuServiceWin.RemoveMenuFromMaps(const AMenuHandle: TFmxHandle);
-var
- Pair: TPair;
-begin
- FHMenuMap.Remove(AMenuHandle);
-
- for Pair in FHMenuIdMap do
- if Pair.Value = AMenuHandle then
- begin
- FreeUniqueMenuCommand(Pair.Key);
- FHMenuIdMap.Remove(Pair.Key);
- Break;
- end;
-end;
-
-procedure TMenuServiceWin.ShortCutToKey(ShortCut: TShortCut; var Key: Word; var Shift: TShiftState);
-begin
- FMX.Helpers.Win.ShortCutToKey(ShortCut, Key, Shift);
-end;
-
-function TMenuServiceWin.ShortCutToText(ShortCut: TShortCut): string;
-begin
- Result := FMX.Helpers.Win.ShortCutToText(ShortCut);
-end;
-
-procedure TMenuServiceWin.StartMenuLoop(const AView: IMenuView);
-begin
- FMenuLooper.StartLoop(AView);
-end;
-
-function TMenuServiceWin.TextToShortCut(Text: string): Integer;
-begin
- Result := FMX.Helpers.Win.TextToShortCut(Text);
-end;
-
-procedure TMenuServiceWin.UpdateMenuBar;
-begin
-end;
-
-procedure TMenuServiceWin.UpdateMenuItem(const AItem: IItemsContainer; AChange: TMenuItemChanges);
-
- function GetParentMenuItemHandle(const AMenuItem: TMenuItem): TFmxHandle;
- var
- NativeControl: INativeControl;
- begin
- if Supports(AMenuItem.ParentMenuItem, INativeControl, NativeControl) or Supports(AMenuItem.MainMenu, INativeControl, NativeControl) then
- Result := NativeControl.Handle
- else
- Result := 0;
- end;
-
- function GetBitmap(const AMenuItem: TMenuItem): HBITMAP;
- var
- IsTopLevelItem: Boolean;
- begin
- IsTopLevelItem := AMenuItem.Parent is TMainMenu;
- Result := ImageListToMenuBitmap(IsTopLevelItem, AMenuItem.Images, AMenuItem.ImageIndex);
- if Result = 0 then
- Result := BitmapToMenuBitmap(IsTopLevelItem, AMenuItem.Bitmap);
- end;
-
- procedure UpdateBitmap(const AMenuItem: TMenuItem);
- var
- ParentHandle: TFmxHandle;
- Bitmap: HBITMAP;
- MenuItemHandle: TFmxHandle;
- begin
- MenuItemHandle := (AMenuItem as INativeControl).Handle;
- ParentHandle := GetParentMenuItemHandle(AMenuItem);
- if ParentHandle = 0 then
- Exit;
-
- Bitmap := GetBitmap(AMenuItem);
- if Bitmap <> 0 then
- try
- AddBitmapToMenu(ParentHandle, FHMenuMap[MenuItemHandle].Menuid, Bitmap);
- except
- DeleteObject(Bitmap);
- raise;
- end
- else
- RemoveBitmapFromMenu(ParentHandle, MenuItemHandle);
- end;
-
- procedure UpdateEnabled(const AMenuItem: TMenuItem);
- const
- Enables: array[Boolean] of DWORD = (MF_DISABLED or MF_GRAYED, MF_ENABLED);
- var
- ParentHandle: TFmxHandle;
- MenuItemHandle: TFmxHandle;
- begin
- MenuItemHandle := (AMenuItem as INativeControl).Handle;
- ParentHandle := GetParentMenuItemHandle(AMenuItem);
- if ParentHandle = 0 then
- Exit;
-
- EnableMenuItem(ParentHandle, FHMenuMap[MenuItemHandle].Menuid, MF_BYCOMMAND or Enables[AMenuItem.enabled]);
- end;
-
- procedure UpdateChecked(const AMenuItem: TMenuItem);
- const
- Checks: array[Boolean] of DWORD = (MF_UNCHECKED, MF_CHECKED);
- var
- ParentHandle: TFmxHandle;
- MenuItemHandle: TFmxHandle;
- begin
- MenuItemHandle := (AMenuItem as INativeControl).Handle;
- ParentHandle := GetParentMenuItemHandle(AMenuItem);
- if ParentHandle = 0 then
- Exit;
-
- CheckMenuItem(ParentHandle, FHMenuMap[MenuItemHandle].Menuid, MF_BYCOMMAND or Checks[AMenuItem.IsChecked]);
- end;
-
- procedure RecreateMainMenu(const AMenuItem: TMenuItem);
- var
- MainMenu: TMainMenu;
- begin
- MainMenu := AMenuItem.MainMenu;
- if MainMenu <> nil then
- MainMenu.RecreateOSMenu;
- end;
-
- function IsStyledBorder(const AMenuItem: TMenuItem): Boolean;
- var
- Form: TCommonCustomForm;
- begin
- if AMenuItem.Root = nil then
- Exit(False);
-
- Form := AMenuItem.Root.GetObject as TCommonCustomForm;
- Result := Form.Border.IsSupported;
- end;
-
-var
- MenuItem: TMenuItem;
- MenuItemHandle: TFmxHandle;
-begin
- if not (AItem.GetObject is TMenuItem) then
- Exit;
-
- MenuItem := TMenuItem(AItem.GetObject);
- MenuItemHandle := (MenuItem as INativeControl).Handle;
- if (MenuItemHandle = 0) or IsStyledBorder(MenuItem) then
- begin
- RecreateMainMenu(MenuItem);
- Exit;
- end;
-
- if MenuItemHandle = INVALID_HANDLE_VALUE then
- raise EInvalidFmxHandle.CreateFMT(SInvalidFmxHandle, [HexDisplayPrefix, SizeOf(MenuItemHandle) * 2, MenuItemHandle]);
-
- if AChange = [TMenuItemChange.Bitmap] then
- UpdateBitmap(MenuItem)
- else if AChange = [TMenuItemChange.Enabled] then
- UpdateEnabled(MenuItem)
- else if AChange = [TMenuItemChange.Checked] then
- UpdateChecked(MenuItem)
- else
- // If Visible, Text or Shortcut are changed, then we need to rebuild menu. Because WinApi doesn't support
- RecreateMainMenu(MenuItem);
-end;
-
-procedure TMenuServiceWin.WMCommand(var Message: TWMCommand);
-var
- MenuInfo: TWin32MenuInfo;
-begin
- if FindMenuInfoById(Message.ItemId, MenuInfo) then
- begin
- TOpenMenuItem(MenuInfo.FMXMenuItem).Click;
- Message.Result := 0;
- end;
-end;
-
-procedure TMenuServiceWin.WMInitMenuPopup(var Message: TWMInitMenuPopup);
-var
- MenuInfo: TWin32MenuInfo;
-begin
- if FHMenuMap.TryGetValue(Message.MenuPopup, MenuInfo) then
- TOpenMenuItem(MenuInfo.FMXMenuItem).Click;
-end;
-
-procedure TMenuServiceWin.WMMenuSelect(var Message: TWMMenuSelect);
-var
- MenuInfo: TWin32MenuInfo;
- MenuHandle: HMENU;
-begin
- MenuHandle := GetSubMenu(Message.Menu, Message.IDItem);
- if MenuHandle = 0 then
- Exit;
-
- if FindMenuInfoById(Message.IDItem, MenuInfo) then
- Application.Hint := MenuInfo.FMXMenuItem.Hint
- else
- Application.Hint := string.Empty;
-end;
-
-{ TMenuLooperWin }
-
-function TMenuLooperWin.BackwardSelectNextMenuItem(const AView: IMenuView; const AStartInd, AEndInd: Integer): Boolean;
-var
- I: Integer;
-begin
- Result := False;
- if AView <> nil then
- for I := AStartInd downto AEndInd do
- if IsItemSelectable(AView.GetItem(I)) then
- begin
- AView.Selected := TMenuItem(AView.GetItem(I));
- Result := True;
- Break;
- end;
-end;
-
-procedure TMenuLooperWin.EndLoop(const AView: IMenuView);
-var
- View: IMenuView;
-begin
- View := AView;
- while View <> nil do
- begin
- View.Loop := False;
- View.Selected := nil;
- View := View.ParentView;
- end;
-end;
-
-function TMenuLooperWin.ForwardSelectNextMenuItem(const AView: IMenuView; const AStartInd, AEndInd: Integer): Boolean;
-var
- I: Integer;
-begin
- Result := False;
- if AView <> nil then
- for I := AStartInd to AEndInd do
- if IsItemSelectable(AView.GetItem(I)) then
- begin
- AView.Selected := TMenuItem(AView.GetItem(I));
- Result := True;
- Break;
- end;
-end;
-
-function TMenuLooperWin.IsItemSelectable(const Item: TFmxObject): Boolean;
-begin
- Result := (Item is TMenuItem) and TMenuItem(Item).Visible and (TMenuItem(Item).Text <> SMenuSeparator);
-end;
-
-procedure TMenuLooperWin.SelectFirstMenuItem(const AView: IMenuView);
-var
- I: Integer;
-begin
- if AView <> nil then
- begin
- I := 0;
- while (I < AView.GetItemsCount) and not IsItemSelectable(AView.GetItem(I)) do
- Inc(I);
- if I < AView.GetItemsCount then
- AView.Selected := TMenuItem(AView.GetItem(I));
- end;
-end;
-
-procedure TMenuLooperWin.SelectLastMenuItem(const AView: IMenuView);
-var
- I: Integer;
-begin
- if AView <> nil then
- begin
- I := AView.GetItemsCount - 1;
- while (I >= 0) and not IsItemSelectable(AView.GetItem(I)) do
- Dec(I);
- if I >= 0 then
- AView.Selected := TMenuItem(AView.GetItem(I));
- end;
-end;
-
-procedure TMenuLooperWin.SelectNextMenuItem(const AView: IMenuView; const ABackward: Boolean);
-begin
- if ABackward then
- begin
- if (AView.Selected = nil) or not BackwardSelectNextMenuItem(AView, AView.Selected.Index - 1, 0) then
- SelectLastMenuItem(AView);
- // otherwise nothing
- end
- else
- begin
- if (AView.Selected = nil) or not ForwardSelectNextMenuItem(AView, AView.Selected.Index + 1, AView.GetItemsCount - 1) then
- SelectFirstMenuItem(AView);
- // otherwise nothing
- end;
-end;
-
-procedure TMenuLooperWin.StartLoop(const AView: IMenuView);
-var
- FirstLoop: Boolean;
-
- function ContinueLoop: Boolean;
- begin
- Result := AView.Loop;
- end;
-
- function ParentWindow(AView: IMenuView): HWND;
- var
- Obj: TFmxObject;
- Form: TCommonCustomForm;
- begin
- Result := 0;
- if (AView <> nil) and (AView.Parent <> nil) then
- begin
- Obj := AView.Parent;
- while (Obj <> nil) and not (Obj is TCommonCustomForm) do
- Obj := Obj.Parent;
- if Obj is TCommonCustomForm then
- begin
- Form := TCommonCustomForm(Obj);
- while (Form <> nil) and IsPopup(Form) do
- Form := Form.ParentForm;
- if (Form <> nil) and (Form.Handle <> nil) then
- Result := WindowHandleToPlatform(Form.Handle).Wnd;
- end;
- end;
- end;
-
-var
- Msg: TMsg;
- WP: TPoint;
- ParentWnd: HWND;
- P: TPointF;
- InMenus: Boolean;
- CurrentView, NewView: IMenuView;
- Obj: IControl;
- TimerID: THandle;
- MenuItem: TMenuItem;
-begin
- FView := AView;
- AView.Loop := True;
- TimerID := SetTimer(0, 0, 50, nil);
- try
- FirstLoop := True;
- while ContinueLoop do
- begin
-
- if FirstLoop then
- FirstLoop := False
- else
- WaitMessage;
-
- while ContinueLoop and PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) do
- begin
- case Msg.Message of
- WM_WINDOWPOSCHANGING:
- begin
- EndLoop(AView);
- Exit;
- end;
- WM_QUIT { , WM_NCLBUTTONDOWN..WM_NCMBUTTONDBLCLK } :
- begin
- EndLoop(AView);
- Continue;
- end;
- WM_TIMER:
- begin
- TranslateMessage(Msg);
- end;
- end;
- if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
- begin
- case Msg.Message of
- WM_CLOSEMENU:
- EndLoop(AView);
- WM_NCMOUSEMOVE, WM_NCLBUTTONDOWN, WM_NCRBUTTONDOWN, WM_NCLBUTTONUP:
- begin
- case Msg.Message of
- WM_NCMOUSEMOVE:
- begin
- { Handle MouseOver }
-{$IFDEF CPUX64}
- WP := SmallPointToPoint(TSmallPoint(Cardinal(Msg.LPARAM)));
-{$ELSE}
- WP := SmallPointToPoint(TSmallPoint(Msg.LPARAM));
-{$ENDIF}
- P := PointF(WP.X, WP.Y);
- Obj := AView.ObjectAtPoint(P);
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- { Find top level menu }
- CurrentView := AView;
- while CurrentView.ParentView <> nil do
- CurrentView := CurrentView.ParentView;
- { Check all items }
- while CurrentView <> nil do
- begin
- Obj := CurrentView.ObjectAtPoint(P);
- if (Obj <> nil) and (Obj.GetObject is TMenuItem) and not (TMenuItem(Obj.GetObject).IsSelected)
- then
- begin
- if (CurrentView <> AView) then
- begin
- NewView := AView;
- while NewView <> CurrentView do
- begin
- NewView.Loop := False;
- NewView := NewView.ParentView;
- end;
- TOpenMenuItem(Obj.GetObject).NeedPopup;
- Exit;
- end;
- end;
- CurrentView := CurrentView.ChildView;
- end;
- Continue;
- end;
- WM_NCLBUTTONDOWN, WM_NCRBUTTONDOWN:
- begin
- { Handle MouseOver if mouse over not menuitem }
-{$IFDEF CPUX64}
- WP := SmallPointToPoint(TSmallPoint(Cardinal(Msg.LPARAM)));
-{$ELSE}
- WP := SmallPointToPoint(TSmallPoint(Msg.LPARAM));
-{$ENDIF}
- P := PointF(WP.X, WP.Y);
- Obj := AView.ObjectAtPoint(P);
- if (Obj <> nil) and not (Obj is TMenuItem) then
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- Continue;
- end;
- { Menus }
- if (Obj <> nil) and (Obj.GetObject is TMenuItem) then
- begin
- MenuItem := TMenuItem(Obj.GetObject);
- if not MenuItem.IsSelected and MenuItem.HavePopup then
- TOpenMenuItem(MenuItem).NeedPopup
- else if MenuItem.CanBeClicked then
- begin
- EndLoop(AView);
- TOpenMenuItem(Obj.GetObject).Click;
- end;
- end
- else
- begin
- CurrentView := AView;
- InMenus := False;
- while (CurrentView <> nil) and not InMenus do
- begin
- if not (CurrentView.IsMenuBar) and (CurrentView.ObjectAtPoint(P) <> nil) then
- InMenus := True;
- CurrentView := CurrentView.ParentView;
- end;
- if not InMenus then
- EndLoop(AView);
- end;
- end;
- WM_NCLBUTTONUP:
- begin
- { Handle MouseOver if mouse over not menuitem }
-{$IFDEF CPUX64}
- WP := SmallPointToPoint(TSmallPoint(Cardinal(Msg.LPARAM)));
-{$ELSE}
- WP := SmallPointToPoint(TSmallPoint(Msg.LPARAM));
-{$ENDIF}
- P := PointF(WP.X, WP.Y);
- Obj := AView.ObjectAtPoint(P);
- if (Obj <> nil) and not (Obj is TMenuItem) then
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- Continue;
- end;
- end;
- end;
- end;
- WM_MOUSEFIRST .. WM_MOUSELAST:
- begin
- { Handle MouseOver if mouse over not menuitem }
-{$IFDEF CPUX64}
- WP := SmallPointToPoint(TSmallPoint(Cardinal(Msg.LPARAM)));
-{$ELSE}
- WP := SmallPointToPoint(TSmallPoint(Msg.LPARAM));
-{$ENDIF}
- Winapi.Windows.ClientToScreen(Msg.HWND, WP);
- case Msg.Message of
- WM_MOUSEMOVE:
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- Continue;
- end;
- WM_LBUTTONDOWN, WM_RBUTTONDOWN:
- begin
- P := PointF(WP.X, WP.Y);
- Obj := AView.ObjectAtPoint(P);
- if (Obj <> nil) and not (Obj is TMenuItem) then
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- Continue;
- end;
- { Menus }
- if (Obj <> nil) and (Obj.GetObject is TMenuItem) then
- begin
- MenuItem := TMenuItem(Obj.GetObject);
- if not MenuItem.IsSelected and MenuItem.HavePopup then
- TOpenMenuItem(MenuItem).NeedPopup
- else if MenuItem.CanBeClicked then
- begin
- EndLoop(AView);
- TOpenMenuItem(MenuItem).Click;
- end;
- end
- else
- begin
- CurrentView := AView;
- InMenus := False;
- while (CurrentView <> nil) and not InMenus do
- begin
- if not (CurrentView.IsMenuBar) and (CurrentView.ObjectAtPoint(P) <> nil) then
- InMenus := True;
- CurrentView := CurrentView.ParentView;
- end;
- if not InMenus then
- begin
- EndLoop(AView);
- ParentWnd := ParentWindow(AView);
- if ParentWnd <> 0 then
- begin
- // Redirect messages to the parent form
- Winapi.Windows.ScreenToClient(ParentWnd, WP);
- Msg.LPARAM := Cardinal(PointToSmallPoint(WP));
- PostMessage(ParentWnd, Msg.Message, Msg.wParam, Msg.LPARAM);
- end;
- end;
- end;
- end;
- WM_LBUTTONUP, WM_RBUTTONUP:
- begin
- P := PointF(WP.X, WP.Y);
- Obj := AView.ObjectAtPoint(P);
- if (Obj <> nil) and not (Obj is TMenuItem) then
- begin
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- Continue;
- end;
- end;
- end;
- end;
- WM_KEYFIRST .. WM_KEYLAST:
- if (GetKeyState(VK_LBUTTON) >= 0) then
- case Msg.Message of
- WM_KEYDOWN, WM_SYSKEYDOWN:
- case Msg.wParam of
- VK_RETURN:
- begin
- if AView.Selected <> nil then
- begin
- if AView.Selected.HavePopup then
- AView.Selected.NeedPopup
- else if AView.Selected.CanBeClicked then
- begin
- TOpenMenuItem(AView.Selected).Click;
- EndLoop(AView);
- end;
- end
- else
- EndLoop(AView);
- end;
- VK_ESCAPE:
- begin
- AView.Selected := nil;
- Exit;
- end;
- VK_MENU, VK_F10:
- EndLoop(AView);
- VK_LEFT, VK_RIGHT:
- if AView.IsMenuBar then
- SelectNextMenuItem(AView, Msg.wParam = VK_LEFT)
- else if AView.ParentView <> nil then
- if (AView.Selected <> nil) and AView.Selected.HavePopup and (Msg.wParam = VK_RIGHT) then
- AView.Selected.NeedPopup
- else if AView.ParentView.IsMenuBar then
- begin
- AView.Loop := False;
- SelectNextMenuItem(AView.ParentView, Msg.wParam = VK_LEFT);
- if AView.ParentView.Selected <> nil then
- AView.ParentView.Selected.NeedPopup;
- Exit;
- end
- else
- AView.Loop := False;
- VK_UP, VK_DOWN:
- if AView.IsMenuBar then
- begin
- if (AView.Selected <> nil) and (Msg.wParam = VK_DOWN) then
- AView.Selected.NeedPopup;
- end
- else
- SelectNextMenuItem(AView, Msg.wParam = VK_UP);
- end;
- end;
- else
- TranslateMessage(Msg);
- DispatchMessage(Msg);
- end;
- end;
- end;
- end;
- finally
- KillTimer(0, TimerID);
- AView.Loop := False;
- Winapi.Windows.ReleaseCapture;
- FView := nil;
- end;
-end;
-
-{ TWinTimerService }
-
-procedure TWinTimerService.ApplicationTerminatingHandler(const Sender: TObject; const Msg: System.Messaging.TMessage);
-begin
- FTerminating := True;
- DestroyTimers;
-end;
-
-constructor TWinTimerService.Create;
-begin
- inherited;
- FTimers := TList.Create;
- FHandleCounter := 128; // Start counting handles at 128. All valid handles have lower nibble = 0;
- FTerminating := False;
- if not QueryPerformanceFrequency(FPerformanceFrequency) then
- FPerformanceFrequency := 0;
-
- TMessageManager.DefaultManager.SubscribeToMessage(TApplicationTerminatingMessage, ApplicationTerminatingHandler);
-end;
-
-destructor TWinTimerService.Destroy;
-begin
- TMessageManager.DefaultManager.Unsubscribe(TApplicationTerminatingMessage, ApplicationTerminatingHandler);
-
- FreeAndNil(FTimers);
- inherited;
-end;
-
-function TWinTimerService.CreateTimer(AInterval: Integer; ATimerFunc: TTimerProc): TFmxHandle;
-var
- TimerInfo: TWin32TimerInfo;
-begin
- Result := 0;
- if not FTerminating and (AInterval > 0) and Assigned(ATimerFunc) then
- begin
- TimerInfo.TimerFunc := ATimerFunc;
- TimerInfo.TimerID := Winapi.Windows.SetTimer(0, 0, AInterval, @TimerCallback);
- if TimerInfo.TimerID <> 0 then
- begin
-{$IFDEF CPUX64}
- TimerInfo.TimerHandle := TInterlocked.Add(Int64(FHandleCounter), 16);
-{$ENDIF}
-{$IFDEF CPUX86}
- TimerInfo.TimerHandle := TInterlocked.Add(Integer(FHandleCounter), 16);
-{$ENDIF}
- FTimers.Add(TimerInfo);
- Result := TimerInfo.TimerHandle;
- end
- else
- raise Exception.CreateFmt(SCannotCreateTimer, [GetLastError]);
- end;
-end;
-
-function TWinTimerService.DestroyTimer(Timer: TFmxHandle): Boolean;
-var
- Index: Integer;
- TimerInfo: TWin32TimerInfo;
-begin
- Result := False;
- Index := FTimers.Count;
- while (Index > 0) do
- begin
- Dec(Index);
- TimerInfo := FTimers[Index];
- if TimerInfo.TimerHandle = Timer then
- begin
- Result := Winapi.Windows.KillTimer(0, TimerInfo.TimerID);
- FTimers.Delete(Index);
- end;
- end;
-end;
-
-procedure TWinTimerService.DestroyTimers;
-var
- I: Integer;
-begin
- for I := FTimers.Count - 1 downto 0 do
- try
- DestroyTimer(FTimers[I].TimerHandle);
- except
- end;
-end;
-
-function TWinTimerService.GetTick: Double;
-var
- PerformanceCounter: Int64;
-begin
- if FPerformanceFrequency <> 0 then
- begin
- QueryPerformanceCounter(PerformanceCounter);
- Result := PerformanceCounter / FPerformanceFrequency;
- end
- else
- Result := timeGetTime / 1000;
-end;
-
-class procedure TWinTimerService.TimerCallback(window_hwnd: HWND; Msg: Longint; idEvent: UINT; dwTime: Longint);
-var
- Index: Integer;
-begin
- try
- Index := PlatformWin.TimerService.FTimers.Count;
- while (Index > 0) do
- begin
- Dec(Index);
- if PlatformWin.TimerService.FTimers[Index].TimerID = idEvent then
- begin
- PlatformWin.TimerService.FTimers[Index].TimerFunc;
- Break;
- end;
- end;
- except
- on E: Exception do
- begin
- if Application <> nil then
- Application.HandleException(nil)
- else
- raise;
- end;
- end;
-end;
-
-{ TImmManager }
-
-constructor TImmManager.Create(const AForm: TCommonCustomForm);
-begin
- FForm := AForm;
-end;
-
-function TImmManager.GetComposition(const AContext: HIMC): string;
-var
- BufferLength: Integer;
-begin
- BufferLength := ImmGetCompositionString(AContext, GCS_COMPSTR, nil, 0);
- SetLength(Result, BufferLength div SizeOf(Char));
- ImmGetCompositionString(AContext, GCS_COMPSTR, PChar(Result), BufferLength);
-end;
-
-function TImmManager.GetFormHandle: HWND;
-begin
- Result := FormToHWND(Form);
-end;
-
-function TImmManager.GetResultComposition(const AContext: HIMC): string;
-var
- BufferLength: Integer;
-begin
- BufferLength := ImmGetCompositionString(AContext, GCS_RESULTSTR, nil, 0);
- SetLength(Result, BufferLength div SizeOf(Char));
- ImmGetCompositionString(AContext, GCS_RESULTSTR, PChar(Result), BufferLength);
-end;
-
-procedure TImmManager.ProcessImeParameters(const AContext: HIMC; const AParameters: LPARAM; const ATextService: TTextServiceWin);
-var
- CompositionString: string;
-begin
- CompositionString := GetComposition(AContext);
- ATextService.InternalSetMarkedText(CompositionString);
-
- if AParameters and GCS_COMPATTR <> 0 then
- UpdateCompositionAttributes(AContext, ATextService);
-
- if AParameters and GCS_CURSORPOS <> 0 then
- UpdateCompositionCursorPos(AContext, ATextService)
- else if GetKeyboardLayout(0) and $FFFF = TTextServiceWin.LCID_Korean_Default then
- // Native Korean IME Input system doesn't use cursor position. Instead of it it hightlights the last character in
- // marked text. Since FMX doesn't support displaying character selection, we just move caret in the end of marked
- // text and use underline attribute for highlighting last character.
- ATextService.MarkedTextCursorPosition := Max(1, ATextService.MarkedText.Length);
-end;
-
-procedure TImmManager.UpdateCompositionAttributes(const AContext: HIMC; const ATextService: TTextServiceWin);
-var
- BufferLength: Integer;
-begin
- BufferLength := ImmGetCompositionString(AContext, GCS_COMPATTR, nil, 0);
- if BufferLength > 0 then
- begin
- SetLength(ATextService.CompAttrBuf, BufferLength);
- ImmGetCompositionString(AContext, GCS_COMPATTR, @(ATextService.CompAttrBuf[0]), BufferLength);
- end;
-end;
-
-procedure TImmManager.UpdateCompositionCursorPos(const AContext: HIMC; const ATextService: TTextServiceWin);
-var
- CursorPos: Integer;
-begin
- CursorPos := ImmGetCompositionString(AContext, GCS_CURSORPOS, nil, 0);
- if CursorPos >= 0 then
- ATextService.MarkedTextCursorPosition := CursorPos;
-end;
-
-function TImmManager.UpdateIMEWindowPosition: LRESULT;
-
- function DpToPx(const APoint: TPointF): TPoint; overload;
- var
- FormScale: Single;
- begin
- FormScale := Form.Handle.Scale;
- Result := TPointF.Create(APoint.X * FormScale, APoint.Y * FormScale).Round;
- end;
-
- function DpToPx(const ARect: TRectF): TRect; overload;
- begin
- Result.TopLeft := DpToPx(ARect.TopLeft);
- Result.BottomRight := DpToPx(ARect.BottomRight);
- end;
-
- function DefineControlRect(const AFocusedControl: IControl; const ATextInput: ITextInput): TRectF;
- var
- SelectionRect: TRectF;
- begin
- SelectionRect := ATextInput.GetSelectionRect;
- Result.TopLeft := Form.ScreenToClient(AFocusedControl.LocalToScreen(SelectionRect.TopLeft));
- Result.BottomRight := Form.ScreenToClient(AFocusedControl.LocalToScreen(SelectionRect.BottomRight));
- end;
-
-var
- IMC: HIMC;
- Candidate: TCandidateForm;
- TextInput: ITextInput;
-begin
- Result := 0;
-
- if not Supports(Form.Focused, ITextInput, TextInput) then
- Exit;
-
- IMC := ImmGetContext(FormHandle);
- if IMC = 0 then
- Exit;
-
- try
- Candidate.dwIndex := 0;
- Candidate.dwStyle := CFS_POINT;
- Candidate.ptCurrentPos := DpToPx(TextInput.GetTargetClausePointF);
- Result := LRESULT(ImmSetCandidateWindow(IMC, @Candidate));
-
- Candidate.dwStyle := CFS_EXCLUDE;
- Candidate.rcArea := DpToPx(DefineControlRect(Form.Focused, TextInput));
- ImmSetCandidateWindow(IMC, @Candidate);
- finally
- ImmReleaseContext(FormHandle, IMC);
- end;
-end;
-
-procedure TImmManager.WMComposition(var Message: TMessage);
-var
- IMC: HIMC;
- S: string;
- TextInput: ITextInput;
- I: Integer;
- Key: Word;
- Ch: Char;
- IsProcessed: Boolean;
-begin
- UpdateIMEWindowPosition;
-
- IsProcessed := False;
-
- // User selected result string
- if Message.LParam and GCS_RESULTSTR <> 0 then
- begin
- IsProcessed := True;
- IMC := ImmGetContext(FormHandle);
- if IMC <> 0 then
- begin
- try
- if Supports(Form.Focused, ITextInput, TextInput) then
- begin
- TTextServiceWin(TextInput.GetTextService).Reset;
- TextInput.IMEStateUpdated;
- end;
- S := GetResultComposition(IMC);
- finally
- ImmReleaseContext(FormHandle, IMC);
- end;
-
- for I := 0 to S.Length - 1 do
- begin
- Key := 0;
- Ch := S.Chars[I];
- Form.KeyDown(Key, Ch, []);
- Form.KeyUp(Key, Ch, []);
- end;
- end;
- end;
-
- // User is inputting current composition string
- if Message.LParam and GCS_COMPSTR <> 0 then
- begin
- IsProcessed := True;
- IMC := ImmGetContext(FormHandle);
- if IMC <> 0 then
- try
- if Supports(Form.Focused, ITextInput, TextInput) then
- begin
- ProcessImeParameters(IMC, Message.LParam, TTextServiceWin(TextInput.GetTextService));
- TextInput.IMEStateUpdated;
- end;
- finally
- ImmReleaseContext(FormHandle, IMC);
- end;
- end;
-
- if IsProcessed then
- Message.Result := 0
- else
- Message.Result := DefWindowProc(FormHandle, Message.Msg, Message.WParam, Message.LParam);
-end;
-
-procedure TImmManager.WMEndComposition(var Message: TMessage);
-var
- TextInput: ITextInput;
-begin
- UpdateIMEWindowPosition;
-
- if Supports(Form.Focused, ITextInput, TextInput) then
- TTextServiceWin(TextInput.GetTextService).InternalEndIMEInput;
-end;
-
-procedure TImmManager.WMNotify(var Message: TMessage);
-begin
- if Message.WParam = IMN_OPENCANDIDATE then
- Message.Result := UpdateIMEWindowPosition
- else
- Message.Result := DefWindowProc(FormHandle, Message.Msg, Message.WParam, Message.LParam);
-end;
-
-procedure TImmManager.WMSetContext(var Message: TMessage);
-begin
- Message.Result := DefWindowProc(FormHandle, Message.Msg, Message.WParam, Message.LParam and ISC_SHOWUIALLCANDIDATEWINDOW);
-end;
-
-procedure TImmManager.WMStartComposition(var Message: TMessage);
-var
- TextInput: ITextInput;
-begin
- UpdateIMEWindowPosition;
-
- if Supports(Form.Focused, ITextInput, TextInput) then
- TTextServiceWin(TextInput.GetTextService).InternalStartIMEInput;
-
- if System.SysUtils.Win32MajorVersion >= 6 then
- Message.Result := DefWindowProc(FormHandle, Message.Msg, Message.WParam, Message.LParam)
- else
- Message.Result := 0;
-end;
-
-initialization
- OleInitialize(nil);
- CapturedGestureControl := nil;
- LastMousePos := ImpossibleMousePosition;
-end.
diff --git a/src/lib/FMX.Ani.pas b/src/lib/FMX/DX 10.4/FMX.Ani.pas
similarity index 99%
rename from src/lib/FMX.Ani.pas
rename to src/lib/FMX/DX 10.4/FMX.Ani.pas
index c926211..60c5d60 100644
--- a/src/lib/FMX.Ani.pas
+++ b/src/lib/FMX/DX 10.4/FMX.Ani.pas
@@ -2,7 +2,7 @@
{ }
{ Delphi FireMonkey Platform }
{ }
-{ Copyright(c) 2011-2020 Embarcadero Technologies, Inc. }
+{ Copyright(c) 2011-2021 Embarcadero Technologies, Inc. }
{ All rights reserved }
{ }
{*******************************************************}
@@ -1343,9 +1343,9 @@ constructor TAniThread.Create;
destructor TAniThread.Destroy;
begin
+ inherited;
FreeAndNil(FAniList);
FTimerService := nil;
- inherited;
end;
procedure TAniThread.AddAnimation(const Ani: TAnimation);
@@ -2826,6 +2826,7 @@ constructor TTimerThread.Create;
destructor TTimerThread.Destroy;
begin
Terminate;
+ FTimerEvent := nil;
FEnabledEvent.setEvent;
inherited;
FreeAndNil(FEnabledEvent);
diff --git a/src/lib/FMX.Graphics.pas b/src/lib/FMX/DX 10.4/FMX.Graphics.pas
similarity index 99%
rename from src/lib/FMX.Graphics.pas
rename to src/lib/FMX/DX 10.4/FMX.Graphics.pas
index 63db24a..9fa5e64 100644
--- a/src/lib/FMX.Graphics.pas
+++ b/src/lib/FMX/DX 10.4/FMX.Graphics.pas
@@ -2,7 +2,7 @@
{ }
{ Delphi FireMonkey Platform }
{ }
-{ Copyright(c) 2011-2020 Embarcadero Technologies, Inc. }
+{ Copyright(c) 2011-2021 Embarcadero Technologies, Inc. }
{ All rights reserved }
{ }
{*******************************************************}
@@ -1592,16 +1592,29 @@ function TGradient.Equal(const AGradient: TGradient): Boolean;
I: Integer;
begin
Result := True;
- if FPoints.Count <> AGradient.FPoints.Count then Exit(False);
- if not SameValue(FStartPosition.X, AGradient.FStartPosition.X, TEpsilon.Position) then Exit(False);
- if not SameValue(FStartPosition.Y, AGradient.FStartPosition.Y, TEpsilon.Position) then Exit(False);
- if not SameValue(FStopPosition.X, AGradient.FStopPosition.X, TEpsilon.Position) then Exit(False);
- if not SameValue(FStopPosition.Y, AGradient.FStopPosition.Y, TEpsilon.Position) then Exit(False);
+ if FPoints.Count <> AGradient.FPoints.Count then
+ Exit(False);
+ if not SameValue(FStartPosition.X, AGradient.FStartPosition.X, TEpsilon.Position) then
+ Exit(False);
+ if not SameValue(FStartPosition.Y, AGradient.FStartPosition.Y, TEpsilon.Position) then
+ Exit(False);
+ if not SameValue(FStopPosition.X, AGradient.FStopPosition.X, TEpsilon.Position) then
+ Exit(False);
+ if not SameValue(FStopPosition.Y, AGradient.FStopPosition.Y, TEpsilon.Position) then
+ Exit(False);
for I := 0 to FPoints.Count - 1 do
begin
- if FPoints[I].Color <> AGradient.FPoints[I].Color then Exit(False);
- if not SameValue(FPoints[I].Offset, AGradient.FPoints[I].Offset, TEpsilon.Position) then Exit(False);
+ if FPoints[I].Color <> AGradient.FPoints[I].Color then
+ Exit(False);
+ if not SameValue(FPoints[I].Offset, AGradient.FPoints[I].Offset, TEpsilon.Position) then
+ Exit(False);
end;
+ { Radial gradient }
+ if not SameValue(RadialTransform.RotationAngle, AGradient.RadialTransform.RotationAngle, TEpsilon.Angle) then
+ Exit(False);
+ if not SameValue(RadialTransform.RotationCenter.X, AGradient.RadialTransform.RotationCenter.X, TEpsilon.Position) or
+ not SameValue(RadialTransform.RotationCenter.Y, AGradient.RadialTransform.RotationCenter.Y, TEpsilon.Position) then
+ Exit(False);
end;
procedure TGradient.Change;
@@ -4259,7 +4272,7 @@ procedure TBitmap.SaveToFile(const AFileName: string; const SaveParams: PBitmapC
try
Surf.Assign(Self);
if not TBitmapCodecManager.SaveToFile(AFileName, Surf, SaveParams) then
- raise EBitmapSavingFailed.CreateFMT(SBitmapSavingFailed, [AFileName]);
+ raise EBitmapSavingFailed.CreateFMT(SBitmapSavingFailedNamed, [AFileName]);
finally
Surf.Free;
end;
@@ -4294,6 +4307,7 @@ function TBitmap.GetCanvas: TCanvas;
TMonitor.Enter(Self);
try
CopyToNewReference;
+ //! Launcher Fix
FCanvas := CanvasClass.CreateFromBitmap(Self, TCanvasQuality.HighQuality);
finally
TMonitor.Exit(Self);
diff --git a/src/lib/FMX/DX 10.4/FMX.TreeView.pas b/src/lib/FMX/DX 10.4/FMX.TreeView.pas
new file mode 100644
index 0000000..053a550
--- /dev/null
+++ b/src/lib/FMX/DX 10.4/FMX.TreeView.pas
@@ -0,0 +1,2825 @@
+{*******************************************************}
+{ }
+{ Delphi FireMonkey Platform }
+{ }
+{ Copyright(c) 2011-2021 Embarcadero Technologies, Inc. }
+{ All rights reserved }
+{ }
+{*******************************************************}
+
+unit FMX.TreeView;
+
+interface
+
+{$SCOPEDENUMS ON}
+
+uses
+ System.Classes, System.Types, System.UITypes, System.Generics.Collections, System.ImageList, FMX.Types, FMX.Layouts,
+ FMX.StdCtrls, FMX.Controls, FMX.TextLayout, FMX.Graphics, FMX.ActnList, FMX.ImgList;
+
+type
+
+{ TTreeViewItem }
+
+ TCustomTreeView = class;
+
+ TTreeViewItem = class(TTextControl, IItemsContainer, IGlyph)
+ public const
+ DefaultHeight = 19;
+ private
+ FIsExpanded: Boolean;
+ FExpander: TControl;
+ FButton: TCustomButton;
+ FCheck: TCheckBox;
+ FGlobalIndex: Integer;
+ FIsChecked: Boolean;
+ FIsSelected: Boolean;
+ FContent: TContent;
+ FNoItemsContent: TLayout;
+ FVisibleCount: Integer;
+ FMinItemSize: TSizeF;
+ FCustomHeight: Boolean;
+ FChildrenOffset: Single;
+ FOldButtonVisible: Boolean;
+ FOldCheckVisible: Boolean;
+ FOldChecked: Boolean;
+ FGlyph: TGlyph;
+ FOldGlyphVisible: Boolean;
+ FImageLink: TGlyphImageLink;
+ [Weak] FImages: TCustomImageList;
+ FCustomChildrenOffset: Single;
+ function GetLevelOffset: Single;
+ procedure DoButtonClick(Sender: TObject);
+ procedure DoCheckClick(Sender: TObject);
+ function GetCount: Integer;
+ procedure SetIsChecked(const Value: Boolean);
+ procedure UpdateCheckBoxVisibility;
+ procedure UpdateExpandedButtonVisibility;
+ procedure SetIsSelected(const Value: Boolean);
+ procedure RecountVisibleItems;
+ procedure RequestRecount;
+ function GetImages: TCustomImageList;
+ procedure SetImages(const Value: TCustomImageList);
+ { IGlyph }
+ function GetImageIndex: TImageIndex;
+ procedure SetImageIndex(const Value: TImageIndex);
+ function GetImageList: TBaseImageList; inline;
+ procedure SetImageList(const Value: TBaseImageList);
+ function IGlyph.GetImages = GetImageList;
+ procedure IGlyph.SetImages = SetImageList;
+ { IItemsContainer }
+ function IItemsContainer.GetItemsCount = GetCount;
+ function GetItem(const AIndex: Integer): TFmxObject;
+ function GetMinItemSize: TSizeF;
+ procedure OnExpandButtonStyleLookup(Sender: TObject);
+ procedure UpdateChildrenOffset;
+ procedure SetCustomChildrenOffset(const Value: Single);
+ function IsCustomChildrenOffsetStored: Boolean;
+ protected
+ procedure ChangeOrder; override;
+ procedure ApplyStyle; override;
+ procedure FreeStyle; override;
+ procedure DragEnd; override;
+ function GetTextSettingsClass: TTextSettingsInfo.TCustomTextSettingsClass; override;
+ function CalcMinSize: TSizeF;
+ procedure InvalidateTextSize;
+ /// Determines whether the ImageIndex property needs to be stored in the fmx-file
+ /// True if ImageIndex property needs to be stored in the fmx file
+ function ImageIndexStored: Boolean; virtual;
+ /// Should be called when you change an instance or reference to instance of TBaseImageList or the
+ /// ImageIndex property
+ /// See also FMX.ActnList.IGlyph
+ procedure ImagesChanged; virtual;
+ procedure DoChanged; override;
+ function IsSizeStored: Boolean; override;
+ function IsPositionStored: Boolean; override;
+ procedure SetText(const Value: string); override;
+ procedure DoAddObject(const AObject: TFmxObject); override;
+ procedure DoInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure DoRemoveObject(const AObject: TFmxObject); override;
+ function EnterChildren(AObject: IControl): Boolean; override;
+ function GetAbsoluteRect: TRectF; override;
+ function DoGetUpdateRect: TRectF; override;
+ procedure ContentAddObject(const AObject: TFmxObject); virtual;
+ procedure ContentInsertObject(const AIndex: Integer; const AObject: TFmxObject); virtual;
+ procedure ContentRemoveObject(const AObject: TFmxObject); virtual;
+ procedure DefineProperties(Filer: TFiler); override;
+ procedure Paint; override;
+ procedure SetVisible(const Value: Boolean); override;
+ procedure SetHeight(const Value: Single); override;
+ procedure SetIsExpanded(const Value: Boolean); virtual;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ procedure Sort(Compare: TFmxObjectSortCompare); override;
+ function ItemByPoint(const X, Y: Single): TTreeViewItem;
+ function ItemByIndex(const Idx: Integer): TTreeViewItem;
+ function TreeView: TCustomTreeView;
+ function Level: Integer;
+ function ParentItem: TTreeViewItem;
+ procedure Select;
+ procedure Deselect;
+ procedure ExpandAll;
+ procedure CollapseAll;
+ procedure Expand;
+ procedure Collapse;
+ procedure Inflate; override;
+ property Count: Integer read GetCount;
+ property VisibleCount: Integer read FVisibleCount;
+ property GlobalIndex: Integer read FGlobalIndex;
+ property MinItemSize: TSizeF read GetMinItemSize;
+ /// The actual offset in the right of children elements
+ property ChildrenOffset: Single read FChildrenOffset;
+ /// The offset of children elements which specified by user if this value is greater or equal to
+ /// zero otherwise the default value is used. This value affects
+ /// ChildrenOffset property
+ property CustomChildrenOffset: Single read FCustomChildrenOffset write SetCustomChildrenOffset
+ stored IsCustomChildrenOffsetStored nodefault;
+ property Items[const Index: Integer]: TTreeViewItem read ItemByIndex; default;
+ property Width: Single read GetWidth;
+ /// The list of images. Can be nil. See also FMX.ActnList.IGlyph
+ property Images: TCustomImageList read GetImages;
+ published
+ property Align;
+ property AutoTranslate default True;
+ property ClipChildren default False;
+ property ClipParent default False;
+ property Cursor default crDefault;
+ property DragMode default TDragMode.dmManual;
+ property EnableDragHighlight default True;
+ property Enabled default True;
+ property StyledSettings;
+ property TextSettings;
+ property Locked default False;
+ property Height;
+ property HelpContext;
+ property HelpKeyword;
+ property HelpType;
+ {triggers}
+ property IsChecked: Boolean read FIsChecked write SetIsChecked;
+ property IsExpanded: Boolean read FIsExpanded write SetIsExpanded;
+ property IsSelected: Boolean read FIsSelected write SetIsSelected;
+ /// Zero based index of an image. The default is -1.
+ /// See also FMX.ActnList.IGlyph
+ /// If non-existing index is specified, an image is not drawn and no exception is raised
+ property ImageIndex: TImageIndex read GetImageIndex write SetImageIndex stored ImageIndexStored;
+ property Padding;
+ property Opacity;
+ property Margins;
+ property PopupMenu;
+ property Position;
+ property RotationAngle;
+ property RotationCenter;
+ property Scale;
+ property Size;
+ property StyleLookup;
+ property TabOrder;
+ property TabStop;
+ property Text;
+ property Visible default True;
+ property ParentShowHint;
+ {events}
+ property OnApplyStyleLookup;
+ {Drag and Drop events}
+ property OnDragEnter;
+ property OnDragLeave;
+ property OnDragOver;
+ property OnDragDrop;
+ property OnDragEnd;
+ {Mouse events}
+ property OnClick;
+ property OnDblClick;
+ property OnMouseDown;
+ property OnMouseMove;
+ property OnMouseUp;
+ property OnMouseWheel;
+ property OnMouseEnter;
+ property OnMouseLeave;
+ property OnPainting;
+ property OnPaint;
+ property OnResize;
+ property OnResized;
+ end;
+
+{ TTreeView }
+
+ TOnCompareTreeViewItemEvent = function(Item1, Item2: TTreeViewItem): Integer of object;
+ TOnTreeViewDragChange = procedure(SourceItem, DestItem: TTreeViewItem;
+ var Allow: Boolean) of object;
+
+{ TTreeView }
+
+ TCustomTreeView = class(TScrollBox, IItemsContainer, IInflatableContent, IGlyph)
+ private
+ FMouseSelecting: Boolean;
+ FOnChange: TNotifyEvent;
+ FSelected: TTreeViewItem;
+ FItemHeight: Single;
+ FCountExpanded: Integer;
+ FShowCheckboxes: Boolean;
+ FOnChangeCheck: TNotifyEvent;
+ FSorted: Boolean;
+ FOnCompare: TOnCompareTreeViewItemEvent;
+ FMultiSelect: Boolean;
+ FFirstSelect: TTreeViewItem;
+ FFocusedSelection: TControl;
+ FSelection: TControl;
+ FSelections: TControlList;
+ FAllowDrag: Boolean;
+ FStartDrag: Boolean;
+ FDragItem: TTreeViewItem;
+ FOnDragChange: TOnTreeViewDragChange;
+ FGlobalList: TList;
+ FAlternatingRowBackground: Boolean;
+ FOddFill: TBrush;
+ FFirstVisibleItem, FLastVisibleItem: Integer;
+ FNoItemsContent: TContent;
+ [Weak] FHoveredItem: TTreeViewItem;
+ FTextLayout: TTextLayout;
+ FToInflate: TList;
+ FInflater: TContentInflater;
+ FSelectionChanging: Boolean;
+ FImageLink: TGlyphImageLink;
+ [Weak] FImages: TCustomImageList;
+ procedure SetItemHeight(const Value: Single);
+ procedure SetCheckboxesVisibility(const Value: Boolean);
+ function GetTreeItem(Index: Integer): TTreeViewItem;
+ procedure SetSorted(const Value: Boolean);
+ procedure SortItems;
+ procedure SelectRange(const Item1, Item2: TTreeViewItem);
+ procedure UpdateSelection;
+ procedure UpdateVisibleItems;
+ procedure UpdateGlobalIndexes(const Force: Boolean = False);
+ procedure SetAllowDrag(const Value: Boolean);
+ function GetCount: Integer;
+ procedure SetAlternatingRowBackground(const Value: Boolean);
+ procedure SetHoveredItem(const Value: TTreeViewItem);
+ function LocalPointToHoveredItemLocalPoint(const AX, AY: Single): TPointF;
+ function GetImages: TCustomImageList;
+ procedure SetImages(const Value: TCustomImageList);
+ { IGlyph }
+ function GetImageIndex: TImageIndex;
+ procedure SetImageIndex(const Value: TImageIndex);
+ function GetImageList: TBaseImageList; inline;
+ procedure SetImageList(const Value: TBaseImageList);
+ function IGlyph.GetImages = GetImageList;
+ procedure IGlyph.SetImages = SetImageList;
+ { IItemsContainer }
+ function IItemsContainer.GetItemsCount = GetCount;
+ function GetItem(const AIndex: Integer): TFmxObject;
+ function MouseInContentLayout(const X, Y: Single): Boolean;
+ function GetGlobalCount: Integer;
+ procedure InvalidateGlobalList;
+ procedure ItemSizeMightHaveChanged(const AItem: TTreeViewItem);
+ { Inflatable }
+ function GetInflatableItems: TList;
+ procedure NotifyInflated;
+ protected
+ procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+ procedure DoUpdateAniCalculations(const AAniCalculations: TScrollCalculations); override;
+ procedure Loaded; override;
+ /// Should be called when you change an instance or reference to instance of TBaseImageList or
+ /// ImageIndex property
+ /// See also FMX.ActnList.IGlyph
+ procedure ImagesChanged; virtual;
+ { Selection }
+ procedure ClearSelection;
+ procedure SelectAll;
+ procedure SetSelected(const Value: TTreeViewItem); virtual;
+ { Styles }
+ procedure ApplyStyle; override;
+ procedure FreeStyle; override;
+ { Tree View Events }
+ procedure DoChange; virtual;
+ procedure DoChangeCheck(const Item: TTreeViewItem); virtual;
+ { Focus }
+ procedure DoEnter; override;
+ procedure DoExit; override;
+ { Children structure }
+ procedure DoAddObject(const AObject: TFmxObject); override;
+ procedure DoInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure DoRemoveObject(const AObject: TFmxObject); override;
+ function IsAddToContent(const AObject: TFmxObject): Boolean; override;
+ procedure ContentAddObject(const AObject: TFmxObject); override;
+ procedure ContentInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure ContentRemoveObject(const AObject: TFmxObject); override;
+ procedure ContentBeforeRemoveObject(AObject: TFmxObject); override;
+ { Content Scrolling }
+ procedure ViewportPositionChange(const OldViewportPosition, NewViewportPosition: TPointF;
+ const ContentSizeChanged: Boolean); override;
+ function CreateScrollContent: TScrollContent; override;
+ function DoCalcContentBounds: TRectF; override;
+ function GetItemRect(const Item: TTreeViewItem): TRectF;
+ { Painting }
+ procedure DoContentPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
+ function IsOpaque: Boolean; override;
+ { Mouse events }
+ procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
+ procedure MouseMove(Shift: TShiftState; X, Y: Single); override;
+ procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
+ procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;
+ procedure MouseClick(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
+ { Keyboards events }
+ procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); override;
+ procedure KeyUp(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); override;
+ { Drag And Drop }
+ procedure DragOver(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); override;
+ procedure DragDrop(const Data: TDragObject; const Point: TPointF); override;
+ procedure DragLeave; override;
+ function ObjectAtPoint(P: TPointF): IControl; override;
+ procedure ChangeOrder; override;
+ procedure ItemExpanded(const Item: TTreeViewItem);
+ property HoveredItem: TTreeViewItem read FHoveredItem write SetHoveredItem;
+ property FirstSelectedItem: TTreeViewItem read FFirstSelect;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ procedure Clear;
+ procedure ExpandAll;
+ procedure CollapseAll;
+ function ItemByText(const AText: string): TTreeViewItem;
+ function ItemByPoint(const X, Y: Single): TTreeViewItem;
+ function ItemByIndex(const Idx: Integer): TTreeViewItem;
+ function ItemByGlobalIndex(const Idx: Integer): TTreeViewItem;
+ property Count: Integer read GetCount;
+ property GlobalCount: Integer read GetGlobalCount;
+ property CountExpanded: Integer read FCountExpanded;
+ property Selected: TTreeViewItem read FSelected write SetSelected;
+ property Items[Index: Integer]: TTreeViewItem read GetTreeItem;
+ property AllowDrag: Boolean read FAllowDrag write SetAllowDrag;
+ property AlternatingRowBackground: Boolean read FAlternatingRowBackground write SetAlternatingRowBackground;
+ property ItemHeight: Single read FItemHeight write SetItemHeight;
+ /// The list of images. Can be nil. See also FMX.ActnList.IGlyph
+ property Images: TCustomImageList read GetImages write SetImages;
+ property MultiSelect: Boolean read FMultiSelect write FMultiSelect default False;
+ property ShowCheckboxes: Boolean read FShowCheckboxes write SetCheckboxesVisibility default False;
+ property Sorted: Boolean read FSorted write SetSorted default False;
+ property OnChange: TNotifyEvent read FOnChange write FOnChange;
+ property OnChangeCheck: TNotifyEvent read FOnChangeCheck write FOnChangeCheck;
+ property OnCompare: TOnCompareTreeViewItemEvent read FOnCompare write FOnCompare;
+ property OnDragChange: TOnTreeViewDragChange read FOnDragChange write FOnDragChange;
+ end;
+
+ TTreeView = class(TCustomTreeView)
+ published
+ property StyleLookup;
+ property CanFocus default True;
+ property CanParentFocus;
+ property DisableFocusEffect default True;
+ property TabOrder;
+ property TabStop;
+ property AllowDrag default False;
+ property AlternatingRowBackground default False;
+ property Hint;
+ property ItemHeight;
+ property Images;
+ property MultiSelect default False;
+ property ShowCheckboxes default False;
+ property Sorted default False;
+ property ParentShowHint;
+ property ShowHint;
+ property OnCanFocus;
+ property OnChange;
+ property OnChangeCheck;
+ property OnCompare;
+ property OnDragChange;
+ property OnKeyDown;
+ property OnKeyUp;
+ end;
+
+implementation
+
+uses
+ System.Math, System.Math.Vectors, System.RTLConsts, System.SysUtils, FMX.Consts, FMX.Ani, FMX.Utils;
+
+type
+ TTreeViewItemContent = class(TContent)
+ private
+ FItem: TTreeViewItem;
+ protected
+ function GetFirstVisibleObjectIndex: Integer; override;
+ function GetLastVisibleObjectIndex: Integer; override;
+ function GetAbsoluteRect: TRectF; override;
+ function DoGetUpdateRect: TRectF; override;
+ procedure DoRealign; override;
+ procedure DoAddObject(const AObject: TFmxObject); override;
+ procedure DoInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure DoRemoveObject(const AObject: TFmxObject); override;
+ public
+ end;
+
+{ TTreeViewItemContent }
+
+procedure TTreeViewItemContent.DoAddObject(const AObject: TFmxObject);
+begin
+ inherited DoAddObject(AObject);
+ if Parent is TTreeViewItem then
+ TTreeViewItem(Parent).ContentAddObject(AObject);
+end;
+
+procedure TTreeViewItemContent.DoRemoveObject(const AObject: TFmxObject);
+begin
+ inherited;
+ if Parent is TTreeViewItem then
+ TTreeViewItem(Parent).ContentRemoveObject(AObject);
+end;
+
+procedure TTreeViewItemContent.DoInsertObject(Index: Integer;
+ const AObject: TFmxObject);
+begin
+ inherited DoInsertObject(Index, AObject);
+ if Parent is TTreeViewItem then
+ TTreeViewItem(Parent).ContentInsertObject(Index, AObject);
+end;
+
+procedure TTreeViewItemContent.DoRealign;
+begin
+end;
+
+function TTreeViewItemContent.GetAbsoluteRect: TRectF;
+begin
+ if FItem <> nil then
+ Result := FItem.GetAbsoluteRect
+ else
+ Result := inherited;
+end;
+
+function TTreeViewItemContent.DoGetUpdateRect: TRectF;
+begin
+ if FItem <> nil then
+ Result := FItem.DoGetUpdateRect
+ else
+ Result := inherited;
+end;
+
+function TTreeViewItemContent.GetFirstVisibleObjectIndex: Integer;
+begin
+ Result := 0;
+end;
+
+function TTreeViewItemContent.GetLastVisibleObjectIndex: Integer;
+begin
+ if FItem.IsExpanded then
+ Result := ControlsCount
+ else
+ Result := 0;
+end;
+
+{ TTreeViewItem }
+
+constructor TTreeViewItem.Create(AOwner: TComponent);
+begin
+ inherited;
+ FImageLink := TGlyphImageLink.Create(Self);
+ AutoTranslate := True;
+ TextAlign := TTextAlign.Leading;
+ Size.SetSizeWithoutNotification(TSizeF.Create(Width, 0));
+ FCustomHeight := False;
+ HitTest := False;
+ CanFocus := False;
+ FContent := TTreeViewItemContent.Create(Self);
+ FChildrenOffset := 0;
+ FCustomChildrenOffset := -1;
+ TTreeViewItemContent(FContent).FItem := Self;
+ FContent.Stored := False;
+ FContent.Parent := Self;
+ FContent.Locked := True;
+ FContent.HitTest := False;
+end;
+
+procedure TTreeViewItem.ChangeOrder;
+var
+ LTreeView : TCustomTreeView;
+begin
+ inherited ChangeOrder;
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and not LTreeView.IsUpdating then
+ begin
+ LTreeView.UpdateGlobalIndexes(True);
+ LTreeView.RealignContent;
+ end;
+end;
+
+procedure TTreeViewItem.ContentAddObject(const AObject: TFmxObject);
+var
+ LTreeView : TCustomTreeView;
+begin
+ if not (AObject is TTreeViewItem) then
+ begin
+ if FNoItemsContent = nil then
+ begin
+ FNoItemsContent := TLayout.Create(nil);
+ FNoItemsContent.Parent := Self;
+ FNoItemsContent.SetBounds(0, 0, 0, 0);
+ FNoItemsContent.Stored := False;
+ FNoItemsContent.Locked := True;
+ FNoItemsContent.HitTest := False;
+ end;
+ FNoItemsContent.AddObject(AObject)
+ end
+ else
+ begin
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ if [csLoading, csDestroying] * LTreeView.ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(LTreeView.Images);
+ LTreeView.InvalidateGlobalList;
+ LTreeView.RealignContent;
+ end;
+ end;
+end;
+
+type
+ TTreeViewItemTextSettings = class(TTextSettingsInfo.TCustomTextSettings)
+ public
+ constructor Create(const AOwner: TPersistent); override;
+ property WordWrap default False;
+ published
+ property Font;
+ property FontColor;
+ property HorzAlign;
+ end;
+
+{ TTreeViewItemTextSettings }
+
+constructor TTreeViewItemTextSettings.Create(const AOwner: TPersistent);
+begin
+ inherited;
+ WordWrap := False;
+end;
+
+function TTreeViewItem.GetTextSettingsClass: TTextSettingsInfo.TCustomTextSettingsClass;
+begin
+ Result := TTreeViewItemTextSettings;
+end;
+
+procedure TTreeViewItem.ContentInsertObject(const AIndex: Integer;
+ const AObject: TFmxObject);
+begin
+ ContentAddObject(AObject);
+end;
+
+procedure TTreeViewItem.ContentRemoveObject(const AObject: TFmxObject);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if AObject is TTreeViewItem then
+ begin
+ // After removing child item, we need recalculate Visible Items Count
+ // and update Visible of 'Expand' button
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+
+ TTreeViewItem(AObject).Deselect;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ if [csLoading, csDestroying] * LTreeView.ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(nil);
+ LTreeView.InvalidateGlobalList;
+ LTreeView.RealignContent;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.RecountVisibleItems;
+var
+ I: Integer;
+begin
+ FVisibleCount := 0;
+ for I := 0 to Count - 1 do
+ if FContent.Controls[I].IsVisible then
+ Inc(FVisibleCount);
+end;
+
+procedure TTreeViewItem.RequestRecount;
+var
+ LTreeView: TCustomTreeView;
+begin
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ LTreeView.InvalidateGlobalList;
+ LTreeView.InvalidateContentSize;
+ end;
+end;
+
+procedure TTreeViewItem.DragEnd;
+var
+ LTreeView : TCustomTreeView;
+begin
+ inherited;
+ DragLeave;
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and (LTreeView.FDragItem <> nil) then
+ begin
+ LTreeView.FDragItem.RemoveFreeNotify(LTreeView);
+ LTreeView.FDragItem := nil;
+ end;
+end;
+
+function TTreeViewItem.GetAbsoluteRect: TRectF;
+var
+ I: Integer;
+begin
+ Result := inherited GetAbsoluteRect;
+ if IsExpanded and (Count > 0) then
+ begin
+ for I := 0 to Count - 1 do
+ Result := UnionRect(Result, Items[I].AbsoluteRect);
+ end;
+end;
+
+function TTreeViewItem.DoGetUpdateRect: TRectF;
+var
+ I: Integer;
+begin
+ Result := inherited DoGetUpdateRect;
+ if IsExpanded and (Count > 0) then
+ for I := 0 to Count - 1 do
+ Result := UnionRect(Result, Items[I].UpdateRect);
+end;
+
+function TTreeViewItem.GetLevelOffset: Single;
+var
+ Item: TTreeViewItem;
+ Offs: Single;
+ function NextLevel(var Item: TTreeViewItem): Boolean;
+ var
+ P: TFmxObject;
+ begin
+ Result := False;
+ P := Item.Parent;
+ if (P is TContent) then
+ P := P.Parent;
+ if P is TTreeViewItem then
+ begin
+ Result := True;
+ Item := TTreeViewItem(P);
+ end;
+ end;
+begin
+ Result := 0;
+ Item := self;
+ while NextLevel(Item) do
+ begin
+ Offs := Item.ChildrenOffset;
+ Result := Result + Offs;
+ end;
+end;
+
+function TTreeViewItem.GetCount: Integer;
+begin
+ Result := FContent.ControlsCount;
+end;
+
+procedure TTreeViewItem.DefineProperties(Filer: TFiler);
+begin
+ inherited;
+ Filer.DefineProperty('HitTest', IgnoreBooleanValue, nil, False); // do not localize
+ Filer.DefineProperty('Width', IgnoreFloatValue, nil, False); // do not localize
+end;
+
+procedure TTreeViewItem.Deselect;
+begin
+ IsSelected := False;
+end;
+
+destructor TTreeViewItem.Destroy;
+ procedure ClearRef(var Value: TTreeViewItem);
+ begin
+ if Value = Self then
+ Value := nil;
+ end;
+var
+ LTreeView: TCustomTreeView;
+begin
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ ClearRef(LTreeView.FFirstSelect);
+ ClearRef(LTreeView.FDragItem);
+ ClearRef(LTreeView.FSelected);
+ if LTreeView.FGlobalList <> nil then
+ LTreeView.FGlobalList.Remove(Self);
+ end;
+ FImageLink.DisposeOf;
+ FImageLink := nil;
+ inherited;
+end;
+
+procedure TTreeViewItem.DoAddObject(const AObject: TFmxObject);
+begin
+ if AObject is TTreeViewItem then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ FContent.AddObject(AObject);
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+ if IsExpanded then
+ RequestRecount;
+ end
+ else
+ inherited;
+end;
+
+procedure TTreeViewItem.DoInsertObject(Index: Integer; const AObject: TFmxObject);
+begin
+ if AObject is TTreeViewItem then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ FContent.InsertObject(Index, AObject);
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+ if IsExpanded then
+ RequestRecount;
+ end
+ else
+ inherited;
+end;
+
+procedure TTreeViewItem.DoRemoveObject(const AObject: TFmxObject);
+begin
+ if (AObject is TTreeViewItem) and (TTreeViewItem(AObject).TreeView = TreeView) then
+ begin
+ TTreeViewItem(AObject).Parent := nil;
+ TTreeViewItem(AObject).Deselect;
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+ if IsExpanded then
+ RequestRecount;
+ end
+ else
+ inherited;
+end;
+
+function TTreeViewItem.GetItem(const AIndex: Integer): TFmxObject;
+begin
+ Result := Items[AIndex];
+end;
+
+function TTreeViewItem.ItemByPoint(const X, Y: Single): TTreeViewItem;
+var
+ I: Integer;
+ P, P1: TPointF;
+ LItem: TTreeViewItem;
+begin
+ P := LocalToAbsolute(TPointF.Create(X, Y));
+ for I := 0 to Count - 1 do
+ begin
+ LItem := ItemByIndex(I);
+ if not LItem.Visible then
+ Continue;
+ if LItem.PointInObject(P.X, P.Y) then
+ begin
+ Result := LItem;
+ Exit;
+ end
+ else if (LItem.Count > 0) and (LItem.IsExpanded) then
+ begin
+ P1 := LItem.AbsoluteToLocal(P);
+ Result := LItem.ItemByPoint(P1.X, P1.Y);
+ if Result <> nil then
+ Exit;
+ end;
+ end;
+ Result := nil;
+end;
+
+function TTreeViewItem.IsPositionStored: Boolean;
+begin
+ Result := False;
+end;
+
+function TTreeViewItem.IsSizeStored: Boolean;
+begin
+ Result := FCustomHeight;
+end;
+
+function TTreeViewItem.ItemByIndex(const Idx: Integer): TTreeViewItem;
+begin
+ if (Idx >= 0) and (Idx < Count) then
+ Result := TTreeViewItem(FContent.Controls[Idx])
+ else
+ raise ERangeError.CreateFMT(sArgumentOutOfRange_Index, [Idx, Count]);
+end;
+
+procedure TTreeViewItem.Paint;
+var
+ R: TRectF;
+begin
+ inherited Paint;
+ if (csDesigning in ComponentState) and not Locked and not FInPaintTo then
+ begin
+ R := LocalRect;
+ InflateRect(R, -0.5, -0.5);
+ Canvas.Stroke.Thickness := 1;
+ Canvas.Stroke.Dash := TStrokeDash.Dash;
+ Canvas.Stroke.Kind := TBrushKind.Solid;
+ Canvas.Stroke.Color := $A0909090;
+ Canvas.DrawRect(R, 0, 0, AllCorners, AbsoluteOpacity);
+ Canvas.Stroke.Dash := TStrokeDash.Solid;
+ end;
+end;
+
+function TTreeViewItem.ParentItem: TTreeViewItem;
+begin
+ TFMXObjectHelper.FindNearestParentOfClass(Self, Result);
+end;
+
+function TTreeViewItem.EnterChildren(AObject: IControl): Boolean;
+var
+ LTreeView : TCustomTreeView ;
+begin
+ Result := inherited EnterChildren(AObject);
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ LTreeView.Selected := Self;
+ Result := True;
+ end;
+end;
+
+procedure TTreeViewItem.Collapse;
+begin
+ IsExpanded := False;
+end;
+
+procedure TTreeViewItem.CollapseAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ Collapse;
+ for i := Count - 1 downto 0 do
+ begin
+ Item := ItemByIndex(i);
+ if Item <> nil then
+ Item.CollapseAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TTreeViewItem.Expand;
+begin
+ IsExpanded := True;
+end;
+
+procedure TTreeViewItem.ExpandAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ Expand;
+ for i := Count - 1 downto 0 do
+ begin
+ Item := ItemByIndex(i);
+ if Item <> nil then
+ Item.ExpandAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+function TTreeViewItem.Level: Integer;
+var
+ P: TFmxObject;
+begin
+ Result := 0;
+ P := Parent;
+ while (P <> nil) and not (P is TCustomTreeView) do
+ begin
+ Result := Result + 1;
+ P := P.Parent;
+ if (P is TContent) then
+ P := P.Parent;
+ end;
+end;
+
+procedure TTreeViewItem.OnExpandButtonStyleLookup(Sender: TObject);
+begin
+ UpdateExpandedButtonVisibility;
+end;
+
+function TTreeViewItem.TreeView: TCustomTreeView;
+begin
+ TFMXObjectHelper.FindNearestParentOfClass(Self, Result);
+end;
+
+procedure TTreeViewItem.FreeStyle;
+begin
+ inherited;
+ if FButton <> nil then
+ begin
+ FButton.OnClick := nil;
+ FButton.OnApplyStyleLookup := nil;
+ FButton.Visible := FOldButtonVisible;
+ FButton := nil;
+ end;
+ FExpander := nil;
+ if FCheck <> nil then
+ begin
+ FCheck.OnClick := nil;
+ FCheck.OnChange := nil;
+ FCheck.Visible := FOldCheckVisible;
+ FCheck.IsChecked := FOldChecked;
+ FCheck := nil;
+ end;
+ if FGlyph <> nil then
+ begin
+ FGlyph.BeginUpdate;
+ try
+ FGlyph.ImageIndex := -1;
+ FGlyph.Images := nil;
+ finally
+ FGlyph.EndUpdate;
+ end;
+ FGlyph := nil;
+ end;
+end;
+
+procedure TTreeViewItem.UpdateChildrenOffset;
+begin
+ if FCustomChildrenOffset >= 0 then
+ FChildrenOffset := FCustomChildrenOffset
+ else if FExpander <> nil then
+ FChildrenOffset := FExpander.Width
+ else if FCheck <> nil then
+ FChildrenOffset := FCheck.Width
+ else if FButton <> nil then
+ FChildrenOffset := FButton.Width
+ else
+ FChildrenOffset := DefaultHeight;
+end;
+
+procedure TTreeViewItem.ApplyStyle;
+var
+ LTreeView: TCustomTreeView;
+ LHeight: Single;
+ LCustomHeight: Boolean;
+begin
+ LCustomHeight := FCustomHeight and (Height > 0);
+ LHeight := Height;
+ try
+ inherited;
+ FindStyleResource('expander', FExpander);
+ if FindStyleResource('button', FButton) then
+ begin
+ FOldButtonVisible := FButton.Visible;
+ FButton.OnClick := DoButtonClick;
+ FButton.OnApplyStyleLookup := OnExpandButtonStyleLookup;
+ UpdateExpandedButtonVisibility;
+ end;
+ if FindStyleResource('check', FCheck) then
+ begin
+ FOldCheckVisible := FCheck.Visible;
+ FOldChecked := FCheck.IsChecked;
+ FCheck.IsChecked := IsChecked;
+ FCheck.OnChange := DoCheckClick;
+ LTreeView := TreeView ;
+ if LTreeView <> nil then
+ FCheck.Visible := LTreeView.ShowCheckboxes;
+ end;
+ if FindStyleResource('glyphstyle', FGlyph) then
+ begin
+ FGlyph.Images := TCustomImageList(FImageLink.Images);
+ FGlyph.ImageIndex := FImageLink.ImageIndex;
+ FOldGlyphVisible := FGlyph.Visible;
+ end
+ else
+ FOldGlyphVisible := False;
+ if IsSelected then
+ begin
+ StartTriggerAnimation(Self, 'IsSelected');
+ ApplyTriggerEffect(Self, 'IsSelected');
+ end;
+ Align := TAlignLayout.None;
+ UpdateChildrenOffset;
+ finally
+ if LCustomHeight then
+ Height := LHeight;
+ FCustomHeight := LCustomHeight;
+ end;
+end;
+
+function TTreeViewItem.CalcMinSize: TSizeF;
+const
+ MinText = '1';
+
+ procedure UpdateWidth(const Control: TControl; const VisibleOnly: Boolean);
+ var
+ R: TRectF;
+ begin
+ if (Control <> nil) and (not VisibleOnly or Control.Visible) then
+ begin
+ R := Control.BoundsRect;
+ R := Control.Margins.MarginRect(R);
+ Result.cx := Result.cx + R.Width;
+ end;
+ end;
+
+ function FirstWord(const Text: string; const NeedEllipsis: Boolean): string;
+ var
+ I: Integer;
+ begin
+ I := Text.IndexOf(' ');
+ if I >= 0 then
+ begin
+ Result := Text.Substring(0, I);
+ if NeedEllipsis then
+ Result := Result + SChrHorizontalEllipsis;
+ end
+ else
+ Result := Text;
+ end;
+
+var
+ R: TRectF;
+ LLayout: TTextLayout;
+ LTree: TCustomTreeView;
+ TextSettings: ITextSettings;
+begin
+ Result := TSizeF.Create(0, 0);
+ LTree := TreeView;
+ if LTree = nil then
+ Exit;
+ if Visible then
+ begin
+ if (TextObject <> nil) and TextObject.GetInterface(ITextSettings, TextSettings) then
+ begin
+ LLayout := LTree.FTextLayout;
+ if LLayout <> nil then
+ begin
+ LLayout.BeginUpdate;
+ try
+ LLayout.WordWrap := False;
+ LLayout.HorizontalAlign := TTextAlign.Leading;
+ LLayout.VerticalAlign := TTextAlign.Leading;
+ LLayout.Color := TAlphaColorRec.Black;
+ LLayout.Font := TextSettings.ResultingTextSettings.Font;
+ LLayout.Opacity := 1;
+ LLayout.Trimming := TTextTrimming.None;
+ if Text.IsEmpty then
+ LLayout.Text := MinText
+ else
+ case TextSettings.ResultingTextSettings.Trimming of
+ TTextTrimming.None:
+ begin
+ if TextSettings.ResultingTextSettings.WordWrap then
+ LLayout.Text := FirstWord(Text, False)
+ else
+ LLayout.Text := Text;
+ end;
+ TTextTrimming.Character:
+ LLayout.Text := MinText + SChrHorizontalEllipsis;
+ TTextTrimming.Word:
+ LLayout.Text := FirstWord(Text, True);
+ end;
+ finally
+ LLayout.EndUpdate;
+ end;
+ R := LLayout.TextRect;
+ Result.Width := Ceil(R.Width) + 2;
+ Result.Height := Ceil(R.Height) + 4;
+ UpdateWidth(FButton, False);
+ UpdateWidth(FCheck, True);
+ UpdateWidth(FGlyph, True);
+ Result.cx := Result.cx + Padding.Left + Padding.Right;
+ Result.cy := Result.cy + Padding.Top + Padding.Bottom;
+ end;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.Inflate;
+begin
+ InvalidateTextSize;
+ inherited;
+ DisableDisappear := True;
+ try
+ ApplyStyleLookup;
+ finally
+ DisableDisappear := False;
+ end;
+ CalcMinSize;
+end;
+
+procedure TTreeViewItem.InvalidateTextSize;
+begin
+ FMinItemSize := TSizeF.Create(0, 0);
+end;
+
+function TTreeViewItem.GetMinItemSize: TSizeF;
+begin
+ if FMinItemSize.IsZero then
+ FMinItemSize := CalcMinSize;
+ Result := FMinItemSize;
+end;
+
+procedure TTreeViewItem.DoChanged;
+begin
+ inherited;
+ if not FCustomHeight then
+ InvalidateTextSize;
+end;
+
+procedure TTreeViewItem.DoCheckClick(Sender: TObject);
+var
+ LTreeView : TCustomTreeView;
+begin
+ if FCheck <> nil then
+ FIsChecked := FCheck.IsChecked;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ LTreeView.SetFocus;
+ LTreeView.DoChangeCheck(Self);
+ end;
+end;
+
+procedure TTreeViewItem.UpdateCheckBoxVisibility;
+var
+ i, j: Integer;
+ LTreeView: TCustomTreeView;
+begin
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and (FCheck <> nil) and
+ (FCheck.Visible <> LTreeView.ShowCheckboxes) then
+ begin
+ FCheck.Visible := LTreeView.ShowCheckboxes;
+ InvalidateTextSize;
+ end;
+ if ControlsCount > 0 then
+ for i := 0 to ControlsCount - 1 do
+ if Controls[i] is TTreeViewItem then
+ TTreeViewItem(Controls[i]).UpdateCheckBoxVisibility
+ else if Controls[i] is TTreeViewItemContent then
+ for j := 0 to Controls[i].ControlsCount - 1 do
+ if Controls[i].Controls[j] is TTreeViewItem then
+ TTreeViewItem(Controls[i].Controls[j]).UpdateCheckBoxVisibility
+end;
+
+procedure TTreeViewItem.UpdateExpandedButtonVisibility;
+begin
+ if (FButton <> nil) and not (csLoading in ComponentState) then
+ begin
+ FButton.Visible := VisibleCount > 0;
+ if FButton.Visible then
+ TAnimator.StartTriggerAnimation(FButton, Self, 'IsExpanded');
+ end;
+end;
+
+procedure TTreeViewItem.Select;
+begin
+ IsSelected := True;
+end;
+
+function TTreeViewItem.IsCustomChildrenOffsetStored: Boolean;
+begin
+ Result := FCustomChildrenOffset >= 0;
+end;
+
+procedure TTreeViewItem.SetCustomChildrenOffset(const Value: Single);
+var
+ Parent: TTreeViewItem;
+begin
+ if not SameValue(FCustomChildrenOffset, Value, TEpsilon.FontSize) then
+ begin
+ FCustomChildrenOffset := Value;
+ UpdateChildrenOffset;
+ if not IsUpdating and IsExpanded and (TreeView <> nil) then
+ begin
+ Parent := ParentItem;
+ while Parent <> nil do
+ if Parent.IsExpanded then
+ Parent := Parent.ParentItem
+ else
+ Exit;
+ TreeView.RealignContent;
+ TreeView.UpdateSelection;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.SetHeight(const Value: Single);
+var
+ ItemSize: TSizeF;
+begin
+ if not SameValue(Value, Height) then
+ begin
+ if (not (csLoading in ComponentState)) then
+ begin
+ if Value <= 0 then
+ FCustomHeight := False
+ else
+ begin
+ ItemSize := MinItemSize;
+ if ItemSize.cy > 0 then
+ FCustomHeight := not SameValue(Value, ItemSize.cy)
+ else
+ FCustomHeight := True;
+ end;
+ end
+ else
+ begin
+ FCustomHeight := Value >= 1;
+ end;
+ end;
+ inherited;
+end;
+
+procedure TTreeViewItem.SetIsChecked(const Value: Boolean);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if FIsChecked <> Value then
+ begin
+ FIsChecked := Value;
+ if FCheck <> nil then
+ FCheck.IsChecked := FIsChecked;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.DoChangeCheck(Self);
+ end;
+end;
+
+procedure TTreeViewItem.SetIsSelected(const Value: Boolean);
+var
+ LTreeView : TCustomTreeView;
+begin
+ if FIsSelected <> Value then
+ begin
+ FIsSelected := Value;
+ StartTriggerAnimation(Self, 'IsSelected');
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ if not LTreeView.MultiSelect then
+ if Value then
+ LTreeView.Selected := Self
+ else
+ LTreeView.Selected := nil;
+ LTreeView.UpdateSelection;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.SetText(const Value: string);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if Value <> Text then
+ begin
+ inherited;
+ InvalidateTextSize;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.ItemSizeMightHaveChanged(Self);
+ end;
+end;
+
+procedure TTreeViewItem.SetVisible(const Value: Boolean);
+var
+ LChanged: Boolean;
+ LParentItem: TTreeViewItem;
+ LTreeView: TCustomTreeView;
+begin
+ LChanged := inherited Visible <> Value;
+ inherited;
+ if LChanged then
+ begin
+ LParentItem := ParentItem;
+ if LParentItem <> nil then
+ ParentItem.RecountVisibleItems;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.RealignContent;
+ end;
+end;
+
+procedure TTreeViewItem.Sort(Compare: TFmxObjectSortCompare);
+begin
+ FContent.Sort(Compare);
+end;
+
+procedure TTreeViewItem.DoButtonClick(Sender: TObject);
+begin
+ IsExpanded := not IsExpanded;
+end;
+
+procedure TTreeViewItem.SetIsExpanded(const Value: Boolean);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if FIsExpanded <> Value then
+ begin
+ FIsExpanded := Value;
+ UpdateExpandedButtonVisibility;
+ InvalidateTextSize;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.ItemExpanded(Self);
+ end;
+end;
+
+function TTreeViewItem.GetImages: TCustomImageList;
+begin
+ if FImageLink <> nil then
+ Result := TCustomImageList(FImageLink.Images)
+ else
+ Result := FImages;
+end;
+
+procedure TTreeViewItem.SetImages(const Value: TCustomImageList);
+begin
+ if FImageLink <> nil then
+ FImageLink.Images := Value
+ else
+ FImages := Value;
+end;
+
+function TTreeViewItem.GetImageIndex: TImageIndex;
+begin
+ if FImageLink <> nil then
+ Result := FImageLink.ImageIndex
+ else
+ Result := -1;
+end;
+
+procedure TTreeViewItem.SetImageIndex(const Value: TImageIndex);
+begin
+ if FImageLink <> nil then
+ FImageLink.ImageIndex := Value;
+end;
+
+function TTreeViewItem.GetImageList: TBaseImageList;
+begin
+ Result := GetImages;
+end;
+
+procedure TTreeViewItem.SetImageList(const Value: TBaseImageList);
+begin
+ // none.
+end;
+
+function TTreeViewItem.ImageIndexStored: Boolean;
+begin
+ Result := ActionClient or (ImageIndex <> -1);
+end;
+
+procedure TTreeViewItem.ImagesChanged;
+
+ procedure UpdateImages;
+ var
+ I: Integer;
+ begin
+ if FImages <> FImageLink.Images then
+ begin
+ FImages := TCustomImageList(FImageLink.Images);
+ if [csLoading, csDestroying] * ComponentState = [] then
+ for I := 0 to Count - 1 do
+ Items[I].SetImages(FImages);
+ end;
+ end;
+
+ procedure UpdateTreeView;
+ var
+ LTreeView: TCustomTreeView;
+ begin
+ if [csLoading, csDestroying] * ComponentState = [] then
+ begin
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and not LTreeView.IsUpdating then
+ begin
+ LTreeView.BeginUpdate;
+ try
+ UpdateImages;
+ InvalidateTextSize;
+ LTreeView.ItemSizeMightHaveChanged(Self);
+ finally
+ LTreeView.EndUpdate;
+ end;
+ end
+ else
+ UpdateImages;
+ end;
+ end;
+
+var
+ NewGlyphVisible: Boolean;
+begin
+ if FGlyph <> nil then
+ begin
+ FGlyph.BeginUpdate;
+ try
+ FGlyph.Images := TCustomImageList(FImageLink.Images);
+ FGlyph.ImageIndex := FImageLink.ImageIndex;
+ finally
+ FGlyph.EndUpdate;
+ end;
+ if ([csLoading, csDestroying] * ComponentState = []) then
+ FGlyph.Repaint;
+ end;
+
+ NewGlyphVisible := (FGlyph <> nil) and (FGlyph.Visible);
+ if FOldGlyphVisible <> NewGlyphVisible then
+ begin
+ FOldGlyphVisible := NewGlyphVisible;
+ UpdateTreeView;
+ end
+ else
+ UpdateImages;
+end;
+
+{ TTreeViewContent }
+
+type
+
+ TTreeViewContent = class(TScrollContent)
+ private
+ [Weak] FTreeView: TCustomTreeView;
+ protected
+ function GetFirstVisibleObjectIndex: Integer; override;
+ function GetLastVisibleObjectIndex: Integer; override;
+ procedure DoRealign; override;
+ public
+ end;
+
+function TTreeViewContent.GetFirstVisibleObjectIndex: Integer;
+var
+ Item: TTreeViewItem;
+begin
+ if FTreeView.FGlobalList.Count > 0 then
+ begin
+ Item := FTreeView.FGlobalList[FTreeView.FFirstVisibleItem];
+ while Item.ParentItem <> nil do
+ Item := Item.ParentItem;
+ Result := Item.Index;
+ end
+ else
+ Result := 0;
+end;
+
+function TTreeViewContent.GetLastVisibleObjectIndex: Integer;
+var
+ Item: TTreeViewItem;
+begin
+ if (FTreeView.FGlobalList.Count > 0) and (FTreeView.FLastVisibleItem < FTreeView.FGlobalList.Count) then
+ begin
+ Item := FTreeView.FGlobalList[FTreeView.FLastVisibleItem];
+ while Item.ParentItem <> nil do
+ Item := Item.ParentItem;
+ Result := Item.Index + 1;
+ if Result > ControlsCount then
+ Result := ControlsCount;
+ end
+ else
+ Result := ControlsCount;
+end;
+
+procedure TTreeViewContent.DoRealign;
+begin
+end;
+
+{ TTreeView }
+
+constructor TCustomTreeView.Create(AOwner: TComponent);
+begin
+ inherited;
+ FImageLink := TGlyphImageLink.Create(Self);
+ FGlobalList := TList.Create;
+ FGlobalList.Capacity := 100;
+ FOddFill := TBrush.Create(TBrushKind.Solid, $20000000);
+ DisableFocusEffect := True;
+ CanFocus := True;
+ AutoCapture := True;
+ Width := 100;
+ Height := 100;
+ FItemHeight := 0;
+ SetAcceptsControls(False);
+ FToInflate := TList.Create;
+ FInflater := TContentInflater.Create(Self);
+end;
+
+function TCustomTreeView.CreateScrollContent: TScrollContent;
+begin
+ Result := TTreeViewContent.Create(Self);
+ TTreeViewContent(Result).FTreeView := Self;
+end;
+
+destructor TCustomTreeView.Destroy;
+begin
+ FreeAndNil(FSelections);
+ FreeAndNil(FGlobalList);
+ FreeAndNil(FOddFill);
+ FInflater.DisposeOf;
+ FreeAndNil(FToInflate);
+ FImageLink.DisposeOf;
+ inherited;
+end;
+
+procedure TCustomTreeView.ApplyStyle;
+var
+ T: TFmxObject;
+ ContentLayout: TControl;
+begin
+ inherited ApplyStyle;
+ if FindStyleResource('content', ContentLayout) then
+ ContentLayout.OnPainting := DoContentPaint;
+ if FindStyleResource('selection', FSelection) then
+ FSelection.Visible := False;
+ if FindStyleResource('focusedselection', FFocusedSelection) then
+ FFocusedSelection.Visible := False;
+ T := FindStyleResource('AlternatingRowBackground');
+ if T is TBrushObject then
+ FOddFill.Assign(TBrushObject(T).Brush);
+ if T is TControl then
+ TControl(T).Visible := False;
+ UpdateSelection;
+end;
+
+procedure TCustomTreeView.FreeStyle;
+begin
+ inherited FreeStyle;
+ FSelection := nil;
+ FFocusedSelection := nil;
+ if FSelections <> nil then
+ FSelections.Clear;
+end;
+
+procedure TCustomTreeView.UpdateGlobalIndexes(const Force: Boolean);
+var
+ GlobalIdx: Integer;
+
+ procedure RecountItem(const AItem: TTreeViewItem);
+ var
+ I: Integer;
+ begin
+ if AItem <> nil then
+ begin
+ AItem.FGlobalIndex := GlobalIdx;
+ Inc(GlobalIdx);
+ FGlobalList.Add(AItem);
+ if AItem.IsExpanded then
+ for I := 0 to AItem.Count - 1 do
+ RecountItem(AItem.ItemByIndex(I));
+ end;
+ end;
+
+var
+ I: Integer;
+begin
+ if Force then
+ FGlobalList.Clear;
+ if (FGlobalList.Count = 0) and (Count > 0) then
+ begin
+ GlobalIdx := 0;
+ for I := 0 to Count - 1 do
+ RecountItem(ItemByIndex(I));
+ end;
+end;
+
+function CompareTreeItem(Item1, Item2: TFmxObject): Integer;
+var
+ LItem1TV: TCustomTreeView;
+begin
+ if (Item1 is TTreeViewItem) and (Item2 is TTreeViewItem) then
+ begin
+ LItem1TV := TTreeViewItem(Item1).TreeView;
+ if (LItem1TV <> nil) and Assigned(LItem1TV.OnCompare) then
+ Result := LItem1TV.OnCompare(TTreeViewItem(Item1),
+ TTreeViewItem(Item2))
+ else
+ Result := CompareText(TTreeViewItem(Item1).Text,
+ TTreeViewItem(Item2).Text);
+ end
+ else
+ Result := 0;
+end;
+
+procedure TCustomTreeView.SortItems;
+begin
+ if not FSorted then
+ Exit;
+ Content.Sort(CompareTreeItem);
+ InvalidateGlobalList;
+ UpdateGlobalIndexes;
+ UpdateVisibleItems;
+end;
+
+function TCustomTreeView.GetItemRect(const Item: TTreeViewItem): TRectF;
+begin
+ if Item <> nil then
+ begin
+ Result := TRectF.Create(0, 0, Item.Width, Item.Height);
+ Result.Offset(Content.AbsoluteToLocal(Item.LocaltoAbsolute(TPointF.Zero)));
+ end
+ else
+ Result := TRectF.Empty;
+end;
+
+function TCustomTreeView.GetInflatableItems: TList;
+begin
+ Result := FToInflate;
+end;
+
+function TCustomTreeView.GetItem(const AIndex: Integer): TFmxObject;
+begin
+ Result := Items[AIndex];
+end;
+
+procedure TCustomTreeView.UpdateSelection;
+var
+ I: Integer;
+ P: TPointF;
+ R: TRectF;
+ SelRects: array of TRectF;
+ Clone: TControl;
+ Item: TTreeViewItem;
+begin
+ if FSelection = nil then
+ Exit;
+ // calc rects
+ SetLength(SelRects, 0);
+ if GlobalCount > 0 then
+ for I := FFirstVisibleItem to FLastVisibleItem do
+ begin
+ Item := ItemByGlobalIndex(I);
+ if Item.IsSelected and Item.Visible then
+ begin
+ P := Item.LocaltoAbsolute(TPointF.Zero);
+ if (FSelection.Parent <> nil) and (FSelection.Parent is TControl) then
+ P := FSelection.ParentControl.AbsoluteToLocal(P);
+ R := RectF(P.X, P.Y, P.X + Item.Width,
+ P.Y + Item.Height);
+ if (Length(SelRects) > 0) and (I > 0) and ItemByGlobalIndex(I - 1).IsSelected then
+ SelRects[High(SelRects)] := UnionRect(R, SelRects[High(SelRects)])
+ else
+ begin
+ SetLength(SelRects, Length(SelRects) + 1);
+ SelRects[High(SelRects)] := R;
+ end;
+ end;
+ end;
+ // Create selection list
+ if FSelections = nil then
+ FSelections := TControlList.Create;
+ for I := 0 to FSelections.Count - 1 do
+ FSelections[I].DisposeOf;
+ FSelections.Clear;
+ // create selections
+ for I := 0 to Length(SelRects) - 1 do
+ begin
+ if Self.IsFocused and (FFocusedSelection <> nil) then
+ Clone := TControl(FFocusedSelection.Clone(Self))
+ else
+ Clone := TControl(FSelection.Clone(Self));
+ Clone.StyleName := string.Empty;
+ FSelections.Add(Clone);
+ Clone.Parent := FSelection.Parent;
+ end;
+ // hide if not needed
+ if Length(SelRects) < FSelections.Count then
+ for I := Length(SelRects) to FSelections.Count - 1 do
+ FSelections[I].Visible := False;
+ // align selections
+ for I := 0 to High(SelRects) do
+ begin
+ FSelections[I].Visible := True;
+ R := SelRects[I];
+ FSelections[I].SetBounds(R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top);
+ end;
+end;
+
+procedure TCustomTreeView.UpdateVisibleItems;
+var
+ First, Last, Mid: Integer;
+ R: TRectF;
+begin
+ First := 0;
+ Last := GlobalCount - 1;
+ while First < Last do
+ begin
+ Mid := First + (Last - First) div 2;
+ R := FGlobalList[Mid].AbsoluteRect;
+ R.TopLeft := AbsoluteToLocal(R.TopLeft);
+ R.BottomRight := AbsoluteToLocal(R.BottomRight);
+ if R.Bottom < 0 then
+ First := Mid + 1
+ else if R.Top > Height then
+ Last := Mid
+ else
+ Break;
+ end;
+ FFirstVisibleItem := First;
+ FLastVisibleItem := Last;
+ TTreeViewContent(Content).RecalcUpdateRect;
+ if FNoItemsContent <> nil then
+ FNoItemsContent.SetBounds(Content.Position.X, Content.Position.Y, Content.Width, Content.Height);
+end;
+
+procedure TCustomTreeView.ItemSizeMightHaveChanged(const AItem: TTreeViewItem);
+begin
+ if (ItemHeight = 0) and not AItem.FCustomHeight then
+ RealignContent;
+end;
+
+function TCustomTreeView.DoCalcContentBounds: TRectF;
+var
+ FirstItemHeight: Single;
+
+ function UpdateSize(const AItem: TTreeViewItem; const CurY: Single; const ContentWidth: Single;
+ var BottomRight: TPointF): Single;
+ var
+ I: Integer;
+ OffsetX: Single;
+ ItemSize: TSizeF;
+ TopLeft: TPointF;
+ MinWidth: Single;
+ begin
+ Result := CurY;
+ OffsetX := AItem.GetLevelOffset;
+ TopLeft := AItem.ParentControl.AbsoluteToLocal(Content.LocalToAbsolute(
+ TPointF.Create(OffsetX + AItem.Margins.Left, CurY + AItem.Margins.Top)));
+ if AItem.IsVisible or AItem.ShowInDesigner then
+ begin
+ AItem.UpdateExpandedButtonVisibility;
+ MinWidth := ContentWidth - OffsetX - AItem.Margins.Left - AItem.Margins.Right;
+
+ ItemSize := AItem.MinItemSize;
+ if FItemHeight > 0 then
+ ItemSize.cy := FItemHeight
+ else if AItem.FCustomHeight then
+ ItemSize.cy := AItem.Height
+ else if ItemSize.cy <= 0 then
+ begin
+ if SameValue(FirstItemHeight, 0, TEpsilon.Position) then
+ begin
+ AItem.Inflate;
+ if AItem.MinItemSize.Height > 0 then
+ FirstItemHeight := AItem.MinItemSize.Height
+ else
+ FirstItemHeight := TTreeViewItem.DefaultHeight;
+ end;
+ ItemSize.cy := FirstItemHeight;
+ end;
+
+ if ItemSize.Width <= 0 then
+ ItemSize.cx := MinWidth
+ else
+ ItemSize.cx := Max(ItemSize.cx, MinWidth);
+
+ Result := CurY + ItemSize.cy + AItem.Margins.Top + AItem.Margins.Bottom;
+ BottomRight.X := Max(BottomRight.X, OffsetX + ItemSize.cx + AItem.Margins.Left + AItem.Margins.Right);
+ BottomRight.Y := Max(BottomRight.Y, Result);
+ AItem.SetBounds(TopLeft.X, TopLeft.Y, AItem.Width, ItemSize.cy);
+
+ if (AItem.Count > 0) and AItem.IsExpanded then
+ for I := 0 to AItem.Count - 1 do
+ Result := UpdateSize(AItem.ItemByIndex(I), Result, ContentWidth, BottomRight);
+ end
+ else
+ AItem.SetBounds(TopLeft.X, TopLeft.Y, AItem.Width, 0);
+ end;
+
+ procedure AdjustWidth(const AItem: TTreeViewItem; const BottomRight: TPointF);
+ var
+ I: Integer;
+ P: TPointF;
+ begin
+ if AItem.IsVisible or AItem.ShowInDesigner then
+ begin
+ P := Content.LocalToAbsolute(BottomRight);
+ P := AItem.ParentControl.AbsoluteToLocal(Content.LocalToAbsolute(BottomRight));
+ AItem.SetWidth(P.X - AItem.Position.X);
+ if AItem.IsExpanded then
+ for I := 0 to AItem.Count - 1 do
+ AdjustWidth(AItem.ItemByIndex(I), BottomRight);
+ end;
+ end;
+
+var
+ I: Integer;
+ CurY: Single;
+ LLocalRect: TRectF;
+begin
+ FirstItemHeight := 0;
+ UpdateGlobalIndexes;
+ if (not IsUpdating) and (ContentLayout <> nil) then
+ begin
+ LLocalRect := ContentLayout.LocalRect;
+ Result := LLocalRect;
+ if Result.Bottom = Result.Top then
+ Result.Bottom := Result.Top + 1;
+ { content }
+ FCountExpanded := 0;
+ if Content <> nil then
+ begin
+ { Sort if need }
+ SortItems;
+ { align }
+ CurY := 0;
+ FTextLayout := TTextLayoutManager.DefaultTextLayout.Create;
+ try
+ for I := 0 to Count - 1 do
+ CurY := UpdateSize(ItemByIndex(I), CurY, LLocalRect.Width, Result.BottomRight);
+ finally
+ FreeAndNil(FTextLayout);
+ end;
+ for I := 0 to Count - 1 do
+ AdjustWidth(ItemByIndex(I), Result.BottomRight);
+ end;
+ UpdateVisibleItems;
+ end;
+end;
+
+procedure TCustomTreeView.ViewportPositionChange(const OldViewportPosition, NewViewportPosition: TPointF;
+ const ContentSizeChanged: Boolean);
+begin
+ inherited;
+ UpdateVisibleItems;
+ UpdateSelection;
+end;
+
+function TCustomTreeView.ItemByIndex(const Idx: Integer): TTreeViewItem;
+begin
+ if (Idx >= 0) and (Idx < Count) then
+ begin
+ Assert(Content.Controls[Idx] is TTreeViewItem);
+ Result := TTreeViewItem(Content.Controls[Idx]);
+ end
+ else
+ raise ERangeError.CreateFMT(sArgumentOutOfRange_Index, [Idx, Count]);
+end;
+
+function TCustomTreeView.ItemByGlobalIndex(const Idx: Integer): TTreeViewItem;
+begin
+ Result := FGlobalList[Idx];
+end;
+
+function TCustomTreeView.ObjectAtPoint(P: TPointF): IControl;
+var
+ Local, Abs: TPointF;
+ Inner: IControl;
+ function CheckScrollBar(ScrollBar: TScrollBar): Boolean;
+ var
+ R: TRectF;
+ begin
+ Result := (ScrollBar <> nil) and
+ (ScrollBar.Visible) and
+ (ScrollBar.Enabled) and
+ (ScrollBar.HitTest);
+ if Result then
+ begin
+ R := ScrollBar.AbsoluteRect;
+ Result := R.Contains(Abs);
+ end;
+ end;
+begin
+ Local := ScreenToLocal(P);
+ if LocalRect.Contains(Local) then
+ begin
+ Abs := LocalToAbsolute(Local);
+ if CheckScrollBar(VScrollBar) then
+ Result := IControl(VScrollBar).ObjectAtPoint(P)
+ else if CheckScrollBar(HScrollBar) then
+ Result := IControl(HScrollBar).ObjectAtPoint(P)
+ else
+ begin
+ if not Supports(ItemByPoint(Local.X, Local.Y), IControl, Result) then
+ Result := inherited ObjectAtPoint(P)
+ else
+ begin
+ Inner := Result.ObjectAtPoint(P);
+ if Inner <> nil then
+ Result := Inner
+ else
+ if CheckHitTest(HitTest) then
+ Result := Self
+ else
+ Result := inherited ObjectAtPoint(P);
+ end;
+ end;
+ end
+ else
+ Result := nil;
+end;
+
+function TCustomTreeView.ItemByPoint(const X, Y: Single): TTreeViewItem;
+var
+ I: Integer;
+ P: TPointF;
+ Item: TTreeViewItem;
+
+ function PointInItem(const Itm: TTreeViewItem; const Pt: TPointF): Boolean;
+ var
+ ItemPt: TPointF;
+ begin
+ ItemPt := Item.AbsoluteToLocal(Pt);
+ Result := Content.PointInObject(Pt.X, Pt.Y)
+ and (ItemPt.Y >= (0 - TouchTargetExpansion.Top)) and (ItemPt.Y <= (Itm.Height + TouchTargetExpansion.Bottom));
+ end;
+
+begin
+ P := LocaltoAbsolute(PointF(X, Y));
+ if GlobalCount > 0 then
+ for I := FFirstVisibleItem to FLastVisibleItem do
+ begin
+ Item := FGlobalList[I];
+ if not Item.Visible then
+ Continue;
+ if not IntersectRect(Item.UpdateRect, UpdateRect) then
+ Continue;
+ if PointInItem(Item, P) then
+ Exit(Item);
+ end;
+ Result := nil;
+end;
+
+function TCustomTreeView.ItemByText(const AText: string): TTreeViewItem;
+var
+ Item: TTreeViewItem;
+ I: Integer;
+begin
+ Result := nil;
+ for I := 0 to GlobalCount - 1 do
+ begin
+ Item := ItemByGlobalIndex(I);
+ if CompareText(AText, Item.Text) = 0 then
+ Exit(Item);
+ end;
+end;
+
+procedure TCustomTreeView.KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);
+
+ procedure SelectUpperItem;
+ var
+ I: Integer;
+ begin
+ if Selected.GlobalIndex > 0 then
+ begin
+ I := Selected.GlobalIndex - 1;
+ while (I >= 0) and (ItemByGlobalIndex(I).GlobalIndex > 0) and (not ItemByGlobalIndex(I).IsVisible) do
+ Dec(I);
+ if (I >= 0) and ItemByGlobalIndex(I).IsVisible then
+ Selected := ItemByGlobalIndex(I);
+ end;
+ end;
+
+ procedure SelectLowerItem;
+ var
+ I: Integer;
+ begin
+ if Selected.GlobalIndex < GlobalCount - 1 then
+ begin
+ I := Selected.GlobalIndex + 1;
+ while (I < GlobalCount) and (ItemByGlobalIndex(I).GlobalIndex < Pred(GlobalCount)) and (not ItemByGlobalIndex(I).IsVisible) do
+ Inc(I);
+ if (I < GlobalCount) and ItemByGlobalIndex(I).IsVisible then
+ Selected := ItemByGlobalIndex(I);
+ end;
+ end;
+
+var
+ LSelParentItem : TTreeViewItem;
+begin
+ inherited KeyDown(Key, KeyChar, Shift);
+ if (Count > 0) and (Selected <> nil) then
+ begin
+ case Key of
+ vkAdd:
+ Selected.Expand;
+ vkSubtract:
+ Selected.Collapse;
+ vkHome:
+ begin
+ Selected := ItemByGlobalIndex(0);
+ if not Selected.Visible then
+ SelectLowerItem;
+ end;
+ vkEnd:
+ begin
+ Selected := ItemByGlobalIndex(GlobalCount - 1);
+ if not Selected.Visible then
+ SelectUpperItem;
+ end;
+ vkUp:
+ SelectUpperItem;
+ vkDown:
+ SelectLowerItem;
+ vkLeft:
+ if Selected.IsExpanded then
+ Selected.Collapse
+ else
+ begin
+ LSelParentItem := Selected.ParentItem;
+ if LSelParentItem <> nil then
+ begin
+ Selected := LSelParentItem;
+ if not Selected.IsVisible then
+ SelectUpperItem;
+ end;
+ end;
+ vkRight:
+ if not Selected.IsExpanded then
+ Selected.Expand
+ else
+ if Selected.FContent.ControlsCount > 0 then
+ SelectLowerItem;
+ else
+ Exit;
+ end;
+ Key := 0;
+ end;
+end;
+
+procedure TCustomTreeView.KeyUp(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);
+begin
+ inherited;
+end;
+
+function TCustomTreeView.LocalPointToHoveredItemLocalPoint(const AX, AY: Single): TPointF;
+begin
+ if HoveredItem <> nil then
+ begin
+ Result := Self.LocalToScreen(PointF(AX, AY));
+ Result := HoveredItem.ScreenToLocal(Result);
+ end;
+end;
+
+procedure TCustomTreeView.DragOver(const Data: TDragObject; const Point: TPointF;
+ var Operation: TDragOperation);
+var
+ Obj: TTreeViewItem;
+begin
+ inherited ;
+ Obj := ItemByPoint(Point.X, Point.Y);
+ if Obj <> FDragItem then
+ begin
+ if FDragItem <> nil then
+ begin
+ FDragItem.DragLeave;
+ FDragItem.RemoveFreeNotify(Self);
+ end;
+ FDragItem := Obj;
+ if FDragItem <> nil then
+ begin
+ inherited DragLeave;
+ FDragItem.AddFreeNotify(Self);
+ FDragItem.DragEnter(Data, FDragItem.AbsoluteToLocal(LocalToAbsolute(Point)));
+ Operation := TDragOperation.Move;
+ end
+ else
+ begin
+ DragEnter(Data, Point);
+ Operation := TDragOperation.None;
+ end;
+ end
+ else
+ Operation := TDragOperation.Move;
+
+ if (Data.Source is TTreeViewItem) and (TTreeViewItem(Data.Source) = FDragItem) then
+ Operation := TDragOperation.None;
+end;
+
+procedure TCustomTreeView.DragDrop(const Data: TDragObject; const Point: TPointF);
+var
+ Allow: Boolean;
+ WasSelected: Boolean;
+ SourceItem, DestItem: TTreeViewItem;
+begin
+ if FDragItem <> nil then
+ begin
+ FDragItem.DragLeave;
+ FDragItem.RemoveFreeNotify(Self);
+ FDragItem := nil;
+ end;
+ DestItem := ItemByPoint(Point.X, Point.Y);
+ if (Data.Source is TTreeViewItem) and IsChild(TTreeViewItem(Data.Source)) then
+ begin
+ SourceItem := TTreeViewItem(Data.Source);
+ Allow := True;
+ if Assigned(OnDragChange) then
+ OnDragChange(SourceItem, DestItem, Allow);
+ if Allow and not SourceItem.IsChild(DestItem) then
+ begin
+ WasSelected := SourceItem.FIsSelected;
+ if DestItem <> nil then
+ begin
+ SourceItem.Parent := DestItem;
+ DestItem.Expand;
+ end
+ else
+ begin
+ SourceItem.Parent := Self;
+ SourceItem.Expand;
+ end;
+ SourceItem.IsSelected := WasSelected;
+ end;
+ end
+ else if DestItem <> nil then
+ DestItem.DragDrop(Data, DestItem.AbsoluteToLocal(LocalToAbsolute(Point)))
+ else
+ inherited DragDrop(Data, Point);
+end;
+
+procedure TCustomTreeView.DragLeave;
+begin
+ inherited;
+ if FDragItem <> nil then
+ begin
+ FDragItem.DragLeave;
+ FDragItem.RemoveFreeNotify(Self);
+ FDragItem := nil;
+ end;
+end;
+
+procedure TCustomTreeView.MouseClick(Button: TMouseButton; Shift: TShiftState;
+ X, Y: Single);
+var
+ P: TPointF;
+begin
+ inherited;
+ if (HoveredItem <> nil) and MouseInContentLayout(X, Y) then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseClick(Button, Shift, P.X, P.Y);
+ end;
+end;
+
+procedure TCustomTreeView.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
+
+ procedure TryMakeMultiSelect;
+ var
+ Item: TTreeViewItem;
+ begin
+ Item := ItemByPoint(X, Y);
+ if Item = nil then
+ Exit;
+
+ if ([ssCtrl, ssCommand] * Shift) <> [] then
+ Item.IsSelected := not Item.IsSelected
+ else if ssShift in Shift then
+ begin
+ SelectRange(Selected, Item);
+ Selected := Item;
+ end
+ else
+ begin
+ SelectRange(Item, Item);
+ Selected := Item;
+ end;
+ FFirstSelect := Item;
+ end;
+
+ procedure TryMakeSingleSelectAndStartDrag;
+ var
+ Item: TTreeViewItem;
+ begin
+ Item := ItemByPoint(X, Y);
+ if Item = nil then
+ Exit;
+ Selected := Item;
+ if AllowDrag then
+ FStartDrag := True;
+ end;
+
+var
+ P: TPointF;
+ IsMouseInContent: Boolean;
+begin
+ // It's important to make selection before base mouse down processing. Because developer can remove nodes from this
+ // event handler. In this case, if he removes selected items, new node on old place will be repeatedly selected again.
+ IsMouseInContent := MouseInContentLayout(X, Y);
+ if IsMouseInContent then
+ begin
+ // Making selection of Items
+ if Button = TMouseButton.mbLeft then
+ begin
+ if MultiSelect then
+ TryMakeMultiSelect
+ else
+ TryMakeSingleSelectAndStartDrag;
+ FMouseSelecting := True;
+ end;
+ end;
+
+ inherited MouseDown(Button, Shift, X, Y);
+
+ // Transfer Click to Hovered Item
+ if IsMouseInContent and (HoveredItem <> nil) then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseDown(Button, Shift, P.X, P.Y);
+ end;
+end;
+
+function TCustomTreeView.MouseInContentLayout(const X, Y: Single): Boolean;
+var
+ P: TPointF;
+begin
+ Result := False;
+ if ContentLayout <> nil then
+ begin
+ P := TPointF.Create(X, Y);
+ P := LocalToAbsolute(P);
+ Result := ContentLayout.AbsoluteRect.Contains(P);
+ end;
+end;
+
+procedure TCustomTreeView.MouseMove(Shift: TShiftState; X, Y: Single);
+var
+ Item: TTreeViewItem;
+ P: TPointF;
+ LBitMap: TBitmap;
+begin
+ inherited MouseMove(Shift, X, Y);
+ if MouseInContentLayout(X, Y) then
+ begin
+ Item := ItemByPoint(X, Y);
+
+ /// There is a case when Selected can be equal to nil
+ /// by doing additional check here, we are
+ /// saving ourselves from yet another AV error
+ if AllowDrag and FStartDrag and (Selected <> nil) then
+ begin
+ FStartDrag := False;
+ LBitMap := Selected.MakeScreenshot;
+ try
+ Root.BeginInternalDrag(Selected, LBitMap);
+ finally
+ LBitMap.Free;
+ end;
+ end;
+ SetHoveredItem(Item);
+ if HoveredItem <> nil then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseMove(Shift, P.X, P.Y);
+ end;
+ end;
+end;
+
+procedure TCustomTreeView.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
+var
+ P: TPointF;
+begin
+ inherited MouseUp(Button, Shift, X, Y);
+ FFirstSelect := nil;
+ FMouseSelecting := False;
+ if (HoveredItem <> nil) and MouseInContentLayout(X, Y) then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseUp(Button, Shift, P.X, P.Y);
+ end;
+ FStartDrag := False;
+end;
+
+procedure TCustomTreeView.MouseWheel(Shift: TShiftState; WheelDelta: Integer;
+ var Handled: Boolean);
+begin
+ inherited;
+ if HoveredItem <> nil then
+ HoveredItem.MouseWheel(Shift, WheelDelta, Handled);
+end;
+
+procedure TCustomTreeView.ChangeOrder;
+begin
+ inherited ChangeOrder;
+ InvalidateContentSize;
+ if not IsUpdating then
+ RealignContent;
+end;
+
+procedure TCustomTreeView.Clear;
+var
+ i: Integer;
+ TmpObj: TFmxObject;
+begin
+ BeginUpdate;
+ try
+ FToInflate.Clear;
+ if (Content <> nil) and (Count > 0) then
+ for i := Content.ControlsCount - 1 downto 0 do
+ if Content.Controls[i] is TTreeViewItem then
+ begin
+ TmpObj := Content.Controls[i];
+ TmpObj.DisposeOf;
+ end;
+ FSelected := nil;
+ FFirstVisibleItem := 0;
+ FLastVisibleItem := 0;
+ UpdateGlobalIndexes;
+ UpdateSelection;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TCustomTreeView.SelectRange(const Item1, Item2: TTreeViewItem);
+var
+ i: Integer;
+ FirstItemIndex: Integer;
+ LastItemIndex: Integer;
+begin
+ if (Item1 = nil) or (Item2 = nil) then
+ Exit;
+ FirstItemIndex := Min(Item1.GlobalIndex, Item2.GlobalIndex);
+ LastItemIndex := Max(Item1.GlobalIndex, Item2.GlobalIndex);
+
+ for i := 0 to FirstItemIndex - 1 do
+ ItemByGlobalIndex(i).Deselect;
+ for i := FirstItemIndex to LastItemIndex do
+ ItemByGlobalIndex(i).Select;
+ for i := LastItemIndex + 1 to GlobalCount - 1 do
+ ItemByGlobalIndex(i).Deselect;
+end;
+
+procedure TCustomTreeView.ClearSelection;
+var
+ Item: TTreeViewItem;
+begin
+ for Item in FGlobalList do
+ Item.IsSelected := False;
+end;
+
+procedure TCustomTreeView.SelectAll;
+var
+ Item: TTreeViewItem;
+begin
+ for Item in FGlobalList do
+ Item.IsSelected := True;
+end;
+
+procedure TCustomTreeView.DoChange;
+begin
+ if Assigned(FOnChange) and not (csLoading in ComponentState) then
+ FOnChange(Self);
+end;
+
+procedure TCustomTreeView.DoChangeCheck(const Item: TTreeViewItem);
+begin
+ if Assigned(FOnChangeCheck) then
+ FOnChangeCheck(Item);
+end;
+
+procedure TCustomTreeView.DoContentPaint(Sender: TObject; Canvas: TCanvas;
+ const ARect: TRectF);
+var
+ I: Integer;
+ Item: TTreeViewItem;
+ P: TPointF;
+ R: TRectF;
+begin
+ if (Content <> nil) and (ContentLayout <> nil) then
+ begin
+ if FAlternatingRowBackground then
+ begin
+ Canvas.Fill.Assign(FOddFill);
+ for I := FFirstVisibleItem to FLastVisibleItem do
+ begin
+ if Odd(I) then
+ begin
+ Item := ItemByGlobalIndex(I);
+ P := Item.LocalToAbsolute(PointF(0, 0));
+ P := TControl(Sender).AbsoluteToLocal(P);
+ R := RectF(0, P.Y, ContentLayout.Width, P.Y + Item.Height);
+ if not IntersectRect(R, ARect) then
+ Continue;
+ Canvas.FillRect(R, 0, 0, [], AbsoluteOpacity);
+ end;
+ end;
+ end;
+ end;
+end;
+
+procedure TCustomTreeView.DoEnter;
+begin
+ inherited DoEnter;
+ if Selected <> nil then
+ UpdateSelection;
+end;
+
+procedure TCustomTreeView.DoExit;
+begin
+ inherited DoExit;
+ if Selected <> nil then
+ UpdateSelection;
+end;
+
+procedure TCustomTreeView.DoInsertObject(Index: Integer; const AObject: TFmxObject);
+begin
+ if (Content <> nil) and (AObject is TTreeViewItem) then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ Content.InsertObject(Index, AObject);
+ if [csLoading, csDestroying] * ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(Images);
+ end
+ else
+ inherited DoInsertObject(Index, AObject);
+end;
+
+procedure TCustomTreeView.DoAddObject(const AObject: TFmxObject);
+begin
+ if (Content <> nil) and (AObject is TTreeViewItem) then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ Content.AddObject(AObject);
+ if [csLoading, csDestroying] * ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(Images);
+ end
+ else
+ inherited DoAddObject(AObject);
+end;
+
+procedure TCustomTreeView.DoRemoveObject(const AObject: TFmxObject);
+begin
+ if (AObject is TTreeViewItem) and (TTreeViewItem(AObject).TreeView = Self) then
+ begin
+ TTreeViewItem(AObject).Parent := nil;
+ if [csLoading, csDestroying] * ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(nil);
+ end
+ else
+ inherited DoRemoveObject(AObject);
+end;
+
+procedure TCustomTreeView.DoUpdateAniCalculations(const AAniCalculations: TScrollCalculations);
+begin
+ inherited;
+ AAniCalculations.AutoShowing := False;
+ AAniCalculations.Animation := False;
+ AAniCalculations.BoundsAnimation := False;
+end;
+
+function TCustomTreeView.IsAddToContent(const AObject: TFmxObject): Boolean;
+begin
+ Result := inherited IsAddToContent(AObject) and (AObject <> FNoItemsContent);
+end;
+
+function TCustomTreeView.IsOpaque: Boolean;
+begin
+ Result := True;
+end;
+
+procedure TCustomTreeView.ContentAddObject(const AObject: TFmxObject);
+begin
+ if not (AObject is TTreeViewItem) then
+ begin
+ if FNoItemsContent = nil then
+ begin
+ FNoItemsContent := TContent.Create(Self);
+ FNoItemsContent.Parent := Self;
+ FNoItemsContent.SetBounds(0, 0, 0, 0);
+ FNoItemsContent.Stored := False;
+ FNoItemsContent.Locked := True;
+ FNoItemsContent.HitTest := False;
+ end;
+ FNoItemsContent.AddObject(AObject)
+ end
+ else
+ begin
+ InvalidateContentSize;
+ InvalidateGlobalList;
+ if not TTreeViewItem(AObject).IsInflated then
+ FToInflate.Add(TTreeViewItem(AObject));
+ if not IsUpdating then
+ RealignContent;
+ end;
+end;
+
+procedure TCustomTreeView.ContentInsertObject(Index: Integer; const AObject: TFmxObject);
+begin
+ ContentAddObject(AObject);
+end;
+
+procedure TCustomTreeView.ContentRemoveObject(const AObject: TFmxObject);
+begin
+ inherited;
+ if AObject is TTreeViewItem and not IsUpdating then
+ begin
+ Realign;
+ UpdateVisibleItems;
+ UpdateSelection;
+ end;
+end;
+
+procedure TCustomTreeView.ContentBeforeRemoveObject(AObject: TFmxObject);
+begin
+ inherited;
+ if AObject is TTreeViewItem then
+ begin
+ TTreeViewItem(AObject).FIsSelected := False;
+ if AObject = FSelected then
+ FSelected := nil;
+ InvalidateContentSize;
+ InvalidateGlobalList;
+ FToInflate.Remove(TTreeViewItem(AObject));
+ end;
+end;
+
+procedure TCustomTreeView.SetSelected(const Value: TTreeViewItem);
+var
+ LFmxObject: TFmxObject;
+ P: TPointF;
+begin
+ if (FSelected <> Value) and not FSelectionChanging then
+ begin
+ FSelectionChanging := True;
+ try
+ if (FSelected <> nil) and not MultiSelect then
+ FSelected.IsSelected := False;
+
+ FSelected := Value;
+ if (FSelected <> nil) and (Content <> nil) then
+ begin
+ LFmxObject := FSelected.Parent;
+ while ((LFmxObject <> nil) and not (LFmxObject is TCustomTreeView)) do
+ begin
+ if LFmxObject is TTreeViewItem then
+ TTreeViewItem(LFmxObject).Expand;
+ LFmxObject := LFmxObject.Parent;
+ end;
+ if (Content <> nil) and (ContentLayout <> nil) and (VScrollBar <> nil) then
+ begin
+ P := ContentLayout.AbsoluteToLocal(FSelected.LocaltoAbsolute(TPointF.Zero));
+ if P.Y < 0 then
+ VScrollBar.Value := VScrollBar.Value + P.Y;
+ if P.Y + FSelected.Margins.Top + FSelected.Margins.Bottom + FSelected.Height > ContentLayout.Height then
+ VScrollBar.Value := VScrollBar.Value + (P.Y + FSelected.Margins.Top + FSelected.Margins.Bottom +
+ FSelected.Height - ContentLayout.Height);
+ end;
+ FSelected.IsSelected := True;
+ end;
+ finally
+ FSelectionChanging := False;
+ end;
+ DoChange;
+ end;
+end;
+
+procedure TCustomTreeView.Notification(AComponent: TComponent; Operation: TOperation);
+begin
+ inherited;
+ if Operation = opRemove then
+ begin
+ if AComponent = FSelected then
+ FSelected := nil;
+ if AComponent = FDragItem then
+ FDragItem := nil;
+ if AComponent = FHoveredItem then
+ FHoveredItem := nil;
+ if AComponent = FFirstSelect then
+ FFirstSelect := nil;
+ end;
+end;
+
+procedure TCustomTreeView.NotifyInflated;
+begin
+ RealignContent;
+end;
+
+procedure TCustomTreeView.SetItemHeight(const Value: Single);
+var
+ OldSetItemHeight, NewSetItemHeight: Boolean;
+ I: Integer;
+ procedure ClearHeight(Item: TTreeViewItem);
+ var
+ I: Integer;
+ begin
+ Item.Height := 0;
+ for I := 0 to Item.Count - 1 do
+ ClearHeight(Item.Items[I]);
+ end;
+begin
+ if FItemHeight <> Value then
+ begin
+ OldSetItemHeight := FItemHeight > 0;
+ FItemHeight := Value;
+ NewSetItemHeight := FItemHeight > 0;
+ if (OldSetItemHeight <> NewSetItemHeight) and (not NewSetItemHeight) then
+ begin
+ BeginUpdate;
+ try
+ for I := 0 to Count - 1 do
+ ClearHeight(Items[I]);
+ finally
+ EndUpdate
+ end;
+ end;
+ RealignContent;
+ end;
+end;
+
+procedure TCustomTreeView.CollapseAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ for i := Count - 1 downto 0 do
+ begin
+ Item := Items[i];
+ if Item <> nil then
+ Item.CollapseAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TCustomTreeView.ExpandAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ for i := Count - 1 downto 0 do
+ begin
+ Item := Items[i];
+ if Item <> nil then
+ Item.ExpandAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TCustomTreeView.SetCheckboxesVisibility(const Value: Boolean);
+var
+ i: Integer;
+ Item : TTreeViewItem;
+begin
+ if FShowCheckboxes <> Value then
+ begin
+ FShowCheckboxes := Value;
+ for i := 0 to Count - 1 do
+ begin
+ Item := Items[i];
+ if Item <> nil then
+ Item.UpdateCheckBoxVisibility;
+ end;
+ RealignContent;
+ end;
+end;
+
+function TCustomTreeView.GetTreeItem(Index: Integer): TTreeViewItem;
+begin
+ Result := ItemByIndex(Index);
+end;
+
+procedure TCustomTreeView.SetSorted(const Value: Boolean);
+begin
+ if FSorted <> Value then
+ begin
+ FSorted := Value;
+ RealignContent;
+ end;
+end;
+
+procedure TCustomTreeView.SetAllowDrag(const Value: Boolean);
+begin
+ if FAllowDrag <> Value then
+ begin
+ FAllowDrag := Value;
+ if FAllowDrag then
+ EnableDragHighlight := True;
+ end;
+end;
+
+procedure TCustomTreeView.SetAlternatingRowBackground(const Value: Boolean);
+begin
+ if FAlternatingRowBackground <> Value then
+ begin
+ FAlternatingRowBackground := Value;
+ Repaint;
+ end;
+end;
+
+procedure TCustomTreeView.SetHoveredItem(const Value: TTreeViewItem);
+begin
+ if FHoveredItem <> Value then
+ begin
+ try
+ if FHoveredItem <> nil then
+ begin
+ TComponent(FHoveredItem).RemoveFreeNotification(Self);
+ FHoveredItem.DoMouseLeave;
+ end;
+ finally
+ FHoveredItem := Value;
+ if FHoveredItem <> nil then
+ begin
+ TComponent(FHoveredItem).FreeNotification(Self);
+ FHoveredItem.DoMouseEnter;
+ end;
+ end;
+ end;
+end;
+
+function TCustomTreeView.GetCount: Integer;
+begin
+ Result := 0;
+ if Content <> nil then
+ Result := Content.ControlsCount;
+end;
+
+function TCustomTreeView.GetGlobalCount: Integer;
+begin
+ UpdateGlobalIndexes(False);
+ Result := FGlobalList.Count;
+end;
+
+procedure TCustomTreeView.InvalidateGlobalList;
+begin
+ FGlobalList.Clear;
+end;
+
+procedure TCustomTreeView.ItemExpanded(const Item: TTreeViewItem);
+var
+ I: Integer;
+ Child: TTreeViewItem;
+begin
+ InvalidateGlobalList;
+ if Item.IsExpanded then
+ for I := 0 to Item.Count - 1 do
+ begin
+ Child := Item.Items[I];
+ if not Child.IsInflated then
+ Child.Inflate;
+ end;
+ RealignContent;
+end;
+
+function TCustomTreeView.GetImages: TCustomImageList;
+begin
+ Result := TCustomImageList(FImageLink.Images);
+end;
+
+procedure TCustomTreeView.SetImages(const Value: TCustomImageList);
+begin
+ FImageLink.Images := Value;
+end;
+
+function TCustomTreeView.GetImageIndex: TImageIndex;
+begin
+ Result := -1;
+end;
+
+procedure TCustomTreeView.SetImageIndex(const Value: TImageIndex);
+begin
+ // none
+end;
+
+function TCustomTreeView.GetImageList: TBaseImageList;
+begin
+ Result := GetImages;
+end;
+
+procedure TCustomTreeView.Loaded;
+begin
+ inherited;
+ ImagesChanged;
+end;
+
+procedure TCustomTreeView.ImagesChanged;
+var
+ I: Integer;
+begin
+ if (FImages <> FImageLink.Images) and ([csDestroying, csLoading] * ComponentState = []) then
+ begin
+ FImages := TCustomImageList(FImageLink.Images);
+ BeginUpdate;
+ try
+ for I := 0 to Count - 1 do
+ Items[I].SetImages(FImages);
+ finally
+ EndUpdate;
+ end;
+ end;
+end;
+
+procedure TCustomTreeView.SetImageList(const Value: TBaseImageList);
+begin
+ ValidateInheritance(Value, TCustomImageList);
+ SetImages(TCustomImageList(Value));
+end;
+
+initialization
+ RegisterFmxClasses([TTreeView, TTreeViewItem]);
+end.
diff --git a/src/lib/FMX/DX 11.0/FMX.Graphics.pas b/src/lib/FMX/DX 11.0/FMX.Graphics.pas
new file mode 100644
index 0000000..a2dcf12
--- /dev/null
+++ b/src/lib/FMX/DX 11.0/FMX.Graphics.pas
@@ -0,0 +1,7439 @@
+{*******************************************************}
+{ }
+{ Delphi FireMonkey Platform }
+{ }
+{ Copyright(c) 2011-2021 Embarcadero Technologies, Inc. }
+{ All rights reserved }
+{ }
+{*******************************************************}
+
+unit FMX.Graphics;
+
+{$MINENUMSIZE 4}
+{$H+}
+
+interface
+
+{$SCOPEDENUMS ON}
+
+uses
+ System.Types, System.UITypes, System.Classes, System.Messaging, System.Generics.Collections, System.SysUtils,
+ FMX.Types, FMX.Surfaces, System.Math.Vectors;
+
+type
+ TCanvas = class;
+ TCanvasClass = class of TCanvas;
+ TBitmap = class;
+ TBitmapImage = class;
+ TTextSettings = class;
+
+{ TGradientPoint }
+
+ TGradientPoint = class(TCollectionItem)
+ private
+ FColor: TAlphaColor;
+ FOffset: Single;
+ procedure SetColor(const Value: TAlphaColor);
+ procedure SetOffset(const Value: Single);
+ public
+ procedure Assign(Source: TPersistent); override;
+ property IntColor: TAlphaColor read FColor write FColor;
+ published
+ property Color: TAlphaColor read FColor write SetColor;
+ property Offset: Single read FOffset write SetOffset nodefault;
+ end;
+
+{ TGradientPoints }
+
+ TGradientPoints = class(TCollection)
+ private
+ function GetPoint(Index: Integer): TGradientPoint;
+ protected
+ procedure Update(Item: TCollectionItem); override;
+ public
+ property Points[Index: Integer]: TGradientPoint read GetPoint; default;
+ end;
+
+{ TGradient }
+
+ TGradientStyle = (Linear, Radial);
+
+ TGradient = class(TPersistent)
+ private
+ FPoints: TGradientPoints;
+ FOnChanged: TNotifyEvent;
+ FStartPosition: TPosition;
+ FStopPosition: TPosition;
+ FStyle: TGradientStyle;
+ FRadialTransform: TTransform;
+ procedure SetStartPosition(const Value: TPosition);
+ procedure SetStopPosition(const Value: TPosition);
+ procedure PositionChanged(Sender: TObject);
+ procedure SetColor(const Value: TAlphaColor);
+ procedure SetColor1(const Value: TAlphaColor);
+ function IsLinearStored: Boolean;
+ procedure SetStyle(const Value: TGradientStyle);
+ function IsRadialStored: Boolean;
+ procedure SetRadialTransform(const Value: TTransform);
+ procedure SetPoints(const Value: TGradientPoints);
+ public
+ constructor Create;
+ destructor Destroy; override;
+ procedure Assign(Source: TPersistent); override;
+ procedure Change;
+ procedure ApplyOpacity(const AOpacity: Single);
+ function InterpolateColor(Offset: Single): TAlphaColor; overload;
+ function InterpolateColor(X, Y: Single): TAlphaColor; overload;
+ function Equal(const AGradient: TGradient): Boolean;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ { fast access }
+ property Color: TAlphaColor write SetColor;
+ property Color1: TAlphaColor write SetColor1;
+ published
+ property Points: TGradientPoints read FPoints write SetPoints;
+ property Style: TGradientStyle read FStyle write SetStyle default TGradientStyle.Linear;
+ { linear }
+ property StartPosition: TPosition read FStartPosition write SetStartPosition stored IsLinearStored;
+ property StopPosition: TPosition read FStopPosition write SetStopPosition stored IsLinearStored;
+ { radial }
+ property RadialTransform: TTransform read FRadialTransform write SetRadialTransform stored IsRadialStored;
+ end;
+
+{ TBrushResource }
+
+ TBrush = class;
+ TBrushObject = class;
+
+ TBrushResource = class(TInterfacedPersistent, IFreeNotification)
+ private
+ FStyleResource: TBrushObject;
+ FStyleLookup: string;
+ FOnChanged: TNotifyEvent;
+ function GetBrush: TBrush;
+ procedure SetStyleResource(const Value: TBrushObject);
+ function GetStyleLookup: string;
+ procedure SetStyleLookup(const Value: string);
+ { IFreeNotification }
+ procedure FreeNotification(AObject: TObject);
+ public
+ destructor Destroy; override;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ procedure Assign(Source: TPersistent); override;
+ property Brush: TBrush read GetBrush;
+ published
+ property StyleResource: TBrushObject read FStyleResource write SetStyleResource stored False;
+ property StyleLookup: string read GetStyleLookup write SetStyleLookup;
+ end;
+
+{ TBrushBitmap }
+
+ TWrapMode = (Tile, TileOriginal, TileStretch);
+
+ TBrushBitmap = class(TInterfacedPersistent)
+ private
+ FOnChanged: TNotifyEvent;
+ FBitmap: TBitmap;
+ FWrapMode: TWrapMode;
+ procedure SetWrapMode(const Value: TWrapMode);
+ procedure SetBitmap(const Value: TBitmap);
+ function GetBitmapImage: TBitmapImage;
+ protected
+ procedure DoChanged; virtual;
+ public
+ constructor Create;
+ destructor Destroy; override;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ procedure Assign(Source: TPersistent); override;
+ published
+ property Bitmap: TBitmap read FBitmap write SetBitmap;
+ /// Image to be used by the brush.
+ property Image: TBitmapImage read GetBitmapImage;
+ property WrapMode: TWrapMode read FWrapMode write SetWrapMode;
+ end;
+
+{ TBrush }
+
+ TBrushKind = (None, Solid, Gradient, Bitmap, Resource);
+
+ TBrush = class(TPersistent)
+ private
+ FColor: TAlphaColor;
+ FKind: TBrushKind;
+ FOnChanged: TNotifyEvent;
+ FGradient: TGradient;
+ FDefaultKind: TBrushKind;
+ FDefaultColor: TAlphaColor;
+ FResource: TBrushResource;
+ FBitmap: TBrushBitmap;
+ FOnGradientChanged: TNotifyEvent;
+ procedure SetColor(const Value: TAlphaColor);
+ procedure SetKind(const Value: TBrushKind);
+ procedure SetGradient(const Value: TGradient);
+ function IsColorStored: Boolean;
+ function IsGradientStored: Boolean;
+ function GetColor: TAlphaColor;
+ function IsKindStored: Boolean;
+ procedure SetResource(const Value: TBrushResource);
+ function IsResourceStored: Boolean;
+ function IsBitmapStored: Boolean;
+ protected
+ procedure GradientChanged(Sender: TObject);
+ procedure ResourceChanged(Sender: TObject);
+ procedure BitmapChanged(Sender: TObject);
+ public
+ constructor Create(const ADefaultKind: TBrushKind; const ADefaultColor: TAlphaColor);
+ destructor Destroy; override;
+ procedure Assign(Source: TPersistent); override;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ property OnGradientChanged: TNotifyEvent read FOnGradientChanged write FOnGradientChanged;
+ property DefaultColor: TAlphaColor read FDefaultColor write FDefaultColor;
+ property DefaultKind: TBrushKind read FDefaultKind write FDefaultKind;
+ published
+ property Color: TAlphaColor read GetColor write SetColor stored IsColorStored;
+ property Bitmap: TBrushBitmap read FBitmap write FBitmap stored IsBitmapStored;
+ property Kind: TBrushKind read FKind write SetKind stored IsKindStored;
+ property Gradient: TGradient read FGradient write SetGradient stored IsGradientStored;
+ property Resource: TBrushResource read FResource write SetResource stored IsResourceStored;
+ end;
+
+ TStrokeCap = (Flat, Round);
+
+ TStrokeJoin = (Miter, Round, Bevel);
+
+ TStrokeDash = (Solid, Dash, Dot, DashDot, DashDotDot, Custom);
+
+ TDashArray = TArray;
+
+ TStrokeBrush = class(TBrush)
+ public type
+ TDashData = record
+ DashArray: TDashArray;
+ DashOffset: Single;
+ constructor Create(const ADashArray: TDashArray; ADashOffset: Single);
+ end;
+
+ TDashDevice = (Screen, Printer);
+ TStdDashes = array [TDashDevice, TStrokeDash] of TDashData;
+ private class var
+ FStdDash: TStdDashes;
+ FStdDashCreated: Boolean;
+ private
+ FJoin: TStrokeJoin;
+ FThickness: Single;
+ FCap: TStrokeCap;
+ FDash: TStrokeDash;
+ FDashArray: TDashArray;
+ FDashOffset: Single;
+ function IsThicknessStored: Boolean;
+ procedure SetCap(const Value: TStrokeCap);
+ procedure SetDash(const Value: TStrokeDash);
+ procedure SetJoin(const Value: TStrokeJoin);
+ procedure SetThickness(const Value: Single);
+ function GetDashArray: TDashArray;
+ class function GetStdDash(const Device: TDashDevice; const Dash: TStrokeDash): TDashData; static;
+ procedure ReadCustomDash(AStream: TStream);
+ procedure WriteCustomDash(AStream: TStream);
+ protected
+ procedure DefineProperties(Filer: TFiler); override;
+ public
+ constructor Create(const ADefaultKind: TBrushKind; const ADefaultColor: TAlphaColor); reintroduce;
+ procedure Assign(Source: TPersistent); override;
+ procedure SetCustomDash(const Dash: array of Single; Offset: Single);
+ property DashArray: TDashArray read GetDashArray;
+ property DashOffset: Single read FDashOffset;
+ class property StdDash[const Device: TDashDevice; const Dash: TStrokeDash]: TDashData read GetStdDash;
+ published
+ property Thickness: Single read FThickness write SetThickness stored IsThicknessStored nodefault;
+ property Cap: TStrokeCap read FCap write SetCap default TStrokeCap.Flat;
+ property Dash: TStrokeDash read FDash write SetDash default TStrokeDash.Solid;
+ property Join: TStrokeJoin read FJoin write SetJoin default TStrokeJoin.Miter;
+ end;
+
+ IFMXSystemFontService = interface(IInterface)
+ ['{62017F22-ADF1-44D9-A21D-796D8C7F3CF0}']
+ function GetDefaultFontFamilyName: string;
+ function GetDefaultFontSize: Single;
+ end;
+
+{ TFont }
+
+ TFontClass = class of TFont;
+
+ TFontWeight = (Thin, UltraLight, Light, SemiLight, Regular, Medium, Semibold, Bold, UltraBold, Black, UltraBlack);
+
+ ///
+ /// Font weight type helper
+ ///
+ TFontWeightHelper = record helper for TFontWeight
+ ///
+ /// Checks wherever current weight value is TFontWeight.Regular
+ ///
+ function IsRegular: Boolean;
+ end;
+
+ TFontSlant = (Regular, Italic, Oblique);
+
+ ///
+ /// Font slant type helper
+ ///
+ TFontSlantHelper = record helper for TFontSlant
+ ///
+ /// Checks wherever current slant value is TFontSlant.Regular
+ ///
+ function IsRegular: Boolean;
+ end;
+
+ TFontStretch = (UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, Regular, SemiExpanded, Expanded,
+ ExtraExpanded, UltraExpanded);
+
+ ///
+ /// Font stretch type helper
+ ///
+ TFontStretchHelper = record helper for TFontStretch
+ ///
+ /// Checks wherever current stretch value is TFontStretch.Regular
+ ///
+ function IsRegular: Boolean;
+ end;
+
+ ///
+ /// Extended font style based on TFontStyles. Support multi-weight and multi-stretch fonts
+ ///
+ TFontStyleExt = record
+ ///
+ /// Set of regular TFontStyle. May contains any TFontStyle value but TFont will process only
+ /// fsOutline and fsStrikeOut values
+ ///
+ SimpleStyle: TFontStyles;
+ ///
+ /// Default font weight value
+ ///
+ Weight: TFontWeight;
+ ///
+ /// Default font slant value
+ ///
+ Slant: TFontSlant;
+ ///
+ /// Default font stretch value
+ ///
+ Stretch: TFontStretch;
+
+ ///
+ /// Common extended font style constructor.
+ /// Initialy new style is initializing using AOtherStyles values. After that AWeight, ASlant
+ /// and AStretch values are applying
+ ///
+ ///
+ /// Basicaly bsBold or fsItalic values in AOtherStyles are ignoring. Because after creating result from the set of
+ /// TFontStyle values system will set styles from AWeight, ASlant and AStretch which
+ /// will replace style values.
+ ///
+ class function Create(const AWeight: TFontWeight = TFontWeight.Regular;
+ const AStant: TFontSlant = TFontSlant.Regular; const AStretch: TFontStretch = TFontStretch.Regular;
+ const AOtherStyles: TFontStyles = []): TFontStyleExt; overload; static; inline;
+ /// Constructor that allows to create extended style from the regular TFontStyles
+ class function Create(const AStyle: TFontStyles): TFontStyleExt; overload; static; inline;
+ /// Default style with regular parameters without any decorations
+ class function Default: TFontStyleExt; static; inline;
+ // Operators
+ /// Overriding equality check operator
+ class operator Equal(const A, B: TFontStyleExt): Boolean;
+ /// Overriding inequality check operator
+ class operator NotEqual(const A, B: TFontStyleExt): Boolean;
+ /// Overriding implicit conversion to TFontStyles
+ class operator Implicit(const AStyle: TFontStyleExt): TFontStyles;
+ /// Overriding addition operator with both extended styles
+ class operator Add(const A, B: TFontStyleExt): TFontStyleExt;
+ /// Overriding addition operator with single font style item
+ class operator Add(const A: TFontStyleExt; const B: TFontStyle): TFontStyleExt;
+ /// Overriding addition operator with set of font styles
+ class operator Add(const A: TFontStyleExt; const B: TFontStyles): TFontStyleExt;
+ /// Overriding subtraction operator with single font style item
+ class operator Subtract(const A: TFontStyleExt; const B: TFontStyle): TFontStyleExt;
+ /// Overriding subtraction operator with set of font styles
+ class operator Subtract(const A: TFontStyleExt; const B: TFontStyles): TFontStyleExt;
+ /// Overriding check whether TFontStyle contains in TFontStyleExt
+ class operator In(const A: TFontStyle; const B: TFontStyleExt): Boolean;
+ /// Overriding Multiply set of TFontStyle to the TFontStyleExt
+ class operator Multiply(const A: TFontStyles; const B: TFontStyleExt): TFontStyles;
+
+ ///
+ /// Overriding Multiply set of TFontStyle to the TFontStyleExt
+ ///
+ function IsRegular: Boolean;
+ end;
+
+ TFont = class(TPersistent)
+ private const
+ DefaultFontSize: Single = 12.0;
+ DefaultFontFamily = 'Tahoma';
+ MaxFontSize: Single = 512.0;
+ public
+ class var FontService: IFMXSystemFontService;
+ private
+ FSize: Single;
+ FFamily: TFontName;
+ FStyleExt: TFontStyleExt;
+ FUpdating: Boolean;
+ FChanged: Boolean;
+ FOnChanged: TNotifyEvent;
+ procedure SetFamily(const Value: TFontName);
+ procedure SetSize(const Value: Single);
+ function GetStyle: TFontStyles;
+ procedure SetStyle(const Value: TFontStyles);
+ procedure SetStyleExt(const Value: TFontStyleExt);
+ procedure ReadStyleExt(AStream: TStream);
+ procedure WriteStyleExt(AStream: TStream);
+ protected
+ procedure DefineProperties(Filer: TFiler); override;
+ function DefaultFamily: string; virtual;
+ function DefaultSize: Single; virtual;
+ procedure DoChanged; virtual;
+ public
+ constructor Create;
+ procedure AfterConstruction; override;
+ procedure Change;
+ procedure Assign(Source: TPersistent); override;
+ procedure SetSettings(const AFamily: string; const ASize: Single; const AStyle: TFontStyleExt);
+ function Equals(Obj: TObject): Boolean; override;
+ function IsFamilyStored: Boolean;
+ function IsSizeStored: Boolean;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ ///
+ /// Refrects current font style, including underline and strikeout
+ ///
+ property StyleExt: TFontStyleExt read FStyleExt write SetStyleExt;
+ published
+ property Family: TFontName read FFamily write SetFamily stored IsFamilyStored;
+ property Size: Single read FSize write SetSize stored IsSizeStored nodefault;
+ property Style: TFontStyles read GetStyle write SetStyle stored False;
+ end;
+
+{ TBitmapCodec }
+
+ TBitmapCodecSaveParams = record
+ // encode quality 0..100
+ Quality: Integer;
+ end;
+ PBitmapCodecSaveParams = ^TBitmapCodecSaveParams;
+
+ TCustomBitmapCodec = class abstract
+ public
+ class function GetImageSize(const AFileName: string): TPointF; virtual; abstract;
+ class function IsValid(const AStream: TStream): Boolean; virtual; abstract;
+ function LoadFromFile(const AFileName: string; const ABitmap: TBitmapSurface;
+ const AMaxSizeLimit: Cardinal = 0): Boolean; virtual; abstract;
+ function LoadThumbnailFromFile(const AFileName: string; const AFitWidth, AFitHeight: Single;
+ const UseEmbedded: Boolean; const ABitmap: TBitmapSurface): Boolean; virtual; abstract;
+ function LoadFromStream(const AStream: TStream; const ABitmap: TBitmapSurface;
+ const AMaxSizeLimit: Cardinal = 0): Boolean; virtual; abstract;
+ function SaveToFile(const AFileName: string; const ABitmap: TBitmapSurface; const ASaveParams: PBitmapCodecSaveParams = nil): Boolean; virtual; abstract;
+ function SaveToStream(const AStream: TStream; const ABitmap: TBitmapSurface; const AExtension: string;
+ const ASaveParams: PBitmapCodecSaveParams = nil): Boolean; virtual; abstract;
+ end;
+ TCustomBitmapCodecClass = class of TCustomBitmapCodec;
+
+{ TBitmapCodecManager }
+
+ EBitmapCodecManagerException = class(Exception);
+
+ TBitmapCodecManager = class sealed
+ private type
+ TCodecDescriptor = record
+ Extension: string;
+ Description: string;
+ CodecClass: TCustomBitmapCodecClass;
+ CanSave: Boolean;
+ function ToFilterString: string;
+ end;
+ strict private
+ class var FCodecsDescriptors: TList;
+ class function SameExtension(const ALeft, ARight: string): Boolean;
+ class function FindCodecClass(const AFileExtension: string; var ACodecClass: TCustomBitmapCodecClass): Boolean;
+ class function FindWritableCodecClass(const AFileExtension: string; var ACodecClass: TCustomBitmapCodecClass): Boolean;
+ class function GuessCodecClass(const AFileExtension: string): TCustomBitmapCodecClass;
+ class function GetCodecsDescriptors: TList; static;
+ class property CodecsDescriptors: TList read GetCodecsDescriptors;
+ public
+ // Reserved for internal use only - do not call directly!
+ class procedure UnInitialize;
+
+ { Registration and Unregistration }
+
+ /// Register a bitmap codec class with a specified file extension and description.
+ /// If codec with specified AFileExtension was already registered or AFileExtension is empty
+ /// or ACodecClass is nil will raise EBitmapCodecManagerException.
+ class procedure RegisterBitmapCodecClass(const AFileExtension, ADescription: string; const ACanSave: Boolean;
+ const ACodecClass: TCustomBitmapCodecClass);
+ /// Unregisters codec with specified file extension AFileExtension.
+ class procedure UnregisterBitmapCodecClass(const AFileExtension: string);
+
+ { Helpers }
+
+ /// Returns list of supported image file extensions separated by ';'.
+ class function GetFileTypes: string;
+ /// Returns filter presentation of supported image types for TXXXDialog components.
+ class function GetFilterString: string;
+ /// Returns true, if codec with specified file extension was registered.
+ class function CodecExists(const AFileName: string): Boolean; overload;
+ /// Returns image size for specified file by AFileName.
+ class function GetImageSize(const AFileName: string): TPointF;
+
+ { Loading }
+
+ /// Loads image from file by AFileName to Bitmap surface ABitmap. If image successfully
+ /// loaded, it returns true, otherwise - false.
+ /// If ABitmap is nil, it will raise EBitmapCodecManagerException.
+ class function LoadFromFile(const AFileName: string; const ABitmap: TBitmapSurface;
+ const AMaxSizeLimit: Cardinal = 0): Boolean;
+ /// Loads image thumbnail with specified size AFitWidth and AFitHeight by file name
+ /// AFileName. If image successfully loaded, it returns true, otherwise - false.
+ /// If ABitmap is nil, it will raise EBitmapCodecManagerException.
+ class function LoadThumbnailFromFile(const AFileName: string; const AFitWidth, AFitHeight: Single;
+ const AUseEmbedded: Boolean; const ABitmap: TBitmapSurface): Boolean;
+ /// Loads image from the stream AStream. If image successfully loaded, it returns true,
+ /// otherwise - false.
+ /// If ABitmap or AStream is nil, it will raise EBitmapCodecManagerException.
+ class function LoadFromStream(const AStream: TStream; const ABitmap: TBitmapSurface;
+ const AMaxSizeLimit: Cardinal = 0): Boolean;
+
+ { Saving }
+
+ /// Saves bitmap ABitmap to the stream AStream with using codec with specified extension
+ /// AExtension. Optionally, you can specify save options. For example, the quality. If image successfully
+ /// saved to the stream, it returns true, otherwise - false.
+ /// If ABitmap or AStream is nil, it will raise EBitmapCodecManagerException.
+ class function SaveToStream(const AStream: TStream; const ABitmap: TBitmapSurface; const AExtension: string;
+ const ASaveParams: PBitmapCodecSaveParams = nil): Boolean; overload;
+ /// Saves bitmap ABitmap to the file AFileName . It uses codec extracted by FileName
+ /// extension. Optionally, you can specify save options. For example, the quality. If image successfully saved to
+ /// the file, it returns true, otherwise - false.
+ /// If ABitmap is nil, it will raise EBitmapCodecManagerException.
+ class function SaveToFile(const AFileName: string; const ABitmap: TBitmapSurface;
+ const ASaveParams: PBitmapCodecSaveParams = nil): Boolean;
+ end;
+
+{ TImageTypeChecker }
+
+ /// Helper class for BitmapCodec.
+ TImageTypeChecker = class
+ private type
+ TImageData = record
+ DataType: string;
+ Length: Integer;
+ Header: array [0..3] of Byte;
+ end;
+ public
+ /// Analyzes the header to guess the image format of he given file.
+ class function GetType(const AFileName: string): string; overload;
+ /// Analyzes the header to guess the image format of he given stream.
+ class function GetType(const AData: TStream): string; overload;
+ end;
+
+{ TBitmap }
+
+ IBitmapObject = interface(IFreeNotificationBehavior)
+ ['{5C17D001-47C1-462F-856D-8358B7B2C842}']
+ function GetBitmap: TBitmap;
+ property Bitmap: TBitmap read GetBitmap;
+ end;
+
+ TBitmapData = record
+ private
+ FPixelFormat: TPixelFormat;
+ FWidth: Integer;
+ FHeight: Integer;
+ function GetBytesPerPixel: Integer;
+ function GetBytesPerLine: Integer;
+ public
+ Data: Pointer;
+ Pitch: Integer;
+ constructor Create(const AWidth, AHeight: Integer; const APixelFormat: TPixelFormat);
+ function GetPixel(const X, Y: Integer): TAlphaColor;
+ procedure SetPixel(const X, Y: Integer; const AColor: TAlphaColor);
+ procedure Copy(const Source: TBitmapData);
+ // Access to scanline in PixelFormat
+ function GetScanline(const I: Integer): Pointer;
+ function GetPixelAddr(const I, J: Integer): Pointer;
+ property PixelFormat: TPixelFormat read FPixelFormat;
+ property BytesPerPixel: Integer read GetBytesPerPixel;
+ property BytesPerLine: Integer read GetBytesPerLine;
+ property Width: Integer read FWidth;
+ property Height: Integer read FHeight;
+ end;
+
+ TMapAccess = (Read, Write, ReadWrite);
+
+ TBitmapImage = class
+ private
+ FRefCount: Integer;
+ FHandle: THandle;
+ FCanvasClass: TCanvasClass;
+ FWidth: Integer;
+ FHeight: Integer;
+ FBitmapScale: Single;
+ FPixelFormat: TPixelFormat;
+ procedure CreateHandle;
+ procedure FreeHandle;
+ function GetCanvasClass: TCanvasClass;
+ public
+ constructor Create;
+ procedure IncreaseRefCount; inline;
+ procedure DecreaseRefCount;
+ property RefCount: Integer read FRefCount;
+ property CanvasClass: TCanvasClass read GetCanvasClass;
+ property Handle: THandle read FHandle;
+ property BitmapScale: Single read FBitmapScale;
+ property PixelFormat: TPixelFormat read FPixelFormat;
+ property Height: Integer read FHeight;
+ property Width: Integer read FWidth;
+ end;
+
+ TBitmap = class(TInterfacedPersistent, IStreamPersist)
+ private
+ FImage: TBitmapImage;
+ FCanvas: TCanvas;
+ FMapped: Boolean;
+ FMapAccess: TMapAccess;
+ FOnChange: TNotifyEvent;
+ function GetBytesPerLine: Integer;
+ function GetBytesPerPixel: Integer;
+ function GetCanvas: TCanvas;
+ function GetPixelFormat: TPixelFormat;
+ function GetImage: TBitmapImage;
+ function GetHeight: Integer;
+ function GetWidth: Integer;
+ function GetBitmapScale: Single;
+ function GetHandle: THandle;
+ procedure SetWidth(const Value: Integer);
+ procedure SetHeight(const Value: Integer);
+ procedure SetBitmapScale(const Scale: Single);
+ procedure ReadBitmap(Stream: TStream);
+ procedure WriteBitmap(Stream: TStream);
+ function GetCanvasClass: TCanvasClass;
+ function GetBounds: TRect;
+ function GetSize: TSize;
+ function GetBoundsF: TRectF;
+ protected
+ procedure CreateNewReference;
+ procedure CopyToNewReference;
+ procedure DestroyResources; virtual;
+ procedure BitmapChanged; virtual;
+ procedure AssignFromSurface(const Source: TBitmapSurface);
+ procedure DoChange; virtual;
+ protected
+ procedure AssignTo(Dest: TPersistent); override;
+ procedure DefineProperties(Filer: TFiler); override;
+ procedure ReadStyleLookup(Reader: TReader); virtual;
+ public
+ constructor Create; overload; virtual;
+ constructor Create(const AWidth, AHeight: Integer); overload; virtual;
+ constructor CreateFromStream(const AStream: TStream); virtual;
+ constructor CreateFromFile(const AFileName: string); virtual;
+ constructor CreateFromBitmapAndMask(const Bitmap, Mask: TBitmap);
+ destructor Destroy; override;
+ procedure Assign(Source: TPersistent); override;
+ function EqualsBitmap(const Bitmap: TBitmap): Boolean;
+ procedure SetSize(const ASize: TSize); overload;
+ procedure SetSize(const AWidth, AHeight: Integer); overload;
+ procedure CopyFromBitmap(const Source: TBitmap); overload;
+ procedure CopyFromBitmap(const Source: TBitmap; SrcRect: TRect; DestX, DestY: Integer); overload;
+
+ function IsEmpty: Boolean;
+ function HandleAllocated: Boolean;
+ procedure FreeHandle;
+
+ procedure Clear(const AColor: TAlphaColor); virtual;
+ procedure ClearRect(const ARect: TRectF; const AColor: TAlphaColor = 0);
+ procedure Rotate(const Angle: Single);
+ procedure Resize(const AWidth, AHeight: Integer);
+ procedure FlipHorizontal;
+ procedure FlipVertical;
+ procedure InvertAlpha;
+ procedure ReplaceOpaqueColor(const Color: TAlphaColor);
+
+ function CreateMask: PByteArray;
+ procedure ApplyMask(const Mask: PByteArray; const DstX: Integer = 0; const DstY: Integer = 0);
+
+ function CreateThumbnail(const AWidth, AHeight: Integer): TBitmap;
+
+ function Map(const Access: TMapAccess; var Data: TBitmapData): Boolean;
+ procedure Unmap(var Data: TBitmapData);
+
+ procedure LoadFromFile(const AFileName: string);
+ procedure LoadThumbnailFromFile(const AFileName: string; const AFitWidth, AFitHeight: Single;
+ const UseEmbedded: Boolean = True);
+ procedure SaveToFile(const AFileName: string; const SaveParams: PBitmapCodecSaveParams = nil);
+ procedure LoadFromStream(Stream: TStream);
+ procedure SaveToStream(Stream: TStream);
+
+ property Canvas: TCanvas read GetCanvas;
+ property CanvasClass: TCanvasClass read GetCanvasClass;
+ property Image: TBitmapImage read GetImage;
+ property Handle: THandle read GetHandle;
+ property PixelFormat: TPixelFormat read GetPixelFormat;
+ property BytesPerPixel: Integer read GetBytesPerPixel;
+ property BytesPerLine: Integer read GetBytesPerLine;
+ /// Helper property that returns bitmap bounds in TRect
+ property Bounds: TRect read GetBounds;
+ /// Helper property that returns bitmap bounds in TRectF
+ property BoundsF: TRectF read GetBoundsF;
+ property BitmapScale: Single read GetBitmapScale write SetBitmapScale;
+ property Width: Integer read GetWidth write SetWidth;
+ property Height: Integer read GetHeight write SetHeight;
+ /// Helper property that returns dimention of bitmap as TSize
+ property Size: TSize read GetSize write SetSize;
+ property OnChange: TNotifyEvent read FOnChange write FOnChange;
+ end;
+
+{ TPathData }
+
+ TPathData = class;
+
+ IPathObject = interface(IFreeNotificationBehavior)
+ ['{8C014863-4F69-48F2-9CF7-E336BFD3F06B}']
+ function GetPath: TPathData;
+ property Path: TPathData read GetPath;
+ end;
+
+ TPathPointKind = (MoveTo, LineTo, CurveTo, Close);
+
+ TPathPoint = packed record
+ Kind: TPathPointKind;
+ Point: TPointF;
+ class function Create(const AKind: TPathPointKind; const APoint: TPointF): TPathPoint; static; inline;
+ class operator Equal(const APoint1, APoint2: TPathPoint): Boolean;
+ class operator NotEqual(const APoint1, APoint2: TPathPoint): Boolean;
+ end;
+
+ TPathObject = class;
+
+ TPathData = class(TInterfacedPersistent, IFreeNotification)
+ private const
+ MinFlatness = 0.05;
+ public const
+ DefaultFlatness = 0.25;
+ private
+ FOnChanged: TNotifyEvent;
+ FStyleResource: TObject;
+ FStyleLookup: string;
+ FStartPoint: TPointF;
+ FPathData: TList;
+ FRecalcBounds: Boolean;
+ FBounds: TRectF;
+ function GetPathString: string;
+ procedure SetPathString(const Value: string);
+ procedure CalculateBezierCoefficients(const Bezier: TCubicBezier; out AX, BX, CX, AY, BY, CY: Single);
+ function PointOnBezier(const StartPoint: TPointF; const AX, BX, CX, AY, BY, CY, T: Single): TPointF;
+ function CreateBezier(const Bezier: TCubicBezier; const PointCount: Integer): TPolygon;
+ procedure AddArcSvgPart(const Center, Radius: TPointF; StartAngle, SweepAngle: Single);
+ procedure AddArcSvg(const P1, Radius: TPointF; Angle: Single; const LargeFlag, SweepFlag: Boolean; const P2: TPointF);
+ function GetStyleLookup: string;
+ procedure SetStyleLookup(const Value: string);
+ function GetPath: TPathData;
+ function GetCount: Integer; inline;
+ function GetPoint(AIndex: Integer): TPathPoint; inline;
+ function GetTokensFromString(const PathString: string; var Pos: Integer): string;
+ function GetNumberFromString(const PathString: string; var Pos: Integer): string;
+ function GetPointFromString(const PathString: string; var Pos: Integer): TPointF;
+ function HasRelativeOffset(const PathString: string; const Pos: Integer): Boolean;
+ protected
+ { rtl }
+ procedure DefineProperties(Filer: TFiler); override;
+ procedure ReadPath(Stream: TStream);
+ procedure WritePath(Stream: TStream);
+ { IFreeNotification }
+ procedure FreeNotification(AObject: TObject);
+ procedure DoChanged(NeedRecalcBounds: Boolean = True); virtual;
+ public
+ constructor Create; virtual;
+ destructor Destroy; override;
+ procedure Assign(Source: TPersistent); override;
+ function EqualsPath(const Path: TPathData): Boolean;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ { creation }
+ function LastPoint: TPointF;
+ procedure MoveTo(const P: TPointF);
+ procedure MoveToRel(const P: TPointF);
+ procedure LineTo(const P: TPointF);
+ procedure LineToRel(const P: TPointF);
+ procedure HLineTo(const X: Single);
+ procedure HLineToRel(const X: Single);
+ procedure VLineTo(const Y: Single);
+ procedure VLineToRel(const Y: Single);
+ procedure CurveTo(const ControlPoint1, ControlPoint2, EndPoint: TPointF);
+ procedure CurveToRel(const ControlPoint1, ControlPoint2, EndPoint: TPointF);
+ procedure SmoothCurveTo(const ControlPoint2, EndPoint: TPointF);
+ procedure SmoothCurveToRel(const ControlPoint2, EndPoint: TPointF);
+ procedure QuadCurveTo(const ControlPoint, EndPoint: TPointF);
+ procedure ClosePath;
+ { shapes }
+ procedure AddEllipse(const ARect: TRectF);
+ procedure AddRectangle(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const ACornerType: TCornerType = TCornerType.Round);
+ procedure AddArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single);
+ { modification }
+ procedure AddPath(APath: TPathData);
+ procedure Clear;
+ procedure Flatten(const Flatness: Single = DefaultFlatness);
+ procedure Scale(const ScaleX, ScaleY: Single); overload;
+ procedure Scale(const AScale: TPointF); overload; inline;
+ procedure Translate(const DX, DY: Single); overload;
+ procedure Translate(const Delta: TPointF); overload; inline;
+ procedure FitToRect(const ARect: TRectF);
+ procedure ApplyMatrix(const M: TMatrix);
+ { params }
+ function GetBounds: TRectF;
+ { convert }
+ function FlattenToPolygon(var Polygon: TPolygon; const Flatness: Single = DefaultFlatness): TPointF;
+ function IsEmpty: Boolean;
+ { access }
+ property Count: Integer read GetCount;
+ property Points[AIndex: Integer]: TPathPoint read GetPoint; default;
+ { resoruces }
+ property ResourcePath: TPathData read GetPath;
+ published
+ property Data: string read GetPathString write SetPathString stored False;
+ { This property allow to link path with PathObject by name. }
+ property StyleLookup: string read GetStyleLookup write SetStyleLookup;
+ end;
+
+{ TCanvasSaveState }
+
+ TCanvasSaveState = class(TPersistent)
+ protected
+ FAssigned: Boolean;
+ FFill: TBrush;
+ FStroke: TStrokeBrush;
+ FDash: TDashArray;
+ FDashOffset: Single;
+ FFont: TFont;
+ FMatrix: TMatrix;
+ FOffset: TPointF;
+ procedure AssignTo(Dest: TPersistent); override;
+ public
+ constructor Create;
+ destructor Destroy; override;
+ procedure Assign(Source: TPersistent); override;
+ property Assigned: Boolean read FAssigned;
+ end;
+
+ TRegion = array of TRectF;
+ TRegionArray = array of TRegion;
+
+{ TCanvas }
+
+ ECanvasException = class(Exception);
+
+ TFillTextFlag = (RightToLeft);
+ TFillTextFlags = set of TFillTextFlag;
+
+ TAbstractPrinter = class(TPersistent);
+
+ PClipRects = ^TClipRects;
+ TClipRects = array of TRectF;
+
+ ICanvasObject = interface
+ ['{61166E3B-9BC3-41E3-9D9A-5C6AB6460950}']
+ function GetCanvas: TCanvas;
+ property Canvas: TCanvas read GetCanvas;
+ end;
+
+ IModulateCanvas = interface
+ ['{B7CFFA1B-FBCF-4B36-AA32-93856F621F28}']
+ function GetModulateColor: TAlphaColor;
+ procedure SetModulateColor(const AColor: TAlphaColor);
+ property ModulateColor: TAlphaColor read GetModulateColor write SetModulateColor;
+ end;
+
+ TCanvasStyle = (NeedGPUSurface, SupportClipRects, SupportModulation);
+ TCanvasStyles = set of TCanvasStyle;
+
+ TCanvasAttribute = (MaxBitmapSize);
+
+ TCanvasQuality = (SystemDefault, HighPerformance, HighQuality);
+
+ TCanvas = class abstract(TInterfacedPersistent)
+ public const
+ MaxAllowedBitmapSize = $FFFF;
+ DefaultScale = 1;
+ protected
+ class var FLock: TObject;
+ private
+ FBeginSceneCount: Integer;
+ FFill: TBrush;
+ FStroke: TStrokeBrush;
+ FParent: TWindowHandle;
+ [Weak] FBitmap: TBitmap;
+ FScale: Single;
+ FQuality: TCanvasQuality;
+ FMatrix: TMatrix;
+ procedure SetFill(const Value: TBrush);
+ protected type
+ TMatrixMeaning = (Unknown, Identity, Translate);
+
+ TCustomMetaBrush = class
+ private
+ FValid: Boolean;
+ public
+ property Valid: Boolean read FValid write FValid;
+ end;
+
+ TMetaBrush = class(TCustomMetaBrush)
+ private
+ FKind: TBrushKind;
+ FColor: TAlphaColor;
+ FOpacity: Single;
+ FGradient: TGradient;
+ FRect: TRectF;
+ [Weak] FBitmapImage: TBitmapImage;
+ FWrapMode: TWrapMode;
+ function GetGradient: TGradient;
+ public
+ destructor Destroy; override;
+ property Kind: TBrushKind read FKind write FKind;
+ property Color: TAlphaColor read FColor write FColor;
+ property Opacity: Single read FOpacity write FOpacity;
+ property Rect: TRectF read FRect write FRect;
+ property WrapMode: TWrapMode read FWrapMode write FWrapMode;
+ property Gradient: TGradient read GetGradient;
+ property Image: TBitmapImage read FBitmapImage write FBitmapImage;
+ end;
+
+ TMetaStrokeBrush = class(TCustomMetaBrush)
+ private
+ FCap: TStrokeCap;
+ FDash: TStrokeDash;
+ FJoin: TStrokeJoin;
+ FDashArray: TDashArray;
+ FDashOffset: Single;
+ public
+ property Cap: TStrokeCap read FCap write FCap;
+ property Dash: TStrokeDash read FDash write FDash;
+ property Join: TStrokeJoin read FJoin write FJoin;
+ property DashArray: TDashArray read FDashArray write FDashArray;
+ property DashOffset: Single read FDashOffset write FDashOffset;
+ end;
+ private
+ FMatrixMeaning: TMatrixMeaning;
+ FMatrixTranslate: TPointF;
+ FBlending: Boolean;
+ /// Indicates offset of drawing area
+ FOffset: TPointF;
+ procedure SetBlending(const Value: Boolean);
+ class constructor Create;
+ class destructor Destroy;
+ type
+ TCanvasSaveStateList = TObjectList;
+ protected
+ FClippingChangeCount: Integer;
+ FSavingStateCount: Integer;
+ FWidth, FHeight: Integer;
+ FFont: TFont;
+ FCanvasSaveData: TCanvasSaveStateList;
+ FPrinter: TAbstractPrinter;
+ procedure FontChanged(Sender: TObject); virtual;
+ { Window }
+ function CreateSaveState: TCanvasSaveState; virtual;
+ procedure Initialize;
+ procedure UnInitialize;
+ function GetCanvasScale: Single; virtual;
+ { scene }
+ function DoBeginScene(AClipRects: PClipRects = nil; AContextHandle: THandle = 0): Boolean; virtual;
+ procedure DoEndScene; virtual;
+ /// Checks if we are in BeginScene/EndScene process and raises exception, if we are not.
+ procedure RaiseIfBeginSceneCountZero;
+ procedure DoFlush; virtual;
+ { constructors }
+ constructor CreateFromWindow(const AParent: TWindowHandle; const AWidth, AHeight: Integer;
+ const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault); virtual;
+ constructor CreateFromBitmap(const ABitmap: TBitmap; const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault); virtual;
+ constructor CreateFromPrinter(const APrinter: TAbstractPrinter); virtual;
+ { bitmap }
+ class function DoInitializeBitmap(const Width, Height: Integer; const Scale: Single; var PixelFormat: TPixelFormat): THandle; virtual; abstract;
+ class procedure DoFinalizeBitmap(var Bitmap: THandle); virtual; abstract;
+ class function DoMapBitmap(const Bitmap: THandle; const Access: TMapAccess; var Data: TBitmapData): Boolean; virtual; abstract;
+ class procedure DoUnmapBitmap(const Bitmap: THandle; var Data: TBitmapData); virtual; abstract;
+ class procedure DoCopyBitmap(const Source, Dest: TBitmap); virtual;
+ { states }
+ procedure DoBlendingChanged; virtual;
+ { drawing }
+ /// Apply a new matrix transformations to the canvas.
+ procedure DoSetMatrix(const M: TMatrix); virtual;
+ procedure DoFillRect(const ARect: TRectF; const AOpacity: Single; const ABrush: TBrush); virtual; abstract;
+ procedure DoFillRoundRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ABrush: TBrush; const ACornerType: TCornerType = TCornerType.Round); virtual;
+ procedure DoFillPath(const APath: TPathData; const AOpacity: Single; const ABrush: TBrush); virtual; abstract;
+ procedure DoFillEllipse(const ARect: TRectF; const AOpacity: Single; const ABrush: TBrush); virtual; abstract;
+ function DoFillPolygon(const Points: TPolygon; const AOpacity: Single; const ABrush: TBrush): Boolean; virtual;
+ procedure DoDrawBitmap(const ABitmap: TBitmap; const SrcRect, DstRect: TRectF; const AOpacity: Single; const HighSpeed: Boolean); virtual; abstract;
+ procedure DoDrawLine(const APt1, APt2: TPointF; const AOpacity: Single; const ABrush: TStrokeBrush); virtual; abstract;
+ procedure DoDrawRect(const ARect: TRectF; const AOpacity: Single; const ABrush: TStrokeBrush); virtual; abstract;
+ function DoDrawPolygon(const Points: TPolygon; const AOpacity: Single; const ABrush: TStrokeBrush): Boolean; virtual;
+ procedure DoDrawPath(const APath: TPathData; const AOpacity: Single; const ABrush: TStrokeBrush); virtual; abstract;
+ procedure DoDrawEllipse(const ARect: TRectF; const AOpacity: Single; const ABrush: TStrokeBrush); virtual; abstract;
+ { Clipping }
+ procedure DoIntersectClipRect(const ARect: TRectF); virtual;
+ procedure DoExcludeClipRect(const ARect: TRectF); virtual;
+ { Clearing }
+ procedure DoClear(const Color: TAlphaColor); virtual;
+ procedure DoClearRect(const ARect: TRectF; const AColor: TAlphaColor = 0); virtual;
+ property Parent: TWindowHandle read FParent;
+ protected
+ function TransformPoint(const P: TPointF): TPointF; inline;
+ function TransformRect(const Rect: TRectF): TRectF; inline;
+ property MatrixMeaning: TMatrixMeaning read FMatrixMeaning;
+ property MatrixTranslate: TPointF read FMatrixTranslate;
+ public
+ destructor Destroy; override;
+ { lock }
+ class procedure Lock;
+ class procedure Unlock;
+ { caps }
+ class function GetCanvasStyle: TCanvasStyles; virtual;
+ class function GetAttribute(const Value: TCanvasAttribute): Integer; virtual;
+ { scene }
+ procedure SetSize(const AWidth, AHeight: Integer); virtual;
+ function BeginScene(AClipRects: PClipRects = nil; AContextHandle: THandle = 0): Boolean;
+ procedure EndScene;
+ property BeginSceneCount: Integer read FBeginSceneCount;
+ procedure Flush;
+ { buffer }
+ /// Clear whole canvas using Color.
+ procedure Clear(const AColor: TAlphaColor); virtual;
+ /// Clear rectangular area of canvas using Color.
+ procedure ClearRect(const ARect: TRectF; const AColor: TAlphaColor = 0); virtual;
+ /// Return True if Scale is integer value.
+ function IsScaleInteger: Boolean;
+ { matrix }
+ procedure SetMatrix(const M: TMatrix);
+ procedure MultiplyMatrix(const M: TMatrix);
+ { state }
+ function SaveState: TCanvasSaveState;
+ procedure RestoreState(const State: TCanvasSaveState);
+ { bitmap }
+ class function InitializeBitmap(const Width, Height: Integer; const Scale: Single; var PixelFormat: TPixelFormat): THandle;
+ class procedure FinalizeBitmap(var Bitmap: THandle);
+ class function MapBitmap(const Bitmap: THandle; const Access: TMapAccess; var Data: TBitmapData): Boolean;
+ class procedure UnmapBitmap(const Bitmap: THandle; var Data: TBitmapData);
+ class procedure CopyBitmap(const Source, Dest: TBitmap);
+ { aligning }
+ function AlignToPixel(const Value: TPointF): TPointF; overload; inline;
+ function AlignToPixel(const Rect: TRectF): TRectF; overload; inline;
+ function AlignToPixelVertically(const Value: Single): Single; inline;
+ function AlignToPixelHorizontally(const Value: Single): Single; inline;
+ { clipping }
+ /// Set current clipping area using intersection of current area and rectangle.
+ procedure IntersectClipRect(const ARect: TRectF); virtual;
+ /// Exclude rectangular area from current clipping area.
+ procedure ExcludeClipRect(const ARect: TRectF); virtual;
+ { drawing }
+ procedure FillArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single); overload;
+ procedure FillArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single;
+ const AOpacity: Single; const ABrush: TBrush); overload;
+ procedure FillRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ACornerType: TCornerType = TCornerType.Round); overload;
+ procedure FillRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ABrush: TBrush; const ACornerType: TCornerType = TCornerType.Round); overload;
+ procedure FillRect(const ARect: TRectF; const AOpacity: Single); overload;
+ procedure FillRect(const ARect: TRectF; const AOpacity: Single; const ABrush: TBrush); overload;
+ procedure FillPath(const APath: TPathData; const AOpacity: Single); overload;
+ procedure FillPath(const APath: TPathData; const AOpacity: Single; const ABrush: TBrush); overload;
+ procedure FillEllipse(const ARect: TRectF; const AOpacity: Single); overload;
+ procedure FillEllipse(const ARect: TRectF; const AOpacity: Single; const ABrush: TBrush); overload;
+ procedure DrawBitmap(const ABitmap: TBitmap; const SrcRect, DstRect: TRectF; const AOpacity: Single;
+ const HighSpeed: Boolean = False);
+ procedure DrawLine(const APt1, APt2: TPointF; const AOpacity: Single); overload;
+ procedure DrawLine(const APt1, APt2: TPointF; const AOpacity: Single; const ABrush: TStrokeBrush); overload;
+ procedure DrawRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ACornerType: TCornerType = TCornerType.Round); overload;
+ procedure DrawRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ABrush: TStrokeBrush; const ACornerType: TCornerType = TCornerType.Round); overload;
+ procedure DrawRect(const ARect: TRectF; const AOpacity: Single); overload;
+ procedure DrawRect(const ARect: TRectF; const AOpacity: Single; const ABrush: TStrokeBrush); overload;
+ procedure DrawPath(const APath: TPathData; const AOpacity: Single); overload;
+ procedure DrawPath(const APath: TPathData; const AOpacity: Single; const ABrush: TStrokeBrush); overload;
+ procedure DrawEllipse(const ARect: TRectF; const AOpacity: Single); overload;
+ procedure DrawEllipse(const ARect: TRectF; const AOpacity: Single; const ABrush: TStrokeBrush); overload;
+ procedure DrawArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single); overload;
+ procedure DrawArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single; const ABrush: TStrokeBrush); overload;
+ { mesauring }
+ function PtInPath(const APoint: TPointF; const APath: TPathData): Boolean; virtual; abstract;
+ { helpers }
+ procedure DrawRectSides(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ASides: TSides; const ACornerType: TCornerType = TCornerType.Round); overload;
+ procedure DrawRectSides(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ASides: TSides; const ABrush: TStrokeBrush; const ACornerType: TCornerType = TCornerType.Round); overload;
+ procedure DrawDashRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const AColor: TAlphaColor);
+ { linear polygon }
+ procedure FillPolygon(const Points: TPolygon; const AOpacity: Single); virtual;
+ procedure DrawPolygon(const Points: TPolygon; const AOpacity: Single); virtual;
+ { text }
+ function LoadFontFromStream(const AStream: TStream): Boolean; virtual;
+ { deprecated, use TTextLayout }
+ procedure FillText(const ARect: TRectF; const AText: string; const WordWrap: Boolean; const AOpacity: Single;
+ const Flags: TFillTextFlags; const ATextAlign: TTextAlign; const AVTextAlign: TTextAlign = TTextAlign.Center); virtual;
+ procedure MeasureText(var ARect: TRectF; const AText: string; const WordWrap: Boolean; const Flags: TFillTextFlags;
+ const ATextAlign: TTextAlign; const AVTextAlign: TTextAlign = TTextAlign.Center); virtual;
+ procedure MeasureLines(const ALines: TLineMetricInfo; const ARect: TRectF; const AText: string; const WordWrap: Boolean; const Flags: TFillTextFlags;
+ const ATextAlign: TTextAlign; const AVTextAlign: TTextAlign = TTextAlign.Center); virtual;
+ function TextToPath(Path: TPathData; const ARect: TRectF; const AText: string; const WordWrap: Boolean;
+ const ATextAlign: TTextAlign; const AVTextAlign: TTextAlign = TTextAlign.Center): Boolean; virtual;
+ function TextWidth(const AText: string): Single;
+ function TextHeight(const AText: string): Single;
+ { properties }
+ property Blending: Boolean read FBlending write SetBlending;
+ property Quality: TCanvasQuality read FQuality;
+ property Stroke: TStrokeBrush read FStroke;
+ property Fill: TBrush read FFill write SetFill;
+ property Font: TFont read FFont;
+ property Matrix: TMatrix read FMatrix;
+ property Width: Integer read FWidth;
+ property Height: Integer read FHeight;
+ property Bitmap: TBitmap read FBitmap;
+ property Scale: Single read FScale;
+ /// Allows to offset drawing area
+ property Offset: TPointF read FOffset write FOffset;
+ { statistics }
+ property ClippingChangeCount: Integer read FClippingChangeCount;
+ property SavingStateCount: Integer read FSavingStateCount;
+ end;
+
+ ECanvasManagerException = class(Exception);
+
+ TCanvasDestroyMessage = class(TMessage);
+
+ TCanvasManager = class sealed
+ private type
+ TCanvasClassRec = record
+ CanvasClass: TCanvasClass;
+ Default: Boolean;
+ PrinterCanvas: Boolean;
+ end;
+ strict private
+ class var FCanvasList: TList;
+ class var FDefaultCanvasClass: TCanvasClass;
+ class var FDefaultPrinterCanvasClass: TCanvasClass;
+ class var FMeasureBitmap: TBitmap;
+ class var FEnableSoftwareCanvas: Boolean;
+ private
+ class function GetDefaultCanvas: TCanvasClass; static;
+ class function GetMeasureCanvas: TCanvas; static;
+ class function GetDefaultPrinterCanvas: TCanvasClass; static;
+ public
+ // Reserved for internal use only - do not call directly!
+ class procedure UnInitialize;
+ // Register a rendering Canvas class
+ class procedure RegisterCanvas(const CanvasClass: TCanvasClass; const ADefault: Boolean; const APrinterCanvas: Boolean);
+ // Return default Canvas
+ class property DefaultCanvas: TCanvasClass read GetDefaultCanvas;
+ // Return default Canvas
+ class property DefaultPrinterCanvas: TCanvasClass read GetDefaultPrinterCanvas;
+ // Return canvas instance used for text measuring for example
+ class property MeasureCanvas: TCanvas read GetMeasureCanvas;
+ // Creation helper
+ class function CreateFromWindow(const AParent: TWindowHandle; const AWidth, AHeight: Integer;
+ const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault): TCanvas;
+ class function CreateFromBitmap(const ABitmap: TBitmap;
+ const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault): TCanvas;
+ class function CreateFromPrinter(const APrinter: TAbstractPrinter): TCanvas;
+ class procedure RecreateFromPrinter(const Canvas: TCanvas; const APrinter: TAbstractPrinter);
+ class procedure EnableSoftwareCanvas(const Enable: Boolean);
+ end;
+
+ TPrinterCanvas = class(TCanvas);
+ TPrinterCanvasClass = class of TPrinterCanvas;
+
+{ TBrushObject }
+
+ IBrushObject = interface(IFreeNotificationBehavior)
+ ['{BB870DB6-0228-4165-9906-CF75BFF8C7CA}']
+ function GetBrush: TBrush;
+ property Brush: TBrush read GetBrush;
+ end;
+
+ TBrushObject = class(TFmxObject, IBrushObject)
+ private
+ FBrush: TBrush;
+ { IBrushObject }
+ function GetBrush: TBrush;
+ protected
+ procedure SetName(const NewName: TComponentName); override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ published
+ property Brush: TBrush read FBrush write FBrush;
+ end;
+
+{ TFontObject }
+
+ IFontObject = interface(IFreeNotificationBehavior)
+ ['{F87FBCFE-CE5F-430C-8F46-B20B2E395C1B}']
+ function GetFont: TFont;
+ property Font: TFont read GetFont;
+ end;
+
+ TFontObject = class(TFmxObject, IFontObject)
+ private
+ FFont: TFont;
+ { IFontObject }
+ function GetFont: TFont;
+ protected
+ procedure SetName(const NewName: TComponentName); override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ published
+ property Font: TFont read FFont write FFont;
+ end;
+
+{ TPathObject }
+
+ TPathObject = class(TFmxObject, IPathObject)
+ private
+ FPath: TPathData;
+ { IPathObject }
+ function GetPath: TPathData;
+ protected
+ procedure SetName(const NewName: TComponentName); override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ published
+ property Path: TPathData read FPath write FPath;
+ end;
+
+{ TBitmapObject }
+
+ TBitmapObject = class(TFmxObject, IBitmapObject)
+ private
+ FBitmap: TBitmap;
+ { IBitmapObject }
+ function GetBitmap: TBitmap;
+ protected
+ procedure SetName(const NewName: TComponentName); override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ published
+ property Bitmap: TBitmap read FBitmap write FBitmap;
+ end;
+
+{ TColorObject }
+
+ TColorObject = class(TFmxObject)
+ private
+ FColor: TAlphaColor;
+ protected
+ procedure SetName(const NewName: TComponentName); override;
+ published
+ property Color: TAlphaColor read FColor write FColor;
+ end;
+
+ TFontColorForStateClass = class of TFontColorForState;
+
+ TFontColorForState = class(TPersistent)
+ public type
+ TIndex = (Normal, Hot, Pressed, Focused, Active);
+ private
+ [Weak] FOwner: TTextSettings;
+ FColor: array [TIndex] of TAlphaColor;
+ FUpdateCount: Integer;
+ FChanged: Boolean;
+ function GetColor(const Index: TIndex): TAlphaColor;
+ procedure SetColor(const Index: TIndex; const Value: TAlphaColor);
+ protected
+ function GetOwner: TPersistent; override;
+ function GetCurrentColor(const Index: TIndex): TAlphaColor; virtual;
+ procedure DoChanged; virtual;
+ public
+ constructor Create(const AOwner: TTextSettings); virtual;
+ procedure AfterConstruction; override;
+ procedure BeginUpdate;
+ procedure EndUpdate;
+ procedure Change;
+ property Owner: TTextSettings read FOwner;
+ procedure Assign(Source: TPersistent); override;
+ function Equals(Obj: TObject): Boolean; override;
+ property CurrentColor[const Index: TIndex]: TAlphaColor read GetCurrentColor;
+ property Color[const Index: TIndex]: TAlphaColor read GetColor write SetColor; default;
+ property Normal: TAlphaColor index TIndex.Normal read GetColor write SetColor default TAlphaColorRec.Null;
+ property Hot: TAlphaColor index TIndex.Hot read GetColor write SetColor default TAlphaColorRec.Null;
+ property Pressed: TAlphaColor index TIndex.Pressed read GetColor write SetColor default TAlphaColorRec.Null;
+ property Focused: TAlphaColor index TIndex.Focused read GetColor write SetColor default TAlphaColorRec.Null;
+ property Active: TAlphaColor index TIndex.Active read GetColor write SetColor default TAlphaColorRec.Null;
+ end;
+
+ TTextSettingsClass = class of TTextSettings;
+
+ ///
+ /// This class combines some of properties that relate to the text
+ ///
+ TTextSettings = class(TPersistent)
+ private
+ [Weak] FOwner: TPersistent;
+ FFont: TFont;
+ FUpdateCount: Integer;
+ FHorzAlign: TTextAlign;
+ FVertAlign: TTextAlign;
+ FWordWrap: Boolean;
+ FFontColor: TAlphaColor;
+ FIsChanged: Boolean;
+ FIsAdjustChanged: Boolean;
+ FOnChanged: TNotifyEvent;
+ FTrimming: TTextTrimming;
+ FFontColorForState: TFontColorForState;
+ procedure SetFontColor(const Value: TAlphaColor);
+ procedure SetHorzAlign(const Value: TTextAlign);
+ procedure SetVertAlign(const Value: TTextAlign);
+ procedure SetWordWrap(const Value: Boolean);
+ procedure SetTrimming(const Value: TTextTrimming);
+ procedure SetFontColorForState(const Value: TFontColorForState);
+ function StoreFontColorForState: Boolean;
+ function CreateFontColorForState: TFontColorForState;
+ protected
+ procedure DoChanged; virtual;
+ procedure SetFont(const Value: TFont); virtual;
+ function GetOwner: TPersistent; override;
+ function GetTextColorsClass: TFontColorForStateClass; virtual;
+ procedure DoAssign(const Source: TTextSettings); virtual;
+ procedure DoAssignNotStyled(const TextSettings: TTextSettings; const StyledSettings: TStyledSettings); virtual;
+ public
+ constructor Create(const AOwner: TPersistent); virtual;
+ destructor Destroy; override;
+ procedure AfterConstruction; override;
+ procedure Assign(Source: TPersistent); override;
+ procedure AssignNotStyled(const TextSettings: TTextSettings; const StyledSettings: TStyledSettings);
+ function Equals(Obj: TObject): Boolean; override;
+ procedure Change;
+ procedure BeginUpdate;
+ procedure EndUpdate;
+ procedure UpdateStyledSettings(const OldTextSettings, DefaultTextSettings: TTextSettings;
+ var StyledSettings: TStyledSettings); virtual;
+ property UpdateCount: Integer read FUpdateCount;
+ property IsChanged: Boolean read FIsChanged write FIsChanged;
+ property IsAdjustChanged: Boolean read FIsAdjustChanged write FIsAdjustChanged;
+ property Font: TFont read FFont write SetFont;
+ property FontColor: TAlphaColor read FFontColor write SetFontColor default TAlphaColorRec.Black;
+ property FontColorForState: TFontColorForState read FFontColorForState write SetFontColorForState
+ stored StoreFontColorForState;
+ property HorzAlign: TTextAlign read FHorzAlign write SetHorzAlign default TTextAlign.Leading;
+ property VertAlign: TTextAlign read FVertAlign write SetVertAlign default TTextAlign.Center;
+ property WordWrap: Boolean read FWordWrap write SetWordWrap default False;
+ property Trimming: TTextTrimming read FTrimming write SetTrimming default TTextTrimming.None;
+ property Owner: TPersistent read FOwner;
+ property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
+ end;
+
+ ITextSettings = interface
+ ['{FD99635D-D8DB-4E26-B36F-97D3AABBCCB3}']
+ function GetDefaultTextSettings: TTextSettings;
+ function GetTextSettings: TTextSettings;
+ procedure SetTextSettings(const Value: TTextSettings);
+ function GetResultingTextSettings: TTextSettings;
+ function GetStyledSettings: TStyledSettings;
+ procedure SetStyledSettings(const Value: TStyledSettings);
+
+ property DefaultTextSettings: TTextSettings read GetDefaultTextSettings;
+ property TextSettings: TTextSettings read GetTextSettings write SetTextSettings;
+ property ResultingTextSettings: TTextSettings read GetResultingTextSettings;
+ property StyledSettings: TStyledSettings read GetStyledSettings write SetStyledSettings;
+ end;
+
+implementation
+
+uses
+ System.UIConsts, System.Math, System.TypInfo, System.Character, System.Generics.Defaults, FMX.Consts, FMX.Platform,
+ FMX.TextLayout, FMX.Utils;
+
+{ TImageTypeChecker }
+
+class function TImageTypeChecker.GetType(const AFileName: string): string;
+var
+ LStream: TStream;
+begin
+ LStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
+ try
+ Result := GetType(LStream);
+ if Result.IsEmpty then
+ Result := ExtractFileExt(AFileName);
+ finally
+ LStream.Free;
+ end;
+end;
+
+class function TImageTypeChecker.GetType(const AData: TStream): String;
+var
+ LBuffer: TBytes;
+ I: Integer;
+ LOldPos: Int64;
+const
+ MaxImageDataLength = 4;
+ ImageData: array[0..6] of TImageData = (
+ (DataType: SGIFImageExtension; Length: 3; Header: (71,73,70,0)), // gif
+ (DataType: SBMPImageExtension; Length: 2; Header: (66,77,0,0)), // bmp
+ (DataType: SPNGImageExtension; Length: 4; Header: (137,80,78,71)), // png
+ (DataType: STIFFImageExtension; Length: 3; Header: (73,73,42,0)), // tiff
+ (DataType: STIFFImageExtension; Length: 3; Header: (77,77,42,0)), // tiff 2
+ (DataType: SJPGImageExtension; Length: 4; Header: (255,216,255,224)), // jpg
+ (DataType: SJPGImageExtension; Length: 4; Header: (255,216,255,225)) // jpg (canon)
+ );
+begin
+ Result := string.Empty;
+ SetLength(LBuffer, MaxImageDataLength);
+ LOldPos := AData.Position;
+ try
+ if AData.Read(LBuffer, MaxImageDataLength) = MaxImageDataLength then
+ begin
+ for I := Low(ImageData) to High(ImageData) do
+ begin
+ if (CompareMem(@ImageData[I].Header[0], LBuffer, ImageData[I].Length)) then
+ begin
+ Result := ImageData[I].DataType;
+ Break;
+ end;
+ end;
+ end;
+ finally
+ AData.Position := LOldPos;
+ end;
+end;
+
+{ TGradientPoint }
+
+procedure TGradientPoint.Assign(Source: TPersistent);
+begin
+ if Source is TGradientPoint then
+ begin
+ FColor := TGradientPoint(Source).FColor;
+ FOffset := TGradientPoint(Source).FOffset;
+ end
+ else
+ inherited;
+end;
+
+procedure TGradientPoint.SetColor(const Value: TAlphaColor);
+begin
+ if FColor <> Value then
+ begin
+ FColor := Value;
+ Changed(False);
+ end;
+end;
+
+procedure TGradientPoint.SetOffset(const Value: Single);
+begin
+ if not SameValue(FOffset, Value, Single.Epsilon) then
+ begin
+ FOffset := Value;
+ Changed(False);
+ end;
+end;
+
+{ TGradientPoints }
+
+function TGradientPoints.GetPoint(Index: Integer): TGradientPoint;
+begin
+ Result := TGradientPoint(Items[Index]);
+end;
+
+procedure TGradientPoints.Update(Item: TCollectionItem);
+begin
+ inherited;
+ if Item = nil then
+ Exit;
+
+ Sort(TComparer.Construct(function(const Left, Right: TCollectionItem): Integer
+ begin
+ Result := CompareValue(TGradientPoint(Left).Offset, TGradientPoint(Right).Offset);
+ end));
+end;
+
+{ TGradient }
+
+constructor TGradient.Create;
+var
+ P: TGradientPoint;
+begin
+ inherited;
+ FStartPosition := TPosition.Create(PointF(0, 0));
+ FStartPosition.OnChange := PositionChanged;
+ FStopPosition := TPosition.Create(PointF(0, 1));
+ FStopPosition.OnChange := PositionChanged;
+ FRadialTransform := TTransform.Create;
+ FRadialTransform.OnChanged := PositionChanged;
+ FPoints := TGradientPoints.Create(TGradientPoint);
+ P := TGradientPoint(FPoints.Add);
+ P.IntColor := $FF000000;
+ P := TGradientPoint(FPoints.Add);
+ P.IntColor := $FFFFFFFF;
+ P.Offset := 1;
+end;
+
+procedure TGradient.ApplyOpacity(const AOpacity: Single);
+var
+ I: Integer;
+begin
+ if AOpacity < 1.0 then
+ for I := 0 to FPoints.Count - 1 do
+ FPoints[I].Color := MakeColor(FPoints[I].Color, AOpacity);
+end;
+
+procedure TGradient.Assign(Source: TPersistent);
+var
+ SaveChanged: TNotifyEvent;
+begin
+ if Source is TGradient then
+ begin
+ SaveChanged := FOnChanged;
+ FOnChanged := nil;
+ FPoints.Clear;
+ FPoints.Assign(TGradient(Source).FPoints);
+ FStyle := TGradient(Source).Style;
+ if FStyle = TGradientStyle.Linear then
+ begin
+ FStopPosition.Assign(TGradient(Source).StopPosition);
+ FStartPosition.Assign(TGradient(Source).StartPosition);
+ end
+ else
+ begin
+ FRadialTransform.Assign(TGradient(Source).RadialTransform);
+ end;
+ FOnChanged := SaveChanged;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end
+ else
+ inherited;
+end;
+
+destructor TGradient.Destroy;
+begin
+ FreeAndNil(FStartPosition);
+ FreeAndNil(FStopPosition);
+ FreeAndNil(FRadialTransform);
+ FreeAndNil(FPoints);
+ inherited;
+end;
+
+function TGradient.Equal(const AGradient: TGradient): Boolean;
+var
+ I: Integer;
+begin
+ Result := True;
+ if FPoints.Count <> AGradient.FPoints.Count then
+ Exit(False);
+ if not SameValue(FStartPosition.X, AGradient.FStartPosition.X, TEpsilon.Position) then
+ Exit(False);
+ if not SameValue(FStartPosition.Y, AGradient.FStartPosition.Y, TEpsilon.Position) then
+ Exit(False);
+ if not SameValue(FStopPosition.X, AGradient.FStopPosition.X, TEpsilon.Position) then
+ Exit(False);
+ if not SameValue(FStopPosition.Y, AGradient.FStopPosition.Y, TEpsilon.Position) then
+ Exit(False);
+ for I := 0 to FPoints.Count - 1 do
+ begin
+ if FPoints[I].Color <> AGradient.FPoints[I].Color then
+ Exit(False);
+ if not SameValue(FPoints[I].Offset, AGradient.FPoints[I].Offset, TEpsilon.Position) then
+ Exit(False);
+ end;
+ { Radial gradient }
+ if not SameValue(RadialTransform.RotationAngle, AGradient.RadialTransform.RotationAngle, TEpsilon.Angle) then
+ Exit(False);
+ if not SameValue(RadialTransform.RotationCenter.X, AGradient.RadialTransform.RotationCenter.X, TEpsilon.Position) or
+ not SameValue(RadialTransform.RotationCenter.Y, AGradient.RadialTransform.RotationCenter.Y, TEpsilon.Position) then
+ Exit(False);
+end;
+
+procedure TGradient.Change;
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+function TGradient.InterpolateColor(X, Y: Single): TAlphaColor;
+var
+ A, B: TPointF;
+ Projection: Single;
+begin
+ case Style of
+ TGradientStyle.Linear:
+ begin
+ A := StopPosition.Point - StartPosition.Point;
+ B := TPointF.Create(X, Y) - StartPosition.Point;
+ Projection := A.Normalize.DotProduct(B) / A.Length;
+ Result := InterpolateColor(Projection);
+ end;
+ TGradientStyle.Radial:
+ begin
+ A := TPointF.Create(X, Y) - RadialTransform.RotationCenter.Point;
+ Result := InterpolateColor(1 - (A.Length * 2));
+ end;
+ else
+ Result := 0;
+ end;
+end;
+
+function TGradient.InterpolateColor(Offset: Single): TAlphaColor;
+var
+ I: Integer;
+begin
+ Result := 0;
+ if FPoints.Count > 1 then
+ begin
+ if Offset < 0 then
+ Offset := 0;
+ if Offset > 1 then
+ Offset := 1;
+ if Offset < FPoints[0].Offset then
+ begin
+ Result := Points[0].IntColor;
+ Exit;
+ end;
+ if Offset > FPoints[FPoints.Count - 1].Offset then
+ begin
+ Result := FPoints[FPoints.Count - 1].IntColor;
+ Exit;
+ end;
+ for I := 0 to FPoints.Count - 2 do
+ begin
+ if (Offset < Points[I].Offset) then
+ Continue;
+ if Offset > Points[I + 1].Offset then
+ Continue;
+ if Points[I + 1].Offset - Points[I].Offset <= 0 then
+ Result := Points[I].IntColor
+ else if (I = FPoints.Count - 2) and (Offset > Points[Points.Count - 1].Offset) then // last
+ Result := Points[Points.Count - 1].IntColor
+ else
+ Result := FMX.Utils.InterpolateColor(Points[I].IntColor, Points[I + 1].IntColor,
+ (Offset - Points[I].Offset) / (Points[I + 1].Offset - Points[I].Offset));
+ end;
+ end;
+end;
+
+procedure TGradient.PositionChanged(Sender: TObject);
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+function TGradient.IsLinearStored: Boolean;
+begin
+ Result := FStyle = TGradientStyle.Linear;
+end;
+
+function TGradient.IsRadialStored: Boolean;
+begin
+ Result := FStyle = TGradientStyle.Radial;
+end;
+
+procedure TGradient.SetRadialTransform(const Value: TTransform);
+begin
+ FRadialTransform.Assign(Value);
+end;
+
+procedure TGradient.SetStartPosition(const Value: TPosition);
+begin
+ FStartPosition.Assign(Value);
+end;
+
+procedure TGradient.SetStopPosition(const Value: TPosition);
+begin
+ FStopPosition.Assign(Value);
+end;
+
+procedure TGradient.SetColor(const Value: TAlphaColor);
+begin
+ if (FPoints.Count > 0) and (Points[0].Color <> Value) then
+ begin
+ Points[0].Color := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+procedure TGradient.SetColor1(const Value: TAlphaColor);
+begin
+ if (FPoints.Count > 1) and (Points[1].Color <> Value) then
+ begin
+ Points[1].Color := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+procedure TGradient.SetPoints(const Value: TGradientPoints);
+begin
+ FPoints.Assign(Value);
+end;
+
+procedure TGradient.SetStyle(const Value: TGradientStyle);
+begin
+ if FStyle <> Value then
+ begin
+ FStyle := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+{ TBrushResource }
+
+destructor TBrushResource.Destroy;
+begin
+ if FStyleResource <> nil then
+ begin
+ FStyleResource.RemoveFreeNotify(Self);
+ FStyleResource := nil;
+ end;
+ inherited;
+end;
+
+procedure TBrushResource.FreeNotification(AObject: TObject);
+begin
+ if AObject = FStyleResource then
+ FStyleResource := nil;
+end;
+
+procedure TBrushResource.Assign(Source: TPersistent);
+begin
+ if Source is TBrushResource then
+ begin
+ StyleResource := TBrushResource(Source).StyleResource;
+ FStyleLookup := TBrushResource(Source).StyleLookup;
+ end
+ else
+ inherited;
+end;
+
+procedure TBrushResource.SetStyleResource(const Value: TBrushObject);
+begin
+ if FStyleResource <> Value then
+ begin
+ if FStyleResource <> nil then
+ FStyleResource.RemoveFreeNotify(Self);
+ FStyleResource := Value;
+ if FStyleResource <> nil then
+ begin
+ FStyleLookup := FStyleResource.StyleName;
+ FStyleResource.AddFreeNotify(Self);
+ end;
+ end;
+end;
+
+function TBrushResource.GetStyleLookup: string;
+begin
+ Result := FStyleLookup;
+end;
+
+procedure TBrushResource.SetStyleLookup(const Value: string);
+begin
+ if Value <> FStyleLookup then
+ begin
+ FStyleLookup := Value;
+ end;
+end;
+
+function TBrushResource.GetBrush: TBrush;
+var
+ O: TFmxObject;
+begin
+ Result := nil;
+ if FStyleResource <> nil then
+ Result := TBrushObject(FStyleResource).Brush
+ else if FStyleLookup <> '' then
+ begin
+ O := FindStyleResource(FStyleLookup);
+ if O is TBrushObject then
+ StyleResource := TBrushObject(O);
+ if FStyleResource <> nil then
+ Result := TBrushObject(FStyleResource).Brush;
+ end;
+end;
+
+{ TBrushBitmap }
+
+constructor TBrushBitmap.Create;
+begin
+ inherited Create;
+ FBitmap := TBitmap.Create(0, 0);
+end;
+
+destructor TBrushBitmap.Destroy;
+begin
+ FBitmap.DisposeOf;
+ inherited;
+end;
+
+procedure TBrushBitmap.DoChanged;
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+function TBrushBitmap.GetBitmapImage: TBitmapImage;
+begin
+ if FBitmap <> nil then
+ Result := FBitmap.Image
+ else
+ Result := nil;
+end;
+
+procedure TBrushBitmap.Assign(Source: TPersistent);
+begin
+ if Source is TBrushBitmap then
+ begin
+ FWrapMode := TBrushBitmap(Source).FWrapMode;
+ FBitmap.Assign(TBrushBitmap(Source).FBitmap);
+ DoChanged;
+ end
+ else
+ inherited;
+end;
+
+procedure TBrushBitmap.SetWrapMode(const Value: TWrapMode);
+begin
+ if FWrapMode <> Value then
+ begin
+ FWrapMode := Value;
+ DoChanged;
+ end;
+end;
+
+procedure TBrushBitmap.SetBitmap(const Value: TBitmap);
+begin
+ FBitmap.Assign(Value);
+ DoChanged;
+end;
+
+{ TBrush }
+
+constructor TBrush.Create;
+begin
+ inherited Create;
+ FDefaultKind := ADefaultKind;
+ FDefaultColor := ADefaultColor;
+ FColor := ADefaultColor;
+ FKind := FDefaultKind;
+ FGradient := TGradient.Create;
+ FGradient.OnChanged := GradientChanged;
+ FResource := TBrushResource.Create;
+ FResource.OnChanged := ResourceChanged;
+ FBitmap := TBrushBitmap.Create;
+ FBitmap.OnChanged := BitmapChanged;
+ FBitmap.Bitmap.OnChange := BitmapChanged;
+end;
+
+destructor TBrush.Destroy;
+begin
+ FBitmap.DisposeOf;
+ FResource.DisposeOf;
+ FGradient.DisposeOf;
+ inherited;
+end;
+
+procedure TBrush.Assign(Source: TPersistent);
+var
+ SaveChange: TNotifyEvent;
+begin
+ if Source is TBrush then
+ begin
+ SaveChange := FOnChanged;
+ FOnChanged := nil;
+ FDefaultKind := TBrush(Source).FDefaultKind;
+ FDefaultColor := TBrush(Source).FDefaultColor;
+ FColor := TBrush(Source).FColor;
+ FKind := TBrush(Source).FKind;
+ case FKind of
+ TBrushKind.Gradient:
+ FGradient.Assign(TBrush(Source).Gradient);
+ TBrushKind.Resource:
+ FResource.Assign(TBrush(Source).Resource);
+ TBrushKind.Bitmap:
+ FBitmap.Assign(TBrush(Source).Bitmap);
+ end;
+ FOnChanged := SaveChange;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end
+ else
+ inherited;
+end;
+
+procedure TBrush.GradientChanged(Sender: TObject);
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ if Assigned(FOnGradientChanged) then
+ FOnGradientChanged(Self);
+end;
+
+procedure TBrush.ResourceChanged(Sender: TObject);
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+procedure TBrush.BitmapChanged(Sender: TObject);
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+function TBrush.IsBitmapStored: Boolean;
+begin
+ Result := (FKind = TBrushKind.Bitmap);
+end;
+
+function TBrush.IsColorStored: Boolean;
+begin
+ Result := (FKind = TBrushKind.Solid) and (FColor <> FDefaultColor);
+end;
+
+function TBrush.IsGradientStored: Boolean;
+begin
+ Result := FKind = TBrushKind.Gradient;
+end;
+
+function TBrush.IsKindStored: Boolean;
+begin
+ Result := FKind <> FDefaultKind;
+end;
+
+function TBrush.IsResourceStored: Boolean;
+begin
+ Result := FKind = TBrushKind.Resource;
+end;
+
+procedure TBrush.SetResource(const Value: TBrushResource);
+begin
+ FResource.Assign(Value);
+end;
+
+procedure TBrush.SetGradient(const Value: TGradient);
+begin
+ FGradient.Assign(Value);
+end;
+
+function TBrush.GetColor: TAlphaColor;
+begin
+ Result := FColor;
+end;
+
+procedure TBrush.SetColor(const Value: TAlphaColor);
+begin
+ if FColor <> Value then
+ begin
+ FColor := Value;
+ if FKind = TBrushKind.Gradient then
+ FGradient.Color := Value
+ else if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+procedure TBrush.SetKind(const Value: TBrushKind);
+begin
+ if FKind <> Value then
+ begin
+ FKind := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+{ TStrokeBrush.TDashData }
+
+constructor TStrokeBrush.TDashData.Create(const ADashArray: TDashArray; ADashOffset: Single);
+begin
+ DashArray := ADashArray;
+ DashOffset := ADashOffset;
+end;
+
+{ TStrokeBrush }
+
+constructor TStrokeBrush.Create(const ADefaultKind: TBrushKind; const ADefaultColor: TAlphaColor);
+begin
+ inherited;
+ FThickness := 1;
+end;
+
+procedure TStrokeBrush.ReadCustomDash(AStream: TStream);
+var
+ Len: Integer;
+begin
+ AStream.Read(Len, SizeOf(Len));
+ SetLength(FDashArray, Len);
+ if Len > 0 then
+ AStream.Read(FDashArray[0], SizeOf(Single) * Len);
+ AStream.Read(FDashOffset, SizeOf(FDashOffset));
+end;
+
+procedure TStrokeBrush.WriteCustomDash(AStream: TStream);
+var
+ Len: Integer;
+begin
+ Len := Length(FDashArray);
+ AStream.Write(Len, SizeOf(Len));
+ if Len > 0 then
+ AStream.Write(FDashArray[0], SizeOf(Single) * Len);
+ AStream.Write(FDashOffset, SizeOf(FDashOffset));
+end;
+
+procedure TStrokeBrush.DefineProperties(Filer: TFiler);
+begin
+ inherited;
+ Filer.DefineBinaryProperty('CustomDash', ReadCustomDash, WriteCustomDash, Dash = TStrokeDash.Custom);
+end;
+
+function TStrokeBrush.GetDashArray: TDashArray;
+begin
+ Result := Copy(FDashArray);
+end;
+
+class function TStrokeBrush.GetStdDash(const Device: TDashDevice; const Dash: TStrokeDash): TDashData;
+begin
+ if not FStdDashCreated then
+ begin
+ // create the screen line dashes
+ FStdDash[TDashDevice.Screen, TStrokeDash.Solid] := TDashData.Create(nil, 0);
+ FStdDash[TDashDevice.Screen, TStrokeDash.Dash] := TDashData.Create(TDashArray.Create(3, 1), 0);
+ FStdDash[TDashDevice.Screen, TStrokeDash.Dot] := TDashData.Create(TDashArray.Create(1, 1), 0);
+ FStdDash[TDashDevice.Screen, TStrokeDash.DashDot] := TDashData.Create(TDashArray.Create(3, 1, 1, 1), 0);
+ FStdDash[TDashDevice.Screen, TStrokeDash.DashDotDot] := TDashData.Create(TDashArray.Create(3, 1, 1, 1, 1, 1), 0);
+ FStdDash[TDashDevice.Screen, TStrokeDash.Custom] := TDashData.Create(nil, 0);
+
+ // create the printer line dashes
+{$IFDEF MACOS}
+ // MacOS dashes work strange; these values are experimental values that
+ // seem to work correctly
+ FStdDash[TDashDevice.Printer, TStrokeDash.Solid] := TDashData.Create(nil, 0);
+ FStdDash[TDashDevice.Printer, TStrokeDash.Dash] := TDashData.Create(TDashArray.Create(3 * 2, 6 * 2), 0);
+ FStdDash[TDashDevice.Printer, TStrokeDash.Dot] := TDashData.Create(TDashArray.Create(1 * 2, 3 * 2), 0);
+ FStdDash[TDashDevice.Printer, TStrokeDash.DashDot] :=
+ TDashData.Create(TDashArray.Create(3 * 3, 6 * 3, 1 * 3, 3 * 3), 0);
+ FStdDash[TDashDevice.Printer, TStrokeDash.DashDotDot] :=
+ TDashData.Create(TDashArray.Create(3 * 2, 9 * 2, 1 * 2, 3 * 2, 1 * 2, 3 * 2), 0);
+ FStdDash[TDashDevice.Printer, TStrokeDash.Custom] := TDashData.Create(nil, 0);
+{$ELSE}
+ FStdDash[TDashDevice.Printer] := FStdDash[TDashDevice.Screen];
+{$ENDIF}
+ FStdDashCreated := True;
+ end;
+
+ Result.DashArray := Copy(FStdDash[Device, Dash].DashArray);
+ Result.DashOffset := FStdDash[Device, Dash].DashOffset;
+end;
+
+procedure TStrokeBrush.Assign(Source: TPersistent);
+var
+ SaveChange: TNotifyEvent;
+begin
+ if Source is TStrokeBrush then
+ begin
+ SaveChange := FOnChanged;
+ FOnChanged := nil;
+
+ FDefaultKind := TStrokeBrush(Source).FDefaultKind;
+ FDefaultColor := TStrokeBrush(Source).FDefaultColor;
+ FColor := TStrokeBrush(Source).Color;
+ FKind := TStrokeBrush(Source).Kind;
+ case FKind of
+ TBrushKind.Gradient:
+ FGradient.Assign(TStrokeBrush(Source).Gradient);
+ TBrushKind.Resource:
+ FResource.Assign(TStrokeBrush(Source).Resource);
+ TBrushKind.Bitmap:
+ FBitmap.Assign(TStrokeBrush(Source).Bitmap);
+ end;
+
+ FThickness := TStrokeBrush(Source).Thickness;
+ FCap := TStrokeBrush(Source).Cap;
+ FDash := TStrokeBrush(Source).Dash;
+ FJoin := TStrokeBrush(Source).Join;
+ FDashArray := Copy(TStrokeBrush(Source).FDashArray);
+ FDashOffset := TStrokeBrush(Source).FDashOffset;
+ FOnChanged := SaveChange;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end
+ else
+ inherited;
+end;
+
+procedure TStrokeBrush.SetCustomDash(const Dash: array of Single; Offset: Single);
+var
+ I: Integer;
+begin
+ FDash := TStrokeDash.Custom;
+ SetLength(FDashArray, Length(Dash));
+ for I := 0 to High(Dash) do
+ FDashArray[I] := Dash[I];
+ FDashOffset := Offset;
+end;
+
+function TStrokeBrush.IsThicknessStored: Boolean;
+begin
+ Result := Thickness <> 1;
+end;
+
+procedure TStrokeBrush.SetCap(const Value: TStrokeCap);
+begin
+ if FCap <> Value then
+ begin
+ FCap := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+procedure TStrokeBrush.SetDash(const Value: TStrokeDash);
+begin
+ if FDash <> Value then
+ begin
+ FDash := Value;
+ case FDash of
+ TStrokeDash.Solid:
+ begin
+ FDashOffset := 0;
+ SetLength(FDashArray, 0);
+ end;
+ TStrokeDash.Dash:
+ begin
+ FDashOffset := 0;
+ SetLength(FDashArray, 2);
+ FDashArray[0] := 1 * 3;
+ FDashArray[1] := 1;
+ end;
+ TStrokeDash.Dot:
+ begin
+ FDashOffset := 0;
+ SetLength(FDashArray, 2);
+ FDashArray[0] := 1;
+ FDashArray[1] := 1;
+ end;
+ TStrokeDash.DashDot:
+ begin
+ FDashOffset := 0;
+ SetLength(FDashArray, 4);
+ FDashArray[0] := 1 * 3;
+ FDashArray[1] := 1;
+ FDashArray[2] := 1;
+ FDashArray[3] := 1;
+ end;
+ TStrokeDash.DashDotDot:
+ begin
+ FDashOffset := 0;
+ SetLength(FDashArray, 6);
+ FDashArray[0] := 1 * 3;
+ FDashArray[1] := 1;
+ FDashArray[2] := 1;
+ FDashArray[3] := 1;
+ FDashArray[4] := 1;
+ FDashArray[5] := 1;
+ end;
+ TStrokeDash.Custom:
+ ;
+ else
+ FDashOffset := 0;
+ SetLength(FDashArray, 0);
+ end;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+procedure TStrokeBrush.SetJoin(const Value: TStrokeJoin);
+begin
+ if FJoin <> Value then
+ begin
+ FJoin := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+procedure TStrokeBrush.SetThickness(const Value: Single);
+var
+ NewValue: Single;
+begin
+ NewValue := Max(Value, 0);
+ if not SameValue(FThickness, NewValue, TEpsilon.Vector) then
+ begin
+ FThickness := NewValue;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+{ TFontWeightHelper }
+
+function TFontWeightHelper.IsRegular: Boolean;
+begin
+ Result := Self = TFontWeight.Regular;
+end;
+
+{ TFontSlantHelper }
+
+function TFontSlantHelper.IsRegular: Boolean;
+begin
+ Result := Self = TFontSlant.Regular;
+end;
+
+{ TFontStretchHelper }
+
+function TFontStretchHelper.IsRegular: Boolean;
+begin
+ Result := Self = TFontStretch.Regular;
+end;
+
+{ TFontStyleExt }
+
+class function TFontStyleExt.Create(const AWeight: TFontWeight; const AStant: TFontSlant; const AStretch: TFontStretch;
+ const AOtherStyles: TFontStyles): TFontStyleExt;
+begin
+ Result := TFontStyleExt.Create(AOtherStyles);
+ Result.Weight := AWeight;
+ Result.Slant := AStant;
+ Result.Stretch := AStretch;
+end;
+
+class function TFontStyleExt.Create(const AStyle: TFontStyles): TFontStyleExt;
+begin
+ Result.Weight := TFontWeight.Regular;
+ Result.Slant := TFontSlant.Regular;
+ Result.Stretch := TFontStretch.Regular;
+ if AStyle <> [] then
+ begin
+ if TFontStyle.fsBold in AStyle then
+ Result.Weight := TFontWeight.Bold;
+ if TFontStyle.fsItalic in AStyle then
+ Result.Slant := TFontSlant.Oblique;
+ end;
+ Result.SimpleStyle := AStyle - [TFontStyle.fsBold, TFontStyle.fsItalic];
+end;
+
+class function TFontStyleExt.Default: TFontStyleExt;
+begin
+ Result := TFontStyleExt.Create([]);
+end;
+
+class operator TFontStyleExt.Equal(const A, B: TFontStyleExt): Boolean;
+begin
+ Result := (A.SimpleStyle = B.SimpleStyle) and (A.Weight = B.Weight) and (A.Slant = B.Slant)
+ and (A.Stretch = B.Stretch);
+end;
+
+class operator TFontStyleExt.NotEqual(const A, B: TFontStyleExt): Boolean;
+begin
+ Result := (A.SimpleStyle <> B.SimpleStyle) or (A.Weight <> B.Weight) or (A.Slant <> B.Slant)
+ or (A.Stretch <> B.Stretch);
+end;
+
+class operator TFontStyleExt.Implicit(const AStyle: TFontStyleExt): TFontStyles;
+begin
+ Result := AStyle.SimpleStyle;
+ if not AStyle.Weight.IsRegular then
+ Include(Result, TFontStyle.fsBold);
+ if not AStyle.Slant.IsRegular then
+ Include(Result, TFontStyle.fsItalic);
+end;
+
+class operator TFontStyleExt.Add(const A, B: TFontStyleExt): TFontStyleExt;
+begin
+ Result := A;
+ Result.SimpleStyle := Result.SimpleStyle + B.SimpleStyle;
+end;
+
+class operator TFontStyleExt.Add(const A: TFontStyleExt; const B: TFontStyle): TFontStyleExt;
+begin
+ Result := A;
+ Result.SimpleStyle := Result.SimpleStyle + [B] - [TFontStyle.fsBold, TFontStyle.fsItalic];
+ if B = TFontStyle.fsBold then
+ Result.Weight := TFontWeight.Bold;
+ if B = TFontStyle.fsItalic then
+ Result.Slant := TFontSlant.Oblique;
+end;
+
+class operator TFontStyleExt.Add(const A: TFontStyleExt; const B: TFontStyles): TFontStyleExt;
+begin
+ Result := A;
+ Result.SimpleStyle := Result.SimpleStyle + B - [TFontStyle.fsBold, TFontStyle.fsItalic];
+ if TFontStyle.fsBold in B then
+ Result.Weight := TFontWeight.Bold;
+ if TFontStyle.fsItalic in B then
+ Result.Slant := TFontSlant.Oblique;
+end;
+
+class operator TFontStyleExt.Subtract(const A: TFontStyleExt; const B: TFontStyle): TFontStyleExt;
+begin
+ Result := A;
+ Result.SimpleStyle := Result.SimpleStyle - [B] - [TFontStyle.fsBold, TFontStyle.fsItalic];
+ if B = TFontStyle.fsBold then
+ Result.Weight := TFontWeight.Regular;
+ if B = TFontStyle.fsItalic then
+ Result.Slant := TFontSlant.Regular;
+end;
+
+class operator TFontStyleExt.Subtract(const A: TFontStyleExt; const B: TFontStyles): TFontStyleExt;
+begin
+ Result := A;
+ Result.SimpleStyle := Result.SimpleStyle - B - [TFontStyle.fsBold, TFontStyle.fsItalic];
+ if TFontStyle.fsBold in B then
+ Result.Weight := TFontWeight.Regular;
+ if TFontStyle.fsItalic in B then
+ Result.Slant := TFontSlant.Regular;
+end;
+
+class operator TFontStyleExt.In(const A: TFontStyle; const B: TFontStyleExt): Boolean;
+begin
+ if A in [TFontStyle.fsUnderline, TFontStyle.fsStrikeOut] then
+ Result := A in B.SimpleStyle
+ else if A = TFontStyle.fsBold then
+ Result := B.Weight > TFontWeight.Regular
+ else if A = TFontStyle.fsItalic then
+ Result := not B.Slant.IsRegular
+ else
+ Result := False;
+end;
+
+class operator TFontStyleExt.Multiply(const A: TFontStyles; const B: TFontStyleExt): TFontStyles;
+begin
+ Result := A * B;
+end;
+
+function TFontStyleExt.IsRegular: Boolean;
+begin
+ Result := (Weight = TFontWeight.Regular) and (Stretch = TFontStretch.Regular) and (Slant = TFontSlant.Regular);
+end;
+
+{ TFont }
+
+procedure TFont.SetFamily(const Value: TFontName);
+begin
+ if FFamily <> Value then
+ begin
+ FFamily := Value;
+ Change;
+ end;
+end;
+
+procedure TFont.SetSize(const Value: Single);
+var
+ LSize: Single;
+begin
+ LSize := EnsureRange(Value, 1, MaxFontSize);
+ if not SameValue(FSize, LSize, TEpsilon.FontSize) then
+ begin
+ FSize := LSize;
+ Change;
+ end;
+end;
+
+function TFont.GetStyle: TFontStyles;
+begin
+ Result := FStyleExt;
+end;
+
+procedure TFont.SetStyle(const Value: TFontStyles);
+var
+ LStyle: TFontStyleExt;
+begin
+ LStyle := TFontStyleExt.Create(Value);
+ if FStyleExt <> LStyle then
+ begin
+ FStyleExt := LStyle;
+ Change;
+ end;
+end;
+
+procedure TFont.SetStyleExt(const Value: TFontStyleExt);
+begin
+ if FStyleExt <> Value then
+ begin
+ FStyleExt := Value;
+ Change;
+ end;
+end;
+
+procedure TFont.ReadStyleExt(AStream: TStream);
+begin
+ AStream.Read(FStyleExt.SimpleStyle, SizeOf(TFontStyles));
+ AStream.Read(FStyleExt.Weight, SizeOf(TFontWeight));
+ AStream.Read(FStyleExt.Slant, SizeOf(TFontSlant));
+ AStream.Read(FStyleExt.Stretch, SizeOf(TFontStretch));
+end;
+
+procedure TFont.WriteStyleExt(AStream: TStream);
+begin
+ AStream.Write(FStyleExt.SimpleStyle, SizeOf(TFontStyles));
+ AStream.Write(FStyleExt.Weight, SizeOf(TFontWeight));
+ AStream.Write(FStyleExt.Slant, SizeOf(TFontSlant));
+ AStream.Write(FStyleExt.Stretch, SizeOf(TFontStretch));
+end;
+
+procedure TFont.DefineProperties(Filer: TFiler);
+begin
+ Filer.DefineBinaryProperty('StyleExt', ReadStyleExt, WriteStyleExt, not FStyleExt.IsRegular or (FStyleExt.SimpleStyle <> []));
+ inherited;
+end;
+
+function TFont.DefaultFamily: string;
+var
+ Service: IFMXSystemFontService;
+begin
+ if FontService = nil then
+ begin
+ TPlatformServices.Current.SupportsPlatformService(IFMXSystemFontService, Service);
+ FontService := Service;
+ end;
+ if FontService <> nil then
+ Result := FontService.GetDefaultFontFamilyName
+ else
+ Result := DefaultFontFamily;
+end;
+
+function TFont.DefaultSize: Single;
+var
+ Service: IFMXSystemFontService;
+begin
+ if FontService = nil then
+ begin
+ TPlatformServices.Current.SupportsPlatformService(IFMXSystemFontService, Service);
+ FontService := Service;
+ end;
+ if FontService <> nil then
+ Result := FontService.GetDefaultFontSize
+ else
+ Result := DefaultFontSize;
+end;
+
+procedure TFont.DoChanged;
+begin
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+constructor TFont.Create;
+begin
+ inherited;
+ FUpdating := True;
+ SetSettings(DefaultFamily, DefaultSize, TFontStyleExt.Default);
+end;
+
+procedure TFont.AfterConstruction;
+begin
+ inherited;
+ FChanged := False;
+ FUpdating := False;
+end;
+
+procedure TFont.Change;
+begin
+ if not FUpdating then
+ begin
+ FChanged := False;
+ DoChanged;
+ end
+ else
+ FChanged := True;
+end;
+
+procedure TFont.Assign(Source: TPersistent);
+var
+ LFont: TFont;
+begin
+ if (Source = nil) or (Source is TFont) then
+ begin
+ if Source = nil then
+ LFont := TFontClass(ClassType).Create
+ else
+ LFont := TFont(Source);
+ try
+ SetSettings(LFont.Family, LFont.Size, LFont.StyleExt);
+ finally
+ if Source = nil then
+ LFont.Free;
+ end;
+ end
+ else
+ inherited;
+end;
+
+procedure TFont.SetSettings(const AFamily: string; const ASize: Single; const AStyle: TFontStyleExt);
+var
+ LUpdating: Boolean;
+begin
+ LUpdating := FUpdating;
+ try
+ FUpdating := True;
+ Family := AFamily;
+ Size := ASize;
+ StyleExt := AStyle;
+ finally
+ FUpdating := LUpdating;
+ end;
+ if not FUpdating and FChanged then
+ Change;
+end;
+
+function TFont.Equals(Obj: TObject): Boolean;
+begin
+ Result := (Obj is TFont) and SameValue(Size, TFont(Obj).Size, TEpsilon.FontSize) and (Family = TFont(Obj).Family) and
+ (StyleExt = TFont(Obj).StyleExt);
+end;
+
+function TFont.IsFamilyStored: Boolean;
+begin
+ Result := FFamily <> DefaultFamily;
+end;
+
+function TFont.IsSizeStored: Boolean;
+begin
+ Result := not SameValue(FSize, DefaultSize, TEpsilon.FontSize);
+end;
+
+{ TFontColorForState }
+
+constructor TFontColorForState.Create(const AOwner: TTextSettings);
+begin
+ inherited Create;
+ FOwner := AOwner;
+ BeginUpdate;
+end;
+
+procedure TFontColorForState.AfterConstruction;
+begin
+ inherited;
+ FChanged := False;
+ EndUpdate;
+end;
+
+procedure TFontColorForState.Assign(Source: TPersistent);
+var
+ LFontColors: TFontColorForState;
+ I: TIndex;
+begin
+ if (Source is TFontColorForState) or (Source = nil) then
+ begin
+ if Source = nil then
+ LFontColors := TFontColorForStateClass(ClassType).Create(Owner)
+ else
+ LFontColors := TFontColorForState(Source);
+ try
+ BeginUpdate;
+ try
+ for I := Low(TIndex) to High(TIndex) do
+ Color[I] := LFontColors.Color[I];
+ finally
+ EndUpdate;
+ end;
+ finally
+ if Source = nil then
+ LFontColors.Free;
+ end;
+ end
+ else
+ inherited;
+end;
+
+function TFontColorForState.Equals(Obj: TObject): Boolean;
+var
+ I: TIndex;
+begin
+ Result := Obj is TFontColorForState;
+ if Result then
+ for I := Low(TIndex) to High(TIndex) do
+ if FColor[I] <> TFontColorForState(Obj).FColor[I] then
+ Exit(False);
+end;
+
+procedure TFontColorForState.BeginUpdate;
+begin
+ Inc(FUpdateCount);
+end;
+
+procedure TFontColorForState.EndUpdate;
+begin
+ if FUpdateCount > 0 then
+ begin
+ Dec(FUpdateCount);
+ if (FUpdateCount = 0) and FChanged then
+ try
+ DoChanged;
+ finally
+ FChanged := False;
+ end;
+ end;
+end;
+
+procedure TFontColorForState.Change;
+begin
+ if FUpdateCount = 0 then
+ begin
+ try
+ DoChanged;
+ finally
+ FChanged := False;
+ end;
+ end
+ else
+ FChanged := True;
+end;
+
+procedure TFontColorForState.DoChanged;
+begin
+ if FOwner <> nil then
+ FOwner.Change;
+end;
+
+function TFontColorForState.GetColor(const Index: TIndex): TAlphaColor;
+begin
+ Result := FColor[Index];
+end;
+
+procedure TFontColorForState.SetColor(const Index: TIndex; const Value: TAlphaColor);
+begin
+ if FColor[Index] <> Value then
+ begin
+ FColor[Index] := Value;
+ Change;
+ end;
+end;
+
+function TFontColorForState.GetCurrentColor(const Index: TIndex): TAlphaColor;
+begin
+ Result := FColor[Index];
+ if (Result = claNull) and (Owner <> nil) then
+ Result := Owner.FontColor;
+end;
+
+function TFontColorForState.GetOwner: TPersistent;
+begin
+ Result := FOwner;
+end;
+
+{ TTextSettings }
+
+type
+ TSettingsFont = class(TFont)
+ private
+ [Weak] FTextSettings: TTextSettings;
+ protected
+ procedure DoChanged; override;
+ public
+ constructor Create(const ATextSettings: TTextSettings);
+ property TextSettings: TTextSettings read FTextSettings;
+ end;
+
+{ TSettingsFont }
+
+constructor TSettingsFont.Create(const ATextSettings: TTextSettings);
+begin
+ inherited Create;
+ FTextSettings := ATextSettings;
+end;
+
+procedure TSettingsFont.DoChanged;
+begin
+ if FTextSettings <> nil then
+ begin
+ FTextSettings.IsAdjustChanged := True;
+ FTextSettings.Change;
+ end;
+ inherited;
+end;
+
+constructor TTextSettings.Create(const AOwner: TPersistent);
+begin
+ inherited Create;
+ FOwner := AOwner;
+ BeginUpdate;
+ FFontColorForState := CreateFontColorForState;
+ FFont := TSettingsFont.Create(Self);
+ FontColor := TAlphaColorRec.Black;
+ HorzAlign := TTextAlign.Leading;
+ VertAlign := TTextAlign.Center;
+ Trimming := TTextTrimming.None;
+ WordWrap := False;
+end;
+
+procedure TTextSettings.AfterConstruction;
+begin
+ inherited;
+ FIsChanged := False;
+ FIsAdjustChanged := False;
+ EndUpdate;
+end;
+
+destructor TTextSettings.Destroy;
+begin
+ FFont.Free;
+ FFontColorForState.Free;
+ inherited;
+end;
+
+function TTextSettings.GetOwner: TPersistent;
+begin
+ Result := FOwner;
+end;
+
+procedure TTextSettings.DoAssign(const Source: TTextSettings);
+begin
+ Font.Assign(Source.Font);
+ FontColor := Source.FontColor;
+ FontColorForState.Assign(Source.FontColorForState);
+ HorzAlign := Source.HorzAlign;
+ VertAlign := Source.VertAlign;
+ WordWrap := Source.WordWrap;
+ Trimming := Source.Trimming;
+end;
+
+procedure TTextSettings.Assign(Source: TPersistent);
+var
+ LTextSettings: TTextSettings;
+begin
+ if (Source = nil) or (Source is TTextSettings) then
+ begin
+ if Source = nil then
+ LTextSettings := TTextSettingsClass(ClassType).Create(Owner)
+ else
+ LTextSettings := TTextSettings(Source);
+ try
+ BeginUpdate;
+ try
+ DoAssign(LTextSettings);
+ finally
+ EndUpdate;
+ end;
+ finally
+ if Source = nil then
+ LTextSettings.Free;
+ end;
+ end
+ else
+ inherited;
+end;
+
+function TTextSettings.Equals(Obj: TObject): Boolean;
+var
+ Source: TTextSettings;
+begin
+ Result := Obj is TTextSettings;
+ if Result then
+ begin
+ Source := TTextSettings(Obj);
+ Result := (HorzAlign = Source.HorzAlign) and (VertAlign = Source.VertAlign) and (WordWrap = Source.WordWrap) and
+ (FontColor = Source.FontColor) and (Trimming = Source.Trimming) and (Font.Equals(Source.Font)) and
+ (FontColorForState.Equals(Source.FontColorForState));
+ end;
+end;
+
+procedure TTextSettings.DoAssignNotStyled(const TextSettings: TTextSettings; const StyledSettings: TStyledSettings);
+begin
+ if not (TStyledSetting.Family in StyledSettings) then
+ Font.Family := TextSettings.Font.FFamily;
+ if not (TStyledSetting.Size in StyledSettings) then
+ Font.Size := TextSettings.Font.Size;
+ if not (TStyledSetting.Style in StyledSettings) then
+ Font.StyleExt := TextSettings.Font.StyleExt;
+ if not (TStyledSetting.FontColor in StyledSettings) then
+ begin
+ FontColor := TextSettings.FontColor;
+ FontColorForState := TextSettings.FontColorForState;
+ end;
+ if not (TStyledSetting.Other in StyledSettings) then
+ begin
+ HorzAlign := TextSettings.HorzAlign;
+ VertAlign := TextSettings.VertAlign;
+ WordWrap := TextSettings.WordWrap;
+ Trimming := TextSettings.Trimming;
+ end;
+end;
+
+procedure TTextSettings.AssignNotStyled(const TextSettings: TTextSettings; const StyledSettings: TStyledSettings);
+var
+ LTextSettings: TTextSettings;
+begin
+ if StyledSettings <> AllStyledSettings then
+ begin
+ if StyledSettings = [] then
+ Assign(TextSettings)
+ else
+ begin
+ if TextSettings = nil then
+ LTextSettings := TTextSettingsClass(ClassType).Create(Owner)
+ else
+ LTextSettings := TextSettings;
+ try
+ BeginUpdate;
+ try
+ DoAssignNotStyled(LTextSettings, StyledSettings);
+ finally
+ EndUpdate;
+ end;
+ finally
+ if TextSettings = nil then
+ LTextSettings.Free;
+ end;
+ end;
+ end;
+end;
+
+procedure TTextSettings.UpdateStyledSettings(const OldTextSettings, DefaultTextSettings: TTextSettings; var StyledSettings: TStyledSettings);
+begin
+ // If the user changed the value of the property, and it differs from the default,
+ // then delete the corresponding value from StyledSettings
+ if (not SameText(OldTextSettings.Font.Family, Font.Family)) and
+ (not SameText(DefaultTextSettings.Font.Family, Font.Family)) then
+ Exclude(StyledSettings, TStyledSetting.Family);
+
+ if (not SameValue(OldTextSettings.Font.Size, Font.Size, TEpsilon.FontSize)) and
+ (not SameValue(DefaultTextSettings.Font.Size, Font.Size, TEpsilon.FontSize)) then
+ Exclude(StyledSettings, TStyledSetting.Size);
+
+ if (OldTextSettings.Font.StyleExt <> Font.StyleExt) and (DefaultTextSettings.Font.StyleExt <> Font.StyleExt) then
+ Exclude(StyledSettings, TStyledSetting.Style);
+
+ if ((OldTextSettings.FontColor <> FontColor) and (DefaultTextSettings.FontColor <> FontColor)) then
+ Exclude(StyledSettings, TStyledSetting.FontColor);
+
+ if ((OldTextSettings.HorzAlign <> HorzAlign) and (DefaultTextSettings.HorzAlign <> HorzAlign)) or
+ ((OldTextSettings.VertAlign <> VertAlign) and (DefaultTextSettings.VertAlign <> VertAlign)) or
+ ((OldTextSettings.Trimming <> Trimming) and (DefaultTextSettings.Trimming <> Trimming)) or
+ ((OldTextSettings.WordWrap <> WordWrap) and (DefaultTextSettings.WordWrap <> WordWrap)) then
+ Exclude(StyledSettings, TStyledSetting.Other);
+
+ if (not OldTextSettings.FontColorForState.Equals(FontColorForState)) and
+ (not DefaultTextSettings.FontColorForState.Equals(FontColorForState)) then
+ Exclude(StyledSettings, TStyledSetting.FontColor);
+end;
+
+procedure TTextSettings.BeginUpdate;
+begin
+ Inc(FUpdateCount);
+end;
+
+procedure TTextSettings.EndUpdate;
+begin
+ if FUpdateCount > 0 then
+ begin
+ Dec(FUpdateCount);
+ if (FUpdateCount = 0) and (FIsChanged or FIsAdjustChanged) then
+ try
+ DoChanged;
+ finally
+ FIsChanged := False;
+ FIsAdjustChanged := False;
+ end;
+ end;
+end;
+
+procedure TTextSettings.Change;
+begin
+ FIsChanged := True;
+ if (FUpdateCount = 0) then
+ begin
+ try
+ DoChanged;
+ finally
+ FIsChanged := False;
+ FIsAdjustChanged := False;
+ end;
+ end;
+end;
+
+procedure TTextSettings.DoChanged;
+begin
+ if Assigned(OnChanged) then
+ OnChanged(Self);
+end;
+
+procedure TTextSettings.SetFont(const Value: TFont);
+begin
+ if not (((Font = nil) and (Value = nil)) or ((Font <> nil) and Font.Equals(Value))) then
+ begin
+ Font.Assign(Value);
+ IsAdjustChanged := True;
+ Change;
+ end;
+end;
+
+procedure TTextSettings.SetFontColor(const Value: TAlphaColor);
+begin
+ if FFontColor <> Value then
+ begin
+ FFontColor := Value;
+ Change;
+ end;
+end;
+
+procedure TTextSettings.SetHorzAlign(const Value: TTextAlign);
+begin
+ if FHorzAlign <> Value then
+ begin
+ FHorzAlign := Value;
+ IsAdjustChanged := True;
+ Change;
+ end;
+end;
+
+procedure TTextSettings.SetVertAlign(const Value: TTextAlign);
+begin
+ if FVertAlign <> Value then
+ begin
+ FVertAlign := Value;
+ IsAdjustChanged := True;
+ Change;
+ end;
+end;
+
+procedure TTextSettings.SetTrimming(const Value: TTextTrimming);
+begin
+ if FTrimming <> Value then
+ begin
+ FTrimming := Value;
+ IsAdjustChanged := True;
+ Change;
+ end;
+end;
+
+procedure TTextSettings.SetWordWrap(const Value: Boolean);
+begin
+ if FWordWrap <> Value then
+ begin
+ FWordWrap := Value;
+ IsAdjustChanged := True;
+ Change;
+ end;
+end;
+
+function TTextSettings.GetTextColorsClass: TFontColorForStateClass;
+begin
+ Result := nil;
+end;
+
+function TTextSettings.CreateFontColorForState: TFontColorForState;
+var
+ LClass: TFontColorForStateClass;
+begin
+ LClass := GetTextColorsClass;
+ if LClass = nil then
+ LClass := TFontColorForState;
+ Result := LClass.Create(Self);
+end;
+
+procedure TTextSettings.SetFontColorForState(const Value: TFontColorForState);
+begin
+ FFontColorForState.Assign(Value);
+end;
+
+function TTextSettings.StoreFontColorForState: Boolean;
+var
+ LFontColors: TFontColorForState;
+begin
+ LFontColors := CreateFontColorForState;
+ try
+ Result := not FFontColorForState.Equals(LFontColors);
+ finally
+ LFontColors.Free;
+ end;
+end;
+
+{ TBitmapCodecManager }
+
+class procedure TBitmapCodecManager.UnInitialize;
+begin
+ FreeAndNil(FCodecsDescriptors);
+end;
+
+class function TBitmapCodecManager.FindCodecClass(const AFileExtension: string; var ACodecClass: TCustomBitmapCodecClass): Boolean;
+var
+ Descriptor: TCodecDescriptor;
+begin
+ Result := False;
+ ACodecClass := nil;
+ for Descriptor in CodecsDescriptors do
+ if SameExtension(AFileExtension, Descriptor.Extension) then
+ begin
+ ACodecClass := Descriptor.CodecClass;
+ Exit(True);
+ end;
+end;
+
+class function TBitmapCodecManager.FindWritableCodecClass(const AFileExtension: string;
+ var ACodecClass: TCustomBitmapCodecClass): Boolean;
+var
+ Descriptor: TCodecDescriptor;
+begin
+ Result := False;
+ ACodecClass := nil;
+ for Descriptor in CodecsDescriptors do
+ if Descriptor.CanSave and SameExtension(AFileExtension, Descriptor.Extension) then
+ begin
+ ACodecClass := Descriptor.CodecClass;
+ Exit(True);
+ end;
+end;
+
+class function TBitmapCodecManager.GuessCodecClass(const AFileExtension: string): TCustomBitmapCodecClass;
+begin
+ if not FindCodecClass(AFileExtension, Result) and (CodecsDescriptors.Count > 0) then
+ // If none found, fallback to the first one.
+ Result := CodecsDescriptors.First.CodecClass;
+end;
+
+class procedure TBitmapCodecManager.RegisterBitmapCodecClass(const AFileExtension, ADescription: string; const ACanSave: Boolean;
+ const ACodecClass: TCustomBitmapCodecClass);
+var
+ LDescriptor: TCodecDescriptor;
+begin
+ if AFileExtension.Trim.IsEmpty then
+ raise EBitmapCodecManagerException.CreateRes(@SCodecFileExtensionCannotEmpty);
+
+ if ACodecClass = nil then
+ raise EBitmapCodecManagerException.CreateRes(@SCodecClassCannotBeNil);
+
+ if CodecExists(AFileExtension) then
+ raise EBitmapCodecManagerException.CreateResFmt(@SCodecAlreadyExists, [AFileExtension]);
+
+ LDescriptor.Extension := AFileExtension;
+ LDescriptor.Description := ADescription;
+ LDescriptor.CodecClass := ACodecClass;
+ LDescriptor.CanSave := ACanSave;
+ CodecsDescriptors.Add(LDescriptor);
+end;
+
+class procedure TBitmapCodecManager.UnregisterBitmapCodecClass(const AFileExtension: string);
+var
+ I: Integer;
+begin
+ for I := CodecsDescriptors.Count - 1 downto 0 do
+ if SameText(AFileExtension, CodecsDescriptors[I].Extension) then
+ begin
+ CodecsDescriptors.Delete(I);
+ Exit;
+ end;
+end;
+
+class function TBitmapCodecManager.CodecExists(const AFileName: string): Boolean;
+var
+ CodecClass: TCustomBitmapCodecClass;
+begin
+ Result := FindCodecClass(ExtractFileExt(AFileName), CodecClass);
+end;
+
+class function TBitmapCodecManager.GetCodecsDescriptors: TList;
+begin
+ if FCodecsDescriptors = nil then
+ FCodecsDescriptors := TList.Create;
+
+ Result := FCodecsDescriptors;
+end;
+
+class function TBitmapCodecManager.GetFileTypes: string;
+var
+ Descriptor: TCodecDescriptor;
+begin
+ Result := string.Empty;
+ for Descriptor in CodecsDescriptors do
+ if Result.IsEmpty then
+ Result := '*' + Descriptor.Extension
+ else
+ Result := Result + ';' + '*' + Descriptor.Extension;
+end;
+
+class function TBitmapCodecManager.GetFilterString: string;
+var
+ Descriptor: TCodecDescriptor;
+ CodecFilter: string;
+ FileTypes: string;
+begin
+ Result := string.Empty;
+ for Descriptor in CodecsDescriptors do
+ begin
+ CodecFilter := Descriptor.ToFilterString;
+ if Result.IsEmpty then
+ Result := CodecFilter
+ else
+ Result := Result + '|' + CodecFilter;
+ end;
+ // all files
+ FileTypes := GetFileTypes;
+ Result := SVAllFiles + ' (' + FileTypes + ')|' + FileTypes + '|' + Result;
+end;
+
+class function TBitmapCodecManager.GetImageSize(const AFileName: string): TPointF;
+var
+ CodecClass: TCustomBitmapCodecClass;
+ DataType: string;
+begin
+ DataType := TImageTypeChecker.GetType(AFileName);
+ CodecClass := GuessCodecClass(DataType);
+ if CodecClass <> nil then
+ Result := CodecClass.GetImageSize(AFileName)
+ else
+ Result := TPointF.Zero;
+end;
+
+class function TBitmapCodecManager.LoadFromFile(const AFileName: string; const ABitmap: TBitmapSurface;
+ const AMaxSizeLimit: Cardinal = 0): Boolean;
+var
+ CodecClass: TCustomBitmapCodecClass;
+ Codec: TCustomBitmapCodec;
+ DataType: string;
+begin
+ if ABitmap = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['ABitmap']);
+
+ DataType := TImageTypeChecker.GetType(AFileName);
+ CodecClass := GuessCodecClass(DataType);
+ if CodecClass <> nil then
+ begin
+ Codec := CodecClass.Create;
+ try
+ Result := Codec.LoadFromFile(AFileName, ABitmap, AMaxSizeLimit);
+ finally
+ Codec.Free;
+ end;
+ end
+ else
+ Result := False;
+end;
+
+class function TBitmapCodecManager.LoadThumbnailFromFile(const AFileName: string; const AFitWidth, AFitHeight: Single;
+ const AUseEmbedded: Boolean; const ABitmap: TBitmapSurface): Boolean;
+var
+ CodecClass: TCustomBitmapCodecClass;
+ Codec: TCustomBitmapCodec;
+ DataType: string;
+begin
+ if ABitmap = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['ABitmap']);
+
+ DataType := TImageTypeChecker.GetType(AFileName);
+ CodecClass := GuessCodecClass(DataType);
+ if CodecClass <> nil then
+ begin
+ Codec := CodecClass.Create;
+ try
+ Result := Codec.LoadThumbnailFromFile(AFileName, AFitWidth, AFitHeight, AUseEmbedded, ABitmap);
+ finally
+ Codec.Free;
+ end;
+ end
+ else
+ Result := False;
+end;
+
+class function TBitmapCodecManager.LoadFromStream(const AStream: TStream; const ABitmap: TBitmapSurface;
+ const AMaxSizeLimit: Cardinal = 0): Boolean;
+var
+ CodecClass: TCustomBitmapCodecClass;
+ Codec: TCustomBitmapCodec;
+ DataType: string;
+begin
+ if AStream = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['AStream']);
+ if ABitmap = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['ABitmap']);
+
+ Result := False;
+ DataType := TImageTypeChecker.GetType(AStream);
+ CodecClass := GuessCodecClass(DataType);
+ if CodecClass <> nil then
+ begin
+ Codec := CodecClass.Create;
+ try
+ Result := Codec.LoadFromStream(AStream, ABitmap, AMaxSizeLimit);
+ finally
+ Codec.Free;
+ end;
+ end
+end;
+
+class function TBitmapCodecManager.SameExtension(const ALeft, ARight: string): Boolean;
+begin
+ Result := SameText(ALeft, ARight, loUserLocale) or SameText('.' + ALeft, ARight, loUserLocale);
+end;
+
+class function TBitmapCodecManager.SaveToFile(const AFileName: string; const ABitmap: TBitmapSurface;
+ const ASaveParams: PBitmapCodecSaveParams = nil): Boolean;
+var
+ Codec: TCustomBitmapCodec;
+ CodecClass: TCustomBitmapCodecClass;
+begin
+ if ABitmap = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['ABitmap']);
+
+ Result := False;
+ if FindWritableCodecClass(ExtractFileExt(AFileName), CodecClass) then
+ begin
+ Codec := CodecClass.Create;
+ try
+ Result := Codec.SaveToFile(AFileName, ABitmap, ASaveParams);
+ finally
+ Codec.Free;
+ end;
+ end;
+end;
+
+class function TBitmapCodecManager.SaveToStream(const AStream: TStream; const ABitmap: TBitmapSurface; const AExtension: string;
+ const ASaveParams: PBitmapCodecSaveParams = nil): Boolean;
+var
+ Codec: TCustomBitmapCodec;
+ CodecClass: TCustomBitmapCodecClass;
+begin
+ if AStream = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['AStream']);
+ if ABitmap = nil then
+ raise EBitmapCodecManagerException.CreateResFmt(@SWrongParameter, ['ABitmap']);
+
+ Result := False;
+ if FindWritableCodecClass(AExtension, CodecClass) then
+ begin
+ Codec := CodecClass.Create;
+ try
+ Result := Codec.SaveToStream(AStream, ABitmap, AExtension, ASaveParams);
+ finally
+ Codec.Free;
+ end;
+ end;
+end;
+
+{ TBitmapData }
+
+constructor TBitmapData.Create(const AWidth, AHeight: Integer; const APixelFormat: TPixelFormat);
+begin
+ Self.FWidth := AWidth;
+ Self.FHeight := AHeight;
+ Self.FPixelFormat := APixelFormat;
+end;
+
+function TBitmapData.GetBytesPerLine: Integer;
+begin
+ Result := Width * BytesPerPixel;
+end;
+
+function TBitmapData.GetBytesPerPixel: Integer;
+begin
+ Result := PixelFormatBytes[PixelFormat];
+end;
+
+function TBitmapData.GetPixel(const X, Y: Integer): TAlphaColor;
+begin
+ Result := PixelToAlphaColor(GetPixelAddr(X, Y), PixelFormat);
+end;
+
+function TBitmapData.GetPixelAddr(const I, J: Integer): Pointer;
+begin
+ Result := Pointer(NativeInt(GetScanline(J)) + I * BytesPerPixel);
+end;
+
+function TBitmapData.GetScanline(const I: Integer): Pointer;
+begin
+ Result := Pointer(NativeInt(Data) + I * Pitch);
+end;
+
+procedure TBitmapData.Copy(const Source: TBitmapData);
+var
+ I: Integer;
+begin
+ for I := 0 to Height - 1 do
+ Move(Source.GetScanline(I)^, GetScanline(I)^, BytesPerLine);
+end;
+
+procedure TBitmapData.SetPixel(const X, Y: Integer; const AColor: TAlphaColor);
+begin
+ AlphaColorToPixel(AColor, GetPixelAddr(X, Y), PixelFormat);
+end;
+
+{ TBitmapImage }
+
+constructor TBitmapImage.Create;
+begin
+ inherited;
+ FBitmapScale := 1;
+end;
+
+procedure TBitmapImage.CreateHandle;
+begin
+ FHandle := CanvasClass.InitializeBitmap(Width, Height, BitmapScale, FPixelFormat);
+end;
+
+procedure TBitmapImage.FreeHandle;
+begin
+ FCanvasClass.FinalizeBitmap(FHandle);
+ FHandle := 0;
+end;
+
+function TBitmapImage.GetCanvasClass: TCanvasClass;
+begin
+ if FCanvasClass = nil then
+ FCanvasClass := TCanvasManager.GetDefaultCanvas;
+ Result := FCanvasClass;
+end;
+
+procedure TBitmapImage.IncreaseRefCount;
+begin
+ AtomicIncrement(FRefCount);
+end;
+
+procedure TBitmapImage.DecreaseRefCount;
+begin
+ if Self <> nil then
+ begin
+ AtomicDecrement(FRefCount);
+ if FRefCount = 0 then
+ begin
+ if FHandle <> 0 then
+ FreeHandle;
+ DisposeOf;
+ end;
+ end;
+end;
+
+{ TBitmap }
+
+constructor TBitmap.Create;
+begin
+ inherited;
+ FImage := TBitmapImage.Create;
+ FImage.IncreaseRefCount;
+end;
+
+constructor TBitmap.Create(const AWidth, AHeight: Integer);
+begin
+ Create;
+ SetSize(AWidth, AHeight);
+end;
+
+constructor TBitmap.CreateFromStream(const AStream: TStream);
+begin
+ Create;
+ LoadFromStream(AStream);
+end;
+
+constructor TBitmap.CreateFromFile(const AFileName: string);
+begin
+ Create;
+ LoadFromFile(AFileName);
+end;
+
+constructor TBitmap.CreateFromBitmapAndMask(const Bitmap, Mask: TBitmap);
+
+ function GetBrightness(const Color: TAlphaColor): Integer;
+ begin
+ { Faster integer variant of formula:
+ Result = R * 0.2126 + G * 0.7152 + B * 0.0722 }
+ Result := ((Integer(TAlphaColorRec(Color).R) * 54) + (Integer(TAlphaColorRec(Color).G) * 183) +
+ (Integer(TAlphaColorRec(Color).B) * 19)) div 256;
+ end;
+
+var
+ I, J: Integer;
+ D, B, M: TBitmapData;
+ C: TAlphaColor;
+begin
+ Create(Bitmap.Width, Bitmap.Height);
+ if (Bitmap.Width <> Mask.Width) or (Bitmap.Height <> Mask.Height) then
+ raise EBitmapIncorrectSize.Create(SBitmapIncorrectSize);
+ if Map(TMapAccess.Write, D) then
+ try
+ if Bitmap.Map(TMapAccess.Read, B) then
+ try
+ if Mask.Map(TMapAccess.Read, M) then
+ try
+ for J := 0 to Height - 1 do
+ for I := 0 to Width - 1 do
+ begin
+ C := B.GetPixel(I, J);
+ TAlphaColorRec(C).A := GetBrightness(M.GetPixel(I, J));
+ D.SetPixel(I, J, C);
+ end;
+ finally
+ Mask.Unmap(M);
+ end;
+ finally
+ Bitmap.Unmap(B);
+ end;
+ finally
+ Unmap(D);
+ end;
+end;
+
+destructor TBitmap.Destroy;
+begin
+ DestroyResources;
+ FImage.DecreaseRefCount;
+ inherited;
+end;
+
+function TBitmap.GetImage: TBitmapImage;
+begin
+ if FImage.Handle = 0 then
+ FImage.CreateHandle;
+ Result := FImage;
+end;
+
+function TBitmap.GetHandle: THandle;
+begin
+ Result := Image.Handle;
+end;
+
+function TBitmap.GetHeight: Integer;
+begin
+ Result := FImage.Height;
+end;
+
+function TBitmap.GetPixelFormat: TPixelFormat;
+begin
+ Result := Image.PixelFormat;
+end;
+
+function TBitmap.GetSize: TSize;
+begin
+ Result := TSize.Create(Width, Height);
+end;
+
+function TBitmap.GetWidth: Integer;
+begin
+ Result := FImage.Width;
+end;
+
+function TBitmap.HandleAllocated: Boolean;
+begin
+ Result := (FImage <> nil) and (Image.Handle <> 0);
+end;
+
+procedure TBitmap.SetWidth(const Value: Integer);
+begin
+ SetSize(Value, Height);
+end;
+
+function TBitmap.GetBitmapScale: Single;
+begin
+ Result := FImage.BitmapScale;
+end;
+
+function TBitmap.GetBounds: TRect;
+begin
+ Result := TRect.Create(0, 0, Width, Height);
+end;
+
+function TBitmap.GetBoundsF: TRectF;
+begin
+ Result := TRectF.Create(0, 0, Width, Height);
+end;
+
+function TBitmap.GetBytesPerLine: Integer;
+begin
+ Result := BytesPerPixel * Width;
+end;
+
+function TBitmap.GetBytesPerPixel: Integer;
+begin
+ Result := PixelFormatBytes[PixelFormat];
+end;
+
+procedure TBitmap.SetBitmapScale(const Scale: Single);
+begin
+ if BitmapScale <> Scale then
+ begin
+ TMonitor.Enter(Self);
+ try
+ CopyToNewReference;
+ FImage.FBitmapScale := Scale;
+ finally
+ TMonitor.Exit(Self);
+ end;
+ end;
+end;
+
+procedure TBitmap.SetHeight(const Value: Integer);
+begin
+ SetSize(Width, Value);
+end;
+
+procedure TBitmap.SetSize(const ASize: TSize);
+begin
+ SetSize(ASize.Width, ASize.Height);
+end;
+
+procedure TBitmap.SetSize(const AWidth, AHeight: Integer);
+var
+ SaveBitmapScale: Single;
+ SavePixelFormat: TPixelFormat;
+begin
+ if (FImage.FWidth <> AWidth) or (FImage.FHeight <> AHeight) then
+ begin
+ if (AWidth > CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) or
+ (AHeight > CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then
+ raise EBitmapSizeTooBig.CreateRes(@SBitmapSizeTooBig);
+
+ TMonitor.Enter(Self);
+ try
+ SaveBitmapScale := BitmapScale;
+ SavePixelFormat := FImage.PixelFormat;
+ try
+ CreateNewReference;
+ FImage.FWidth := Max(0, AWidth);
+ FImage.FHeight := Max(0, AHeight);
+ finally
+ FImage.FBitmapScale := SaveBitmapScale;
+ FImage.FPixelFormat := SavePixelFormat;
+ end;
+ BitmapChanged;
+ finally
+ TMonitor.Exit(Self);
+ end;
+ end;
+end;
+
+procedure TBitmap.DestroyResources;
+begin
+ TMonitor.Enter(Self);
+ try
+ if FCanvas <> nil then
+ FCanvas.DisposeOf;
+ FCanvas := nil;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.FreeHandle;
+begin
+ TMonitor.Enter(Self);
+ try
+ CreateNewReference;
+ BitmapChanged;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.CreateNewReference;
+begin
+ TMonitor.Enter(Self);
+ try
+ DestroyResources;
+ FImage.DecreaseRefCount;
+ FImage := TBitmapImage.Create;
+ FImage.IncreaseRefCount;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.CopyToNewReference;
+var
+ OldHandle: TBitmapImage;
+ Source, Dest: TBitmapData;
+begin
+ if FImage.RefCount > 1 then
+ begin
+ TMonitor.Enter(Self);
+ try
+ OldHandle := FImage;
+ OldHandle.IncreaseRefCount;
+ try
+ CreateNewReference;
+
+ FImage.FWidth := OldHandle.Width;
+ FImage.FHeight := OldHandle.Height;
+ FImage.FPixelFormat := OldHandle.PixelFormat;
+ FImage.FBitmapScale := OldHandle.BitmapScale;
+
+ if CanvasClass.MapBitmap(Handle, TMapAccess.Write, Dest) then
+ begin
+ if CanvasClass.MapBitmap(OldHandle.Handle, TMapAccess.Read, Source) then
+ begin
+ Move(Source.Data^, Dest.Data^, Source.Pitch * FImage.Height);
+ CanvasClass.UnmapBitmap(OldHandle.Handle, Source);
+ end;
+ CanvasClass.UnmapBitmap(Handle, Dest);
+ end;
+ finally
+ OldHandle.DecreaseRefCount;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+ end;
+end;
+
+function TBitmap.GetCanvasClass: TCanvasClass;
+begin
+ Result := Image.CanvasClass;
+end;
+
+procedure TBitmap.Clear(const AColor: TAlphaColor);
+begin
+ ClearRect(TRectF.Create(0, 0, Width, Height), AColor);
+end;
+
+procedure TBitmap.ClearRect(const ARect: TRectF; const AColor: TAlphaColor);
+var
+ R: TRectF;
+ M: TBitmapData;
+ C: Cardinal;
+begin
+ TMonitor.Enter(Self);
+ try
+ R := ARect;
+ if R.Left < 0 then
+ R.Left := 0;
+ if R.Top < 0 then
+ R.Top := 0;
+ if R.Right > Width then
+ R.Right := Width;
+ if R.Bottom > Height then
+ R.Bottom := Height;
+ if R.Bottom < R.Top then
+ R.Bottom := R.Top;
+ if R.Right < R.Left then
+ R.Right := R.Left;
+ if (R.Right < 0) or (R.Top < 0) or (R.Left > Width) or (R.Top > Height) then
+ Exit;
+ if not R.IsEmpty and Map(TMapAccess.Write, M) then
+ try
+ AlphaColorToPixel(PremultiplyAlpha(AColor), @C, PixelFormat);
+ FillAlphaColorRect(PAlphaColorArray(M.Data), M.Pitch div 4, Height, Trunc(R.Left), Trunc(R.Top), Trunc(R.Right),
+ Trunc(R.Bottom), C);
+ finally
+ Unmap(M);
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.CopyFromBitmap(const Source: TBitmap);
+begin
+ TMonitor.Enter(Self);
+ try
+ TCanvas.CopyBitmap(Source, Self);
+ BitmapChanged;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.CopyFromBitmap(const Source: TBitmap; SrcRect: TRect; DestX, DestY: Integer);
+var
+ I, MoveBytes: Integer;
+ SrcData, DestData: TBitmapData;
+begin
+ if Map(TMapAccess.Write, DestData) then
+ try
+ if Source.Map(TMapAccess.Read, SrcData) then
+ try
+ if SrcRect.Left < 0 then
+ begin
+ Dec(DestX, SrcRect.Left);
+ SrcRect.Left := 0;
+ end;
+ if SrcRect.Top < 0 then
+ begin
+ Dec(DestY, SrcRect.Top);
+ SrcRect.Top := 0;
+ end;
+ SrcRect.Right := Min(SrcRect.Right, Source.Width);
+ SrcRect.Bottom := Min(SrcRect.Bottom, Source.Height);
+ if DestX < 0 then
+ begin
+ Dec(SrcRect.Left, DestX);
+ DestX := 0;
+ end;
+ if DestY < 0 then
+ begin
+ Dec(SrcRect.Top, DestY);
+ DestY := 0;
+ end;
+ if DestX + SrcRect.Width > Width then
+ SrcRect.Width := Width - DestX;
+ if DestY + SrcRect.Height > Height then
+ SrcRect.Height := Height - DestY;
+
+ if (SrcRect.Left < SrcRect.Right) and (SrcRect.Top < SrcRect.Bottom) then
+ begin
+ MoveBytes := SrcRect.Width * SrcData.BytesPerPixel;
+ for I := 0 to SrcRect.Height - 1 do
+ Move(SrcData.GetPixelAddr(SrcRect.Left, SrcRect.Top + I)^,
+ DestData.GetPixelAddr(DestX, DestY + I)^, MoveBytes);
+ end;
+ finally
+ Source.Unmap(SrcData);
+ end;
+ finally
+ Unmap(DestData);
+ end;
+end;
+
+procedure TBitmap.DoChange;
+begin
+ if Assigned(FOnChange) then
+ FOnChange(Self);
+end;
+
+function TBitmap.EqualsBitmap(const Bitmap: TBitmap): Boolean;
+var
+ MyMap, BitmapMap: TBitmapData;
+ I: Integer;
+begin
+ if IsEmpty or Bitmap.IsEmpty then
+ begin
+ Result := IsEmpty and Bitmap.IsEmpty;
+ Exit;
+ end;
+ Result := (Width = Bitmap.Width) and (Height = Bitmap.Height) and (PixelFormat = Bitmap.PixelFormat);
+ if Result then
+ begin
+ if Map(TMapAccess.Read, MyMap) then
+ try
+ if Bitmap.Map(TMapAccess.Read, BitmapMap) then
+ try
+ for I := 0 to Height - 1 do
+ if not CompareMem(MyMap.GetScanline(I), BitmapMap.GetScanline(I), MyMap.BytesPerLine) then
+ begin
+ Result := False;
+ Exit;
+ end;
+ finally
+ Bitmap.Unmap(BitmapMap);
+ end;
+ finally
+ Unmap(MyMap);
+ end;
+ end;
+end;
+
+procedure TBitmap.BitmapChanged;
+begin
+ DoChange;
+end;
+
+function TBitmap.IsEmpty: Boolean;
+begin
+ Result := (Width = 0) or (Height = 0);
+end;
+
+procedure TBitmap.Assign(Source: TPersistent);
+begin
+ TMonitor.Enter(Self);
+ try
+ if Source = nil then
+ SetSize(0, 0)
+ else if Source is TBitmap then
+ begin
+ DestroyResources;
+ TBitmap(Source).FImage.IncreaseRefCount;
+ FImage.DecreaseRefCount;
+ FImage := TBitmap(Source).FImage;
+ BitmapChanged;
+ end
+ else if Source is TBitmapSurface then
+ AssignFromSurface(TBitmapSurface(Source))
+ else
+ inherited;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.AssignFromSurface(const Source: TBitmapSurface);
+var
+ BitmapData: TBitmapData;
+ MaxSize: Integer;
+ ResampledSurface: TBitmapSurface;
+ I: Integer;
+ SourceRect: TRectF;
+begin
+ TMonitor.Enter(Self);
+ try
+ MaxSize := CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize);
+ if (Source.Width > MaxSize) or (Source.Height > MaxSize) then
+ begin
+ SourceRect := TRectF.Create(0, 0, Source.Width, Source.Height);
+ SourceRect.Fit(TRectF.Create(0, 0, MaxSize, MaxSize));
+ ResampledSurface := TBitmapSurface.Create;
+ try
+ ResampledSurface.StretchFrom(Source, Trunc(SourceRect.Width), Trunc(SourceRect.Height), PixelFormat);
+ AssignFromSurface(ResampledSurface);
+ finally
+ ResampledSurface.Free;
+ end;
+ end
+ else
+ begin
+ if Source.PixelFormat <> TPixelFormat.None then
+ FImage.FPixelFormat := Source.PixelFormat;
+ SetSize(Source.Width, Source.Height);
+ if Map(TMapAccess.Write, BitmapData) then
+ try
+ for I := 0 to TBitmapSurface(Source).Height - 1 do
+ Move(TBitmapSurface(Source).Scanline[I]^, BitmapData.GetScanline(I)^, BitmapData.BytesPerLine);
+ finally
+ Unmap(BitmapData);
+ end;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.AssignTo(Dest: TPersistent);
+var
+ I: Integer;
+ BitmapData: TBitmapData;
+begin
+ if Dest is TBitmapSurface then
+ begin
+ TMonitor.Enter(Self);
+ try
+ TBitmapSurface(Dest).SetSize(Width, Height, PixelFormat);
+ if Map(TMapAccess.Read, BitmapData) then
+ try
+ for I := 0 to Height - 1 do
+ Move(BitmapData.GetScanline(I)^, TBitmapSurface(Dest).Scanline[I]^, BitmapData.BytesPerLine);
+ finally
+ Unmap(BitmapData);
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+ end
+ else
+ inherited;
+end;
+
+procedure TBitmap.DefineProperties(Filer: TFiler);
+
+ function DoWrite: Boolean;
+ begin
+ if Filer.Ancestor <> nil then
+ Result := not (Filer.Ancestor is TBitmap) or not EqualsBitmap(TBitmap(Filer.Ancestor))
+ else
+ Result := not IsEmpty;
+ end;
+
+begin
+ inherited;
+ Filer.DefineBinaryProperty('PNG', ReadBitmap, WriteBitmap, DoWrite);
+ Filer.DefineProperty('StyleLookup', ReadStyleLookup, nil, False);
+end;
+
+procedure TBitmap.ReadStyleLookup(Reader: TReader);
+begin
+ Reader.ReadString;
+end;
+
+procedure TBitmap.ReadBitmap(Stream: TStream);
+begin
+ LoadFromStream(Stream);
+end;
+
+procedure TBitmap.WriteBitmap(Stream: TStream);
+begin
+ SaveToStream(Stream);
+end;
+
+procedure TBitmap.Rotate(const Angle: Single);
+var
+ Temp: TBitmap;
+ M, M2: TMatrix;
+ Pts: array of TPointF;
+ R: TRectF;
+begin
+ if Angle = 0 then
+ Exit;
+
+ TMonitor.Enter(Self);
+ try
+ M := TMatrix.Identity;
+ M.m31 := -Width / 2;
+ M.m32 := -Height / 2;
+ M := M * TMatrix.CreateRotation(DegToRad(Angle));
+ { calc new size }
+ SetLength(Pts, 4);
+ Pts[0] := TPointF.Zero * M;
+ Pts[1] := TPointF.Create(Width, 0) * M;
+ Pts[2] := TPointF.Create(Width, Height) * M;
+ Pts[3] := TPointF.Create(0, Height) * M;
+ R := NormalizeRectF(Pts);
+ { translate }
+ M2 := TMatrix.Identity;
+ M2.m31 := R.Width / 2;
+ M2.m32 := R.Height / 2;
+ M := M * M2;
+
+ Temp := TBitmap.Create(Trunc(R.Width), Trunc(R.Height));
+ try
+ if Temp.Canvas.BeginScene then
+ try
+ Temp.Canvas.Clear(0);
+ Temp.Canvas.SetMatrix(M);
+ Temp.Canvas.DrawBitmap(Self, TRectF.Create(0, 0, Width, Height), TRectF.Create(0, 0, Width, Height), 1);
+ finally
+ Temp.Canvas.EndScene;
+ end;
+ Assign(Temp);
+ finally
+ Temp.DisposeOf;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.FlipHorizontal;
+var
+ I, J: Integer;
+ Tmp: TAlphaColor;
+ M: TBitmapData;
+begin
+ if Map(TMapAccess.ReadWrite, M) then
+ try
+ for J := 0 to Height - 1 do
+ for I := 0 to (Width - 1) div 2 do
+ begin
+ Tmp := PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + Width - 1 - I];
+ PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + Width - 1 - I] := PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + I];
+ PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + I] := Tmp;
+ end;
+ finally
+ Unmap(M);
+ end;
+end;
+
+procedure TBitmap.FlipVertical;
+var
+ I: Integer;
+ Tmp: PAlphaColorArray;
+ M: TBitmapData;
+begin
+ GetMem(Tmp, Width * 4);
+ if Map(TMapAccess.ReadWrite, M) then
+ try
+ for I := 0 to (Height - 1) div 2 do
+ begin
+ System.Move(PAlphaColorArray(M.Data)[(Height - 1 - I) * (M.Pitch div 4)], Tmp[0], M.Pitch);
+ System.Move(PAlphaColorArray(M.Data)[I * (M.Pitch div 4)], PAlphaColorArray(M.Data)[(Height - 1 - I) * (M.Pitch div 4)], M.Pitch);
+ System.Move(Tmp[0], PAlphaColorArray(M.Data)[I * (M.Pitch div 4)], M.Pitch);
+ end;
+ finally
+ Unmap(M);
+ end;
+ FreeMem(Tmp, Width * 4);
+end;
+
+procedure TBitmap.InvertAlpha;
+var
+ I, J: Integer;
+ M: TBitmapData;
+ C: PAlphaColorRec;
+begin
+ if Map(TMapAccess.ReadWrite, M) then
+ try
+ for J := 0 to Height - 1 do
+ for I := 0 to Width - 1 do
+ begin
+ C := @PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + I];
+ C^.Color := UnpremultiplyAlpha(C^.Color);
+ C^.A := $FF - C^.A;
+ C^.Color := PremultiplyAlpha(C^.Color);
+ end;
+ finally
+ Unmap(M);
+ end;
+end;
+
+procedure TBitmap.ReplaceOpaqueColor(const Color: TAlphaColor);
+var
+ I, J: Integer;
+ M: TBitmapData;
+ C: PAlphaColorRec;
+begin
+ if Map(TMapAccess.ReadWrite, M) then
+ try
+ for J := 0 to Height - 1 do
+ for I := 0 to Width - 1 do
+ begin
+ C := @PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + I];
+ if C^.A > 0 then
+ C^.Color := PremultiplyAlpha(MakeColor(Color, C^.A / $FF));
+ end;
+ finally
+ Unmap(M);
+ end;
+end;
+
+procedure TBitmap.Resize(const AWidth, AHeight: Integer);
+var
+ BufferTmp: TBitmap;
+begin
+ if not IsEmpty then
+ begin
+ TMonitor.Enter(Self);
+ try
+ BufferTmp := CreateThumbnail(AWidth, AHeight);
+ try
+ Assign(BufferTmp);
+ finally
+ BufferTmp.Free;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+ end
+ else
+ SetSize(AWidth, AHeight);
+end;
+
+function TBitmap.CreateMask: PByteArray;
+var
+ I, J: Integer;
+ M: TBitmapData;
+ C: PAlphaColorRec;
+begin
+ GetMem(Result, Width * Height);
+ if Map(TMapAccess.ReadWrite, M) then
+ try
+ for J := 0 to Height - 1 do
+ for I := 0 to Width - 1 do
+ begin
+ C := @PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + I];
+ Result[I + (J * Width)] := C^.A;
+ end;
+ finally
+ Unmap(M);
+ end;
+end;
+
+procedure TBitmap.ApplyMask(const Mask: PByteArray; const DstX: Integer = 0; const DstY: Integer = 0);
+var
+ I, J: Integer;
+ M: TBitmapData;
+ C: PAlphaColorRec;
+begin
+ if Map(TMapAccess.ReadWrite, M) then
+ try
+ for J := 0 to Height - 1 do
+ for I := 0 to Width - 1 do
+ begin
+ if (I - DstX < 0) or (I - DstX > Width - 1) or (J - DstY < 0) or (J - DstY > Height - 1) then
+ Continue;
+ if Mask[I - DstX + ((J - DstY) * Width)] > 0 then
+ begin
+ C := @PAlphaColorArray(M.Data)[J * (M.Pitch div 4) + I];
+ C^.Color := PremultiplyAlpha(MakeColor(UnpremultiplyAlpha(C^.Color), ($FF - Mask[I - DstX + ((J - DstY) * Width)]) / $FF));
+ end;
+ end;
+ finally
+ Unmap(M);
+ end;
+end;
+
+function TBitmap.CreateThumbnail(const AWidth, AHeight: Integer): TBitmap;
+var
+ FitRect: TRectF;
+begin
+ TMonitor.Enter(Self);
+ try
+ Result := TBitmap.Create(AWidth, AHeight);
+ if not IsEmpty and Result.Canvas.BeginScene then
+ try
+ FitRect := TRectF.Create(0, 0, Width, Height);
+ FitRect := FitRect.FitInto(TRectF.Create(0, 0, AWidth, AHeight));
+ Result.Canvas.DrawBitmap(Self, TRectF.Create(0, 0, Width, Height), FitRect, 1);
+ finally
+ Result.Canvas.EndScene;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+function TBitmap.Map(const Access: TMapAccess; var Data: TBitmapData): Boolean;
+begin
+ Result := False;
+ TMonitor.Enter(Self);
+ try
+ if Access in [TMapAccess.Write, TMapAccess.ReadWrite] then
+ CopyToNewReference;
+
+ if CanvasClass.MapBitmap(Handle, Access, Data) then
+ begin
+ Data.Create(Width, Height, PixelFormat);
+ FMapped := True;
+ FMapAccess := Access;
+ Result := True;
+ end;
+ finally
+ if not Result then
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.Unmap(var Data: TBitmapData);
+begin
+ if FMapped then
+ try
+ CanvasClass.UnmapBitmap(Handle, Data);
+ FMapped := False;
+ if FMapAccess in [TMapAccess.Write, TMapAccess.ReadWrite] then
+ BitmapChanged;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.LoadFromFile(const AFileName: string);
+var
+ Surf: TBitmapSurface;
+begin
+ TMonitor.Enter(Self);
+ try
+ Surf := TBitmapSurface.Create;
+ try
+ if TBitmapCodecManager.LoadFromFile(AFileName, Surf, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then
+ Assign(Surf)
+ else
+ raise EBitmapLoadingFailed.CreateFMT(SBitmapLoadingFailedNamed, [AFileName]);
+ finally
+ Surf.Free;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.LoadThumbnailFromFile(const AFileName: string; const AFitWidth, AFitHeight: Single;
+ const UseEmbedded: Boolean = True);
+var
+ Surf: TBitmapSurface;
+begin
+ TMonitor.Enter(Self);
+ try
+ Surf := TBitmapSurface.Create;
+ try
+ if TBitmapCodecManager.LoadThumbnailFromFile(AFileName, AFitWidth, AFitHeight, UseEmbedded, Surf) then
+ Assign(Surf)
+ else
+ raise EThumbnailLoadingFailed.CreateFMT(SThumbnailLoadingFailedNamed, [AFileName]);
+ finally
+ Surf.Free;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.LoadFromStream(Stream: TStream);
+var
+ S: TStream;
+ Surf: TBitmapSurface;
+begin
+ TMonitor.Enter(Self);
+ try
+ if Stream.Position > 0 then
+ begin
+ // need to create temp stream
+ S := TMemoryStream.Create;
+ try
+ S.CopyFrom(Stream, Stream.Size - Stream.Position);
+ S.Position := 0;
+ Surf := TBitmapSurface.Create;
+ try
+ if TBitmapCodecManager.LoadFromStream(S, Surf, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then
+ Assign(Surf)
+ else
+ raise EBitmapLoadingFailed.Create(SBitmapLoadingFailed);
+ finally
+ Surf.Free;
+ end;
+ finally
+ S.Free;
+ end;
+ end
+ else if Stream.Size = 0 then
+ Clear(0)
+ else
+ begin
+ Surf := TBitmapSurface.Create;
+ try
+ if TBitmapCodecManager.LoadFromStream(Stream, Surf, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then
+ Assign(Surf)
+ else
+ raise EBitmapLoadingFailed.Create(SBitmapLoadingFailed);
+ finally
+ Surf.Free;
+ end;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.SaveToFile(const AFileName: string; const SaveParams: PBitmapCodecSaveParams = nil);
+var
+ Surf: TBitmapSurface;
+begin
+ TMonitor.Enter(Self);
+ try
+ Surf := TBitmapSurface.Create;
+ try
+ Surf.Assign(Self);
+ if not TBitmapCodecManager.SaveToFile(AFileName, Surf, SaveParams) then
+ raise EBitmapSavingFailed.CreateFMT(SBitmapSavingFailedNamed, [AFileName]);
+ finally
+ Surf.Free;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+procedure TBitmap.SaveToStream(Stream: TStream);
+var
+ Surf: TBitmapSurface;
+begin
+ TMonitor.Enter(Self);
+ try
+ Surf := TBitmapSurface.Create;
+ try
+ Surf.Assign(Self);
+ if not TBitmapCodecManager.SaveToStream(Stream, Surf, SPNGImageExtension) then
+ raise EBitmapSavingFailed.Create(SBitmapSavingFailed);
+ finally
+ Surf.Free;
+ end;
+ finally
+ TMonitor.Exit(Self);
+ end;
+end;
+
+function TBitmap.GetCanvas: TCanvas;
+begin
+ if FCanvas = nil then
+ begin
+ TMonitor.Enter(Self);
+ try
+ CopyToNewReference;
+ //! Launcher Fix
+ FCanvas := CanvasClass.CreateFromBitmap(Self, TCanvasQuality.HighQuality);
+ finally
+ TMonitor.Exit(Self);
+ end;
+ end;
+ Result := FCanvas;
+end;
+
+{ TPathPoint }
+
+class function TPathPoint.Create(const AKind: TPathPointKind; const APoint: TPointF): TPathPoint;
+begin
+ Result.Kind := AKind;
+ Result.Point := APoint;
+end;
+
+class operator TPathPoint.Equal(const APoint1, APoint2: TPathPoint): Boolean;
+begin
+ Result := (APoint1.Kind = APoint2.Kind) and (APoint1.Point = APoint2.Point);
+end;
+
+class operator TPathPoint.NotEqual(const APoint1, APoint2: TPathPoint): Boolean;
+begin
+ Result := not (APoint1 = APoint2);
+end;
+
+{ TPath }
+
+constructor TPathData.Create;
+begin
+ inherited Create;
+ FPathData := TList.Create;
+ FRecalcBounds := True;
+end;
+
+destructor TPathData.Destroy;
+var
+ PathObject: IPathObject;
+begin
+ if FStyleResource <> nil then
+ begin
+ if Supports(FStyleResource, IPathObject, PathObject) then
+ PathObject.RemoveFreeNotify(Self);
+ FStyleResource := nil;
+ end;
+ FPathData.Free;
+ inherited;
+end;
+
+function TPathData.EqualsPath(const Path: TPathData): Boolean;
+var
+ I: Integer;
+begin
+ if IsEmpty or Path.IsEmpty then
+ Exit(True);
+ Result := Count = Path.Count;
+ if Result then
+ for I := 0 to Count - 1 do
+ if Points[I] <> Path.Points[I] then
+ Exit(False);
+end;
+
+procedure TPathData.Assign(Source: TPersistent);
+var
+ I: Integer;
+begin
+ if Source is TPathData then
+ begin
+ if TPathData(Source).ResourcePath <> nil then
+ begin
+ FStyleLookup := TPathData(Source).StyleLookup;
+ DoChanged(False);
+ end
+ else
+ begin
+ FPathData.Count := TPathData(Source).Count;
+ for I := 0 to TPathData(Source).Count - 1 do
+ FPathData[I] := TPathData(Source)[I];
+ DoChanged;
+ end;
+ end
+ else
+ inherited
+end;
+
+function TPathData.GetStyleLookup: string;
+begin
+ Result := FStyleLookup;
+end;
+
+procedure TPathData.SetStyleLookup(const Value: string);
+begin
+ if Value <> FStyleLookup then
+ begin
+ FStyleLookup := Value;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+ end;
+end;
+
+function TPathData.GetPath: TPathData;
+var
+ O: TFmxObject;
+ PO: IPathObject;
+begin
+ Result := nil;
+ if (FStyleResource <> nil) and Supports(FStyleResource, IPathObject, PO) then
+ Result := PO.Path
+ else if FStyleLookup <> '' then
+ begin
+ O := FindStyleResource(FStyleLookup);
+ if Supports(O, IPathObject, PO) then
+ begin
+ if FStyleResource <> nil then
+ PO.RemoveFreeNotify(Self);
+ FStyleResource := O;
+ if FStyleResource <> nil then
+ PO.AddFreeNotify(Self);
+ Result := PO.Path;
+ end;
+ end;
+end;
+
+function TPathData.GetCount: Integer;
+begin
+ Result := FPathData.Count;
+end;
+
+function TPathData.GetPoint(AIndex: Integer): TPathPoint;
+begin
+ Result := FPathData[AIndex];
+end;
+
+procedure TPathData.DefineProperties(Filer: TFiler);
+
+ function DoWrite: Boolean;
+ begin
+ if Filer.Ancestor <> nil then
+ Result := not (Filer.Ancestor is TPathData) or not EqualsPath(TPathData(Filer.Ancestor))
+ else
+ Result := Count > 0;
+ end;
+
+begin
+ inherited;
+ Filer.DefineBinaryProperty('Path', ReadPath, WritePath, DoWrite);
+end;
+
+procedure TPathData.DoChanged(NeedRecalcBounds: Boolean);
+begin
+ if NeedRecalcBounds then
+ FRecalcBounds := True;
+ if Assigned(FOnChanged) then
+ FOnChanged(Self);
+end;
+
+procedure TPathData.ReadPath(Stream: TStream);
+var
+ ReadCount: Cardinal;
+ I: Integer;
+ ByteKind: Byte;
+ Point: TPointF;
+ PathPoint: TPathPoint;
+begin
+ Stream.Read(ReadCount, SizeOf(ReadCount));
+ FPathData.Count := ReadCount;
+ if ReadCount > 0 then
+ if (Stream.Size - 4) div ReadCount = 9 then
+ for I := 0 to ReadCount - 1 do
+ begin
+ Stream.Read(ByteKind, SizeOf(Byte));
+ Stream.Read(Point, SizeOf(TPointF));
+ FPathData[I] := TPathPoint.Create(TPathPointKind(ByteKind), Point);
+ end
+ else
+ for I := 0 to ReadCount - 1 do
+ begin
+ Stream.Read(PathPoint, SizeOf(PathPoint));
+ FPathData[I] := PathPoint;
+ end;
+ DoChanged;
+end;
+
+procedure TPathData.WritePath(Stream: TStream);
+var
+ WriteCount: Cardinal;
+ PathPoint: TPathPoint;
+ I: Integer;
+begin
+ WriteCount := Count;
+ Stream.Write(WriteCount, SizeOf(WriteCount));
+ for I := 0 to WriteCount - 1 do
+ begin
+ PathPoint := FPathData[I];
+ Stream.Write(PathPoint, SizeOf(PathPoint));
+ end;
+end;
+
+function TPathData.LastPoint: TPointF;
+begin
+ if Count > 0 then
+ Result := FPathData[FPathData.Count - 1].Point
+ else
+ Result := TPointF.Zero;
+end;
+
+procedure TPathData.MoveTo(const P: TPointF);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.MoveTo, P));
+ FStartPoint := FPathData[FPathData.Count - 1].Point;
+ DoChanged;
+end;
+
+procedure TPathData.MoveToRel(const P: TPointF);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.MoveTo, LastPoint + P));
+ FStartPoint := FPathData[FPathData.Count - 1].Point;
+ DoChanged;
+end;
+
+procedure TPathData.LineTo(const P: TPointF);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.LineTo, P));
+ DoChanged;
+end;
+
+procedure TPathData.LineToRel(const P: TPointF);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.LineTo, LastPoint + P));
+ DoChanged;
+end;
+
+procedure TPathData.HLineTo(const X: Single);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.LineTo, TPointF.Create(X, LastPoint.Y)));
+ DoChanged;
+end;
+
+procedure TPathData.HLineToRel(const X: Single);
+begin
+ LineToRel(TPointF.Create(X, 0));
+end;
+
+procedure TPathData.VLineTo(const Y: Single);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.LineTo, TPointF.Create(LastPoint.X, Y)));
+ DoChanged;
+end;
+
+procedure TPathData.VLineToRel(const Y: Single);
+begin
+ LineToRel(TPointF.Create(0, Y));
+end;
+
+procedure TPathData.QuadCurveTo(const ControlPoint, EndPoint: TPointF);
+const
+ OneThird = 1 / 3;
+ TwoThirds = 2 / 3;
+var
+ LP, CP1, CP2: TPointF;
+begin
+ LP := LastPoint;
+ CP1.X := OneThird * LP.X + TwoThirds * ControlPoint.X;
+ CP1.Y := OneThird * LP.Y + TwoThirds * ControlPoint.Y;
+ CP2.X := TwoThirds * ControlPoint.X + OneThird * EndPoint.X;
+ CP2.Y := TwoThirds * ControlPoint.Y + OneThird * EndPoint.Y;
+ CurveTo(CP1, CP2, EndPoint);
+end;
+
+procedure TPathData.CurveTo(const ControlPoint1, ControlPoint2, EndPoint: TPointF);
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.CurveTo, ControlPoint1));
+ FPathData.Add(TPathPoint.Create(TPathPointKind.CurveTo, ControlPoint2));
+ FPathData.Add(TPathPoint.Create(TPathPointKind.CurveTo, EndPoint));
+ DoChanged;
+end;
+
+procedure TPathData.CurveToRel(const ControlPoint1, ControlPoint2, EndPoint: TPointF);
+var
+ LP: TPointF;
+begin
+ LP := LastPoint;
+ CurveTo(LP + ControlPoint1, LP + ControlPoint2, LP + EndPoint);
+end;
+
+procedure TPathData.SmoothCurveTo(const ControlPoint2, EndPoint: TPointF);
+var
+ ControlPoint1: TPointF;
+begin
+ if Count > 2 then
+ ControlPoint1 := LastPoint + (LastPoint - FPathData[FPathData.Count - 2].Point)
+ else
+ ControlPoint1 := ControlPoint2;
+ CurveTo(ControlPoint1, ControlPoint2, EndPoint);
+end;
+
+procedure TPathData.SmoothCurveToRel(const ControlPoint2, EndPoint: TPointF);
+var
+ ControlPoint1: TPointF;
+begin
+ if Count > 2 then
+ ControlPoint1 := LastPoint - FPathData[FPathData.Count - 2].Point
+ else
+ ControlPoint1 := ControlPoint2;
+ CurveToRel(ControlPoint1, ControlPoint2, EndPoint);
+end;
+
+procedure TPathData.ClosePath;
+begin
+ FPathData.Add(TPathPoint.Create(TPathPointKind.Close, FStartPoint));
+ DoChanged;
+end;
+
+procedure TPathData.AddPath(APath: TPathData);
+var
+ I: Integer;
+begin
+ FPathData.Capacity := FPathData.Count + APath.Count;
+ for I := 0 to APath.Count - 1 do
+ FPathData.Add(APath.Points[I]);
+ DoChanged;
+end;
+
+procedure TPathData.Clear;
+begin
+ FPathData.Clear;
+ DoChanged;
+end;
+
+function TPathData.GetBounds: TRectF;
+const
+ SmallAmount = 0.001;
+var
+ I: Integer;
+begin
+ if FPathData.Count < 1 then
+ Exit(TRectF.Create(0, 0, 0, 0));
+ if FRecalcBounds then
+ begin
+ Result := TRectF.Create($FFFF, $FFFF, -$FFFF, -$FFFF);
+ for I := 0 to FPathData.Count - 1 do
+ begin
+ if FPathData[I].Kind = TPathPointKind.Close then
+ Continue;
+
+ if FPathData[I].Point.X < Result.Left then
+ Result.Left := FPathData[I].Point.X;
+ if FPathData[I].Point.X > Result.Right then
+ Result.Right := FPathData[I].Point.X;
+ if FPathData[I].Point.Y < Result.Top then
+ Result.Top := FPathData[I].Point.Y;
+ if FPathData[I].Point.Y > Result.Bottom then
+ Result.Bottom := FPathData[I].Point.Y;
+ end;
+ // add small amount
+ if SameValue(Result.Width, 0, TEpsilon.Position) then
+ Result.Right := Result.Left + SmallAmount;
+ if SameValue(Result.Height, 0, TEpsilon.Position) then
+ Result.Bottom := Result.Top + SmallAmount;
+ FBounds := Result;
+ FRecalcBounds := False;
+ end
+ else
+ Result := FBounds;
+end;
+
+procedure TPathData.Scale(const ScaleX, ScaleY: Single);
+var
+ I: Integer;
+ ScalePoint: TPointF;
+begin
+ if FPathData.Count > 0 then
+ begin
+ ScalePoint := TPointF.Create(ScaleX, ScaleY);
+ for I := 0 to FPathData.Count - 1 do
+ if FPathData[I].Kind in [TPathPointKind.MoveTo, TPathPointKind.LineTo, TPathPointKind.CurveTo] then
+ FPathData[I] := TPathPoint.Create(FPathData[I].Kind, FPathData[I].Point * ScalePoint);
+ DoChanged;
+ end;
+end;
+
+procedure TPathData.Scale(const AScale: TPointF);
+begin
+ Scale(AScale.X, AScale.Y);
+end;
+
+procedure TPathData.Translate(const DX, DY: Single);
+var
+ I: Integer;
+ TranslatePoint: TPointF;
+begin
+ if FPathData.Count > 0 then
+ begin
+ TranslatePoint := TPointF.Create(DX, DY);
+ for I := 0 to FPathData.Count - 1 do
+ if FPathData[I].Kind in [TPathPointKind.MoveTo, TPathPointKind.LineTo, TPathPointKind.CurveTo] then
+ FPathData[I] := TPathPoint.Create(FPathData[I].Kind, FPathData[I].Point + TranslatePoint);
+ DoChanged;
+ end;
+end;
+
+procedure TPathData.Translate(const Delta: TPointF);
+begin
+ Translate(Delta.X, Delta.Y);
+end;
+
+procedure TPathData.FitToRect(const ARect: TRectF);
+var
+ FitBounds, Bounds: TRectF;
+ Ratio: Single;
+begin
+ Bounds := GetBounds;
+ FitBounds := Bounds.FitInto(ARect, Ratio);
+ if not SameValue(Ratio, 0, TEpsilon.Scale) then
+ begin
+ Ratio := 1 / Ratio;
+ Translate(-Bounds.Left, -Bounds.Top);
+ Scale(Ratio, Ratio);
+ Translate(FitBounds.Left, FitBounds.Top);
+ end;
+end;
+
+procedure TPathData.ApplyMatrix(const M: TMatrix);
+var
+ I: Integer;
+begin
+ if FPathData.Count > 0 then
+ begin
+ for I := 0 to FPathData.Count - 1 do
+ if FPathData[I].Kind in [TPathPointKind.MoveTo, TPathPointKind.LineTo, TPathPointKind.CurveTo] then
+ FPathData[I] := TPathPoint.Create(FPathData[I].Kind, FPathData[I].Point * M);
+ DoChanged;
+ end;
+end;
+
+procedure TPathData.CalculateBezierCoefficients(const Bezier: TCubicBezier; out AX, BX, CX, AY, BY, CY: Single);
+begin
+ CX := 3 * (Bezier[1].X - Bezier[0].X);
+ CY := 3 * (Bezier[1].Y - Bezier[0].Y);
+ BX := 3 * (Bezier[2].X - Bezier[1].X) - CX;
+ BY := 3 * (Bezier[2].Y - Bezier[1].Y) - CY;
+ AX := Bezier[3].X - Bezier[0].X - CX - BX;
+ AY := Bezier[3].Y - Bezier[0].Y - CY - BY;
+end;
+
+function TPathData.PointOnBezier(const StartPoint: TPointF; const AX, BX, CX, AY, BY, CY, T: Single): TPointF;
+var
+ SquareT, CubeT: Single;
+begin
+ SquareT := T * T;
+ CubeT := SquareT * T;
+ Result.X := (AX * CubeT) + (BX * SquareT) + (CX * T) + StartPoint.X;
+ Result.Y := (AY * CubeT) + (BY * SquareT) + (CY * T) + StartPoint.Y;
+end;
+
+function TPathData.CreateBezier(const Bezier: TCubicBezier; const PointCount: Integer): TPolygon;
+var
+ AX, BX, CX, AY, BY, CY, DT, T: Single;
+ I: Integer;
+begin
+ if PointCount = 0 then
+ Exit;
+ DT := 1 / (1 * PointCount - 1);
+ T := 0;
+ SetLength(Result, PointCount);
+ CalculateBezierCoefficients(Bezier, AX, BX, CX, AY, BY, CY);
+ for I := 0 to PointCount - 1 do
+ begin
+ Result[I] := PointOnBezier(Bezier[0], AX, BX, CX, AY, BY, CY, T);
+ T := T + DT;
+ end;
+end;
+
+procedure TPathData.Flatten(const Flatness: Single);
+var
+ J, I: Integer;
+ BPts: TPolygon;
+ B: TCubicBezier;
+ F, Len: Single;
+ SegCount: Integer;
+ OldPathData: TList;
+ CurPoint: TPointF;
+begin
+ if FPathData.Count > 0 then
+ begin
+ F := Max(Flatness, MinFlatness);
+ OldPathData := TList.Create;
+ try
+ OldPathData.Count := FPathData.Count;
+ for J := 0 to FPathData.Count - 1 do
+ OldPathData.Add(FPathData[J]);
+ FPathData.Clear;
+ J := 0;
+ while J < OldPathData.Count do
+ begin
+ case OldPathData[J].Kind of
+ TPathPointKind.MoveTo:
+ begin
+ MoveTo(OldPathData[J].Point);
+ CurPoint := OldPathData[J].Point;
+ end;
+ TPathPointKind.LineTo:
+ begin
+ LineTo(OldPathData[J].Point);
+ CurPoint := OldPathData[J].Point;
+ end;
+ TPathPointKind.CurveTo:
+ begin
+ B[0] := CurPoint;
+ B[1] := OldPathData[J].Point;
+ Inc(J);
+ B[2] := OldPathData[J].Point;
+ Inc(J);
+ B[3] := OldPathData[J].Point;
+ BPts := CreateBezier(B, 6);
+ Len := 0;
+ for I := 0 to High(BPts) - 1 do
+ Len := Len + (BPts[I] - BPts[I + 1]).Length;
+ SegCount := Round(Len / F);
+ if SegCount < 2 then
+ LineTo(B[3])
+ else
+ begin
+ BPts := CreateBezier(B, SegCount);
+ for I := 0 to High(BPts) do
+ LineTo(BPts[I]);
+ CurPoint := OldPathData[J].Point;
+ end;
+ end;
+ TPathPointKind.Close:
+ ClosePath;
+ end;
+ Inc(J);
+ end;
+ DoChanged(False);
+ finally
+ OldPathData.Free;
+ end;
+ end;
+end;
+
+function TPathData.FlattenToPolygon(var Polygon: TPolygon; const Flatness: Single = 0.25): TPointF;
+
+ procedure AddPoint(const P: TPointF);
+ begin
+ if (Length(Polygon) > 0) and (SameValue(P.X, Polygon[High(Polygon)].X, TEpsilon.Position) and
+ SameValue(P.Y, Polygon[High(Polygon)].Y, TEpsilon.Position)) then
+ Exit;
+ SetLength(Polygon, Length(Polygon) + 1);
+ Polygon[High(Polygon)] := P;
+ end;
+
+var
+ J, I: Integer;
+ BPts: TPolygon;
+ B: TCubicBezier;
+ SP, CurPoint: TPointF;
+ F, Len: Single;
+ SegCount: Integer;
+ CurBounds: TRectF;
+begin
+ Result := TPointF.Zero;
+ SetLength(Polygon, 0);
+ if FPathData.Count > 0 then
+ begin
+ F := Max(Flatness, MinFlatness);
+ J := 0;
+ while J < FPathData.Count do
+ begin
+ case FPathData[J].Kind of
+ TPathPointKind.MoveTo:
+ begin
+ if Length(Polygon) > 0 then
+ AddPoint(PolygonPointBreak);
+ AddPoint(FPathData[J].Point);
+ CurPoint := FPathData[J].Point;
+ SP := CurPoint;
+ end;
+ TPathPointKind.LineTo:
+ begin
+ AddPoint(FPathData[J].Point);
+ CurPoint := FPathData[J].Point;
+ end;
+ TPathPointKind.CurveTo:
+ begin
+ B[0] := CurPoint;
+ B[1] := FPathData[J].Point;
+ Inc(J);
+ B[2] := FPathData[J].Point;
+ Inc(J);
+ B[3] := FPathData[J].Point;
+ BPts := CreateBezier(B, 6);
+ Len := 0;
+ for I := 0 to High(BPts) - 1 do
+ Len := Len + (BPts[I] - BPts[I + 1]).Length;
+ SegCount := Round(Len / F);
+ if SegCount < 2 then
+ begin
+ AddPoint(B[0]);
+ AddPoint(B[3]);
+ end
+ else
+ begin
+ BPts := CreateBezier(B, SegCount);
+ for I := 0 to High(BPts) do
+ AddPoint(BPts[I]);
+ end;
+ CurPoint := FPathData[J].Point;
+ end;
+ TPathPointKind.Close:
+ begin
+ AddPoint(SP);
+ AddPoint(PolygonPointBreak);
+ end;
+ end;
+ Inc(J);
+ end;
+ CurBounds := GetBounds;
+ Result := TPointF.Create(Abs(CurBounds.Width), Abs(CurBounds.Height));
+ end;
+end;
+
+procedure TPathData.FreeNotification(AObject: TObject);
+begin
+ if FStyleResource = AObject then
+ FStyleResource := nil;
+end;
+
+procedure TPathData.AddEllipse(const ARect: TRectF);
+var
+ CX, CY, PX, PY: Single;
+begin
+ CX := (ARect.Left + ARect.Right) / 2;
+ CY := (ARect.Top + ARect.Bottom) / 2;
+ PX := CurveKappa * (ARect.Width / 2);
+ PY := CurveKappa * (ARect.Height / 2);
+ MoveTo(TPointF.Create(ARect.Left, CY));
+ CurveTo(TPointF.Create(ARect.Left, CY - PY), TPointF.Create(CX - PX, ARect.Top), TPointF.Create(CX, ARect.Top));
+ CurveTo(TPointF.Create(CX + PX, ARect.Top), TPointF.Create(ARect.Right, CY - PY), TPointF.Create(ARect.Right, CY));
+ CurveTo(TPointF.Create(ARect.Right, CY + PY), TPointF.Create(CX + PX, ARect.Bottom), TPointF.Create(CX, ARect.Bottom));
+ CurveTo(TPointF.Create(CX - PX, ARect.Bottom), TPointF.Create(ARect.Left, CY + PY), TPointF.Create(ARect.Left, CY));
+end;
+
+procedure TPathData.AddRectangle(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const ACornerType: TCornerType = TCornerType.Round);
+var
+ X1, X2, Y1, Y2: Single;
+begin
+ if SameValue(XRadius, 0, TEpsilon.Vector) or SameValue(YRadius, 0, TEpsilon.Vector) then
+ begin
+ MoveTo(ARect.TopLeft);
+ LineTo(TPointF.Create(ARect.Right, ARect.Top));
+ LineTo(ARect.BottomRight);
+ LineTo(TPointF.Create(ARect.Left, ARect.Bottom));
+ end
+ else
+ begin
+ X1 := XRadius;
+ if ARect.Width - (X1 * 2) < 0 then
+ X1 := XRadius * (ARect.Width / (X1 * 2));
+ X2 := X1 / 2;
+ Y1 := YRadius;
+ if ARect.Height - (Y1 * 2) < 0 then
+ Y1 := YRadius * (ARect.Height / (Y1 * 2));
+ Y2 := Y1 / 2;
+ MoveTo(TPointF.Create(ARect.Left, ARect.Top + Y1));
+ if TCorner.TopLeft in ACorners then
+ begin
+ case ACornerType of
+ TCornerType.Bevel:
+ LineTo(TPointF.Create(ARect.Left + X1, ARect.Top));
+ TCornerType.InnerRound:
+ CurveTo(TPointF.Create(ARect.Left + X2, ARect.Top + Y1), TPointF.Create(ARect.Left + X1, ARect.Top + Y2),
+ TPointF.Create(ARect.Left + X1, ARect.Top));
+ TCornerType.InnerLine:
+ begin
+ LineTo(TPointF.Create(ARect.Left + X2, ARect.Top + Y1));
+ LineTo(TPointF.Create(ARect.Left + X1, ARect.Top + Y2));
+ LineTo(TPointF.Create(ARect.Left + X1, ARect.Top));
+ end;
+ else
+ CurveTo(TPointF.Create(ARect.Left, ARect.Top + Y2), TPointF.Create(ARect.Left + X2, ARect.Top),
+ TPointF.Create(ARect.Left + X1, ARect.Top));
+ end;
+ end
+ else
+ begin
+ LineTo(TPointF.Create(ARect.Left, ARect.Top));
+ LineTo(TPointF.Create(ARect.Left + X1, ARect.Top));
+ end;
+ LineTo(TPointF.Create(ARect.Right - X1, ARect.Top));
+ if TCorner.TopRight in ACorners then
+ begin
+ case ACornerType of
+ TCornerType.Bevel:
+ LineTo(TPointF.Create(ARect.Right, ARect.Top + Y1));
+ TCornerType.InnerRound:
+ CurveTo(TPointF.Create(ARect.Right - X1, ARect.Top + Y2), TPointF.Create(ARect.Right - X2, ARect.Top + Y1),
+ TPointF.Create(ARect.Right, ARect.Top + Y1));
+ TCornerType.InnerLine:
+ begin
+ LineTo(TPointF.Create(ARect.Right - X1, ARect.Top + Y2));
+ LineTo(TPointF.Create(ARect.Right - X2, ARect.Top + Y1));
+ LineTo(TPointF.Create(ARect.Right, ARect.Top + Y1));
+ end;
+ else
+ CurveTo(TPointF.Create(ARect.Right - X2, ARect.Top), TPointF.Create(ARect.Right, ARect.Top + Y2),
+ TPointF.Create(ARect.Right, ARect.Top + Y1));
+ end;
+ end
+ else
+ begin
+ LineTo(TPointF.Create(ARect.Right, ARect.Top));
+ LineTo(TPointF.Create(ARect.Right, ARect.Top + Y1));
+ end;
+ LineTo(TPointF.Create(ARect.Right, ARect.Bottom - Y1));
+ if TCorner.BottomRight in ACorners then
+ begin
+ case ACornerType of
+ TCornerType.Bevel:
+ LineTo(TPointF.Create(ARect.Right - X1, ARect.Bottom));
+ TCornerType.InnerRound:
+ CurveTo(TPointF.Create(ARect.Right - X2, ARect.Bottom - Y1), TPointF.Create(ARect.Right - X1, ARect.Bottom - Y2),
+ TPointF.Create(ARect.Right - X1, ARect.Bottom));
+ TCornerType.InnerLine:
+ begin
+ LineTo(TPointF.Create(ARect.Right - X2, ARect.Bottom - Y1));
+ LineTo(TPointF.Create(ARect.Right - X1, ARect.Bottom - Y2));
+ LineTo(TPointF.Create(ARect.Right - X1, ARect.Bottom));
+ end;
+ else
+ CurveTo(TPointF.Create(ARect.Right, ARect.Bottom - Y2), TPointF.Create(ARect.Right - X2, ARect.Bottom),
+ TPointF.Create(ARect.Right - X1, ARect.Bottom));
+ end;
+ end
+ else
+ begin
+ LineTo(TPointF.Create(ARect.Right, ARect.Bottom));
+ LineTo(TPointF.Create(ARect.Right - X1, ARect.Bottom));
+ end;
+ LineTo(TPointF.Create(ARect.Left + X1, ARect.Bottom));
+ if TCorner.BottomLeft in ACorners then
+ begin
+ case ACornerType of
+ TCornerType.Bevel:
+ LineTo(TPointF.Create(ARect.Left, ARect.Bottom - Y1));
+ TCornerType.InnerRound:
+ CurveTo(TPointF.Create(ARect.Left + X1, ARect.Bottom - Y2), TPointF.Create(ARect.Left + X2, ARect.Bottom - Y1),
+ TPointF.Create(ARect.Left, ARect.Bottom - Y1));
+ TCornerType.InnerLine:
+ begin
+ LineTo(TPointF.Create(ARect.Left + X1, ARect.Bottom - Y2));
+ LineTo(TPointF.Create(ARect.Left + X2, ARect.Bottom - Y1));
+ LineTo(TPointF.Create(ARect.Left, ARect.Bottom - Y1));
+ end;
+ else
+ CurveTo(TPointF.Create(ARect.Left + X2, ARect.Bottom), TPointF.Create(ARect.Left, ARect.Bottom - (Y2)),
+ TPointF.Create(ARect.Left, ARect.Bottom - Y1));
+ end;
+ end
+ else
+ begin
+ LineTo(TPointF.Create(ARect.Left, ARect.Bottom));
+ LineTo(TPointF.Create(ARect.Left, ARect.Bottom - Y1));
+ end;
+ end;
+ ClosePath;
+end;
+
+procedure DrawArcWithBezier(Path: TPathData; CenterX, CenterY, RadiusX, RadiusY, StartAngle, SweepRange: Single;
+ UseMoveTo: Boolean);
+var
+ Coord: array of TPointF;
+ Pts: array of TPointF;
+ A, B, C, X, Y: Single;
+ SS, CC: Single;
+ I: Integer;
+begin
+ if SweepRange = 0 then
+ begin
+ if UseMoveTo then
+ begin
+ if Path.FPathData.Count < 1 then
+ Path.MoveTo(TPointF.Create(CenterX + RadiusX * Cos(StartAngle), CenterY - RadiusY * Sin(StartAngle)))
+ else
+ Path.LineTo(TPointF.Create(CenterX + RadiusX * Cos(StartAngle), CenterY - RadiusY * Sin(StartAngle)));
+ end;
+ Path.LineTo(TPointF.Create(CenterX + RadiusX * Cos(StartAngle), CenterY - RadiusY * Sin(StartAngle)));
+ Exit;
+ end;
+ SinCos(SweepRange / 2, B, C);
+ A := 1 - C;
+ X := A * 4 / 3;
+ Y := B - X * C / B;
+ SinCos(StartAngle + SweepRange / 2, SS, CC);
+ SetLength(Coord, 4);
+ Coord[0] := TPointF.Create(C, -B);
+ Coord[1] := TPointF.Create(C + X, -Y);
+ Coord[2] := TPointF.Create(C + X, Y);
+ Coord[3] := TPointF.Create(C, B);
+ SetLength(Pts, 4);
+ for I := 0 to 3 do
+ begin
+ Pts[I] := TPointF.Create(CenterX + RadiusX * (Coord[I].X * CC - Coord[I].Y * SS), CenterY + RadiusY * (Coord[I].X *
+ SS + Coord[I].Y * CC));
+ end;
+ if UseMoveTo then
+ begin
+ if Path.FPathData.Count < 1 then
+ Path.MoveTo(Pts[0])
+ else
+ Path.LineTo(Pts[0]);
+ end;
+ Path.CurveTo(Pts[1], Pts[2], Pts[3]);
+end;
+
+procedure TPathData.AddArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single);
+const
+ BezierArcAngleEpsilon = 0.01;
+ MinSweepAngle = 1E-10;
+var
+ UseMoveTo: Boolean;
+ I: Integer;
+ F: Single;
+ TotalSweep, LocalSweep, PrevSweep: Single;
+ Done: Boolean;
+begin
+ StartAngle := DegToRad(StartAngle);
+ SweepAngle := DegToRad(SweepAngle);
+ I := Trunc(StartAngle / (2 * Pi));
+ F := StartAngle - (I * 2 * Pi);
+ StartAngle := F;
+ if SweepAngle >= 2 * Pi then
+ SweepAngle := 2 * Pi;
+ if SweepAngle <= -2 * Pi then
+ SweepAngle := -2 * Pi;
+ if Abs(SweepAngle) < MinSweepAngle then
+ Exit;
+ TotalSweep := 0;
+ Done := False;
+ UseMoveTo := True;
+ repeat
+ if SweepAngle < 0 then
+ begin
+ PrevSweep := TotalSweep;
+ LocalSweep := -Pi / 2;
+ TotalSweep := TotalSweep - (Pi / 2);
+ if TotalSweep <= SweepAngle + BezierArcAngleEpsilon then
+ begin
+ LocalSweep := SweepAngle - PrevSweep;
+ Done := True;
+ end;
+ end
+ else
+ begin
+ PrevSweep := TotalSweep;
+ LocalSweep := Pi / 2;
+ TotalSweep := TotalSweep + (Pi / 2);
+ if TotalSweep >= SweepAngle - BezierArcAngleEpsilon then
+ begin
+ LocalSweep := SweepAngle - PrevSweep;
+ Done := True;
+ end;
+ end;
+ DrawArcWithBezier(Self, Center.X, Center.Y, Radius.X, Radius.Y, StartAngle, LocalSweep, UseMoveTo);
+ UseMoveTo := False;
+ StartAngle := StartAngle + LocalSweep;
+ until Done;
+end;
+
+procedure TPathData.AddArcSvgPart(const Center, Radius: TPointF; StartAngle, SweepAngle: Single);
+const
+ BezierArcAngleEpsilon = 0.01;
+ MinSweepAngle = 1E-10;
+var
+ UseMoveTo: Boolean;
+ I: Integer;
+ F: Single;
+ TotalSweep, LocalSweep, PrevSweep: Single;
+ Done: Boolean;
+begin
+ StartAngle := DegToRad(StartAngle);
+ SweepAngle := DegToRad(SweepAngle);
+ I := Trunc(StartAngle / (2 * Pi));
+ F := StartAngle - (I * 2 * Pi);
+ StartAngle := F;
+ if SweepAngle >= 2 * Pi then
+ SweepAngle := 2 * Pi;
+ if SweepAngle <= -2 * Pi then
+ SweepAngle := -2 * Pi;
+ if Abs(SweepAngle) < MinSweepAngle then
+ Exit;
+ TotalSweep := 0;
+ Done := False;
+ UseMoveTo := False;
+ repeat
+ if SweepAngle < 0 then
+ begin
+ PrevSweep := TotalSweep;
+ LocalSweep := -Pi / 2;
+ TotalSweep := TotalSweep - (Pi / 2);
+ if TotalSweep <= SweepAngle + BezierArcAngleEpsilon then
+ begin
+ LocalSweep := SweepAngle - PrevSweep;
+ Done := True;
+ end;
+ end
+ else
+ begin
+ PrevSweep := TotalSweep;
+ LocalSweep := Pi / 2;
+ TotalSweep := TotalSweep + (Pi / 2);
+ if TotalSweep >= SweepAngle - BezierArcAngleEpsilon then
+ begin
+ LocalSweep := SweepAngle - PrevSweep;
+ Done := True;
+ end;
+ end;
+ DrawArcWithBezier(Self, Center.X, Center.Y, Radius.X, Radius.Y, StartAngle, LocalSweep, UseMoveTo);
+ UseMoveTo := False;
+ StartAngle := StartAngle + LocalSweep;
+ until Done;
+end;
+
+procedure TPathData.AddArcSvg(const P1, Radius: TPointF; Angle: Single; const LargeFlag, SweepFlag: Boolean;
+ const P2: TPointF);
+var
+ I: Integer;
+ RadOk: Boolean;
+ V, P, N, Sq, Rx, Ry, X0, Y0, X1, Y1, X2, Y2, CX, CY, Ux, Uy, Vx, Vy: Single;
+ Dx2, Dy2, Prx, Pry, Px1, Py1, Cx1, Cy1, Sx2, Sy2, Sign, Coef: Single;
+ RadCheck, StartAngle, SweepAngle, CosA, SinA: Single;
+ M: TMatrix;
+ Len: Integer;
+begin
+ // Trivial case: Arc transformate to point
+ if P1 = P2 then
+ Exit;
+ Rx := Radius.X;
+ Ry := Radius.Y;
+ X0 := P1.X;
+ Y0 := P1.Y;
+ X2 := P2.X;
+ Y2 := P2.Y;
+ Angle := DegToRad(Angle);
+ RadOk := True;
+ if Rx < 0 then
+ Rx := -Rx;
+ if Ry < 0 then
+ Ry := -Rx;
+ // Calculate the middle point between the current and the final points
+ Dx2 := (X0 - X2) / 2;
+ Dy2 := (Y0 - Y2) / 2;
+ // Convert angle from degrees to radians
+ SinCos(Angle, SinA, CosA);
+ // Calculate (x1, y1)
+ X1 := CosA * Dx2 + SinA * Dy2;
+ Y1 := -SinA * Dx2 + CosA * Dy2;
+ // Ensure radii are large enough
+ Prx := Rx * Rx;
+ Pry := Ry * Ry;
+ Px1 := X1 * X1;
+ Py1 := Y1 * Y1;
+ // Check that radii are large enough
+ RadCheck := Px1 / Prx + Py1 / Pry;
+ if RadCheck > 1 then
+ begin
+ Rx := Sqrt(RadCheck) * Rx;
+ Ry := Sqrt(RadCheck) * Ry;
+ Prx := Rx * Rx;
+ Pry := Ry * Ry;
+ if RadCheck > 10 then
+ RadOk := False;
+ end;
+ // Calculate (Cx1, Cy1)
+ if LargeFlag = SweepFlag then
+ Sign := -1
+ else
+ Sign := 1;
+ Sq := (Prx * Pry - Prx * Py1 - Pry * Px1) / (Prx * Py1 + Pry * Px1);
+ if Sq < 0 then
+ Coef := Sign * Sqrt(0)
+ else
+ Coef := Sign * Sqrt(Sq);
+ Cx1 := Coef * ((Rx * Y1) / Ry);
+ Cy1 := Coef * -((Ry * X1) / Rx);
+ // Calculate (CX, CY) from (Cx1, Cy1)
+ Sx2 := (X0 + X2) / 2;
+ Sy2 := (Y0 + Y2) / 2;
+ CX := Sx2 + (CosA * Cx1 - SinA * Cy1);
+ CY := Sy2 + (SinA * Cx1 + CosA * Cy1);
+ // Calculate the StartAngle (angle1) and the SweepAngle (dangle)
+ Ux := (X1 - Cx1) / Rx;
+ Uy := (Y1 - Cy1) / Ry;
+ Vx := (-X1 - Cx1) / Rx;
+ Vy := (-Y1 - Cy1) / Ry;
+ // Calculate the angle start
+ N := Sqrt(Ux * Ux + Uy * Uy);
+ P := Ux; // (1 * Ux ) + (0 * Uy )
+ if Uy < 0 then
+ Sign := -1
+ else
+ Sign := 1;
+ V := P / N;
+ if V < -1 then
+ V := -1;
+ if V > 1 then
+ V := 1;
+ StartAngle := Sign * ArcCos(V);
+ // Calculate the sweep angle
+ N := Sqrt((Ux * Ux + Uy * Uy) * (Vx * Vx + Vy * Vy));
+ P := Ux * Vx + Uy * Vy;
+ if Ux * Vy - Uy * Vx < 0 then
+ Sign := -1
+ else
+ Sign := 1;
+ V := P / N;
+ if V < -1 then
+ V := -1;
+ if V > 1 then
+ V := 1;
+ SweepAngle := Sign * ArcCos(V);
+ if (not SweepFlag) and (SweepAngle > 0) then
+ SweepAngle := SweepAngle - Pi * 2
+ else if SweepFlag and (SweepAngle < 0) then
+ SweepAngle := SweepAngle + Pi * 2;
+ Len := Count;
+ AddArcSvgPart(TPointF.Zero, TPointF.Create(Rx, Ry), RadToDeg(StartAngle), RadToDeg(SweepAngle));
+ M := TMatrix.Identity;
+ M.m31 := CX;
+ M.m32 := CY;
+ M := TMatrix.CreateRotation(Angle) * M;
+ I := Len;
+ while I < Count do
+ begin
+ FPathData[I] := TPathPoint.Create(FPathData[I].Kind, FPathData[I].Point * M);
+ Inc(I);
+ end;
+end;
+
+function TPathData.IsEmpty: Boolean;
+begin
+ Result := (FPathData.Count < 1) or (GetBounds.Width * GetBounds.Height = 0);
+end;
+
+function TPathData.GetPathString: string;
+var
+ I: Integer;
+ Builder: TStringBuilder;
+begin
+ Builder := TStringBuilder.Create;
+ try
+ I := 0;
+ while I < Count do
+ begin
+ case FPathData[I].Kind of
+ TPathPointKind.MoveTo:
+ Builder.Append('M')
+ .Append(FloatToStr(FPathData[I].Point.X, USFormatSettings))
+ .Append(',')
+ .Append(FloatToStr(FPathData[I].Point.Y, USFormatSettings))
+ .Append(' ');
+ TPathPointKind.LineTo:
+ Builder.Append('L')
+ .Append(FloatToStr(FPathData[I].Point.X, USFormatSettings))
+ .Append(',')
+ .Append(FloatToStr(FPathData[I].Point.Y, USFormatSettings))
+ .Append(' ');
+ TPathPointKind.CurveTo:
+ begin
+ Builder.Append('C')
+ .Append(FloatToStr(FPathData[I].Point.X, USFormatSettings))
+ .Append(',')
+ .Append(FloatToStr(FPathData[I].Point.Y, USFormatSettings))
+ .Append(' ');
+
+ Builder.Append(FloatToStr(FPathData[I + 1].Point.X, USFormatSettings))
+ .Append(',')
+ .Append(FloatToStr(FPathData[I + 1].Point.Y, USFormatSettings))
+ .Append(' ');
+
+ Builder.Append(FloatToStr(FPathData[I + 2].Point.X, USFormatSettings))
+ .Append(',')
+ .Append(FloatToStr(FPathData[I + 2].Point.Y, USFormatSettings))
+ .Append(' ');
+
+ Inc(I, 2);
+ end;
+ TPathPointKind.Close:
+ Builder.Append('Z ');
+ end;
+ Inc(I);
+ end;
+ Result := Builder.ToString(True);
+ finally
+ Builder.Free;
+ end;
+end;
+
+function TPathData.GetTokensFromString(const PathString: string; var Pos: Integer): string;
+var
+ StringBuilder: TStringBuilder;
+begin
+ if Pos < PathString.Length then
+ begin
+ StringBuilder := TStringBuilder.Create;
+ try
+ while (Pos < PathString.Length) and (PathString.Chars[Pos] = ' ') do
+ Inc(Pos);
+ while (Pos < PathString.Length) and ('zmlchvsqtaZMLCHVSQTA'.Contains(PathString.Chars[Pos])) do
+ begin
+ StringBuilder.Append(PathString.Chars[Pos]);
+ Inc(Pos);
+ end;
+ Result := StringBuilder.ToString(True);
+ finally
+ StringBuilder.Free;
+ end;
+ end
+ else
+ Result := string.Empty;
+end;
+
+function TPathData.GetNumberFromString(const PathString: string; var Pos: Integer): string;
+const
+ ExponentChar = 'E';
+var
+ StringBuilder: TStringBuilder;
+ CurrentChar: Char;
+begin
+ if Pos < PathString.Length then
+ begin
+ StringBuilder := TStringBuilder.Create;
+ try
+ while (Pos < PathString.Length) and (PathString.Chars[Pos] = ' ') do
+ Inc(Pos);
+ while Pos < PathString.Length do
+ begin
+ CurrentChar := PathString.Chars[Pos];
+ if CurrentChar.ToUpper = ExponentChar then
+ begin
+ StringBuilder.Append(ExponentChar);
+ Inc(Pos);
+ Continue;
+ end;
+ if (CurrentChar = '-') and (StringBuilder.Length > 0) and
+ (StringBuilder.Chars[StringBuilder.Length - 1] = ExponentChar) then
+ begin
+ StringBuilder.Append(CurrentChar);
+ Inc(Pos);
+ Continue;
+ end;
+ if (StringBuilder.Length > 0) and (CurrentChar = '-') then
+ Break;
+ if not '0123456789.'.Contains(CurrentChar) and not (CurrentChar = '-') then
+ Break;
+ StringBuilder.Append(CurrentChar);
+ Inc(Pos);
+ end;
+ while PathString.Chars[Pos] = ' ' do
+ Inc(Pos);
+ Result := StringBuilder.ToString(True);
+ finally
+ StringBuilder.Free;
+ end;
+ end
+ else
+ Result := string.Empty;
+end;
+
+function TPathData.GetPointFromString(const PathString: string; var Pos: Integer): TPointF;
+var
+ X, Y: string;
+begin
+ Result := TPointF.Zero;
+ if Pos < PathString.Length then
+ begin
+ while (Pos < PathString.Length) and PathString.Chars[Pos].IsInArray([',', ' ']) do
+ Inc(Pos);
+ X := GetNumberFromString(PathString, Pos);
+ while (Pos < PathString.Length) and PathString.Chars[Pos].IsInArray([',', ' ']) do
+ Inc(Pos);
+ Y := GetNumberFromString(PathString, Pos);
+ while (Pos < PathString.Length) and PathString.Chars[Pos].IsInArray([',', ' ']) do
+ Inc(Pos);
+ Result := TPointF.Create(StrToFloat(X, USFormatSettings), StrToFloat(Y, USFormatSettings));
+ end;
+end;
+
+function TPathData.HasRelativeOffset(const PathString: string; const Pos: Integer): Boolean;
+begin
+ Result := PathString.Chars[Pos].IsDigit or (PathString.Chars[Pos] = '-');
+end;
+
+procedure TPathData.SetPathString(const Value: string);
+var
+ Builder, TokenBuilder: TStringBuilder;
+ PathString, Tokens: string;
+ Radius, CurvePoint1, CurvePoint2, TempPoint: TPointF;
+ Large, Sweet: Boolean;
+ Pos, I, LastLength: Integer;
+ Angle: Single;
+ Token: Char;
+begin
+ Builder := TStringBuilder.Create;
+ TokenBuilder := TStringBuilder.Create;
+ try
+ for I := 0 to Value.Length - 1 do
+ begin
+ if Value.Chars[I].IsInArray([#9, #10, #13]) then
+ Builder.Append(' ')
+ else
+ Builder.Append(Value.Chars[I]);
+ end;
+ PathString := Builder.ToString;
+ FPathData.Clear;
+ Pos := 0;
+ LastLength := -1;
+ while (Builder.Length > Pos) and (LastLength <> Pos) do
+ begin
+ LastLength := Pos;
+ Tokens := GetTokensFromString(PathString, Pos);
+ TokenBuilder.Clear;
+ TokenBuilder.Append(Tokens);
+ while TokenBuilder.Length > 0 do
+ begin
+ Token := TokenBuilder.Chars[0];
+ TokenBuilder.Remove(0, 1);
+ case Token of
+ 'z', 'Z':
+ ClosePath;
+ 'M':
+ begin
+ MoveTo(GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ LineTo(GetPointFromString(PathString, Pos));
+ end;
+ 'm':
+ begin
+ MoveToRel(GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ LineToRel(GetPointFromString(PathString, Pos));
+ end;
+ 'L':
+ begin
+ LineTo(GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ LineTo(GetPointFromString(PathString, Pos));
+ end;
+ 'l':
+ begin
+ LineToRel(GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ LineToRel(GetPointFromString(PathString, Pos));
+ end;
+ 'C':
+ begin
+ CurvePoint1 := GetPointFromString(PathString, Pos);
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ CurveTo(CurvePoint1, CurvePoint2, GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ begin
+ CurvePoint1 := GetPointFromString(PathString, Pos);
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ CurveTo(CurvePoint1, CurvePoint2, GetPointFromString(PathString, Pos));
+ end;
+ end;
+ 'c':
+ begin
+ CurvePoint1 := GetPointFromString(PathString, Pos);
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ CurveToRel(CurvePoint1, CurvePoint2, GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ begin
+ CurvePoint1 := GetPointFromString(PathString, Pos);
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ CurveToRel(CurvePoint1, CurvePoint2, GetPointFromString(PathString, Pos));
+ end;
+ end;
+ 'S':
+ begin
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ SmoothCurveTo(CurvePoint2, GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ begin
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ SmoothCurveTo(CurvePoint2, GetPointFromString(PathString, Pos));
+ end;
+ end;
+ 's':
+ begin
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ SmoothCurveToRel(CurvePoint2, GetPointFromString(PathString, Pos));
+ while HasRelativeOffset(PathString, Pos) do
+ begin
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ SmoothCurveToRel(CurvePoint2, GetPointFromString(PathString, Pos));
+ end;
+ end;
+ 'H':
+ HLineTo(StrToFloat(GetNumberFromString(PathString, Pos), USFormatSettings));
+ 'h':
+ HLineToRel(StrToFloat(GetNumberFromString(PathString, Pos), USFormatSettings));
+ 'V':
+ VLineTo(StrToFloat(GetNumberFromString(PathString, Pos), USFormatSettings));
+ 'v':
+ VLineToRel(StrToFloat(GetNumberFromString(PathString, Pos), USFormatSettings));
+ 'Q', 'q':
+ begin
+ GetPointFromString(PathString, Pos);
+ GetPointFromString(PathString, Pos);
+ end;
+ 'T', 't':
+ GetPointFromString(PathString, Pos);
+ 'A', 'a':
+ begin
+ if Count > 0 then
+ CurvePoint1 := FPathData[FPathData.Count - 1].Point
+ else
+ CurvePoint1 := TPointF.Zero;
+ Radius := GetPointFromString(PathString, Pos);
+ Angle := StrToFloat(GetNumberFromString(PathString, Pos), USFormatSettings);
+ TempPoint := GetPointFromString(PathString, Pos);
+ Large := TempPoint.X = 1;
+ Sweet := TempPoint.Y = 1;
+ CurvePoint2 := GetPointFromString(PathString, Pos);
+ if Token = 'a' then
+ CurvePoint2 := CurvePoint1 + CurvePoint2;
+ AddArcSvg(CurvePoint1, Radius, Angle, Large, Sweet, CurvePoint2);
+ end;
+ end;
+ end;
+ end;
+ DoChanged;
+ finally
+ TokenBuilder.Free;
+ Builder.Free;
+ end;
+end;
+
+{ TCanvasManager }
+
+class procedure TCanvasManager.UnInitialize;
+var
+ CanvasSrv: IFMXCanvasService;
+begin
+ FreeAndNil(FMeasureBitmap);
+ FreeAndNil(FCanvasList);
+ if (TPlatformServices.Current <> nil) and TPlatformServices.Current.SupportsPlatformService(IFMXCanvasService,
+ CanvasSrv) then
+ CanvasSrv.UnregisterCanvasClasses;
+end;
+
+class function TCanvasManager.CreateFromBitmap(const ABitmap: TBitmap; const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault): TCanvas;
+begin
+ Result := DefaultCanvas.CreateFromBitmap(ABitmap, AQuality);
+end;
+
+class function TCanvasManager.CreateFromPrinter(const APrinter: TAbstractPrinter): TCanvas;
+begin
+ Result := DefaultPrinterCanvas.CreateFromPrinter(APrinter);
+end;
+
+class function TCanvasManager.CreateFromWindow(const AParent: TWindowHandle; const AWidth, AHeight: Integer;
+ const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault): TCanvas;
+begin
+ Result := DefaultCanvas.CreateFromWindow(AParent, AWidth, AHeight, AQuality);
+end;
+
+class function TCanvasManager.GetDefaultCanvas: TCanvasClass;
+var
+ CanvasSrv: IFMXCanvasService;
+ CanvasClassRec: TCanvasClassRec;
+begin
+ if FDefaultCanvasClass = nil then
+ begin
+ Result := nil;
+ if (FCanvasList = nil) and TPlatformServices.Current.SupportsPlatformService(IFMXCanvasService, CanvasSrv) then
+ CanvasSrv.RegisterCanvasClasses;
+ if (FCanvasList <> nil) and (FCanvasList.Count > 0) then
+ begin
+ for CanvasClassRec in FCanvasList do
+ begin
+ if CanvasClassRec.Default and
+ (not FEnableSoftwareCanvas and (TCanvasStyle.NeedGPUSurface in CanvasClassRec.CanvasClass.GetCanvasStyle)) then
+ begin
+ Result := CanvasClassRec.CanvasClass;
+ Break;
+ end;
+ if CanvasClassRec.Default and
+ (FEnableSoftwareCanvas and not (TCanvasStyle.NeedGPUSurface in CanvasClassRec.CanvasClass.GetCanvasStyle)) then
+ begin
+ Result := CanvasClassRec.CanvasClass;
+ Break;
+ end;
+ end;
+ if (Result = nil) and FEnableSoftwareCanvas then
+ begin
+ for CanvasClassRec in FCanvasList do
+ begin
+ if not (TCanvasStyle.NeedGPUSurface in CanvasClassRec.CanvasClass.GetCanvasStyle) then
+ begin
+ Result := CanvasClassRec.CanvasClass;
+ Break;
+ end;
+ end;
+ end;
+ if Result = nil then
+ Result := FCanvasList[0].CanvasClass;
+ FDefaultCanvasClass := Result;
+ end
+ else
+ raise ECanvasManagerException.Create('No TCanvas implementation found');
+ end
+ else
+ Result := FDefaultCanvasClass;
+end;
+
+class function TCanvasManager.GetDefaultPrinterCanvas: TCanvasClass;
+var
+ CanvasSrv: IFMXCanvasService;
+ CanvasClassRec: TCanvasClassRec;
+begin
+ if FDefaultPrinterCanvasClass = nil then
+ begin
+ Result := nil;
+ if FCanvasList = nil then
+ if TPlatformServices.Current.SupportsPlatformService(IFMXCanvasService, CanvasSrv) then
+ CanvasSrv.RegisterCanvasClasses;
+ if (FCanvasList <> nil) and (FCanvasList.Count > 0) then
+ begin
+ for CanvasClassRec in FCanvasList do
+ if CanvasClassRec.PrinterCanvas then
+ begin
+ Result := CanvasClassRec.CanvasClass;
+ Break;
+ end;
+ FDefaultPrinterCanvasClass := Result;
+ end
+ else
+ raise ECanvasManagerException.Create('No TCanvas for printer implementation found');
+ end
+ else
+ Result := FDefaultPrinterCanvasClass;
+end;
+
+class function TCanvasManager.GetMeasureCanvas: TCanvas;
+begin
+ if FMeasureBitmap = nil then
+ FMeasureBitmap := TBitmap.Create(1, 1);
+ Result := FMeasureBitmap.Canvas
+end;
+
+class procedure TCanvasManager.RecreateFromPrinter(const Canvas: TCanvas; const APrinter: TAbstractPrinter);
+begin
+ Canvas.UnInitialize;
+ Canvas.CreateFromPrinter(APrinter);
+end;
+
+class procedure TCanvasManager.EnableSoftwareCanvas(const Enable: Boolean);
+begin
+ FEnableSoftwareCanvas := Enable;
+ FDefaultCanvasClass := nil;
+end;
+
+class procedure TCanvasManager.RegisterCanvas(const CanvasClass: TCanvasClass; const ADefault: Boolean; const APrinterCanvas: Boolean);
+var
+ Rec: TCanvasClassRec;
+begin
+ if FCanvasList = nil then
+ FCanvasList := TList.Create;
+ Rec.CanvasClass := CanvasClass;
+ Rec.Default := ADefault;
+ Rec.PrinterCanvas := APrinterCanvas;
+ FCanvasList.Add(Rec);
+end;
+
+{ TCanvas.TMetaBrush }
+
+destructor TCanvas.TMetaBrush.Destroy;
+begin
+ FGradient.Free;
+ inherited;
+end;
+
+function TCanvas.TMetaBrush.GetGradient: TGradient;
+begin
+ if FGradient = nil then
+ begin
+ FGradient := TGradient.Create;
+ FValid := False;
+ end;
+
+ Result := FGradient;
+end;
+
+{ TCanvas }
+
+constructor TCanvas.CreateFromWindow(const AParent: TWindowHandle; const AWidth, AHeight: Integer;
+ const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault);
+begin
+ inherited Create;
+ FQuality := AQuality;
+ FParent := AParent;
+ FWidth := AWidth;
+ FHeight := AHeight;
+ Initialize;
+end;
+
+procedure TCanvas.RaiseIfBeginSceneCountZero;
+begin
+ if BeginSceneCount = 0 then
+ raise ECanvasException.Create(SCannotPaintOnCanvasWithoutBeginScene);
+end;
+
+procedure TCanvas.Clear(const AColor: TAlphaColor);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DoClear(AColor);
+end;
+
+procedure TCanvas.ClearRect(const ARect: TRectF; const AColor: TAlphaColor);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DoClearRect(ARect, AColor);
+end;
+
+class procedure TCanvas.CopyBitmap(const Source, Dest: TBitmap);
+var
+ S, D: TBitmapData;
+begin
+ if (Source.Width = Dest.Width) and (Source.Height = Dest.Height) then
+ begin
+ if not Source.IsEmpty then
+ begin
+ if Source.CanvasClass = Dest.CanvasClass then
+ Source.CanvasClass.DoCopyBitmap(Source, Dest)
+ else if Source.Map(TMapAccess.Read, S) and Dest.Map(TMapAccess.Write, D) then
+ try
+ D.Copy(S);
+ finally
+ Source.Unmap(S);
+ Dest.Unmap(D);
+ end;
+ end;
+ end
+ else
+ raise ECanvasException.Create(SBitmapSizeNotEqual);
+end;
+
+class constructor TCanvas.Create;
+begin
+ FLock := TObject.Create;
+end;
+
+constructor TCanvas.CreateFromBitmap(const ABitmap: TBitmap; const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault);
+begin
+ inherited Create;
+ FQuality := AQuality;
+ FBitmap := ABitmap;
+ FWidth := ABitmap.Width;
+ FHeight := ABitmap.Height;
+ Initialize;
+end;
+
+constructor TCanvas.CreateFromPrinter(const APrinter: TAbstractPrinter);
+begin
+ inherited Create;
+ Initialize;
+ FPrinter := APrinter;
+end;
+
+procedure TCanvas.Initialize;
+begin
+ FScale := GetCanvasScale;
+ FStroke := TStrokeBrush.Create(TBrushKind.Solid, $FF000000);
+ FFill := TBrush.Create(TBrushKind.Solid, $FFFFFFFF);
+ FFont := TFont.Create;
+ FFont.OnChanged := FontChanged;
+ FCanvasSaveData := TCanvasSaveStateList.Create;
+ FMatrixMeaning := TMatrixMeaning.Identity;
+ FBlending := True;
+end;
+
+procedure TCanvas.UnInitialize;
+begin
+ FCanvasSaveData.DisposeOf;
+ FFont.DisposeOf;
+ FStroke.DisposeOf;
+ FFill.DisposeOf;
+end;
+
+destructor TCanvas.Destroy;
+begin
+ TMessageManager.DefaultManager.SendMessage(Self, TCanvasDestroyMessage.Create);
+ UnInitialize;
+ inherited;
+end;
+
+class destructor TCanvas.Destroy;
+begin
+ FLock.Free;
+end;
+
+function TCanvas.DoBeginScene(AClipRects: PClipRects = nil; AContextHandle: THandle = 0): Boolean;
+begin
+ FClippingChangeCount := 0;
+ FSavingStateCount := 0;
+
+ Stroke.Thickness := 1;
+ Stroke.Cap := TStrokeCap.Flat;
+ Stroke.Join := TStrokeJoin.Miter;
+ Stroke.Dash := TStrokeDash.Solid;
+ Stroke.Kind := TBrushKind.Solid;
+ Fill.Kind := TBrushKind.Solid;
+ SetMatrix(TMatrix.Identity);
+ Result := True;
+end;
+
+procedure TCanvas.DoBlendingChanged;
+begin
+
+end;
+
+procedure TCanvas.DoClear(const Color: TAlphaColor);
+begin
+end;
+
+procedure TCanvas.DoClearRect(const ARect: TRectF; const AColor: TAlphaColor);
+begin
+end;
+
+class procedure TCanvas.DoCopyBitmap(const Source, Dest: TBitmap);
+var
+ S, D: TBitmapData;
+begin
+ if Source.Map(TMapAccess.Read, S) and Dest.Map(TMapAccess.Write, D) then
+ try
+ D.Copy(S);
+ finally
+ Source.Unmap(S);
+ Dest.Unmap(D);
+ end;
+end;
+
+procedure TCanvas.DoEndScene;
+begin
+ if FBitmap <> nil then
+ FBitmap.BitmapChanged;
+end;
+
+procedure TCanvas.DoExcludeClipRect(const ARect: TRectF);
+begin
+end;
+
+function TCanvas.AlignToPixel(const Value: TPointF): TPointF;
+begin
+ case FMatrixMeaning of
+ TMatrixMeaning.Identity:
+ Result := TPointF.Create(Round(Value.X * FScale + TEpsilon.Vector) / FScale,
+ Round(Value.Y * FScale + TEpsilon.Vector) / FScale);
+ TMatrixMeaning.Translate:
+ Result := TPointF.Create(Round((Matrix.m31 + Value.X) * FScale + TEpsilon.Vector) / FScale - Matrix.m31,
+ Round((Matrix.m32 + Value.Y) * FScale + TEpsilon.Vector) / FScale - Matrix.m32);
+ else
+ Result := Value;
+ end;
+end;
+
+function TCanvas.AlignToPixel(const Rect: TRectF): TRectF;
+begin
+ Result.Left := AlignToPixelHorizontally(Rect.Left);
+ Result.Top := AlignToPixelVertically(Rect.Top);
+ Result.Right := Result.Left + Round(Rect.Width * Scale) / Scale; // keep ratio horizontally
+ Result.Bottom := Result.Top + Round(Rect.Height * Scale) / Scale; // keep ratio vertically
+end;
+
+function TCanvas.AlignToPixelHorizontally(const Value: Single): Single;
+begin
+ case FMatrixMeaning of
+ TMatrixMeaning.Identity:
+ Result := Round(Value * FScale + TEpsilon.Vector) / FScale;
+ TMatrixMeaning.Translate:
+ Result := Round((Matrix.m31 + Value) * FScale + TEpsilon.Vector) / FScale - Matrix.m31;
+ else
+ Result := Value;
+ end;
+end;
+
+function TCanvas.AlignToPixelVertically(const Value: Single): Single;
+begin
+ case FMatrixMeaning of
+ TMatrixMeaning.Identity:
+ Result := Round(Value * FScale + TEpsilon.Vector) / FScale;
+ TMatrixMeaning.Translate:
+ Result := Round((Matrix.m32 + Value) * FScale + TEpsilon.Vector) / FScale - Matrix.m32;
+ else
+ Result := Value;
+ end;
+end;
+
+class procedure TCanvas.Lock;
+begin
+ TMonitor.Enter(FLock);
+end;
+
+class procedure TCanvas.Unlock;
+begin
+ TMonitor.Exit(FLock);
+end;
+
+function TCanvas.BeginScene(AClipRects: PClipRects = nil; AContextHandle: THandle = 0): Boolean;
+begin
+ Lock;
+ try
+ if FBeginSceneCount = 0 then
+ begin
+ Result := (Width > 0) and (Height > 0) and DoBeginScene(AClipRects, AContextHandle);
+ if not Result then
+ begin
+ Unlock;
+ Exit;
+ end;
+ end
+ else
+ Result := FBeginSceneCount > 0;
+ Inc(FBeginSceneCount);
+ except
+ Unlock;
+ raise;
+ end;
+end;
+
+procedure TCanvas.EndScene;
+begin
+ try
+ if FBeginSceneCount = 1 then
+ DoEndScene;
+ Dec(FBeginSceneCount);
+ finally
+ Unlock;
+ end;
+end;
+
+procedure TCanvas.ExcludeClipRect(const ARect: TRectF);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DoExcludeClipRect(ARect);
+end;
+
+procedure TCanvas.DoSetMatrix(const M: TMatrix);
+begin
+end;
+
+procedure TCanvas.SetMatrix(const M: TMatrix);
+begin
+ FMatrixMeaning := TMatrixMeaning.Unknown;
+ if not SameValue(FOffset.X, 0, TEpsilon.Matrix) or not SameValue(FOffset.Y, 0, TEpsilon.Matrix) then
+ FMatrix := TMatrix.CreateTranslation(FOffset.X, FOffset.Y) * M
+ else
+ FMatrix := M;
+ { Check for identity matrix values. It is assumed that the matrix is composed of
+ three vectors of unit length, so by comparing some specific values with one,
+ we discard any other possibility of other vectors. }
+ if SameValue(FMatrix.m11, 1, TEpsilon.Matrix) and SameValue(FMatrix.m22, 1, TEpsilon.Matrix) and
+ SameValue(FMatrix.m33, 1, TEpsilon.Matrix) then
+ begin
+ if SameValue(FMatrix.m31, 0, TEpsilon.Matrix) and SameValue(FMatrix.m32, 0, TEpsilon.Matrix) then
+ begin // If no translation is present, we have an identity matrix.
+ FMatrixMeaning := TMatrixMeaning.Identity;
+ end
+ else
+ begin // Translation information is present in the matrix.
+ FMatrixMeaning := TMatrixMeaning.Translate;
+
+ FMatrixTranslate.X := FMatrix.m31;
+ FMatrixTranslate.Y := FMatrix.m32;
+ end;
+ end;
+ DoSetMatrix(FMatrix);
+end;
+
+procedure TCanvas.MultiplyMatrix(const M: TMatrix);
+var
+ MulMatrix: TMatrix;
+begin
+ MulMatrix := M * FMatrix;
+ SetMatrix(MulMatrix);
+end;
+
+function TCanvas.CreateSaveState: TCanvasSaveState;
+begin
+ Result := TCanvasSaveState.Create;
+end;
+
+procedure TCanvas.RestoreState(const State: TCanvasSaveState);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if FCanvasSaveData.IndexOf(State) >= 0 then
+ Assign(State);
+end;
+
+procedure TCanvas.FontChanged(Sender: TObject);
+begin
+end;
+
+class function TCanvas.InitializeBitmap(const Width, Height: Integer; const Scale: Single; var PixelFormat: TPixelFormat): THandle;
+begin
+ if (Width > 0) and (Height > 0) then
+ Result := DoInitializeBitmap(Width, Height, Scale, PixelFormat)
+ else
+ Result := 0;
+end;
+
+procedure TCanvas.IntersectClipRect(const ARect: TRectF);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DoIntersectClipRect(ARect);
+end;
+
+function TCanvas.IsScaleInteger: Boolean;
+begin
+ Result := SameValue(Frac(Scale), 0, TEpsilon.Scale);
+end;
+
+class procedure TCanvas.FinalizeBitmap(var Bitmap: THandle);
+begin
+ if Bitmap <> 0 then
+ DoFinalizeBitmap(Bitmap);
+end;
+
+procedure TCanvas.Flush;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DoFlush;
+end;
+
+class function TCanvas.MapBitmap(const Bitmap: THandle; const Access: TMapAccess; var Data: TBitmapData): Boolean;
+begin
+ if Bitmap <> 0 then
+ Result := DoMapBitmap(Bitmap, Access, Data)
+ else
+ Result := False;
+end;
+
+class procedure TCanvas.UnmapBitmap(const Bitmap: THandle; var Data: TBitmapData);
+begin
+ if Bitmap <> 0 then
+ DoUnmapBitmap(Bitmap, Data);
+end;
+
+function TCanvas.LoadFontFromStream(const AStream: TStream): Boolean;
+begin
+ Result := False;
+
+end;
+
+procedure TCanvas.MeasureLines(const ALines: TLineMetricInfo; const ARect: TRectF; const AText: string; const WordWrap: Boolean; const Flags: TFillTextFlags;
+ const ATextAlign: TTextAlign; const AVTextAlign: TTextAlign = TTextAlign.Center);
+var
+ WStartChar, WSaveChar, WCurChar, WCutOffChar: Integer;
+ LCurChar: Integer;
+ TmpS: string;
+ WWidth: Single;
+ LEditRectWidth: Single;
+ Tok, LText: string;
+
+ function _IsSurrogate(Surrogate: WideChar): Boolean;
+ begin
+ Result := (Integer(Surrogate) >= $D800) and (Integer(Surrogate) <= $DFFF);
+ end;
+
+ procedure _SkipSeparators(var Pos: Integer; const S: string);
+ const
+ // #$0020 SPACE
+ // #$0021 ! EXCLAMATION MARK
+ // #$002C , COMMA
+ // #$002D - HYPHEN-MINUS
+ // #$002E . FULL STOP
+ // #$003A : COLON
+ // #$003B ; SEMICOLON
+ // #$003F ? QUESTION MARK
+ BasicSeparatos: string = #$0020#$0021#$002C#$002D#$002E#$003A#$003B#$003F;
+ MaxBasicSeparators: WideChar = #$003F;
+ var
+ ch: WideChar;
+ begin
+ while Pos < S.Length do
+ begin
+ ch := S.Chars[Pos];
+ if (ch > MaxBasicSeparators) or not BasicSeparatos.Contains(ch) then
+ Break;
+ if _IsSurrogate(ch) then
+ Inc(Pos, 2)
+ else
+ Inc(Pos);
+ end;
+ end;
+
+ function _WideGetToken(var Pos: Integer; const S: string): string;
+ const
+ // #$0020 SPACE
+ // #$0021 ! EXCLAMATION MARK
+ // #$002C , COMMA
+ // #$002D - HYPHEN-MINUS
+ // #$002E . FULL STOP
+ // #$003A : COLON
+ // #$003B ; SEMICOLON
+ // #$003F ? QUESTION MARK
+ BasicSeparatos: string = #$0020#$0021#$002C#$002D#$002E#$003A#$003B#$003F;
+ MaxBasicSeparators: WideChar = #$003F;
+ var
+ ch: WideChar;
+ begin
+ Result := '';
+ { skip first separators }
+ _SkipSeparators(Pos, S);
+
+ { get }
+ while Pos < S.Length do
+ begin
+ ch := S.Chars[Pos];
+ if (ch <= MaxBasicSeparators) and BasicSeparatos.Contains(ch) then
+ Break;
+ if _IsSurrogate(ch) then
+ begin
+ Result := Result + S.Substring(Pos, 2);
+ Inc(Pos, 2)
+ end
+ else
+ begin
+ Result := Result + S.Chars[Pos];
+ Inc(Pos);
+ end;
+ end;
+
+ { skip separators }
+ _SkipSeparators(Pos, S);
+ end;
+
+ function RoundToPowerOf2(I: Integer): Integer;
+ begin
+ I := I or (I shr 1);
+ I := I or (I shr 2);
+ I := I or (I shr 4);
+ I := I or (I shr 8);
+ I := I or (I shr 16);
+ Result := I + 1;
+ end;
+
+ function CutOffPoint(TmpS: string; Width: Single): Integer;
+ var
+ W: Single;
+ Delta: Integer;
+ begin
+ Delta := RoundToPowerOf2(TmpS.Length) div 2;
+ Result := Delta;
+
+ while Delta > 0 do
+ begin
+ W := TextWidth(TmpS.Substring(0, Result));
+ if W > Width then
+ Result := Result - Delta;
+ Delta := Delta div 2;
+ Result := Result + Delta;
+ end;
+ end;
+
+begin
+ ALines.Count := 0;
+ if AText = '' then
+ Exit;
+
+ ALines.Count := 1;
+ LEditRectWidth := ARect.Width;
+
+ // first check linecreaks
+ LText := AText;
+ TmpS := '';
+
+ LCurChar := 0;
+
+ ALines.Count := 1;
+ ALines.Metrics[0].Index := 1;
+ while LCurChar < LText.Length do
+ begin
+ if (LText.Chars[LCurChar] = #13) or (LText.Chars[LCurChar] = #10) then
+ begin
+ if (LText.Chars[LCurChar] = #13) and (LCurChar + 1 < LText.Length) then
+ if LText.Chars[LCurChar + 1] = #10 then
+ Inc(LCurChar);
+
+ if WordWrap and (TextWidth(TmpS) > LEditRectWidth) then
+ begin
+ WCurChar := 0;
+ WStartChar := 0;
+ WSaveChar := 0;
+ Tok := _WideGetToken(WCurChar, TmpS);
+ while Tok <> '' do
+ begin
+ WWidth := TextWidth(TmpS.Substring(WStartChar, WCurChar - WStartChar));
+ if WWidth > LEditRectWidth then
+ begin
+ if WSaveChar = WStartChar then
+ begin
+ WCutOffChar := CutOffPoint(TmpS.Substring(WStartChar, WCurChar - WStartChar), LEditRectWidth);
+ ALines.Metrics[ALines.Count - 1].Len := WCutOffChar;
+ WCurChar := WStartChar + WCutOffChar;
+ WStartChar := WStartChar + WCutOffChar;
+ end
+ else
+ begin
+ ALines.Metrics[ALines.Count - 1].Len := WSaveChar - WStartChar;
+ WStartChar := WSaveChar;
+ end;
+ ALines.Count := ALines.Count + 1;
+ ALines.Metrics[ALines.Count - 1].Index :=
+ ALines.Metrics[ALines.Count - 2].Index + ALines.Metrics[ALines.Count - 2].Len;
+ end;
+ WSaveChar := WCurChar;
+ Tok := _WideGetToken(WCurChar, TmpS);
+ if WSaveChar = WCurChar then
+ Break; { !!! - error }
+ end;
+
+ ALines.Metrics[ALines.Count - 1].Len := WCurChar - WStartChar;
+ end
+ else
+ ALines.Metrics[ALines.Count - 1].Len := Length(TmpS);
+
+ ALines.Count := ALines.Count + 1;
+ ALines.Metrics[ALines.Count - 1].Index := LCurChar + 2;
+
+ TmpS := '';
+ end
+ else
+ TmpS := TmpS + LText.Chars[LCurChar];
+ Inc(LCurChar);
+ end;
+
+ // last line
+ if WordWrap and (TextWidth(TmpS) > LEditRectWidth) then
+ begin
+ WCurChar := 0;
+ WStartChar := 0;
+ WSaveChar := 0;
+ Tok := _WideGetToken(WCurChar, TmpS);
+ while Tok <> '' do
+ begin
+ Tok := TmpS.Substring(WStartChar, WCurChar - WStartChar);
+ WWidth := TextWidth(TmpS.Substring(WStartChar, WCurChar - WStartChar));
+ if WWidth > LEditRectWidth then
+ begin
+ if WSaveChar = WStartChar then
+ begin
+ WCutOffChar := CutOffPoint(TmpS.Substring(WStartChar, WCurChar - WStartChar), LEditRectWidth);
+ ALines.Metrics[ALines.Count - 1].Len := WCutOffChar;
+ WCurChar := WStartChar + WCutOffChar;
+ WStartChar := WStartChar + WCutOffChar;
+ end
+ else
+ begin
+ ALines.Metrics[ALines.Count - 1].Len := WSaveChar - WStartChar;
+ WStartChar := WSaveChar;
+ end;
+ ALines.Count := ALines.Count + 1;
+ ALines.Metrics[ALines.Count - 1].Index :=
+ ALines.Metrics[ALines.Count - 2].Index + ALines.Metrics[ALines.Count - 2].Len;
+ end;
+
+ WSaveChar := WCurChar;
+ Tok := _WideGetToken(WCurChar, TmpS);
+ if WSaveChar = WCurChar then
+ Break; { !!! - error }
+ end;
+ ALines.Metrics[ALines.Count - 1].Len := WCurChar - WStartChar;
+ end
+ else
+ ALines.Metrics[ALines.Count - 1].Len := Length(TmpS);
+end;
+
+procedure TCanvas.MeasureText(var ARect: TRectF; const AText: string; const WordWrap: Boolean;
+ const Flags: TFillTextFlags; const ATextAlign, AVTextAlign: TTextAlign);
+var
+ Layout: TTextLayout;
+begin
+ if AText.IsEmpty then
+ begin
+ ARect.Right := ARect.Left;
+ ARect.Bottom := ARect.Top;
+ Exit;
+ end;
+
+ Layout := TTextLayoutManager.TextLayoutByCanvas(Self.ClassType).Create(Self);
+ try
+ Layout.BeginUpdate;
+ try
+ Layout.TopLeft := ARect.TopLeft;
+ Layout.MaxSize := PointF(ARect.Width, ARect.Height);
+ Layout.Text := AText;
+ Layout.WordWrap := WordWrap;
+ Layout.HorizontalAlign := ATextAlign;
+ Layout.VerticalAlign := AVTextAlign;
+ Layout.Font := Self.Font;
+ Layout.Color := Self.Fill.Color;
+ Layout.RightToLeft := TFillTextFlag.RightToLeft in Flags;
+ finally
+ Layout.EndUpdate;
+ end;
+ ARect := Layout.TextRect;
+ finally
+ FreeAndNil(Layout);
+ end;
+end;
+
+function TCanvas.TextHeight(const AText: string): Single;
+var
+ R: TRectF;
+begin
+ R := RectF(0, 0, 10000, 10000);
+ MeasureText(R, AText, False, [], TTextAlign.Leading, TTextAlign.Leading);
+ Result := R.Bottom;
+end;
+
+function TCanvas.TextToPath(Path: TPathData; const ARect: TRectF; const AText: string; const WordWrap: Boolean;
+ const ATextAlign, AVTextAlign: TTextAlign): Boolean;
+var
+ Layout: TTextLayout;
+begin
+ if AText.IsEmpty then
+ Exit(False);
+
+ Layout := TTextLayoutManager.TextLayoutByCanvas(Self.ClassType).Create;
+ try
+ Layout.BeginUpdate;
+ try
+ Layout.TopLeft := ARect.TopLeft;
+ Layout.MaxSize := PointF(ARect.Width, ARect.Height);
+ Layout.Text := AText;
+ Layout.WordWrap := WordWrap;
+ Layout.HorizontalAlign := ATextAlign;
+ Layout.VerticalAlign := AVTextAlign;
+ Layout.Font := Self.Font;
+ Layout.Color := Self.Fill.Color;
+ finally
+ Layout.EndUpdate;
+ end;
+ Layout.ConvertToPath(Path);
+ Result := True;
+ finally
+ FreeAndNil(Layout);
+ end;
+end;
+
+function TCanvas.TextWidth(const AText: string): Single;
+var
+ R: TRectF;
+begin
+ R := RectF(0, 0, 10000, 20);
+ MeasureText(R, AText, False, [], TTextAlign.Leading, TTextAlign.Center);
+ Result := R.Right;
+end;
+
+function TCanvas.TransformPoint(const P: TPointF): TPointF;
+begin
+ case FMatrixMeaning of
+ TMatrixMeaning.Unknown:
+ Result := P * FMatrix;
+ TMatrixMeaning.Identity:
+ Result := P;
+ TMatrixMeaning.Translate:
+ begin
+ Result.X := P.X + FMatrixTranslate.X;
+ Result.Y := P.Y + FMatrixTranslate.Y;
+ end;
+ end;
+end;
+
+function TCanvas.TransformRect(const Rect: TRectF): TRectF;
+var
+ V: TPointF;
+begin
+ case FMatrixMeaning of
+ TMatrixMeaning.Unknown:
+ begin
+ Result.TopLeft := Rect.TopLeft * FMatrix;
+
+ V := TPointF.Create(Rect.Right, Rect.Top) * FMatrix;
+ Result.Right := V.X;
+ Result.Bottom := V.Y;
+
+ V := Rect.BottomRight * FMatrix;
+ Result.Right := V.X;
+ Result.Bottom := V.Y;
+
+ V := TPointF.Create(Rect.Left, Rect.Bottom) * FMatrix;
+ Result.Left := V.X;
+ Result.Bottom := V.Y;
+ end;
+ TMatrixMeaning.Identity:
+ Result := Rect;
+ TMatrixMeaning.Translate:
+ begin
+ Result := Rect;
+ Result.Offset(FMatrixTranslate);
+ end;
+ end;
+end;
+
+procedure TCanvas.FillArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single);
+begin
+ FillArc(Center, Radius, StartAngle, SweepAngle, AOpacity, FFill);
+end;
+
+procedure TCanvas.FillArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single;
+ const ABrush: TBrush);
+var
+ P: TPathData;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ P := TPathData.Create;
+ try
+ P.AddArc(Center, Radius, StartAngle, SweepAngle);
+ FillPath(P, AOpacity, ABrush);
+ finally
+ P.Free;
+ end;
+end;
+
+procedure TCanvas.DrawArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single);
+begin
+ DrawArc(Center, Radius, StartAngle, SweepAngle, AOpacity, FStroke);
+end;
+
+procedure TCanvas.DrawArc(const Center, Radius: TPointF; StartAngle, SweepAngle: Single; const AOpacity: Single;
+ const ABrush: TStrokeBrush);
+var
+ P: TPathData;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ P := TPathData.Create;
+ try
+ P.AddArc(Center, Radius, StartAngle, SweepAngle);
+ DrawPath(P, AOpacity, ABrush);
+ finally
+ P.Free;
+ end;
+end;
+
+procedure TCanvas.DrawBitmap(const ABitmap: TBitmap; const SrcRect, DstRect: TRectF; const AOpacity: Single;
+ const HighSpeed: Boolean);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DoDrawBitmap(ABitmap, SrcRect, DstRect, AOpacity, HighSpeed);
+end;
+
+procedure TCanvas.DrawEllipse(const ARect: TRectF; const AOpacity: Single);
+begin
+ DrawEllipse(ARect, AOpacity, FStroke);
+end;
+
+procedure TCanvas.DrawEllipse(const ARect: TRectF; const AOpacity: Single; const ABrush: TStrokeBrush);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if ABrush.Kind <> TBrushKind.None then
+ DoDrawEllipse(ARect, AOpacity, ABrush);
+end;
+
+procedure TCanvas.DrawLine(const APt1, APt2: TPointF; const AOpacity: Single);
+begin
+ DrawLine(APt1, APt2, AOpacity, FStroke);
+end;
+
+procedure TCanvas.DrawLine(const APt1, APt2: TPointF; const AOpacity: Single; const ABrush: TStrokeBrush);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if ABrush.Kind <> TBrushKind.None then
+ DoDrawLine(APt1, APt2, AOpacity, ABrush);
+end;
+
+function TCanvas.SaveState: TCanvasSaveState;
+var
+ SaveData: TCanvasSaveState;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ FSavingStateCount := FSavingStateCount + 1;
+ for SaveData in FCanvasSaveData do
+ begin
+ if not SaveData.Assigned then
+ begin
+ SaveData.Assign(Self);
+ Result := SaveData;
+ Exit;
+ end;
+ end;
+ Result := CreateSaveState;
+ try
+ Result.Assign(Self);
+ FCanvasSaveData.Add(Result);
+ except
+ Result.Free;
+ raise;
+ end;
+end;
+
+procedure TCanvas.SetBlending(const Value: Boolean);
+begin
+ if FBlending <> Value then
+ begin
+ FBlending := Value;
+ DoBlendingChanged;
+ end;
+end;
+
+procedure TCanvas.SetFill(const Value: TBrush);
+begin
+ FFill.Assign(Value);
+end;
+
+procedure TCanvas.FillPath(const APath: TPathData; const AOpacity: Single);
+begin
+ FillPath(APath, AOpacity, FFill);
+end;
+
+procedure TCanvas.FillPath(const APath: TPathData; const AOpacity: Single; const ABrush: TBrush);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if (ABrush.Kind <> TBrushKind.None) and not APath.IsEmpty then
+ DoFillPath(APath, AOpacity, ABrush);
+end;
+
+function TCanvas.DoFillPolygon(const Points: TPolygon; const AOpacity: Single; const ABrush: TBrush): Boolean;
+begin
+ Result := False;
+end;
+
+procedure TCanvas.FillPolygon(const Points: TPolygon; const AOpacity: Single);
+var
+ I: Integer;
+ Path: TPathData;
+ PathBreakFound: Boolean;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if not DoFillPolygon(Points, AOpacity, FFill) then
+ begin
+ Path := TPathData.Create;
+ try
+ PathBreakFound := False;
+ for I := 0 to High(Points) do
+ begin
+ if I = 0 then
+ Path.MoveTo(Points[I])
+ else if (Points[I].X = PolygonPointBreak.X) and (Points[I].Y = PolygonPointBreak.Y) then
+ begin
+ Path.ClosePath;
+ PathBreakFound := True;
+ end
+ else
+ Path.LineTo(Points[I]);
+ end;
+ if not PathBreakFound then
+ Path.ClosePath;
+ FillPath(Path, AOpacity);
+ finally
+ Path.Free;
+ end;
+ end;
+end;
+
+procedure TCanvas.FillRect(const ARect: TRectF; const AOpacity: Single; const ABrush: TBrush);
+begin
+ FillRect(ARect, 0, 0, [], AOpacity, ABrush);
+end;
+
+procedure TCanvas.FillRect(const ARect: TRectF; const AOpacity: Single);
+begin
+ FillRect(ARect, 0, 0, [], AOpacity);
+end;
+
+procedure TCanvas.DoFillRoundRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ABrush: TBrush; const ACornerType: TCornerType = TCornerType.Round);
+var
+ Path: TPathData;
+ X1, X2, Y1, Y2: Single;
+ R: TRectF;
+begin
+ R := ARect;
+ X1 := XRadius;
+ if RectWidth(R) - (X1 * 2) < 0 then
+ X1 := RectWidth(R) / 2;
+ X2 := XRadius * CurveKappaInv;
+ Y1 := YRadius;
+ if RectHeight(R) - (Y1 * 2) < 0 then
+ Y1 := RectHeight(R) / 2;
+ Y2 := YRadius * CurveKappaInv;
+ Path := TPathData.Create;
+ Path.MoveTo(PointF(R.Left, R.Top + Y1));
+ if TCorner.TopLeft in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Left + X1, R.Top));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Left + X2, R.Top + Y1), PointF(R.Left + X1, R.Top + Y2), PointF(R.Left + X1, R.Top));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Left + X2, R.Top + Y1));
+ Path.LineTo(PointF(R.Left + X1, R.Top + Y2));
+ Path.LineTo(PointF(R.Left + X1, R.Top));
+ end;
+ else
+ Path.CurveTo(PointF(R.Left, R.Top + (Y2)), PointF(R.Left + X2, R.Top), PointF(R.Left + X1, R.Top))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Left, R.Top));
+ Path.LineTo(PointF(R.Left + X1, R.Top));
+ end;
+ Path.LineTo(PointF(R.Right - X1, R.Top));
+ if TCorner.TopRight in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Right, R.Top + Y1));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Right - X1, R.Top + Y2), PointF(R.Right - X2, R.Top + Y1), PointF(R.Right, R.Top + Y1));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Right - X1, R.Top + Y2));
+ Path.LineTo(PointF(R.Right - X2, R.Top + Y1));
+ Path.LineTo(PointF(R.Right, R.Top + Y1));
+ end;
+ else
+ Path.CurveTo(PointF(R.Right - X2, R.Top), PointF(R.Right, R.Top + (Y2)), PointF(R.Right, R.Top + Y1))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Right, R.Top));
+ Path.LineTo(PointF(R.Right, R.Top + Y1));
+ end;
+ Path.LineTo(PointF(R.Right, R.Bottom - Y1));
+ if TCorner.BottomRight in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Right - X1, R.Bottom));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Right - X2, R.Bottom - Y1), PointF(R.Right - X1, R.Bottom - Y2),
+ PointF(R.Right - X1, R.Bottom));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Right - X2, R.Bottom - Y1));
+ Path.LineTo(PointF(R.Right - X1, R.Bottom - Y2));
+ Path.LineTo(PointF(R.Right - X1, R.Bottom));
+ end;
+ else
+ Path.CurveTo(PointF(R.Right, R.Bottom - (Y2)), PointF(R.Right - X2, R.Bottom), PointF(R.Right - X1, R.Bottom))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Right, R.Bottom));
+ Path.LineTo(PointF(R.Right - X1, R.Bottom));
+ end;
+ Path.LineTo(PointF(R.Left + X1, R.Bottom));
+ if TCorner.BottomLeft in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Left, R.Bottom - Y1));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Left + X1, R.Bottom - Y2), PointF(R.Left + X2, R.Bottom - Y1),
+ PointF(R.Left, R.Bottom - Y1));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Left + X1, R.Bottom - Y2));
+ Path.LineTo(PointF(R.Left + X2, R.Bottom - Y1));
+ Path.LineTo(PointF(R.Left, R.Bottom - Y1));
+ end;
+ else
+ Path.CurveTo(PointF(R.Left + X2, R.Bottom), PointF(R.Left, R.Bottom - (Y2)), PointF(R.Left, R.Bottom - Y1))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Left, R.Bottom));
+ Path.LineTo(PointF(R.Left, R.Bottom - Y1));
+ end;
+ Path.ClosePath;
+ DoFillPath(Path, AOpacity, ABrush);
+ Path.Free;
+end;
+
+procedure TCanvas.DoFlush;
+begin
+
+end;
+
+procedure TCanvas.DoIntersectClipRect(const ARect: TRectF);
+begin
+end;
+
+procedure TCanvas.FillRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ACornerType: TCornerType);
+begin
+ FillRect(ARect, XRadius, YRadius, ACorners, AOpacity, FFill, ACornerType);
+end;
+
+procedure TCanvas.FillRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ABrush: TBrush; const ACornerType: TCornerType);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if ABrush.Kind = TBrushKind.None then
+ Exit;
+
+ if ((XRadius = 0) and (YRadius = 0)) or (ACorners = []) then
+ DoFillRect(ARect, AOpacity, ABrush)
+ else
+ DoFillRoundRect(ARect, XRadius, YRadius, ACorners, AOpacity, ABrush, ACornerType)
+end;
+
+procedure TCanvas.FillEllipse(const ARect: TRectF; const AOpacity: Single);
+begin
+ FillEllipse(ARect, AOpacity, FFill);
+end;
+
+procedure TCanvas.FillEllipse(const ARect: TRectF; const AOpacity: Single; const ABrush: TBrush);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if ABrush.Kind <> TBrushKind.None then
+ DoFillEllipse(ARect, AOpacity, ABrush);
+end;
+
+procedure TCanvas.FillText(const ARect: TRectF; const AText: string; const WordWrap: Boolean; const AOpacity: Single;
+ const Flags: TFillTextFlags; const ATextAlign, AVTextAlign: TTextAlign);
+var
+ Layout: TTextLayout;
+begin
+ Layout := TTextLayoutManager.TextLayoutByCanvas(Self.ClassType).Create(Self);
+ try
+ Layout.BeginUpdate;
+ Layout.TopLeft := ARect.TopLeft;
+ Layout.MaxSize := PointF(ARect.Width, ARect.Height);
+ Layout.Text := AText;
+ Layout.WordWrap := WordWrap;
+ Layout.Opacity := AOpacity;
+ Layout.HorizontalAlign := ATextAlign;
+ Layout.VerticalAlign := AVTextAlign;
+ Layout.Font := Self.Font;
+ Layout.Color := Self.Fill.Color;
+ Layout.RightToLeft := TFillTextFlag.RightToLeft in Flags;
+ Layout.EndUpdate;
+ Layout.RenderLayout(Self);
+ finally
+ FreeAndNil(Layout);
+ end;
+end;
+
+procedure TCanvas.DrawPath(const APath: TPathData; const AOpacity: Single);
+begin
+ DrawPath(APath, AOpacity, FStroke);
+end;
+
+procedure TCanvas.DrawPath(const APath: TPathData; const AOpacity: Single; const ABrush: TStrokeBrush);
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if (ABrush.Kind <> TBrushKind.None) and not APath.IsEmpty then
+ DoDrawPath(APath, AOpacity, ABrush);
+end;
+
+function TCanvas.DoDrawPolygon(const Points: TPolygon; const AOpacity: Single; const ABrush: TStrokeBrush): Boolean;
+begin
+ Result := False;
+end;
+
+procedure TCanvas.DrawPolygon(const Points: TPolygon; const AOpacity: Single);
+var
+ I: Integer;
+ Path: TPathData;
+ PathBreakFound: Boolean;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if not DoDrawPolygon(Points, AOpacity, FStroke) then
+ begin
+ Path := TPathData.Create;
+ try
+ PathBreakFound := False;
+ for I := 0 to High(Points) do
+ begin
+ if I = 0 then
+ Path.MoveTo(Points[I])
+ else if (Points[I].X = PolygonPointBreak.X) and (Points[I].Y = PolygonPointBreak.Y) then
+ begin
+ Path.ClosePath;
+ PathBreakFound := True;
+ end
+ else
+ Path.LineTo(Points[I]);
+ end;
+ if not PathBreakFound then
+ Path.ClosePath;
+ DrawPath(Path, AOpacity);
+ finally
+ Path.Free;
+ end;
+ end;
+end;
+
+procedure TCanvas.DrawRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ACornerType: TCornerType);
+begin
+ DrawRect(ARect, XRadius, YRadius, ACorners, AOpacity, FStroke, ACornerType);
+end;
+
+procedure TCanvas.DrawRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ABrush: TStrokeBrush; const ACornerType: TCornerType);
+var
+ Path: TPathData;
+ X1, X2, Y1, Y2: Single;
+ R: TRectF;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ if ABrush.Kind = TBrushKind.None then
+ Exit;
+
+ R := ARect;
+ if ((XRadius = 0) and (YRadius = 0)) or (ACorners = []) then
+ DoDrawRect(ARect, AOpacity, ABrush)
+ else
+ begin
+ R := ARect;
+ X1 := XRadius;
+ if RectWidth(R) - (X1 * 2) < 0 then
+ X1 := RectWidth(R) / 2;
+ X2 := XRadius * CurveKappaInv;
+ Y1 := YRadius;
+ if RectHeight(R) - (Y1 * 2) < 0 then
+ Y1 := RectHeight(R) / 2;
+ Y2 := YRadius * CurveKappaInv;
+ Path := TPathData.Create;
+ Path.MoveTo(PointF(R.Left, R.Top + Y1));
+ if TCorner.TopLeft in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Left + X1, R.Top));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Left + X2, R.Top + Y1), PointF(R.Left + X1, R.Top + Y2), PointF(R.Left + X1, R.Top));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Left + X2, R.Top + Y1));
+ Path.LineTo(PointF(R.Left + X1, R.Top + Y2));
+ Path.LineTo(PointF(R.Left + X1, R.Top));
+ end;
+ else
+ Path.CurveTo(PointF(R.Left, R.Top + (Y2)), PointF(R.Left + X2, R.Top), PointF(R.Left + X1, R.Top))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Left, R.Top));
+ Path.LineTo(PointF(R.Left + X1, R.Top));
+ end;
+ Path.LineTo(PointF(R.Right - X1, R.Top));
+ if TCorner.TopRight in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Right, R.Top + Y1));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Right - X1, R.Top + Y2), PointF(R.Right - X2, R.Top + Y1), PointF(R.Right, R.Top + Y1));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Right - X1, R.Top + Y2));
+ Path.LineTo(PointF(R.Right - X2, R.Top + Y1));
+ Path.LineTo(PointF(R.Right, R.Top + Y1));
+ end;
+ else
+ Path.CurveTo(PointF(R.Right - X2, R.Top), PointF(R.Right, R.Top + (Y2)), PointF(R.Right, R.Top + Y1))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Right, R.Top));
+ Path.LineTo(PointF(R.Right, R.Top + Y1));
+ end;
+ Path.LineTo(PointF(R.Right, R.Bottom - Y1));
+ if TCorner.BottomRight in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Right - X1, R.Bottom));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Right - X2, R.Bottom - Y1), PointF(R.Right - X1, R.Bottom - Y2),
+ PointF(R.Right - X1, R.Bottom));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Right - X2, R.Bottom - Y1));
+ Path.LineTo(PointF(R.Right - X1, R.Bottom - Y2));
+ Path.LineTo(PointF(R.Right - X1, R.Bottom));
+ end;
+ else
+ Path.CurveTo(PointF(R.Right, R.Bottom - (Y2)), PointF(R.Right - X2, R.Bottom), PointF(R.Right - X1, R.Bottom))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Right, R.Bottom));
+ Path.LineTo(PointF(R.Right - X1, R.Bottom));
+ end;
+ Path.LineTo(PointF(R.Left + X1, R.Bottom));
+ if TCorner.BottomLeft in ACorners then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(PointF(R.Left, R.Bottom - Y1));
+ TCornerType.InnerRound:
+ Path.CurveTo(PointF(R.Left + X1, R.Bottom - Y2), PointF(R.Left + X2, R.Bottom - Y1),
+ PointF(R.Left, R.Bottom - Y1));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(PointF(R.Left + X1, R.Bottom - Y2));
+ Path.LineTo(PointF(R.Left + X2, R.Bottom - Y1));
+ Path.LineTo(PointF(R.Left, R.Bottom - Y1));
+ end;
+ else
+ Path.CurveTo(PointF(R.Left + X2, R.Bottom), PointF(R.Left, R.Bottom - (Y2)), PointF(R.Left, R.Bottom - Y1))
+ end;
+ end
+ else
+ begin
+ Path.LineTo(PointF(R.Left, R.Bottom));
+ Path.LineTo(PointF(R.Left, R.Bottom - Y1));
+ end;
+ Path.ClosePath;
+ DoDrawPath(Path, AOpacity, ABrush);
+ Path.Free;
+ end;
+end;
+
+procedure TCanvas.DrawDashRect(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const AColor: TAlphaColor);
+var
+ Brush: TStrokeBrush;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ Brush := TStrokeBrush.Create(TBrushKind.Solid, AColor);
+ try
+ Brush.Thickness := 1;
+ Brush.Dash := TStrokeDash.Dash;
+ Brush.Kind := TBrushKind.Solid;
+ DrawRect(ARect, XRadius, YRadius, ACorners, AOpacity, Brush);
+ finally
+ Brush.Free;
+ end;
+end;
+
+procedure TCanvas.DrawRectSides(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ASides: TSides; const ACornerType: TCornerType = TCornerType.Round);
+begin
+ DrawRectSides(ARect, XRadius, YRadius, ACorners, AOpacity, ASides, FStroke, ACornerType);
+end;
+
+procedure TCanvas.DrawRectSides(const ARect: TRectF; const XRadius, YRadius: Single; const ACorners: TCorners;
+ const AOpacity: Single; const ASides: TSides; const ABrush: TStrokeBrush;
+ const ACornerType: TCornerType = TCornerType.Round);
+var
+ Path: TPathData;
+ X1, X2, Y1, Y2: Single;
+ DrawingRect: TRectF;
+begin
+ RaiseIfBeginSceneCountZero;
+
+ DrawingRect := ARect;
+ X1 := XRadius;
+ if DrawingRect.Width - (X1 * 2) < 0 then
+ if X1 <> 0 then // guard divide by zero
+ X1 := (XRadius * (DrawingRect.Width / (X1 * 2)));
+ X2 := X1 / 2;
+ Y1 := YRadius;
+ if DrawingRect.Height - (Y1 * 2) < 0 then
+ if Y1 <> 0 then // guard divide by zero
+ Y1 := (YRadius * (DrawingRect.Height / (Y1 * 2)));
+ Y2 := Y1 / 2;
+ Path := TPathData.Create;
+ try
+ Path.MoveTo(PointF(DrawingRect.Left, DrawingRect.Top + Y1));
+ if TCorner.TopLeft in ACorners then
+ begin
+ if (TSide.Top in ASides) or (TSide.Left in ASides) or (XRadius > 0) or (YRadius > 0) then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top));
+ TCornerType.InnerRound:
+ Path.CurveTo(TPointF.Create(DrawingRect.Left + X2, DrawingRect.Top + Y1),
+ TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top + Y2),
+ TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X2, DrawingRect.Top + Y1));
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top + Y2));
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top));
+ end;
+ else
+ Path.CurveTo(TPointF.Create(DrawingRect.Left, DrawingRect.Top + (Y2)),
+ TPointF.Create(DrawingRect.Left + X2, DrawingRect.Top), TPointF.Create(DrawingRect.Left + X1,
+ DrawingRect.Top))
+ end;
+ end
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top));
+ end
+ else
+ begin
+ if TSide.Left in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Left, DrawingRect.Top))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Left, DrawingRect.Top));
+ if TSide.Top in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Top));
+ end;
+ if not(TSide.Top in ASides) then
+ Path.MoveTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Top))
+ else
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Top));
+ if TCorner.TopRight in ACorners then
+ begin
+ if (TSide.Top in ASides) or (TSide.Right in ASides) or (XRadius > 0) or (YRadius > 0) then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1));
+ TCornerType.InnerRound:
+ Path.CurveTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Top + Y2),
+ TPointF.Create(DrawingRect.Right - X2, DrawingRect.Top + Y1),
+ TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Top + Y2));
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X2, DrawingRect.Top + Y1));
+ Path.LineTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1));
+ end;
+ else
+ Path.CurveTo(TPointF.Create(DrawingRect.Right - X2, DrawingRect.Top),
+ TPointF.Create(DrawingRect.Right, DrawingRect.Top + (Y2)),
+ TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1))
+ end;
+ end
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1));
+ end
+ else
+ begin
+ if TSide.Top in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top));
+ if TSide.Right in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Right, DrawingRect.Top + Y1));
+ end;
+ if not(TSide.Right in ASides) then
+ Path.MoveTo(TPointF.Create(DrawingRect.Right, DrawingRect.Bottom - Y1))
+ else
+ Path.LineTo(TPointF.Create(DrawingRect.Right, DrawingRect.Bottom - Y1));
+ if TCorner.BottomRight in ACorners then
+ begin
+ if (TSide.Bottom in ASides) or (TSide.Right in ASides) or (XRadius > 0) or (YRadius > 0) then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom));
+ TCornerType.InnerRound:
+ Path.CurveTo(TPointF.Create(DrawingRect.Right - X2, DrawingRect.Bottom - Y1),
+ TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom - Y2),
+ TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X2, DrawingRect.Bottom - Y1));
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom - Y2));
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom));
+ end;
+ else
+ Path.CurveTo(TPointF.Create(DrawingRect.Right, DrawingRect.Bottom - (Y2)),
+ TPointF.Create(DrawingRect.Right - X2, DrawingRect.Bottom), TPointF.Create(DrawingRect.Right - X1,
+ DrawingRect.Bottom))
+ end;
+ end
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom));
+ end
+ else
+ begin
+ if TSide.Right in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Right, DrawingRect.Bottom))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Right, DrawingRect.Bottom));
+ if TSide.Bottom in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Right - X1, DrawingRect.Bottom));
+ end;
+ if not(TSide.Bottom in ASides) then
+ Path.MoveTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Bottom))
+ else
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Bottom));
+ if TCorner.BottomLeft in ACorners then
+ begin
+ if (TSide.Bottom in ASides) or (TSide.Left in ASides) or (XRadius > 0) or (YRadius > 0) then
+ begin
+ case ACornerType of
+ // TCornerType.Round - default
+ TCornerType.Bevel:
+ Path.LineTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1));
+ TCornerType.InnerRound:
+ Path.CurveTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Bottom - Y2),
+ TPointF.Create(DrawingRect.Left + X2, DrawingRect.Bottom - Y1),
+ TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1));
+ TCornerType.InnerLine:
+ begin
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X1, DrawingRect.Bottom - Y2));
+ Path.LineTo(TPointF.Create(DrawingRect.Left + X2, DrawingRect.Bottom - Y1));
+ Path.LineTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1));
+ end;
+ else
+ Path.CurveTo(TPointF.Create(DrawingRect.Left + X2, DrawingRect.Bottom),
+ TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - (Y2)),
+ TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1))
+ end;
+ end
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1));
+ end
+ else
+ begin
+ if TSide.Bottom in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom));
+ if TSide.Left in ASides then
+ Path.LineTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1))
+ else
+ Path.MoveTo(TPointF.Create(DrawingRect.Left, DrawingRect.Bottom - Y1));
+ end;
+ if (TSide.Left in ASides) then
+ begin
+ Path.LineTo(TPointF.Create(DrawingRect.Left, DrawingRect.Top + Y1));
+ end;
+ DrawPath(Path, AOpacity, ABrush);
+ finally
+ Path.Free;
+ end;
+end;
+
+function TCanvas.GetCanvasScale: Single;
+begin
+ if Parent <> nil then
+ Result := Parent.Scale
+ else if Bitmap <> nil then
+ Result := Bitmap.BitmapScale
+ else
+ Result := DefaultScale;
+end;
+
+class function TCanvas.GetCanvasStyle: TCanvasStyles;
+begin
+ Result := [TCanvasStyle.SupportClipRects];
+end;
+
+class function TCanvas.GetAttribute(const Value: TCanvasAttribute): Integer;
+begin
+ case Value of
+ TCanvasAttribute.MaxBitmapSize:
+ Result := MaxAllowedBitmapSize;
+ else
+ raise EArgumentException.CreateRes(@SInvalidCanvasParameter);
+ end;
+end;
+
+procedure TCanvas.SetSize(const AWidth, AHeight: Integer);
+begin
+ FWidth := AWidth;
+ FHeight := AHeight;
+end;
+
+procedure TCanvas.DrawRect(const ARect: TRectF; const AOpacity: Single; const ABrush: TStrokeBrush);
+begin
+ DrawRect(ARect, 0, 0, AllCorners, AOpacity, ABrush);
+end;
+
+procedure TCanvas.DrawRect(const ARect: TRectF; const AOpacity: Single);
+begin
+ DrawRect(ARect, 0, 0, AllCorners, AOpacity);
+end;
+
+{ TBrushObject }
+
+constructor TBrushObject.Create(AOwner: TComponent);
+begin
+ inherited;
+ FBrush := TBrush.Create(TBrushKind.Solid, $FFFFFFFF);
+end;
+
+destructor TBrushObject.Destroy;
+begin
+ FreeAndNil(FBrush);
+ inherited;
+end;
+
+function TBrushObject.GetBrush: TBrush;
+begin
+ Result := FBrush;
+end;
+
+procedure TBrushObject.SetName(const NewName: TComponentName);
+begin
+ inherited;
+ if FStyleName = '' then
+ FStyleName := Name;
+end;
+
+{ TFontObject }
+
+constructor TFontObject.Create(AOwner: TComponent);
+begin
+ inherited;
+ FFont := TFont.Create;
+end;
+
+destructor TFontObject.Destroy;
+begin
+ FreeAndNil(FFont);
+ inherited;
+end;
+
+function TFontObject.GetFont: TFont;
+begin
+ Result := FFont;
+end;
+
+procedure TFontObject.SetName(const NewName: TComponentName);
+begin
+ inherited;
+ if FStyleName = '' then
+ FStyleName := Name;
+end;
+
+{ TPathObject }
+
+constructor TPathObject.Create(AOwner: TComponent);
+begin
+ inherited;
+ FPath := TPathData.Create();
+end;
+
+destructor TPathObject.Destroy;
+begin
+ FreeAndNil(FPath);
+ inherited;
+end;
+
+function TPathObject.GetPath: TPathData;
+begin
+ Result := FPath;
+end;
+
+procedure TPathObject.SetName(const NewName: TComponentName);
+begin
+ inherited;
+ if FStyleName = '' then
+ FStyleName := Name;
+end;
+
+{ TBitmapObject }
+
+constructor TBitmapObject.Create(AOwner: TComponent);
+begin
+ inherited;
+ FBitmap := TBitmap.Create(1, 1);
+end;
+
+destructor TBitmapObject.Destroy;
+begin
+ FreeAndNil(FBitmap);
+ inherited;
+end;
+
+function TBitmapObject.GetBitmap: TBitmap;
+begin
+ Result := FBitmap;
+end;
+
+procedure TBitmapObject.SetName(const NewName: TComponentName);
+begin
+ inherited;
+ if FStyleName = '' then
+ FStyleName := Name;
+end;
+
+{ TCanvasSaveState }
+
+procedure TCanvasSaveState.Assign(Source: TPersistent);
+var
+ LCanvas: TCanvas;
+begin
+ if Source is TCanvas then
+ begin
+ LCanvas := TCanvas(Source);
+ Self.FAssigned := True;
+ Self.FOffset := LCanvas.FOffset;
+ Self.FMatrix := LCanvas.FMatrix;
+ Self.FFill.Assign(LCanvas.Fill);
+ Self.FStroke.Assign(LCanvas.Stroke);
+ Self.FFont.Assign(LCanvas.Font);
+ end
+ else
+ inherited;
+end;
+
+procedure TCanvasSaveState.AssignTo(Dest: TPersistent);
+var
+ LCanvas: TCanvas;
+begin
+ if Dest is TCanvas then
+ begin
+ LCanvas := TCanvas(Dest);
+ Self.FAssigned := False;
+ LCanvas.Offset := FOffset;
+ LCanvas.SetMatrix(Self.FMatrix);
+ LCanvas.Fill.Assign(Self.FFill);
+ LCanvas.Stroke.Assign(Self.FStroke);
+ LCanvas.Font.Assign(Self.FFont);
+ end
+ else
+ inherited;
+end;
+
+constructor TCanvasSaveState.Create;
+begin
+ inherited Create;
+ FFont := TFont.Create;
+ FFill := TBrush.Create(TBrushKind.Solid, TAlphaColors.Black);
+ FStroke := TStrokeBrush.Create(TBrushKind.Solid, TAlphaColors.White);
+end;
+
+destructor TCanvasSaveState.Destroy;
+begin
+ FFont.Free;
+ FFill.Free;
+ FStroke.Free;
+ inherited;
+end;
+
+{ TColorObject }
+
+procedure TColorObject.SetName(const NewName: TComponentName);
+begin
+ inherited;
+ if StyleName = '' then
+ StyleName := Name;
+end;
+
+{ TBitmapCodecManager.TBitmapCodecClassDescriptor }
+
+function TBitmapCodecManager.TCodecDescriptor.ToFilterString: string;
+begin
+ Result := Format('%s (*%s)|*%s', [Description, Extension, Extension]);
+end;
+
+initialization
+ RegisterFmxClasses([TBrushObject, TFontObject, TPathObject, TBitmapObject, TColorObject]);
+finalization
+ TFont.FontService := nil;
+end.
diff --git a/src/lib/FMX/DX 11.0/FMX.TreeView.pas b/src/lib/FMX/DX 11.0/FMX.TreeView.pas
new file mode 100644
index 0000000..877a63d
--- /dev/null
+++ b/src/lib/FMX/DX 11.0/FMX.TreeView.pas
@@ -0,0 +1,2824 @@
+{*******************************************************}
+{ }
+{ Delphi FireMonkey Platform }
+{ }
+{ Copyright(c) 2011-2021 Embarcadero Technologies, Inc. }
+{ All rights reserved }
+{ }
+{*******************************************************}
+
+unit FMX.TreeView;
+
+interface
+
+{$SCOPEDENUMS ON}
+
+uses
+ System.Classes, System.Types, System.UITypes, System.Generics.Collections, System.ImageList, FMX.Types, FMX.Layouts,
+ FMX.StdCtrls, FMX.Controls, FMX.TextLayout, FMX.Graphics, FMX.ActnList, FMX.ImgList;
+
+type
+
+{ TTreeViewItem }
+
+ TCustomTreeView = class;
+
+ TTreeViewItem = class(TTextControl, IItemsContainer, IGlyph)
+ public const
+ DefaultHeight = 19;
+ private
+ FIsExpanded: Boolean;
+ FExpander: TControl;
+ FButton: TCustomButton;
+ FCheck: TCheckBox;
+ FGlobalIndex: Integer;
+ FIsChecked: Boolean;
+ FIsSelected: Boolean;
+ FContent: TContent;
+ FNoItemsContent: TLayout;
+ FVisibleCount: Integer;
+ FMinItemSize: TSizeF;
+ FCustomHeight: Boolean;
+ FChildrenOffset: Single;
+ FOldButtonVisible: Boolean;
+ FOldCheckVisible: Boolean;
+ FOldChecked: Boolean;
+ FGlyph: TGlyph;
+ FOldGlyphVisible: Boolean;
+ FImageLink: TGlyphImageLink;
+ [Weak] FImages: TCustomImageList;
+ FCustomChildrenOffset: Single;
+ function GetLevelOffset: Single;
+ procedure DoButtonClick(Sender: TObject);
+ procedure DoCheckClick(Sender: TObject);
+ function GetCount: Integer;
+ procedure SetIsChecked(const Value: Boolean);
+ procedure UpdateCheckBoxVisibility;
+ procedure UpdateExpandedButtonVisibility;
+ procedure SetIsSelected(const Value: Boolean);
+ procedure RecountVisibleItems;
+ procedure RequestRecount;
+ function GetImages: TCustomImageList;
+ procedure SetImages(const Value: TCustomImageList);
+ { IGlyph }
+ function GetImageIndex: TImageIndex;
+ procedure SetImageIndex(const Value: TImageIndex);
+ function GetImageList: TBaseImageList; inline;
+ procedure SetImageList(const Value: TBaseImageList);
+ function IGlyph.GetImages = GetImageList;
+ procedure IGlyph.SetImages = SetImageList;
+ { IItemsContainer }
+ function IItemsContainer.GetItemsCount = GetCount;
+ function GetItem(const AIndex: Integer): TFmxObject;
+ function GetMinItemSize: TSizeF;
+ procedure OnExpandButtonStyleLookup(Sender: TObject);
+ procedure UpdateChildrenOffset;
+ procedure SetCustomChildrenOffset(const Value: Single);
+ function IsCustomChildrenOffsetStored: Boolean;
+ protected
+ procedure ChangeOrder; override;
+ procedure ApplyStyle; override;
+ procedure FreeStyle; override;
+ procedure DragEnd; override;
+ function GetTextSettingsClass: TTextSettingsInfo.TCustomTextSettingsClass; override;
+ function CalcMinSize: TSizeF;
+ procedure InvalidateTextSize;
+ /// Determines whether the ImageIndex property needs to be stored in the fmx-file
+ /// True if ImageIndex property needs to be stored in the fmx file
+ function ImageIndexStored: Boolean; virtual;
+ /// Should be called when you change an instance or reference to instance of TBaseImageList or the
+ /// ImageIndex property
+ /// See also FMX.ActnList.IGlyph
+ procedure ImagesChanged; virtual;
+ procedure DoChanged; override;
+ function IsSizeStored: Boolean; override;
+ function IsPositionStored: Boolean; override;
+ procedure SetText(const Value: string); override;
+ procedure DoAddObject(const AObject: TFmxObject); override;
+ procedure DoInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure DoRemoveObject(const AObject: TFmxObject); override;
+ function EnterChildren(AObject: IControl): Boolean; override;
+ function GetAbsoluteRect: TRectF; override;
+ function DoGetUpdateRect: TRectF; override;
+ procedure ContentAddObject(const AObject: TFmxObject); virtual;
+ procedure ContentInsertObject(const AIndex: Integer; const AObject: TFmxObject); virtual;
+ procedure ContentRemoveObject(const AObject: TFmxObject); virtual;
+ procedure DefineProperties(Filer: TFiler); override;
+ procedure Paint; override;
+ procedure SetVisible(const Value: Boolean); override;
+ procedure SetHeight(const Value: Single); override;
+ procedure SetIsExpanded(const Value: Boolean); virtual;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ procedure Sort(Compare: TFmxObjectSortCompare); override;
+ function ItemByPoint(const X, Y: Single): TTreeViewItem;
+ function ItemByIndex(const Idx: Integer): TTreeViewItem;
+ function TreeView: TCustomTreeView;
+ function Level: Integer;
+ function ParentItem: TTreeViewItem;
+ procedure Select;
+ procedure Deselect;
+ procedure ExpandAll;
+ procedure CollapseAll;
+ procedure Expand;
+ procedure Collapse;
+ procedure Inflate; override;
+ property Count: Integer read GetCount;
+ property VisibleCount: Integer read FVisibleCount;
+ property GlobalIndex: Integer read FGlobalIndex;
+ property MinItemSize: TSizeF read GetMinItemSize;
+ /// The actual offset in the right of children elements
+ property ChildrenOffset: Single read FChildrenOffset;
+ /// The offset of children elements which specified by user if this value is greater or equal to
+ /// zero otherwise the default value is used. This value affects
+ /// ChildrenOffset property
+ property CustomChildrenOffset: Single read FCustomChildrenOffset write SetCustomChildrenOffset
+ stored IsCustomChildrenOffsetStored nodefault;
+ property Items[const Index: Integer]: TTreeViewItem read ItemByIndex; default;
+ property Width: Single read GetWidth;
+ /// The list of images. Can be nil. See also FMX.ActnList.IGlyph
+ property Images: TCustomImageList read GetImages;
+ published
+ property Align;
+ property AutoTranslate default True;
+ property ClipChildren default False;
+ property ClipParent default False;
+ property Cursor default crDefault;
+ property DragMode default TDragMode.dmManual;
+ property EnableDragHighlight default True;
+ property Enabled default True;
+ property StyledSettings;
+ property TextSettings;
+ property Locked default False;
+ property Height;
+ property HelpContext;
+ property HelpKeyword;
+ property HelpType;
+ {triggers}
+ property IsChecked: Boolean read FIsChecked write SetIsChecked;
+ property IsExpanded: Boolean read FIsExpanded write SetIsExpanded;
+ property IsSelected: Boolean read FIsSelected write SetIsSelected;
+ /// Zero based index of an image. The default is -1.
+ /// See also FMX.ActnList.IGlyph
+ /// If non-existing index is specified, an image is not drawn and no exception is raised
+ property ImageIndex: TImageIndex read GetImageIndex write SetImageIndex stored ImageIndexStored;
+ property Padding;
+ property Opacity;
+ property Margins;
+ property PopupMenu;
+ property Position;
+ property RotationAngle;
+ property RotationCenter;
+ property Scale;
+ property Size;
+ property StyleLookup;
+ property TabOrder;
+ property TabStop;
+ property Text;
+ property Visible default True;
+ property ParentShowHint;
+ {events}
+ property OnApplyStyleLookup;
+ {Drag and Drop events}
+ property OnDragEnter;
+ property OnDragLeave;
+ property OnDragOver;
+ property OnDragDrop;
+ property OnDragEnd;
+ {Mouse events}
+ property OnClick;
+ property OnDblClick;
+ property OnMouseDown;
+ property OnMouseMove;
+ property OnMouseUp;
+ property OnMouseWheel;
+ property OnMouseEnter;
+ property OnMouseLeave;
+ property OnPainting;
+ property OnPaint;
+ property OnResize;
+ property OnResized;
+ end;
+
+{ TTreeView }
+
+ TOnCompareTreeViewItemEvent = function(Item1, Item2: TTreeViewItem): Integer of object;
+ TOnTreeViewDragChange = procedure(SourceItem, DestItem: TTreeViewItem;
+ var Allow: Boolean) of object;
+
+{ TTreeView }
+
+ TCustomTreeView = class(TScrollBox, IItemsContainer, IInflatableContent, IGlyph)
+ private
+ FMouseSelecting: Boolean;
+ FOnChange: TNotifyEvent;
+ FSelected: TTreeViewItem;
+ FItemHeight: Single;
+ FCountExpanded: Integer;
+ FShowCheckboxes: Boolean;
+ FOnChangeCheck: TNotifyEvent;
+ FSorted: Boolean;
+ FOnCompare: TOnCompareTreeViewItemEvent;
+ FMultiSelect: Boolean;
+ FFirstSelect: TTreeViewItem;
+ FFocusedSelection: TControl;
+ FSelection: TControl;
+ FSelections: TControlList;
+ FAllowDrag: Boolean;
+ FStartDrag: Boolean;
+ FDragItem: TTreeViewItem;
+ FOnDragChange: TOnTreeViewDragChange;
+ FGlobalList: TList;
+ FAlternatingRowBackground: Boolean;
+ FOddFill: TBrush;
+ FFirstVisibleItem, FLastVisibleItem: Integer;
+ FNoItemsContent: TContent;
+ [Weak] FHoveredItem: TTreeViewItem;
+ FTextLayout: TTextLayout;
+ FToInflate: TList;
+ FInflater: TContentInflater;
+ FSelectionChanging: Boolean;
+ FImageLink: TGlyphImageLink;
+ [Weak] FImages: TCustomImageList;
+ procedure SetItemHeight(const Value: Single);
+ procedure SetCheckboxesVisibility(const Value: Boolean);
+ function GetTreeItem(Index: Integer): TTreeViewItem;
+ procedure SetSorted(const Value: Boolean);
+ procedure SortItems;
+ procedure SelectRange(const Item1, Item2: TTreeViewItem);
+ procedure UpdateSelection;
+ procedure UpdateVisibleItems;
+ procedure UpdateGlobalIndexes(const Force: Boolean = False);
+ procedure SetAllowDrag(const Value: Boolean);
+ function GetCount: Integer;
+ procedure SetAlternatingRowBackground(const Value: Boolean);
+ procedure SetHoveredItem(const Value: TTreeViewItem);
+ function LocalPointToHoveredItemLocalPoint(const AX, AY: Single): TPointF;
+ function GetImages: TCustomImageList;
+ procedure SetImages(const Value: TCustomImageList);
+ { IGlyph }
+ function GetImageIndex: TImageIndex;
+ procedure SetImageIndex(const Value: TImageIndex);
+ function GetImageList: TBaseImageList; inline;
+ procedure SetImageList(const Value: TBaseImageList);
+ function IGlyph.GetImages = GetImageList;
+ procedure IGlyph.SetImages = SetImageList;
+ { IItemsContainer }
+ function IItemsContainer.GetItemsCount = GetCount;
+ function GetItem(const AIndex: Integer): TFmxObject;
+ function MouseInContentLayout(const X, Y: Single): Boolean;
+ function GetGlobalCount: Integer;
+ procedure InvalidateGlobalList;
+ procedure ItemSizeMightHaveChanged(const AItem: TTreeViewItem);
+ { Inflatable }
+ function GetInflatableItems: TList;
+ procedure NotifyInflated;
+ protected
+ procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+ procedure DoUpdateAniCalculations(const AAniCalculations: TScrollCalculations); override;
+ procedure Loaded; override;
+ /// Should be called when you change an instance or reference to instance of TBaseImageList or
+ /// ImageIndex property
+ /// See also FMX.ActnList.IGlyph
+ procedure ImagesChanged; virtual;
+ { Selection }
+ procedure ClearSelection;
+ procedure SelectAll;
+ procedure SetSelected(const Value: TTreeViewItem); virtual;
+ { Styles }
+ procedure ApplyStyle; override;
+ procedure FreeStyle; override;
+ { Tree View Events }
+ procedure DoChange; virtual;
+ procedure DoChangeCheck(const Item: TTreeViewItem); virtual;
+ { Focus }
+ procedure DoEnter; override;
+ procedure DoExit; override;
+ { Children structure }
+ procedure DoAddObject(const AObject: TFmxObject); override;
+ procedure DoInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure DoRemoveObject(const AObject: TFmxObject); override;
+ function IsAddToContent(const AObject: TFmxObject): Boolean; override;
+ procedure ContentAddObject(const AObject: TFmxObject); override;
+ procedure ContentInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure ContentRemoveObject(const AObject: TFmxObject); override;
+ procedure ContentBeforeRemoveObject(AObject: TFmxObject); override;
+ { Content Scrolling }
+ procedure ViewportPositionChange(const OldViewportPosition, NewViewportPosition: TPointF;
+ const ContentSizeChanged: Boolean); override;
+ function CreateScrollContent: TScrollContent; override;
+ function DoCalcContentBounds: TRectF; override;
+ function GetItemRect(const Item: TTreeViewItem): TRectF;
+ { Painting }
+ procedure DoContentPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
+ function IsOpaque: Boolean; override;
+ { Mouse events }
+ procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
+ procedure MouseMove(Shift: TShiftState; X, Y: Single); override;
+ procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
+ procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;
+ procedure MouseClick(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
+ { Keyboards events }
+ procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); override;
+ procedure KeyUp(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); override;
+ { Drag And Drop }
+ procedure DragOver(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); override;
+ procedure DragDrop(const Data: TDragObject; const Point: TPointF); override;
+ procedure DragLeave; override;
+ function ObjectAtPoint(P: TPointF): IControl; override;
+ procedure ChangeOrder; override;
+ procedure ItemExpanded(const Item: TTreeViewItem);
+ property HoveredItem: TTreeViewItem read FHoveredItem write SetHoveredItem;
+ property FirstSelectedItem: TTreeViewItem read FFirstSelect;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ procedure Clear;
+ procedure ExpandAll;
+ procedure CollapseAll;
+ function ItemByText(const AText: string): TTreeViewItem;
+ function ItemByPoint(const X, Y: Single): TTreeViewItem;
+ function ItemByIndex(const Idx: Integer): TTreeViewItem;
+ function ItemByGlobalIndex(const Idx: Integer): TTreeViewItem;
+ property Count: Integer read GetCount;
+ property GlobalCount: Integer read GetGlobalCount;
+ property CountExpanded: Integer read FCountExpanded;
+ property Selected: TTreeViewItem read FSelected write SetSelected;
+ property Items[Index: Integer]: TTreeViewItem read GetTreeItem;
+ property AllowDrag: Boolean read FAllowDrag write SetAllowDrag;
+ property AlternatingRowBackground: Boolean read FAlternatingRowBackground write SetAlternatingRowBackground;
+ property ItemHeight: Single read FItemHeight write SetItemHeight;
+ /// The list of images. Can be nil. See also FMX.ActnList.IGlyph
+ property Images: TCustomImageList read GetImages write SetImages;
+ property MultiSelect: Boolean read FMultiSelect write FMultiSelect default False;
+ property ShowCheckboxes: Boolean read FShowCheckboxes write SetCheckboxesVisibility default False;
+ property Sorted: Boolean read FSorted write SetSorted default False;
+ property OnChange: TNotifyEvent read FOnChange write FOnChange;
+ property OnChangeCheck: TNotifyEvent read FOnChangeCheck write FOnChangeCheck;
+ property OnCompare: TOnCompareTreeViewItemEvent read FOnCompare write FOnCompare;
+ property OnDragChange: TOnTreeViewDragChange read FOnDragChange write FOnDragChange;
+ end;
+
+ TTreeView = class(TCustomTreeView)
+ published
+ property StyleLookup;
+ property CanFocus default True;
+ property CanParentFocus;
+ property DisableFocusEffect default True;
+ property TabOrder;
+ property TabStop;
+ property AllowDrag default False;
+ property AlternatingRowBackground default False;
+ property Hint;
+ property ItemHeight;
+ property Images;
+ property MultiSelect default False;
+ property ShowCheckboxes default False;
+ property Sorted default False;
+ property ParentShowHint;
+ property ShowHint;
+ property OnCanFocus;
+ property OnChange;
+ property OnChangeCheck;
+ property OnCompare;
+ property OnDragChange;
+ property OnKeyDown;
+ property OnKeyUp;
+ end;
+
+implementation
+
+uses
+ System.Math, System.Math.Vectors, System.RTLConsts, System.SysUtils, FMX.Consts, FMX.Ani, FMX.Utils;
+
+type
+ TTreeViewItemContent = class(TContent)
+ private
+ FItem: TTreeViewItem;
+ protected
+ function GetFirstVisibleObjectIndex: Integer; override;
+ function GetLastVisibleObjectIndex: Integer; override;
+ function GetAbsoluteRect: TRectF; override;
+ function DoGetUpdateRect: TRectF; override;
+ procedure DoRealign; override;
+ procedure DoAddObject(const AObject: TFmxObject); override;
+ procedure DoInsertObject(Index: Integer; const AObject: TFmxObject); override;
+ procedure DoRemoveObject(const AObject: TFmxObject); override;
+ public
+ end;
+
+{ TTreeViewItemContent }
+
+procedure TTreeViewItemContent.DoAddObject(const AObject: TFmxObject);
+begin
+ inherited DoAddObject(AObject);
+ if Parent is TTreeViewItem then
+ TTreeViewItem(Parent).ContentAddObject(AObject);
+end;
+
+procedure TTreeViewItemContent.DoRemoveObject(const AObject: TFmxObject);
+begin
+ inherited;
+ if Parent is TTreeViewItem then
+ TTreeViewItem(Parent).ContentRemoveObject(AObject);
+end;
+
+procedure TTreeViewItemContent.DoInsertObject(Index: Integer;
+ const AObject: TFmxObject);
+begin
+ inherited DoInsertObject(Index, AObject);
+ if Parent is TTreeViewItem then
+ TTreeViewItem(Parent).ContentInsertObject(Index, AObject);
+end;
+
+procedure TTreeViewItemContent.DoRealign;
+begin
+end;
+
+function TTreeViewItemContent.GetAbsoluteRect: TRectF;
+begin
+ if FItem <> nil then
+ Result := FItem.GetAbsoluteRect
+ else
+ Result := inherited;
+end;
+
+function TTreeViewItemContent.DoGetUpdateRect: TRectF;
+begin
+ if FItem <> nil then
+ Result := FItem.DoGetUpdateRect
+ else
+ Result := inherited;
+end;
+
+function TTreeViewItemContent.GetFirstVisibleObjectIndex: Integer;
+begin
+ Result := 0;
+end;
+
+function TTreeViewItemContent.GetLastVisibleObjectIndex: Integer;
+begin
+ if FItem.IsExpanded then
+ Result := ControlsCount
+ else
+ Result := 0;
+end;
+
+{ TTreeViewItem }
+
+constructor TTreeViewItem.Create(AOwner: TComponent);
+begin
+ inherited;
+ FImageLink := TGlyphImageLink.Create(Self);
+ AutoTranslate := True;
+ TextAlign := TTextAlign.Leading;
+ Size.SetSizeWithoutNotification(TSizeF.Create(Width, 0));
+ FCustomHeight := False;
+ HitTest := False;
+ CanFocus := False;
+ FContent := TTreeViewItemContent.Create(Self);
+ FChildrenOffset := 0;
+ FCustomChildrenOffset := -1;
+ TTreeViewItemContent(FContent).FItem := Self;
+ FContent.Stored := False;
+ FContent.Parent := Self;
+ FContent.Locked := True;
+ FContent.HitTest := False;
+end;
+
+procedure TTreeViewItem.ChangeOrder;
+var
+ LTreeView : TCustomTreeView;
+begin
+ inherited ChangeOrder;
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and not LTreeView.IsUpdating then
+ begin
+ LTreeView.UpdateGlobalIndexes(True);
+ LTreeView.RealignContent;
+ end;
+end;
+
+procedure TTreeViewItem.ContentAddObject(const AObject: TFmxObject);
+var
+ LTreeView : TCustomTreeView;
+begin
+ if not (AObject is TTreeViewItem) then
+ begin
+ if FNoItemsContent = nil then
+ begin
+ FNoItemsContent := TLayout.Create(nil);
+ FNoItemsContent.Parent := Self;
+ FNoItemsContent.SetBounds(0, 0, 0, 0);
+ FNoItemsContent.Stored := False;
+ FNoItemsContent.Locked := True;
+ FNoItemsContent.HitTest := False;
+ end;
+ FNoItemsContent.AddObject(AObject)
+ end
+ else
+ begin
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ if [csLoading, csDestroying] * LTreeView.ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(LTreeView.Images);
+ LTreeView.InvalidateGlobalList;
+ LTreeView.RealignContent;
+ end;
+ end;
+end;
+
+type
+ TTreeViewItemTextSettings = class(TTextSettingsInfo.TCustomTextSettings)
+ public
+ constructor Create(const AOwner: TPersistent); override;
+ property WordWrap default False;
+ published
+ property Font;
+ property FontColor;
+ property HorzAlign;
+ end;
+
+{ TTreeViewItemTextSettings }
+
+constructor TTreeViewItemTextSettings.Create(const AOwner: TPersistent);
+begin
+ inherited;
+ WordWrap := False;
+end;
+
+function TTreeViewItem.GetTextSettingsClass: TTextSettingsInfo.TCustomTextSettingsClass;
+begin
+ Result := TTreeViewItemTextSettings;
+end;
+
+procedure TTreeViewItem.ContentInsertObject(const AIndex: Integer;
+ const AObject: TFmxObject);
+begin
+ ContentAddObject(AObject);
+end;
+
+procedure TTreeViewItem.ContentRemoveObject(const AObject: TFmxObject);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if AObject is TTreeViewItem then
+ begin
+ // After removing child item, we need recalculate Visible Items Count
+ // and update Visible of 'Expand' button
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+
+ TTreeViewItem(AObject).Deselect;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ if [csLoading, csDestroying] * LTreeView.ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(nil);
+ LTreeView.InvalidateGlobalList;
+ LTreeView.RealignContent;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.RecountVisibleItems;
+var
+ I: Integer;
+begin
+ FVisibleCount := 0;
+ for I := 0 to Count - 1 do
+ if FContent.Controls[I].IsVisible then
+ Inc(FVisibleCount);
+end;
+
+procedure TTreeViewItem.RequestRecount;
+var
+ LTreeView: TCustomTreeView;
+begin
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ LTreeView.InvalidateGlobalList;
+ LTreeView.InvalidateContentSize;
+ end;
+end;
+
+procedure TTreeViewItem.DragEnd;
+var
+ LTreeView : TCustomTreeView;
+begin
+ inherited;
+ DragLeave;
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and (LTreeView.FDragItem <> nil) then
+ begin
+ LTreeView.FDragItem.RemoveFreeNotify(LTreeView);
+ LTreeView.FDragItem := nil;
+ end;
+end;
+
+function TTreeViewItem.GetAbsoluteRect: TRectF;
+var
+ I: Integer;
+begin
+ Result := inherited GetAbsoluteRect;
+ if IsExpanded and (Count > 0) then
+ begin
+ for I := 0 to Count - 1 do
+ Result := UnionRect(Result, Items[I].AbsoluteRect);
+ end;
+end;
+
+function TTreeViewItem.DoGetUpdateRect: TRectF;
+var
+ I: Integer;
+begin
+ Result := inherited DoGetUpdateRect;
+ if IsExpanded and (Count > 0) then
+ for I := 0 to Count - 1 do
+ Result := UnionRect(Result, Items[I].UpdateRect);
+end;
+
+function TTreeViewItem.GetLevelOffset: Single;
+var
+ Item: TTreeViewItem;
+ Offs: Single;
+ function NextLevel(var Item: TTreeViewItem): Boolean;
+ var
+ P: TFmxObject;
+ begin
+ Result := False;
+ P := Item.Parent;
+ if (P is TContent) then
+ P := P.Parent;
+ if P is TTreeViewItem then
+ begin
+ Result := True;
+ Item := TTreeViewItem(P);
+ end;
+ end;
+begin
+ Result := 0;
+ Item := self;
+ while NextLevel(Item) do
+ begin
+ Offs := Item.ChildrenOffset;
+ Result := Result + Offs;
+ end;
+end;
+
+function TTreeViewItem.GetCount: Integer;
+begin
+ Result := FContent.ControlsCount;
+end;
+
+procedure TTreeViewItem.DefineProperties(Filer: TFiler);
+begin
+ inherited;
+ Filer.DefineProperty('HitTest', IgnoreBooleanValue, nil, False); // do not localize
+ Filer.DefineProperty('Width', IgnoreFloatValue, nil, False); // do not localize
+end;
+
+procedure TTreeViewItem.Deselect;
+begin
+ IsSelected := False;
+end;
+
+destructor TTreeViewItem.Destroy;
+ procedure ClearRef(var Value: TTreeViewItem);
+ begin
+ if Value = Self then
+ Value := nil;
+ end;
+var
+ LTreeView: TCustomTreeView;
+begin
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ ClearRef(LTreeView.FFirstSelect);
+ ClearRef(LTreeView.FDragItem);
+ ClearRef(LTreeView.FSelected);
+ if LTreeView.FGlobalList <> nil then
+ LTreeView.FGlobalList.Remove(Self);
+ end;
+ FImageLink.DisposeOf;
+ FImageLink := nil;
+ inherited;
+end;
+
+procedure TTreeViewItem.DoAddObject(const AObject: TFmxObject);
+begin
+ if AObject is TTreeViewItem then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ FContent.AddObject(AObject);
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+ if IsExpanded then
+ RequestRecount;
+ end
+ else
+ inherited;
+end;
+
+procedure TTreeViewItem.DoInsertObject(Index: Integer; const AObject: TFmxObject);
+begin
+ if AObject is TTreeViewItem then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ FContent.InsertObject(Index, AObject);
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+ if IsExpanded then
+ RequestRecount;
+ end
+ else
+ inherited;
+end;
+
+procedure TTreeViewItem.DoRemoveObject(const AObject: TFmxObject);
+begin
+ if (AObject is TTreeViewItem) and (TTreeViewItem(AObject).TreeView = TreeView) then
+ begin
+ TTreeViewItem(AObject).Parent := nil;
+ TTreeViewItem(AObject).Deselect;
+ RecountVisibleItems;
+ UpdateExpandedButtonVisibility;
+ if IsExpanded then
+ RequestRecount;
+ end
+ else
+ inherited;
+end;
+
+function TTreeViewItem.GetItem(const AIndex: Integer): TFmxObject;
+begin
+ Result := Items[AIndex];
+end;
+
+function TTreeViewItem.ItemByPoint(const X, Y: Single): TTreeViewItem;
+var
+ I: Integer;
+ P, P1: TPointF;
+ LItem: TTreeViewItem;
+begin
+ P := LocalToAbsolute(TPointF.Create(X, Y));
+ for I := 0 to Count - 1 do
+ begin
+ LItem := ItemByIndex(I);
+ if not LItem.Visible then
+ Continue;
+ if LItem.PointInObject(P.X, P.Y) then
+ begin
+ Result := LItem;
+ Exit;
+ end
+ else if (LItem.Count > 0) and (LItem.IsExpanded) then
+ begin
+ P1 := LItem.AbsoluteToLocal(P);
+ Result := LItem.ItemByPoint(P1.X, P1.Y);
+ if Result <> nil then
+ Exit;
+ end;
+ end;
+ Result := nil;
+end;
+
+function TTreeViewItem.IsPositionStored: Boolean;
+begin
+ Result := False;
+end;
+
+function TTreeViewItem.IsSizeStored: Boolean;
+begin
+ Result := FCustomHeight;
+end;
+
+function TTreeViewItem.ItemByIndex(const Idx: Integer): TTreeViewItem;
+begin
+ if (Idx >= 0) and (Idx < Count) then
+ Result := TTreeViewItem(FContent.Controls[Idx])
+ else
+ raise ERangeError.CreateFMT(sArgumentOutOfRange_Index, [Idx, Count]);
+end;
+
+procedure TTreeViewItem.Paint;
+var
+ R: TRectF;
+begin
+ inherited Paint;
+ if (csDesigning in ComponentState) and not Locked and not FInPaintTo then
+ begin
+ R := LocalRect;
+ InflateRect(R, -0.5, -0.5);
+ Canvas.Stroke.Thickness := 1;
+ Canvas.Stroke.Dash := TStrokeDash.Dash;
+ Canvas.Stroke.Kind := TBrushKind.Solid;
+ Canvas.Stroke.Color := $A0909090;
+ Canvas.DrawRect(R, 0, 0, AllCorners, AbsoluteOpacity);
+ Canvas.Stroke.Dash := TStrokeDash.Solid;
+ end;
+end;
+
+function TTreeViewItem.ParentItem: TTreeViewItem;
+begin
+ TFMXObjectHelper.FindNearestParentOfClass(Self, Result);
+end;
+
+function TTreeViewItem.EnterChildren(AObject: IControl): Boolean;
+var
+ LTreeView : TCustomTreeView ;
+begin
+ Result := inherited EnterChildren(AObject);
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ LTreeView.Selected := Self;
+ Result := True;
+ end;
+end;
+
+procedure TTreeViewItem.Collapse;
+begin
+ IsExpanded := False;
+end;
+
+procedure TTreeViewItem.CollapseAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ Collapse;
+ for i := Count - 1 downto 0 do
+ begin
+ Item := ItemByIndex(i);
+ if Item <> nil then
+ Item.CollapseAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TTreeViewItem.Expand;
+begin
+ IsExpanded := True;
+end;
+
+procedure TTreeViewItem.ExpandAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ Expand;
+ for i := Count - 1 downto 0 do
+ begin
+ Item := ItemByIndex(i);
+ if Item <> nil then
+ Item.ExpandAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+function TTreeViewItem.Level: Integer;
+var
+ P: TFmxObject;
+begin
+ Result := 0;
+ P := Parent;
+ while (P <> nil) and not (P is TCustomTreeView) do
+ begin
+ Result := Result + 1;
+ P := P.Parent;
+ if (P is TContent) then
+ P := P.Parent;
+ end;
+end;
+
+procedure TTreeViewItem.OnExpandButtonStyleLookup(Sender: TObject);
+begin
+ UpdateExpandedButtonVisibility;
+end;
+
+function TTreeViewItem.TreeView: TCustomTreeView;
+begin
+ TFMXObjectHelper.FindNearestParentOfClass(Self, Result);
+end;
+
+procedure TTreeViewItem.FreeStyle;
+begin
+ inherited;
+ if FButton <> nil then
+ begin
+ FButton.OnClick := nil;
+ FButton.OnApplyStyleLookup := nil;
+ FButton.Visible := FOldButtonVisible;
+ FButton := nil;
+ end;
+ FExpander := nil;
+ if FCheck <> nil then
+ begin
+ FCheck.OnClick := nil;
+ FCheck.OnChange := nil;
+ FCheck.Visible := FOldCheckVisible;
+ FCheck.IsChecked := FOldChecked;
+ FCheck := nil;
+ end;
+ if FGlyph <> nil then
+ begin
+ FGlyph.BeginUpdate;
+ try
+ FGlyph.ImageIndex := -1;
+ FGlyph.Images := nil;
+ finally
+ FGlyph.EndUpdate;
+ end;
+ FGlyph := nil;
+ end;
+end;
+
+procedure TTreeViewItem.UpdateChildrenOffset;
+begin
+ if FCustomChildrenOffset >= 0 then
+ FChildrenOffset := FCustomChildrenOffset
+ else if FExpander <> nil then
+ FChildrenOffset := FExpander.Width
+ else if FCheck <> nil then
+ FChildrenOffset := FCheck.Width
+ else if FButton <> nil then
+ FChildrenOffset := FButton.Width
+ else
+ FChildrenOffset := DefaultHeight;
+end;
+
+procedure TTreeViewItem.ApplyStyle;
+var
+ LTreeView: TCustomTreeView;
+ LHeight: Single;
+ LCustomHeight: Boolean;
+begin
+ LCustomHeight := FCustomHeight and (Height > 0);
+ LHeight := Height;
+ try
+ inherited;
+ FindStyleResource('expander', FExpander);
+ if FindStyleResource('button', FButton) then
+ begin
+ FOldButtonVisible := FButton.Visible;
+ FButton.OnClick := DoButtonClick;
+ FButton.OnApplyStyleLookup := OnExpandButtonStyleLookup;
+ UpdateExpandedButtonVisibility;
+ end;
+ if FindStyleResource('check', FCheck) then
+ begin
+ FOldCheckVisible := FCheck.Visible;
+ FOldChecked := FCheck.IsChecked;
+ FCheck.IsChecked := IsChecked;
+ FCheck.OnChange := DoCheckClick;
+ LTreeView := TreeView ;
+ if LTreeView <> nil then
+ FCheck.Visible := LTreeView.ShowCheckboxes;
+ end;
+ if FindStyleResource('glyphstyle', FGlyph) then
+ begin
+ FGlyph.Images := TCustomImageList(FImageLink.Images);
+ FGlyph.ImageIndex := FImageLink.ImageIndex;
+ FOldGlyphVisible := FGlyph.Visible;
+ end
+ else
+ FOldGlyphVisible := False;
+ if IsSelected then
+ begin
+ StartTriggerAnimation(Self, 'IsSelected');
+ ApplyTriggerEffect(Self, 'IsSelected');
+ end;
+ Align := TAlignLayout.None;
+ UpdateChildrenOffset;
+ finally
+ if LCustomHeight then
+ Height := LHeight;
+ FCustomHeight := LCustomHeight;
+ end;
+end;
+
+function TTreeViewItem.CalcMinSize: TSizeF;
+const
+ MinText = '1';
+
+ procedure UpdateWidth(const Control: TControl; const VisibleOnly: Boolean);
+ var
+ R: TRectF;
+ begin
+ if (Control <> nil) and (not VisibleOnly or Control.Visible) then
+ begin
+ R := Control.BoundsRect;
+ R := Control.Margins.MarginRect(R);
+ Result.cx := Result.cx + R.Width;
+ end;
+ end;
+
+ function FirstWord(const Text: string; const NeedEllipsis: Boolean): string;
+ var
+ I: Integer;
+ begin
+ I := Text.IndexOf(' ');
+ if I >= 0 then
+ begin
+ Result := Text.Substring(0, I);
+ if NeedEllipsis then
+ Result := Result + SChrHorizontalEllipsis;
+ end
+ else
+ Result := Text;
+ end;
+
+var
+ R: TRectF;
+ LLayout: TTextLayout;
+ LTree: TCustomTreeView;
+ TextSettings: ITextSettings;
+begin
+ Result := TSizeF.Create(0, 0);
+ LTree := TreeView;
+ if LTree = nil then
+ Exit;
+ if Visible then
+ begin
+ if (TextObject <> nil) and TextObject.GetInterface(ITextSettings, TextSettings) then
+ begin
+ LLayout := LTree.FTextLayout;
+ if LLayout <> nil then
+ begin
+ LLayout.BeginUpdate;
+ try
+ LLayout.WordWrap := False;
+ LLayout.HorizontalAlign := TTextAlign.Leading;
+ LLayout.VerticalAlign := TTextAlign.Leading;
+ LLayout.Color := TAlphaColorRec.Black;
+ LLayout.Font := TextSettings.ResultingTextSettings.Font;
+ LLayout.Opacity := 1;
+ LLayout.Trimming := TTextTrimming.None;
+ if Text.IsEmpty then
+ LLayout.Text := MinText
+ else
+ case TextSettings.ResultingTextSettings.Trimming of
+ TTextTrimming.None:
+ begin
+ if TextSettings.ResultingTextSettings.WordWrap then
+ LLayout.Text := FirstWord(Text, False)
+ else
+ LLayout.Text := Text;
+ end;
+ TTextTrimming.Character:
+ LLayout.Text := MinText + SChrHorizontalEllipsis;
+ TTextTrimming.Word:
+ LLayout.Text := FirstWord(Text, True);
+ end;
+ finally
+ LLayout.EndUpdate;
+ end;
+ R := LLayout.TextRect;
+ Result.Width := Ceil(R.Width) + 2;
+ Result.Height := Ceil(R.Height) + 4;
+ UpdateWidth(FButton, False);
+ UpdateWidth(FCheck, True);
+ UpdateWidth(FGlyph, True);
+ Result.cx := Result.cx + Padding.Left + Padding.Right;
+ Result.cy := Result.cy + Padding.Top + Padding.Bottom;
+ end;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.Inflate;
+begin
+ InvalidateTextSize;
+ inherited;
+ DisableDisappear := True;
+ try
+ ApplyStyleLookup;
+ finally
+ DisableDisappear := False;
+ end;
+ CalcMinSize;
+end;
+
+procedure TTreeViewItem.InvalidateTextSize;
+begin
+ FMinItemSize := TSizeF.Create(0, 0);
+end;
+
+function TTreeViewItem.GetMinItemSize: TSizeF;
+begin
+ if FMinItemSize.IsZero then
+ FMinItemSize := CalcMinSize;
+ Result := FMinItemSize;
+end;
+
+procedure TTreeViewItem.DoChanged;
+begin
+ inherited;
+ if not FCustomHeight then
+ InvalidateTextSize;
+end;
+
+procedure TTreeViewItem.DoCheckClick(Sender: TObject);
+var
+ LTreeView : TCustomTreeView;
+begin
+ if FCheck <> nil then
+ FIsChecked := FCheck.IsChecked;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ LTreeView.SetFocus;
+ LTreeView.DoChangeCheck(Self);
+ end;
+end;
+
+procedure TTreeViewItem.UpdateCheckBoxVisibility;
+var
+ i, j: Integer;
+ LTreeView: TCustomTreeView;
+begin
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and (FCheck <> nil) and
+ (FCheck.Visible <> LTreeView.ShowCheckboxes) then
+ begin
+ FCheck.Visible := LTreeView.ShowCheckboxes;
+ InvalidateTextSize;
+ end;
+ if ControlsCount > 0 then
+ for i := 0 to ControlsCount - 1 do
+ if Controls[i] is TTreeViewItem then
+ TTreeViewItem(Controls[i]).UpdateCheckBoxVisibility
+ else if Controls[i] is TTreeViewItemContent then
+ for j := 0 to Controls[i].ControlsCount - 1 do
+ if Controls[i].Controls[j] is TTreeViewItem then
+ TTreeViewItem(Controls[i].Controls[j]).UpdateCheckBoxVisibility
+end;
+
+procedure TTreeViewItem.UpdateExpandedButtonVisibility;
+begin
+ if (FButton <> nil) and not (csLoading in ComponentState) then
+ begin
+ FButton.Visible := VisibleCount > 0;
+ if FButton.Visible then
+ TAnimator.StartTriggerAnimation(FButton, Self, 'IsExpanded');
+ end;
+end;
+
+procedure TTreeViewItem.Select;
+begin
+ IsSelected := True;
+end;
+
+function TTreeViewItem.IsCustomChildrenOffsetStored: Boolean;
+begin
+ Result := FCustomChildrenOffset >= 0;
+end;
+
+procedure TTreeViewItem.SetCustomChildrenOffset(const Value: Single);
+var
+ Parent: TTreeViewItem;
+begin
+ if not SameValue(FCustomChildrenOffset, Value, TEpsilon.FontSize) then
+ begin
+ FCustomChildrenOffset := Value;
+ UpdateChildrenOffset;
+ if not IsUpdating and IsExpanded and (TreeView <> nil) then
+ begin
+ Parent := ParentItem;
+ while Parent <> nil do
+ if Parent.IsExpanded then
+ Parent := Parent.ParentItem
+ else
+ Exit;
+ TreeView.RealignContent;
+ TreeView.UpdateSelection;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.SetHeight(const Value: Single);
+var
+ ItemSize: TSizeF;
+begin
+ if not SameValue(Value, Height) then
+ begin
+ if (not (csLoading in ComponentState)) then
+ begin
+ if Value <= 0 then
+ FCustomHeight := False
+ else
+ begin
+ ItemSize := MinItemSize;
+ if ItemSize.cy > 0 then
+ FCustomHeight := not SameValue(Value, ItemSize.cy)
+ else
+ FCustomHeight := True;
+ end;
+ end
+ else
+ begin
+ FCustomHeight := Value >= 1;
+ end;
+ end;
+ inherited;
+end;
+
+procedure TTreeViewItem.SetIsChecked(const Value: Boolean);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if FIsChecked <> Value then
+ begin
+ FIsChecked := Value;
+ if FCheck <> nil then
+ FCheck.IsChecked := FIsChecked;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.DoChangeCheck(Self);
+ end;
+end;
+
+procedure TTreeViewItem.SetIsSelected(const Value: Boolean);
+var
+ LTreeView : TCustomTreeView;
+begin
+ if FIsSelected <> Value then
+ begin
+ FIsSelected := Value;
+ StartTriggerAnimation(Self, 'IsSelected');
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ begin
+ if not LTreeView.MultiSelect then
+ if Value then
+ LTreeView.Selected := Self
+ else
+ LTreeView.Selected := nil;
+ LTreeView.UpdateSelection;
+ end;
+ end;
+end;
+
+procedure TTreeViewItem.SetText(const Value: string);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if Value <> Text then
+ begin
+ inherited;
+ InvalidateTextSize;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.ItemSizeMightHaveChanged(Self);
+ end;
+end;
+
+procedure TTreeViewItem.SetVisible(const Value: Boolean);
+var
+ LChanged: Boolean;
+ LParentItem: TTreeViewItem;
+ LTreeView: TCustomTreeView;
+begin
+ LChanged := inherited Visible <> Value;
+ inherited;
+ if LChanged then
+ begin
+ LParentItem := ParentItem;
+ if LParentItem <> nil then
+ ParentItem.RecountVisibleItems;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.RealignContent;
+ end;
+end;
+
+procedure TTreeViewItem.Sort(Compare: TFmxObjectSortCompare);
+begin
+ FContent.Sort(Compare);
+end;
+
+procedure TTreeViewItem.DoButtonClick(Sender: TObject);
+begin
+ IsExpanded := not IsExpanded;
+end;
+
+procedure TTreeViewItem.SetIsExpanded(const Value: Boolean);
+var
+ LTreeView: TCustomTreeView;
+begin
+ if FIsExpanded <> Value then
+ begin
+ FIsExpanded := Value;
+ UpdateExpandedButtonVisibility;
+ InvalidateTextSize;
+ LTreeView := TreeView;
+ if LTreeView <> nil then
+ LTreeView.ItemExpanded(Self);
+ end;
+end;
+
+function TTreeViewItem.GetImages: TCustomImageList;
+begin
+ if FImageLink <> nil then
+ Result := TCustomImageList(FImageLink.Images)
+ else
+ Result := FImages;
+end;
+
+procedure TTreeViewItem.SetImages(const Value: TCustomImageList);
+begin
+ if FImageLink <> nil then
+ FImageLink.Images := Value
+ else
+ FImages := Value;
+end;
+
+function TTreeViewItem.GetImageIndex: TImageIndex;
+begin
+ if FImageLink <> nil then
+ Result := FImageLink.ImageIndex
+ else
+ Result := -1;
+end;
+
+procedure TTreeViewItem.SetImageIndex(const Value: TImageIndex);
+begin
+ if FImageLink <> nil then
+ FImageLink.ImageIndex := Value;
+end;
+
+function TTreeViewItem.GetImageList: TBaseImageList;
+begin
+ Result := GetImages;
+end;
+
+procedure TTreeViewItem.SetImageList(const Value: TBaseImageList);
+begin
+ // none.
+end;
+
+function TTreeViewItem.ImageIndexStored: Boolean;
+begin
+ Result := ActionClient or (ImageIndex <> -1);
+end;
+
+procedure TTreeViewItem.ImagesChanged;
+
+ procedure UpdateImages;
+ var
+ I: Integer;
+ begin
+ if FImages <> FImageLink.Images then
+ begin
+ FImages := TCustomImageList(FImageLink.Images);
+ if [csLoading, csDestroying] * ComponentState = [] then
+ for I := 0 to Count - 1 do
+ Items[I].SetImages(FImages);
+ end;
+ end;
+
+ procedure UpdateTreeView;
+ var
+ LTreeView: TCustomTreeView;
+ begin
+ if [csLoading, csDestroying] * ComponentState = [] then
+ begin
+ LTreeView := TreeView;
+ if (LTreeView <> nil) and not LTreeView.IsUpdating then
+ begin
+ LTreeView.BeginUpdate;
+ try
+ UpdateImages;
+ InvalidateTextSize;
+ LTreeView.ItemSizeMightHaveChanged(Self);
+ finally
+ LTreeView.EndUpdate;
+ end;
+ end
+ else
+ UpdateImages;
+ end;
+ end;
+
+var
+ NewGlyphVisible: Boolean;
+begin
+ if FGlyph <> nil then
+ begin
+ FGlyph.BeginUpdate;
+ try
+ FGlyph.Images := TCustomImageList(FImageLink.Images);
+ FGlyph.ImageIndex := FImageLink.ImageIndex;
+ finally
+ FGlyph.EndUpdate;
+ end;
+ if ([csLoading, csDestroying] * ComponentState = []) then
+ FGlyph.Repaint;
+ end;
+
+ NewGlyphVisible := (FGlyph <> nil) and (FGlyph.Visible);
+ if FOldGlyphVisible <> NewGlyphVisible then
+ begin
+ FOldGlyphVisible := NewGlyphVisible;
+ UpdateTreeView;
+ end
+ else
+ UpdateImages;
+end;
+
+{ TTreeViewContent }
+
+type
+
+ TTreeViewContent = class(TScrollContent)
+ private
+ [Weak] FTreeView: TCustomTreeView;
+ protected
+ function GetFirstVisibleObjectIndex: Integer; override;
+ function GetLastVisibleObjectIndex: Integer; override;
+ procedure DoRealign; override;
+ public
+ end;
+
+function TTreeViewContent.GetFirstVisibleObjectIndex: Integer;
+var
+ Item: TTreeViewItem;
+begin
+ if FTreeView.FGlobalList.Count > 0 then
+ begin
+ Item := FTreeView.FGlobalList[FTreeView.FFirstVisibleItem];
+ while Item.ParentItem <> nil do
+ Item := Item.ParentItem;
+ Result := Item.Index;
+ end
+ else
+ Result := 0;
+end;
+
+function TTreeViewContent.GetLastVisibleObjectIndex: Integer;
+var
+ Item: TTreeViewItem;
+begin
+ if (FTreeView.FGlobalList.Count > 0) and (FTreeView.FLastVisibleItem < FTreeView.FGlobalList.Count) then
+ begin
+ Item := FTreeView.FGlobalList[FTreeView.FLastVisibleItem];
+ while Item.ParentItem <> nil do
+ Item := Item.ParentItem;
+ Result := Item.Index + 1;
+ if Result > ControlsCount then
+ Result := ControlsCount;
+ end
+ else
+ Result := ControlsCount;
+end;
+
+procedure TTreeViewContent.DoRealign;
+begin
+end;
+
+{ TTreeView }
+
+constructor TCustomTreeView.Create(AOwner: TComponent);
+begin
+ inherited;
+ FImageLink := TGlyphImageLink.Create(Self);
+ FGlobalList := TList.Create;
+ FGlobalList.Capacity := 100;
+ FOddFill := TBrush.Create(TBrushKind.Solid, $20000000);
+ DisableFocusEffect := True;
+ CanFocus := True;
+ AutoCapture := True;
+ Width := 100;
+ Height := 100;
+ FItemHeight := 0;
+ SetAcceptsControls(False);
+ FToInflate := TList.Create;
+ FInflater := TContentInflater.Create(Self);
+end;
+
+function TCustomTreeView.CreateScrollContent: TScrollContent;
+begin
+ Result := TTreeViewContent.Create(Self);
+ TTreeViewContent(Result).FTreeView := Self;
+end;
+
+destructor TCustomTreeView.Destroy;
+begin
+ FreeAndNil(FSelections);
+ FreeAndNil(FGlobalList);
+ FreeAndNil(FOddFill);
+ FInflater.DisposeOf;
+ FreeAndNil(FToInflate);
+ FImageLink.DisposeOf;
+ inherited;
+end;
+
+procedure TCustomTreeView.ApplyStyle;
+var
+ T: TFmxObject;
+ ContentLayout: TControl;
+begin
+ inherited ApplyStyle;
+ if FindStyleResource('content', ContentLayout) then
+ ContentLayout.OnPainting := DoContentPaint;
+ if FindStyleResource('selection', FSelection) then
+ FSelection.Visible := False;
+ if FindStyleResource('focusedselection', FFocusedSelection) then
+ FFocusedSelection.Visible := False;
+ T := FindStyleResource('AlternatingRowBackground');
+ if T is TBrushObject then
+ FOddFill.Assign(TBrushObject(T).Brush);
+ if T is TControl then
+ TControl(T).Visible := False;
+ UpdateSelection;
+end;
+
+procedure TCustomTreeView.FreeStyle;
+begin
+ inherited FreeStyle;
+ FSelection := nil;
+ FFocusedSelection := nil;
+ if FSelections <> nil then
+ FSelections.Clear;
+end;
+
+procedure TCustomTreeView.UpdateGlobalIndexes(const Force: Boolean);
+var
+ GlobalIdx: Integer;
+
+ procedure RecountItem(const AItem: TTreeViewItem);
+ var
+ I: Integer;
+ begin
+ if AItem <> nil then
+ begin
+ AItem.FGlobalIndex := GlobalIdx;
+ Inc(GlobalIdx);
+ FGlobalList.Add(AItem);
+ if AItem.IsExpanded then
+ for I := 0 to AItem.Count - 1 do
+ RecountItem(AItem.ItemByIndex(I));
+ end;
+ end;
+
+var
+ I: Integer;
+begin
+ if Force then
+ FGlobalList.Clear;
+ if (FGlobalList.Count = 0) and (Count > 0) then
+ begin
+ GlobalIdx := 0;
+ for I := 0 to Count - 1 do
+ RecountItem(ItemByIndex(I));
+ end;
+end;
+
+function CompareTreeItem(Item1, Item2: TFmxObject): Integer;
+var
+ LItem1TV: TCustomTreeView;
+begin
+ if (Item1 is TTreeViewItem) and (Item2 is TTreeViewItem) then
+ begin
+ LItem1TV := TTreeViewItem(Item1).TreeView;
+ if (LItem1TV <> nil) and Assigned(LItem1TV.OnCompare) then
+ Result := LItem1TV.OnCompare(TTreeViewItem(Item1),
+ TTreeViewItem(Item2))
+ else
+ Result := CompareText(TTreeViewItem(Item1).Text,
+ TTreeViewItem(Item2).Text);
+ end
+ else
+ Result := 0;
+end;
+
+procedure TCustomTreeView.SortItems;
+begin
+ if not FSorted then
+ Exit;
+ Content.Sort(CompareTreeItem);
+ InvalidateGlobalList;
+ UpdateGlobalIndexes;
+ UpdateVisibleItems;
+end;
+
+function TCustomTreeView.GetItemRect(const Item: TTreeViewItem): TRectF;
+begin
+ if Item <> nil then
+ begin
+ Result := TRectF.Create(0, 0, Item.Width, Item.Height);
+ Result.Offset(Content.AbsoluteToLocal(Item.LocaltoAbsolute(TPointF.Zero)));
+ end
+ else
+ Result := TRectF.Empty;
+end;
+
+function TCustomTreeView.GetInflatableItems: TList;
+begin
+ Result := FToInflate;
+end;
+
+function TCustomTreeView.GetItem(const AIndex: Integer): TFmxObject;
+begin
+ Result := Items[AIndex];
+end;
+
+procedure TCustomTreeView.UpdateSelection;
+var
+ I: Integer;
+ P: TPointF;
+ R: TRectF;
+ SelRects: array of TRectF;
+ Clone: TControl;
+ Item: TTreeViewItem;
+begin
+ if FSelection = nil then
+ Exit;
+ // calc rects
+ SetLength(SelRects, 0);
+ if GlobalCount > 0 then
+ for I := FFirstVisibleItem to FLastVisibleItem do
+ begin
+ Item := ItemByGlobalIndex(I);
+ if Item.IsSelected and Item.Visible then
+ begin
+ P := Item.LocaltoAbsolute(TPointF.Zero);
+ if (FSelection.Parent <> nil) and (FSelection.Parent is TControl) then
+ P := FSelection.ParentControl.AbsoluteToLocal(P);
+ R := RectF(P.X, P.Y, P.X + Item.Width,
+ P.Y + Item.Height);
+ if (Length(SelRects) > 0) and (I > 0) and ItemByGlobalIndex(I - 1).IsSelected then
+ SelRects[High(SelRects)] := UnionRect(R, SelRects[High(SelRects)])
+ else
+ begin
+ SetLength(SelRects, Length(SelRects) + 1);
+ SelRects[High(SelRects)] := R;
+ end;
+ end;
+ end;
+ // Create selection list
+ if FSelections = nil then
+ FSelections := TControlList.Create;
+ for I := 0 to FSelections.Count - 1 do
+ FSelections[I].DisposeOf;
+ FSelections.Clear;
+ // create selections
+ for I := 0 to Length(SelRects) - 1 do
+ begin
+ if Self.IsFocused and (FFocusedSelection <> nil) then
+ Clone := TControl(FFocusedSelection.Clone(Self))
+ else
+ Clone := TControl(FSelection.Clone(Self));
+ Clone.StyleName := string.Empty;
+ FSelections.Add(Clone);
+ Clone.Parent := FSelection.Parent;
+ end;
+ // hide if not needed
+ if Length(SelRects) < FSelections.Count then
+ for I := Length(SelRects) to FSelections.Count - 1 do
+ FSelections[I].Visible := False;
+ // align selections
+ for I := 0 to High(SelRects) do
+ begin
+ FSelections[I].Visible := True;
+ R := SelRects[I];
+ FSelections[I].SetBounds(R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top);
+ end;
+end;
+
+procedure TCustomTreeView.UpdateVisibleItems;
+var
+ First, Last, Mid: Integer;
+ R: TRectF;
+begin
+ First := 0;
+ Last := GlobalCount - 1;
+ while First < Last do
+ begin
+ Mid := First + (Last - First) div 2;
+ R := FGlobalList[Mid].AbsoluteRect;
+ R := AbsoluteToLocal(R);
+ if R.Bottom < 0 then
+ First := Mid + 1
+ else if R.Top > Height then
+ Last := Mid
+ else
+ Break;
+ end;
+ FFirstVisibleItem := First;
+ FLastVisibleItem := Last;
+ TTreeViewContent(Content).RecalcUpdateRect;
+ if FNoItemsContent <> nil then
+ FNoItemsContent.SetBounds(Content.Position.X, Content.Position.Y, Content.Width, Content.Height);
+end;
+
+procedure TCustomTreeView.ItemSizeMightHaveChanged(const AItem: TTreeViewItem);
+begin
+ if (ItemHeight = 0) and not AItem.FCustomHeight then
+ RealignContent;
+end;
+
+function TCustomTreeView.DoCalcContentBounds: TRectF;
+var
+ FirstItemHeight: Single;
+
+ function UpdateSize(const AItem: TTreeViewItem; const CurY: Single; const ContentWidth: Single;
+ var BottomRight: TPointF): Single;
+ var
+ I: Integer;
+ OffsetX: Single;
+ ItemSize: TSizeF;
+ TopLeft: TPointF;
+ MinWidth: Single;
+ begin
+ Result := CurY;
+ OffsetX := AItem.GetLevelOffset;
+ TopLeft := Content.ConvertLocalPointTo(AItem.ParentControl, TPointF.Create(OffsetX + AItem.Margins.Left, CurY + AItem.Margins.Top));
+
+ if AItem.IsVisible or AItem.ShowInDesigner then
+ begin
+ AItem.UpdateExpandedButtonVisibility;
+ MinWidth := ContentWidth - OffsetX - AItem.Margins.Left - AItem.Margins.Right;
+
+ ItemSize := AItem.MinItemSize;
+ if FItemHeight > 0 then
+ ItemSize.cy := FItemHeight
+ else if AItem.FCustomHeight then
+ ItemSize.cy := AItem.Height
+ else if ItemSize.cy <= 0 then
+ begin
+ if SameValue(FirstItemHeight, 0, TEpsilon.Position) then
+ begin
+ AItem.Inflate;
+ if AItem.MinItemSize.Height > 0 then
+ FirstItemHeight := AItem.MinItemSize.Height
+ else
+ FirstItemHeight := TTreeViewItem.DefaultHeight;
+ end;
+ ItemSize.cy := FirstItemHeight;
+ end;
+
+ if ItemSize.Width <= 0 then
+ ItemSize.cx := MinWidth
+ else
+ ItemSize.cx := Max(ItemSize.cx, MinWidth);
+
+ Result := CurY + ItemSize.cy + AItem.Margins.Top + AItem.Margins.Bottom;
+ BottomRight.X := Max(BottomRight.X, OffsetX + ItemSize.cx + AItem.Margins.Left + AItem.Margins.Right);
+ BottomRight.Y := Max(BottomRight.Y, Result);
+ AItem.SetBounds(TopLeft.X, TopLeft.Y, AItem.Width, ItemSize.cy);
+
+ if (AItem.Count > 0) and AItem.IsExpanded then
+ for I := 0 to AItem.Count - 1 do
+ Result := UpdateSize(AItem.ItemByIndex(I), Result, ContentWidth, BottomRight);
+ end
+ else
+ AItem.SetBounds(TopLeft.X, TopLeft.Y, AItem.Width, 0);
+ end;
+
+ procedure AdjustWidth(const AItem: TTreeViewItem; const BottomRight: TPointF);
+ var
+ I: Integer;
+ P: TPointF;
+ begin
+ if AItem.IsVisible or AItem.ShowInDesigner then
+ begin
+ P := Content.LocalToAbsolute(BottomRight);
+ P := AItem.ParentControl.AbsoluteToLocal(Content.LocalToAbsolute(BottomRight));
+ AItem.SetWidth(P.X - AItem.Position.X);
+ if AItem.IsExpanded then
+ for I := 0 to AItem.Count - 1 do
+ AdjustWidth(AItem.ItemByIndex(I), BottomRight);
+ end;
+ end;
+
+var
+ I: Integer;
+ CurY: Single;
+ LLocalRect: TRectF;
+begin
+ FirstItemHeight := 0;
+ UpdateGlobalIndexes;
+ if (not IsUpdating) and (ContentLayout <> nil) then
+ begin
+ LLocalRect := ContentLayout.LocalRect;
+ Result := LLocalRect;
+ if Result.Bottom = Result.Top then
+ Result.Bottom := Result.Top + 1;
+ { content }
+ FCountExpanded := 0;
+ if Content <> nil then
+ begin
+ { Sort if need }
+ SortItems;
+ { align }
+ CurY := 0;
+ FTextLayout := TTextLayoutManager.DefaultTextLayout.Create;
+ try
+ for I := 0 to Count - 1 do
+ CurY := UpdateSize(ItemByIndex(I), CurY, LLocalRect.Width, Result.BottomRight);
+ finally
+ FreeAndNil(FTextLayout);
+ end;
+ for I := 0 to Count - 1 do
+ AdjustWidth(ItemByIndex(I), Result.BottomRight);
+ end;
+ UpdateVisibleItems;
+ end;
+end;
+
+procedure TCustomTreeView.ViewportPositionChange(const OldViewportPosition, NewViewportPosition: TPointF;
+ const ContentSizeChanged: Boolean);
+begin
+ inherited;
+ UpdateVisibleItems;
+ UpdateSelection;
+end;
+
+function TCustomTreeView.ItemByIndex(const Idx: Integer): TTreeViewItem;
+begin
+ if (Idx >= 0) and (Idx < Count) then
+ begin
+ Assert(Content.Controls[Idx] is TTreeViewItem);
+ Result := TTreeViewItem(Content.Controls[Idx]);
+ end
+ else
+ raise ERangeError.CreateFMT(sArgumentOutOfRange_Index, [Idx, Count]);
+end;
+
+function TCustomTreeView.ItemByGlobalIndex(const Idx: Integer): TTreeViewItem;
+begin
+ Result := FGlobalList[Idx];
+end;
+
+function TCustomTreeView.ObjectAtPoint(P: TPointF): IControl;
+var
+ Local, Abs: TPointF;
+ Inner: IControl;
+ function CheckScrollBar(ScrollBar: TScrollBar): Boolean;
+ var
+ R: TRectF;
+ begin
+ Result := (ScrollBar <> nil) and
+ (ScrollBar.Visible) and
+ (ScrollBar.Enabled) and
+ (ScrollBar.HitTest);
+ if Result then
+ begin
+ R := ScrollBar.AbsoluteRect;
+ Result := R.Contains(Abs);
+ end;
+ end;
+begin
+ Local := ScreenToLocal(P);
+ if LocalRect.Contains(Local) then
+ begin
+ Abs := LocalToAbsolute(Local);
+ if CheckScrollBar(VScrollBar) then
+ Result := IControl(VScrollBar).ObjectAtPoint(P)
+ else if CheckScrollBar(HScrollBar) then
+ Result := IControl(HScrollBar).ObjectAtPoint(P)
+ else
+ begin
+ if not Supports(ItemByPoint(Local.X, Local.Y), IControl, Result) then
+ Result := inherited ObjectAtPoint(P)
+ else
+ begin
+ Inner := Result.ObjectAtPoint(P);
+ if Inner <> nil then
+ Result := Inner
+ else
+ if CheckHitTest(HitTest) then
+ Result := Self
+ else
+ Result := inherited ObjectAtPoint(P);
+ end;
+ end;
+ end
+ else
+ Result := nil;
+end;
+
+function TCustomTreeView.ItemByPoint(const X, Y: Single): TTreeViewItem;
+var
+ I: Integer;
+ P: TPointF;
+ Item: TTreeViewItem;
+
+ function PointInItem(const Itm: TTreeViewItem; const Pt: TPointF): Boolean;
+ var
+ ItemPt: TPointF;
+ begin
+ ItemPt := Item.AbsoluteToLocal(Pt);
+ Result := Content.PointInObject(Pt.X, Pt.Y)
+ and (ItemPt.Y >= (0 - TouchTargetExpansion.Top)) and (ItemPt.Y <= (Itm.Height + TouchTargetExpansion.Bottom));
+ end;
+
+begin
+ P := LocaltoAbsolute(PointF(X, Y));
+ if GlobalCount > 0 then
+ for I := FFirstVisibleItem to FLastVisibleItem do
+ begin
+ Item := FGlobalList[I];
+ if not Item.Visible then
+ Continue;
+ if not IntersectRect(Item.UpdateRect, UpdateRect) then
+ Continue;
+ if PointInItem(Item, P) then
+ Exit(Item);
+ end;
+ Result := nil;
+end;
+
+function TCustomTreeView.ItemByText(const AText: string): TTreeViewItem;
+var
+ Item: TTreeViewItem;
+ I: Integer;
+begin
+ Result := nil;
+ for I := 0 to GlobalCount - 1 do
+ begin
+ Item := ItemByGlobalIndex(I);
+ if CompareText(AText, Item.Text) = 0 then
+ Exit(Item);
+ end;
+end;
+
+procedure TCustomTreeView.KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);
+
+ procedure SelectUpperItem;
+ var
+ I: Integer;
+ begin
+ if Selected.GlobalIndex > 0 then
+ begin
+ I := Selected.GlobalIndex - 1;
+ while (I >= 0) and (ItemByGlobalIndex(I).GlobalIndex > 0) and (not ItemByGlobalIndex(I).IsVisible) do
+ Dec(I);
+ if (I >= 0) and ItemByGlobalIndex(I).IsVisible then
+ Selected := ItemByGlobalIndex(I);
+ end;
+ end;
+
+ procedure SelectLowerItem;
+ var
+ I: Integer;
+ begin
+ if Selected.GlobalIndex < GlobalCount - 1 then
+ begin
+ I := Selected.GlobalIndex + 1;
+ while (I < GlobalCount) and (ItemByGlobalIndex(I).GlobalIndex < Pred(GlobalCount)) and (not ItemByGlobalIndex(I).IsVisible) do
+ Inc(I);
+ if (I < GlobalCount) and ItemByGlobalIndex(I).IsVisible then
+ Selected := ItemByGlobalIndex(I);
+ end;
+ end;
+
+var
+ LSelParentItem : TTreeViewItem;
+begin
+ inherited KeyDown(Key, KeyChar, Shift);
+ if (Count > 0) and (Selected <> nil) then
+ begin
+ case Key of
+ vkAdd:
+ Selected.Expand;
+ vkSubtract:
+ Selected.Collapse;
+ vkHome:
+ begin
+ Selected := ItemByGlobalIndex(0);
+ if not Selected.Visible then
+ SelectLowerItem;
+ end;
+ vkEnd:
+ begin
+ Selected := ItemByGlobalIndex(GlobalCount - 1);
+ if not Selected.Visible then
+ SelectUpperItem;
+ end;
+ vkUp:
+ SelectUpperItem;
+ vkDown:
+ SelectLowerItem;
+ vkLeft:
+ if Selected.IsExpanded then
+ Selected.Collapse
+ else
+ begin
+ LSelParentItem := Selected.ParentItem;
+ if LSelParentItem <> nil then
+ begin
+ Selected := LSelParentItem;
+ if not Selected.IsVisible then
+ SelectUpperItem;
+ end;
+ end;
+ vkRight:
+ if not Selected.IsExpanded then
+ Selected.Expand
+ else
+ if Selected.FContent.ControlsCount > 0 then
+ SelectLowerItem;
+ else
+ Exit;
+ end;
+ Key := 0;
+ end;
+end;
+
+procedure TCustomTreeView.KeyUp(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);
+begin
+ inherited;
+end;
+
+function TCustomTreeView.LocalPointToHoveredItemLocalPoint(const AX, AY: Single): TPointF;
+begin
+ if HoveredItem <> nil then
+ begin
+ Result := Self.LocalToScreen(PointF(AX, AY));
+ Result := HoveredItem.ScreenToLocal(Result);
+ end;
+end;
+
+procedure TCustomTreeView.DragOver(const Data: TDragObject; const Point: TPointF;
+ var Operation: TDragOperation);
+var
+ Obj: TTreeViewItem;
+begin
+ inherited ;
+ Obj := ItemByPoint(Point.X, Point.Y);
+ if Obj <> FDragItem then
+ begin
+ if FDragItem <> nil then
+ begin
+ FDragItem.DragLeave;
+ FDragItem.RemoveFreeNotify(Self);
+ end;
+ FDragItem := Obj;
+ if FDragItem <> nil then
+ begin
+ inherited DragLeave;
+ FDragItem.AddFreeNotify(Self);
+ FDragItem.DragEnter(Data, ConvertLocalPointTo(FDragItem, Point));
+
+ Operation := TDragOperation.Move;
+ end
+ else
+ begin
+ DragEnter(Data, Point);
+ Operation := TDragOperation.None;
+ end;
+ end
+ else
+ Operation := TDragOperation.Move;
+
+ if (Data.Source is TTreeViewItem) and (TTreeViewItem(Data.Source) = FDragItem) then
+ Operation := TDragOperation.None;
+end;
+
+procedure TCustomTreeView.DragDrop(const Data: TDragObject; const Point: TPointF);
+var
+ Allow: Boolean;
+ WasSelected: Boolean;
+ SourceItem, DestItem: TTreeViewItem;
+begin
+ if FDragItem <> nil then
+ begin
+ FDragItem.DragLeave;
+ FDragItem.RemoveFreeNotify(Self);
+ FDragItem := nil;
+ end;
+ DestItem := ItemByPoint(Point.X, Point.Y);
+ if (Data.Source is TTreeViewItem) and IsChild(TTreeViewItem(Data.Source)) then
+ begin
+ SourceItem := TTreeViewItem(Data.Source);
+ Allow := True;
+ if Assigned(OnDragChange) then
+ OnDragChange(SourceItem, DestItem, Allow);
+ if Allow and not SourceItem.IsChild(DestItem) then
+ begin
+ WasSelected := SourceItem.FIsSelected;
+ if DestItem <> nil then
+ begin
+ SourceItem.Parent := DestItem;
+ DestItem.Expand;
+ end
+ else
+ begin
+ SourceItem.Parent := Self;
+ SourceItem.Expand;
+ end;
+ SourceItem.IsSelected := WasSelected;
+ end;
+ end
+ else if DestItem <> nil then
+ DestItem.DragDrop(Data, ConvertLocalPointTo(DestItem, Point))
+ else
+ inherited DragDrop(Data, Point);
+end;
+
+procedure TCustomTreeView.DragLeave;
+begin
+ inherited;
+ if FDragItem <> nil then
+ begin
+ FDragItem.DragLeave;
+ FDragItem.RemoveFreeNotify(Self);
+ FDragItem := nil;
+ end;
+end;
+
+procedure TCustomTreeView.MouseClick(Button: TMouseButton; Shift: TShiftState;
+ X, Y: Single);
+var
+ P: TPointF;
+begin
+ inherited;
+ if (HoveredItem <> nil) and MouseInContentLayout(X, Y) then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseClick(Button, Shift, P.X, P.Y);
+ end;
+end;
+
+procedure TCustomTreeView.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
+
+ procedure TryMakeMultiSelect;
+ var
+ Item: TTreeViewItem;
+ begin
+ Item := ItemByPoint(X, Y);
+ if Item = nil then
+ Exit;
+
+ if ([ssCtrl, ssCommand] * Shift) <> [] then
+ Item.IsSelected := not Item.IsSelected
+ else if ssShift in Shift then
+ begin
+ SelectRange(Selected, Item);
+ Selected := Item;
+ end
+ else
+ begin
+ SelectRange(Item, Item);
+ Selected := Item;
+ end;
+ FFirstSelect := Item;
+ end;
+
+ procedure TryMakeSingleSelectAndStartDrag;
+ var
+ Item: TTreeViewItem;
+ begin
+ Item := ItemByPoint(X, Y);
+ if Item = nil then
+ Exit;
+ Selected := Item;
+ if AllowDrag then
+ FStartDrag := True;
+ end;
+
+var
+ P: TPointF;
+ IsMouseInContent: Boolean;
+begin
+ // It's important to make selection before base mouse down processing. Because developer can remove nodes from this
+ // event handler. In this case, if he removes selected items, new node on old place will be repeatedly selected again.
+ IsMouseInContent := MouseInContentLayout(X, Y);
+ if IsMouseInContent then
+ begin
+ // Making selection of Items
+ if Button = TMouseButton.mbLeft then
+ begin
+ if MultiSelect then
+ TryMakeMultiSelect
+ else
+ TryMakeSingleSelectAndStartDrag;
+ FMouseSelecting := True;
+ end;
+ end;
+
+ inherited MouseDown(Button, Shift, X, Y);
+
+ // Transfer Click to Hovered Item
+ if IsMouseInContent and (HoveredItem <> nil) then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseDown(Button, Shift, P.X, P.Y);
+ end;
+end;
+
+function TCustomTreeView.MouseInContentLayout(const X, Y: Single): Boolean;
+var
+ P: TPointF;
+begin
+ Result := False;
+ if ContentLayout <> nil then
+ begin
+ P := TPointF.Create(X, Y);
+ P := LocalToAbsolute(P);
+ Result := ContentLayout.AbsoluteRect.Contains(P);
+ end;
+end;
+
+procedure TCustomTreeView.MouseMove(Shift: TShiftState; X, Y: Single);
+var
+ Item: TTreeViewItem;
+ P: TPointF;
+ LBitMap: TBitmap;
+begin
+ inherited MouseMove(Shift, X, Y);
+ if MouseInContentLayout(X, Y) then
+ begin
+ Item := ItemByPoint(X, Y);
+ //! Launcher Fix
+ /// There is a case when Selected can be equal to nil
+ /// by doing additional check here, we are
+ /// saving ourselves from yet another AV error
+ if AllowDrag and FStartDrag and (Selected <> nil) then
+ begin
+ FStartDrag := False;
+ LBitMap := Selected.MakeScreenshot;
+ try
+ Root.BeginInternalDrag(Selected, LBitMap);
+ finally
+ LBitMap.Free;
+ end;
+ end;
+ SetHoveredItem(Item);
+ if HoveredItem <> nil then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseMove(Shift, P.X, P.Y);
+ end;
+ end;
+end;
+
+procedure TCustomTreeView.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
+var
+ P: TPointF;
+begin
+ inherited MouseUp(Button, Shift, X, Y);
+ FFirstSelect := nil;
+ FMouseSelecting := False;
+ if (HoveredItem <> nil) and MouseInContentLayout(X, Y) then
+ begin
+ P := LocalPointToHoveredItemLocalPoint(X, Y);
+ HoveredItem.MouseUp(Button, Shift, P.X, P.Y);
+ end;
+ FStartDrag := False;
+end;
+
+procedure TCustomTreeView.MouseWheel(Shift: TShiftState; WheelDelta: Integer;
+ var Handled: Boolean);
+begin
+ inherited;
+ if HoveredItem <> nil then
+ HoveredItem.MouseWheel(Shift, WheelDelta, Handled);
+end;
+
+procedure TCustomTreeView.ChangeOrder;
+begin
+ inherited ChangeOrder;
+ InvalidateContentSize;
+ if not IsUpdating then
+ RealignContent;
+end;
+
+procedure TCustomTreeView.Clear;
+var
+ i: Integer;
+ TmpObj: TFmxObject;
+begin
+ BeginUpdate;
+ try
+ FToInflate.Clear;
+ if (Content <> nil) and (Count > 0) then
+ for i := Content.ControlsCount - 1 downto 0 do
+ if Content.Controls[i] is TTreeViewItem then
+ begin
+ TmpObj := Content.Controls[i];
+ TmpObj.DisposeOf;
+ end;
+ FSelected := nil;
+ FFirstVisibleItem := 0;
+ FLastVisibleItem := 0;
+ UpdateGlobalIndexes;
+ UpdateSelection;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TCustomTreeView.SelectRange(const Item1, Item2: TTreeViewItem);
+var
+ i: Integer;
+ FirstItemIndex: Integer;
+ LastItemIndex: Integer;
+begin
+ if (Item1 = nil) or (Item2 = nil) then
+ Exit;
+ FirstItemIndex := Min(Item1.GlobalIndex, Item2.GlobalIndex);
+ LastItemIndex := Max(Item1.GlobalIndex, Item2.GlobalIndex);
+
+ for i := 0 to FirstItemIndex - 1 do
+ ItemByGlobalIndex(i).Deselect;
+ for i := FirstItemIndex to LastItemIndex do
+ ItemByGlobalIndex(i).Select;
+ for i := LastItemIndex + 1 to GlobalCount - 1 do
+ ItemByGlobalIndex(i).Deselect;
+end;
+
+procedure TCustomTreeView.ClearSelection;
+var
+ Item: TTreeViewItem;
+begin
+ for Item in FGlobalList do
+ Item.IsSelected := False;
+end;
+
+procedure TCustomTreeView.SelectAll;
+var
+ Item: TTreeViewItem;
+begin
+ for Item in FGlobalList do
+ Item.IsSelected := True;
+end;
+
+procedure TCustomTreeView.DoChange;
+begin
+ if Assigned(FOnChange) and not (csLoading in ComponentState) then
+ FOnChange(Self);
+end;
+
+procedure TCustomTreeView.DoChangeCheck(const Item: TTreeViewItem);
+begin
+ if Assigned(FOnChangeCheck) then
+ FOnChangeCheck(Item);
+end;
+
+procedure TCustomTreeView.DoContentPaint(Sender: TObject; Canvas: TCanvas;
+ const ARect: TRectF);
+var
+ I: Integer;
+ Item: TTreeViewItem;
+ P: TPointF;
+ R: TRectF;
+begin
+ if (Content <> nil) and (ContentLayout <> nil) then
+ begin
+ if FAlternatingRowBackground then
+ begin
+ Canvas.Fill.Assign(FOddFill);
+ for I := FFirstVisibleItem to FLastVisibleItem do
+ begin
+ if Odd(I) then
+ begin
+ Item := ItemByGlobalIndex(I);
+ P := TControl(Sender).ConvertLocalPointFrom(Item, TPointF.Zero);
+ R := RectF(0, P.Y, ContentLayout.Width, P.Y + Item.Height);
+ if not IntersectRect(R, ARect) then
+ Continue;
+ Canvas.FillRect(R, 0, 0, [], AbsoluteOpacity);
+ end;
+ end;
+ end;
+ end;
+end;
+
+procedure TCustomTreeView.DoEnter;
+begin
+ inherited DoEnter;
+ if Selected <> nil then
+ UpdateSelection;
+end;
+
+procedure TCustomTreeView.DoExit;
+begin
+ inherited DoExit;
+ if Selected <> nil then
+ UpdateSelection;
+end;
+
+procedure TCustomTreeView.DoInsertObject(Index: Integer; const AObject: TFmxObject);
+begin
+ if (Content <> nil) and (AObject is TTreeViewItem) then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ Content.InsertObject(Index, AObject);
+ if [csLoading, csDestroying] * ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(Images);
+ end
+ else
+ inherited DoInsertObject(Index, AObject);
+end;
+
+procedure TCustomTreeView.DoAddObject(const AObject: TFmxObject);
+begin
+ if (Content <> nil) and (AObject is TTreeViewItem) then
+ begin
+ if FUpdating > TTreeViewItem(AObject).FUpdating then
+ TTreeViewItem(AObject).BeginUpdate;
+ Content.AddObject(AObject);
+ if [csLoading, csDestroying] * ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(Images);
+ end
+ else
+ inherited DoAddObject(AObject);
+end;
+
+procedure TCustomTreeView.DoRemoveObject(const AObject: TFmxObject);
+begin
+ if (AObject is TTreeViewItem) and (TTreeViewItem(AObject).TreeView = Self) then
+ begin
+ TTreeViewItem(AObject).Parent := nil;
+ if [csLoading, csDestroying] * ComponentState = [] then
+ TTreeViewItem(AObject).SetImages(nil);
+ end
+ else
+ inherited DoRemoveObject(AObject);
+end;
+
+procedure TCustomTreeView.DoUpdateAniCalculations(const AAniCalculations: TScrollCalculations);
+begin
+ inherited;
+ AAniCalculations.AutoShowing := False;
+ AAniCalculations.Animation := False;
+ AAniCalculations.BoundsAnimation := False;
+end;
+
+function TCustomTreeView.IsAddToContent(const AObject: TFmxObject): Boolean;
+begin
+ Result := inherited IsAddToContent(AObject) and (AObject <> FNoItemsContent);
+end;
+
+function TCustomTreeView.IsOpaque: Boolean;
+begin
+ Result := True;
+end;
+
+procedure TCustomTreeView.ContentAddObject(const AObject: TFmxObject);
+begin
+ if not (AObject is TTreeViewItem) then
+ begin
+ if FNoItemsContent = nil then
+ begin
+ FNoItemsContent := TContent.Create(Self);
+ FNoItemsContent.Parent := Self;
+ FNoItemsContent.SetBounds(0, 0, 0, 0);
+ FNoItemsContent.Stored := False;
+ FNoItemsContent.Locked := True;
+ FNoItemsContent.HitTest := False;
+ end;
+ FNoItemsContent.AddObject(AObject)
+ end
+ else
+ begin
+ InvalidateContentSize;
+ InvalidateGlobalList;
+ if not TTreeViewItem(AObject).IsInflated then
+ FToInflate.Add(TTreeViewItem(AObject));
+ if not IsUpdating then
+ RealignContent;
+ end;
+end;
+
+procedure TCustomTreeView.ContentInsertObject(Index: Integer; const AObject: TFmxObject);
+begin
+ ContentAddObject(AObject);
+end;
+
+procedure TCustomTreeView.ContentRemoveObject(const AObject: TFmxObject);
+begin
+ inherited;
+ if AObject is TTreeViewItem and not IsUpdating then
+ begin
+ Realign;
+ UpdateVisibleItems;
+ UpdateSelection;
+ end;
+end;
+
+procedure TCustomTreeView.ContentBeforeRemoveObject(AObject: TFmxObject);
+begin
+ inherited;
+ if AObject is TTreeViewItem then
+ begin
+ TTreeViewItem(AObject).FIsSelected := False;
+ if AObject = FSelected then
+ FSelected := nil;
+ InvalidateContentSize;
+ InvalidateGlobalList;
+ FToInflate.Remove(TTreeViewItem(AObject));
+ end;
+end;
+
+procedure TCustomTreeView.SetSelected(const Value: TTreeViewItem);
+var
+ LFmxObject: TFmxObject;
+ P: TPointF;
+begin
+ if (FSelected <> Value) and not FSelectionChanging then
+ begin
+ FSelectionChanging := True;
+ try
+ if (FSelected <> nil) and not MultiSelect then
+ FSelected.IsSelected := False;
+
+ FSelected := Value;
+ if (FSelected <> nil) and (Content <> nil) then
+ begin
+ LFmxObject := FSelected.Parent;
+ while ((LFmxObject <> nil) and not (LFmxObject is TCustomTreeView)) do
+ begin
+ if LFmxObject is TTreeViewItem then
+ TTreeViewItem(LFmxObject).Expand;
+ LFmxObject := LFmxObject.Parent;
+ end;
+ if (Content <> nil) and (ContentLayout <> nil) and (VScrollBar <> nil) then
+ begin
+ P := ContentLayout.ConvertLocalPointFrom(FSelected, TPointF.Zero);
+ if P.Y < 0 then
+ VScrollBar.Value := VScrollBar.Value + P.Y;
+ if P.Y + FSelected.Margins.Top + FSelected.Margins.Bottom + FSelected.Height > ContentLayout.Height then
+ VScrollBar.Value := VScrollBar.Value + (P.Y + FSelected.Margins.Top + FSelected.Margins.Bottom +
+ FSelected.Height - ContentLayout.Height);
+ end;
+ FSelected.IsSelected := True;
+ end;
+ finally
+ FSelectionChanging := False;
+ end;
+ DoChange;
+ end;
+end;
+
+procedure TCustomTreeView.Notification(AComponent: TComponent; Operation: TOperation);
+begin
+ inherited;
+ if Operation = opRemove then
+ begin
+ if AComponent = FSelected then
+ FSelected := nil;
+ if AComponent = FDragItem then
+ FDragItem := nil;
+ if AComponent = FHoveredItem then
+ FHoveredItem := nil;
+ if AComponent = FFirstSelect then
+ FFirstSelect := nil;
+ end;
+end;
+
+procedure TCustomTreeView.NotifyInflated;
+begin
+ RealignContent;
+end;
+
+procedure TCustomTreeView.SetItemHeight(const Value: Single);
+var
+ OldSetItemHeight, NewSetItemHeight: Boolean;
+ I: Integer;
+ procedure ClearHeight(Item: TTreeViewItem);
+ var
+ I: Integer;
+ begin
+ Item.Height := 0;
+ for I := 0 to Item.Count - 1 do
+ ClearHeight(Item.Items[I]);
+ end;
+begin
+ if FItemHeight <> Value then
+ begin
+ OldSetItemHeight := FItemHeight > 0;
+ FItemHeight := Value;
+ NewSetItemHeight := FItemHeight > 0;
+ if (OldSetItemHeight <> NewSetItemHeight) and (not NewSetItemHeight) then
+ begin
+ BeginUpdate;
+ try
+ for I := 0 to Count - 1 do
+ ClearHeight(Items[I]);
+ finally
+ EndUpdate
+ end;
+ end;
+ RealignContent;
+ end;
+end;
+
+procedure TCustomTreeView.CollapseAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ for i := Count - 1 downto 0 do
+ begin
+ Item := Items[i];
+ if Item <> nil then
+ Item.CollapseAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TCustomTreeView.ExpandAll;
+var
+ i: Integer;
+ Item: TTreeViewItem;
+begin
+ BeginUpdate;
+ try
+ for i := Count - 1 downto 0 do
+ begin
+ Item := Items[i];
+ if Item <> nil then
+ Item.ExpandAll;
+ end;
+ finally
+ EndUpdate;
+ end;
+end;
+
+procedure TCustomTreeView.SetCheckboxesVisibility(const Value: Boolean);
+var
+ i: Integer;
+ Item : TTreeViewItem;
+begin
+ if FShowCheckboxes <> Value then
+ begin
+ FShowCheckboxes := Value;
+ for i := 0 to Count - 1 do
+ begin
+ Item := Items[i];
+ if Item <> nil then
+ Item.UpdateCheckBoxVisibility;
+ end;
+ RealignContent;
+ end;
+end;
+
+function TCustomTreeView.GetTreeItem(Index: Integer): TTreeViewItem;
+begin
+ Result := ItemByIndex(Index);
+end;
+
+procedure TCustomTreeView.SetSorted(const Value: Boolean);
+begin
+ if FSorted <> Value then
+ begin
+ FSorted := Value;
+ RealignContent;
+ end;
+end;
+
+procedure TCustomTreeView.SetAllowDrag(const Value: Boolean);
+begin
+ if FAllowDrag <> Value then
+ begin
+ FAllowDrag := Value;
+ if FAllowDrag then
+ EnableDragHighlight := True;
+ end;
+end;
+
+procedure TCustomTreeView.SetAlternatingRowBackground(const Value: Boolean);
+begin
+ if FAlternatingRowBackground <> Value then
+ begin
+ FAlternatingRowBackground := Value;
+ Repaint;
+ end;
+end;
+
+procedure TCustomTreeView.SetHoveredItem(const Value: TTreeViewItem);
+begin
+ if FHoveredItem <> Value then
+ begin
+ try
+ if FHoveredItem <> nil then
+ begin
+ TComponent(FHoveredItem).RemoveFreeNotification(Self);
+ FHoveredItem.DoMouseLeave;
+ end;
+ finally
+ FHoveredItem := Value;
+ if FHoveredItem <> nil then
+ begin
+ TComponent(FHoveredItem).FreeNotification(Self);
+ FHoveredItem.DoMouseEnter;
+ end;
+ end;
+ end;
+end;
+
+function TCustomTreeView.GetCount: Integer;
+begin
+ Result := 0;
+ if Content <> nil then
+ Result := Content.ControlsCount;
+end;
+
+function TCustomTreeView.GetGlobalCount: Integer;
+begin
+ UpdateGlobalIndexes(False);
+ Result := FGlobalList.Count;
+end;
+
+procedure TCustomTreeView.InvalidateGlobalList;
+begin
+ FGlobalList.Clear;
+end;
+
+procedure TCustomTreeView.ItemExpanded(const Item: TTreeViewItem);
+var
+ I: Integer;
+ Child: TTreeViewItem;
+begin
+ InvalidateGlobalList;
+ if Item.IsExpanded then
+ for I := 0 to Item.Count - 1 do
+ begin
+ Child := Item.Items[I];
+ if not Child.IsInflated then
+ Child.Inflate;
+ end;
+ RealignContent;
+end;
+
+function TCustomTreeView.GetImages: TCustomImageList;
+begin
+ Result := TCustomImageList(FImageLink.Images);
+end;
+
+procedure TCustomTreeView.SetImages(const Value: TCustomImageList);
+begin
+ FImageLink.Images := Value;
+end;
+
+function TCustomTreeView.GetImageIndex: TImageIndex;
+begin
+ Result := -1;
+end;
+
+procedure TCustomTreeView.SetImageIndex(const Value: TImageIndex);
+begin
+ // none
+end;
+
+function TCustomTreeView.GetImageList: TBaseImageList;
+begin
+ Result := GetImages;
+end;
+
+procedure TCustomTreeView.Loaded;
+begin
+ inherited;
+ ImagesChanged;
+end;
+
+procedure TCustomTreeView.ImagesChanged;
+var
+ I: Integer;
+begin
+ if (FImages <> FImageLink.Images) and ([csDestroying, csLoading] * ComponentState = []) then
+ begin
+ FImages := TCustomImageList(FImageLink.Images);
+ BeginUpdate;
+ try
+ for I := 0 to Count - 1 do
+ Items[I].SetImages(FImages);
+ finally
+ EndUpdate;
+ end;
+ end;
+end;
+
+procedure TCustomTreeView.SetImageList(const Value: TBaseImageList);
+begin
+ ValidateInheritance(Value, TCustomImageList);
+ SetImages(TCustomImageList(Value));
+end;
+
+initialization
+ RegisterFmxClasses([TTreeView, TTreeViewItem]);
+end.
diff --git a/src/lib/FMX.Taskbar.pas b/src/lib/FMX/FMX.Taskbar.pas
similarity index 100%
rename from src/lib/FMX.Taskbar.pas
rename to src/lib/FMX/FMX.Taskbar.pas
diff --git a/src/lib/MacApi.Dialogs.pas b/src/lib/MacApi.Dialogs.pas
index 019fa57..8410843 100644
--- a/src/lib/MacApi.Dialogs.pas
+++ b/src/lib/MacApi.Dialogs.pas
@@ -180,6 +180,7 @@ function InvokeNSOpenPanel(const Title: String; const InitialDir: String;
OpenPanel.retain;
try
+
IResult := OpenPanel.runModal;
if IResult = NSOKButton then
ADir := NSStrToStr(TNSUrl.Wrap(OpenPanel.URLs.objectAtIndex(0)).relativePath);
diff --git a/src/lib/plugins/AEP Parser/README.md b/src/lib/plugins/AEP Parser/README.md
new file mode 100644
index 0000000..b2d7503
--- /dev/null
+++ b/src/lib/plugins/AEP Parser/README.md
@@ -0,0 +1,16 @@
+# After Effects Project parser executable
+Made specifically for **AErender Launcher**
+
+Based on a modified version of @boltframe/aftereffects-aep-parser.
+
+## Building
+- Fetch required packages
+ ```powershell
+ go get -u "github.com/LilyStilson/aftereffects-aep-parser"
+ ```
+
+- Open any CLI and type
+ ```powershell
+ go build aeparser.go
+ ```
+This will output an executable that is later gets embeded in **Launcher**
\ No newline at end of file
diff --git a/src/lib/plugins/AEP Parser/aeparser.go b/src/lib/plugins/AEP Parser/aeparser.go
new file mode 100644
index 0000000..d678c34
--- /dev/null
+++ b/src/lib/plugins/AEP Parser/aeparser.go
@@ -0,0 +1,32 @@
+package main
+
+import (
+ "encoding/json"
+ "fmt"
+ "os"
+
+ aep "github.com/LilyStilson/aftereffects-aep-parser"
+)
+
+func main() {
+ projectPath := os.Args[1]
+ project, err := aep.Open(projectPath)
+
+ var comps []aep.Item
+
+ for _, value := range project.Items {
+ if value.ItemType == aep.ItemTypeComposition {
+ comps = append(comps, *value)
+ }
+ }
+
+ JSONComp, err := json.Marshal(comps)
+
+ fmt.Println(string(JSONComp))
+
+ if err != nil {
+ panic(err)
+ }
+}
+
+
diff --git a/src/lib/plugins/AEP Parser/build.bat b/src/lib/plugins/AEP Parser/build.bat
new file mode 100644
index 0000000..b447d4b
--- /dev/null
+++ b/src/lib/plugins/AEP Parser/build.bat
@@ -0,0 +1,12 @@
+@ECHO off
+echo "Building aeparser_win.exe..."
+set GOOS=windows
+set GOARCH=amd64
+go build -o "aeparser_win.exe"
+
+echo "Building aeparser_mac..."
+set GOOS=darwin
+set GOARCH=amd64
+go build -o "aeparser_mac"
+
+
diff --git a/src/lib/plugins/AEP Parser/go.mod b/src/lib/plugins/AEP Parser/go.mod
new file mode 100644
index 0000000..17dfc59
--- /dev/null
+++ b/src/lib/plugins/AEP Parser/go.mod
@@ -0,0 +1,8 @@
+module main
+
+go 1.10
+
+require (
+ github.com/LilyStilson/aftereffects-aep-parser v0.0.0-20210220175541-6a3310917538
+ github.com/rioam2/rifx v0.0.0-20200718170510-a8114e272da2 // indirect
+)
diff --git a/src/lib/plugins/AEP Parser/go.sum b/src/lib/plugins/AEP Parser/go.sum
new file mode 100644
index 0000000..703df74
--- /dev/null
+++ b/src/lib/plugins/AEP Parser/go.sum
@@ -0,0 +1,4 @@
+github.com/LilyStilson/aftereffects-aep-parser v0.0.0-20210220175541-6a3310917538 h1:fsCcozoBceer4kHtJ1sNtoqF2YAhxP0eqEpFjiIiSmM=
+github.com/LilyStilson/aftereffects-aep-parser v0.0.0-20210220175541-6a3310917538/go.mod h1:vl9j+VrVsbpy7nVrLtR0MxfvdvZytzsbjHqP1cD0W10=
+github.com/rioam2/rifx v0.0.0-20200718170510-a8114e272da2 h1:2IIvKNJ8JYflWullRO8H+maDSUZlVNT5z2INeqFS2r4=
+github.com/rioam2/rifx v0.0.0-20200718170510-a8114e272da2/go.mod h1:TYyDvYI3ihyHtCN4kT8AFUUMOlONaCVdYXM9vKTsS/M=
diff --git a/styles/AErender Modern Animated/AERFMXStyleMacOSAnimated.style b/styles/AErender Modern Animated/AERFMXStyleMacOSAnimated.style
index 837e1ff..77d94fc 100644
--- a/styles/AErender Modern Animated/AERFMXStyleMacOSAnimated.style
+++ b/styles/AErender Modern Animated/AERFMXStyleMacOSAnimated.style
@@ -16,7 +16,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 2
+ TabOrder = 3
object TRectangle
StyleName = 'background'
Align = Client
@@ -75,7 +75,7 @@ object TStyleContainer
Size.Height = 38.333343505859380000
Size.PlatformDefault = False
Visible = False
- TabOrder = 3
+ TabOrder = 4
object TLayout
Align = Left
Size.Width = 18.000000000000000000
@@ -156,7 +156,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 4
+ TabOrder = 5
object TBrushObject
StyleName = 'foreground'
end
@@ -239,7 +239,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 5
+ TabOrder = 6
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = x32787878
@@ -365,7 +365,7 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 6
+ TabOrder = 7
object TRectangle
StyleName = 'background'
Align = Contents
@@ -404,7 +404,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 7
+ TabOrder = 8
object TRectangle
StyleName = 'background'
Align = Contents
@@ -455,7 +455,7 @@ object TStyleContainer
StyleName = 'imagecellstyle'
Align = Center
Visible = False
- TabOrder = 8
+ TabOrder = 9
object TImage
StyleName = 'image'
MultiResBitmap = <
@@ -480,7 +480,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 9
+ TabOrder = 10
object TText
StyleName = 'text'
Align = Contents
@@ -498,7 +498,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 10
+ TabOrder = 11
object TText
StyleName = 'text'
Align = Client
@@ -521,7 +521,7 @@ object TStyleContainer
Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 11
+ TabOrder = 12
object TGlyph
StyleName = 'glyphstyle'
Margins.Left = 2.000000000000000000
@@ -568,7 +568,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 12
+ TabOrder = 13
object TRectangle
StyleName = 'background'
Align = Contents
@@ -604,7 +604,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 13
+ TabOrder = 14
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = xFF2C2C2C
@@ -710,7 +710,7 @@ object TStyleContainer
StyleName = 'popupcellstyle'
Align = Center
Visible = False
- TabOrder = 14
+ TabOrder = 15
object TLayout
Align = Right
Position.X = 35.000000000000000000
@@ -766,7 +766,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 15
+ TabOrder = 16
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -839,7 +839,7 @@ object TStyleContainer
Size.Height = 126.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 16
+ TabOrder = 17
object TLayout
StyleName = 'htrack'
Align = Contents
@@ -876,7 +876,7 @@ object TStyleContainer
StyleName = 'scrollbarbottombutton'
Align = Center
Visible = False
- TabOrder = 17
+ TabOrder = 18
object TRectangle
StyleName = 'background'
Align = Client
@@ -954,7 +954,7 @@ object TStyleContainer
StyleName = 'scrollbarleftbutton'
Align = Center
Visible = False
- TabOrder = 18
+ TabOrder = 19
object TRectangle
StyleName = 'background'
Align = Client
@@ -1014,7 +1014,7 @@ object TStyleContainer
StyleName = 'scrollbarrightbutton'
Align = Center
Visible = False
- TabOrder = 19
+ TabOrder = 20
object TRectangle
StyleName = 'background'
Align = Client
@@ -1074,7 +1074,7 @@ object TStyleContainer
StyleName = 'scrollbarstyle'
Align = Center
Visible = False
- TabOrder = 20
+ TabOrder = 21
object TButton
StyleName = 'leftbutton'
Align = Left
@@ -1139,7 +1139,7 @@ object TStyleContainer
StyleName = 'scrollbartopbutton'
Align = Center
Visible = False
- TabOrder = 21
+ TabOrder = 22
object TRectangle
StyleName = 'background'
Align = Client
@@ -1218,16 +1218,16 @@ object TStyleContainer
StyleName = 'spinboxstyle'
Align = Center
Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 22
+ TabOrder = 23
object TRectangle
StyleName = 'background'
Align = Contents
Fill.Color = xFF202020
Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
XRadius = 3.000000000000000000
@@ -1259,13 +1259,13 @@ object TStyleContainer
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Size.Width = 66.200073242187500000
- Size.Height = 17.000000000000000000
+ Size.Width = 60.200042724609380000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
end
object TButton
StyleName = 'minusbutton'
- Align = FitLeft
+ Align = Left
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
@@ -1274,55 +1274,47 @@ object TStyleContainer
Margins.Bottom = 2.000000000000000000
Position.X = 2.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 16.999954223632810000
- Size.Height = 17.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
05000000000000000000803F00000000010000000000803F0000803F01000000
000000000000003F010000000000803F00000000030000000000803F00000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999954223632813000
- Size.Height = 5.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
end
object TButton
StyleName = 'plusbutton'
- Align = FitRight
+ Align = Right
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Position.X = 93.200027465820310000
+ Position.X = 90.200042724609380000
Position.Y = 2.000000000000000000
- Size.Width = 16.999969482421880000
- Size.Height = 17.000000000000000000
+ Size.Width = 19.999954223632810000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
0400000000000000000000000000000001000000000000000000803F01000000
0000803F0000003F030000000000000000000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999969482421875000
- Size.Height = 5.000000000000000000
+ Size.Width = 7.999954223632813000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
@@ -1335,7 +1327,7 @@ object TStyleContainer
Size.Width = 100.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
- TabOrder = 23
+ TabOrder = 24
TrackingThumbScale = 1.000000000000000000
Visible = False
Fill.Color = xFF202020
@@ -1359,7 +1351,7 @@ object TStyleContainer
Size.Height = 100.999992370605500000
Size.PlatformDefault = False
Visible = False
- TabOrder = 24
+ TabOrder = 25
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1407,7 +1399,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 25
+ TabOrder = 26
object TRectangle
StyleName = 'top'
Align = Contents
@@ -1473,7 +1465,7 @@ object TStyleContainer
StyleName = 'textcellstyle'
Align = Center
Visible = False
- TabOrder = 26
+ TabOrder = 27
object TLayout
StyleName = 'content'
Align = Contents
@@ -1572,7 +1564,7 @@ object TStyleContainer
Size.Height = 100.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 27
+ TabOrder = 28
FixedHeight = 17
object TRectangle
StyleName = 'htrack'
@@ -1697,7 +1689,7 @@ object TStyleContainer
Size.Height = 122.199996948242200000
Size.PlatformDefault = False
Visible = False
- TabOrder = 28
+ TabOrder = 29
object TGlowEffect
Softness = 0.200000002980232200
GlowColor = xFF4879A3
@@ -1816,7 +1808,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 29
+ TabOrder = 30
object TRectangle
StyleName = 'Rectangle1'
Align = Center
@@ -1927,7 +1919,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 30
+ TabOrder = 31
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -2000,7 +1992,7 @@ object TStyleContainer
Size.Height = 32.400001525878910000
Size.PlatformDefault = False
Visible = False
- TabOrder = 31
+ TabOrder = 32
object TText
StyleName = 'text'
Align = Contents
@@ -2035,7 +2027,7 @@ object TStyleContainer
StyleName = 'smallscrollbarstyle'
Align = Center
Visible = False
- TabOrder = 32
+ TabOrder = 33
object TTrack
StyleName = 'htrack'
Align = Client
@@ -2064,7 +2056,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 33
+ TabOrder = 34
object TBrushObject
StyleName = 'foreground'
end
@@ -2163,116 +2155,6 @@ object TStyleContainer
Size.PlatformDefault = False
end
end
- object TLayout
- StyleName = 'comboeditstyle'
- Align = Center
- Size.Width = 100.000000000000000000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- TabOrder = 34
- object TLayout
- StyleName = 'background'
- Align = Contents
- Size.Width = 100.000000000000000000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- StyleName = 'Rectangle1'
- Align = Client
- Fill.Color = xFF202020
- HitTest = False
- Size.Width = 100.000000000000000000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- XRadius = 3.000000000000000000
- YRadius = 3.000000000000000000
- object TLayout
- StyleName = 'ButtonStyleObject'
- Align = FitRight
- Margins.Top = 1.000000000000000000
- Margins.Right = 1.000000000000000000
- Margins.Bottom = 1.000000000000000000
- Position.X = 75.924545288085940000
- Position.Y = 1.000000000000000000
- Size.Width = 23.075454711914060000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- object TLayout
- StyleName = 'Layout1'
- Align = Center
- Margins.Left = 1.000000000000000000
- Size.Width = 10.000000000000000000
- Size.Height = 6.000000000000000000
- Size.PlatformDefault = False
- object TPath
- StyleName = 'Path1'
- Align = Client
- Data.Path = {
- 04000000000000000000C8420000C84201000000000096430000C84201000000
- 0000484300009643030000000000C8420000C842}
- Fill.Color = claWhite
- HitTest = False
- Size.Width = 10.000000000000000000
- Size.Height = 6.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- end
- object TColorAnimation
- StyleName = 'buttonColorAnimation1'
- Duration = 0.100000001490116100
- PropertyName = 'Fill.Color'
- StartValue = xFF202020
- StopValue = xFF404040
- Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
- TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
- end
- object TColorAnimation
- StyleName = 'buttonColorAnimation2'
- Duration = 0.100000001490116100
- PropertyName = 'Fill.Color'
- StartValue = xFF404040
- StopValue = xFF17579C
- Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=false'
- end
- object TColorAnimation
- StyleName = 'buttonColorAnimation3'
- Duration = 0.100000001490116100
- PropertyName = 'Fill.Color'
- StartValue = xFF2A82E2
- StopValue = xFF17579C
- Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
- TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
- end
- end
- end
- object TBrushObject
- StyleName = 'foreground'
- end
- object TFontObject
- StyleName = 'font'
- Font.Size = 13.000000000000000000
- end
- object TLayout
- StyleName = 'content'
- Align = Client
- Locked = True
- Margins.Left = 2.000000000000000000
- Margins.Top = 2.000000000000000000
- Margins.Right = 27.000000000000000000
- Margins.Bottom = 2.000000000000000000
- Size.Width = 71.000000000000000000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- end
- object TBrushObject
- StyleName = 'selection'
- Brush.Color = x962A82E2
- end
- end
object TLayout
StyleName = 'splitterstyle'
Align = Center
@@ -2417,7 +2299,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 38
+ TabOrder = 41
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -2492,7 +2374,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 40
+ TabOrder = 42
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -2570,7 +2452,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 43
+ TabOrder = 45
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -2641,60 +2523,6 @@ object TStyleContainer
TextSettings.FontColor = claWhite
end
end
- object TLayout
- StyleName = 'progressbarministyle'
- Align = Center
- Size.Width = 66.599998474121090000
- Size.Height = 56.399997711181640000
- Size.PlatformDefault = False
- Visible = False
- TabOrder = 46
- object TRectangle
- StyleName = 'htrack'
- Align = Contents
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 66.599998474121090000
- Size.Height = 56.399997711181640000
- Size.PlatformDefault = False
- Stroke.Kind = None
- object TRectangle
- StyleName = 'hindicator'
- Align = Left
- Fill.Color = xFF2A82E2
- Locked = True
- HitTest = False
- Size.Width = 50.000000000000000000
- Size.Height = 56.399997711181640000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- object TRectangle
- StyleName = 'vtrack'
- Align = Contents
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 66.599998474121090000
- Size.Height = 56.399997711181640000
- Size.PlatformDefault = False
- Stroke.Kind = None
- object TRectangle
- StyleName = 'vindicator'
- Align = Bottom
- Fill.Color = xFF2A82E2
- Locked = True
- HitTest = False
- Position.Y = 35.399997711181640000
- Size.Width = 66.599998474121090000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- end
object TLayout
StyleName = 'aniindicatorhorzstyle'
Align = Center
@@ -2702,6 +2530,7 @@ object TStyleContainer
Size.Height = 2.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 58
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -2744,12 +2573,13 @@ object TStyleContainer
Size.Height = 96.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 1
+ TabOrder = 2
object TRectangle
StyleName = 'background'
Align = Client
ClipChildren = True
ClipParent = True
+ Corners = [TopRight, BottomRight]
Fill.Color = xFF202020
HitTest = False
Size.Width = 96.000000000000000000
@@ -2829,7 +2659,7 @@ object TStyleContainer
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 49
+ TabOrder = 53
object TPath
StyleName = 'Path1'
Align = Center
@@ -2862,7 +2692,7 @@ object TStyleContainer
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 52
+ TabOrder = 54
object TLayout
Align = Left
Size.Width = 24.000000000000000000
@@ -2935,7 +2765,7 @@ object TStyleContainer
Size.Height = 103.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 57
+ TabOrder = 55
object TRectangle
StyleName = 'bgrectangle'
Align = Contents
@@ -3034,4 +2864,1226 @@ object TStyleContainer
end
end
end
+ object TLayout
+ StyleName = 'panelstyle'
+ Align = Center
+ Size.Width = 192.000000000000000000
+ Size.Height = 164.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 56
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ Size.Width = 192.000000000000000000
+ Size.Height = 164.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarminierrorstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 57
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFFE22A2A
+ Locked = True
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFFE22A2A
+ Locked = True
+ HitTest = False
+ Position.Y = 35.399997711181640000
+ Size.Width = 66.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarministyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 47
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2A82E2
+ Locked = True
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2A82E2
+ Locked = True
+ HitTest = False
+ Position.Y = 35.399997711181640000
+ Size.Width = 66.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'comboeditstyle'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 52
+ object TBrushObject
+ StyleName = 'foreground'
+ end
+ object TFontObject
+ StyleName = 'font'
+ Font.Size = 13.000000000000000000
+ end
+ object TLayout
+ StyleName = 'background'
+ Align = Contents
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = Client
+ Fill.Color = xFF202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF202020
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TColorAnimation
+ StyleName = 'ColorAnimation1Style'
+ Duration = 0.100000001490116100
+ Inverse = True
+ PropertyName = 'Stroke.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'ColorAnimation2Style'
+ Duration = 0.100000001490116100
+ Inverse = True
+ PropertyName = 'Stroke.Color'
+ StartValue = xFF404040
+ StopValue = xFF2A82E2
+ Trigger = 'IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsMouseOver=true;IsFocused=false'
+ end
+ object TLayout
+ StyleName = 'arrow'
+ Align = FitRight
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 75.924545288085940000
+ Position.Y = 1.000000000000000000
+ Size.Width = 23.075454711914060000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = Contents
+ Corners = [TopRight, BottomRight]
+ Fill.Color = xFF303030
+ HitTest = False
+ Size.Width = 23.075454711914060000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TColorAnimation
+ StyleName = 'ColorAnimation1Style'
+ Duration = 0.100000001490116100
+ Inverse = True
+ PropertyName = 'Fill.Color'
+ StartValue = xFF303030
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'ColorAnimation2Style'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF17579C
+ Trigger = 'IsFocused=true;IsMouseOver=true'
+ end
+ end
+ object TLayout
+ StyleName = 'Layout1'
+ Align = Center
+ Margins.Left = 1.000000000000000000
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'Path1'
+ Align = Client
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ end
+ end
+ object TBrushObject
+ StyleName = 'selection'
+ Brush.Color = x962A82E2
+ end
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 30.000000000000000000
+ Margins.Bottom = 2.000000000000000000
+ Size.Width = 68.000000000000000000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ end
+ end
+ object TLayout
+ StyleName = 'menubaritemstyle'
+ Align = Center
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 37
+ object TRectangle
+ Align = Contents
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Opacity = 0.000099999997473788
+ Size.Width = 73.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ Duration = 0.000200000009499490
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsSelected=true'
+ TriggerInverse = 'IsSelected=false'
+ end
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Opacity = 0.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ Duration = 0.000200000009499490
+ Inverse = True
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsMouseOver=true'
+ TriggerInverse = 'IsMouseOver=false'
+ end
+ end
+ object TLayout
+ StyleName = 'glyph'
+ Align = Left
+ Size.Width = 25.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ object TLayout
+ StyleName = 'checkmark'
+ Align = Contents
+ Opacity = 0.001000000047497451
+ Size.Width = 25.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ Align = Center
+ Data.Path = {
+ 070000000000000056D9524391AE2C4301000000927666436502164301000000
+ 9F3983432B7C3C43010000009E9AA64382D2B442010000006F1CB04375A4D142
+ 0100000026DF8243263F67430300000056D9524391AE2C43}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 11.000000000000000000
+ Size.Height = 11.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TFloatAnimation
+ Duration = 0.100000001490116100
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsChecked=true'
+ TriggerInverse = 'IsChecked=false'
+ end
+ end
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 3.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Align = Right
+ Position.X = 6.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TImage
+ StyleName = 'bitmap'
+ MultiResBitmap = <
+ item
+ end>
+ Align = Contents
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 2.000000000000000000
+ Size.Width = 21.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Left
+ Locked = True
+ HitTest = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 33.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TText
+ StyleName = 'shortcut'
+ Align = Right
+ Locked = True
+ HitTest = False
+ Margins.Left = 12.000000000000000000
+ Margins.Right = 6.000000000000000000
+ Position.X = -3.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TLayout
+ StyleName = 'submark'
+ Align = Right
+ Position.X = 53.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ Align = Center
+ Data.Path = {
+ 0400000000000000000000000000000001000000000000000000803F01000000
+ 0000803F0000003F030000000000000000000000}
+ Fill.Color = claWhite
+ Locked = True
+ HitTest = False
+ Size.Width = 7.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ object TRectangle
+ StyleName = 'menubarstyle'
+ Align = Center
+ ClipChildren = True
+ Fill.Kind = None
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Visible = False
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TRectangle
+ Align = Client
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -1.000000000000000000
+ Margins.Top = -1.000000000000000000
+ Margins.Right = -1.000000000000000000
+ Size.Width = 52.000000000000000000
+ Size.Height = 51.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 48.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ end
+ end
+ object TLayout
+ StyleName = 'menuitemstyle'
+ Align = Center
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 38
+ object TRectangle
+ Align = Contents
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Opacity = 0.000099999997473788
+ Size.Width = 73.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ Duration = 0.000200000009499490
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsSelected=true'
+ TriggerInverse = 'IsSelected=false'
+ end
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Opacity = 0.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ Duration = 0.000200000009499490
+ Inverse = True
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsMouseOver=true'
+ TriggerInverse = 'IsMouseOver=false'
+ end
+ end
+ object TLayout
+ StyleName = 'glyph'
+ Align = Left
+ Size.Width = 25.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ object TLayout
+ StyleName = 'checkmark'
+ Align = Contents
+ Opacity = 0.001000000047497451
+ Size.Width = 25.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ Align = Center
+ Data.Path = {
+ 070000000000000056D9524391AE2C4301000000927666436502164301000000
+ 9F3983432B7C3C43010000009E9AA64382D2B442010000006F1CB04375A4D142
+ 0100000026DF8243263F67430300000056D9524391AE2C43}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 11.000000000000000000
+ Size.Height = 11.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TFloatAnimation
+ Duration = 0.100000001490116100
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsChecked=true'
+ TriggerInverse = 'IsChecked=false'
+ end
+ end
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 3.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Align = Left
+ Position.X = 1.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TImage
+ StyleName = 'bitmap'
+ MultiResBitmap = <
+ item
+ end>
+ Align = Left
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 2.000000000000000000
+ Position.X = 2.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 21.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Left
+ Locked = True
+ HitTest = False
+ Margins.Left = 8.000000000000000000
+ Margins.Right = 8.000000000000000000
+ Position.X = 33.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TText
+ StyleName = 'shortcut'
+ Align = Right
+ Locked = True
+ HitTest = False
+ Margins.Left = 12.000000000000000000
+ Margins.Right = 6.000000000000000000
+ Position.X = -3.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ TextSettings.HorzAlign = Leading
+ end
+ object TLayout
+ StyleName = 'submark'
+ Align = Right
+ Position.X = 53.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 26.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ Align = Center
+ Data.Path = {
+ 0400000000000000000000000000000001000000000000000000803F01000000
+ 0000803F0000003F030000000000000000000000}
+ Fill.Color = claWhite
+ Locked = True
+ HitTest = False
+ Size.Width = 7.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'menuseparatorstyle'
+ Align = Center
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 39
+ object TLine
+ Align = Top
+ LineType = Top
+ Margins.Left = 3.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 3.000000000000000000
+ Position.X = 3.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 44.000000000000000000
+ Size.Height = 1.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ end
+ object TRectangle
+ StyleName = 'menuviewstyle'
+ Align = Center
+ Fill.Color = xFF202020
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ Visible = False
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TRectangle
+ Align = Client
+ Fill.Color = xFF202020
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TShadowEffect
+ Distance = 3.000000000000000000
+ Direction = 90.000000000000000000
+ Softness = 0.500000000000000000
+ Opacity = 0.500000000000000000
+ ShadowColor = claBlack
+ end
+ end
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 48.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ end
+ end
+ object TLayout
+ StyleName = 'treeviewexpanderbuttonstyle'
+ Align = Center
+ Margins.Top = 1.000000000000000000
+ Size.Width = 22.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 60
+ object TPath
+ StyleName = 'Path1'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ RotationAngle = -90.000000000000000000
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ StyleName = 'FloatAnimation1Style'
+ Duration = 0.000000000000000000
+ Interpolation = Circular
+ PropertyName = 'RotationAngle'
+ StartValue = -90.000000000000000000
+ StopValue = 0.000000000000000000
+ Trigger = 'IsExpanded=true'
+ TriggerInverse = 'IsExpanded=false'
+ end
+ end
+ end
+ object TRectangle
+ StyleName = 'treeviewitemstyle'
+ Align = Center
+ Fill.Kind = None
+ HitTest = False
+ Sides = [Bottom]
+ Size.Width = 87.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ Stroke.Join = Round
+ Visible = False
+ object TSpeedButton
+ StyleName = 'button'
+ Align = Left
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'treeviewexpanderbuttonstyle'
+ end
+ object TLayout
+ Align = Contents
+ Margins.Left = 20.000000000000000000
+ Size.Width = 67.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ object TCheckBox
+ StyleName = 'check'
+ Align = Left
+ CanFocus = False
+ DisableFocusEffect = True
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Align = Left
+ Position.X = 22.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 38.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ Locked = True
+ HitTest = False
+ Size.Width = 47.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.WordWrap = False
+ TextSettings.HorzAlign = Leading
+ end
+ end
+ object TRectangle
+ Align = Contents
+ Fill.Kind = None
+ HitTest = False
+ Margins.Bottom = 1.000000000000000000
+ Sides = [Left]
+ Size.Width = 87.000000000000000000
+ Size.Height = 39.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF2A82E2
+ Stroke.Thickness = 2.000000000000000000
+ end
+ end
+ object TLayout
+ StyleName = 'treeviewstyle'
+ Align = Center
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 65
+ object TBrushObject
+ StyleName = 'AlternatingRowBackground'
+ Brush.Color = x0FFFFFFF
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Padding.Left = 1.000000000000000000
+ Padding.Right = 1.000000000000000000
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ ClipChildren = True
+ Margins.Top = 1.000000000000000000
+ Size.Width = 205.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'selection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ object TRectangle
+ StyleName = 'focusedselection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Stroke.Dash = Dot
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ object TScrollBar
+ StyleName = 'vscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 208.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 241.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TScrollBar
+ StyleName = 'hscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 243.000000000000000000
+ Size.Width = 223.000000000000000000
+ Size.Height = 16.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TSmallScrollBar
+ StyleName = 'vsmallscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 99.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ object TSmallScrollBar
+ StyleName = 'hsmallscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 2.000000000000000000
+ Position.Y = 113.000000000000000000
+ Size.Width = 150.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarfinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 64
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 54.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 34.399997711181640000
+ Size.Width = 64.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarminifinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 75
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Position.Y = 35.399997711181640000
+ Size.Width = 66.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'arrowdowntoolbutton'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 1
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Corners = [TopLeft, BottomLeft]
+ Fill.Color = x00202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = x00202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation2'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TPath
+ StyleName = 'path'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ Visible = False
+ end
+ end
+ object TLayout
+ StyleName = 'popupboxstyle'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 49
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TColorAnimation
+ StyleName = 'ColorAnimation1Style'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false'
+ end
+ object TColorAnimation
+ StyleName = 'ColorAnimation2Style'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF2A82E2
+ Trigger = 'IsMouseOver=true;IsPressed=true;'
+ TriggerInverse = 'IsMouseOver=true;IsPressed=false'
+ end
+ end
+ object TLayout
+ Align = FitRight
+ Position.X = 75.000000000000000000
+ Size.Width = 25.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ Align = Center
+ Data.Path = {
+ 0500000000000000000000000000803F010000000000803F0000803F01000000
+ 0000003F0000000001000000000000000000803F030000000000000000000000}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Top = -7.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TPath
+ Align = Center
+ Data.Path = {
+ 04000000000000000000000000000000010000000000803F0000000001000000
+ 0000003F0000803F030000000000000000000000}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Top = 6.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ end
+ end
end
diff --git a/styles/AErender Modern Animated/AERFMXStyleWindowsAnimated.style b/styles/AErender Modern Animated/AERFMXStyleWindowsAnimated.style
index 74bbe0a..420732c 100644
--- a/styles/AErender Modern Animated/AERFMXStyleWindowsAnimated.style
+++ b/styles/AErender Modern Animated/AERFMXStyleWindowsAnimated.style
@@ -16,7 +16,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 1
+ TabOrder = 2
object TRectangle
StyleName = 'background'
Align = Client
@@ -73,7 +73,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 2
+ TabOrder = 3
object TBrushObject
StyleName = 'foreground'
end
@@ -154,7 +154,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 3
+ TabOrder = 4
object TText
StyleName = 'text'
Align = Contents
@@ -172,7 +172,7 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 4
+ TabOrder = 5
object TRectangle
StyleName = 'background'
Align = Contents
@@ -209,7 +209,7 @@ object TStyleContainer
Size.Height = 100.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 5
+ TabOrder = 6
FixedHeight = 17
object TRectangle
StyleName = 'htrack'
@@ -324,7 +324,7 @@ object TStyleContainer
Size.Height = 38.333343505859380000
Size.PlatformDefault = False
Visible = False
- TabOrder = 6
+ TabOrder = 7
object TLayout
Align = Left
Size.Width = 18.000000000000000000
@@ -435,7 +435,7 @@ object TStyleContainer
StyleName = 'scrollbarbottombutton'
Align = Center
Visible = False
- TabOrder = 7
+ TabOrder = 8
object TRectangle
StyleName = 'background'
Align = Client
@@ -491,7 +491,7 @@ object TStyleContainer
StyleName = 'scrollbarleftbutton'
Align = Center
Visible = False
- TabOrder = 8
+ TabOrder = 9
object TRectangle
StyleName = 'background'
Align = Client
@@ -548,7 +548,7 @@ object TStyleContainer
StyleName = 'scrollbarrightbutton'
Align = Center
Visible = False
- TabOrder = 9
+ TabOrder = 10
object TRectangle
StyleName = 'background'
Align = Client
@@ -605,7 +605,7 @@ object TStyleContainer
StyleName = 'scrollbartopbutton'
Align = Center
Visible = False
- TabOrder = 10
+ TabOrder = 11
object TRectangle
StyleName = 'background'
Align = Client
@@ -662,7 +662,7 @@ object TStyleContainer
StyleName = 'scrollbarstyle'
Align = Center
Visible = False
- TabOrder = 11
+ TabOrder = 12
object TButton
StyleName = 'leftbutton'
Align = Left
@@ -760,7 +760,7 @@ object TStyleContainer
Size.Width = 100.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
- TabOrder = 12
+ TabOrder = 13
TrackingThumbScale = 1.000000000000000000
Visible = False
Fill.Color = xFF202020
@@ -779,17 +779,17 @@ object TStyleContainer
object TLayout
StyleName = 'spinboxstyle'
Align = Center
- Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Width = 138.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 13
+ TabOrder = 14
object TRectangle
StyleName = 'background'
Align = Contents
Fill.Color = xFF202020
- Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Width = 138.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
object TColorAnimation
@@ -819,13 +819,13 @@ object TStyleContainer
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Size.Width = 66.200073242187500000
- Size.Height = 17.000000000000000000
+ Size.Width = 86.000000000000000000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
end
object TButton
StyleName = 'minusbutton'
- Align = FitLeft
+ Align = Left
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
@@ -834,55 +834,47 @@ object TStyleContainer
Margins.Bottom = 2.000000000000000000
Position.X = 2.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 16.999954223632810000
- Size.Height = 17.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
05000000000000000000803F00000000010000000000803F0000803F01000000
000000000000003F010000000000803F00000000030000000000803F00000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999954223632813000
- Size.Height = 5.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
end
object TButton
StyleName = 'plusbutton'
- Align = FitRight
+ Align = Right
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Position.X = 93.200027465820310000
+ Position.X = 116.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 16.999969482421880000
- Size.Height = 17.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
0400000000000000000000000000000001000000000000000000803F01000000
0000803F0000003F030000000000000000000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999969482421875000
- Size.Height = 5.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
@@ -895,7 +887,7 @@ object TStyleContainer
Size.Height = 100.999992370605500000
Size.PlatformDefault = False
Visible = False
- TabOrder = 14
+ TabOrder = 15
object TRectangle
StyleName = 'background'
Align = Contents
@@ -938,7 +930,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 15
+ TabOrder = 16
object TRectangle
StyleName = 'top'
Align = Contents
@@ -1042,7 +1034,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 16
+ TabOrder = 17
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = xFF2C2C2C
@@ -1152,7 +1144,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 17
+ TabOrder = 18
object TText
StyleName = 'text'
Align = Client
@@ -1175,7 +1167,7 @@ object TStyleContainer
Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 18
+ TabOrder = 19
object TGlyph
StyleName = 'glyphstyle'
Margins.Left = 2.000000000000000000
@@ -1220,7 +1212,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 19
+ TabOrder = 20
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1254,7 +1246,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 20
+ TabOrder = 21
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = x32787878
@@ -1375,7 +1367,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 21
+ TabOrder = 22
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1427,7 +1419,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 22
+ TabOrder = 23
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -1492,7 +1484,7 @@ object TStyleContainer
Size.Height = 126.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 23
+ TabOrder = 24
object TLayout
StyleName = 'htrack'
Align = Contents
@@ -1534,7 +1526,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 24
+ TabOrder = 25
object TRectangle
Align = Contents
Fill.Color = xFF2A82E2
@@ -1729,7 +1721,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 26
+ TabOrder = 39
object TRectangle
Align = Contents
Fill.Color = xFF2A82E2
@@ -1892,7 +1884,7 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 28
+ TabOrder = 41
object TLine
Align = Top
LineType = Top
@@ -1948,7 +1940,7 @@ object TStyleContainer
StyleName = 'imagecellstyle'
Align = Center
Visible = False
- TabOrder = 29
+ TabOrder = 42
object TImage
StyleName = 'image'
MultiResBitmap = <
@@ -1970,7 +1962,7 @@ object TStyleContainer
StyleName = 'popupcellstyle'
Align = Center
Visible = False
- TabOrder = 30
+ TabOrder = 43
object TLayout
Align = Right
Position.X = 35.000000000000000000
@@ -2023,7 +2015,7 @@ object TStyleContainer
StyleName = 'textcellstyle'
Align = Center
Visible = False
- TabOrder = 31
+ TabOrder = 44
object TLayout
StyleName = 'content'
Align = Contents
@@ -2054,7 +2046,7 @@ object TStyleContainer
Size.Height = 122.199996948242200000
Size.PlatformDefault = False
Visible = False
- TabOrder = 32
+ TabOrder = 45
object TBrushObject
StyleName = 'foreground'
end
@@ -2164,7 +2156,7 @@ object TStyleContainer
Size.Height = 32.400001525878910000
Size.PlatformDefault = False
Visible = False
- TabOrder = 33
+ TabOrder = 46
object TText
StyleName = 'text'
Align = Contents
@@ -2202,7 +2194,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 34
+ TabOrder = 47
object TRectangle
StyleName = 'Rectangle1'
Align = Center
@@ -2313,7 +2305,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 35
+ TabOrder = 48
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -2375,7 +2367,7 @@ object TStyleContainer
StyleName = 'smallscrollbarstyle'
Align = Center
Visible = False
- TabOrder = 36
+ TabOrder = 50
object TTrack
StyleName = 'htrack'
Align = Client
@@ -2404,7 +2396,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 37
+ TabOrder = 51
object TBrushObject
StyleName = 'foreground'
end
@@ -2508,7 +2500,7 @@ object TStyleContainer
Size.Height = 96.750000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 38
+ TabOrder = 52
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -2564,7 +2556,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 39
+ TabOrder = 53
object TRectangle
StyleName = 'closebutton'
Align = Client
@@ -2620,7 +2612,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 40
+ TabOrder = 54
object TRectangle
StyleName = 'maxbutton'
Align = Client
@@ -2671,7 +2663,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 41
+ TabOrder = 56
object TRectangle
StyleName = 'minbutton'
Align = Client
@@ -2723,7 +2715,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 42
+ TabOrder = 57
object TRectangle
StyleName = 'resbutton'
Align = Client
@@ -2769,13 +2761,13 @@ object TStyleContainer
end
end
object TLayout
- StyleName = 'windowborderstyle'
+ StyleName = 'toolwindowstyle'
Align = Center
Size.Width = 351.666687011718800000
Size.Height = 179.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 43
+ TabOrder = 62
object TRectangle
StyleName = 'mask'
Align = Contents
@@ -2790,9 +2782,9 @@ object TStyleContainer
StyleName = 'left'
Align = MostLeft
Locked = True
- Position.Y = 30.000000000000000000
+ Position.Y = 25.000000000000000000
Size.Width = 5.000000000000000000
- Size.Height = 149.000000000000000000
+ Size.Height = 154.000000000000000000
Size.PlatformDefault = False
object TRectangle
Align = MostLeft
@@ -2800,7 +2792,7 @@ object TStyleContainer
HitTest = False
Sides = [Left, Right]
Size.Width = 5.000000000000000000
- Size.Height = 144.000000000000000000
+ Size.Height = 149.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
end
@@ -2810,7 +2802,7 @@ object TStyleContainer
EnableDragHighlight = False
Fill.Color = xFF202020
HitTest = False
- Position.Y = 144.000000000000000000
+ Position.Y = 149.000000000000000000
Sides = [Left, Bottom]
Size.Width = 5.000000000000000000
Size.Height = 5.000000000000000000
@@ -2841,9 +2833,9 @@ object TStyleContainer
Align = MostRight
Locked = True
Position.X = 346.666687011718800000
- Position.Y = 30.000000000000000000
+ Position.Y = 25.000000000000000000
Size.Width = 5.000000000000000000
- Size.Height = 149.000000000000000000
+ Size.Height = 154.000000000000000000
Size.PlatformDefault = False
object TRectangle
Align = MostRight
@@ -2851,7 +2843,7 @@ object TStyleContainer
HitTest = False
Sides = [Left, Right]
Size.Width = 5.000000000000000000
- Size.Height = 144.000000000000000000
+ Size.Height = 149.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
end
@@ -2861,7 +2853,7 @@ object TStyleContainer
EnableDragHighlight = False
Fill.Color = xFF202020
HitTest = False
- Position.Y = 144.000000000000000000
+ Position.Y = 149.000000000000000000
Sides = [Bottom, Right]
Size.Width = 5.000000000000000000
Size.Height = 5.000000000000000000
@@ -2892,7 +2884,7 @@ object TStyleContainer
Locked = True
HitTest = False
Size.Width = 351.666687011718800000
- Size.Height = 30.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
object TLayout
@@ -2901,7 +2893,7 @@ object TStyleContainer
Locked = True
HitTest = True
Size.Width = 351.666687011718800000
- Size.Height = 30.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
end
object TLayout
@@ -2912,22 +2904,13 @@ object TStyleContainer
Margins.Right = 1.000000000000000000
Margins.Bottom = 1.000000000000000000
Size.Width = 349.666687011718800000
- Size.Height = 28.000000000000000000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
object TLayout
Align = Left
Locked = True
Size.Width = 9.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- StyleName = 'icon'
- Locked = True
- Position.X = 9.000000000000000000
- Position.Y = 7.000000000000000000
- Size.Width = 25.000000000000000000
- Size.Height = 21.000000000000000000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
end
object TLayout
@@ -2935,55 +2918,25 @@ object TStyleContainer
Align = Client
Locked = True
Size.Width = 340.666687011718800000
- Size.Height = 28.000000000000000000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
object TSpeedButton
StyleName = 'close'
Align = Right
Locked = True
- Position.X = 290.666687011718800000
- Size.Width = 50.000000000000000000
- Size.Height = 28.000000000000000000
+ Position.X = 315.666687011718800000
+ Size.Width = 25.000000000000000000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'closebuttonstyle'
end
- object TSpeedButton
- StyleName = 'max'
- Align = Right
- Locked = True
- Position.X = 260.666687011718800000
- Size.Width = 30.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'maxbuttonstyle'
- end
- object TSpeedButton
- StyleName = 'res'
- Align = Right
- Locked = True
- Position.X = 230.666687011718800000
- Size.Width = 30.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'resbuttonstyle'
- end
- object TSpeedButton
- StyleName = 'min'
- Align = Right
- Locked = True
- Position.X = 200.666687011718800000
- Size.Width = 30.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'minbuttonstyle'
- end
object TText
StyleName = 'title'
Align = Client
Locked = True
HitTest = False
- Size.Width = 200.666687011718800000
- Size.Height = 28.000000000000000000
+ Size.Width = 315.666687011718800000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
Text = 'Title'
TextSettings.FontColor = claWhite
@@ -2997,7 +2950,7 @@ object TStyleContainer
Locked = True
HitTest = True
Size.Width = 341.666687011718800000
- Size.Height = 144.000000000000000000
+ Size.Height = 149.000000000000000000
Size.PlatformDefault = False
end
object TLayout
@@ -3013,7 +2966,6 @@ object TStyleContainer
StyleName = 'rect'
Align = Bottom
Fill.Color = xFF202020
- HitTest = False
Sides = [Top, Bottom]
Size.Width = 341.666687011718800000
Size.Height = 5.000000000000000000
@@ -3023,285 +2975,71 @@ object TStyleContainer
end
end
object TLayout
- StyleName = 'toolwindowstyle'
+ StyleName = 'radiobuttonstyle'
Align = Center
- Size.Width = 351.666687011718800000
- Size.Height = 179.000000000000000000
+ Size.Width = 121.000000000000000000
+ Size.Height = 21.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 44
- object TRectangle
- StyleName = 'mask'
- Align = Contents
- Fill.Color = xFF101010
- Size.Width = 351.666687011718800000
- Size.Height = 179.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- Visible = False
- end
+ TabOrder = 64
object TLayout
- StyleName = 'left'
- Align = MostLeft
- Locked = True
- Position.Y = 25.000000000000000000
- Size.Width = 5.000000000000000000
- Size.Height = 154.000000000000000000
+ Align = Left
+ Size.Width = 21.000000000000000000
+ Size.Height = 21.000000000000000000
Size.PlatformDefault = False
- object TRectangle
- Align = MostLeft
- Fill.Color = xFF202020
- HitTest = False
- Sides = [Left, Right]
- Size.Width = 5.000000000000000000
- Size.Height = 149.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- end
- object TRectangle
- StyleName = 'Rectangle1'
- Align = MostBottom
- EnableDragHighlight = False
+ object TEllipse
+ StyleName = 'background'
+ Align = Center
Fill.Color = xFF202020
+ Locked = True
HitTest = False
- Position.Y = 149.000000000000000000
- Sides = [Left, Bottom]
- Size.Width = 5.000000000000000000
- Size.Height = 5.000000000000000000
+ Size.Width = 15.000000000000000000
+ Size.Height = 15.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
- object TLayout
- StyleName = 'Layout3'
- Align = MostRight
- Position.X = 4.000000000000000000
- Size.Width = 1.000000000000000000
- Size.Height = 5.000000000000000000
+ object TEllipse
+ StyleName = 'checkmark'
+ Align = Client
+ Fill.Color = xFF2A82E2
+ Locked = True
+ HitTest = False
+ Opacity = 0.000000000000000000
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 2.000000000000000000
+ Size.Width = 11.000000000000000000
+ Size.Height = 11.000000000000000000
Size.PlatformDefault = False
- object TRectangle
- StyleName = 'Rectangle1'
- Align = Top
- Fill.Color = xFF151515
- HitTest = False
- Size.Width = 1.000000000000000000
- Size.Height = 1.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
+ Stroke.Kind = None
+ object TFloatAnimation
+ StyleName = 'opacityCheckmarkAnimation1'
+ Duration = 0.100000001490116100
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsChecked=true'
+ TriggerInverse = 'IsChecked=false'
end
- end
- end
- end
- object TLayout
- StyleName = 'right'
- Align = MostRight
- Locked = True
- Position.X = 346.666687011718800000
- Position.Y = 25.000000000000000000
- Size.Width = 5.000000000000000000
- Size.Height = 154.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- Align = MostRight
- Fill.Color = xFF202020
- HitTest = False
- Sides = [Left, Right]
- Size.Width = 5.000000000000000000
- Size.Height = 149.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- end
- object TRectangle
- StyleName = 'Rectangle1'
- Align = MostBottom
- EnableDragHighlight = False
- Fill.Color = xFF202020
- HitTest = False
- Position.Y = 149.000000000000000000
- Sides = [Bottom, Right]
- Size.Width = 5.000000000000000000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- object TLayout
- StyleName = 'Layout3'
- Align = MostLeft
- Size.Width = 1.000000000000000000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- StyleName = 'Rectangle1'
- Align = Top
- Fill.Color = xFF151515
- HitTest = False
- Size.Width = 1.000000000000000000
- Size.Height = 1.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- end
- end
- object TRectangle
- Align = MostTop
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 351.666687011718800000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- object TLayout
- StyleName = 'caption'
- Align = Contents
- Locked = True
- HitTest = True
- Size.Width = 351.666687011718800000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- Align = Client
- Locked = True
- Margins.Left = 1.000000000000000000
- Margins.Top = 1.000000000000000000
- Margins.Right = 1.000000000000000000
- Margins.Bottom = 1.000000000000000000
- Size.Width = 349.666687011718800000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- object TLayout
- Align = Left
- Locked = True
- Size.Width = 9.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- StyleName = 'sysbtns'
- Align = Client
- Locked = True
- Size.Width = 340.666687011718800000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- object TSpeedButton
- StyleName = 'close'
- Align = Right
- Locked = True
- Position.X = 315.666687011718800000
- Size.Width = 25.000000000000000000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'closebuttonstyle'
- end
- object TText
- StyleName = 'title'
- Align = Client
- Locked = True
- HitTest = False
- Size.Width = 315.666687011718800000
- Size.Height = 23.000000000000000000
- Size.PlatformDefault = False
- Text = 'Title'
- TextSettings.FontColor = claWhite
- end
- end
- end
- end
- object TLayout
- StyleName = 'client'
- Align = Client
- Locked = True
- HitTest = True
- Size.Width = 341.666687011718800000
- Size.Height = 149.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- StyleName = 'bottom'
- Align = Bottom
- Locked = True
- Position.X = 5.000000000000000000
- Position.Y = 174.000000000000000000
- Size.Width = 341.666687011718800000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- StyleName = 'rect'
- Align = Bottom
- Fill.Color = xFF202020
- Sides = [Top, Bottom]
- Size.Width = 341.666687011718800000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- end
- end
- end
- object TLayout
- StyleName = 'radiobuttonstyle'
- Align = Center
- Size.Width = 121.000000000000000000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- TabOrder = 46
- object TLayout
- Align = Left
- Size.Width = 21.000000000000000000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- object TEllipse
- StyleName = 'background'
- Align = Center
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 15.000000000000000000
- Size.Height = 15.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- object TEllipse
- StyleName = 'checkmark'
- Align = Client
- Fill.Color = xFF2A82E2
- Locked = True
- HitTest = False
- Opacity = 0.000000000000000000
- Margins.Left = 2.000000000000000000
- Margins.Top = 2.000000000000000000
- Margins.Right = 2.000000000000000000
- Margins.Bottom = 2.000000000000000000
- Size.Width = 11.000000000000000000
- Size.Height = 11.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- object TFloatAnimation
- StyleName = 'opacityCheckmarkAnimation1'
- Duration = 0.100000001490116100
- PropertyName = 'Opacity'
- StartValue = 0.000000000000000000
- StopValue = 1.000000000000000000
- Trigger = 'IsChecked=true'
- TriggerInverse = 'IsChecked=false'
- end
- end
- object TColorAnimation
- StyleName = 'radiobuttonColorAnimation1'
- Duration = 0.100000001490116100
- Inverse = True
- PropertyName = 'Fill.Color'
- StartValue = xFF202020
- StopValue = xFF404040
- Trigger = 'IsMouseOver=true'
- TriggerInverse = 'IsMouseOver=false'
- end
- object TColorAnimation
- StyleName = 'ColorAnimation1Style'
- Duration = 0.100000001490116100
- PropertyName = 'Stroke.Color'
- StartValue = xFF151515
- StopValue = xFF2A82E2
- Trigger = 'IsChecked=true'
- TriggerInverse = 'IsChecked=false'
+ end
+ object TColorAnimation
+ StyleName = 'radiobuttonColorAnimation1'
+ Duration = 0.100000001490116100
+ Inverse = True
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true'
+ TriggerInverse = 'IsMouseOver=false'
+ end
+ object TColorAnimation
+ StyleName = 'ColorAnimation1Style'
+ Duration = 0.100000001490116100
+ PropertyName = 'Stroke.Color'
+ StartValue = xFF151515
+ StopValue = xFF2A82E2
+ Trigger = 'IsChecked=true'
+ TriggerInverse = 'IsChecked=false'
end
end
end
@@ -3324,7 +3062,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 48
+ TabOrder = 66
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -3399,7 +3137,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 50
+ TabOrder = 70
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -3473,7 +3211,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 52
+ TabOrder = 74
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -3541,87 +3279,33 @@ object TStyleContainer
end
end
object TLayout
- StyleName = 'progressbarministyle'
+ StyleName = 'comboeditstyle'
Align = Center
- Size.Width = 66.599998474121090000
- Size.Height = 56.399997711181640000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 55
- object TRectangle
- StyleName = 'htrack'
+ TabOrder = 77
+ object TBrushObject
+ StyleName = 'foreground'
+ end
+ object TFontObject
+ StyleName = 'font'
+ Font.Size = 13.000000000000000000
+ end
+ object TLayout
+ StyleName = 'background'
Align = Contents
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 66.599998474121090000
- Size.Height = 56.399997711181640000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
- Stroke.Kind = None
object TRectangle
- StyleName = 'hindicator'
- Align = Left
- Fill.Color = xFF2A82E2
- Locked = True
+ StyleName = 'Rectangle1'
+ Align = Client
+ Fill.Color = xFF202020
HitTest = False
- Size.Width = 50.000000000000000000
- Size.Height = 56.399997711181640000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- object TRectangle
- StyleName = 'vtrack'
- Align = Contents
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 66.599998474121090000
- Size.Height = 56.399997711181640000
- Size.PlatformDefault = False
- Stroke.Kind = None
- object TRectangle
- StyleName = 'vindicator'
- Align = Bottom
- Fill.Color = xFF2A82E2
- Locked = True
- HitTest = False
- Position.Y = 35.399997711181640000
- Size.Width = 66.599998474121090000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- end
- object TLayout
- StyleName = 'comboeditstyle'
- Align = Center
- Size.Width = 100.000000000000000000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- TabOrder = 58
- object TBrushObject
- StyleName = 'foreground'
- end
- object TFontObject
- StyleName = 'font'
- Font.Size = 13.000000000000000000
- end
- object TLayout
- StyleName = 'background'
- Align = Contents
- Size.Width = 100.000000000000000000
- Size.Height = 25.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- StyleName = 'Rectangle1'
- Align = Client
- Fill.Color = xFF202020
- HitTest = False
- Size.Width = 100.000000000000000000
- Size.Height = 25.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF202020
object TColorAnimation
@@ -3727,6 +3411,7 @@ object TStyleContainer
StyleName = 'aniindicatorstyle'
Align = Center
Visible = False
+ TabOrder = 81
object TArc
StyleName = 'Arc'
Align = Contents
@@ -3736,7 +3421,8 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Stroke.Color = claWhite
- Stroke.Thickness = 2.000000000000000000
+ Stroke.Thickness = 4.000000000000000000
+ Stroke.Cap = Round
EndAngle = -90.000000000000000000
object TFloatAnimation
StyleName = 'ani'
@@ -3758,7 +3444,7 @@ object TStyleContainer
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 63
+ TabOrder = 84
object TPath
StyleName = 'Path1'
Align = Center
@@ -3791,7 +3477,7 @@ object TStyleContainer
Size.Height = 33.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 67
+ TabOrder = 90
object TLayout
Align = Left
Size.Width = 24.000000000000000000
@@ -3864,6 +3550,7 @@ object TStyleContainer
Size.Height = 164.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 96
object TRectangle
StyleName = 'background'
Align = Contents
@@ -3881,7 +3568,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 27
+ TabOrder = 40
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -3935,7 +3622,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 25
+ TabOrder = 26
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -3989,7 +3676,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 62
+ TabOrder = 63
object TRectangle
StyleName = 'bgrectangle'
Align = Contents
@@ -4088,6 +3775,7 @@ object TStyleContainer
Size.Height = 2.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 65
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -4126,6 +3814,7 @@ object TStyleContainer
Size.Height = 96.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 73
object TRectangle
StyleName = 'background'
Align = Client
@@ -4200,4 +3889,745 @@ object TStyleContainer
end
end
end
+ object TLayout
+ StyleName = 'treeviewexpanderbuttonstyle'
+ Align = Center
+ Margins.Top = 1.000000000000000000
+ Size.Width = 22.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 76
+ object TPath
+ StyleName = 'Path1'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ RotationAngle = -90.000000000000000000
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ StyleName = 'FloatAnimation1Style'
+ Duration = 0.000000000000000000
+ Interpolation = Circular
+ PropertyName = 'RotationAngle'
+ StartValue = -90.000000000000000000
+ StopValue = 0.000000000000000000
+ Trigger = 'IsExpanded=true'
+ TriggerInverse = 'IsExpanded=false'
+ end
+ end
+ end
+ object TRectangle
+ StyleName = 'treeviewitemstyle'
+ Align = Center
+ Fill.Kind = None
+ HitTest = False
+ Sides = [Bottom]
+ Size.Width = 87.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ Visible = False
+ object TSpeedButton
+ StyleName = 'button'
+ Align = Left
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'treeviewexpanderbuttonstyle'
+ end
+ object TLayout
+ Align = Contents
+ Margins.Left = 20.000000000000000000
+ Size.Width = 67.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ object TCheckBox
+ StyleName = 'check'
+ Align = Left
+ CanFocus = False
+ DisableFocusEffect = True
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Align = Left
+ Position.X = 22.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 38.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ Locked = True
+ HitTest = False
+ Size.Width = 47.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.WordWrap = False
+ TextSettings.HorzAlign = Leading
+ end
+ end
+ object TRectangle
+ Align = Contents
+ Fill.Kind = None
+ HitTest = False
+ Margins.Bottom = 1.000000000000000000
+ Sides = [Left]
+ Size.Width = 87.000000000000000000
+ Size.Height = 39.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF2A82E2
+ Stroke.Thickness = 2.000000000000000000
+ end
+ end
+ object TLayout
+ StyleName = 'treeviewstyle'
+ Align = Center
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 83
+ object TBrushObject
+ StyleName = 'AlternatingRowBackground'
+ Brush.Color = x0FFFFFFF
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Padding.Left = 1.000000000000000000
+ Padding.Right = 1.000000000000000000
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ ClipChildren = True
+ Margins.Top = 1.000000000000000000
+ Size.Width = 205.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'selection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TRectangle
+ StyleName = 'focusedselection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Stroke.Dash = Dot
+ end
+ end
+ object TScrollBar
+ StyleName = 'vscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 208.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 241.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TScrollBar
+ StyleName = 'hscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 243.000000000000000000
+ Size.Width = 223.000000000000000000
+ Size.Height = 16.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TSmallScrollBar
+ StyleName = 'vsmallscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 99.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ object TSmallScrollBar
+ StyleName = 'hsmallscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 2.000000000000000000
+ Position.Y = 113.000000000000000000
+ Size.Width = 150.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarfinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 69
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 54.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 34.399997711181640000
+ Size.Width = 64.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarminifinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 80
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Position.Y = 35.399997711181640000
+ Size.Width = 66.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'windowborderstyle'
+ Align = Center
+ Size.Width = 351.666687011718800000
+ Size.Height = 179.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 59
+ object TRectangle
+ StyleName = 'mask'
+ Align = Contents
+ Fill.Color = xFF101010
+ Size.Width = 351.666687011718800000
+ Size.Height = 179.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Visible = False
+ end
+ object TLayout
+ StyleName = 'left'
+ Align = MostLeft
+ Locked = True
+ Position.Y = 32.000000000000000000
+ Size.Width = 4.000000000000000000
+ Size.Height = 147.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ Align = MostLeft
+ Fill.Color = xFF202020
+ HitTest = False
+ Sides = [Left, Right]
+ Size.Width = 4.000000000000000000
+ Size.Height = 143.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = MostBottom
+ EnableDragHighlight = False
+ Fill.Color = xFF202020
+ HitTest = False
+ Position.Y = 143.000000000000000000
+ Sides = [Left, Bottom]
+ Size.Width = 4.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'Layout3'
+ Align = MostRight
+ Position.X = 3.000000000000000000
+ Size.Width = 1.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = Top
+ Fill.Color = xFF151515
+ HitTest = False
+ Size.Width = 1.000000000000000000
+ Size.Height = 1.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'right'
+ Align = MostRight
+ Locked = True
+ Position.X = 347.666687011718800000
+ Position.Y = 32.000000000000000000
+ Size.Width = 4.000000000000000000
+ Size.Height = 147.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ Align = MostRight
+ Fill.Color = xFF202020
+ HitTest = False
+ Sides = [Left, Right]
+ Size.Width = 4.000000000000000000
+ Size.Height = 143.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = MostBottom
+ EnableDragHighlight = False
+ Fill.Color = xFF202020
+ HitTest = False
+ Position.Y = 143.000000000000000000
+ Sides = [Bottom, Right]
+ Size.Width = 4.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'Layout3'
+ Align = MostLeft
+ Size.Width = 1.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = Top
+ Fill.Color = xFF151515
+ HitTest = False
+ Size.Width = 1.000000000000000000
+ Size.Height = 1.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ end
+ object TRectangle
+ Align = MostTop
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 351.666687011718800000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'caption'
+ Align = Contents
+ Locked = True
+ HitTest = True
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Size.Width = 343.666687011718800000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ Align = Client
+ Locked = True
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 349.666687011718800000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ object TLayout
+ Align = Left
+ Locked = True
+ Size.Width = 9.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'icon'
+ Locked = True
+ Position.X = 9.000000000000000000
+ Position.Y = 7.000000000000000000
+ Size.Width = 25.000000000000000000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'sysbtns'
+ Align = Client
+ Locked = True
+ Size.Width = 340.666687011718800000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ object TSpeedButton
+ StyleName = 'close'
+ Align = Right
+ Locked = True
+ Position.X = 290.666687011718800000
+ Size.Width = 50.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'closebuttonstyle'
+ end
+ object TSpeedButton
+ StyleName = 'max'
+ Align = Right
+ Locked = True
+ Position.X = 258.666687011718800000
+ Size.Width = 32.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'maxbuttonstyle'
+ end
+ object TSpeedButton
+ StyleName = 'res'
+ Align = Right
+ Locked = True
+ Position.X = 226.666687011718800000
+ Size.Width = 32.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'resbuttonstyle'
+ end
+ object TSpeedButton
+ StyleName = 'min'
+ Align = Right
+ Locked = True
+ Position.X = 194.666687011718800000
+ Size.Width = 32.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'minbuttonstyle'
+ end
+ object TText
+ StyleName = 'title'
+ Align = Client
+ Locked = True
+ HitTest = False
+ Size.Width = 194.666687011718800000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Title'
+ TextSettings.FontColor = claWhite
+ end
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'client'
+ Align = Client
+ Locked = True
+ HitTest = True
+ Size.Width = 343.666687011718800000
+ Size.Height = 143.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'bottom'
+ Align = Bottom
+ Locked = True
+ Position.X = 4.000000000000000000
+ Position.Y = 175.000000000000000000
+ Size.Width = 343.666687011718800000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'rect'
+ Align = Bottom
+ Fill.Color = xFF202020
+ HitTest = False
+ Sides = [Top, Bottom]
+ Size.Width = 343.666687011718800000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'arrowdowntoolbutton'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 1
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = x00202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = x00202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation2'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TPath
+ StyleName = 'path'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ Visible = False
+ end
+ end
+ object TLayout
+ StyleName = 'popupboxstyle'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ TabOrder = 49
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'ColorAnimation1Style'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false'
+ end
+ object TColorAnimation
+ StyleName = 'ColorAnimation2Style'
+ Duration = 0.100000001490116100
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF2A82E2
+ Trigger = 'IsMouseOver=true;IsPressed=true;'
+ TriggerInverse = 'IsMouseOver=true;IsPressed=false'
+ end
+ end
+ object TLayout
+ Align = FitRight
+ Position.X = 75.000000000000000000
+ Size.Width = 25.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ Align = Center
+ Data.Path = {
+ 0500000000000000000000000000803F010000000000803F0000803F01000000
+ 0000003F0000000001000000000000000000803F030000000000000000000000}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Top = -7.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TPath
+ Align = Center
+ Data.Path = {
+ 04000000000000000000000000000000010000000000803F0000000001000000
+ 0000003F0000803F030000000000000000000000}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Top = 6.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 23.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ end
+ end
end
diff --git a/styles/AErender Modern/AERFMXStyleMacOS.style b/styles/AErender Modern/AERFMXStyleMacOS.style
index 69d3dd6..c33b931 100644
--- a/styles/AErender Modern/AERFMXStyleMacOS.style
+++ b/styles/AErender Modern/AERFMXStyleMacOS.style
@@ -16,7 +16,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 2
+ TabOrder = 3
object TRectangle
StyleName = 'background'
Align = Client
@@ -75,7 +75,7 @@ object TStyleContainer
Size.Height = 38.333343505859380000
Size.PlatformDefault = False
Visible = False
- TabOrder = 3
+ TabOrder = 4
object TLayout
Align = Left
Size.Width = 18.000000000000000000
@@ -155,7 +155,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 4
+ TabOrder = 5
object TBrushObject
StyleName = 'foreground'
end
@@ -238,7 +238,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 5
+ TabOrder = 6
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = x32787878
@@ -364,7 +364,7 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 6
+ TabOrder = 7
object TRectangle
StyleName = 'background'
Align = Contents
@@ -403,7 +403,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 7
+ TabOrder = 8
object TRectangle
StyleName = 'background'
Align = Contents
@@ -454,7 +454,7 @@ object TStyleContainer
StyleName = 'imagecellstyle'
Align = Center
Visible = False
- TabOrder = 8
+ TabOrder = 9
object TImage
StyleName = 'image'
MultiResBitmap = <
@@ -479,7 +479,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 9
+ TabOrder = 10
object TText
StyleName = 'text'
Align = Contents
@@ -497,7 +497,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 10
+ TabOrder = 11
object TText
StyleName = 'text'
Align = Client
@@ -520,7 +520,7 @@ object TStyleContainer
Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 11
+ TabOrder = 12
object TGlyph
StyleName = 'glyphstyle'
Margins.Left = 2.000000000000000000
@@ -567,7 +567,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 12
+ TabOrder = 13
object TRectangle
StyleName = 'background'
Align = Contents
@@ -603,7 +603,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 13
+ TabOrder = 14
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = xFF2C2C2C
@@ -709,7 +709,7 @@ object TStyleContainer
StyleName = 'popupcellstyle'
Align = Center
Visible = False
- TabOrder = 14
+ TabOrder = 15
object TLayout
Align = Right
Position.X = 35.000000000000000000
@@ -765,7 +765,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 15
+ TabOrder = 16
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -838,7 +838,7 @@ object TStyleContainer
Size.Height = 126.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 16
+ TabOrder = 17
object TLayout
StyleName = 'htrack'
Align = Contents
@@ -894,7 +894,7 @@ object TStyleContainer
StyleName = 'scrollbarstyle'
Align = Center
Visible = False
- TabOrder = 17
+ TabOrder = 18
object TButton
StyleName = 'leftbutton'
Align = Left
@@ -978,16 +978,16 @@ object TStyleContainer
StyleName = 'spinboxstyle'
Align = Center
Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 18
+ TabOrder = 19
object TRectangle
StyleName = 'background'
Align = Contents
Fill.Color = xFF202020
Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
XRadius = 3.000000000000000000
@@ -1019,13 +1019,13 @@ object TStyleContainer
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Size.Width = 66.200073242187500000
- Size.Height = 17.000000000000000000
+ Size.Width = 60.200077056884770000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
end
object TButton
StyleName = 'minusbutton'
- Align = FitLeft
+ Align = Left
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
@@ -1034,55 +1034,47 @@ object TStyleContainer
Margins.Bottom = 2.000000000000000000
Position.X = 2.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 16.999954223632810000
- Size.Height = 17.000000000000000000
+ Size.Width = 19.999950408935550000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
05000000000000000000803F00000000010000000000803F0000803F01000000
000000000000003F010000000000803F00000000030000000000803F00000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999954223632813000
- Size.Height = 5.000000000000000000
+ Size.Width = 7.999950408935547000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
end
object TButton
StyleName = 'plusbutton'
- Align = FitRight
+ Align = Right
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Position.X = 93.200027465820310000
+ Position.X = 90.200027465820310000
Position.Y = 2.000000000000000000
- Size.Width = 16.999969482421880000
- Size.Height = 17.000000000000000000
+ Size.Width = 19.999969482421880000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
0400000000000000000000000000000001000000000000000000803F01000000
0000803F0000003F030000000000000000000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999969482421875000
- Size.Height = 5.000000000000000000
+ Size.Width = 7.999969482421875000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
@@ -1095,7 +1087,7 @@ object TStyleContainer
Size.Width = 100.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
- TabOrder = 19
+ TabOrder = 20
TrackingThumbScale = 1.000000000000000000
Visible = False
Fill.Color = xFF202020
@@ -1119,7 +1111,7 @@ object TStyleContainer
Size.Height = 100.999992370605500000
Size.PlatformDefault = False
Visible = False
- TabOrder = 20
+ TabOrder = 21
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1167,7 +1159,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 21
+ TabOrder = 22
object TRectangle
StyleName = 'top'
Align = Contents
@@ -1233,7 +1225,7 @@ object TStyleContainer
StyleName = 'textcellstyle'
Align = Center
Visible = False
- TabOrder = 22
+ TabOrder = 23
object TLayout
StyleName = 'content'
Align = Contents
@@ -1331,7 +1323,7 @@ object TStyleContainer
Size.Height = 100.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 23
+ TabOrder = 24
FixedHeight = 17
object TRectangle
StyleName = 'htrack'
@@ -1456,7 +1448,7 @@ object TStyleContainer
Size.Height = 122.199996948242200000
Size.PlatformDefault = False
Visible = False
- TabOrder = 24
+ TabOrder = 25
object TBrushObject
StyleName = 'foreground'
end
@@ -1569,7 +1561,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 25
+ TabOrder = 26
object TRectangle
StyleName = 'Rectangle1'
Align = Center
@@ -1680,7 +1672,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 26
+ TabOrder = 27
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -1753,7 +1745,7 @@ object TStyleContainer
Size.Height = 32.400001525878910000
Size.PlatformDefault = False
Visible = False
- TabOrder = 27
+ TabOrder = 28
object TText
StyleName = 'text'
Align = Contents
@@ -1787,7 +1779,7 @@ object TStyleContainer
StyleName = 'popoverstyle'
Align = Center
Visible = False
- TabOrder = 28
+ TabOrder = 29
object TRectangle
StyleName = 'bg'
Align = Client
@@ -1822,18 +1814,17 @@ object TStyleContainer
object TLayout
StyleName = 'popupboxstyle'
Align = Center
- Size.Width = 196.500000000000000000
- Size.Height = 53.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
- Visible = False
- TabOrder = 29
+ TabOrder = 30
object TRectangle
StyleName = 'background'
Align = Contents
Fill.Color = xFF202020
HitTest = False
- Size.Width = 196.500000000000000000
- Size.Height = 53.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
XRadius = 3.000000000000000000
@@ -1858,10 +1849,10 @@ object TStyleContainer
end
end
object TLayout
- Align = Right
- Position.X = 181.500000000000000000
- Size.Width = 15.000000000000000000
- Size.Height = 53.000000000000000000
+ Align = FitRight
+ Position.X = 75.000000000000000000
+ Size.Width = 25.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
object TPath
Align = Center
@@ -1898,9 +1889,10 @@ object TStyleContainer
Margins.Top = 1.000000000000000000
Margins.Right = 1.000000000000000000
Margins.Bottom = 1.000000000000000000
- Size.Width = 179.500000000000000000
- Size.Height = 51.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
+ Text = 'Text'
TextSettings.FontColor = claWhite
end
end
@@ -1908,7 +1900,7 @@ object TStyleContainer
StyleName = 'scrollbarbottombutton'
Align = Center
Visible = False
- TabOrder = 30
+ TabOrder = 31
object TRectangle
StyleName = 'background'
Align = Client
@@ -1967,7 +1959,7 @@ object TStyleContainer
StyleName = 'scrollbarleftbutton'
Align = Center
Visible = False
- TabOrder = 31
+ TabOrder = 32
object TRectangle
StyleName = 'background'
Align = Client
@@ -2027,7 +2019,7 @@ object TStyleContainer
StyleName = 'scrollbarrightbutton'
Align = Center
Visible = False
- TabOrder = 32
+ TabOrder = 33
object TRectangle
StyleName = 'background'
Align = Client
@@ -2087,7 +2079,7 @@ object TStyleContainer
StyleName = 'scrollbartopbutton'
Align = Center
Visible = False
- TabOrder = 33
+ TabOrder = 34
object TRectangle
StyleName = 'background'
Align = Client
@@ -2150,7 +2142,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 34
+ TabOrder = 35
object TBrushObject
StyleName = 'foreground'
end
@@ -2257,7 +2249,7 @@ object TStyleContainer
StyleName = 'smallscrollbarstyle'
Align = Center
Visible = False
- TabOrder = 35
+ TabOrder = 36
object TTrack
StyleName = 'htrack'
Align = Client
@@ -2286,7 +2278,7 @@ object TStyleContainer
Size.Height = 96.750000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 36
+ TabOrder = 37
object TLayout
StyleName = 'grip'
Align = Client
@@ -2335,7 +2327,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 37
+ TabOrder = 38
object TRectangle
Align = Contents
Fill.Color = xFF2A82E2
@@ -2536,7 +2528,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 38
+ TabOrder = 39
object TRectangle
Align = Contents
Fill.Color = xFF2A82E2
@@ -2701,16 +2693,16 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 39
+ TabOrder = 40
object TLine
Align = Top
LineType = Top
- Margins.Left = 3.000000000000000000
+ Margins.Left = -1.000000000000000000
Margins.Top = 2.000000000000000000
- Margins.Right = 3.000000000000000000
- Position.X = 3.000000000000000000
+ Margins.Right = -1.000000000000000000
+ Position.X = -1.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 44.000000000000000000
+ Size.Width = 52.000000000000000000
Size.Height = 1.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
@@ -2727,6 +2719,17 @@ object TStyleContainer
Visible = False
XRadius = 3.000000000000000000
YRadius = 3.000000000000000000
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 48.000000000000000000
+ Size.Height = 48.000000000000000000
+ Size.PlatformDefault = False
+ end
object TRectangle
Align = Client
Fill.Color = xFF202020
@@ -2735,27 +2738,14 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
- XRadius = 3.000000000000000000
- YRadius = 3.000000000000000000
object TShadowEffect
- Distance = 3.000000000000000000
- Direction = 90.000000000000000000
+ Distance = 4.000000000000000000
+ Direction = 45.000000000000000000
Softness = 0.500000000000000000
Opacity = 0.500000000000000000
ShadowColor = claBlack
end
end
- object TLayout
- StyleName = 'content'
- Align = Client
- Margins.Left = 1.000000000000000000
- Margins.Top = 1.000000000000000000
- Margins.Right = 1.000000000000000000
- Margins.Bottom = 1.000000000000000000
- Size.Width = 48.000000000000000000
- Size.Height = 48.000000000000000000
- Size.PlatformDefault = False
- end
end
object TLayout
StyleName = 'radiobuttonstyle'
@@ -2764,7 +2754,7 @@ object TStyleContainer
Size.Height = 21.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 40
+ TabOrder = 41
object TLayout
Align = Left
Size.Width = 21.000000000000000000
@@ -2845,7 +2835,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 41
+ TabOrder = 42
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -2919,7 +2909,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 42
+ TabOrder = 43
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -3087,6 +3077,8 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
object TRectangle
StyleName = 'hindicator'
Align = Left
@@ -3097,6 +3089,8 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
end
end
object TRectangle
@@ -3109,6 +3103,8 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
object TRectangle
StyleName = 'vindicator'
Align = Bottom
@@ -3120,6 +3116,8 @@ object TStyleContainer
Size.Height = 21.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
end
end
end
@@ -3477,6 +3475,7 @@ object TStyleContainer
Size.Height = 2.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 59
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -3516,6 +3515,7 @@ object TStyleContainer
StyleName = 'aniindicatorstyle'
Align = Center
Visible = False
+ TabOrder = 60
object TArc
StyleName = 'Arc'
Align = Contents
@@ -3525,7 +3525,8 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Stroke.Color = claWhite
- Stroke.Thickness = 2.000000000000000000
+ Stroke.Thickness = 4.000000000000000000
+ Stroke.Cap = Round
EndAngle = -90.000000000000000000
object TFloatAnimation
StyleName = 'ani'
@@ -3546,6 +3547,7 @@ object TStyleContainer
Size.Height = 164.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 61
object TRectangle
StyleName = 'background'
Align = Contents
@@ -3565,6 +3567,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 62
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -3575,6 +3578,8 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
object TRectangle
StyleName = 'hindicator'
Align = Left
@@ -3585,6 +3590,8 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
end
end
object TRectangle
@@ -3597,6 +3604,8 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
object TRectangle
StyleName = 'vindicator'
Align = Bottom
@@ -3608,6 +3617,8 @@ object TStyleContainer
Size.Height = 21.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
end
end
end
@@ -3618,7 +3629,7 @@ object TStyleContainer
Size.Height = 96.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 1
+ TabOrder = 2
object TRectangle
StyleName = 'background'
Align = Client
@@ -3696,4 +3707,429 @@ object TStyleContainer
end
end
end
+ object TLayout
+ StyleName = 'treeviewexpanderbuttonstyle'
+ Align = Center
+ Margins.Top = 1.000000000000000000
+ Size.Width = 22.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 65
+ object TPath
+ StyleName = 'Path1'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ RotationAngle = -90.000000000000000000
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ StyleName = 'FloatAnimation1Style'
+ Duration = 0.000000000000000000
+ Interpolation = Circular
+ PropertyName = 'RotationAngle'
+ StartValue = -90.000000000000000000
+ StopValue = 0.000000000000000000
+ Trigger = 'IsExpanded=true'
+ TriggerInverse = 'IsExpanded=false'
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'treeviewstyle'
+ Align = Center
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 66
+ object TBrushObject
+ StyleName = 'AlternatingRowBackground'
+ Brush.Color = x0FFFFFFF
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Padding.Left = 1.000000000000000000
+ Padding.Right = 1.000000000000000000
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ ClipChildren = True
+ Margins.Top = 1.000000000000000000
+ Size.Width = 205.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'selection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ object TRectangle
+ StyleName = 'focusedselection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Stroke.Dash = Dot
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ object TScrollBar
+ StyleName = 'vscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 208.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 241.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TScrollBar
+ StyleName = 'hscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 243.000000000000000000
+ Size.Width = 223.000000000000000000
+ Size.Height = 16.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TSmallScrollBar
+ StyleName = 'vsmallscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 99.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ object TSmallScrollBar
+ StyleName = 'hsmallscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 2.000000000000000000
+ Position.Y = 113.000000000000000000
+ Size.Width = 150.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ end
+ end
+ object TRectangle
+ StyleName = 'treeviewitemstyle'
+ Align = Center
+ Fill.Kind = None
+ HitTest = False
+ Sides = [Bottom]
+ Size.Width = 87.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ Stroke.Join = Round
+ Visible = False
+ object TSpeedButton
+ StyleName = 'button'
+ Align = Left
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'treeviewexpanderbuttonstyle'
+ end
+ object TLayout
+ Align = Contents
+ Margins.Left = 20.000000000000000000
+ Size.Width = 67.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ object TCheckBox
+ StyleName = 'check'
+ Align = Left
+ CanFocus = False
+ DisableFocusEffect = True
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Align = Left
+ Position.X = 22.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 38.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ Locked = True
+ HitTest = False
+ Size.Width = 47.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ TextSettings.WordWrap = False
+ TextSettings.HorzAlign = Leading
+ end
+ end
+ object TRectangle
+ Align = Contents
+ Fill.Kind = None
+ HitTest = False
+ Margins.Bottom = 1.000000000000000000
+ Sides = [Left]
+ Size.Width = 87.000000000000000000
+ Size.Height = 39.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF2A82E2
+ Stroke.Thickness = 2.000000000000000000
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarfinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 63
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 54.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 34.399997711181640000
+ Size.Width = 64.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarminifinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 74
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Position.Y = 35.399997711181640000
+ Size.Width = 66.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 2.000000000000000000
+ YRadius = 2.000000000000000000
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'arrowdowntoolbutton'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 1
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Corners = [TopLeft, BottomLeft]
+ Fill.Color = x00202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ XRadius = 3.000000000000000000
+ YRadius = 3.000000000000000000
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = x00202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation2'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TPath
+ StyleName = 'path'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ Visible = False
+ end
+ end
end
diff --git a/styles/AErender Modern/AERFMXStyleWindows.style b/styles/AErender Modern/AERFMXStyleWindows.style
index 8f14f6d..e4172b2 100644
--- a/styles/AErender Modern/AERFMXStyleWindows.style
+++ b/styles/AErender Modern/AERFMXStyleWindows.style
@@ -63,6 +63,7 @@ object TStyleContainer
Size.Width = 100.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
+ Text = 'Text'
TextSettings.FontColor = claWhite
end
end
@@ -434,7 +435,7 @@ object TStyleContainer
StyleName = 'scrollbarbottombutton'
Align = Center
Visible = False
- TabOrder = 8
+ TabOrder = 10
object TRectangle
StyleName = 'background'
Align = Client
@@ -490,7 +491,7 @@ object TStyleContainer
StyleName = 'scrollbarleftbutton'
Align = Center
Visible = False
- TabOrder = 9
+ TabOrder = 11
object TRectangle
StyleName = 'background'
Align = Client
@@ -547,7 +548,7 @@ object TStyleContainer
StyleName = 'scrollbarrightbutton'
Align = Center
Visible = False
- TabOrder = 10
+ TabOrder = 12
object TRectangle
StyleName = 'background'
Align = Client
@@ -604,7 +605,7 @@ object TStyleContainer
StyleName = 'scrollbartopbutton'
Align = Center
Visible = False
- TabOrder = 11
+ TabOrder = 13
object TRectangle
StyleName = 'background'
Align = Client
@@ -661,7 +662,7 @@ object TStyleContainer
StyleName = 'scrollbarstyle'
Align = Center
Visible = False
- TabOrder = 12
+ TabOrder = 14
object TButton
StyleName = 'leftbutton'
Align = Left
@@ -758,7 +759,7 @@ object TStyleContainer
Size.Width = 100.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
- TabOrder = 13
+ TabOrder = 16
TrackingThumbScale = 1.000000000000000000
Visible = False
Fill.Color = xFF202020
@@ -781,7 +782,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 14
+ TabOrder = 17
object TBrushObject
StyleName = 'foreground'
end
@@ -885,7 +886,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 16
+ TabOrder = 18
object TBrushObject
StyleName = 'foreground'
end
@@ -1014,7 +1015,7 @@ object TStyleContainer
Size.Height = 100.999992370605500000
Size.PlatformDefault = False
Visible = False
- TabOrder = 17
+ TabOrder = 19
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1036,8 +1037,8 @@ object TStyleContainer
Align = Center
Fill.Color = xFF151515
HitTest = False
- Size.Width = 50.000000000000000000
- Size.Height = 50.000000000000000000
+ Size.Width = 64.000000000000000000
+ Size.Height = 4.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
Visible = False
@@ -1057,7 +1058,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 18
+ TabOrder = 21
object TRectangle
StyleName = 'top'
Align = Contents
@@ -1161,7 +1162,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 19
+ TabOrder = 23
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = xFF2C2C2C
@@ -1271,7 +1272,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 20
+ TabOrder = 24
object TText
StyleName = 'text'
Align = Client
@@ -1294,7 +1295,7 @@ object TStyleContainer
Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 21
+ TabOrder = 25
object TGlyph
StyleName = 'glyphstyle'
Margins.Left = 2.000000000000000000
@@ -1339,7 +1340,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 22
+ TabOrder = 26
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1373,7 +1374,7 @@ object TStyleContainer
Size.Height = 131.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 23
+ TabOrder = 27
object TBrushObject
StyleName = 'AlternatingRowBackground'
Brush.Color = x32787878
@@ -1418,6 +1419,7 @@ object TStyleContainer
StyleName = 'selection'
Fill.Color = xFF2A82E2
HitTest = False
+ Opacity = 0.250000000000000000
Size.Width = 50.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
@@ -1495,7 +1497,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 24
+ TabOrder = 28
object TRectangle
StyleName = 'background'
Align = Contents
@@ -1547,7 +1549,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 26
+ TabOrder = 29
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -1601,7 +1603,7 @@ object TStyleContainer
Size.Height = 126.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 27
+ TabOrder = 30
object TLayout
StyleName = 'htrack'
Align = Contents
@@ -1643,7 +1645,7 @@ object TStyleContainer
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 28
+ TabOrder = 31
object TRectangle
Align = Contents
Fill.Color = xFF2A82E2
@@ -1834,18 +1836,18 @@ object TStyleContainer
Margins.Top = 1.000000000000000000
Margins.Right = 1.000000000000000000
Margins.Bottom = 1.000000000000000000
- Size.Width = 73.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Width = 123.444442749023400000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
Visible = False
- TabOrder = 29
+ TabOrder = 33
object TRectangle
Align = Contents
Fill.Color = xFF2A82E2
HitTest = False
Opacity = 0.000099999997473788
- Size.Width = 73.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Width = 123.444442749023400000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
Stroke.Kind = None
object TFloatAnimation
@@ -1862,13 +1864,14 @@ object TStyleContainer
Align = Contents
Fill.Color = xFF2A82E2
HitTest = False
- Opacity = 0.000099999997473788
- Size.Width = 73.000000000000000000
- Size.Height = 26.000000000000000000
+ Opacity = 0.000000000000000000
+ Size.Width = 123.444442749023400000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
Stroke.Kind = None
object TFloatAnimation
Duration = 0.000200000009499490
+ Inverse = True
PropertyName = 'Opacity'
StartValue = 0.000000000000000000
StopValue = 1.000000000000000000
@@ -1880,14 +1883,14 @@ object TStyleContainer
StyleName = 'glyph'
Align = Left
Size.Width = 25.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
object TLayout
StyleName = 'checkmark'
Align = Contents
Opacity = 0.001000000047497451
Size.Width = 25.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
object TPath
Align = Center
@@ -1935,7 +1938,7 @@ object TStyleContainer
Position.X = 2.000000000000000000
Position.Y = 2.000000000000000000
Size.Width = 21.000000000000000000
- Size.Height = 22.000000000000000000
+ Size.Height = 26.111110687255860000
Size.PlatformDefault = False
end
end
@@ -1948,7 +1951,7 @@ object TStyleContainer
Margins.Right = 8.000000000000000000
Position.X = 33.000000000000000000
Size.Width = 50.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
TextSettings.FontColor = claWhite
TextSettings.HorzAlign = Leading
@@ -1960,9 +1963,9 @@ object TStyleContainer
HitTest = False
Margins.Left = 12.000000000000000000
Margins.Right = 6.000000000000000000
- Position.X = -3.000000000000000000
+ Position.X = 47.444442749023440000
Size.Width = 50.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
TextSettings.FontColor = claWhite
TextSettings.HorzAlign = Leading
@@ -1970,9 +1973,9 @@ object TStyleContainer
object TLayout
StyleName = 'submark'
Align = Right
- Position.X = 53.000000000000000000
+ Position.X = 103.444442749023400000
Size.Width = 20.000000000000000000
- Size.Height = 26.000000000000000000
+ Size.Height = 30.111110687255860000
Size.PlatformDefault = False
object TPath
Align = Center
@@ -1982,8 +1985,8 @@ object TStyleContainer
Fill.Color = claWhite
Locked = True
HitTest = False
- Size.Width = 7.000000000000000000
- Size.Height = 8.000000000000000000
+ Size.Width = 6.000000000000000000
+ Size.Height = 10.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
@@ -1992,24 +1995,20 @@ object TStyleContainer
object TLayout
StyleName = 'menuseparatorstyle'
Align = Center
- Margins.Left = 1.000000000000000000
- Margins.Top = 1.000000000000000000
- Margins.Right = 1.000000000000000000
- Margins.Bottom = 1.000000000000000000
Size.Width = 50.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 30
+ TabOrder = 34
object TLine
Align = Top
LineType = Top
- Margins.Left = 3.000000000000000000
+ Margins.Left = -1.000000000000000000
Margins.Top = 2.000000000000000000
- Margins.Right = 3.000000000000000000
- Position.X = 3.000000000000000000
+ Margins.Right = -1.000000000000000000
+ Position.X = -1.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 44.000000000000000000
+ Size.Width = 52.000000000000000000
Size.Height = 1.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
@@ -2033,8 +2032,8 @@ object TStyleContainer
Size.PlatformDefault = False
Stroke.Color = xFF151515
object TShadowEffect
- Distance = 3.000000000000000000
- Direction = 90.000000000000000000
+ Distance = 4.000000000000000000
+ Direction = 45.000000000000000000
Softness = 0.500000000000000000
Opacity = 0.500000000000000000
ShadowColor = claBlack
@@ -2056,7 +2055,7 @@ object TStyleContainer
StyleName = 'imagecellstyle'
Align = Center
Visible = False
- TabOrder = 31
+ TabOrder = 36
object TImage
StyleName = 'image'
MultiResBitmap = <
@@ -2081,7 +2080,7 @@ object TStyleContainer
Size.Height = 43.500000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 32
+ TabOrder = 37
object TLayout
Align = Right
Position.X = 172.000000000000000000
@@ -2134,7 +2133,7 @@ object TStyleContainer
StyleName = 'textcellstyle'
Align = Center
Visible = False
- TabOrder = 33
+ TabOrder = 38
object TLayout
StyleName = 'content'
Align = Contents
@@ -2165,7 +2164,7 @@ object TStyleContainer
Size.Height = 122.199996948242200000
Size.PlatformDefault = False
Visible = False
- TabOrder = 34
+ TabOrder = 39
object TBrushObject
StyleName = 'foreground'
end
@@ -2276,7 +2275,7 @@ object TStyleContainer
Size.Height = 32.400001525878910000
Size.PlatformDefault = False
Visible = False
- TabOrder = 35
+ TabOrder = 40
object TText
StyleName = 'text'
Align = Contents
@@ -2339,16 +2338,16 @@ object TStyleContainer
StyleName = 'spinboxstyle'
Align = Center
Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 36
+ TabOrder = 42
object TRectangle
StyleName = 'background'
Align = Contents
Fill.Color = xFF202020
Size.Width = 112.199996948242200000
- Size.Height = 21.000000000000000000
+ Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
object TColorAnimation
@@ -2378,13 +2377,13 @@ object TStyleContainer
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Size.Width = 66.200073242187500000
- Size.Height = 17.000000000000000000
+ Size.Width = 60.199996948242190000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
end
object TButton
StyleName = 'minusbutton'
- Align = FitLeft
+ Align = Left
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
@@ -2393,55 +2392,47 @@ object TStyleContainer
Margins.Bottom = 2.000000000000000000
Position.X = 2.000000000000000000
Position.Y = 2.000000000000000000
- Size.Width = 16.999954223632810000
- Size.Height = 17.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
05000000000000000000803F00000000010000000000803F0000803F01000000
000000000000003F010000000000803F00000000030000000000803F00000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999954223632813000
- Size.Height = 5.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
end
object TButton
StyleName = 'plusbutton'
- Align = FitRight
+ Align = Right
CanFocus = False
Cursor = crArrow
Margins.Left = 2.000000000000000000
Margins.Top = 2.000000000000000000
Margins.Right = 2.000000000000000000
Margins.Bottom = 2.000000000000000000
- Position.X = 93.200027465820310000
+ Position.X = 90.199996948242190000
Position.Y = 2.000000000000000000
- Size.Width = 16.999969482421880000
- Size.Height = 17.000000000000000000
+ Size.Width = 20.000000000000000000
+ Size.Height = 20.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'buttonstyle'
object TPath
- Align = Client
+ Align = Center
Data.Path = {
0400000000000000000000000000000001000000000000000000803F01000000
0000803F0000003F030000000000000000000000}
Fill.Color = claWhite
HitTest = False
- Margins.Left = 6.000000000000000000
- Margins.Top = 6.000000000000000000
- Margins.Right = 6.000000000000000000
- Margins.Bottom = 6.000000000000000000
- Size.Width = 4.999969482421875000
- Size.Height = 5.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
end
@@ -2454,7 +2445,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 37
+ TabOrder = 43
object TRectangle
StyleName = 'Rectangle1'
Align = Center
@@ -2537,7 +2528,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 38
+ TabOrder = 45
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -2602,7 +2593,7 @@ object TStyleContainer
Size.Height = 103.500000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 39
+ TabOrder = 46
object TRectangle
Align = Contents
Fill.Kind = None
@@ -2671,7 +2662,7 @@ object TStyleContainer
Size.Height = 44.500000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 40
+ TabOrder = 47
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -2850,7 +2841,7 @@ object TStyleContainer
StyleName = 'popoverstyle'
Align = Center
Visible = False
- TabOrder = 41
+ TabOrder = 48
object TRectangle
StyleName = 'bg'
Align = Client
@@ -2883,18 +2874,18 @@ object TStyleContainer
object TLayout
StyleName = 'popupboxstyle'
Align = Center
- Size.Width = 196.500000000000000000
- Size.Height = 53.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 42
+ TabOrder = 49
object TRectangle
StyleName = 'background'
Align = Contents
Fill.Color = xFF202020
HitTest = False
- Size.Width = 196.500000000000000000
- Size.Height = 53.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Stroke.Kind = None
object TColorAnimation
@@ -2917,10 +2908,10 @@ object TStyleContainer
end
end
object TLayout
- Align = Right
- Position.X = 181.500000000000000000
- Size.Width = 15.000000000000000000
- Size.Height = 53.000000000000000000
+ Align = FitRight
+ Position.X = 75.000000000000000000
+ Size.Width = 25.000000000000000000
+ Size.Height = 25.000000000000000000
Size.PlatformDefault = False
object TPath
Align = Center
@@ -2957,9 +2948,10 @@ object TStyleContainer
Margins.Top = 1.000000000000000000
Margins.Right = 1.000000000000000000
Margins.Bottom = 1.000000000000000000
- Size.Width = 179.500000000000000000
- Size.Height = 51.000000000000000000
+ Size.Width = 73.000000000000000000
+ Size.Height = 23.000000000000000000
Size.PlatformDefault = False
+ Text = 'Text'
TextSettings.FontColor = claWhite
end
end
@@ -2979,7 +2971,7 @@ object TStyleContainer
StyleName = 'smallscrollbarstyle'
Align = Center
Visible = False
- TabOrder = 43
+ TabOrder = 51
object TTrack
StyleName = 'htrack'
Align = Client
@@ -3008,7 +3000,7 @@ object TStyleContainer
Size.Height = 96.750000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 44
+ TabOrder = 52
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -3076,7 +3068,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 45
+ TabOrder = 53
object TRectangle
StyleName = 'closebutton'
Align = Client
@@ -3131,7 +3123,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 46
+ TabOrder = 54
object TRectangle
StyleName = 'maxbutton'
Align = Client
@@ -3182,7 +3174,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 47
+ TabOrder = 55
object TRectangle
StyleName = 'resbutton'
Align = Client
@@ -3234,7 +3226,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 48
+ TabOrder = 56
object TRectangle
StyleName = 'minbutton'
Align = Client
@@ -3286,7 +3278,7 @@ object TStyleContainer
Size.Height = 179.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 49
+ TabOrder = 57
object TRectangle
StyleName = 'mask'
Align = Contents
@@ -3494,335 +3486,81 @@ object TStyleContainer
end
end
object TLayout
- StyleName = 'windowborderstyle'
+ StyleName = 'radiobuttonstyle'
Align = Center
- Size.Width = 351.666687011718800000
- Size.Height = 179.000000000000000000
+ Size.Width = 121.000000000000000000
+ Size.Height = 21.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 50
- object TRectangle
- StyleName = 'mask'
- Align = Contents
- Fill.Color = xFF101010
- Size.Width = 351.666687011718800000
- Size.Height = 179.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- Visible = False
- end
+ TabOrder = 59
object TLayout
- StyleName = 'left'
- Align = MostLeft
- Locked = True
- Position.Y = 30.000000000000000000
- Size.Width = 5.000000000000000000
- Size.Height = 149.000000000000000000
+ Align = Left
+ Size.Width = 21.000000000000000000
+ Size.Height = 21.000000000000000000
Size.PlatformDefault = False
- object TRectangle
- Align = MostLeft
- Fill.Color = xFF202020
- HitTest = False
- Sides = [Left, Right]
- Size.Width = 5.000000000000000000
- Size.Height = 144.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- end
- object TRectangle
- StyleName = 'Rectangle1'
- Align = MostBottom
- EnableDragHighlight = False
+ object TEllipse
+ StyleName = 'background'
+ Align = Center
Fill.Color = xFF202020
+ Locked = True
HitTest = False
- Position.Y = 144.000000000000000000
- Sides = [Left, Bottom]
- Size.Width = 5.000000000000000000
- Size.Height = 5.000000000000000000
+ Size.Width = 15.000000000000000000
+ Size.Height = 15.000000000000000000
Size.PlatformDefault = False
Stroke.Color = xFF151515
- object TLayout
- StyleName = 'Layout3'
- Align = MostRight
- Position.X = 4.000000000000000000
- Size.Width = 1.000000000000000000
- Size.Height = 5.000000000000000000
+ object TEllipse
+ StyleName = 'checkmark'
+ Align = Client
+ Fill.Color = xFF2A82E2
+ Locked = True
+ HitTest = False
+ Opacity = 0.000000000000000000
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 2.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 2.000000000000000000
+ Size.Width = 11.000000000000000000
+ Size.Height = 11.000000000000000000
Size.PlatformDefault = False
- object TRectangle
- StyleName = 'Rectangle1'
- Align = Top
- Fill.Color = xFF151515
- HitTest = False
- Size.Width = 1.000000000000000000
- Size.Height = 1.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
+ Stroke.Kind = None
+ object TFloatAnimation
+ StyleName = 'opacityCheckmarkAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Opacity'
+ StartValue = 0.000000000000000000
+ StopValue = 1.000000000000000000
+ Trigger = 'IsChecked=true'
+ TriggerInverse = 'IsChecked=false'
end
end
+ object TColorAnimation
+ StyleName = 'radiobuttonColorAnimation1'
+ Duration = 0.000000000000000000
+ Inverse = True
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true'
+ TriggerInverse = 'IsMouseOver=false'
+ end
+ object TColorAnimation
+ StyleName = 'ColorAnimation1Style'
+ Duration = 0.000000000000000000
+ PropertyName = 'Stroke.Color'
+ StartValue = xFF151515
+ StopValue = xFF2A82E2
+ Trigger = 'IsChecked=true'
+ TriggerInverse = 'IsChecked=false'
+ end
end
end
- object TLayout
- StyleName = 'right'
- Align = MostRight
+ object TText
+ StyleName = 'text'
+ Align = Client
Locked = True
- Position.X = 346.666687011718800000
- Position.Y = 30.000000000000000000
- Size.Width = 5.000000000000000000
- Size.Height = 149.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- Align = MostRight
- Fill.Color = xFF202020
- HitTest = False
- Sides = [Left, Right]
- Size.Width = 5.000000000000000000
- Size.Height = 144.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- end
- object TRectangle
- StyleName = 'Rectangle1'
- Align = MostBottom
- EnableDragHighlight = False
- Fill.Color = xFF202020
- HitTest = False
- Position.Y = 144.000000000000000000
- Sides = [Bottom, Right]
- Size.Width = 5.000000000000000000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- object TLayout
- StyleName = 'Layout3'
- Align = MostLeft
- Size.Width = 1.000000000000000000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- StyleName = 'Rectangle1'
- Align = Top
- Fill.Color = xFF151515
- HitTest = False
- Size.Width = 1.000000000000000000
- Size.Height = 1.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- end
- end
- end
- end
- object TRectangle
- Align = MostTop
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 351.666687011718800000
- Size.Height = 30.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- object TLayout
- StyleName = 'caption'
- Align = Contents
- Locked = True
- HitTest = True
- Size.Width = 351.666687011718800000
- Size.Height = 30.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- Align = Client
- Locked = True
- Margins.Left = 1.000000000000000000
- Margins.Top = 1.000000000000000000
- Margins.Right = 1.000000000000000000
- Margins.Bottom = 1.000000000000000000
- Size.Width = 349.666687011718800000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- object TLayout
- Align = Left
- Locked = True
- Size.Width = 9.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- StyleName = 'icon'
- Locked = True
- Position.X = 9.000000000000000000
- Position.Y = 7.000000000000000000
- Size.Width = 25.000000000000000000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- StyleName = 'sysbtns'
- Align = Client
- Locked = True
- Size.Width = 340.666687011718800000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- object TSpeedButton
- StyleName = 'close'
- Align = Right
- Locked = True
- Position.X = 290.666687011718800000
- Size.Width = 50.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'closebuttonstyle'
- end
- object TSpeedButton
- StyleName = 'max'
- Align = Right
- Locked = True
- Position.X = 260.666687011718800000
- Size.Width = 30.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'maxbuttonstyle'
- end
- object TSpeedButton
- StyleName = 'res'
- Align = Right
- Locked = True
- Position.X = 230.666687011718800000
- Size.Width = 30.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'resbuttonstyle'
- end
- object TSpeedButton
- StyleName = 'min'
- Align = Right
- Locked = True
- Position.X = 200.666687011718800000
- Size.Width = 30.000000000000000000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- StyleLookup = 'minbuttonstyle'
- end
- object TText
- StyleName = 'title'
- Align = Client
- Locked = True
- HitTest = False
- Size.Width = 200.666687011718800000
- Size.Height = 28.000000000000000000
- Size.PlatformDefault = False
- Text = 'Title'
- TextSettings.FontColor = claWhite
- end
- end
- end
- end
- object TLayout
- StyleName = 'client'
- Align = Client
- Locked = True
- HitTest = True
- Size.Width = 341.666687011718800000
- Size.Height = 144.000000000000000000
- Size.PlatformDefault = False
- end
- object TLayout
- StyleName = 'bottom'
- Align = Bottom
- Locked = True
- Position.X = 5.000000000000000000
- Position.Y = 174.000000000000000000
- Size.Width = 341.666687011718800000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- object TRectangle
- StyleName = 'rect'
- Align = Bottom
- Fill.Color = xFF202020
- HitTest = False
- Sides = [Top, Bottom]
- Size.Width = 341.666687011718800000
- Size.Height = 5.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- end
- end
- end
- object TLayout
- StyleName = 'radiobuttonstyle'
- Align = Center
- Size.Width = 121.000000000000000000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- Visible = False
- TabOrder = 52
- object TLayout
- Align = Left
- Size.Width = 21.000000000000000000
- Size.Height = 21.000000000000000000
- Size.PlatformDefault = False
- object TEllipse
- StyleName = 'background'
- Align = Center
- Fill.Color = xFF202020
- Locked = True
- HitTest = False
- Size.Width = 15.000000000000000000
- Size.Height = 15.000000000000000000
- Size.PlatformDefault = False
- Stroke.Color = xFF151515
- object TEllipse
- StyleName = 'checkmark'
- Align = Client
- Fill.Color = xFF2A82E2
- Locked = True
- HitTest = False
- Opacity = 0.000000000000000000
- Margins.Left = 2.000000000000000000
- Margins.Top = 2.000000000000000000
- Margins.Right = 2.000000000000000000
- Margins.Bottom = 2.000000000000000000
- Size.Width = 11.000000000000000000
- Size.Height = 11.000000000000000000
- Size.PlatformDefault = False
- Stroke.Kind = None
- object TFloatAnimation
- StyleName = 'opacityCheckmarkAnimation1'
- Duration = 0.000000000000000000
- PropertyName = 'Opacity'
- StartValue = 0.000000000000000000
- StopValue = 1.000000000000000000
- Trigger = 'IsChecked=true'
- TriggerInverse = 'IsChecked=false'
- end
- end
- object TColorAnimation
- StyleName = 'radiobuttonColorAnimation1'
- Duration = 0.000000000000000000
- Inverse = True
- PropertyName = 'Fill.Color'
- StartValue = xFF202020
- StopValue = xFF404040
- Trigger = 'IsMouseOver=true'
- TriggerInverse = 'IsMouseOver=false'
- end
- object TColorAnimation
- StyleName = 'ColorAnimation1Style'
- Duration = 0.000000000000000000
- PropertyName = 'Stroke.Color'
- StartValue = xFF151515
- StopValue = xFF2A82E2
- Trigger = 'IsChecked=true'
- TriggerInverse = 'IsChecked=false'
- end
- end
- end
- object TText
- StyleName = 'text'
- Align = Client
- Locked = True
- HitTest = False
- Size.Width = 100.000000000000000000
- Size.Height = 21.000000000000000000
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 21.000000000000000000
Size.PlatformDefault = False
TextSettings.FontColor = claWhite
end
@@ -3834,7 +3572,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 54
+ TabOrder = 60
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -3908,7 +3646,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 56
+ TabOrder = 61
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -3982,7 +3720,7 @@ object TStyleContainer
Size.Height = 40.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 58
+ TabOrder = 62
object TLayout
Align = Bottom
Position.Y = 34.000000000000000000
@@ -4050,13 +3788,13 @@ object TStyleContainer
end
end
object TLayout
- StyleName = 'progressbarstyle'
+ StyleName = 'progressbarfinishstyle'
Align = Center
Size.Width = 66.599998474121090000
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 61
+ TabOrder = 64
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -4070,7 +3808,7 @@ object TStyleContainer
object TRectangle
StyleName = 'hindicator'
Align = Left
- Fill.Color = xFF2A82E2
+ Fill.Color = xFF2CE244
Locked = True
HitTest = False
Margins.Left = 1.000000000000000000
@@ -4098,7 +3836,7 @@ object TStyleContainer
object TRectangle
StyleName = 'vindicator'
Align = Bottom
- Fill.Color = xFF2A82E2
+ Fill.Color = xFF2CE244
Locked = True
HitTest = False
Margins.Left = 1.000000000000000000
@@ -4121,7 +3859,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 63
+ TabOrder = 65
object TRectangle
StyleName = 'bgrectangle'
Align = Contents
@@ -4220,7 +3958,7 @@ object TStyleContainer
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 65
+ TabOrder = 66
object TPath
StyleName = 'Path1'
Align = Center
@@ -4326,7 +4064,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 70
+ TabOrder = 68
object TRectangle
StyleName = 'Rectangle1'
Align = Contents
@@ -4353,7 +4091,7 @@ object TStyleContainer
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 15
+ TabOrder = 69
object TBrushObject
StyleName = 'foreground'
end
@@ -4482,7 +4220,7 @@ object TStyleContainer
Size.Height = 24.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 60
+ TabOrder = 70
object TRectangle
StyleName = 'vtrack'
Align = Contents
@@ -4547,6 +4285,7 @@ object TStyleContainer
StyleName = 'aniindicatorstyle'
Align = Center
Visible = False
+ TabOrder = 71
object TArc
StyleName = 'Arc'
Align = Contents
@@ -4556,7 +4295,9 @@ object TStyleContainer
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
Stroke.Color = claWhite
- Stroke.Thickness = 2.000000000000000000
+ Stroke.Thickness = 4.000000000000000000
+ Stroke.Cap = Round
+ Stroke.Join = Bevel
EndAngle = -90.000000000000000000
object TFloatAnimation
StyleName = 'ani'
@@ -4577,6 +4318,7 @@ object TStyleContainer
Size.Height = 2.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 72
object TRectangle
StyleName = 'Rectangle1'
Align = Client
@@ -4615,6 +4357,7 @@ object TStyleContainer
Size.Height = 164.000000000000000000
Size.PlatformDefault = False
Visible = False
+ TabOrder = 73
object TRectangle
StyleName = 'background'
Align = Contents
@@ -4632,7 +4375,7 @@ object TStyleContainer
Size.Height = 96.000000000000000000
Size.PlatformDefault = False
Visible = False
- TabOrder = 1
+ TabOrder = 74
object TRectangle
StyleName = 'background'
Align = Client
@@ -4714,7 +4457,7 @@ object TStyleContainer
Size.Height = 56.399997711181640000
Size.PlatformDefault = False
Visible = False
- TabOrder = 25
+ TabOrder = 76
object TRectangle
StyleName = 'htrack'
Align = Contents
@@ -4761,4 +4504,1362 @@ object TStyleContainer
end
end
end
+ object TLayout
+ StyleName = 'treeviewexpanderbuttonstyle'
+ Align = Center
+ Margins.Top = 1.000000000000000000
+ Size.Width = 22.000000000000000000
+ Size.Height = 22.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 77
+ object TPath
+ StyleName = 'Path1'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ RotationAngle = -90.000000000000000000
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TFloatAnimation
+ StyleName = 'FloatAnimation1Style'
+ Duration = 0.000000000000000000
+ Interpolation = Circular
+ PropertyName = 'RotationAngle'
+ StartValue = -90.000000000000000000
+ StopValue = 0.000000000000000000
+ Trigger = 'IsExpanded=true'
+ TriggerInverse = 'IsExpanded=false'
+ end
+ end
+ end
+ object TRectangle
+ StyleName = 'treeviewitemstyle'
+ Align = Center
+ Fill.Kind = None
+ HitTest = False
+ Sides = [Bottom]
+ Size.Width = 87.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ Visible = False
+ object TSpeedButton
+ StyleName = 'button'
+ Align = Left
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'treeviewexpanderbuttonstyle'
+ end
+ object TLayout
+ Align = Contents
+ Margins.Left = 20.000000000000000000
+ Size.Width = 67.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ object TCheckBox
+ StyleName = 'check'
+ Align = Left
+ CanFocus = False
+ DisableFocusEffect = True
+ Size.Width = 20.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 2.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 2.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Align = Left
+ Position.X = 22.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 38.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ Locked = True
+ HitTest = False
+ Size.Width = 47.000000000000000000
+ Size.Height = 40.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ TextSettings.WordWrap = False
+ TextSettings.HorzAlign = Leading
+ end
+ end
+ object TRectangle
+ Align = Contents
+ Fill.Kind = None
+ HitTest = False
+ Margins.Bottom = 1.000000000000000000
+ Sides = [Left]
+ Size.Width = 87.000000000000000000
+ Size.Height = 39.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF2A82E2
+ Stroke.Thickness = 2.000000000000000000
+ end
+ end
+ object TLayout
+ StyleName = 'treeviewstyle'
+ Align = Center
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 78
+ object TBrushObject
+ StyleName = 'AlternatingRowBackground'
+ Brush.Color = x0FFFFFFF
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Padding.Left = 1.000000000000000000
+ Padding.Right = 1.000000000000000000
+ Size.Width = 225.000000000000000000
+ Size.Height = 259.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'content'
+ Align = Client
+ ClipChildren = True
+ Margins.Top = 1.000000000000000000
+ Size.Width = 205.000000000000000000
+ Size.Height = 240.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'selection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TRectangle
+ StyleName = 'focusedselection'
+ Fill.Color = xFF2A82E2
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Stroke.Dash = Dot
+ end
+ end
+ object TScrollBar
+ StyleName = 'vscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 208.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 241.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TScrollBar
+ StyleName = 'hscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 243.000000000000000000
+ Size.Width = 223.000000000000000000
+ Size.Height = 16.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TSmallScrollBar
+ StyleName = 'vsmallscrollbar'
+ Align = Right
+ SmallChange = 0.000000000000000000
+ Orientation = Vertical
+ Margins.Left = 2.000000000000000000
+ Position.X = 99.000000000000000000
+ Position.Y = 2.000000000000000000
+ Size.Width = 8.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ object TSmallScrollBar
+ StyleName = 'hsmallscrollbar'
+ Align = Bottom
+ SmallChange = 0.000000000000000000
+ Orientation = Horizontal
+ Margins.Top = 2.000000000000000000
+ Position.X = 2.000000000000000000
+ Position.Y = 113.000000000000000000
+ Size.Width = 150.000000000000000000
+ Size.Height = 8.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'actiontoolbuttonmultiview'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 120
+ FixedHeight = 50
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 9.000000000000000000
+ Margins.Top = 9.000000000000000000
+ Margins.Bottom = 9.000000000000000000
+ Align = Left
+ Position.X = 9.000000000000000000
+ Position.Y = 9.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -50.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ end
+ object TLayout
+ StyleName = 'Layout2'
+ Align = Left
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'icon'
+ Align = Center
+ Data.Path = {
+ 17000000000000000000C03F0000C03F01000000000000000000000001000000
+ 0000404000000000010000000000C03F0000C03F030000000000C03F0000C03F
+ 0000000000009040000000000100000000004041000000000100000000004041
+ CDCC4C3F0100000000009040CDCC4C3F01000000000090400000000003000000
+ 0000904000000000000000000000904033337340010000000000904000004040
+ 0100000000004041000040400100000000004041333373400100000000009040
+ 3333734003000000000090403333734000000000000090409A99D94001000000
+ 000090400000C04001000000000040410000C04001000000000040419A99D940
+ 01000000000090409A99D94003000000000090409A99D940}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 26.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'addbuttonstyle'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 124
+ FixedHeight = 24
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 9.000000000000000000
+ Margins.Top = 9.000000000000000000
+ Margins.Bottom = 9.000000000000000000
+ Align = Left
+ Position.X = 9.000000000000000000
+ Position.Y = 9.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -24.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 76.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ end
+ object TLayout
+ StyleName = 'Layout2'
+ Align = Left
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'icon'
+ Align = Contents
+ Data.Path = {
+ 0E00000000000000CDCC34410000C040010000000000C0400000C04001000000
+ 0000C040CDCC3441010000009A99A940CDCC3441010000009A99A9400000C040
+ 01000000000000000000C04001000000000000009A99A940010000009A99A940
+ 9A99A940010000009A99A94000000000010000000000C0400000000001000000
+ 0000C0409A99A94001000000CDCC34419A99A94001000000CDCC34410000C040
+ 03000000CDCC34410000C040}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 16.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'infotoolbuttonmultiview'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 123
+ FixedHeight = 50
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 9.000000000000000000
+ Margins.Top = 9.000000000000000000
+ Margins.Bottom = 9.000000000000000000
+ Align = Left
+ Position.X = 9.000000000000000000
+ Position.Y = 9.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -50.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ end
+ object TLayout
+ StyleName = 'Layout2'
+ Align = Left
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'icon'
+ Align = Center
+ Data.Path = {
+ A0000000000000009A9987429A99074302000000010076429A99074302000000
+ 01005E42CDCC064302000000343347423433054302000000010030429A990343
+ 0200000067661A42CE4C01430200000067660642CECCFC4202000000CECCE441
+ 0100F742020000000100C041CECCEF420200000034339F419B99E74202000000
+ CECC7C416866DF4202000000353343413533D64202000000CECC14413533CC42
+ 020000009A99C9400000C24202000000000080403333B742020000009A991940
+ CDCCAB4202000000CDCC4C3F3333A04202000000000000003333944202000000
+ 000000009A99874202000000000000000100764202000000CDCC4C3F01005E42
+ 020000009A991940CECC4642020000000000804000003042020000009A99C940
+ 66661A42020000003333134166660642020000009A994141CCCCE44102000000
+ 33337B41FFFFBF410200000066669E4132339F41020000003333BF41CACC7C41
+ 020000000000E441313343410200000000000642CACC14410200000066661A42
+ 9A99C94002000000000030420000804002000000333347429A99194002000000
+ 00005E42CDCC4C3F020000006666764200000000020000009A99874200000000
+ 020000003433944200000000020000003433A042CDCC4C3F02000000CDCCAB42
+ 9A991940020000003333B74200008040020000000000C2429A99C94002000000
+ 3333CC4233331341020000003333D6429A994141020000006666DF4233337B41
+ 020000009999E74266669E4102000000CCCCEF423333BF4102000000FFFFF642
+ 0000E44102000000CCCCFC420000064202000000CC4C014300001A4202000000
+ 999903439A992F420200000033330543CDCC464202000000CDCC064300005E42
+ 02000000999907430000764202000000999907439A9987420200000099990743
+ 3433944202000000CCCC06433433A0420200000033330543CDCCAB4202000000
+ 999903436766B74202000000CD4C01433333C24202000000CCCCFC423433CC42
+ 02000000FFFFF6423433D64202000000CCCCEF426766DF42020000009999E742
+ 9A99E742020000006666DF42CDCCEF42020000003333D6420000F74202000000
+ 3333CC42CDCCFC42020000003333C242CD4C0143020000006666B7429A990343
+ 02000000CCCCAB4233330543020000003333A042CDCC06430200000033339442
+ 9A990743020000009A9987429A990743030000009A9987429A99074300000000
+ 9A99874200001041020000009A9979420000104102000000CECC644233331B41
+ 02000000CECC50429A99314102000000CECC3C42000048410200000001002A42
+ 0000684102000000CECC184200008841020000003433074200009C4102000000
+ 3633EF41CDCCB441020000006966D2419A99D141020000009C99B5416766EE41
+ 020000009C999D41CDCC064202000000D0CC88416666184202000000A0996941
+ 00002A4202000000A099494166663C42020000003A333341CCCC504202000000
+ 33331B4133336542020000000000104100007A4202000000000010419A998742
+ 0200000000001041343392420200000033331B41CDCC9C42020000009A993141
+ CDCCA6420200000000004841CDCCB04202000000000068413333BA4202000000
+ 000088410000C3420200000000009C41CDCCCB4202000000CDCCB4419A99D342
+ 020000009A99D141CDCCDA42020000006766EE410000E24202000000CDCC0642
+ 0000E84202000000666618423333ED420200000000002A423333F24202000000
+ 66663C423333F64202000000666650420000F9420200000066666442CDCCFB42
+ 02000000333379423333FD4202000000666687423333FD420200000033339242
+ 3333FD420200000099999C42CDCCFB42020000009999A6420000F94202000000
+ 9999B0423333F64202000000FFFFB9423333F24202000000CCCCC2423333ED42
+ 020000009999CB423333E842020000006666D3420000E242020000009999DA42
+ CDCCDA4202000000CCCCE1429A99D34202000000CCCCE742CDCCCB4202000000
+ FFFFEC420000C34202000000FFFFF1423333BA4202000000FFFFF5420000B142
+ 02000000CCCCF8420000A742020000009999FB4200009D4202000000FFFFFC42
+ 9A99924202000000FFFFFC42CDCC874202000000FFFFFC4200007A4202000000
+ 9999FB423433654202000000CCCCF8423433514202000000FFFFF54234333D42
+ 02000000FFFFF14267662A4202000000FFFFEC42CECC184202000000FFFFE742
+ 3433074202000000CCCCE1423633EF41020000009999DA426966D24102000000
+ 6666D3429C99B541020000009999CB429C999D4102000000CCCCC242D0CC8841
+ 02000000FFFFB942A099694102000000CCCCB042A0994941020000009999A642
+ 3A33334102000000CDCC9C4233331B4102000000666692420000104102000000
+ 9A99874200001041030000009A998742000010410000000033337D42CDCC1042
+ 010000009A999042CDCC1042010000009A999042CDCC34420100000034337D42
+ CDCC34420100000034337D42CDCC10420300000033337D42CDCC104200000000
+ 33337D4233335942010000009A99904233335942010000009A9990420000C742
+ 0100000034337D420000C7420100000034337D42333359420300000033337D42
+ 33335942}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 26.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'organizetoolbuttonmultiview'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 119
+ FixedHeight = 50
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 9.000000000000000000
+ Margins.Top = 9.000000000000000000
+ Margins.Bottom = 9.000000000000000000
+ Align = Left
+ Position.X = 9.000000000000000000
+ Position.Y = 9.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -50.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ TextSettings.FontColor = claWhite
+ end
+ object TLayout
+ StyleName = 'Layout2'
+ Align = Left
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'icon'
+ Align = Center
+ Data.Path = {
+ 11000000000000009A99E9409A99C940010000006666664066661E4101000000
+ 000000009A99C940010000000000003F9A99B94001000000CDCC4C409A990941
+ 01000000CDCC4C40000000000100000000008040000000000100000000008040
+ 00000841010000006666D6406666B640010000009A99E9409A99C94003000000
+ 9A99E9409A99C940000000009A99993E00004041010000009A99993E33333341
+ 010000000000E04033333341010000000000E04000004041010000009A99993E
+ 00004041030000009A99993E00004041}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 26.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'settingstoolbuttonmultiview'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 122
+ FixedHeight = 50
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 9.000000000000000000
+ Margins.Top = 9.000000000000000000
+ Margins.Bottom = 9.000000000000000000
+ Align = Left
+ Position.X = 9.000000000000000000
+ Position.Y = 9.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -50.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ end
+ object TLayout
+ StyleName = 'Layout2'
+ Align = Left
+ Size.Width = 50.000000000000000000
+ Size.Height = 50.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'icon'
+ Align = Center
+ Data.Path = {
+ 1C01000000000000333351423333E7410200000033335142CDCCE84102000000
+ 333351426666EA4102000000333351423333EB410200000033335142CDCCEC41
+ 02000000333351426666EE4102000000333351423333EF410200000033335142
+ CDCCF04102000000333351426666F24102000000333351423333F34102000000
+ 33335142CDCCF44102000000333351426666F64102000000333351423333F741
+ 0100000099996F4266660E4201000000CDCC5C4200003C420100000000003A42
+ 0000344202000000000038420000364202000000000036420000384202000000
+ 0000344200003A420100000000003C42CDCC5C4201000000CDCC0E429A996F42
+ 010000000000F84133335142020000006666F6413333514202000000CDCCF441
+ 33335142020000000000F44133335142020000006666F2413333514202000000
+ CDCCF04133335142020000000000F04133335142020000006666EE4133335142
+ 02000000CDCCEC4133335142020000000000EC4133335142020000006666EA41
+ 3333514202000000CDCCE84133335142020000000000E8413333514201000000
+ 6666C24199996F4201000000FFFF4F41CCCC5C4201000000FFFF6F41FFFF3942
+ 02000000FFFF6741FFFF374202000000FFFF5F41FFFF354202000000FFFF5741
+ FFFF33420100000098999940FFFF3B420100000000000000CDCC0E4201000000
+ 3333F3400000F841020000003333F3406666F641020000003333F340CDCCF441
+ 020000003333F3400000F441020000003333F3406666F241020000003333F340
+ CDCCF041020000003333F3400000F041020000003333F3406666EE4102000000
+ 3333F340CDCCEC41020000003333F3400000EC41020000003333F3406666EA41
+ 020000003333F340CDCCE841020000003333F3400000E8410100000000000000
+ CDCCC0410100000066669640CDCC4C410100000066665641CDCC6C4102000000
+ 66665E41CDCC64410200000066666641CDCC5C410200000066666E41CDCC5441
+ 0100000066664E413433934001000000CDCCC04100000000010000006666E641
+ 3333F340020000000000E8413333F340020000009999E9413333F34002000000
+ 6666EA413333F340020000000000EC413333F340020000009999ED413333F340
+ 020000006666EE413333F340020000000000F0413333F340020000009999F141
+ 3333F340020000006666F2413333F340020000000000F4413333F34002000000
+ 9999F5413333F340020000006666F6413333F34001000000CDCC0E4200000000
+ 0100000000003C42666696400100000000003442666656410200000000003642
+ 66665E410200000000003842666666410200000000003A4266666E4101000000
+ CDCC5C4266664E41010000009A996F429A99C14101000000333351423333E741
+ 03000000333351423333E7410000000033334342CDCC02420200000033334342
+ CDCC004202000000999943426766FE4102000000999943426766FA4102000000
+ 999943426766F64102000000FFFF43423433F34102000000FFFF43423433EF41
+ 02000000FFFF43423433EB4102000000FFFF43420100E8410200000099994342
+ 0100E44102000000999943420100E0410200000033334342CECCDC4102000000
+ 33334342CECCD84101000000CDCC5E426866B64101000000CDCC54429B998541
+ 01000000CDCC3442CECC9441020000006766324234338F410200000000003042
+ 9B9989410200000033332D42010084410200000066662A42CECC7C4102000000
+ 000028423533734102000000CDCC24429C9969410100000067662C423833D340
+ 0100000001001442383383400100000067660242020030410200000067660042
+ 02003041020000009B99FD4168662E41020000009B99F94168662E4102000000
+ 9B99F54168662E41020000006866F241CECC2C41020000006866EE41CECC2C41
+ 020000006866EA41CECC2C41020000003533E741CECC2C41020000003533E341
+ 68662E41020000003533DF4168662E41020000000200DC410200304102000000
+ 0200D84102003041010000009C99B5413733834001000000CFCC84413733D340
+ 01000000020094419C9969410200000068668E413633734102000000CFCC8841
+ CFCC7C410200000035338341010084410200000036337B419A99894102000000
+ 9D99714167668E410200000004006841CECC9441010000000800D0409B998541
+ 01000000080080406866B641010000006A662E419B99D941020000006A662E41
+ 9B99DD4102000000D0CC2C41CECCE04102000000D0CC2C41CECCE44102000000
+ D0CC2C41CECCE8410200000036332B410100EC410200000036332B410100F041
+ 0200000036332B410100F4410200000036332B413433F74102000000D0CC2C41
+ 3433FB4102000000D0CC2C413433FF41020000006A662E413433014202000000
+ 6A662E4134330342010000000700804067661442010000000700D040CDCC2C42
+ 010000000400684133332542020000009E997141000028420200000037337B41
+ CDCC2A42020000003533834199992D4202000000CECC88416566304202000000
+ 9B998D41CCCC324202000000020094413333354201000000CFCC844133335542
+ 010000009C99B54133335F4201000000CFCCD8419999434202000000CFCCDC41
+ 99994342020000000200E041FFFF4342020000000200E441FFFF434202000000
+ 0200E841FFFF4342020000003533EB4165664442020000003533EF4165664442
+ 020000003533F34165664442020000006866F64165664442020000006866FA41
+ FFFF4342020000006866FE41FFFF434202000000CECC00429999434202000000
+ CECC024299994342010000000100144233335F420100000067662C4233335542
+ 01000000CDCC244233333542020000009A992742CDCC32420200000067662A42
+ 666630420200000033332D4299992D4202000000FFFF2F42CCCC2A4202000000
+ 666632426666284202000000CDCC34423333254201000000CDCC5442CDCC2C42
+ 01000000CDCC5E42676614420100000033334342CDCC02420300000033334342
+ CDCC0242000000003333EF4133339741020000003333FB413333974102000000
+ 9A9903429999994102000000CDCC084266669E410200000000000E423333A341
+ 02000000CDCC12429999A94102000000CDCC16429999B14102000000CDCC1A42
+ 9999B9410200000000001E423333C34102000000676620429999CD4102000000
+ CDCC2242FFFFD7410200000001002442FFFFE34102000000010024420000F041
+ 02000000010024420100FC4102000000CECC2242000004420200000067662042
+ 333309420200000001001E4266660E4202000000CDCC1A423333134202000000
+ CDCC16423333174202000000CDCC124233331B420200000000000E4266661E42
+ 02000000CDCC0842CDCC2042020000009A99034233332342020000003433FB41
+ 67662442020000003433EF4167662442020000003433E3416766244202000000
+ 3433D7413433234202000000CECCCC41CDCC2042020000006866C24167661E42
+ 02000000CECCB84133331B4202000000CECCB0413333174202000000CECCA841
+ 33331342020000006866A24166660E42020000009B999D413333094202000000
+ CECC98410000044202000000686696410000FC4102000000686696410000F041
+ 02000000686696410000E44102000000CECC98410000D841020000009B999D41
+ 9A99CD41020000006866A2413433C34102000000CECCA8419A99B94102000000
+ CECCB0419A99B14102000000CECCB8419A99A941020000006866C2413433A341
+ 02000000CECCCC4167669E41020000000000D8419A999941020000003333E341
+ 33339741020000003333EF4133339741030000003333EF413333974100000000
+ 3333EF41CDCC1642020000000000F841CDCC1642020000000000004200001642
+ 020000009A990342676614420200000034330742CDCC124202000000CDCC0A42
+ 67661042020000009A990D429A990D420200000067661042CDCC0A4202000000
+ CDCC12429A99074202000000676614429A990342020000000100164200000042
+ 02000000CDCC16423433F74102000000CDCC16423433EF4102000000CDCC1642
+ 6766E64102000000000016426766DE4102000000676614423433D74102000000
+ CDCC12420100D0410200000067661042CECCC841020000009A990D423433C341
+ 02000000CDCC0A429A99BD41020000009A990742CECCB841020000009A990342
+ 9A99B54102000000000000426766B241020000003433F741CDCCB04102000000
+ 3433EF41CDCCB041020000006766E641CDCCB041020000006766DE416766B241
+ 020000003433D7419A99B541020000000100D041CDCCB84102000000CECCC841
+ 9A99BD41020000003433C3413433C341020000009A99BD41CECCC84102000000
+ CECCB8413433CF41020000009A99B5413433D741020000006766B2416766DE41
+ 02000000CDCCB0413433E74102000000CDCCB0413433EF4102000000CDCCB041
+ 0100F841020000006766B24100000042020000009A99B5419A99034202000000
+ CDCCB84134330742020000009A99BD41CDCC0A42020000003433C3419A990D42
+ 02000000CECCC84167661042020000003433CF41CDCC1242020000003433D741
+ 67661442020000003333DF4100001642020000003333E741CDCC164202000000
+ 3333EF41CDCC1642030000003333EF41CDCC1642}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 26.000000000000000000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'removebuttonstyle'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 126
+ FixedHeight = 24
+ object TGlyph
+ StyleName = 'glyphstyle'
+ Margins.Left = 9.000000000000000000
+ Margins.Top = 9.000000000000000000
+ Margins.Bottom = 9.000000000000000000
+ Align = Left
+ Position.X = 33.000000000000000000
+ Position.Y = 9.000000000000000000
+ Size.Width = 32.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = xFF202020
+ HitTest = False
+ Margins.Left = -24.000000000000000000
+ Size.Width = 100.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 76.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ end
+ object TLayout
+ StyleName = 'Layout2'
+ Align = Left
+ Size.Width = 24.000000000000000000
+ Size.Height = 24.000000000000000000
+ Size.PlatformDefault = False
+ object TPath
+ StyleName = 'icon'
+ Align = Contents
+ Data.Path = {
+ 060000000000000000004041CDCC4C3F0100000000000000CDCC4C3F01000000
+ 00000000000000000100000000004041000000000100000000004041CDCC4C3F
+ 0300000000004041CDCC4C3F}
+ Fill.Color = claWhite
+ HitTest = False
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Margins.Bottom = 4.000000000000000000
+ Size.Width = 16.000000000000000000
+ Size.Height = 16.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ WrapMode = Fit
+ end
+ end
+ end
+ object TRectangle
+ StyleName = 'popupbackgroundstyle'
+ Align = Center
+ Fill.Color = xFF2D2D2D
+ Size.Width = 296.000000000000000000
+ Size.Height = 210.500000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ Visible = False
+ end
+ object TLayout
+ StyleName = 'progressbarminifinishstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 75
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Size.Width = 50.000000000000000000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF404040
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2CE244
+ Locked = True
+ HitTest = False
+ Position.Y = 35.399997711181640000
+ Size.Width = 66.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'progressbarstyle'
+ Align = Center
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 63
+ object TRectangle
+ StyleName = 'htrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TRectangle
+ StyleName = 'hindicator'
+ Align = Left
+ Fill.Color = xFF2A82E2
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 1.000000000000000000
+ Size.Width = 50.000000000000000000
+ Size.Height = 54.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ object TRectangle
+ StyleName = 'vtrack'
+ Align = Contents
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 66.599998474121090000
+ Size.Height = 56.399997711181640000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TRectangle
+ StyleName = 'vindicator'
+ Align = Bottom
+ Fill.Color = xFF2A82E2
+ Locked = True
+ HitTest = False
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Position.X = 1.000000000000000000
+ Position.Y = 34.399997711181640000
+ Size.Width = 64.599998474121090000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'windowborderstyle'
+ Align = Center
+ Size.Width = 351.666687011718800000
+ Size.Height = 179.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 58
+ object TRectangle
+ StyleName = 'mask'
+ Align = Contents
+ Fill.Color = xFF101010
+ Size.Width = 351.666687011718800000
+ Size.Height = 179.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ Visible = False
+ end
+ object TLayout
+ StyleName = 'left'
+ Align = MostLeft
+ Locked = True
+ Position.Y = 32.000000000000000000
+ Size.Width = 4.000000000000000000
+ Size.Height = 147.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ Align = MostLeft
+ Fill.Color = xFF202020
+ HitTest = False
+ Sides = [Left, Right]
+ Size.Width = 4.000000000000000000
+ Size.Height = 143.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = MostBottom
+ EnableDragHighlight = False
+ Fill.Color = xFF202020
+ HitTest = False
+ Position.Y = 143.000000000000000000
+ Sides = [Left, Bottom]
+ Size.Width = 4.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'Layout3'
+ Align = MostRight
+ Position.X = 3.000000000000000000
+ Size.Width = 1.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = Top
+ Fill.Color = xFF151515
+ HitTest = False
+ Size.Width = 1.000000000000000000
+ Size.Height = 1.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'right'
+ Align = MostRight
+ Locked = True
+ Position.X = 347.666687011718800000
+ Position.Y = 32.000000000000000000
+ Size.Width = 4.000000000000000000
+ Size.Height = 147.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ Align = MostRight
+ Fill.Color = xFF202020
+ HitTest = False
+ Sides = [Left, Right]
+ Size.Width = 4.000000000000000000
+ Size.Height = 143.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = MostBottom
+ EnableDragHighlight = False
+ Fill.Color = xFF202020
+ HitTest = False
+ Position.Y = 143.000000000000000000
+ Sides = [Bottom, Right]
+ Size.Width = 4.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'Layout3'
+ Align = MostLeft
+ Size.Width = 1.000000000000000000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'Rectangle1'
+ Align = Top
+ Fill.Color = xFF151515
+ HitTest = False
+ Size.Width = 1.000000000000000000
+ Size.Height = 1.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ end
+ end
+ end
+ object TRectangle
+ Align = MostTop
+ Fill.Color = xFF202020
+ Locked = True
+ HitTest = False
+ Size.Width = 351.666687011718800000
+ Size.Height = 32.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ object TLayout
+ StyleName = 'caption'
+ Align = Contents
+ Locked = True
+ HitTest = True
+ Margins.Left = 4.000000000000000000
+ Margins.Top = 4.000000000000000000
+ Margins.Right = 4.000000000000000000
+ Size.Width = 343.666687011718800000
+ Size.Height = 28.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ Align = Client
+ Locked = True
+ Margins.Left = 1.000000000000000000
+ Margins.Top = 1.000000000000000000
+ Margins.Right = 1.000000000000000000
+ Margins.Bottom = 1.000000000000000000
+ Size.Width = 349.666687011718800000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ object TLayout
+ Align = Left
+ Locked = True
+ Size.Width = 9.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'icon'
+ Locked = True
+ Position.X = 9.000000000000000000
+ Position.Y = 7.000000000000000000
+ Size.Width = 25.000000000000000000
+ Size.Height = 21.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'sysbtns'
+ Align = Client
+ Locked = True
+ Size.Width = 340.666687011718800000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ object TSpeedButton
+ StyleName = 'close'
+ Align = Right
+ Locked = True
+ Position.X = 290.666687011718800000
+ Size.Width = 50.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'closebuttonstyle'
+ end
+ object TSpeedButton
+ StyleName = 'max'
+ Align = Right
+ Locked = True
+ Position.X = 258.666687011718800000
+ Size.Width = 32.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'maxbuttonstyle'
+ end
+ object TSpeedButton
+ StyleName = 'res'
+ Align = Right
+ Locked = True
+ Position.X = 226.666687011718800000
+ Size.Width = 32.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'resbuttonstyle'
+ end
+ object TSpeedButton
+ StyleName = 'min'
+ Align = Right
+ Locked = True
+ Position.X = 194.666687011718800000
+ Size.Width = 32.000000000000000000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ StyleLookup = 'minbuttonstyle'
+ end
+ object TText
+ StyleName = 'title'
+ Align = Client
+ Locked = True
+ HitTest = False
+ Size.Width = 194.666687011718800000
+ Size.Height = 30.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Title'
+ TextSettings.FontColor = claWhite
+ end
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'client'
+ Align = Client
+ Locked = True
+ HitTest = True
+ Size.Width = 343.666687011718800000
+ Size.Height = 143.000000000000000000
+ Size.PlatformDefault = False
+ end
+ object TLayout
+ StyleName = 'bottom'
+ Align = Bottom
+ Locked = True
+ Position.X = 4.000000000000000000
+ Position.Y = 175.000000000000000000
+ Size.Width = 343.666687011718800000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ object TRectangle
+ StyleName = 'rect'
+ Align = Bottom
+ Fill.Color = xFF202020
+ HitTest = False
+ Sides = [Top, Bottom]
+ Size.Width = 343.666687011718800000
+ Size.Height = 4.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Color = xFF151515
+ end
+ end
+ end
+ object TLayout
+ StyleName = 'arrowdowntoolbutton'
+ Align = Center
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Visible = False
+ TabOrder = 1
+ object TRectangle
+ StyleName = 'background'
+ Align = Client
+ ClipChildren = True
+ ClipParent = True
+ Fill.Color = x00202020
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation1'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = x00202020
+ StopValue = xFF404040
+ Trigger = 'IsMouseOver=true;IsPressed=false;IsFocused=false'
+ TriggerInverse = 'IsMouseOver=false;IsPressed=false;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation2'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF404040
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=false'
+ end
+ object TColorAnimation
+ StyleName = 'buttonColorAnimation3'
+ Duration = 0.000000000000000000
+ PropertyName = 'Fill.Color'
+ StartValue = xFF2A82E2
+ StopValue = xFF17579C
+ Trigger = 'IsPressed=true;IsMouseOver=true;IsFocused=true'
+ TriggerInverse = 'IsPressed=false;IsMouseOver=true;IsFocused=true'
+ end
+ end
+ object TPath
+ StyleName = 'path'
+ Align = Center
+ Data.Path = {
+ 04000000000000000000C8420000C84201000000000096430000C84201000000
+ 0000484300009643030000000000C8420000C842}
+ Fill.Color = claWhite
+ HitTest = False
+ Size.Width = 10.000000000000000000
+ Size.Height = 6.000000000000000000
+ Size.PlatformDefault = False
+ Stroke.Kind = None
+ end
+ object TText
+ StyleName = 'text'
+ Align = Client
+ HitTest = False
+ Size.Width = 100.000000000000000000
+ Size.Height = 25.000000000000000000
+ Size.PlatformDefault = False
+ Text = 'Text'
+ TextSettings.FontColor = claWhite
+ Visible = False
+ end
+ end
end