From 574c27b1b28f9e3b4db4e9e07c9a73e564a2561a Mon Sep 17 00:00:00 2001 From: PKEuS Date: Sat, 4 Jan 2014 10:55:27 +0100 Subject: [PATCH] Removed VS9 solution --- cli/cppcheck.vcproj | 314 ------------------------------ cppcheck.sln | 89 ++++++--- cppcheck_vs2010.sln | 80 -------- readme_64-bit_Windows.txt | 45 +---- test/testrunner.vcproj | 395 -------------------------------------- 5 files changed, 77 insertions(+), 846 deletions(-) delete mode 100755 cli/cppcheck.vcproj delete mode 100644 cppcheck_vs2010.sln delete mode 100644 test/testrunner.vcproj diff --git a/cli/cppcheck.vcproj b/cli/cppcheck.vcproj deleted file mode 100755 index 76d77b727..000000000 --- a/cli/cppcheck.vcproj +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cppcheck.sln b/cppcheck.sln index 3b5ac7bf7..b7f66a846 100644 --- a/cppcheck.sln +++ b/cppcheck.sln @@ -1,33 +1,78 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cppcheck", "cli\cppcheck.vcproj", "{230A4467-25A6-3276-A1D0-CB521812CD43}" + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cli", "cli\cli.vcxproj", "{35CBDF51-2456-3EC3-99ED-113C30858883}" + ProjectSection(ProjectDependencies) = postProject + {C183DB5B-AD6C-423D-80CA-1F9549555A1A} = {C183DB5B-AD6C-423D-80CA-1F9549555A1A} + EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrunner", "test\testrunner.vcproj", "{A1772A4C-E3F0-33FC-9A59-2189857FB799}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrunner", "test\testrunner.vcxproj", "{4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}" + ProjectSection(ProjectDependencies) = postProject + {C183DB5B-AD6C-423D-80CA-1F9549555A1A} = {C183DB5B-AD6C-423D-80CA-1F9549555A1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cppcheck", "lib\cppcheck.vcxproj", "{C183DB5B-AD6C-423D-80CA-1F9549555A1A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 - Debug-x64|Win32 = Debug-x64|Win32 + Debug|x64 = Debug|x64 + Debug-PCRE|Win32 = Debug-PCRE|Win32 + Debug-PCRE|x64 = Debug-PCRE|x64 Release|Win32 = Release|Win32 - Release-x64|Win32 = Release-x64|Win32 + Release|x64 = Release|x64 + Release-PCRE|Win32 = Release-PCRE|Win32 + Release-PCRE|x64 = Release-PCRE|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {230A4467-25A6-3276-A1D0-CB521812CD43}.Debug|Win32.ActiveCfg = Debug|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Debug|Win32.Build.0 = Debug|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Debug-x64|Win32.ActiveCfg = Debug-x64|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Debug-x64|Win32.Build.0 = Debug-x64|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Release|Win32.ActiveCfg = Release|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Release|Win32.Build.0 = Release|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Release-x64|Win32.ActiveCfg = Release-x64|Win32 - {230A4467-25A6-3276-A1D0-CB521812CD43}.Release-x64|Win32.Build.0 = Release-x64|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Debug|Win32.ActiveCfg = Debug|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Debug|Win32.Build.0 = Debug|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Debug-x64|Win32.ActiveCfg = Debug-x64|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Debug-x64|Win32.Build.0 = Debug-x64|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Release|Win32.ActiveCfg = Release|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Release|Win32.Build.0 = Release|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Release-x64|Win32.ActiveCfg = Release-x64|Win32 - {A1772A4C-E3F0-33FC-9A59-2189857FB799}.Release-x64|Win32.Build.0 = Release-x64|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|Win32.ActiveCfg = Debug|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|Win32.Build.0 = Debug|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|x64.ActiveCfg = Debug|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|x64.Build.0 = Debug|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|Win32.ActiveCfg = Debug-PCRE|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|Win32.Build.0 = Debug-PCRE|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|x64.ActiveCfg = Debug-PCRE|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|x64.Build.0 = Debug-PCRE|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|Win32.ActiveCfg = Release|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|Win32.Build.0 = Release|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|x64.ActiveCfg = Release|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|x64.Build.0 = Release|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|Win32.ActiveCfg = Release-PCRE|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|Win32.Build.0 = Release-PCRE|Win32 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|x64.ActiveCfg = Release-PCRE|x64 + {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|x64.Build.0 = Release-PCRE|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|Win32.Build.0 = Debug|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|x64.ActiveCfg = Debug|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|x64.Build.0 = Debug|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|Win32.ActiveCfg = Debug|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|Win32.Build.0 = Debug|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|x64.ActiveCfg = Debug|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|x64.Build.0 = Debug|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|Win32.ActiveCfg = Release|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|Win32.Build.0 = Release|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|x64.ActiveCfg = Release|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|x64.Build.0 = Release|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|Win32.ActiveCfg = Release|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|Win32.Build.0 = Release|Win32 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|x64.ActiveCfg = Release|x64 + {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|x64.Build.0 = Release|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|Win32.Build.0 = Debug|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|x64.ActiveCfg = Debug|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|x64.Build.0 = Debug|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|Win32.ActiveCfg = Debug-PCRE|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|Win32.Build.0 = Debug-PCRE|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|x64.ActiveCfg = Debug-PCRE|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|x64.Build.0 = Debug-PCRE|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|Win32.ActiveCfg = Release|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|Win32.Build.0 = Release|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|x64.ActiveCfg = Release|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|x64.Build.0 = Release|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|Win32.ActiveCfg = Release-PCRE|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|Win32.Build.0 = Release-PCRE|Win32 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|x64.ActiveCfg = Release-PCRE|x64 + {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|x64.Build.0 = Release-PCRE|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/cppcheck_vs2010.sln b/cppcheck_vs2010.sln deleted file mode 100644 index 7b23060dd..000000000 --- a/cppcheck_vs2010.sln +++ /dev/null @@ -1,80 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual C++ Express 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cli", "cli\cli.vcxproj", "{35CBDF51-2456-3EC3-99ED-113C30858883}" - ProjectSection(ProjectDependencies) = postProject - {C183DB5B-AD6C-423D-80CA-1F9549555A1A} = {C183DB5B-AD6C-423D-80CA-1F9549555A1A} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrunner", "test\testrunner.vcxproj", "{4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}" - ProjectSection(ProjectDependencies) = postProject - {C183DB5B-AD6C-423D-80CA-1F9549555A1A} = {C183DB5B-AD6C-423D-80CA-1F9549555A1A} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cppcheck", "lib\cppcheck.vcxproj", "{C183DB5B-AD6C-423D-80CA-1F9549555A1A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Debug-PCRE|Win32 = Debug-PCRE|Win32 - Debug-PCRE|x64 = Debug-PCRE|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - Release-PCRE|Win32 = Release-PCRE|Win32 - Release-PCRE|x64 = Release-PCRE|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|Win32.ActiveCfg = Debug|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|Win32.Build.0 = Debug|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|x64.ActiveCfg = Debug|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug|x64.Build.0 = Debug|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|Win32.ActiveCfg = Debug-PCRE|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|Win32.Build.0 = Debug-PCRE|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|x64.ActiveCfg = Debug-PCRE|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Debug-PCRE|x64.Build.0 = Debug-PCRE|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|Win32.ActiveCfg = Release|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|Win32.Build.0 = Release|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|x64.ActiveCfg = Release|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release|x64.Build.0 = Release|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|Win32.ActiveCfg = Release-PCRE|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|Win32.Build.0 = Release-PCRE|Win32 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|x64.ActiveCfg = Release-PCRE|x64 - {35CBDF51-2456-3EC3-99ED-113C30858883}.Release-PCRE|x64.Build.0 = Release-PCRE|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|Win32.ActiveCfg = Debug|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|Win32.Build.0 = Debug|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|x64.ActiveCfg = Debug|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug|x64.Build.0 = Debug|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|Win32.ActiveCfg = Debug|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|Win32.Build.0 = Debug|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|x64.ActiveCfg = Debug|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Debug-PCRE|x64.Build.0 = Debug|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|Win32.ActiveCfg = Release|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|Win32.Build.0 = Release|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|x64.ActiveCfg = Release|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release|x64.Build.0 = Release|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|Win32.ActiveCfg = Release|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|Win32.Build.0 = Release|Win32 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|x64.ActiveCfg = Release|x64 - {4F7DCE5E-6CDE-38C4-9EA7-27AF3B25CEB4}.Release-PCRE|x64.Build.0 = Release|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|Win32.Build.0 = Debug|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|x64.ActiveCfg = Debug|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug|x64.Build.0 = Debug|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|Win32.ActiveCfg = Debug-PCRE|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|Win32.Build.0 = Debug-PCRE|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|x64.ActiveCfg = Debug-PCRE|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Debug-PCRE|x64.Build.0 = Debug-PCRE|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|Win32.ActiveCfg = Release|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|Win32.Build.0 = Release|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|x64.ActiveCfg = Release|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release|x64.Build.0 = Release|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|Win32.ActiveCfg = Release-PCRE|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|Win32.Build.0 = Release-PCRE|Win32 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|x64.ActiveCfg = Release-PCRE|x64 - {C183DB5B-AD6C-423D-80CA-1F9549555A1A}.Release-PCRE|x64.Build.0 = Release-PCRE|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/readme_64-bit_Windows.txt b/readme_64-bit_Windows.txt index 80f3da941..fdb707782 100644 --- a/readme_64-bit_Windows.txt +++ b/readme_64-bit_Windows.txt @@ -2,56 +2,31 @@ Cppcheck for 64-bit Windows =========================== This is quick start to get you started with compiling Cppcheck for 64-bit -Windows with free VS Express editions. This is work in progress so these -instructions will be updated as we progress with the work... +Windows with free VS Express editions. Software needed: -- Visual Studio 2008 or 2010 Express edition -- Windows SDK 7.0 (for VS2008) or Windows SDK 7.1 (for VS2010) +- Visual Studio 2010 (or later) Express edition +- Only for VS2010: Windows SDK 7.1 -Cppcheck.exe ------------- +LIB, CLI and testsuite +---------------------- -Visual Studio 2010: -Just open cppcheck_vs2010.sln, choose "x64" as platform and compile. - -Visual Studio 2008: -Make sure you have the Windows SDK installed! VS Express doesn't have 64-bit -tools, libraries or headers so you cannot compile 64-bit binaries without -Windows SDK. - -To compile 64-bit binaries you need to start VS Express to 64-bit environment. -(by default VS Express starts to 32-bit environment). To do this, open Windows -SDK Command Prompt and switch to 64-bit environment with command: -> setenv /x64 /debug - -Then start VS Express: -> "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\VCExpress" /useenv - -VS Express starts otherwise normally but now all environment variables point to -64-bit folders for libraries. - -Now you can open the cppcheck.sln solution file and compile 64-bit targets. -With VS 2008 there are configurations Debug-x64 and Release-x64 for 64-bit targets. -This is because VS 2008 express does not allow adding new platform. - -You can use e.g. Dependency Walker -program (http://www.dependencywalker.com/) -to check that build binaries are really 64-bit binaries. +Visual Studio 2010 and later: +Just open cppcheck.sln, choose "x64" as platform and compile. GUI --- Software needed: -- Visual Studio 2008 or 2010 Express edition -- Windows SDK 7.0 (for VS2008) or Windows SDK 7.1 (for VS2010) +- Visual Studio 2010 Express edition +- Windows SDK 7.1 (containing x64 compiler) - latest Qt SDK (4.7.0 or later, earlier versions don't support VS 2010) Turns out you just need to use Windows SDK's Command prompt and 64-bit environment to configure and build Qt. No extra steps needed. But of course you should build 64-bit Qt to different folder than 32-bit Qt. -Compiling 64-bit GUI works fine from Windows SDK Console. But seems there is no -easy way to make it work with VS 2008 Express IDE. With VS2010 Express IDE +Compiling 64-bit GUI works fine from Windows SDK Console. With VS2010 Express IDE everything works fine after adding new x64 platform for the project. diff --git a/test/testrunner.vcproj b/test/testrunner.vcproj deleted file mode 100644 index 871415b92..000000000 --- a/test/testrunner.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file