mirror of
https://github.com/argonlefou/TSR_Loader.git
synced 2024-12-18 00:45:53 +01:00
First commit
This commit is contained in:
commit
5260319a91
673
.gitignore
vendored
Normal file
673
.gitignore
vendored
Normal file
@ -0,0 +1,673 @@
|
|||||||
|
# Created by https://www.gitignore.io/api/visualstudio
|
||||||
|
|
||||||
|
### VisualStudio ###
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
#Licenced DLL for Unity plugin
|
||||||
|
Assembly-CSharp.dll
|
||||||
|
UnityEngine.dll
|
||||||
|
UnityEngine.Networking.dll
|
||||||
|
UnityEngine.UI.dll
|
||||||
|
UnityEngine*.dll
|
||||||
|
Virtuallyz*.dll
|
||||||
|
Unity*.dll
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.idea/
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# CodeRush
|
||||||
|
.cr/
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
### VisualStudio Patch ###
|
||||||
|
# By default, sensitive information, such as encrypted password
|
||||||
|
# should be stored in the .pubxml.user file.
|
||||||
|
*.pubxml.user
|
||||||
|
|
||||||
|
|
||||||
|
# End of https://www.gitignore.io/api/visualstudio
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
**/Properties/launchSettings.json
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.idea/
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# CodeRush
|
||||||
|
.cr/
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
26
Transformers2.sln
Normal file
26
Transformers2.sln
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual C# Express 2010
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Transformers2_Launcher", "Transformers2_Launcher\Transformers2_Launcher.csproj", "{5D726FF6-B1A8-43C7-BEE8-EFC9E1E88DE0}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Transformers2_Configurator", "Transformers2_Configurator\Transformers2_Configurator.csproj", "{98C69C86-F8A8-4949-903C-B89D93B78A21}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{5D726FF6-B1A8-43C7-BEE8-EFC9E1E88DE0}.Debug|x86.ActiveCfg = Release|x86
|
||||||
|
{5D726FF6-B1A8-43C7-BEE8-EFC9E1E88DE0}.Debug|x86.Build.0 = Release|x86
|
||||||
|
{5D726FF6-B1A8-43C7-BEE8-EFC9E1E88DE0}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{5D726FF6-B1A8-43C7-BEE8-EFC9E1E88DE0}.Release|x86.Build.0 = Release|x86
|
||||||
|
{98C69C86-F8A8-4949-903C-B89D93B78A21}.Debug|x86.ActiveCfg = Release|x86
|
||||||
|
{98C69C86-F8A8-4949-903C-B89D93B78A21}.Debug|x86.Build.0 = Release|x86
|
||||||
|
{98C69C86-F8A8-4949-903C-B89D93B78A21}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{98C69C86-F8A8-4949-903C-B89D93B78A21}.Release|x86.Build.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
20
Transformers2_Configurator/Program.cs
Normal file
20
Transformers2_Configurator/Program.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Transformers2_Configurator
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Point d'entrée principal de l'application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new WndMain());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
35
Transformers2_Configurator/Properties/AssemblyInfo.cs
Normal file
35
Transformers2_Configurator/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// Les informations générales relatives à un assembly dépendent de
|
||||||
|
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
|
||||||
|
// associées à un assembly.
|
||||||
|
[assembly: AssemblyTitle("Transformers2_Configurator")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Transformers2_Configurator")]
|
||||||
|
[assembly: AssemblyCopyright("Argonlefou © 2024")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
|
||||||
|
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
|
||||||
|
// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
|
||||||
|
[assembly: Guid("4366bc2d-3164-46cf-bd7f-ff5aee506506")]
|
||||||
|
|
||||||
|
// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
|
||||||
|
//
|
||||||
|
// Version principale
|
||||||
|
// Version secondaire
|
||||||
|
// Numéro de build
|
||||||
|
// Révision
|
||||||
|
//
|
||||||
|
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
|
||||||
|
// en utilisant '*', comme indiqué ci-dessous :
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
63
Transformers2_Configurator/Properties/Resources.Designer.cs
generated
Normal file
63
Transformers2_Configurator/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Ce code a été généré par un outil.
|
||||||
|
// Version du runtime :4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
|
||||||
|
// le code est régénéré.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Transformers2_Configurator.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
|
||||||
|
/// </summary>
|
||||||
|
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
|
||||||
|
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
|
||||||
|
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
|
||||||
|
// avec l'option /str ou régénérez votre projet VS.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Transformers2_Configurator.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
|
||||||
|
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
Transformers2_Configurator/Properties/Resources.resx
Normal file
120
Transformers2_Configurator/Properties/Resources.resx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
26
Transformers2_Configurator/Properties/Settings.Designer.cs
generated
Normal file
26
Transformers2_Configurator/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Ce code a été généré par un outil.
|
||||||
|
// Version du runtime :4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
|
||||||
|
// le code est régénéré.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Transformers2_Configurator.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
Transformers2_Configurator/Properties/Settings.settings
Normal file
7
Transformers2_Configurator/Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
95
Transformers2_Configurator/Transformers2_Configurator.csproj
Normal file
95
Transformers2_Configurator/Transformers2_Configurator.csproj
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||||
|
<ProductVersion>8.0.30703</ProductVersion>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>{98C69C86-F8A8-4949-903C-B89D93B78A21}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Transformers2_Configurator</RootNamespace>
|
||||||
|
<AssemblyName>Transformers2_Configurator</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||||
|
<TargetFrameworkProfile>
|
||||||
|
</TargetFrameworkProfile>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>chip-processor-svgrepo-com.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="WndMain.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="WndMain.Designer.cs">
|
||||||
|
<DependentUpon>WndMain.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="WndMain.resx">
|
||||||
|
<DependentUpon>WndMain.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="app.config" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="chip-processor-svgrepo-com.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Resources\" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
697
Transformers2_Configurator/WndMain.Designer.cs
generated
Normal file
697
Transformers2_Configurator/WndMain.Designer.cs
generated
Normal file
@ -0,0 +1,697 @@
|
|||||||
|
namespace Transformers2_Configurator
|
||||||
|
{
|
||||||
|
partial class WndMain
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Variable nécessaire au concepteur.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Nettoyage des ressources utilisées.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Code généré par le Concepteur Windows Form
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
|
||||||
|
/// le contenu de cette méthode avec l'éditeur de code.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WndMain));
|
||||||
|
this.Cbox_EntryType = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_FreePlay = new System.Windows.Forms.ComboBox();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.Cbox_EnglishSubtitles = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label15 = new System.Windows.Forms.Label();
|
||||||
|
this.label21 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_FirstMn = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label20 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_EnnemyBoost = new System.Windows.Forms.ComboBox();
|
||||||
|
this.Cbox_Language = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label19 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_Swipe = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label10 = new System.Windows.Forms.Label();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_StageSelect = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_KidsMode = new System.Windows.Forms.ComboBox();
|
||||||
|
this.Cbox_ContinueCountdown = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_P2Recoil = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label12 = new System.Windows.Forms.Label();
|
||||||
|
this.label13 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_P1Recoil = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label14 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_Advertise = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_Difficulty = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_Revival = new System.Windows.Forms.ComboBox();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.Btn_Close = new System.Windows.Forms.Button();
|
||||||
|
this.Btn_Save = new System.Windows.Forms.Button();
|
||||||
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label24 = new System.Windows.Forms.Label();
|
||||||
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label16 = new System.Windows.Forms.Label();
|
||||||
|
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_ScreenMode = new System.Windows.Forms.ComboBox();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.label11 = new System.Windows.Forms.Label();
|
||||||
|
this.Cbox_Resolution = new System.Windows.Forms.ComboBox();
|
||||||
|
this.groupBox1.SuspendLayout();
|
||||||
|
this.groupBox2.SuspendLayout();
|
||||||
|
this.groupBox3.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// Cbox_EntryType
|
||||||
|
//
|
||||||
|
this.Cbox_EntryType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.Cbox_EntryType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_EntryType.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_EntryType.FormattingEnabled = true;
|
||||||
|
this.Cbox_EntryType.Items.AddRange(new object[] {
|
||||||
|
"COIN",
|
||||||
|
"CARD",
|
||||||
|
"SWIPE"});
|
||||||
|
this.Cbox_EntryType.Location = new System.Drawing.Point(162, 62);
|
||||||
|
this.Cbox_EntryType.Name = "Cbox_EntryType";
|
||||||
|
this.Cbox_EntryType.Size = new System.Drawing.Size(86, 24);
|
||||||
|
this.Cbox_EntryType.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label2.Location = new System.Drawing.Point(6, 65);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(88, 16);
|
||||||
|
this.label2.TabIndex = 2;
|
||||||
|
this.label2.Text = "ENTRY TYPE";
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label1.Location = new System.Drawing.Point(6, 35);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(72, 16);
|
||||||
|
this.label1.TabIndex = 1;
|
||||||
|
this.label1.Text = "FREEPLAY";
|
||||||
|
//
|
||||||
|
// Cbox_FreePlay
|
||||||
|
//
|
||||||
|
this.Cbox_FreePlay.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.Cbox_FreePlay.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_FreePlay.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_FreePlay.FormattingEnabled = true;
|
||||||
|
this.Cbox_FreePlay.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_FreePlay.Location = new System.Drawing.Point(162, 32);
|
||||||
|
this.Cbox_FreePlay.Name = "Cbox_FreePlay";
|
||||||
|
this.Cbox_FreePlay.Size = new System.Drawing.Size(86, 24);
|
||||||
|
this.Cbox_FreePlay.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||||
|
this.panel2.Location = new System.Drawing.Point(305, 21);
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
this.panel2.Size = new System.Drawing.Size(4, 225);
|
||||||
|
this.panel2.TabIndex = 34;
|
||||||
|
//
|
||||||
|
// Cbox_EnglishSubtitles
|
||||||
|
//
|
||||||
|
this.Cbox_EnglishSubtitles.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_EnglishSubtitles.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_EnglishSubtitles.FormattingEnabled = true;
|
||||||
|
this.Cbox_EnglishSubtitles.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_EnglishSubtitles.Location = new System.Drawing.Point(507, 157);
|
||||||
|
this.Cbox_EnglishSubtitles.Name = "Cbox_EnglishSubtitles";
|
||||||
|
this.Cbox_EnglishSubtitles.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_EnglishSubtitles.TabIndex = 33;
|
||||||
|
//
|
||||||
|
// label15
|
||||||
|
//
|
||||||
|
this.label15.AutoSize = true;
|
||||||
|
this.label15.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label15.Location = new System.Drawing.Point(341, 160);
|
||||||
|
this.label15.Name = "label15";
|
||||||
|
this.label15.Size = new System.Drawing.Size(144, 16);
|
||||||
|
this.label15.TabIndex = 32;
|
||||||
|
this.label15.Text = "ENGLISH SUBTITLES";
|
||||||
|
//
|
||||||
|
// label21
|
||||||
|
//
|
||||||
|
this.label21.AutoSize = true;
|
||||||
|
this.label21.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label21.Location = new System.Drawing.Point(341, 65);
|
||||||
|
this.label21.Name = "label21";
|
||||||
|
this.label21.Size = new System.Drawing.Size(160, 16);
|
||||||
|
this.label21.TabIndex = 31;
|
||||||
|
this.label21.Text = "1ST MINUTE GAMEPLAY";
|
||||||
|
//
|
||||||
|
// Cbox_FirstMn
|
||||||
|
//
|
||||||
|
this.Cbox_FirstMn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_FirstMn.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_FirstMn.FormattingEnabled = true;
|
||||||
|
this.Cbox_FirstMn.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"90s",
|
||||||
|
"120s",
|
||||||
|
"180s"});
|
||||||
|
this.Cbox_FirstMn.Location = new System.Drawing.Point(507, 62);
|
||||||
|
this.Cbox_FirstMn.Name = "Cbox_FirstMn";
|
||||||
|
this.Cbox_FirstMn.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_FirstMn.TabIndex = 30;
|
||||||
|
//
|
||||||
|
// label20
|
||||||
|
//
|
||||||
|
this.label20.AutoSize = true;
|
||||||
|
this.label20.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label20.Location = new System.Drawing.Point(341, 35);
|
||||||
|
this.label20.Name = "label20";
|
||||||
|
this.label20.Size = new System.Drawing.Size(104, 16);
|
||||||
|
this.label20.TabIndex = 29;
|
||||||
|
this.label20.Text = "ENNEMY BOOST";
|
||||||
|
//
|
||||||
|
// Cbox_EnnemyBoost
|
||||||
|
//
|
||||||
|
this.Cbox_EnnemyBoost.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_EnnemyBoost.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_EnnemyBoost.FormattingEnabled = true;
|
||||||
|
this.Cbox_EnnemyBoost.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"MID",
|
||||||
|
"HIGH"});
|
||||||
|
this.Cbox_EnnemyBoost.Location = new System.Drawing.Point(507, 32);
|
||||||
|
this.Cbox_EnnemyBoost.Name = "Cbox_EnnemyBoost";
|
||||||
|
this.Cbox_EnnemyBoost.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_EnnemyBoost.TabIndex = 28;
|
||||||
|
//
|
||||||
|
// Cbox_Language
|
||||||
|
//
|
||||||
|
this.Cbox_Language.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_Language.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_Language.FormattingEnabled = true;
|
||||||
|
this.Cbox_Language.Items.AddRange(new object[] {
|
||||||
|
"ENGLISH",
|
||||||
|
"CHINESE",
|
||||||
|
"SPANISH",
|
||||||
|
"PORTUGUESE",
|
||||||
|
"ITALIAN",
|
||||||
|
"TURKISH",
|
||||||
|
"RUSSIAN"});
|
||||||
|
this.Cbox_Language.Location = new System.Drawing.Point(153, 32);
|
||||||
|
this.Cbox_Language.Name = "Cbox_Language";
|
||||||
|
this.Cbox_Language.Size = new System.Drawing.Size(121, 24);
|
||||||
|
this.Cbox_Language.TabIndex = 27;
|
||||||
|
//
|
||||||
|
// label19
|
||||||
|
//
|
||||||
|
this.label19.AutoSize = true;
|
||||||
|
this.label19.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label19.Location = new System.Drawing.Point(19, 35);
|
||||||
|
this.label19.Name = "label19";
|
||||||
|
this.label19.Size = new System.Drawing.Size(72, 16);
|
||||||
|
this.label19.TabIndex = 26;
|
||||||
|
this.label19.Text = "LANGUAGE";
|
||||||
|
//
|
||||||
|
// Cbox_Swipe
|
||||||
|
//
|
||||||
|
this.Cbox_Swipe.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_Swipe.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_Swipe.FormattingEnabled = true;
|
||||||
|
this.Cbox_Swipe.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_Swipe.Location = new System.Drawing.Point(507, 187);
|
||||||
|
this.Cbox_Swipe.Name = "Cbox_Swipe";
|
||||||
|
this.Cbox_Swipe.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_Swipe.TabIndex = 25;
|
||||||
|
//
|
||||||
|
// label10
|
||||||
|
//
|
||||||
|
this.label10.AutoSize = true;
|
||||||
|
this.label10.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label10.Location = new System.Drawing.Point(341, 190);
|
||||||
|
this.label10.Name = "label10";
|
||||||
|
this.label10.Size = new System.Drawing.Size(152, 16);
|
||||||
|
this.label10.TabIndex = 24;
|
||||||
|
this.label10.Text = "SWIPE CARD TO PLAY";
|
||||||
|
//
|
||||||
|
// label5
|
||||||
|
//
|
||||||
|
this.label5.AutoSize = true;
|
||||||
|
this.label5.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label5.Location = new System.Drawing.Point(341, 130);
|
||||||
|
this.label5.Name = "label5";
|
||||||
|
this.label5.Size = new System.Drawing.Size(104, 16);
|
||||||
|
this.label5.TabIndex = 23;
|
||||||
|
this.label5.Text = "SELECT STAGE";
|
||||||
|
//
|
||||||
|
// Cbox_StageSelect
|
||||||
|
//
|
||||||
|
this.Cbox_StageSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_StageSelect.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_StageSelect.FormattingEnabled = true;
|
||||||
|
this.Cbox_StageSelect.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_StageSelect.Location = new System.Drawing.Point(507, 127);
|
||||||
|
this.Cbox_StageSelect.Name = "Cbox_StageSelect";
|
||||||
|
this.Cbox_StageSelect.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_StageSelect.TabIndex = 22;
|
||||||
|
//
|
||||||
|
// label6
|
||||||
|
//
|
||||||
|
this.label6.AutoSize = true;
|
||||||
|
this.label6.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label6.Location = new System.Drawing.Point(341, 97);
|
||||||
|
this.label6.Name = "label6";
|
||||||
|
this.label6.Size = new System.Drawing.Size(80, 16);
|
||||||
|
this.label6.TabIndex = 8;
|
||||||
|
this.label6.Text = "KIDS MODE";
|
||||||
|
//
|
||||||
|
// Cbox_KidsMode
|
||||||
|
//
|
||||||
|
this.Cbox_KidsMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_KidsMode.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_KidsMode.FormattingEnabled = true;
|
||||||
|
this.Cbox_KidsMode.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_KidsMode.Location = new System.Drawing.Point(507, 94);
|
||||||
|
this.Cbox_KidsMode.Name = "Cbox_KidsMode";
|
||||||
|
this.Cbox_KidsMode.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_KidsMode.TabIndex = 7;
|
||||||
|
//
|
||||||
|
// Cbox_ContinueCountdown
|
||||||
|
//
|
||||||
|
this.Cbox_ContinueCountdown.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_ContinueCountdown.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_ContinueCountdown.FormattingEnabled = true;
|
||||||
|
this.Cbox_ContinueCountdown.Items.AddRange(new object[] {
|
||||||
|
"10",
|
||||||
|
"20",
|
||||||
|
"30"});
|
||||||
|
this.Cbox_ContinueCountdown.Location = new System.Drawing.Point(214, 214);
|
||||||
|
this.Cbox_ContinueCountdown.Name = "Cbox_ContinueCountdown";
|
||||||
|
this.Cbox_ContinueCountdown.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_ContinueCountdown.TabIndex = 18;
|
||||||
|
//
|
||||||
|
// label7
|
||||||
|
//
|
||||||
|
this.label7.AutoSize = true;
|
||||||
|
this.label7.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label7.Location = new System.Drawing.Point(19, 217);
|
||||||
|
this.label7.Name = "label7";
|
||||||
|
this.label7.Size = new System.Drawing.Size(152, 16);
|
||||||
|
this.label7.TabIndex = 6;
|
||||||
|
this.label7.Text = "CONTINUE COUNTDOWN";
|
||||||
|
//
|
||||||
|
// Cbox_P2Recoil
|
||||||
|
//
|
||||||
|
this.Cbox_P2Recoil.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_P2Recoil.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_P2Recoil.FormattingEnabled = true;
|
||||||
|
this.Cbox_P2Recoil.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_P2Recoil.Location = new System.Drawing.Point(214, 184);
|
||||||
|
this.Cbox_P2Recoil.Name = "Cbox_P2Recoil";
|
||||||
|
this.Cbox_P2Recoil.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_P2Recoil.TabIndex = 16;
|
||||||
|
//
|
||||||
|
// label12
|
||||||
|
//
|
||||||
|
this.label12.AutoSize = true;
|
||||||
|
this.label12.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label12.Location = new System.Drawing.Point(19, 187);
|
||||||
|
this.label12.Name = "label12";
|
||||||
|
this.label12.Size = new System.Drawing.Size(168, 16);
|
||||||
|
this.label12.TabIndex = 12;
|
||||||
|
this.label12.Text = "PLAYER2 GUN REACTION";
|
||||||
|
//
|
||||||
|
// label13
|
||||||
|
//
|
||||||
|
this.label13.AutoSize = true;
|
||||||
|
this.label13.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label13.Location = new System.Drawing.Point(19, 157);
|
||||||
|
this.label13.Name = "label13";
|
||||||
|
this.label13.Size = new System.Drawing.Size(168, 16);
|
||||||
|
this.label13.TabIndex = 11;
|
||||||
|
this.label13.Text = "PLAYER1 GUN REACTION";
|
||||||
|
//
|
||||||
|
// Cbox_P1Recoil
|
||||||
|
//
|
||||||
|
this.Cbox_P1Recoil.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_P1Recoil.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_P1Recoil.FormattingEnabled = true;
|
||||||
|
this.Cbox_P1Recoil.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_P1Recoil.Location = new System.Drawing.Point(214, 154);
|
||||||
|
this.Cbox_P1Recoil.Name = "Cbox_P1Recoil";
|
||||||
|
this.Cbox_P1Recoil.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_P1Recoil.TabIndex = 15;
|
||||||
|
//
|
||||||
|
// label14
|
||||||
|
//
|
||||||
|
this.label14.AutoSize = true;
|
||||||
|
this.label14.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label14.Location = new System.Drawing.Point(19, 127);
|
||||||
|
this.label14.Name = "label14";
|
||||||
|
this.label14.Size = new System.Drawing.Size(64, 16);
|
||||||
|
this.label14.TabIndex = 10;
|
||||||
|
this.label14.Text = "REVIVAL";
|
||||||
|
//
|
||||||
|
// Cbox_Advertise
|
||||||
|
//
|
||||||
|
this.Cbox_Advertise.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_Advertise.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_Advertise.FormattingEnabled = true;
|
||||||
|
this.Cbox_Advertise.Items.AddRange(new object[] {
|
||||||
|
"NORMAL",
|
||||||
|
"3/4",
|
||||||
|
"1/2",
|
||||||
|
"1/4",
|
||||||
|
"OFF"});
|
||||||
|
this.Cbox_Advertise.Location = new System.Drawing.Point(153, 94);
|
||||||
|
this.Cbox_Advertise.Name = "Cbox_Advertise";
|
||||||
|
this.Cbox_Advertise.Size = new System.Drawing.Size(121, 24);
|
||||||
|
this.Cbox_Advertise.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// label8
|
||||||
|
//
|
||||||
|
this.label8.AutoSize = true;
|
||||||
|
this.label8.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label8.Location = new System.Drawing.Point(19, 97);
|
||||||
|
this.label8.Name = "label8";
|
||||||
|
this.label8.Size = new System.Drawing.Size(128, 16);
|
||||||
|
this.label8.TabIndex = 4;
|
||||||
|
this.label8.Text = "ADVERTISE SOUND";
|
||||||
|
//
|
||||||
|
// Cbox_Difficulty
|
||||||
|
//
|
||||||
|
this.Cbox_Difficulty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_Difficulty.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_Difficulty.FormattingEnabled = true;
|
||||||
|
this.Cbox_Difficulty.Items.AddRange(new object[] {
|
||||||
|
"VERY EASY",
|
||||||
|
"EASY",
|
||||||
|
"NORMAL",
|
||||||
|
"HARD",
|
||||||
|
"VERY HARD"});
|
||||||
|
this.Cbox_Difficulty.Location = new System.Drawing.Point(153, 62);
|
||||||
|
this.Cbox_Difficulty.Name = "Cbox_Difficulty";
|
||||||
|
this.Cbox_Difficulty.Size = new System.Drawing.Size(121, 24);
|
||||||
|
this.Cbox_Difficulty.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// label9
|
||||||
|
//
|
||||||
|
this.label9.AutoSize = true;
|
||||||
|
this.label9.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label9.Location = new System.Drawing.Point(19, 65);
|
||||||
|
this.label9.Name = "label9";
|
||||||
|
this.label9.Size = new System.Drawing.Size(128, 16);
|
||||||
|
this.label9.TabIndex = 2;
|
||||||
|
this.label9.Text = "GAME DIFFICULTY";
|
||||||
|
//
|
||||||
|
// Cbox_Revival
|
||||||
|
//
|
||||||
|
this.Cbox_Revival.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_Revival.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_Revival.FormattingEnabled = true;
|
||||||
|
this.Cbox_Revival.Items.AddRange(new object[] {
|
||||||
|
"OFF",
|
||||||
|
"ON"});
|
||||||
|
this.Cbox_Revival.Location = new System.Drawing.Point(214, 124);
|
||||||
|
this.Cbox_Revival.Name = "Cbox_Revival";
|
||||||
|
this.Cbox_Revival.Size = new System.Drawing.Size(60, 24);
|
||||||
|
this.Cbox_Revival.TabIndex = 9;
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.panel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel1.BackgroundImage")));
|
||||||
|
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
|
this.panel1.Location = new System.Drawing.Point(12, 24);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(329, 89);
|
||||||
|
this.panel1.TabIndex = 27;
|
||||||
|
//
|
||||||
|
// Btn_Close
|
||||||
|
//
|
||||||
|
this.Btn_Close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.Btn_Close.Location = new System.Drawing.Point(482, 428);
|
||||||
|
this.Btn_Close.Name = "Btn_Close";
|
||||||
|
this.Btn_Close.Size = new System.Drawing.Size(113, 36);
|
||||||
|
this.Btn_Close.TabIndex = 26;
|
||||||
|
this.Btn_Close.Text = "Close";
|
||||||
|
this.Btn_Close.UseVisualStyleBackColor = true;
|
||||||
|
this.Btn_Close.Click += new System.EventHandler(this.Btn_Close_Click);
|
||||||
|
//
|
||||||
|
// Btn_Save
|
||||||
|
//
|
||||||
|
this.Btn_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.Btn_Save.Location = new System.Drawing.Point(344, 428);
|
||||||
|
this.Btn_Save.Name = "Btn_Save";
|
||||||
|
this.Btn_Save.Size = new System.Drawing.Size(113, 36);
|
||||||
|
this.Btn_Save.TabIndex = 25;
|
||||||
|
this.Btn_Save.Text = "Save";
|
||||||
|
this.Btn_Save.UseVisualStyleBackColor = true;
|
||||||
|
this.Btn_Save.Click += new System.EventHandler(this.Btn_Save_Click);
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
this.groupBox1.Controls.Add(this.label24);
|
||||||
|
this.groupBox1.Controls.Add(this.Cbox_EntryType);
|
||||||
|
this.groupBox1.Controls.Add(this.label2);
|
||||||
|
this.groupBox1.Controls.Add(this.label1);
|
||||||
|
this.groupBox1.Controls.Add(this.Cbox_FreePlay);
|
||||||
|
this.groupBox1.Location = new System.Drawing.Point(12, 393);
|
||||||
|
this.groupBox1.Name = "groupBox1";
|
||||||
|
this.groupBox1.Size = new System.Drawing.Size(260, 97);
|
||||||
|
this.groupBox1.TabIndex = 2;
|
||||||
|
this.groupBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// label24
|
||||||
|
//
|
||||||
|
this.label24.AutoSize = true;
|
||||||
|
this.label24.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label24.Location = new System.Drawing.Point(74, -1);
|
||||||
|
this.label24.Name = "label24";
|
||||||
|
this.label24.Size = new System.Drawing.Size(136, 16);
|
||||||
|
this.label24.TabIndex = 22;
|
||||||
|
this.label24.Text = "COIN ASSIGNMENTS";
|
||||||
|
//
|
||||||
|
// groupBox2
|
||||||
|
//
|
||||||
|
this.groupBox2.Controls.Add(this.panel2);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_EnglishSubtitles);
|
||||||
|
this.groupBox2.Controls.Add(this.label15);
|
||||||
|
this.groupBox2.Controls.Add(this.label21);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_FirstMn);
|
||||||
|
this.groupBox2.Controls.Add(this.label20);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_EnnemyBoost);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_Language);
|
||||||
|
this.groupBox2.Controls.Add(this.label19);
|
||||||
|
this.groupBox2.Controls.Add(this.label16);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_Swipe);
|
||||||
|
this.groupBox2.Controls.Add(this.label10);
|
||||||
|
this.groupBox2.Controls.Add(this.label5);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_StageSelect);
|
||||||
|
this.groupBox2.Controls.Add(this.label6);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_KidsMode);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_ContinueCountdown);
|
||||||
|
this.groupBox2.Controls.Add(this.label7);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_P2Recoil);
|
||||||
|
this.groupBox2.Controls.Add(this.label12);
|
||||||
|
this.groupBox2.Controls.Add(this.label13);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_P1Recoil);
|
||||||
|
this.groupBox2.Controls.Add(this.label14);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_Advertise);
|
||||||
|
this.groupBox2.Controls.Add(this.label8);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_Difficulty);
|
||||||
|
this.groupBox2.Controls.Add(this.label9);
|
||||||
|
this.groupBox2.Controls.Add(this.Cbox_Revival);
|
||||||
|
this.groupBox2.Location = new System.Drawing.Point(12, 133);
|
||||||
|
this.groupBox2.Name = "groupBox2";
|
||||||
|
this.groupBox2.Size = new System.Drawing.Size(595, 252);
|
||||||
|
this.groupBox2.TabIndex = 11;
|
||||||
|
this.groupBox2.TabStop = false;
|
||||||
|
//
|
||||||
|
// label16
|
||||||
|
//
|
||||||
|
this.label16.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.label16.AutoSize = true;
|
||||||
|
this.label16.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label16.Location = new System.Drawing.Point(226, 0);
|
||||||
|
this.label16.Name = "label16";
|
||||||
|
this.label16.Size = new System.Drawing.Size(136, 16);
|
||||||
|
this.label16.TabIndex = 21;
|
||||||
|
this.label16.Text = "GAME ASSIGNMENTS";
|
||||||
|
//
|
||||||
|
// groupBox3
|
||||||
|
//
|
||||||
|
this.groupBox3.Controls.Add(this.label3);
|
||||||
|
this.groupBox3.Controls.Add(this.Cbox_ScreenMode);
|
||||||
|
this.groupBox3.Controls.Add(this.label4);
|
||||||
|
this.groupBox3.Controls.Add(this.label11);
|
||||||
|
this.groupBox3.Controls.Add(this.Cbox_Resolution);
|
||||||
|
this.groupBox3.Location = new System.Drawing.Point(347, 17);
|
||||||
|
this.groupBox3.Name = "groupBox3";
|
||||||
|
this.groupBox3.Size = new System.Drawing.Size(260, 97);
|
||||||
|
this.groupBox3.TabIndex = 23;
|
||||||
|
this.groupBox3.TabStop = false;
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
this.label3.AutoSize = true;
|
||||||
|
this.label3.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label3.Location = new System.Drawing.Point(74, -1);
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
this.label3.Size = new System.Drawing.Size(112, 16);
|
||||||
|
this.label3.TabIndex = 22;
|
||||||
|
this.label3.Text = "VIDEO OPTIONS";
|
||||||
|
//
|
||||||
|
// Cbox_ScreenMode
|
||||||
|
//
|
||||||
|
this.Cbox_ScreenMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.Cbox_ScreenMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_ScreenMode.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_ScreenMode.FormattingEnabled = true;
|
||||||
|
this.Cbox_ScreenMode.Items.AddRange(new object[] {
|
||||||
|
"WINDOWED",
|
||||||
|
"FULLSCREEN"});
|
||||||
|
this.Cbox_ScreenMode.Location = new System.Drawing.Point(135, 62);
|
||||||
|
this.Cbox_ScreenMode.Name = "Cbox_ScreenMode";
|
||||||
|
this.Cbox_ScreenMode.Size = new System.Drawing.Size(113, 24);
|
||||||
|
this.Cbox_ScreenMode.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
this.label4.AutoSize = true;
|
||||||
|
this.label4.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label4.Location = new System.Drawing.Point(6, 65);
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
this.label4.Size = new System.Drawing.Size(96, 16);
|
||||||
|
this.label4.TabIndex = 2;
|
||||||
|
this.label4.Text = "SCREEN MODE";
|
||||||
|
//
|
||||||
|
// label11
|
||||||
|
//
|
||||||
|
this.label11.AutoSize = true;
|
||||||
|
this.label11.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label11.Location = new System.Drawing.Point(6, 35);
|
||||||
|
this.label11.Name = "label11";
|
||||||
|
this.label11.Size = new System.Drawing.Size(88, 16);
|
||||||
|
this.label11.TabIndex = 1;
|
||||||
|
this.label11.Text = "RESOLUTION";
|
||||||
|
//
|
||||||
|
// Cbox_Resolution
|
||||||
|
//
|
||||||
|
this.Cbox_Resolution.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.Cbox_Resolution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.Cbox_Resolution.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.Cbox_Resolution.FormattingEnabled = true;
|
||||||
|
this.Cbox_Resolution.Location = new System.Drawing.Point(135, 32);
|
||||||
|
this.Cbox_Resolution.Name = "Cbox_Resolution";
|
||||||
|
this.Cbox_Resolution.Size = new System.Drawing.Size(113, 24);
|
||||||
|
this.Cbox_Resolution.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// WndMain
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(615, 497);
|
||||||
|
this.Controls.Add(this.groupBox3);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Controls.Add(this.Btn_Close);
|
||||||
|
this.Controls.Add(this.Btn_Save);
|
||||||
|
this.Controls.Add(this.groupBox2);
|
||||||
|
this.Controls.Add(this.groupBox1);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.Name = "WndMain";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "Transformers SHadow Rising - Configurator";
|
||||||
|
this.Load += new System.EventHandler(this.WndMain_Load);
|
||||||
|
this.groupBox1.ResumeLayout(false);
|
||||||
|
this.groupBox1.PerformLayout();
|
||||||
|
this.groupBox2.ResumeLayout(false);
|
||||||
|
this.groupBox2.PerformLayout();
|
||||||
|
this.groupBox3.ResumeLayout(false);
|
||||||
|
this.groupBox3.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_EntryType;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_FreePlay;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_Swipe;
|
||||||
|
private System.Windows.Forms.Label label10;
|
||||||
|
private System.Windows.Forms.Label label5;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_StageSelect;
|
||||||
|
private System.Windows.Forms.Label label6;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_KidsMode;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_ContinueCountdown;
|
||||||
|
private System.Windows.Forms.Label label7;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_P2Recoil;
|
||||||
|
private System.Windows.Forms.Label label12;
|
||||||
|
private System.Windows.Forms.Label label13;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_P1Recoil;
|
||||||
|
private System.Windows.Forms.Label label14;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_Advertise;
|
||||||
|
private System.Windows.Forms.Label label8;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_Difficulty;
|
||||||
|
private System.Windows.Forms.Label label9;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_Revival;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Button Btn_Close;
|
||||||
|
private System.Windows.Forms.Button Btn_Save;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_Language;
|
||||||
|
private System.Windows.Forms.Label label19;
|
||||||
|
private System.Windows.Forms.Label label20;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_EnnemyBoost;
|
||||||
|
private System.Windows.Forms.Label label21;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_FirstMn;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_EnglishSubtitles;
|
||||||
|
private System.Windows.Forms.Label label15;
|
||||||
|
private System.Windows.Forms.Panel panel2;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
|
private System.Windows.Forms.Label label24;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox2;
|
||||||
|
private System.Windows.Forms.Label label16;
|
||||||
|
private System.Windows.Forms.GroupBox groupBox3;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_ScreenMode;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.Label label11;
|
||||||
|
private System.Windows.Forms.ComboBox Cbox_Resolution;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
374
Transformers2_Configurator/WndMain.cs
Normal file
374
Transformers2_Configurator/WndMain.cs
Normal file
@ -0,0 +1,374 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Transformers2_Configurator
|
||||||
|
{
|
||||||
|
public partial class WndMain : Form
|
||||||
|
{
|
||||||
|
#region WIN32
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool EnumDisplaySettings(
|
||||||
|
string deviceName, int modeNum, ref DEVMODE devMode);
|
||||||
|
const int ENUM_CURRENT_SETTINGS = -1;
|
||||||
|
|
||||||
|
const int ENUM_REGISTRY_SETTINGS = -2;
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct DEVMODE
|
||||||
|
{
|
||||||
|
|
||||||
|
private const int CCHDEVICENAME = 0x20;
|
||||||
|
private const int CCHFORMNAME = 0x20;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
|
||||||
|
public string dmDeviceName;
|
||||||
|
public short dmSpecVersion;
|
||||||
|
public short dmDriverVersion;
|
||||||
|
public short dmSize;
|
||||||
|
public short dmDriverExtra;
|
||||||
|
public int dmFields;
|
||||||
|
public int dmPositionX;
|
||||||
|
public int dmPositionY;
|
||||||
|
public ScreenOrientation dmDisplayOrientation;
|
||||||
|
public int dmDisplayFixedOutput;
|
||||||
|
public short dmColor;
|
||||||
|
public short dmDuplex;
|
||||||
|
public short dmYResolution;
|
||||||
|
public short dmTTOption;
|
||||||
|
public short dmCollate;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
|
||||||
|
public string dmFormName;
|
||||||
|
public short dmLogPixels;
|
||||||
|
public int dmBitsPerPel;
|
||||||
|
public int dmPelsWidth;
|
||||||
|
public int dmPelsHeight;
|
||||||
|
public int dmDisplayFlags;
|
||||||
|
public int dmDisplayFrequency;
|
||||||
|
public int dmICMMethod;
|
||||||
|
public int dmICMIntent;
|
||||||
|
public int dmMediaType;
|
||||||
|
public int dmDitherType;
|
||||||
|
public int dmReserved1;
|
||||||
|
public int dmReserved2;
|
||||||
|
public int dmPanningWidth;
|
||||||
|
public int dmPanningHeight;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private const string GAMESETTINGS_INI_PATH = @"..\ShellData\GameSettings.ini";
|
||||||
|
private const string SHELLDATA_INI_PATH =@"..\ShellData\ShellData.ini";
|
||||||
|
private const string LAUNCHER_INI_PATH = @".\Transformers2_Launcher.ini";
|
||||||
|
private INIFile _GameSettings_IniFile;
|
||||||
|
private INIFile _ShellData_IniFile;
|
||||||
|
private INIFile _Launcher_IniFile;
|
||||||
|
|
||||||
|
public WndMain()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
this.Text = "Transformers Shadow Rising - System Menu v" + System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString();
|
||||||
|
_GameSettings_IniFile = new INIFile(GAMESETTINGS_INI_PATH);
|
||||||
|
_ShellData_IniFile = new INIFile(SHELLDATA_INI_PATH);
|
||||||
|
_Launcher_IniFile = new INIFile(LAUNCHER_INI_PATH);
|
||||||
|
|
||||||
|
ListAvailableScreenResolutions();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Resolution Listing
|
||||||
|
|
||||||
|
private void ListAvailableScreenResolutions()
|
||||||
|
{
|
||||||
|
DEVMODE vDevMode = new DEVMODE();
|
||||||
|
int i = 0;
|
||||||
|
while (EnumDisplaySettings(null, i, ref vDevMode))
|
||||||
|
{
|
||||||
|
string res = vDevMode.dmPelsWidth + "x" + vDevMode.dmPelsHeight;
|
||||||
|
if (!CheckIfResolutionAlreadyExists(res))
|
||||||
|
Cbox_Resolution.Items.Add(res);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckIfResolutionAlreadyExists(string Resolution)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Cbox_Resolution.Items.Count; i++)
|
||||||
|
{
|
||||||
|
if (Cbox_Resolution.Items[i].ToString().Equals(Resolution))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private void WndMain_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DisplayDefaultValues();
|
||||||
|
|
||||||
|
if (File.Exists(_GameSettings_IniFile.FInfo.FullName))
|
||||||
|
{
|
||||||
|
DisplayGameSettings();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("TEST MENU config file not found :\n\n" + _GameSettings_IniFile.FInfo.FullName, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(_ShellData_IniFile.FInfo.FullName))
|
||||||
|
{
|
||||||
|
DisplayShellSettings();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("SHELL config file not found :\n\n" + _ShellData_IniFile.FInfo.FullName, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(_Launcher_IniFile.FInfo.FullName))
|
||||||
|
{
|
||||||
|
DisplayLauncherSettings();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("LAUNCHER config file not found :\n\n" + _Launcher_IniFile.FInfo.FullName, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayDefaultValues()
|
||||||
|
{
|
||||||
|
DisplayComboBoxValue(Cbox_Language, Cbox_Language.Items[0].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_Difficulty, Cbox_Difficulty.Items[2].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_Advertise, Cbox_Advertise.Items[0].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_Revival, Cbox_Revival.Items[0].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_P1Recoil, Cbox_P1Recoil.Items[1].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_P2Recoil, Cbox_P2Recoil.Items[1].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_ContinueCountdown, Cbox_ContinueCountdown.Items[1].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_EnnemyBoost, Cbox_EnnemyBoost.Items[0].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_FirstMn, Cbox_FirstMn.Items[0].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_KidsMode, Cbox_KidsMode.Items[0].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_StageSelect, Cbox_StageSelect.Items[1].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_EnglishSubtitles, Cbox_EnglishSubtitles.Items[1].ToString());
|
||||||
|
DisplayComboBoxValue(Cbox_Swipe, Cbox_Swipe.Items[0].ToString());
|
||||||
|
Cbox_FreePlay.Text = Cbox_FreePlay.Items[1].ToString();
|
||||||
|
Cbox_EntryType.Text = Cbox_EntryType.Items[0].ToString();
|
||||||
|
|
||||||
|
Cbox_Resolution.Text = Cbox_Resolution.Items[Cbox_Resolution.Items.Count - 1].ToString();
|
||||||
|
Cbox_ScreenMode.Text = Cbox_ScreenMode.Items[1].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayGameSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DisplayComboBoxValue(Cbox_Language, _GameSettings_IniFile.IniReadValue("GameSettings", "LANGUAGE"));
|
||||||
|
DisplayComboBoxValue(Cbox_Difficulty, _GameSettings_IniFile.IniReadValue("GameSettings", "GAME DIFFICULTY"));
|
||||||
|
DisplayComboBoxValue(Cbox_Advertise, _GameSettings_IniFile.IniReadValue("GameSettings", "ADVERTISE SOUND"));
|
||||||
|
DisplayComboBoxValue(Cbox_Revival, _GameSettings_IniFile.IniReadValue("GameSettings", "REVIVAL"));
|
||||||
|
DisplayComboBoxValue(Cbox_P1Recoil, _GameSettings_IniFile.IniReadValue("GameSettings", "PLAYER1 CONTROLLER REACTION"));
|
||||||
|
DisplayComboBoxValue(Cbox_P2Recoil, _GameSettings_IniFile.IniReadValue("GameSettings", "PLAYER2 CONTROLLER REACTION"));
|
||||||
|
DisplayComboBoxValue(Cbox_ContinueCountdown, _GameSettings_IniFile.IniReadValue("GameSettings", "CONTINUE COUNTDOWN"));
|
||||||
|
DisplayComboBoxValue(Cbox_EnnemyBoost, _GameSettings_IniFile.IniReadValue("GameSettings", "ENEMY BOOST"));
|
||||||
|
DisplayComboBoxValue(Cbox_FirstMn, _GameSettings_IniFile.IniReadValue("GameSettings", "1ST MIN GAME PLAY"));
|
||||||
|
DisplayComboBoxValue(Cbox_KidsMode, _GameSettings_IniFile.IniReadValue("GameSettings", "KIDS MODE"));
|
||||||
|
DisplayComboBoxValue(Cbox_StageSelect, _GameSettings_IniFile.IniReadValue("GameSettings", "SELECT STAGE"));
|
||||||
|
DisplayComboBoxValue(Cbox_EnglishSubtitles, _GameSettings_IniFile.IniReadValue("GameSettings", "ENGLISH SUBTITLES"));
|
||||||
|
DisplayComboBoxValue(Cbox_Swipe, _GameSettings_IniFile.IniReadValue("GameSettings", "SWIPE CARD TO PLAY"));
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("GameSettings : Invalid value found: \n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayShellSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int iIndex = int.Parse(_ShellData_IniFile.IniReadValue("Credit", "Freeplay"));
|
||||||
|
Cbox_FreePlay.Text = Cbox_FreePlay.Items[iIndex].ToString();
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(SHELLDATA_INI_PATH + "\n: Invalid value found for Freeplay : \n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int iIndex = int.Parse(_ShellData_IniFile.IniReadValue("Credit", "EntryType"));
|
||||||
|
Cbox_EntryType.Text = Cbox_EntryType.Items[iIndex].ToString();
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(SHELLDATA_INI_PATH + "\n: Invalid value found for EntryType: \n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayLauncherSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Resolution:
|
||||||
|
string res = _Launcher_IniFile.IniReadValue("Video", "WIDTH") + "x" + _Launcher_IniFile.IniReadValue("Video", "HEIGHT");
|
||||||
|
if (CheckIfResolutionAlreadyExists(res))
|
||||||
|
Cbox_Resolution.Text = res;
|
||||||
|
//Mode
|
||||||
|
int iIndex = int.Parse(_Launcher_IniFile.IniReadValue("Video", "FULLSCREEN"));
|
||||||
|
Cbox_ScreenMode.Text = Cbox_ScreenMode.Items[iIndex].ToString();
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Launcher Settings : Invalid value found: \n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayComboBoxValue(ComboBox Target, String sValue)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Target.Items.Count; i++)
|
||||||
|
{
|
||||||
|
if (Target.Items[i].ToString().Equals(sValue))
|
||||||
|
{
|
||||||
|
Target.Text = sValue;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MessageBox.Show(GAMESETTINGS_INI_PATH + "\n: Invalid value found for " + Target.Name + " : \n\n" + sValue, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayTrackBarValue(TrackBar Target, String sValue)
|
||||||
|
{
|
||||||
|
int iValue = 0;
|
||||||
|
if (int.TryParse(sValue, out iValue))
|
||||||
|
{
|
||||||
|
if (iValue >= Target.Minimum && iValue <= Target.Maximum)
|
||||||
|
{
|
||||||
|
Target.Value = iValue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show(SHELLDATA_INI_PATH + " :\n" + sValue + " out of bound for " + Target.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show(SHELLDATA_INI_PATH + " :\n" + sValue + " is not valid value for " + Target.Name, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveGameSettings()
|
||||||
|
{
|
||||||
|
if (!_GameSettings_IniFile.FInfo.Exists)
|
||||||
|
Directory.CreateDirectory(_GameSettings_IniFile.FInfo.Directory.FullName);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "LANGUAGE", Cbox_Language.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "GAME DIFFICULTY", Cbox_Difficulty.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "ADVERTISE SOUND", Cbox_Advertise.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "REVIVAL", Cbox_Revival.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "PLAYER1 CONTROLLER REACTION", Cbox_P1Recoil.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "PLAYER2 CONTROLLER REACTION", Cbox_P2Recoil.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "CONTINUE COUNTDOWN", Cbox_ContinueCountdown.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "ENEMY BOOST", Cbox_EnnemyBoost.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "1ST MIN GAME PLAY", Cbox_FirstMn.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "KIDS MODE", Cbox_KidsMode.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "SELECT STAGE", Cbox_StageSelect.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "ENGLISH SUBTITLES", Cbox_EnglishSubtitles.Text);
|
||||||
|
_GameSettings_IniFile.IniWriteValue("GameSettings", "SWIPE CARD TO PLAY", Cbox_Swipe.Text);
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Error saving GameSettings to disk : " + _GameSettings_IniFile.FInfo.FullName + "\n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("GameSettings successfully saved to : \n\n" + _GameSettings_IniFile.FInfo.FullName, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveShellSettings()
|
||||||
|
{
|
||||||
|
if (!_ShellData_IniFile.FInfo.Exists)
|
||||||
|
Directory.CreateDirectory(_ShellData_IniFile.FInfo.Directory.FullName);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_ShellData_IniFile.IniWriteValue("Credit", "Freeplay", Cbox_FreePlay.SelectedIndex.ToString());
|
||||||
|
_ShellData_IniFile.IniWriteValue("Credit", "EntryType", Cbox_EntryType.SelectedIndex.ToString());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Error saving ShellSettings to disk : " + _ShellData_IniFile.FInfo.FullName + "\n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("ShellData successfully saved to : \n\n" + _ShellData_IniFile.FInfo.FullName, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveLauncherSettings()
|
||||||
|
{
|
||||||
|
if (!_Launcher_IniFile.FInfo.Exists)
|
||||||
|
Directory.CreateDirectory(_Launcher_IniFile.FInfo.Directory.FullName);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] sBuffer = Cbox_Resolution.Text.Split('x');
|
||||||
|
_Launcher_IniFile.IniWriteValue("Video", "WIDTH", sBuffer[0]);
|
||||||
|
_Launcher_IniFile.IniWriteValue("Video", "HEIGHT", sBuffer[1]);
|
||||||
|
_Launcher_IniFile.IniWriteValue("Video", "FULLSCREEN", Cbox_ScreenMode.SelectedIndex.ToString());
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Error saving Launcher Settings to disk : " + _Launcher_IniFile.FInfo.FullName + "\n\n" + Ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("Launcher Settings successfully saved to : \n\n" + _Launcher_IniFile.FInfo.FullName, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Btn_Save_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveGameSettings();
|
||||||
|
SaveShellSettings();
|
||||||
|
SaveLauncherSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Btn_Close_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region INI class
|
||||||
|
|
||||||
|
public class INIFile
|
||||||
|
{
|
||||||
|
private string _RelativePath = string.Empty;
|
||||||
|
public FileInfo FInfo { get; private set; }
|
||||||
|
|
||||||
|
[DllImport("kernel32")]
|
||||||
|
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
|
||||||
|
[DllImport("kernel32")]
|
||||||
|
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
|
||||||
|
|
||||||
|
public INIFile(string INIPath)
|
||||||
|
{
|
||||||
|
_RelativePath = INIPath;
|
||||||
|
FInfo = new FileInfo(_RelativePath);
|
||||||
|
}
|
||||||
|
public long IniWriteValue(string Section, string Key, string Value)
|
||||||
|
{
|
||||||
|
return WritePrivateProfileString(Section, Key, Value, this._RelativePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IniReadValue(string Section, string Key)
|
||||||
|
{
|
||||||
|
StringBuilder temp = new StringBuilder(255);
|
||||||
|
int i = GetPrivateProfileString(Section, Key, "", temp, 255, this._RelativePath);
|
||||||
|
return temp.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
894
Transformers2_Configurator/WndMain.resx
Normal file
894
Transformers2_Configurator/WndMain.resx
Normal file
@ -0,0 +1,894 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="panel1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAWMAAABwCAYAAADL9xFgAAABgWlDQ1BJQ0MgcHJvZmlsZQAAKM+VkUso
|
||||||
|
RFEcxn+uZyJkFpLFXQwrSkiWGiJlSmOU18K9d8xQc6/p3pGNpbJVFh4bg4WNNVsLW6WUR8naworYSNf/
|
||||||
|
3FEzqVFOnc6v75zv65zvgJZLW7ZX0Q22k3VjoxF9emZWr35Go4omwjQalpeJTo7EKTk+bilT602XyuJ/
|
||||||
|
oz6x6FlQpgsPWhk3K7wg3L+WzSjeFQ5ZS0ZC+FS405ULCt8r3czzi+JUwJrKDLnx2JBwSFhPFbFZxNaS
|
||||||
|
awv3CYcTtiP52nSeE4rXFdvpVevnnuqFdYvO1KTSZbYxyhhRJtAxWWWZNFm6ZHVE8YjJfqSEvzXwT4jL
|
||||||
|
FNcyljiGWcHGCPyoP/jdrZfs7ckn1UWg8sn339qhehu+tnz/89D3v46g/BEunIJ/JQcD76JvFbTwATRs
|
||||||
|
wNllQTN34HwTWh4yhmsEUrlMLZmE1xP5phlovobauXxvP/sc30Fcuhq/gr196EhJ9nyJd9cU9/bnmaA/
|
||||||
|
It9UpXKb3H2C9wAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gCBhEkNKTQ46cAAINfSURBVHhe
|
||||||
|
7V0HWJTXto019t6VIvYaezSxxh57r9gboiBdqoB0LHRRBEHsigXsvWPv0cQkpt+bm9ze3rslrrf2GUYH
|
||||||
|
/JkZUO9LvPN/3/oYZk7dZ+919qn/WwCqEyHEFeLiG4DLxEHCkWj6ViEPf3PKC3uJ0ErHAgt+yRDdPk28
|
||||||
|
m6fyovM1ia3Em2Lr5kDs+wzhRRTKB/rnn//6V0mG60aEEScIkaNWuoVBwh8jvIm2ecma9zx9+nTmd7/6
|
||||||
|
FSIjIxEREcm/Ub9ohIeHIyVlIz777DPKAn8lzhOLiBJ5VX7r3//+d8V//uMfv0pJSUFEeIRmOhZY8EtG
|
||||||
|
WFg4crJzxAYO5am9kPHEjx48UDaiFedNhNR17dq1ePDgI5HFX0QeePp0aJ5I8j38bR5x/V//+udPV65c
|
||||||
|
QVx8POMXjR8kfEJiIu7fu4+nePq/TC+XWELOKZmXTeEPAy6VjOXjm4QaNWti0KDBiI2Nw+9//3tWU/Vy
|
||||||
|
Hfmb1Nnm+++//3v1GjU141pgwZuAJk2b4s9//vOv6XBV5/+i9+v9A1Zohn3TUaVaNYwaNQrbt23D059+
|
||||||
|
+jdlsY6oyd8ol6eN+XnPn//yF0RHRaN79x4o8/bbmumYi0qVK6PfBx9g9apV+PHHH5m88s5787fCHwZw
|
||||||
|
vHHjJkqXfRsly5RBaRbiTcBbpUo9E0zrNm2wd+9eEcjviAFEp/v37qEiBVaidGnN+BZY8EuG6PXb5cvT
|
||||||
|
I3wgev/+T0+flv7Xv/71hRCE2IRWnDcZb1Eeej4YNmwYbt++LXK5RYwnPjp//jy6dO32LMzLcqHIX59W
|
||||||
|
s+bNsXPnLsnvX8Q8fqf98Mc3koz1MOzhVgQGikD+Rmw5cvgwSpQsiVJly2rGs8CCXzpE5/fsyRKdn0W0
|
||||||
|
/+STT55WrlLlv9oBKUWeE7mIHPZkKdlgc2YmyrPjku+14rws9PyzYOEi/PWvMnMKJ/7/4sMf3mgy1kPf
|
||||||
|
UzksXizCQGpq6msTvgUW/Bwg+r1gwQJR9w3EssN0QOQ7iwNC2ZQspRy1qdOmoUKlivy/pGa4VwWRuch+
|
||||||
|
+MiR+J//lankp7P4f/6H3xol41KvAQXzeNX5aKUvkPpJldPTM7B69WpNMtZKz1wUTKswaMUtDFrx9dAK
|
||||||
|
bwitOIVBK74xaKVRGLTiFxX6tMSADNPWglZ8c6CVljZ0ZKaVRlHxYtrakHprxTdEwTii3+3at8c//vGP
|
||||||
|
b2nnF4OCgoul84Zh9fLXCldcGKZrCK2wxYFW+mXeLodSeXxgygnVStMUtNIRjpX8xEP+6aef/sA26cL/
|
||||||
|
nz+FkXGZcvyff996TZC0VT55f7XCFA/sgQRly6CEhgdQkh5ytZo10alTZ/W54O+6+AXTNAOUVwnG1VIq
|
||||||
|
Q0hDacYvBKWpNFppmlNOyctYed6S3lpQrDpLXCqzES9L8i5BuYhstNMoGkRnTNanuO2nIHXSQSt9PUoQ
|
||||||
|
2vGLA9NyFJhji1IuQ/mIPcv/d+7cxdOnT9Gla9d8ZCy/FTVd/V+tcMVFwXY1p0xFgrRpmbKFk6QGdG1C
|
||||||
|
yOcio3A9KsVySBskJ68n9eKcImH9UxgZC5FNrVkLu60aY3Mjm1eK3daNMaduXVVYyce6UiWkWtlgi0bY
|
||||||
|
4iChgRVm1a6DKjIPlKeQhgIpwe/eKl0q/3d55ciwskWmRpqmsLORLTwaNlDkU1ijl2Dj9q1RAztZf1N5
|
||||||
|
bCUSG1mjRoUKjGeYRlk0Zzm3Mj9jaUge71avrsIblkFkoRSlXFkMYlmiGjRCukZ8Y5B81ze0xpI69dCw
|
||||||
|
ciWltPq09fmIQZUtXw4hjaywg2XVSqcoEJ2ZyjYtqOC6+pRBScp9BDvZ6PqNNOObBPVvPeW9lHWqX5HD
|
||||||
|
VgNb0EPatRTzCarfEDtegV2IHDcSy+vWR4uqVVQ9tDpQacMFdeoqGWilIxA7naPkk7/cYuK79+zBV199
|
||||||
|
xeF45XwOiKTbv2YN7LIuvH2knqHUkdJ5ei1xbKtURtorstddtDdn1l8cGVVeln9irdrY84rkK7odwfbq
|
||||||
|
R13Xk2RB+RpC6idh3q9WHSvrNcAmSYt11UpfC7o2tYYH9ahp5crP9MgwT5kSsbK2xueffS6d5GQdE/Mp
|
||||||
|
jIylJwms3QB/a9wKv7Ztge9fIf5q1wrRDa1UpQUtWegvG7fAjxphi4MfGrfE75u2xn4bO6b9nCyMQcrR
|
||||||
|
uXo1/Miy/UYjTVP4o20rnGzcVK1gCxFp51EGU2vVwV/MyOMH4lvWo33Vqqpsz9Moiy40qh/5m4TRiiv4
|
||||||
|
M/MYUbP2C6Qi8atWKK9I+NdNW+G3TEcrvilI+f9A3bjSuBn6VaeiF5CxnoxP2jalbIqXhyH+xvqsoFEV
|
||||||
|
zEeMp07FClhDffqhCevzEnn9RvSGaVxmnfrUqK6M17Bj1ZFxORy1ssMfWXetNIoM5vk7u5Z41KQlppNM
|
||||||
|
pTMvSBbSZrH1rZTdaKZB/In1Pmhtp2ReMo/YVFyaeEBAALZt26bzig06dpFlGPXgr0bqIvU8zXRLs97K
|
||||||
|
Y2VZ2rHj+OoV2etfWP+0hjYqXX2ZvEmCf7NrrRm+OPiRsvk12zWSda1O3S+Zl1dByPcVWE/J/2u2ycvZ
|
||||||
|
RkvcsWuOCbVpg0z3hTZlW7i4uop3fEp4WD3GyNi3dn1Vkc9tmuPJK4SQpfS2UkhBC5LxI9vm+EojbHHx
|
||||||
|
hQ0bgcp7jek2kR5KQyCGENL6gL3nr9gIX2ikZwrfsAGuM6/ashjAvDTzoKJJry9GbyoP+f1XDDeyVq18
|
||||||
|
hCppdyIZf8X8viwQxxBi5B9yZGMYtyTbuAKNdTs9LCFSkdETBe00TEH04lc0yieUWW8hL4N668n4oE0T
|
||||||
|
/Ool8tBDOh8fGomejKUthXTepvGIF/X7xq3xBWWiFbeo+BV1/muSY3/xpgzIX0/G+xs1VmG04hYHnzdu
|
||||||
|
jq9Z9t+SgKaws9bqQKPrNVJ2oxVfILrwmV0LtK3Gzpu2+yxuiRJqy9a06dN1ZJz3vdRFRhMHKDtxtrTS
|
||||||
|
FEg9DzOMIRm3IRl//IrsVYhrXQPrZ7oj8nanp/wj9VMrfHEhuvEH8oGMfMuoDuu5fHXy0OUf0aAh/sR2
|
||||||
|
+FJ0lnXUSssU9Lb9LWX3PTuBieIUGdiGQNqlcZMm+NOf/iRzx9ZvNBkLPmMD/I6CTePQQT8MKgxiADPo
|
||||||
|
mfyGRqiVlikIOT4iMamhSQHBP8ujCGQs+IGyX5knp+dpFI+Mhbwkf4e69SgTKnoxFU0LYrBX7ZqhBj1U
|
||||||
|
8VQlv/8EGSvD5Xe/ZX2K04Eaw69Z5ov06muyTnpP6nWRsR5fM8/HJNTOilANbJH5myJjgRDYfA6PC5J5
|
||||||
|
WY7WqlStlm8XhaTZkI7Dfers1xpp6fGmkLFAdOTHJq2xmDag1yOB0iXKbGjNmsqBeyIORoG4xcW3rN89
|
||||||
|
tqkNeUFvGwLFtaXLIDdXDuhh3BtPxkI40iN+R89tRK2a+RqgIOQ334YN8YM0hlZaJiD5yFRLhyr5pxUK
|
||||||
|
5lEUMv6OxnmCZFbeYGglaReHjKUzakDju0WZiBevFedl8AONZ5EQQZ6MXzcZq+kJ1ueGbbPXUh/Bb+nV
|
||||||
|
LKgtaxu6PF83GYudSUe5Js829CM5+WwOGcvvKQ1JbAUcD9lba2jbAtGL4Rx1/dpEmm8SGQu+Y33Os5Ot
|
||||||
|
pKYTdTKWesmIMYe6qkYJr1ifhODXNHqxXYR+5ag2n9VvPhnnQTzMdXlKKgZlKBCBfCeroLKYIkSplYYp
|
||||||
|
yJBfSOHdKtWeKVZBFJWMhXBF6W0qybz3y5Gx5D2Qw+7i1s8UpOM4SyWvorzj10/GUq+pdTiSKWbnaQ5+
|
||||||
|
TULYaSNEpKuPbmj/+shYIDp026656mj0npS0uTlkLERznPIuR7kbLvpqQdJcK/PsJkjvTSNjcdC+oxyH
|
||||||
|
i3Omtw3+HVqDHVMxpyiNgvXTTWFy5CiL8XnyV/mSfmfMnClkrNtV8d9Axr+iMI5b2aFMnkLp66iHfPd2
|
||||||
|
BRKHrV2xjUzIWOZ4+6vFrFdDxjJv9SXDdqgiK+0vT8beDRqYNOjiQsryBUcG7fLK+trJmB1rAslEvtcK
|
||||||
|
/yogMn7YpAWaVNFNPb1uz1ggIyxZuO2p5quLRsZfMu4nHBILWerjakE5JOxgDtEmRGe10tLjjSNjQpyz
|
||||||
|
6EZWz5wzsREnjoBej23QTlnHz2kbHQsuxpN+BwwcRAp++vnTn34q919Bxt+wDtfYM1VT28ReVFL5rlbF
|
||||||
|
irhqoxvyFrd3FAKcLNuLDORoiKKSsTTk9+ytx8giHsuomyctOhkrhaPxbbS2pfK/JhIhpNN7v5puZCCL
|
||||||
|
ha+LjCXtkkx7r40dh5Wvpz4CIUZZ0O1dTbc4+Z8gY4HoxxR6/c86HuZtDhmLFyYjBccCc6IFIelZ0+bu
|
||||||
|
5C0caqaVhzeRjL+nPm7hiEe/DVXy9Kojeb5G22Daw2VnhSHHkoy7dOuGf/7znz+Qh2v9l5BxC9yg4tUs
|
||||||
|
ZKeDfGdVqRLuSRlMKKcxSL2WaSygPM+nqGSs68VDG1JWefNNUtbiknGGDcnY5vUp3Lfs/XvqyZh5vk4y
|
||||||
|
Ls20D8hI5hWkbQy/Zp0GymiH9iDyf93TFALRD3tFxs/b3Dwy1sXdKORWYH7SEFKXiSQG6eg10zHAm0jG
|
||||||
|
Mi8sO4qkPnrPWPZ6v24yHl3nRTLu3KUryfgfcq1bnf8eMmb6xsi4GcvwiQmCMwXZ97tGhj8aeejyKToZ
|
||||||
|
y6r+fiqOkI+65IRpF5uMxTN+TeT1jIyr/gfJmJ7x6yRjqZMY7sDqz7ft/afIeHpxyJiQ0ckxNSXHsjKu
|
||||||
|
of7pIesjyY2slb5qpWEICxm/PPRkPKoQMv6XSTKmUFbUkUMfrdVQ0BAypyVDos9NNObnbDCZLC8Y/y9N
|
||||||
|
WiPK4NBHUchY8paJdklHph+0whSEOWTcuWpVRXDmkqQWdI1sqybppZFfzKfoZCzbjm7aNkMjdXhFJ6//
|
||||||
|
BBkLsX6f117mjBZeiozZNl/n5VUY/mrXGgH1dIc+ikPGoiuyc0DSEoKReTxT2/telozlYIRehhJepj20
|
||||||
|
whXEy5Cx6ITsN35HtsflxTeETMlVrlAeF2yb4lszZPdSZMwwYq+ShmFbGuIvJN1UOfTxbORnHhmLg6im
|
||||||
|
kfLSkb/m6KngZclY+ER0SQjWXNswRsb0jH9rlIyl0WbVrK0aYg+FtbuRDjv5+Qh73idScBPKLPv1DrHS
|
||||||
|
EkcfX3CIaS6sW1flIY1rLhmLoh2jAe6UdKxskWvmtiZzyLhPtersOF6OjGVHwSmSTznZNqOZT9HJWMJJ
|
||||||
|
h/aBIgTdHQavm4xlb+QZGqscY86inB82Nt02Us7ikrEQ8SUb5ldATwwhOjMz77hvUclY6nNR0mc6u4hs
|
||||||
|
pvWVDNFN6I7UqbhkLO0jaxD6PA9Z26k8dQdttOPo8TJkLPiB+Syppz1vLGm1qFIZn7KtzHF+XoaMpcOT
|
||||||
|
rZkiA602FRykfnnUbfBsLcdcMhbd/4h6uYfxRb6ip4/YCZnDBy9DxpL+ZdqGcNAO5inz7t+YaFPRo5ci
|
||||||
|
Y4EUVPbiGeKtMqXRo0Z1fNGE3oWRQiiiYMHbk2iVARmkIaddJG1VIFEOM8lYyFK2Z0mFpCetXbGCuqNB
|
||||||
|
ekat8HqYJGOmN54djxiBVnxz8Q1xlQ1V3eDwQ758KIeikrFAth/NYTxVb6b7OslYiH8/iaNGxfJqOPvW
|
||||||
|
22UwmDIXwzLW3i9Dxj/atoJ7fZmCKJ1PTwpCrzOStrlkLNu9pAz15L4JpqE//ONRrwG+M7Et7mXI+EcS
|
||||||
|
YoTy5EurPGXaQO6X+NqMDv9lyVi8cRmhyQk7vcz0EH2Ywk5N9EMrbkG8DBkrHVRbyMxrV11dzSNj6WBP
|
||||||
|
WzdBeeqBxBEZd6tWDbfZAcpo0tjUanHJWPI8a90U9WWUyvwkX8nzgQlZvDIyLghJ7D0xziKRcd5KdB70
|
||||||
|
QlAF4m9FIWO53Ea/mCKNLAcN5ASWVng9zCHjpfXrm63shUHKL6fwGudNKbyQTzHJWJTEP2++VNJ9nWQs
|
||||||
|
XpWrECNlq+Ixv5oc1ppaeX81ZKwrqzGIHItCxr+lUfvR89IbgaQhn9tVr8rhvOiwdjzBy5JxZN60ii7P
|
||||||
|
sqhIOV6R0ZyJMr8sGctI4yb1vXaF/PquykESWW9lY3ZaL0PGsnNnuIEOGoO+jCKvopBxBbkMjGUSB0/i
|
||||||
|
Jje0Vvm+DjKWdkmRKRXmJ3GlIylR/m3sp3yM6eErIWMtSGLv0TP+Uily4QXQkXFzvJNHxlppCeS3opCx
|
||||||
|
eGnPybgMZteua1KI5kxTRDRopBYrteKbCxG6XDDSrcA9Dc/zKR4ZC7FuEeVhw0u6r5WMGc+1Xn1VVr1s
|
||||||
|
ZNvfzddIxnIhi0ceGReUmRaKRsYtScasj6ERUH86VK+Gz1je10bGzDey7vOLjWRqpQLJWA7GmJqrfVky
|
||||||
|
VnrIcncqMG8sB0Hq0gbuy7STkbY0xEt5xnoyNrNdBRK2KGRckWT8fIqjrDq9aGr7ZnHJWGxKv1NF34nI
|
||||||
|
PRf7ZHRupE2lPf4ryHjOS5KxnqjS6S3Iyq5W/KJAGkyucjQUuh6iaMUhYzEs8UytxONmuq+bjN0KkHFt
|
||||||
|
kvGtXzAZ+/9MyFg843P/ATIWSP6Oat74ub7L594cVsv1AOYuJv7SyDjGQsYv4pdExrL5ey8bRxpJK35R
|
||||||
|
IAYzW+PmLYEoWnHIWKZ7vqG8+8rhg9Jl0NlCxhYyNgEhh2zKvhzz1F8QpOyF6Ur6WnG0YCHj5/hPkPHS
|
||||||
|
q1evqR+0UPDlhZLYm0TG0pDKSKi40sBa8YsCUaJltQtbyS4uGevSnSyKzfZ43WRccJqiDsn44yZy724r
|
||||||
|
VXYtSDy5olB2pUgcCxn//5Kx2NIjdqD69QvRAdlyuaGRzKmar+cWMn6OwshY7rf+M8tb0Cb0kHb7U5PW
|
||||||
|
GFc3v5Mm/JqPjH96+nT+999/j/jERMQnJCCBf3VIQmLSOrRq0wYlSz1/K4Yk9iaRsfzfgAorF0Ebu0rQ
|
||||||
|
XIjg5U0QWgoo3xWLjAk5ibdcFvHKCBlXeX1kzHbVL6ZJmUVhK1LhxjEtefPL5BqFY2qtWmhI4tatklvI
|
||||||
|
+P+TjAUFt0Q2qkQ9lxGORtjCYCHj55B2UXuiaUsST/Isy8+DqtfANBO2MY12b1elsjq49ayuBcn4X//6
|
||||||
|
lzU/RBPZBjhA5BB/HDRkiIr0LIE3kIzbVK6iLvIwZpjmQgxmbQPtU3iiaMUlY1EgeZWSbDV7nXPGUjY5
|
||||||
|
nWVYfr3C6iDbGwuDvHdQdz+shYz//8lYrm70a6Arg6TxftVq+JZ2WxTds5Dxc8hUQ5a13QuvVpN8zbMN
|
||||||
|
3RbHZ/EKkrGxhwGufzBgwBtPxj2opN8wbVNKao4SCwmmqus68zeYLq/ik7F4M7dZh8oVK6B9xeKRcbrc
|
||||||
|
TcF4WuH1EFndpvdUT0NWRYGFjP//yVj232dTRqUoK6n/7Np1TJJcQVjI+DnE5h7atUBTucWPOqS/b7q4
|
||||||
|
EF41i4z5Yyni5ptPxmUwpFoN1esZI0j57ROmYeqeDjlkkG3bBGVpeAVP4UlexSVjCS/b5jpT9q0qVioe
|
||||||
|
GYtnzHha4fWQI+xSvoRGNmoIJvIqjtJZyPj/n4zloI6cSlPzxm+XRSYJSPRCK2xhsJBxfghP7KVOyxtg
|
||||||
|
JL+XIWThVXPJuPR/BRkzjckkSFNKKqfr9jVpqubcjBmw7Di4attMnQ58Ia+XIGOB1FOOBLcoJhknkWBN
|
||||||
|
KaoeMnecbmWrXl5qrP0Kg4WM///JWCB6MKBadfVKLHUrYRHT+G8hY7c69UzmqcdvGO64TVPUV3xift0K
|
||||||
|
Qnj1F03G+U7gURA6MjYuRFNkPJcEZ+qNB3LvRJSVNS6wEYwtgAhJynvMWmlc1CLlfRkyFmMMqdsALfPI
|
||||||
|
2FgahmSsr+fy+g1N1vMZKC+Raw4JzyZvf3NRvICikLEQ138DGcs2s//EoQ9DSJyFdeqiL+sgl9sUVe9e
|
||||||
|
CRkbyN4URF7mkPF3bJcXybiMekt4cch4qfCIiZO8z8C6SxudJxd0lNesmVk/2WJYimFlC7FAeLVj5874
|
||||||
|
B8n46dOnvzwy7i2GUbq0iic7C/xoxPKKdq3wepiaM5ZdCqYUXfKeU7ceDtMQjRmTXATzHcsjb5rWdxrP
|
||||||
|
83o5MpY5QHmtefvKVdSm/SKRMfOWwyimRgAFIe8EvEBP/x15S0FeWuagKGQsR5adGpCM2Z6qXTWhW4TS
|
||||||
|
p/1LIOMQOQ5dppSu/NTZplUrm3Xp0qskY7lSc6tNYwQ0aGj2qMgQL0PGUo+BNWo+t1cjeNY2RSDjkyRj
|
||||||
|
GfFJ2wpkYe2ANXWCvxX1OPQk2kpRX+EltiSvU+ov+sE0JC19PbRQleHKV6iAsvwsEF7t3LkL/vd//+f3
|
||||||
|
5Nq6ini1np8jGcsUQDCVagoJbVrN2nAmOd6Si0H4vVZ4PYySMREvp++MKLoYpXiifWrWwK5GtqqxtcLp
|
||||||
|
IYo0QxlTfvJ6WTKWepyiZ9VPiIT/F42My6J9lSpqmFrUvCUtmZ4ZoDoY00onKAoZf0d5bbK2VW06o1Yd
|
||||||
|
Tcyl59KJHYLMw/8SyFh0RHRlCttgOttcDgIdYnlleK0V3hCvkoylDg+p+3KBlSn70sLLkLHUNbyBFaay
|
||||||
|
/lptKpB27VOtxvODKWaSsdj8NdZpFke1sm1sOnUnlnmZ4gLBC2TMvG1pG3JMvCjb/j6n7sn2QbmyVC7r
|
||||||
|
l7LLCEivZ4YoUaoUevfujcuXLuHmzZu4du0arl29igcPHuCnn376ip5xRR3zajw/RzIW/IoGJN7ab+xa
|
||||||
|
K+WUOKYW1QojYxGcbNo+wIaR1+toxRVIXR4zvlxAn1HfmsMv4w0uXpGzHJx4xZ6xnMT7mAozn8POh/zf
|
||||||
|
GJEUJGMhMRnS7SchGDstpAWRryjd51S6cfIKKEnPoF5aKAoZy7ZCOb0n7SrTKFr4n6ZtMI/GK/VRCv8z
|
||||||
|
J2NZCP2GeQupiJ5K3VQcE7ojeJVkLJDR2ldFbHM9XoaM5b5z0Ruj7WrXBt4GU1TmkrFAFiiVbBXICWbK
|
||||||
|
tyAZq3zfLotVJHPZz68Vxxi+ZZyvOBqeX7euSkc/bZIP1FnhUXdPL9KqevYRPkQg0UeRbmEPA/wsyViB
|
||||||
|
YQXmEpr0llpkLEKrXqkCchsbv0lLynWPHnhtxl9Xn0ZhosHlwqEguSmsQL1fmowJ6VjirKzVYoyxNAqS
|
||||||
|
sT7/oTVrKuMw924CQ4gcf0Ol072SP89DLQRFIWNTkHqKUffMGw6qfH/mZKxQDBkLXjUZvwxehox1dlq4
|
||||||
|
DEQHZaQmfKJvn6KQ8QuQ/LS+LwBxRgpeMSr1as+Rl+K1IrabdLzyIgH9vu5STFebkMsqLo2Ljye14oQi
|
||||||
|
WnOenzUZFxFCtIqMK+YnY/ks3q54vcaM8mvGv27dFOXpWcbWN917yu+xJO2C9X4VZCwyyrVrTmMo2pyx
|
||||||
|
QBRPFGVdI5viKTvxBev2ayqdFwlZP8QzrKMer5KMpc4Pqew2ebr0S/CMXwaiH8V6B95rwEuRsQnI1N9d
|
||||||
|
plO/8nO7fCkyNhMyst1GMn7h8Aa9WrmXRY79F8c+pXORq1PjGlk/2xaqT1sPma6oRD2+dfu2ELK/jm1N
|
||||||
|
PG8UGVNI8iaJygYrr/q8e9DQZIhsTPiyYHdRLRaUQ6DakWDcKKSxN6mDH7oz7M/ze3kyFpjj1WqRsUDq
|
||||||
|
L8ebd1rZKqXTimsMMk/2Bdvqh6atEEOle5tpabXvqyRjmZrab9NYTSkJEf9iPONiQvRjvLpURpen5P0m
|
||||||
|
krHMKZ+lXVVg2nJvhq6u/xkyzrBurBb/DO1TjvELicbSduWOdNFzrfiFQsKLbZAbt9C+5IItqY8+fT2E
|
||||||
|
T8eOG4+nT5/+7qeffrJRhGvseZPIWAwqW+aICvaErIvsMBDl14qnhyjNGSuSMeMsqFfPpFHI4s0+5iev
|
||||||
|
dc93Fr0IZGyMJMxBYWSsK0dZVK9QHhutbEhWRfcCZA75i8YkDSrsVtZT0irYxq+KjKVsIi9fNa+YR4iS
|
||||||
|
xxtKxpKnDHk7qrds68oseb+JZCyylVd7Gb4z8j9BxjKNqDsm/iIvibNSjnUNb0B5U7+LVUfKRsg8mx1N
|
||||||
|
Y8V/+W1QFiuFU7dv30GKRawiXGPPm0TGQjiyC6OgUOR/WemWBTeteHrI/ky5YlPCf1izhu4+WCN1F0/6
|
||||||
|
NEmoMklK7mowzM8cMv6MsrhhpzNMrd/NgTEylv3CIvey5d9GCD19eWV7sS5JYjl/z3zEoCqQHA1HHa+S
|
||||||
|
jL9n+8lFRfq6vMlkLKO0ExzFyWLr8x0GbyYZq062gF3K59dJxmo+mPl2VOcAtG1DbFZGtYvr1sPXJFUZ
|
||||||
|
WZvaJKAF4ZWT1H+5oKngHLJwan9yK58HRFlFuoU9bwoZy8k5eXGhvC33BYGwMRbUkvP6xpX8N7atkEQv
|
||||||
|
UsJ3qF4VnzbR7eLQCivQ3yOhf6OzYX7mkPGnjJtoY6PIQut3c2CMjAWidDLkF6VbKkrHvERWWmkZg9RD
|
||||||
|
vICwhlY01ufTMq+MjCkLudxGd0/ym0/Gv2/SGi555dUfspG830QyFh0dK7tzDEhRPr9OMpbTc3tZH1k7
|
||||||
|
MRwlF4SMaKUs02vXxsfUk+LosCzs/Za6u7GRDfWmwJRlqVKowbp//c03/yDPdtKxbiHPG0HGTPP3dq2x
|
||||||
|
XG0ze5GURNjL65o+8CHDFW+VRmn1tg1T74OTusvbd9tUqZKv7pKfOWQsBOTO/D6yaWaULIzBFBnroTOw
|
||||||
|
MphApXti10J59eIFFMUTUEezKaN3aKSSlj7dV0HGohO6+xWe69GbSMb6O0HEK65XKf8LbSXvN42MJe4n
|
||||||
|
tKPWSmfy28jrImNxOMTT7U/+0uupKYjeDK5REw9YVlPnC7QgtiyHwIbJi1kN8lRkT17NzpHLMeGgSLew
|
||||||
|
55dOxpL/7yn4DeyVyrMXVAaskXc0PTrjSt5CDeOnyR5CknGVCuXVa9+Nbd4XI5Y9pv3yDkk8z888Mhai
|
||||||
|
lxu2rlkXb6O+wFwyFkiPLeH6s7yPqbBy9FsrTWMQj0MW9PQLMbKv+VWQsRjAEaZRhnLXt+EbR8bUfSGf
|
||||||
|
B3bN0VY68AJtpvT0DSNjabejbFd5L6DhhVqvg4x1++Rb4NdNW73wKipTUCfl2B7tWGfZkVXkV7NZ0xbJ
|
||||||
|
H7K/X60hGaQtvOrt7S1knKlIt7Dn50rGYiDGiEwgeX9Cb8qL3mXBuUw9FAER6SYuz5G8vqURDJBjnax7
|
||||||
|
OaYnxzDlOKZWeIHEkUMkYwu+ZsVMMpab34bXrKmGU8UhRkFRyFig5EE5dRSla9xMlVE27WulrQU1NUPv
|
||||||
|
oX7e/JgY7qsgY9kmuLZB/m2CbxQZM/0vWUbZ99qywEjqWXn53ZtGxtKuyRr3fr9qMhYilnJeaNxU2VTB
|
||||||
|
HU7mQsrVvEplnKYjJrbxhLoj/KaVZ0GIbdwjGtA2DOsrvDph4kQh45tPnz4toYhX6/k5krEIVvYEi7eq
|
||||||
|
9bseIqzEvDlemcfUuuBG5ksVWeSdZddKRyD1+JTptVV3M7AhqZTZNEYxUq3wevyG8llSN//rl8wlY1kw
|
||||||
|
lDs4fOTejWIafVHJWA8pYzMq3XGSqNkXpxBSHxkNdBM5sU2LQsbSrrJIIhfLyLYjQ/yNQzwH8WYM6vFL
|
||||||
|
IWM5sm7KYGWK5z7D1JEDSYW0leRtLhlLmY3pliHMIdOXJWMZQYouGrbpryn3vzdujXCDi5Se19V8MhZn
|
||||||
|
QaZ3tH4zhOQ/TIi4wCvkigqpe92KFbHbpnGR9iJLOJki6Vvgvhrh1Z69eslx6O9IxlUU8Wo9PzcylgrJ
|
||||||
|
fcL77JriSxOGIOR6jEN8uSWr4J3Ceoj3VqNCBVyybaaIQCsdgRz4kI3pVnm9mnjT2+hNC3FohddDNn+v
|
||||||
|
lItiDPI3l4xFeXpWrU4FqqXmq7XCmEJxyVggcRpUrIA91o3xW5KhOSfJpD5ykdHAalQ41rMoZCydzzpr
|
||||||
|
G3U9qngvhhhdq5ZajdbvLBD8EshY9oJfshPnwfgedvlNjoN3IMEVZifyvTlkLPYorw/TOSzGIfW+2MR0
|
||||||
|
+V6GjOXUpOyWGKLRrmPYrrKmUtBLNZeMpa6y4+gmYaocspVtQW3dUXrDvIoDqX/FCuWQ0MhKXVBm7mk9
|
||||||
|
scdp9WSq00APyatt2rXD3//2tz+Raxsp4tV6fo5k/JgIb9RIGZFWGD0knU8ppOZG8pbvG8vlIGxMY7sI
|
||||||
|
pGe/aNsU1UjsEkeQ1MDapGHI1EdCgWFYUchY3gTdiuWTC+WNbaMrDC9DxgIpd1V2VonyAkuWQSuPgpA8
|
||||||
|
R9PQJM+ikLFsPVwm+4hL591wlg/PX+WkL9svgYzFIdjEzkx35arxMkpnNCpPbvoyGkLyNoeMZfF1H+V9
|
||||||
|
jQ6GKVuSvyG2tnRwXh8Zi54PlHpp3drGur4l7cp089fVPDIWB+qIdRNk0Es1tbAm87yx8ioxjpIN8you
|
||||||
|
pPwii8CGjdROH2M6pIfIYpGMlA31sEQJWNEJ+c1vvv8fcm1THfNqPD83MtbDmUPWBwxryohkL3A/9abi
|
||||||
|
QhRcGWRVdeOSsXxlbviErW6hQbxpKa8/e3tThiGec6a8vNBgjsp8Mm6BASSAqvRO77Cu5txEVRAvS8YC
|
||||||
|
qasYS6qVjclpGYHkOS5vbr1oZPzm3WcsnXFkg0bYam1rsowyFeWrXmKrbSfyvTlkLHnG01GQ01/GCEr0
|
||||||
|
/YFNMyxoWF955a+LjF/r5fKU6QErO3V8WfROK4wesu5yhDYsp0WV7rwCKC6gbUfKBgDWUytfQ0jbOdYu
|
||||||
|
4BmXLIk6JOivvvzyn+TaVjrm1Xh+jmQsQ4Jpdesg19q4tyHKJRfayNV90rhac8by/Ugqiu51S4WnJUq9
|
||||||
|
l8Ync8V6ZZxXx/TbRdRBESpxccl4cHUO98u9jUPWdkYXCwuDFhnLlI14maZgOHSU+HKBttq+ppGPIRQZ
|
||||||
|
5+X5307Goh8BdRuoG8lMGavUYS89PKmT1uKS5G0OGcvv4fUbqXu3jU1viT7J6+WH0pbktN8vkoxZh4ON
|
||||||
|
WIc6tfAVHSpjU2lSTnnhQ8tqhU8FidyFYLXs4TnyX44lZZX1lUeNTctCk4xLkYzZmXz55Ve/PDKWocmQ
|
||||||
|
WjXVyrMxIxTlEmWU3RSFKYLUY3H9+hSSNHrhaYm3scnAw5V4H3LoJcRjTImVR00iknlr/ZFoKYu5ZDxE
|
||||||
|
yJjhZZqgOIt4BclYOqRKLIt421UqFI5q/F12oOjlJAoor5C6JTfbGVF4gYWMn0Pa2L9OA9XhywlCY+2t
|
||||||
|
VtvtmsOqEFuR78wj41aIYLge1arRyaBe06a0wsm0kHQSXWrWUDuFjJXt5+wZS4fSolpVtQAqzoJWOD1E
|
||||||
|
djJPbagHhpD7WuRYv5ZN6FGtYnl1MlIfR/hAZLKzka1yvrTy1UPyX6JJxuIZ/wLJWAiuF/OWc+XGtqMJ
|
||||||
|
xIiEtAs7aSONHiaX/phYIBMijK//fO5XDLlr1aqKmIwpsSjLZRJYjUoVVa+qz9NcMh4qK6+lS2MGvXAJ
|
||||||
|
rxXOGAzJWPX6lMMaGxu1be2CbdNCIQsi4w0MSMi4Csk4l79ZyNh8MhbjC6Rn3LqK/kL/wssp+chOlK7y
|
||||||
|
Ch8NW5HvzCXjVQzXoHIlfKrs88UwkpccQnifdepKHfvFkjHb5YR1E2VfZ6hjYm9a4fSQkYqLuvr1xbKI
|
||||||
|
bjhyNHGbuq9lE3qIbSxvWGBRnk5akpW1SRt9I8n4ffb65lzuI96GzLc2LHAk2TDfBLkO00Q6v6VCrVC7
|
||||||
|
InRClHhNWF655N1YeaWnlmsfmxnsHZU0ikTGZUqjJRX/E/5vSjYFUZCMZcpD5i//YNNSLVgWhj/QCGbJ
|
||||||
|
9E6e0ujJ+LJNM6MHXQQWMn4OtZuGZCyjCnVFqxHZqXwo9+HS5lpkwbzNJeMY6nSJ8m+raQ+teWOZ3hNP
|
||||||
|
Ut5u/B7t6JdMxqdIxjLylDeqyE4erXB6iOyi1LW2GvKlbvgyzz8xTy2b0OOPtq0Q3fD5nndlVyTjdVbG
|
||||||
|
3xQkePPImMYj+2/bVa6iFrVMeRuiaN3UnQYaZEwhbmpgrQhEK74eYsxqFTSvESWtOiR42VYjDaQVRyDH
|
||||||
|
IL9m3L6ympyXv6RRNDIuo4ZPF6h0pnr+gtAi4wyS8W9MpCNlm2FAxjLPLGQsWwAtZFw0Mg6r2xClWE45
|
||||||
|
sWlqVCGem6uaVtPQVX5nLhnHySiOnbhLfe3bBYWg5URjCep/71q/bDKWF5KWoHyDSJCmZCNkvc/aTtWj
|
||||||
|
4EhZdMOcV/XLKDnCQsY6CBnLW27rVKyomzQ3oeAyj/Nh3tyrYZ4iRLlOM4tKZnJbDNMYk0cwElfIqTx7
|
||||||
|
Y5kPNnU6Tshpqrwbi8avq2sRyZjh9YdMTJWzIF41GV+2kLEub3PJmPlG5B1qWE9jlcMOWuH0kGm3DOpj
|
||||||
|
wQvPVXmZd1HJWKYh5KBBQT2TNCIa6sL0eQPIWO4YF5sS3dMKp4e8YELulJFTcDLay5cndeNlyFguEZO6
|
||||||
|
asXR440kY9nyVapCOZxpbPx+CIEQi2PeK4IM8xSlepuNeFRO3xmpgyjpN3b0xmvqvFSJq2uAt5FpZWvS
|
||||||
|
wGSzubx5Wp+/KFpRyVgaO+bZ/RnG8zOEhYx1+P8kY/Wq/tKl1O4bubtDK5weMmcsr36vXDH/CxBUefl/
|
||||||
|
kciYcqzNdG4W9MhpY7+m3coCtKxH9H0DyFjKJTsa5NIhY+XR2XJL9JG65zlHz/KkbrwMGcsLjf8ryXhQ
|
||||||
|
3vA9uaHpXQZiSHKBuuHl1QJZUKshQ29RVhN1+JSN3FbuPjVoQEWQ6uWFxolAvJ01cvCD4XV1LQYZSxx6
|
||||||
|
19+rhUbj+RnCQsY6/L+TMT1QuYBJ7hsx1uYypyxrA1r3U8j/RSVjGfmp19YrUtPJSIhZFnBrsT3fKl3m
|
||||||
|
jSBjeRWa7B+W+WNjI1U5ci+6sFgu/CpQHtENCxkT8ltRyFiOzL5VqjQW1q2H3zQxLgBZ8JOLPfQHNp7l
|
||||||
|
SWO0o0LJq7mN5SmLgLdIQvXk3oB8ZS6DgDoN8Ds2gDSyVlyBeM4Zsi0ub+gp8YpDxh2qVsMTE/IuiJch
|
||||||
|
Y7U/O09phIwrVaiAC79UMqbcfGrrTj49ux+Y7d+OZCw31P0nyFjWONSFQBrh9JC8ZM/7QDWt9pJkTIIQ
|
||||||
|
WcquI/lOdFQg03bbG9kqXRZ5vAlkXIFkLGXaqq4oMH4JvDhP62SKpqB8KQuzyJi/hzZ6TsYqrjhmcorO
|
||||||
|
jLhvJhmzV+9OY/qS/xtTJFnke8QwLQp4G/L5PRqYbHg3ZiCyaHaaZFKRZKQuYmc8qb8MPRdTsLLTQiue
|
||||||
|
HmLIWfRO9FfniaIVlYylE6lOT+acrelFIEMUn4xb6V5xRBKR/GU4K57UXXZcpk4C/hzJWGSdpI7C6jo2
|
||||||
|
XZ1KYTCJSIatxtpBfnt5MpYpg4rqiLKxBV+ByGFOLblDoQBZMO8ikzHz7VqtGr5v0gq/Yzzx6v5u1wah
|
||||||
|
6gY8yoC/v24yFtn3V1MicszdQP4vwNA2i0PGZdSWPqmjMTKWtjzAzqjgdleRhTlkLPqdShtSPCDlZjyR
|
||||||
|
i1yPaUof3kgyVtMUJGMreqtCEF8ZKYPstpDhvSIICu9ZnlR2uYDG1NBCrcCqxqMispy2LOd0GssEppdI
|
||||||
|
pRfP25giy7BJXrsihyh0ZF50MlZESuPaKDs/TJTXEMUlY5HnQ2IRFWdCjVqqrjJnLcpvrMyCnyMZiw7I
|
||||||
|
dIRXvQaqPpNYPnnV1il2bkJEWnH0eFVkLFMGW61Mb7+SNYZAerMF5SB5F5WM1YiGZfWv3xBrSMDRRFwD
|
||||||
|
K/SoVl118FKu103GojMrma/o0JSatTVhT3vqxTKVYpl1dS0aGcshDKmLA/XVlHxkSjKXnWItOleGnCTx
|
||||||
|
zSFj4TuZSlrGsKJL4wk58i5TUFrhDfHmesYsgzTCeRPzRKJkcg2kV538W4akwR3qmH6xqJDLlrzTd5Ln
|
||||||
|
GBrxX5q0VoryrRkNII1/zaaZuh1O8pd8i0rGehn5121g0hM3RHHJWCDtIB6yvHBUDsXI8FkrXEH8HMlY
|
||||||
|
ILIWmUtd5M298vcbytjU9YuvhIxZJ4EnOwNTBCM7ZsTLUm/BNqiv5F1UMjaMWxDqe7bR6yZjgeiOkjvL
|
||||||
|
poW/0542NRIb0+t68chYRrpfNiUnGWlT4aTPWJ6O1QusATG+OWQs0Dl4LZ/Zhui88JxWWEO8kWSsW8Ar
|
||||||
|
q7YAbaeSGNvRIEMWEYIMYQzLIJ9X0GMQT0Qrnh5iwMl5c0xS7xEkGlmNNjYUMoTURy41aqRe2S2GUEwy
|
||||||
|
Zt6z6kjPb1xBDfEyZKxgqGBmKJvg50rGL8DM+rwyMqY8Rkm703iN5S36ItNqzUh2BfW1uGRcGKRM/wky
|
||||||
|
NiVruVFtHUd9+voWl4zrVq6E62ZMpYmTMV2u0zTQNYlvLhk/g9RLD63fC+CNJmMph3sD0++v+55l3MUh
|
||||||
|
ouE8keS5Wu2GMKHc/D04b/VU8lNkXIQGExnIrVht84xLFKB4ZFwWnUkI8o46JVcz8NJkXAz8YsjYTLwy
|
||||||
|
Mmbc5lUr6xYMTZCF3GMxSmRoSBaM/4slYxN4JWQscaVdrGTu1rh8RUaR6iTecxmJLIpMxkXEG07GZTGU
|
||||||
|
SmvKKGRHhMwt21TRlUMRE/9ubGht8n4LUQgPtU9Y590UlYxFyb9jGr3FmBlf0ikOGct8s1zyc6oIN7i9
|
||||||
|
SMblkG7d2GSdXwYyfPtPkbGcbDvAtIUstdJ8FVBDUpatfx4Zixxl/aCoZCxztJXZfurdiSZl0QqLOAoS
|
||||||
|
GerrK3lbyDg/DMlYzYETSay7KQdL7Hcr7cBwu6vkKWQseqgV51VAkXHBdi1ZEnWp919//bWQcUsd82o8
|
||||||
|
P1cy1s0Z64TfjPFEKYx5i6Jo8j66D6l4UnZFTITctGTyVBSHlTPy3hAgDVZUMhZII0zLGxYJikPGSk40
|
||||||
|
MLWIJ/mzzlrxDPECGTO+nKs3ZdDFhdRHZDOkuu749+skY4G0YQbbsMgviCwC5G0dX1AHOuS9Sqq4ZCyy
|
||||||
|
kEW8bJKAKc9NSEj3hhgLGWuF1+NFMtbPyxuXkSy2yaJ6OcYTJ0cvC9c69UzGfRmIzdtrvOmjRatW+POf
|
||||||
|
//wXcq21Il6t5+dOxrJaLBu+1bFkEwouSuws90uw7KJQskByzAwvUy6oH5hH4tLYxSJjGrNbA1lALD4Z
|
||||||
|
y/5Y+Rwit8yJkpoot8CQjJWc+Xdy7VqvjYylveX47Tt5N4+9djJmfdzrvV5vRgxeTnrKoRcx+OKSsd4B
|
||||||
|
SJLRmInyyo6LXdRNIe9ndWXeFjLODy0yHsr6yJqOVng9pMyyjmNt8HJQkYU9HSa5T0QrzstAZCu2Idtw
|
||||||
|
exhMd6l8yat9+vbD06dPv/7pp6eVFPFqPT93MlZxqXQpDU1vuJahubwBQcJLfrJv94rcz2ui/AXne4vr
|
||||||
|
GUeq7Uq6NIrtGYvC1KmjyF0rTkG8QMbMv03lKmw38+ediwKZLpA5XP2r118/GZdVr0+XbWvGtje+DGTK
|
||||||
|
IChvmkryLC4Zq/JSJjPrmr4OVRag5C3bsjdZSEYf10LG+aE1TdGE5fpI6YN2HD3k3XxD1LFoXdtIfNvK
|
||||||
|
lXBH7QV/9boko6GLLGtl8cYN2kZ4dZq9PWkWlxTpFvb8IsiYDRcq3qIJwxCFkle0KA+F+TWW/NQeZe3w
|
||||||
|
Av1cszp9xziSV3HIWIwvw+r5qadikzHLIOQjcpfhs1Y8QxQkY6l7GXpbKY2k8zLPuzYXsij1PTsJVea8
|
||||||
|
/F43GQvk5rHNjWzN7qCKAtENeYW+HJzQk+JLkTF1Vo7VmzqCLb99wTAd5Ah+Xr7y10LG+VGQjIXkZOrB
|
||||||
|
1H0zAuGLgDwH6Zk8mK8Xv/ut6NIrtA3hQHnrkFP9/Ntr1WiXvBoWHi5knKRIt7DnF0HGLMuc2vIKJOMN
|
||||||
|
J73ddbnoXc7klymtyq970ad2eIEstMiCS6W8Iao0VnHIWKZCDlJB5F1yUt7ikrHcpyGLeGc5bDbnJF5B
|
||||||
|
MtZNdZRVL2n9mL+Jd2DuFj1TkGPh6dY2JCodCUt+r5uMVX2oB3K68iG9fVPkWBRI28i9zuokokGZXoaM
|
||||||
|
ZcGoIttPLgMytYgn+jFbTavpCcpCxgVRkIxVXNY7Nm+XlLE95DKK22HTWE0FKSeFkDTq0tYv2TZV8n9V
|
||||||
|
tiG6ncURY1mxjbw5akEptm3JUqVx/vwFIeNpOtYt5DFFxl+RzGR4KA2pBWkoudPXXDKWxhVvVCstPX71
|
||||||
|
AhmXRafq1dSbFIzFVe9va9ISnejlyPHeibV0r8BXXkghkMW9fdbPG0yURMhYT6TmQsj4gjVJnUojsptE
|
||||||
|
MhZDNZb3DxpkrMpAbBBPkMqmFc8QYriGZKyHyFteyyP3cvyOMpDLxrXimwNZDPljk9bK868iQzCDdtaT
|
||||||
|
8SGSsWwv1Iqvx+9ZVs9ieMYCqd8H1arjAWUm9ZEjx1p5mAPx8KWz/R3rFNagEcoXNCABSekAyVhOQ2ql
|
||||||
|
oYccQY4yIGOJK3vj98jCMX/TiqOH7H/XT6vpdK+s2isvhq0VXg+ZVlFvpSkCGUunbNwOWuKIBhl/Yoa9
|
||||||
|
moMfKfPkAmTsQTKWumiF10OG/mcKkjHjOtWup+LK4Q+teAJxDi7RJquwc9TH1cdvy879qm0zpQPi9GjF
|
||||||
|
NwfSWfyBaRxlGRvmnTPQ56PyKlFCLd797W9/+y15tvDX9Mtjioy/btpKkaBMTGtB3aVKj6WDGWTckmE+
|
||||||
|
YVg5FaWVlh4yOT9EXWepS08EKVuGztPrlZM+WnF0aIkfKJjpsrWEZCyvhf8t/9cOq4N4GRvkHLohGZNI
|
||||||
|
5ay/VvjCIJ6HeOXqCCZlJ57xDybSkGHNhwXIWCerMlhSh8pmRhkkj2GFvPNL0mlFmctRTrnjVYbFWmkY
|
||||||
|
g0yVHCfRzq9dR3ns0o5l3n7+7rxnZExPQwhOKw2B5P17ltVT4xiwOdAvbrZhfdbSK7pbIP2i4FPq4H6O
|
||||||
|
YuS1U6XZ7gX19hkZW9lRF423we9YpygSqGGdJL01DRvhR/5mTOayi0dNq0lnkBdvNUnWVLv/SJ1OyCNx
|
||||||
|
w3JrQfSiH8n4V0xT3dFSCKSeRyiTF8jYDHs1B7JoJjcw6mUt8vKoV1+RoVZ4PWRx/QxHGfnImHWSrZVi
|
||||||
|
68bkK9eVylt4DBfxnsmF/8shLZ+6DXCVdlss2yBkVO3KTkW8bUlT9DRfPuTUkNBQUixyFOEaewojY3m5
|
||||||
|
ZjUSS5fqVYlq6Ewvq1Dwd/GYRIkNC2II+U0mtsXD7aKVRh7kt64MI6+LKZheKyqH/KYVT49u1auruyVK
|
||||||
|
s/yy57ibifCSXhP2kvq85Oy8LKp0ZTpa4Y3hnapV6WWVo+xkKFTRjLyrozZlXLCeIntdGbTjGULSkAt+
|
||||||
|
9Gf+C0KUXpSkPhWyg0Z8Y5B2l4VNWawTAzD0Lgwhc9StpW000jCEyMOqcqVCy2oOpC5CQvL+t07m6KYB
|
||||||
|
RLckfEuWVToQqZMQj1Y+AnmvnTl1sqO+GdZJ2lPqKbqoFUcPad+21JmyeZ2bxLNTOmsqXnU0ZbiCeqMF
|
||||||
|
0cUaZuizyEXI91k8QhwgU/ZqLqSuUubn6ZeFFXXyXX6vFV4PKXc7kVGes6QvWzWWTbW9ifgSRnhHS1ZK
|
||||||
|
lwixH7GNIukSw7avVlXtwNHbmGHaynkgn3bu0gW///3v/0GO7acI19hTGBkLdJfe6AosXmqhYGHMUgxC
|
||||||
|
DEAzDT3y8pOhsGEvo/OMCoQtDHlxhTzMilMgL+UZaIUzhry89HJQeWuFywchgxeJScqiZK8Z50UUlFXB
|
||||||
|
tOSvvnxa8Y2CcQyH8FqQPMxKm2EKI/SiQlcfE7qkBRXveTsZg65OpvRVZ4gF5a+LawYY3zCu+fHMl6Pe
|
||||||
|
09VM5xnyE4qUSWevWmGLCaZvWFedjZhqw/zl0kN0XtVJpWEEGnENIeWRdRqz0ioIhi9Mn0uWpvNSogT2
|
||||||
|
HzhAekWmjm1NPMbI2AILLLDAgqJBFu2ES318/YSIvyZsFNmaeixkbIEFFljw8lBedunSikddXV2FiP/5
|
||||||
|
09OnIxXRmvNYyNgCCyywoPhQ0zmlSun4s0wZJCQmCRH/DzFCkay5j56Me/bupRL7b4CWQBXKsmejUPWQ
|
||||||
|
Cz7eKkHIXz1KlMiD7jcJJyvyJUqxR8z3Wwndb3lzStJrqu/f4u8KurKUZE9qOI9mCNXTSjkMyv4ckn4Z
|
||||||
|
tdinFe+tkhLveVkUDOM/K+tz6MuqR/466aGr9wugbGR4JvFKUSFLGMosD7KYpE9b6v2sfPI70y7BMhvK
|
||||||
|
oqTMF8pvBvISeUgYJZs8L+R5OtJmRIFyPfuekDIY5mEMurT09X5ehuflMfyOKEkZ6uPLPKTkb/i7Hvxe
|
||||||
|
2u7Z7yrtvDz0n5/BMJ6ujXTD4Bd/k3rp5GrwvRmQfbBSXtFjXRosm0Y4Yyiox7LjRtd22uHfNFSrXh2T
|
||||||
|
p0zB2XPnhIhlaqIvvy/aw0iliHuLFi1Cx44d8W737vnxru5vt18YXqgH0b1HD7zToSPKliunUz4D5REF
|
||||||
|
F2Wqb22FhrY2CnbNm8OuRXNY2TVGo8a2sG5qB7uWLdC0VUvYNm0Km2bNUKdBfdUb1mnQAE1atFDhG/P7
|
||||||
|
Joxbv5EV3q5QQRmQKGfjJk3Rul07tGjTGq3atEGb9u+gTj3GL0CCeggZ1a1fn+Hao237dujarTP69OmB
|
||||||
|
IUM+QO/enWDXpCEqV6msDpro40gdpC5WtrZo1a4tmrC8TVq2RBOWuWXbtmjTrj3zb4PmRLPWrdGkdSv+
|
||||||
|
bYWmLHsZMfS8ssjiQ23m3ZRhpM7WzZqiMcPYsH7WRCP5n2naNG8GW5FRk8Z4u3JFlKYhV6ZiNrSzo7ya
|
||||||
|
8PsmaNjEDo2IclJW2TnAPGrXrYvWrFdjysmWaTVlGRrZ2DyXBf9Wr1ULts2bqnpI/du+8w4aWDXi7zoy
|
||||||
|
qlajBr9vj5aUZ2OGa2hrxXayZn3ZbiyXXQuWrZkdbJrYwqZpY/W3ctWq+ToFYxAdaMK6NWX9W1AOrSi/
|
||||||
|
lm3bMD+Cf6Ud5XNrft+ebdmYdRYP6e3y5VGhYgU0ZZk6de2I7u91Rb9+PTF0aH8MHtKTutgGDRrWgk1j
|
||||||
|
G+pDWzRn3Zu3bkm90umWpCvftWIeoi+Sr/wvbVmhYiVUqVZNhZG2FEgaLRhP2r5WnTpoTzm1o7zk+zaM
|
||||||
|
344y0uEd9VubPHm253eCqrVq0LvL2+vMdq9UpYpBHOoe02jTlukR7VTaz38TdKBNNWS7lGG9RW46Qi8N
|
||||||
|
G9vGrGsPdHv33f8YFF/lcdbrRNdu7+KD/v2xgLyZlpaGzz79VEj4j8QmomkevRb9efoUmT/99PTpTz/9
|
||||||
|
BPCfZ0AeDL/7JYPPjRs3SDo6ontmeDROUaCufXrC3skBUxfPx3w3JwTHrkZw/Bq4hvrDIXA5/JPWYP3B
|
||||||
|
3dh+9hiiNqcgODUJ8zyWoXzFivCJCEHqwb3YeGAPth3NQfbFs1jq64NKNI6S9LAqMEzK7m04cT0XWedO
|
||||||
|
Yd/ZE8i+cgHjpk1VZF6QIJQHRwSEh+BU7gWcJm4/uIuvvv0af/zzHxEa5gNr69o0zCpqa1m+eExvRVQY
|
||||||
|
Nh7ai1CWM2xLKjadyMGBq5eQxXIlsZzrjuxHTM4uJB7Zh8RD+5B54RSmOToo71S82padO8InORYRu7di
|
||||||
|
5bZN8E1fj1Usv/+m9XCKXwXXlDg4xa2CZ0oCfDclY1XWNgx2mouy1SqhS78+cIgIgwPL7hAdDpfEOPik
|
||||||
|
rIMVCUQMliqHmQ6LsPfKJWQcycYm5r/70mm4hAQoMpA6CNlOmGuPoA0x2JSzG0dyz+DqozsIWBuCklXL
|
||||||
|
slPtgP3Hc3D+7hUcu3YWW09kIWpLLFZvj8farfFYnRmDhF3rELIhHD6r/ODg5QDngGUku2Y6T9BA1gUh
|
||||||
|
nmFlEl5U+gZknjyEAyzbxQc3cf7+TZy+fQW3PnuAB19+QnyKj776DI+/fYInv/oKD794DPsFM1C2fFlU
|
||||||
|
qlQRO7J345Pvv8TDrz/Fp796gt/+7fcIDPFEp05NMddhBi7dy8X1T+/h4kfXcenRDRy5cRoHr53E6XuX
|
||||||
|
cPzOBZy7n4sHX0k+n+DKx7dVPWvXq4vBo4bh5F3+fjsXF+5exY1P7mLvkQMoWbY05ixagAdPHuGjJx/j
|
||||||
|
ykd3cPn+LVy7fxt3Hz/E1ft38NHnj/GA+PSrL/DxF5/jMf9mnTiEtr26Kpk3a94CR06dxtff/xpPvvuG
|
||||||
|
v7P8Tz7HvU8e4+q9e7j1Eev+ySd4/MUX+Pzrr/j5Y3z+1ROMnjsNpatWVqMiXfu9hQO6nQTatvi68B/i
|
||||||
|
rKfyVzcV8ZjIIhbyOztFqC/zMKHyRGeiO/FuAch3v0QUrEdXwuf06VNKUQzJTwjIjp7FmNnTMGrGFIyc
|
||||||
|
PhnTHOaRTD0xc8kiLPRygWdkELyI8NR4pB3dhzXbNyFy8wbMd16ivJHoDYnYciwHu08fw6FL53D+zjXM
|
||||||
|
cVmGcjVr0sssiWr08jKzs3DkynlsP3kYqdl7sHZbOnqQuJQ3a1AegQzxrOlpxWamIj5zoyLyjP17cPnW
|
||||||
|
DTz47DF8Vqx4oR4C6WSqkUhWJsVh9Z6t8FgfB++NiVi1bye2XThDEj6AsJ2Z8GPZw/duxVoSXdiuzfDJ
|
||||||
|
SOb3m1GLxl6uUiVMXu4Ch9WhWEbiXb4+noScjqgdGYjekQnPDfFwWBMGp9houMaswuwVfpjl74O5Ad6o
|
||||||
|
Zl0PvUePwJI10QhITYFHQgyCt25GWGYGmtAbU8NXltvB3RXbzxynzA5SZkfZke3CtCXzVEcgdRLCXLh8
|
||||||
|
GdxWBcOHBLzxwHYcuHgSC32XoUq9Gli7PgFn7+bi4KXj2H/uMDYf3oXNJ3Yifv96EnAEgpJD2UZxCIwP
|
||||||
|
hle4F5z8nbDEzxlWTa2ZvvFDJ+Ld1mvYEOnstLaePMh8T+HM7Ws4eYv5XTmDI9cv4C7J7uHXn+HeFx/j
|
||||||
|
+uO7Cg+/e4IjF06iWu1qqMo2OHD6MM5/dA2n7l7GpY9v4dbnD9C5+7scmZXHgXPHcf/bT3H50W2cJSlf
|
||||||
|
engDp0m+Jxn24LXTOHbrAk7cuYgLD0i2n97HI4Y9eukUR1rlMXXODBL4NWSdP4J9xMUH1xG9bq2S62zH
|
||||||
|
+bhw7yqOXj2HnIunceD8SerjaZxj2U9ev4xTN3Jx5cEd3PvsY3xMEr3z+BG+/OHXmOO+FCXKlMa6jRvx
|
||||||
|
9Y8/4PrHDxnmMW6QfHPv38Xtjx/h/PXrOHvtGu6SjO9/9pn67Ytvv8M+yqhO28aKiJX8SOrd6J3+z//8
|
||||||
|
759pcyMJscce/0EUtP3XAcmnBfE25W55ivpQcDP379+vScbdP+iLkTOnoN/ID9Fv+FAMGDUc42dPx/TF
|
||||||
|
C7DAfRnitqTBJzwYs5c5IJ5EHEtvMZykNGX2LDRsZIXYtBQkkag27d+N3fQ0Dl84jZlOTijLIbvk18DK
|
||||||
|
it8fxjZ6cxn0BMXQQ0hyrd4hQcmG9oJkzDg9hw4koaTBm8S3KGA5QlOSsPfMKXo7d7AuPU0RV8EpDpnn
|
||||||
|
lPLEsCwb6HW6J8XAOWktVm7fjA0nj2KVdAIH92EF0w3elUEy3gWfzPVwWb8WqSyflZ0tbDlcdlgTjiWR
|
||||||
|
wSTfDASmJSNgYxJ8mZbvujgsCQ3CVBcnLA4OwqLgQLjHrsVsPx8sCPRHtQZ1MGjqZDhzRBGSsQkx+7OQ
|
||||||
|
eDgHK+gZN2vfVhmsGGvI2lUkHXrGHEVsPpqNwHWr0Xf4IPWbyEKG+gu9XbDY3xOO/h5wWelDTzURvTnU
|
||||||
|
b8t0Dlw4QoLeigyS8Pp9m7E+KwMp+zMQsy0BSXs2YuPBzUjL2QyvCF+4rvTA8ihvkvJyNGraEG9XLM88
|
||||||
|
nsusIMQ7lymB1JwsetwHkX3pDK48vMsRzTFkHj+A3WeP4Py9a/yORHrnCk7cvITTd3JxlYR89OpZ1G/S
|
||||||
|
ALaNG+Pszcu4Sq816+JRnCHh3np8D526dUGnd7vg5pOHuP35I+SSjA9fP6vI98iNczjDDubiRzdwjZ7w
|
||||||
|
5Yc3cYlecy7/3vnyY+ymzkjZFtIBuMa0LtNTP3T5NMt3An4RQUpnnLxccebWZWw5spcjtP3YQQfhNEn4
|
||||||
|
BEdh+84cxf6zx3HhznU6Czfw0Ref4u6nn+DjL7/AlIVzULV2DZy+xvzv3sLxa1fZ0dH7vkmP/SI7hkus
|
||||||
|
Yy47jdu3cevhQ3rIH+HK3bv46//8HWFJ4Shbu6qaolLyYzlSUlJobkjhZ8tjeV58qByuiYmJSlkMjU8I
|
||||||
|
oveIIfhwynj0GNAX3fv3Ra+hgzBo7EiMnTUdk+fPgieJeK7LEiymssekb0TM5lQkbE3H9Pnz0bRlSwSu
|
||||||
|
iYJXVChi+X3yzq1Iz9mH/sOGoYRaDCkBmyZNsIUkvOXwfkXEGYSk8U7Xzuo0mCEZi3crc5vuq0LglxKL
|
||||||
|
+UHemELPxT0mGmGb07D11HEk7NiKsvSS9ItmesiikF2zZghMX4+VWzdhKT1bf3rXcYcPICJrB5ZvWg9H
|
||||||
|
frcwJgzLNqxF+J7NWBITTsJeDZeYCFSpWgXNO3fAPJLfPBKhR3Q4OwJvTHV2xNzlnpjj7ckh6WwMnjYF
|
||||||
|
09xcsZBkvCwiFI4hwbD3cEWFapUwfMY0eJK4V1EOSTl7kcA6e8euQtM2rdSiYCnKJH7TRhy/dRU5l89h
|
||||||
|
J0kiaF00uvTpochGFuYqV6+GuR5L4RzozZGJMxwDPBCctArv9n4fvfr1xl56hAm70rBu9yZs3E95Z2/H
|
||||||
|
1mNZ2EbkCPnRq0w9kEEy9oHTimWITlvFNvREbZs6an7UUGYFIfrRo9f72EPyTeXIYV3WVuw5fQSxu9mh
|
||||||
|
HaD3vTOdeZxE1tmj2EXsIY5cPYODJOI9Zw+hYQsrvNOpE3LoRR/i98eun8exG+dxJPe0mhseOGIozty/
|
||||||
|
hhO3LuHozfM4TW84+8op7Ll0FEdJyIKD/P8EfxMIGd8lGa/P2KjK5uLtwfAnsY/5bj9xAAcvn8Qyb3f1
|
||||||
|
m5OfJzKP7UP8jjR2UFux+9QRjhxO4FjueezlqC373Cmcv3lNebtnrl/B8Su5JPV7GDlpPOrbWuHynVu4
|
||||||
|
8egjyvEY0g8dInmfwXESseAayfcGw959xE7kzh16y5/gj3/6ESOmsBNVi9V0bPi3eo2a+OYbWcPCMJbJ
|
||||||
|
8lieFx8qR4Sfn28+MhYSlGHjhAWzMWXpfIywn4TB40cr73joxLEYO3MqpiyYA5dgfywL9IFnaCC9rBCE
|
||||||
|
bkhEIr3NkePHqUWcQJKNZ/hKRNN7TdyeiWSSZdsOHZ6tKLfh5530PDPprW4mMWYc2o94krkMW2WRz5CM
|
||||||
|
hbybd2yPJatDsCiKXqj3Mkz3cYPTmgh4kOTWZu3E6p1bUNeqoVJ+fTwVl2QmC3P+JGPPjYlwTliNcIYN
|
||||||
|
3ZWJ4N1bELJzM3uk1VgcG46gbSkI3ZmKhRH+mBnohqXhAShHWbTu2glj58/B6DmzMM/LU2H8/LlYsjII
|
||||||
|
oRs3YOLihRg6fSocV1IWsasRSmL1TYzF+IVzSbSlMMPFWc0R+9GbDmI5ZPpjcZAvbJo3UZ57OdZ3464d
|
||||||
|
JKJcklQu9pPYAkjGLTq0VfWRMHUbNYRTsLeaHvKIYD6rVmJFXCTas6MYOGwotp3IxpqtyUgkGW9T3upB
|
||||||
|
HCJBCS5xCP/wm8f07k5h9aYYhKdG0wPfAucwF1RrWD3/eoEGpL0GDhuC9Qe2IGZnGtbu2ITUQ3uQcSSL
|
||||||
|
5JeNxL1bsPfiCewlWW/Yvx1pB3ezPDkswzHsOLEXdl2aoWff3vRyr2LXmYNIO7Ib+y+dxGF62K3faYuJ
|
||||||
|
82bg6O2LOHLtHHadO4Sj/HuEhJ19/TSOshM5eOMM9l85gVx6xzc+u4f7X3+Cx99/ibDVUapsnkE+7CiO
|
||||||
|
IP1wFvUoi57xSYydOlH95hW+gmXahu30irPYgSTszETsjs0k7PP05m/T2z2Po7kXcfbGdRzPvYyDF8/j
|
||||||
|
4r276DdwoFoU/OjJE9x7/Bh7ThxHUtZujkDO49SNGzh/6yZuPXqovOivv/8e1x88wK/+8CecO38ANetX
|
||||||
|
YQeq018pw4yZM2VO9QI/Wx7Lo/2QjLfMmj1bKYze8MQwZfV46tKF9PyWYY6HE0baT8HAcaPQjwYphj9y
|
||||||
|
3FhMtJ+KSfbTMXEa/9Lzm7FgnlossbVrjHc6d0IcvdBAepyRG9dh+7FDSNm1Xe22kPQlv35DhmAfvZJN
|
||||||
|
B/ch/UgO0kjGMq/bikPusnJ2Ph8Zv4UxJEKP9bFYnroOrkx3FjuCOSv9EcYOICF7L+KINl06KvLVx9PH
|
||||||
|
bd2xI1ZuScWSteHwSI5FKEk/fFMKFrq7YMbiRZg4yx7zfN0RtjUVASkJmE8PeLqLI4ZNmaQWEzv36oVp
|
||||||
|
SxwxmfWzd1qKuZ4emOqwCP1Hj8LI6dPQtU9vjCM5+66Lhwe99eBNGxBEDJo8AaXY+XivikTE7u2I3beL
|
||||||
|
3nEmVu/bienLHFCrfl1V3pq1amEr67/r3HGS20FsPp6NkLR42LVqrpvGYBjZReEXH6WmaHzXhvFvCFan
|
||||||
|
r0PLdm0wdtokktAehKXEIGX/Fnqth5C6dzvmOTtgvtNiLHZdiiXuzli0zBH2C2Zi0pxpmLl4Nt4f1Iue
|
||||||
|
e0WjUxQCkeGEqZMQup4dWVoMItITsJrEvyojCQ6ezpi6cB5mOsxHaOIahLHcIamxCKDXHr8rA1Hp8Shf
|
||||||
|
owKGjBzBTuYEkum1bz2ZreZwD5w6Sl3poGSx6+JxnLx5CQcu0SOml79+zxbMd1uChS5Sdhc4e7nD3Wc5
|
||||||
|
vPx94ennA9/AAPTu14+dXWmExEYxbZkrP4YkeuupOTvRtfd7aspqZdJarMrcyHKtQwThHb+GbehIfZ2P
|
||||||
|
eWzT5RzJ5Jw/i9M3ruLQxQv8fA6nr15RDkXX7t1x55NP8ODTT3GK38lvQtiObP+FS5ZgqasrXL284OXr
|
||||||
|
Bxd20NkHd2LO3HHP7El2UFSqXBkf03PmI3dGOhLV+LvlsTz5HyrG+UGDZF7yORnLkFi2UE13WoQ5HA4v
|
||||||
|
IjFNcZyPcXNnkEyb5M1xau8t1KNnv75qvnhF/GpE0BuUaYgIEm2VmjWVgkqYybNn4vD1XGzlUDH9OMn6
|
||||||
|
cDY9vbVoymGr7DDQk7Ea5rE8bmujEUhCXZGZitAtafSKo+C5PgErt2UgZNtmROzdhV7sKCRtfV0E8n+7
|
||||||
|
Lp0RlLEBS1eFwCEiCAtX+sEjLAj169d7VuYOPd6FCz15p8AV+HDyJIyZOQN9h3+ojL330CGY7bpMEfAk
|
||||||
|
EvJcLw+S2ULUqF3zWfxRs2fAM241lkWHwSdhLVKPHsSAMcNRoXJFpOzdja30xHZdOott9BZTSLhjZ01F
|
||||||
|
5epVVdym7KQOXDiN9GPZHPpnIiVnN+J2pcOudfO8OpRAyw7tEbhuLRb6u8MtwhfLQn3Z0cXDpokdJrCz
|
||||||
|
TKVHGpEah7Sc7dh9OgeBq8KejUIKh24+2lBeWpCws0m4oYmrOOIJh2uoD1zDfDDLbQHKV9ftBhGMmzsV
|
||||||
|
XmuCMNNzMVyjArB2exqWRXLkVeotzFm4gJ71NvgmRWHj/h1qbnfL/l1o1+kdTFu2CMnZO7D//Akk0YuN
|
||||||
|
yUpnPV1RvW7tZ2kXBlkY3MAObgc98c05e9hJpCE4NQFN27ZGzdq1sSw8CE4RwVjBEVR4WjLi9+xQ2wf1
|
||||||
|
8WXUtO3YERyhR3zySq7CsYsXUbdefQwcOhQPPvsMH5GMr9+/R0/4Y+w7fgxVGjXIVwZBiRJvoU/vtqhV
|
||||||
|
q6rafSJyk+2Q0rZnzpzB2bNn8etf/0pIeQbDWx7L8/yhUlQkPuvx/ntKmfSGJ+QnQ+Jx9KCmLFmAOfR8
|
||||||
|
ppGYJy+eh+b0WstVFE+qcAOWtIaMHI7k3VuxNNiXHlwEordvovEGqeG4xJUwc52XIufGNew+fwb7ci9g
|
||||||
|
54WzJJkQ2DRtonZTGKY3bvp0hO/ZhvlRwQjdlg6v9fFwT4qFU0wkVmZsRMye7YjM2o7h9HAN66KP33NA
|
||||||
|
P3jFRWExSXiKkwPsxdta7g7bpnZqXk/mlXsNGQyn4ADM93DD0EkTMGn+PIyl5y/e1ZCxY+kVz6cXPAUz
|
||||||
|
nemt+XjCwc0Z9a0bqc5LZDZ5qQOWrQqF85pwRLCzOHT1Arr1fR91G9TDkcsXcPzBbey5fBZbzp/E1nMn
|
||||||
|
MGTCKCVLKd97bIOjN3KxgUPsyC0pWL1tE6K2bFBzliILCdPx/R4ITU3ELE8nOJOI5y53hgvlW7tuHUzl
|
||||||
|
MD/tgI6Mo9LiSP6bMHfpAlU2c8jWGCR+mTJlMY8dsnfkCnhH+JOUV8MneiVGTB+LyrV1+5SlnKNmTKCu
|
||||||
|
zMPERTPgnxgJX3rv872X4K0yJTDXcRE96kSEkSgjM9Zh0+G9iCE5yjTFDJJxBL/Lpleckr0La3akYtlK
|
||||||
|
X9i1baU6b61yCXSLs42wftdWRG9OgVt0CJayjVesi+FIohms2VEt5gjKgzronxiDxJ3bkMgRmuyXl0Vq
|
||||||
|
kWu399/HsdyLuHznttodIYtxspWtXIWKmGY/A4+//BJffPMtPvv6G9zhbwmpG1HdRnagPJerfK7OjrVW
|
||||||
|
7erPiFgP9XKFvMMsmzdnChnP42fLY3meP1SKRn//+9//1LJ1G6UoeuWRIXFzDn2nOy9WJDzPyxULvN0w
|
||||||
|
x90JrTp1eGEKoSAkrQkzpiHpwC54c4jomxyDKA45lwT58XfdIQoJM9vNBatIouJBHryWiywahEd4qDpQ
|
||||||
|
YngApSTLszwyHOtPHsHa/TsRRZIPIgFH7siAb0ocss6fojeUDn8S1dIgf5QkMRqWT+ozYtxY1sOD5DFV
|
||||||
|
TS1MXeyARcy/YWMalXj6NMyB/H6+p5si21nLltITdsYoesjl2YGMnTUD4+bMwPCpEzF61jTM83DBApJ6
|
||||||
|
rfp11EJNuUoVMcPdGe4cLnuQ9L05XE8/sg92cmihWXOcvHUNW0g0u65wOPyQpHzpDN4b1E9nqJTF6Anj
|
||||||
|
cfBmLjuVrViZloTVsrUuYTVq1qmtqwPDvPtBH6zlsN81OhhLw33hFOYPB1935Rl6k4CyzhxC+IY4+KwN
|
||||||
|
RdjGGAwY8eIooThQi6eVqzAPXyxwXwznAFd4hPjCNcibdeiDMhV1YaRjGWc/CfaL52LElDGYMG8aOzZH
|
||||||
|
jJjNYTu9Rs9AX5YrDn70rL3XhmB1ZjKWhweiZfvW8GcntnprCj3b3WrOd9eZw3DyX872sWVHZ4SMWb/2
|
||||||
|
HTogOm09IjdtwFoSsr2LI5aFBKBewwbo3f8DpGfvRTK94TWZ6Rw97EHitky1TU/NxTP+4GHDFBGLB5x7
|
||||||
|
6xbO37iJHXuy+HsZuHl54dsffoMn33yDe48e4fGTJwhP4AjP2krpjWFZyleskO+wkSH0U3OHDh0SMh7N
|
||||||
|
z5bH8jx/qBRdvv32G3XyS6385imODF07dH+XQ1AnONAgZJohiF6oeLYyVJaomiDpyaq87CGet8wJ4dsz
|
||||||
|
EMthaDiHkFtIPn4kl7fefj7FsXxVJKLp0azevQ2bTx7FDnqPi32XK29TvyNChnktWrbEqu2bFfkGpq1D
|
||||||
|
Uk4WMk8dJYnvR9jm9WqPclhqEuav8KJn66vzvvMMRUhZphmmz55NMp1FMp2MPh8OpYc7FePtp6Emh8Gl
|
||||||
|
Sstx2jIYxe+mLJyP6UsWYS693ritmzFxxgxUrFwJUxzmwynQD3M9lmEMyXiOyxJMnjlNN81QsiSq1qwJ
|
||||||
|
Fw6HV25ah1A5DLIjHRnHctCQHlT3nvR6717HnmvncfnxA9z+5jNsP3MU7bp1zJP3W3B0daHHfAJh21KR
|
||||||
|
dHA3onZugkd0KKrWqE6PU9d5DR4/Bskchi8lgbnHhCCC5OVIMq5FzziSsk3P2Yk1JKOgpFVIytqsmz/P
|
||||||
|
k7UWxGvWt7kxSLjadeoiLDYSjt5L4b7SC26EB73zDj07k4x15RMiGj5hNAaPHo7eg/pjyOhhmMnR1LuD
|
||||||
|
3ldkPIueunu4H9wYLyAuAm6RAXD0c0fztq3hRzKO3Z6KbYf3IfPIAXqvWzGKbSW7YwqWWw99p96HhLs2
|
||||||
|
PQUJ2zarhWLR1Y1Zu1CnXj1MmTkT24/kIDNnH9Zs2kgPejsSMjahavUayoOV+JOn2+Pq/fvqAMfZq1dx
|
||||||
|
/aMHSN6YhpJly2NNXCy++vX3+Pyrr/Dg8Sf49vvfYHX6Jth0kwMh2uUSlCidfxFZyFhGWFeZPp/3GMby
|
||||||
|
WJ7nD5Vi6EcffUTPryJKGPTy8lOfoYPgFLkSYaLkuzOxlsTqxCHgh/ZT0GvEh+g2uD96Dh+K3qOGo8/Y
|
||||||
|
kRg4YazypoX4StOTcQ70x+azJ7D++EGs3r8bKSTPVfT2pjsuwJDx4zCUnuD6/XuRwe8zThwm+WxBGj3f
|
||||||
|
mUsXo3aD+jrlzSvLOJJmAIe284K94Ze8lt5hJjaQsOKytsI3MRoh9AZ9Y6MxbekierNL1UkxfXz5W6FS
|
||||||
|
JcxcMA9DJ43HkHFjMIze7tiZ9viAdaxSnWFplOUZZprDAkXCDj7uJJwAJHNIO2zMaBJiDXrKjliywgcL
|
||||||
|
vd0xfv4MzHNdgqFjhiuPWIagterXQyg7ig3Zu5G0d7vybJP37kSlqlUwZAQ9rycf49TDW8orzv3iYxWu
|
||||||
|
WbtWz+ro4ueNbZdOYwcJOW7fNsRk78SSkBWozPhyOlLCzKG3vo5k7BAWgNCM9VjPYf5iltXGzhbhHIFE
|
||||||
|
b0pCYEI0ghJXI+NwFhzcl2Hs5ImYZM9OZpY9xkyZgCkzpmIqP49ie9VuWO9ZmxuDjBoaWVvDPzIQvtEr
|
||||||
|
4BbsgSW+zpi5ZC7eHfA+etLD79b7Pbz3QW+MnDwOg0jC/YcPxlj7iZg4cwoaNG6opjCmUG6TF8zALOeF
|
||||||
|
CIiJYDlXYaGns9pXPoWk7RYVrKa2VqyLQxDh5OPJ8tpjpEwZTZ+OaTNnYIr9dEzl30HDPlRH+EUu8tsu
|
||||||
|
duZyACg6dT2SSMpb9+9DlarV4OLhhiPnzyB5+1bEZ2bgwKmTiI6PU+XRe6vL3N1x89FDXLh+HWeuXFHE
|
||||||
|
7L7cW+nF1u078OnXX5OIH+Pxl1/hGxKzz+o1aN69Oz6kRz1/0SLMX7gQs+bMwdx58zCbmDFnrjr+r0Zn
|
||||||
|
eSM8cXZq1a6Dr7/++p+0uxbM1/JYnucPlWLapUuX1HAt37CePw2dMhGe6+OwIi0ZK+h1hmemYimH4DM5
|
||||||
|
VF3O/5eTeDyS4xC1bydC9m7DKpJLBg2idaeOalgfnroBhx/cRsa5kwhgGrNlWEsi3XruFNYdOkAPcDPi
|
||||||
|
9+1CSEYK1tF7DuTQXLy+8TPEW62rDEGMpRwNzicyBCtSYuBD4vUjvGMjOBQPh3tYIDYwjUR6zO4RwZjh
|
||||||
|
tBgOy91hxaGtEIjURbw6OQ242HUZhkwYp6YiJtP7XR4VQS94NmrQMxZPvnrtWvR8fbCcHVBgXDRCSW7p
|
||||||
|
2Xvw7ns9lHcbkhSD0ORYRG1aD9/4SKxctwZDx+WRMeXVuUd3nL13C8dvX0PaQZLCjjR4x0WpQyjT5s3B
|
||||||
|
8Ue3Sca3cfjedRx6cAPRmRvVFIluvroEyxOG7ZdOIftmLhIO7ELKsQOYQe9bOhJpG5l6iVgXj5xbuVh3
|
||||||
|
ZB92XDyFDHqQk+bNRIvWLeES6I05nksxc9kiuIb4YfepQ7j40U3c//KxgpyOO8W4OReP4+ydXOw9d4Tk
|
||||||
|
vghvV86/hVAL4vk3btqE5LgMS/2WYZbTXOY7FaOmjcO7fd8nASZiVVoiQtgRLPZehslz7TFx9jQscHfE
|
||||||
|
XFcH1GvegJ1SZcxwmAv7pfPZ4S6AG9suOH41HLxc0akHR2HLHOAfvwoHZHcNSXXDnh3Yf+Y4juSeV4u/
|
||||||
|
O48fwtUHd5B77zau3L+DI5fO4cMxo5Ts55IQj1+5hFPE0YsXcPzyJUTExSiZBQQF4uaDuzh67gx2HMrB
|
||||||
|
sYvn4RscrOKJpyqjwLXx8bj/6adq33D26TPYnJODcVOmqKP3uw8cwKmr17Bp715cvHEDDz99jBnLXNDu
|
||||||
|
/fdx6tw5/PiHP+D7H39UBH7pzl188tXXePTFl+g7ZChHDLq2UzJkfi1atsJf//pXuauhPv+3PJbn+UOl
|
||||||
|
WHT8+DGlKPnJuATGz5sNp5goLE9JRODmjVi7Zzs8EtZgmr8H/DM2kIR3wG1dDFbv3QFvErMPSTXn/m1M
|
||||||
|
mkuCq1Mb67P3IuvWFZLGGaSdPoqVHIJGk7S9k+PhkxADt1URcIkKgTOH9jM8lmBhgAeS92zFiInjULVW
|
||||||
|
TXrYOq+lW48eSCVZr6C350RCXxYeACcOc0dNn4ih9MhXbdoAf3YS4lkJMckx7ZbvtFfeqqoLDbKRlRUc
|
||||||
|
Pd3U9IMLPV7PiJWISk3GNOcFqFJTTgOWQENbWwQnriERRyGGXmfclo3YuGebOjUm6cXtSFdbpmK2pCJy
|
||||||
|
8zrEbU3BBx/2V/PnUs5R9PTP3LmOk7euIm4PRxI70+HHYb385hnkjxP0ik8+uInTH93GsYc3EbQ+Vs03
|
||||||
|
y/SILCR5RYdj08nD2H/9kpqCSWTHNGTyBDUPKQtYFStVxnoS1MHbV7Ej9xz2kKTO37sJtwBv9BnwAVIp
|
||||||
|
u9X0jGWrmxx8OHLlLC4/uIVbjz/Coyef4tajBzhx9SL2nzuOY4yfsm8LOzNfjggqPhtFFAbpLNq0b4cV
|
||||||
|
a1aS9N1JyM4cGSwiGY9HszYtEcG6hCWtQRA7STeOXqaxkxtrL6OPKZjr7oD67axQs04tzHcjOZOgpyyc
|
||||||
|
xY5zIVyD/WC/eD6JayA9bU84+Hpg66FsHDp/Fml7d2P/6RPYdewgth3aj80cXZ2+IqfezuFk7gXso4wi
|
||||||
|
4mNU2zm6uuIgyXYvdVlOxF25cxshq6KV7NfExuLy7RvIPnVCecU5585i6uw56jept3jIO/dm4fzNW4jf
|
||||||
|
QqciLR1r0jfjvb4fqLn45G3b2Smcw67jJ3Dp9h18/PkT6l84eg/9EBevXMVnJN/7H3/CjuAqDp49hxsf
|
||||||
|
PeTna7Aj8RrOdUt+/QcMpMmpexvK83/LY3meP1QK9+07titFyWd8/P+D0SPgSO9zUXQoXNZG0YuV+xq2
|
||||||
|
wClhFZZvTEAACdpzXSy86C0GkaDck0nM+3dg9LQpsLZrrHYDxOzfjoyjB0hOWxG1NRX+9DadwwPhsMIb
|
||||||
|
sz2cMdttCY3TSR0kmeXkoO6a6DtkECpwaC5kLPPFXiv8kEhy84haifnerljo54bFKzzQqlN7tGjfFktp
|
||||||
|
0IsDvBQ5j5s9nYQaQ6/MXhGIqgu9Oht6yg7L3eDo74lIenEynE8muY6bOwVvV6qg6tu8TSsSexJiMzdg
|
||||||
|
bWYy1pFMg2OjOdStit4ku81H9yFhVwaNMgcprFfi1o3o0rOb6sQkvounB3I/vof9508iiZ1Ocs4O5WXL
|
||||||
|
b2s2rMOFx/dwhuR4/uP72Hf7MtwiglClhm6KpHSZsli+JhIbjmVjFz3DTHqBcRxxvDd4ACpVq6o6Fllw
|
||||||
|
2nP2FE6RgFOP5aiTcNdI7B4rfNUNdnvUfRaHkbRnC7LOHsNeEvKh3LPqEp+rj+4hlx3liRuXsY9kfOra
|
||||||
|
RWw+vAfOIcsVGRdciCoIqUPXHt2QsC0ZXiRwZ39XONALH02ZN7BqiFUb4rCaI5s16esxz80JUxfMxsgp
|
||||||
|
EzDXeTG9+1koXakM7OhZuwV5K0953KxpGD9nuvLmJ8yZibadOmDuMid2qAtJhutJmGcQk5mODVm7sDFr
|
||||||
|
J/ZxxJVz+jhOXDxLz/Yczly9TA/2BNauS1LtvDIyAruOHkJG1h6cyb2Eex8/hK+fvyp38sYU7D9xFNFs
|
||||||
|
g8iUDdh86BD6kUjlN5F9JXZy+44cQfa5i9Sd9fBZzRHYqhi07dhZ3TAYum4DUrPkCPUJZF+4SNK+jWku
|
||||||
|
bug3ajTO37qD6w8e4vAF8cgvI33vfuw+fgoRSRvUGoLhnLzkZ29vL2R8mp8tj+XJ/1AxwpOSqND8aGh8
|
||||||
|
4onVrFuH5OeJOb5emObmDI/VUZgf5IuJrkswmcPnqS5LsSgkAFNJppOcF2FJWABWkuh69O6Fpi2aIyIl
|
||||||
|
ASvXxyFULtShB+1DL3gRw7r4LYdfdAS9JJIx05nNdIZOGIdpNET3lSvQpFULdfpO5w1WYthQBCevhfeq
|
||||||
|
MHgxjcVBnlhK8m1oZ62u6nQgwbqE+mG603yMnT0FniTApT7uyuPRD0Pb0rONTIlXByVkeiFkQyy2HNyD
|
||||||
|
MfOfk3Gn7t0Qtz0F8dvWIzx1LSLSYhASH43y5Stg+Pgx6nhvclamusxm/7mTSN2VifZdOyqDlvgeK/zx
|
||||||
|
0ddP1P0Gsm1LplVmOjugFL3ezAMkiYd3cOuzR7j15DEO3blKknJUC4PiPcmhAB8O2ZMP7VWLfkkcCcgU
|
||||||
|
Tpde76EaRwmSfrOWLXFcDiWQSCO2pyEuaxuO0tOVS5nell0Mkychk95jbPoGrNuajti0ZCRmbERC5kYk
|
||||||
|
btmEzINZ2MuyyxHm3cxj69G9WBbqraYppDMwbP+CkPz7Dx2EhB0bsCI2DG4rveHg5Yx+wwepNQLfkEBE
|
||||||
|
s4OOYFsv8nTBTMcFcHB3xjJ2nM16tyFhvoXu770H92AfTJxnj9H0mkdOnYDFy10waOwoVf6e/T8gic+H
|
||||||
|
e9AKxKVtREB0FILWrMbKmDWITIzHzoPZOHmZZHjjGnJv31TwC9TdPeEXFor4zE2IT0/DjpwD6lTcrDlz
|
||||||
|
1cVKq5PisYPedmBcDBb5+SIkJRWtO3VSHZxMz9WpUxeJmVsRs3kr3MKjMMvNE8tCItGsdVt20O3gH5eE
|
||||||
|
AGLPmQvYefIsknfvRbt+A9HxvV6ISd2EDdt3IW1fDtZv38mRQyxC4hLhHBDEtqVDYdDJSTl9fX2FjDfx
|
||||||
|
s+WxPPkfKsbG1WvWKEUxND4hMjEy2VtarmIldUGNEKT6S4jxNuKw3jk4QGHi/NmY6jAPjsvd0aRpU7Tr
|
||||||
|
+A7C6DX7rYmCN4ffzkF+CFwdqfb0vl2uHMoyfud3u3GY6o+Fy105bJ0Lj9BATGcaNevVYf66hRk5XRWW
|
||||||
|
Qk82PRk+a8Lhz2G/e2QAZnNoW61OTXVkexa9a4+oFXBc4Y7JDjPhGu5H0vZHlepVny3QvN+nl/J2/eLC
|
||||||
|
EbxuLYLXr1WHBHqNHIxyJEIJI8QXlZ6A5D2bkLw3ncP4zSSElUoGsxbNx2aS9/qsLTh19QLO09vMoBff
|
||||||
|
sn0bZfDifa9KTsC5uzewT10lug4hTGvE1ImKzNMP7Mbhm5fVvRM3P32Ei/RUZy5ZiEpVmDdJoU69uojK
|
||||||
|
TMXGo9lYn7MHa3dvxdqdm+l5v4fqdXSHHlp3eAdbTx5hmP0k7SxsyMlC+qF9GDxquGoT8RBlIVbu9pU5
|
||||||
|
ez3KMf/SJJ257Ox2nT2CXScPI4We+/Hr5+ARuQLla8gVj6bJeOrsGcg4tBsRG2Ox0GcJpi+ZjV5DPlC/
|
||||||
|
jZk0gV5zGtZty0BowloErY3EoAkf0iMup+bjpUMcMGQwRz8LYb9kHr3iqRg7czIcPJzQc2B/tXgqna/8
|
||||||
|
lfJLmeV6VamP7PWVy3ZWRkfjRC7J+NoV4qq6L2LuwkXqKtYV/C00eR2iNqzH9pxsXKD32nfAAFSndxoY
|
||||||
|
uwYrYmJYZl+MnzsPbmGRaNxCt3dZZNaydWusTErmiCsQnmviMcfDG0uCI2DXojU69ngfS1dGcESXiuht
|
||||||
|
e+AfvwEuIRGoa9uEcimHkqybhPFbHQtfetPTHJ3hyt9nL3On3VCu+ab+3sJaloPPSn62PJYn/0PFOODm
|
||||||
|
prtMxdD49BBleg7dnawCUWLZTO/o543lUaFY6OWKuRyeOvkuRz0OW7vTO47ZInNvG7Fx7y7E0kijSFYN
|
||||||
|
mjZGSXlzMPMbMnwYIjbEU3EXY7azIxZ5LMOIyeNRKe+ic1k88QsPReLuTERzCBwQFwlfemVyoOG9D/vR
|
||||||
|
m6JHS2OYtnieOqI7b/kSepsL4REdgEX+y3QLc2JwzGvY6FHYdSKb5Ugh4a5Thw4Sd6SjdZ/uitAlzKhJ
|
||||||
|
47DjxAFsPbIL2w7vwsnc01jOkUBZymF5oA9OXDmPbccO4ByH+tcf3saGzamwa91CzfeKrNZuWo99544h
|
||||||
|
dmsKfBMiELYpEf1HDlUX3afu24Gj1y7g1M1cerMXsOvMUQzgb3L1o+TdnF5v2sF9/P441srNd0zLi51P
|
||||||
|
hx5d1fy7hOlF0jpw9TzSWYYN9HJlO9+Ry2fVBTtqJMGOpzBI/IUuTtjMuJty9mLL0Rzsu3QS013no0wF
|
||||||
|
trMZZOzAEYxcPrRqUwI7RY5Q/F3Rb+QQ9Zt0rDuY5s5jh5CwdTO9zDSMI9mWKEedYdrSThOnTcGk+TM5
|
||||||
|
WljI0ZADpjvOhddKP3R5/71npy0FL5SfbSiQKYn9p46red9j589h19HD6DOgPyqzM03ISMeqtDQSbyxi
|
||||||
|
0jch59w5dH//fdjaNYETveGFXssxeaEDZji5wCloJezatOeISNcJd+raDYtJxLM8lsORxDvVyQ2jZ89H
|
||||||
|
3QaN0GPQEMz2psMRsQZBqVuwYEUoR2BuqGFlhzJ5evNOj56YuzwAc7z8MI9YEhSOwdPmoGyV6s88Y2Uz
|
||||||
|
DLtt23YhY0d+tjyW5/lDpShB5E6cNEkpSkEDNAYh42Zt22KRrw8WLfeksrtjFo3dLSgAte1sMGDYhzTa
|
||||||
|
jYjbkoH1cltbdhbWpCajQZsWuvjMb/qsGQhPXqu7gcxzGea5LVVbomSPsHiaVrY2SNqxCYEJUVgRH4E1
|
||||||
|
GckktW1IP7gDXUf1V4qu0lkwCxv3ZdJj8VYecfSmGIYPh20LuYBHd+pp/LRJOHH1HA6dP44tObuQSlKR
|
||||||
|
xS7bLm2Vly9h5tNT3Xsmm2S8k8POzTjN8GGrwlGnYX2s3RCLU1fOYQ8J/cLNSyTm0/CnJ1+7QT3mUUp1
|
||||||
|
IJv37lDXM6bsz0RURiLidmxUOw1k61zGgV3IvnACJ65fVPcUp+zdjm70xIVEJe9u7/VAWFoCQlkmL9ny
|
||||||
|
tT4OYRz29xnanyOFuirMwNEjkHnmMJIP7MSmw/uw59xJHL14Bn2HDDB6CEeRHMnMNyIECXtku912ZJ09
|
||||||
|
gazzxzB+oT1KV+Dvxsi47NtqV0LI6nAS+Q7EbduAyNRYdQfGoHEjVNnk7RvZZ06wwzuK2EwZVexWd16X
|
||||||
|
rah7g4m01Yz5c9WCnmxrm7Z4Lua5L4F3yAq079ql0LILhJDFS16fuRk5Z88g69gxnMq9jM3796Fdp07q
|
||||||
|
atTkHdsRlboRSwMDERAbR73LRNuOHdVbXBa4eWChty+mODphyhJnTCbqN22Ocnlk3K1XH0xa7IQJDksw
|
||||||
|
bMYcjJ7vgA/GT0WVatXx7oDBmOkVgKkunnCOjIFj2GpMdHRBdT0Zl5ArXYdj4lI3jHdwwqi5DhizwBGd
|
||||||
|
PxjKuotTYUDGlOGFC3I1BWYyX8tjeZ4/VIoK//73vx/36t1bKWVBA1Cnkwj5q/+s/s/zNltR2R3odSzw
|
||||||
|
dMd892Vq7tdzZQBqtLTDkFEjERgfg6C4VfSSUrBp/061D7Z2i6a6hTkSmMtyd6zNWIdwDnuX+LvDOyoI
|
||||||
|
wyaMfkZQ/egJ+seshMtKDwTFh9HA1pNId5K8l6NOExsVRjB0zAhsPbob63alYt3uFOw+mYU0EmL3fu8/
|
||||||
|
CzPfcSHO3bqIYxdPYt/xbBJHDiLXr4Fd17bPwgSGBZJkT2HPyf3IOp6lPONgEljrDu2xff82nCORHr1w
|
||||||
|
HLl3rihCdvPxQPW8eylkL3Ba1laScRZHBIkIXh9Jr381WrRvhYZWVtiYtQXZ547iGL1judw8iiMCO8pC
|
||||||
|
yZTxPxg4AO6RgZjr44KlIb4ISomH16oQ9BjYGxVkKoNhhkwYg9jdGVi1ZQM20TPOOLQXyVvS0EoO4Uin
|
||||||
|
ww5SPFDdZ/1f3TvhypGsI5NiELcrDUlMY/MheuGnD2PkjEkoVV5HFobtbwjRhfIVK6lpmb2sQwY7M0Fa
|
||||||
|
9g4M50hGCEnucMg6ckhtS0vauR1bjhxWc79lmLZcsiT7gec7L4a94zzqizMJ2UFtZVu4bKl6tZQqa6m8
|
||||||
|
MuvLrf/M8teoVQtxGXKgYzsSMjORefAgQhLi0bRVa8jp0TWb0uGzejXcQkKx1D8Ay4KC0Lh5C7Rq354e
|
||||||
|
8SKMmDEbY+YuwCRHZwyeMh1VauVNhTGfHv0+wIfTZ2Hk7AUYNGk6CXkeBk2ewTatgZ5DhmHU/MUYNmsB
|
||||||
|
ZtFDXhgcyfgzOSqrSh3Wybb70JEYvXApwzli4GR79BozEXbtOrDOFfLJUEZgd+7cFjKewHiWx/I8f6gU
|
||||||
|
DX/72x9/Z2tjq4xXrzhimLISXLdRI9S1akTvr4FCPWtrwgo169dDnfr1MYCEuyx4BTxCg+Hs743lESvh
|
||||||
|
HhKEKk0bY9y0yYhOTYJvdDCCk6KRsD0VC9yXorxNQ0XGMhfoucJbeb0+axgvzBcr10Vg9NRxLEM5tXDn
|
||||||
|
vNwVToGucAt1Q3xmIglsNSKTV6EfvWeZk25BQ5T56YlyW1nOZmzaR5LJzsSW7C30oHKwyH0xSlfSDSW9
|
||||||
|
A31x/PIJZJ/OwXES6imSbvDaUHTq1R0tW7ZS74vbsnsLLt68qMIdO38Y1+9eQXD4SvXWkZyTB3DrwU1c
|
||||||
|
v38DNx/cwPV7VxV5d+vxLpo1a64uR99xeA+yTh1g5xOD6PQYdU1l3Ub18A7LmkEy3308Bxfu3cBO/pWb
|
||||||
|
zXr27YVm8n7AJk1gP3c23CMCMdN1MbxWhyIkLZEyCcA4+8nqfXbNGW4yRwCelJVbZBBlm4CM7J0Ii1sN
|
||||||
|
m6Z2qN+woTpkYNu0CRpTJk34WaDS5//yfrJ4jiz8EsLpGWfSg83BnjNHMHjSKN173oyQsXQY8k7CM7kX
|
||||||
|
kc3ObOfJHOw7e0TdWzx8ou52Mpm3Xbt+PbIvXcC247KLIxdbs/ejcduWqiOXV3DNc3bEdMf5JOHFmLF0
|
||||||
|
EWbKTouF82HVxE7pVwMbGzRqbAdryqNJi5asV1P1Vhe587rbe+/Dd20MPKM4SoqNhQ8/e0VGoHm7duja
|
||||||
|
owc8wiMx29Udi+gBz3X3xCx+tmG79B4wEJMXL8HY+QsxYuZcjJnngAEk3Kr1rVXdZA9455690Wf0ePQd
|
||||||
|
Nxm9R41Hn7GT0HPEeHrjVdCdnnF/hu87bhImOnlgrl8oBk20R10blrlhI1jZNcEHE6eRiJdi2OxF6Cdh
|
||||||
|
J0wlGXdWZKyXq8iwWo2aePLFEyHjor+U0/K82c/Tp09r/fWvf/1OXqwoHsIz4+Pndt26YraHO+Z6eZIg
|
||||||
|
XDB9mRMW+fvSE/aBvdMSKr0XnFbI4psnVqelYP3OLUiU6zI3JKFy29bwWuGDbcf28ft0RKxfi80c3k7k
|
||||||
|
0LRkxfJqyFurdm0ErwmFT3QgSTwAfmsCsWH3BoyfNgElOGRu3KQxgmNIOikRCE8MRlBMABK3xMM7fAVG
|
||||||
|
kuh3ML2DJNbTV06TYLOx+UAGdh3Zgf0n92LX4e04duEIPblMWHdpqxaQIjn033NsB7Znb8Z+er2Hzx7E
|
||||||
|
qcsncerSKeTeukzivYZLN87hLNM7fv4Qv7uAT548hA9JvPfAvjhH8r527zpuPryFO4/uKmL+6PEDPPn6
|
||||||
|
CT3lXJXG0QvHsP3gdmw/vI1EmQG/aD+UrfA2+g7ohzXpcdh/9hi2HjuAdTsokw2JCFgTpQ6ouIX4w3HF
|
||||||
|
cjiH+sNzVSh8YyMRtiEBK+nJpuzZoV4vJRf2y0EU9/BAEs8KePFvJMO4yyudatWAV3AgyfG4mg5avXEd
|
||||||
|
opPj4B8VgtX0sGMz1lNuQXAJ9IJzkCfW7cnEwQsnSayn0H/8MJSpWM7oNIV4pw3ZEV+8dR3n7lzFPnrH
|
||||||
|
cmBkx6lDeLdPT+qLbmSxYIkjLj54gOwL53Hhzh2cun6VJDeU7VlKbR+TS5lmL1uCEVMnYexseyzycoP9
|
||||||
|
gvlo3KI5R1XseFcEso7xrNdGdlbrWN4VmOfiojDd0RFzPDwwft58THZwoA46wdHPH206dUL/4SOwyC8A
|
||||||
|
Exctxpg58zBhwSJMXeKMxq1a0SmYjulMe5LjUnqtUzFyzkIMsZ+HOq06oAxHYNJRdHyvJ94bNhp96dG+
|
||||||
|
O3gYugwcijbvvo+36cl2HzKc5E1vd/QEjFnoiMH2czF8niM+mDAN/SdOx5gFSzBgyiz0GD4OHfsPwXsj
|
||||||
|
xqE3ydj2ne4oSzLXT1MoGTaywg8//OYfJOPWOgu0PJbH4KFiHHdYvFgZk974ZBqiDj2tYdPt6VHMxxwv
|
||||||
|
Dyr3Ykxduhjzl9M78HTHPA9XOHh7YonvcqzdnKYOSGw/shfhWzahRd+eWJOwGrtJkvtImCkcFp+4ehrj
|
||||||
|
lzujZC05YPEWrGjca1PWIv3AFnpssQhNCMaOI9swbLRuDnLW3JlI3haPjL0p2HYgDZv3biSJ7sIidhAj
|
||||||
|
6Y0dOp2FrOPbcfxiDk5cPoSTlw+rz2m74xk2maSbhsxdqbBp00wN0RNS1mD/iR3IObUPR85lI+voDuX9
|
||||||
|
nqIXfOXOJTz45C7uPbrF7w7i8Jkskus5fP7Vp3D39cTwsSNw+vIxXL55ATfuX8Wjzx/i/qPbuP/xXTz8
|
||||||
|
7D6/P4srdy/iLOuYvmc9krbEYNuhDITFr0Tp8mVgP2c6otNiSKip6qhvUGIs/NeuYmfnggkL53H4PINy
|
||||||
|
noWZbkvhGOgLp2A/+MdEw18u5iehenF04RLih1VpSXBb6c/RxwqF4IQYLGIc2Yc8dsY0rN+zTW0tk10s
|
||||||
|
a0jAkSkJCEuOYVoRGEkClDey+DGtuG0bsefUYeSQkHuPHIjSpsiYnbNds6Y4cvkUtrNNsy8eV28UScvZ
|
||||||
|
iWatW6rfpc2GDh+Oj776AkevXcGRK7JQmav2kEv61arXYOcQhsW+Xhg3dxZGzZiuDnlMnTcHDWxtMWbG
|
||||||
|
DHYUwSxrnPJ857m5YdT0aRg6cSLeHzIEw+1nkmjnoveHH9IznUgHwQ3j6O02ad0awydMpCy9FBmPJxGL
|
||||||
|
FzyF5GvXug1mOy6Bc3iUmisePW8hxjssQZ/xk1GnZTu1aCgLgy07d0O3wcPRm2TcbdAwdOgzAE3bd1Tz
|
||||||
|
1N0HDUWHvgPRuf9gDJo6E8PnLMIHk2fivZHj6QXb4/0xk0nUk9B54DC07fmB+vvu8LFo1Jzpl6Vc896e
|
||||||
|
IvKRt1D//e9//442V5P/Wx7Lk/+hYkQlrVuXj4xlwUUW0XoNG4ahU6fiw6mTMcd1GT23YHVKbJGPF+xJ
|
||||||
|
zvPcneERsRKrM1ORSA/41LXzWH/kIMZx6Jm+I4MGeQrnbl9CDr2onDMH8cHY4ShfT7czoE3btjh49hBS
|
||||||
|
d6dgB73ILfvSsJseZbf3uqNqtRrIytlOwswkAW/HnsMZOHXxAA7TE+vJMo0bP4ZkeQL7jqXTYz1EgryE
|
||||||
|
q3fOkhRP4sDxDBw7u5NkvRNHz2ah57gBqFKnBhJSI3Hx5gnceXiVcc/gbO5hRbonLx7CzXu59II/wief
|
||||||
|
38e1O+dw6foJ3Lh7AU++fAwXH09Mnj4FF6+fxPnrp3D11nmSML3jBzfoGd/FnY+u4/KtU7h+/wLufnyb
|
||||||
|
6dI73bUOR1je2NRVqFK7KnyDfZG4YyOC2EFFbdqAlesSELmR3uqqKNXJOQT4Yj7zEXKeQ2/RNXwl/ONi
|
||||||
|
4EzCdYsIxtIVvmrHyvqsHVhJAvZlG4Sui0MACXvKXHuUr1xJTaWsEM85bAWiNyby9xis2rQOybs2I5yE
|
||||||
|
PGraJHUYI4zfx/D7DfSOdx/dj54f9qeHaPoGvrbvtFcv+dx0ZCcOXzmD47cuqovfZeeMxBVClmkR2QOc
|
||||||
|
c/UKDpKMj1+/pjqESvVqoCGH9AmZGaxHuKrPbFfdYu/EWTNQvU4djoimwTsqCq6hYfT+IzCT3vDA8ePR
|
||||||
|
rf8ADJw4CRNJqpOXOuPdgQPRfeAgDJ1mz47MAc3btcfombP4mws+tJ+FGW4emL3cB9Ocl6HFO+/AJSAQ
|
||||||
|
AckbMMPdE6PmzscYEnWngUNQoXY9tagoFxu17f4+2r3fB10HfYguJN1ORD3bJqhRuw7z+xC2bd5Bpw8G
|
||||||
|
YZyjC4bMmI/2ffqjJwm4/5TZyivuN9Eefegpv0PSbtuzn/pbz66VWvg0lGHvPn3kTR83aXMl+b/lsTz5
|
||||||
|
HyrGosNHjihlMXwHmngM7/TogX6jR6HfyBGYTtJY5OeNsI3JWBroq+6AWEDiWB4dSi9sHTYd2I6zJOOk
|
||||||
|
40cwfv48HD93AhdvX8S1+9f4/VkS4Xl0HdwPpavk3ePQrTOu3L+MAyf2YP/R7STGfThDL7Vpy9YYOHgQ
|
||||||
|
rt89i90HN2Df0U04l3sQdx+cxxp6fdatWmPJ0oUkzaO4cO0Qzl/NRu6NYyTIK8Q1XLl9CqcvZeHC1RwS
|
||||||
|
6ik4r/aiZ9MF6dvpqR9cT/K8TA/4GuOcZLhsXL5xiqR6E59+8ZDhz+Py9aPq712Gu/vgOqaL1zphLG7c
|
||||||
|
I0nfOINbLLPEyb15Brcf5OLhJ7dUWSXfa3fO497HN5juYZy/dhzRSeGoWqc6vIOXI5yjANfwIHitisCy
|
||||||
|
0JVYtjIYQUkJlKkPXEhQnmtWqdc3zXBzwdKgFfCJWQv/eBJuQiyWr4mmnMMp51SsTk9FSFIcPEjYrkF+
|
||||||
|
GDF5jNri17RlC3rBsQiOj0YiPfCYzA0ITV6L1akJiNqYgDnODpjruoTEHEtCjsOaTclI2LQerbvIi19l
|
||||||
|
x8Nz4igIaa+OXbsob3jL8b04mHtKvQ5pw87NqN+4ETuDihzul1YnFbdk78feSxeRk3sJO06dUNsarTu0
|
||||||
|
RHOWL35rJlYmJyJkfRL8ODJwC/THMMpW9hZ3fe99LPJezs5pKezp9U51ckKvkaPQZ/RoDJs1CxOXLMGI
|
||||||
|
2XPQoktXdOrTFwPoDQ8YP1G9NUa85rELFmMcvWLH4FA4R6zCJJJ3CxL1rGXLsCxqFZZFRmECvxsydTqa
|
||||||
|
dujEeslooAwqVqnC9D5Ay67dSbgD8U7vfujYdwDqWtugVv0G6D16Aprzt670nD+ctVDNB3ei99t92Bj0
|
||||||
|
GjMJ7w4dhXeHjUb/qbPQacBQtOvdH+37DkKdxq3zZPrcM55Ij57Pfn62PJbnxYfKMfjjjz9GxcqV8x/d
|
||||||
|
LFkSLTt2wJDJEzGEBjPSfhoWeHsiMDEGPtFhcKQnJ8YdEBOOlAObkbI3HfuunsckEvagoUORe/86jl05
|
||||||
|
gc+//QwP6XV+/OUj9J83A2/nvdWiT//euHr/PG6QZHPvnMSthxdw/dYl2LVsg1UxYfjqu3s4cWE7PeId
|
||||||
|
uP3wLL3WW3Bc7oHyVapibWw0vv/dp3jy9X08+vQyHj+5gc++IqF+eQNPvrlHcjxK7zebRHkWCfsSSHBz
|
||||||
|
kHvtAL3gLbh4bS8++fIWHn9xkx7xKZLnRX6+hS++eYjPv7rLfB+RmG/jy28eYBNJrSM7DVkAu3T1BL3v
|
||||||
|
kwx/Cfc/ISFfp0d9/zQefHKJXvUNku8+5N4+hLuPLuDq3ZPsQA7DfsEMVKhSSdU1ZF00yXU1HFf40wN2
|
||||||
|
g/faNezYUuARHQknkrNLZAQcVgTANTIc3iTiyE2pCE9LQ8z2bQhL3Qi/uLUksUTEbttCDzsOXpH0IEP8
|
||||||
|
0KVnV0UqVapXh8sKb6xMWo2kHemI35aG6LQERGyIRcT6GDh6u8AzzB+r0xKxIjYCfqvDMGLSaFSulv+U
|
||||||
|
mBakvQYMHYzD7FB3XzyKYxztXP38AZK2paK2XV28LS+OlWkOYt2WTGRfv4qTd25hf+5FHCKGzByHwSOG
|
||||||
|
Yd3ObQhKjEdoiowKIuEZEoyR1C8h4xq1a2OmqytGzp2LgZOn4IMJE9BnzFj0499hJOFhM2eiz9ix6DVi
|
||||||
|
BPqOHoNhM2aiF/WsRu1aipRHz1uAqc4umOm5HHN9A9QURusOHeESGorlsfGY778Cc7x91NxxU5KrOrAh
|
||||||
|
C5P02LvTI27euRu6Dx2BLgOGoOfwMWhga4eyDNOuR0+0evc9dKRn3Hf8FPQhepKEuwwahm5DRiry7UTv
|
||||||
|
uRtJuevgESTigWjXdzCq1bdVu0gMZeijO32XKHZneSzPCw+Vo97//u///l4t4vFfvfLIVpwaHD62794N
|
||||||
|
Pfp/gPcG9qcXMx6zFztg8pyZGDpuNAaPHYFhE8fCftFsONNLHr9wISrVqIG2bdvCh16Pl99yBHAoujI0
|
||||||
|
GCtWBqLrh4NRgd6TrGB36NQRAcF+8PX3xHJfNwRyKO/guBC2zZvDxd0JwSH+/N4FvgGeWBHoDVdPN7Tp
|
||||||
|
0kUtuNjPmI4oepgrOYwPDVuJEKYfyLQE/gFe8Gd4L5+ljOuGhW6LMHH2ZHgsX4Llfi5McxkCApfDf4UX
|
||||||
|
vP3cVPjglQFEIELpbYaEBiEwyIfx3dG9Zw/dyTbKpVef3vD292CaTH+FD+O6w9tX4Kbq4OqxGF7eTvzf
|
||||||
|
lWE8MGnaBDS01V0+LkQ1eNRwzHJchOGTJxOTMH3BfCxwdqYs5+gwbx6mzJ2DefQI59I7XECPbu5SJyzk
|
||||||
|
3/kMN3fpUsxZugQzHBZhwqyZmDJvNjq911XdKyFtJVNLH1C+E2ZNU++hm8O85i11wLwlDszHEWOmTmDn
|
||||||
|
MBuLXJdi5qK5+HD8KBKOlYpnzCsWyDbELu92g3eQP1x9vODh7wPf4ECMnDYelepW1aUh4dg2YyZOgpuf
|
||||||
|
H8OxDfjXO8Afo6aOQ89+veHk7oEZ8+fDfv4CTJs9G/Yk2Q8GDdSdsJPyjxiJAWPHoVPfPninVy+079kT
|
||||||
|
nfv1U1NTPQYPRq8Ph6E30WPgIHVJj22zpuqkaLd+H2AQCbk/yXvQ+AkYME7eZj5AHUqaMGMWZixazLLa
|
||||||
|
YzDDvMvva5GAFRnT+ahepy469uyNlp26oAP/duk3QHnK1WrVVnpau0FDtOzcFa26vouOffqhbfee6NCr
|
||||||
|
L9q/1xvt3u+NJh06o8k7XehZ90Bb/t+i23uwbd8ZFWvUfSYXgehQ3hs+vMXuLI/l0XyoIEdGjxmTj4wF
|
||||||
|
QiJy1FeGoGqfsexdZRgFWbShsuoXb/QQ8tHvQy4I2dUghi/7O8UQtMJIfK3vBVIGMT6t34wjfxnNBuv2
|
||||||
|
bGuS1u8m8GykwTo/+17kZShHVbY8FJBl4cgLx3T05VNyUekWkkbB3/i/tIG+rY1B2kt0IF96eTC806LQ
|
||||||
|
tlG6ottPne87QtKV9CW++p86JR6rlE0OqsjnZ9/loZT+u7zyi17I/8/0kXWT//PpksH34rHq8xT5lSzN
|
||||||
|
NPndszzlUvg8uT7/TmcDYg+lBHnf5UPebxJfTo+KPFS9mKdc4fr9998LGQ9meSyP5dF+qCB+UdG6152L
|
||||||
|
8lhggQWvDmJXixcvFiJ+SFRQRmd5LI/WQwWZfOzYcaU0xlbVLbDAgqJBvOkq1arh88+f4N///tcYncVZ
|
||||||
|
HstTyEMy7nH/wQO1nU2GW1pKZYEFFhQdYl5Tpk5VXvG///WvUjqLszyWp5CHilLnxx9++FHecSbzalpK
|
||||||
|
ZYEFFhQNModctVp13L5zR8jYIc/cLI/lMf48ffo0d/AQ3XWIFlhgwavB5MlThIi/ISrxf8tjeUw/VJbk
|
||||||
|
AwcOwH76dMyePdsCCyx4CcwiZtjb4+qVK0LGvnlmZnksj+mHCvMuIau90otbYIEFrwY5RMU8M7M8lsf0
|
||||||
|
IwpDzCHcCFcLLLDglWBQnolZHqPPW2/9H4jMYEEcJD8XAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
3
Transformers2_Configurator/app.config
Normal file
3
Transformers2_Configurator/app.config
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<configuration>
|
||||||
|
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
BIN
Transformers2_Configurator/chip-processor-svgrepo-com.ico
Normal file
BIN
Transformers2_Configurator/chip-processor-svgrepo-com.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
234
Transformers2_Launcher/Codecave.cs
Normal file
234
Transformers2_Launcher/Codecave.cs
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
public class Codecave
|
||||||
|
{
|
||||||
|
private Process _Process;
|
||||||
|
private IntPtr _ProcessHandle;
|
||||||
|
private IntPtr _ModuleBaseAddress = IntPtr.Zero;
|
||||||
|
private UInt32 _Cave_Address = 0;
|
||||||
|
private UInt32 _CaveOffset = 0;
|
||||||
|
|
||||||
|
public UInt32 CaveAddress
|
||||||
|
{
|
||||||
|
get { return _Cave_Address; }
|
||||||
|
}
|
||||||
|
public UInt32 CaveOffset
|
||||||
|
{
|
||||||
|
get { return _CaveOffset; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Codecave(Process p, IntPtr BaseAddress)
|
||||||
|
{
|
||||||
|
_Process = p;
|
||||||
|
_ModuleBaseAddress = BaseAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Trying to access the process
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>True if success, otherwise False</returns>
|
||||||
|
public bool Open()
|
||||||
|
{
|
||||||
|
_ProcessHandle = _Process.Handle;
|
||||||
|
if (_ProcessHandle != IntPtr.Zero)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reserves a region of memory within the virtual address space of a specified process.
|
||||||
|
/// The function initializes the memory it allocates to zero.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Size">The size of the region of memory to allocate, in bytes.</param>
|
||||||
|
/// <returns>True is success, otherwise False</returns>
|
||||||
|
public bool Alloc(UInt32 Size)
|
||||||
|
{
|
||||||
|
//Allocation mémoire
|
||||||
|
_Cave_Address = (UInt32)Win32API.VirtualAllocEx(_ProcessHandle, IntPtr.Zero, Size, MemoryAllocType.MEM_COMMIT, MemoryPageProtect.PAGE_EXECUTE_READWRITE);
|
||||||
|
if (_Cave_Address != 0)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//call Address
|
||||||
|
public bool Write_call(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 5;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0xE8);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//cmp eax,[Value]
|
||||||
|
public bool Write_cmp(int Value)
|
||||||
|
{
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x81);
|
||||||
|
Buffer.Add(0xF9);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(Value));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//je [Address]
|
||||||
|
public bool Write_je(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x84);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jb [Address]
|
||||||
|
public bool Write_jb(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x82);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jng [Address]
|
||||||
|
public bool Write_jng(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x8E);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jnl [Address]
|
||||||
|
public bool Write_jnl(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x8D);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jng [Address]
|
||||||
|
public bool Write_jg(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x8F);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jng [Address]
|
||||||
|
public bool Write_ja(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x87);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jnl [Address]
|
||||||
|
public bool Write_jl(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 6;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0x0F);
|
||||||
|
Buffer.Add(0x8C);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//jmp [Address]
|
||||||
|
public bool Write_jmp(UInt32 Address)
|
||||||
|
{
|
||||||
|
UInt32 JmpAddress = Address - (_Cave_Address + _CaveOffset) - 5;
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
Buffer.Add(0xE9);
|
||||||
|
Buffer.AddRange(BitConverter.GetBytes(JmpAddress));
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
//nop
|
||||||
|
public bool Write_nop(int Amount = 1)
|
||||||
|
{
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
for (int i = 0; i < Amount; i++)
|
||||||
|
{
|
||||||
|
Buffer.Add(0x90);
|
||||||
|
}
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Write bytes in memory, read from a string like "00 00 00 00"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="StrBuffer">String formated series of bytes to write</param>
|
||||||
|
/// <returns>True if success, otherwise False</returns>
|
||||||
|
public bool Write_StrBytes(String StrBuffer)
|
||||||
|
{
|
||||||
|
String[] sBytes = StrBuffer.Split(' ');
|
||||||
|
List<Byte> Buffer = new List<byte>();
|
||||||
|
foreach (String hex in sBytes)
|
||||||
|
{
|
||||||
|
Buffer.Add((byte)Convert.ToInt32(hex, 16));
|
||||||
|
}
|
||||||
|
return Write_Bytes(Buffer.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Write bytes in memory, read from an array of bytes
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Buffer">Array of bytes to write</param>
|
||||||
|
/// <returns>True if success, otherwise False</returns>
|
||||||
|
public bool Write_Byte(Byte Data)
|
||||||
|
{
|
||||||
|
UInt32 BytesWritten = 0;
|
||||||
|
if (Win32API.WriteProcessMemory(_ProcessHandle, _Cave_Address + _CaveOffset, new byte[]{Data}, 1, ref BytesWritten))
|
||||||
|
{
|
||||||
|
_CaveOffset += BytesWritten;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Write bytes in memory, read from an array of bytes
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Buffer">Array of bytes to write</param>
|
||||||
|
/// <returns>True if success, otherwise False</returns>
|
||||||
|
public bool Write_Bytes(Byte[] Buffer)
|
||||||
|
{
|
||||||
|
UInt32 BytesWritten = 0;
|
||||||
|
if (Win32API.WriteProcessMemory(_ProcessHandle, _Cave_Address + _CaveOffset, Buffer, (UInt32)Buffer.Length, ref BytesWritten))
|
||||||
|
{
|
||||||
|
_CaveOffset += BytesWritten;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
343
Transformers2_Launcher/Debugger.cs
Normal file
343
Transformers2_Launcher/Debugger.cs
Normal file
@ -0,0 +1,343 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using Debugger;
|
||||||
|
|
||||||
|
namespace Debugger
|
||||||
|
{
|
||||||
|
#region DEBUG_EVENT
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct DEBUG_EVENT
|
||||||
|
{
|
||||||
|
public DebugEventType dwDebugEventCode;
|
||||||
|
public int dwProcessId;
|
||||||
|
public int dwThreadId;
|
||||||
|
|
||||||
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 86, ArraySubType = UnmanagedType.U1)]
|
||||||
|
byte[] debugInfo;
|
||||||
|
|
||||||
|
public EXCEPTION_DEBUG_INFO Exception
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<EXCEPTION_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public CREATE_THREAD_DEBUG_INFO CreateThread
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<CREATE_THREAD_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public CREATE_PROCESS_DEBUG_INFO CreateProcessInfo
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<CREATE_PROCESS_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public EXIT_THREAD_DEBUG_INFO ExitThread
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<EXIT_THREAD_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public EXIT_PROCESS_DEBUG_INFO ExitProcess
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<EXIT_PROCESS_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public LOAD_DLL_DEBUG_INFO LoadDll
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<LOAD_DLL_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public UNLOAD_DLL_DEBUG_INFO UnloadDll
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<UNLOAD_DLL_DEBUG_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public OUTPUT_DEBUG_STRING_INFO DebugString
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<OUTPUT_DEBUG_STRING_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public RIP_INFO RipInfo
|
||||||
|
{
|
||||||
|
get { return GetDebugInfo<RIP_INFO>(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
private T GetDebugInfo<T>() where T : struct
|
||||||
|
{
|
||||||
|
var structSize = Marshal.SizeOf(typeof(T));
|
||||||
|
var pointer = Marshal.AllocHGlobal(structSize);
|
||||||
|
Marshal.Copy(debugInfo, 0, pointer, structSize);
|
||||||
|
|
||||||
|
var result = Marshal.PtrToStructure(pointer, typeof(T));
|
||||||
|
Marshal.FreeHGlobal(pointer);
|
||||||
|
return (T)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct EXCEPTION_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public EXCEPTION_RECORD ExceptionRecord;
|
||||||
|
public uint dwFirstChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct EXCEPTION_RECORD
|
||||||
|
{
|
||||||
|
public uint ExceptionCode;
|
||||||
|
public uint ExceptionFlags;
|
||||||
|
public IntPtr ExceptionRecord;
|
||||||
|
public IntPtr ExceptionAddress;
|
||||||
|
public uint NumberParameters;
|
||||||
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 15, ArraySubType = UnmanagedType.U4)]
|
||||||
|
public uint[] ExceptionInformation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public delegate uint PTHREAD_START_ROUTINE(IntPtr lpThreadParameter);
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct CREATE_THREAD_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public IntPtr hThread;
|
||||||
|
public IntPtr lpThreadLocalBase;
|
||||||
|
public PTHREAD_START_ROUTINE lpStartAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct CREATE_PROCESS_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public IntPtr hFile;
|
||||||
|
public IntPtr hProcess;
|
||||||
|
public IntPtr hThread;
|
||||||
|
public IntPtr lpBaseOfImage;
|
||||||
|
public uint dwDebugInfoFileOffset;
|
||||||
|
public uint nDebugInfoSize;
|
||||||
|
public IntPtr lpThreadLocalBase;
|
||||||
|
public PTHREAD_START_ROUTINE lpStartAddress;
|
||||||
|
public IntPtr lpImageName;
|
||||||
|
public ushort fUnicode;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct EXIT_THREAD_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public uint dwExitCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct EXIT_PROCESS_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public uint dwExitCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct LOAD_DLL_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public IntPtr hFile;
|
||||||
|
public IntPtr lpBaseOfDll;
|
||||||
|
public uint dwDebugInfoFileOffset;
|
||||||
|
public uint nDebugInfoSize;
|
||||||
|
public IntPtr lpImageName;
|
||||||
|
public ushort fUnicode;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct UNLOAD_DLL_DEBUG_INFO
|
||||||
|
{
|
||||||
|
public IntPtr lpBaseOfDll;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct OUTPUT_DEBUG_STRING_INFO
|
||||||
|
{
|
||||||
|
[MarshalAs(UnmanagedType.LPStr)]
|
||||||
|
public string lpDebugStringData;
|
||||||
|
public ushort fUnicode;
|
||||||
|
public ushort nDebugStringLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct RIP_INFO
|
||||||
|
{
|
||||||
|
public uint dwError;
|
||||||
|
public uint dwType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public enum DebugEventType : uint
|
||||||
|
{
|
||||||
|
RIP_EVENT = 9,
|
||||||
|
OUTPUT_DEBUG_STRING_EVENT = 8,
|
||||||
|
UNLOAD_DLL_DEBUG_EVENT = 7,
|
||||||
|
LOAD_DLL_DEBUG_EVENT = 6,
|
||||||
|
EXIT_PROCESS_DEBUG_EVENT = 5,
|
||||||
|
EXIT_THREAD_DEBUG_EVENT = 4,
|
||||||
|
CREATE_PROCESS_DEBUG_EVENT = 3,
|
||||||
|
CREATE_THREAD_DEBUG_EVENT = 2,
|
||||||
|
EXCEPTION_DEBUG_EVENT = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ContinueStatus : uint
|
||||||
|
{
|
||||||
|
DBG_CONTINUE = 0x00010002,
|
||||||
|
DBG_EXCEPTION_NOT_HANDLED = 0x80010001,
|
||||||
|
DBG_REPLY_LATER = 0x40010001
|
||||||
|
}
|
||||||
|
|
||||||
|
public class QuickDebugger
|
||||||
|
{
|
||||||
|
#region Debugger WIN32 functions
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
|
||||||
|
static extern bool CreateProcess(
|
||||||
|
string lpApplicationName,
|
||||||
|
string lpCommandLine,
|
||||||
|
ref SECURITY_ATTRIBUTES lpProcessAttributes,
|
||||||
|
ref SECURITY_ATTRIBUTES lpThreadAttributes,
|
||||||
|
bool bInheritHandles,
|
||||||
|
uint dwCreationFlags,
|
||||||
|
IntPtr lpEnvironment,
|
||||||
|
string lpCurrentDirectory,
|
||||||
|
[In] ref STARTUPINFO lpStartupInfo,
|
||||||
|
out PROCESS_INFORMATION lpProcessInformation);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", EntryPoint = "WaitForDebugEvent")]
|
||||||
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
|
public static extern bool WaitForDebugEvent(ref DEBUG_EVENT lpDebugEvent, uint dwMilliseconds);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
static extern bool ContinueDebugEvent(int dwProcessId, int dwThreadId, ContinueStatus dwContinueStatus);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern bool DebugActiveProcessStop(uint dwProcessId);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern bool WriteProcessMemory(IntPtr hProcess, UInt32 lpBaseAddress, byte[] lpBuffer, UInt32 dwSize, ref UInt32 lpNumberOfBytesWritten);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Win32 Struct
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct SECURITY_ATTRIBUTES
|
||||||
|
{
|
||||||
|
public int nLength;
|
||||||
|
public IntPtr lpSecurityDescriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This also works with CharSet.Ansi as long as the calling function uses the same character set.
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||||
|
public struct STARTUPINFOEX
|
||||||
|
{
|
||||||
|
public STARTUPINFO StartupInfo;
|
||||||
|
public IntPtr lpAttributeList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This also works with CharSet.Ansi as long as the calling function uses the same character set.
|
||||||
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||||
|
public struct STARTUPINFO
|
||||||
|
{
|
||||||
|
public Int32 cb;
|
||||||
|
public string lpReserved;
|
||||||
|
public string lpDesktop;
|
||||||
|
public string lpTitle;
|
||||||
|
public Int32 dwX;
|
||||||
|
public Int32 dwY;
|
||||||
|
public Int32 dwXSize;
|
||||||
|
public Int32 dwYSize;
|
||||||
|
public Int32 dwXCountChars;
|
||||||
|
public Int32 dwYCountChars;
|
||||||
|
public Int32 dwFillAttribute;
|
||||||
|
public Int32 dwFlags;
|
||||||
|
public Int16 wShowWindow;
|
||||||
|
public Int16 cbReserved2;
|
||||||
|
public IntPtr lpReserved2;
|
||||||
|
public IntPtr hStdInput;
|
||||||
|
public IntPtr hStdOutput;
|
||||||
|
public IntPtr hStdError;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct PROCESS_INFORMATION
|
||||||
|
{
|
||||||
|
public IntPtr hProcess;
|
||||||
|
public IntPtr hThread;
|
||||||
|
public int dwProcessId;
|
||||||
|
public int dwThreadId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public const uint STATUS_BREAKPOINT = 0x80000003;
|
||||||
|
|
||||||
|
const uint DEBUG_ONLY_THIS_PROCESS = 0x00000002;
|
||||||
|
const UInt32 INFINITE = 0xffffffff;
|
||||||
|
|
||||||
|
private String _TargetExePath;
|
||||||
|
private DEBUG_EVENT _DebugEvent;
|
||||||
|
private bool _ContinueDebugging = true;
|
||||||
|
|
||||||
|
public delegate void DebugEventHandler(object sender, DebugEventArgs e);
|
||||||
|
public event DebugEventHandler OnDebugEvent;
|
||||||
|
|
||||||
|
public QuickDebugger(String PathToExe)
|
||||||
|
{
|
||||||
|
_TargetExePath = PathToExe;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartProcess()
|
||||||
|
{
|
||||||
|
PROCESS_INFORMATION pInfo = new PROCESS_INFORMATION();
|
||||||
|
STARTUPINFO sInfo = new STARTUPINFO();
|
||||||
|
SECURITY_ATTRIBUTES pSec = new SECURITY_ATTRIBUTES();
|
||||||
|
SECURITY_ATTRIBUTES tSec = new SECURITY_ATTRIBUTES();
|
||||||
|
pSec.nLength = Marshal.SizeOf(pSec);
|
||||||
|
tSec.nLength = Marshal.SizeOf(tSec);
|
||||||
|
|
||||||
|
CreateProcess(_TargetExePath, "", ref pSec, ref tSec, false, DEBUG_ONLY_THIS_PROCESS, IntPtr.Zero, null, ref sInfo, out pInfo);
|
||||||
|
|
||||||
|
_DebugEvent = new DEBUG_EVENT();
|
||||||
|
while (_ContinueDebugging)
|
||||||
|
{
|
||||||
|
if (!WaitForDebugEvent(ref _DebugEvent, INFINITE))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (OnDebugEvent != null)
|
||||||
|
OnDebugEvent(this, new DebugEventArgs(_DebugEvent));
|
||||||
|
else
|
||||||
|
ContinueDebugEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ContinueDebugEvent()
|
||||||
|
{
|
||||||
|
ContinueDebugEvent(_DebugEvent.dwProcessId, _DebugEvent.dwThreadId, ContinueStatus.DBG_CONTINUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopDebuging()
|
||||||
|
{
|
||||||
|
_ContinueDebugging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DetachDebugger()
|
||||||
|
{
|
||||||
|
DebugActiveProcessStop((uint)_DebugEvent.dwProcessId);
|
||||||
|
_ContinueDebugging = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DebugEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public DEBUG_EVENT Dbe { get; private set; }
|
||||||
|
|
||||||
|
public DebugEventArgs(DEBUG_EVENT DebugEvent)
|
||||||
|
{
|
||||||
|
Dbe = DebugEvent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
38
Transformers2_Launcher/INIFile.cs
Normal file
38
Transformers2_Launcher/INIFile.cs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
#region INI class
|
||||||
|
|
||||||
|
public class INIFile
|
||||||
|
{
|
||||||
|
private string _RelativePath = string.Empty;
|
||||||
|
public FileInfo FInfo { get; private set; }
|
||||||
|
|
||||||
|
[DllImport("kernel32")]
|
||||||
|
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
|
||||||
|
[DllImport("kernel32")]
|
||||||
|
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
|
||||||
|
|
||||||
|
public INIFile(string INIPath)
|
||||||
|
{
|
||||||
|
_RelativePath = INIPath;
|
||||||
|
FInfo = new FileInfo(_RelativePath);
|
||||||
|
}
|
||||||
|
public long IniWriteValue(string Section, string Key, string Value)
|
||||||
|
{
|
||||||
|
return WritePrivateProfileString(Section, Key, Value, this._RelativePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IniReadValue(string Section, string Key)
|
||||||
|
{
|
||||||
|
StringBuilder temp = new StringBuilder(255);
|
||||||
|
int i = GetPrivateProfileString(Section, Key, "", temp, 255, this._RelativePath);
|
||||||
|
return temp.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
36
Transformers2_Launcher/Logger.cs
Normal file
36
Transformers2_Launcher/Logger.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
public static class Logger
|
||||||
|
{
|
||||||
|
private static string LogFilename = "debug.txt";
|
||||||
|
public static bool IsEnabled { get; set; }
|
||||||
|
|
||||||
|
public static void InitLogFileName()
|
||||||
|
{
|
||||||
|
LogFilename = "Debug_" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + ".txt";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Writing to Log only if verbose arg given in cmdline
|
||||||
|
/// </summary>
|
||||||
|
public static void WriteLog(String Data)
|
||||||
|
{
|
||||||
|
if (IsEnabled)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (StreamWriter sr = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + @"\" + LogFilename, true))
|
||||||
|
{
|
||||||
|
sr.WriteLine(DateTime.Now.ToString("[HH:mm:ss.ffffff] ") + Data);
|
||||||
|
sr.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
105
Transformers2_Launcher/ProcessTools.cs
Normal file
105
Transformers2_Launcher/ProcessTools.cs
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
public static class ProcessTools
|
||||||
|
{
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
static extern uint SuspendThread(IntPtr hThread);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
static extern int ResumeThread(IntPtr hThread);
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum ThreadAccess : int
|
||||||
|
{
|
||||||
|
TERMINATE = (0x0001),
|
||||||
|
SUSPEND_RESUME = (0x0002),
|
||||||
|
GET_CONTEXT = (0x0008),
|
||||||
|
SET_CONTEXT = (0x0010),
|
||||||
|
SET_INFORMATION = (0x0020),
|
||||||
|
QUERY_INFORMATION = (0x0040),
|
||||||
|
SET_THREAD_TOKEN = (0x0080),
|
||||||
|
IMPERSONATE = (0x0100),
|
||||||
|
DIRECT_IMPERSONATION = (0x0200)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[DllImport("ntdll.dll", PreserveSig = false)]
|
||||||
|
public static extern void NtSuspendProcess(IntPtr processHandle);
|
||||||
|
|
||||||
|
[DllImport("ntdll.dll", PreserveSig = false, SetLastError = true)]
|
||||||
|
public static extern void NtResumeProcess(IntPtr processHandle);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern IntPtr OpenProcess(ProcessAccessFlags processAccess,bool bInheritHandle,int processId);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern bool CloseHandle(IntPtr hObject);
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum ProcessAccessFlags : uint
|
||||||
|
{
|
||||||
|
All = 0x001F0FFF,
|
||||||
|
Terminate = 0x00000001,
|
||||||
|
CreateThread = 0x00000002,
|
||||||
|
VirtualMemoryOperation = 0x00000008,
|
||||||
|
VirtualMemoryRead = 0x00000010,
|
||||||
|
VirtualMemoryWrite = 0x00000020,
|
||||||
|
DuplicateHandle = 0x00000040,
|
||||||
|
CreateProcess = 0x000000080,
|
||||||
|
SetQuota = 0x00000100,
|
||||||
|
SetInformation = 0x00000200,
|
||||||
|
QueryInformation = 0x00000400,
|
||||||
|
QueryLimitedInformation = 0x00001000,
|
||||||
|
Synchronize = 0x00100000
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void Suspend(this Process process)
|
||||||
|
{
|
||||||
|
foreach (ProcessThread thread in process.Threads)
|
||||||
|
{
|
||||||
|
var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id);
|
||||||
|
if (pOpenThread == IntPtr.Zero)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SuspendThread(pOpenThread);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void Resume(this Process process)
|
||||||
|
{
|
||||||
|
foreach (ProcessThread thread in process.Threads)
|
||||||
|
{
|
||||||
|
var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id);
|
||||||
|
if (pOpenThread == IntPtr.Zero)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ResumeThread(pOpenThread);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SuspendProcess(Process p)
|
||||||
|
{
|
||||||
|
IntPtr hProcess = OpenProcess(ProcessAccessFlags.All, false, p.Id);
|
||||||
|
NtSuspendProcess(hProcess);
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ResumeProcess(Process p)
|
||||||
|
{
|
||||||
|
IntPtr hProcess = OpenProcess(ProcessAccessFlags.All, false, p.Id);
|
||||||
|
NtResumeProcess(hProcess);
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
34
Transformers2_Launcher/Program.cs
Normal file
34
Transformers2_Launcher/Program.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
public static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Point d'entrée principal de l'application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
bool bEnableLogs = false;
|
||||||
|
if (args.Length > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
if (args[i].ToLower().Equals("-v") || args[i].ToLower().Equals("--verbose"))
|
||||||
|
{
|
||||||
|
bEnableLogs = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Transformers2_Launcher Launcher = new Transformers2_Launcher(bEnableLogs);
|
||||||
|
Launcher.RunGame();
|
||||||
|
//Launcher.Run_Game_Debug();
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
Transformers2_Launcher/Properties/AssemblyInfo.cs
Normal file
36
Transformers2_Launcher/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// Les informations générales relatives à un assembly dépendent de
|
||||||
|
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
|
||||||
|
// associées à un assembly.
|
||||||
|
[assembly: AssemblyTitle("Transformers2_Launcher")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Transformers2_Launcher")]
|
||||||
|
[assembly: AssemblyCopyright("Argonlefou © 2024")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
|
||||||
|
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
|
||||||
|
// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
|
||||||
|
[assembly: Guid("0731316c-555f-4a84-a206-1e3539358b53")]
|
||||||
|
|
||||||
|
// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
|
||||||
|
//
|
||||||
|
// Version principale
|
||||||
|
// Version secondaire
|
||||||
|
// Numéro de build
|
||||||
|
// Révision
|
||||||
|
//
|
||||||
|
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
|
||||||
|
// en utilisant '*', comme indiqué ci-dessous :
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0")]
|
63
Transformers2_Launcher/Properties/Resources.Designer.cs
generated
Normal file
63
Transformers2_Launcher/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Ce code a été généré par un outil.
|
||||||
|
// Version du runtime :4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
|
||||||
|
// le code est régénéré.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
|
||||||
|
/// </summary>
|
||||||
|
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
|
||||||
|
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
|
||||||
|
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
|
||||||
|
// avec l'option /str ou régénérez votre projet VS.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Transformers2_Launcher.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
|
||||||
|
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
Transformers2_Launcher/Properties/Resources.resx
Normal file
120
Transformers2_Launcher/Properties/Resources.resx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
26
Transformers2_Launcher/Properties/Settings.Designer.cs
generated
Normal file
26
Transformers2_Launcher/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Ce code a été généré par un outil.
|
||||||
|
// Version du runtime :4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
|
||||||
|
// le code est régénéré.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
Transformers2_Launcher/Properties/Settings.settings
Normal file
7
Transformers2_Launcher/Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
BIN
Transformers2_Launcher/Resources/DefaultRanking.dat
Normal file
BIN
Transformers2_Launcher/Resources/DefaultRanking.dat
Normal file
Binary file not shown.
BIN
Transformers2_Launcher/Resources/spr_logo.zip
Normal file
BIN
Transformers2_Launcher/Resources/spr_logo.zip
Normal file
Binary file not shown.
BIN
Transformers2_Launcher/Resources/spr_menuextras_en.zip
Normal file
BIN
Transformers2_Launcher/Resources/spr_menuextras_en.zip
Normal file
Binary file not shown.
BIN
Transformers2_Launcher/Resources/spr_menuextras_es.zip
Normal file
BIN
Transformers2_Launcher/Resources/spr_menuextras_es.zip
Normal file
Binary file not shown.
BIN
Transformers2_Launcher/Resources/spr_menuextras_fr.zip
Normal file
BIN
Transformers2_Launcher/Resources/spr_menuextras_fr.zip
Normal file
Binary file not shown.
BIN
Transformers2_Launcher/Resources/spr_menuextras_it.zip
Normal file
BIN
Transformers2_Launcher/Resources/spr_menuextras_it.zip
Normal file
Binary file not shown.
522
Transformers2_Launcher/Transformers2_Launcher.cs
Normal file
522
Transformers2_Launcher/Transformers2_Launcher.cs
Normal file
@ -0,0 +1,522 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using Debugger;
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
public class Transformers2_Launcher
|
||||||
|
{
|
||||||
|
private const string MEMORY_DATA_FOLDER = "MemoryData";
|
||||||
|
private const string TARGET_EXE_NAME = @"Transformers2.exe";
|
||||||
|
|
||||||
|
private int _ProcessId = 0;
|
||||||
|
private Process _Process;
|
||||||
|
private IntPtr _Process_MemoryBaseAddress = IntPtr.Zero;
|
||||||
|
private IntPtr _ProcessHandle = IntPtr.Zero;
|
||||||
|
|
||||||
|
//Memory Hacks
|
||||||
|
private UInt32 _DisableCShell_Offset = 0x001E70E4;
|
||||||
|
private UInt32 _RestoreHiddenConfig_Offset = 0x00240C80;
|
||||||
|
private UInt32 _SetWindowedMode_Offset = 0x002409F5;
|
||||||
|
private UInt32 _RemoveOriginalWindowedMode_Offset = 0x00240A1C;
|
||||||
|
private UInt32 _ForceResolutionIndex_Offset = 0x00260AD5;
|
||||||
|
private UInt32 _ResolutionTableHd_Offset = 0x008A5008;
|
||||||
|
private UInt32 _DisableLEDBoardCreation_Offset = 0x002EB93C;
|
||||||
|
private UInt32 _DisableSAEBoardCreation_Offset = 0x0017A4A2;
|
||||||
|
private UInt32 _CGunMgrForceInputMouse_Offset1 = 0x000F54F9;
|
||||||
|
private UInt32 _CGunMgrForceInputMouse_Offset2 = 0x000F551C;
|
||||||
|
private UInt32 _CGunMgrForceInputMouse_Offset3 = 0x000F5534;
|
||||||
|
|
||||||
|
//MD5 check of target binaries, may help to know if it's the wrong version or not compatible
|
||||||
|
protected Dictionary<string, string> _KnownMd5Prints;
|
||||||
|
protected String _TargetProcess_Md5Hash = string.Empty;
|
||||||
|
|
||||||
|
//Config values
|
||||||
|
private const string LAUNCHER_INI_PATH = @".\Transformers2_Launcher.ini";
|
||||||
|
private INIFile _Launcher_IniFile;
|
||||||
|
private UInt32 _Cfg_ScreenWidth = 0;
|
||||||
|
private UInt32 _Cfg_ScreenHeight = 0;
|
||||||
|
private byte _Cfg_Windowed = 0;
|
||||||
|
|
||||||
|
Debugger.QuickDebugger _Qdb;
|
||||||
|
|
||||||
|
public Transformers2_Launcher(bool EnableLogs)
|
||||||
|
{
|
||||||
|
Logger.InitLogFileName();
|
||||||
|
Logger.IsEnabled = EnableLogs;
|
||||||
|
|
||||||
|
_Launcher_IniFile = new INIFile(AppDomain.CurrentDomain.BaseDirectory + LAUNCHER_INI_PATH);
|
||||||
|
|
||||||
|
if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + TARGET_EXE_NAME))
|
||||||
|
{
|
||||||
|
Logger.IsEnabled = true;
|
||||||
|
Logger.WriteLog("Transformers2_Launcher() => Transformers2.exe not found. Abording...");
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!File.Exists(_Launcher_IniFile.FInfo.FullName))
|
||||||
|
{
|
||||||
|
Logger.IsEnabled = true;
|
||||||
|
Logger.WriteLog("Transformers2_Launcher() => No config file found. Abording...");
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_Cfg_ScreenWidth = UInt32.Parse(_Launcher_IniFile.IniReadValue("Video", "WIDTH"));
|
||||||
|
_Cfg_ScreenHeight = UInt32.Parse(_Launcher_IniFile.IniReadValue("Video", "HEIGHT"));
|
||||||
|
if (_Launcher_IniFile.IniReadValue("Video", "FULLSCREEN").Equals("0"))
|
||||||
|
_Cfg_Windowed = 1;
|
||||||
|
else
|
||||||
|
_Cfg_Windowed = 0;
|
||||||
|
}
|
||||||
|
catch (Exception Ex)
|
||||||
|
{
|
||||||
|
Logger.IsEnabled = true;
|
||||||
|
Logger.WriteLog("Transformers2_Launcher() => Error reading config file : " + _Launcher_IniFile.FInfo.FullName);
|
||||||
|
Logger.WriteLog(Ex.Message.ToString());
|
||||||
|
Logger.WriteLog("Abording...");
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
_KnownMd5Prints = new Dictionary<String, String>();
|
||||||
|
_KnownMd5Prints.Add("Transformers Shadow Rising v180605 - Original Dump", "b3b1f4ad6408d6ee946761a00f761455");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create the process with DEBUG attributes, so that we can stop it to inject the code, and then resume it
|
||||||
|
/// Inspired from a hand-made debugger https://www.codeproject.com/Articles/43682/Writing-a-basic-Windows-debugger
|
||||||
|
/// </summary>
|
||||||
|
public void RunGame()
|
||||||
|
{
|
||||||
|
_Qdb = new QuickDebugger(AppDomain.CurrentDomain.BaseDirectory + TARGET_EXE_NAME);
|
||||||
|
_Qdb.OnDebugEvent += new Debugger.QuickDebugger.DebugEventHandler(Qdb_OnDebugEvent);
|
||||||
|
_Qdb.StartProcess();
|
||||||
|
}
|
||||||
|
private void Qdb_OnDebugEvent(object sender, Debugger.DebugEventArgs e)
|
||||||
|
{
|
||||||
|
switch (e.Dbe.dwDebugEventCode)
|
||||||
|
{
|
||||||
|
case DebugEventType.CREATE_PROCESS_DEBUG_EVENT:
|
||||||
|
{
|
||||||
|
Logger.WriteLog("RunGame() => Process created");
|
||||||
|
_Qdb.ContinueDebugEvent();
|
||||||
|
} break;
|
||||||
|
|
||||||
|
|
||||||
|
case DebugEventType.CREATE_THREAD_DEBUG_EVENT:
|
||||||
|
{
|
||||||
|
DEBUG_EVENT.CREATE_THREAD_DEBUG_INFO ti = new DEBUG_EVENT.CREATE_THREAD_DEBUG_INFO();
|
||||||
|
ti = e.Dbe.CreateThread;
|
||||||
|
Logger.WriteLog("Thread 0x" + ti.hThread.ToString("X8") + " (Id: " + e.Dbe.dwThreadId.ToString() + ") created");
|
||||||
|
_Qdb.ContinueDebugEvent();
|
||||||
|
} break;
|
||||||
|
|
||||||
|
|
||||||
|
//The game has a breakpoint installed at start (!), we can use it to search for information, block the process to insert our code
|
||||||
|
case DebugEventType.EXCEPTION_DEBUG_EVENT:
|
||||||
|
{
|
||||||
|
DEBUG_EVENT.EXCEPTION_DEBUG_INFO Ex = new DEBUG_EVENT.EXCEPTION_DEBUG_INFO();
|
||||||
|
Ex = e.Dbe.Exception;
|
||||||
|
|
||||||
|
if (Ex.ExceptionRecord.ExceptionCode == QuickDebugger.STATUS_BREAKPOINT)
|
||||||
|
{
|
||||||
|
Logger.WriteLog("RunGame() => Breakpoint reached !");
|
||||||
|
Process p = Process.GetProcessById(e.Dbe.dwProcessId);
|
||||||
|
_Process = p;
|
||||||
|
_ProcessId = _Process.Id;
|
||||||
|
_ProcessHandle = _Process.Handle;
|
||||||
|
_Process_MemoryBaseAddress = _Process.MainModule.BaseAddress;
|
||||||
|
Logger.WriteLog("RunGame() => Process ID: " + _ProcessId.ToString());
|
||||||
|
Logger.WriteLog("RunGame() => Process Memory Base Address: 0x" + _Process_MemoryBaseAddress.ToString("X8"));
|
||||||
|
Logger.WriteLog("RunGame() => Process Handle: 0x" + _ProcessHandle.ToString("X8"));
|
||||||
|
|
||||||
|
CheckExeMd5();
|
||||||
|
ReadGameDataFromMd5Hash();
|
||||||
|
Apply_Hacks();
|
||||||
|
|
||||||
|
Logger.WriteLog("RunGame() => Hack complete, leaving the game to run on its own now....");
|
||||||
|
_Qdb.DetachDebugger();
|
||||||
|
_Qdb.ContinueDebugEvent();
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
_Qdb.ContinueDebugEvent();
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creating the Process without DEBUG attributes can allow another debugger to go in and analyse what's going on
|
||||||
|
/// </summary>
|
||||||
|
public void Run_Game_Debug()
|
||||||
|
{
|
||||||
|
FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + TARGET_EXE_NAME);
|
||||||
|
|
||||||
|
_Process = new Process();
|
||||||
|
_Process.StartInfo.FileName = fi.FullName;
|
||||||
|
_Process.Start();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ProcessTools.SuspendProcess(_Process);
|
||||||
|
_ProcessId = _Process.Id;
|
||||||
|
_ProcessHandle = _Process.Handle;
|
||||||
|
_Process_MemoryBaseAddress = _Process.MainModule.BaseAddress;
|
||||||
|
Apply_Hacks();
|
||||||
|
|
||||||
|
ProcessTools.ResumeProcess(_Process);
|
||||||
|
}
|
||||||
|
catch (InvalidOperationException)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Hacks
|
||||||
|
|
||||||
|
public void Apply_Hacks()
|
||||||
|
{
|
||||||
|
//Disabling the CShell necessity, if not the game is shutting down if no correct Keep-alive reply from the Shell.exe program
|
||||||
|
WriteByte((UInt32)_Process_MemoryBaseAddress + _DisableCShell_Offset, 0x00);
|
||||||
|
|
||||||
|
//GetConfigIniDir() function is stripped. Putting back a fixed name (./App.ini) to restore the possibility to change some settings
|
||||||
|
WriteBytes((UInt32)_Process_MemoryBaseAddress + _RestoreHiddenConfig_Offset, new byte[] { 0xB8, 0x86, 0x0C, 0x64, 0x00, 0xC3, 0x2E, 0x2F, 0x41, 0x70, 0x70, 0x2E, 0x69, 0x6E, 0x69, 0x00 });
|
||||||
|
|
||||||
|
//LED Board is connected through COM port
|
||||||
|
//Setting COM access result to (-1) instead of trying to open COM port for real
|
||||||
|
WriteBytes((UInt32)_Process_MemoryBaseAddress + _DisableLEDBoardCreation_Offset, new byte[] { 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x1D, 0x90, 0x90, 0x90, 0x90 });
|
||||||
|
|
||||||
|
//Force not to create SAEBoard
|
||||||
|
WriteByte((UInt32)_Process_MemoryBaseAddress + _DisableSAEBoardCreation_Offset, 0xEB);
|
||||||
|
|
||||||
|
//CGunMgr() init input mode by checking first if JVS is enabled, forcing it to false
|
||||||
|
WriteByte((UInt32)_Process_MemoryBaseAddress + _CGunMgrForceInputMouse_Offset1, 0xEB);
|
||||||
|
//Then checking if SAEBoard is active, forcing it to false also
|
||||||
|
WriteByte((UInt32)_Process_MemoryBaseAddress + _CGunMgrForceInputMouse_Offset2, 0xEB);
|
||||||
|
//Finally forcing input mode to '1' (mouse) for P2 (already 1 for P1 normally)
|
||||||
|
WriteByte((UInt32)_Process_MemoryBaseAddress + _CGunMgrForceInputMouse_Offset3, 0x1);
|
||||||
|
|
||||||
|
//Replacing the original default value for Windowed mode by our own
|
||||||
|
WriteByte((UInt32)_Process_MemoryBaseAddress + _SetWindowedMode_Offset, _Cfg_Windowed);
|
||||||
|
//Disabling the default Windowed mode set after reading the "hidden" config file
|
||||||
|
WriteBytes((UInt32)_Process_MemoryBaseAddress + _RemoveOriginalWindowedMode_Offset, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
||||||
|
|
||||||
|
//Screen Size Hack :
|
||||||
|
//First step is to force the game to choose index 0xF in the resolution table, whatever SWITCH or option is used
|
||||||
|
WriteBytes((UInt32)_Process_MemoryBaseAddress + _ForceResolutionIndex_Offset, new byte[] { 0x90, 0x90, 0xB8, 0x0F });
|
||||||
|
//Second step is to replace Width and Height values for the desires Resolution by our own
|
||||||
|
for (uint i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
WriteBytes((UInt32)_Process_MemoryBaseAddress + _ResolutionTableHd_Offset + (i * 8), BitConverter.GetBytes(_Cfg_ScreenWidth));
|
||||||
|
WriteBytes((UInt32)_Process_MemoryBaseAddress + _ResolutionTableHd_Offset + (i * 8) + 4, BitConverter.GetBytes(_Cfg_ScreenHeight));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not needed
|
||||||
|
//Credits force value to 0 instead of -1 (-1 won't update value) ?????? to confirm when set_credit hack is done
|
||||||
|
//WriteByte((UInt32)_Process_MemoryBaseAddress + 0x66953, 0x00);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region MD5 Verification
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compute the MD5 hash of the target executable and compare it to the known list of MD5 Hashes
|
||||||
|
/// This can be usefull if people are using some unknown dump with different memory,
|
||||||
|
/// or a wrong version of emulator
|
||||||
|
/// This is absolutely not blocking, just for debuging with output log
|
||||||
|
/// </summary>
|
||||||
|
protected void CheckExeMd5()
|
||||||
|
{
|
||||||
|
CheckMd5(_Process.MainModule.FileName);
|
||||||
|
}
|
||||||
|
protected void CheckMd5(String TargetFileName)
|
||||||
|
{
|
||||||
|
GetMd5HashAsString(TargetFileName);
|
||||||
|
Logger.WriteLog("CheckMd5() => MD5 hash of " + TargetFileName + " = " + _TargetProcess_Md5Hash);
|
||||||
|
|
||||||
|
String FoundMd5 = String.Empty;
|
||||||
|
foreach (KeyValuePair<String, String> pair in _KnownMd5Prints)
|
||||||
|
{
|
||||||
|
if (pair.Value == _TargetProcess_Md5Hash)
|
||||||
|
{
|
||||||
|
FoundMd5 = pair.Key;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FoundMd5 == String.Empty)
|
||||||
|
{
|
||||||
|
Logger.WriteLog(@"CheckMd5() => /!\ MD5 Hash unknown, the mod may not work correctly with this target /!\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.WriteLog("CheckMd5() => MD5 Hash is corresponding to a known target = " + FoundMd5);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compute the MD5 hash from the target file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="FileName">Full filepath of the targeted executable.</param>
|
||||||
|
private void GetMd5HashAsString(String FileName)
|
||||||
|
{
|
||||||
|
if (File.Exists(FileName))
|
||||||
|
{
|
||||||
|
using (var md5 = MD5.Create())
|
||||||
|
{
|
||||||
|
using (var stream = File.OpenRead(FileName))
|
||||||
|
{
|
||||||
|
var hash = md5.ComputeHash(stream);
|
||||||
|
_TargetProcess_Md5Hash = BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region MemoryData Loading
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Read memory values in .cfg file, whose name depends on the MD5 hash of the targeted exe.
|
||||||
|
/// Mostly used for PC games
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="GameData_Folder"></param>
|
||||||
|
protected virtual void ReadGameDataFromMd5Hash()
|
||||||
|
{
|
||||||
|
String ConfigFile = AppDomain.CurrentDomain.BaseDirectory + MEMORY_DATA_FOLDER + @"\" + _TargetProcess_Md5Hash + ".cfg";
|
||||||
|
if (File.Exists(ConfigFile))
|
||||||
|
{
|
||||||
|
Logger.WriteLog("ReadGameDataFromMd5Hash() => Reading game memory setting from " + ConfigFile);
|
||||||
|
using (StreamReader sr = new StreamReader(ConfigFile))
|
||||||
|
{
|
||||||
|
String line;
|
||||||
|
String FieldName = String.Empty;
|
||||||
|
line = sr.ReadLine();
|
||||||
|
while (line != null)
|
||||||
|
{
|
||||||
|
String[] buffer = line.Split('=');
|
||||||
|
if (buffer.Length > 1)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FieldName = "_" + buffer[0].Trim();
|
||||||
|
if (buffer[0].Contains("Nop"))
|
||||||
|
{
|
||||||
|
NopStruct n = new NopStruct(buffer[1].Trim());
|
||||||
|
this.GetType().GetField(FieldName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase).SetValue(this, n);
|
||||||
|
Logger.WriteLog(FieldName + " successfully set to following NopStruct : 0x" + n.MemoryOffset.ToString("X8") + "|" + n.Length.ToString());
|
||||||
|
}
|
||||||
|
else if (buffer[0].Contains("Injection"))
|
||||||
|
{
|
||||||
|
InjectionStruct i = new InjectionStruct(buffer[1].Trim());
|
||||||
|
this.GetType().GetField(FieldName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase).SetValue(this, i);
|
||||||
|
Logger.WriteLog(FieldName + " successfully set to following InjectionStruct : 0x" + i.Injection_Offset.ToString("X8") + "|" + i.Length.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UInt32 v = UInt32.Parse(buffer[1].Substring(3).Trim(), NumberStyles.HexNumber);
|
||||||
|
this.GetType().GetField(FieldName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase).SetValue(this, v);
|
||||||
|
Logger.WriteLog(FieldName + " successfully set to following value : 0x" + v.ToString("X8"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.WriteLog("ReadGameDataFromMd5Hash() => Error reading game data for " + FieldName + " : " + ex.Message.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
line = sr.ReadLine();
|
||||||
|
}
|
||||||
|
sr.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.WriteLog("ReadGameDataFromMd5Hash() => Memory File not found : " + ConfigFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Memory Hack x86
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines how many NOP to write at a given Memory offset
|
||||||
|
/// </summary>
|
||||||
|
public struct NopStruct
|
||||||
|
{
|
||||||
|
public UInt32 MemoryOffset;
|
||||||
|
public UInt32 Length;
|
||||||
|
|
||||||
|
public NopStruct(UInt32 Offset, UInt32 NopLength)
|
||||||
|
{
|
||||||
|
MemoryOffset = Offset;
|
||||||
|
Length = NopLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NopStruct(String OffsetAndNumber)
|
||||||
|
{
|
||||||
|
MemoryOffset = 0;
|
||||||
|
Length = 0;
|
||||||
|
if (OffsetAndNumber != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Length = UInt32.Parse((OffsetAndNumber.Split('|'))[1]);
|
||||||
|
MemoryOffset = UInt32.Parse((OffsetAndNumber.Split('|'))[0].Substring(2).Trim(), System.Globalization.NumberStyles.HexNumber);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Logger.WriteLog("Impossible to load NopStruct from following String : " + OffsetAndNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines an injection Memory zone and it's length
|
||||||
|
/// </summary>
|
||||||
|
public struct InjectionStruct
|
||||||
|
{
|
||||||
|
public UInt32 Injection_Offset;
|
||||||
|
public UInt32 Injection_ReturnOffset;
|
||||||
|
public UInt32 Length;
|
||||||
|
|
||||||
|
public InjectionStruct(UInt32 Offset, UInt32 InjectionLength)
|
||||||
|
{
|
||||||
|
Injection_Offset = Offset;
|
||||||
|
Length = InjectionLength;
|
||||||
|
Injection_ReturnOffset = Offset + Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InjectionStruct(String OffsetAndNumber)
|
||||||
|
{
|
||||||
|
Injection_Offset = 0;
|
||||||
|
Length = 0;
|
||||||
|
Injection_ReturnOffset = 0;
|
||||||
|
if (OffsetAndNumber != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Length = UInt32.Parse((OffsetAndNumber.Split('|'))[1]);
|
||||||
|
Injection_Offset = UInt32.Parse((OffsetAndNumber.Split('|'))[0].Substring(2).Trim(), System.Globalization.NumberStyles.HexNumber);
|
||||||
|
Injection_ReturnOffset = Injection_Offset + Length;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Logger.WriteLog("Impossible to load InjectionStruct from following String : " + OffsetAndNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Byte ReadByte(UInt32 Address)
|
||||||
|
{
|
||||||
|
byte[] Buffer = { 0 };
|
||||||
|
UInt32 bytesRead = 0;
|
||||||
|
if (!Win32API.ReadProcessMemory(_ProcessHandle, Address, Buffer, 1, ref bytesRead))
|
||||||
|
{
|
||||||
|
Logger.WriteLog("Cannot read memory at address 0x" + Address.ToString("X8"));
|
||||||
|
}
|
||||||
|
return Buffer[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Byte[] ReadBytes(UInt32 Address, UInt32 BytesCount)
|
||||||
|
{
|
||||||
|
byte[] Buffer = new byte[BytesCount];
|
||||||
|
UInt32 bytesRead = 0;
|
||||||
|
if (!Win32API.ReadProcessMemory(_ProcessHandle, Address, Buffer, (UInt32)Buffer.Length, ref bytesRead))
|
||||||
|
{
|
||||||
|
Logger.WriteLog("Cannot read memory at address 0x" + Address.ToString("X8"));
|
||||||
|
}
|
||||||
|
return Buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected UInt32 ReadPtr(UInt32 PtrAddress)
|
||||||
|
{
|
||||||
|
byte[] Buffer = ReadBytes(PtrAddress, 4);
|
||||||
|
return BitConverter.ToUInt32(Buffer, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected UInt32 ReadPtrChain(UInt32 BaseAddress, UInt32[] Offsets)
|
||||||
|
{
|
||||||
|
byte[] Buffer = ReadBytes(BaseAddress, 4);
|
||||||
|
UInt32 Ptr = BitConverter.ToUInt32(Buffer, 0);
|
||||||
|
|
||||||
|
if (Ptr == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Offsets.Length; i++)
|
||||||
|
{
|
||||||
|
Buffer = ReadBytes(Ptr + Offsets[i], 8);
|
||||||
|
Ptr = BitConverter.ToUInt32(Buffer, 0);
|
||||||
|
|
||||||
|
if (Ptr == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected bool WriteByte(UInt32 Address, byte Value)
|
||||||
|
{
|
||||||
|
UInt32 bytesWritten = 0;
|
||||||
|
Byte[] Buffer = { Value };
|
||||||
|
if (Win32API.WriteProcessMemory(_ProcessHandle, Address, Buffer, 1, ref bytesWritten))
|
||||||
|
{
|
||||||
|
if (bytesWritten == 1)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected bool WriteBytes(UInt32 Address, byte[] Buffer)
|
||||||
|
{
|
||||||
|
UInt32 bytesWritten = 0;
|
||||||
|
if (Win32API.WriteProcessMemory(_ProcessHandle, Address, Buffer, (UInt32)Buffer.Length, ref bytesWritten))
|
||||||
|
{
|
||||||
|
if (bytesWritten == Buffer.Length)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void SetNops(UInt32 BaseAddress, NopStruct Nop)
|
||||||
|
{
|
||||||
|
for (UInt32 i = 0; i < Nop.Length; i++)
|
||||||
|
{
|
||||||
|
UInt32 Address = (UInt32)BaseAddress + Nop.MemoryOffset + i;
|
||||||
|
if (!WriteByte(Address, 0x90))
|
||||||
|
{
|
||||||
|
Logger.WriteLog("Impossible to NOP address 0x" + Address.ToString("X8"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
98
Transformers2_Launcher/Transformers2_Launcher.csproj
Normal file
98
Transformers2_Launcher/Transformers2_Launcher.csproj
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||||
|
<ProductVersion>8.0.30703</ProductVersion>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>{5D726FF6-B1A8-43C7-BEE8-EFC9E1E88DE0}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Transformers2_Launcher</RootNamespace>
|
||||||
|
<AssemblyName>Transformers2_Launcher</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>Ypf-Transformers-Transformer.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Codecave.cs" />
|
||||||
|
<Compile Include="INIFile.cs" />
|
||||||
|
<Compile Include="Logger.cs" />
|
||||||
|
<Compile Include="ProcessTools.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Debugger.cs" />
|
||||||
|
<Compile Include="Transformers2_Launcher.cs" />
|
||||||
|
<Compile Include="Win32API.cs" />
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
<None Include="Resources\DefaultRanking.dat" />
|
||||||
|
<None Include="Resources\spr_logo.zip" />
|
||||||
|
<None Include="Resources\spr_menuextras_en.zip" />
|
||||||
|
<None Include="Resources\spr_menuextras_es.zip" />
|
||||||
|
<None Include="Resources\spr_menuextras_fr.zip" />
|
||||||
|
<None Include="Resources\spr_menuextras_it.zip" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Ypf-Transformers-Transformer.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
241
Transformers2_Launcher/Win32API.cs
Normal file
241
Transformers2_Launcher/Win32API.cs
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace Transformers2_Launcher
|
||||||
|
{
|
||||||
|
public static class Win32API
|
||||||
|
{
|
||||||
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
|
public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern IntPtr GetModuleHandle(string lpModuleName);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern bool ReadProcessMemory(IntPtr hProcess, UInt32 lpBaseAddress, byte[] lpBuffer, UInt32 dwSize, ref UInt32 lpNumberOfBytesRead);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
public static extern bool WriteProcessMemory(IntPtr hProcess, UInt32 lpBaseAddress, byte[] lpBuffer, UInt32 dwSize, ref UInt32 lpNumberOfBytesWritten);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, UInt32 dwSize, MemoryAllocType flAllocationType, MemoryPageProtect flProtect);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||||
|
public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);
|
||||||
|
public delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern uint MapVirtualKeyEx(uint uCode, uint uMapType, IntPtr dwhkl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Win32Define
|
||||||
|
{
|
||||||
|
//Mouse and Keyboard Hook
|
||||||
|
public const int WH_MOUSE_LL = 14;
|
||||||
|
public const int WH_KEYBOARD_LL = 13;
|
||||||
|
|
||||||
|
//Windows messages
|
||||||
|
public const UInt32 WM_COPYDATA = 0x004A;
|
||||||
|
public const UInt32 WM_KEYDOWN = 0x0100;
|
||||||
|
public const UInt32 WM_KEYUP = 0x0101;
|
||||||
|
public const UInt32 WM_MOUSEMOVE = 0x0200;
|
||||||
|
public const UInt32 WM_LBUTTONDOWN = 0x0201;
|
||||||
|
public const UInt32 WM_LBUTTONUP = 0x0202;
|
||||||
|
public const UInt32 WM_INPUT = 0x00FF;
|
||||||
|
public const UInt32 WM_RBUTTONDOWN = 0x0204;
|
||||||
|
public const UInt32 WM_RBUTTONUP = 0x0205;
|
||||||
|
public const UInt32 WM_MBUTTONDOWN = 0x0207;
|
||||||
|
public const UInt32 WM_MBUTTONUP = 0x0208;
|
||||||
|
public const UInt32 WM_MOUSEWHEEL = 0x020A;
|
||||||
|
public const UInt32 WM_SYSKEYDOWN = 0x0104;
|
||||||
|
|
||||||
|
|
||||||
|
public const uint MAPVK_VK_TO_VSC = 0x00;
|
||||||
|
public const uint MAPVK_VSC_TO_VK = 0x01;
|
||||||
|
public const uint MAPVK_VK_TO_CHAR = 0x02;
|
||||||
|
public const uint MAPVK_VSC_TO_VK_EX = 0x03;
|
||||||
|
public const uint MAPVK_VK_TO_VSC_EX = 0x04;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum MemoryAllocType
|
||||||
|
{
|
||||||
|
MEM_COMMIT = 0x1000,
|
||||||
|
MEM_RESERVE = 0x2000,
|
||||||
|
MEM_RESET = 0x8000,
|
||||||
|
MEM_RESET_UNDO = 0x1000000,
|
||||||
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum MemoryPageProtect
|
||||||
|
{
|
||||||
|
PAGE_EXECUTE = 0x10,
|
||||||
|
PAGE_EXECUTE_READ = 0x20,
|
||||||
|
PAGE_EXECUTE_READWRITE = 0x40,
|
||||||
|
PAGE_EXECUTE_WRITECOPY = 0x80,
|
||||||
|
PAGE_NOACCESS = 0x01,
|
||||||
|
PAGE_READONLY = 0x02,
|
||||||
|
PAGE_READWRITE = 0x04,
|
||||||
|
PAGE_WRITECOPY = 0x08,
|
||||||
|
PAGE_TARGETS_INVALID = 0x40000000,
|
||||||
|
PAGE_TARGETS_NO_UPDATE = 0x40000000
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum HardwareScanCode : byte
|
||||||
|
{
|
||||||
|
DIK_ESCAPE = 0x01,
|
||||||
|
DIK_1 = 0x02,
|
||||||
|
DIK_2 = 0x03,
|
||||||
|
DIK_3 = 0x04,
|
||||||
|
DIK_4 = 0x05,
|
||||||
|
DIK_5 = 0x06,
|
||||||
|
DIK_6 = 0x07,
|
||||||
|
DIK_7 = 0x08,
|
||||||
|
DIK_8 = 0x09,
|
||||||
|
DIK_9 = 0x0A,
|
||||||
|
DIK_0 = 0x0B,
|
||||||
|
DIK_MINUS = 0x0C,
|
||||||
|
DIK_EQUALS = 0x0D,
|
||||||
|
DIK_BACK = 0x0E,
|
||||||
|
DIK_TAB = 0x0F,
|
||||||
|
DIK_Q = 0x10,
|
||||||
|
DIK_W = 0x11,
|
||||||
|
DIK_E = 0x12,
|
||||||
|
DIK_R = 0x13,
|
||||||
|
DIK_T = 0x14,
|
||||||
|
DIK_Y = 0x15,
|
||||||
|
DIK_U = 0x16,
|
||||||
|
DIK_I = 0x17,
|
||||||
|
DIK_O = 0x18,
|
||||||
|
DIK_P = 0x19,
|
||||||
|
DIK_LBRACKET = 0x1A,
|
||||||
|
DIK_RBRACKET = 0x1B,
|
||||||
|
DIK_RETURN = 0x1C,
|
||||||
|
DIK_LCONTROL = 0x1D,
|
||||||
|
DIK_A = 0x1E,
|
||||||
|
DIK_S = 0x1F,
|
||||||
|
DIK_D = 0x20,
|
||||||
|
DIK_F = 0x21,
|
||||||
|
DIK_G = 0x22,
|
||||||
|
DIK_H = 0x23,
|
||||||
|
DIK_J = 0x24,
|
||||||
|
DIK_K = 0x25,
|
||||||
|
DIK_L = 0x26,
|
||||||
|
DIK_SEMICOLON = 0x27,
|
||||||
|
DIK_APOSTROPHE = 0x28,
|
||||||
|
DIK_GRAVE = 0x29,
|
||||||
|
DIK_LSHIFT = 0x2A,
|
||||||
|
DIK_BACKSLASH = 0x2B,
|
||||||
|
DIK_Z = 0x2C,
|
||||||
|
DIK_X = 0x2D,
|
||||||
|
DIK_C = 0x2E,
|
||||||
|
DIK_V = 0x2F,
|
||||||
|
DIK_B = 0x30,
|
||||||
|
DIK_N = 0x31,
|
||||||
|
DIK_M = 0x32,
|
||||||
|
DIK_COMMA = 0x33,
|
||||||
|
DIK_PERIOD = 0x34,
|
||||||
|
DIK_SLASH = 0x35,
|
||||||
|
DIK_RSHIFT = 0x36,
|
||||||
|
DIK_MULTIPLY = 0x37,
|
||||||
|
DIK_LMENU = 0x38,
|
||||||
|
DIK_SPACE = 0x39,
|
||||||
|
DIK_CAPITAL = 0x3A,
|
||||||
|
DIK_F1 = 0x3B,
|
||||||
|
DIK_F2 = 0x3C,
|
||||||
|
DIK_F3 = 0x3D,
|
||||||
|
DIK_F4 = 0x3E,
|
||||||
|
DIK_F5 = 0x3F,
|
||||||
|
DIK_F6 = 0x40,
|
||||||
|
DIK_F7 = 0x41,
|
||||||
|
DIK_F8 = 0x42,
|
||||||
|
DIK_F9 = 0x43,
|
||||||
|
DIK_F10 = 0x44,
|
||||||
|
DIK_NUMLOCK = 0x45,
|
||||||
|
DIK_SCROLL = 0x46,
|
||||||
|
DIK_NUMPAD7 = 0x47,
|
||||||
|
DIK_NUMPAD8 = 0x48,
|
||||||
|
DIK_NUMPAD9 = 0x49,
|
||||||
|
DIK_SUBTRACT = 0x4A,
|
||||||
|
DIK_NUMPAD4 = 0x4B,
|
||||||
|
DIK_NUMPAD5 = 0x4C,
|
||||||
|
DIK_NUMPAD6 = 0x4D,
|
||||||
|
DIK_ADD = 0x4E,
|
||||||
|
DIK_NUMPAD1 = 0x4F,
|
||||||
|
DIK_NUMPAD2 = 0x50,
|
||||||
|
DIK_NUMPAD3 = 0x51,
|
||||||
|
DIK_NUMPAD0 = 0x52,
|
||||||
|
DIK_DECIMAL = 0x53,
|
||||||
|
DIK_F11 = 0x57,
|
||||||
|
DIK_F12 = 0x58,
|
||||||
|
DIK_F13 = 0x64,
|
||||||
|
DIK_F14 = 0x65,
|
||||||
|
DIK_F15 = 0x66,
|
||||||
|
DIK_KANA = 0x70,
|
||||||
|
DIK_CONVERT = 0x79,
|
||||||
|
DIK_NOCONVERT = 0x7B,
|
||||||
|
DIK_YEN = 0x7D,
|
||||||
|
DIK_NUMPADEQUALS = 0x8D,
|
||||||
|
DIK_CIRCUMFLEX = 0x90,
|
||||||
|
DIK_AT = 0x91,
|
||||||
|
DIK_COLON = 0x92,
|
||||||
|
DIK_UNDERLINE = 0x93,
|
||||||
|
DIK_KANJI = 0x94,
|
||||||
|
DIK_STOP = 0x95,
|
||||||
|
DIK_AX = 0x96,
|
||||||
|
DIK_UNLABELED = 0x97,
|
||||||
|
DIK_NUMPADENTER = 0x9C,
|
||||||
|
DIK_RCONTROL = 0x9D,
|
||||||
|
DIK_NUMPADCOMMA = 0xB3,
|
||||||
|
DIK_DIVIDE = 0xB5,
|
||||||
|
DIK_SYSRQ = 0xB7,
|
||||||
|
DIK_RMENU = 0xB8,
|
||||||
|
DIK_HOME = 0xC7,
|
||||||
|
DIK_UP = 0xC8,
|
||||||
|
DIK_PRIOR = 0xC9,
|
||||||
|
DIK_LEFT = 0xCB,
|
||||||
|
DIK_RIGHT = 0xCD,
|
||||||
|
DIK_END = 0xCF,
|
||||||
|
DIK_DOWN = 0xD0,
|
||||||
|
DIK_NEXT = 0xD1,
|
||||||
|
DIK_INSERT = 0xD2,
|
||||||
|
DIK_DELETE = 0xD3,
|
||||||
|
DIK_LWIN = 0xDB,
|
||||||
|
DIK_RWIN = 0xDC,
|
||||||
|
DIK_APPS = 0xDD,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Contains information about a low-level keyboard input event.
|
||||||
|
/// </summary>
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct KBDLLHOOKSTRUCT
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A virtual-key code. The code must be a value in the range 1 to 254.
|
||||||
|
/// </summary>
|
||||||
|
public int vkCode;
|
||||||
|
/// <summary>
|
||||||
|
/// A hardware scan code for the key.
|
||||||
|
/// </summary>
|
||||||
|
public HardwareScanCode scanCode;
|
||||||
|
/// <summary>
|
||||||
|
/// The extended-key flag, event-injected flags, context code, and transition-state flag.
|
||||||
|
/// </summary>
|
||||||
|
public int flags;
|
||||||
|
/// <summary>
|
||||||
|
/// The time stamp for this message, equivalent to what GetMessageTime would return for this message.
|
||||||
|
/// </summary>
|
||||||
|
public int time;
|
||||||
|
/// <summary>
|
||||||
|
/// Additional information associated with the message.
|
||||||
|
/// </summary>
|
||||||
|
public UIntPtr dwExtraInfo;
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return string.Format("vkCode=0x{0:X}, scanCode=0x{1:X}, flags={2}, time={3}, dwextrainfo={4:X}",
|
||||||
|
vkCode, scanCode, flags, time, dwExtraInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
Transformers2_Launcher/Ypf-Transformers-Transformer.ico
Normal file
BIN
Transformers2_Launcher/Ypf-Transformers-Transformer.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 192 KiB |
Loading…
Reference in New Issue
Block a user