Move shared Updater logic into UpdaterCommon

This commit is contained in:
spycrab
2019-02-26 19:27:36 +01:00
parent 25e9339746
commit 9c84524684
15 changed files with 810 additions and 1190 deletions
+1
View File
@@ -16,5 +16,6 @@ if(ENABLE_QT)
endif()
if (APPLE)
add_subdirectory(UpdaterCommon)
add_subdirectory(MacUpdater)
endif()
File diff suppressed because it is too large Load Diff
+3 -6
View File
@@ -6,8 +6,7 @@ set(SOURCES
AppDelegate.mm
ViewController.h
ViewController.m
UI.h
UI.mm
MacUI.mm
${STORYBOARDS}
)
@@ -31,10 +30,8 @@ target_link_libraries(MacUpdater PRIVATE
"-framework AppKit"
"-framework CoreData"
"-framework Foundation"
uicommon
mbedtls
z
ed25519
uicommon
updatercommon
)
# Compile storyboards (Adapted from https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/OSX-InterfaceBuilderFiles)
@@ -2,9 +2,10 @@
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include "MacUpdater/UI.h"
#include "MacUpdater/ViewController.h"
#include "UpdaterCommon/UI.h"
#include <Cocoa/Cocoa.h>
#include <functional>
@@ -105,3 +106,7 @@ void UI::SetTotalProgress(int current, int total)
{
run_on_main([&] { [GetView() SetTotalProgress:(double)current total:(double)total]; });
}
void UI::Stop()
{
}
-24
View File
@@ -1,24 +0,0 @@
// Copyright 2019 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <string>
namespace UI
{
void Error(const std::string& text);
void SetVisible(bool visible);
void SetDescription(const std::string& text);
void SetTotalMarquee(bool marquee);
void ResetTotalProgress();
void SetTotalProgress(int current, int total);
void SetCurrentMarquee(bool marquee);
void ResetCurrentProgress();
void SetCurrentProgress(int current, int total);
} // namespace UI
File diff suppressed because it is too large Load Diff
+5 -17
View File
@@ -45,25 +45,16 @@
<ProjectReference Include="..\..\..\Externals\cpp-optparse\cpp-optparse.vcxproj">
<Project>{c636d9d1-82fe-42b5-9987-63b7d4836341}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\curl\curl.vcxproj">
<Project>{bb00605c-125f-4a21-b33b-7bf418322dcb}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\externals\ed25519\ed25519.vcxproj">
<Project>{5bdf4b91-1491-4fb0-bc27-78e9a8e97dc3}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\mbedtls\mbedTLS.vcxproj">
<Project>{bdb6578b-0691-4e80-a46c-df21639fd3b8}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\zlib\zlib.vcxproj">
<Project>{ff213b23-2c26-4214-9f88-85271e557e87}</Project>
</ProjectReference>
<ProjectReference Include="..\Common\Common.vcxproj">
<Project>{2e6c348c-c75c-4d94-8d1e-9c1fcbf3efe4}</Project>
</ProjectReference>
<ProjectReference Include="..\UpdaterCommon\UpdaterCommon.vcxproj">
<Project>{B001D13E-7EAB-4689-842D-801E5ACFFAC5}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Main.cpp" />
<ClCompile Include="UI.cpp" />
<ClCompile Include="WinUI.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
@@ -72,9 +63,6 @@
<ItemGroup>
<SourceFiles Include="$(TargetPath)" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="UI.h" />
</ItemGroup>
<ItemGroup>
<Manifest Include="Updater.exe.manifest" />
</ItemGroup>
@@ -82,4 +70,4 @@
<Message Text="Copy: @(SourceFiles) -&gt; $(BinaryOutputDir)" Importance="High" />
<Copy SourceFiles="@(SourceFiles)" DestinationFolder="$(BinaryOutputDir)" />
</Target>
</Project>
</Project>
+2 -5
View File
@@ -2,12 +2,9 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="Main.cpp" />
<ClCompile Include="UI.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="UI.h" />
<ClCompile Include="WinUI.cpp" />
</ItemGroup>
<ItemGroup>
<Manifest Include="Updater.exe.manifest" />
</ItemGroup>
</Project>
</Project>
@@ -2,13 +2,14 @@
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include "Updater/UI.h"
#include <CommCtrl.h>
#include <ShObjIdl.h>
#include "UpdaterCommon/UI.h"
#include <string>
#include <Windows.h>
#include <CommCtrl.h>
#include <ShObjIdl.h>
#include "Common/Flag.h"
#include "Common/StringUtil.h"
+8
View File
@@ -0,0 +1,8 @@
add_library(updatercommon
UpdaterCommon.cpp)
target_link_libraries(updatercommon PRIVATE
uicommon
mbedtls
z
ed25519)
@@ -4,7 +4,7 @@
#pragma once
#include <Windows.h>
#include <string>
namespace UI
{
@@ -21,4 +21,6 @@ void SetTotalProgress(int current, int total);
void SetCurrentMarquee(bool marquee);
void ResetCurrentProgress();
void SetCurrentProgress(int current, int total);
void SetVisible(bool visible);
} // namespace UI
File diff suppressed because it is too large Load Diff
+60
View File
@@ -0,0 +1,60 @@
// Copyright 2019 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <array>
#include <cstdio>
#include <map>
#include <optional>
#include <string>
#include <vector>
#include "Common/CommonTypes.h"
extern FILE* log_fp;
struct Manifest
{
using Filename = std::string;
using Hash = std::array<u8, 16>;
std::map<Filename, Hash> entries;
};
// Represent the operations to be performed by the updater.
struct TodoList
{
struct DownloadOp
{
Manifest::Filename filename;
Manifest::Hash hash;
};
std::vector<DownloadOp> to_download;
struct UpdateOp
{
Manifest::Filename filename;
std::optional<Manifest::Hash> old_hash;
Manifest::Hash new_hash;
};
std::vector<UpdateOp> to_update;
struct DeleteOp
{
Manifest::Filename filename;
Manifest::Hash old_hash;
};
std::vector<DeleteOp> to_delete;
void Log() const;
};
void FatalError(const std::string& message);
std::optional<Manifest> FetchAndParseManifest(const std::string& url);
TodoList ComputeActionsToDo(Manifest this_manifest, Manifest next_manifest);
std::optional<std::string> FindOrCreateTempDir(const std::string& base_path);
void CleanUpTempDir(const std::string& temp_dir, const TodoList& todo);
bool PerformUpdate(const TodoList& todo, const std::string& install_base_path,
const std::string& content_base_url, const std::string& temp_path);
void FlushLog();
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{B001D13E-7EAB-4689-842D-801E5ACFFAC5}</ProjectGuid>
<RootNamespace>UpdaterCommon</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\VSProps\Base.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemGroup>
<ProjectReference Include="..\Common\Common.vcxproj">
<Project>{2e6c348c-c75c-4d94-8d1e-9c1fcbf3efe4}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\curl\curl.vcxproj">
<Project>{bb00605c-125f-4a21-b33b-7bf418322dcb}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\externals\ed25519\ed25519.vcxproj">
<Project>{5bdf4b91-1491-4fb0-bc27-78e9a8e97dc3}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\mbedtls\mbedTLS.vcxproj">
<Project>{bdb6578b-0691-4e80-a46c-df21639fd3b8}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\Externals\zlib\zlib.vcxproj">
<Project>{ff213b23-2c26-4214-9f88-85271e557e87}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="UpdaterCommon.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+95 -4
View File
@@ -91,180 +91,268 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "..\Externals\min
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imgui", "..\Externals\imgui\imgui.vcxproj", "{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UpdaterCommon", "Core\UpdaterCommon\UpdaterCommon.vcxproj", "{B001D13E-7EAB-4689-842D-801E5ACFFAC5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FA3FA62B-6F58-4B86-9453-4D149940A066}.Debug|x64.ActiveCfg = Debug|x64
{FA3FA62B-6F58-4B86-9453-4D149940A066}.Debug|x64.Build.0 = Debug|x64
{FA3FA62B-6F58-4B86-9453-4D149940A066}.Debug|x86.ActiveCfg = Debug|x64
{FA3FA62B-6F58-4B86-9453-4D149940A066}.Release|x64.ActiveCfg = Release|x64
{FA3FA62B-6F58-4B86-9453-4D149940A066}.Release|x64.Build.0 = Release|x64
{47411FDB-1BF2-48D0-AB4E-C7C41160F898}.Debug|x64.ActiveCfg = Debug|x64
{47411FDB-1BF2-48D0-AB4E-C7C41160F898}.Debug|x64.Build.0 = Debug|x64
{47411FDB-1BF2-48D0-AB4E-C7C41160F898}.Release|x64.ActiveCfg = Release|x64
{47411FDB-1BF2-48D0-AB4E-C7C41160F898}.Release|x64.Build.0 = Release|x64
{FA3FA62B-6F58-4B86-9453-4D149940A066}.Release|x86.ActiveCfg = Release|x64
{E54CF649-140E-4255-81A5-30A673C1FB36}.Debug|x64.ActiveCfg = Debug|x64
{E54CF649-140E-4255-81A5-30A673C1FB36}.Debug|x64.Build.0 = Debug|x64
{E54CF649-140E-4255-81A5-30A673C1FB36}.Debug|x86.ActiveCfg = Debug|x64
{E54CF649-140E-4255-81A5-30A673C1FB36}.Release|x64.ActiveCfg = Release|x64
{E54CF649-140E-4255-81A5-30A673C1FB36}.Release|x64.Build.0 = Release|x64
{E54CF649-140E-4255-81A5-30A673C1FB36}.Release|x86.ActiveCfg = Release|x64
{54AA7840-5BEB-4A0C-9452-74BA4CC7FD44}.Debug|x64.ActiveCfg = Debug|x64
{54AA7840-5BEB-4A0C-9452-74BA4CC7FD44}.Debug|x64.Build.0 = Debug|x64
{54AA7840-5BEB-4A0C-9452-74BA4CC7FD44}.Debug|x86.ActiveCfg = Debug|x64
{54AA7840-5BEB-4A0C-9452-74BA4CC7FD44}.Release|x64.ActiveCfg = Release|x64
{54AA7840-5BEB-4A0C-9452-74BA4CC7FD44}.Release|x64.Build.0 = Release|x64
{54AA7840-5BEB-4A0C-9452-74BA4CC7FD44}.Release|x86.ActiveCfg = Release|x64
{2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4}.Debug|x64.ActiveCfg = Debug|x64
{2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4}.Debug|x64.Build.0 = Debug|x64
{2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4}.Debug|x86.ActiveCfg = Debug|x64
{2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4}.Release|x64.ActiveCfg = Release|x64
{2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4}.Release|x64.Build.0 = Release|x64
{2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4}.Release|x86.ActiveCfg = Release|x64
{160BDC25-5626-4B0D-BDD8-2953D9777FB5}.Debug|x64.ActiveCfg = Debug|x64
{160BDC25-5626-4B0D-BDD8-2953D9777FB5}.Debug|x64.Build.0 = Debug|x64
{160BDC25-5626-4B0D-BDD8-2953D9777FB5}.Debug|x86.ActiveCfg = Debug|x64
{160BDC25-5626-4B0D-BDD8-2953D9777FB5}.Release|x64.ActiveCfg = Release|x64
{160BDC25-5626-4B0D-BDD8-2953D9777FB5}.Release|x64.Build.0 = Release|x64
{160BDC25-5626-4B0D-BDD8-2953D9777FB5}.Release|x86.ActiveCfg = Release|x64
{6BBD47CF-91FD-4077-B676-8B76980178A9}.Debug|x64.ActiveCfg = Debug|x64
{6BBD47CF-91FD-4077-B676-8B76980178A9}.Debug|x64.Build.0 = Debug|x64
{6BBD47CF-91FD-4077-B676-8B76980178A9}.Debug|x86.ActiveCfg = Debug|x64
{6BBD47CF-91FD-4077-B676-8B76980178A9}.Release|x64.ActiveCfg = Release|x64
{6BBD47CF-91FD-4077-B676-8B76980178A9}.Release|x64.Build.0 = Release|x64
{6BBD47CF-91FD-4077-B676-8B76980178A9}.Release|x86.ActiveCfg = Release|x64
{604C8368-F34A-4D55-82C8-CC92A0C13254}.Debug|x64.ActiveCfg = Debug|x64
{604C8368-F34A-4D55-82C8-CC92A0C13254}.Debug|x64.Build.0 = Debug|x64
{604C8368-F34A-4D55-82C8-CC92A0C13254}.Debug|x86.ActiveCfg = Debug|x64
{604C8368-F34A-4D55-82C8-CC92A0C13254}.Release|x64.ActiveCfg = Release|x64
{604C8368-F34A-4D55-82C8-CC92A0C13254}.Release|x64.Build.0 = Release|x64
{604C8368-F34A-4D55-82C8-CC92A0C13254}.Release|x86.ActiveCfg = Release|x64
{3DE9EE35-3E91-4F27-A014-2866AD8C3FE3}.Debug|x64.ActiveCfg = Debug|x64
{3DE9EE35-3E91-4F27-A014-2866AD8C3FE3}.Debug|x64.Build.0 = Debug|x64
{3DE9EE35-3E91-4F27-A014-2866AD8C3FE3}.Debug|x86.ActiveCfg = Debug|x64
{3DE9EE35-3E91-4F27-A014-2866AD8C3FE3}.Release|x64.ActiveCfg = Release|x64
{3DE9EE35-3E91-4F27-A014-2866AD8C3FE3}.Release|x64.Build.0 = Release|x64
{3DE9EE35-3E91-4F27-A014-2866AD8C3FE3}.Release|x86.ActiveCfg = Release|x64
{8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B}.Debug|x64.ActiveCfg = Debug|x64
{8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B}.Debug|x64.Build.0 = Debug|x64
{8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B}.Debug|x86.ActiveCfg = Debug|x64
{8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B}.Release|x64.ActiveCfg = Release|x64
{8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B}.Release|x64.Build.0 = Release|x64
{8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B}.Release|x86.ActiveCfg = Release|x64
{0E033BE3-2E08-428E-9AE9-BC673EFA12B5}.Debug|x64.ActiveCfg = Debug|x64
{0E033BE3-2E08-428E-9AE9-BC673EFA12B5}.Debug|x64.Build.0 = Debug|x64
{0E033BE3-2E08-428E-9AE9-BC673EFA12B5}.Debug|x86.ActiveCfg = Debug|x64
{0E033BE3-2E08-428E-9AE9-BC673EFA12B5}.Release|x64.ActiveCfg = Release|x64
{0E033BE3-2E08-428E-9AE9-BC673EFA12B5}.Release|x64.Build.0 = Release|x64
{0E033BE3-2E08-428E-9AE9-BC673EFA12B5}.Release|x86.ActiveCfg = Release|x64
{AB993F38-C31D-4897-B139-A620C42BC565}.Debug|x64.ActiveCfg = Debug|x64
{AB993F38-C31D-4897-B139-A620C42BC565}.Debug|x64.Build.0 = Debug|x64
{AB993F38-C31D-4897-B139-A620C42BC565}.Debug|x86.ActiveCfg = Debug|x64
{AB993F38-C31D-4897-B139-A620C42BC565}.Release|x64.ActiveCfg = Release|x64
{AB993F38-C31D-4897-B139-A620C42BC565}.Release|x64.Build.0 = Release|x64
{AB993F38-C31D-4897-B139-A620C42BC565}.Release|x86.ActiveCfg = Release|x64
{31643FDB-1BB8-4965-9DE7-000FC88D35AE}.Debug|x64.ActiveCfg = Debug|x64
{31643FDB-1BB8-4965-9DE7-000FC88D35AE}.Debug|x64.Build.0 = Debug|x64
{31643FDB-1BB8-4965-9DE7-000FC88D35AE}.Debug|x86.ActiveCfg = Debug|x64
{31643FDB-1BB8-4965-9DE7-000FC88D35AE}.Release|x64.ActiveCfg = Release|x64
{31643FDB-1BB8-4965-9DE7-000FC88D35AE}.Release|x64.Build.0 = Release|x64
{31643FDB-1BB8-4965-9DE7-000FC88D35AE}.Release|x86.ActiveCfg = Release|x64
{4C9F135B-A85E-430C-BAD4-4C67EF5FC12C}.Debug|x64.ActiveCfg = Debug|x64
{4C9F135B-A85E-430C-BAD4-4C67EF5FC12C}.Debug|x64.Build.0 = Debug|x64
{4C9F135B-A85E-430C-BAD4-4C67EF5FC12C}.Debug|x86.ActiveCfg = Debug|x64
{4C9F135B-A85E-430C-BAD4-4C67EF5FC12C}.Release|x64.ActiveCfg = Release|x64
{4C9F135B-A85E-430C-BAD4-4C67EF5FC12C}.Release|x64.Build.0 = Release|x64
{4C9F135B-A85E-430C-BAD4-4C67EF5FC12C}.Release|x86.ActiveCfg = Release|x64
{677EA016-1182-440C-9345-DC88D1E98C0C}.Debug|x64.ActiveCfg = Debug|x64
{677EA016-1182-440C-9345-DC88D1E98C0C}.Debug|x64.Build.0 = Debug|x64
{677EA016-1182-440C-9345-DC88D1E98C0C}.Debug|x86.ActiveCfg = Debug|x64
{677EA016-1182-440C-9345-DC88D1E98C0C}.Release|x64.ActiveCfg = Release|x64
{677EA016-1182-440C-9345-DC88D1E98C0C}.Release|x64.Build.0 = Release|x64
{677EA016-1182-440C-9345-DC88D1E98C0C}.Release|x86.ActiveCfg = Release|x64
{FF213B23-2C26-4214-9F88-85271E557E87}.Debug|x64.ActiveCfg = Debug|x64
{FF213B23-2C26-4214-9F88-85271E557E87}.Debug|x64.Build.0 = Debug|x64
{FF213B23-2C26-4214-9F88-85271E557E87}.Debug|x86.ActiveCfg = Debug|x64
{FF213B23-2C26-4214-9F88-85271E557E87}.Release|x64.ActiveCfg = Release|x64
{FF213B23-2C26-4214-9F88-85271E557E87}.Release|x64.Build.0 = Release|x64
{FF213B23-2C26-4214-9F88-85271E557E87}.Release|x86.ActiveCfg = Release|x64
{EC082900-B4D8-42E9-9663-77F02F6936AE}.Debug|x64.ActiveCfg = Debug|x64
{EC082900-B4D8-42E9-9663-77F02F6936AE}.Debug|x64.Build.0 = Debug|x64
{EC082900-B4D8-42E9-9663-77F02F6936AE}.Debug|x86.ActiveCfg = Debug|x64
{EC082900-B4D8-42E9-9663-77F02F6936AE}.Release|x64.ActiveCfg = Release|x64
{EC082900-B4D8-42E9-9663-77F02F6936AE}.Release|x64.Build.0 = Release|x64
{EC082900-B4D8-42E9-9663-77F02F6936AE}.Release|x86.ActiveCfg = Release|x64
{BDB6578B-0691-4E80-A46C-DF21639FD3B8}.Debug|x64.ActiveCfg = Debug|x64
{BDB6578B-0691-4E80-A46C-DF21639FD3B8}.Debug|x64.Build.0 = Debug|x64
{BDB6578B-0691-4E80-A46C-DF21639FD3B8}.Debug|x86.ActiveCfg = Debug|x64
{BDB6578B-0691-4E80-A46C-DF21639FD3B8}.Release|x64.ActiveCfg = Release|x64
{BDB6578B-0691-4E80-A46C-DF21639FD3B8}.Release|x64.Build.0 = Release|x64
{BDB6578B-0691-4E80-A46C-DF21639FD3B8}.Release|x86.ActiveCfg = Release|x64
{41279555-F94F-4EBC-99DE-AF863C10C5C4}.Debug|x64.ActiveCfg = Debug|x64
{41279555-F94F-4EBC-99DE-AF863C10C5C4}.Debug|x64.Build.0 = Debug|x64
{41279555-F94F-4EBC-99DE-AF863C10C5C4}.Debug|x86.ActiveCfg = Debug|x64
{41279555-F94F-4EBC-99DE-AF863C10C5C4}.Release|x64.ActiveCfg = Release|x64
{41279555-F94F-4EBC-99DE-AF863C10C5C4}.Release|x64.Build.0 = Release|x64
{41279555-F94F-4EBC-99DE-AF863C10C5C4}.Release|x86.ActiveCfg = Release|x64
{93D73454-2512-424E-9CDA-4BB357FE13DD}.Debug|x64.ActiveCfg = Debug|x64
{93D73454-2512-424E-9CDA-4BB357FE13DD}.Debug|x64.Build.0 = Debug|x64
{93D73454-2512-424E-9CDA-4BB357FE13DD}.Debug|x86.ActiveCfg = Debug|x64
{93D73454-2512-424E-9CDA-4BB357FE13DD}.Release|x64.ActiveCfg = Release|x64
{93D73454-2512-424E-9CDA-4BB357FE13DD}.Release|x64.Build.0 = Release|x64
{93D73454-2512-424E-9CDA-4BB357FE13DD}.Release|x86.ActiveCfg = Release|x64
{349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|x64.ActiveCfg = Debug|x64
{349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|x64.Build.0 = Debug|x64
{349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Debug|x86.ActiveCfg = Debug|x64
{349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|x64.ActiveCfg = Release|x64
{349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|x64.Build.0 = Release|x64
{349EE8F9-7D25-4909-AAF5-FF3FADE72187}.Release|x86.ActiveCfg = Release|x64
{1970D175-3DE8-4738-942A-4D98D1CDBF64}.Debug|x64.ActiveCfg = Debug|x64
{1970D175-3DE8-4738-942A-4D98D1CDBF64}.Debug|x64.Build.0 = Debug|x64
{1970D175-3DE8-4738-942A-4D98D1CDBF64}.Debug|x86.ActiveCfg = Debug|x64
{1970D175-3DE8-4738-942A-4D98D1CDBF64}.Release|x64.ActiveCfg = Release|x64
{1970D175-3DE8-4738-942A-4D98D1CDBF64}.Release|x64.Build.0 = Release|x64
{1970D175-3DE8-4738-942A-4D98D1CDBF64}.Release|x86.ActiveCfg = Release|x64
{96020103-4BA5-4FD2-B4AA-5B6D24492D4E}.Debug|x64.ActiveCfg = Debug|x64
{96020103-4BA5-4FD2-B4AA-5B6D24492D4E}.Debug|x64.Build.0 = Debug|x64
{96020103-4BA5-4FD2-B4AA-5B6D24492D4E}.Debug|x86.ActiveCfg = Debug|x64
{96020103-4BA5-4FD2-B4AA-5B6D24492D4E}.Release|x64.ActiveCfg = Release|x64
{96020103-4BA5-4FD2-B4AA-5B6D24492D4E}.Release|x64.Build.0 = Release|x64
{96020103-4BA5-4FD2-B4AA-5B6D24492D4E}.Release|x86.ActiveCfg = Release|x64
{EC1A314C-5588-4506-9C1E-2E58E5817F75}.Debug|x64.ActiveCfg = Debug|x64
{EC1A314C-5588-4506-9C1E-2E58E5817F75}.Debug|x64.Build.0 = Debug|x64
{EC1A314C-5588-4506-9C1E-2E58E5817F75}.Debug|x86.ActiveCfg = Debug|x64
{EC1A314C-5588-4506-9C1E-2E58E5817F75}.Release|x64.ActiveCfg = Release|x64
{EC1A314C-5588-4506-9C1E-2E58E5817F75}.Release|x64.Build.0 = Release|x64
{EC1A314C-5588-4506-9C1E-2E58E5817F75}.Release|x86.ActiveCfg = Release|x64
{A4C423AA-F57C-46C7-A172-D1A777017D29}.Debug|x64.ActiveCfg = Debug|x64
{A4C423AA-F57C-46C7-A172-D1A777017D29}.Debug|x64.Build.0 = Debug|x64
{A4C423AA-F57C-46C7-A172-D1A777017D29}.Debug|x86.ActiveCfg = Debug|x64
{A4C423AA-F57C-46C7-A172-D1A777017D29}.Release|x64.ActiveCfg = Release|x64
{A4C423AA-F57C-46C7-A172-D1A777017D29}.Release|x64.Build.0 = Release|x64
{A4C423AA-F57C-46C7-A172-D1A777017D29}.Release|x86.ActiveCfg = Release|x64
{53A5391B-737E-49A8-BC8F-312ADA00736F}.Debug|x64.ActiveCfg = Debug|x64
{53A5391B-737E-49A8-BC8F-312ADA00736F}.Debug|x64.Build.0 = Debug|x64
{53A5391B-737E-49A8-BC8F-312ADA00736F}.Debug|x86.ActiveCfg = Debug|x64
{53A5391B-737E-49A8-BC8F-312ADA00736F}.Release|x64.ActiveCfg = Release|x64
{53A5391B-737E-49A8-BC8F-312ADA00736F}.Release|x64.Build.0 = Release|x64
{53A5391B-737E-49A8-BC8F-312ADA00736F}.Release|x86.ActiveCfg = Release|x64
{29F29A19-F141-45AD-9679-5A2923B49DA3}.Debug|x64.ActiveCfg = Debug|x64
{29F29A19-F141-45AD-9679-5A2923B49DA3}.Debug|x64.Build.0 = Debug|x64
{29F29A19-F141-45AD-9679-5A2923B49DA3}.Debug|x86.ActiveCfg = Debug|x64
{29F29A19-F141-45AD-9679-5A2923B49DA3}.Release|x64.ActiveCfg = Release|x64
{29F29A19-F141-45AD-9679-5A2923B49DA3}.Release|x64.Build.0 = Release|x64
{29F29A19-F141-45AD-9679-5A2923B49DA3}.Release|x86.ActiveCfg = Release|x64
{76563A7F-1011-4EAD-B667-7BB18D09568E}.Debug|x64.ActiveCfg = Debug|x64
{76563A7F-1011-4EAD-B667-7BB18D09568E}.Debug|x64.Build.0 = Debug|x64
{76563A7F-1011-4EAD-B667-7BB18D09568E}.Debug|x86.ActiveCfg = Debug|x64
{76563A7F-1011-4EAD-B667-7BB18D09568E}.Release|x64.ActiveCfg = Release|x64
{76563A7F-1011-4EAD-B667-7BB18D09568E}.Release|x64.Build.0 = Release|x64
{76563A7F-1011-4EAD-B667-7BB18D09568E}.Release|x86.ActiveCfg = Release|x64
{474661E7-C73A-43A6-AFEE-EE1EC433D49E}.Debug|x64.ActiveCfg = Debug|x64
{474661E7-C73A-43A6-AFEE-EE1EC433D49E}.Debug|x64.Build.0 = Debug|x64
{474661E7-C73A-43A6-AFEE-EE1EC433D49E}.Debug|x86.ActiveCfg = Debug|x64
{474661E7-C73A-43A6-AFEE-EE1EC433D49E}.Release|x64.ActiveCfg = Release|x64
{474661E7-C73A-43A6-AFEE-EE1EC433D49E}.Release|x64.Build.0 = Release|x64
{474661E7-C73A-43A6-AFEE-EE1EC433D49E}.Release|x86.ActiveCfg = Release|x64
{CBC76802-C128-4B17-BF6C-23B08C313E5E}.Debug|x64.ActiveCfg = Debug|x64
{CBC76802-C128-4B17-BF6C-23B08C313E5E}.Debug|x64.Build.0 = Debug|x64
{CBC76802-C128-4B17-BF6C-23B08C313E5E}.Debug|x86.ActiveCfg = Debug|x64
{CBC76802-C128-4B17-BF6C-23B08C313E5E}.Release|x64.ActiveCfg = Release|x64
{CBC76802-C128-4B17-BF6C-23B08C313E5E}.Release|x64.Build.0 = Release|x64
{CBC76802-C128-4B17-BF6C-23B08C313E5E}.Release|x86.ActiveCfg = Release|x64
{BB00605C-125F-4A21-B33B-7BF418322DCB}.Debug|x64.ActiveCfg = Debug|x64
{BB00605C-125F-4A21-B33B-7BF418322DCB}.Debug|x64.Build.0 = Debug|x64
{BB00605C-125F-4A21-B33B-7BF418322DCB}.Debug|x86.ActiveCfg = Debug|x64
{BB00605C-125F-4A21-B33B-7BF418322DCB}.Release|x64.ActiveCfg = Release|x64
{BB00605C-125F-4A21-B33B-7BF418322DCB}.Release|x64.Build.0 = Release|x64
{BB00605C-125F-4A21-B33B-7BF418322DCB}.Release|x86.ActiveCfg = Release|x64
{D178061B-84D3-44F9-BEED-EFD18D9033F0}.Debug|x64.ActiveCfg = Debug|x64
{D178061B-84D3-44F9-BEED-EFD18D9033F0}.Debug|x64.Build.0 = Debug|x64
{D178061B-84D3-44F9-BEED-EFD18D9033F0}.Debug|x86.ActiveCfg = Debug|x64
{D178061B-84D3-44F9-BEED-EFD18D9033F0}.Release|x64.ActiveCfg = Release|x64
{D178061B-84D3-44F9-BEED-EFD18D9033F0}.Release|x64.Build.0 = Release|x64
{D178061B-84D3-44F9-BEED-EFD18D9033F0}.Release|x86.ActiveCfg = Release|x64
{C636D9D1-82FE-42B5-9987-63B7D4836341}.Debug|x64.ActiveCfg = Debug|x64
{C636D9D1-82FE-42B5-9987-63B7D4836341}.Debug|x64.Build.0 = Debug|x64
{C636D9D1-82FE-42B5-9987-63B7D4836341}.Debug|x86.ActiveCfg = Debug|x64
{C636D9D1-82FE-42B5-9987-63B7D4836341}.Release|x64.ActiveCfg = Release|x64
{C636D9D1-82FE-42B5-9987-63B7D4836341}.Release|x64.Build.0 = Release|x64
{C636D9D1-82FE-42B5-9987-63B7D4836341}.Release|x86.ActiveCfg = Release|x64
{8EA11166-6512-44FC-B7A5-A4D1ECC81170}.Debug|x64.ActiveCfg = Debug|x64
{8EA11166-6512-44FC-B7A5-A4D1ECC81170}.Debug|x64.Build.0 = Debug|x64
{8EA11166-6512-44FC-B7A5-A4D1ECC81170}.Debug|x86.ActiveCfg = Debug|x64
{8EA11166-6512-44FC-B7A5-A4D1ECC81170}.Release|x64.ActiveCfg = Release|x64
{8EA11166-6512-44FC-B7A5-A4D1ECC81170}.Release|x64.Build.0 = Release|x64
{8EA11166-6512-44FC-B7A5-A4D1ECC81170}.Release|x86.ActiveCfg = Release|x64
{38FEE76F-F347-484B-949C-B4649381CFFB}.Debug|x64.ActiveCfg = Debug|x64
{38FEE76F-F347-484B-949C-B4649381CFFB}.Debug|x64.Build.0 = Debug|x64
{38FEE76F-F347-484B-949C-B4649381CFFB}.Debug|x86.ActiveCfg = Debug|x64
{38FEE76F-F347-484B-949C-B4649381CFFB}.Release|x64.ActiveCfg = Release|x64
{38FEE76F-F347-484B-949C-B4649381CFFB}.Release|x64.Build.0 = Release|x64
{38FEE76F-F347-484B-949C-B4649381CFFB}.Release|x86.ActiveCfg = Release|x64
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18}.Debug|x64.ActiveCfg = Debug|x64
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18}.Debug|x64.Build.0 = Debug|x64
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18}.Debug|x86.ActiveCfg = Debug|x64
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18}.Release|x64.ActiveCfg = Release|x64
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18}.Release|x64.Build.0 = Release|x64
{2C0D058E-DE35-4471-AD99-E68A2CAF9E18}.Release|x86.ActiveCfg = Release|x64
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3}.Debug|x64.ActiveCfg = Debug|x64
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3}.Debug|x64.Build.0 = Debug|x64
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3}.Debug|x86.ActiveCfg = Debug|x64
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3}.Release|x64.ActiveCfg = Release|x64
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3}.Release|x64.Build.0 = Release|x64
{5BDF4B91-1491-4FB0-BC27-78E9A8E97DC3}.Release|x86.ActiveCfg = Release|x64
{E4BECBAB-9C6E-41AB-BB56-F9D70AB6BE03}.Debug|x64.ActiveCfg = Debug|x64
{E4BECBAB-9C6E-41AB-BB56-F9D70AB6BE03}.Debug|x64.Build.0 = Debug|x64
{E4BECBAB-9C6E-41AB-BB56-F9D70AB6BE03}.Debug|x86.ActiveCfg = Debug|x64
{E4BECBAB-9C6E-41AB-BB56-F9D70AB6BE03}.Release|x64.ActiveCfg = Release|x64
{E4BECBAB-9C6E-41AB-BB56-F9D70AB6BE03}.Release|x64.Build.0 = Release|x64
{E4BECBAB-9C6E-41AB-BB56-F9D70AB6BE03}.Release|x86.ActiveCfg = Release|x64
{8498F2FA-5CA6-4169-9971-DE5B1FE6132C}.Debug|x64.ActiveCfg = Debug|x64
{8498F2FA-5CA6-4169-9971-DE5B1FE6132C}.Debug|x64.Build.0 = Debug|x64
{8498F2FA-5CA6-4169-9971-DE5B1FE6132C}.Debug|x86.ActiveCfg = Debug|x64
{8498F2FA-5CA6-4169-9971-DE5B1FE6132C}.Release|x64.ActiveCfg = Release|x64
{8498F2FA-5CA6-4169-9971-DE5B1FE6132C}.Release|x64.Build.0 = Release|x64
{8498F2FA-5CA6-4169-9971-DE5B1FE6132C}.Release|x86.ActiveCfg = Release|x64
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Debug|x64.ActiveCfg = Debug|x64
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Debug|x64.Build.0 = Debug|x64
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Debug|x86.ActiveCfg = Debug|x64
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x64.ActiveCfg = Release|x64
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x64.Build.0 = Release|x64
{4482FD2A-EC43-3FFB-AC20-2E5C54B05EAD}.Release|x86.ActiveCfg = Release|x64
{23114507-079A-4418-9707-CFA81A03CA99}.Debug|x64.ActiveCfg = Debug|x64
{23114507-079A-4418-9707-CFA81A03CA99}.Debug|x64.Build.0 = Debug|x64
{23114507-079A-4418-9707-CFA81A03CA99}.Debug|x86.ActiveCfg = Debug|x64
{23114507-079A-4418-9707-CFA81A03CA99}.Release|x64.ActiveCfg = Release|x64
{23114507-079A-4418-9707-CFA81A03CA99}.Release|x64.Build.0 = Release|x64
{23114507-079A-4418-9707-CFA81A03CA99}.Release|x86.ActiveCfg = Release|x64
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}.Debug|x64.ActiveCfg = Debug|x64
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}.Debug|x64.Build.0 = Debug|x64
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}.Debug|x86.ActiveCfg = Debug|x64
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}.Release|x64.ActiveCfg = Release|x64
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}.Release|x64.Build.0 = Release|x64
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB}.Release|x86.ActiveCfg = Release|x64
{B001D13E-7EAB-4689-842D-801E5ACFFAC5}.Debug|x64.ActiveCfg = Debug|x64
{B001D13E-7EAB-4689-842D-801E5ACFFAC5}.Debug|x64.Build.0 = Debug|x64
{B001D13E-7EAB-4689-842D-801E5ACFFAC5}.Debug|x86.ActiveCfg = Debug|x64
{B001D13E-7EAB-4689-842D-801E5ACFFAC5}.Release|x64.ActiveCfg = Release|x64
{B001D13E-7EAB-4689-842D-801E5ACFFAC5}.Release|x64.Build.0 = Release|x64
{B001D13E-7EAB-4689-842D-801E5ACFFAC5}.Release|x86.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -307,4 +395,7 @@ Global
{23114507-079A-4418-9707-CFA81A03CA99} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
{4C3B2264-EA73-4A7B-9CFE-65B0FD635EBB} = {87ADDFF9-5768-4DA2-A33B-2477593D6677}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {710976F2-1BC7-4F2A-B32D-5DD2BBCB44E1}
EndGlobalSection
EndGlobal