From 68a1eb994168b4e9b9a19e3b44d27ec0e13bd8ca Mon Sep 17 00:00:00 2001 From: Michal Buzik Date: Wed, 6 May 2026 10:24:33 +0200 Subject: [PATCH 01/16] Update project references and paths to replace project dependencies with direct DLL references. Standardize formatting in `GenesisImplHeadTestCtrl` and refine `Operations` enum declarations. --- .../GenesisCordonelInterface.csproj | 126 +- TBF.sln | 5735 ++++++++++- .../communication/OptoHeadTest.cs | 29 +- .../communication/RadioService.cs | 163 +- .../GenesisImplHeadTestCtrl.cs | 65 +- TBF/TBF.csproj | 8963 ++++++++--------- 6 files changed, 10288 insertions(+), 4793 deletions(-) diff --git a/GenesisCordonelInterface/GenesisCordonelInterface.csproj b/GenesisCordonelInterface/GenesisCordonelInterface.csproj index 5602bc870..6f8dfb62d 100644 --- a/GenesisCordonelInterface/GenesisCordonelInterface.csproj +++ b/GenesisCordonelInterface/GenesisCordonelInterface.csproj @@ -1,4 +1,4 @@ - + @@ -35,6 +35,12 @@ 4 + + ..\packages\Common\Common.dll + + + ..\packages\Common\Logic.ProductionToProductMapper.dll + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll @@ -54,6 +60,60 @@ + + ..\packages\Common\Xylem.Common.CommonCore.dll + + + ..\packages\Common\Xylem.Common.CommonCore.Configuration.dll + + + ..\packages\Common\Xylem.Common.CommonCore.ThreadWatcher.dll + + + ..\packages\Common\Xylem.Common.Hardware.Interfaces.Ports.PortCore.dll + + + ..\packages\Common\Xylem.Common.Hardware.Interfaces.Ports.SerialPorts.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.Applications.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.Registers.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.MagFlux.Protocols.RequestProtocol.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.WaterMeterCore.dll + + + ..\packages\Common\Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.dll + + + ..\packages\Common\Xylem.Common.Logic.ProductionOrderCore.dll + + + ..\packages\Common\Xylem.Common.Logic.SoftwareAccessHelper.dll + + + ..\packages\Common\Xylem.Common.Utils.ByteArrayStyle.dll + + + ..\packages\Common\Xylem.Common.Utils.Crc16Ccitt.dll + + + ..\packages\Common\Xylem.Common.Utils.Logging.dll + + + ..\packages\Common\Xylem.Common.Utils.ProcessExec.dll + @@ -189,74 +249,14 @@ - - {c8939821-ba5c-4988-a3d0-bf53b74865c7} - Common - - - {9eb1f659-6f73-4f65-bcab-4114fd94f5fc} - CommonCore.Configuration - - - {1b02c79e-0b19-43e2-8f6b-71ef0c786c97} - CommonCore - - {d0c8d887-ed52-40ab-a069-90bce0e801e2} + {D0C8D887-ED52-40AB-A069-90BCE0E801E2} CordonelPreadjustmentUi - - {2e139f63-b6fe-4ea9-a098-85364fe9b26c} - PortCore - - - {72037e89-4f63-4b3f-beff-4138e578ce99} - SerialPorts - - - {315e94b8-b82f-4b25-b5bd-297df3bc1d54} - Applications - - - {f013a56b-7be6-4852-9cd8-b971cd1add0c} - GenesisConfig - - - {04201e95-90a0-4b73-a72f-379739b2a3ae} - GenesisCore - - - {f4aaf7e6-7333-4284-b735-e32deb076c64} - Registers - - - {8203abb8-38e5-472e-a742-33f38b7a74a6} - WaterMeterCore - - - {26afcf1e-1287-48b8-a506-32b1e8a0dd0e} - WaterMeterRegisters - - - {d0c859d9-d55e-4e85-ac50-0ff31b1ce50d} - Logic.ProductionToProductMapper - - - {6d2777bb-7a88-466d-a49b-3266f9bf0160} - ProductionOrderCore - - - {a33e3c6d-eaae-4a20-a0ee-f9e6922fd029} - SoftwareAccessHelper - - {95a50087-99ee-4349-9a17-c547290db42f} + {95A50087-99EE-4349-9A17-C547290DB42F} GenesisToolBox - - {4b88b0d3-e791-4774-9521-eabeacdc420e} - Logging - diff --git a/TBF.sln b/TBF.sln index 68a640124..f94f8b782 100644 --- a/TBF.sln +++ b/TBF.sln @@ -111,7 +111,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppDiagnostic", "AppDiagnos {8F942729-F454-4C99-BA6C-746962065AE3} = {8F942729-F454-4C99-BA6C-746962065AE3} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedComponents", "SharedComponents\SharedComponents.csproj", "{8F942729-F454-4C99-BA6C-746962065AE3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedComponents", "SharedComponents\SharedComponents.csproj", "{8F942729-F454-4C99-BA6C-746962065AE3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sensus.iPerl.RfidCom", "..\iPerlHead\Sensus.iPerl.RfidCom\Sensus.iPerl.RfidCom.csproj", "{A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}" EndProject @@ -119,16 +119,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sensus.iPerl.TestConsole", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NfcS5_DLL", "..\NfcS5_DLL\NfcS5_DLL.csproj", "{5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NfcC7_DLL", "NfcC7_DLL\NfcC7_DLL.csproj", "{53E75979-B530-4805-8FC9-B314F14A62BE}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NfcC7_DLL", "NfcC7_DLL\NfcC7_DLL.csproj", "{53E75979-B530-4805-8FC9-B314F14A62BE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NfcC7_DLL.Tests", "NfcC7_DLL.Tests\NfcC7_DLL.Tests.csproj", "{715605C5-568B-48D6-9C09-2DC5F2E81F66}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NfcC7_DLL.Tests", "NfcC7_DLL.Tests\NfcC7_DLL.Tests.csproj", "{715605C5-568B-48D6-9C09-2DC5F2E81F66}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisCordonelInterface", "GenesisCordonelInterface\GenesisCordonelInterface.csproj", "{C955D8AC-76B8-42D8-A83F-8AEB56CF2567}" ProjectSection(ProjectDependencies) = postProject {04201E95-90A0-4B73-A72F-379739B2A3AE} = {04201E95-90A0-4B73-A72F-379739B2A3AE} {1B02C79E-0B19-43E2-8F6B-71EF0C786C97} = {1B02C79E-0B19-43E2-8F6B-71EF0C786C97} {2E139F63-B6FE-4EA9-A098-85364FE9B26C} = {2E139F63-B6FE-4EA9-A098-85364FE9B26C} - {315E94B8-B82F-4B25-B5BD-297DF3BC1D54} = {315E94B8-B82F-4B25-B5BD-297DF3BC1D54} {6D2777BB-7A88-466D-A49B-3266F9BF0160} = {6D2777BB-7A88-466D-A49B-3266F9BF0160} {8203ABB8-38E5-472E-A742-33F38B7A74A6} = {8203ABB8-38E5-472E-A742-33F38B7A74A6} {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC} = {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC} @@ -137,722 +136,6092 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisCordonelInterface", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Laatzen", "Laatzen", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\GenesisCore\GenesisCore.csproj", "{04201E95-90A0-4B73-A72F-379739B2A3AE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\Interfaces\Ports\PortCore\PortCore.csproj", "{2E139F63-B6FE-4EA9-A098-85364FE9B26C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisToolBox", "ExternalProjects\Laatzen\Genesis\Common\Ui\GenesisToolBox\GenesisToolBox.csproj", "{95A50087-99EE-4349-9A17-C547290DB42F}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Applications", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\Applications\Applications.csproj", "{315E94B8-B82F-4B25-B5BD-297DF3BC1D54}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Registers", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\Registers\Registers.csproj", "{F4AAF7E6-7333-4284-B735-E32DEB076C64}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionOrderCore", "ExternalProjects\Laatzen\Genesis\Common\Logic\ProductionOrderCore\ProductionOrderCore.csproj", "{6D2777BB-7A88-466D-A49B-3266F9BF0160}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonCore", "ExternalProjects\Laatzen\Genesis\Common\CommonCore\CommonCore.csproj", "{1B02C79E-0B19-43E2-8F6B-71EF0C786C97}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonCore.Configuration", "ExternalProjects\Laatzen\Genesis\Common\CommonCore.Configuration\CommonCore.Configuration.csproj", "{9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logging", "ExternalProjects\Laatzen\Genesis\Common\Utils\Logging\Logging.csproj", "{4B88B0D3-E791-4774-9521-EABEACDC420E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WaterMeterCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\WaterMeterCore\WaterMeterCore.csproj", "{8203ABB8-38E5-472E-A742-33F38B7A74A6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SerialPorts", "ExternalProjects\Laatzen\Genesis\Common\Hardware\Interfaces\Ports\SerialPorts\SerialPorts.csproj", "{72037E89-4F63-4B3F-BEFF-4138E578CE99}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WaterMeterRegisters", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\WaterMeterCore\WaterMeterRegisters\WaterMeterRegisters.csproj", "{26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisConfig", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\GenesisConfig\GenesisConfig.csproj", "{F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftwareAccessHelper", "ExternalProjects\Laatzen\Genesis\Common\SoftwareAccessHelper\SoftwareAccessHelper.csproj", "{A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\GenesisCore\GenesisCore.csproj", "{04201E95-90A0-4B73-A72F-379739B2A3AE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SerialPorts", "ExternalProjects\Laatzen\Genesis\Common\Hardware\Interfaces\Ports\SerialPorts\SerialPorts.csproj", "{72037E89-4F63-4B3F-BEFF-4138E578CE99}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonCore.Configuration", "ExternalProjects\Laatzen\Genesis\Common\CommonCore.Configuration\CommonCore.Configuration.csproj", "{9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\Interfaces\Ports\PortCore\PortCore.csproj", "{2E139F63-B6FE-4EA9-A098-85364FE9B26C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logging", "ExternalProjects\Laatzen\Genesis\Common\Utils\Logging\Logging.csproj", "{4B88B0D3-E791-4774-9521-EABEACDC420E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommonCore", "ExternalProjects\Laatzen\Genesis\Common\CommonCore\CommonCore.csproj", "{1B02C79E-0B19-43E2-8F6B-71EF0C786C97}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Logic.ProductionToProductMapper", "ExternalProjects\Laatzen\Genesis\Common\Logic.PrdoctionToProductMapper\Logic.ProductionToProductMapper.csproj", "{D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionOrderCore", "ExternalProjects\Laatzen\Genesis\Common\Logic\ProductionOrderCore\ProductionOrderCore.csproj", "{6D2777BB-7A88-466D-A49B-3266F9BF0160}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Registers", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\Registers\Registers.csproj", "{F4AAF7E6-7333-4284-B735-E32DEB076C64}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RequestProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\Protocols\RequestProtocol\RequestProtocol.csproj", "{D32ED790-7E1E-435B-8619-9F906C992066}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WaterMeterRegisters", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\WaterMeterCore\WaterMeterRegisters\WaterMeterRegisters.csproj", "{26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WaterMeterCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\WaterMeterCore\WaterMeterCore.csproj", "{8203ABB8-38E5-472E-A742-33F38B7A74A6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Measurements", "ExternalProjects\Laatzen\Genesis\Common\Metrology\Measurements\Measurements.csproj", "{6CCDB656-C676-4360-BABA-C4596AAD175D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProcessExec", "ExternalProjects\Laatzen\Genesis\Common\Utils\ProcessExec\ProcessExec.csproj", "{2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftwareAccessHelper", "ExternalProjects\Laatzen\Genesis\Common\SoftwareAccessHelper\SoftwareAccessHelper.csproj", "{A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CordonelPreadjustmentUi", "ExternalProjects\Laatzen\Genesis\Common\CordonelPreadjustmentUi\CordonelPreadjustmentUi.csproj", "{D0C8D887-ED52-40AB-A069-90BCE0E801E2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisToolBox", "ExternalProjects\Laatzen\Genesis\Common\Ui\GenesisToolBox\GenesisToolBox.csproj", "{95A50087-99EE-4349-9A17-C547290DB42F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataPackages", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\DataPackages\DataPackages.csproj", "{0E524D43-7B66-45CD-AA74-41D51AFC3D99}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtocolCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\Interfaces\Protocols\ProtocolCore\ProtocolCore.csproj", "{8BDD2789-96D4-43EA-AAD7-0F49D0347998}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TransmitProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\Interfaces\Protocols\TransmitProtocol\TransmitProtocol.csproj", "{63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crc16Ccitt", "ExternalProjects\Laatzen\Genesis\Common\Utils\Crc16Ccitt\Crc16Ccitt.csproj", "{91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreadWatcher", "ExternalProjects\Laatzen\Genesis\Common\CommonCore\ThreadWatcher\ThreadWatcher.csproj", "{94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceCore", "ExternalProjects\Laatzen\Genesis\Common\Logic\ServiceCore\ServiceCore.csproj", "{F7E3DF42-4D35-4A0C-9182-90438F9956E1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ByteArrayStyle", "ExternalProjects\Laatzen\Genesis\Common\Utils\ByteArrayStyle\ByteArrayStyle.csproj", "{8A619CD5-6C8D-420C-A132-7946C6F13E6E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelatePcb", "ExternalProjects\Laatzen\Genesis\Common\Logic\RelatePcb\RelatePcb.csproj", "{F581264D-3C20-4E4F-9E74-2606869AAAB7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisPwd", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\GenesisPwd\GenesisPwd.csproj", "{AC434B18-4D7B-49BA-9AD5-0527C79E8297}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\Protocols\StreamingProtocol\StreamingProtocol.csproj", "{29617814-313E-409E-AA5D-59C78A9D4DF1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenesisFile", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\Genesis\GenesisFile\GenesisFile.csproj", "{2C6378C6-6BA1-4CEE-8992-8404D8369A90}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TempFlansh", "ExternalProjects\Laatzen\Genesis\Common\TempFlansh\TempFlansh.csproj", "{62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LegacyGenCtl", "ExternalProjects\Laatzen\Genesis\Common\Ui\LegacyGenesisControl\LegacyGenCtl.csproj", "{60765BF4-6165-4F2F-8756-1C699826265D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eRegisterCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\eRegister\eRegisterCore\eRegisterCore.csproj", "{A83696BF-D8A2-4809-8424-CFE172AED5B6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataPackages", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\eRegister\DataPackages\DataPackages.csproj", "{C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\eRegister\Protocols\StreamingProtocol.csproj", "{B6A19B80-0F0F-434C-A754-A7712FC208B2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\MagFluxCore\MagFluxCore.csproj", "{B5DA260C-71CC-45CA-B79E-D1B376AF718C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataPackages", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\DataPackages\DataPackages.csproj", "{BA17D20E-0CEB-4B27-9772-2392BD750ED5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\Protocols\StreamingProtocol\StreamingProtocol.csproj", "{D6B81C60-2763-4C4D-989F-90822F53B01A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RequestProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\Protocols\RequestProtocol\RequestProtocol.csproj", "{00748F11-4B49-4D8B-93C4-4A11A210CCE2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tools.JsonToXlsHelper", "ExternalProjects\Laatzen\Genesis\Common\Tools\Tools.JsonToXlsHelper\Tools.JsonToXlsHelper.csproj", "{20F137FD-C25E-42B7-A68F-58C746475897}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxConfig", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\MagFluxConfig\MagFluxConfig.csproj", "{70398B99-B134-4BBD-968B-7399B70C3CE2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + _MANUAL_CONTROL|Any CPU = _MANUAL_CONTROL|Any CPU + _MANUAL_CONTROL|Mixed Platforms = _MANUAL_CONTROL|Mixed Platforms + _MANUAL_CONTROL|x64 = _MANUAL_CONTROL|x64 + _MANUAL_CONTROL|x86 = _MANUAL_CONTROL|x86 + COM|Any CPU = COM|Any CPU + COM|Mixed Platforms = COM|Mixed Platforms + COM|x64 = COM|x64 + COM|x86 = COM|x86 Debug|Any CPU = Debug|Any CPU Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Debug-local IIS-CUST|Any CPU = Debug-local IIS-CUST|Any CPU + Debug-local IIS-CUST|Mixed Platforms = Debug-local IIS-CUST|Mixed Platforms + Debug-local IIS-CUST|x64 = Debug-local IIS-CUST|x64 + Debug-local IIS-CUST|x86 = Debug-local IIS-CUST|x86 + PerformTest|Any CPU = PerformTest|Any CPU + PerformTest|Mixed Platforms = PerformTest|Mixed Platforms + PerformTest|x64 = PerformTest|x64 + PerformTest|x86 = PerformTest|x86 Release|Any CPU = Release|Any CPU Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 Release|x86 = Release|x86 + ReleaseTest|Any CPU = ReleaseTest|Any CPU + ReleaseTest|Mixed Platforms = ReleaseTest|Mixed Platforms + ReleaseTest|x64 = ReleaseTest|x64 + ReleaseTest|x86 = ReleaseTest|x86 + VPN_Debug|Any CPU = VPN_Debug|Any CPU + VPN_Debug|Mixed Platforms = VPN_Debug|Mixed Platforms + VPN_Debug|x64 = VPN_Debug|x64 + VPN_Debug|x86 = VPN_Debug|x86 + XP32bit|Any CPU = XP32bit|Any CPU + XP32bit|Mixed Platforms = XP32bit|Mixed Platforms + XP32bit|x64 = XP32bit|x64 + XP32bit|x86 = XP32bit|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|Any CPU.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|Any CPU.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|Mixed Platforms.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|x64.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|x64.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|x86.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.COM|x86.Build.0 = Release|x86 {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|Any CPU.Build.0 = Debug|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|x64.ActiveCfg = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|x64.Build.0 = Debug|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|x86.ActiveCfg = Debug|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug|x86.Build.0 = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|x64.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|x64.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|x86.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.PerformTest|x86.Build.0 = Release|x86 {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|Any CPU.ActiveCfg = Release|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|Any CPU.Build.0 = Release|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|Mixed Platforms.ActiveCfg = Release|x86 {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|Mixed Platforms.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|x64.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|x64.Build.0 = Release|Any CPU {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|x86.ActiveCfg = Release|x86 {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.Release|x86.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|x64.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|x86.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.ReleaseTest|x86.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.VPN_Debug|x86.Build.0 = Debug|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|x64.ActiveCfg = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|x64.Build.0 = Release|Any CPU + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|x86.ActiveCfg = Release|x86 + {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}.XP32bit|x86.Build.0 = Release|x86 + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|Any CPU.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|Any CPU.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|x64.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|x64.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|x86.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.COM|x86.Build.0 = Release|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Any CPU.Build.0 = Debug|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|x64.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|x64.Build.0 = Debug|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug|x86.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|x64.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|x64.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|x86.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.PerformTest|x86.Build.0 = Release|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|Any CPU.ActiveCfg = Release|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|Any CPU.Build.0 = Release|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|x64.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|x64.Build.0 = Release|Any CPU {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.Release|x86.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|x64.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.ReleaseTest|x86.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|x64.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|x64.Build.0 = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|x86.ActiveCfg = Release|Any CPU + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}.XP32bit|x86.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|Any CPU.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|Any CPU.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|x64.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|x64.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|x86.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.COM|x86.Build.0 = Release|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|Any CPU.Build.0 = Debug|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|x64.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|x64.Build.0 = Debug|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug|x86.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|x64.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|x64.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|x86.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.PerformTest|x86.Build.0 = Release|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|Any CPU.ActiveCfg = Release|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|Any CPU.Build.0 = Release|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|x64.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|x64.Build.0 = Release|Any CPU {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.Release|x86.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|x64.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.ReleaseTest|x86.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|x64.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|x64.Build.0 = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|x86.ActiveCfg = Release|Any CPU + {743DF7DB-C7B6-42EB-986D-0F485E5588E4}.XP32bit|x86.Build.0 = Release|Any CPU + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|Any CPU.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|Any CPU.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|Mixed Platforms.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|x64.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|x64.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|x86.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.COM|x86.Build.0 = Release|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|Any CPU.ActiveCfg = Debug|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|x64.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|x64.Build.0 = Debug|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|x86.ActiveCfg = Debug|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug|x86.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|Any CPU.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|x64.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|x64.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|x86.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.PerformTest|x86.Build.0 = Release|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|Any CPU.ActiveCfg = Release|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|Mixed Platforms.ActiveCfg = Release|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|Mixed Platforms.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|x64.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|x64.Build.0 = Release|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|x86.ActiveCfg = Release|x86 {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.Release|x86.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|x64.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|x64.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|x86.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.ReleaseTest|x86.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|x64.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.VPN_Debug|x86.Build.0 = Debug|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|Any CPU.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|x64.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|x64.Build.0 = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|x86.ActiveCfg = Release|x86 + {07BA543A-54CA-4A59-9AD9-DDE7038E1BF9}.XP32bit|x86.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|Any CPU.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|Any CPU.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|Mixed Platforms.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|x64.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|x64.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|x86.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.COM|x86.Build.0 = Release|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|Any CPU.ActiveCfg = Debug|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|x64.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|x64.Build.0 = Debug|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|x86.ActiveCfg = Debug|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug|x86.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|Any CPU.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|x64.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|x64.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|x86.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.PerformTest|x86.Build.0 = Release|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|Any CPU.ActiveCfg = Release|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|Mixed Platforms.ActiveCfg = Release|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|Mixed Platforms.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|x64.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|x64.Build.0 = Release|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|x86.ActiveCfg = Release|x86 {6D3384DC-4638-4A92-91A8-F39D900377C6}.Release|x86.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|x64.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|x64.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|x86.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.ReleaseTest|x86.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|x64.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.VPN_Debug|x86.Build.0 = Debug|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|Any CPU.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|x64.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|x64.Build.0 = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|x86.ActiveCfg = Release|x86 + {6D3384DC-4638-4A92-91A8-F39D900377C6}.XP32bit|x86.Build.0 = Release|x86 + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|Any CPU.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|Any CPU.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|x64.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|x64.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|x86.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.COM|x86.Build.0 = Release|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|Any CPU.Build.0 = Debug|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|x64.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|x64.Build.0 = Debug|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Debug|x86.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|x64.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|x64.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|x86.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.PerformTest|x86.Build.0 = Release|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Release|Any CPU.ActiveCfg = Release|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Release|Any CPU.Build.0 = Release|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Release|x64.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.Release|x64.Build.0 = Release|Any CPU {439D0878-C76E-452B-B17D-209A89E91D36}.Release|x86.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|x64.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.ReleaseTest|x86.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|x64.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|x64.Build.0 = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|x86.ActiveCfg = Release|Any CPU + {439D0878-C76E-452B-B17D-209A89E91D36}.XP32bit|x86.Build.0 = Release|Any CPU + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|Any CPU.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|Any CPU.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|Mixed Platforms.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|x64.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|x64.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|x86.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.COM|x86.Build.0 = Release|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|Any CPU.ActiveCfg = Debug|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|x64.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|x64.Build.0 = Debug|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|x86.ActiveCfg = Debug|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug|x86.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|Any CPU.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|x64.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|x64.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|x86.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.PerformTest|x86.Build.0 = Release|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|Any CPU.ActiveCfg = Release|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|Mixed Platforms.ActiveCfg = Release|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|Mixed Platforms.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|x64.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|x64.Build.0 = Release|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|x86.ActiveCfg = Release|x86 {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|x86.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|x64.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|x64.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|x86.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.ReleaseTest|x86.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|x64.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.VPN_Debug|x86.Build.0 = Debug|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|Any CPU.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|x64.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|x64.Build.0 = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|x86.ActiveCfg = Release|x86 + {B2CD81B3-AF09-4978-996C-02EDB5F819B7}.XP32bit|x86.Build.0 = Release|x86 + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|Any CPU.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|Any CPU.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|x64.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|x64.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|x86.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.COM|x86.Build.0 = Release|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|x64.Build.0 = Debug|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|x64.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|x64.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|x86.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.PerformTest|x86.Build.0 = Release|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.Build.0 = Release|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|x64.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|x64.Build.0 = Release|Any CPU {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|x86.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|x64.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.ReleaseTest|x86.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|x64.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|x64.Build.0 = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|x86.ActiveCfg = Release|Any CPU + {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.XP32bit|x86.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|Any CPU.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|Any CPU.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|Mixed Platforms.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|x64.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|x64.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|x86.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.COM|x86.Build.0 = Release|x86 {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|x64.ActiveCfg = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|x64.Build.0 = Debug|Any CPU {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|x86.ActiveCfg = Debug|x86 {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug|x86.Build.0 = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|x64.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|x64.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|x86.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.PerformTest|x86.Build.0 = Release|x86 {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|Any CPU.Build.0 = Release|Any CPU {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|Mixed Platforms.ActiveCfg = Release|x86 {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|Mixed Platforms.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|x64.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|x64.Build.0 = Release|Any CPU {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|x86.ActiveCfg = Release|x86 {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.Release|x86.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|x64.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|x86.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.ReleaseTest|x86.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.VPN_Debug|x86.Build.0 = Debug|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|x64.ActiveCfg = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|x64.Build.0 = Release|Any CPU + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|x86.ActiveCfg = Release|x86 + {8B10D15A-39DE-4B56-8DD1-710C1EB3A697}.XP32bit|x86.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|Any CPU.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|Any CPU.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|Mixed Platforms.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|x64.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|x64.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|x86.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.COM|x86.Build.0 = Release|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|Any CPU.ActiveCfg = Debug|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|x64.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|x64.Build.0 = Debug|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|x86.ActiveCfg = Debug|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug|x86.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|Any CPU.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|x64.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|x64.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|x86.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.PerformTest|x86.Build.0 = Release|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|Any CPU.ActiveCfg = Release|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|Mixed Platforms.ActiveCfg = Release|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|Mixed Platforms.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|x64.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|x64.Build.0 = Release|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|x86.ActiveCfg = Release|x86 {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.Release|x86.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|x64.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|x64.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|x86.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.ReleaseTest|x86.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|x64.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.VPN_Debug|x86.Build.0 = Debug|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|Any CPU.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|x64.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|x64.Build.0 = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|x86.ActiveCfg = Release|x86 + {36755E1D-6FC3-4D9C-8DD3-0250D51532E0}.XP32bit|x86.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|Any CPU.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|Any CPU.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|Mixed Platforms.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|x64.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|x64.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|x86.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.COM|x86.Build.0 = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|Any CPU.ActiveCfg = Debug|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|x64.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|x64.Build.0 = Debug|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|x86.ActiveCfg = Debug|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug|x86.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|Any CPU.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|x64.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|x64.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|x86.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.PerformTest|x86.Build.0 = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Any CPU.ActiveCfg = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Mixed Platforms.ActiveCfg = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Mixed Platforms.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x64.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x64.Build.0 = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x86.ActiveCfg = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x86.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|x64.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|x64.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|x86.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.ReleaseTest|x86.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|x64.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.VPN_Debug|x86.Build.0 = Debug|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|Any CPU.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|x64.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|x64.Build.0 = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|x86.ActiveCfg = Release|x86 + {D476ABBE-A455-4476-8A8D-3F6151217B51}.XP32bit|x86.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|Any CPU.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|Any CPU.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|x64.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|x64.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|x86.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.COM|x86.Build.0 = Release|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Debug|Any CPU.ActiveCfg = Debug|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|x64.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|x64.Build.0 = Debug|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Debug|x86.ActiveCfg = Debug|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Debug|x86.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|Any CPU.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|x64.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|x64.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|x86.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.PerformTest|x86.Build.0 = Release|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Release|Any CPU.ActiveCfg = Release|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Release|Mixed Platforms.ActiveCfg = Release|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Release|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|x64.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|x64.Build.0 = Release|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Release|x86.ActiveCfg = Release|x86 {DA9B09F3-A99D-4883-A954-537560453674}.Release|x86.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|x64.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|x64.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|x86.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.ReleaseTest|x86.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|x64.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.VPN_Debug|x86.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|Any CPU.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|x64.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|x64.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|x86.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.XP32bit|x86.Build.0 = Release|x86 + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|Any CPU.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|Any CPU.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|x64.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|x64.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|x86.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.COM|x86.Build.0 = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|Any CPU.Build.0 = Debug|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|x64.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|x64.Build.0 = Debug|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|x86.ActiveCfg = Debug|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug|x86.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|x64.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|x64.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|x86.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.PerformTest|x86.Build.0 = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|Any CPU.ActiveCfg = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|Any CPU.Build.0 = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|x64.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|x64.Build.0 = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|x86.ActiveCfg = Release|Any CPU {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.Release|x86.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|x64.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.ReleaseTest|x86.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|x64.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|x64.Build.0 = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|x86.ActiveCfg = Release|Any CPU + {46E3B0E1-209F-4550-B0DD-D7E2C039B3CE}.XP32bit|x86.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|Any CPU.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|Any CPU.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|x64.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|x64.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|x86.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.COM|x86.Build.0 = Release|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|Any CPU.Build.0 = Debug|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|x64.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|x64.Build.0 = Debug|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug|x86.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|x64.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|x64.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|x86.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.PerformTest|x86.Build.0 = Release|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|Any CPU.ActiveCfg = Release|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|Any CPU.Build.0 = Release|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|x64.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|x64.Build.0 = Release|Any CPU {13515B7B-43E6-44BC-87B8-2E345A98B741}.Release|x86.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|x64.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.ReleaseTest|x86.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|x64.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|x64.Build.0 = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|x86.ActiveCfg = Release|Any CPU + {13515B7B-43E6-44BC-87B8-2E345A98B741}.XP32bit|x86.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|Any CPU.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|Any CPU.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|x64.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|x64.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|x86.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.COM|x86.Build.0 = Release|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|Any CPU.Build.0 = Debug|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|x64.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|x64.Build.0 = Debug|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug|x86.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|x64.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|x64.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|x86.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.PerformTest|x86.Build.0 = Release|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|Any CPU.ActiveCfg = Release|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|Any CPU.Build.0 = Release|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|x64.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|x64.Build.0 = Release|Any CPU {6F18660F-0EFB-4253-B92C-205E18D34442}.Release|x86.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|x64.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.ReleaseTest|x86.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|x64.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|x64.Build.0 = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|x86.ActiveCfg = Release|Any CPU + {6F18660F-0EFB-4253-B92C-205E18D34442}.XP32bit|x86.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|Any CPU.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|Any CPU.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|x64.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|x64.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|x86.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.COM|x86.Build.0 = Release|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Any CPU.Build.0 = Debug|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|x64.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|x64.Build.0 = Debug|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug|x86.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|x64.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|x64.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|x86.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.PerformTest|x86.Build.0 = Release|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Any CPU.ActiveCfg = Release|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Any CPU.Build.0 = Release|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|x64.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|x64.Build.0 = Release|Any CPU {32817BF9-E380-4467-9C7F-936F4B122BC7}.Release|x86.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|x64.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.ReleaseTest|x86.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|x64.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|x64.Build.0 = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|x86.ActiveCfg = Release|Any CPU + {32817BF9-E380-4467-9C7F-936F4B122BC7}.XP32bit|x86.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|Any CPU.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|Any CPU.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|x64.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|x64.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|x86.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.COM|x86.Build.0 = Release|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|Any CPU.Build.0 = Debug|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|x64.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|x64.Build.0 = Debug|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug|x86.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|x64.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|x64.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|x86.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.PerformTest|x86.Build.0 = Release|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|Any CPU.Build.0 = Release|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|x64.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|x64.Build.0 = Release|Any CPU {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.Release|x86.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|x64.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.ReleaseTest|x86.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|x64.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|x64.Build.0 = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|x86.ActiveCfg = Release|Any CPU + {CF5BE6CD-A224-4B58-950D-14040E7A3C6A}.XP32bit|x86.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|Any CPU.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|Any CPU.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|x64.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|x64.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|x86.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.COM|x86.Build.0 = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|Any CPU.Build.0 = Debug|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|x64.Build.0 = Debug|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|x64.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|x64.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|x86.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.PerformTest|x86.Build.0 = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|Any CPU.ActiveCfg = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|Any CPU.Build.0 = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|x64.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|x64.Build.0 = Release|Any CPU {C8939821-BA5C-4988-A3D0-BF53B74865C7}.Release|x86.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|x64.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.ReleaseTest|x86.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|x64.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|x64.Build.0 = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|x86.ActiveCfg = Release|Any CPU + {C8939821-BA5C-4988-A3D0-BF53B74865C7}.XP32bit|x86.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|Any CPU.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|Any CPU.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|x64.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|x64.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.COM|x86.Build.0 = Release|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Any CPU.Build.0 = Debug|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|x64.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|x64.Build.0 = Debug|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug|x86.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|x64.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|x64.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.PerformTest|x86.Build.0 = Release|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Any CPU.ActiveCfg = Release|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Any CPU.Build.0 = Release|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|x64.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|x64.Build.0 = Release|Any CPU {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.Release|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|x64.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.ReleaseTest|x86.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|x64.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|x64.Build.0 = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|x86.ActiveCfg = Release|Any CPU + {7EBEEA14-91C4-48D7-AF0A-7A4BC3FF9A28}.XP32bit|x86.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|Any CPU.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|Any CPU.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|x64.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|x64.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|x86.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.COM|x86.Build.0 = Release|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|x64.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|x64.Build.0 = Debug|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug|x86.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|x64.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|x64.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|x86.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.PerformTest|x86.Build.0 = Release|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|Any CPU.Build.0 = Release|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|x64.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|x64.Build.0 = Release|Any CPU {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.Release|x86.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|x64.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.ReleaseTest|x86.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|x64.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|x64.Build.0 = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|x86.ActiveCfg = Release|Any CPU + {0F79CA69-9DBC-41F3-A6FC-5A2937365343}.XP32bit|x86.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|Any CPU.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|Any CPU.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|x64.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|x64.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|x86.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.COM|x86.Build.0 = Release|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|Any CPU.Build.0 = Debug|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|x64.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|x64.Build.0 = Debug|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|x64.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|x64.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|x86.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.PerformTest|x86.Build.0 = Release|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|Any CPU.Build.0 = Release|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|x64.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|x64.Build.0 = Release|Any CPU {D7F5A111-B2DF-4761-9574-AB730DF573A6}.Release|x86.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|x64.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.ReleaseTest|x86.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|x64.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|x64.Build.0 = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|x86.ActiveCfg = Release|Any CPU + {D7F5A111-B2DF-4761-9574-AB730DF573A6}.XP32bit|x86.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|Any CPU.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|Any CPU.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|x64.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|x64.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|x86.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.COM|x86.Build.0 = Release|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|Any CPU.Build.0 = Debug|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|x64.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|x64.Build.0 = Debug|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug|x86.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|x64.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|x64.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|x86.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.PerformTest|x86.Build.0 = Release|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|Any CPU.ActiveCfg = Release|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|Any CPU.Build.0 = Release|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|x64.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|x64.Build.0 = Release|Any CPU {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.Release|x86.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|x64.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.ReleaseTest|x86.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|x64.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|x64.Build.0 = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|x86.ActiveCfg = Release|Any CPU + {9786D0A8-BA9A-41F6-9E61-C7B2B76D4C08}.XP32bit|x86.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|Any CPU.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|Any CPU.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|x64.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|x64.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|x86.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.COM|x86.Build.0 = Release|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|Any CPU.Build.0 = Debug|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|x64.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|x64.Build.0 = Debug|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug|x86.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|x64.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|x64.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|x86.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.PerformTest|x86.Build.0 = Release|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|Any CPU.ActiveCfg = Release|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|Any CPU.Build.0 = Release|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|x64.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|x64.Build.0 = Release|Any CPU {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.Release|x86.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|x64.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.ReleaseTest|x86.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|x64.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|x64.Build.0 = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|x86.ActiveCfg = Release|Any CPU + {211B5E3F-9996-48A7-ABDE-C878DD2D71C2}.XP32bit|x86.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|Any CPU.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|Any CPU.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|x64.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|x64.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|x86.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.COM|x86.Build.0 = Release|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|Any CPU.Build.0 = Debug|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|x64.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|x64.Build.0 = Debug|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug|x86.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|x64.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|x64.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|x86.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.PerformTest|x86.Build.0 = Release|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|Any CPU.ActiveCfg = Release|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|Any CPU.Build.0 = Release|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|x64.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|x64.Build.0 = Release|Any CPU {6280F3F9-139A-48E3-8C88-25EB4124E982}.Release|x86.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|x64.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.ReleaseTest|x86.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|x64.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|x64.Build.0 = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|x86.ActiveCfg = Release|Any CPU + {6280F3F9-139A-48E3-8C88-25EB4124E982}.XP32bit|x86.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|Any CPU.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|Any CPU.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|x64.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|x64.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|x86.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.COM|x86.Build.0 = Release|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|x64.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|x64.Build.0 = Debug|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug|x86.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|x64.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|x64.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|x86.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.PerformTest|x86.Build.0 = Release|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|Any CPU.Build.0 = Release|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|x64.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|x64.Build.0 = Release|Any CPU {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.Release|x86.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|x64.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.ReleaseTest|x86.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|x64.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|x64.Build.0 = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|x86.ActiveCfg = Release|Any CPU + {7DF40C07-9A1D-403B-91D3-D45660E6D3B1}.XP32bit|x86.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|Any CPU.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|Any CPU.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|x64.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|x64.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|x86.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.COM|x86.Build.0 = Release|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|Any CPU.Build.0 = Debug|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|x64.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|x64.Build.0 = Debug|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug|x86.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|x64.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|x64.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|x86.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.PerformTest|x86.Build.0 = Release|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|Any CPU.ActiveCfg = Release|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|Any CPU.Build.0 = Release|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|x64.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|x64.Build.0 = Release|Any CPU {AE275D47-A33B-47E6-9541-B6EA29D12434}.Release|x86.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|x64.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.ReleaseTest|x86.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|x64.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|x64.Build.0 = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|x86.ActiveCfg = Release|Any CPU + {AE275D47-A33B-47E6-9541-B6EA29D12434}.XP32bit|x86.Build.0 = Release|Any CPU + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|Any CPU.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|x64.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|x64.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|Any CPU.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|Any CPU.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|Mixed Platforms.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|x64.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|x64.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|x86.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.COM|x86.Build.0 = Release|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|Any CPU.ActiveCfg = Debug|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|x64.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|x64.Build.0 = Debug|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|x86.ActiveCfg = Debug|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug|x86.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|x64.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|Any CPU.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|Any CPU.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|x64.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|x64.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|x86.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.PerformTest|x86.Build.0 = Release|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|Any CPU.ActiveCfg = Release|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|Mixed Platforms.ActiveCfg = Release|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|Mixed Platforms.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|x64.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|x64.Build.0 = Release|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|x86.ActiveCfg = Release|x86 {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.Release|x86.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|Any CPU.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|Any CPU.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|x64.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|x64.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|x86.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.ReleaseTest|x86.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|Any CPU.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|Any CPU.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|x64.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|x64.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.VPN_Debug|x86.Build.0 = Debug|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|Any CPU.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|Any CPU.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|x64.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|x64.Build.0 = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|x86.ActiveCfg = Release|x86 + {5D3E5031-0E8D-4348-92DF-A900F546ACEF}.XP32bit|x86.Build.0 = Release|x86 + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|Any CPU.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|Any CPU.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|x64.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|x64.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|x86.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.COM|x86.Build.0 = Release|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|Any CPU.Build.0 = Debug|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|x64.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|x64.Build.0 = Debug|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug|x86.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|x64.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|x64.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|x86.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.PerformTest|x86.Build.0 = Release|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|Any CPU.Build.0 = Release|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|x64.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|x64.Build.0 = Release|Any CPU {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.Release|x86.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|x64.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.ReleaseTest|x86.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|x64.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|x64.Build.0 = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|x86.ActiveCfg = Release|Any CPU + {7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}.XP32bit|x86.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|Any CPU.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|Any CPU.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|x64.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|x64.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|x86.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.COM|x86.Build.0 = Release|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|Any CPU.Build.0 = Debug|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|x64.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|x64.Build.0 = Debug|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug|x86.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|x64.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|x64.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|x86.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.PerformTest|x86.Build.0 = Release|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|Any CPU.ActiveCfg = Release|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|Any CPU.Build.0 = Release|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|x64.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|x64.Build.0 = Release|Any CPU {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.Release|x86.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|x64.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.ReleaseTest|x86.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|x64.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|x64.Build.0 = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|x86.ActiveCfg = Release|Any CPU + {67BD7A8F-0FED-4FDE-B875-78D5A2BC9B2C}.XP32bit|x86.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|Any CPU.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|Any CPU.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|x64.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|x64.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|x86.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.COM|x86.Build.0 = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|Any CPU.Build.0 = Debug|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|x64.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|x64.Build.0 = Debug|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug|x86.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|x64.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|x64.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|x86.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.PerformTest|x86.Build.0 = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|Any CPU.ActiveCfg = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|Any CPU.Build.0 = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|x64.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|x64.Build.0 = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|x86.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|x64.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.ReleaseTest|x86.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|x64.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|x64.Build.0 = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|x86.ActiveCfg = Release|Any CPU + {1F6B4580-9D4F-43D6-9E76-E063298391E8}.XP32bit|x86.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|Any CPU.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|Any CPU.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|x64.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|x64.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.COM|x86.Build.0 = Release|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Any CPU.Build.0 = Debug|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|x64.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|x64.Build.0 = Debug|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|x86.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|x64.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|x64.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.PerformTest|x86.Build.0 = Release|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Any CPU.ActiveCfg = Release|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Any CPU.Build.0 = Release|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|x64.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|x64.Build.0 = Release|Any CPU {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|x64.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.ReleaseTest|x86.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|x64.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|x64.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.XP32bit|x86.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|Any CPU.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|Any CPU.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|x64.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|x64.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|x86.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.COM|x86.Build.0 = Release|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|x64.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|x64.Build.0 = Debug|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug|x86.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|x64.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|x64.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|x86.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.PerformTest|x86.Build.0 = Release|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|Any CPU.Build.0 = Release|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|x64.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|x64.Build.0 = Release|Any CPU {EE097B5A-8162-45B1-9643-4969FC3A8921}.Release|x86.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|x64.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.ReleaseTest|x86.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|x64.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|x64.Build.0 = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|x86.ActiveCfg = Release|Any CPU + {EE097B5A-8162-45B1-9643-4969FC3A8921}.XP32bit|x86.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|Any CPU.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|Any CPU.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|x64.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|x64.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|x86.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.COM|x86.Build.0 = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|Any CPU.Build.0 = Debug|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|x64.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|x64.Build.0 = Debug|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|x86.ActiveCfg = Debug|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug|x86.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|x64.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|x64.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|x86.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.PerformTest|x86.Build.0 = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|Any CPU.ActiveCfg = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|Any CPU.Build.0 = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|x64.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|x64.Build.0 = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|x86.ActiveCfg = Release|Any CPU {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.Release|x86.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|x64.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.ReleaseTest|x86.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|x64.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|x64.Build.0 = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|x86.ActiveCfg = Release|Any CPU + {E4531D13-317C-4D9F-809F-5533B5C3C8BF}.XP32bit|x86.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|Any CPU.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|Any CPU.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|x64.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|x64.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|x86.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.COM|x86.Build.0 = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|Any CPU.Build.0 = Debug|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|x64.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|x64.Build.0 = Debug|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|x86.ActiveCfg = Debug|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug|x86.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|x64.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|x64.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|x86.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.PerformTest|x86.Build.0 = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|Any CPU.ActiveCfg = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|Any CPU.Build.0 = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|x64.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|x64.Build.0 = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|x86.ActiveCfg = Release|Any CPU {77EB589F-C670-4489-AAD6-2A3C02061FD1}.Release|x86.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|x64.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.ReleaseTest|x86.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|x64.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|x64.Build.0 = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|x86.ActiveCfg = Release|Any CPU + {77EB589F-C670-4489-AAD6-2A3C02061FD1}.XP32bit|x86.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|Any CPU.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|Any CPU.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|x64.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|x64.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|x86.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.COM|x86.Build.0 = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|Any CPU.Build.0 = Debug|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|x64.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|x64.Build.0 = Debug|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|x86.ActiveCfg = Debug|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug|x86.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|x64.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|x64.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|x86.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.PerformTest|x86.Build.0 = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|Any CPU.Build.0 = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|x64.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|x64.Build.0 = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|x86.ActiveCfg = Release|Any CPU {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.Release|x86.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|x64.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.ReleaseTest|x86.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|x64.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|x64.Build.0 = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|x86.ActiveCfg = Release|Any CPU + {FA9ABAD1-7184-4295-ADE8-D44F2E3DE6B2}.XP32bit|x86.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|Any CPU.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|Any CPU.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|x64.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|x64.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|x86.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.COM|x86.Build.0 = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|Any CPU.Build.0 = Debug|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|x64.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|x64.Build.0 = Debug|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|x86.ActiveCfg = Debug|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Debug|x86.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|x64.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|x64.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|x86.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.PerformTest|x86.Build.0 = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Release|Any CPU.ActiveCfg = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Release|Any CPU.Build.0 = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Release|x64.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.Release|x64.Build.0 = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Release|x86.ActiveCfg = Release|Any CPU {8F942729-F454-4C99-BA6C-746962065AE3}.Release|x86.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|x64.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.ReleaseTest|x86.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|x64.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|x64.Build.0 = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|x86.ActiveCfg = Release|Any CPU + {8F942729-F454-4C99-BA6C-746962065AE3}.XP32bit|x86.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|Any CPU.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|Any CPU.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|x64.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|x64.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.COM|x86.Build.0 = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Any CPU.Build.0 = Debug|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|x64.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|x64.Build.0 = Debug|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|x86.ActiveCfg = Debug|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug|x86.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|x64.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|x64.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.PerformTest|x86.Build.0 = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Any CPU.ActiveCfg = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Any CPU.Build.0 = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|x64.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|x64.Build.0 = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|x86.ActiveCfg = Release|Any CPU {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.Release|x86.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|x64.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.ReleaseTest|x86.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|x64.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|x64.Build.0 = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|x86.ActiveCfg = Release|Any CPU + {A3E14180-7F00-42E5-94A9-8DB62EAD6EE8}.XP32bit|x86.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|x86.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}._MANUAL_CONTROL|x86.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|Any CPU.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|Any CPU.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|Mixed Platforms.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|Mixed Platforms.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|x64.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|x64.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|x86.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.COM|x86.Build.0 = Release|x86 {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|Any CPU.Build.0 = Debug|Any CPU {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|x64.ActiveCfg = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|x64.Build.0 = Debug|Any CPU {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|x86.ActiveCfg = Debug|x86 {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug|x86.Build.0 = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|Mixed Platforms.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|Mixed Platforms.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|x64.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|x64.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|x86.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.PerformTest|x86.Build.0 = Release|x86 {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|Any CPU.ActiveCfg = Release|Any CPU {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|Any CPU.Build.0 = Release|Any CPU {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|Mixed Platforms.ActiveCfg = Release|x86 {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|Mixed Platforms.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|x64.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|x64.Build.0 = Release|Any CPU {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|x86.ActiveCfg = Release|x86 {5025ED8B-A94F-4E58-8BE0-68481B061609}.Release|x86.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|Mixed Platforms.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|x64.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|x86.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.ReleaseTest|x86.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|Mixed Platforms.Build.0 = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|x86.ActiveCfg = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.VPN_Debug|x86.Build.0 = Debug|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|Mixed Platforms.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|Mixed Platforms.Build.0 = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|x64.ActiveCfg = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|x64.Build.0 = Release|Any CPU + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|x86.ActiveCfg = Release|x86 + {5025ED8B-A94F-4E58-8BE0-68481B061609}.XP32bit|x86.Build.0 = Release|x86 + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|Any CPU.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|Any CPU.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|x64.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|x64.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|x86.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.COM|x86.Build.0 = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|Any CPU.Build.0 = Debug|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|x64.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|x64.Build.0 = Debug|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|x86.ActiveCfg = Debug|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug|x86.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|x64.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|x64.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|x86.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.PerformTest|x86.Build.0 = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|Any CPU.ActiveCfg = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|Any CPU.Build.0 = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|x64.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|x64.Build.0 = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|x86.ActiveCfg = Release|Any CPU {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.Release|x86.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|x64.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.ReleaseTest|x86.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|x64.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|x64.Build.0 = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|x86.ActiveCfg = Release|Any CPU + {5954D496-CAAB-4F7A-BDE2-BDC8F47DAB19}.XP32bit|x86.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|Any CPU.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|Any CPU.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|x64.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|x64.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|x86.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.COM|x86.Build.0 = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|Any CPU.Build.0 = Debug|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|x64.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|x64.Build.0 = Debug|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|x86.ActiveCfg = Debug|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug|x86.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|x64.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|x64.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|x86.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.PerformTest|x86.Build.0 = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|Any CPU.ActiveCfg = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|Any CPU.Build.0 = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|x64.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|x64.Build.0 = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|x86.ActiveCfg = Release|Any CPU {53E75979-B530-4805-8FC9-B314F14A62BE}.Release|x86.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|x64.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.ReleaseTest|x86.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|x64.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|x64.Build.0 = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|x86.ActiveCfg = Release|Any CPU + {53E75979-B530-4805-8FC9-B314F14A62BE}.XP32bit|x86.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|Any CPU.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|Any CPU.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|x64.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|x64.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|x86.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.COM|x86.Build.0 = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|Any CPU.Build.0 = Debug|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|x64.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|x64.Build.0 = Debug|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|x86.ActiveCfg = Debug|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug|x86.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|x64.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|x64.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|x86.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.PerformTest|x86.Build.0 = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|Any CPU.ActiveCfg = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|Any CPU.Build.0 = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|x64.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|x64.Build.0 = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|x86.ActiveCfg = Release|Any CPU {715605C5-568B-48D6-9C09-2DC5F2E81F66}.Release|x86.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|x64.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.ReleaseTest|x86.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|x64.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|x64.Build.0 = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|x86.ActiveCfg = Release|Any CPU + {715605C5-568B-48D6-9C09-2DC5F2E81F66}.XP32bit|x86.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|Any CPU.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|Any CPU.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|x64.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|x64.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|x86.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}._MANUAL_CONTROL|x86.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|Any CPU.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|Any CPU.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|Mixed Platforms.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|Mixed Platforms.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|x64.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|x64.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|x86.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.COM|x86.Build.0 = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|Any CPU.Build.0 = Debug|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|x64.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|x64.Build.0 = Debug|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|x86.ActiveCfg = Debug|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug|x86.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|Any CPU.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|Any CPU.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|Mixed Platforms.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|x64.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|x64.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|x86.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.PerformTest|x86.Build.0 = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|Any CPU.ActiveCfg = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|Any CPU.Build.0 = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|x64.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|x64.Build.0 = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|x86.ActiveCfg = Release|Any CPU {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.Release|x86.Build.0 = Release|Any CPU - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|x86.ActiveCfg = Debug|x86 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|x86.Build.0 = Debug|x86 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Any CPU.Build.0 = Release|Any CPU - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Mixed Platforms.Build.0 = Release|x64 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|x86.ActiveCfg = Release|x86 - {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|x86.Build.0 = Release|x86 - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|x86.ActiveCfg = Debug|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|x86.Build.0 = Debug|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Any CPU.Build.0 = Release|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Mixed Platforms.Build.0 = Release|x64 - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|x86.ActiveCfg = Release|Any CPU - {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|x86.Build.0 = Release|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|x86.ActiveCfg = Debug|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|x86.Build.0 = Debug|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Any CPU.Build.0 = Release|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Mixed Platforms.Build.0 = Release|x64 - {95A50087-99EE-4349-9A17-C547290DB42F}.Release|x86.ActiveCfg = Release|Any CPU - {95A50087-99EE-4349-9A17-C547290DB42F}.Release|x86.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|x64.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.ReleaseTest|x86.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|Any CPU.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|x64.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|x64.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|x86.ActiveCfg = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.VPN_Debug|x86.Build.0 = Debug|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|Any CPU.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|Any CPU.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|Mixed Platforms.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|Mixed Platforms.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|x64.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|x64.Build.0 = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|x86.ActiveCfg = Release|Any CPU + {C955D8AC-76B8-42D8-A83F-8AEB56CF2567}.XP32bit|x86.Build.0 = Release|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|Any CPU.Build.0 = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|Mixed Platforms.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|x64.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|x64.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|x86.ActiveCfg = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.COM|x86.Build.0 = Debug|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|Any CPU.Build.0 = Debug|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|x64.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|x64.Build.0 = Debug|x64 {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|x86.ActiveCfg = Debug|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug|x86.Build.0 = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|x64.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|x64.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.PerformTest|x86.Build.0 = Debug|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|Any CPU.ActiveCfg = Release|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|Any CPU.Build.0 = Release|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|Mixed Platforms.ActiveCfg = Release|x64 {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|Mixed Platforms.Build.0 = Release|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|x64.ActiveCfg = Release|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|x64.Build.0 = Release|x64 {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|x86.ActiveCfg = Release|Any CPU {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.Release|x86.Build.0 = Release|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|x86.ActiveCfg = Debug|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|x86.Build.0 = Debug|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Any CPU.Build.0 = Release|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Mixed Platforms.Build.0 = Release|x64 - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|x86.ActiveCfg = Release|Any CPU - {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|x86.Build.0 = Release|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|x86.ActiveCfg = Debug|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|x86.Build.0 = Debug|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Any CPU.Build.0 = Release|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Mixed Platforms.Build.0 = Release|x64 - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|x86.ActiveCfg = Release|Any CPU - {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|x86.Build.0 = Release|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|x86.ActiveCfg = Debug|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|x86.Build.0 = Debug|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Any CPU.Build.0 = Release|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Mixed Platforms.Build.0 = Release|x64 - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|x86.ActiveCfg = Release|Any CPU - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|x86.Build.0 = Release|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|x86.ActiveCfg = Debug|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|x86.Build.0 = Debug|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Any CPU.Build.0 = Release|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Mixed Platforms.Build.0 = Release|x64 - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|x86.ActiveCfg = Release|Any CPU - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|x86.Build.0 = Release|Any CPU - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|x86.ActiveCfg = Debug|x86 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|x86.Build.0 = Debug|x86 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Any CPU.Build.0 = Release|Any CPU - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Mixed Platforms.Build.0 = Release|x64 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|x86.ActiveCfg = Release|x86 - {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|x86.Build.0 = Release|x86 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|x86.ActiveCfg = Debug|x86 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|x86.Build.0 = Debug|x86 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Any CPU.Build.0 = Release|Any CPU - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Mixed Platforms.Build.0 = Release|x64 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|x86.ActiveCfg = Release|x86 - {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|x86.Build.0 = Release|x86 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|x86.ActiveCfg = Debug|x86 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|x86.Build.0 = Debug|x86 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Any CPU.Build.0 = Release|Any CPU - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Mixed Platforms.Build.0 = Release|x64 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|x86.ActiveCfg = Release|x86 - {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|x86.Build.0 = Release|x86 - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|x86.ActiveCfg = Debug|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|x86.Build.0 = Debug|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Any CPU.Build.0 = Release|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Mixed Platforms.Build.0 = Release|x64 - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|x86.ActiveCfg = Release|Any CPU - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|x86.Build.0 = Release|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|x64.ActiveCfg = Release|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|x64.Build.0 = Release|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.ReleaseTest|x86.Build.0 = Release|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|x64.ActiveCfg = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|x64.Build.0 = Debug|x64 + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {315E94B8-B82F-4B25-B5BD-297DF3BC1D54}.XP32bit|x86.Build.0 = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|Any CPU.Build.0 = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|Mixed Platforms.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|x64.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|x64.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|x86.ActiveCfg = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.COM|x86.Build.0 = Debug|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|Any CPU.Build.0 = Debug|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|x64.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|x64.Build.0 = Debug|x64 {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|x86.ActiveCfg = Debug|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug|x86.Build.0 = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|x64.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|x64.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.PerformTest|x86.Build.0 = Debug|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|Any CPU.Build.0 = Release|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|Mixed Platforms.ActiveCfg = Release|x64 {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|Mixed Platforms.Build.0 = Release|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|x64.ActiveCfg = Release|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|x64.Build.0 = Release|x64 {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|x86.ActiveCfg = Release|Any CPU {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.Release|x86.Build.0 = Release|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|x86.ActiveCfg = Debug|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|x86.Build.0 = Debug|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Any CPU.Build.0 = Release|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Mixed Platforms.Build.0 = Release|x64 - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|x86.ActiveCfg = Release|Any CPU - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|x86.Build.0 = Release|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|x64.ActiveCfg = Release|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|x64.Build.0 = Release|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.ReleaseTest|x86.Build.0 = Release|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|x64.ActiveCfg = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|x64.Build.0 = Debug|x64 + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C}.XP32bit|x86.Build.0 = Debug|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|Any CPU.ActiveCfg = COM|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|Any CPU.Build.0 = COM|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|Mixed Platforms.Build.0 = COM|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|x64.ActiveCfg = COM|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|x64.Build.0 = COM|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|x86.ActiveCfg = COM|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.COM|x86.Build.0 = COM|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|x64.ActiveCfg = Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|x64.Build.0 = Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|x86.ActiveCfg = Debug|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug|x86.Build.0 = Debug|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|x64.Build.0 = PerformTest|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.PerformTest|x86.Build.0 = PerformTest|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Any CPU.Build.0 = Release|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|Mixed Platforms.Build.0 = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|x64.ActiveCfg = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|x64.Build.0 = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|x86.ActiveCfg = Release|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.Release|x86.Build.0 = Release|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|x64.ActiveCfg = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|x64.Build.0 = Release|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|x86.ActiveCfg = Release|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.ReleaseTest|x86.Build.0 = Release|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|x64.Build.0 = XP32bit|x64 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {04201E95-90A0-4B73-A72F-379739B2A3AE}.XP32bit|x86.Build.0 = XP32bit|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|Any CPU.ActiveCfg = COM|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|Any CPU.Build.0 = COM|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|Mixed Platforms.Build.0 = COM|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|x64.ActiveCfg = COM|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|x64.Build.0 = COM|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|x86.ActiveCfg = COM|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.COM|x86.Build.0 = COM|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|x64.ActiveCfg = Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|x64.Build.0 = Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|x86.ActiveCfg = Debug|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug|x86.Build.0 = Debug|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|x64.Build.0 = PerformTest|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.PerformTest|x86.Build.0 = PerformTest|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Any CPU.Build.0 = Release|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|Mixed Platforms.Build.0 = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|x64.ActiveCfg = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|x64.Build.0 = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|x86.ActiveCfg = Release|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.Release|x86.Build.0 = Release|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|x64.ActiveCfg = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|x64.Build.0 = Release|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|x86.ActiveCfg = Release|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.ReleaseTest|x86.Build.0 = Release|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|x64.Build.0 = XP32bit|x64 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {72037E89-4F63-4B3F-BEFF-4138E578CE99}.XP32bit|x86.Build.0 = XP32bit|x86 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|Any CPU.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|Mixed Platforms.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|x64.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|x64.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|x86.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.COM|x86.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|x64.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|x64.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|x86.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug|x86.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|x64.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|x64.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.PerformTest|x86.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Any CPU.Build.0 = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|Mixed Platforms.Build.0 = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|x64.ActiveCfg = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|x64.Build.0 = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|x86.ActiveCfg = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.Release|x86.Build.0 = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|x64.ActiveCfg = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|x64.Build.0 = Release|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.ReleaseTest|x86.Build.0 = Release|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|x64.ActiveCfg = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|x64.Build.0 = Debug|x64 + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC}.XP32bit|x86.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|Any CPU.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|Mixed Platforms.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|x64.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|x64.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|x86.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.COM|x86.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|x64.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|x64.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|x86.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug|x86.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|x64.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|x64.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.PerformTest|x86.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Any CPU.Build.0 = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|Mixed Platforms.Build.0 = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|x64.ActiveCfg = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|x64.Build.0 = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|x86.ActiveCfg = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.Release|x86.Build.0 = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|x64.ActiveCfg = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|x64.Build.0 = Release|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.ReleaseTest|x86.Build.0 = Release|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|x64.ActiveCfg = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|x64.Build.0 = Debug|x64 + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {2E139F63-B6FE-4EA9-A098-85364FE9B26C}.XP32bit|x86.Build.0 = Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|Any CPU.Build.0 = Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|Mixed Platforms.Build.0 = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|x64.ActiveCfg = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|x64.Build.0 = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|x86.ActiveCfg = Debug|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.COM|x86.Build.0 = Debug|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|x64.ActiveCfg = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|x64.Build.0 = Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|x86.ActiveCfg = Debug|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug|x86.Build.0 = Debug|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|x64.Build.0 = PerformTest|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.PerformTest|x86.Build.0 = PerformTest|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Any CPU.Build.0 = Release|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|Mixed Platforms.Build.0 = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|x64.ActiveCfg = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|x64.Build.0 = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|x86.ActiveCfg = Release|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.Release|x86.Build.0 = Release|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|x64.ActiveCfg = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|x64.Build.0 = Release|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|x86.ActiveCfg = Release|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.ReleaseTest|x86.Build.0 = Release|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|x64.Build.0 = XP32bit|x64 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {4B88B0D3-E791-4774-9521-EABEACDC420E}.XP32bit|x86.Build.0 = XP32bit|x86 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|Any CPU.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|Mixed Platforms.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|x64.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|x64.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|x86.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.COM|x86.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|x64.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|x64.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|x86.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug|x86.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|x64.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|x64.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.PerformTest|x86.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Any CPU.Build.0 = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|Mixed Platforms.Build.0 = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|x64.ActiveCfg = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|x64.Build.0 = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|x86.ActiveCfg = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.Release|x86.Build.0 = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|x64.ActiveCfg = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|x64.Build.0 = Release|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.ReleaseTest|x86.Build.0 = Release|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|x64.ActiveCfg = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|x64.Build.0 = Debug|x64 + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97}.XP32bit|x86.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|Any CPU.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|Mixed Platforms.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|x64.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|x64.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|x86.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.COM|x86.Build.0 = Debug|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|x64.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|x64.Build.0 = Debug|x64 {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|x86.ActiveCfg = Debug|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug|x86.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|x64.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|x64.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.PerformTest|x86.Build.0 = Debug|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|Any CPU.Build.0 = Release|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|Mixed Platforms.ActiveCfg = Release|x64 {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|Mixed Platforms.Build.0 = Release|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|x64.ActiveCfg = Release|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|x64.Build.0 = Release|x64 {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|x86.ActiveCfg = Release|Any CPU {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.Release|x86.Build.0 = Release|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|x64.ActiveCfg = Release|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|x64.Build.0 = Release|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.ReleaseTest|x86.Build.0 = Release|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|x64.ActiveCfg = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|x64.Build.0 = Debug|x64 + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}.XP32bit|x86.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|Any CPU.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|Mixed Platforms.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|x64.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|x64.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|x86.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.COM|x86.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|x64.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|x64.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|x86.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug|x86.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|x64.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|x64.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.PerformTest|x86.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Any CPU.Build.0 = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|Mixed Platforms.Build.0 = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|x64.ActiveCfg = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|x64.Build.0 = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|x86.ActiveCfg = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.Release|x86.Build.0 = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|x64.ActiveCfg = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|x64.Build.0 = Release|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.ReleaseTest|x86.Build.0 = Release|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|x64.ActiveCfg = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|x64.Build.0 = Debug|x64 + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {6D2777BB-7A88-466D-A49B-3266F9BF0160}.XP32bit|x86.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|Any CPU.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|Mixed Platforms.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|x64.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|x64.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|x86.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.COM|x86.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|x64.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|x64.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|x86.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug|x86.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|x64.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|x64.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.PerformTest|x86.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Any CPU.Build.0 = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|Mixed Platforms.Build.0 = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|x64.ActiveCfg = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|x64.Build.0 = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|x86.ActiveCfg = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.Release|x86.Build.0 = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|x64.ActiveCfg = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|x64.Build.0 = Release|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.ReleaseTest|x86.Build.0 = Release|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|x64.ActiveCfg = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|x64.Build.0 = Debug|x64 + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {F4AAF7E6-7333-4284-B735-E32DEB076C64}.XP32bit|x86.Build.0 = Debug|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|Any CPU.ActiveCfg = COM|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|Any CPU.Build.0 = COM|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|Mixed Platforms.Build.0 = COM|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|x64.ActiveCfg = COM|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|x64.Build.0 = COM|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|x86.ActiveCfg = COM|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.COM|x86.Build.0 = COM|x86 {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|Any CPU.Build.0 = Debug|Any CPU {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|x64.ActiveCfg = Debug|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|x64.Build.0 = Debug|x64 {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|x86.ActiveCfg = Debug|x86 {D32ED790-7E1E-435B-8619-9F906C992066}.Debug|x86.Build.0 = Debug|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|x64.Build.0 = PerformTest|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.PerformTest|x86.Build.0 = PerformTest|x86 {D32ED790-7E1E-435B-8619-9F906C992066}.Release|Any CPU.ActiveCfg = Release|Any CPU {D32ED790-7E1E-435B-8619-9F906C992066}.Release|Any CPU.Build.0 = Release|Any CPU {D32ED790-7E1E-435B-8619-9F906C992066}.Release|Mixed Platforms.ActiveCfg = Release|x64 {D32ED790-7E1E-435B-8619-9F906C992066}.Release|Mixed Platforms.Build.0 = Release|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Release|x64.ActiveCfg = Release|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.Release|x64.Build.0 = Release|x64 {D32ED790-7E1E-435B-8619-9F906C992066}.Release|x86.ActiveCfg = Release|x86 {D32ED790-7E1E-435B-8619-9F906C992066}.Release|x86.Build.0 = Release|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|x64.ActiveCfg = Release|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|x64.Build.0 = Release|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|x86.ActiveCfg = Release|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.ReleaseTest|x86.Build.0 = Release|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|x64.Build.0 = XP32bit|x64 + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {D32ED790-7E1E-435B-8619-9F906C992066}.XP32bit|x86.Build.0 = XP32bit|x86 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|Any CPU.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|Mixed Platforms.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|x64.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|x64.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|x86.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.COM|x86.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|x64.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|x64.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|x86.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug|x86.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|x64.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|x64.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.PerformTest|x86.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Any CPU.Build.0 = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|Mixed Platforms.Build.0 = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|x64.ActiveCfg = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|x64.Build.0 = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|x86.ActiveCfg = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.Release|x86.Build.0 = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|x64.ActiveCfg = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|x64.Build.0 = Release|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.ReleaseTest|x86.Build.0 = Release|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|x64.ActiveCfg = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|x64.Build.0 = Debug|x64 + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E}.XP32bit|x86.Build.0 = Debug|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|Any CPU.ActiveCfg = COM|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|Any CPU.Build.0 = COM|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|Mixed Platforms.Build.0 = COM|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|x64.ActiveCfg = COM|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|x64.Build.0 = COM|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|x86.ActiveCfg = COM|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.COM|x86.Build.0 = COM|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|x64.ActiveCfg = Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|x64.Build.0 = Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|x86.ActiveCfg = Debug|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug|x86.Build.0 = Debug|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|x64.Build.0 = PerformTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.PerformTest|x86.Build.0 = PerformTest|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Any CPU.Build.0 = Release|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|Mixed Platforms.Build.0 = Release|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|x64.ActiveCfg = Release|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|x64.Build.0 = Release|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|x86.ActiveCfg = Release|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.Release|x86.Build.0 = Release|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|Any CPU.ActiveCfg = ReleaseTest|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|Any CPU.Build.0 = ReleaseTest|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|Mixed Platforms.ActiveCfg = ReleaseTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|Mixed Platforms.Build.0 = ReleaseTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|x64.ActiveCfg = ReleaseTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|x64.Build.0 = ReleaseTest|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|x86.ActiveCfg = ReleaseTest|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.ReleaseTest|x86.Build.0 = ReleaseTest|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|x64.Build.0 = XP32bit|x64 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {8203ABB8-38E5-472E-A742-33F38B7A74A6}.XP32bit|x86.Build.0 = XP32bit|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|Any CPU.Build.0 = Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|Mixed Platforms.Build.0 = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|x64.ActiveCfg = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|x64.Build.0 = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|x86.ActiveCfg = Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.COM|x86.Build.0 = Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|x64.ActiveCfg = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|x64.Build.0 = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|x86.ActiveCfg = Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug|x86.Build.0 = Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|x64.Build.0 = PerformTest|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.PerformTest|x86.Build.0 = PerformTest|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|Any CPU.Build.0 = Release|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|Mixed Platforms.Build.0 = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|x64.ActiveCfg = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|x64.Build.0 = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|x86.ActiveCfg = Release|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.Release|x86.Build.0 = Release|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|x64.ActiveCfg = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|x64.Build.0 = Release|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|x86.ActiveCfg = Release|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.ReleaseTest|x86.Build.0 = Release|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|x64.Build.0 = XP32bit|x64 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {6CCDB656-C676-4360-BABA-C4596AAD175D}.XP32bit|x86.Build.0 = XP32bit|x86 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|Any CPU.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|Mixed Platforms.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|x64.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|x64.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|x86.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.COM|x86.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|x64.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|x64.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|x86.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug|x86.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|x64.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|x64.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.PerformTest|x86.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|Any CPU.Build.0 = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|Mixed Platforms.Build.0 = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|x64.ActiveCfg = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|x64.Build.0 = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|x86.ActiveCfg = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.Release|x86.Build.0 = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|x64.ActiveCfg = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|x64.Build.0 = Release|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.ReleaseTest|x86.Build.0 = Release|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|x64.ActiveCfg = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|x64.Build.0 = Debug|x64 + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB}.XP32bit|x86.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|Any CPU.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|Mixed Platforms.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|x64.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|x64.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|x86.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.COM|x86.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|x64.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|x64.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|x86.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug|x86.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|x64.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|x64.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.PerformTest|x86.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Any CPU.Build.0 = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|Mixed Platforms.Build.0 = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|x64.ActiveCfg = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|x64.Build.0 = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|x86.ActiveCfg = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.Release|x86.Build.0 = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|x64.ActiveCfg = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|x64.Build.0 = Release|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.ReleaseTest|x86.Build.0 = Release|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|x64.ActiveCfg = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|x64.Build.0 = Debug|x64 + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029}.XP32bit|x86.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|Any CPU.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|Mixed Platforms.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|x64.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|x64.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|x86.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.COM|x86.Build.0 = Debug|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|x64.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|x64.Build.0 = Debug|x64 {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|x86.ActiveCfg = Debug|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug|x86.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|x64.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|x64.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.PerformTest|x86.Build.0 = Debug|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|Any CPU.Build.0 = Release|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|Mixed Platforms.ActiveCfg = Release|x64 {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|Mixed Platforms.Build.0 = Release|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|x64.ActiveCfg = Release|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|x64.Build.0 = Release|x64 {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|x86.ActiveCfg = Release|Any CPU {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.Release|x86.Build.0 = Release|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|x64.ActiveCfg = Release|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|x64.Build.0 = Release|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.ReleaseTest|x86.Build.0 = Release|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|x64.ActiveCfg = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|x64.Build.0 = Debug|x64 + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {D0C8D887-ED52-40AB-A069-90BCE0E801E2}.XP32bit|x86.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|Any CPU.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|Mixed Platforms.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|x64.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|x64.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|x86.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.COM|x86.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|x64.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|x64.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|x86.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug|x86.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|x64.Build.0 = PerformTest|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|x86.ActiveCfg = PerformTest|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.PerformTest|x86.Build.0 = PerformTest|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Any CPU.Build.0 = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|Mixed Platforms.Build.0 = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|x64.ActiveCfg = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|x64.Build.0 = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|x86.ActiveCfg = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.Release|x86.Build.0 = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|x64.ActiveCfg = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|x64.Build.0 = Release|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.ReleaseTest|x86.Build.0 = Release|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|x64.ActiveCfg = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|x64.Build.0 = Debug|x64 + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {95A50087-99EE-4349-9A17-C547290DB42F}.XP32bit|x86.Build.0 = Debug|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|Any CPU.ActiveCfg = COM|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|Any CPU.Build.0 = COM|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|Mixed Platforms.Build.0 = COM|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|x64.ActiveCfg = COM|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|x64.Build.0 = COM|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|x86.ActiveCfg = COM|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.COM|x86.Build.0 = COM|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|x64.ActiveCfg = Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|x64.Build.0 = Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|x86.ActiveCfg = Debug|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug|x86.Build.0 = Debug|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|x64.Build.0 = PerformTest|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.PerformTest|x86.Build.0 = PerformTest|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|Any CPU.Build.0 = Release|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|Mixed Platforms.Build.0 = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|x64.ActiveCfg = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|x64.Build.0 = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|x86.ActiveCfg = Release|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.Release|x86.Build.0 = Release|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|x64.ActiveCfg = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|x64.Build.0 = Release|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|x86.ActiveCfg = Release|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.ReleaseTest|x86.Build.0 = Release|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|x64.Build.0 = XP32bit|x64 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {0E524D43-7B66-45CD-AA74-41D51AFC3D99}.XP32bit|x86.Build.0 = XP32bit|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Any CPU.Build.0 = Debug|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|Mixed Platforms.Build.0 = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x64.ActiveCfg = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x64.Build.0 = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x86.ActiveCfg = Debug|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.COM|x86.Build.0 = Debug|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x64.ActiveCfg = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x64.Build.0 = Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x86.ActiveCfg = Debug|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug|x86.Build.0 = Debug|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x64.Build.0 = PerformTest|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.PerformTest|x86.Build.0 = PerformTest|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Any CPU.Build.0 = Release|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|Mixed Platforms.Build.0 = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x64.ActiveCfg = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x64.Build.0 = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x86.ActiveCfg = Release|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.Release|x86.Build.0 = Release|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x64.ActiveCfg = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x64.Build.0 = Release|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x86.ActiveCfg = Release|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.ReleaseTest|x86.Build.0 = Release|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x64.Build.0 = XP32bit|x64 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {8BDD2789-96D4-43EA-AAD7-0F49D0347998}.XP32bit|x86.Build.0 = XP32bit|x86 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|Any CPU.Build.0 = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|Mixed Platforms.Build.0 = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|x64.ActiveCfg = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|x64.Build.0 = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|x86.ActiveCfg = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.COM|x86.Build.0 = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|x64.ActiveCfg = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|x64.Build.0 = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|x86.ActiveCfg = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug|x86.Build.0 = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|x64.Build.0 = PerformTest|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|x86.ActiveCfg = PerformTest|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.PerformTest|x86.Build.0 = PerformTest|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|Any CPU.Build.0 = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|Mixed Platforms.Build.0 = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|x64.ActiveCfg = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|x64.Build.0 = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|x86.ActiveCfg = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.Release|x86.Build.0 = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|x64.ActiveCfg = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|x64.Build.0 = Release|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.ReleaseTest|x86.Build.0 = Release|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|x64.ActiveCfg = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|x64.Build.0 = Debug|x64 + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0}.XP32bit|x86.Build.0 = Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|Any CPU.Build.0 = Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|Mixed Platforms.Build.0 = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|x64.ActiveCfg = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|x64.Build.0 = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|x86.ActiveCfg = Debug|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.COM|x86.Build.0 = Debug|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|x64.ActiveCfg = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|x64.Build.0 = Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|x86.ActiveCfg = Debug|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug|x86.Build.0 = Debug|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|x64.Build.0 = PerformTest|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.PerformTest|x86.Build.0 = PerformTest|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|Any CPU.Build.0 = Release|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|Mixed Platforms.Build.0 = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|x64.ActiveCfg = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|x64.Build.0 = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|x86.ActiveCfg = Release|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.Release|x86.Build.0 = Release|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|x64.ActiveCfg = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|x64.Build.0 = Release|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|x86.ActiveCfg = Release|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.ReleaseTest|x86.Build.0 = Release|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|x64.Build.0 = XP32bit|x64 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F}.XP32bit|x86.Build.0 = XP32bit|x86 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|Any CPU.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|Mixed Platforms.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|x64.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|x64.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|x86.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.COM|x86.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|Any CPU.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|x64.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|x64.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|x86.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug|x86.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|x64.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|x64.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.PerformTest|x86.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|Any CPU.ActiveCfg = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|Any CPU.Build.0 = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|Mixed Platforms.Build.0 = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|x64.ActiveCfg = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|x64.Build.0 = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|x86.ActiveCfg = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.Release|x86.Build.0 = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|x64.ActiveCfg = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|x64.Build.0 = Release|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.ReleaseTest|x86.Build.0 = Release|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|x64.ActiveCfg = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|x64.Build.0 = Debug|x64 + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406}.XP32bit|x86.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|Any CPU.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|Mixed Platforms.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|x64.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|x64.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|x86.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.COM|x86.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|x64.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|x64.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|x86.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug|x86.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|x64.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|x64.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.PerformTest|x86.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|Any CPU.Build.0 = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|Mixed Platforms.Build.0 = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|x64.ActiveCfg = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|x64.Build.0 = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|x86.ActiveCfg = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.Release|x86.Build.0 = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|x64.ActiveCfg = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|x64.Build.0 = Release|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.ReleaseTest|x86.Build.0 = Release|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|x64.ActiveCfg = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|x64.Build.0 = Debug|x64 + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {F7E3DF42-4D35-4A0C-9182-90438F9956E1}.XP32bit|x86.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|Any CPU.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|Mixed Platforms.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|x64.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|x64.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|x86.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.COM|x86.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|x64.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|x64.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|x86.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug|x86.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|x64.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|x64.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.PerformTest|x86.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|Any CPU.Build.0 = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|Mixed Platforms.Build.0 = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|x64.ActiveCfg = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|x64.Build.0 = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|x86.ActiveCfg = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.Release|x86.Build.0 = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|x64.ActiveCfg = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|x64.Build.0 = Release|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.ReleaseTest|x86.Build.0 = Release|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|x64.ActiveCfg = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|x64.Build.0 = Debug|x64 + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {8A619CD5-6C8D-420C-A132-7946C6F13E6E}.XP32bit|x86.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|Any CPU.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|Mixed Platforms.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|x64.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|x64.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|x86.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.COM|x86.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|x64.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|x64.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|x86.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug|x86.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|x64.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|x64.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.PerformTest|x86.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|Any CPU.Build.0 = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|Mixed Platforms.Build.0 = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|x64.ActiveCfg = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|x64.Build.0 = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|x86.ActiveCfg = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.Release|x86.Build.0 = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|x64.ActiveCfg = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|x64.Build.0 = Release|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.ReleaseTest|x86.Build.0 = Release|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|x64.ActiveCfg = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|x64.Build.0 = Debug|x64 + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {F581264D-3C20-4E4F-9E74-2606869AAAB7}.XP32bit|x86.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|Any CPU.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|Mixed Platforms.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|x64.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|x64.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|x86.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.COM|x86.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|x64.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|x64.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug|x86.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|x64.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|x64.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.PerformTest|x86.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|Any CPU.Build.0 = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|Mixed Platforms.Build.0 = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|x64.ActiveCfg = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|x64.Build.0 = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|x86.ActiveCfg = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.Release|x86.Build.0 = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|x64.ActiveCfg = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|x64.Build.0 = Release|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.ReleaseTest|x86.Build.0 = Release|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|x64.ActiveCfg = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|x64.Build.0 = Debug|x64 + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {AC434B18-4D7B-49BA-9AD5-0527C79E8297}.XP32bit|x86.Build.0 = Debug|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|Any CPU.ActiveCfg = COM|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|Any CPU.Build.0 = COM|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|Mixed Platforms.Build.0 = COM|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|x64.ActiveCfg = COM|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|x64.Build.0 = COM|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|x86.ActiveCfg = COM|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.COM|x86.Build.0 = COM|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|x64.ActiveCfg = Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|x64.Build.0 = Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|x86.ActiveCfg = Debug|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug|x86.Build.0 = Debug|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|x64.Build.0 = PerformTest|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.PerformTest|x86.Build.0 = PerformTest|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|Any CPU.Build.0 = Release|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|Mixed Platforms.Build.0 = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|x64.ActiveCfg = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|x64.Build.0 = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|x86.ActiveCfg = Release|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.Release|x86.Build.0 = Release|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|x64.ActiveCfg = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|x64.Build.0 = Release|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|x86.ActiveCfg = Release|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.ReleaseTest|x86.Build.0 = Release|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x64.Build.0 = XP32bit|x64 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {29617814-313E-409E-AA5D-59C78A9D4DF1}.XP32bit|x86.Build.0 = XP32bit|x86 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|Any CPU.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|Mixed Platforms.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|x64.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|x64.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|x86.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.COM|x86.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|x64.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|x64.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|x86.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug|x86.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug-local IIS-CUST|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug-local IIS-CUST|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug-local IIS-CUST|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug-local IIS-CUST|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|x64.ActiveCfg = Debug-local IIS-CUST|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|x64.Build.0 = Debug-local IIS-CUST|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|x86.ActiveCfg = Debug-local IIS-CUST|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Debug-local IIS-CUST|x86.Build.0 = Debug-local IIS-CUST|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|x64.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|x64.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.PerformTest|x86.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|Any CPU.Build.0 = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|Mixed Platforms.Build.0 = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|x64.ActiveCfg = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|x64.Build.0 = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|x86.ActiveCfg = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.Release|x86.Build.0 = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|x64.ActiveCfg = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|x64.Build.0 = Release|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.ReleaseTest|x86.Build.0 = Release|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|x64.ActiveCfg = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|x64.Build.0 = Debug|x64 + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {2C6378C6-6BA1-4CEE-8992-8404D8369A90}.XP32bit|x86.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|x64.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|x64.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|Any CPU.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|Mixed Platforms.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|x64.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|x64.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|x86.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.COM|x86.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|x64.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|x64.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|x86.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug|x86.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|x64.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|x64.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.PerformTest|x86.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|Any CPU.Build.0 = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|Mixed Platforms.Build.0 = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|x64.ActiveCfg = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|x64.Build.0 = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|x86.ActiveCfg = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.Release|x86.Build.0 = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|x64.ActiveCfg = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|x64.Build.0 = Release|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.ReleaseTest|x86.Build.0 = Release|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|x64.ActiveCfg = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|x64.Build.0 = Debug|x64 + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39}.XP32bit|x86.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|Any CPU.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|Mixed Platforms.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|x64.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|x64.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|x86.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.COM|x86.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|x64.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|x64.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|x86.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug|x86.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|x64.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|x64.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.PerformTest|x86.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|Any CPU.Build.0 = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|Mixed Platforms.Build.0 = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|x64.ActiveCfg = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|x64.Build.0 = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|x86.ActiveCfg = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.Release|x86.Build.0 = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|x64.ActiveCfg = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|x64.Build.0 = Release|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.ReleaseTest|x86.Build.0 = Release|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|x64.ActiveCfg = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|x64.Build.0 = Debug|x64 + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {60765BF4-6165-4F2F-8756-1C699826265D}.XP32bit|x86.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|Any CPU.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|x64.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|x64.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|x86.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.COM|x86.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|x64.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|x64.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|x86.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug|x86.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|x64.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.PerformTest|x86.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|Any CPU.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|x64.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|x64.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|x86.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.Release|x86.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|x64.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.ReleaseTest|x86.Build.0 = Release|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x64.Build.0 = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x86.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Any CPU.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x64.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x64.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x86.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x86.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x64.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x64.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x86.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x86.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x64.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x86.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Any CPU.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x64.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x64.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x86.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x86.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x64.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x86.Build.0 = Release|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x64.Build.0 = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x86.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Any CPU.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x64.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x64.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x86.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x86.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x64.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x64.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x86.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x86.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x64.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x86.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Any CPU.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x64.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x64.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x86.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x86.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x64.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x86.Build.0 = Release|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x64.Build.0 = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x86.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Any CPU.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x64.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x64.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x86.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.COM|x86.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x64.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x64.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x86.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug|x86.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x64.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.PerformTest|x86.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Any CPU.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x64.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x64.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x86.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.Release|x86.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x64.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.ReleaseTest|x86.Build.0 = Release|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x64.Build.0 = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x86.Build.0 = Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Any CPU.ActiveCfg = COM|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Any CPU.Build.0 = COM|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Mixed Platforms.ActiveCfg = COM|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Mixed Platforms.Build.0 = COM|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x64.ActiveCfg = COM|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x64.Build.0 = COM|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x86.ActiveCfg = COM|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x86.Build.0 = COM|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x64.ActiveCfg = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x64.Build.0 = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x86.ActiveCfg = Debug|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x86.Build.0 = Debug|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x64.ActiveCfg = PerformTest|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x64.Build.0 = PerformTest|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x86.ActiveCfg = PerformTest|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x86.Build.0 = PerformTest|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Any CPU.Build.0 = Release|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Mixed Platforms.Build.0 = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x64.ActiveCfg = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x64.Build.0 = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x86.ActiveCfg = Release|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x86.Build.0 = Release|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x64.ActiveCfg = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x64.Build.0 = Release|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x86.ActiveCfg = Release|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x86.Build.0 = Release|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x64.ActiveCfg = XP32bit|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x64.Build.0 = XP32bit|x64 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x86.ActiveCfg = XP32bit|x86 + {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x86.Build.0 = XP32bit|x86 + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Any CPU.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x64.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x64.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x86.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x86.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x64.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x64.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x86.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x86.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x64.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x86.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Any CPU.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x64.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x64.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x86.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x86.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x64.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x86.Build.0 = Release|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x64.Build.0 = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x86.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Any CPU.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x64.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x64.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x86.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x86.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x64.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x64.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x86.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x86.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x64.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x86.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Any CPU.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x64.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x64.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x86.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x86.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x64.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x86.Build.0 = Release|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x64.Build.0 = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x86.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|Any CPU.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|Mixed Platforms.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|Mixed Platforms.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|x64.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|x64.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|x86.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.COM|x86.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|Mixed Platforms.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|x64.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|x64.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|x86.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug|x86.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|Mixed Platforms.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|Mixed Platforms.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|x64.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|x64.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.PerformTest|x86.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|Any CPU.Build.0 = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|Mixed Platforms.ActiveCfg = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|Mixed Platforms.Build.0 = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|x64.ActiveCfg = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|x64.Build.0 = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|x86.ActiveCfg = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.Release|x86.Build.0 = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|x64.ActiveCfg = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|x64.Build.0 = Release|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.ReleaseTest|x86.Build.0 = Release|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|Mixed Platforms.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|Mixed Platforms.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|x64.ActiveCfg = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|x64.Build.0 = Debug|x64 + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {20F137FD-C25E-42B7-A68F-58C746475897}.XP32bit|x86.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Any CPU.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Any CPU.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|Mixed Platforms.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x64.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x64.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x86.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.COM|x86.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x64.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x64.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x86.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug|x86.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Any CPU.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x64.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x64.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x86.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.PerformTest|x86.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Any CPU.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x64.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x64.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x86.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.Release|x86.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x64.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.ReleaseTest|x86.Build.0 = Release|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Any CPU.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x64.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x64.Build.0 = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x86.ActiveCfg = Debug|Any CPU + {70398B99-B134-4BBD-968B-7399B70C3CE2}.XP32bit|x86.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {04201E95-90A0-4B73-A72F-379739B2A3AE} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {2E139F63-B6FE-4EA9-A098-85364FE9B26C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {95A50087-99EE-4349-9A17-C547290DB42F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {315E94B8-B82F-4B25-B5BD-297DF3BC1D54} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {F4AAF7E6-7333-4284-B735-E32DEB076C64} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {6D2777BB-7A88-466D-A49B-3266F9BF0160} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {1B02C79E-0B19-43E2-8F6B-71EF0C786C97} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {4B88B0D3-E791-4774-9521-EABEACDC420E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {8203ABB8-38E5-472E-A742-33F38B7A74A6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {72037E89-4F63-4B3F-BEFF-4138E578CE99} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {F013A56B-7BE6-4852-9CD8-B971CD1ADD0C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {04201E95-90A0-4B73-A72F-379739B2A3AE} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {72037E89-4F63-4B3F-BEFF-4138E578CE99} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {9EB1F659-6F73-4F65-BCAB-4114FD94F5FC} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {2E139F63-B6FE-4EA9-A098-85364FE9B26C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {4B88B0D3-E791-4774-9521-EABEACDC420E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {1B02C79E-0B19-43E2-8F6B-71EF0C786C97} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {D0C859D9-D55E-4E85-AC50-0FF31B1CE50D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {6D2777BB-7A88-466D-A49B-3266F9BF0160} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F4AAF7E6-7333-4284-B735-E32DEB076C64} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {D32ED790-7E1E-435B-8619-9F906C992066} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {26AFCF1E-1287-48B8-A506-32B1E8A0DD0E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8203ABB8-38E5-472E-A742-33F38B7A74A6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {6CCDB656-C676-4360-BABA-C4596AAD175D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {2FD60CF1-45CD-4060-B8E5-4F39FBA7F1CB} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {A33E3C6D-EAAE-4A20-A0EE-F9E6922FD029} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {D0C8D887-ED52-40AB-A069-90BCE0E801E2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {95A50087-99EE-4349-9A17-C547290DB42F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {0E524D43-7B66-45CD-AA74-41D51AFC3D99} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8BDD2789-96D4-43EA-AAD7-0F49D0347998} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {63E0AC5E-B7C8-4363-A2FE-BE489E648FF0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {91DEF0C0-AA4F-40AE-8F18-CB717FDE7E7F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {94CA71F3-C5D7-4EC6-BA47-FA8EEA3C9406} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F7E3DF42-4D35-4A0C-9182-90438F9956E1} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8A619CD5-6C8D-420C-A132-7946C6F13E6E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F581264D-3C20-4E4F-9E74-2606869AAAB7} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {AC434B18-4D7B-49BA-9AD5-0527C79E8297} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {29617814-313E-409E-AA5D-59C78A9D4DF1} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {2C6378C6-6BA1-4CEE-8992-8404D8369A90} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {60765BF4-6165-4F2F-8756-1C699826265D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {A83696BF-D8A2-4809-8424-CFE172AED5B6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {B6A19B80-0F0F-434C-A754-A7712FC208B2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {B5DA260C-71CC-45CA-B79E-D1B376AF718C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {BA17D20E-0CEB-4B27-9772-2392BD750ED5} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {D6B81C60-2763-4C4D-989F-90822F53B01A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {00748F11-4B49-4D8B-93C4-4A11A210CCE2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {20F137FD-C25E-42B7-A68F-58C746475897} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {70398B99-B134-4BBD-968B-7399B70C3CE2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {7B7A28C9-B78C-45CA-9084-7C009905DB82} diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs index 559566fca..7b2de0854 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/OptoHeadTest.cs @@ -14,7 +14,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication { //protected static readonly ILog rfidDataLogger = LogManager.GetLogger("RfidData"); private static readonly ILog log = LogManager.GetLogger(typeof(OptoHeadTest)); - + private GenesisSmartReader genesisHead; //private SerialDriver serialDriver; @@ -30,6 +30,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication StreamingPort = new PublicModels.GciPortConfig{ PortName = $"COM{genesidHead.OptoComPortNr}", Type = string.Empty} }; genesidHead?.CommInterfaceBridge.InitSlotAsync(request); + genesidHead?.CommInterfaceBridge?.UpdateSlotAsync(request); slotDefined = true; } @@ -112,8 +113,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication if (genesisHead.CommInterfaceBridge == null) return string.Empty; - - if (!IsSlotDefined) { BuildConnection(genesisHead); } + + if (!IsSlotDefined) + { + BuildConnection(genesisHead); + } GciBridge gciBridge = genesisHead.CommInterfaceBridge; log.Debug("ReadRequest_PCB() - GciBridge created"); @@ -144,7 +148,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// public bool SetTestMode() { - if (!IsSlotDefined) { BuildConnection(genesisHead); } + if (!IsSlotDefined) + { + BuildConnection(genesisHead); + } + log.Debug("SetTestMode called for iHead: " + genesisHead.ToString()); bool activityModeActive = SetActivityMode_Active(); bool optActiveMode = SetOptTestMode(); @@ -160,7 +168,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// public bool SetActiveMode() { - if (!IsSlotDefined) { BuildConnection(genesisHead); } + if (!IsSlotDefined) + { + BuildConnection(genesisHead); + } + log.Debug("SetActiveMode called for iHead: " + genesisHead.ToString()); bool optActiveMode = SetOptActiveMode(genesisHead); //bool activityModeIdle = SetActivityMode_Idle(); @@ -200,7 +212,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication bool testMode = SetTestMode(); isTestModeSuccessful = testMode; return testMode ? "Set Test Mode - OK" : "Set Test Mode - FAILED"; - }catch (Exception ex) + } + catch (Exception ex) { log.Error("SetTestMode() - Exception:" + ex.StackTrace); return "Set Test Mode - Exception"; @@ -217,7 +230,6 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication /// private bool SetOptTestMode() { - if (genesisHead.DebugLevel == DebugMode.Simulate) { return true; @@ -273,9 +285,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // log.Error("SetActiveMode() - Exception:" + ex.StackTrace); // return "Set Active Mode - Exception"; // } - + return "Set Active Mode - No Implemented Exception"; } + /// /// Set Optical -> Active mode /// diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs index fcd48a0d5..2ca6f3693 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using GenesisCordonelInterface.API; using log4net; @@ -13,19 +14,19 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication public class RadioService { private static readonly ILog log = LogManager.GetLogger(typeof(RadioService)); - + static string okResponse = "Command complete, no errors"; static string errorResponse = "Unable to execute"; - + private GciBridge _bridge; public RadioService(GciBridge genesisHeadCommInterfaceBridgeComponent) { - this._bridge = genesisHeadCommInterfaceBridgeComponent; - log.Debug("RadioService created with GciBridge= " + genesisHeadCommInterfaceBridgeComponent + ""); + this._bridge = genesisHeadCommInterfaceBridgeComponent; + log.Debug("RadioService created with GciBridge= " + genesisHeadCommInterfaceBridgeComponent + ""); } - public async Task ReadRequest_PCBAsync(GenesisSmartReader iHead) + public async Task ReadRequest_PCBAsyn1(GenesisSmartReader iHead) { if (iHead?.CommInterfaceBridge == null) return null; @@ -57,8 +58,117 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication return null; } - + public async Task ReadRequest_PCBAsync(GenesisSmartReader iHead) + { + log.Debug("ReadRequest_PCB called for iHead: " + iHead); + + if (iHead?.CommInterfaceBridge == null) + return null; + + using var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1)); + + PublicModels.GciConnectResult result; + + try + { + log.Debug("ReadRequest_PCB() - calling ConnectAsync"); + + result = await iHead.CommInterfaceBridge + .ConnectAsync(iHead.GetSlotNr, cts.Token) + .ConfigureAwait(false); + + log.Debug("ReadRequest_PCB() - ConnectAsync completed"); + } + catch (OperationCanceledException) + { + log.Debug("ReadRequest_PCB() - ConnectAsync timeout/cancelled"); + return null; + } + catch (Exception ex) + { + log.Error("ReadRequest_PCB() - ConnectAsync failed", ex); + return null; + } + + if (result == null || !result.Success || !result.IsLoggedOn) + { + log.Debug("ReadRequest_PCB() - invalid result: " + result); + return null; + } + + string pcbId = result.PcbId; + + if (string.IsNullOrEmpty(pcbId)) + { + log.Debug("ReadRequest_PCB() - pcbId is empty"); + return null; + } + + if (iHead.ConfigStruct != null) + { + iHead.ConfigStruct.PCBNumberString = pcbId; + log.Debug("ReadRequest_PCB() - PCBNumberString: " + pcbId); + } + + return pcbId; + } + public string ReadRequest_PCB(ref GenesisSmartReader iHead) + { + var head = iHead; // <-- copy to local (no longer ref) + + log.Debug("ReadRequest_PCB called for iHead: " + head); + + if (head?.CommInterfaceBridge == null) + return null; + + try + { + var connectTask = Task.Run(async () => + await head.CommInterfaceBridge.ConnectAsync(head.GetSlotNr) + ); + + var completedTask = Task.WhenAny( + connectTask, + Task.Delay(TimeSpan.FromMinutes(1)) + ).GetAwaiter().GetResult(); + + if (completedTask != connectTask) + { + log.Debug("ReadRequest_PCB() - Timeout happened"); + return null; + } + + var result = connectTask.GetAwaiter().GetResult(); + log.Debug("ReadRequest_PCB() - Result: " + result); + + if (result == null || !result.Success || !result.IsLoggedOn) + return null; + + var pcbId = result.PcbId; + log.Debug("Result pcbId: " + pcbId); + + if (!string.IsNullOrEmpty(pcbId) && head.ConfigStruct != null) + { + head.ConfigStruct.PCBNumberString = pcbId; + log.Debug("Result set to ConfigStruct.PCBNumberString = " + head.ConfigStruct.PCBNumberString); + } + + return pcbId; + } + catch (Exception ex) + { + log.Error("ReadRequest_PCB() failed", ex); + return null; + } + } + + public string ReadRequest_PCB2(ref GenesisSmartReader iHead) + { + return ReadRequest_PCBAsync(iHead).GetAwaiter().GetResult(); + } + + public string ReadRequest_PCB1(ref GenesisSmartReader iHead) { log.Debug("ReadRequest_PCB called for iHead: " + iHead.ToString()); if (iHead?.CommInterfaceBridge == null) @@ -72,7 +182,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication connectTask, Task.Delay(TimeSpan.FromMinutes(1)) ).GetAwaiter().GetResult(); - + log.Debug("ReadRequest_PCB() - CompletedTask: " + completedTask); // Timeout happened @@ -98,7 +208,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication if (iHead.ConfigStruct != null) { iHead.ConfigStruct.PCBNumberString = pcbId; - log.Debug("ReadRequest_PCB() - iHead.ConfigStruct.PCBNumberString: " + iHead.ConfigStruct.PCBNumberString); + log.Debug("ReadRequest_PCB() - iHead.ConfigStruct.PCBNumberString: " + + iHead.ConfigStruct.PCBNumberString); } return pcbId; @@ -107,7 +218,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication log.Debug("ReadRequest_PCB() - pcbId is empty"); return null; } - + public ProtocolStatuses GetActivityStatusMode(GenesisSmartReader iHead) { if (iHead?.CommInterfaceBridge == null) @@ -136,7 +247,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication return ProtocolStatuses.Active; } - + public DiagnosticLedState SetOptoStatusMode(GenesisSmartReader iHead, DiagnosticLedState opthoStatusMode) { if (iHead?.CommInterfaceBridge == null) @@ -165,12 +276,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication iHead.ConfigStruct.PCBNumberString = pcbResult.PcbId; } - + return DiagnosticLedState.StatusUnknown; - } - + private static ushort SafeIntToUShort(int value) { if (value < ushort.MinValue || value > ushort.MaxValue) @@ -179,7 +289,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication return (ushort)value; } - + public string GetVersion(GenesisSmartReader iHead) { if (iHead?.CommInterfaceBridge == null) @@ -201,11 +311,11 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // } // return version; // } - + return string.Empty; } - + public bool SetActivityMode_Active(GenesisSmartReader iHead) { if (iHead?.CommInterfaceBridge == null) @@ -218,7 +328,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) return false; - + //Set LED to state 4 // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); // if (!string.IsNullOrEmpty(version)) @@ -229,10 +339,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // } // return true; // } - + return false; } - + public bool SetActivityMode_Idle(GenesisSmartReader iHead) { if (iHead?.CommInterfaceBridge == null) @@ -245,7 +355,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) return false; - + //Set Activity State Idle // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); // if (!string.IsNullOrEmpty(version)) @@ -256,10 +366,10 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // } // return true; // } - + return false; } - + public bool SetOptTestMode(GenesisSmartReader iHead) { if (iHead?.CommInterfaceBridge == null) @@ -272,7 +382,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication if (connectResult == null || !connectResult.Success || !connectResult.IsLoggedOn) return false; - + //Set LED to state 4 // string version = _bridge?.GciExternalInterface?.GetPcbId(iHead.GetSlotNr); // if (!string.IsNullOrEmpty(version)) @@ -283,9 +393,8 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // } // return true; // } - + return false; - } /// @@ -316,7 +425,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // } // return true; // } - + return false; } @@ -342,7 +451,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication // } // return version; // } - + return string.Empty; } } diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs index a586c95a2..93192875f 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/implementations/GenesisImplHeadTestCtrl.cs @@ -16,11 +16,15 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations { private static readonly ILog log = LogManager.GetLogger(typeof(GenesisSmartReader)); private static readonly ILog logStream = LogManager.GetLogger("StreamData"); - + Thread optoThread; //GenesisSmartReader _genesiHead; - public GenesisSmartReader Head { get { return ISmartReader as GenesisSmartReader;} } + public GenesisSmartReader Head + { + get { return ISmartReader as GenesisSmartReader; } + } + public ISmartReader ISmartReader { get; set; } public bool stopWorkerThread { get; set; } @@ -42,7 +46,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations optoThread.Abort(); } } - + private const string StrReadPcbCmd = "ReadPCB"; private const string StrSetTestModeCmd = "SetTestMode"; private const string StrSetActiveModeCmd = "SetActiveMode"; @@ -55,33 +59,33 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations public enum Operations { - [Description(StrReadPcbCmd)]ReadPcbCmd, - [Description(StrSetTestModeCmd)]SetTestModeCmd, - [Description(StrSetActiveModeCmd)]SetActiveModeCmd, - [Description(StrReadOptoDataCmd)]ReadOptoDataCmd, - [Description(StrStopReadOptoDataCmd)]StopReadOptoDataCmd, - [Description(StrResetNfcHeadCmd)]ResetNfcHeadCmd, - [Description(StrSetNfcHeadCmd)]SetNfcHeadCmd, - [Description(StrSetRfidHeadCmd)]SetRfidHeadCmd, - [Description(StrEmptyCmd)]EmptyCmd + [Description(StrReadPcbCmd)] ReadPcbCmd, + [Description(StrSetTestModeCmd)] SetTestModeCmd, + [Description(StrSetActiveModeCmd)] SetActiveModeCmd, + [Description(StrReadOptoDataCmd)] ReadOptoDataCmd, + [Description(StrStopReadOptoDataCmd)] StopReadOptoDataCmd, + [Description(StrResetNfcHeadCmd)] ResetNfcHeadCmd, + [Description(StrSetNfcHeadCmd)] SetNfcHeadCmd, + [Description(StrSetRfidHeadCmd)] SetRfidHeadCmd, + [Description(StrEmptyCmd)] EmptyCmd } - - - private static readonly Dictionary ItemsForIperlOperations = new Dictionary - { - {"Read PCB", Operations.ReadPcbCmd}, - {"Set Test Mode", Operations.SetTestModeCmd}, - {"Set Active Mode", Operations.SetActiveModeCmd}, + + private static readonly Dictionary ItemsForIperlOperations = + new Dictionary + { + { "Read PCB", Operations.ReadPcbCmd }, + { "Set Test Mode", Operations.SetTestModeCmd }, + { "Set Active Mode", Operations.SetActiveModeCmd }, #if TRUE - {"Start Read Opto Data", Operations.ReadOptoDataCmd}, - {"Stop Read Opto Data", Operations.StopReadOptoDataCmd}, + { "Start Read Opto Data", Operations.ReadOptoDataCmd }, + { "Stop Read Opto Data", Operations.StopReadOptoDataCmd }, #endif - {" ", Operations.EmptyCmd}, - {"Reset NFC Head", Operations.ResetNfcHeadCmd}, - {"Set NFC Head Interface", Operations.SetNfcHeadCmd}, - {"Set RFID Head interface", Operations.SetRfidHeadCmd} - }; + { " ", Operations.EmptyCmd }, + { "Reset NFC Head", Operations.ResetNfcHeadCmd }, + { "Set NFC Head Interface", Operations.SetNfcHeadCmd }, + { "Set RFID Head interface", Operations.SetRfidHeadCmd } + }; public (string Name, string Value)[] GetComboOperationsPairs() { @@ -94,16 +98,17 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations a.RfidOutputListBox.Items.Clear(); log.Debug($"CommandTestButtonClick called: {a?.RfidCommandComboBox?.SelectedValue}"); - + using (Tools.LogChecker logChecker = new Tools.LogChecker("RfidData", log4net.Core.Level.Debug)) { ListItem rfidListItem = new ListItem(); rfidListItem.Attributes.Add("style", "font-weight:bold"); Operations selectedOperation; - if(!ItemsForIperlOperations.TryGetValue((string)a.RfidCommandComboBox.SelectedValue, out selectedOperation)) + if (!ItemsForIperlOperations.TryGetValue((string)a.RfidCommandComboBox.SelectedValue, + out selectedOperation)) selectedOperation = Operations.EmptyCmd; bool isTestModeSuccessful = false; - switch (selectedOperation) + switch (selectedOperation) { case Operations.ReadPcbCmd: rfidListItem.Text = $"PCB: {Head.OptoHeadTest.ReadRequest_PCB()}"; @@ -121,7 +126,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.implementations break; case Operations.SetActiveModeCmd: - rfidListItem.Text = Head.OptoHeadTest.SetActiveMode( ref isTestModeSuccessful); + rfidListItem.Text = Head.OptoHeadTest.SetActiveMode(ref isTestModeSuccessful); stopWorkerThread = true; a.ISmartReader.StopDataStreamProcessing(); // close opto port break; diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 6620f003b..5e713a976 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -1,4487 +1,4486 @@  - - Debug - AnyCPU - 8.0.50727 - 2.0 - {8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48} - WinExe - Properties - TBF - TBF - v4.8 - - - 2.0 - - - false - 8 - D:\_Sensus\Temp\Bin\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 1 - 2.12.497.%2a - false - true - true - true - - - true - full - false - bin\Debug\ - TRACE;DEBUG;CAMERA;LANG_PL;IPERL; - prompt - 4 - true - AnyCPU - false - - - pdbonly - true - bin\Release\ - TRACE;CAMERA;LANG_PL;IPERL; - prompt - 4 - AnyCPU - true - false - - - true - bin\Debug\ - TRACE;DEBUG;CAMERA;LANG_PL;IPERL; - full - AnyCPU - prompt - MinimumRecommendedRules.ruleset - true - false - - - bin\x86\Release\ - TRACE;CAMERA;LANG_PL;IPERL;LIVELOGDIAG_FlowMeter_cs;LIVELOGDIAG_RegValve_cs - true - pdbonly - AnyCPU - prompt - MinimumRecommendedRules.ruleset - true - false - - - TBF.Program - - - 8B49DA64678D1638378388DFE38F6441FE720177 - - - TBF_TemporaryKey.pfx - - - false - - - LocalIntranet - - - Properties\app.manifest - - - false - - - TBF_icon.ico - - - - ..\packages\Castle.Core.5.1.1\lib\net462\Castle.Core.dll - - - ..\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll - - - ..\packages\Iesi.Collections.4.0.0.4000\lib\net40\Iesi.Collections.dll - - - ..\packages\log4net.2.0.15\lib\net45\log4net.dll - - - ..\packages\Common\Logic.ProductionToProductMapper.dll - - - - ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll - - - ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll - - - ..\packages\NHibernate.4.0.4.4000\lib\net40\NHibernate.dll - - - ..\packages\NLog.5.2.2\lib\net46\NLog.dll - - - False - ..\packages\Oracle\Oracle.DataAccess.dll - - - ..\packages\Oracle.ManagedDataAccess.19.11.0\lib\net40\Oracle.ManagedDataAccess.dll - True - - - ..\packages\Renci.SshNet\Renci.SshNet.dll - - - - - - - - - - - - ..\packages\System.Drawing.Common.9.0.5\lib\net462\System.Drawing.Common.dll - - - - - ..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll - - - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - - ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll - - - - - - - ..\packages\Common\Xylem.Common.CommonCore.dll - - - False - ..\packages\Common\Xylem.Common.Hardware.Interfaces.Ports.PortCore.dll - - - ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.dll - - - ..\packages\Common\Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore.dll - - - ..\packages\Common\Xylem.Common.Hardware.WaterMeter.WaterMeterCore.dll - - - ..\packages\Common\Xylem.Common.Hardware.WaterMeter.WaterMeterRegisters.dll - - - ..\packages\Common\Xylem.Common.Metrology.Measurements.dll - - - False - ..\packages\Common\Xylem.Common.Utils.Logging.dll - - - - - Component - - - - - - - - - - - - - - - UserControl - - - GciBridgeCfgCtrl.cs - - - - - - UserControl - - - MeterBatchConfigPanel.cs - - - UserControl - - - WorkerDebugPanel.cs - - - - - - - Form - - - MainForm.cs - - - UserControl - - - MainView.cs - - - UserControl - - - UniDataStorageReaderInterfaceView.cs - - - UserControl - - - CombinedInterfaceView.cs - - - UserControl - - - ConfigurationView.cs - - - UserControl - - - GenesisCordonelInterfaceView.cs - - - - - UserControl - - - PumpCfgCtrl.cs - - - - - - UserControl - - - PumpCfgCtrl.cs - - - - - - - - - UserControl - - - ValveCfgCtrl.cs - - - - - - UserControl - - - ValveCfgCtrl.cs - - - - UserControl - - - - UserControl - - - TestMethodCfgCtrl.cs - - - UserControl - - - ComponentCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - EvaporationCfgCtrl.cs - - - - - - Form - - - TestStartEndForm.cs - - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBeginningForm.cs - - - - - - Form - - - TestStartEndForm.cs - - - - Form - - - CycleBeginningForm.cs - - - - - - Form - - - TestStartEndForm.cs - - - - - UserControl - - - Barcode.cs - - - UserControl - - - Keyboard.cs - - - UserControl - - - OkNok.cs - - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - Form - - - FormForMechanicalMeters.cs - - - Form - - - FormForMechanicalMetersWithTracing.cs - - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - Form - - - TestStartEndForm.cs - - - Form - - - AdvancedFixedStartTestForm.cs - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - Form - - - TestStartEndForm.cs - - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - - Form - - - TestStartEndForm.cs - - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - Form - - - TestStartEndForm.cs - - - Form - - - CycleBgEnForm.cs - - - - - - - - - Form - - - TestStartEndForm.cs - - - - - - - - - - - - - - UserControl - - - RegulValveCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - ExamplesFrm.cs - - - UserControl - - - ReaderCfgCtrl.cs - - - - - - - - - - - - - UserControl - - - MultimeterCfgCtrl.cs - - - - - - UserControl - - - TempMeterCfgCtrl.cs - - - - - UserControl - - - BalanceCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - PumpCfgCtrl.cs - - - - - - UserControl - - - PumpCfgCtrl.cs - - - Form - - - ConfirmationForm.cs - - - - - UserControl - - - QuidoRSCfgCtrl.cs - - - - - - - - - - - - UserControl - - - TankSelectorCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - NetadapterCfgCtrl.cs - - - - - - - UserControl - - - NetadapterCfgCtrl.cs - - - - - - UserControl - - - NetadapterCfgCtrl.cs - - - - - UserControl - - - CameraCfgCtrl.cs - - - - - - - - - - - - - - - - Form - - - TerminalDlg.cs - - - - - UserControl - - - CameraCfgCtrl.cs - - - - - - - - - - Form - - - TerminalDlg.cs - - - - Form - - - DisplayForm.cs - - - - - - UserControl - - - DisplayCfgCtrl.cs - - - - - UserControl - - - CameraCfgCtrl.cs - - - - - - - - - - - - - - UserControl - - - RoiCfgCtrl.cs - - - - - - - UserControl - - - RoiCfgCtrl.cs - - - - - - - UserControl - - - RoiCfgCtrl.cs - - - - - - UserControl - - - RoiCfgCtrl.cs - - - - - - - UserControl - - - AmbientCfgCtrl.cs - - - - - - - - - - - UserControl - - - RestApiCfgCtrl.cs - - - - - - - - - - - - - Form - - - LargeMessageBoxForm.cs - - - - - - - - - - - - - - - - - - - - Form - - - ExamplesFrm.cs - - - UserControl - - - WriterCfgCtrl.cs - - - - UserControl - - - WriteDBCfgCtrl.cs - - - - - - - UserControl - - - TracingCfgCtrl.cs - - - - - - - - UserControl - - - SaveDiverterCorrCfgCtrl.cs - - - - - - UserControl - - - SaveFlowmeterCorrCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - WriterCfgCtrl.cs - - - - - - - - UserControl - - - WriterCfgCtrl.cs - - - - - - - UserControl - - - ArchiverCfgCtrl.cs - - - - - - - - - - - UserControl - - - WriterCfgCtrl.cs - - - - - - UserControl - - - WriterCfgCtrl.cs - - - - - - - - UserControl - - - WriterCfgCtrl.cs - - - Form - - - HeaderFooterDlg.cs - - - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - Form - - - PrinterTestBenchComponentSelectorDlg.cs - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - - - - - - UserControl - - - PrinterCfgCtrl.cs - - - - - UserControl - - - WriterCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - RRCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - GenesisHeadTestCtrl.cs - - - - UserControl - - - GenesisCfgCtrl.cs - - - - - - - - - - - - - - - - - - UserControl - - - - - UserControl - - - - - - UserControl - - - IPerlUniCfgCtrl.cs - - - UserControl - - - IperlUniHeadTestCtrl.cs - - - - - - - - - - - - UserControl - - - IPerlUniCfgCtrl.cs - - - UserControl - - - IperlUniHeadTestCtrl.cs - - - Form - - - CycleBeginningForm.cs - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - Form - - - TestStartEndForm.cs - - - - - - - - - - UserControl - - - RRCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - UniHeadTestCtrl.cs - - - UserControl - - - PoseidonCfgCtrl.cs - - - UserControl - - - PoseidonHeadTestCtrl.cs - - - - - - - - UserControl - - - RRCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - UserControl - - - RRCfgCtrl.cs - - - - - - - - - - - - Component - - - - - - - - - - - - - - - - - - - Form - - - WMErrorsForm12.cs - - - Form - - - WMErrorsForm24.cs - - - Form - - - WMErrorsForm48.cs - - - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - Form - - - CycleDlg.cs - - - Component - - - - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - Component - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - - - - - - - - - - - - - - UserControl - - - - UserControl - - - - - - - - - - - - - - UserControl - - - - - - Component - - - - - - - - Form - - - S640CommForm.cs - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - UserControl - - - GrabImageCfgCtrl.cs - - - - - - - - UserControl - - - CfgCtrl.cs - - - - - - - - Form - - - ManualEntryForm.cs - - - - UserControl - - - ManualEntryCfgCtrl.cs - - - - - - - - - - - Form - - - ManualPulsesForm.cs - - - Form - - - ManualPulsesForm12.cs - - - Form - - - ManualPulsesForm24.cs - - - - - - - - Form - - - WMPulsesForm.cs - - - Form - - - WMPulsesForm12.cs - - - Form - - - WMPulsesForm24.cs - - - - - - UserControl - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - UserControl - - - DiverterCfgCtrl.cs - - - - - - - - - - - - - - - - - - - UserControl - - - RegValveCfgCtrl.cs - - - - - - - - - - UserControl - - - RegValveCfgCtrl.cs - - - - - - - - UserControl - - - RegValveTandemCfgCtrl.cs - - - - - - - - - - UserControl - - - RegValveCfgCtrl.cs - - - - - - - - - - - - - - - - - Form - - - SmartCommunicationForm.cs - - - - - - - - - - - Form - - - CoverTestForm.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - WaterLevelForm.cs - - - - - - - - - UserControl - - - TankCfgCtrl.cs - - - - - - UserControl - - - WaterMeterCfgCtrl.cs - - - - - - - - - - UserControl - - - PumpCfgCtrl.cs - - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - Form - - - CycleBeginningForm.cs - - - Form - - - CycleEndForm.cs - - - - - UserControl - - - EntryFormCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - - Form - - - AskYesNoForm.cs - - - Form - - - MessageBoxForm.cs - - - - - - - - - - - - - - Form - - - WMErrorsForm.cs - - - - - - UserControl - - - - - - - - UserControl - - - TestMethodCfgCtrl.cs - - - - - - - - - - - - - - - - - - - - - - - True - True - Strings.cs.resx - - - True - True - Strings.de.resx - - - True - True - Strings.zh-CN.resx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - Strings.resx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - ComponentParametersDlg.cs - - - Form - - - ComponentsManagerDlg.cs - - - Form - - - SelectComponentClassDlg.cs - - - Form - - - EditSchDrawingDlg.cs - - - UserControl - - - CalibCertificateCtrl.cs - - - - Form - - - MetrologyDlg.cs - - - UserControl - - - MetrologyDlgAdjustableScaleTab.cs - - - UserControl - - - MetrologyDlgScaleTab.cs - - - UserControl - - - MetrologyDlgBuoyancyTab.cs - - - UserControl - - - MetrologyDlgDensityTab.cs - - - UserControl - - - MetrologyDlgDiverterTab.cs - - - UserControl - - - MetrologyDlgEvaporationTab.cs - - - UserControl - - - MetrologyDlgFlowMeterTab.cs - - - UserControl - - - MetrologyDlgLevelMeterTab.cs - - - UserControl - - - MetrologyDlgPlatinumResistanceTMeterTab.cs - - - UserControl - - - MetrologyDlgPressMeterTab.cs - - - UserControl - - - MetrologyDlgTempMeterTab.cs - - - Component - - - Form - - - PathsDlg.cs - - - Component - - - Component - - - Component - - - Component - - - Form - - - TestProfileDlg.cs - - - Component - - - Form - - - TestProfilesDlg.cs - - - Form - - - TransitionsDlg.cs - - - Component - - - Component - - - - UserControl - - - UncertntDlgDensityTab.cs - - - UserControl - - - UncertntDlgScaleTab.cs - - - UserControl - - - UncertntDlgPressMeterTab.cs - - - UserControl - - - UncertntDlgTempMeterTab.cs - - - Form - - - UncertaintiesDlg.cs - - - UserControl - - - - UserControl - - - CalendarTabPageCtrl.cs - - - - - - - Form - - - EventDetailsForm.cs - - - UserControl - - - EventToolTipCtrl.cs - - - - UserControl - - - UserControl - - - - UserControl - - - ScrollPanelCtrl.cs - - - UserControl - - - UserControl - - - CameraPictureCtrl.cs - - - UserControl - - - CameraPictureCtrl2.cs - - - UserControl - - - CameraPictureCtrl3.cs - - - UserControl - - - CameraPictureFullCtrl.cs - - - - UserControl - - - PicturesTabPageCtrl.cs - - - - Form - - - DummyDlg.cs - - - - - - - - - UserControl - - - GraphsTabPageCtrl.cs - - - Form - - - AboutDlg.cs - - - UserControl - - - EventLogsTabPageCtrl.cs - - - Form - - - MainWnd.cs - - - - - - Form - - - ProcedureDlg.cs - - - UserControl - - - ProcedureParamsCtrl.cs - - - UserControl - - - ProcedureParamsMixedCtrl.cs - - - UserControl - - - ProceduresCtrl.cs - - - Form - - - ProceduresDlg.cs - - - - UserControl - - - TestParamsCtrl.cs - - - Form - - - ConfirmUpdatingTests.cs - - - Form - - - FlowSelection.cs - - - Form - - - HeatMetersSelection.cs - - - Form - - - MethodSelection.cs - - - Form - - - OracleWZTypSelection.cs - - - Form - - - PressureSelection.cs - - - Form - - - TestProfileSelection.cs - - - Form - - - Roi1.cs - - - Form - - - Roi2.cs - - - Form - - - Roi3.cs - - - - Form - - - VolumeAndErrorSelection.cs - - - UserControl - - - ProcessTabPageCtrl.cs - - - Form - - - DeleteFromOracleForm.cs - - - UserControl - - - PreviousResultCtrl.cs - - - - Form - - - PreviousResultsDlg.cs - - - Form - - - PrintResultsSelectionDlg.cs - - - Form - - - ResultsArrangementDlg.cs - - - UserControl - - - ResultsTabPageCtrl.cs - - - Form - - - SendAgainDBAndWMSelectionForm.cs - - - Form - - - BenchesDlg.cs - - - Form - - - DatabaseSettingsDlg.cs - - - - Form - - - LanguageDlg.cs - - - Form - - - UpgradeSelectionDlg.cs - - - Component - - - UserControl - - - BenchControlPanel.cs - - - Form - - - ClosingTbfForm.cs - - - Form - - - ErrorDlg.cs - - - - - Form - - - LoginDlgWithBenchSelection.cs - - - Form - - - ModelessActivityForm.cs - - - Form - - - NoBenchOrDatabaseDlg.cs - - - Form - - - PrintOrderForm.cs - - - Form - - - RemarkDlg.cs - - - UserControl - - - SharedButtons.cs - - - UserControl - - - SharedSearchForListBox.cs - - - UserControl - - - SharedSearchForListView.cs - - - Component - - - Form - - - TabNameDlg.cs - - - UserControl - - - TestProgressCtrl.cs - - - - - GciBridgeCfgCtrl.cs - - - MainForm.cs - - - MainView.cs - - - CombinedInterfaceView.cs - - - ConfigurationView.cs - - - UniDataStorageReaderInterfaceView.cs - - - GenesisCordonelInterfaceView.cs - - - PumpCfgCtrl.cs - - - PumpCfgCtrl.cs - - - ValveCfgCtrl.cs - - - ValveCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - ComponentCfgCtrl.cs - - - PumpCfgCtrl.cs - - - EvaporationCfgCtrl.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - TestStartEndForm.cs - - - Barcode.cs - - - Keyboard.cs - - - OkNok.cs - - - EntryFormCfgCtrl.cs - - - FormForMechanicalMeters.cs - - - FormForMechanicalMetersWithTracing.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - AdvancedFixedStartTestForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleBeginningForm.cs - - - CycleEndForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - CycleBgEnForm.cs - - - TestStartEndForm.cs - - - RegulValveCfgCtrl.cs - - - ExamplesFrm.cs - - - ReaderCfgCtrl.cs - - - MultimeterCfgCtrl.cs - - - TempMeterCfgCtrl.cs - - - BalanceCfgCtrl.cs - - - PumpCfgCtrl.cs - - - PumpCfgCtrl.cs - - - ConfirmationForm.cs - - - QuidoRSCfgCtrl.cs - - - TankSelectorCfgCtrl.cs - - - NetadapterCfgCtrl.cs - - - NetadapterCfgCtrl.cs - - - NetadapterCfgCtrl.cs - - - CameraCfgCtrl.cs - - - TerminalDlg.cs - - - CameraCfgCtrl.cs - - - TerminalDlg.cs - - - DisplayForm.cs - - - DisplayCfgCtrl.cs - - - CameraCfgCtrl.cs - - - RoiCfgCtrl.cs - - - RoiCfgCtrl.cs - - - RoiCfgCtrl.cs - - - RoiCfgCtrl.cs - - - AmbientCfgCtrl.cs - - - RestApiCfgCtrl.cs - - - AskYesNoForm.cs - - - LargeMessageBoxForm.cs - - - MessageBoxForm.cs - - - ExamplesFrm.cs - Designer - - - WriterCfgCtrl.cs - Designer - - - WriteDBCfgCtrl.cs - - - TracingCfgCtrl.cs - - - SaveDiverterCorrCfgCtrl.cs - - - SaveFlowmeterCorrCfgCtrl.cs - - - WriterCfgCtrl.cs - - - WriterCfgCtrl.cs - - - ArchiverCfgCtrl.cs - - - WriterCfgCtrl.cs - - - WriterCfgCtrl.cs - - - WriterCfgCtrl.cs - - - HeaderFooterDlg.cs - - - PrinterCfgCtrl.cs - - - PrinterCfgCtrl.cs - - - PrinterTestBenchComponentSelectorDlg.cs - - - PrinterCfgCtrl.cs - - - PrinterCfgCtrl.cs - - - PrinterCfgCtrl.cs - - - PrinterCfgCtrl.cs - - - PrinterCfgCtrl.cs - - - WriterCfgCtrl.cs - - - RRCfgCtrl.cs - - - - - GenesisHeadTestCtrl.cs - - - GenesisCfgCtrl.cs - - - - - IPerlUniCfgCtrl.cs - - - IperlUniHeadTestCtrl.cs - - - IPerlUniCfgCtrl.cs - - - IperlUniHeadTestCtrl.cs - - - CycleBeginningForm.cs - - - EntryFormCfgCtrl.cs - - - TestStartEndForm.cs - - - RRCfgCtrl.cs - - - UniHeadTestCtrl.cs - - - PoseidonCfgCtrl.cs - - - PoseidonHeadTestCtrl.cs - - - RRCfgCtrl.cs - - - RRCfgCtrl.cs - - - WMErrorsForm.cs - - - WMErrorsForm12.cs - - - WMErrorsForm24.cs - - - WMErrorsForm48.cs - - - TestMethodCfgCtrl.cs - - - CycleDlg.cs - - - CycleDlg.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - GrabImageCfgCtrl.cs - - - - - - - CfgCtrl.cs - - - ManualEntryForm.cs - - - ManualEntryCfgCtrl.cs - - - ManualPulsesForm.cs - - - ManualPulsesForm12.cs - - - ManualPulsesForm24.cs - - - WMPulsesForm.cs - - - WMPulsesForm12.cs - - - WMPulsesForm24.cs - - - FromHistoryCfgCtrl.cs - - - RoiDetectionCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - CycleDlg.cs - - - S640CommForm.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - TestMethodCfgCtrl.cs - - - DiverterCfgCtrl.cs - - - RegValveCfgCtrl.cs - - - RegValveCfgCtrl.cs - - - RegValveTandemCfgCtrl.cs - - - RegValveCfgCtrl.cs - - - SmartCommunicationForm.cs - - - CoverTestForm.cs - - - WaterLevelForm.cs - - - TankCfgCtrl.cs - - - WaterMeterCfgCtrl.cs - - - ResXFileCodeGenerator - Designer - Strings.cs.Designer.cs - - - - Designer - - - Designer - - - Designer - - - Designer - - - - - ResXFileCodeGenerator - Strings.zh-CN.Designer.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - ResXFileCodeGenerator - Strings.de.Designer.cs - Designer - - - ResXFileCodeGenerator - Strings.Designer.cs - Designer - - - ComponentParametersDlg.cs - - - ComponentsManagerDlg.cs - - - SelectComponentClassDlg.cs - - - EditSchDrawingDlg.cs - - - CalibCertificateCtrl.cs - - - MetrologyDlg.cs - - - MetrologyDlgAdjustableScaleTab.cs - - - MetrologyDlgScaleTab.cs - - - MetrologyDlgBuoyancyTab.cs - - - MetrologyDlgDensityTab.cs - - - MetrologyDlgDiverterTab.cs - - - MetrologyDlgEvaporationTab.cs - - - MetrologyDlgFlowMeterTab.cs - - - MetrologyDlgLevelMeterTab.cs - - - MetrologyDlgPlatinumResistanceTMeterTab.cs - - - MetrologyDlgPressMeterTab.cs - - - MetrologyDlgTempMeterTab.cs - - - PathsDlg.cs - - - TestProfileDlg.cs - - - TestProfilesDlg.cs - - - TransitionsDlg.cs - - - UncertntDlgDensityTab.cs - - - UncertntDlgScaleTab.cs - - - UncertntDlgPressMeterTab.cs - - - UncertntDlgTempMeterTab.cs - - - UncertaintiesDlg.cs - - - CalendarCtrl.cs - - - CalendarTabPageCtrl.cs - - - EventDetailsForm.cs - - - CameraPictureCtrl.cs - - - CameraPictureCtrl2.cs - - - CameraPictureCtrl3.cs - - - CameraPictureFullCtrl.cs - - - PicturesTabPageCtrl.cs - - - GraphsTabPageCtrl.cs - - - AboutDlg.cs - - - EventLogsTabPageCtrl.cs - - - MainWnd.cs - Designer - - - MainWnd.cs - Designer - - - MainWnd.cs - - - MainWnd.cs - - - MainWnd.cs - Designer - - - MainWnd.cs - - - MainWnd.cs - - - ProcedureDlg.cs - - - ProcedureParamsCtrl.cs - - - ProcedureParamsMixedCtrl.cs - - - ProceduresCtrl.cs - - - ProceduresDlg.cs - - - TestParamsCtrl.cs - - - ConfirmUpdatingTests.cs - - - FlowSelection.cs - - - HeatMetersSelection.cs - - - MethodSelection.cs - - - OracleWZTypSelection.cs - - - PressureSelection.cs - - - TestProfileSelection.cs - - - Roi1.cs - - - Roi2.cs - - - Roi3.cs - - - VolumeAndErrorSelection.cs - - - ProcessTabPageCtrl.cs - - - DeleteFromOracleForm.cs - - - PreviousResultCtrl.cs - - - PreviousResultsDlg.cs - - - PrintResultsSelectionDlg.cs - - - ResultsArrangementDlg.cs - - - ResultsTabPageCtrl.cs - - - SendAgainDBAndWMSelectionForm.cs - - - BenchesDlg.cs - - - DatabaseSettingsDlg.cs - - - LanguageDlg.cs - - - UpgradeSelectionDlg.cs - - - BenchControlPanel.cs - Designer - - - ClosingTbfForm.cs - - - ErrorDlg.cs - - - LoginDlgWithBenchSelection.cs - - - ModelessActivityForm.cs - - - NoBenchOrDatabaseDlg.cs - - - PrintOrderForm.cs - - - RemarkDlg.cs - - - SharedButtons.cs - - - SharedSearchForListBox.cs - - - SharedSearchForListView.cs - - - TabNameDlg.cs - - - TestProgressCtrl.cs - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - PreserveNewest - - - - Designer - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - Always - - - - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 4.5 - true - - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - Always - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - - Always - - - Always - - - - - {a3e14180-7f00-42e5-94a9-8db62ead6ee8} - Sensus.iPerl.RfidCom - - - {5025ed8b-a94f-4e58-8be0-68481b061609} - Sensus.iPerl.TestConsole - - - {5954d496-caab-4f7a-bde2-bdc8f47dab19} - NfcS5_DLL - - - {fa9abad1-7184-4295-ade8-d44f2e3de6b2} - AppDiagnostic - - - {c8939821-ba5c-4988-a3d0-bf53b74865c7} - Common - - - {743DF7DB-C7B6-42EB-986D-0F485E5588E4} - Config - - - {7ebeea14-91c4-48d7-af0a-7a4bc3ff9a28} - DataStreamInterface - - - {439D0878-C76E-452B-B17D-209A89E91D36} - Dirichlet.Numerics - - - {1b02c79e-0b19-43e2-8f6b-71ef0c786c97} - CommonCore - - - {8B10D15A-39DE-4B56-8DD1-710C1EB3A697} - GemCard - - - {32817bf9-e380-4467-9c7f-936f4b122bc7} - GenCode128 - - - {c955d8ac-76b8-42d8-a83f-8aeb56cf2567} - GenesisCordonelInterface - - - {0C0A1F4D-1363-4544-A7C5-196C76D26CCA} - GraphLib - - - {53e75979-b530-4805-8fc9-b314f14a62be} - NfcC7_DLL - - - {46e3b0e1-209f-4550-b0dd-d7e2c039b3ce} - RestClient - - - {0f79ca69-9dbc-41f3-a6fc-5a2937365343} - SchematicDrawing - - - {8f942729-f454-4c99-ba6c-746962065ae3} - SharedComponents - - - {211b5e3f-9996-48a7-abde-c878dd2d71c2} - SharedDatabase - - - {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB} - Results - - - - - diverter switch to the mass .EnterState(); for (int i = 0; i < 3; i++) { @@ -494,6 +526,36 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } } + ///...MF + ///----------------- + delay = test.TimeFlow2Mass; + + if (delay > 0) + { + State.Create(string.Format("{0}({1}) : Delay for meters stabilization ", test.Method, test.Name, delay)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress) + .AddOperation(new Operations.TimerOp(delay)) //...develop: step 5 + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if(delay>0) + delay--; + } + while (!e.Contains(Event.TimerExpired)); + } + int time = StateMachine.Time; double currentFlow = RefFlow.Val; @@ -511,6 +573,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection /// GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm; IOperation readStartMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); + IOperation readStopMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); if (dataEntryCmpnt != null) { @@ -525,8 +588,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection State state2 = State.Create(string.Format("{0}({1}) : Grab images", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(readStartMassOp) - .AddOperation(testInProgress) + //.AddOperation(readStartMassOp)//...MF presuvam do nasledujucej serie + .AddOperation(testInProgress)//...nevhodne prepina diverter .AddOperation(processDataLoggingOp); for (int i = 0; i < sensPath.RegisterReaders.Length; i++) @@ -576,22 +639,33 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection string.Format("{0}({1}) : Grabbing images - valve close", test.Method, test.Name)); } /////// - + + delay = test.TimeStop2Mass; Bridge.OnActivity(this, Strings.Enter_water_meter_data); long readStartTime = StateMachine.Time; - State.Create(string.Format("{0}({1}) : Enter start states of water meters", test.Method, test.Name)) + State.Create(string.Format("{0}({1}) : Enter start states of water meters and Measuring the start mass after residual flow ", test.Method, test.Name, test.TimeStop2Mass)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(testInProgress) - .AddOperation((dataEntryCmpnt as GenericDevices.IHasWMStatesForm).ShowTestStartFormOp(sensPath.RegisterReaders)) + .AddOperation(testInProgress)//...nevhodne prepina diverter + .AddOperation((dataEntryCmpnt as GenericDevices.IHasWMStatesForm).ShowTestStartFormOp(sensPath.RegisterReaders))//...develop: half of step 6 + .AddOperation(readStopMassOp) //...develop: half of step 6 .AddOperation(processDataLoggingOp) .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; } - while (!e.Contains(Event.ModelessFormClosed)); + while (!e.Contains(Event.ModelessFormClosed) || !e.Contains(Event.ScaleDone)); long readEndTime = StateMachine.Time; log.Debug("Read poseidon - took:" + (readEndTime - readStartTime)); @@ -672,12 +746,11 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection } } - //dripping on the scale - using of time constant for delay for measuring State.Create(string.Format("{0}({1}) : Measure the start mass", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(testInProgress) - .AddOperation(scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread)) + .AddOperation(testInProgress)//...nevhodne prepina diverter + .AddOperation(scale.ReadStableMassOp(ref StartMass, 0, test.MassMethod, test.MassRepeats, test.MassSpread))//...develop: step 8 .AddOperation(processDataLoggingOp) .EnterState(); do @@ -699,7 +772,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection State.Create(string.Format("{0}({1}) : Measure the start mass", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(testInProgress) + .AddOperation(testInProgress)//...nevhodne prepina diverter //.AddOperation(readStartMassOp) .AddOperation(scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread)) .AddOperation(processDataLoggingOp) @@ -733,7 +806,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection /// Measurement loop preparation TestStartTime = DateTime.Now; StartTime = (double)StateMachine.Time; - int estimtdEndTime = StateMachine.Time + (int)test.TestTime; + int estimtdEndTime = StateMachine.Time + Convert.ToInt32(test.TestTime); int remainingTime; StartNewStatistics(outPath.FlowMeter, BatchRslts.Batch.BatchNr, test, repetitionNr, Math.Max((int)(test.TestTime / 10), 5)); @@ -742,10 +815,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection State.Create(string.Format("{0}({1}) : Start the test, open the start/stop valve", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(cBrd.OpenStartValveOp(timeStampStart, startSwitchTime)) + .AddOperation(cBrd.OpenStartValveOp(timeStampStart, startSwitchTime)) //...develop: step 9 .AddOperation(testInProgress) .AddOperation(controlFlowOp) - .AddOperation(processDataLoggingOp) + .AddOperation(processDataLoggingOp)//...develop: step 10, step 11 .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); @@ -759,6 +832,9 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection else Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime)); + if (delay > 0) + delay--; + /// Update statistics RefFrequency.Val = cBrd.RefFrequency; RefFlow.Val = outPath.FlowMeter.ReadFlow(); @@ -803,7 +879,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection .AddOperation(checkUiOp) .AddOperations(readTempPressOps) .AddOperation(testInProgress) - .AddOperation(cBrd.CloseStartValveOp(timeStampEnd, stopSwitchTime)) + .AddOperation(cBrd.CloseStartValveOp(timeStampEnd, stopSwitchTime))//...develop: step 12 .AddOperation(processDataLoggingOp) .EnterState(); do { @@ -814,6 +890,38 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection log.WarnFormat("Start valve switch time on test end = {0} ms", cBrd.ValveOpenCloseTime); + + ///...MF + ///----------------- + delay = test.TimeStop2Mass; + + if (delay > 0) + { + State.Create(string.Format("{0}({1}) : Delay before end mass measuring ", test.Method, test.Name, delay)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress) + .AddOperation(new Operations.TimerOp(delay)) //...develop: step 13 + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; + } + while (!e.Contains(Event.TimerExpired)); + } + + if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "End mass"); else @@ -822,11 +930,14 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection //------------------------------------------------ Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ - State.Create(string.Format("{0}({1}) : Measuring the end mass", test.Method, test.Name)) + /* + delay = test.TimeStop2Mass; + + State.Create(string.Format("{0}({1}) : Measuring the end mass after residual flow ", test.Method, test.Name, delay)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(testInProgress) - .AddOperation(scale.ReadStableMassOp(ref EndMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread)) + //.AddOperation(testInProgress)...nevhodne prepina diverter + .AddOperation(scale.ReadStableMassOp(ref EndMass, delay, test.MassMethod, test.MassRepeats, test.MassSpread))//...develop: step 13 .AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec)) .AddOperation(processDataLoggingOp) .EnterState(); @@ -840,26 +951,20 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection retVal = Event.RecoverableError; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; } - while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); + while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next));*/ /// tMass2 = StateMachine.Time; - if (test.DoDrainingAfter) - { - State.Create(string.Format("{0}({1}) : Open the drain valve", test.Method, test.Name)) - .AddOperation(checkUiOp) - .AddOperation(cBrd.SetValvesOp(scale.DrainValve, null)) - .EnterState(); - do - { - e = StateMachine.WaitRunDevsRunOps(); - if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } - } - while (e.Contains(Event.ValvesBusy)); - } - - double massStart = MeasurementCorrection.CorrectedValue(StartMass.Val, scale.Corrections); double massEnd = MeasurementCorrection.CorrectedValue(EndMass.Val, scale.Corrections); double densityOut = Formulas.WaterDensityFromTempPress((TempUpStat.Average + TempDownStat.Average) / 2, @@ -1037,6 +1142,20 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection } } + if (test.DoDrainingAfter) + { + State.Create(string.Format("{0}({1}) : Open the drain valve", test.Method, test.Name)) + .AddOperation(checkUiOp) + .AddOperation(cBrd.SetValvesOp(scale.DrainValve, null)) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + } + while (e.Contains(Event.ValvesBusy)); + } + //------------------------------------------------ Bridge.OnActivity(this, Strings.Test_completed); //------------------------------------------------ From f1bc71fb9223790613ae27a35c7846d4534b42ba Mon Sep 17 00:00:00 2001 From: Michal Buzik Date: Thu, 16 Jul 2026 12:19:27 +0200 Subject: [PATCH 06/16] Camera CJMS11 - support dialog multi pictures --- TBF/Properties/AssemblyInfo.cs | 4 +- TBF/Resources/Strings.Designer.cs | 45 +- TBF/Resources/Strings.cs.Designer.cs | 18 +- TBF/Resources/Strings.cs.resx | 4 +- TBF/Resources/Strings.de.Designer.cs | 6398 +++++++++++++++++ TBF/Resources/Strings.de.resx | 4 +- TBF/Resources/Strings.it.resx | 4 +- TBF/Resources/Strings.pl.resx | 4 +- TBF/Resources/Strings.resx | 13 +- TBF/Resources/Strings.ru.resx | 4 +- .../TestStartEndForm.cs | 685 +- TBF/Rig/GenericDevices/ITestMethodSmart.cs | 2 +- TBF/Rig/Network/Camera/CJMS11/Camera.cs | 3284 +++++++-- .../Network/Camera/CJMS11/CameraLineReader.cs | 154 + TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs | 1211 +++- TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs | 8 + TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs | 55 +- .../Camera/CJMS11/POJO/CameraResponse.cs | 12 + .../Camera/CJMS11/POJO/SendImagePayload.cs | 37 + .../Camera/CJMS11/POJO/SendImagesRequest.cs | 16 + .../Camera/CJMS11/POJO/SendSummaryPayload.cs | 16 + .../Camera/CJMS11/POJO/TimedCameraImage.cs | 20 + .../RoiForFixedStartCJMS11/ProcedureParams.cs | 52 +- .../Camera/RoiForFixedStartCJMS11/Roi.cs | 76 +- TBF/Rig/Network/Telnet/EventArgsClasses.cs | 23 +- TBF/Rig/Sequences/iPerlCommunicationSeq.cs | 2 +- .../Single/Component.cs | 10 + ...ingStartMassCollectionAdvanceCollectSeq.cs | 14 +- TBF/TBF.csproj | 6 + TBF/UiBridge/Bridge.cs | 22 +- .../Rig/Network/Camera/CJMS11/CameraTest.cs | 111 +- 31 files changed, 11280 insertions(+), 1034 deletions(-) create mode 100644 TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index eb3d714a4..1b9e1281e 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3069.8")] -[assembly: AssemblyFileVersion("3.9.3069.8")] +[assembly: AssemblyVersion("3.9.3134.0")] +[assembly: AssemblyFileVersion("3.9.3134.0")] diff --git a/TBF/Resources/Strings.Designer.cs b/TBF/Resources/Strings.Designer.cs index f5f49dd9e..b36eb5c49 100644 --- a/TBF/Resources/Strings.Designer.cs +++ b/TBF/Resources/Strings.Designer.cs @@ -1427,6 +1427,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Delay between pictures. + /// + internal static string DelaySendImage { + get { + return ResourceManager.GetString("DelaySendImage", resourceCulture); + } + } + /// /// Looks up a localized string similar to Density. /// @@ -2723,15 +2732,6 @@ namespace TBF.Resources { } } - /// - /// Looks up a localized string similar to iPerl Communication in progress. - /// - internal static string iPerl_Communication_in_progress { - get { - return ResourceManager.GetString("iPerl_Communication_in_progress", resourceCulture); - } - } - /// /// Looks up a localized string similar to ITS-27 calibration coefficients. /// @@ -3101,6 +3101,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Meter Communication in progress. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + /// /// Looks up a localized string similar to Sensors. /// @@ -3839,6 +3848,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Pictures Count. + /// + internal static string PictureCouts { + get { + return ResourceManager.GetString("PictureCouts", resourceCulture); + } + } + /// /// Looks up a localized string similar to PID. /// @@ -4640,6 +4658,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Radio Communication failed. + /// + internal static string Radio_Communication_failed { + get { + return ResourceManager.GetString("Radio_Communication_failed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Rate of change [%]. /// diff --git a/TBF/Resources/Strings.cs.Designer.cs b/TBF/Resources/Strings.cs.Designer.cs index da6c77484..4e0c89a9c 100644 --- a/TBF/Resources/Strings.cs.Designer.cs +++ b/TBF/Resources/Strings.cs.Designer.cs @@ -1931,15 +1931,6 @@ namespace TBF.Resources { } } - /// - /// Looks up a localized string similar to iPERL Komunikace probíhá. - /// - internal static string iPerl_Communication_in_progress { - get { - return ResourceManager.GetString("iPerl_Communication_in_progress", resourceCulture); - } - } - /// /// Looks up a localized string similar to Jazyk. /// @@ -2147,6 +2138,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Komunikace s vodemerem probíhá. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + /// /// Looks up a localized string similar to Testované typy měřičů. /// diff --git a/TBF/Resources/Strings.cs.resx b/TBF/Resources/Strings.cs.resx index e97e9a6ae..2a45ee942 100644 --- a/TBF/Resources/Strings.cs.resx +++ b/TBF/Resources/Strings.cs.resx @@ -1020,8 +1020,8 @@ Současně s předchozím krokem - - iPERL Komunikace probíhá + + Komunikace s vodemerem probíhá Jazyk diff --git a/TBF/Resources/Strings.de.Designer.cs b/TBF/Resources/Strings.de.Designer.cs index e69de29bb..b3ab2e3d1 100644 --- a/TBF/Resources/Strings.de.Designer.cs +++ b/TBF/Resources/Strings.de.Designer.cs @@ -0,0 +1,6398 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TBF.Resources { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Strings_de { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Strings_de() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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("TBF.Resources.Strings.de", typeof(Strings_de).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to {0} - schliese Ventil Entwässerung. + /// + internal static string _0_close_the_drain_valve { + get { + return ResourceManager.GetString("_0_close_the_drain_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - öffnen Ventil Entwässerung. + /// + internal static string _0_open_the_drain_valve { + get { + return ResourceManager.GetString("_0_open_the_drain_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} Pfad '{1}' genutzt von {2} Tests gleichzeitig wird entfernt.{3}. + /// + internal static string _0_path_1_used_by_2_tests_will_be_removed_3 { + get { + return ResourceManager.GetString("_0_path_1_used_by_2_tests_will_be_removed_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} Pfad '{1}' genutzt von {2}Tests werden umbenannt in '{3}'.{4}. + /// + internal static string _0_path_1_used_by_2_tests_will_be_renamed_to_3_4 { + get { + return ResourceManager.GetString("_0_path_1_used_by_2_tests_will_be_renamed_to_3_4", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - Warten bis Prüfbehälter mehr als {1} ltr enthällt.. + /// + internal static string _0_wait_until_tank_contains_more_then_1_l { + get { + return ResourceManager.GetString("_0_wait_until_tank_contains_more_then_1_l", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - warten bis Prüfbehälter leer ist. + /// + internal static string _0_wait_until_the_tank_is_empty { + get { + return ResourceManager.GetString("_0_wait_until_the_tank_is_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <kein>. + /// + internal static string _none_ { + get { + return ResourceManager.GetString("_none_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to (Getrennt). + /// + internal static string _offline { + get { + return ResourceManager.GetString("_offline", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abrechen. + /// + internal static string Abort { + get { + return ResourceManager.GetString("Abort", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abbruch Zyklus. + /// + internal static string Abort_cycle { + get { + return ResourceManager.GetString("Abort_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unterbrechen. + /// + internal static string Abort_session { + get { + return ResourceManager.GetString("Abort_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Info TBF. + /// + internal static string About_Test_Bench_Framework { + get { + return ResourceManager.GetString("About_Test_Bench_Framework", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastkopf Ein/Aus. + /// + internal static string Activate_Deactivate_heads { + get { + return ResourceManager.GetString("Activate_Deactivate_heads", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorgang. + /// + internal static string Activity { + get { + return ResourceManager.GetString("Activity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hinzufügen. + /// + internal static string Add { + get { + return ResourceManager.GetString("Add", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neu. + /// + internal static string AddBtnText { + get { + return ResourceManager.GetString("AddBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Adresse. + /// + internal static string Address { + get { + return ResourceManager.GetString("Address", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Justierung läuft .... + /// + internal static string Adjustment_in_progress { + get { + return ResourceManager.GetString("Adjustment_in_progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Administrator. + /// + internal static string Administrator { + get { + return ResourceManager.GetString("Administrator", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Luftdichte [kg/m3]. + /// + internal static string Air_density_kg_m3 { + get { + return ResourceManager.GetString("Air_density_kg_m3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Luftfeuchtigkeit. + /// + internal static string Air_humidity { + get { + return ResourceManager.GetString("Air_humidity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungsdruck. + /// + internal static string Air_pressure { + get { + return ResourceManager.GetString("Air_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungstemperatur. + /// + internal static string Air_temperature { + get { + return ResourceManager.GetString("Air_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Alle Ereignisse. + /// + internal static string All_events { + get { + return ResourceManager.GetString("All_events", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Alle Prüfpunkte müssen durchgeführt werden. + /// + internal static string All_tests_must_be_completed { + get { + return ResourceManager.GetString("All_tests_must_be_completed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Luftfeuchtigkeit. + /// + internal static string Ambient_humidity { + get { + return ResourceManager.GetString("Ambient_humidity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungsdruck. + /// + internal static string Ambient_pressure { + get { + return ResourceManager.GetString("Ambient_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungstemperatur. + /// + internal static string Ambient_temperature { + get { + return ResourceManager.GetString("Ambient_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ein Ausnahmefehler ist aufgetreten!. + /// + internal static string An_unhandled_error_occured { + get { + return ResourceManager.GetString("An_unhandled_error_occured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Das TBF Programm wurde bereits ausgeführt. Bitte schließen Sie das Programm im Taskmanager.. + /// + internal static string Another_instance_is_running { + get { + return ResourceManager.GetString("Another_instance_is_running", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beliebig. + /// + internal static string any { + get { + return ResourceManager.GetString("any", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassung. + /// + internal static string Approval { + get { + return ResourceManager.GetString("Approval", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassung Datum. + /// + internal static string Approval_date { + get { + return ResourceManager.GetString("Approval_date", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassung Nr.:. + /// + internal static string Approval_ID { + get { + return ResourceManager.GetString("Approval_ID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassungszeichen. + /// + internal static string Approval_info { + get { + return ResourceManager.GetString("Approval_info", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zugelassen von:. + /// + internal static string Approved_by { + get { + return ResourceManager.GetString("Approved_by", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die Anordnung der Zähler. + /// + internal static string Arrangement_of_meters { + get { + return ResourceManager.GetString("Arrangement_of_meters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die Anordnung der Prüfpunkte. + /// + internal static string Arrangement_of_tests { + get { + return ResourceManager.GetString("Arrangement_of_tests", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bei Temperatur. + /// + internal static string At_temperature { + get { + return ResourceManager.GetString("At_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler. + /// + internal static string Aux { + get { + return ResourceManager.GetString("Aux", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler. + /// + internal static string Aux_ { + get { + return ResourceManager.GetString("Aux_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler. + /// + internal static string Aux_Water_Meter { + get { + return ResourceManager.GetString("Aux_Water_Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler-Stand. + /// + internal static string Aux_Water_Meter_State { + get { + return ResourceManager.GetString("Aux_Water_Meter_State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler Seriennummer. + /// + internal static string Aux_WM_SerialNr { + get { + return ResourceManager.GetString("Aux_WM_SerialNr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten:. + /// + internal static string Available_Components_ { + get { + return ResourceManager.GetString("Available_Components_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse. + /// + internal static string Available_results { + get { + return ResourceManager.GetString("Available_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to < Zurück. + /// + internal static string BackBtnText { + get { + return ResourceManager.GetString("BackBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage. + /// + internal static string Balance { + get { + return ResourceManager.GetString("Balance", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerlos. + /// + internal static string Batch { + get { + return ResourceManager.GetString("Batch", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerlos Nr.. + /// + internal static string Batch_nr { + get { + return ResourceManager.GetString("Batch_nr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand. + /// + internal static string Bench { + get { + return ResourceManager.GetString("Bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand. + /// + internal static string Bench_chdr { + get { + return ResourceManager.GetString("Bench_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Der Prüfstand ist nicht in Betrieb. Sie können die Einstellungen ändern, um das Problem zu lösen.. + /// + internal static string Bench_is_not_running { + get { + return ResourceManager.GetString("Bench_is_not_running", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Der Prüfstandsname ist ungültig. Bitte wählen Sie einen anderen Namen.. + /// + internal static string Bench_name_conflict_Use_another_name_pls { + get { + return ResourceManager.GetString("Bench_name_conflict_Use_another_name_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand Parameter. + /// + internal static string Bench_parameters { + get { + return ResourceManager.GetString("Bench_parameters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüftisch. + /// + internal static string BenchTabPageTitle { + get { + return ResourceManager.GetString("BenchTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zwische Test ({0}: Schritt {1}/{2}). + /// + internal static string Between_tests_sequence_i_n { + get { + return ResourceManager.GetString("Between_tests_sequence_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum eingeben {0}. + /// + internal static string BuildDateStr { + get { + return ResourceManager.GetString("BuildDateStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenleitung. + /// + internal static string Bypass { + get { + return ResourceManager.GetString("Bypass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalkulieren. + /// + internal static string calculated { + get { + return ResourceManager.GetString("calculated", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalender. + /// + internal static string Calendar { + get { + return ResourceManager.GetString("Calendar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrierung. + /// + internal static string Calibration { + get { + return ResourceManager.GetString("Calibration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrierschein. + /// + internal static string Calibration_certificate { + get { + return ResourceManager.GetString("Calibration_certificate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrierschein gültigkeit abgelaufen. + /// + internal static string Calibration_certificate_validity_expired { + get { + return ResourceManager.GetString("Calibration_certificate_validity_expired", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrier-Koeffizient. + /// + internal static string Calibration_coefficients { + get { + return ResourceManager.GetString("Calibration_coefficients", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibriertechniker. + /// + internal static string Calibration_Specialist { + get { + return ResourceManager.GetString("Calibration_Specialist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kamera. + /// + internal static string Camera { + get { + return ResourceManager.GetString("Camera", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kamerafehler. + /// + internal static string Camera_error { + get { + return ResourceManager.GetString("Camera_error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abbrechen. + /// + internal static string CancelBtnText { + get { + return ResourceManager.GetString("CancelBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbindung mit der Datenbank nicht möglich.. + /// + internal static string Cannot_connect_to_the_database { + get { + return ResourceManager.GetString("Cannot_connect_to_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Prüfstrecke kann nicht geladen werden.. + /// + internal static string Cannot_load_bench_path { + get { + return ResourceManager.GetString("Cannot_load_bench_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Wasserzulauf kann nicht geladen werden.. + /// + internal static string Cannot_load_feeding_path { + get { + return ResourceManager.GetString("Cannot_load_feeding_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Messtrecke kann nicht geladen werden.. + /// + internal static string Cannot_load_output_path { + get { + return ResourceManager.GetString("Cannot_load_output_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Abtastung kann nicht geladen werden.. + /// + internal static string Cannot_load_sensor_path { + get { + return ResourceManager.GetString("Cannot_load_sensor_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Änderungen können nicht gespeichert werden.. + /// + internal static string Cannot_save_changes { + get { + return ResourceManager.GetString("Cannot_save_changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zertifikat. + /// + internal static string Certificate { + get { + return ResourceManager.GetString("Certificate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse gehen verloren! Wollen sie fortfahren?. + /// + internal static string Changes_will_be_lost_Do_you_want_to_proceed { + get { + return ResourceManager.GetString("Changes_will_be_lost_Do_you_want_to_proceed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kanal. + /// + internal static string Channel { + get { + return ResourceManager.GetString("Channel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waagebehälter Volumen prüfen. + /// + internal static string Checking_tank_capacity { + get { + return ResourceManager.GetString("Checking_tank_capacity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Klasse. + /// + internal static string Class { + get { + return ResourceManager.GetString("Class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse löschen. + /// + internal static string Clear_results { + get { + return ResourceManager.GetString("Clear_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Löschen. + /// + internal static string ClearBtnText { + get { + return ResourceManager.GetString("ClearBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Im Uhrzeigersinn. + /// + internal static string Clockwise { + get { + return ResourceManager.GetString("Clockwise", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to geschlossen. + /// + internal static string close { + get { + return ResourceManager.GetString("close", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schließe das Entleerventil. + /// + internal static string Close_emptying_valve { + get { + return ResourceManager.GetString("Close_emptying_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schutzhaube schließen!. + /// + internal static string Close_the_cover { + get { + return ResourceManager.GetString("Close_the_cover", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden. + /// + internal static string CloseBtnText { + get { + return ResourceManager.GetString("CloseBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to TBF Programm schließt. + /// + internal static string Closing_Test_Bench_Framework { + get { + return ResourceManager.GetString("Closing_Test_Bench_Framework", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schließen des Programms. + /// + internal static string Closing_the_program { + get { + return ResourceManager.GetString("Closing_the_program", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter Schließen. + /// + internal static string Closing_the_tank { + get { + return ResourceManager.GetString("Closing_the_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schließen Ventil Zulauf und Pumpe Aus. + /// + internal static string Closing_valve_Pump_off { + get { + return ResourceManager.GetString("Closing_valve_Pump_off", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kommunikation. + /// + internal static string Communication { + get { + return ResourceManager.GetString("Communication", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vergleichen. + /// + internal static string Compare { + get { + return ResourceManager.GetString("Compare", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponente. + /// + internal static string Component { + get { + return ResourceManager.GetString("Component", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten {0} fehlgeschlagen. Ergebnisse nicht gerduckt.. + /// + internal static string Component_0_crashed_Results_not_printed { + get { + return ResourceManager.GetString("Component_0_crashed_Results_not_printed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten {0} fehlgeschlagen. Ergebnisse nicht gespeichert.. + /// + internal static string Component_0_crashed_Results_not_saved { + get { + return ResourceManager.GetString("Component_0_crashed_Results_not_saved", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandskomponenten Klasse. + /// + internal static string Component_class { + get { + return ResourceManager.GetString("Component_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbund. + /// + internal static string Compound { + get { + return ResourceManager.GetString("Compound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbundzähler {0}. + /// + internal static string Compound_meter_0 { + get { + return ResourceManager.GetString("Compound_meter_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbundwasserzähler. + /// + internal static string Compound_meters { + get { + return ResourceManager.GetString("Compound_meters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Konditionen. + /// + internal static string Conditions { + get { + return ResourceManager.GetString("Conditions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Konfiguration. + /// + internal static string Configuration { + get { + return ResourceManager.GetString("Configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Konfigurieren. + /// + internal static string Configure { + get { + return ResourceManager.GetString("Configure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand konfigurieren (Passwort erforderlich). + /// + internal static string ConfigureDatabaseText { + get { + return ResourceManager.GetString("ConfigureDatabaseText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Lesen bestätigen. + /// + internal static string Confirm_read { + get { + return ResourceManager.GetString("Confirm_read", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestätigung. + /// + internal static string Confirmation { + get { + return ResourceManager.GetString("Confirmation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbindungszeichenfolge. + /// + internal static string Connection_string { + get { + return ResourceManager.GetString("Connection_string", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Weiter. + /// + internal static string Continue { + get { + return ResourceManager.GetString("Continue", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mit dem nächsten Prüfpunkt fortfahren?. + /// + internal static string Continue_in_the_cycle { + get { + return ResourceManager.GetString("Continue_in_the_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wassertemperaturregelung. + /// + internal static string Control_water_temp_chdr { + get { + return ResourceManager.GetString("Control_water_temp_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kopieren. + /// + internal static string CopyBtnText { + get { + return ResourceManager.GetString("CopyBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to © 2013 - {0} Sensus GmbH. + /// + internal static string CopyrightStr { + get { + return ResourceManager.GetString("CopyrightStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Korrigiert. + /// + internal static string Corrected { + get { + return ResourceManager.GetString("Corrected", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Korrektur. + /// + internal static string Correction { + get { + return ResourceManager.GetString("Correction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gegen den Uhrzeigersinn. + /// + internal static string Counterclockwise { + get { + return ResourceManager.GetString("Counterclockwise", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbank erzeugen. + /// + internal static string Create_DB { + get { + return ResourceManager.GetString("Create_DB", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Errstellt von. + /// + internal static string Created_by { + get { + return ResourceManager.GetString("Created_by", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Strom. + /// + internal static string Current { + get { + return ResourceManager.GetString("Current", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kürzlich benutzte Datenbank wurde wieder hergestellt.. + /// + internal static string Currently_used_database_was_restored { + get { + return ResourceManager.GetString("Currently_used_database_was_restored", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Daten. + /// + internal static string Data { + get { + return ResourceManager.GetString("Data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerdateneingabe. + /// + internal static string Data_entry { + get { + return ResourceManager.GetString("Data_entry", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbank Einstellungen. + /// + internal static string Database_Settings { + get { + return ResourceManager.GetString("Database_Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbank Typ. + /// + internal static string Database_type { + get { + return ResourceManager.GetString("Database_type", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum. + /// + internal static string Date { + get { + return ResourceManager.GetString("Date", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum und Uhrzeit. + /// + internal static string Date_and_time { + get { + return ResourceManager.GetString("Date_and_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum / Uhrzeit. + /// + internal static string Date_time { + get { + return ResourceManager.GetString("Date_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die Datenbank wurde erfolgreich erstellt.. + /// + internal static string DB_was_successfully_created { + get { + return ResourceManager.GetString("DB_was_successfully_created", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die vorhandene Datenbank wird überschrieben.. + /// + internal static string DB_will_be_overwritten { + get { + return ResourceManager.GetString("DB_will_be_overwritten", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Basis Einheiten. + /// + internal static string Default_units { + get { + return ResourceManager.GetString("Default_units", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dichte. + /// + internal static string Density { + get { + return ResourceManager.GetString("Density", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dichtekorektur. + /// + internal static string Density_correction { + get { + return ResourceManager.GetString("Density_correction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beschreibung. + /// + internal static string DescriptionColHdr { + get { + return ResourceManager.GetString("DescriptionColHdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erkennung erfolgt. + /// + internal static string Detection_completed { + get { + return ResourceManager.GetString("Detection_completed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erkennung fehlgeschlagen. + /// + internal static string Detection_failed { + get { + return ResourceManager.GetString("Detection_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schwellwert [%]. + /// + internal static string DetectionThresholdPct { + get { + return ResourceManager.GetString("DetectionThresholdPct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to feststellen. + /// + internal static string determine { + get { + return ResourceManager.GetString("determine", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gerät. + /// + internal static string Device { + get { + return ResourceManager.GetString("Device", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorgabe. + /// + internal static string dflt { + get { + return ResourceManager.GetString("dflt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Richtung und Impulse sind OK. + /// + internal static string Direction_and_pulses_are_OK { + get { + return ResourceManager.GetString("Direction_and_pulses_are_OK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Richtung is nicht OK. + /// + internal static string Direction_is_NOK { + get { + return ResourceManager.GetString("Direction_is_NOK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umschaltung. + /// + internal static string Diverter { + get { + return ResourceManager.GetString("Diverter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie diese Sitzung beenden?. + /// + internal static string Do_you_really_want_to_abort_this_session { + get { + return ResourceManager.GetString("Do_you_really_want_to_abort_this_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie den Abschnitt '{0}' löschen?. + /// + internal static string Do_you_really_want_to_delete_sequence_0 { + get { + return ResourceManager.GetString("Do_you_really_want_to_delete_sequence_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wollen sie wirklich eine unvollständigen Modus wiederherstellen?. + /// + internal static string Do_you_really_want_to_restore_uncompleted_session { + get { + return ResourceManager.GetString("Do_you_really_want_to_restore_uncompleted_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie ein Backup der Konfiguration erstellen?. + /// + internal static string Do_you_want_to_back_up_configuration_qm { + get { + return ResourceManager.GetString("Do_you_want_to_back_up_configuration_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie ein Backup der Ergebnisse erstellen?. + /// + internal static string Do_you_want_to_back_up_results_qm { + get { + return ResourceManager.GetString("Do_you_want_to_back_up_results_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie diese Zelle kopieren in alle Zellen darunter?. + /// + internal static string Do_you_want_to_copy_this_value_to_all_cells_below_this_cell { + get { + return ResourceManager.GetString("Do_you_want_to_copy_this_value_to_all_cells_below_this_cell", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie die Prüfvorlage löschen?. + /// + internal static string Do_you_want_to_delete_the_procedure { + get { + return ResourceManager.GetString("Do_you_want_to_delete_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wollen Sie das TBF Programm beenden?. + /// + internal static string Do_you_want_to_exit_TBF { + get { + return ResourceManager.GetString("Do_you_want_to_exit_TBF", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie fortfahren?. + /// + internal static string Do_you_want_to_proceed { + get { + return ResourceManager.GetString("Do_you_want_to_proceed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie die Konfiguration von Datenbank-Datei{0} wieder herstellen?. + /// + internal static string Do_you_want_to_restore_configuration_DB_from_file_0_qm { + get { + return ResourceManager.GetString("Do_you_want_to_restore_configuration_DB_from_file_0_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie die Ergebnisse von der Datenbank-Datei{0} wieder herstellen?. + /// + internal static string Do_you_want_to_restore_results_DB_from_file_0_qm { + get { + return ResourceManager.GetString("Do_you_want_to_restore_results_DB_from_file_0_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wollen sie die Änderungen speichern?. + /// + internal static string Do_you_want_to_save_changes { + get { + return ResourceManager.GetString("Do_you_want_to_save_changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie die Prüfvorlage speichern?. + /// + internal static string Do_you_want_to_save_the_procedure { + get { + return ResourceManager.GetString("Do_you_want_to_save_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie die betreffenden Tests und Prüfvorgänge updaten?. + /// + internal static string Do_you_want_to_update_related_tests_and_procedures { + get { + return ResourceManager.GetString("Do_you_want_to_update_related_tests_and_procedures", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie "Use wizard" Tests updaten?. + /// + internal static string Do_you_want_to_update_tests_QM { + get { + return ResourceManager.GetString("Do_you_want_to_update_tests_QM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abwärts. + /// + internal static string DownBtnText { + get { + return ResourceManager.GetString("DownBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entwässern nach. + /// + internal static string Draining_after { + get { + return ResourceManager.GetString("Draining_after", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entwässern davor. + /// + internal static string Draining_before { + get { + return ResourceManager.GetString("Draining_before", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abweichung pro Jahr. + /// + internal static string Drift_per_year { + get { + return ResourceManager.GetString("Drift_per_year", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Leckage Dauer. + /// + internal static string Duration_Leak_s { + get { + return ResourceManager.GetString("Duration_Leak_s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer [ms]. + /// + internal static string Duration_ms { + get { + return ResourceManager.GetString("Duration_ms", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pmax Dauer. + /// + internal static string Duration_PMax_s { + get { + return ResourceManager.GetString("Duration_PMax_s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer [s]. + /// + internal static string Duration_s { + get { + return ResourceManager.GetString("Duration_s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzereigenschaften ändern. + /// + internal static string Edit_User { + get { + return ResourceManager.GetString("Edit_User", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bearbeiten. + /// + internal static string EditBtnText { + get { + return ResourceManager.GetString("EditBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Not-Aus. + /// + internal static string Emergency_STOP { + get { + return ResourceManager.GetString("Emergency_STOP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entleeren. + /// + internal static string Empty { + get { + return ResourceManager.GetString("Empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter entleeren. + /// + internal static string Empty_the_tank { + get { + return ResourceManager.GetString("Empty_the_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entleeren. + /// + internal static string Emptying_chdr { + get { + return ResourceManager.GetString("Emptying_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enwässern ({0}: Schritt {1}/{2}). + /// + internal static string Emptying_i_n { + get { + return ResourceManager.GetString("Emptying_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter entleeren. + /// + internal static string Emptying_tank { + get { + return ResourceManager.GetString("Emptying_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entleerventil. + /// + internal static string Emptying_valve { + get { + return ResourceManager.GetString("Emptying_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aktivieren "Bemerkung". + /// + internal static string Enable_Remark { + get { + return ResourceManager.GetString("Enable_Remark", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ende. + /// + internal static string End { + get { + return ResourceManager.GetString("End", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bedingung für das Ende. + /// + internal static string End_Condition { + get { + return ResourceManager.GetString("End_Condition", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnis speichern. + /// + internal static string End_session { + get { + return ResourceManager.GetString("End_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Endstand. + /// + internal static string End_State { + get { + return ResourceManager.GetString("End_State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauerversuch Zyklen. + /// + internal static string Endurance_cycle { + get { + return ResourceManager.GetString("Endurance_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauerversuch Zyklen Ausführen. + /// + internal static string Endurance_cycle_execution { + get { + return ResourceManager.GetString("Endurance_cycle_execution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauerversuch Zyklen Stufen. + /// + internal static string Endurance_cycle_steps { + get { + return ResourceManager.GetString("Endurance_cycle_steps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Energie. + /// + internal static string Energy { + get { + return ResourceManager.GetString("Energy", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwort eingeben.. + /// + internal static string Enter_password { + get { + return ResourceManager.GetString("Enter_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geben Sie die Protokolldaten ein. + /// + internal static string Enter_protocol_data { + get { + return ResourceManager.GetString("Enter_protocol_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Eingabe Seriennr. am Ende. + /// + internal static string Enter_SNs_at_the_end { + get { + return ResourceManager.GetString("Enter_SNs_at_the_end", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geben Sie die WZ-Daten ein. + /// + internal static string Enter_water_meter_data { + get { + return ResourceManager.GetString("Enter_water_meter_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehl. Korr.- [%]. + /// + internal static string Err_cor_neg_pct_chdr { + get { + return ResourceManager.GetString("Err_cor_neg_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehl. Korr.+ [%]. + /// + internal static string Err_cor_pos_pct_chdr { + get { + return ResourceManager.GetString("Err_cor_pos_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlergrenze - [%]. + /// + internal static string Err_limit_neg_pct_chdr { + get { + return ResourceManager.GetString("Err_limit_neg_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlergrenze + [%]. + /// + internal static string Err_limit_pos_pct_chdr { + get { + return ResourceManager.GetString("Err_limit_pos_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler. + /// + internal static string Error { + get { + return ResourceManager.GetString("Error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Laden der Benutzer aus der Datenbank.. + /// + internal static string Error_loading_users_from_the_database { + get { + return ResourceManager.GetString("Error_loading_users_from_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler [%]. + /// + internal static string Error_pct { + get { + return ResourceManager.GetString("Error_pct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler Speicherparameter von {0}. + /// + internal static string Error_saving_parameters_of_0 { + get { + return ResourceManager.GetString("Error_saving_parameters_of_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Erzeugen der Datenbank.. + /// + internal static string Error_while_creating_DB_Reason { + get { + return ResourceManager.GetString("Error_while_creating_DB_Reason", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Schreiben in Datei:. + /// + internal static string Error_writing_into_file_ { + get { + return ResourceManager.GetString("Error_writing_into_file_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer [s]:. + /// + internal static string Estimated_time_s_ { + get { + return ResourceManager.GetString("Estimated_time_s_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bewerten. + /// + internal static string Evaluate { + get { + return ResourceManager.GetString("Evaluate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Berrechnetes Volumen. + /// + internal static string Evaluate_volume { + get { + return ResourceManager.GetString("Evaluate_volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verdunstung. + /// + internal static string Evaporation { + get { + return ResourceManager.GetString("Evaporation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Veranstaltungen. + /// + internal static string Event_logs { + get { + return ResourceManager.GetString("Event_logs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ereignisauslöser. + /// + internal static string Event_triggers { + get { + return ResourceManager.GetString("Event_triggers", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden. + /// + internal static string Exit { + get { + return ResourceManager.GetString("Exit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exportieren. + /// + internal static string Export { + get { + return ResourceManager.GetString("Export", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to NiO. + /// + internal static string Failed { + get { + return ResourceManager.GetString("Failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}' Eingabe fehlerhaft ({1}) . + /// + internal static string failed_0_1_exclamation { + get { + return ResourceManager.GetString("failed_0_1_exclamation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Erzeugen der Beispiel-Datenbank.. + /// + internal static string Failed_to_create_a_sample_database { + get { + return ResourceManager.GetString("Failed_to_create_a_sample_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Exportieren der Datenbank.. + /// + internal static string Failed_to_export_the_database { + get { + return ResourceManager.GetString("Failed_to_export_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim initialisieren von Teil '{0}':{1}{2}. + /// + internal static string Failed_to_initialize_component_0_1_2 { + get { + return ResourceManager.GetString("Failed_to_initialize_component_0_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim initialisieren von Gerät '{0}':{1}{2}. + /// + internal static string Failed_to_initialize_device_0_1_2 { + get { + return ResourceManager.GetString("Failed_to_initialize_device_0_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schnell. + /// + internal static string fast { + get { + return ResourceManager.GetString("fast", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzulauf. + /// + internal static string Feeding_chdr { + get { + return ResourceManager.GetString("Feeding_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzulauf. + /// + internal static string FeedingTabPageTitle { + get { + return ResourceManager.GetString("FeedingTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Befüllen. + /// + internal static string Fill { + get { + return ResourceManager.GetString("Fill", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Befüllen mit Wasser ?. + /// + internal static string Fill_with_water { + get { + return ResourceManager.GetString("Fill_with_water", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter. + /// + internal static string Filter { + get { + return ResourceManager.GetString("Filter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden Sie die Messungen bitte. + /// + internal static string Finish_the_session_please { + get { + return ResourceManager.GetString("Finish_the_session_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden. + /// + internal static string FinishBtnText { + get { + return ResourceManager.GetString("FinishBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reparatur. + /// + internal static string Fix { + get { + return ResourceManager.GetString("Fix", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchfluss. + /// + internal static string Flow { + get { + return ResourceManager.GetString("Flow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchfluss nicht erreicht. + /// + internal static string Flow_adjustment_failed { + get { + return ResourceManager.GetString("Flow_adjustment_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to MID-Temperatur ausserhalb der Prüfbedingungen!. + /// + internal static string Flow_meter_temperature_range_does_not_fit_this_test_conditions { + get { + return ResourceManager.GetString("Flow_meter_temperature_range_does_not_fit_this_test_conditions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchflussprofil Empfindlichkeit Klasse. + /// + internal static string Flow_profile_sensitivity_class { + get { + return ResourceManager.GetString("Flow_profile_sensitivity_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellung Durchfluss. + /// + internal static string Flow_selection { + get { + return ResourceManager.GetString("Flow_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchflussmesser. + /// + internal static string Flowmeter { + get { + return ResourceManager.GetString("Flowmeter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fußzeile. + /// + internal static string Footer { + get { + return ResourceManager.GetString("Footer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to von. + /// + internal static string from { + get { + return ResourceManager.GetString("from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vollständiger Name. + /// + internal static string Full_name { + get { + return ResourceManager.GetString("Full_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Allgemein. + /// + internal static string General { + get { + return ResourceManager.GetString("General", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ermittle das Gewicht des Wassers im Behälter. + /// + internal static string Get_mass_of_water_in_the_tank { + get { + return ResourceManager.GetString("Get_mass_of_water_in_the_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Greifen. + /// + internal static string Grab { + get { + return ResourceManager.GetString("Grab", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bilder markieren. + /// + internal static string Grabbing_images { + get { + return ResourceManager.GetString("Grabbing_images", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Grafik. + /// + internal static string Graphs { + get { + return ResourceManager.GetString("Graphs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gruppen. + /// + internal static string Groups { + get { + return ResourceManager.GetString("Groups", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Laborleiter. + /// + internal static string Head_of_Lab { + get { + return ResourceManager.GetString("Head_of_Lab", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kopfzeile. + /// + internal static string Header { + get { + return ResourceManager.GetString("Header", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezähler. + /// + internal static string Heat_meter { + get { + return ResourceManager.GetString("Heat_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezähler Optionen. + /// + internal static string Heat_meter_options { + get { + return ResourceManager.GetString("Heat_meter_options", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezählersensoren. + /// + internal static string Heat_meter_sensors { + get { + return ResourceManager.GetString("Heat_meter_sensors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezähler. + /// + internal static string HeatMetersTabPageTitle { + get { + return ResourceManager.GetString("HeatMetersTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hilfe. + /// + internal static string Help { + get { + return ResourceManager.GetString("Help", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Änderungen, Historie. + /// + internal static string History_of_changes { + get { + return ResourceManager.GetString("History_of_changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Horizontal. + /// + internal static string Horizontally { + get { + return ResourceManager.GetString("Horizontally", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ID Nummer. + /// + internal static string ID { + get { + return ResourceManager.GetString("ID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignorieren. + /// + internal static string Ignore { + get { + return ResourceManager.GetString("Ignore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignorieren. + /// + internal static string IgnoreBtnText { + get { + return ResourceManager.GetString("IgnoreBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Importieren. + /// + internal static string Import { + get { + return ResourceManager.GetString("Import", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Information. + /// + internal static string Information { + get { + return ResourceManager.GetString("Information", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid {0}. + /// + internal static string Invalid_0 { + get { + return ResourceManager.GetString("Invalid_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlerhafte Losnr.. + /// + internal static string Invalid_batch_number { + get { + return ResourceManager.GetString("Invalid_batch_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auftrieb falsch. Bitte um Korrektur!. + /// + internal static string Invalid_buoyancy_parameter_Correct_pls { + get { + return ResourceManager.GetString("Invalid_buoyancy_parameter_Correct_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültige Einstellung. Bitte um Korrektur!. + /// + internal static string Invalid_calib_info_Correct_pls { + get { + return ResourceManager.GetString("Invalid_calib_info_Correct_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlerhafte Dichte-Parameter.\r\n Bitte um Korrektur.. + /// + internal static string Invalid_density_parameter_Correct_pls { + get { + return ResourceManager.GetString("Invalid_density_parameter_Correct_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültiges Passwort. + /// + internal static string Invalid_password { + get { + return ResourceManager.GetString("Invalid_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlerhafte Q2 Korrekturfaktoren. + /// + internal static string Invalid_Q2_correction_factors { + get { + return ResourceManager.GetString("Invalid_Q2_correction_factors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültiger Benutzername, Passwort oder Prüfstand. + /// + internal static string Invalid_user_password_or_bench { + get { + return ResourceManager.GetString("Invalid_user_password_or_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültiger Benutzername oder Passwort . + /// + internal static string Invalid_username_or_password { + get { + return ResourceManager.GetString("Invalid_username_or_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to IST-27 Kalibrier Koeffizient. + /// + internal static string ITS27_calibration_coefficients { + get { + return ResourceManager.GetString("ITS27_calibration_coefficients", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ITS-90 Kalibrier-Koeffizient. + /// + internal static string ITS90_calibration_coefficients { + get { + return ResourceManager.GetString("ITS90_calibration_coefficients", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ITS-90 Test. + /// + internal static string ITS90_test { + get { + return ResourceManager.GetString("ITS90_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Länge. + /// + internal static string L { + get { + return ResourceManager.GetString("L", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sprache. + /// + internal static string Language { + get { + return ResourceManager.GetString("Language", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Letzte Änderung von. + /// + internal static string Last_changed_by { + get { + return ResourceManager.GetString("Last_changed_by", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Letzter Zyklus, bitte warten. + /// + internal static string Last_cycle_wait_please { + get { + return ResourceManager.GetString("Last_cycle_wait_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Links. + /// + internal static string Left { + get { + return ResourceManager.GetString("Left", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstellenleiter. + /// + internal static string Legalizator { + get { + return ResourceManager.GetString("Legalizator", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Weniger. + /// + internal static string LessBtnText { + get { + return ResourceManager.GetString("LessBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserstand. + /// + internal static string Level { + get { + return ResourceManager.GetString("Level", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Live. + /// + internal static string Live { + get { + return ResourceManager.GetString("Live", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Laden des Prüfvorgangs. + /// + internal static string Loading_the_procedure { + get { + return ResourceManager.GetString("Loading_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abschließen. + /// + internal static string LockBtnText { + get { + return ResourceManager.GetString("LockBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protokoll. + /// + internal static string Logging { + get { + return ResourceManager.GetString("Logging", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler. + /// + internal static string Main { + get { + return ResourceManager.GetString("Main", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler. + /// + internal static string Main_ { + get { + return ResourceManager.GetString("Main_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Haupt-Messabweichung. + /// + internal static string Main_uncertainty { + get { + return ResourceManager.GetString("Main_uncertainty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler. + /// + internal static string Main_Water_Meter { + get { + return ResourceManager.GetString("Main_Water_Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzählerstand. + /// + internal static string Main_Water_Meter_State { + get { + return ResourceManager.GetString("Main_Water_Meter_State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler Seriennummer. + /// + internal static string Main_WM_SerialNr { + get { + return ResourceManager.GetString("Main_WM_SerialNr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wartungstechniker. + /// + internal static string Maintenance_Specialist { + get { + return ResourceManager.GetString("Maintenance_Specialist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter entleeren. + /// + internal static string Make_tank_empty { + get { + return ResourceManager.GetString("Make_tank_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manuelle Steuerung deaktiviert. + /// + internal static string Manual_control_disabled { + get { + return ResourceManager.GetString("Manual_control_disabled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manuelle Wasserstandsmessung!. + /// + internal static string Manual_level_measurement { + get { + return ResourceManager.GetString("Manual_level_measurement", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Masse. + /// + internal static string Mass { + get { + return ResourceManager.GetString("Mass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Masse dif. [kg]:. + /// + internal static string Mass_diff_kg_ { + get { + return ResourceManager.GetString("Mass_diff_kg_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Refferenzmasse Messung timeout. + /// + internal static string Mass_measurement_timeout { + get { + return ResourceManager.GetString("Mass_measurement_timeout", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Massemessmethode. + /// + internal static string Mass_method { + get { + return ResourceManager.GetString("Mass_method", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Masse wiederholungen. + /// + internal static string Mass_repeats { + get { + return ResourceManager.GetString("Mass_repeats", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Massespanne [kg]. + /// + internal static string Mass_spread_kg { + get { + return ResourceManager.GetString("Mass_spread_kg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. Massezunahme [Kg]. + /// + internal static string Max_mass_increase_kg { + get { + return ResourceManager.GetString("Max_mass_increase_kg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. Druckabfall [bar]. + /// + internal static string Max_pressure_drop_bar { + get { + return ResourceManager.GetString("Max_pressure_drop_bar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to (max._X_ alphanumerische Zeichen). + /// + internal static string MaxChars { + get { + return ResourceManager.GetString("MaxChars", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. erlaubter Druck!. + /// + internal static string Maximum_admissible_pressure { + get { + return ResourceManager.GetString("Maximum_admissible_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiegen. + /// + internal static string Measure_the_mass { + get { + return ResourceManager.GetString("Measure_the_mass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gemessen. + /// + internal static string Measured { + get { + return ResourceManager.GetString("Measured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messen der Refferenzmasse. + /// + internal static string Measuring_the_reference_mass { + get { + return ResourceManager.GetString("Measuring_the_reference_mass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiegen. + /// + internal static string Measuring_the_weight { + get { + return ResourceManager.GetString("Measuring_the_weight", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Meldung. + /// + internal static string Message { + get { + return ResourceManager.GetString("Message", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler. + /// + internal static string Meter { + get { + return ResourceManager.GetString("Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Meter Kommunikation läuft. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler geprüft. + /// + internal static string Meter_types_tested { + get { + return ResourceManager.GetString("Meter_types_tested", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messsensoren. + /// + internal static string MetersTabPageTitle { + get { + return ResourceManager.GetString("MetersTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Methode {0} kann nicht benutzt werden!. + /// + internal static string Method_0_cannot_be_used { + get { + return ResourceManager.GetString("Method_0_cannot_be_used", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfverfahren. + /// + internal static string Method_chdr { + get { + return ResourceManager.GetString("Method_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auswahl Prüfart. + /// + internal static string Method_selection { + get { + return ResourceManager.GetString("Method_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Metr. Klasse. + /// + internal static string Metrological_class { + get { + return ResourceManager.GetString("Metrological_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messtechniker. + /// + internal static string Metrologist { + get { + return ResourceManager.GetString("Metrologist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Metr.Daten. + /// + internal static string Metrology { + get { + return ResourceManager.GetString("Metrology", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Min. Höhe. + /// + internal static string Min_height { + get { + return ResourceManager.GetString("Min_height", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Min. Breite. + /// + internal static string Min_width { + get { + return ResourceManager.GetString("Min_width", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucksensor fehlt!. + /// + internal static string Missing_a_pressure_meter { + get { + return ResourceManager.GetString("Missing_a_pressure_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Maßstab fehlt. + /// + internal static string Missing_a_scale { + get { + return ResourceManager.GetString("Missing_a_scale", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfbehälter nicht gefunden!. + /// + internal static string Missing_a_tank_with_volume_measurement { + get { + return ResourceManager.GetString("Missing_a_tank_with_volume_measurement", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ventil fehlt um Vergleichsmessung durchzuführen!. + /// + internal static string Missing_a_valve_for_comparative_method { + get { + return ResourceManager.GetString("Missing_a_valve_for_comparative_method", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Modus. + /// + internal static string Mode { + get { + return ResourceManager.GetString("Mode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mehr. + /// + internal static string More { + get { + return ResourceManager.GetString("More", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mehr. + /// + internal static string MoreBtnText { + get { + return ResourceManager.GetString("MoreBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Montage. + /// + internal static string Mounting { + get { + return ResourceManager.GetString("Mounting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stummschaltung des Alarms. + /// + internal static string Mute_alarm { + get { + return ResourceManager.GetString("Mute_alarm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Name. + /// + internal static string Name { + get { + return ResourceManager.GetString("Name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine Nr.. + /// + internal static string NaN { + get { + return ResourceManager.GetString("NaN", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Prüfstrecke . + /// + internal static string New_bench_path_name { + get { + return ResourceManager.GetString("New_bench_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Wasserzulauf. + /// + internal static string New_feeding_path_name { + get { + return ResourceManager.GetString("New_feeding_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P heiß. + /// + internal static string New_heat_meters_path_name { + get { + return ResourceManager.GetString("New_heat_meters_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to - Kopie. + /// + internal static string New_name_copy { + get { + return ResourceManager.GetString("New_name_copy", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Durchfluss. + /// + internal static string New_output_path_name { + get { + return ResourceManager.GetString("New_output_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorgang. + /// + internal static string New_procedure_name { + get { + return ResourceManager.GetString("New_procedure_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profil. + /// + internal static string New_profile_name { + get { + return ResourceManager.GetString("New_profile_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neues Durchflussvolumen. + /// + internal static string New_Q_names { + get { + return ResourceManager.GetString("New_Q_names", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Sensor. + /// + internal static string New_sensors_path_name { + get { + return ResourceManager.GetString("New_sensors_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung . + /// + internal static string New_test_name { + get { + return ResourceManager.GetString("New_test_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neue Bezeichnung. + /// + internal static string New_transition_name { + get { + return ResourceManager.GetString("New_transition_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neue Tabelle. + /// + internal static string NewTabBtnText { + get { + return ResourceManager.GetString("NewTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nächste. + /// + internal static string Next { + get { + return ResourceManager.GetString("Next", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nächstes Prüfvolumen. + /// + internal static string Next_test_volume { + get { + return ResourceManager.GetString("Next_test_volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Weiter >. + /// + internal static string NextBtnText { + get { + return ResourceManager.GetString("NextBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nein. + /// + internal static string no { + get { + return ResourceManager.GetString("no", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine Info vorhanden!. + /// + internal static string No_info_available { + get { + return ResourceManager.GetString("No_info_available", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine Ergebnisse zu drucken!. + /// + internal static string No_results_to_print { + get { + return ResourceManager.GetString("No_results_to_print", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler fehlt!. + /// + internal static string No_water_meter { + get { + return ResourceManager.GetString("No_water_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Es ist kein Prüfstand in der Programmkonfiguration definiert.. + /// + internal static string NoBenchMsg { + get { + return ResourceManager.GetString("NoBenchMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nein. + /// + internal static string NoBtn { + get { + return ResourceManager.GetString("NoBtn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbankverbindung konnte nicht hergestellt werden.. + /// + internal static string NoDatabaseMsg { + get { + return ResourceManager.GetString("NoDatabaseMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bemerkung. + /// + internal static string Notes { + get { + return ResourceManager.GetString("Notes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <Keine Konfiguration notwendig>. + /// + internal static string nothing_to_configure { + get { + return ResourceManager.GetString("nothing_to_configure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benachrichtigung. + /// + internal static string Notification { + get { + return ResourceManager.GetString("Notification", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nr.. + /// + internal static string Nr { + get { + return ResourceManager.GetString("Nr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzahl Zähler in der Gruppe. + /// + internal static string Nr_meters_in_a_group { + get { + return ResourceManager.GetString("Nr_meters_in_a_group", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OK. + /// + internal static string OkBtnText { + get { + return ResourceManager.GetString("OkBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to offen. + /// + internal static string open { + get { + return ResourceManager.GetString("open", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastkopf wurde deaktiviert vom Benutzer!. + /// + internal static string Opto_head_was_disabled_by_the_user { + get { + return ResourceManager.GetString("Opto_head_was_disabled_by_the_user", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Andere. + /// + internal static string Other { + get { + return ResourceManager.GetString("Other", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Regelstrecke. + /// + internal static string Output_chdr { + get { + return ResourceManager.GetString("Output_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ausgabe. + /// + internal static string OutputTabPageTitle { + get { + return ResourceManager.GetString("OutputTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druckdifferenz. + /// + internal static string P_delta { + get { + return ResourceManager.GetString("P_delta", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck ein . + /// + internal static string P_in { + get { + return ResourceManager.GetString("P_in", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Eingang Ende. + /// + internal static string P_in_end { + get { + return ResourceManager.GetString("P_in_end", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Eingang Start. + /// + internal static string P_in_start { + get { + return ResourceManager.GetString("P_in_start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck aus. + /// + internal static string P_out { + get { + return ResourceManager.GetString("P_out", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Ausgang Ende. + /// + internal static string P_out_end { + get { + return ResourceManager.GetString("P_out_end", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Ausgang Start. + /// + internal static string P_out_start { + get { + return ResourceManager.GetString("P_out_start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seite. + /// + internal static string Page { + get { + return ResourceManager.GetString("Page", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parameter. + /// + internal static string Parameter { + get { + return ResourceManager.GetString("Parameter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parameter. + /// + internal static string Parameters { + get { + return ResourceManager.GetString("Parameters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergeordnete Komponente. + /// + internal static string Parent { + get { + return ResourceManager.GetString("Parent", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergeordneter Name. + /// + internal static string Parent_name { + get { + return ResourceManager.GetString("Parent_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Teil. + /// + internal static string Part { + get { + return ResourceManager.GetString("Part", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to iO. + /// + internal static string Passed { + get { + return ResourceManager.GetString("Passed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwort. + /// + internal static string Password { + get { + return ResourceManager.GetString("Password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwörter sind unterschiedlich! Bitte neu eingeben!. + /// + internal static string Passwords_different { + get { + return ResourceManager.GetString("Passwords_different", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfade. + /// + internal static string Paths { + get { + return ResourceManager.GetString("Paths", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PID-Regler. + /// + internal static string PID { + get { + return ResourceManager.GetString("PID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstrecke. + /// + internal static string Pipeline { + get { + return ResourceManager.GetString("Pipeline", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte ändern Sie die folgenden Einstellungen:. + /// + internal static string Please_change_the_following_settings { + get { + return ResourceManager.GetString("Please_change_the_following_settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte wählen Sie anderen Übergangname für Sequenz. + /// + internal static string Please_choose_another_transition_sequence_name { + get { + return ResourceManager.GetString("Please_choose_another_transition_sequence_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ende. + /// + internal static string Please_select_a_cycle_a_test_or_empty { + get { + return ResourceManager.GetString("Please_select_a_cycle_a_test_or_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wählen Sie eine Prüfvorlage. + /// + internal static string Please_select_a_procedure { + get { + return ResourceManager.GetString("Please_select_a_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte wählen Sie eine Prüfung aus.. + /// + internal static string Please_select_a_test { + get { + return ResourceManager.GetString("Please_select_a_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte wählen Sie einen Prüfstand aus.. + /// + internal static string PLs_select_testbench { + get { + return ResourceManager.GetString("PLs_select_testbench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestellung. + /// + internal static string PO { + get { + return ResourceManager.GetString("PO", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Leistung [%]. + /// + internal static string PowerPct { + get { + return ResourceManager.GetString("PowerPct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck tief. + /// + internal static string Pr_down { + get { + return ResourceManager.GetString("Pr_down", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck hoch. + /// + internal static string Pr_up { + get { + return ResourceManager.GetString("Pr_up", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Prüfstrecke max. [bar]. + /// + internal static string Press_lim_hi_chdr { + get { + return ResourceManager.GetString("Press_lim_hi_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Prüfstrecke min. [bar]. + /// + internal static string Press_lim_lo_chdr { + get { + return ResourceManager.GetString("Press_lim_lo_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OK Drücken um Prüfstand zu starten. + /// + internal static string Press_OK_to_start_the_bench { + get { + return ResourceManager.GetString("Press_OK_to_start_the_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucken Sie OK, wenn Sie fertig sind.. + /// + internal static string Press_OK_when_done { + get { + return ResourceManager.GetString("Press_OK_when_done", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck. + /// + internal static string Pressure { + get { + return ResourceManager.GetString("Pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck bis [bar]. + /// + internal static string Pressure_hi_bar { + get { + return ResourceManager.GetString("Pressure_hi_bar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck von [bar]. + /// + internal static string Pressure_lo_bar { + get { + return ResourceManager.GetString("Pressure_lo_bar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druckverlust Klasse. + /// + internal static string Pressure_loss_class { + get { + return ResourceManager.GetString("Pressure_loss_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucksensor. + /// + internal static string Pressure_meter { + get { + return ResourceManager.GetString("Pressure_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellung Druck. + /// + internal static string Pressure_selection { + get { + return ResourceManager.GetString("Pressure_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorherige. + /// + internal static string Previous { + get { + return ResourceManager.GetString("Previous", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorherige Ergebnisse. + /// + internal static string Previous_results { + get { + return ResourceManager.GetString("Previous_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorheriger Schritt fehlt oder nicht OK !. + /// + internal static string Previous_step_is_missing_or_NOK { + get { + return ResourceManager.GetString("Previous_step_is_missing_or_NOK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck wiederholen. + /// + internal static string Print_again { + get { + return ResourceManager.GetString("Print_again", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nur gute Ergebnisse Drucken. + /// + internal static string Print_only_good_results { + get { + return ResourceManager.GetString("Print_only_good_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nur die letzte Messung Drucken. + /// + internal static string Print_only_the_last_measurement { + get { + return ResourceManager.GetString("Print_only_the_last_measurement", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ-Ergebnisse Drucken. + /// + internal static string Print_watermeter_results { + get { + return ResourceManager.GetString("Print_watermeter_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucken. + /// + internal static string PrintBtnText { + get { + return ResourceManager.GetString("PrintBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gedruckt. + /// + internal static string Printed { + get { + return ResourceManager.GetString("Printed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucker. + /// + internal static string Printer { + get { + return ResourceManager.GetString("Printer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucker. + /// + internal static string PrinterBtnText { + get { + return ResourceManager.GetString("PrinterBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck. + /// + internal static string Printing { + get { + return ResourceManager.GetString("Printing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage. + /// + internal static string Procedure { + get { + return ResourceManager.GetString("Procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage {0} hinzugefügt.. + /// + internal static string Procedure_0_added { + get { + return ResourceManager.GetString("Procedure_0_added", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage {0} geändert.. + /// + internal static string Procedure_0_modified { + get { + return ResourceManager.GetString("Procedure_0_modified", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage Name. + /// + internal static string Procedure_name { + get { + return ResourceManager.GetString("Procedure_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlagen. + /// + internal static string Procedures { + get { + return ResourceManager.GetString("Procedures", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prozess. + /// + internal static string Process { + get { + return ResourceManager.GetString("Process", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hersteller. + /// + internal static string Producer { + get { + return ResourceManager.GetString("Producer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Produktname. + /// + internal static string Product_name { + get { + return ResourceManager.GetString("Product_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profile. + /// + internal static string Profile { + get { + return ResourceManager.GetString("Profile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profil {0} hinzugefügt. + /// + internal static string Profile_0_added { + get { + return ResourceManager.GetString("Profile_0_added", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profil {0} geändert.. + /// + internal static string Profile_0_modified { + get { + return ResourceManager.GetString("Profile_0_modified", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Programm muss beendet werden!. + /// + internal static string Program_must_be_closed { + get { + return ResourceManager.GetString("Program_must_be_closed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neustart erforderlich. + /// + internal static string Program_restart_is_required_to_apply_some_settings { + get { + return ResourceManager.GetString("Program_restart_is_required_to_apply_some_settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Programmversion passt nicht.. + /// + internal static string Program_version_does_not_match { + get { + return ResourceManager.GetString("Program_version_does_not_match", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verlauf. + /// + internal static string Progress { + get { + return ResourceManager.GetString("Progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Projektnummer. + /// + internal static string Project_number { + get { + return ResourceManager.GetString("Project_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prompt. + /// + internal static string Prompt { + get { + return ResourceManager.GetString("Prompt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Eigenschaften. + /// + internal static string Properties { + get { + return ResourceManager.GetString("Properties", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geschützter Prüfprozess. + /// + internal static string Protected_procedure { + get { + return ResourceManager.GetString("Protected_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protokoll. + /// + internal static string Protocol { + get { + return ResourceManager.GetString("Protocol", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protokollname. + /// + internal static string Protocol_title { + get { + return ResourceManager.GetString("Protocol_title", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Veröffentlichen. + /// + internal static string Publish { + get { + return ResourceManager.GetString("Publish", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse. + /// + internal static string Pulses { + get { + return ResourceManager.GetString("Pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse gezählt!. + /// + internal static string Pulses_count { + get { + return ResourceManager.GetString("Pulses_count", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse OK. + /// + internal static string Pulses_count_is_OK { + get { + return ResourceManager.GetString("Pulses_count_is_OK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string PulsesPerKilogram { + get { + return ResourceManager.GetString("PulsesPerKilogram", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impuls per kWh. + /// + internal static string PulsesPerKWh { + get { + return ResourceManager.GetString("PulsesPerKWh", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse pro Liter. + /// + internal static string PulsesPerLtr { + get { + return ResourceManager.GetString("PulsesPerLtr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string PulsesPerUnit { + get { + return ResourceManager.GetString("PulsesPerUnit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe. + /// + internal static string Pump { + get { + return ResourceManager.GetString("Pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe läuft. + /// + internal static string Pump_is_running { + get { + return ResourceManager.GetString("Pump_is_running", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe Leistung [%]. + /// + internal static string Pump_power_pct { + get { + return ResourceManager.GetString("Pump_power_pct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestellung. + /// + internal static string Purchase_order { + get { + return ResourceManager.GetString("Purchase_order", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestellung darf max. {0} Ziffern haben!. + /// + internal static string Purchase_order_may_have_max_N_characters { + get { + return ResourceManager.GetString("Purchase_order_may_have_max_N_characters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Befüllen. + /// + internal static string Purge_Begin { + get { + return ResourceManager.GetString("Purge_Begin", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand befüllen?. + /// + internal static string Purge_bench_qm { + get { + return ResourceManager.GetString("Purge_bench_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entwässern. + /// + internal static string Purge_End { + get { + return ResourceManager.GetString("Purge_End", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spülen. + /// + internal static string Purging { + get { + return ResourceManager.GetString("Purging", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spülen ({0}: Schritt {1}/{2}). + /// + internal static string Purging_i_n { + get { + return ResourceManager.GetString("Purging_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q von. + /// + internal static string Q_from { + get { + return ResourceManager.GetString("Q_from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q von [l/h]. + /// + internal static string Q_from_lph { + get { + return ResourceManager.GetString("Q_from_lph", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q-Set Methode. + /// + internal static string Q_set_method_chdr { + get { + return ResourceManager.GetString("Q_set_method_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q Ziel. + /// + internal static string Q_tg { + get { + return ResourceManager.GetString("Q_tg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q bis. + /// + internal static string Q_to { + get { + return ResourceManager.GetString("Q_to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q bis [l/h]. + /// + internal static string Q_to_lph { + get { + return ResourceManager.GetString("Q_to_lph", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qfall. + /// + internal static string Qfall { + get { + return ResourceManager.GetString("Qfall", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qmax [m3/h]. + /// + internal static string Qmax { + get { + return ResourceManager.GetString("Qmax", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qmin [m3/h]. + /// + internal static string Qmin { + get { + return ResourceManager.GetString("Qmin", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qn [m3/h]. + /// + internal static string Qn { + get { + return ResourceManager.GetString("Qn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qsteig. + /// + internal static string Qrise { + get { + return ResourceManager.GetString("Qrise", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qt [m3/h]. + /// + internal static string Qt { + get { + return ResourceManager.GetString("Qt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Frage. + /// + internal static string Question { + get { + return ResourceManager.GetString("Question", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchflussänderung [%]. + /// + internal static string RateOfChangePct { + get { + return ResourceManager.GetString("RateOfChangePct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fertig. + /// + internal static string Ready { + get { + return ResourceManager.GetString("Ready", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reduktionsart. + /// + internal static string Red_type_chdr { + get { + return ResourceManager.GetString("Red_type_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Referenzfehler [%]:. + /// + internal static string Ref_error_pct_ { + get { + return ResourceManager.GetString("Ref_error_pct_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.durchfluss [m3/h]:. + /// + internal static string Ref_flow_m3h_ { + get { + return ResourceManager.GetString("Ref_flow_m3h_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.Frequenz [Hz]:. + /// + internal static string Ref_freq_Hz_ { + get { + return ResourceManager.GetString("Ref_freq_Hz_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Referenzmassendichte [kg/m3]. + /// + internal static string Ref_mass_dens_kg_m3 { + get { + return ResourceManager.GetString("Ref_mass_dens_kg_m3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.Impulse. + /// + internal static string Ref_pulses { + get { + return ResourceManager.GetString("Ref_pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref. Impulse gezählt!. + /// + internal static string Ref_pulses_count { + get { + return ResourceManager.GetString("Ref_pulses_count", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.Volumen [l]:. + /// + internal static string Ref_volume_l_ { + get { + return ResourceManager.GetString("Ref_volume_l_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to IDM. + /// + internal static string Reference { + get { + return ResourceManager.GetString("Reference", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Refferenzmasse Fehlmessung. + /// + internal static string Reference_mass_measurement_error { + get { + return ResourceManager.GetString("Reference_mass_measurement_error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aktualisierung. + /// + internal static string Refresh { + get { + return ResourceManager.GetString("Refresh", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reg.Ventil. + /// + internal static string Reg_valve { + get { + return ResourceManager.GetString("Reg_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reg.Ventilpositionen. + /// + internal static string Reg_valve_pos { + get { + return ResourceManager.GetString("Reg_valve_pos", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Relativer Q von. + /// + internal static string RelativeQfrom { + get { + return ResourceManager.GetString("RelativeQfrom", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Relativer Q bis. + /// + internal static string RelativeQto { + get { + return ResourceManager.GetString("RelativeQto", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorherige Ergebnisse Herunterladen. + /// + internal static string Reload_previous_results { + get { + return ResourceManager.GetString("Reload_previous_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit. + /// + internal static string remaining_time { + get { + return ResourceManager.GetString("remaining_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bemerkung. + /// + internal static string Remark { + get { + return ResourceManager.GetString("Remark", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remote Datenbank kann nicht Exportiert werden!. + /// + internal static string Remote_database_cannot_be_exported { + get { + return ResourceManager.GetString("Remote_database_cannot_be_exported", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remote Datenbank kann nicht Importiert werden!. + /// + internal static string Remote_database_cannot_be_imported { + get { + return ResourceManager.GetString("Remote_database_cannot_be_imported", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fernzugriff auf Datenbank is nicht kompatibel.. + /// + internal static string Remote_db_is_not_compatible { + get { + return ResourceManager.GetString("Remote_db_is_not_compatible", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entfernen. + /// + internal static string Remove { + get { + return ResourceManager.GetString("Remove", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Alles entfernen. + /// + internal static string Remove_all { + get { + return ResourceManager.GetString("Remove_all", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Löschen. + /// + internal static string RemoveBtnText { + get { + return ResourceManager.GetString("RemoveBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tabelle entfernen. + /// + internal static string RemoveTabBtnText { + get { + return ResourceManager.GetString("RemoveTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tabelle umbenennen. + /// + internal static string RenameTabBtnText { + get { + return ResourceManager.GetString("RenameTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwort wiederholen. + /// + internal static string Repeat_password { + get { + return ResourceManager.GetString("Repeat_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederh. Nr.. + /// + internal static string Repeats_nr_chdr { + get { + return ResourceManager.GetString("Repeats_nr_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholung. + /// + internal static string Repetition { + get { + return ResourceManager.GetString("Repetition", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Solltemperatur [°C]. + /// + internal static string Required_temperature_C { + get { + return ResourceManager.GetString("Required_temperature_C", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage resetten!. + /// + internal static string Resetting_scales { + get { + return ResourceManager.GetString("Resetting_scales", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Widerstand. + /// + internal static string Resistance { + get { + return ResourceManager.GetString("Resistance", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auflösung. + /// + internal static string Resolution { + get { + return ResourceManager.GetString("Resolution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte starten Sie die Anwendung erneut um die Änderungen zu übernehmen.. + /// + internal static string Restart_To_Apply_Changes { + get { + return ResourceManager.GetString("Restart_To_Apply_Changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederherstellen. + /// + internal static string Restore { + get { + return ResourceManager.GetString("Restore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Modus wiederherstellen. + /// + internal static string Restore_session { + get { + return ResourceManager.GetString("Restore_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnis. + /// + internal static string Result { + get { + return ResourceManager.GetString("Result", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse. + /// + internal static string Results { + get { + return ResourceManager.GetString("Results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse von Zählerlos {0}. + /// + internal static string Results_of_batch_0 { + get { + return ResourceManager.GetString("Results_of_batch_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholen. + /// + internal static string Retry { + get { + return ResourceManager.GetString("Retry", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholen. + /// + internal static string RetryBtnText { + get { + return ResourceManager.GetString("RetryBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbankverbindung wiederherstellen. + /// + internal static string RetryDatabaseText { + get { + return ResourceManager.GetString("RetryDatabaseText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Revision??. + /// + internal static string Revision { + get { + return ResourceManager.GetString("Revision", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to RFID Kommunikation fehlgeschlagen!. + /// + internal static string RFID_communication_failed { + get { + return ResourceManager.GetString("RFID_communication_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Rechts. + /// + internal static string Right { + get { + return ResourceManager.GetString("Right", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ROI Daten. + /// + internal static string ROI_Data { + get { + return ResourceManager.GetString("ROI_Data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ROI-Erkennung läuft. + /// + internal static string ROI_Detection_in_Progress { + get { + return ResourceManager.GetString("ROI_Detection_in_Progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern. + /// + internal static string Save { + get { + return ResourceManager.GetString("Save", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wieder speichern. + /// + internal static string Save_again { + get { + return ResourceManager.GetString("Save_again", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern. + /// + internal static string Save_column_widths { + get { + return ResourceManager.GetString("Save_column_widths", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern aller Ergebniss.. + /// + internal static string Saving_all_results { + get { + return ResourceManager.GetString("Saving_all_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern und Drucken Ergebnisse. + /// + internal static string Saving_and_printing_results { + get { + return ResourceManager.GetString("Saving_and_printing_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern Konfiguration.. + /// + internal static string Saving_configuration { + get { + return ResourceManager.GetString("Saving_configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern Konfiguration fehlheschlagen.. + /// + internal static string Saving_configuration_failed { + get { + return ResourceManager.GetString("Saving_configuration_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse speichern!. + /// + internal static string Saving_results { + get { + return ResourceManager.GetString("Saving_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern Ergebnisse fehlgeschlagen.. + /// + internal static string Saving_results_failed { + get { + return ResourceManager.GetString("Saving_results_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage Kommunikationsfehler!. + /// + internal static string Scale_communication_error { + get { + return ResourceManager.GetString("Scale_communication_error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage Kommunikation timeout!. + /// + internal static string Scale_communication_timeout { + get { + return ResourceManager.GetString("Scale_communication_timeout", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bildschirm. + /// + internal static string ScreenBtnText { + get { + return ResourceManager.GetString("ScreenBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to s. + /// + internal static string sec { + get { + return ResourceManager.GetString("sec", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wähle Kaltwasser. + /// + internal static string Select_COLD_tank { + get { + return ResourceManager.GetString("Select_COLD_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten Auswahl. + /// + internal static string Select_Component { + get { + return ResourceManager.GetString("Select_Component", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wähle Heißwasser. + /// + internal static string Select_HOT_tank { + get { + return ResourceManager.GetString("Select_HOT_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wählen Sie Bilder aus und drücken Sie 'Wiederholen', um die Erkennung zu wiederholen. + /// + internal static string Select_images_and_press_Retry_to_retry_RoI_detection { + get { + return ResourceManager.GetString("Select_images_and_press_Retry_to_retry_RoI_detection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wähle Warmwasser. + /// + internal static string Select_WARM_tank { + get { + return ResourceManager.GetString("Select_WARM_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse ausgewählt. + /// + internal static string Selected_results { + get { + return ResourceManager.GetString("Selected_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messs.. + /// + internal static string Sensor { + get { + return ResourceManager.GetString("Sensor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastung. + /// + internal static string Sensors { + get { + return ResourceManager.GetString("Sensors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastsysteme. + /// + internal static string Sensors_chdr { + get { + return ResourceManager.GetString("Sensors_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sensus Erweiterungen. + /// + internal static string Sensus_extensions { + get { + return ResourceManager.GetString("Sensus_extensions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Versendet. + /// + internal static string Sent { + get { + return ResourceManager.GetString("Sent", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seriennummer. + /// + internal static string Serial_number { + get { + return ResourceManager.GetString("Serial_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seriennummer. + /// + internal static string SerialNr { + get { + return ResourceManager.GetString("SerialNr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Session. + /// + internal static string Session { + get { + return ResourceManager.GetString("Session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Kaltwasser Kühltemperatur. + /// + internal static string Set_cold_water_cooling_temperature { + get { + return ResourceManager.GetString("Set_cold_water_cooling_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to setze Durchfluss. + /// + internal static string Set_flow { + get { + return ResourceManager.GetString("Set_flow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Heißwasser Kühltemperatur. + /// + internal static string Set_hot_water_cooling_temperature { + get { + return ResourceManager.GetString("Set_hot_water_cooling_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Heißwasser Heiztemperatur. + /// + internal static string Set_hot_water_heating_temperature { + get { + return ResourceManager.GetString("Set_hot_water_heating_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Setze Pfad. + /// + internal static string Set_route { + get { + return ResourceManager.GetString("Set_route", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Warmwasser Kühltemperatur. + /// + internal static string Set_warm_water_cooling_temperature { + get { + return ResourceManager.GetString("Set_warm_water_cooling_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Warmwasser Heiztemperatur. + /// + internal static string Set_warm_water_heating_temperature { + get { + return ResourceManager.GetString("Set_warm_water_heating_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temperatur einstellen. + /// + internal static string Setting_temperature { + get { + return ResourceManager.GetString("Setting_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfdurchfluss einstellen. + /// + internal static string Setting_the_flow { + get { + return ResourceManager.GetString("Setting_the_flow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abpressdruck einstellen. + /// + internal static string Setting_the_water_pressure { + get { + return ResourceManager.GetString("Setting_the_water_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellungen. + /// + internal static string Settings { + get { + return ResourceManager.GetString("Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schwere. + /// + internal static string Severity { + get { + return ResourceManager.GetString("Severity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kurzbeschreibung. + /// + internal static string Short_dercription { + get { + return ResourceManager.GetString("Short_dercription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kurzbeschreibung. + /// + internal static string Short_description { + get { + return ResourceManager.GetString("Short_description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kurze Impulse. + /// + internal static string Short_pulses { + get { + return ResourceManager.GetString("Short_pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzeigen. + /// + internal static string Show { + get { + return ResourceManager.GetString("Show", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzeigen Ende Zyklus. + /// + internal static string Show_cycle_end_form { + get { + return ResourceManager.GetString("Show_cycle_end_form", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzeige der deaktivierten Positionen. + /// + internal static string Show_disabled_positions { + get { + return ResourceManager.GetString("Show_disabled_positions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dialog anzeigen. + /// + internal static string ShowDialog { + get { + return ResourceManager.GetString("ShowDialog", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PC ausschalten nach Beendigung der TBF. + /// + internal static string Shut_down_computer_after_exiting_TBF { + get { + return ResourceManager.GetString("Shut_down_computer_after_exiting_TBF", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geräte herunterfahren. + /// + internal static string Shutting_down_devices { + get { + return ResourceManager.GetString("Shutting_down_devices", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seite. + /// + internal static string Side { + get { + return ResourceManager.GetString("Side", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parallel mit Folgeschritt. + /// + internal static string Simultaneous_with_next_step { + get { + return ResourceManager.GetString("Simultaneous_with_next_step", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prallel mit vorherigem Schritt. + /// + internal static string Simultaneous_with_previous_step { + get { + return ResourceManager.GetString("Simultaneous_with_previous_step", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einzel. + /// + internal static string SingleBtnText { + get { + return ResourceManager.GetString("SingleBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ursprung. + /// + internal static string Source { + get { + return ResourceManager.GetString("Source", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stabil. + /// + internal static string stable { + get { + return ResourceManager.GetString("stable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Start. + /// + internal static string Start { + get { + return ResourceManager.GetString("Start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Start Prüfzyklus. + /// + internal static string Start_cycle { + get { + return ResourceManager.GetString("Start_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starte die Pumpe. + /// + internal static string Start_the_pump { + get { + return ResourceManager.GetString("Start_the_pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starte Prüfpunkt. + /// + internal static string Start_the_test { + get { + return ResourceManager.GetString("Start_the_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starten Sie den Prüfstand. + /// + internal static string Start_the_test_bench { + get { + return ResourceManager.GetString("Start_the_test_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung start. + /// + internal static string Starting_system { + get { + return ResourceManager.GetString("Starting_system", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kamera Start. + /// + internal static string Starting_the_cameras { + get { + return ResourceManager.GetString("Starting_the_cameras", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe starten. + /// + internal static string Starting_the_pump { + get { + return ResourceManager.GetString("Starting_the_pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Startventil. + /// + internal static string StartValve { + get { + return ResourceManager.GetString("StartValve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stand. + /// + internal static string State { + get { + return ResourceManager.GetString("State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stopp. + /// + internal static string Stop { + get { + return ResourceManager.GetString("Stop", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe anhalten. + /// + internal static string Stop_the_pump { + get { + return ResourceManager.GetString("Stop_the_pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung anhalten. + /// + internal static string Stop_the_test { + get { + return ResourceManager.GetString("Stop_the_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stop Rückflussventil. + /// + internal static string StopBFValve_chdr { + get { + return ResourceManager.GetString("StopBFValve_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anhalten. + /// + internal static string Stopping { + get { + return ResourceManager.GetString("Stopping", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchfluss Anhalten. + /// + internal static string Stopping_flow_for_the_fixed_start { + get { + return ResourceManager.GetString("Stopping_flow_for_the_fixed_start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter Fehlimpulse WZ!. + /// + internal static string SupressWMTrills { + get { + return ResourceManager.GetString("SupressWMTrills", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umschaltpunkt suchen. + /// + internal static string Switching_flow_detection { + get { + return ResourceManager.GetString("Switching_flow_detection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umschaltpunkte. + /// + internal static string Switching_Points { + get { + return ResourceManager.GetString("Switching_Points", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T Wärmebad. + /// + internal static string T_bath { + get { + return ResourceManager.GetString("T_bath", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt. + /// + internal static string T_cold { + get { + return ResourceManager.GetString("T_cold", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt Kühlen. + /// + internal static string T_cold_cooling { + get { + return ResourceManager.GetString("T_cold_cooling", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt von. + /// + internal static string T_cold_from { + get { + return ResourceManager.GetString("T_cold_from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt bis. + /// + internal static string T_cold_to { + get { + return ResourceManager.GetString("T_cold_to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T div. + /// + internal static string T_div { + get { + return ResourceManager.GetString("T_div", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T heiß Kühlen. + /// + internal static string T_hot_cooling { + get { + return ResourceManager.GetString("T_hot_cooling", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T heiß heizen. + /// + internal static string T_hot_heating { + get { + return ResourceManager.GetString("T_hot_heating", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T ein. + /// + internal static string T_in { + get { + return ResourceManager.GetString("T_in", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T einlass. + /// + internal static string T_inlet { + get { + return ResourceManager.GetString("T_inlet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T aus. + /// + internal static string T_out { + get { + return ResourceManager.GetString("T_out", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T auslauf. + /// + internal static string T_outlet { + get { + return ResourceManager.GetString("T_outlet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T m kalt. + /// + internal static string T_ref_cold { + get { + return ResourceManager.GetString("T_ref_cold", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T m warm. + /// + internal static string T_ref_warm { + get { + return ResourceManager.GetString("T_ref_warm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm. + /// + internal static string T_warm { + get { + return ResourceManager.GetString("T_warm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm Kühlen. + /// + internal static string T_warm_cooling { + get { + return ResourceManager.GetString("T_warm_cooling", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm von. + /// + internal static string T_warm_from { + get { + return ResourceManager.GetString("T_warm_from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm heizen. + /// + internal static string T_warm_heating { + get { + return ResourceManager.GetString("T_warm_heating", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm bis. + /// + internal static string T_warm_to { + get { + return ResourceManager.GetString("T_warm_to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T v kalt. + /// + internal static string T_work_cold { + get { + return ResourceManager.GetString("T_work_cold", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T v warm. + /// + internal static string T_work_warm { + get { + return ResourceManager.GetString("T_work_warm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfdurchfluss Hi [m3/h]:. + /// + internal static string Target_flow_hi_m3h_ { + get { + return ResourceManager.GetString("Target_flow_hi_m3h_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfdurchfluss Lo [m3/h]:. + /// + internal static string Target_flow_lo_m3h_ { + get { + return ResourceManager.GetString("Target_flow_lo_m3h_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfimpulse:. + /// + internal static string Target_ref_pulses_ { + get { + return ResourceManager.GetString("Target_ref_pulses_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvolumen [l]:. + /// + internal static string Target_volume_l_ { + get { + return ResourceManager.GetString("Target_volume_l_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ziel Q [m3/h]. + /// + internal static string TargetQ { + get { + return ResourceManager.GetString("TargetQ", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tarrieren. + /// + internal static string Tarring { + get { + return ResourceManager.GetString("Tarring", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Obere Temperaturgrenze. + /// + internal static string Temp_lim_hi_chdr { + get { + return ResourceManager.GetString("Temp_lim_hi_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Untere Temperaturgrenze. + /// + internal static string Temp_lim_lo_chdr { + get { + return ResourceManager.GetString("Temp_lim_lo_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temperatur. + /// + internal static string Temperature { + get { + return ResourceManager.GetString("Temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temperaturklasse. + /// + internal static string Temperature_class { + get { + return ResourceManager.GetString("Temperature_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkt. + /// + internal static string Test { + get { + return ResourceManager.GetString("Test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand. + /// + internal static string Test_bench { + get { + return ResourceManager.GetString("Test_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandskomponenten Konfiguration. + /// + internal static string Test_Bench_Components_Configuration { + get { + return ResourceManager.GetString("Test_Bench_Components_Configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandsdaten. + /// + internal static string Test_bench_data { + get { + return ResourceManager.GetString("Test_bench_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Grunddaten Spezifikation. + /// + internal static string Test_Bench_Databases_Specification { + get { + return ResourceManager.GetString("Test_Bench_Databases_Specification", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand wird von diesem Computer gesteuert. + /// + internal static string Test_bench_is_controlled_by_this_computer { + get { + return ResourceManager.GetString("Test_bench_is_controlled_by_this_computer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandsname. + /// + internal static string Test_bench_name { + get { + return ResourceManager.GetString("Test_bench_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand Nr.. + /// + internal static string Test_bench_number { + get { + return ResourceManager.GetString("Test_bench_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstände :. + /// + internal static string Test_Benches_ { + get { + return ResourceManager.GetString("Test_Benches_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkt. + /// + internal static string Test_chdr { + get { + return ResourceManager.GetString("Test_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung abgeschlossen. + /// + internal static string Test_completed { + get { + return ResourceManager.GetString("Test_completed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Teste Verbindung. + /// + internal static string Test_connection { + get { + return ResourceManager.GetString("Test_connection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung läuft. + /// + internal static string Test_in_progress { + get { + return ResourceManager.GetString("Test_in_progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Korrigierte Prüfung. + /// + internal static string Test_measured_corrected { + get { + return ResourceManager.GetString("Test_measured_corrected", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfart. + /// + internal static string Test_method { + get { + return ResourceManager.GetString("Test_method", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage. + /// + internal static string Test_name { + get { + return ResourceManager.GetString("Test_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung vorbereiten. + /// + internal static string Test_preparation { + get { + return ResourceManager.GetString("Test_preparation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfungsprofile. + /// + internal static string Test_profiles { + get { + return ResourceManager.GetString("Test_profiles", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test Profilselektion. + /// + internal static string Test_profiles_selection { + get { + return ResourceManager.GetString("Test_profiles_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholungsprüfungen; Anzahl überschritten!. + /// + internal static string Test_repetition_count_exceeded_upper_limit { + get { + return ResourceManager.GetString("Test_repetition_count_exceeded_upper_limit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse werden verloren gehen.. + /// + internal static string Test_results_will_be_lost { + get { + return ResourceManager.GetString("Test_results_will_be_lost", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung Start ({0}: Schritt {1}/{2}). + /// + internal static string Test_start_sequence_i_n { + get { + return ResourceManager.GetString("Test_start_sequence_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ürüfung Stop ({0}: Schritt {1}/{2}). + /// + internal static string Test_stop_sequence_i_n { + get { + return ResourceManager.GetString("Test_stop_sequence_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer. + /// + internal static string Test_time { + get { + return ResourceManager.GetString("Test_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvolumen überschreitet Wägevolumen. + /// + internal static string Test_volume_exceeds_the_scale_capacity { + get { + return ResourceManager.GetString("Test_volume_exceeds_the_scale_capacity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfer. + /// + internal static string Tester { + get { + return ResourceManager.GetString("Tester", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüftechniker. + /// + internal static string Testing_Specialist { + get { + return ResourceManager.GetString("Testing_Specialist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkte sind Spalten. + /// + internal static string Tests_are_columns { + get { + return ResourceManager.GetString("Tests_are_columns", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkte sind Zeilen. + /// + internal static string Tests_are_rows { + get { + return ResourceManager.GetString("Tests_are_rows", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die folgenden Komponenten sind im Simulationsmodus:. + /// + internal static string The_following_components_are_in_simulation_mode_ { + get { + return ResourceManager.GetString("The_following_components_are_in_simulation_mode_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine optischen Impulse vorhanden. + /// + internal static string There_are_no_opto_pulses { + get { + return ResourceManager.GetString("There_are_no_opto_pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stab. Zeit [s]. + /// + internal static string Time2MassMsrmt_chdr { + get { + return ResourceManager.GetString("Time2MassMsrmt_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit zur Durchflusseinst. [s]. + /// + internal static string TimeBeforeSettingFlow { + get { + return ResourceManager.GetString("TimeBeforeSettingFlow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit Durchfl. IO-Start [s]. + /// + internal static string TimeFlow2Start_chdr { + get { + return ResourceManager.GetString("TimeFlow2Start_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit abgelaufen. + /// + internal static string Timeout { + get { + return ResourceManager.GetString("Timeout", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit Pumpe-Startventil [s]. + /// + internal static string TimePump2StartV_chdr { + get { + return ResourceManager.GetString("TimePump2StartV_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to bis. + /// + internal static string to { + get { + return ResourceManager.GetString("to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tol. Abzug [%]. + /// + internal static string Tol_red_pct_chdr { + get { + return ResourceManager.GetString("Tol_red_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergangsequenz. + /// + internal static string Transition_sequence { + get { + return ResourceManager.GetString("Transition_sequence", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zwischen den Wiederholungsprüfungen. + /// + internal static string TransitionBetween_chdr { + get { + return ResourceManager.GetString("TransitionBetween_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ubergang - Ende. + /// + internal static string TransitionEnd_chdr { + get { + return ResourceManager.GetString("TransitionEnd_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergänge. + /// + internal static string Transitions { + get { + return ResourceManager.GetString("Transitions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ubergang - Start. + /// + internal static string TransitionStart_chdr { + get { + return ResourceManager.GetString("TransitionStart_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Richtung ändern. + /// + internal static string Turning_direction { + get { + return ResourceManager.GetString("Turning_direction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type. + /// + internal static string Type { + get { + return ResourceManager.GetString("Type", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messunsicherheit. + /// + internal static string Uncertainty { + get { + return ResourceManager.GetString("Uncertainty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messunsicherheit der Korrektur. + /// + internal static string Uncertainty_of_correction { + get { + return ResourceManager.GetString("Uncertainty_of_correction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unsicherheit [%]. + /// + internal static string Uncertainty_pct_chdr { + get { + return ResourceManager.GetString("Uncertainty_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unbestätigte Ereignisse. + /// + internal static string Unconfirmed_events { + get { + return ResourceManager.GetString("Unconfirmed_events", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Es trat ein unbehandelter Fehler auf in . + /// + internal static string Unhandled_error_occured_in_ { + get { + return ResourceManager.GetString("Unhandled_error_occured_in_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string Units { + get { + return ResourceManager.GetString("Units", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ändern. + /// + internal static string UnlockBtnText { + get { + return ResourceManager.GetString("UnlockBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abwahl Aktueller Behälter. + /// + internal static string Unselect_current_tank { + get { + return ResourceManager.GetString("Unselect_current_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aufwärts. + /// + internal static string UpBtnText { + get { + return ResourceManager.GetString("UpBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Update. + /// + internal static string Update { + get { + return ResourceManager.GetString("Update", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verwendung {0}. + /// + internal static string Use_0 { + get { + return ResourceManager.GetString("Use_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer. + /// + internal static string User { + get { + return ResourceManager.GetString("User", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzercode. + /// + internal static string User_code { + get { + return ResourceManager.GetString("User_code", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anmelden. + /// + internal static string User_Login { + get { + return ResourceManager.GetString("User_Login", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer. + /// + internal static string User_Management { + get { + return ResourceManager.GetString("User_Management", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzername. + /// + internal static string User_name { + get { + return ResourceManager.GetString("User_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzername. + /// + internal static string Username { + get { + return ResourceManager.GetString("Username", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzername bereits vorhanden. Bitte einen anderen Benutzername wählen.. + /// + internal static string Username_taken { + get { + return ResourceManager.GetString("Username_taken", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer. + /// + internal static string Users { + get { + return ResourceManager.GetString("Users", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer und Gruppen. + /// + internal static string Users_and_groups { + get { + return ResourceManager.GetString("Users_and_groups", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gültig bis. + /// + internal static string Valid_until { + get { + return ResourceManager.GetString("Valid_until", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wert. + /// + internal static string Value { + get { + return ResourceManager.GetString("Value", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Version. + /// + internal static string Version { + get { + return ResourceManager.GetString("Version", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Version {0}. + /// + internal static string VersionStr { + get { + return ResourceManager.GetString("VersionStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vertikal. + /// + internal static string Vertically { + get { + return ResourceManager.GetString("Vertically", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Virtuelle Prüfstandssequenz. + /// + internal static string Virtual_bench_sequence { + get { + return ResourceManager.GetString("Virtual_bench_sequence", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spannung. + /// + internal static string Voltage { + get { + return ResourceManager.GetString("Voltage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen. + /// + internal static string Volume { + get { + return ResourceManager.GetString("Volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auswahl Volumen und Fehlergrenzen. + /// + internal static string Volume_and_error_selection { + get { + return ResourceManager.GetString("Volume_and_error_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen im Behälter. + /// + internal static string Volume_to_tank { + get { + return ResourceManager.GetString("Volume_to_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen im Behälter überschreitet die Waagenkapazität!. + /// + internal static string Volume_to_tank_exceeds_the_scale_capacity { + get { + return ResourceManager.GetString("Volume_to_tank_exceeds_the_scale_capacity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen im Behälter höher als Prüfvolumen!. + /// + internal static string Volume_to_tank_is_larger_then_the_test_volume { + get { + return ResourceManager.GetString("Volume_to_tank_is_larger_then_the_test_volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte warten. + /// + internal static string Wait_please { + get { + return ResourceManager.GetString("Wait_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warten bis. + /// + internal static string Wait_until { + get { + return ResourceManager.GetString("Wait_until", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warte bis {0} Messbehälter leer ist!. + /// + internal static string Wait_until_0_tank_is_empty { + get { + return ResourceManager.GetString("Wait_until_0_tank_is_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warnung. + /// + internal static string Warning { + get { + return ResourceManager.GetString("Warning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasser. + /// + internal static string Water { + get { + return ResourceManager.GetString("Water", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserstand in mm. + /// + internal static string Water_level_in_mm { + get { + return ResourceManager.GetString("Water_level_in_mm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler. + /// + internal static string Water_Meter { + get { + return ResourceManager.GetString("Water_Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler Daten. + /// + internal static string Water_meter_data { + get { + return ResourceManager.GetString("Water_meter_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ-Serienummer-Stand. + /// + internal static string Water_Meter_SNs_States { + get { + return ResourceManager.GetString("Water_Meter_SNs_States", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ-Stand. + /// + internal static string Water_Meter_States { + get { + return ResourceManager.GetString("Water_Meter_States", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler Typen. + /// + internal static string Water_meter_types { + get { + return ResourceManager.GetString("Water_meter_types", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerdaten. + /// + internal static string Water_meters { + get { + return ResourceManager.GetString("Water_meters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ_Stand. + /// + internal static string WMState { + get { + return ResourceManager.GetString("WMState", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to iPERL falsche Durchflussrichtung!. + /// + internal static string Wrong_iPerl_counting_direction { + get { + return ResourceManager.GetString("Wrong_iPerl_counting_direction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Eichjahr. + /// + internal static string Year_of_production { + get { + return ResourceManager.GetString("Year_of_production", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ja. + /// + internal static string yes { + get { + return ResourceManager.GetString("yes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ja. + /// + internal static string YesBtn { + get { + return ResourceManager.GetString("YesBtn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nullstellen. + /// + internal static string Zeroing_chdr { + get { + return ResourceManager.GetString("Zeroing_chdr", resourceCulture); + } + } + } +} diff --git a/TBF/Resources/Strings.de.resx b/TBF/Resources/Strings.de.resx index 1af7a2954..675a32298 100644 --- a/TBF/Resources/Strings.de.resx +++ b/TBF/Resources/Strings.de.resx @@ -1023,8 +1023,8 @@ Prallel mit vorherigem Schritt - - iPerl Kommunikation läuft + + Meter Kommunikation läuft Sprache diff --git a/TBF/Resources/Strings.it.resx b/TBF/Resources/Strings.it.resx index 84f8d64d5..b700dfed6 100644 --- a/TBF/Resources/Strings.it.resx +++ b/TBF/Resources/Strings.it.resx @@ -1017,8 +1017,8 @@ simultaneo con il passo precedente - - iPerl comunicazioni in corso + + Meter comunicazioni in corso lingua diff --git a/TBF/Resources/Strings.pl.resx b/TBF/Resources/Strings.pl.resx index a68877112..7036778c3 100644 --- a/TBF/Resources/Strings.pl.resx +++ b/TBF/Resources/Strings.pl.resx @@ -1011,8 +1011,8 @@ Jednocześnie z poprzednim krokiem - - Komunikacja z iPERL w toku + + Komunikacja z vodomera w toku Język diff --git a/TBF/Resources/Strings.resx b/TBF/Resources/Strings.resx index 98c8cd654..064b2ec0a 100644 --- a/TBF/Resources/Strings.resx +++ b/TBF/Resources/Strings.resx @@ -543,6 +543,12 @@ Pulses per liter + + Delay between pictures + + + Pictures Count + Component @@ -1042,8 +1048,8 @@ Simultaneous with previous step - - iPerl Communication in progress + + Meter Communication in progress Language @@ -1732,6 +1738,9 @@ RFID communication failed + + Radio Communication failed + Disabled by user diff --git a/TBF/Resources/Strings.ru.resx b/TBF/Resources/Strings.ru.resx index 1bb6a3835..ec13473b8 100644 --- a/TBF/Resources/Strings.ru.resx +++ b/TBF/Resources/Strings.ru.resx @@ -1011,8 +1011,8 @@ Одновременно с предыдущим шагом - - Осуществляется связь с iPerl + + Осуществляется связь с водомером Язык diff --git a/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs b/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs index 8d222e048..d94f7471f 100644 --- a/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs +++ b/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using log4net; @@ -70,6 +71,9 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder int lastWmNr1; Bitmap lastImage; /// non-zoomed image Bitmap zoomedImage; + private readonly List currentImageGroup = new List();//multiple pictures + private int currentImageGroupIndex; + private bool mouseOverPictureBox; Thread imageProcessingThread; /// Thread to process images public delegate void OcrTextObtainedDelegate(int ix, bool isEnd, string text); @@ -96,6 +100,12 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder public TestStartEndForm() { InitializeComponent(); + + KeyPreview = true; + + pictureBox1.MouseWheel += pictureBox1_MouseWheel; + pictureBox1.MouseEnter += pictureBox1_MouseEnter; + pictureBox1.MouseLeave += pictureBox1_MouseLeave; this.Icon = Properties.Resources.TBF_icon; @@ -483,15 +493,46 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder startTextBoxes[i].TextChanged += new System.EventHandler(this.startTextBoxX_TextChanged); startTextBoxes[i].KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.startTextBoxX_KeyPress); startTextBoxes[i].MouseDown += new System.Windows.Forms.MouseEventHandler(this.startTextBoxX_MouseDown); + startTextBoxes[i].Enter += startTextBoxX_Enter; } + private void startTextBoxX_Enter(object sender, EventArgs e) + { + var textBox = sender as TextBox; + if (textBox == null) { return; } + + int physPos = PhysPos(textBox, startTextBoxes); + + if (physPos >= 0) + { + LoadImage(sender, Tst.Start, physPos); + } + } + + + private void EndTextBox_EnableHanders(int i) { endTextBoxes[i].AcceptsTabChanged += new System.EventHandler(this.endTextBoxX_AcceptsTabChanged); endTextBoxes[i].TextChanged += new System.EventHandler(this.endTextBoxX_TextChanged); endTextBoxes[i].KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.endTextBoxX_KeyPress); endTextBoxes[i].MouseDown += new System.Windows.Forms.MouseEventHandler(this.endTextBoxX_AcceptsTabChanged); + endTextBoxes[i].Enter += endTextBoxX_Enter; } + + private void endTextBoxX_Enter(object sender, EventArgs e) + { + var textBox = sender as TextBox; + if (textBox == null) { return; } + + int physPos = PhysPos(textBox, endTextBoxes); + + if (physPos >= 0) + { + LoadImage(sender, Tst.End, physPos); + } + } + private void TestStartEndForm_FormClosed(object sender, FormClosedEventArgs e) { @@ -763,7 +804,7 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder TextBox clickedTextBox = sender as TextBox; if (clickedTextBox != null) { - var physPos = PhysPos(clickedTextBox, startTextBoxes); + var physPos = PhysPos(clickedTextBox, endTextBoxes);//startTextBoxes); if (physPos < 0) { @@ -1069,7 +1110,7 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder TextBox clickedTextBox = sender as TextBox; if (clickedTextBox != null) { - var physPos = PhysPos(clickedTextBox, startTextBoxes); + var physPos = PhysPos(clickedTextBox, endTextBoxes);//startTextBoxes); if (physPos < 0) { @@ -1134,65 +1175,479 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder /// /// Tst.Start or Tst.End /// 0..23 - void LoadImage(object sender, Tst startOrEnd, int physPos) - { - int wmNr1b = phys2wm[physPos]; /// 0 means no WM - if (wmNr1b <= 0) return; + void LoadImage( object sender, Tst startOrEnd, int physPos) + { + if (physPos < 0 || physPos >= phys2wm.Length) + { + return; + } - wmNr0b = wmNr1b - 1; + int wmNr1b = phys2wm[physPos]; - string imageFileName; - if (startOrEnd == Tst.Start && startImages[wmNr0b] != null) - imageFileName = startImages[wmNr0b]; - else if (startOrEnd == Tst.End && endImages[wmNr0b] != null) - imageFileName = endImages[wmNr0b]; - else - imageFileName = string.Empty; + // Hodnota 0 znamená, že na tejto fyzickej pozícii nie je vodomer. + if (wmNr1b <= 0) + { + return; + } - if (imageFileName == lastImageName) - { - return; - } + wmNr0b = wmNr1b - 1; - lastImageName = imageFileName; - lastWmNr1 = wmNr1b; + string imageFileName = GetBaseImageFileName( + startOrEnd, + wmNr0b); - if (string.IsNullOrEmpty(imageFileName) || !File.Exists(imageFileName)) - { - lastImage = null; - } - else - { - using (Bitmap tempBmp = Image.FromFile(imageFileName) as Bitmap) + lastWmNr1 = wmNr1b; + + if (string.IsNullOrWhiteSpace(imageFileName)) + { + ClearImageGroup(); + LoadImageFile(null); + return; + } + + /* + * Ak používateľ zvolil iný vodomer alebo Start/End obrázok, + * vytvoríme novú skupinu: + * + * TestAdvance-1-start.bmp + * TestAdvance-1-start_img01_....bmp + * TestAdvance-1-start_img02_....bmp + */ + if (!string.Equals( + imageFileName, + lastImageName, + StringComparison.OrdinalIgnoreCase)) + { + lastImageName = imageFileName; + + LoadImageGroup(imageFileName); + + // Pôvodný kompatibilný obrázok bude zobrazený ako prvý. + currentImageGroupIndex = 0; + } + else + { + /* + * Súbory mohli vzniknúť až po prvom otvorení dialógu, + * preto skupinu pri opätovnom výbere obnovíme. + */ + RefreshCurrentImageGroup(); + } + + if (currentImageGroup.Count == 0) + { + LoadImageFile(null); + return; + } + + currentImageGroupIndex = Math.Max( + 0, + Math.Min( + currentImageGroupIndex, + currentImageGroup.Count - 1)); + + LoadImageFile( + currentImageGroup[currentImageGroupIndex]); + } + + /// + /// base name of image file + /// + /// + /// + /// + private string GetBaseImageFileName( + Tst startOrEnd, + int waterMeterIndex) + { + if (waterMeterIndex < 0 || + waterMeterIndex >= WaterMetersCount) + { + return null; + } + + if (startOrEnd == Tst.Start) + { + if (startImages == null || + waterMeterIndex >= startImages.Length) { - Rectangle rect; - if (tempBmp.Height < tempBmp.Width) + return null; + } + + return startImages[waterMeterIndex]; + } + + if (startOrEnd == Tst.End) + { + if (endImages == null || + waterMeterIndex >= endImages.Length) + { + return null; + } + + return endImages[waterMeterIndex]; + } + + return null; + } + + /// + /// load group of images + /// + /// + private void LoadImageGroup( + string baseImageFileName) + { + currentImageGroup.Clear(); + currentImageGroupIndex = 0; + + if (string.IsNullOrWhiteSpace(baseImageFileName)) + { + return; + } + + string fullBaseFileName; + + try + { + fullBaseFileName = + Path.GetFullPath(baseImageFileName); + } + catch (Exception exc) + { + log.Warn( + $"Cannot create image group from invalid path: " + + $"file='{baseImageFileName}', " + + $"error={exc.Message}"); + + return; + } + + string directory = + Path.GetDirectoryName(fullBaseFileName); + + string baseName = + Path.GetFileNameWithoutExtension(fullBaseFileName); + + string extension = + Path.GetExtension(fullBaseFileName); + + if (string.IsNullOrWhiteSpace(directory) || + string.IsNullOrWhiteSpace(baseName)) + { + return; + } + + /* + * Pôvodný obrázok pridáme ako prvý. + */ + if (File.Exists(fullBaseFileName)) + { + currentImageGroup.Add(fullBaseFileName); + } + + if (!Directory.Exists(directory)) + { + return; + } + + string searchPattern = + $"{baseName}_img*{extension}"; + + try + { + List timedImages = + Directory + .GetFiles( + directory, + searchPattern, + SearchOption.TopDirectoryOnly) + .OrderBy(GetTimedImageIndex) + .ThenBy( + fileName => fileName, + StringComparer.OrdinalIgnoreCase) + .ToList(); + + foreach (string timedImage in timedImages) + { + if (!currentImageGroup.Contains( + timedImage, + StringComparer.OrdinalIgnoreCase)) { - int hght = tempBmp.Height; - int leftMargin = (tempBmp.Width - hght) / 2; - rect = new Rectangle(leftMargin, 0, hght, hght); - } - else - { - int hght = tempBmp.Height; - int wdth = tempBmp.Width; - int margin = (hght - wdth) / 2; - rect = new Rectangle(0, margin, wdth, wdth); - } - //int hght = tempBmp.Height; - //int leftMargin = (tempBmp.Width - hght) / 2; - //lastImage = new Bitmap(tempBmp.Clone(new Rectangle(leftMargin, 0, hght, hght), tempBmp.PixelFormat)); - lastImage = new Bitmap(tempBmp.Clone(rect, tempBmp.PixelFormat)); - if (isZoomed[wmNr0b]) - { - zoomedImage = MakeZoomedImage(lastImage, zoomCenterLoc[wmNr0b]); + currentImageGroup.Add(timedImage); } } - } - ShowImage(); - } + log.Debug( + $"Image group loaded: " + + $"baseFile='{fullBaseFileName}', " + + $"searchPattern='{searchPattern}', " + + $"imagesCount={currentImageGroup.Count}"); + } + catch (Exception exc) + { + log.Warn( + $"Cannot load image group: " + + $"baseFile='{fullBaseFileName}', " + + $"pattern='{searchPattern}', " + + $"error={exc.Message}"); + } + } + /// + /// grouping by time + /// + /// + /// + private static int GetTimedImageIndex( + string fileName) + { + if (string.IsNullOrWhiteSpace(fileName)) + { + return int.MaxValue; + } + string nameWithoutExtension = + Path.GetFileNameWithoutExtension(fileName); + + Match match = Regex.Match( + nameWithoutExtension, + @"_img(?\d+)_", + RegexOptions.IgnoreCase); + + if (!match.Success) + { + return int.MaxValue; + } + + int imageIndex; + + return int.TryParse( + match.Groups["index"].Value, + out imageIndex) + ? imageIndex + : int.MaxValue; + } + + /// + /// refreshing current image group + /// + private void RefreshCurrentImageGroup() + { + if (string.IsNullOrWhiteSpace(lastImageName)) + { + return; + } + + string currentlySelectedFile = + currentImageGroupIndex >= 0 && + currentImageGroupIndex < currentImageGroup.Count + ? currentImageGroup[currentImageGroupIndex] + : null; + + LoadImageGroup(lastImageName); + + if (string.IsNullOrWhiteSpace(currentlySelectedFile)) + { + return; + } + + int restoredIndex = + currentImageGroup.FindIndex( + fileName => + string.Equals( + fileName, + currentlySelectedFile, + StringComparison.OrdinalIgnoreCase)); + + if (restoredIndex >= 0) + { + currentImageGroupIndex = restoredIndex; + } + } + /// --- picture load --- + private void LoadImageFile( + string imageFileName) + { + DisposeLoadedImages(); + + if (string.IsNullOrWhiteSpace(imageFileName) || + !File.Exists(imageFileName)) + { + log.Debug( + $"Image cannot be displayed because the file does not exist: " + + $"file='{imageFileName}'"); + + ShowImage(); + return; + } + + try + { + using (var tempBmp = + new Bitmap(imageFileName)) + { + Rectangle rect = + CreateSquareCropRectangle(tempBmp); + + using (Bitmap croppedImage = + tempBmp.Clone( + rect, + tempBmp.PixelFormat)) + { + lastImage = + new Bitmap(croppedImage); + } + } + + if (isZoomed[wmNr0b]) + { + zoomedImage = + MakeZoomedImage( + lastImage, + zoomCenterLoc[wmNr0b]); + } + + log.Debug( + $"Image displayed from group: " + + $"waterMeter={lastWmNr1}, " + + $"groupIndex={currentImageGroupIndex + 1}/" + + $"{currentImageGroup.Count}, " + + $"file='{imageFileName}'"); + } + catch (Exception exc) + { + log.Error( + $"Cannot load image: " + + $"file='{imageFileName}', " + + $"error={exc.Message}", + exc); + + DisposeLoadedImages(); + } + + ShowImage(); + } + + /// --- block picture Crop help method --- + private static Rectangle CreateSquareCropRectangle( Bitmap bitmap) + { + int size = Math.Min( bitmap.Width, bitmap.Height); + int x = (bitmap.Width - size) / 2; + int y = (bitmap.Height - size) / 2; + + return new Rectangle( x, y, size, size); + } + + // --- block release old pictures --- + private void DisposeLoadedImages() + { + if (lastImage != null) + { + lastImage.Dispose(); + lastImage = null; + } + + if (zoomedImage != null) + { + zoomedImage.Dispose(); + zoomedImage = null; + } + } + + private void ClearImageGroup() + { + currentImageGroup.Clear(); + currentImageGroupIndex = 0; + lastImageName = null; + } + + // --- block picture exchange --- + private void ShowPreviousImageFromGroup() + { + ShowImageFromGroup(-1); + } + + private void ShowNextImageFromGroup() + { + ShowImageFromGroup(1); + } + + private void ShowImageFromGroup( + int direction) + { + if (direction == 0 || + currentImageGroup.Count <= 1) + { + return; + } + + int newIndex = + currentImageGroupIndex + direction; + + /* + * Cyklické prepínanie: + * + * posledný -> prvý + * prvý -> posledný + */ + if (newIndex < 0) + { + newIndex = + currentImageGroup.Count - 1; + } + else if (newIndex >= currentImageGroup.Count) + { + newIndex = 0; + } + + currentImageGroupIndex = newIndex; + + LoadImageFile( + currentImageGroup[currentImageGroupIndex]); + } + + + // --- mouse events --- + + private void pictureBox1_MouseEnter( + object sender, + EventArgs e) + { + mouseOverPictureBox = true; + + /* + * PictureBox štandardne nemusí mať focus. + * Focus pomôže zachytiť klávesy aj koliesko. + */ + pictureBox1.Focus(); + } + + private void pictureBox1_MouseLeave( + object sender, + EventArgs e) + { + mouseOverPictureBox = false; + } + + private void pictureBox1_MouseWheel( + object sender, + MouseEventArgs e) + { + if (!mouseOverPictureBox || + currentImageGroup.Count <= 1) + { + return; + } + + if (e.Delta > 0) + { + ShowPreviousImageFromGroup(); + } + else if (e.Delta < 0) + { + ShowNextImageFromGroup(); + } + } /// /// Left click = Zoom, Right click = Unzoom @@ -1276,7 +1731,9 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder { if (lastImage == null) { + Image previousImage = pictureBox1.Image; pictureBox1.Image = new Bitmap(TBF.Properties.Resources.Empty); + previousImage?.Dispose(); return; } @@ -1312,10 +1769,108 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder Brush brush = (brightness > 160) ? darkBrush : lightBrush; grph.DrawString(lastWmNr1.ToString(), font, brush, margin, margin); + + DrawImageInfo(grph, tempBmp); } + Image oldPictureBoxImage = pictureBox1.Image; pictureBox1.Image = tempBmp; + oldPictureBoxImage?.Dispose(); } + + private void DrawImageInfo( Graphics graphics, Bitmap bitmap) + { + if (graphics == null) + { + throw new ArgumentNullException(nameof(graphics)); + } + + if (bitmap == null) + { + throw new ArgumentNullException(nameof(bitmap)); + } + + string currentImageFileName = GetCurrentImageFileName(); + + if (string.IsNullOrWhiteSpace(currentImageFileName)) + { + return; + } + + string fileName = Path.GetFileName(currentImageFileName); + + string displayText = fileName; + + Match match = Regex.Match( fileName, @"_img(?\d+)_(?\d{8})_(? - public interface ITestMethodSmart + public interface ITestMethodSmart : ITestMethod { } diff --git a/TBF/Rig/Network/Camera/CJMS11/Camera.cs b/TBF/Rig/Network/Camera/CJMS11/Camera.cs index 88971451d..552432ddd 100644 --- a/TBF/Rig/Network/Camera/CJMS11/Camera.cs +++ b/TBF/Rig/Network/Camera/CJMS11/Camera.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; @@ -19,6 +20,7 @@ using System.Windows.Forms; using log4net; using Renci.SshNet; using Common; +using Config.Entities; using FluentNHibernate.Conventions; using Newtonsoft.Json; using TBF.Rig.Network.Telnet; @@ -54,7 +56,8 @@ namespace TBF.Rig.Network.Camera.CJMS11 const string ClpPassword = "C1ern4V0d4"; - + private readonly SemaphoreSlim cameraReadLock = new SemaphoreSlim(1, 1); + //private readonly SemaphoreSlim cameraWriteLock = new SemaphoreSlim(1, 1); /// /// Properties @@ -67,10 +70,20 @@ namespace TBF.Rig.Network.Camera.CJMS11 { get { if (roiConfiguration!=null) {return roiConfiguration;} - else { roiConfiguration = GetFirstRoiChild(); return roiConfiguration; } + else { roiConfiguration = GetFirstRoiCfgChild(); return roiConfiguration; } } set { if (roiConfiguration == null) roiConfiguration = value;} } + + private RoiForFixedStartCJMS11.Roi _roi; + public RoiForFixedStartCJMS11.Roi CamRoi + { + get { + if (_roi!=null) {return _roi;} + else { _roi = GetFirstRoiChild(); return _roi; } + } + set { if (_roi == null) _roi = value;} + } public IPAddress IPAddress { get { return ipAddress; } } IPAddress ipAddress; @@ -132,26 +145,34 @@ namespace TBF.Rig.Network.Camera.CJMS11 int cameraTcpLocalPort; TcpClient cameraTcpClient; private NetworkStream cameraStream = null; - private StreamWriter cameraWriter = null; + //private StreamWriter cameraWriter = null; private StreamReader cameraReader = null; private Image lastImage; private bool lockCameraInitialisation = false; Thread liveStreamListenerThread; - static bool stopLiveStreamListenerFlag; + private bool stopLiveStreamListenerFlag; public bool IsGrabImageListenerThreadAlive { get { return grabImageListenerThread != null && grabImageListenerThread.IsAlive; } } Thread grabImageListenerThread; - static bool stopGrabImageListenerFlag; + private bool stopGrabImageListenerFlag; public void SetStopGrabImageListenerFlag() { stopGrabImageListenerFlag = true; } Thread stopUIListenerThread; - static bool stopUIListenerFlag; + private bool stopUIListenerFlag; Thread saveImageListenerThread; - static bool stopSaveImageListenerFlag; + private bool stopSaveImageListenerFlag; public bool IsSaveImageListenerThreadAlive { get { return saveImageListenerThread != null && saveImageListenerThread.IsAlive; } } + /// + /// Send images part + /// + private Task> sendImagesTask; + private CancellationTokenSource sendImagesCts; + + public bool IsSendImagesInProgress => sendImagesTask != null && !sendImagesTask.IsCompleted; + /// /// ROI related parameters /// @@ -201,15 +222,21 @@ namespace TBF.Rig.Network.Camera.CJMS11 /// Detect a camera CameraDetectionResult cameraDetectionResult = null; - var detectJmsCamera = DetectJMSCamera(); - var timeoutTask = Task.Delay(TimeSpan.FromSeconds(2)); - - //No Test - var completedTask = Task.WhenAny(detectJmsCamera, timeoutTask).Result; - if (completedTask == timeoutTask) + try { - cameraDetectionResult = new CameraDetectionResult(); - cameraDetectionResult.IsDetected = false; + cameraDetectionResult = Task + .Run(() => DetectJMSCamera()) + .GetAwaiter() + .GetResult(); + } + catch (Exception exc) + { + log.Error($"Camera detection failed: {exc.Message}"); + + cameraDetectionResult = new CameraDetectionResult + { + IsDetected = false + }; } //test @@ -217,11 +244,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 // var detectJmsCamera2 = DetectJMSCamera("192.168.0.168",32456); // Task.WaitAll(detectJmsCamera, detectJmsCamera1, detectJmsCamera2); - if (cameraDetectionResult == null) - { - cameraDetectionResult = detectJmsCamera.Result; - } - + if (CameraCfg.DebugLevel == DebugMode.AutoDetect) { CameraCfg.DebugLevel = cameraDetectionResult.IsDetected ? DebugMode.DetectedOn : DebugMode.DetectedOff; @@ -233,14 +256,30 @@ namespace TBF.Rig.Network.Camera.CJMS11 if (cameraDetectionResult.IsDetected) { - UiBridge.Bridge.OnCameraInfo(cameraIdx, string.Format("{0} ver.{1} {2} s/n {3}", Name, sdCardVer, ipAddress, CameraCfg.HardwareAddress)); + ipAddress = cameraDetectionResult.IpAddress; - // start live stream, grab image, ... listener thread - UiBridge.Bridge.CameraUICmdHandler += HandleCameraUiCmd; - - //PromptCameraReceivedHandler += OnPromptReceivedCamera; - - ImageCameraHandler += OnPromptImageReceived; + UiBridge.Bridge.OnCameraInfo( + cameraIdx, + string.Format( + "{0} ver.{1} {2} s/n {3}", + Name, + sdCardVer, + ipAddress, + CameraCfg.HardwareAddress)); + + // start live stream, grab image, ... listener thread + UiBridge.Bridge.CameraUICmdHandler -= HandleCameraUiCmd; + UiBridge.Bridge.CameraUICmdHandler += HandleCameraUiCmd; + + //PromptCameraReceivedHandler -= OnPromptReceivedCamera; + //PromptCameraReceivedHandler += OnPromptReceivedCamera; + + ImageCameraHandler -= OnPromptImageReceived; + ImageCameraHandler += OnPromptImageReceived; + + ImagesCameraHandler -= OnPromptImagesReceived; + ImagesCameraHandler += OnPromptImagesReceived; + } else { @@ -250,12 +289,30 @@ namespace TBF.Rig.Network.Camera.CJMS11 } private void OnPromptImageReceived(object sender, PromptReceivedImageEventArgs e) + { + if (e == null || e.image == null || cameraIdx != e.idxCamera) + { + return; + } + + /* + * Bridge dostane svoju vlastnú kópiu. + */ + Image bridgeImage = CloneImageToBitmap(e.image); + + UiBridge.Bridge.OnImage( e.idxCamera, bridgeImage); + + log.Debug( $"Image received from camera: {e.idxCamera}, pushed to bridge UI!"); + } + + private void OnPromptImagesReceived(object sender, PromptReceivedImagesEventArgs e) { if (e != null && e.image != null) { if (this.cameraIdx == e.idxCamera) { UiBridge.Bridge.OnImage(e.idxCamera, e.image); + log.Debug($"Image received from camera: {e.idxCamera}, pushed to bridge UI!"); } } } @@ -396,134 +453,477 @@ namespace TBF.Rig.Network.Camera.CJMS11 { return await DetectJMSCamera(CameraCfg.IPAddressCJMS, iPort); } + + async Task DetectJMSCamera( string ipAddressParam, int portParam) + { + var result = new CameraDetectionResult + { + IsDetected = false, + IpAddress = null, + Hardware = null, + Revision = null, + Serial = null, + SdCardVersion = null + }; + + if (CameraCfg.DebugLevel == DebugMode.Simulate) + { + result.IsDetected = true; + return result; + } + + if (string.IsNullOrWhiteSpace(ipAddressParam)) + { + log.Error( $"Camera {CameraCfg.Name}: IP address is missing."); + return result; + } + + var detectionStopwatch = Stopwatch.StartNew(); + + try + { + using (var client = new TcpClient()) + { + Task connectTask = + client.ConnectAsync( + ipAddressParam, + portParam); + + Task timeoutTask = + Task.Delay(TimeSpan.FromSeconds(1)); + + Task completedTask = + await Task.WhenAny( + connectTask, + timeoutTask) + .ConfigureAwait(false); + + if (completedTask == timeoutTask) + { + client.Close(); + throw new TimeoutException( $"Camera connection timeout after 1 second: {ipAddressParam}:{portParam}"); + } + + // Vyhodí SocketException, ak ConnectAsync zlyhal. + await connectTask.ConfigureAwait(false); + + if (!client.Connected) + { + throw new IOException( $"Camera connection was not established: {ipAddressParam}:{portParam}"); + } + + log.Debug( $"Camera connected: name={CameraCfg.Name}, IP={ipAddressParam}, port={portParam}"); + + using (NetworkStream stream = client.GetStream()) + { + // Jeden reader pre celé spojenie. + var reader = new CameraLineReader( stream, 64 * 1024); + + this.ipAddress = IPAddress.Parse(ipAddressParam); + + /* + * 1. Nastavenie typu kamery + */ + string configMessage = getConfigMessage(); + + JmsPacket typeCameraAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.type_camera_, + configMessage, + 5000, + CancellationToken.None) + .ConfigureAwait(false); + + if (typeCameraAnswer == null || typeCameraAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Warn( $"type_camera failed: " + $"camera={CameraCfg.Name}, " + $"IP={ipAddressParam}, " + $"answer={FormatPacketForLog(typeCameraAnswer)}"); + } + + /* + * 2. Prepare camera + */ + JmsPacket prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED"); + + if (alreadyOpened) + { + log.Debug( $"Camera already opened: " + $"name={CameraCfg.Name}, " + $"IP={ipAddressParam}"); + } + else if (prepareAnswer == null || prepareAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Warn( $"Prepare camera failed: " + $"camera={CameraCfg.Name}, " + $"IP={ipAddressParam}, " + $"answer={FormatPacketForLog(prepareAnswer)}"); + + /* + * Pokus o reset: + * close -> prepare + */ + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.close_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + + prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + bool restartSucceeded = + prepareAnswer != null && + ( + prepareAnswer.JmsMessage.Status == + MessageStatus.ACK || + ( + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED") + ) + ); + + if (!restartSucceeded) + { + log.Error( + $"Camera prepare restart failed: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"answer={FormatPacketForLog(prepareAnswer)}"); + } + } + + /* + * 3.1 Warm-up grab after type_camera + prepare_camera. + * + * Hardvér po inicializácii potrebuje vytvoriť aspoň jeden obrázok. + * Obrázok pri detekcii nepotrebujeme ukladať ani posielať do UI. + */ + JmsPacket grabAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.grab_image_, + null, + 10000, + CancellationToken.None) + .ConfigureAwait(false); + + if (grabAnswer == null || grabAnswer.JmsMessage == null || grabAnswer.JmsMessage.Status != MessageStatus.ACK) + { + throw new IOException( $"Camera initialization grab failed: camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, answer={FormatPacketForLog(grabAnswer)}"); + } + + try + { + ParsedImage initializationImage = + grabAnswer.JmsMessage.getImage(); + + if (initializationImage == null) + { + throw new IOException( "Initialization grab returned no parsed image."); + } + + if (initializationImage.Encoding != ImageType.BASE_64) + { + throw new IOException( $"Initialization grab returned unsupported encoding: " + $"{initializationImage.Encoding}"); + } + + // Vyvolá Base64 dekódovanie a tým overí, že obrázok je platný. + using (Image warmUpImage = initializationImage.Image) + { + if (warmUpImage == null) + { + throw new IOException( + "Initialization grab returned a null image."); + } + + log.Debug( + $"Initialization image captured: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"size={warmUpImage.Width}x{warmUpImage.Height}"); + } + } + catch (Exception exc) + { + throw new IOException( $"Cannot process initialization image: camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, error={exc.Message}", exc); + } + + + + + /* + * 3.2 Status + */ + JmsPacket statusAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.status_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + if (statusAnswer == null || + statusAnswer.JmsMessage.Status != + MessageStatus.ACK) + { + log.Warn( + $"Camera status failed: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"answer={FormatPacketForLog(statusAnswer)}"); + } + + /* + * 4. Get configuration + */ + JmsPacket configAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.get_cfg_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + if (configAnswer == null || + configAnswer.JmsMessage.Status != + MessageStatus.ACK) + { + throw new IOException( + $"Camera get_cfg failed: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"answer={FormatPacketForLog(configAnswer)}"); + } + + result.IpAddress = + IPAddress.Parse(ipAddressParam); + + result.Hardware = string.Empty; + result.Revision = string.Empty; + result.Serial = string.Empty; + result.SdCardVersion = string.Empty; + result.Response = configAnswer.ToString(); + result.IsDetected = true; + + string origin = + string.IsNullOrEmpty(configAnswer.MessageOrigin) + ? "unknown origin" + : configAnswer.MessageOrigin; + + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Debug( + $"Camera detected: " + + $"name={CameraCfg.Name}, " + + $"duration={result.Duration_ms:F0} ms, " + + $"HWAddress={CameraCfg.HardwareAddress}, " + + $"IP={ipAddressParam}, " + + $"origin={origin}"); + + /* + * Voliteľný cleanup. + * + * Ak má kamera po detekcii zostať otvorená, + * túto časť odstráň. + */ + try + { + JmsPacket closeAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.close_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + + bool closeAccepted = + closeAnswer != null && + ( + closeAnswer.JmsMessage.Status == MessageStatus.ACK || + ( + closeAnswer.JmsMessage.Status == MessageStatus.NACK && + !string.IsNullOrEmpty(closeAnswer.JmsMessage.Payload) && + closeAnswer.JmsMessage.Payload.Contains( + "Close command already in progress") + ) + ); + + if (!closeAccepted) + { + log.Warn( + $"Close after detection was not confirmed: " + + $"camera={CameraCfg.Name}, " + + $"answer={FormatPacketForLog(closeAnswer)}"); + } + } + catch (Exception closeException) + { + log.Warn( + $"Camera close after detection failed: " + + $"{closeException.Message}"); + } + /* + * Disconnect after detection. + */ + try + { + await SendCommandAsync( + stream, + CommandM.disconnect_, + CancellationToken.None, + null) + .ConfigureAwait(false); + + log.Debug( + $"Disconnect command sent after detection: " + + $"camera={CameraCfg.Name}, IP={ipAddressParam}"); + } + catch (Exception disconnectException) + { + log.Warn( + $"Camera disconnect after detection failed: " + + $"{disconnectException.Message}"); + } + + return result; + } + } + } + catch (TimeoutException exc) + { + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Error( + $"Camera detection timeout: " + + $"name={CameraCfg.Name}, " + + $"HWAddress={CameraCfg.HardwareAddress}, " + + $"IP={ipAddressParam}, " + + $"port={portParam}, " + + $"duration={result.Duration_ms:F0} ms, " + + $"error={exc.Message}"); + } + catch (SocketException exc) + { + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Error( + $"Camera socket connection failed: " + + $"name={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"port={portParam}, " + + $"socketError={exc.SocketErrorCode}, " + + $"error={exc.Message}"); + } + catch (Exception exc) + { + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Error( + $"Camera detection failed: " + + $"name={CameraCfg.Name}, " + + $"HWAddress={CameraCfg.HardwareAddress}, " + + $"IP={ipAddressParam}, " + + $"port={portParam}, " + + $"duration={result.Duration_ms:F0} ms, " + + $"error={exc.Message}", + exc); + } + + result.IsDetected = false; + result.IpAddress = null; + result.Hardware = null; + result.Revision = null; + result.Serial = null; + result.SdCardVersion = null; + + return result; + } - async Task DetectJMSCamera(string ipAddressParam, int portParam) + private static string FormatPacketForLog( JmsPacket packet) + { + if (packet == null) + return ""; + + if (packet.JmsMessage == null) + return ""; + + string payload = packet.JmsMessage.Payload; + + if (!string.IsNullOrEmpty(payload) && payload.Length > 200) + { + payload = payload.Substring(0, 200) + "..."; + } + + return $"command={packet.JmsMessage.Command}, " + $"status={packet.JmsMessage.Status}, " + $"payload={payload}"; + } + + private async Task ClearPendingResponsesAsync(StreamReader reader) { - CameraDetectionResult result = new CameraDetectionResult(); - if (CameraCfg.IPAddressCJMS != null) + await cameraReadLock.WaitAsync(); + + try { - try + while (reader.Peek() >= 0) { - - using (this.cameraTcpClient = new TcpClient()) - { - var connectTask = this.cameraTcpClient.ConnectAsync(ipAddressParam, portParam); - var timeoutTask = Task.Delay(TimeSpan.FromSeconds(1)); - - var completedTask = Task.WhenAny(connectTask, timeoutTask).Result; - - if (completedTask == timeoutTask) - { - throw new TimeoutException("Connection attempt timed out after 1 second."); - } - //TcpClient tcpClient = await EstablishCameraConnection(CameraCfg.IPAddressCJMS, iPort); - log.Debug(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - this.ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream - - - using (NetworkStream stream = cameraTcpClient.GetStream()) - using (StreamWriter writer = new StreamWriter(stream, Encoding.ASCII) { AutoFlush = true }) - using (StreamReader reader = new StreamReader(stream, Encoding.ASCII)) - { - stream.ReadTimeout = 1000; - - // Send command - DateTime detectionStart = DateTime.Now; - - // create config and send - string message = getConfigMessage(); - JmsPacket answer = SendCommandAndWaitToAnswer(writer, reader, CommandM.type_camera_,message); - if (answer == null || answer.JmsMessage.Status != MessageStatus.ACK) - { - log.Error(answer); - } - //Prepare camera - JmsPacket answerPrepare = SendCommandAndWaitToAnswer(writer, reader, CommandM.prepare_camera_); - if (answerPrepare == null || answerPrepare.JmsMessage.Status != MessageStatus.ACK) - { - if (!(answerPrepare != null && answerPrepare.JmsMessage.Status == MessageStatus.NACK && - answerPrepare.JmsMessage.Payload == "OPENED")) //correct if NACK & OPENED - { - log.Error(answerPrepare); - } - else - { - SendCommandAndWaitToAnswer(writer, reader, CommandM.close_); - var sendCommandAndWaitToAnswer = SendCommandAndWaitToAnswer(writer, reader, CommandM.prepare_camera_); - if (sendCommandAndWaitToAnswer == null || sendCommandAndWaitToAnswer.JmsMessage.Status == MessageStatus.NACK) //correct if NACK & OPENED - { - log.Error("Restart close, prepare camera not successfully! see: " + answerPrepare); - } - } - } - //Status - JmsPacket answerStatus = SendCommandAndWaitToAnswer(writer, reader, CommandM.status_); - if (answerStatus == null || answerStatus.JmsMessage.Status != MessageStatus.ACK) - { - log.Error(answerStatus); - } - //Get config - JmsPacket answerCfg = SendCommandAndWaitToAnswer(writer, reader, CommandM.get_cfg_); - if (answerCfg == null || answerCfg.JmsMessage.Status != MessageStatus.ACK) - { - log.Error(answerCfg); - }else{ - result.IpAddress = IPAddress.Parse(ipAddressParam); - } - - - result.Duration_ms = (DateTime.Now - detectionStart).TotalMilliseconds; - - result.Hardware = string.Empty; - result.Revision = string.Empty; - result.Serial = string.Empty; - result.SdCardVersion = string.Empty; - - string msg = string.Format("Camera {0} detected in {1} ms: HWAddress={2} IPAddress={3} {4}", - CameraCfg.Name, - result.Duration_ms, - CameraCfg.HardwareAddress, - this.ipAddress == null ? "not detected" : this.ipAddress.ToString(), - answerCfg.MessageOrigin); - log.Debug(msg); - Console.WriteLine(msg); - - cameraTcpClient.Dispose(); - cameraTcpClient = null; - - result.IsDetected = true; - return result; /// Camera detected - } - } - } - catch (Exception exc) - { - log.ErrorFormat("Camera {0} with HWAddress={1} not detected : {2}", CameraCfg.Name, - CameraCfg.HardwareAddress, exc.Message); + string oldLine = reader.ReadLine(); + log.Debug("Discarded old camera response: " + oldLine); } } - - if (CameraCfg.DebugLevel == DebugMode.Simulate) + catch (IOException) { - result.Hardware = null; - result.Revision = null; - result.Serial = null; - result.SdCardVersion = null; - result.IpAddress = null; - - result.IsDetected = true; - return result; } - - result.Hardware = null; - result.Revision = null; - result.Serial = null; - result.SdCardVersion = null; - result.IpAddress = null; - - result.IsDetected = false; - return result; /// No camera detected + catch (Exception exc) + { + log.Warn("ClearPendingResponses failed: " + exc.Message); + } + finally + { + cameraReadLock.Release(); + } } class SensorConfig{ @@ -546,13 +946,13 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - private RoiCfg GetFirstRoiChild() + private RoiCfg GetFirstRoiCfgChild() { /// Load the list of components from the database var session = TBF.DB.CreateSession(DBKind.Config); var cmptnEntities = session.QueryOver().OrderBy(x => x.ItemNr).Asc.List(); - + List cfgs = new List(); IList components = new List(); foreach (var component in cmptnEntities) @@ -561,25 +961,136 @@ namespace TBF.Rig.Network.Camera.CJMS11 { IComponentFactory cmpntFactory = Rig.TbfComponents.CmpntFactoryFromClassName(component.ClassName); if (cmpntFactory == null) continue; - + IList tbfComponents = Rig.TbfComponents.LoadComponentsFromDB(cmptnEntities); IComponentCfg cmpntCfgFromCmpntEntity = cmpntFactory.CmpntCfgFromCmpntEntity(component); - + IComponent cmpnt = cmpntFactory.GetComponent(cmpntCfgFromCmpntEntity, components); - + RoiForFixedStartCJMS11.RoiCfg roi = cmpntCfgFromCmpntEntity as RoiForFixedStartCJMS11.RoiCfg; - + if (roi != null) { cfgs.Add(roi); } } } - + /// get fist found configuration return cfgs.First(); } + private RoiForFixedStartCJMS11.Roi GetFirstRoiChild() + { + using (var session = TBF.DB.CreateSession(DBKind.Config)) + { + var componentEntities = session + .QueryOver() + .OrderBy(x => x.ItemNr) + .Asc + .List(); + + IList components = + Rig.TbfComponents.LoadComponentsFromDB(componentEntities); + + var roi = components + .OfType() + .FirstOrDefault(x => + x.Cfg != null && + string.Equals( + x.Cfg.ParentName, + Name, + StringComparison.Ordinal)); + + if (roi == null) + { + log.WarnFormat( + "No ROI child was found for camera '{0}'.", + Name); + + return null; + } + + var roiCfg = roi.Cfg as RoiForFixedStartCJMS11.RoiCfg; + + if (roiCfg == null) + { + log.WarnFormat( + "ROI '{0}' has an invalid configuration type.", + roi.Name); + + return roi; + } + + LoadProcedureParams(session, roiCfg); + + return roi; + } + } + + private void LoadProcedureParams( + NHibernate.ISession session, + RoiForFixedStartCJMS11.RoiCfg roiCfg) + { + if (roiCfg == null) + { + return; + } + + var currentProcedure = StateMachine.Procedure; + + if (currentProcedure == null) + { + log.WarnFormat( + "Cannot load procedure parameters for ROI '{0}': " + + "current procedure is null.", + roiCfg.Name); + + return; + } + + var dbParams = session + .QueryOver() + .Where(x => x.CmpntName == roiCfg.Name) + .And(x => x.Procedure == currentProcedure) + .SingleOrDefault(); + + if (dbParams == null) + { + log.WarnFormat( + "No procedure parameters found for ROI '{0}', procedure '{1}'. " + + "Using default values.", + roiCfg.Name, + currentProcedure); + + return; + } + + if (roiCfg.ProcParams == null) + { + roiCfg.ProcParams = new ProcedureParams(); + } + + if (!roiCfg.ProcParams.UpdateFromDbEntity(dbParams)) + { + log.WarnFormat( + "Failed to deserialize procedure parameters for ROI '{0}', " + + "procedure '{1}'.", + roiCfg.Name, + currentProcedure); + + return; + } + + log.DebugFormat( + "Loaded ROI procedure parameters: ROI='{0}', procedure='{1}', " + + "RoiPicCount={2}, RoiDeltaTimeMs={3}.", + roiCfg.Name, + currentProcedure, + roiCfg.ProcParams.RoiPicCount, + roiCfg.ProcParams.RoiDeltaTimeMs); + } + private string getConfigMessage() { //CameraCfg @@ -629,7 +1140,8 @@ namespace TBF.Rig.Network.Camera.CJMS11 log.Debug("Handle CameraUICmd received - Live"); stopLiveStreamListenerFlag = false; stopUIListenerFlag = true; - StartLiveStreamListener(IPAddress, iPort); + StartLiveStreamListener(); + //StartLiveStreamListener(IPAddress, iPort); } else if (e.CameraUICmd == CameraUICmd.Stop) { @@ -640,7 +1152,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 else if (e.CameraUICmd == CameraUICmd.Grab) { log.Debug($"Handle CameraUICmd received - GrabImage - camera idx: {cameraIdx}"); - stopUIListenerFlag = true; + //stopUIListenerFlag = true; StopUiThreads(); StartGrabImageListener(); } @@ -704,40 +1216,59 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - public void SaveImageToFile(Image imageToSave, string fileNamePath) + public void SaveImageToFile( + Image imageToSave, + string fileNamePath) { if (imageToSave == null) { - log.Error("Nothing to save in SaveImageToFile"); - return; // nothing to save + throw new ArgumentNullException(nameof(imageToSave)); } - if (fileNamePath == null || fileNamePath.IsEmpty()) + if (string.IsNullOrWhiteSpace(fileNamePath)) { - log.Error("Path to save missing!"); - return; // nothing to save + throw new ArgumentException( + "Path to save is missing.", + nameof(fileNamePath)); } - - try - { - string filePath = fileNamePath; - - string path = Path.GetDirectoryName(filePath); - if (path != null && path.IsNotEmpty()) - { - Directory.CreateDirectory(path); - } + string directory = + Path.GetDirectoryName(fileNamePath); - using (var clonedImage = CloneImageToBitmap(imageToSave)) - { - clonedImage.Save(filePath, ImageFormat.Png); // encoder, encoderParams); - } - log.Debug("Image saved to: " + filePath); - }catch(Exception exc) + if (!string.IsNullOrWhiteSpace(directory)) { - log.Error("Error saving image: " + exc.Message); - throw; + Directory.CreateDirectory(directory); + } + + ImageFormat format = + GetImageFormatFromFileName(fileNamePath); + + using (var clonedImage = CloneImageToBitmap(imageToSave)) + { + clonedImage.Save(fileNamePath, format); + } + + log.Debug("Image saved to: " + fileNamePath); + } + + private static ImageFormat GetImageFormatFromFileName( + string fileName) + { + string extension = + Path.GetExtension(fileName)?.ToLowerInvariant(); + + switch (extension) + { + case ".bmp": + return ImageFormat.Bmp; + + case ".jpg": + case ".jpeg": + return ImageFormat.Jpeg; + + case ".png": + default: + return ImageFormat.Png; } } @@ -768,9 +1299,36 @@ namespace TBF.Rig.Network.Camera.CJMS11 saveImageListenerThread.Start(); } + private Task saveImageTask; + + public bool IsSaveImageInProgress => + saveImageTask != null && + !saveImageTask.IsCompleted; + + public Task StartSaveImageToFileAsync( Image image, string fileName) + { + if (image == null) + throw new ArgumentNullException(nameof(image)); + + if (string.IsNullOrWhiteSpace(fileName)) + throw new ArgumentException( + "File name is required.", + nameof(fileName)); + + if (saveImageTask != null && !saveImageTask.IsCompleted) + { + log.Warn( $"Image save already running: cameraIdx={cameraIdx}, file={fileName}"); + return saveImageTask; + } + + saveImageTask = Task.Run( () => SaveImageToFile(image, fileName)); + + return saveImageTask; + } + private void StartSaveImageListener() { - Task saveImageTask = Task.Run(() => SaveImageListener()); + Task saveImageTask = Task.Run(() => SaveImageListenerAsynch()); var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; if (completedAnswerTask == timeoutAnswerTask) @@ -790,7 +1348,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 public void StartSaveImageListener(string filePath) { - Task saveImageTask = Task.Run(() => SaveImageListener()); + Task saveImageTask = Task.Run(() => SaveImageListenerAsynch()); var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; if (completedAnswerTask == timeoutAnswerTask) @@ -847,7 +1405,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 } // Check if the connect task completed successfully - connectTask.GetAwaiter().GetResult(); // Throws if failed + //connectTask.GetAwaiter().GetResult()); // Throws if failed if (camTcpClient.Connected) { @@ -914,125 +1472,244 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - - public async Task SaveImageListener() + + + private async Task ConnectCameraAsync(int timeoutMs, CancellationToken ct) { - Image imageToReturn = null; - using (this.cameraTcpClient = new TcpClient()) + var client = new TcpClient(); + + var connectTask = client.ConnectAsync(CameraCfg.IPAddressCJMS, iPort); + var timeoutTask = Task.Delay(timeoutMs, ct); + + var completed = await Task.WhenAny(connectTask, timeoutTask); + + if (completed == timeoutTask) { + client.Close(); + throw new TimeoutException($"Connection timeout after {timeoutMs} ms."); + } + + await connectTask; + + log.Debug($"Camera connected to server {CameraCfg.IPAddressCJMS}:{iPort}."); + ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); + + return client; + } + + private async Task ConnectCameraAsync( + int timeoutMs, + CancellationToken ct, + int maxAttempts = 3, + int retryDelayMs = 300) + { + Exception lastException = null; + + for (int attempt = 1; attempt <= maxAttempts; attempt++) + { + ct.ThrowIfCancellationRequested(); + + var client = new TcpClient(); + try { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); + log.Debug( $"Connecting to camera: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, port={iPort}, " + + $"attempt={attempt}/{maxAttempts}"); - log.Debug(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); + Task connectTask = client.ConnectAsync( CameraCfg.IPAddressCJMS, iPort); + Task timeoutTask = Task.Delay( timeoutMs, ct); - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) + Task completedTask = await Task.WhenAny(connectTask, timeoutTask).ConfigureAwait(false); + + if (completedTask == timeoutTask) { - cameraStream.ReadTimeout = 1000; + ct.ThrowIfCancellationRequested(); - SendCommand(CommandM.prepare_camera_); + client.Close(); - bool inError = false; - stopSaveImageListenerFlag = false; - while (!stopSaveImageListenerFlag) - { - try - { - SendCommand(CommandM.grab_image_); - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - - switch (newPacket.JmsMessage.Command) - { - case CommandM.grab_image_: - if (newPacket.JmsMessage.Status != MessageStatus.ACK) - { - if (inError) - { - return null; // camera in error - finish thread - } - SendCommand(CommandM.prepare_camera_); - inError = true; - } - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - imageToReturn = image; - stopSaveImageListenerFlag = - true; // mam obrazok ukoncim a zavriem thread - } - - break; - default: - break; - } - } - - } - catch (Exception exc) - { - string msg = string.Format("Exception in MJpeg RTP listener thread: {0}", exc.Message); - log.Error(msg); - } - } - - stopGrabImageListenerFlag = false; - SendCommand(CommandM.close_); - SendCommand(CommandM.disconnect_); - - CloseCameraResources(); - - return imageToReturn; - + throw new TimeoutException( $"Connection timeout after {timeoutMs} ms. Attempt {attempt}/{maxAttempts}."); } - }catch(Exception exc) + + // Dôležité: načíta prípadnú SocketException. + await connectTask.ConfigureAwait(false); + + if (!client.Connected) + { + throw new SocketException( + (int)SocketError.NotConnected); + } + + client.NoDelay = true; + + log.Debug( $"Camera connected: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, port={iPort}, " + + $"attempt={attempt}"); + + ipAddress = + IPAddress.Parse( + CameraCfg.IPAddressCJMS); + + return client; + } + catch (OperationCanceledException) { - log.Error($"Save Image exception: {exc.Message}"); + client.Close(); + throw; + } + catch (Exception exc) + { + client.Close(); + lastException = exc; + + log.Warn( $"Camera connection attempt failed: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, " + + $"attempt={attempt}/{maxAttempts}, error={exc.Message}"); + + if (attempt < maxAttempts) + { + await Task.Delay( + retryDelayMs, + ct) + .ConfigureAwait(false); + } } } - return imageToReturn; + + throw new IOException( + $"Unable to connect to camera {CameraCfg.IPAddressCJMS}:{iPort} after {maxAttempts} attempts.", + lastException); + } + + public async Task SaveImageListenerAsynch() + { + saveCts?.Cancel(); + saveCts = new CancellationTokenSource(); + + return await SaveImageListenerAsynch(saveCts.Token); + } + + public async Task SaveImageListenerAsynch(CancellationToken ct) + { + Image imageToReturn = null; + + await cameraOperationLock.WaitAsync(ct); + + try + { + using (TcpClient client = await ConnectCameraAsync(1000, ct)) + using (NetworkStream stream = client.GetStream()) + { + var reader = new CameraLineReader( + stream, + 64 * 1024); + + JmsPacket prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED"); + + if (alreadyOpened) + { + log.Debug( $"Camera already OPENED: " + $"cameraIdx={cameraIdx}, " + $"IP={CameraCfg.IPAddressCJMS}"); + } + else if (prepareAnswer == null || prepareAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Error( $"Prepare camera failed: " + $"cameraIdx={cameraIdx}, " + $"IP={CameraCfg.IPAddressCJMS}"); + return null; + } + + JmsPacket grabAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.grab_image_, + null, + 10000, + ct) + .ConfigureAwait(false); + + if (grabAnswer == null || grabAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Error( $"Grab image failed: " + $"cameraIdx={cameraIdx}, " + $"IP={CameraCfg.IPAddressCJMS}"); + return null; + } + + ParsedImage parsedImage = grabAnswer.JmsMessage.getImage(); + + if (parsedImage == null) + { + log.Error( $"Parsed image is null: " + $"cameraIdx={cameraIdx}"); + return null; + } + + if (parsedImage.Encoding != ImageType.BASE_64) + { + log.Error( $"Unsupported image encoding: " + $"cameraIdx={cameraIdx}, " + $"encoding={parsedImage.Encoding}"); + return null; + } + + + + imageToReturn = parsedImage.Image; + + if (imageToReturn == null) + { + log.Error( $"Decoded image is null: " + $"cameraIdx={cameraIdx}"); + return null; + } + + DrawOverlay(imageToReturn); + + await TryCloseCameraAsync( stream, reader).ConfigureAwait(false); + + return imageToReturn; + } + } + catch (OperationCanceledException) + { + log.Debug( $"Save image cancelled: cameraIdx={cameraIdx}"); + return null; + } + catch (TimeoutException exc) + { + log.Error( $"Save image timeout: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, error={exc.Message}"); + return null; + } + catch (Exception exc) + { + log.Error( $"Save image exception: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, error={exc.Message}", exc); + return null; + } + finally + { + cameraOperationLock.Release(); + } } void StopUiThreads() { + liveCts?.Cancel(); + grabCts?.Cancel(); + saveCts?.Cancel(); + sendImagesCts?.Cancel(); + stopLiveStreamListenerFlag = true; stopGrabImageListenerFlag = true; stopUIListenerFlag = true; + + log.Debug("Handle CameraUICmd StopUIListener"); var taskStopUi = Task.Run(StopUiListener); var timeoutTask = Task.Delay(TimeSpan.FromSeconds(5)); @@ -1068,293 +1745,579 @@ namespace TBF.Rig.Network.Camera.CJMS11 //stopLiveStreamListenerFlag = false; //stopGrabImageListenerFlag = false; } + + + + public bool IsGrabImageInProgress + { + get + { + return grabImageTask != null && + !grabImageTask.IsCompleted; + } + } + + public Task GrabImageTask + { + get { return grabImageTask; } + } + public void StartGrabImageListener() { - grabImageListenerThread = new Thread(GrabImageListener); - grabImageListenerThread.Start(); + + _ = StartGrabImageListenerAsync(); } - void GrabImageListener() + + public Task StartGrabImageListenerAsync( + bool retryUntilValidImage = false, + int maxAttempts = 1, + int retryDelayMs = 200) { - using (this.cameraTcpClient = new TcpClient()) + if (grabImageTask != null && !grabImageTask.IsCompleted) { - try + log.Warn( + $"Grab already running: cameraIdx={cameraIdx}, " + + $"IP={CameraCfg.IPAddressCJMS}"); + + return grabImageTask; + } + + grabCts?.Cancel(); + grabCts?.Dispose(); + + grabCts = new CancellationTokenSource(); + + if (!retryUntilValidImage) + { + maxAttempts = 1; + } + + maxAttempts = Math.Max(1, maxAttempts); + retryDelayMs = Math.Max(0, retryDelayMs); + + grabImageTask = GrabImageListenerWithRetryAsync( + grabCts.Token, + maxAttempts, + retryDelayMs); + + return grabImageTask; + } + + private async Task EstablishCameraConnectionAsync( + TcpClient client, + string ip, + int port, + int timeoutMs) + { + Task connectTask = client.ConnectAsync(ip, port); + Task timeoutTask = Task.Delay(timeoutMs); + + Task completedTask = await Task.WhenAny(connectTask, timeoutTask); + + if (completedTask == timeoutTask) + throw new TimeoutException($"Connection attempt timed out after {timeoutMs} ms."); + + await connectTask; + } + + private Task grabImageTask; + private CancellationTokenSource grabCts; + //private CancellationTokenSource liveCts; + private CancellationTokenSource saveCts; + + private readonly SemaphoreSlim cameraOperationLock = new SemaphoreSlim(1, 1); + + + + private async Task GrabImageListenerWithRetryAsync( + CancellationToken ct, + int maxAttempts, + int retryDelayMs) + { + bool lockAcquired = false; + + try + { + await cameraOperationLock.WaitAsync(ct).ConfigureAwait(false); + + lockAcquired = true; + + for (int attempt = 1; + attempt <= maxAttempts; + attempt++) { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); + ct.ThrowIfCancellationRequested(); - log.Info(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream + Image image = null; - - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) + try { - cameraStream.ReadTimeout = 1000; + log.Debug( $"Starting grab image attempt: cameraIdx={cameraIdx}, attempt={attempt}/{maxAttempts}"); - try + image = await GrabImageSingleAttemptAsync(ct).ConfigureAwait(false); + + if (IsValidGrabbedImage(image)) { - SendCommand(CommandM.prepare_camera_); - } - catch (Exception exc) - { - log.Error($"Initialisation of connection readers failed: {exc.Message}"); - return; - } + /* + * Obrázok upravíme ešte predtým, + * než ho sprístupníme iným threadom. + */ + ImageUtils.Rotate( + image, + RoiConfiguration.ImageRotation); - stopGrabImageListenerFlag = false; - int iCountOf_NACK = 0; - int iActualImageIndex = 0; + DrawOverlay(image); - SendCommand(CommandM.grab_image_); - + /* + * UI dostane vlastnú Image inštanciu. + * Originál zostáva pre návrat z Task + * a následné uloženie do súboru. + */ + Image imageForUi = CloneImageToBitmap(image); - while (!stopGrabImageListenerFlag) - { try { - - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - - if (newPacket.JmsMessage.Status != MessageStatus.ACK) - { - if (iCountOf_NACK < 5) - { - iCountOf_NACK++; - continue; - } - - log.ErrorFormat("Error occured more as 5 time in GrabImageListener: {0}", - newPacket.JmsMessage.Status); - stopGrabImageListenerFlag = true; // mam obrazok ukoncim a zavriem thread - break; - } - else - { - - switch (newPacket.JmsMessage.Command) - { - case CommandM.grab_image_: - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - OnImageReceived(this, this.cameraIdx, image, RoiConfiguration.ImageRotation); - iActualImageIndex++; - if (iActualImageIndex >= RoiConfiguration.ImageOpacity.Count) - { - stopGrabImageListenerFlag = - true; // mam obrazok ukoncim a zavriem thread - } - } - - break; - } - } - } + OnImageReceived( this, cameraIdx, imageForUi, ImageRotation.None); } - catch (Exception exc) + catch { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} Exception in MJpeg RTP listener thread: { exc.Message}"); + imageForUi.Dispose(); + throw; } + + log.Debug( $"Valid image received: cameraIdx={cameraIdx}, attempt={attempt}/{maxAttempts}, " + + $"size={image.Width}x{image.Height}"); + + return image; } + image?.Dispose(); - stopGrabImageListenerFlag = false; - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.close_); - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.disconnect_); - - CloseCameraResources(); - - return; + log.Warn( + $"Invalid image received: " + + $"cameraIdx={cameraIdx}, " + + $"attempt={attempt}/{maxAttempts}"); } - }catch(Exception exc) + catch (OperationCanceledException) + { + image?.Dispose(); + throw; + } + catch (Exception exc) + { + image?.Dispose(); + + log.Warn( + $"Grab image attempt failed: " + + $"cameraIdx={cameraIdx}, " + + $"attempt={attempt}/{maxAttempts}, " + + $"error={exc.Message}"); + } + + if (attempt < maxAttempts && + retryDelayMs > 0) + { + await Task.Delay(retryDelayMs, ct) + .ConfigureAwait(false); + } + } + + log.Error( + $"No valid image received after all attempts: " + + $"cameraIdx={cameraIdx}, " + + $"attempts={maxAttempts}"); + + UiBridge.Bridge.OnImage(cameraIdx, null); + + return null; + } + catch (OperationCanceledException) + { + log.Debug( + $"Grab image cancelled: " + + $"cameraIdx={cameraIdx}"); + + throw; + } + finally + { + if (lockAcquired) { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} exception: {exc.Message}"); - UiBridge.Bridge.OnImage(this.cameraIdx, null); + cameraOperationLock.Release(); } } } - void SendImageListener() + private static bool IsValidGrabbedImage(Image image) { - using (this.cameraTcpClient = new TcpClient()) + if (image == null) { + return false; + } + + try + { + if (image.Width <= 0 || + image.Height <= 0) + { + return false; + } + + // Vytvorenie Bitmap zároveň preverí, + // či je obrázok použiteľný cez GDI+. + using (var bitmap = new Bitmap(image)) + { + return bitmap.Width > 0 && + bitmap.Height > 0; + } + } + catch + { + return false; + } + } + + private async Task GrabImageSingleAttemptAsync( + CancellationToken ct) + { + TcpClient client = null; + NetworkStream stream = null; + CameraLineReader reader = null; + + try + { + client = + await ConnectCameraAsync(5000, ct) + .ConfigureAwait(false); + + stream = client.GetStream(); + + reader = new CameraLineReader( + stream, + 64 * 1024); + + JmsPacket prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED"); + + bool prepared = + prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.ACK; + + if (!prepared && !alreadyOpened) + { + log.Warn( + $"Prepare camera failed: " + + $"cameraIdx={cameraIdx}, " + + $"answer={FormatPacketForLog(prepareAnswer)}"); + + return null; + } + + if (alreadyOpened) + { + log.Debug( + $"Camera already OPENED: " + + $"cameraIdx={cameraIdx}"); + } + + await SendCommandAsync( + stream, + CommandM.grab_image_, + ct, + null) + .ConfigureAwait(false); + + while (true) + { + ct.ThrowIfCancellationRequested(); + + string response = + await reader.ReadLineAsync(10000, ct) + .ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(response)) + { + continue; + } + + JmsPacket packet; + + try + { + packet = new JmsPacket(response); + } + catch (Exception exc) + { + log.Warn( + $"Cannot parse grab response: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + + continue; + } + + if (packet.JmsMessage == null) + { + continue; + } + + if (packet.JmsMessage.Command != + CommandM.grab_image_) + { + log.Debug( + $"Unexpected response during grab: " + + $"cameraIdx={cameraIdx}, " + + $"command={packet.JmsMessage.Command}"); + + continue; + } + + if (packet.JmsMessage.Status != + MessageStatus.ACK) + { + log.Warn( + $"Grab image returned NACK: " + + $"cameraIdx={cameraIdx}, " + + $"payload={packet.JmsMessage.Payload}"); + + return null; + } + + ParsedImage parsedImage = + packet.JmsMessage.getImage(); + + if (parsedImage == null) + { + log.Warn( + $"Parsed image is null: " + + $"cameraIdx={cameraIdx}"); + + return null; + } + + if (parsedImage.Encoding != + ImageType.BASE_64) + { + log.Warn( + $"Unsupported image encoding: " + + $"cameraIdx={cameraIdx}, " + + $"encoding={parsedImage.Encoding}"); + + return null; + } + + Image image = parsedImage.Image; + + if (image == null) + { + log.Warn( + $"Decoded image is null: " + + $"cameraIdx={cameraIdx}"); + + return null; + } + + return image; + } + } + catch (OperationCanceledException) + { + log.Debug( + $"Grab image attempt cancelled: " + + $"cameraIdx={cameraIdx}"); + + throw; + } + catch (TimeoutException exc) + { + log.Warn( + $"Grab image attempt timeout: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + + return null; + } + catch (Exception exc) + { + log.Warn( + $"Grab image attempt failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}", + exc); + + return null; + } + finally + { + if (stream != null && + reader != null) + { + try + { + await TryCloseCameraAsync( + stream, + reader) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Grab cleanup failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + try { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); - - log.Info(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream - - - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) - { - cameraStream.ReadTimeout = 1000; - - try - { - SendCommand(CommandM.prepare_camera_); - } - catch (Exception exc) - { - log.Error($"Initialisation of connection readers failed: {exc.Message}"); - return; - } - - stopGrabImageListenerFlag = false; - int iCountOf_NACK = 0; - int iActualImageIndex = 0; - - //TODO BUMI send grab image or send - based on count of images - but must work similary - if (RoiConfiguration.ImageOpacity.Count <= 1) - { - SendCommand(CommandM.grab_image_); - } - else - { - SendCommand(CommandM.send_); - } - - while (!stopGrabImageListenerFlag) - { - try - { - - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - - if (newPacket.JmsMessage.Status != MessageStatus.ACK) - { - if (iCountOf_NACK < 5) - { - iCountOf_NACK++; - continue; - } - - log.ErrorFormat("Error occured more as 5 time in GrabImageListener: {0}", - newPacket.JmsMessage.Status); - stopGrabImageListenerFlag = true; // mam obrazok ukoncim a zavriem thread - break; - } - else - { - - switch (newPacket.JmsMessage.Command) - { - case CommandM.send_: - case CommandM.grab_image_: - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - OnImageReceived(this, this.cameraIdx, image, RoiConfiguration.ImageRotation,iActualImageIndex,RoiConfiguration.ImageOpacity.Count); - iActualImageIndex++; - if (iActualImageIndex >= RoiConfiguration.ImageOpacity.Count) - { - stopGrabImageListenerFlag = - true; // mam obrazok ukoncim a zavriem thread - } - } - - break; - } - } - } - } - catch (Exception exc) - { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} Exception in MJpeg RTP listener thread: { exc.Message}"); - } - } - - stopGrabImageListenerFlag = false; - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.close_); - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.disconnect_); - - CloseCameraResources(); - - return; - } - }catch(Exception exc) + stream?.Dispose(); + } + catch + { + } + + try + { + client?.Close(); + client?.Dispose(); + } + catch { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} exception: {exc.Message}"); - UiBridge.Bridge.OnImage(this.cameraIdx, null); } } } + + private async Task TryCloseCameraAsync( + NetworkStream stream, + CameraLineReader reader) + { + /* + * CLOSE + * + * Na close ešte odpoveď očakávame. + */ + try + { + JmsPacket closeResponse = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.close_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + + if (closeResponse == null || + closeResponse.JmsMessage == null) + { + log.Warn( + $"No close response: " + + $"cameraIdx={cameraIdx}"); + + return; + } + + bool closeAccepted = + closeResponse.JmsMessage.Status == + MessageStatus.ACK; + + bool closeAlreadyInProgress = + closeResponse.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + closeResponse.JmsMessage.Payload) && + closeResponse.JmsMessage.Payload.Contains( + "Close command already in progress"); + + if (closeAlreadyInProgress) + { + log.Debug( + $"Camera close already in progress: " + + $"cameraIdx={cameraIdx}"); + } + else if (!closeAccepted) + { + log.Warn( + $"Camera close returned NACK: " + + $"cameraIdx={cameraIdx}, " + + $"payload={closeResponse.JmsMessage.Payload}"); + } + } + catch (TimeoutException exc) + { + log.Warn( + $"Close camera timeout: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + catch (Exception exc) + { + log.Warn( + $"Close camera failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + + /* + * DISCONNECT + * + * Dôležité: príkaz iba odošleme. + * Na odpoveď nečakáme. + */ + try + { + if (stream.CanWrite) + { + await SendCommandAsync( + stream, + CommandM.disconnect_, + CancellationToken.None, + null) + .ConfigureAwait(false); + + log.Debug( + $"Disconnect command sent: " + + $"cameraIdx={cameraIdx}"); + } + } + catch (Exception exc) + { + log.Warn( + $"Disconnect camera failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + private void CloseCameraResources() { cameraReader?.Close(); cameraReader = null; - cameraWriter?.Close(); - cameraWriter = null; + //cameraWriter?.Close(); + //cameraWriter = null; cameraStream?.Close(); cameraStream = null; cameraTcpClient?.Close(); @@ -1362,6 +2325,17 @@ namespace TBF.Rig.Network.Camera.CJMS11 cameraTcpClient = null; } + public void CancelGrabImage() + { + try + { + grabCts?.Cancel(); + } + catch (ObjectDisposedException) + { + // CTS už bolo uvoľnené. + } + } /// /// listener for multiple - repetetive image receiving @@ -1372,130 +2346,285 @@ namespace TBF.Rig.Network.Camera.CJMS11 /// /// - private void StartLiveStreamListener(IPAddress localIP, int localPort) - { - liveStreamListenerThread = new Thread(new ThreadStart(LiveStreamListener)); - liveStreamListenerThread.Start(); - } + // private void StartLiveStreamListener(IPAddress localIP, int localPort) + // { + // liveStreamListenerThread = new Thread(new ThreadStart(LiveStreamListener)); + // liveStreamListenerThread.Start(); + // } + + private CancellationTokenSource liveCts; + private Task liveStreamTask; + private static int maxAttempts = 4; + private static int retryDelayMs = 1000; - void LiveStreamListener() + public void StartLiveStreamListener() { - bool synced = false; - - using (this.cameraTcpClient = new TcpClient()) + if (liveStreamTask != null && !liveStreamTask.IsCompleted) { - try - { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); - - log.Debug(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream - - - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) - { - cameraStream.ReadTimeout = 1000; - - SendCommand(CommandM.prepare_camera_); - SendCommand(CommandM.start_stream_images_); - - - stopLiveStreamListenerFlag = false; - while (!stopLiveStreamListenerFlag) - { - try - { - - //SendCommand(CommandM.grab_image_); - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - // if (synced) - // { - /// Sychronized: process the new packet - switch (newPacket.JmsMessage.Command) - { - case CommandM.grab_image_: - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - OnImageReceived(this, this.cameraIdx, image, RoiConfiguration.ImageRotation,0,1 ); - - } - - break; - default: - break; - } - } - } - catch (Exception exc) - { - string msg = string.Format("Exception in MJpeg RTP listener thread: {0}", exc.Message); - log.Error(msg); - } - } - - stopLiveStreamListenerFlag = false; - //we need to wait to answer, it works on thread loop - properly access - var sendCommandAndWaitToAnswer = SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.prepare_camera_); - if (sendCommandAndWaitToAnswer == null || sendCommandAndWaitToAnswer.JmsMessage.Status == MessageStatus.NACK) //correct if NACK & OPENED - { - log.Error("Stop streaming not successfully! see: " + sendCommandAndWaitToAnswer.JmsMessage.Payload); - } - - //SendCommand(CommandM.close_); - //SendCommand(CommandM.disconnect_); - - CloseCameraResources(); - } - }catch(Exception exc) - { - log.Error($"Live Stream exception: {exc.Message}"); - UiBridge.Bridge.OnImage(this.cameraIdx, null); - } + log.Warn( $"Live stream already running: cameraIdx={cameraIdx}"); + return; } - return; + liveCts?.Cancel(); + liveCts?.Dispose(); + + liveCts = new CancellationTokenSource(); + + liveStreamTask = LiveStreamListenerAsync(liveCts.Token); } + private async Task LiveStreamListenerAsync( + CancellationToken ct) + { + bool lockAcquired = false; + TcpClient client = null; + NetworkStream stream = null; + CameraLineReader reader = null; + bool streamStarted = false; + try + { + log.Debug( + $"Live stream waiting for camera lock: " + + $"cameraIdx={cameraIdx}"); + await cameraOperationLock + .WaitAsync(ct) + .ConfigureAwait(false); + + lockAcquired = true; + + log.Debug( + $"Live stream acquired camera lock: " + + $"cameraIdx={cameraIdx}"); + + client = await ConnectCameraAsync( + timeoutMs: 3000, + ct: ct, + maxAttempts: 3, + retryDelayMs: 300) + .ConfigureAwait(false); + + stream = client.GetStream(); + + reader = new CameraLineReader( stream, 64 * 1024); + + JmsPacket prepare = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + + bool alreadyOpened = + prepare != null && + prepare.JmsMessage != null && + prepare.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepare.JmsMessage.Payload) && + prepare.JmsMessage.Payload.Contains( + "OPENED"); + + bool prepared = + prepare != null && + prepare.JmsMessage != null && + prepare.JmsMessage.Status == + MessageStatus.ACK; + + if (!prepared && !alreadyOpened) + { + log.Error( $"Prepare camera for live stream failed: cameraIdx={cameraIdx}, answer={FormatPacketForLog(prepare)}"); + return; + } + + if (alreadyOpened) + { + log.Debug( $"Camera already opened for live stream: cameraIdx={cameraIdx}"); + } + + JmsPacket start = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.start_stream_images_, + null, + 5000, + ct) + .ConfigureAwait(false); + + if (start == null || start.JmsMessage == null || start.JmsMessage.Status != MessageStatus.ACK) + { + log.Error( $"Unable to start live stream: cameraIdx={cameraIdx}, answer={FormatPacketForLog(start)}"); + return; + } + + streamStarted = true; + + log.Debug( $"Live stream started: cameraIdx={cameraIdx}"); + + while (!ct.IsCancellationRequested) + { + string response = + await reader.ReadLineAsync( + 10000, + ct) + .ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(response)) + continue; + + JmsPacket packet = + new JmsPacket(response); + + if (packet.JmsMessage == null) + continue; + + if (packet.JmsMessage.Command != + CommandM.grab_image_) + { + log.Debug( $"Unexpected packet during live stream: cameraIdx={cameraIdx}, command={packet.JmsMessage.Command}"); + continue; + } + + if (packet.JmsMessage.Status != + MessageStatus.ACK) + { + log.Warn( $"Live frame returned NACK: cameraIdx={cameraIdx}, payload={packet.JmsMessage.Payload}"); + continue; + } + + ParsedImage parsed = packet.JmsMessage.getImage(); + + if (parsed == null || parsed.Encoding != ImageType.BASE_64) + { + continue; + } + + Image image = parsed.Image; + + if (image == null) + continue; + + DrawOverlay(image); + + OnImageReceived( + this, + cameraIdx, + image, + RoiConfiguration.ImageRotation, + 0, + 1); + } + } + catch (OperationCanceledException) + { + log.Debug( $"Live stream cancelled: cameraIdx={cameraIdx}"); + } + catch (TimeoutException exc) + { + log.Error( $"Live stream timeout: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, error={exc.Message}"); + } + catch (SocketException exc) + { + log.Error( $"Live stream socket error: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, socketError={exc.SocketErrorCode}, " + + $"error={exc.Message}"); + } + catch (Exception exc) + { + log.Error( $"Live stream exception: cameraIdx={cameraIdx}, error={exc.Message}", exc); + UiBridge.Bridge.OnImage( cameraIdx, null); + } + finally + { + /* + * Cleanup nesmie používať zrušený ct. + */ + if (stream != null && + reader != null) + { + if (streamStarted) + { + try + { + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.stop_stream_images_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Stop live stream failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + try + { + await TryCloseCameraAsync( + stream, + reader) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Live stream cleanup failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + try + { + stream?.Dispose(); + } + catch + { + } + + try + { + client?.Close(); + client?.Dispose(); + } + catch + { + } + + if (lockAcquired) + { + cameraOperationLock.Release(); + } + + log.Debug( $"Live stream finished: cameraIdx={cameraIdx}"); + } + } + + private void DrawOverlay(Image image) + { + if (image == null) + return; + + if (!showOverlayRect || overlayThickness <= 0) + return; + + using (Graphics g = Graphics.FromImage(image)) + using (Pen pen = new Pen(Color.Green, overlayThickness)) + { + g.DrawRectangle(pen, overlayRect); + } + } //public void OnMeasurementDataReceived(object sender, MeasuredDataEventArgs msrmtData) @@ -1552,12 +2681,16 @@ namespace TBF.Rig.Network.Camera.CJMS11 { try { - if (cameraWriter != null && cameraReader != null && cameraStream!=null && cameraStream.CanWrite) + if (cameraStream != null && cameraStream.CanWrite) { - cameraWriter.WriteLineAsync(CommandMEnum.GetVal(command)).Wait(); - cameraWriter.FlushAsync(); + string commandStr = CommandMEnum.GetVal(command) + "\n"; + byte[] bytes = Encoding.ASCII.GetBytes(commandStr); + + cameraStream.Write(bytes, 0, bytes.Length); + cameraStream.Flush(); } - }catch(Exception exc) + } + catch (Exception exc) { log.ErrorFormat("{0} SendCommand: {1}", Name, exc.Message); } @@ -1565,74 +2698,88 @@ namespace TBF.Rig.Network.Camera.CJMS11 // - private JmsPacket SendCommandAndWaitToAnswer(StreamWriter writer, StreamReader reader, CommandM command, string payload = null) + private async Task SendCommandAndWaitToAnswerAsync( + NetworkStream stream, + CameraLineReader reader, + CommandM command, + string payload = null, + int timeoutMs = 1000, + CancellationToken ct = default) +{ + await SendCommandAsync( stream, command, ct, payload).ConfigureAwait(false); + + try + { + for (int iReads = 0; iReads < 6; iReads++) + { + string responseAnswer = await reader.ReadLineAsync( timeoutMs, ct).ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(responseAnswer)) + continue; + + log.Debug( $"Received from camera: idx={cameraIdx}, expected={command}, length={responseAnswer.Length}, prefix={GetLogPrefix(responseAnswer, 200)}"); + + JmsPacket result; + + try + { + result = new JmsPacket(responseAnswer); + } + catch (Exception exc) + { + log.Warn( $"Cannot parse camera response: idx={cameraIdx}, length={responseAnswer.Length}, error={exc.Message}"); + continue; + } + + if (result.JmsMessage == null) + { + log.Warn( $"Parsed packet contains no JmsMessage: idx={cameraIdx}"); + continue; + } + + if (result.JmsMessage.Command == command) + { + return result; + } + + log.Debug( $"Unexpected response command: idx={cameraIdx}, expected={command}, received={result.JmsMessage.Command}. Reading next response."); + } + + log.Error( $"Expected camera response not received: idx={cameraIdx}, command={command}"); + return null; + } + catch (OperationCanceledException) + { + throw; + } + catch (TimeoutException) + { + throw; + } + catch (IOException ioEx) + { + log.Error( $"IO error while reading from camera: idx={cameraIdx}, command={command}, error={ioEx.Message}"); + return null; + } + catch (Exception exc) + { + log.Error( $"Error while reading from camera: idx={cameraIdx}, command={command}, error={exc.Message}", exc); + return null; + } +} + + private static string GetLogPrefix( + string value, + int maximumLength) { - // Send command - String command_str = CommandMEnum.GetVal(command); - if (payload != null && payload.Length > 0) - { - command_str += "=" + payload; - } + if (string.IsNullOrEmpty(value)) + return string.Empty; - command_str = command_str + " "; - writer.WriteLineAsync(command_str).Wait(); - Console.WriteLine($@"Command '{command_str}' sent."); + if (value.Length <= maximumLength) + return value; - JmsPacket result; - - string responseAnswer = ""; - try - { - int iReads = 0; - while (true) - { - //get config - var readLineAsync = reader.ReadLineAsync(); - var timeoutTaskRead = Task.Delay(TimeSpan.FromSeconds(1)); - var waitAny = Task.WhenAny(readLineAsync, timeoutTaskRead).Result; - if (waitAny == timeoutTaskRead) - { - log.Debug("Activation timeout."); - throw new TimeoutException("Activation timeout. No received response for command_CFG"); - } - - log.Debug(string.Format("received from camera: {0}", responseAnswer)); - responseAnswer = readLineAsync.Result; - - try - { - result = new JmsPacket(responseAnswer); - } - catch (Exception exc) - { - iReads++; - continue; - } - - if (result.JmsMessage.Command == command) - { - return result; - } - - if (iReads > 5) - { - log.Error($"Maximum Count of unexcepted answers excited!"); - break; - } - - iReads++; - } - } - catch (IOException ioEx) - { - log.Error($"Timeout or IO error while reading from camera: {ioEx.Message}"); - } - catch (Exception e) - { - log.Error(string.Format("Error while reading from camera: {0}", e.Message)); - } - - return null; + return value.Substring(0, maximumLength) + + "..."; } public void Start() @@ -1709,6 +2856,41 @@ namespace TBF.Rig.Network.Camera.CJMS11 public static event EventHandler ImagesCameraHandler; public static event EventHandler ImageCameraHandler; + + public static void OnImageReceived( + object sender, + int idxImage, + Image image, + int iImageIdx = 0, + int imageCount = 1) + { + if (image == null) + { + return; + } + + log.Info( $"Image received from camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); + + EventHandler handler = ImageCameraHandler; + + if (handler == null) + { + image.Dispose(); + return; + } + + try + { + handler( sender, new PromptReceivedImageEventArgs( idxImage, image)); + log.Info( $"ImageCameraHandler reached camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); + } + catch (Exception exc) + { + log.Error( $"ImageCameraHandler exception: cameraIdx={idxImage}, error={exc.Message}", exc); + image.Dispose(); + } + } + /// /// This method is called from within this class when /// a prompt string was received from the telnet server. @@ -1716,7 +2898,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 public static void OnImageReceived(object sender, int idxImage, Image image, ImageRotation imageRotation, int iImageIdx = 0, int imageCount = 1) { - log.Info("Image received"); + log.Info($"Image received from camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); if (null != ImageCameraHandler) { @@ -1726,7 +2908,8 @@ namespace TBF.Rig.Network.Camera.CJMS11 ImageUtils.Rotate(image, imageRotation); //Send image to bridge - ImagesCameraHandler(sender, new PromptReceivedImagesEventArgs(idxImage, image,iImageIdx, imageCount)); + ImageCameraHandler(sender, new PromptReceivedImageEventArgs(idxImage, image)); + log.Info($"ImageCameraHandler reached camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); } catch (Exception ex) { @@ -1735,7 +2918,684 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - + /// + /// This method is called from within this class when + /// a prompt string was received from the telnet server. + /// + public static void OnImagesReceived( + object sender, + int cameraIndex, + Image image, + int imageIndex, + int imageCount, + DateTimeOffset? frameTime) + { + if (image == null) + { + return; + } + + log.Info( $"Images received from camera: {cameraIndex}, imageIndex={imageIndex}, " + + $"imageCount={imageCount}, frameTime={frameTime:O}"); + + EventHandler handler = ImagesCameraHandler; + + if (handler == null) + { + image.Dispose(); + return; + } + + try + { + handler( sender, + new PromptReceivedImagesEventArgs( + cameraIndex, + imageIndex, + imageCount, + image, + frameTime)); + + log.Info( $"ImagesCameraHandler reached camera: {cameraIndex}, imageIndex={imageIndex}, " + + $"imageCount={imageCount}"); + } + catch (Exception exc) + { + log.Error( $"ImagesCameraHandler failed: cameraIdx={cameraIndex}, imageIndex={imageIndex}, " + + $"error={exc.Message}", exc); + image.Dispose(); + } + } + + private async Task ReadCameraLineAsync( + NetworkStream stream, + int timeoutMs, + CancellationToken ct) + { + await cameraReadLock.WaitAsync(ct); + + try + { + var line = new List(); + var buffer = new byte[1]; + + while (true) + { + Task readTask = stream.ReadAsync(buffer, 0, 1, ct); + Task timeoutTask = Task.Delay(timeoutMs, ct); + + Task completed = await Task.WhenAny(readTask, timeoutTask); + + if (completed == timeoutTask) + { + ct.ThrowIfCancellationRequested(); + throw new TimeoutException($"Camera {cameraIdx} read timeout after {timeoutMs} ms."); + } + + int read = await readTask; + + if (read == 0) + throw new IOException("Camera connection closed."); + + if (buffer[0] == '\n') + break; + + if (buffer[0] != '\r') + line.Add(buffer[0]); + } + + return Encoding.ASCII.GetString(line.ToArray()); + } + finally + { + cameraReadLock.Release(); + } + } + + private readonly object cameraReadSyncLock = new object(); + + private string ReadCameraLine(NetworkStream stream, int timeoutMs) + { + lock (cameraReadSyncLock) + { + stream.ReadTimeout = timeoutMs; + + var line = new List(); + + while (true) + { + int b = stream.ReadByte(); // tu funguje ReadTimeout + + if (b == -1) + throw new IOException("Camera connection closed."); + + if (b == '\n') + break; + + if (b != '\r') + line.Add((byte)b); + } + + return Encoding.ASCII.GetString(line.ToArray()); + } + } + + + private async Task SendCommandAsync(NetworkStream stream, CommandM command, CancellationToken ct, string payload = null) + { + string commandStr = CommandMEnum.GetVal(command); + + if (!string.IsNullOrEmpty(payload)) + { + commandStr += "=" + payload; + } + + //commandStr += " "; + byte[] bytes = Encoding.ASCII.GetBytes(commandStr + "\n"); + + //await cameraWriteLock.WaitAsync(); + + + log.Info($"Sending command: '{commandStr}'"); + await stream.WriteAsync(bytes, 0, bytes.Length); + await stream.FlushAsync(); + //stream.Write(bytes, 0, bytes.Length); + //stream.Flush(); + + //await stream.WriteLineAsync(commandStr); + //await stream.FlushAsync(); + log.Info($"Command sent: '{commandStr}'"); + + } + + + private async Task ReadCameraLineWithTimeout(NetworkStream stream, int timeoutMs) + { + var readTask = Task.Run(() => ReadCameraLine(stream, timeoutMs)); + var timeoutTask = Task.Delay(timeoutMs); + + var completed = await Task.WhenAny(readTask, timeoutTask); + + if (completed == timeoutTask) + { + try { stream.Close(); } catch { } + try { cameraTcpClient?.Close(); } catch { } + + throw new TimeoutException($"Camera read timeout after {timeoutMs} ms."); + } + + return await readTask; + } + + + //------------------------------ SEND PART -------------------------------------- + + public Task> StartSendImagesPreviewAsync( + int count, + int delayMs, + string taskId) + { + if (count <= 0) + { + throw new ArgumentOutOfRangeException( + nameof(count), + "Image count must be greater than zero."); + } + + if (delayMs < 0) + { + throw new ArgumentOutOfRangeException( + nameof(delayMs), + "Delay cannot be negative."); + } + + if (string.IsNullOrWhiteSpace(taskId)) + { + throw new ArgumentException( + "Task ID is required.", + nameof(taskId)); + } + + if (sendImagesTask != null && + !sendImagesTask.IsCompleted) + { + log.Warn( + $"Send images preview already running: " + + $"cameraIdx={cameraIdx}, taskId={taskId}"); + + return sendImagesTask; + } + + sendImagesCts?.Cancel(); + sendImagesCts?.Dispose(); + + sendImagesCts = + new CancellationTokenSource(); + + sendImagesTask = + SendImagesPreviewListenerAsync( + count, + delayMs, + taskId, + sendImagesCts.Token); + + return sendImagesTask; + } + + public void CancelSendImagesPreview() + { + try + { + sendImagesCts?.Cancel(); + } + catch (ObjectDisposedException) + { + } + } + + private async Task> SendImagesPreviewListenerAsync( + int requestedCount, + int delayMs, + string taskId, + CancellationToken ct) + { + bool lockAcquired = false; + TcpClient client = null; + NetworkStream stream = null; + CameraLineReader reader = null; + + var imagesByIndex = new Dictionary(); + + try + { + await cameraOperationLock.WaitAsync(ct).ConfigureAwait(false); + + lockAcquired = true; + + client = await ConnectCameraAsync( timeoutMs: 5000, ct: ct).ConfigureAwait(false); + stream = client.GetStream(); + + reader = new CameraLineReader( stream, 64 * 1024); + + /* + * Kamera musí byť pripravená. + */ + JmsPacket prepareAnswer = await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + + bool prepared = prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == MessageStatus.ACK; + + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == MessageStatus.NACK && + !string.IsNullOrEmpty( prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( "OPENED"); + + if (!prepared && !alreadyOpened) + { + throw new IOException( $"Prepare camera for send failed: cameraIdx={cameraIdx}, " + + $"answer={FormatPacketForLog(prepareAnswer)}"); + } + + var request = new SendImagesRequest { Count = requestedCount, Delay = delayMs, TaskId = taskId }; + string requestPayload = JsonConvert.SerializeObject( request, Formatting.None); + + log.Debug( $"Starting send images preview: cameraIdx={cameraIdx}, count={requestedCount}, " + + $"delay={delayMs}, taskId={taskId}"); + + /* + * Pri send_ neposielame cez + * SendCommandAndWaitToAnswerAsync(), + * pretože očakávame viac odpovedí. + */ + await SendCommandAsync( + stream, + CommandM.send_, + ct, + requestPayload) + .ConfigureAwait(false); + + /* + * Timeout musí zahŕňať plánovaný čas snímania. + * + * count=5, delay=2050: + * približne 4 * 2050 ms medzi prvým a posledným frame + * plus rezerva na prenos Base64 obrázkov. + */ + int totalTimeoutMs = CalculateSendTimeout( requestedCount, delayMs); + + using (var timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(ct)) + { + timeoutCts.CancelAfter(totalTimeoutMs); + + while (imagesByIndex.Count < requestedCount) + { + timeoutCts.Token.ThrowIfCancellationRequested(); + + string response = await reader.ReadLineAsync( 10000, timeoutCts.Token).ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(response)) + { + continue; + } + + JmsPacket packet; + + try + { + packet = new JmsPacket(response); + } + catch (Exception exc) + { + log.Warn( $"Cannot parse send response: cameraIdx={cameraIdx}, error={exc.Message}"); + continue; + } + + if (packet.JmsMessage == null) + { + continue; + } + + if (packet.JmsMessage.Command != CommandM.send_) + { + log.Debug( $"Unexpected packet during send: cameraIdx={cameraIdx}, command={packet.JmsMessage.Command}"); + continue; + } + + if (packet.JmsMessage.Status != MessageStatus.ACK) + { + log.Warn( $"Send image returned NACK: cameraIdx={cameraIdx}, payload={packet.JmsMessage.Payload}"); + continue; + } + + string payload = packet.JmsMessage.Payload; + + if (string.IsNullOrWhiteSpace(payload)) + { + continue; + } + + /* + * Posledný sumarizačný packet nemá + * pictureBase64 ani workerId. + */ + if (!PayloadContainsImage(payload)) + { + TryLogSendSummary( payload, cameraIdx); + continue; + } + + SendImagePayload imagePayload; + + try + { + imagePayload = JsonConvert.DeserializeObject(payload); + } + catch (Exception exc) + { + log.Warn( $"Cannot deserialize send image: cameraIdx={cameraIdx}, error={exc.Message}"); + continue; + } + + if (imagePayload == null || string.IsNullOrWhiteSpace( imagePayload.PictureBase64)) + { + continue; + } + + if (!string.Equals( imagePayload.Status, "SUCCESSFUL", StringComparison.OrdinalIgnoreCase)) + { + log.Warn( $"Send image status is not successful: cameraIdx={cameraIdx}, " + + $"workerId={imagePayload.WorkerId}, status={imagePayload.Status}"); + continue; + } + + /* + * workerId je podľa logu 1..count. + */ + int imageIndex = imagePayload.WorkerId; + + if (imageIndex <= 0) + { + log.Warn( $"Invalid send image index: cameraIdx={cameraIdx}, workerId={imageIndex}"); + continue; + } + + /* + * Duplicitný packet ignorujeme. + */ + if (imagesByIndex.ContainsKey( imageIndex)) + { + log.Warn( $"Duplicate send image: cameraIdx={cameraIdx}, workerId={imageIndex}"); + continue; + } + + Image image = DecodeBase64Image( imagePayload.PictureBase64); + + if (!IsValidGrabbedImage(image)) + { + image?.Dispose(); + + log.Warn( + $"Invalid send image: " + + $"cameraIdx={cameraIdx}, " + + $"workerId={imageIndex}"); + + continue; + } + + DateTimeOffset? frameTime = + ParseFrameTime( + imagePayload.FrameTime); + + /* + * Úpravy obrázka dokončíme ešte predtým, + * než ho odovzdáme UI. + */ + ImageUtils.Rotate( + image, + RoiConfiguration.ImageRotation); + + DrawOverlay(image); + + var timedImage = + new TimedCameraImage + { + Index = imageIndex, + TaskId = + imagePayload.TaskId, + FrameTime = frameTime, + FrameTimeMillis = + imagePayload.FrameTimeMillis, + FrameGap = + imagePayload.FrameGap, + Image = image + }; + + imagesByIndex.Add( + imageIndex, + timedImage); + + /* + * UI dostane klon. + * Originál zostáva vo výslednom zozname. + */ + Image imageForUi = CloneImageToBitmap(image); + + OnImagesReceived( + this, + cameraIdx, + imageForUi, + imageIndex, + requestedCount, + frameTime); + + log.Debug( $"Send image received: cameraIdx={cameraIdx}, workerId={imageIndex}, " + + $"received={imagesByIndex.Count}/{requestedCount}, frameTime={frameTime:O}, " + + $"size={image.Width}x{image.Height}"); + } + } + + List result = + imagesByIndex + .OrderBy(x => x.Key) + .Select(x => x.Value) + .ToList(); + + log.Debug( + $"Send images preview completed: " + + $"cameraIdx={cameraIdx}, " + + $"received={result.Count}, " + + $"taskId={taskId}"); + + return result; + } + catch (OperationCanceledException) + { + foreach (TimedCameraImage image + in imagesByIndex.Values) + { + image.Image?.Dispose(); + } + + log.Debug( + $"Send images preview cancelled: " + + $"cameraIdx={cameraIdx}, " + + $"taskId={taskId}"); + + throw; + } + catch (Exception exc) + { + foreach (TimedCameraImage image + in imagesByIndex.Values) + { + image.Image?.Dispose(); + } + + log.Error( + $"Send images preview failed: " + + $"cameraIdx={cameraIdx}, " + + $"taskId={taskId}, " + + $"error={exc.Message}", + exc); + + UiBridge.Bridge.OnImage( + cameraIdx, + null); + + throw; + } + finally + { + if (stream != null && + reader != null) + { + try + { + await TryCloseCameraAsync( + stream, + reader) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Send preview cleanup failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + try + { + stream?.Dispose(); + } + catch + { + } + + try + { + client?.Close(); + client?.Dispose(); + } + catch + { + } + + if (lockAcquired) + { + cameraOperationLock.Release(); + } + } + } + + private static int CalculateSendTimeout( + int count, + int delayMs) + { + /* + * Medzi count obrázkami je count - 1 intervalov. + * Pridáme 15 sekúnd rezervu na capture, + * Base64 a sieťový prenos. + */ + long captureDuration = + (long)Math.Max(0, count - 1) * + delayMs; + + long timeout = + captureDuration + 15000L; + + return timeout > int.MaxValue + ? int.MaxValue + : (int)timeout; + } + + private static Image DecodeBase64Image( string pictureBase64) + { + if (string.IsNullOrWhiteSpace( pictureBase64)) + { + return null; + } + + try + { + byte[] imageBytes = Convert.FromBase64String( pictureBase64); + + using (var stream = new MemoryStream(imageBytes)) + using (Image decoded = Image.FromStream( stream, useEmbeddedColorManagement: false, validateImageData: true)) + { + /* + * Bitmap odpojí výsledok od MemoryStream. + */ + return new Bitmap(decoded); + } + } + catch + { + return null; + } + } + + private static bool PayloadContainsImage( string payload) + { + if (string.IsNullOrWhiteSpace(payload)) + { + return false; + } + + return payload.IndexOf( "\"pictureBase64\"", StringComparison.OrdinalIgnoreCase) >= 0; + } + + private static DateTimeOffset? ParseFrameTime( string value) + { + if (string.IsNullOrWhiteSpace(value)) + { + return null; + } + + DateTimeOffset parsed; + + if (DateTimeOffset.TryParse( + value, + System.Globalization.CultureInfo.InvariantCulture, + System.Globalization.DateTimeStyles.RoundtripKind, + out parsed)) + { + return parsed; + } + + return null; + } + + private static void TryLogSendSummary( string payload, int cameraIdx) + { + try + { + SendSummaryPayload summary = JsonConvert.DeserializeObject(payload); + + if (summary == null) + { + return; + } + + log.Debug( $"Send summary received: cameraIdx={cameraIdx}, picCount={summary.PictureCount}, " + + $"delay={summary.Delay}, timeStamp={summary.TimeStamp}"); + } + catch (Exception exc) + { + log.Debug( $"Payload is not a send summary: cameraIdx={cameraIdx}, error={exc.Message}"); + } + } diff --git a/TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs b/TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs new file mode 100644 index 000000000..da5fd2919 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs @@ -0,0 +1,154 @@ +using System; +using System.IO; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace TBF.Rig.Network.Camera.CJMS11 +{ + internal sealed class CameraLineReader + { + private readonly Stream stream; + private readonly byte[] receiveBuffer; + + private int bufferStart; + private int bufferEnd; + + public CameraLineReader( + Stream stream, + int bufferSize = 64 * 1024) + { + if (stream == null) + throw new ArgumentNullException(nameof(stream)); + + if (!stream.CanRead) + throw new ArgumentException( + "Stream must be readable.", + nameof(stream)); + + if (bufferSize <= 0) + throw new ArgumentOutOfRangeException( + nameof(bufferSize)); + + this.stream = stream; + receiveBuffer = new byte[bufferSize]; + } + + public async Task ReadLineAsync( + int timeoutMs, + CancellationToken cancellationToken) + { + if (timeoutMs <= 0) + throw new ArgumentOutOfRangeException( + nameof(timeoutMs)); + + using (var lineBuffer = new MemoryStream()) + { + while (true) + { + int newLineIndex = FindNewLine(); + + if (newLineIndex >= 0) + { + int count = newLineIndex - bufferStart; + + if (count > 0) + { + lineBuffer.Write( + receiveBuffer, + bufferStart, + count); + } + + bufferStart = newLineIndex + 1; + + return ConvertLineToString(lineBuffer); + } + + if (bufferStart < bufferEnd) + { + lineBuffer.Write( + receiveBuffer, + bufferStart, + bufferEnd - bufferStart); + } + + bufferStart = 0; + bufferEnd = 0; + + int read = await ReadChunkAsync( + timeoutMs, + cancellationToken) + .ConfigureAwait(false); + + if (read == 0) + { + throw new IOException( + "Camera connection was closed."); + } + + bufferStart = 0; + bufferEnd = read; + } + } + } + + private int FindNewLine() + { + for (int i = bufferStart; i < bufferEnd; i++) + { + if (receiveBuffer[i] == (byte)'\n') + return i; + } + + return -1; + } + + private async Task ReadChunkAsync( + int timeoutMs, + CancellationToken cancellationToken) + { + using (var timeoutCts = + CancellationTokenSource.CreateLinkedTokenSource( + cancellationToken)) + { + timeoutCts.CancelAfter(timeoutMs); + + try + { + return await stream.ReadAsync( + receiveBuffer, + 0, + receiveBuffer.Length, + timeoutCts.Token) + .ConfigureAwait(false); + } + catch (OperationCanceledException) + when (!cancellationToken.IsCancellationRequested) + { + throw new TimeoutException( + $"Camera read timeout after {timeoutMs} ms."); + } + } + } + + private static string ConvertLineToString( + MemoryStream lineBuffer) + { + int length = checked((int)lineBuffer.Length); + + if (length == 0) + return string.Empty; + + byte[] data = lineBuffer.GetBuffer(); + + if (data[length - 1] == (byte)'\r') + length--; + + return Encoding.ASCII.GetString( + data, + 0, + length); + } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs b/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs index e6f71ab5d..af7048168 100644 --- a/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs +++ b/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs @@ -1,198 +1,1123 @@ /// /// Copyright (c) 2017 Sensus Slovensko a.s. /// + using System; using System.Collections.Generic; -using System.Diagnostics; using System.Drawing; -using log4net; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading.Tasks; using Common; using Config.Entities; +using log4net; +using TBF.Rig.Network.Camera.CJMS11.POJO; using TBF.Rig.Network.Telnet; -using System.IO; -using System.Threading.Tasks; -using System.Windows.Forms; namespace TBF.Rig.Network.Camera.CJMS11 { public class GrabImagesOp : IOperation { - /// TODO: Implement support for grabbing multiple images, now imgFileNames.Lenght should be 1 - private static readonly ILog log = LogManager.GetLogger(typeof(GrabImagesOp)); - public override string ToString() { return string.Format("GrabImageOp()"); } - readonly Camera camera; - - readonly string[] imgFileNames; - readonly bool blackAndWhite; - readonly bool lowResolution; - readonly ImageRotation imageRotation; - - string command; - bool grabImageCommandSent; - string response; - bool grabPassed; - bool grabFailed; - bool transferringGrabbedImage; - - Image grabedImage; - Dictionary grabedImages = new Dictionary(); - - - /// - /// Events: Event.None or Event.Error - /// - /// CLP1611.Camera reference - public GrabImagesOp(Camera camera, string[] imgFileNames, bool blackAndWhite, bool lowResolution, ImageRotation imageRotation) + private enum GrabOperationMode { - /// TODO: Implement support for grabbing multiple images, now imgFileNames.Lenght should be 1 - + None, + SingleImage, + SendImages + } + + + private readonly Camera camera; + private readonly string[] imgFileNames; + private readonly bool blackAndWhite; + private readonly bool lowResolution; + private readonly ImageRotation imageRotation; + + private readonly object imageSync = new object(); + + private bool grabImageCommandSent; + private bool transferringGrabbedImage; + + private GrabOperationMode operationMode; + + private Image grabedImage; + + private readonly Dictionary grabedImages = new Dictionary(); + + private Task grabImageTask; + private Task> sendImagesTask; + private Task saveImageTask; + + private IReadOnlyList timedCameraImages; + private readonly List savedFileNames = new List(); + + public override string ToString() { return "GrabImageOp()"; } + + public GrabImagesOp( + Camera camera, + string[] imgFileNames, + bool blackAndWhite, + bool lowResolution, + ImageRotation imageRotation) + { + if (camera == null) + { + throw new ArgumentNullException(nameof(camera)); + } + this.camera = camera; - //this.telnet = camera.Telnet; this.imgFileNames = imgFileNames; this.blackAndWhite = blackAndWhite; this.lowResolution = lowResolution; this.imageRotation = imageRotation; - grabImageCommandSent = false; - transferringGrabbedImage = false; - - /// image incomming event - if (camera.DebugLevel == DebugMode.Normal || camera.DebugLevel == DebugMode.DetectedOn) - { - Camera.ImageCameraHandler += ImageReceived; - } - //TODO BUMI improve by simulate image - Camera.ImageCameraHandler += ImageReceived; - - /// inmages incomming event rotation - if (camera.DebugLevel == DebugMode.Normal || camera.DebugLevel == DebugMode.DetectedOn) - { - Camera.ImagesCameraHandler += ImagesReceived; - } - //TODO BUMI improve by simulate image - Camera.ImagesCameraHandler += ImagesReceived; - } - - void PromptReceived(object sndr, PromptReceivedJMSEventArgs a) - { - response = a.Response; - } - - void ImageReceived(object sndr, PromptReceivedImageEventArgs a) - { - if(a.idxCamera != camera.CameraIdx) return; - grabedImage = a.image; - grabPassed = true; + SubscribeEvents(); } - void ImagesReceived(object sndr, PromptReceivedImagesEventArgs a) + + + private void SubscribeEvents() { - if(a.idxCamera != camera.CameraIdx) return; - grabedImage = a.image; //upgraded image common - grabedImages[a.idxImage] = a.image; // stored image from sent to list of images - grabPassed = true; + Camera.ImageCameraHandler -= ImageReceived; + Camera.ImageCameraHandler += ImageReceived; + + Camera.ImagesCameraHandler -= ImagesReceived; + Camera.ImagesCameraHandler += ImagesReceived; } + private void ImageReceived( + object sender, + PromptReceivedImageEventArgs args) + { + if (args == null || args.idxCamera != camera.CameraIdx || args.image == null) + { + return; + } + + /* + * Tento obrázok používame iba pre kompatibilitu + * s existujúcim eventovým mechanizmom. + * + * Hlavným zdrojom výsledku je Task. + */ + lock (imageSync) + { + grabedImage = args.image; + } + } + + private void ImagesReceived( object sender, PromptReceivedImagesEventArgs args) + { + if (args == null || args.idxCamera != camera.CameraIdx || args.image == null) + { + return; + } + + /* + * Náhľadové obrázky z eventu nebudeme ukladať + * na disk. Originálne obrázky dostaneme vo + * výsledku sendImagesTask. + */ + lock (imageSync) + { + grabedImage = args.image; + grabedImages[args.idxImage] = args.image; + } + } public void Start() { + SubscribeEvents(); + grabImageCommandSent = false; transferringGrabbedImage = false; - grabPassed = false; - grabedImage = null; - grabedImages.Clear(); - if ((imgFileNames != null) && (imgFileNames.Length > 0) && File.Exists(imgFileNames[0])) - { - /// - /// An image specified, (1) delete previous image, (2) check if this is a simulation - /// - File.Delete(imgFileNames[0]); + operationMode = GrabOperationMode.None; - /* if (camera.CameraCfg.DebugLevel == DebugMode.Simulate || camera.CameraCfg.DebugLevel == DebugMode.DetectedOff) - { - /// - /// Camera is in simulation mode => create a simulated image - /// - File.Copy(string.Format("{0}\\Pictures\\sample.jpg", Program.ExecutableDir), imgFileNames[0]); - }*/ - } + grabImageTask = null; + sendImagesTask = null; + saveImageTask = null; + + timedCameraImages = null; + + lock (imageSync) + { + grabedImage = null; + grabedImages.Clear(); + } + + savedFileNames.Clear(); + + DeletePreviousOutputFiles(); } + public Event Run() { - if ((imgFileNames == null) || (imgFileNames.Length < 1) || (imgFileNames[0] == null)) + if (!HasValidOutputFileName()) { - /// - /// No images to be grabbed => Done - /// - return Event.GrabPassed; + log.Warn( + $"No output image file configured: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabPassed; } - /*else if (camera.CameraCfg.DebugLevel == DebugMode.Simulate || - camera.CameraCfg.DebugLevel == DebugMode.DetectedOff) - { - /// - /// Camera is in simulation mode => create a simulated image and complete - /// - return Event.GrabPassed; - }*/ - else if (camera.IsGrabImageListenerThreadAlive) - { - return Event.CameraBusy; - } - else if (!grabImageCommandSent) + + /* + * 1. Spustenie príslušnej operácie. + */ + if (!grabImageCommandSent) { - /// - /// Normal operation, no command sent yet => (1) wait until telnet state = Inactive, (2) send a command - /// - camera.StartGrabImageListener(); - grabImageCommandSent = true; + return StartGrabOperation(); + } + + /* + * 2. Spracovanie podľa režimu. + */ + switch (operationMode) + { + case GrabOperationMode.SingleImage: + return RunSingleImageMode(); + + case GrabOperationMode.SendImages: + return RunSendImagesMode(); + + default: + log.Error( + $"Grab operation mode was not selected: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + } + + private Event StartGrabOperation() + { + grabImageCommandSent = true; + + try + { + int requestedImageCount = + GetRequestedImageCount(); + + if (requestedImageCount <= 1) + { + operationMode = + GrabOperationMode.SingleImage; + + log.Debug( + $"Starting single asynchronous grab: " + + $"cameraIdx={camera.CameraIdx}"); + + grabImageTask = + camera.StartGrabImageListenerAsync( + retryUntilValidImage: true, + maxAttempts: 5, + retryDelayMs: 200); + } + else + { + operationMode = + GrabOperationMode.SendImages; + + int delayMs = + GetRequestedDelayMs(); + + string taskId = + CreateSendTaskId(); + + log.Debug( + $"Starting send images operation: " + + $"cameraIdx={camera.CameraIdx}, " + + $"count={requestedImageCount}, " + + $"delayMs={delayMs}, " + + $"taskId={taskId}"); + + sendImagesTask = + camera.StartSendImagesPreviewAsync( + count: requestedImageCount, + delayMs: delayMs, + taskId: taskId); + } + return Event.CameraBusy; } - else if (grabPassed) + catch (Exception exc) { - /// - /// Normal operation, grab passed => transfer/transferring the image - - - if (transferringGrabbedImage) - { - /// Grab passed and image transfer is in progress - return Event.GrabPassed; - } - else if (camera.IsSaveImageListenerThreadAlive) - { - /// Wait until the previous image transfer completes - return Event.CameraBusy; - } - else //if (0 == camera.DownloadFile(blackAndWhite ? "grabbed.jpg" : "grabbed.bmp", imgFileNames[0])) - { - camera.StartSaveImageToFileListener(grabedImage, imgFileNames[0]); - /// File transfer successfully started - transferringGrabbedImage = true; - return Event.GrabPassed; - } - } - else - { - /// - /// Normal operation, grab failed => there in no image to transfer - /// + log.Error( + $"Cannot start image operation: " + + $"cameraIdx={camera.CameraIdx}, " + + $"mode={operationMode}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + return Event.GrabFailed; } - } + private Event RunSingleImageMode() + { + if (grabImageTask == null) + { + log.Error( + $"Single grab task was not created: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!grabImageTask.IsCompleted) + { + return Event.CameraBusy; + } + + if (grabImageTask.IsCanceled) + { + log.Warn( + $"Single grab task was cancelled: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (grabImageTask.IsFaulted) + { + log.Error( + $"Single grab task failed: " + + $"cameraIdx={camera.CameraIdx}", + grabImageTask.Exception?.Flatten()); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!transferringGrabbedImage) + { + Image imageToSave; + + try + { + imageToSave = + grabImageTask + .GetAwaiter() + .GetResult(); + } + catch (Exception exc) + { + log.Error( + $"Cannot obtain grabbed image: " + + $"cameraIdx={camera.CameraIdx}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (imageToSave == null) + { + log.Error( + $"Single grab completed without image: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + lock (imageSync) + { + grabedImage = imageToSave; + } + + string outputFileName = + imgFileNames[0]; + + try + { + saveImageTask = + camera.StartSaveImageToFileAsync( + imageToSave, + outputFileName); + + savedFileNames.Clear(); + savedFileNames.Add( + outputFileName); + + transferringGrabbedImage = true; + } + catch (Exception exc) + { + log.Error( + $"Cannot start single image save: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file={outputFileName}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + + return Event.GrabFailed; + } + + return Event.CameraBusy; + } + + return CheckSaveTaskAndFinish(); + } + + + + private Event RunSendImagesMode() + { + if (sendImagesTask == null) + { + log.Error( + $"Send images task was not created: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!sendImagesTask.IsCompleted) + { + return Event.CameraBusy; + } + + if (sendImagesTask.IsCanceled) + { + log.Warn( + $"Send images task was cancelled: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (sendImagesTask.IsFaulted) + { + log.Error( + $"Send images task failed: " + + $"cameraIdx={camera.CameraIdx}", + sendImagesTask.Exception?.Flatten()); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!transferringGrabbedImage) + { + try + { + timedCameraImages = + sendImagesTask + .GetAwaiter() + .GetResult(); + } + catch (Exception exc) + { + log.Error( + $"Cannot obtain send image results: " + + $"cameraIdx={camera.CameraIdx}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (timedCameraImages == null || + timedCameraImages.Count == 0) + { + log.Error( + $"Send operation returned no images: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + int requestedCount = + GetRequestedImageCount(); + + if (timedCameraImages.Count != + requestedCount) + { + log.Error( + $"Send operation returned unexpected image count: " + + $"cameraIdx={camera.CameraIdx}, " + + $"requested={requestedCount}, " + + $"received={timedCameraImages.Count}"); + + DisposeTimedImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + IReadOnlyList + orderedImages = + timedCameraImages + .OrderBy(image => image.Index) + .ToList(); + + try + { + /* + * Camera.StartSaveImageToFileAsync používa + * jeden interný save task, preto viac + * obrázkov uložíme sekvenčne v jednom + * samostatnom tasku. + */ + saveImageTask = + Task.Run( + () => SaveTimedImages( + orderedImages)); + + transferringGrabbedImage = true; + } + catch (Exception exc) + { + log.Error( + $"Cannot start send images save task: " + + $"cameraIdx={camera.CameraIdx}, " + + $"error={exc.Message}", + exc); + + DisposeTimedImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + return Event.CameraBusy; + } + + return CheckSaveTaskAndFinish(); + } + + private void SaveTimedImages( IReadOnlyList images) + { + if (images == null) + { + throw new ArgumentNullException(nameof(images)); + } + + if (images.Count == 0) + { + throw new ArgumentException( "No timed camera images were provided.", nameof(images)); + } + + if (!HasValidOutputFileName()) + { + throw new InvalidOperationException( "No base output image file name is configured."); + } + + savedFileNames.Clear(); + + IReadOnlyList orderedImages = + images + .Where(image => image != null) + .OrderBy(image => image.Index) + .ToList(); + + if (orderedImages.Count != images.Count) + { + throw new InvalidOperationException( $"One or more timed camera images are null. cameraIdx={camera.CameraIdx}, " + + $"expected={images.Count}, valid={orderedImages.Count}"); + } + + log.Debug( $"Starting timed images save: cameraIdx={camera.CameraIdx}, imagesCount={orderedImages.Count}, " + + $"baseFile='{imgFileNames[0]}'"); + + foreach (TimedCameraImage timedImage in orderedImages) + { + if (timedImage.Image == null) + { + throw new InvalidOperationException( $"Timed camera image contains no image data: " + + $"cameraIdx={camera.CameraIdx}, imageIndex={timedImage.Index}, frameTime={timedImage.FrameTime:O}"); + } + + /* + * Každý obrázok uložíme pod unikátnym názvom + * obsahujúcim index obrázka a časovú značku. + */ + string timedFileName = CreateTimedImageFileName( timedImage, orderedImages.Count); + + log.Debug( $"Saving timed camera image: cameraIdx={camera.CameraIdx}, imageIndex={timedImage.Index}, " + + $"frameTime={timedImage.FrameTime:O}, file='{timedFileName}'"); + + camera.SaveImageToFile( + timedImage.Image, + timedFileName); + + savedFileNames.Add( + timedFileName); + + log.Debug( $"Timed camera image saved successfully: cameraIdx={camera.CameraIdx}, " + + $"imageIndex={timedImage.Index}, file='{timedFileName}'"); + + /* + * Prvý obrázok uložíme ešte raz pod pôvodným názvom. + * + * Tento súbor používa existujúci dialóg cez + * startImages[] alebo endImages[]. + * + * Napríklad: + * TestAdvance-1-start.bmp + */ + if (timedImage.Index == 1) + { + string compatibilityFileName = + imgFileNames[0]; + + log.Debug($"Saving first timed image under compatibility name: cameraIdx={camera.CameraIdx}, " + + $"imageIndex={timedImage.Index}, frameTime={timedImage.FrameTime:O}, file='{compatibilityFileName}'"); + + camera.SaveImageToFile(timedImage.Image, compatibilityFileName); + savedFileNames.Add(compatibilityFileName); + + log.Debug($"First timed image saved under compatibility name: cameraIdx={camera.CameraIdx}, " + + $"imageIndex={timedImage.Index}, file='{compatibilityFileName}'"); + } + } + + log.Debug( + $"Timed images save completed: cameraIdx={camera.CameraIdx}, receivedImages={orderedImages.Count}, " + + $"savedFiles={savedFileNames.Count}"); + } + + private Event CheckSaveTaskAndFinish() + { + if (saveImageTask == null) + { + log.Error( $"Save image task was not created: cameraIdx={camera.CameraIdx}, mode={operationMode}"); + FinishOperation(); + return Event.GrabFailed; + } + + if (!saveImageTask.IsCompleted) + { + return Event.CameraBusy; + } + + if (saveImageTask.IsCanceled) + { + log.Warn( $"Save image task was cancelled: cameraIdx={camera.CameraIdx}, mode={operationMode}"); + + DisposeOperationImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + if (saveImageTask.IsFaulted) + { + log.Error( $"Save image task failed: cameraIdx={camera.CameraIdx}, mode={operationMode}", + saveImageTask.Exception?.Flatten()); + + DisposeOperationImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + bool allFilesSaved = VerifySavedFiles(); + + if (allFilesSaved) + { + log.Debug( $"Image operation completed successfully: cameraIdx={camera.CameraIdx}, " + + $"mode={operationMode}, savedFiles={savedFileNames.Count}"); + } + else + { + log.Error( $"One or more image files were not saved: cameraIdx={camera.CameraIdx}, mode={operationMode}"); + } + + DisposeOperationImages(); + FinishOperation(); + + return allFilesSaved + ? Event.GrabPassed + : Event.GrabFailed; + } + + private bool VerifySavedFiles() + { + if (savedFileNames.Count == 0) + { + return false; + } + + foreach (string fileName + in savedFileNames) + { + try + { + if (string.IsNullOrWhiteSpace(fileName) || + !File.Exists(fileName)) + { + return false; + } + + var fileInfo = + new FileInfo(fileName); + + if (fileInfo.Length <= 0) + { + return false; + } + } + catch (Exception exc) + { + log.Error( + $"Cannot verify saved image: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file={fileName}, " + + $"error={exc.Message}", + exc); + + return false; + } + } + + return true; + } + + private string CreateTimedImageFileName( + TimedCameraImage timedImage, + int totalImageCount) + { + if (timedImage == null) + { + throw new ArgumentNullException(nameof(timedImage)); + } + + if (!HasValidOutputFileName()) + { + throw new InvalidOperationException( + "No base output image file name is configured."); + } + + int imagePosition = timedImage.Index; + + if (imagePosition <= 0) + { + throw new InvalidOperationException( + $"Invalid image position: {imagePosition}."); + } + + // Prvý obrázok musí zostať pod pôvodným názvom, + // pretože tento názov používa startImages/endImages. + if (imagePosition == 1) + { + return imgFileNames[0]; + } + + string configuredFileName = imgFileNames[0]; + + string directory = + Path.GetDirectoryName(configuredFileName); + + string baseName = + Path.GetFileNameWithoutExtension(configuredFileName); + + string extension = + Path.GetExtension(configuredFileName); + + if (string.IsNullOrWhiteSpace(extension)) + { + extension = ".png"; + } + + DateTime timestampUtc = + timedImage.FrameTime.HasValue + ? timedImage.FrameTime.Value.UtcDateTime + : DateTime.UtcNow; + + string timestampText = + timestampUtc.ToString( + "yyyyMMdd_HHmmss_fff", + CultureInfo.InvariantCulture); + + int digits = Math.Max( + 2, + totalImageCount.ToString( + CultureInfo.InvariantCulture).Length); + + string indexText = + imagePosition.ToString( + "D" + digits, + CultureInfo.InvariantCulture); + + string newFileName = + $"{baseName}_img{indexText}_{timestampText}{extension}"; + + return string.IsNullOrWhiteSpace(directory) + ? newFileName + : Path.Combine(directory, newFileName); + } + + private string GetConfiguredFileName( + int zeroBasedIndex) + { + if (imgFileNames != null && + zeroBasedIndex >= 0 && + zeroBasedIndex < imgFileNames.Length && + !string.IsNullOrWhiteSpace( + imgFileNames[zeroBasedIndex])) + { + return imgFileNames[zeroBasedIndex]; + } + + /* + * Ak nie je pripravený názov pre každý obrázok, + * použijeme prvý názov ako základ. + */ + return imgFileNames[0]; + } + + private int GetRequestedImageCount() + { + var roi = camera.CamRoi; + + if (roi == null) + { + return 1; + } + + return Math.Max(1, roi.RoiPicCount); + } + + private int GetRequestedDelayMs() + { + const int MinDelayMs = 500; + + var roi = camera.CamRoi; + + if (roi == null) + { + return MinDelayMs; + } + + int configuredDelay = roi.RoiDeltaTimeMs; + + if (configuredDelay < MinDelayMs) + { + log.Warn( $"Configured ROI delay {configuredDelay} ms is below minimum. Using {MinDelayMs} ms instead."); + } + + return Math.Max(MinDelayMs, configuredDelay); + } + + private string CreateSendTaskId() + { + /* + * Timestamp + kamera + krátka časť GUID. + * ID je čitateľné a zároveň odolné voči + * kolíziám pri rýchlom opakovaní. + */ + string timestamp = DateTime.UtcNow.ToString( "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture); + + string uniquePart = Guid.NewGuid() .ToString("N") .Substring(0, 8); + + return $"{timestamp}_cam{camera.CameraIdx}_" + uniquePart; + } + + private bool HasValidOutputFileName() + { + return + imgFileNames != null && + imgFileNames.Length > 0 && + !string.IsNullOrWhiteSpace( + imgFileNames[0]); + } + + + + + + + + public void Stop() { - //if (camera.CameraCfg.DebugLevel == DebugMode.Simulate) return; - - if (camera.IsGrabImageListenerThreadAlive) + try { - camera.SetStopGrabImageListenerFlag(); + switch (operationMode) + { + case GrabOperationMode.SingleImage: + camera.CancelGrabImage(); + break; + + case GrabOperationMode.SendImages: + camera.CancelSendImagesPreview(); + break; + } + } + catch (Exception exc) + { + log.Warn( $"Cancel image operation failed: cameraIdx={camera.CameraIdx}, mode={operationMode}, " + + $"error={exc.Message}"); + } + finally + { + FinishOperation(); } } + + private void FinishOperation() + { + UnsubscribeEvents(); + } + + private void UnsubscribeEvents() + { + Camera.ImageCameraHandler -= ImageReceived; + Camera.ImagesCameraHandler -= ImagesReceived; + } + + private static string AppendTimestampToFileName( + string originalFileName, + DateTime timestamp) + { + if (string.IsNullOrWhiteSpace(originalFileName)) + { + throw new ArgumentException( + "File name is required.", + nameof(originalFileName)); + } + + string directory = + Path.GetDirectoryName(originalFileName); + + string fileNameWithoutExtension = + Path.GetFileNameWithoutExtension(originalFileName); + + string extension = + Path.GetExtension(originalFileName); + + string timestampText = + timestamp + .ToUniversalTime() + .ToString( + "yyyyMMdd_HHmmss_fff", + System.Globalization.CultureInfo.InvariantCulture); + + string newFileName = + $"{fileNameWithoutExtension}_{timestampText}{extension}"; + + return string.IsNullOrWhiteSpace(directory) + ? newFileName + : Path.Combine(directory, newFileName); + } + + + private void DisposeOperationImages() + { + if (operationMode == + GrabOperationMode.SendImages) + { + DisposeTimedImages(); + return; + } + + Image imageToDispose = null; + + lock (imageSync) + { + imageToDispose = grabedImage; + grabedImage = null; + } + + try + { + imageToDispose?.Dispose(); + } + catch + { + } + } + + private void DisposeTimedImages() + { + if (timedCameraImages == null) + { + return; + } + + foreach (TimedCameraImage timedImage + in timedCameraImages) + { + try + { + timedImage?.Image?.Dispose(); + } + catch + { + } + } + + timedCameraImages = null; + } + + private void DeletePreviousOutputFiles() + { + if (!HasValidOutputFileName()) + { + return; + } + + var filesToDelete = new HashSet( + StringComparer.OrdinalIgnoreCase); + + foreach (string configuredFileName in imgFileNames) + { + if (string.IsNullOrWhiteSpace(configuredFileName)) + { + continue; + } + + string fullConfiguredFileName; + + try + { + fullConfiguredFileName = + Path.GetFullPath(configuredFileName); + } + catch (Exception exc) + { + log.Warn( + $"Invalid configured image file name: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file='{configuredFileName}', " + + $"error={exc.Message}"); + + continue; + } + + string directory = + Path.GetDirectoryName(fullConfiguredFileName); + + string baseName = + Path.GetFileNameWithoutExtension( + fullConfiguredFileName); + + string extension = + Path.GetExtension( + fullConfiguredFileName); + + if (string.IsNullOrWhiteSpace(directory) || + string.IsNullOrWhiteSpace(baseName)) + { + continue; + } + + if (!Directory.Exists(directory)) + { + log.Debug( + $"Image output directory does not exist; " + + $"nothing to delete: " + + $"cameraIdx={camera.CameraIdx}, " + + $"directory='{directory}'"); + + continue; + } + + /* + * Pôvodný kompatibilný súbor: + * + * TestAdvance-1-start.bmp + */ + filesToDelete.Add( + fullConfiguredFileName); + + /* + * Časované súbory: + * + * TestAdvance-1-start_img01_20260715_120000_100.bmp + * TestAdvance-1-start_img02_20260715_120000_600.bmp + * + * Časovú značku neanalyzujeme. + * Hľadáme podľa stabilného prefixu názvu. + */ + string searchPattern = + $"{baseName}_img*{extension}"; + + try + { + foreach (string foundFile in + Directory.GetFiles( + directory, + searchPattern, + SearchOption.TopDirectoryOnly)) + { + filesToDelete.Add( + Path.GetFullPath(foundFile)); + } + } + catch (Exception exc) + { + log.Warn( + $"Cannot search previous timed images: " + + $"cameraIdx={camera.CameraIdx}, " + + $"directory='{directory}', " + + $"pattern='{searchPattern}', " + + $"error={exc.Message}"); + } + } + + log.Debug( + $"Previous image files found for deletion: " + + $"cameraIdx={camera.CameraIdx}, " + + $"count={filesToDelete.Count}"); + + foreach (string fileName in filesToDelete) + { + try + { + if (!File.Exists(fileName)) + { + continue; + } + + File.Delete(fileName); + + log.Debug( + $"Previous image file deleted: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file='{fileName}'"); + } + catch (Exception exc) + { + log.Warn( + $"Cannot delete previous image file: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file='{fileName}', " + + $"error={exc.Message}"); + } + } + } + } -} +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs b/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs index 6bccf0ad7..678c2775f 100644 --- a/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs +++ b/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs @@ -1,3 +1,4 @@ +using System; using TBF.Rig.Network.Camera.CJMS11.POJO; namespace TBF.Rig.Network.Camera.CJMS11 @@ -11,6 +12,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 private string orig_status; private string orig_command; private string orig_payload; + private DateTime timeStamp; public POJO.MessageStatus Status { @@ -35,6 +37,12 @@ namespace TBF.Rig.Network.Camera.CJMS11 public string OrigCommand => orig_command; public string OrigPayload => orig_payload; + + public DateTime TimeStamp + { + get => timeStamp; + set => timeStamp = value; + } public JmsMessage(string status, string command, string payload) { diff --git a/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs b/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs index 2cfccee07..e40c748f9 100644 --- a/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs +++ b/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs @@ -1,6 +1,7 @@ using System; using System.Text.RegularExpressions; using log4net; +using Newtonsoft.Json; using TBF.Rig.Network.Camera.CJMS11.POJO; namespace TBF.Rig.Network.Camera.CJMS11 @@ -44,6 +45,16 @@ namespace TBF.Rig.Network.Camera.CJMS11 if (message.Length < 1) return false; this.jmsMessage = JmsMessageFromString(message); + + try + { + CameraResponse response = + JsonConvert.DeserializeObject(jmsMessage.Payload); + jmsMessage.TimeStamp = response.timeStamp; + }catch(Exception e) + { + log.Debug("Error parsing message timestamp: " + e.Message); + } return true; } @@ -70,23 +81,39 @@ namespace TBF.Rig.Network.Camera.CJMS11 return null; } - public static ParsedImage ImageParser(string payloadImage) + public static ParsedImage ImageParser( + string payloadImage) { - // Equivalent regex pattern - var imagePattern = new Regex(@"IMAGE:([A-Z0-9_]+):\s*(.*?)\s*~IMAGE_END", RegexOptions.Singleline); + const string prefix = "IMAGE:"; + const string endMarker = "~IMAGE_END"; - var match = imagePattern.Match(payloadImage); - if (match.Success) - { - string encoding = match.Groups[1].Value; - string imageData = match.Groups[2].Value; + int prefixIndex = payloadImage.IndexOf( prefix, StringComparison.Ordinal); + + if (prefixIndex < 0) + throw new ArgumentException( "IMAGE prefix was not found."); - return new ParsedImage(ImageTypeEnum.GetCommandM(encoding), imageData); - } - else - { - throw new ArgumentException($"Payload does not match expected image format: {payloadImage}"); - } + int encodingStart = + prefixIndex + prefix.Length; + + int encodingEnd = + payloadImage.IndexOf( + ':', + encodingStart); + + if (encodingEnd < 0) + throw new ArgumentException( + "Image encoding separator was not found."); + + int dataStart = encodingEnd + 1; + + int dataEnd = payloadImage.IndexOf( endMarker, dataStart, StringComparison.Ordinal); + + if (dataEnd < 0) + throw new ArgumentException( "IMAGE_END marker was not found."); + + string encoding = payloadImage .Substring( encodingStart, encodingEnd - encodingStart) .Trim(); + string imageData = payloadImage.Substring( dataStart,dataEnd - dataStart).Trim(); + return new ParsedImage( ImageTypeEnum.GetCommandM(encoding), imageData); } public override string ToString() diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs new file mode 100644 index 000000000..fc07458c3 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs @@ -0,0 +1,12 @@ +using System; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class CameraResponse + { + public string message { get; set; } + + public DateTime timeStamp { get; set; } + + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs new file mode 100644 index 000000000..c691d2667 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs @@ -0,0 +1,37 @@ +using Newtonsoft.Json; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class SendImagePayload + { + [JsonProperty("frameGap")] + public int FrameGap { get; set; } + + [JsonProperty("frameTime")] + public string FrameTime { get; set; } + + [JsonProperty("frameTimeMillis")] + public long FrameTimeMillis { get; set; } + + [JsonProperty("pictureBase64")] + public string PictureBase64 { get; set; } + + [JsonProperty("picturesComplete")] + public int PicturesComplete { get; set; } + + [JsonProperty("status")] + public string Status { get; set; } + + [JsonProperty("taskId")] + public string TaskId { get; set; } + + [JsonProperty("taskPath")] + public string TaskPath { get; set; } + + [JsonProperty("taskTime")] + public string TaskTime { get; set; } + + [JsonProperty("workerId")] + public int WorkerId { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs new file mode 100644 index 000000000..c460d23bf --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class SendImagesRequest + { + [JsonProperty("count")] + public int Count { get; set; } + + [JsonProperty("delay")] + public int Delay { get; set; } + + [JsonProperty("taskId")] + public string TaskId { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs new file mode 100644 index 000000000..47cdd0927 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class SendSummaryPayload + { + [JsonProperty("delay")] + public int Delay { get; set; } + + [JsonProperty("pic_count")] + public int PictureCount { get; set; } + + [JsonProperty("timeStamp")] + public string TimeStamp { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs new file mode 100644 index 000000000..35529d7a1 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs @@ -0,0 +1,20 @@ +using System; +using System.Drawing; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class TimedCameraImage + { + public int Index { get; set; } + + public string TaskId { get; set; } + + public DateTimeOffset? FrameTime { get; set; } + + public long FrameTimeMillis { get; set; } + + public int FrameGap { get; set; } + + public Image Image { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs index 6de7a9062..9cfe9965a 100644 --- a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs +++ b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs @@ -20,17 +20,36 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ProcedureParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } - public double PulsesPerLtr; /// [l^-1] - - public override void InitializeAll() - { - PulsesPerLtr = 1.0; - } + ///PulsePerMeter [l^-1] + public double PulsesPerLtr; + /// + /// delta time gap for send parameter + /// + /// delta time for send parameter 500ms is minimum + public int RoiDeltaTimeMs; + + /// + /// count of picture for send > 1 / grabImage == 0|1 parameter - switch method + /// + /// count of picture for send > 1 / grabImage == 0|1 parameter - switch method + public int RoiPicCount; string[] paramNames = new string[] { Strings.PulsesPerLtr, + Strings.PictureCouts, + Strings.DelaySendImage, }; + + + + public override void InitializeAll() + { + PulsesPerLtr = 1.0; + RoiPicCount = 1; //default value 1 => grab Image + RoiDeltaTimeMs = 500; //delta time for send parameter 500ms is minimum + } + public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } @@ -39,6 +58,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 switch (i) { case 0: return PulsesPerLtr.ToString(); + case 1: return RoiPicCount.ToString(); + case 2: return RoiDeltaTimeMs.ToString(); default: return string.Empty; } } @@ -49,6 +70,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 switch (i) { case 0: PulsesPerLtr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.None; + case 1: RoiPicCount = Int32.Parse(strValue); return CfgUpdateFlags.None; + case 2: RoiDeltaTimeMs = Int32.Parse(strValue); return CfgUpdateFlags.None; default: return CfgUpdateFlags.None; } } @@ -59,11 +82,26 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 message = string.Empty; double dummy; + int dummyInt; switch (i) { case 0: if (Utils.TryParseUDouble(strValue, out dummy)) return true; break; + case 1: + if (!Int32.TryParse(strValue, out dummyInt) || (dummyInt < 0 || dummyInt > 50)) + { + message = ParamName(i) + " is invalid. Param must be between 0 and 50!"; + return false; + } + return true; + case 2: + if (!Int32.TryParse(strValue, out dummyInt) || (dummyInt < 500 || dummyInt < 5500)) + { + message = ParamName(i) + " is invalid. Param must be between 500 and 5500!"; + return false; + } + return true; default: message = "Invalid index"; return false; @@ -76,6 +114,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 void CopyContentTo(ProcedureParams prms) { prms.PulsesPerLtr = this.PulsesPerLtr; + prms.RoiDeltaTimeMs = this.RoiDeltaTimeMs; + prms.RoiPicCount = this.RoiPicCount; } public IParamsProvider Clone() diff --git a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs index 6c29ec345..c28c43730 100644 --- a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs +++ b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using System.IO; using System.Text; using log4net; using Common; @@ -41,6 +42,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 get { return roiCfg.ProcParams.PulsesPerLtr; } set { roiCfg.ProcParams.PulsesPerLtr = value; } } + public int RoiDeltaTimeMs { get { return roiCfg.ProcParams.RoiDeltaTimeMs; } } + public int RoiPicCount { get { return roiCfg.ProcParams.RoiPicCount; } } public double LtrsPerPulse { get { return (PulsesPerLtr <= float.Epsilon) ? 1.0 : (1 / PulsesPerLtr); } } public string QuantityUnits { get; set; } @@ -123,26 +126,65 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 return GrabImageOp(imageFileName, roiCfg.BlackAndWhite, roiCfg.LowResolution, roiCfg.ImageRotation); } - public IOperation GrabImageOp(string imageFileName, - bool blackAndWhite, bool lowResolution, ImageRotation imageRotation) + // Roi.cs + public IOperation GrabImageOp( + string imageFileName, + bool blackAndWhite, + bool lowResolution, + ImageRotation imageRotation) { - if (NetCamera != null) + if (NetCamera == null) { - ///TODO BUMI - implementing grabing multiple images - /// 1. Create a list of image file names - string[] imageNames = new string[roiCfg.ImageOpacity.Count]; - for (int i = 0; i < imageNames.Length; i++) - { - imageNames[i] = imageFileName + string.Format("{0}_{1}",imageNames.Length, i); - } - /// 2. implement count of images to grab - /// 3. implement grabing multiple images - - /// TODO: Implement support for sharing one camera by multiple ROI-s - return NetCamera.GrabImagesOp(new string[] { imageFileName }, blackAndWhite, lowResolution, imageRotation); - } - else return null; + } + + int imageCount = Math.Max(1, RoiPicCount); + + string[] imageNames = CreateImageFileNames( + imageFileName, + imageCount); + + return NetCamera.GrabImagesOp( + imageNames, + blackAndWhite, + lowResolution, + imageRotation); + } + + private static string[] CreateImageFileNames( + string originalFileName, + int imageCount) + { + if (imageCount <= 1) + { + return new[] { originalFileName }; + } + + string directory = Path.GetDirectoryName(originalFileName); + string baseName = Path.GetFileNameWithoutExtension(originalFileName); + string extension = Path.GetExtension(originalFileName); + string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss_fff"); + + var result = new string[imageCount]; + + // Prvý obrázok zostáva kompatibilný s dialógom. + result[0] = originalFileName; + + for (int i = 1; i < imageCount; i++) + { + string fileName = string.Format( + "{0}_{1}_{2:D2}{3}", + baseName, + timestamp, + i + 1, + extension); + + result[i] = string.IsNullOrEmpty(directory) + ? fileName + : Path.Combine(directory, fileName); + } + + return result; } public IValve GetValve() diff --git a/TBF/Rig/Network/Telnet/EventArgsClasses.cs b/TBF/Rig/Network/Telnet/EventArgsClasses.cs index 8d156e092..4a1f82aee 100644 --- a/TBF/Rig/Network/Telnet/EventArgsClasses.cs +++ b/TBF/Rig/Network/Telnet/EventArgsClasses.cs @@ -94,17 +94,24 @@ namespace TBF.Rig.Network.Telnet public class PromptReceivedImagesEventArgs : EventArgs { - public Image image; /// server image. - public int idxCamera; /// camera index. - public int idxImage; /// image index. - public int imageCounts; /// number of images. - - public PromptReceivedImagesEventArgs(int idxCamera, Image image, int idxImage, int imageCounts) + public int idxCamera; + public int idxImage; + public int imageCount; + public Image image; + public DateTimeOffset? frameTime; + + public PromptReceivedImagesEventArgs( + int idxCamera, + int idxImage, + int imageCount, + Image image, + DateTimeOffset? frameTime) { - this.image = image; this.idxCamera = idxCamera; this.idxImage = idxImage; - this.imageCounts = imageCounts; + this.imageCount = imageCount; + this.image = image; + this.frameTime = frameTime; } } diff --git a/TBF/Rig/Sequences/iPerlCommunicationSeq.cs b/TBF/Rig/Sequences/iPerlCommunicationSeq.cs index 497628ab8..012ff19ee 100644 --- a/TBF/Rig/Sequences/iPerlCommunicationSeq.cs +++ b/TBF/Rig/Sequences/iPerlCommunicationSeq.cs @@ -366,7 +366,7 @@ namespace TBF.Rig.Sequences Program.MainWnd.Invoke(new iPerlCommFormDlgt(OpenIPerlCommForm), new object[] { this, method, test, testParams }); //------------------------------------------------ - Bridge.OnActivity(this, Strings.iPerl_Communication_in_progress); + Bridge.OnActivity(this, Strings.Meter_Communication_in_progress); //------------------------------------------------ bool stopPressed = false; /// true when STOP button pressed diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs index 097f9eeab..5c438d9e6 100644 --- a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs +++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs @@ -48,6 +48,16 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single } else { + + if (DebugLevel == DebugMode.Simulate && + test.Name.ToLower().Contains("q3") + ) + { + //Q3 Test - calibration data + return new FlyingStartMassCollectionSeq().Execute(test, repetNr, isLastRepetition, + testMethodCfg.TestParams.DelayedStart, null, null, DebugLevel); + } + /// DebugLevel == DebugMode.Simulate (new FlyingStartMassCollectionSeq()).MakeSimulatedTrivial(test, repetNr, test.Part); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetNr, Progress.Completed)); diff --git a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs index ccc2efebe..4192cd75c 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs @@ -150,9 +150,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect (rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i); (rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).BeginWMState = dataEntryCmpnt.WMStartState(i); } - - - + if (rr is Rig.Network.Camera.RoiForFixedStart.Roi) { (rr as Rig.Network.Camera.RoiForFixedStart.Roi).EndWMState = dataEntryCmpnt.WMEndState(i); @@ -167,6 +165,16 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect dataEntryCmpnt.WMStartState(i); log.DebugFormat(" StandingStartMassCollectionAdvanceSeq.cs - BeginWMState [{0}], EndWMState [{1}] -> RoiForFixedStartKeyence.Roi",dataEntryCmpnt.WMStartState(i),dataEntryCmpnt.WMEndState(i)); } + + //New camera CJMS11 - supplier Java Microservices, s.r.o + if (rr is Rig.Network.Camera.RoiForFixedStartCJMS11.Roi) + { + (rr as Rig.Network.Camera.RoiForFixedStartCJMS11.Roi).EndWMState = + dataEntryCmpnt.WMEndState(i); + (rr as Rig.Network.Camera.RoiForFixedStartCJMS11.Roi).BeginWMState = + dataEntryCmpnt.WMStartState(i); + log.DebugFormat(" StandingStartMassCollectionAdvanceSeq.cs - BeginWMState [{0}], EndWMState [{1}] -> RoiForFixedStartCJMS11.Roi",dataEntryCmpnt.WMStartState(i),dataEntryCmpnt.WMEndState(i)); + } } } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 8e4c09a81..a6e3bcf01 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -1038,11 +1038,13 @@ CameraCfgCtrl.cs + + @@ -1050,6 +1052,10 @@ + + + + Form diff --git a/TBF/UiBridge/Bridge.cs b/TBF/UiBridge/Bridge.cs index 79b0dad1d..226422de1 100644 --- a/TBF/UiBridge/Bridge.cs +++ b/TBF/UiBridge/Bridge.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using System.Threading.Tasks; using log4net; using NHibernate; using Common; @@ -229,7 +230,26 @@ namespace TBF.UiBridge public static void OnCameraUICmd(object sender, CameraUICmdEventArgs data) { if (CameraUICmdHandler == null) return; - try { CameraUICmdHandler(sender, data); } + try + { + log.DebugFormat("CameraUICmdHandler: {0}", data.CameraUICmd); + foreach (EventHandler handler in CameraUICmdHandler.GetInvocationList()) + { + var localHandler = handler; + + Task.Run(() => + { + try + { + localHandler(sender, data); + } + catch (Exception e) + { + log.Error("CameraUICmdHandler(...) failed", e); + } + }); + } + } catch (Exception e) { log.Error("CameraUICmdHandler(...) failed", e); } } public static event EventHandler CameraUICmdHandler; diff --git a/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs b/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs index ea1334a75..10f9a7860 100644 --- a/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs +++ b/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs @@ -2,10 +2,13 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Threading.Tasks; +using Common; using JetBrains.Annotations; using Microsoft.VisualStudio.TestTools.UnitTesting; using TBF.Rig.Generic; using TBF.Rig.Network.Camera.CJMS11; +using TBF.Rig.Network.Camera.RoiForFixedStartCJMS11; +using TBF.Rig.Network.Camera.RoiForFixedStartCJMS11.common; using Factory = TBF.Rig.Network.Camera.CJMS11.Factory; @@ -17,25 +20,41 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 public class CameraTest { private static string ipCamera1 = "192.168.0.170"; - private static string ipCamera2 = "192.168.0.169"; + private static string ipCamera2 = "192.168.0.129"; public string IPCamera1 { get { return ipCamera1; } } public string IPCamera2 { get { return ipCamera2; } } + private RoiCfg CreateTestRoiCfg() + { + var factory = new TBF.Rig.Network.Camera.RoiForFixedStartCJMS11.Factory(); + + var roi = new RoiCfg("TestRoi", factory); + + roi.BlackAndWhite = false; + roi.LowResolution = true; + roi.ImageRotation = ImageRotation.None; + roi.ImageFrame = Frame.StandardFrame(); + + return roi; + } + [TestMethod] public void Initialize() { - TBF.Rig.Network.Camera.CJMS11.Camera camera = GetCamera( IPCamera1); + TBF.Rig.Network.Camera.CJMS11.Camera camera = GetCamera(IPCamera1); + camera.RoiConfiguration = CreateTestRoiCfg(); camera.Initialize(); TBF.Rig.Network.Camera.CJMS11.Camera camera2 = GetCamera( IPCamera2); + camera2.RoiConfiguration = CreateTestRoiCfg(); camera2.Initialize(); - TBF.Rig.Network.Camera.CJMS11.Camera camera11 = GetCamera( IPCamera1); - camera11.Initialize(); - - TBF.Rig.Network.Camera.CJMS11.Camera camera12 = GetCamera( IPCamera2); - camera12.Initialize(); + // TBF.Rig.Network.Camera.CJMS11.Camera camera11 = GetCamera( IPCamera1); + // camera11.Initialize(); + // + // TBF.Rig.Network.Camera.CJMS11.Camera camera12 = GetCamera( IPCamera2); + // camera12.Initialize(); } @@ -57,25 +76,25 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 camera.Initialize(); }); - var task3 = Task.Run(() => - { - var camera = GetCamera(IPCamera2); - camera.Initialize(); - }); - - var task4 = Task.Run(() => - { - var camera = GetCamera(IPCamera1); - camera.Initialize(); - }); + // var task3 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera2); + // camera.Initialize(); + // }); + // + // var task4 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera1); + // camera.Initialize(); + // }); - Task.WaitAll(task1, task2, task3, task4); // blocks until both finish + Task.WaitAll(task1, task2/*, task3, task4*/); // blocks until both finish // Optionally, add assertions or diagnostics Assert.IsTrue(task1.IsCompleted); Assert.IsTrue(task2.IsCompleted); - Assert.IsTrue(task3.IsCompleted); - Assert.IsTrue(task4.IsCompleted); + // Assert.IsTrue(task3.IsCompleted); + // Assert.IsTrue(task4.IsCompleted); } @@ -112,7 +131,7 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 var camera = GetCamera(IPCamera1); - Task saveImageTask = Task.Run(() => camera.SaveImageListener()); + Task saveImageTask = Task.Run(() => camera.SaveImageListenerAsynch()); var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3)); var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; if (completedAnswerTask == timeoutAnswerTask) @@ -129,35 +148,35 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 camera.Initialize(); }); - var task3 = Task.Run(() => - { - var camera = GetCamera(IPCamera2); - - Task saveImageTask = Task.Run(() => camera.SaveImageListener()); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3)); - var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; - if (completedAnswerTask == timeoutAnswerTask) - { - Assert.Fail(); - } + // var task3 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera2); + // + // Task saveImageTask = Task.Run(() => camera.SaveImageListenerAsynch()); + // var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3)); + // var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; + // if (completedAnswerTask == timeoutAnswerTask) + // { + // Assert.Fail(); + // } + // + // //TODO BUMI enable check image + // //Assert.IsTrue(saveImageTask.Result != null); + // }); + // + // var task4 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera1); + // camera.Initialize(); + // }); - //TODO BUMI enable check image - //Assert.IsTrue(saveImageTask.Result != null); - }); - - var task4 = Task.Run(() => - { - var camera = GetCamera(IPCamera1); - camera.Initialize(); - }); - - await Task.WhenAll(task1, task2,task3, task4); // blocks until both finish + await Task.WhenAll(task1, task2/*,task3, task4*/); // blocks until both finish // Optionally, add assertions or diagnostics Assert.IsTrue(task1.IsCompleted); Assert.IsTrue(task2.IsCompleted); - Assert.IsTrue(task3.IsCompleted); - Assert.IsTrue(task4.IsCompleted); + // Assert.IsTrue(task3.IsCompleted); + // Assert.IsTrue(task4.IsCompleted); } From 28607e272979cf64a11a426c3e3be7b1be3e877b Mon Sep 17 00:00:00 2001 From: Michal Buzik Date: Thu, 16 Jul 2026 12:19:27 +0200 Subject: [PATCH 07/16] fix Strings - Camera CJMS11 - support dialog multi pictures --- TBF/Properties/AssemblyInfo.cs | 4 +- TBF/Resources/Strings.Designer.cs | 45 +- TBF/Resources/Strings.cs.Designer.cs | 18 +- TBF/Resources/Strings.cs.resx | 4 +- TBF/Resources/Strings.de.Designer.cs | 6398 +++++++++++++++++ TBF/Resources/Strings.de.resx | 4 +- TBF/Resources/Strings.fr.resx | 2 +- TBF/Resources/Strings.it.resx | 4 +- TBF/Resources/Strings.pl.resx | 4 +- TBF/Resources/Strings.resx | 13 +- TBF/Resources/Strings.ru.resx | 4 +- TBF/Resources/Strings.zh-CN.Designer.cs | 49 +- TBF/Resources/Strings.zh-CN.resx | 2 +- .../TestStartEndForm.cs | 685 +- TBF/Rig/GenericDevices/ITestMethodSmart.cs | 2 +- TBF/Rig/Network/Camera/CJMS11/Camera.cs | 3284 +++++++-- .../Network/Camera/CJMS11/CameraLineReader.cs | 154 + TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs | 1211 +++- TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs | 8 + TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs | 55 +- .../Camera/CJMS11/POJO/CameraResponse.cs | 12 + .../Camera/CJMS11/POJO/SendImagePayload.cs | 37 + .../Camera/CJMS11/POJO/SendImagesRequest.cs | 16 + .../Camera/CJMS11/POJO/SendSummaryPayload.cs | 16 + .../Camera/CJMS11/POJO/TimedCameraImage.cs | 20 + .../RoiForFixedStartCJMS11/ProcedureParams.cs | 52 +- .../Camera/RoiForFixedStartCJMS11/Roi.cs | 76 +- TBF/Rig/Network/Telnet/EventArgsClasses.cs | 23 +- TBF/Rig/Sequences/iPerlCommunicationSeq.cs | 2 +- .../Single/Component.cs | 10 + .../GenesisCommunicationSeq.cs | 2 +- .../S640Communication/S640CommSeq.cs | 2 +- .../SmartCommunicationSeq.cs | 2 +- ...ingStartMassCollectionAdvanceCollectSeq.cs | 14 +- .../iPerlCommunicationSeq.cs | 2 +- TBF/Strings.Designer.cs | 4 +- TBF/TBF.csproj | 6 + TBF/UiBridge/Bridge.cs | 22 +- .../Rig/Network/Camera/CJMS11/CameraTest.cs | 111 +- 39 files changed, 11326 insertions(+), 1053 deletions(-) create mode 100644 TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs create mode 100644 TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index eb3d714a4..1b9e1281e 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3069.8")] -[assembly: AssemblyFileVersion("3.9.3069.8")] +[assembly: AssemblyVersion("3.9.3134.0")] +[assembly: AssemblyFileVersion("3.9.3134.0")] diff --git a/TBF/Resources/Strings.Designer.cs b/TBF/Resources/Strings.Designer.cs index f5f49dd9e..b36eb5c49 100644 --- a/TBF/Resources/Strings.Designer.cs +++ b/TBF/Resources/Strings.Designer.cs @@ -1427,6 +1427,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Delay between pictures. + /// + internal static string DelaySendImage { + get { + return ResourceManager.GetString("DelaySendImage", resourceCulture); + } + } + /// /// Looks up a localized string similar to Density. /// @@ -2723,15 +2732,6 @@ namespace TBF.Resources { } } - /// - /// Looks up a localized string similar to iPerl Communication in progress. - /// - internal static string iPerl_Communication_in_progress { - get { - return ResourceManager.GetString("iPerl_Communication_in_progress", resourceCulture); - } - } - /// /// Looks up a localized string similar to ITS-27 calibration coefficients. /// @@ -3101,6 +3101,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Meter Communication in progress. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + /// /// Looks up a localized string similar to Sensors. /// @@ -3839,6 +3848,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Pictures Count. + /// + internal static string PictureCouts { + get { + return ResourceManager.GetString("PictureCouts", resourceCulture); + } + } + /// /// Looks up a localized string similar to PID. /// @@ -4640,6 +4658,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Radio Communication failed. + /// + internal static string Radio_Communication_failed { + get { + return ResourceManager.GetString("Radio_Communication_failed", resourceCulture); + } + } + /// /// Looks up a localized string similar to Rate of change [%]. /// diff --git a/TBF/Resources/Strings.cs.Designer.cs b/TBF/Resources/Strings.cs.Designer.cs index da6c77484..4e0c89a9c 100644 --- a/TBF/Resources/Strings.cs.Designer.cs +++ b/TBF/Resources/Strings.cs.Designer.cs @@ -1931,15 +1931,6 @@ namespace TBF.Resources { } } - /// - /// Looks up a localized string similar to iPERL Komunikace probíhá. - /// - internal static string iPerl_Communication_in_progress { - get { - return ResourceManager.GetString("iPerl_Communication_in_progress", resourceCulture); - } - } - /// /// Looks up a localized string similar to Jazyk. /// @@ -2147,6 +2138,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Komunikace s vodemerem probíhá. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + /// /// Looks up a localized string similar to Testované typy měřičů. /// diff --git a/TBF/Resources/Strings.cs.resx b/TBF/Resources/Strings.cs.resx index e97e9a6ae..2a45ee942 100644 --- a/TBF/Resources/Strings.cs.resx +++ b/TBF/Resources/Strings.cs.resx @@ -1020,8 +1020,8 @@ Současně s předchozím krokem - - iPERL Komunikace probíhá + + Komunikace s vodemerem probíhá Jazyk diff --git a/TBF/Resources/Strings.de.Designer.cs b/TBF/Resources/Strings.de.Designer.cs index e69de29bb..b3ab2e3d1 100644 --- a/TBF/Resources/Strings.de.Designer.cs +++ b/TBF/Resources/Strings.de.Designer.cs @@ -0,0 +1,6398 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TBF.Resources { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Strings_de { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Strings_de() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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("TBF.Resources.Strings.de", typeof(Strings_de).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to {0} - schliese Ventil Entwässerung. + /// + internal static string _0_close_the_drain_valve { + get { + return ResourceManager.GetString("_0_close_the_drain_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - öffnen Ventil Entwässerung. + /// + internal static string _0_open_the_drain_valve { + get { + return ResourceManager.GetString("_0_open_the_drain_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} Pfad '{1}' genutzt von {2} Tests gleichzeitig wird entfernt.{3}. + /// + internal static string _0_path_1_used_by_2_tests_will_be_removed_3 { + get { + return ResourceManager.GetString("_0_path_1_used_by_2_tests_will_be_removed_3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} Pfad '{1}' genutzt von {2}Tests werden umbenannt in '{3}'.{4}. + /// + internal static string _0_path_1_used_by_2_tests_will_be_renamed_to_3_4 { + get { + return ResourceManager.GetString("_0_path_1_used_by_2_tests_will_be_renamed_to_3_4", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - Warten bis Prüfbehälter mehr als {1} ltr enthällt.. + /// + internal static string _0_wait_until_tank_contains_more_then_1_l { + get { + return ResourceManager.GetString("_0_wait_until_tank_contains_more_then_1_l", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} - warten bis Prüfbehälter leer ist. + /// + internal static string _0_wait_until_the_tank_is_empty { + get { + return ResourceManager.GetString("_0_wait_until_the_tank_is_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <kein>. + /// + internal static string _none_ { + get { + return ResourceManager.GetString("_none_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to (Getrennt). + /// + internal static string _offline { + get { + return ResourceManager.GetString("_offline", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abrechen. + /// + internal static string Abort { + get { + return ResourceManager.GetString("Abort", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abbruch Zyklus. + /// + internal static string Abort_cycle { + get { + return ResourceManager.GetString("Abort_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unterbrechen. + /// + internal static string Abort_session { + get { + return ResourceManager.GetString("Abort_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Info TBF. + /// + internal static string About_Test_Bench_Framework { + get { + return ResourceManager.GetString("About_Test_Bench_Framework", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastkopf Ein/Aus. + /// + internal static string Activate_Deactivate_heads { + get { + return ResourceManager.GetString("Activate_Deactivate_heads", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorgang. + /// + internal static string Activity { + get { + return ResourceManager.GetString("Activity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hinzufügen. + /// + internal static string Add { + get { + return ResourceManager.GetString("Add", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neu. + /// + internal static string AddBtnText { + get { + return ResourceManager.GetString("AddBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Adresse. + /// + internal static string Address { + get { + return ResourceManager.GetString("Address", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Justierung läuft .... + /// + internal static string Adjustment_in_progress { + get { + return ResourceManager.GetString("Adjustment_in_progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Administrator. + /// + internal static string Administrator { + get { + return ResourceManager.GetString("Administrator", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Luftdichte [kg/m3]. + /// + internal static string Air_density_kg_m3 { + get { + return ResourceManager.GetString("Air_density_kg_m3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Luftfeuchtigkeit. + /// + internal static string Air_humidity { + get { + return ResourceManager.GetString("Air_humidity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungsdruck. + /// + internal static string Air_pressure { + get { + return ResourceManager.GetString("Air_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungstemperatur. + /// + internal static string Air_temperature { + get { + return ResourceManager.GetString("Air_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Alle Ereignisse. + /// + internal static string All_events { + get { + return ResourceManager.GetString("All_events", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Alle Prüfpunkte müssen durchgeführt werden. + /// + internal static string All_tests_must_be_completed { + get { + return ResourceManager.GetString("All_tests_must_be_completed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Luftfeuchtigkeit. + /// + internal static string Ambient_humidity { + get { + return ResourceManager.GetString("Ambient_humidity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungsdruck. + /// + internal static string Ambient_pressure { + get { + return ResourceManager.GetString("Ambient_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umgebungstemperatur. + /// + internal static string Ambient_temperature { + get { + return ResourceManager.GetString("Ambient_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ein Ausnahmefehler ist aufgetreten!. + /// + internal static string An_unhandled_error_occured { + get { + return ResourceManager.GetString("An_unhandled_error_occured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Das TBF Programm wurde bereits ausgeführt. Bitte schließen Sie das Programm im Taskmanager.. + /// + internal static string Another_instance_is_running { + get { + return ResourceManager.GetString("Another_instance_is_running", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beliebig. + /// + internal static string any { + get { + return ResourceManager.GetString("any", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassung. + /// + internal static string Approval { + get { + return ResourceManager.GetString("Approval", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassung Datum. + /// + internal static string Approval_date { + get { + return ResourceManager.GetString("Approval_date", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassung Nr.:. + /// + internal static string Approval_ID { + get { + return ResourceManager.GetString("Approval_ID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zulassungszeichen. + /// + internal static string Approval_info { + get { + return ResourceManager.GetString("Approval_info", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zugelassen von:. + /// + internal static string Approved_by { + get { + return ResourceManager.GetString("Approved_by", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die Anordnung der Zähler. + /// + internal static string Arrangement_of_meters { + get { + return ResourceManager.GetString("Arrangement_of_meters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die Anordnung der Prüfpunkte. + /// + internal static string Arrangement_of_tests { + get { + return ResourceManager.GetString("Arrangement_of_tests", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bei Temperatur. + /// + internal static string At_temperature { + get { + return ResourceManager.GetString("At_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler. + /// + internal static string Aux { + get { + return ResourceManager.GetString("Aux", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler. + /// + internal static string Aux_ { + get { + return ResourceManager.GetString("Aux_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler. + /// + internal static string Aux_Water_Meter { + get { + return ResourceManager.GetString("Aux_Water_Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler-Stand. + /// + internal static string Aux_Water_Meter_State { + get { + return ResourceManager.GetString("Aux_Water_Meter_State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenzähler Seriennummer. + /// + internal static string Aux_WM_SerialNr { + get { + return ResourceManager.GetString("Aux_WM_SerialNr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten:. + /// + internal static string Available_Components_ { + get { + return ResourceManager.GetString("Available_Components_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse. + /// + internal static string Available_results { + get { + return ResourceManager.GetString("Available_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to < Zurück. + /// + internal static string BackBtnText { + get { + return ResourceManager.GetString("BackBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage. + /// + internal static string Balance { + get { + return ResourceManager.GetString("Balance", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerlos. + /// + internal static string Batch { + get { + return ResourceManager.GetString("Batch", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerlos Nr.. + /// + internal static string Batch_nr { + get { + return ResourceManager.GetString("Batch_nr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand. + /// + internal static string Bench { + get { + return ResourceManager.GetString("Bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand. + /// + internal static string Bench_chdr { + get { + return ResourceManager.GetString("Bench_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Der Prüfstand ist nicht in Betrieb. Sie können die Einstellungen ändern, um das Problem zu lösen.. + /// + internal static string Bench_is_not_running { + get { + return ResourceManager.GetString("Bench_is_not_running", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Der Prüfstandsname ist ungültig. Bitte wählen Sie einen anderen Namen.. + /// + internal static string Bench_name_conflict_Use_another_name_pls { + get { + return ResourceManager.GetString("Bench_name_conflict_Use_another_name_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand Parameter. + /// + internal static string Bench_parameters { + get { + return ResourceManager.GetString("Bench_parameters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüftisch. + /// + internal static string BenchTabPageTitle { + get { + return ResourceManager.GetString("BenchTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zwische Test ({0}: Schritt {1}/{2}). + /// + internal static string Between_tests_sequence_i_n { + get { + return ResourceManager.GetString("Between_tests_sequence_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum eingeben {0}. + /// + internal static string BuildDateStr { + get { + return ResourceManager.GetString("BuildDateStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nebenleitung. + /// + internal static string Bypass { + get { + return ResourceManager.GetString("Bypass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalkulieren. + /// + internal static string calculated { + get { + return ResourceManager.GetString("calculated", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalender. + /// + internal static string Calendar { + get { + return ResourceManager.GetString("Calendar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrierung. + /// + internal static string Calibration { + get { + return ResourceManager.GetString("Calibration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrierschein. + /// + internal static string Calibration_certificate { + get { + return ResourceManager.GetString("Calibration_certificate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrierschein gültigkeit abgelaufen. + /// + internal static string Calibration_certificate_validity_expired { + get { + return ResourceManager.GetString("Calibration_certificate_validity_expired", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibrier-Koeffizient. + /// + internal static string Calibration_coefficients { + get { + return ResourceManager.GetString("Calibration_coefficients", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kalibriertechniker. + /// + internal static string Calibration_Specialist { + get { + return ResourceManager.GetString("Calibration_Specialist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kamera. + /// + internal static string Camera { + get { + return ResourceManager.GetString("Camera", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kamerafehler. + /// + internal static string Camera_error { + get { + return ResourceManager.GetString("Camera_error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abbrechen. + /// + internal static string CancelBtnText { + get { + return ResourceManager.GetString("CancelBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbindung mit der Datenbank nicht möglich.. + /// + internal static string Cannot_connect_to_the_database { + get { + return ResourceManager.GetString("Cannot_connect_to_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Prüfstrecke kann nicht geladen werden.. + /// + internal static string Cannot_load_bench_path { + get { + return ResourceManager.GetString("Cannot_load_bench_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Wasserzulauf kann nicht geladen werden.. + /// + internal static string Cannot_load_feeding_path { + get { + return ResourceManager.GetString("Cannot_load_feeding_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Messtrecke kann nicht geladen werden.. + /// + internal static string Cannot_load_output_path { + get { + return ResourceManager.GetString("Cannot_load_output_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfad für Abtastung kann nicht geladen werden.. + /// + internal static string Cannot_load_sensor_path { + get { + return ResourceManager.GetString("Cannot_load_sensor_path", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Änderungen können nicht gespeichert werden.. + /// + internal static string Cannot_save_changes { + get { + return ResourceManager.GetString("Cannot_save_changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zertifikat. + /// + internal static string Certificate { + get { + return ResourceManager.GetString("Certificate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse gehen verloren! Wollen sie fortfahren?. + /// + internal static string Changes_will_be_lost_Do_you_want_to_proceed { + get { + return ResourceManager.GetString("Changes_will_be_lost_Do_you_want_to_proceed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kanal. + /// + internal static string Channel { + get { + return ResourceManager.GetString("Channel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waagebehälter Volumen prüfen. + /// + internal static string Checking_tank_capacity { + get { + return ResourceManager.GetString("Checking_tank_capacity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Klasse. + /// + internal static string Class { + get { + return ResourceManager.GetString("Class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse löschen. + /// + internal static string Clear_results { + get { + return ResourceManager.GetString("Clear_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Löschen. + /// + internal static string ClearBtnText { + get { + return ResourceManager.GetString("ClearBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Im Uhrzeigersinn. + /// + internal static string Clockwise { + get { + return ResourceManager.GetString("Clockwise", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to geschlossen. + /// + internal static string close { + get { + return ResourceManager.GetString("close", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schließe das Entleerventil. + /// + internal static string Close_emptying_valve { + get { + return ResourceManager.GetString("Close_emptying_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schutzhaube schließen!. + /// + internal static string Close_the_cover { + get { + return ResourceManager.GetString("Close_the_cover", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden. + /// + internal static string CloseBtnText { + get { + return ResourceManager.GetString("CloseBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to TBF Programm schließt. + /// + internal static string Closing_Test_Bench_Framework { + get { + return ResourceManager.GetString("Closing_Test_Bench_Framework", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schließen des Programms. + /// + internal static string Closing_the_program { + get { + return ResourceManager.GetString("Closing_the_program", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter Schließen. + /// + internal static string Closing_the_tank { + get { + return ResourceManager.GetString("Closing_the_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schließen Ventil Zulauf und Pumpe Aus. + /// + internal static string Closing_valve_Pump_off { + get { + return ResourceManager.GetString("Closing_valve_Pump_off", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kommunikation. + /// + internal static string Communication { + get { + return ResourceManager.GetString("Communication", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vergleichen. + /// + internal static string Compare { + get { + return ResourceManager.GetString("Compare", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponente. + /// + internal static string Component { + get { + return ResourceManager.GetString("Component", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten {0} fehlgeschlagen. Ergebnisse nicht gerduckt.. + /// + internal static string Component_0_crashed_Results_not_printed { + get { + return ResourceManager.GetString("Component_0_crashed_Results_not_printed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten {0} fehlgeschlagen. Ergebnisse nicht gespeichert.. + /// + internal static string Component_0_crashed_Results_not_saved { + get { + return ResourceManager.GetString("Component_0_crashed_Results_not_saved", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandskomponenten Klasse. + /// + internal static string Component_class { + get { + return ResourceManager.GetString("Component_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbund. + /// + internal static string Compound { + get { + return ResourceManager.GetString("Compound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbundzähler {0}. + /// + internal static string Compound_meter_0 { + get { + return ResourceManager.GetString("Compound_meter_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbundwasserzähler. + /// + internal static string Compound_meters { + get { + return ResourceManager.GetString("Compound_meters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Konditionen. + /// + internal static string Conditions { + get { + return ResourceManager.GetString("Conditions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Konfiguration. + /// + internal static string Configuration { + get { + return ResourceManager.GetString("Configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Konfigurieren. + /// + internal static string Configure { + get { + return ResourceManager.GetString("Configure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand konfigurieren (Passwort erforderlich). + /// + internal static string ConfigureDatabaseText { + get { + return ResourceManager.GetString("ConfigureDatabaseText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Lesen bestätigen. + /// + internal static string Confirm_read { + get { + return ResourceManager.GetString("Confirm_read", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestätigung. + /// + internal static string Confirmation { + get { + return ResourceManager.GetString("Confirmation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verbindungszeichenfolge. + /// + internal static string Connection_string { + get { + return ResourceManager.GetString("Connection_string", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Weiter. + /// + internal static string Continue { + get { + return ResourceManager.GetString("Continue", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mit dem nächsten Prüfpunkt fortfahren?. + /// + internal static string Continue_in_the_cycle { + get { + return ResourceManager.GetString("Continue_in_the_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wassertemperaturregelung. + /// + internal static string Control_water_temp_chdr { + get { + return ResourceManager.GetString("Control_water_temp_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kopieren. + /// + internal static string CopyBtnText { + get { + return ResourceManager.GetString("CopyBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to © 2013 - {0} Sensus GmbH. + /// + internal static string CopyrightStr { + get { + return ResourceManager.GetString("CopyrightStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Korrigiert. + /// + internal static string Corrected { + get { + return ResourceManager.GetString("Corrected", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Korrektur. + /// + internal static string Correction { + get { + return ResourceManager.GetString("Correction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gegen den Uhrzeigersinn. + /// + internal static string Counterclockwise { + get { + return ResourceManager.GetString("Counterclockwise", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbank erzeugen. + /// + internal static string Create_DB { + get { + return ResourceManager.GetString("Create_DB", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Errstellt von. + /// + internal static string Created_by { + get { + return ResourceManager.GetString("Created_by", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Strom. + /// + internal static string Current { + get { + return ResourceManager.GetString("Current", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kürzlich benutzte Datenbank wurde wieder hergestellt.. + /// + internal static string Currently_used_database_was_restored { + get { + return ResourceManager.GetString("Currently_used_database_was_restored", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Daten. + /// + internal static string Data { + get { + return ResourceManager.GetString("Data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerdateneingabe. + /// + internal static string Data_entry { + get { + return ResourceManager.GetString("Data_entry", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbank Einstellungen. + /// + internal static string Database_Settings { + get { + return ResourceManager.GetString("Database_Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbank Typ. + /// + internal static string Database_type { + get { + return ResourceManager.GetString("Database_type", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum. + /// + internal static string Date { + get { + return ResourceManager.GetString("Date", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum und Uhrzeit. + /// + internal static string Date_and_time { + get { + return ResourceManager.GetString("Date_and_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datum / Uhrzeit. + /// + internal static string Date_time { + get { + return ResourceManager.GetString("Date_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die Datenbank wurde erfolgreich erstellt.. + /// + internal static string DB_was_successfully_created { + get { + return ResourceManager.GetString("DB_was_successfully_created", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die vorhandene Datenbank wird überschrieben.. + /// + internal static string DB_will_be_overwritten { + get { + return ResourceManager.GetString("DB_will_be_overwritten", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Basis Einheiten. + /// + internal static string Default_units { + get { + return ResourceManager.GetString("Default_units", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dichte. + /// + internal static string Density { + get { + return ResourceManager.GetString("Density", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dichtekorektur. + /// + internal static string Density_correction { + get { + return ResourceManager.GetString("Density_correction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beschreibung. + /// + internal static string DescriptionColHdr { + get { + return ResourceManager.GetString("DescriptionColHdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erkennung erfolgt. + /// + internal static string Detection_completed { + get { + return ResourceManager.GetString("Detection_completed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Erkennung fehlgeschlagen. + /// + internal static string Detection_failed { + get { + return ResourceManager.GetString("Detection_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schwellwert [%]. + /// + internal static string DetectionThresholdPct { + get { + return ResourceManager.GetString("DetectionThresholdPct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to feststellen. + /// + internal static string determine { + get { + return ResourceManager.GetString("determine", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gerät. + /// + internal static string Device { + get { + return ResourceManager.GetString("Device", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorgabe. + /// + internal static string dflt { + get { + return ResourceManager.GetString("dflt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Richtung und Impulse sind OK. + /// + internal static string Direction_and_pulses_are_OK { + get { + return ResourceManager.GetString("Direction_and_pulses_are_OK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Richtung is nicht OK. + /// + internal static string Direction_is_NOK { + get { + return ResourceManager.GetString("Direction_is_NOK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umschaltung. + /// + internal static string Diverter { + get { + return ResourceManager.GetString("Diverter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie diese Sitzung beenden?. + /// + internal static string Do_you_really_want_to_abort_this_session { + get { + return ResourceManager.GetString("Do_you_really_want_to_abort_this_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie den Abschnitt '{0}' löschen?. + /// + internal static string Do_you_really_want_to_delete_sequence_0 { + get { + return ResourceManager.GetString("Do_you_really_want_to_delete_sequence_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wollen sie wirklich eine unvollständigen Modus wiederherstellen?. + /// + internal static string Do_you_really_want_to_restore_uncompleted_session { + get { + return ResourceManager.GetString("Do_you_really_want_to_restore_uncompleted_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie ein Backup der Konfiguration erstellen?. + /// + internal static string Do_you_want_to_back_up_configuration_qm { + get { + return ResourceManager.GetString("Do_you_want_to_back_up_configuration_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie ein Backup der Ergebnisse erstellen?. + /// + internal static string Do_you_want_to_back_up_results_qm { + get { + return ResourceManager.GetString("Do_you_want_to_back_up_results_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie diese Zelle kopieren in alle Zellen darunter?. + /// + internal static string Do_you_want_to_copy_this_value_to_all_cells_below_this_cell { + get { + return ResourceManager.GetString("Do_you_want_to_copy_this_value_to_all_cells_below_this_cell", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie die Prüfvorlage löschen?. + /// + internal static string Do_you_want_to_delete_the_procedure { + get { + return ResourceManager.GetString("Do_you_want_to_delete_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wollen Sie das TBF Programm beenden?. + /// + internal static string Do_you_want_to_exit_TBF { + get { + return ResourceManager.GetString("Do_you_want_to_exit_TBF", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie fortfahren?. + /// + internal static string Do_you_want_to_proceed { + get { + return ResourceManager.GetString("Do_you_want_to_proceed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie die Konfiguration von Datenbank-Datei{0} wieder herstellen?. + /// + internal static string Do_you_want_to_restore_configuration_DB_from_file_0_qm { + get { + return ResourceManager.GetString("Do_you_want_to_restore_configuration_DB_from_file_0_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie die Ergebnisse von der Datenbank-Datei{0} wieder herstellen?. + /// + internal static string Do_you_want_to_restore_results_DB_from_file_0_qm { + get { + return ResourceManager.GetString("Do_you_want_to_restore_results_DB_from_file_0_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wollen sie die Änderungen speichern?. + /// + internal static string Do_you_want_to_save_changes { + get { + return ResourceManager.GetString("Do_you_want_to_save_changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten Sie die Prüfvorlage speichern?. + /// + internal static string Do_you_want_to_save_the_procedure { + get { + return ResourceManager.GetString("Do_you_want_to_save_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie die betreffenden Tests und Prüfvorgänge updaten?. + /// + internal static string Do_you_want_to_update_related_tests_and_procedures { + get { + return ResourceManager.GetString("Do_you_want_to_update_related_tests_and_procedures", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Möchten sie "Use wizard" Tests updaten?. + /// + internal static string Do_you_want_to_update_tests_QM { + get { + return ResourceManager.GetString("Do_you_want_to_update_tests_QM", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abwärts. + /// + internal static string DownBtnText { + get { + return ResourceManager.GetString("DownBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entwässern nach. + /// + internal static string Draining_after { + get { + return ResourceManager.GetString("Draining_after", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entwässern davor. + /// + internal static string Draining_before { + get { + return ResourceManager.GetString("Draining_before", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abweichung pro Jahr. + /// + internal static string Drift_per_year { + get { + return ResourceManager.GetString("Drift_per_year", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Leckage Dauer. + /// + internal static string Duration_Leak_s { + get { + return ResourceManager.GetString("Duration_Leak_s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer [ms]. + /// + internal static string Duration_ms { + get { + return ResourceManager.GetString("Duration_ms", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pmax Dauer. + /// + internal static string Duration_PMax_s { + get { + return ResourceManager.GetString("Duration_PMax_s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer [s]. + /// + internal static string Duration_s { + get { + return ResourceManager.GetString("Duration_s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzereigenschaften ändern. + /// + internal static string Edit_User { + get { + return ResourceManager.GetString("Edit_User", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bearbeiten. + /// + internal static string EditBtnText { + get { + return ResourceManager.GetString("EditBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Not-Aus. + /// + internal static string Emergency_STOP { + get { + return ResourceManager.GetString("Emergency_STOP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entleeren. + /// + internal static string Empty { + get { + return ResourceManager.GetString("Empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter entleeren. + /// + internal static string Empty_the_tank { + get { + return ResourceManager.GetString("Empty_the_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entleeren. + /// + internal static string Emptying_chdr { + get { + return ResourceManager.GetString("Emptying_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enwässern ({0}: Schritt {1}/{2}). + /// + internal static string Emptying_i_n { + get { + return ResourceManager.GetString("Emptying_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter entleeren. + /// + internal static string Emptying_tank { + get { + return ResourceManager.GetString("Emptying_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entleerventil. + /// + internal static string Emptying_valve { + get { + return ResourceManager.GetString("Emptying_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aktivieren "Bemerkung". + /// + internal static string Enable_Remark { + get { + return ResourceManager.GetString("Enable_Remark", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ende. + /// + internal static string End { + get { + return ResourceManager.GetString("End", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bedingung für das Ende. + /// + internal static string End_Condition { + get { + return ResourceManager.GetString("End_Condition", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnis speichern. + /// + internal static string End_session { + get { + return ResourceManager.GetString("End_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Endstand. + /// + internal static string End_State { + get { + return ResourceManager.GetString("End_State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauerversuch Zyklen. + /// + internal static string Endurance_cycle { + get { + return ResourceManager.GetString("Endurance_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauerversuch Zyklen Ausführen. + /// + internal static string Endurance_cycle_execution { + get { + return ResourceManager.GetString("Endurance_cycle_execution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauerversuch Zyklen Stufen. + /// + internal static string Endurance_cycle_steps { + get { + return ResourceManager.GetString("Endurance_cycle_steps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Energie. + /// + internal static string Energy { + get { + return ResourceManager.GetString("Energy", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwort eingeben.. + /// + internal static string Enter_password { + get { + return ResourceManager.GetString("Enter_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geben Sie die Protokolldaten ein. + /// + internal static string Enter_protocol_data { + get { + return ResourceManager.GetString("Enter_protocol_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Eingabe Seriennr. am Ende. + /// + internal static string Enter_SNs_at_the_end { + get { + return ResourceManager.GetString("Enter_SNs_at_the_end", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geben Sie die WZ-Daten ein. + /// + internal static string Enter_water_meter_data { + get { + return ResourceManager.GetString("Enter_water_meter_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehl. Korr.- [%]. + /// + internal static string Err_cor_neg_pct_chdr { + get { + return ResourceManager.GetString("Err_cor_neg_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehl. Korr.+ [%]. + /// + internal static string Err_cor_pos_pct_chdr { + get { + return ResourceManager.GetString("Err_cor_pos_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlergrenze - [%]. + /// + internal static string Err_limit_neg_pct_chdr { + get { + return ResourceManager.GetString("Err_limit_neg_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlergrenze + [%]. + /// + internal static string Err_limit_pos_pct_chdr { + get { + return ResourceManager.GetString("Err_limit_pos_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler. + /// + internal static string Error { + get { + return ResourceManager.GetString("Error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Laden der Benutzer aus der Datenbank.. + /// + internal static string Error_loading_users_from_the_database { + get { + return ResourceManager.GetString("Error_loading_users_from_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler [%]. + /// + internal static string Error_pct { + get { + return ResourceManager.GetString("Error_pct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler Speicherparameter von {0}. + /// + internal static string Error_saving_parameters_of_0 { + get { + return ResourceManager.GetString("Error_saving_parameters_of_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Erzeugen der Datenbank.. + /// + internal static string Error_while_creating_DB_Reason { + get { + return ResourceManager.GetString("Error_while_creating_DB_Reason", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Schreiben in Datei:. + /// + internal static string Error_writing_into_file_ { + get { + return ResourceManager.GetString("Error_writing_into_file_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer [s]:. + /// + internal static string Estimated_time_s_ { + get { + return ResourceManager.GetString("Estimated_time_s_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bewerten. + /// + internal static string Evaluate { + get { + return ResourceManager.GetString("Evaluate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Berrechnetes Volumen. + /// + internal static string Evaluate_volume { + get { + return ResourceManager.GetString("Evaluate_volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verdunstung. + /// + internal static string Evaporation { + get { + return ResourceManager.GetString("Evaporation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Veranstaltungen. + /// + internal static string Event_logs { + get { + return ResourceManager.GetString("Event_logs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ereignisauslöser. + /// + internal static string Event_triggers { + get { + return ResourceManager.GetString("Event_triggers", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden. + /// + internal static string Exit { + get { + return ResourceManager.GetString("Exit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exportieren. + /// + internal static string Export { + get { + return ResourceManager.GetString("Export", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to NiO. + /// + internal static string Failed { + get { + return ResourceManager.GetString("Failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0}' Eingabe fehlerhaft ({1}) . + /// + internal static string failed_0_1_exclamation { + get { + return ResourceManager.GetString("failed_0_1_exclamation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Erzeugen der Beispiel-Datenbank.. + /// + internal static string Failed_to_create_a_sample_database { + get { + return ResourceManager.GetString("Failed_to_create_a_sample_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim Exportieren der Datenbank.. + /// + internal static string Failed_to_export_the_database { + get { + return ResourceManager.GetString("Failed_to_export_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim initialisieren von Teil '{0}':{1}{2}. + /// + internal static string Failed_to_initialize_component_0_1_2 { + get { + return ResourceManager.GetString("Failed_to_initialize_component_0_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehler beim initialisieren von Gerät '{0}':{1}{2}. + /// + internal static string Failed_to_initialize_device_0_1_2 { + get { + return ResourceManager.GetString("Failed_to_initialize_device_0_1_2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schnell. + /// + internal static string fast { + get { + return ResourceManager.GetString("fast", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzulauf. + /// + internal static string Feeding_chdr { + get { + return ResourceManager.GetString("Feeding_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzulauf. + /// + internal static string FeedingTabPageTitle { + get { + return ResourceManager.GetString("FeedingTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Befüllen. + /// + internal static string Fill { + get { + return ResourceManager.GetString("Fill", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Befüllen mit Wasser ?. + /// + internal static string Fill_with_water { + get { + return ResourceManager.GetString("Fill_with_water", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter. + /// + internal static string Filter { + get { + return ResourceManager.GetString("Filter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden Sie die Messungen bitte. + /// + internal static string Finish_the_session_please { + get { + return ResourceManager.GetString("Finish_the_session_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Beenden. + /// + internal static string FinishBtnText { + get { + return ResourceManager.GetString("FinishBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reparatur. + /// + internal static string Fix { + get { + return ResourceManager.GetString("Fix", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchfluss. + /// + internal static string Flow { + get { + return ResourceManager.GetString("Flow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchfluss nicht erreicht. + /// + internal static string Flow_adjustment_failed { + get { + return ResourceManager.GetString("Flow_adjustment_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to MID-Temperatur ausserhalb der Prüfbedingungen!. + /// + internal static string Flow_meter_temperature_range_does_not_fit_this_test_conditions { + get { + return ResourceManager.GetString("Flow_meter_temperature_range_does_not_fit_this_test_conditions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchflussprofil Empfindlichkeit Klasse. + /// + internal static string Flow_profile_sensitivity_class { + get { + return ResourceManager.GetString("Flow_profile_sensitivity_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellung Durchfluss. + /// + internal static string Flow_selection { + get { + return ResourceManager.GetString("Flow_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchflussmesser. + /// + internal static string Flowmeter { + get { + return ResourceManager.GetString("Flowmeter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fußzeile. + /// + internal static string Footer { + get { + return ResourceManager.GetString("Footer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to von. + /// + internal static string from { + get { + return ResourceManager.GetString("from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vollständiger Name. + /// + internal static string Full_name { + get { + return ResourceManager.GetString("Full_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Allgemein. + /// + internal static string General { + get { + return ResourceManager.GetString("General", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ermittle das Gewicht des Wassers im Behälter. + /// + internal static string Get_mass_of_water_in_the_tank { + get { + return ResourceManager.GetString("Get_mass_of_water_in_the_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Greifen. + /// + internal static string Grab { + get { + return ResourceManager.GetString("Grab", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bilder markieren. + /// + internal static string Grabbing_images { + get { + return ResourceManager.GetString("Grabbing_images", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Grafik. + /// + internal static string Graphs { + get { + return ResourceManager.GetString("Graphs", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gruppen. + /// + internal static string Groups { + get { + return ResourceManager.GetString("Groups", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Laborleiter. + /// + internal static string Head_of_Lab { + get { + return ResourceManager.GetString("Head_of_Lab", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kopfzeile. + /// + internal static string Header { + get { + return ResourceManager.GetString("Header", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezähler. + /// + internal static string Heat_meter { + get { + return ResourceManager.GetString("Heat_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezähler Optionen. + /// + internal static string Heat_meter_options { + get { + return ResourceManager.GetString("Heat_meter_options", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezählersensoren. + /// + internal static string Heat_meter_sensors { + get { + return ResourceManager.GetString("Heat_meter_sensors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wärmezähler. + /// + internal static string HeatMetersTabPageTitle { + get { + return ResourceManager.GetString("HeatMetersTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hilfe. + /// + internal static string Help { + get { + return ResourceManager.GetString("Help", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Änderungen, Historie. + /// + internal static string History_of_changes { + get { + return ResourceManager.GetString("History_of_changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Horizontal. + /// + internal static string Horizontally { + get { + return ResourceManager.GetString("Horizontally", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ID Nummer. + /// + internal static string ID { + get { + return ResourceManager.GetString("ID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignorieren. + /// + internal static string Ignore { + get { + return ResourceManager.GetString("Ignore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignorieren. + /// + internal static string IgnoreBtnText { + get { + return ResourceManager.GetString("IgnoreBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Importieren. + /// + internal static string Import { + get { + return ResourceManager.GetString("Import", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Information. + /// + internal static string Information { + get { + return ResourceManager.GetString("Information", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid {0}. + /// + internal static string Invalid_0 { + get { + return ResourceManager.GetString("Invalid_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlerhafte Losnr.. + /// + internal static string Invalid_batch_number { + get { + return ResourceManager.GetString("Invalid_batch_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auftrieb falsch. Bitte um Korrektur!. + /// + internal static string Invalid_buoyancy_parameter_Correct_pls { + get { + return ResourceManager.GetString("Invalid_buoyancy_parameter_Correct_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültige Einstellung. Bitte um Korrektur!. + /// + internal static string Invalid_calib_info_Correct_pls { + get { + return ResourceManager.GetString("Invalid_calib_info_Correct_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlerhafte Dichte-Parameter.\r\n Bitte um Korrektur.. + /// + internal static string Invalid_density_parameter_Correct_pls { + get { + return ResourceManager.GetString("Invalid_density_parameter_Correct_pls", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültiges Passwort. + /// + internal static string Invalid_password { + get { + return ResourceManager.GetString("Invalid_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fehlerhafte Q2 Korrekturfaktoren. + /// + internal static string Invalid_Q2_correction_factors { + get { + return ResourceManager.GetString("Invalid_Q2_correction_factors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültiger Benutzername, Passwort oder Prüfstand. + /// + internal static string Invalid_user_password_or_bench { + get { + return ResourceManager.GetString("Invalid_user_password_or_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ungültiger Benutzername oder Passwort . + /// + internal static string Invalid_username_or_password { + get { + return ResourceManager.GetString("Invalid_username_or_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to IST-27 Kalibrier Koeffizient. + /// + internal static string ITS27_calibration_coefficients { + get { + return ResourceManager.GetString("ITS27_calibration_coefficients", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ITS-90 Kalibrier-Koeffizient. + /// + internal static string ITS90_calibration_coefficients { + get { + return ResourceManager.GetString("ITS90_calibration_coefficients", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ITS-90 Test. + /// + internal static string ITS90_test { + get { + return ResourceManager.GetString("ITS90_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Länge. + /// + internal static string L { + get { + return ResourceManager.GetString("L", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sprache. + /// + internal static string Language { + get { + return ResourceManager.GetString("Language", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Letzte Änderung von. + /// + internal static string Last_changed_by { + get { + return ResourceManager.GetString("Last_changed_by", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Letzter Zyklus, bitte warten. + /// + internal static string Last_cycle_wait_please { + get { + return ResourceManager.GetString("Last_cycle_wait_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Links. + /// + internal static string Left { + get { + return ResourceManager.GetString("Left", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstellenleiter. + /// + internal static string Legalizator { + get { + return ResourceManager.GetString("Legalizator", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Weniger. + /// + internal static string LessBtnText { + get { + return ResourceManager.GetString("LessBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserstand. + /// + internal static string Level { + get { + return ResourceManager.GetString("Level", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Live. + /// + internal static string Live { + get { + return ResourceManager.GetString("Live", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Laden des Prüfvorgangs. + /// + internal static string Loading_the_procedure { + get { + return ResourceManager.GetString("Loading_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abschließen. + /// + internal static string LockBtnText { + get { + return ResourceManager.GetString("LockBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protokoll. + /// + internal static string Logging { + get { + return ResourceManager.GetString("Logging", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler. + /// + internal static string Main { + get { + return ResourceManager.GetString("Main", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler. + /// + internal static string Main_ { + get { + return ResourceManager.GetString("Main_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Haupt-Messabweichung. + /// + internal static string Main_uncertainty { + get { + return ResourceManager.GetString("Main_uncertainty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler. + /// + internal static string Main_Water_Meter { + get { + return ResourceManager.GetString("Main_Water_Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzählerstand. + /// + internal static string Main_Water_Meter_State { + get { + return ResourceManager.GetString("Main_Water_Meter_State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hauptzähler Seriennummer. + /// + internal static string Main_WM_SerialNr { + get { + return ResourceManager.GetString("Main_WM_SerialNr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wartungstechniker. + /// + internal static string Maintenance_Specialist { + get { + return ResourceManager.GetString("Maintenance_Specialist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Behälter entleeren. + /// + internal static string Make_tank_empty { + get { + return ResourceManager.GetString("Make_tank_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manuelle Steuerung deaktiviert. + /// + internal static string Manual_control_disabled { + get { + return ResourceManager.GetString("Manual_control_disabled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Manuelle Wasserstandsmessung!. + /// + internal static string Manual_level_measurement { + get { + return ResourceManager.GetString("Manual_level_measurement", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Masse. + /// + internal static string Mass { + get { + return ResourceManager.GetString("Mass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Masse dif. [kg]:. + /// + internal static string Mass_diff_kg_ { + get { + return ResourceManager.GetString("Mass_diff_kg_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Refferenzmasse Messung timeout. + /// + internal static string Mass_measurement_timeout { + get { + return ResourceManager.GetString("Mass_measurement_timeout", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Massemessmethode. + /// + internal static string Mass_method { + get { + return ResourceManager.GetString("Mass_method", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Masse wiederholungen. + /// + internal static string Mass_repeats { + get { + return ResourceManager.GetString("Mass_repeats", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Massespanne [kg]. + /// + internal static string Mass_spread_kg { + get { + return ResourceManager.GetString("Mass_spread_kg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. Massezunahme [Kg]. + /// + internal static string Max_mass_increase_kg { + get { + return ResourceManager.GetString("Max_mass_increase_kg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. Druckabfall [bar]. + /// + internal static string Max_pressure_drop_bar { + get { + return ResourceManager.GetString("Max_pressure_drop_bar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to (max._X_ alphanumerische Zeichen). + /// + internal static string MaxChars { + get { + return ResourceManager.GetString("MaxChars", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. erlaubter Druck!. + /// + internal static string Maximum_admissible_pressure { + get { + return ResourceManager.GetString("Maximum_admissible_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiegen. + /// + internal static string Measure_the_mass { + get { + return ResourceManager.GetString("Measure_the_mass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gemessen. + /// + internal static string Measured { + get { + return ResourceManager.GetString("Measured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messen der Refferenzmasse. + /// + internal static string Measuring_the_reference_mass { + get { + return ResourceManager.GetString("Measuring_the_reference_mass", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiegen. + /// + internal static string Measuring_the_weight { + get { + return ResourceManager.GetString("Measuring_the_weight", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Meldung. + /// + internal static string Message { + get { + return ResourceManager.GetString("Message", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler. + /// + internal static string Meter { + get { + return ResourceManager.GetString("Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Meter Kommunikation läuft. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler geprüft. + /// + internal static string Meter_types_tested { + get { + return ResourceManager.GetString("Meter_types_tested", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messsensoren. + /// + internal static string MetersTabPageTitle { + get { + return ResourceManager.GetString("MetersTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Methode {0} kann nicht benutzt werden!. + /// + internal static string Method_0_cannot_be_used { + get { + return ResourceManager.GetString("Method_0_cannot_be_used", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfverfahren. + /// + internal static string Method_chdr { + get { + return ResourceManager.GetString("Method_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auswahl Prüfart. + /// + internal static string Method_selection { + get { + return ResourceManager.GetString("Method_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Metr. Klasse. + /// + internal static string Metrological_class { + get { + return ResourceManager.GetString("Metrological_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messtechniker. + /// + internal static string Metrologist { + get { + return ResourceManager.GetString("Metrologist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Metr.Daten. + /// + internal static string Metrology { + get { + return ResourceManager.GetString("Metrology", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Min. Höhe. + /// + internal static string Min_height { + get { + return ResourceManager.GetString("Min_height", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Min. Breite. + /// + internal static string Min_width { + get { + return ResourceManager.GetString("Min_width", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucksensor fehlt!. + /// + internal static string Missing_a_pressure_meter { + get { + return ResourceManager.GetString("Missing_a_pressure_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Maßstab fehlt. + /// + internal static string Missing_a_scale { + get { + return ResourceManager.GetString("Missing_a_scale", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfbehälter nicht gefunden!. + /// + internal static string Missing_a_tank_with_volume_measurement { + get { + return ResourceManager.GetString("Missing_a_tank_with_volume_measurement", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ventil fehlt um Vergleichsmessung durchzuführen!. + /// + internal static string Missing_a_valve_for_comparative_method { + get { + return ResourceManager.GetString("Missing_a_valve_for_comparative_method", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Modus. + /// + internal static string Mode { + get { + return ResourceManager.GetString("Mode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mehr. + /// + internal static string More { + get { + return ResourceManager.GetString("More", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mehr. + /// + internal static string MoreBtnText { + get { + return ResourceManager.GetString("MoreBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Montage. + /// + internal static string Mounting { + get { + return ResourceManager.GetString("Mounting", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stummschaltung des Alarms. + /// + internal static string Mute_alarm { + get { + return ResourceManager.GetString("Mute_alarm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Name. + /// + internal static string Name { + get { + return ResourceManager.GetString("Name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine Nr.. + /// + internal static string NaN { + get { + return ResourceManager.GetString("NaN", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Prüfstrecke . + /// + internal static string New_bench_path_name { + get { + return ResourceManager.GetString("New_bench_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Wasserzulauf. + /// + internal static string New_feeding_path_name { + get { + return ResourceManager.GetString("New_feeding_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P heiß. + /// + internal static string New_heat_meters_path_name { + get { + return ResourceManager.GetString("New_heat_meters_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to - Kopie. + /// + internal static string New_name_copy { + get { + return ResourceManager.GetString("New_name_copy", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Durchfluss. + /// + internal static string New_output_path_name { + get { + return ResourceManager.GetString("New_output_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorgang. + /// + internal static string New_procedure_name { + get { + return ResourceManager.GetString("New_procedure_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profil. + /// + internal static string New_profile_name { + get { + return ResourceManager.GetString("New_profile_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neues Durchflussvolumen. + /// + internal static string New_Q_names { + get { + return ResourceManager.GetString("New_Q_names", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to P Sensor. + /// + internal static string New_sensors_path_name { + get { + return ResourceManager.GetString("New_sensors_path_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung . + /// + internal static string New_test_name { + get { + return ResourceManager.GetString("New_test_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neue Bezeichnung. + /// + internal static string New_transition_name { + get { + return ResourceManager.GetString("New_transition_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neue Tabelle. + /// + internal static string NewTabBtnText { + get { + return ResourceManager.GetString("NewTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nächste. + /// + internal static string Next { + get { + return ResourceManager.GetString("Next", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nächstes Prüfvolumen. + /// + internal static string Next_test_volume { + get { + return ResourceManager.GetString("Next_test_volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Weiter >. + /// + internal static string NextBtnText { + get { + return ResourceManager.GetString("NextBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nein. + /// + internal static string no { + get { + return ResourceManager.GetString("no", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine Info vorhanden!. + /// + internal static string No_info_available { + get { + return ResourceManager.GetString("No_info_available", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine Ergebnisse zu drucken!. + /// + internal static string No_results_to_print { + get { + return ResourceManager.GetString("No_results_to_print", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler fehlt!. + /// + internal static string No_water_meter { + get { + return ResourceManager.GetString("No_water_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Es ist kein Prüfstand in der Programmkonfiguration definiert.. + /// + internal static string NoBenchMsg { + get { + return ResourceManager.GetString("NoBenchMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nein. + /// + internal static string NoBtn { + get { + return ResourceManager.GetString("NoBtn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbankverbindung konnte nicht hergestellt werden.. + /// + internal static string NoDatabaseMsg { + get { + return ResourceManager.GetString("NoDatabaseMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bemerkung. + /// + internal static string Notes { + get { + return ResourceManager.GetString("Notes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <Keine Konfiguration notwendig>. + /// + internal static string nothing_to_configure { + get { + return ResourceManager.GetString("nothing_to_configure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benachrichtigung. + /// + internal static string Notification { + get { + return ResourceManager.GetString("Notification", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nr.. + /// + internal static string Nr { + get { + return ResourceManager.GetString("Nr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzahl Zähler in der Gruppe. + /// + internal static string Nr_meters_in_a_group { + get { + return ResourceManager.GetString("Nr_meters_in_a_group", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OK. + /// + internal static string OkBtnText { + get { + return ResourceManager.GetString("OkBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to offen. + /// + internal static string open { + get { + return ResourceManager.GetString("open", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastkopf wurde deaktiviert vom Benutzer!. + /// + internal static string Opto_head_was_disabled_by_the_user { + get { + return ResourceManager.GetString("Opto_head_was_disabled_by_the_user", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Andere. + /// + internal static string Other { + get { + return ResourceManager.GetString("Other", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Regelstrecke. + /// + internal static string Output_chdr { + get { + return ResourceManager.GetString("Output_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ausgabe. + /// + internal static string OutputTabPageTitle { + get { + return ResourceManager.GetString("OutputTabPageTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druckdifferenz. + /// + internal static string P_delta { + get { + return ResourceManager.GetString("P_delta", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck ein . + /// + internal static string P_in { + get { + return ResourceManager.GetString("P_in", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Eingang Ende. + /// + internal static string P_in_end { + get { + return ResourceManager.GetString("P_in_end", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Eingang Start. + /// + internal static string P_in_start { + get { + return ResourceManager.GetString("P_in_start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck aus. + /// + internal static string P_out { + get { + return ResourceManager.GetString("P_out", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Ausgang Ende. + /// + internal static string P_out_end { + get { + return ResourceManager.GetString("P_out_end", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Ausgang Start. + /// + internal static string P_out_start { + get { + return ResourceManager.GetString("P_out_start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seite. + /// + internal static string Page { + get { + return ResourceManager.GetString("Page", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parameter. + /// + internal static string Parameter { + get { + return ResourceManager.GetString("Parameter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parameter. + /// + internal static string Parameters { + get { + return ResourceManager.GetString("Parameters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergeordnete Komponente. + /// + internal static string Parent { + get { + return ResourceManager.GetString("Parent", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergeordneter Name. + /// + internal static string Parent_name { + get { + return ResourceManager.GetString("Parent_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Teil. + /// + internal static string Part { + get { + return ResourceManager.GetString("Part", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to iO. + /// + internal static string Passed { + get { + return ResourceManager.GetString("Passed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwort. + /// + internal static string Password { + get { + return ResourceManager.GetString("Password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwörter sind unterschiedlich! Bitte neu eingeben!. + /// + internal static string Passwords_different { + get { + return ResourceManager.GetString("Passwords_different", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pfade. + /// + internal static string Paths { + get { + return ResourceManager.GetString("Paths", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PID-Regler. + /// + internal static string PID { + get { + return ResourceManager.GetString("PID", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstrecke. + /// + internal static string Pipeline { + get { + return ResourceManager.GetString("Pipeline", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte ändern Sie die folgenden Einstellungen:. + /// + internal static string Please_change_the_following_settings { + get { + return ResourceManager.GetString("Please_change_the_following_settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte wählen Sie anderen Übergangname für Sequenz. + /// + internal static string Please_choose_another_transition_sequence_name { + get { + return ResourceManager.GetString("Please_choose_another_transition_sequence_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ende. + /// + internal static string Please_select_a_cycle_a_test_or_empty { + get { + return ResourceManager.GetString("Please_select_a_cycle_a_test_or_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wählen Sie eine Prüfvorlage. + /// + internal static string Please_select_a_procedure { + get { + return ResourceManager.GetString("Please_select_a_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte wählen Sie eine Prüfung aus.. + /// + internal static string Please_select_a_test { + get { + return ResourceManager.GetString("Please_select_a_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte wählen Sie einen Prüfstand aus.. + /// + internal static string PLs_select_testbench { + get { + return ResourceManager.GetString("PLs_select_testbench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestellung. + /// + internal static string PO { + get { + return ResourceManager.GetString("PO", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Leistung [%]. + /// + internal static string PowerPct { + get { + return ResourceManager.GetString("PowerPct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck tief. + /// + internal static string Pr_down { + get { + return ResourceManager.GetString("Pr_down", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck hoch. + /// + internal static string Pr_up { + get { + return ResourceManager.GetString("Pr_up", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Prüfstrecke max. [bar]. + /// + internal static string Press_lim_hi_chdr { + get { + return ResourceManager.GetString("Press_lim_hi_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck Prüfstrecke min. [bar]. + /// + internal static string Press_lim_lo_chdr { + get { + return ResourceManager.GetString("Press_lim_lo_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OK Drücken um Prüfstand zu starten. + /// + internal static string Press_OK_to_start_the_bench { + get { + return ResourceManager.GetString("Press_OK_to_start_the_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucken Sie OK, wenn Sie fertig sind.. + /// + internal static string Press_OK_when_done { + get { + return ResourceManager.GetString("Press_OK_when_done", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck. + /// + internal static string Pressure { + get { + return ResourceManager.GetString("Pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck bis [bar]. + /// + internal static string Pressure_hi_bar { + get { + return ResourceManager.GetString("Pressure_hi_bar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck von [bar]. + /// + internal static string Pressure_lo_bar { + get { + return ResourceManager.GetString("Pressure_lo_bar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druckverlust Klasse. + /// + internal static string Pressure_loss_class { + get { + return ResourceManager.GetString("Pressure_loss_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucksensor. + /// + internal static string Pressure_meter { + get { + return ResourceManager.GetString("Pressure_meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellung Druck. + /// + internal static string Pressure_selection { + get { + return ResourceManager.GetString("Pressure_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorherige. + /// + internal static string Previous { + get { + return ResourceManager.GetString("Previous", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorherige Ergebnisse. + /// + internal static string Previous_results { + get { + return ResourceManager.GetString("Previous_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorheriger Schritt fehlt oder nicht OK !. + /// + internal static string Previous_step_is_missing_or_NOK { + get { + return ResourceManager.GetString("Previous_step_is_missing_or_NOK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck wiederholen. + /// + internal static string Print_again { + get { + return ResourceManager.GetString("Print_again", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nur gute Ergebnisse Drucken. + /// + internal static string Print_only_good_results { + get { + return ResourceManager.GetString("Print_only_good_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nur die letzte Messung Drucken. + /// + internal static string Print_only_the_last_measurement { + get { + return ResourceManager.GetString("Print_only_the_last_measurement", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ-Ergebnisse Drucken. + /// + internal static string Print_watermeter_results { + get { + return ResourceManager.GetString("Print_watermeter_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucken. + /// + internal static string PrintBtnText { + get { + return ResourceManager.GetString("PrintBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gedruckt. + /// + internal static string Printed { + get { + return ResourceManager.GetString("Printed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucker. + /// + internal static string Printer { + get { + return ResourceManager.GetString("Printer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Drucker. + /// + internal static string PrinterBtnText { + get { + return ResourceManager.GetString("PrinterBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Druck. + /// + internal static string Printing { + get { + return ResourceManager.GetString("Printing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage. + /// + internal static string Procedure { + get { + return ResourceManager.GetString("Procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage {0} hinzugefügt.. + /// + internal static string Procedure_0_added { + get { + return ResourceManager.GetString("Procedure_0_added", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage {0} geändert.. + /// + internal static string Procedure_0_modified { + get { + return ResourceManager.GetString("Procedure_0_modified", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage Name. + /// + internal static string Procedure_name { + get { + return ResourceManager.GetString("Procedure_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlagen. + /// + internal static string Procedures { + get { + return ResourceManager.GetString("Procedures", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prozess. + /// + internal static string Process { + get { + return ResourceManager.GetString("Process", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Hersteller. + /// + internal static string Producer { + get { + return ResourceManager.GetString("Producer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Produktname. + /// + internal static string Product_name { + get { + return ResourceManager.GetString("Product_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profile. + /// + internal static string Profile { + get { + return ResourceManager.GetString("Profile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profil {0} hinzugefügt. + /// + internal static string Profile_0_added { + get { + return ResourceManager.GetString("Profile_0_added", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Profil {0} geändert.. + /// + internal static string Profile_0_modified { + get { + return ResourceManager.GetString("Profile_0_modified", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Programm muss beendet werden!. + /// + internal static string Program_must_be_closed { + get { + return ResourceManager.GetString("Program_must_be_closed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Neustart erforderlich. + /// + internal static string Program_restart_is_required_to_apply_some_settings { + get { + return ResourceManager.GetString("Program_restart_is_required_to_apply_some_settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Programmversion passt nicht.. + /// + internal static string Program_version_does_not_match { + get { + return ResourceManager.GetString("Program_version_does_not_match", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verlauf. + /// + internal static string Progress { + get { + return ResourceManager.GetString("Progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Projektnummer. + /// + internal static string Project_number { + get { + return ResourceManager.GetString("Project_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prompt. + /// + internal static string Prompt { + get { + return ResourceManager.GetString("Prompt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Eigenschaften. + /// + internal static string Properties { + get { + return ResourceManager.GetString("Properties", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geschützter Prüfprozess. + /// + internal static string Protected_procedure { + get { + return ResourceManager.GetString("Protected_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protokoll. + /// + internal static string Protocol { + get { + return ResourceManager.GetString("Protocol", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Protokollname. + /// + internal static string Protocol_title { + get { + return ResourceManager.GetString("Protocol_title", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Veröffentlichen. + /// + internal static string Publish { + get { + return ResourceManager.GetString("Publish", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse. + /// + internal static string Pulses { + get { + return ResourceManager.GetString("Pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse gezählt!. + /// + internal static string Pulses_count { + get { + return ResourceManager.GetString("Pulses_count", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse OK. + /// + internal static string Pulses_count_is_OK { + get { + return ResourceManager.GetString("Pulses_count_is_OK", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string PulsesPerKilogram { + get { + return ResourceManager.GetString("PulsesPerKilogram", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impuls per kWh. + /// + internal static string PulsesPerKWh { + get { + return ResourceManager.GetString("PulsesPerKWh", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Impulse pro Liter. + /// + internal static string PulsesPerLtr { + get { + return ResourceManager.GetString("PulsesPerLtr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string PulsesPerUnit { + get { + return ResourceManager.GetString("PulsesPerUnit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe. + /// + internal static string Pump { + get { + return ResourceManager.GetString("Pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe läuft. + /// + internal static string Pump_is_running { + get { + return ResourceManager.GetString("Pump_is_running", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe Leistung [%]. + /// + internal static string Pump_power_pct { + get { + return ResourceManager.GetString("Pump_power_pct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestellung. + /// + internal static string Purchase_order { + get { + return ResourceManager.GetString("Purchase_order", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bestellung darf max. {0} Ziffern haben!. + /// + internal static string Purchase_order_may_have_max_N_characters { + get { + return ResourceManager.GetString("Purchase_order_may_have_max_N_characters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Befüllen. + /// + internal static string Purge_Begin { + get { + return ResourceManager.GetString("Purge_Begin", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand befüllen?. + /// + internal static string Purge_bench_qm { + get { + return ResourceManager.GetString("Purge_bench_qm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entwässern. + /// + internal static string Purge_End { + get { + return ResourceManager.GetString("Purge_End", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spülen. + /// + internal static string Purging { + get { + return ResourceManager.GetString("Purging", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spülen ({0}: Schritt {1}/{2}). + /// + internal static string Purging_i_n { + get { + return ResourceManager.GetString("Purging_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q von. + /// + internal static string Q_from { + get { + return ResourceManager.GetString("Q_from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q von [l/h]. + /// + internal static string Q_from_lph { + get { + return ResourceManager.GetString("Q_from_lph", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q-Set Methode. + /// + internal static string Q_set_method_chdr { + get { + return ResourceManager.GetString("Q_set_method_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q Ziel. + /// + internal static string Q_tg { + get { + return ResourceManager.GetString("Q_tg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q bis. + /// + internal static string Q_to { + get { + return ResourceManager.GetString("Q_to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Q bis [l/h]. + /// + internal static string Q_to_lph { + get { + return ResourceManager.GetString("Q_to_lph", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qfall. + /// + internal static string Qfall { + get { + return ResourceManager.GetString("Qfall", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qmax [m3/h]. + /// + internal static string Qmax { + get { + return ResourceManager.GetString("Qmax", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qmin [m3/h]. + /// + internal static string Qmin { + get { + return ResourceManager.GetString("Qmin", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qn [m3/h]. + /// + internal static string Qn { + get { + return ResourceManager.GetString("Qn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qsteig. + /// + internal static string Qrise { + get { + return ResourceManager.GetString("Qrise", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Qt [m3/h]. + /// + internal static string Qt { + get { + return ResourceManager.GetString("Qt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Frage. + /// + internal static string Question { + get { + return ResourceManager.GetString("Question", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchflussänderung [%]. + /// + internal static string RateOfChangePct { + get { + return ResourceManager.GetString("RateOfChangePct", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fertig. + /// + internal static string Ready { + get { + return ResourceManager.GetString("Ready", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reduktionsart. + /// + internal static string Red_type_chdr { + get { + return ResourceManager.GetString("Red_type_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Referenzfehler [%]:. + /// + internal static string Ref_error_pct_ { + get { + return ResourceManager.GetString("Ref_error_pct_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.durchfluss [m3/h]:. + /// + internal static string Ref_flow_m3h_ { + get { + return ResourceManager.GetString("Ref_flow_m3h_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.Frequenz [Hz]:. + /// + internal static string Ref_freq_Hz_ { + get { + return ResourceManager.GetString("Ref_freq_Hz_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Referenzmassendichte [kg/m3]. + /// + internal static string Ref_mass_dens_kg_m3 { + get { + return ResourceManager.GetString("Ref_mass_dens_kg_m3", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.Impulse. + /// + internal static string Ref_pulses { + get { + return ResourceManager.GetString("Ref_pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref. Impulse gezählt!. + /// + internal static string Ref_pulses_count { + get { + return ResourceManager.GetString("Ref_pulses_count", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref.Volumen [l]:. + /// + internal static string Ref_volume_l_ { + get { + return ResourceManager.GetString("Ref_volume_l_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to IDM. + /// + internal static string Reference { + get { + return ResourceManager.GetString("Reference", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Refferenzmasse Fehlmessung. + /// + internal static string Reference_mass_measurement_error { + get { + return ResourceManager.GetString("Reference_mass_measurement_error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aktualisierung. + /// + internal static string Refresh { + get { + return ResourceManager.GetString("Refresh", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reg.Ventil. + /// + internal static string Reg_valve { + get { + return ResourceManager.GetString("Reg_valve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reg.Ventilpositionen. + /// + internal static string Reg_valve_pos { + get { + return ResourceManager.GetString("Reg_valve_pos", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Relativer Q von. + /// + internal static string RelativeQfrom { + get { + return ResourceManager.GetString("RelativeQfrom", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Relativer Q bis. + /// + internal static string RelativeQto { + get { + return ResourceManager.GetString("RelativeQto", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vorherige Ergebnisse Herunterladen. + /// + internal static string Reload_previous_results { + get { + return ResourceManager.GetString("Reload_previous_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit. + /// + internal static string remaining_time { + get { + return ResourceManager.GetString("remaining_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bemerkung. + /// + internal static string Remark { + get { + return ResourceManager.GetString("Remark", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remote Datenbank kann nicht Exportiert werden!. + /// + internal static string Remote_database_cannot_be_exported { + get { + return ResourceManager.GetString("Remote_database_cannot_be_exported", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remote Datenbank kann nicht Importiert werden!. + /// + internal static string Remote_database_cannot_be_imported { + get { + return ResourceManager.GetString("Remote_database_cannot_be_imported", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Fernzugriff auf Datenbank is nicht kompatibel.. + /// + internal static string Remote_db_is_not_compatible { + get { + return ResourceManager.GetString("Remote_db_is_not_compatible", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Entfernen. + /// + internal static string Remove { + get { + return ResourceManager.GetString("Remove", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Alles entfernen. + /// + internal static string Remove_all { + get { + return ResourceManager.GetString("Remove_all", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Löschen. + /// + internal static string RemoveBtnText { + get { + return ResourceManager.GetString("RemoveBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tabelle entfernen. + /// + internal static string RemoveTabBtnText { + get { + return ResourceManager.GetString("RemoveTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tabelle umbenennen. + /// + internal static string RenameTabBtnText { + get { + return ResourceManager.GetString("RenameTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Passwort wiederholen. + /// + internal static string Repeat_password { + get { + return ResourceManager.GetString("Repeat_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederh. Nr.. + /// + internal static string Repeats_nr_chdr { + get { + return ResourceManager.GetString("Repeats_nr_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholung. + /// + internal static string Repetition { + get { + return ResourceManager.GetString("Repetition", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Solltemperatur [°C]. + /// + internal static string Required_temperature_C { + get { + return ResourceManager.GetString("Required_temperature_C", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage resetten!. + /// + internal static string Resetting_scales { + get { + return ResourceManager.GetString("Resetting_scales", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Widerstand. + /// + internal static string Resistance { + get { + return ResourceManager.GetString("Resistance", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auflösung. + /// + internal static string Resolution { + get { + return ResourceManager.GetString("Resolution", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte starten Sie die Anwendung erneut um die Änderungen zu übernehmen.. + /// + internal static string Restart_To_Apply_Changes { + get { + return ResourceManager.GetString("Restart_To_Apply_Changes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederherstellen. + /// + internal static string Restore { + get { + return ResourceManager.GetString("Restore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Modus wiederherstellen. + /// + internal static string Restore_session { + get { + return ResourceManager.GetString("Restore_session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnis. + /// + internal static string Result { + get { + return ResourceManager.GetString("Result", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse. + /// + internal static string Results { + get { + return ResourceManager.GetString("Results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse von Zählerlos {0}. + /// + internal static string Results_of_batch_0 { + get { + return ResourceManager.GetString("Results_of_batch_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholen. + /// + internal static string Retry { + get { + return ResourceManager.GetString("Retry", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholen. + /// + internal static string RetryBtnText { + get { + return ResourceManager.GetString("RetryBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Datenbankverbindung wiederherstellen. + /// + internal static string RetryDatabaseText { + get { + return ResourceManager.GetString("RetryDatabaseText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Revision??. + /// + internal static string Revision { + get { + return ResourceManager.GetString("Revision", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to RFID Kommunikation fehlgeschlagen!. + /// + internal static string RFID_communication_failed { + get { + return ResourceManager.GetString("RFID_communication_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Rechts. + /// + internal static string Right { + get { + return ResourceManager.GetString("Right", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ROI Daten. + /// + internal static string ROI_Data { + get { + return ResourceManager.GetString("ROI_Data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ROI-Erkennung läuft. + /// + internal static string ROI_Detection_in_Progress { + get { + return ResourceManager.GetString("ROI_Detection_in_Progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern. + /// + internal static string Save { + get { + return ResourceManager.GetString("Save", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wieder speichern. + /// + internal static string Save_again { + get { + return ResourceManager.GetString("Save_again", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern. + /// + internal static string Save_column_widths { + get { + return ResourceManager.GetString("Save_column_widths", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern aller Ergebniss.. + /// + internal static string Saving_all_results { + get { + return ResourceManager.GetString("Saving_all_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern und Drucken Ergebnisse. + /// + internal static string Saving_and_printing_results { + get { + return ResourceManager.GetString("Saving_and_printing_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern Konfiguration.. + /// + internal static string Saving_configuration { + get { + return ResourceManager.GetString("Saving_configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern Konfiguration fehlheschlagen.. + /// + internal static string Saving_configuration_failed { + get { + return ResourceManager.GetString("Saving_configuration_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse speichern!. + /// + internal static string Saving_results { + get { + return ResourceManager.GetString("Saving_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Speichern Ergebnisse fehlgeschlagen.. + /// + internal static string Saving_results_failed { + get { + return ResourceManager.GetString("Saving_results_failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage Kommunikationsfehler!. + /// + internal static string Scale_communication_error { + get { + return ResourceManager.GetString("Scale_communication_error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waage Kommunikation timeout!. + /// + internal static string Scale_communication_timeout { + get { + return ResourceManager.GetString("Scale_communication_timeout", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bildschirm. + /// + internal static string ScreenBtnText { + get { + return ResourceManager.GetString("ScreenBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to s. + /// + internal static string sec { + get { + return ResourceManager.GetString("sec", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wähle Kaltwasser. + /// + internal static string Select_COLD_tank { + get { + return ResourceManager.GetString("Select_COLD_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Komponenten Auswahl. + /// + internal static string Select_Component { + get { + return ResourceManager.GetString("Select_Component", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wähle Heißwasser. + /// + internal static string Select_HOT_tank { + get { + return ResourceManager.GetString("Select_HOT_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wählen Sie Bilder aus und drücken Sie 'Wiederholen', um die Erkennung zu wiederholen. + /// + internal static string Select_images_and_press_Retry_to_retry_RoI_detection { + get { + return ResourceManager.GetString("Select_images_and_press_Retry_to_retry_RoI_detection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wähle Warmwasser. + /// + internal static string Select_WARM_tank { + get { + return ResourceManager.GetString("Select_WARM_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse ausgewählt. + /// + internal static string Selected_results { + get { + return ResourceManager.GetString("Selected_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messs.. + /// + internal static string Sensor { + get { + return ResourceManager.GetString("Sensor", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastung. + /// + internal static string Sensors { + get { + return ResourceManager.GetString("Sensors", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abtastsysteme. + /// + internal static string Sensors_chdr { + get { + return ResourceManager.GetString("Sensors_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sensus Erweiterungen. + /// + internal static string Sensus_extensions { + get { + return ResourceManager.GetString("Sensus_extensions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Versendet. + /// + internal static string Sent { + get { + return ResourceManager.GetString("Sent", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seriennummer. + /// + internal static string Serial_number { + get { + return ResourceManager.GetString("Serial_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seriennummer. + /// + internal static string SerialNr { + get { + return ResourceManager.GetString("SerialNr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Session. + /// + internal static string Session { + get { + return ResourceManager.GetString("Session", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Kaltwasser Kühltemperatur. + /// + internal static string Set_cold_water_cooling_temperature { + get { + return ResourceManager.GetString("Set_cold_water_cooling_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to setze Durchfluss. + /// + internal static string Set_flow { + get { + return ResourceManager.GetString("Set_flow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Heißwasser Kühltemperatur. + /// + internal static string Set_hot_water_cooling_temperature { + get { + return ResourceManager.GetString("Set_hot_water_cooling_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Heißwasser Heiztemperatur. + /// + internal static string Set_hot_water_heating_temperature { + get { + return ResourceManager.GetString("Set_hot_water_heating_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Setze Pfad. + /// + internal static string Set_route { + get { + return ResourceManager.GetString("Set_route", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Warmwasser Kühltemperatur. + /// + internal static string Set_warm_water_cooling_temperature { + get { + return ResourceManager.GetString("Set_warm_water_cooling_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellen Warmwasser Heiztemperatur. + /// + internal static string Set_warm_water_heating_temperature { + get { + return ResourceManager.GetString("Set_warm_water_heating_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temperatur einstellen. + /// + internal static string Setting_temperature { + get { + return ResourceManager.GetString("Setting_temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfdurchfluss einstellen. + /// + internal static string Setting_the_flow { + get { + return ResourceManager.GetString("Setting_the_flow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abpressdruck einstellen. + /// + internal static string Setting_the_water_pressure { + get { + return ResourceManager.GetString("Setting_the_water_pressure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einstellungen. + /// + internal static string Settings { + get { + return ResourceManager.GetString("Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Schwere. + /// + internal static string Severity { + get { + return ResourceManager.GetString("Severity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kurzbeschreibung. + /// + internal static string Short_dercription { + get { + return ResourceManager.GetString("Short_dercription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kurzbeschreibung. + /// + internal static string Short_description { + get { + return ResourceManager.GetString("Short_description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kurze Impulse. + /// + internal static string Short_pulses { + get { + return ResourceManager.GetString("Short_pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzeigen. + /// + internal static string Show { + get { + return ResourceManager.GetString("Show", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzeigen Ende Zyklus. + /// + internal static string Show_cycle_end_form { + get { + return ResourceManager.GetString("Show_cycle_end_form", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anzeige der deaktivierten Positionen. + /// + internal static string Show_disabled_positions { + get { + return ResourceManager.GetString("Show_disabled_positions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dialog anzeigen. + /// + internal static string ShowDialog { + get { + return ResourceManager.GetString("ShowDialog", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to PC ausschalten nach Beendigung der TBF. + /// + internal static string Shut_down_computer_after_exiting_TBF { + get { + return ResourceManager.GetString("Shut_down_computer_after_exiting_TBF", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Geräte herunterfahren. + /// + internal static string Shutting_down_devices { + get { + return ResourceManager.GetString("Shutting_down_devices", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Seite. + /// + internal static string Side { + get { + return ResourceManager.GetString("Side", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Parallel mit Folgeschritt. + /// + internal static string Simultaneous_with_next_step { + get { + return ResourceManager.GetString("Simultaneous_with_next_step", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prallel mit vorherigem Schritt. + /// + internal static string Simultaneous_with_previous_step { + get { + return ResourceManager.GetString("Simultaneous_with_previous_step", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Einzel. + /// + internal static string SingleBtnText { + get { + return ResourceManager.GetString("SingleBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ursprung. + /// + internal static string Source { + get { + return ResourceManager.GetString("Source", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stabil. + /// + internal static string stable { + get { + return ResourceManager.GetString("stable", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Start. + /// + internal static string Start { + get { + return ResourceManager.GetString("Start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Start Prüfzyklus. + /// + internal static string Start_cycle { + get { + return ResourceManager.GetString("Start_cycle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starte die Pumpe. + /// + internal static string Start_the_pump { + get { + return ResourceManager.GetString("Start_the_pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starte Prüfpunkt. + /// + internal static string Start_the_test { + get { + return ResourceManager.GetString("Start_the_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Starten Sie den Prüfstand. + /// + internal static string Start_the_test_bench { + get { + return ResourceManager.GetString("Start_the_test_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung start. + /// + internal static string Starting_system { + get { + return ResourceManager.GetString("Starting_system", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kamera Start. + /// + internal static string Starting_the_cameras { + get { + return ResourceManager.GetString("Starting_the_cameras", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe starten. + /// + internal static string Starting_the_pump { + get { + return ResourceManager.GetString("Starting_the_pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Startventil. + /// + internal static string StartValve { + get { + return ResourceManager.GetString("StartValve", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stand. + /// + internal static string State { + get { + return ResourceManager.GetString("State", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stopp. + /// + internal static string Stop { + get { + return ResourceManager.GetString("Stop", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pumpe anhalten. + /// + internal static string Stop_the_pump { + get { + return ResourceManager.GetString("Stop_the_pump", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung anhalten. + /// + internal static string Stop_the_test { + get { + return ResourceManager.GetString("Stop_the_test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stop Rückflussventil. + /// + internal static string StopBFValve_chdr { + get { + return ResourceManager.GetString("StopBFValve_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anhalten. + /// + internal static string Stopping { + get { + return ResourceManager.GetString("Stopping", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Durchfluss Anhalten. + /// + internal static string Stopping_flow_for_the_fixed_start { + get { + return ResourceManager.GetString("Stopping_flow_for_the_fixed_start", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter Fehlimpulse WZ!. + /// + internal static string SupressWMTrills { + get { + return ResourceManager.GetString("SupressWMTrills", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umschaltpunkt suchen. + /// + internal static string Switching_flow_detection { + get { + return ResourceManager.GetString("Switching_flow_detection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Umschaltpunkte. + /// + internal static string Switching_Points { + get { + return ResourceManager.GetString("Switching_Points", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T Wärmebad. + /// + internal static string T_bath { + get { + return ResourceManager.GetString("T_bath", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt. + /// + internal static string T_cold { + get { + return ResourceManager.GetString("T_cold", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt Kühlen. + /// + internal static string T_cold_cooling { + get { + return ResourceManager.GetString("T_cold_cooling", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt von. + /// + internal static string T_cold_from { + get { + return ResourceManager.GetString("T_cold_from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T kalt bis. + /// + internal static string T_cold_to { + get { + return ResourceManager.GetString("T_cold_to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T div. + /// + internal static string T_div { + get { + return ResourceManager.GetString("T_div", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T heiß Kühlen. + /// + internal static string T_hot_cooling { + get { + return ResourceManager.GetString("T_hot_cooling", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T heiß heizen. + /// + internal static string T_hot_heating { + get { + return ResourceManager.GetString("T_hot_heating", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T ein. + /// + internal static string T_in { + get { + return ResourceManager.GetString("T_in", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T einlass. + /// + internal static string T_inlet { + get { + return ResourceManager.GetString("T_inlet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T aus. + /// + internal static string T_out { + get { + return ResourceManager.GetString("T_out", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T auslauf. + /// + internal static string T_outlet { + get { + return ResourceManager.GetString("T_outlet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T m kalt. + /// + internal static string T_ref_cold { + get { + return ResourceManager.GetString("T_ref_cold", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T m warm. + /// + internal static string T_ref_warm { + get { + return ResourceManager.GetString("T_ref_warm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm. + /// + internal static string T_warm { + get { + return ResourceManager.GetString("T_warm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm Kühlen. + /// + internal static string T_warm_cooling { + get { + return ResourceManager.GetString("T_warm_cooling", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm von. + /// + internal static string T_warm_from { + get { + return ResourceManager.GetString("T_warm_from", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm heizen. + /// + internal static string T_warm_heating { + get { + return ResourceManager.GetString("T_warm_heating", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T warm bis. + /// + internal static string T_warm_to { + get { + return ResourceManager.GetString("T_warm_to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T v kalt. + /// + internal static string T_work_cold { + get { + return ResourceManager.GetString("T_work_cold", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to T v warm. + /// + internal static string T_work_warm { + get { + return ResourceManager.GetString("T_work_warm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfdurchfluss Hi [m3/h]:. + /// + internal static string Target_flow_hi_m3h_ { + get { + return ResourceManager.GetString("Target_flow_hi_m3h_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfdurchfluss Lo [m3/h]:. + /// + internal static string Target_flow_lo_m3h_ { + get { + return ResourceManager.GetString("Target_flow_lo_m3h_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfimpulse:. + /// + internal static string Target_ref_pulses_ { + get { + return ResourceManager.GetString("Target_ref_pulses_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvolumen [l]:. + /// + internal static string Target_volume_l_ { + get { + return ResourceManager.GetString("Target_volume_l_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ziel Q [m3/h]. + /// + internal static string TargetQ { + get { + return ResourceManager.GetString("TargetQ", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tarrieren. + /// + internal static string Tarring { + get { + return ResourceManager.GetString("Tarring", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Obere Temperaturgrenze. + /// + internal static string Temp_lim_hi_chdr { + get { + return ResourceManager.GetString("Temp_lim_hi_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Untere Temperaturgrenze. + /// + internal static string Temp_lim_lo_chdr { + get { + return ResourceManager.GetString("Temp_lim_lo_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temperatur. + /// + internal static string Temperature { + get { + return ResourceManager.GetString("Temperature", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Temperaturklasse. + /// + internal static string Temperature_class { + get { + return ResourceManager.GetString("Temperature_class", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkt. + /// + internal static string Test { + get { + return ResourceManager.GetString("Test", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand. + /// + internal static string Test_bench { + get { + return ResourceManager.GetString("Test_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandskomponenten Konfiguration. + /// + internal static string Test_Bench_Components_Configuration { + get { + return ResourceManager.GetString("Test_Bench_Components_Configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandsdaten. + /// + internal static string Test_bench_data { + get { + return ResourceManager.GetString("Test_bench_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Grunddaten Spezifikation. + /// + internal static string Test_Bench_Databases_Specification { + get { + return ResourceManager.GetString("Test_Bench_Databases_Specification", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand wird von diesem Computer gesteuert. + /// + internal static string Test_bench_is_controlled_by_this_computer { + get { + return ResourceManager.GetString("Test_bench_is_controlled_by_this_computer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstandsname. + /// + internal static string Test_bench_name { + get { + return ResourceManager.GetString("Test_bench_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstand Nr.. + /// + internal static string Test_bench_number { + get { + return ResourceManager.GetString("Test_bench_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfstände :. + /// + internal static string Test_Benches_ { + get { + return ResourceManager.GetString("Test_Benches_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkt. + /// + internal static string Test_chdr { + get { + return ResourceManager.GetString("Test_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung abgeschlossen. + /// + internal static string Test_completed { + get { + return ResourceManager.GetString("Test_completed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Teste Verbindung. + /// + internal static string Test_connection { + get { + return ResourceManager.GetString("Test_connection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung läuft. + /// + internal static string Test_in_progress { + get { + return ResourceManager.GetString("Test_in_progress", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Korrigierte Prüfung. + /// + internal static string Test_measured_corrected { + get { + return ResourceManager.GetString("Test_measured_corrected", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfart. + /// + internal static string Test_method { + get { + return ResourceManager.GetString("Test_method", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvorlage. + /// + internal static string Test_name { + get { + return ResourceManager.GetString("Test_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung vorbereiten. + /// + internal static string Test_preparation { + get { + return ResourceManager.GetString("Test_preparation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfungsprofile. + /// + internal static string Test_profiles { + get { + return ResourceManager.GetString("Test_profiles", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test Profilselektion. + /// + internal static string Test_profiles_selection { + get { + return ResourceManager.GetString("Test_profiles_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wiederholungsprüfungen; Anzahl überschritten!. + /// + internal static string Test_repetition_count_exceeded_upper_limit { + get { + return ResourceManager.GetString("Test_repetition_count_exceeded_upper_limit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ergebnisse werden verloren gehen.. + /// + internal static string Test_results_will_be_lost { + get { + return ResourceManager.GetString("Test_results_will_be_lost", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfung Start ({0}: Schritt {1}/{2}). + /// + internal static string Test_start_sequence_i_n { + get { + return ResourceManager.GetString("Test_start_sequence_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ürüfung Stop ({0}: Schritt {1}/{2}). + /// + internal static string Test_stop_sequence_i_n { + get { + return ResourceManager.GetString("Test_stop_sequence_i_n", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Dauer. + /// + internal static string Test_time { + get { + return ResourceManager.GetString("Test_time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfvolumen überschreitet Wägevolumen. + /// + internal static string Test_volume_exceeds_the_scale_capacity { + get { + return ResourceManager.GetString("Test_volume_exceeds_the_scale_capacity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfer. + /// + internal static string Tester { + get { + return ResourceManager.GetString("Tester", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüftechniker. + /// + internal static string Testing_Specialist { + get { + return ResourceManager.GetString("Testing_Specialist", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkte sind Spalten. + /// + internal static string Tests_are_columns { + get { + return ResourceManager.GetString("Tests_are_columns", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prüfpunkte sind Zeilen. + /// + internal static string Tests_are_rows { + get { + return ResourceManager.GetString("Tests_are_rows", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Die folgenden Komponenten sind im Simulationsmodus:. + /// + internal static string The_following_components_are_in_simulation_mode_ { + get { + return ResourceManager.GetString("The_following_components_are_in_simulation_mode_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Keine optischen Impulse vorhanden. + /// + internal static string There_are_no_opto_pulses { + get { + return ResourceManager.GetString("There_are_no_opto_pulses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stab. Zeit [s]. + /// + internal static string Time2MassMsrmt_chdr { + get { + return ResourceManager.GetString("Time2MassMsrmt_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit zur Durchflusseinst. [s]. + /// + internal static string TimeBeforeSettingFlow { + get { + return ResourceManager.GetString("TimeBeforeSettingFlow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit Durchfl. IO-Start [s]. + /// + internal static string TimeFlow2Start_chdr { + get { + return ResourceManager.GetString("TimeFlow2Start_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit abgelaufen. + /// + internal static string Timeout { + get { + return ResourceManager.GetString("Timeout", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zeit Pumpe-Startventil [s]. + /// + internal static string TimePump2StartV_chdr { + get { + return ResourceManager.GetString("TimePump2StartV_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to bis. + /// + internal static string to { + get { + return ResourceManager.GetString("to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Tol. Abzug [%]. + /// + internal static string Tol_red_pct_chdr { + get { + return ResourceManager.GetString("Tol_red_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergangsequenz. + /// + internal static string Transition_sequence { + get { + return ResourceManager.GetString("Transition_sequence", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zwischen den Wiederholungsprüfungen. + /// + internal static string TransitionBetween_chdr { + get { + return ResourceManager.GetString("TransitionBetween_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ubergang - Ende. + /// + internal static string TransitionEnd_chdr { + get { + return ResourceManager.GetString("TransitionEnd_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Übergänge. + /// + internal static string Transitions { + get { + return ResourceManager.GetString("Transitions", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ubergang - Start. + /// + internal static string TransitionStart_chdr { + get { + return ResourceManager.GetString("TransitionStart_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Richtung ändern. + /// + internal static string Turning_direction { + get { + return ResourceManager.GetString("Turning_direction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type. + /// + internal static string Type { + get { + return ResourceManager.GetString("Type", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messunsicherheit. + /// + internal static string Uncertainty { + get { + return ResourceManager.GetString("Uncertainty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Messunsicherheit der Korrektur. + /// + internal static string Uncertainty_of_correction { + get { + return ResourceManager.GetString("Uncertainty_of_correction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unsicherheit [%]. + /// + internal static string Uncertainty_pct_chdr { + get { + return ResourceManager.GetString("Uncertainty_pct_chdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unbestätigte Ereignisse. + /// + internal static string Unconfirmed_events { + get { + return ResourceManager.GetString("Unconfirmed_events", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Es trat ein unbehandelter Fehler auf in . + /// + internal static string Unhandled_error_occured_in_ { + get { + return ResourceManager.GetString("Unhandled_error_occured_in_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string Units { + get { + return ResourceManager.GetString("Units", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ändern. + /// + internal static string UnlockBtnText { + get { + return ResourceManager.GetString("UnlockBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Abwahl Aktueller Behälter. + /// + internal static string Unselect_current_tank { + get { + return ResourceManager.GetString("Unselect_current_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aufwärts. + /// + internal static string UpBtnText { + get { + return ResourceManager.GetString("UpBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Update. + /// + internal static string Update { + get { + return ResourceManager.GetString("Update", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verwendung {0}. + /// + internal static string Use_0 { + get { + return ResourceManager.GetString("Use_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer. + /// + internal static string User { + get { + return ResourceManager.GetString("User", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzercode. + /// + internal static string User_code { + get { + return ResourceManager.GetString("User_code", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Anmelden. + /// + internal static string User_Login { + get { + return ResourceManager.GetString("User_Login", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer. + /// + internal static string User_Management { + get { + return ResourceManager.GetString("User_Management", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzername. + /// + internal static string User_name { + get { + return ResourceManager.GetString("User_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzername. + /// + internal static string Username { + get { + return ResourceManager.GetString("Username", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzername bereits vorhanden. Bitte einen anderen Benutzername wählen.. + /// + internal static string Username_taken { + get { + return ResourceManager.GetString("Username_taken", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer. + /// + internal static string Users { + get { + return ResourceManager.GetString("Users", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Benutzer und Gruppen. + /// + internal static string Users_and_groups { + get { + return ResourceManager.GetString("Users_and_groups", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gültig bis. + /// + internal static string Valid_until { + get { + return ResourceManager.GetString("Valid_until", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wert. + /// + internal static string Value { + get { + return ResourceManager.GetString("Value", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Version. + /// + internal static string Version { + get { + return ResourceManager.GetString("Version", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Version {0}. + /// + internal static string VersionStr { + get { + return ResourceManager.GetString("VersionStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vertikal. + /// + internal static string Vertically { + get { + return ResourceManager.GetString("Vertically", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Virtuelle Prüfstandssequenz. + /// + internal static string Virtual_bench_sequence { + get { + return ResourceManager.GetString("Virtual_bench_sequence", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Spannung. + /// + internal static string Voltage { + get { + return ResourceManager.GetString("Voltage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen. + /// + internal static string Volume { + get { + return ResourceManager.GetString("Volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Auswahl Volumen und Fehlergrenzen. + /// + internal static string Volume_and_error_selection { + get { + return ResourceManager.GetString("Volume_and_error_selection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen im Behälter. + /// + internal static string Volume_to_tank { + get { + return ResourceManager.GetString("Volume_to_tank", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen im Behälter überschreitet die Waagenkapazität!. + /// + internal static string Volume_to_tank_exceeds_the_scale_capacity { + get { + return ResourceManager.GetString("Volume_to_tank_exceeds_the_scale_capacity", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Volumen im Behälter höher als Prüfvolumen!. + /// + internal static string Volume_to_tank_is_larger_then_the_test_volume { + get { + return ResourceManager.GetString("Volume_to_tank_is_larger_then_the_test_volume", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bitte warten. + /// + internal static string Wait_please { + get { + return ResourceManager.GetString("Wait_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warten bis. + /// + internal static string Wait_until { + get { + return ResourceManager.GetString("Wait_until", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warte bis {0} Messbehälter leer ist!. + /// + internal static string Wait_until_0_tank_is_empty { + get { + return ResourceManager.GetString("Wait_until_0_tank_is_empty", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warnung. + /// + internal static string Warning { + get { + return ResourceManager.GetString("Warning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasser. + /// + internal static string Water { + get { + return ResourceManager.GetString("Water", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserstand in mm. + /// + internal static string Water_level_in_mm { + get { + return ResourceManager.GetString("Water_level_in_mm", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler. + /// + internal static string Water_Meter { + get { + return ResourceManager.GetString("Water_Meter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler Daten. + /// + internal static string Water_meter_data { + get { + return ResourceManager.GetString("Water_meter_data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ-Serienummer-Stand. + /// + internal static string Water_Meter_SNs_States { + get { + return ResourceManager.GetString("Water_Meter_SNs_States", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ-Stand. + /// + internal static string Water_Meter_States { + get { + return ResourceManager.GetString("Water_Meter_States", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Wasserzähler Typen. + /// + internal static string Water_meter_types { + get { + return ResourceManager.GetString("Water_meter_types", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Zählerdaten. + /// + internal static string Water_meters { + get { + return ResourceManager.GetString("Water_meters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WZ_Stand. + /// + internal static string WMState { + get { + return ResourceManager.GetString("WMState", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to iPERL falsche Durchflussrichtung!. + /// + internal static string Wrong_iPerl_counting_direction { + get { + return ResourceManager.GetString("Wrong_iPerl_counting_direction", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Eichjahr. + /// + internal static string Year_of_production { + get { + return ResourceManager.GetString("Year_of_production", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ja. + /// + internal static string yes { + get { + return ResourceManager.GetString("yes", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ja. + /// + internal static string YesBtn { + get { + return ResourceManager.GetString("YesBtn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nullstellen. + /// + internal static string Zeroing_chdr { + get { + return ResourceManager.GetString("Zeroing_chdr", resourceCulture); + } + } + } +} diff --git a/TBF/Resources/Strings.de.resx b/TBF/Resources/Strings.de.resx index 1af7a2954..675a32298 100644 --- a/TBF/Resources/Strings.de.resx +++ b/TBF/Resources/Strings.de.resx @@ -1023,8 +1023,8 @@ Prallel mit vorherigem Schritt - - iPerl Kommunikation läuft + + Meter Kommunikation läuft Sprache diff --git a/TBF/Resources/Strings.fr.resx b/TBF/Resources/Strings.fr.resx index 2454e6cec..5b63f80f0 100644 --- a/TBF/Resources/Strings.fr.resx +++ b/TBF/Resources/Strings.fr.resx @@ -1020,7 +1020,7 @@ Simultanée étape précédente - + iPerl Communication en cours diff --git a/TBF/Resources/Strings.it.resx b/TBF/Resources/Strings.it.resx index 84f8d64d5..b700dfed6 100644 --- a/TBF/Resources/Strings.it.resx +++ b/TBF/Resources/Strings.it.resx @@ -1017,8 +1017,8 @@ simultaneo con il passo precedente - - iPerl comunicazioni in corso + + Meter comunicazioni in corso lingua diff --git a/TBF/Resources/Strings.pl.resx b/TBF/Resources/Strings.pl.resx index a68877112..7036778c3 100644 --- a/TBF/Resources/Strings.pl.resx +++ b/TBF/Resources/Strings.pl.resx @@ -1011,8 +1011,8 @@ Jednocześnie z poprzednim krokiem - - Komunikacja z iPERL w toku + + Komunikacja z vodomera w toku Język diff --git a/TBF/Resources/Strings.resx b/TBF/Resources/Strings.resx index 98c8cd654..064b2ec0a 100644 --- a/TBF/Resources/Strings.resx +++ b/TBF/Resources/Strings.resx @@ -543,6 +543,12 @@ Pulses per liter + + Delay between pictures + + + Pictures Count + Component @@ -1042,8 +1048,8 @@ Simultaneous with previous step - - iPerl Communication in progress + + Meter Communication in progress Language @@ -1732,6 +1738,9 @@ RFID communication failed + + Radio Communication failed + Disabled by user diff --git a/TBF/Resources/Strings.ru.resx b/TBF/Resources/Strings.ru.resx index 1bb6a3835..ec13473b8 100644 --- a/TBF/Resources/Strings.ru.resx +++ b/TBF/Resources/Strings.ru.resx @@ -1011,8 +1011,8 @@ Одновременно с предыдущим шагом - - Осуществляется связь с iPerl + + Осуществляется связь с водомером Язык diff --git a/TBF/Resources/Strings.zh-CN.Designer.cs b/TBF/Resources/Strings.zh-CN.Designer.cs index 751b38e63..8cae209d2 100644 --- a/TBF/Resources/Strings.zh-CN.Designer.cs +++ b/TBF/Resources/Strings.zh-CN.Designer.cs @@ -1202,15 +1202,6 @@ namespace TBF.Resources { } } - /// - /// Looks up a localized string similar to 正在进行Iperl通信. - /// - internal static string iPerl_Communication_in_progress { - get { - return ResourceManager.GetString("iPerl_Communication_in_progress", resourceCulture); - } - } - /// /// Looks up a localized string similar to 语言. /// @@ -1373,6 +1364,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to 正在进行Iperl通信. + /// + internal static string Meter_Communication_in_progress { + get { + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); + } + } + /// /// Looks up a localized string similar to 测试仪表型号. /// @@ -2057,6 +2057,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to . + /// + internal static string PulsesPerKilogram { + get { + return ResourceManager.GetString("PulsesPerKilogram", resourceCulture); + } + } + /// /// Looks up a localized string similar to 每升脉冲. /// @@ -2066,6 +2075,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to . + /// + internal static string PulsesPerUnit { + get { + return ResourceManager.GetString("PulsesPerUnit", resourceCulture); + } + } + /// /// Looks up a localized string similar to 水泵. /// @@ -2492,9 +2510,9 @@ namespace TBF.Resources { /// /// Looks up a localized string similar to 序列号. /// - internal static string Serial_Number { + internal static string Serial_number { get { - return ResourceManager.GetString("Serial_Number", resourceCulture); + return ResourceManager.GetString("Serial_number", resourceCulture); } } @@ -3074,6 +3092,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to . + /// + internal static string Units { + get { + return ResourceManager.GetString("Units", resourceCulture); + } + } + /// /// Looks up a localized string similar to 解锁 Unlock. /// diff --git a/TBF/Resources/Strings.zh-CN.resx b/TBF/Resources/Strings.zh-CN.resx index c10a02c9c..ff3de7a90 100644 --- a/TBF/Resources/Strings.zh-CN.resx +++ b/TBF/Resources/Strings.zh-CN.resx @@ -1005,7 +1005,7 @@ 同时进行之前步骤 - + 正在进行Iperl通信 diff --git a/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs b/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs index 8d222e048..d94f7471f 100644 --- a/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs +++ b/TBF/Rig/DataEntry/StandartCameraPurchaseOrder/TestStartEndForm.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using log4net; @@ -70,6 +71,9 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder int lastWmNr1; Bitmap lastImage; /// non-zoomed image Bitmap zoomedImage; + private readonly List currentImageGroup = new List();//multiple pictures + private int currentImageGroupIndex; + private bool mouseOverPictureBox; Thread imageProcessingThread; /// Thread to process images public delegate void OcrTextObtainedDelegate(int ix, bool isEnd, string text); @@ -96,6 +100,12 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder public TestStartEndForm() { InitializeComponent(); + + KeyPreview = true; + + pictureBox1.MouseWheel += pictureBox1_MouseWheel; + pictureBox1.MouseEnter += pictureBox1_MouseEnter; + pictureBox1.MouseLeave += pictureBox1_MouseLeave; this.Icon = Properties.Resources.TBF_icon; @@ -483,15 +493,46 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder startTextBoxes[i].TextChanged += new System.EventHandler(this.startTextBoxX_TextChanged); startTextBoxes[i].KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.startTextBoxX_KeyPress); startTextBoxes[i].MouseDown += new System.Windows.Forms.MouseEventHandler(this.startTextBoxX_MouseDown); + startTextBoxes[i].Enter += startTextBoxX_Enter; } + private void startTextBoxX_Enter(object sender, EventArgs e) + { + var textBox = sender as TextBox; + if (textBox == null) { return; } + + int physPos = PhysPos(textBox, startTextBoxes); + + if (physPos >= 0) + { + LoadImage(sender, Tst.Start, physPos); + } + } + + + private void EndTextBox_EnableHanders(int i) { endTextBoxes[i].AcceptsTabChanged += new System.EventHandler(this.endTextBoxX_AcceptsTabChanged); endTextBoxes[i].TextChanged += new System.EventHandler(this.endTextBoxX_TextChanged); endTextBoxes[i].KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.endTextBoxX_KeyPress); endTextBoxes[i].MouseDown += new System.Windows.Forms.MouseEventHandler(this.endTextBoxX_AcceptsTabChanged); + endTextBoxes[i].Enter += endTextBoxX_Enter; } + + private void endTextBoxX_Enter(object sender, EventArgs e) + { + var textBox = sender as TextBox; + if (textBox == null) { return; } + + int physPos = PhysPos(textBox, endTextBoxes); + + if (physPos >= 0) + { + LoadImage(sender, Tst.End, physPos); + } + } + private void TestStartEndForm_FormClosed(object sender, FormClosedEventArgs e) { @@ -763,7 +804,7 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder TextBox clickedTextBox = sender as TextBox; if (clickedTextBox != null) { - var physPos = PhysPos(clickedTextBox, startTextBoxes); + var physPos = PhysPos(clickedTextBox, endTextBoxes);//startTextBoxes); if (physPos < 0) { @@ -1069,7 +1110,7 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder TextBox clickedTextBox = sender as TextBox; if (clickedTextBox != null) { - var physPos = PhysPos(clickedTextBox, startTextBoxes); + var physPos = PhysPos(clickedTextBox, endTextBoxes);//startTextBoxes); if (physPos < 0) { @@ -1134,65 +1175,479 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder /// /// Tst.Start or Tst.End /// 0..23 - void LoadImage(object sender, Tst startOrEnd, int physPos) - { - int wmNr1b = phys2wm[physPos]; /// 0 means no WM - if (wmNr1b <= 0) return; + void LoadImage( object sender, Tst startOrEnd, int physPos) + { + if (physPos < 0 || physPos >= phys2wm.Length) + { + return; + } - wmNr0b = wmNr1b - 1; + int wmNr1b = phys2wm[physPos]; - string imageFileName; - if (startOrEnd == Tst.Start && startImages[wmNr0b] != null) - imageFileName = startImages[wmNr0b]; - else if (startOrEnd == Tst.End && endImages[wmNr0b] != null) - imageFileName = endImages[wmNr0b]; - else - imageFileName = string.Empty; + // Hodnota 0 znamená, že na tejto fyzickej pozícii nie je vodomer. + if (wmNr1b <= 0) + { + return; + } - if (imageFileName == lastImageName) - { - return; - } + wmNr0b = wmNr1b - 1; - lastImageName = imageFileName; - lastWmNr1 = wmNr1b; + string imageFileName = GetBaseImageFileName( + startOrEnd, + wmNr0b); - if (string.IsNullOrEmpty(imageFileName) || !File.Exists(imageFileName)) - { - lastImage = null; - } - else - { - using (Bitmap tempBmp = Image.FromFile(imageFileName) as Bitmap) + lastWmNr1 = wmNr1b; + + if (string.IsNullOrWhiteSpace(imageFileName)) + { + ClearImageGroup(); + LoadImageFile(null); + return; + } + + /* + * Ak používateľ zvolil iný vodomer alebo Start/End obrázok, + * vytvoríme novú skupinu: + * + * TestAdvance-1-start.bmp + * TestAdvance-1-start_img01_....bmp + * TestAdvance-1-start_img02_....bmp + */ + if (!string.Equals( + imageFileName, + lastImageName, + StringComparison.OrdinalIgnoreCase)) + { + lastImageName = imageFileName; + + LoadImageGroup(imageFileName); + + // Pôvodný kompatibilný obrázok bude zobrazený ako prvý. + currentImageGroupIndex = 0; + } + else + { + /* + * Súbory mohli vzniknúť až po prvom otvorení dialógu, + * preto skupinu pri opätovnom výbere obnovíme. + */ + RefreshCurrentImageGroup(); + } + + if (currentImageGroup.Count == 0) + { + LoadImageFile(null); + return; + } + + currentImageGroupIndex = Math.Max( + 0, + Math.Min( + currentImageGroupIndex, + currentImageGroup.Count - 1)); + + LoadImageFile( + currentImageGroup[currentImageGroupIndex]); + } + + /// + /// base name of image file + /// + /// + /// + /// + private string GetBaseImageFileName( + Tst startOrEnd, + int waterMeterIndex) + { + if (waterMeterIndex < 0 || + waterMeterIndex >= WaterMetersCount) + { + return null; + } + + if (startOrEnd == Tst.Start) + { + if (startImages == null || + waterMeterIndex >= startImages.Length) { - Rectangle rect; - if (tempBmp.Height < tempBmp.Width) + return null; + } + + return startImages[waterMeterIndex]; + } + + if (startOrEnd == Tst.End) + { + if (endImages == null || + waterMeterIndex >= endImages.Length) + { + return null; + } + + return endImages[waterMeterIndex]; + } + + return null; + } + + /// + /// load group of images + /// + /// + private void LoadImageGroup( + string baseImageFileName) + { + currentImageGroup.Clear(); + currentImageGroupIndex = 0; + + if (string.IsNullOrWhiteSpace(baseImageFileName)) + { + return; + } + + string fullBaseFileName; + + try + { + fullBaseFileName = + Path.GetFullPath(baseImageFileName); + } + catch (Exception exc) + { + log.Warn( + $"Cannot create image group from invalid path: " + + $"file='{baseImageFileName}', " + + $"error={exc.Message}"); + + return; + } + + string directory = + Path.GetDirectoryName(fullBaseFileName); + + string baseName = + Path.GetFileNameWithoutExtension(fullBaseFileName); + + string extension = + Path.GetExtension(fullBaseFileName); + + if (string.IsNullOrWhiteSpace(directory) || + string.IsNullOrWhiteSpace(baseName)) + { + return; + } + + /* + * Pôvodný obrázok pridáme ako prvý. + */ + if (File.Exists(fullBaseFileName)) + { + currentImageGroup.Add(fullBaseFileName); + } + + if (!Directory.Exists(directory)) + { + return; + } + + string searchPattern = + $"{baseName}_img*{extension}"; + + try + { + List timedImages = + Directory + .GetFiles( + directory, + searchPattern, + SearchOption.TopDirectoryOnly) + .OrderBy(GetTimedImageIndex) + .ThenBy( + fileName => fileName, + StringComparer.OrdinalIgnoreCase) + .ToList(); + + foreach (string timedImage in timedImages) + { + if (!currentImageGroup.Contains( + timedImage, + StringComparer.OrdinalIgnoreCase)) { - int hght = tempBmp.Height; - int leftMargin = (tempBmp.Width - hght) / 2; - rect = new Rectangle(leftMargin, 0, hght, hght); - } - else - { - int hght = tempBmp.Height; - int wdth = tempBmp.Width; - int margin = (hght - wdth) / 2; - rect = new Rectangle(0, margin, wdth, wdth); - } - //int hght = tempBmp.Height; - //int leftMargin = (tempBmp.Width - hght) / 2; - //lastImage = new Bitmap(tempBmp.Clone(new Rectangle(leftMargin, 0, hght, hght), tempBmp.PixelFormat)); - lastImage = new Bitmap(tempBmp.Clone(rect, tempBmp.PixelFormat)); - if (isZoomed[wmNr0b]) - { - zoomedImage = MakeZoomedImage(lastImage, zoomCenterLoc[wmNr0b]); + currentImageGroup.Add(timedImage); } } - } - ShowImage(); - } + log.Debug( + $"Image group loaded: " + + $"baseFile='{fullBaseFileName}', " + + $"searchPattern='{searchPattern}', " + + $"imagesCount={currentImageGroup.Count}"); + } + catch (Exception exc) + { + log.Warn( + $"Cannot load image group: " + + $"baseFile='{fullBaseFileName}', " + + $"pattern='{searchPattern}', " + + $"error={exc.Message}"); + } + } + /// + /// grouping by time + /// + /// + /// + private static int GetTimedImageIndex( + string fileName) + { + if (string.IsNullOrWhiteSpace(fileName)) + { + return int.MaxValue; + } + string nameWithoutExtension = + Path.GetFileNameWithoutExtension(fileName); + + Match match = Regex.Match( + nameWithoutExtension, + @"_img(?\d+)_", + RegexOptions.IgnoreCase); + + if (!match.Success) + { + return int.MaxValue; + } + + int imageIndex; + + return int.TryParse( + match.Groups["index"].Value, + out imageIndex) + ? imageIndex + : int.MaxValue; + } + + /// + /// refreshing current image group + /// + private void RefreshCurrentImageGroup() + { + if (string.IsNullOrWhiteSpace(lastImageName)) + { + return; + } + + string currentlySelectedFile = + currentImageGroupIndex >= 0 && + currentImageGroupIndex < currentImageGroup.Count + ? currentImageGroup[currentImageGroupIndex] + : null; + + LoadImageGroup(lastImageName); + + if (string.IsNullOrWhiteSpace(currentlySelectedFile)) + { + return; + } + + int restoredIndex = + currentImageGroup.FindIndex( + fileName => + string.Equals( + fileName, + currentlySelectedFile, + StringComparison.OrdinalIgnoreCase)); + + if (restoredIndex >= 0) + { + currentImageGroupIndex = restoredIndex; + } + } + /// --- picture load --- + private void LoadImageFile( + string imageFileName) + { + DisposeLoadedImages(); + + if (string.IsNullOrWhiteSpace(imageFileName) || + !File.Exists(imageFileName)) + { + log.Debug( + $"Image cannot be displayed because the file does not exist: " + + $"file='{imageFileName}'"); + + ShowImage(); + return; + } + + try + { + using (var tempBmp = + new Bitmap(imageFileName)) + { + Rectangle rect = + CreateSquareCropRectangle(tempBmp); + + using (Bitmap croppedImage = + tempBmp.Clone( + rect, + tempBmp.PixelFormat)) + { + lastImage = + new Bitmap(croppedImage); + } + } + + if (isZoomed[wmNr0b]) + { + zoomedImage = + MakeZoomedImage( + lastImage, + zoomCenterLoc[wmNr0b]); + } + + log.Debug( + $"Image displayed from group: " + + $"waterMeter={lastWmNr1}, " + + $"groupIndex={currentImageGroupIndex + 1}/" + + $"{currentImageGroup.Count}, " + + $"file='{imageFileName}'"); + } + catch (Exception exc) + { + log.Error( + $"Cannot load image: " + + $"file='{imageFileName}', " + + $"error={exc.Message}", + exc); + + DisposeLoadedImages(); + } + + ShowImage(); + } + + /// --- block picture Crop help method --- + private static Rectangle CreateSquareCropRectangle( Bitmap bitmap) + { + int size = Math.Min( bitmap.Width, bitmap.Height); + int x = (bitmap.Width - size) / 2; + int y = (bitmap.Height - size) / 2; + + return new Rectangle( x, y, size, size); + } + + // --- block release old pictures --- + private void DisposeLoadedImages() + { + if (lastImage != null) + { + lastImage.Dispose(); + lastImage = null; + } + + if (zoomedImage != null) + { + zoomedImage.Dispose(); + zoomedImage = null; + } + } + + private void ClearImageGroup() + { + currentImageGroup.Clear(); + currentImageGroupIndex = 0; + lastImageName = null; + } + + // --- block picture exchange --- + private void ShowPreviousImageFromGroup() + { + ShowImageFromGroup(-1); + } + + private void ShowNextImageFromGroup() + { + ShowImageFromGroup(1); + } + + private void ShowImageFromGroup( + int direction) + { + if (direction == 0 || + currentImageGroup.Count <= 1) + { + return; + } + + int newIndex = + currentImageGroupIndex + direction; + + /* + * Cyklické prepínanie: + * + * posledný -> prvý + * prvý -> posledný + */ + if (newIndex < 0) + { + newIndex = + currentImageGroup.Count - 1; + } + else if (newIndex >= currentImageGroup.Count) + { + newIndex = 0; + } + + currentImageGroupIndex = newIndex; + + LoadImageFile( + currentImageGroup[currentImageGroupIndex]); + } + + + // --- mouse events --- + + private void pictureBox1_MouseEnter( + object sender, + EventArgs e) + { + mouseOverPictureBox = true; + + /* + * PictureBox štandardne nemusí mať focus. + * Focus pomôže zachytiť klávesy aj koliesko. + */ + pictureBox1.Focus(); + } + + private void pictureBox1_MouseLeave( + object sender, + EventArgs e) + { + mouseOverPictureBox = false; + } + + private void pictureBox1_MouseWheel( + object sender, + MouseEventArgs e) + { + if (!mouseOverPictureBox || + currentImageGroup.Count <= 1) + { + return; + } + + if (e.Delta > 0) + { + ShowPreviousImageFromGroup(); + } + else if (e.Delta < 0) + { + ShowNextImageFromGroup(); + } + } /// /// Left click = Zoom, Right click = Unzoom @@ -1276,7 +1731,9 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder { if (lastImage == null) { + Image previousImage = pictureBox1.Image; pictureBox1.Image = new Bitmap(TBF.Properties.Resources.Empty); + previousImage?.Dispose(); return; } @@ -1312,10 +1769,108 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder Brush brush = (brightness > 160) ? darkBrush : lightBrush; grph.DrawString(lastWmNr1.ToString(), font, brush, margin, margin); + + DrawImageInfo(grph, tempBmp); } + Image oldPictureBoxImage = pictureBox1.Image; pictureBox1.Image = tempBmp; + oldPictureBoxImage?.Dispose(); } + + private void DrawImageInfo( Graphics graphics, Bitmap bitmap) + { + if (graphics == null) + { + throw new ArgumentNullException(nameof(graphics)); + } + + if (bitmap == null) + { + throw new ArgumentNullException(nameof(bitmap)); + } + + string currentImageFileName = GetCurrentImageFileName(); + + if (string.IsNullOrWhiteSpace(currentImageFileName)) + { + return; + } + + string fileName = Path.GetFileName(currentImageFileName); + + string displayText = fileName; + + Match match = Regex.Match( fileName, @"_img(?\d+)_(?\d{8})_(? - public interface ITestMethodSmart + public interface ITestMethodSmart : ITestMethod { } diff --git a/TBF/Rig/Network/Camera/CJMS11/Camera.cs b/TBF/Rig/Network/Camera/CJMS11/Camera.cs index 88971451d..552432ddd 100644 --- a/TBF/Rig/Network/Camera/CJMS11/Camera.cs +++ b/TBF/Rig/Network/Camera/CJMS11/Camera.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; @@ -19,6 +20,7 @@ using System.Windows.Forms; using log4net; using Renci.SshNet; using Common; +using Config.Entities; using FluentNHibernate.Conventions; using Newtonsoft.Json; using TBF.Rig.Network.Telnet; @@ -54,7 +56,8 @@ namespace TBF.Rig.Network.Camera.CJMS11 const string ClpPassword = "C1ern4V0d4"; - + private readonly SemaphoreSlim cameraReadLock = new SemaphoreSlim(1, 1); + //private readonly SemaphoreSlim cameraWriteLock = new SemaphoreSlim(1, 1); /// /// Properties @@ -67,10 +70,20 @@ namespace TBF.Rig.Network.Camera.CJMS11 { get { if (roiConfiguration!=null) {return roiConfiguration;} - else { roiConfiguration = GetFirstRoiChild(); return roiConfiguration; } + else { roiConfiguration = GetFirstRoiCfgChild(); return roiConfiguration; } } set { if (roiConfiguration == null) roiConfiguration = value;} } + + private RoiForFixedStartCJMS11.Roi _roi; + public RoiForFixedStartCJMS11.Roi CamRoi + { + get { + if (_roi!=null) {return _roi;} + else { _roi = GetFirstRoiChild(); return _roi; } + } + set { if (_roi == null) _roi = value;} + } public IPAddress IPAddress { get { return ipAddress; } } IPAddress ipAddress; @@ -132,26 +145,34 @@ namespace TBF.Rig.Network.Camera.CJMS11 int cameraTcpLocalPort; TcpClient cameraTcpClient; private NetworkStream cameraStream = null; - private StreamWriter cameraWriter = null; + //private StreamWriter cameraWriter = null; private StreamReader cameraReader = null; private Image lastImage; private bool lockCameraInitialisation = false; Thread liveStreamListenerThread; - static bool stopLiveStreamListenerFlag; + private bool stopLiveStreamListenerFlag; public bool IsGrabImageListenerThreadAlive { get { return grabImageListenerThread != null && grabImageListenerThread.IsAlive; } } Thread grabImageListenerThread; - static bool stopGrabImageListenerFlag; + private bool stopGrabImageListenerFlag; public void SetStopGrabImageListenerFlag() { stopGrabImageListenerFlag = true; } Thread stopUIListenerThread; - static bool stopUIListenerFlag; + private bool stopUIListenerFlag; Thread saveImageListenerThread; - static bool stopSaveImageListenerFlag; + private bool stopSaveImageListenerFlag; public bool IsSaveImageListenerThreadAlive { get { return saveImageListenerThread != null && saveImageListenerThread.IsAlive; } } + /// + /// Send images part + /// + private Task> sendImagesTask; + private CancellationTokenSource sendImagesCts; + + public bool IsSendImagesInProgress => sendImagesTask != null && !sendImagesTask.IsCompleted; + /// /// ROI related parameters /// @@ -201,15 +222,21 @@ namespace TBF.Rig.Network.Camera.CJMS11 /// Detect a camera CameraDetectionResult cameraDetectionResult = null; - var detectJmsCamera = DetectJMSCamera(); - var timeoutTask = Task.Delay(TimeSpan.FromSeconds(2)); - - //No Test - var completedTask = Task.WhenAny(detectJmsCamera, timeoutTask).Result; - if (completedTask == timeoutTask) + try { - cameraDetectionResult = new CameraDetectionResult(); - cameraDetectionResult.IsDetected = false; + cameraDetectionResult = Task + .Run(() => DetectJMSCamera()) + .GetAwaiter() + .GetResult(); + } + catch (Exception exc) + { + log.Error($"Camera detection failed: {exc.Message}"); + + cameraDetectionResult = new CameraDetectionResult + { + IsDetected = false + }; } //test @@ -217,11 +244,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 // var detectJmsCamera2 = DetectJMSCamera("192.168.0.168",32456); // Task.WaitAll(detectJmsCamera, detectJmsCamera1, detectJmsCamera2); - if (cameraDetectionResult == null) - { - cameraDetectionResult = detectJmsCamera.Result; - } - + if (CameraCfg.DebugLevel == DebugMode.AutoDetect) { CameraCfg.DebugLevel = cameraDetectionResult.IsDetected ? DebugMode.DetectedOn : DebugMode.DetectedOff; @@ -233,14 +256,30 @@ namespace TBF.Rig.Network.Camera.CJMS11 if (cameraDetectionResult.IsDetected) { - UiBridge.Bridge.OnCameraInfo(cameraIdx, string.Format("{0} ver.{1} {2} s/n {3}", Name, sdCardVer, ipAddress, CameraCfg.HardwareAddress)); + ipAddress = cameraDetectionResult.IpAddress; - // start live stream, grab image, ... listener thread - UiBridge.Bridge.CameraUICmdHandler += HandleCameraUiCmd; - - //PromptCameraReceivedHandler += OnPromptReceivedCamera; - - ImageCameraHandler += OnPromptImageReceived; + UiBridge.Bridge.OnCameraInfo( + cameraIdx, + string.Format( + "{0} ver.{1} {2} s/n {3}", + Name, + sdCardVer, + ipAddress, + CameraCfg.HardwareAddress)); + + // start live stream, grab image, ... listener thread + UiBridge.Bridge.CameraUICmdHandler -= HandleCameraUiCmd; + UiBridge.Bridge.CameraUICmdHandler += HandleCameraUiCmd; + + //PromptCameraReceivedHandler -= OnPromptReceivedCamera; + //PromptCameraReceivedHandler += OnPromptReceivedCamera; + + ImageCameraHandler -= OnPromptImageReceived; + ImageCameraHandler += OnPromptImageReceived; + + ImagesCameraHandler -= OnPromptImagesReceived; + ImagesCameraHandler += OnPromptImagesReceived; + } else { @@ -250,12 +289,30 @@ namespace TBF.Rig.Network.Camera.CJMS11 } private void OnPromptImageReceived(object sender, PromptReceivedImageEventArgs e) + { + if (e == null || e.image == null || cameraIdx != e.idxCamera) + { + return; + } + + /* + * Bridge dostane svoju vlastnú kópiu. + */ + Image bridgeImage = CloneImageToBitmap(e.image); + + UiBridge.Bridge.OnImage( e.idxCamera, bridgeImage); + + log.Debug( $"Image received from camera: {e.idxCamera}, pushed to bridge UI!"); + } + + private void OnPromptImagesReceived(object sender, PromptReceivedImagesEventArgs e) { if (e != null && e.image != null) { if (this.cameraIdx == e.idxCamera) { UiBridge.Bridge.OnImage(e.idxCamera, e.image); + log.Debug($"Image received from camera: {e.idxCamera}, pushed to bridge UI!"); } } } @@ -396,134 +453,477 @@ namespace TBF.Rig.Network.Camera.CJMS11 { return await DetectJMSCamera(CameraCfg.IPAddressCJMS, iPort); } + + async Task DetectJMSCamera( string ipAddressParam, int portParam) + { + var result = new CameraDetectionResult + { + IsDetected = false, + IpAddress = null, + Hardware = null, + Revision = null, + Serial = null, + SdCardVersion = null + }; + + if (CameraCfg.DebugLevel == DebugMode.Simulate) + { + result.IsDetected = true; + return result; + } + + if (string.IsNullOrWhiteSpace(ipAddressParam)) + { + log.Error( $"Camera {CameraCfg.Name}: IP address is missing."); + return result; + } + + var detectionStopwatch = Stopwatch.StartNew(); + + try + { + using (var client = new TcpClient()) + { + Task connectTask = + client.ConnectAsync( + ipAddressParam, + portParam); + + Task timeoutTask = + Task.Delay(TimeSpan.FromSeconds(1)); + + Task completedTask = + await Task.WhenAny( + connectTask, + timeoutTask) + .ConfigureAwait(false); + + if (completedTask == timeoutTask) + { + client.Close(); + throw new TimeoutException( $"Camera connection timeout after 1 second: {ipAddressParam}:{portParam}"); + } + + // Vyhodí SocketException, ak ConnectAsync zlyhal. + await connectTask.ConfigureAwait(false); + + if (!client.Connected) + { + throw new IOException( $"Camera connection was not established: {ipAddressParam}:{portParam}"); + } + + log.Debug( $"Camera connected: name={CameraCfg.Name}, IP={ipAddressParam}, port={portParam}"); + + using (NetworkStream stream = client.GetStream()) + { + // Jeden reader pre celé spojenie. + var reader = new CameraLineReader( stream, 64 * 1024); + + this.ipAddress = IPAddress.Parse(ipAddressParam); + + /* + * 1. Nastavenie typu kamery + */ + string configMessage = getConfigMessage(); + + JmsPacket typeCameraAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.type_camera_, + configMessage, + 5000, + CancellationToken.None) + .ConfigureAwait(false); + + if (typeCameraAnswer == null || typeCameraAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Warn( $"type_camera failed: " + $"camera={CameraCfg.Name}, " + $"IP={ipAddressParam}, " + $"answer={FormatPacketForLog(typeCameraAnswer)}"); + } + + /* + * 2. Prepare camera + */ + JmsPacket prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED"); + + if (alreadyOpened) + { + log.Debug( $"Camera already opened: " + $"name={CameraCfg.Name}, " + $"IP={ipAddressParam}"); + } + else if (prepareAnswer == null || prepareAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Warn( $"Prepare camera failed: " + $"camera={CameraCfg.Name}, " + $"IP={ipAddressParam}, " + $"answer={FormatPacketForLog(prepareAnswer)}"); + + /* + * Pokus o reset: + * close -> prepare + */ + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.close_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + + prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + bool restartSucceeded = + prepareAnswer != null && + ( + prepareAnswer.JmsMessage.Status == + MessageStatus.ACK || + ( + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED") + ) + ); + + if (!restartSucceeded) + { + log.Error( + $"Camera prepare restart failed: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"answer={FormatPacketForLog(prepareAnswer)}"); + } + } + + /* + * 3.1 Warm-up grab after type_camera + prepare_camera. + * + * Hardvér po inicializácii potrebuje vytvoriť aspoň jeden obrázok. + * Obrázok pri detekcii nepotrebujeme ukladať ani posielať do UI. + */ + JmsPacket grabAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.grab_image_, + null, + 10000, + CancellationToken.None) + .ConfigureAwait(false); + + if (grabAnswer == null || grabAnswer.JmsMessage == null || grabAnswer.JmsMessage.Status != MessageStatus.ACK) + { + throw new IOException( $"Camera initialization grab failed: camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, answer={FormatPacketForLog(grabAnswer)}"); + } + + try + { + ParsedImage initializationImage = + grabAnswer.JmsMessage.getImage(); + + if (initializationImage == null) + { + throw new IOException( "Initialization grab returned no parsed image."); + } + + if (initializationImage.Encoding != ImageType.BASE_64) + { + throw new IOException( $"Initialization grab returned unsupported encoding: " + $"{initializationImage.Encoding}"); + } + + // Vyvolá Base64 dekódovanie a tým overí, že obrázok je platný. + using (Image warmUpImage = initializationImage.Image) + { + if (warmUpImage == null) + { + throw new IOException( + "Initialization grab returned a null image."); + } + + log.Debug( + $"Initialization image captured: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"size={warmUpImage.Width}x{warmUpImage.Height}"); + } + } + catch (Exception exc) + { + throw new IOException( $"Cannot process initialization image: camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, error={exc.Message}", exc); + } + + + + + /* + * 3.2 Status + */ + JmsPacket statusAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.status_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + if (statusAnswer == null || + statusAnswer.JmsMessage.Status != + MessageStatus.ACK) + { + log.Warn( + $"Camera status failed: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"answer={FormatPacketForLog(statusAnswer)}"); + } + + /* + * 4. Get configuration + */ + JmsPacket configAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.get_cfg_, + null, + 3000, + CancellationToken.None) + .ConfigureAwait(false); + + if (configAnswer == null || + configAnswer.JmsMessage.Status != + MessageStatus.ACK) + { + throw new IOException( + $"Camera get_cfg failed: " + + $"camera={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"answer={FormatPacketForLog(configAnswer)}"); + } + + result.IpAddress = + IPAddress.Parse(ipAddressParam); + + result.Hardware = string.Empty; + result.Revision = string.Empty; + result.Serial = string.Empty; + result.SdCardVersion = string.Empty; + result.Response = configAnswer.ToString(); + result.IsDetected = true; + + string origin = + string.IsNullOrEmpty(configAnswer.MessageOrigin) + ? "unknown origin" + : configAnswer.MessageOrigin; + + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Debug( + $"Camera detected: " + + $"name={CameraCfg.Name}, " + + $"duration={result.Duration_ms:F0} ms, " + + $"HWAddress={CameraCfg.HardwareAddress}, " + + $"IP={ipAddressParam}, " + + $"origin={origin}"); + + /* + * Voliteľný cleanup. + * + * Ak má kamera po detekcii zostať otvorená, + * túto časť odstráň. + */ + try + { + JmsPacket closeAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.close_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + + bool closeAccepted = + closeAnswer != null && + ( + closeAnswer.JmsMessage.Status == MessageStatus.ACK || + ( + closeAnswer.JmsMessage.Status == MessageStatus.NACK && + !string.IsNullOrEmpty(closeAnswer.JmsMessage.Payload) && + closeAnswer.JmsMessage.Payload.Contains( + "Close command already in progress") + ) + ); + + if (!closeAccepted) + { + log.Warn( + $"Close after detection was not confirmed: " + + $"camera={CameraCfg.Name}, " + + $"answer={FormatPacketForLog(closeAnswer)}"); + } + } + catch (Exception closeException) + { + log.Warn( + $"Camera close after detection failed: " + + $"{closeException.Message}"); + } + /* + * Disconnect after detection. + */ + try + { + await SendCommandAsync( + stream, + CommandM.disconnect_, + CancellationToken.None, + null) + .ConfigureAwait(false); + + log.Debug( + $"Disconnect command sent after detection: " + + $"camera={CameraCfg.Name}, IP={ipAddressParam}"); + } + catch (Exception disconnectException) + { + log.Warn( + $"Camera disconnect after detection failed: " + + $"{disconnectException.Message}"); + } + + return result; + } + } + } + catch (TimeoutException exc) + { + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Error( + $"Camera detection timeout: " + + $"name={CameraCfg.Name}, " + + $"HWAddress={CameraCfg.HardwareAddress}, " + + $"IP={ipAddressParam}, " + + $"port={portParam}, " + + $"duration={result.Duration_ms:F0} ms, " + + $"error={exc.Message}"); + } + catch (SocketException exc) + { + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Error( + $"Camera socket connection failed: " + + $"name={CameraCfg.Name}, " + + $"IP={ipAddressParam}, " + + $"port={portParam}, " + + $"socketError={exc.SocketErrorCode}, " + + $"error={exc.Message}"); + } + catch (Exception exc) + { + detectionStopwatch.Stop(); + result.Duration_ms = + detectionStopwatch.Elapsed.TotalMilliseconds; + + log.Error( + $"Camera detection failed: " + + $"name={CameraCfg.Name}, " + + $"HWAddress={CameraCfg.HardwareAddress}, " + + $"IP={ipAddressParam}, " + + $"port={portParam}, " + + $"duration={result.Duration_ms:F0} ms, " + + $"error={exc.Message}", + exc); + } + + result.IsDetected = false; + result.IpAddress = null; + result.Hardware = null; + result.Revision = null; + result.Serial = null; + result.SdCardVersion = null; + + return result; + } - async Task DetectJMSCamera(string ipAddressParam, int portParam) + private static string FormatPacketForLog( JmsPacket packet) + { + if (packet == null) + return ""; + + if (packet.JmsMessage == null) + return ""; + + string payload = packet.JmsMessage.Payload; + + if (!string.IsNullOrEmpty(payload) && payload.Length > 200) + { + payload = payload.Substring(0, 200) + "..."; + } + + return $"command={packet.JmsMessage.Command}, " + $"status={packet.JmsMessage.Status}, " + $"payload={payload}"; + } + + private async Task ClearPendingResponsesAsync(StreamReader reader) { - CameraDetectionResult result = new CameraDetectionResult(); - if (CameraCfg.IPAddressCJMS != null) + await cameraReadLock.WaitAsync(); + + try { - try + while (reader.Peek() >= 0) { - - using (this.cameraTcpClient = new TcpClient()) - { - var connectTask = this.cameraTcpClient.ConnectAsync(ipAddressParam, portParam); - var timeoutTask = Task.Delay(TimeSpan.FromSeconds(1)); - - var completedTask = Task.WhenAny(connectTask, timeoutTask).Result; - - if (completedTask == timeoutTask) - { - throw new TimeoutException("Connection attempt timed out after 1 second."); - } - //TcpClient tcpClient = await EstablishCameraConnection(CameraCfg.IPAddressCJMS, iPort); - log.Debug(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - this.ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream - - - using (NetworkStream stream = cameraTcpClient.GetStream()) - using (StreamWriter writer = new StreamWriter(stream, Encoding.ASCII) { AutoFlush = true }) - using (StreamReader reader = new StreamReader(stream, Encoding.ASCII)) - { - stream.ReadTimeout = 1000; - - // Send command - DateTime detectionStart = DateTime.Now; - - // create config and send - string message = getConfigMessage(); - JmsPacket answer = SendCommandAndWaitToAnswer(writer, reader, CommandM.type_camera_,message); - if (answer == null || answer.JmsMessage.Status != MessageStatus.ACK) - { - log.Error(answer); - } - //Prepare camera - JmsPacket answerPrepare = SendCommandAndWaitToAnswer(writer, reader, CommandM.prepare_camera_); - if (answerPrepare == null || answerPrepare.JmsMessage.Status != MessageStatus.ACK) - { - if (!(answerPrepare != null && answerPrepare.JmsMessage.Status == MessageStatus.NACK && - answerPrepare.JmsMessage.Payload == "OPENED")) //correct if NACK & OPENED - { - log.Error(answerPrepare); - } - else - { - SendCommandAndWaitToAnswer(writer, reader, CommandM.close_); - var sendCommandAndWaitToAnswer = SendCommandAndWaitToAnswer(writer, reader, CommandM.prepare_camera_); - if (sendCommandAndWaitToAnswer == null || sendCommandAndWaitToAnswer.JmsMessage.Status == MessageStatus.NACK) //correct if NACK & OPENED - { - log.Error("Restart close, prepare camera not successfully! see: " + answerPrepare); - } - } - } - //Status - JmsPacket answerStatus = SendCommandAndWaitToAnswer(writer, reader, CommandM.status_); - if (answerStatus == null || answerStatus.JmsMessage.Status != MessageStatus.ACK) - { - log.Error(answerStatus); - } - //Get config - JmsPacket answerCfg = SendCommandAndWaitToAnswer(writer, reader, CommandM.get_cfg_); - if (answerCfg == null || answerCfg.JmsMessage.Status != MessageStatus.ACK) - { - log.Error(answerCfg); - }else{ - result.IpAddress = IPAddress.Parse(ipAddressParam); - } - - - result.Duration_ms = (DateTime.Now - detectionStart).TotalMilliseconds; - - result.Hardware = string.Empty; - result.Revision = string.Empty; - result.Serial = string.Empty; - result.SdCardVersion = string.Empty; - - string msg = string.Format("Camera {0} detected in {1} ms: HWAddress={2} IPAddress={3} {4}", - CameraCfg.Name, - result.Duration_ms, - CameraCfg.HardwareAddress, - this.ipAddress == null ? "not detected" : this.ipAddress.ToString(), - answerCfg.MessageOrigin); - log.Debug(msg); - Console.WriteLine(msg); - - cameraTcpClient.Dispose(); - cameraTcpClient = null; - - result.IsDetected = true; - return result; /// Camera detected - } - } - } - catch (Exception exc) - { - log.ErrorFormat("Camera {0} with HWAddress={1} not detected : {2}", CameraCfg.Name, - CameraCfg.HardwareAddress, exc.Message); + string oldLine = reader.ReadLine(); + log.Debug("Discarded old camera response: " + oldLine); } } - - if (CameraCfg.DebugLevel == DebugMode.Simulate) + catch (IOException) { - result.Hardware = null; - result.Revision = null; - result.Serial = null; - result.SdCardVersion = null; - result.IpAddress = null; - - result.IsDetected = true; - return result; } - - result.Hardware = null; - result.Revision = null; - result.Serial = null; - result.SdCardVersion = null; - result.IpAddress = null; - - result.IsDetected = false; - return result; /// No camera detected + catch (Exception exc) + { + log.Warn("ClearPendingResponses failed: " + exc.Message); + } + finally + { + cameraReadLock.Release(); + } } class SensorConfig{ @@ -546,13 +946,13 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - private RoiCfg GetFirstRoiChild() + private RoiCfg GetFirstRoiCfgChild() { /// Load the list of components from the database var session = TBF.DB.CreateSession(DBKind.Config); var cmptnEntities = session.QueryOver().OrderBy(x => x.ItemNr).Asc.List(); - + List cfgs = new List(); IList components = new List(); foreach (var component in cmptnEntities) @@ -561,25 +961,136 @@ namespace TBF.Rig.Network.Camera.CJMS11 { IComponentFactory cmpntFactory = Rig.TbfComponents.CmpntFactoryFromClassName(component.ClassName); if (cmpntFactory == null) continue; - + IList tbfComponents = Rig.TbfComponents.LoadComponentsFromDB(cmptnEntities); IComponentCfg cmpntCfgFromCmpntEntity = cmpntFactory.CmpntCfgFromCmpntEntity(component); - + IComponent cmpnt = cmpntFactory.GetComponent(cmpntCfgFromCmpntEntity, components); - + RoiForFixedStartCJMS11.RoiCfg roi = cmpntCfgFromCmpntEntity as RoiForFixedStartCJMS11.RoiCfg; - + if (roi != null) { cfgs.Add(roi); } } } - + /// get fist found configuration return cfgs.First(); } + private RoiForFixedStartCJMS11.Roi GetFirstRoiChild() + { + using (var session = TBF.DB.CreateSession(DBKind.Config)) + { + var componentEntities = session + .QueryOver() + .OrderBy(x => x.ItemNr) + .Asc + .List(); + + IList components = + Rig.TbfComponents.LoadComponentsFromDB(componentEntities); + + var roi = components + .OfType() + .FirstOrDefault(x => + x.Cfg != null && + string.Equals( + x.Cfg.ParentName, + Name, + StringComparison.Ordinal)); + + if (roi == null) + { + log.WarnFormat( + "No ROI child was found for camera '{0}'.", + Name); + + return null; + } + + var roiCfg = roi.Cfg as RoiForFixedStartCJMS11.RoiCfg; + + if (roiCfg == null) + { + log.WarnFormat( + "ROI '{0}' has an invalid configuration type.", + roi.Name); + + return roi; + } + + LoadProcedureParams(session, roiCfg); + + return roi; + } + } + + private void LoadProcedureParams( + NHibernate.ISession session, + RoiForFixedStartCJMS11.RoiCfg roiCfg) + { + if (roiCfg == null) + { + return; + } + + var currentProcedure = StateMachine.Procedure; + + if (currentProcedure == null) + { + log.WarnFormat( + "Cannot load procedure parameters for ROI '{0}': " + + "current procedure is null.", + roiCfg.Name); + + return; + } + + var dbParams = session + .QueryOver() + .Where(x => x.CmpntName == roiCfg.Name) + .And(x => x.Procedure == currentProcedure) + .SingleOrDefault(); + + if (dbParams == null) + { + log.WarnFormat( + "No procedure parameters found for ROI '{0}', procedure '{1}'. " + + "Using default values.", + roiCfg.Name, + currentProcedure); + + return; + } + + if (roiCfg.ProcParams == null) + { + roiCfg.ProcParams = new ProcedureParams(); + } + + if (!roiCfg.ProcParams.UpdateFromDbEntity(dbParams)) + { + log.WarnFormat( + "Failed to deserialize procedure parameters for ROI '{0}', " + + "procedure '{1}'.", + roiCfg.Name, + currentProcedure); + + return; + } + + log.DebugFormat( + "Loaded ROI procedure parameters: ROI='{0}', procedure='{1}', " + + "RoiPicCount={2}, RoiDeltaTimeMs={3}.", + roiCfg.Name, + currentProcedure, + roiCfg.ProcParams.RoiPicCount, + roiCfg.ProcParams.RoiDeltaTimeMs); + } + private string getConfigMessage() { //CameraCfg @@ -629,7 +1140,8 @@ namespace TBF.Rig.Network.Camera.CJMS11 log.Debug("Handle CameraUICmd received - Live"); stopLiveStreamListenerFlag = false; stopUIListenerFlag = true; - StartLiveStreamListener(IPAddress, iPort); + StartLiveStreamListener(); + //StartLiveStreamListener(IPAddress, iPort); } else if (e.CameraUICmd == CameraUICmd.Stop) { @@ -640,7 +1152,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 else if (e.CameraUICmd == CameraUICmd.Grab) { log.Debug($"Handle CameraUICmd received - GrabImage - camera idx: {cameraIdx}"); - stopUIListenerFlag = true; + //stopUIListenerFlag = true; StopUiThreads(); StartGrabImageListener(); } @@ -704,40 +1216,59 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - public void SaveImageToFile(Image imageToSave, string fileNamePath) + public void SaveImageToFile( + Image imageToSave, + string fileNamePath) { if (imageToSave == null) { - log.Error("Nothing to save in SaveImageToFile"); - return; // nothing to save + throw new ArgumentNullException(nameof(imageToSave)); } - if (fileNamePath == null || fileNamePath.IsEmpty()) + if (string.IsNullOrWhiteSpace(fileNamePath)) { - log.Error("Path to save missing!"); - return; // nothing to save + throw new ArgumentException( + "Path to save is missing.", + nameof(fileNamePath)); } - - try - { - string filePath = fileNamePath; - - string path = Path.GetDirectoryName(filePath); - if (path != null && path.IsNotEmpty()) - { - Directory.CreateDirectory(path); - } + string directory = + Path.GetDirectoryName(fileNamePath); - using (var clonedImage = CloneImageToBitmap(imageToSave)) - { - clonedImage.Save(filePath, ImageFormat.Png); // encoder, encoderParams); - } - log.Debug("Image saved to: " + filePath); - }catch(Exception exc) + if (!string.IsNullOrWhiteSpace(directory)) { - log.Error("Error saving image: " + exc.Message); - throw; + Directory.CreateDirectory(directory); + } + + ImageFormat format = + GetImageFormatFromFileName(fileNamePath); + + using (var clonedImage = CloneImageToBitmap(imageToSave)) + { + clonedImage.Save(fileNamePath, format); + } + + log.Debug("Image saved to: " + fileNamePath); + } + + private static ImageFormat GetImageFormatFromFileName( + string fileName) + { + string extension = + Path.GetExtension(fileName)?.ToLowerInvariant(); + + switch (extension) + { + case ".bmp": + return ImageFormat.Bmp; + + case ".jpg": + case ".jpeg": + return ImageFormat.Jpeg; + + case ".png": + default: + return ImageFormat.Png; } } @@ -768,9 +1299,36 @@ namespace TBF.Rig.Network.Camera.CJMS11 saveImageListenerThread.Start(); } + private Task saveImageTask; + + public bool IsSaveImageInProgress => + saveImageTask != null && + !saveImageTask.IsCompleted; + + public Task StartSaveImageToFileAsync( Image image, string fileName) + { + if (image == null) + throw new ArgumentNullException(nameof(image)); + + if (string.IsNullOrWhiteSpace(fileName)) + throw new ArgumentException( + "File name is required.", + nameof(fileName)); + + if (saveImageTask != null && !saveImageTask.IsCompleted) + { + log.Warn( $"Image save already running: cameraIdx={cameraIdx}, file={fileName}"); + return saveImageTask; + } + + saveImageTask = Task.Run( () => SaveImageToFile(image, fileName)); + + return saveImageTask; + } + private void StartSaveImageListener() { - Task saveImageTask = Task.Run(() => SaveImageListener()); + Task saveImageTask = Task.Run(() => SaveImageListenerAsynch()); var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; if (completedAnswerTask == timeoutAnswerTask) @@ -790,7 +1348,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 public void StartSaveImageListener(string filePath) { - Task saveImageTask = Task.Run(() => SaveImageListener()); + Task saveImageTask = Task.Run(() => SaveImageListenerAsynch()); var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; if (completedAnswerTask == timeoutAnswerTask) @@ -847,7 +1405,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 } // Check if the connect task completed successfully - connectTask.GetAwaiter().GetResult(); // Throws if failed + //connectTask.GetAwaiter().GetResult()); // Throws if failed if (camTcpClient.Connected) { @@ -914,125 +1472,244 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - - public async Task SaveImageListener() + + + private async Task ConnectCameraAsync(int timeoutMs, CancellationToken ct) { - Image imageToReturn = null; - using (this.cameraTcpClient = new TcpClient()) + var client = new TcpClient(); + + var connectTask = client.ConnectAsync(CameraCfg.IPAddressCJMS, iPort); + var timeoutTask = Task.Delay(timeoutMs, ct); + + var completed = await Task.WhenAny(connectTask, timeoutTask); + + if (completed == timeoutTask) { + client.Close(); + throw new TimeoutException($"Connection timeout after {timeoutMs} ms."); + } + + await connectTask; + + log.Debug($"Camera connected to server {CameraCfg.IPAddressCJMS}:{iPort}."); + ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); + + return client; + } + + private async Task ConnectCameraAsync( + int timeoutMs, + CancellationToken ct, + int maxAttempts = 3, + int retryDelayMs = 300) + { + Exception lastException = null; + + for (int attempt = 1; attempt <= maxAttempts; attempt++) + { + ct.ThrowIfCancellationRequested(); + + var client = new TcpClient(); + try { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); + log.Debug( $"Connecting to camera: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, port={iPort}, " + + $"attempt={attempt}/{maxAttempts}"); - log.Debug(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); + Task connectTask = client.ConnectAsync( CameraCfg.IPAddressCJMS, iPort); + Task timeoutTask = Task.Delay( timeoutMs, ct); - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) + Task completedTask = await Task.WhenAny(connectTask, timeoutTask).ConfigureAwait(false); + + if (completedTask == timeoutTask) { - cameraStream.ReadTimeout = 1000; + ct.ThrowIfCancellationRequested(); - SendCommand(CommandM.prepare_camera_); + client.Close(); - bool inError = false; - stopSaveImageListenerFlag = false; - while (!stopSaveImageListenerFlag) - { - try - { - SendCommand(CommandM.grab_image_); - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - - switch (newPacket.JmsMessage.Command) - { - case CommandM.grab_image_: - if (newPacket.JmsMessage.Status != MessageStatus.ACK) - { - if (inError) - { - return null; // camera in error - finish thread - } - SendCommand(CommandM.prepare_camera_); - inError = true; - } - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - imageToReturn = image; - stopSaveImageListenerFlag = - true; // mam obrazok ukoncim a zavriem thread - } - - break; - default: - break; - } - } - - } - catch (Exception exc) - { - string msg = string.Format("Exception in MJpeg RTP listener thread: {0}", exc.Message); - log.Error(msg); - } - } - - stopGrabImageListenerFlag = false; - SendCommand(CommandM.close_); - SendCommand(CommandM.disconnect_); - - CloseCameraResources(); - - return imageToReturn; - + throw new TimeoutException( $"Connection timeout after {timeoutMs} ms. Attempt {attempt}/{maxAttempts}."); } - }catch(Exception exc) + + // Dôležité: načíta prípadnú SocketException. + await connectTask.ConfigureAwait(false); + + if (!client.Connected) + { + throw new SocketException( + (int)SocketError.NotConnected); + } + + client.NoDelay = true; + + log.Debug( $"Camera connected: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, port={iPort}, " + + $"attempt={attempt}"); + + ipAddress = + IPAddress.Parse( + CameraCfg.IPAddressCJMS); + + return client; + } + catch (OperationCanceledException) { - log.Error($"Save Image exception: {exc.Message}"); + client.Close(); + throw; + } + catch (Exception exc) + { + client.Close(); + lastException = exc; + + log.Warn( $"Camera connection attempt failed: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, " + + $"attempt={attempt}/{maxAttempts}, error={exc.Message}"); + + if (attempt < maxAttempts) + { + await Task.Delay( + retryDelayMs, + ct) + .ConfigureAwait(false); + } } } - return imageToReturn; + + throw new IOException( + $"Unable to connect to camera {CameraCfg.IPAddressCJMS}:{iPort} after {maxAttempts} attempts.", + lastException); + } + + public async Task SaveImageListenerAsynch() + { + saveCts?.Cancel(); + saveCts = new CancellationTokenSource(); + + return await SaveImageListenerAsynch(saveCts.Token); + } + + public async Task SaveImageListenerAsynch(CancellationToken ct) + { + Image imageToReturn = null; + + await cameraOperationLock.WaitAsync(ct); + + try + { + using (TcpClient client = await ConnectCameraAsync(1000, ct)) + using (NetworkStream stream = client.GetStream()) + { + var reader = new CameraLineReader( + stream, + 64 * 1024); + + JmsPacket prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED"); + + if (alreadyOpened) + { + log.Debug( $"Camera already OPENED: " + $"cameraIdx={cameraIdx}, " + $"IP={CameraCfg.IPAddressCJMS}"); + } + else if (prepareAnswer == null || prepareAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Error( $"Prepare camera failed: " + $"cameraIdx={cameraIdx}, " + $"IP={CameraCfg.IPAddressCJMS}"); + return null; + } + + JmsPacket grabAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.grab_image_, + null, + 10000, + ct) + .ConfigureAwait(false); + + if (grabAnswer == null || grabAnswer.JmsMessage.Status != MessageStatus.ACK) + { + log.Error( $"Grab image failed: " + $"cameraIdx={cameraIdx}, " + $"IP={CameraCfg.IPAddressCJMS}"); + return null; + } + + ParsedImage parsedImage = grabAnswer.JmsMessage.getImage(); + + if (parsedImage == null) + { + log.Error( $"Parsed image is null: " + $"cameraIdx={cameraIdx}"); + return null; + } + + if (parsedImage.Encoding != ImageType.BASE_64) + { + log.Error( $"Unsupported image encoding: " + $"cameraIdx={cameraIdx}, " + $"encoding={parsedImage.Encoding}"); + return null; + } + + + + imageToReturn = parsedImage.Image; + + if (imageToReturn == null) + { + log.Error( $"Decoded image is null: " + $"cameraIdx={cameraIdx}"); + return null; + } + + DrawOverlay(imageToReturn); + + await TryCloseCameraAsync( stream, reader).ConfigureAwait(false); + + return imageToReturn; + } + } + catch (OperationCanceledException) + { + log.Debug( $"Save image cancelled: cameraIdx={cameraIdx}"); + return null; + } + catch (TimeoutException exc) + { + log.Error( $"Save image timeout: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, error={exc.Message}"); + return null; + } + catch (Exception exc) + { + log.Error( $"Save image exception: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, error={exc.Message}", exc); + return null; + } + finally + { + cameraOperationLock.Release(); + } } void StopUiThreads() { + liveCts?.Cancel(); + grabCts?.Cancel(); + saveCts?.Cancel(); + sendImagesCts?.Cancel(); + stopLiveStreamListenerFlag = true; stopGrabImageListenerFlag = true; stopUIListenerFlag = true; + + log.Debug("Handle CameraUICmd StopUIListener"); var taskStopUi = Task.Run(StopUiListener); var timeoutTask = Task.Delay(TimeSpan.FromSeconds(5)); @@ -1068,293 +1745,579 @@ namespace TBF.Rig.Network.Camera.CJMS11 //stopLiveStreamListenerFlag = false; //stopGrabImageListenerFlag = false; } + + + + public bool IsGrabImageInProgress + { + get + { + return grabImageTask != null && + !grabImageTask.IsCompleted; + } + } + + public Task GrabImageTask + { + get { return grabImageTask; } + } + public void StartGrabImageListener() { - grabImageListenerThread = new Thread(GrabImageListener); - grabImageListenerThread.Start(); + + _ = StartGrabImageListenerAsync(); } - void GrabImageListener() + + public Task StartGrabImageListenerAsync( + bool retryUntilValidImage = false, + int maxAttempts = 1, + int retryDelayMs = 200) { - using (this.cameraTcpClient = new TcpClient()) + if (grabImageTask != null && !grabImageTask.IsCompleted) { - try + log.Warn( + $"Grab already running: cameraIdx={cameraIdx}, " + + $"IP={CameraCfg.IPAddressCJMS}"); + + return grabImageTask; + } + + grabCts?.Cancel(); + grabCts?.Dispose(); + + grabCts = new CancellationTokenSource(); + + if (!retryUntilValidImage) + { + maxAttempts = 1; + } + + maxAttempts = Math.Max(1, maxAttempts); + retryDelayMs = Math.Max(0, retryDelayMs); + + grabImageTask = GrabImageListenerWithRetryAsync( + grabCts.Token, + maxAttempts, + retryDelayMs); + + return grabImageTask; + } + + private async Task EstablishCameraConnectionAsync( + TcpClient client, + string ip, + int port, + int timeoutMs) + { + Task connectTask = client.ConnectAsync(ip, port); + Task timeoutTask = Task.Delay(timeoutMs); + + Task completedTask = await Task.WhenAny(connectTask, timeoutTask); + + if (completedTask == timeoutTask) + throw new TimeoutException($"Connection attempt timed out after {timeoutMs} ms."); + + await connectTask; + } + + private Task grabImageTask; + private CancellationTokenSource grabCts; + //private CancellationTokenSource liveCts; + private CancellationTokenSource saveCts; + + private readonly SemaphoreSlim cameraOperationLock = new SemaphoreSlim(1, 1); + + + + private async Task GrabImageListenerWithRetryAsync( + CancellationToken ct, + int maxAttempts, + int retryDelayMs) + { + bool lockAcquired = false; + + try + { + await cameraOperationLock.WaitAsync(ct).ConfigureAwait(false); + + lockAcquired = true; + + for (int attempt = 1; + attempt <= maxAttempts; + attempt++) { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); + ct.ThrowIfCancellationRequested(); - log.Info(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream + Image image = null; - - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) + try { - cameraStream.ReadTimeout = 1000; + log.Debug( $"Starting grab image attempt: cameraIdx={cameraIdx}, attempt={attempt}/{maxAttempts}"); - try + image = await GrabImageSingleAttemptAsync(ct).ConfigureAwait(false); + + if (IsValidGrabbedImage(image)) { - SendCommand(CommandM.prepare_camera_); - } - catch (Exception exc) - { - log.Error($"Initialisation of connection readers failed: {exc.Message}"); - return; - } + /* + * Obrázok upravíme ešte predtým, + * než ho sprístupníme iným threadom. + */ + ImageUtils.Rotate( + image, + RoiConfiguration.ImageRotation); - stopGrabImageListenerFlag = false; - int iCountOf_NACK = 0; - int iActualImageIndex = 0; + DrawOverlay(image); - SendCommand(CommandM.grab_image_); - + /* + * UI dostane vlastnú Image inštanciu. + * Originál zostáva pre návrat z Task + * a následné uloženie do súboru. + */ + Image imageForUi = CloneImageToBitmap(image); - while (!stopGrabImageListenerFlag) - { try { - - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - - if (newPacket.JmsMessage.Status != MessageStatus.ACK) - { - if (iCountOf_NACK < 5) - { - iCountOf_NACK++; - continue; - } - - log.ErrorFormat("Error occured more as 5 time in GrabImageListener: {0}", - newPacket.JmsMessage.Status); - stopGrabImageListenerFlag = true; // mam obrazok ukoncim a zavriem thread - break; - } - else - { - - switch (newPacket.JmsMessage.Command) - { - case CommandM.grab_image_: - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - OnImageReceived(this, this.cameraIdx, image, RoiConfiguration.ImageRotation); - iActualImageIndex++; - if (iActualImageIndex >= RoiConfiguration.ImageOpacity.Count) - { - stopGrabImageListenerFlag = - true; // mam obrazok ukoncim a zavriem thread - } - } - - break; - } - } - } + OnImageReceived( this, cameraIdx, imageForUi, ImageRotation.None); } - catch (Exception exc) + catch { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} Exception in MJpeg RTP listener thread: { exc.Message}"); + imageForUi.Dispose(); + throw; } + + log.Debug( $"Valid image received: cameraIdx={cameraIdx}, attempt={attempt}/{maxAttempts}, " + + $"size={image.Width}x{image.Height}"); + + return image; } + image?.Dispose(); - stopGrabImageListenerFlag = false; - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.close_); - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.disconnect_); - - CloseCameraResources(); - - return; + log.Warn( + $"Invalid image received: " + + $"cameraIdx={cameraIdx}, " + + $"attempt={attempt}/{maxAttempts}"); } - }catch(Exception exc) + catch (OperationCanceledException) + { + image?.Dispose(); + throw; + } + catch (Exception exc) + { + image?.Dispose(); + + log.Warn( + $"Grab image attempt failed: " + + $"cameraIdx={cameraIdx}, " + + $"attempt={attempt}/{maxAttempts}, " + + $"error={exc.Message}"); + } + + if (attempt < maxAttempts && + retryDelayMs > 0) + { + await Task.Delay(retryDelayMs, ct) + .ConfigureAwait(false); + } + } + + log.Error( + $"No valid image received after all attempts: " + + $"cameraIdx={cameraIdx}, " + + $"attempts={maxAttempts}"); + + UiBridge.Bridge.OnImage(cameraIdx, null); + + return null; + } + catch (OperationCanceledException) + { + log.Debug( + $"Grab image cancelled: " + + $"cameraIdx={cameraIdx}"); + + throw; + } + finally + { + if (lockAcquired) { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} exception: {exc.Message}"); - UiBridge.Bridge.OnImage(this.cameraIdx, null); + cameraOperationLock.Release(); } } } - void SendImageListener() + private static bool IsValidGrabbedImage(Image image) { - using (this.cameraTcpClient = new TcpClient()) + if (image == null) { + return false; + } + + try + { + if (image.Width <= 0 || + image.Height <= 0) + { + return false; + } + + // Vytvorenie Bitmap zároveň preverí, + // či je obrázok použiteľný cez GDI+. + using (var bitmap = new Bitmap(image)) + { + return bitmap.Width > 0 && + bitmap.Height > 0; + } + } + catch + { + return false; + } + } + + private async Task GrabImageSingleAttemptAsync( + CancellationToken ct) + { + TcpClient client = null; + NetworkStream stream = null; + CameraLineReader reader = null; + + try + { + client = + await ConnectCameraAsync(5000, ct) + .ConfigureAwait(false); + + stream = client.GetStream(); + + reader = new CameraLineReader( + stream, + 64 * 1024); + + JmsPacket prepareAnswer = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( + "OPENED"); + + bool prepared = + prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == + MessageStatus.ACK; + + if (!prepared && !alreadyOpened) + { + log.Warn( + $"Prepare camera failed: " + + $"cameraIdx={cameraIdx}, " + + $"answer={FormatPacketForLog(prepareAnswer)}"); + + return null; + } + + if (alreadyOpened) + { + log.Debug( + $"Camera already OPENED: " + + $"cameraIdx={cameraIdx}"); + } + + await SendCommandAsync( + stream, + CommandM.grab_image_, + ct, + null) + .ConfigureAwait(false); + + while (true) + { + ct.ThrowIfCancellationRequested(); + + string response = + await reader.ReadLineAsync(10000, ct) + .ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(response)) + { + continue; + } + + JmsPacket packet; + + try + { + packet = new JmsPacket(response); + } + catch (Exception exc) + { + log.Warn( + $"Cannot parse grab response: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + + continue; + } + + if (packet.JmsMessage == null) + { + continue; + } + + if (packet.JmsMessage.Command != + CommandM.grab_image_) + { + log.Debug( + $"Unexpected response during grab: " + + $"cameraIdx={cameraIdx}, " + + $"command={packet.JmsMessage.Command}"); + + continue; + } + + if (packet.JmsMessage.Status != + MessageStatus.ACK) + { + log.Warn( + $"Grab image returned NACK: " + + $"cameraIdx={cameraIdx}, " + + $"payload={packet.JmsMessage.Payload}"); + + return null; + } + + ParsedImage parsedImage = + packet.JmsMessage.getImage(); + + if (parsedImage == null) + { + log.Warn( + $"Parsed image is null: " + + $"cameraIdx={cameraIdx}"); + + return null; + } + + if (parsedImage.Encoding != + ImageType.BASE_64) + { + log.Warn( + $"Unsupported image encoding: " + + $"cameraIdx={cameraIdx}, " + + $"encoding={parsedImage.Encoding}"); + + return null; + } + + Image image = parsedImage.Image; + + if (image == null) + { + log.Warn( + $"Decoded image is null: " + + $"cameraIdx={cameraIdx}"); + + return null; + } + + return image; + } + } + catch (OperationCanceledException) + { + log.Debug( + $"Grab image attempt cancelled: " + + $"cameraIdx={cameraIdx}"); + + throw; + } + catch (TimeoutException exc) + { + log.Warn( + $"Grab image attempt timeout: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + + return null; + } + catch (Exception exc) + { + log.Warn( + $"Grab image attempt failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}", + exc); + + return null; + } + finally + { + if (stream != null && + reader != null) + { + try + { + await TryCloseCameraAsync( + stream, + reader) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Grab cleanup failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + try { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); - - log.Info(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream - - - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) - { - cameraStream.ReadTimeout = 1000; - - try - { - SendCommand(CommandM.prepare_camera_); - } - catch (Exception exc) - { - log.Error($"Initialisation of connection readers failed: {exc.Message}"); - return; - } - - stopGrabImageListenerFlag = false; - int iCountOf_NACK = 0; - int iActualImageIndex = 0; - - //TODO BUMI send grab image or send - based on count of images - but must work similary - if (RoiConfiguration.ImageOpacity.Count <= 1) - { - SendCommand(CommandM.grab_image_); - } - else - { - SendCommand(CommandM.send_); - } - - while (!stopGrabImageListenerFlag) - { - try - { - - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - - if (newPacket.JmsMessage.Status != MessageStatus.ACK) - { - if (iCountOf_NACK < 5) - { - iCountOf_NACK++; - continue; - } - - log.ErrorFormat("Error occured more as 5 time in GrabImageListener: {0}", - newPacket.JmsMessage.Status); - stopGrabImageListenerFlag = true; // mam obrazok ukoncim a zavriem thread - break; - } - else - { - - switch (newPacket.JmsMessage.Command) - { - case CommandM.send_: - case CommandM.grab_image_: - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - OnImageReceived(this, this.cameraIdx, image, RoiConfiguration.ImageRotation,iActualImageIndex,RoiConfiguration.ImageOpacity.Count); - iActualImageIndex++; - if (iActualImageIndex >= RoiConfiguration.ImageOpacity.Count) - { - stopGrabImageListenerFlag = - true; // mam obrazok ukoncim a zavriem thread - } - } - - break; - } - } - } - } - catch (Exception exc) - { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} Exception in MJpeg RTP listener thread: { exc.Message}"); - } - } - - stopGrabImageListenerFlag = false; - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.close_); - SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.disconnect_); - - CloseCameraResources(); - - return; - } - }catch(Exception exc) + stream?.Dispose(); + } + catch + { + } + + try + { + client?.Close(); + client?.Dispose(); + } + catch { - log.Error($"Grab Image - Hardware Addr: {CameraCfg.HardwareAddress} Camera IP: {CameraCfg.IPAddressCJMS}, Port: {iPort} exception: {exc.Message}"); - UiBridge.Bridge.OnImage(this.cameraIdx, null); } } } + + private async Task TryCloseCameraAsync( + NetworkStream stream, + CameraLineReader reader) + { + /* + * CLOSE + * + * Na close ešte odpoveď očakávame. + */ + try + { + JmsPacket closeResponse = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.close_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + + if (closeResponse == null || + closeResponse.JmsMessage == null) + { + log.Warn( + $"No close response: " + + $"cameraIdx={cameraIdx}"); + + return; + } + + bool closeAccepted = + closeResponse.JmsMessage.Status == + MessageStatus.ACK; + + bool closeAlreadyInProgress = + closeResponse.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + closeResponse.JmsMessage.Payload) && + closeResponse.JmsMessage.Payload.Contains( + "Close command already in progress"); + + if (closeAlreadyInProgress) + { + log.Debug( + $"Camera close already in progress: " + + $"cameraIdx={cameraIdx}"); + } + else if (!closeAccepted) + { + log.Warn( + $"Camera close returned NACK: " + + $"cameraIdx={cameraIdx}, " + + $"payload={closeResponse.JmsMessage.Payload}"); + } + } + catch (TimeoutException exc) + { + log.Warn( + $"Close camera timeout: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + catch (Exception exc) + { + log.Warn( + $"Close camera failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + + /* + * DISCONNECT + * + * Dôležité: príkaz iba odošleme. + * Na odpoveď nečakáme. + */ + try + { + if (stream.CanWrite) + { + await SendCommandAsync( + stream, + CommandM.disconnect_, + CancellationToken.None, + null) + .ConfigureAwait(false); + + log.Debug( + $"Disconnect command sent: " + + $"cameraIdx={cameraIdx}"); + } + } + catch (Exception exc) + { + log.Warn( + $"Disconnect camera failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + private void CloseCameraResources() { cameraReader?.Close(); cameraReader = null; - cameraWriter?.Close(); - cameraWriter = null; + //cameraWriter?.Close(); + //cameraWriter = null; cameraStream?.Close(); cameraStream = null; cameraTcpClient?.Close(); @@ -1362,6 +2325,17 @@ namespace TBF.Rig.Network.Camera.CJMS11 cameraTcpClient = null; } + public void CancelGrabImage() + { + try + { + grabCts?.Cancel(); + } + catch (ObjectDisposedException) + { + // CTS už bolo uvoľnené. + } + } /// /// listener for multiple - repetetive image receiving @@ -1372,130 +2346,285 @@ namespace TBF.Rig.Network.Camera.CJMS11 /// /// - private void StartLiveStreamListener(IPAddress localIP, int localPort) - { - liveStreamListenerThread = new Thread(new ThreadStart(LiveStreamListener)); - liveStreamListenerThread.Start(); - } + // private void StartLiveStreamListener(IPAddress localIP, int localPort) + // { + // liveStreamListenerThread = new Thread(new ThreadStart(LiveStreamListener)); + // liveStreamListenerThread.Start(); + // } + + private CancellationTokenSource liveCts; + private Task liveStreamTask; + private static int maxAttempts = 4; + private static int retryDelayMs = 1000; - void LiveStreamListener() + public void StartLiveStreamListener() { - bool synced = false; - - using (this.cameraTcpClient = new TcpClient()) + if (liveStreamTask != null && !liveStreamTask.IsCompleted) { - try - { - EstablishCameraConnection(ref this.cameraTcpClient, CameraCfg.IPAddressCJMS, iPort); - - log.Debug(string.Format("Camera connected to server {0}:{1}.", CameraCfg.IPAddressCJMS, iPort)); - ipAddress = IPAddress.Parse(CameraCfg.IPAddressCJMS); - // Get network stream - - - using (cameraStream = this.cameraTcpClient.GetStream()) - using (cameraWriter = new StreamWriter(cameraStream, Encoding.ASCII) { AutoFlush = true }) - using (cameraReader = new StreamReader(cameraStream, Encoding.ASCII)) - { - cameraStream.ReadTimeout = 1000; - - SendCommand(CommandM.prepare_camera_); - SendCommand(CommandM.start_stream_images_); - - - stopLiveStreamListenerFlag = false; - while (!stopLiveStreamListenerFlag) - { - try - { - - //SendCommand(CommandM.grab_image_); - Task responseAnswerTask = cameraReader.ReadLineAsync(); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(1)); - var completedAnswerTask = Task.WhenAny(responseAnswerTask, timeoutAnswerTask).Result; - - if (completedAnswerTask == timeoutAnswerTask) - { - throw new TimeoutException("Answer response attempt timed out after 1 second."); - } - - string responseAnswer = responseAnswerTask.Result; - - if (responseAnswer.Length > 0) - { - /// Process the packet - JmsPacket newPacket = new JmsPacket(responseAnswer); - // if (synced) - // { - /// Sychronized: process the new packet - switch (newPacket.JmsMessage.Command) - { - case CommandM.grab_image_: - ParsedImage parsedImage = newPacket.JmsMessage.getImage(); - if (parsedImage.Encoding == ImageType.BASE_64) - { - Image image = parsedImage.Image; - - - if (showOverlayRect && overlayRect != null && overlayThickness > 0) - { - int penWidth = 1; - Pen pen = new Pen(Color.Green, penWidth); - using (var grph = Graphics.FromImage(image)) - { - if (penWidth != overlayThickness) - { - penWidth = overlayThickness; - pen = new Pen(Color.Green, penWidth); - } - - grph.DrawRectangle(pen, overlayRect); - } - } - - OnImageReceived(this, this.cameraIdx, image, RoiConfiguration.ImageRotation,0,1 ); - - } - - break; - default: - break; - } - } - } - catch (Exception exc) - { - string msg = string.Format("Exception in MJpeg RTP listener thread: {0}", exc.Message); - log.Error(msg); - } - } - - stopLiveStreamListenerFlag = false; - //we need to wait to answer, it works on thread loop - properly access - var sendCommandAndWaitToAnswer = SendCommandAndWaitToAnswer(cameraWriter, cameraReader, CommandM.prepare_camera_); - if (sendCommandAndWaitToAnswer == null || sendCommandAndWaitToAnswer.JmsMessage.Status == MessageStatus.NACK) //correct if NACK & OPENED - { - log.Error("Stop streaming not successfully! see: " + sendCommandAndWaitToAnswer.JmsMessage.Payload); - } - - //SendCommand(CommandM.close_); - //SendCommand(CommandM.disconnect_); - - CloseCameraResources(); - } - }catch(Exception exc) - { - log.Error($"Live Stream exception: {exc.Message}"); - UiBridge.Bridge.OnImage(this.cameraIdx, null); - } + log.Warn( $"Live stream already running: cameraIdx={cameraIdx}"); + return; } - return; + liveCts?.Cancel(); + liveCts?.Dispose(); + + liveCts = new CancellationTokenSource(); + + liveStreamTask = LiveStreamListenerAsync(liveCts.Token); } + private async Task LiveStreamListenerAsync( + CancellationToken ct) + { + bool lockAcquired = false; + TcpClient client = null; + NetworkStream stream = null; + CameraLineReader reader = null; + bool streamStarted = false; + try + { + log.Debug( + $"Live stream waiting for camera lock: " + + $"cameraIdx={cameraIdx}"); + await cameraOperationLock + .WaitAsync(ct) + .ConfigureAwait(false); + + lockAcquired = true; + + log.Debug( + $"Live stream acquired camera lock: " + + $"cameraIdx={cameraIdx}"); + + client = await ConnectCameraAsync( + timeoutMs: 3000, + ct: ct, + maxAttempts: 3, + retryDelayMs: 300) + .ConfigureAwait(false); + + stream = client.GetStream(); + + reader = new CameraLineReader( stream, 64 * 1024); + + JmsPacket prepare = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + + bool alreadyOpened = + prepare != null && + prepare.JmsMessage != null && + prepare.JmsMessage.Status == + MessageStatus.NACK && + !string.IsNullOrEmpty( + prepare.JmsMessage.Payload) && + prepare.JmsMessage.Payload.Contains( + "OPENED"); + + bool prepared = + prepare != null && + prepare.JmsMessage != null && + prepare.JmsMessage.Status == + MessageStatus.ACK; + + if (!prepared && !alreadyOpened) + { + log.Error( $"Prepare camera for live stream failed: cameraIdx={cameraIdx}, answer={FormatPacketForLog(prepare)}"); + return; + } + + if (alreadyOpened) + { + log.Debug( $"Camera already opened for live stream: cameraIdx={cameraIdx}"); + } + + JmsPacket start = + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.start_stream_images_, + null, + 5000, + ct) + .ConfigureAwait(false); + + if (start == null || start.JmsMessage == null || start.JmsMessage.Status != MessageStatus.ACK) + { + log.Error( $"Unable to start live stream: cameraIdx={cameraIdx}, answer={FormatPacketForLog(start)}"); + return; + } + + streamStarted = true; + + log.Debug( $"Live stream started: cameraIdx={cameraIdx}"); + + while (!ct.IsCancellationRequested) + { + string response = + await reader.ReadLineAsync( + 10000, + ct) + .ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(response)) + continue; + + JmsPacket packet = + new JmsPacket(response); + + if (packet.JmsMessage == null) + continue; + + if (packet.JmsMessage.Command != + CommandM.grab_image_) + { + log.Debug( $"Unexpected packet during live stream: cameraIdx={cameraIdx}, command={packet.JmsMessage.Command}"); + continue; + } + + if (packet.JmsMessage.Status != + MessageStatus.ACK) + { + log.Warn( $"Live frame returned NACK: cameraIdx={cameraIdx}, payload={packet.JmsMessage.Payload}"); + continue; + } + + ParsedImage parsed = packet.JmsMessage.getImage(); + + if (parsed == null || parsed.Encoding != ImageType.BASE_64) + { + continue; + } + + Image image = parsed.Image; + + if (image == null) + continue; + + DrawOverlay(image); + + OnImageReceived( + this, + cameraIdx, + image, + RoiConfiguration.ImageRotation, + 0, + 1); + } + } + catch (OperationCanceledException) + { + log.Debug( $"Live stream cancelled: cameraIdx={cameraIdx}"); + } + catch (TimeoutException exc) + { + log.Error( $"Live stream timeout: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, error={exc.Message}"); + } + catch (SocketException exc) + { + log.Error( $"Live stream socket error: cameraIdx={cameraIdx}, IP={CameraCfg.IPAddressCJMS}, socketError={exc.SocketErrorCode}, " + + $"error={exc.Message}"); + } + catch (Exception exc) + { + log.Error( $"Live stream exception: cameraIdx={cameraIdx}, error={exc.Message}", exc); + UiBridge.Bridge.OnImage( cameraIdx, null); + } + finally + { + /* + * Cleanup nesmie používať zrušený ct. + */ + if (stream != null && + reader != null) + { + if (streamStarted) + { + try + { + await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.stop_stream_images_, + null, + 2000, + CancellationToken.None) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Stop live stream failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + try + { + await TryCloseCameraAsync( + stream, + reader) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Live stream cleanup failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + try + { + stream?.Dispose(); + } + catch + { + } + + try + { + client?.Close(); + client?.Dispose(); + } + catch + { + } + + if (lockAcquired) + { + cameraOperationLock.Release(); + } + + log.Debug( $"Live stream finished: cameraIdx={cameraIdx}"); + } + } + + private void DrawOverlay(Image image) + { + if (image == null) + return; + + if (!showOverlayRect || overlayThickness <= 0) + return; + + using (Graphics g = Graphics.FromImage(image)) + using (Pen pen = new Pen(Color.Green, overlayThickness)) + { + g.DrawRectangle(pen, overlayRect); + } + } //public void OnMeasurementDataReceived(object sender, MeasuredDataEventArgs msrmtData) @@ -1552,12 +2681,16 @@ namespace TBF.Rig.Network.Camera.CJMS11 { try { - if (cameraWriter != null && cameraReader != null && cameraStream!=null && cameraStream.CanWrite) + if (cameraStream != null && cameraStream.CanWrite) { - cameraWriter.WriteLineAsync(CommandMEnum.GetVal(command)).Wait(); - cameraWriter.FlushAsync(); + string commandStr = CommandMEnum.GetVal(command) + "\n"; + byte[] bytes = Encoding.ASCII.GetBytes(commandStr); + + cameraStream.Write(bytes, 0, bytes.Length); + cameraStream.Flush(); } - }catch(Exception exc) + } + catch (Exception exc) { log.ErrorFormat("{0} SendCommand: {1}", Name, exc.Message); } @@ -1565,74 +2698,88 @@ namespace TBF.Rig.Network.Camera.CJMS11 // - private JmsPacket SendCommandAndWaitToAnswer(StreamWriter writer, StreamReader reader, CommandM command, string payload = null) + private async Task SendCommandAndWaitToAnswerAsync( + NetworkStream stream, + CameraLineReader reader, + CommandM command, + string payload = null, + int timeoutMs = 1000, + CancellationToken ct = default) +{ + await SendCommandAsync( stream, command, ct, payload).ConfigureAwait(false); + + try + { + for (int iReads = 0; iReads < 6; iReads++) + { + string responseAnswer = await reader.ReadLineAsync( timeoutMs, ct).ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(responseAnswer)) + continue; + + log.Debug( $"Received from camera: idx={cameraIdx}, expected={command}, length={responseAnswer.Length}, prefix={GetLogPrefix(responseAnswer, 200)}"); + + JmsPacket result; + + try + { + result = new JmsPacket(responseAnswer); + } + catch (Exception exc) + { + log.Warn( $"Cannot parse camera response: idx={cameraIdx}, length={responseAnswer.Length}, error={exc.Message}"); + continue; + } + + if (result.JmsMessage == null) + { + log.Warn( $"Parsed packet contains no JmsMessage: idx={cameraIdx}"); + continue; + } + + if (result.JmsMessage.Command == command) + { + return result; + } + + log.Debug( $"Unexpected response command: idx={cameraIdx}, expected={command}, received={result.JmsMessage.Command}. Reading next response."); + } + + log.Error( $"Expected camera response not received: idx={cameraIdx}, command={command}"); + return null; + } + catch (OperationCanceledException) + { + throw; + } + catch (TimeoutException) + { + throw; + } + catch (IOException ioEx) + { + log.Error( $"IO error while reading from camera: idx={cameraIdx}, command={command}, error={ioEx.Message}"); + return null; + } + catch (Exception exc) + { + log.Error( $"Error while reading from camera: idx={cameraIdx}, command={command}, error={exc.Message}", exc); + return null; + } +} + + private static string GetLogPrefix( + string value, + int maximumLength) { - // Send command - String command_str = CommandMEnum.GetVal(command); - if (payload != null && payload.Length > 0) - { - command_str += "=" + payload; - } + if (string.IsNullOrEmpty(value)) + return string.Empty; - command_str = command_str + " "; - writer.WriteLineAsync(command_str).Wait(); - Console.WriteLine($@"Command '{command_str}' sent."); + if (value.Length <= maximumLength) + return value; - JmsPacket result; - - string responseAnswer = ""; - try - { - int iReads = 0; - while (true) - { - //get config - var readLineAsync = reader.ReadLineAsync(); - var timeoutTaskRead = Task.Delay(TimeSpan.FromSeconds(1)); - var waitAny = Task.WhenAny(readLineAsync, timeoutTaskRead).Result; - if (waitAny == timeoutTaskRead) - { - log.Debug("Activation timeout."); - throw new TimeoutException("Activation timeout. No received response for command_CFG"); - } - - log.Debug(string.Format("received from camera: {0}", responseAnswer)); - responseAnswer = readLineAsync.Result; - - try - { - result = new JmsPacket(responseAnswer); - } - catch (Exception exc) - { - iReads++; - continue; - } - - if (result.JmsMessage.Command == command) - { - return result; - } - - if (iReads > 5) - { - log.Error($"Maximum Count of unexcepted answers excited!"); - break; - } - - iReads++; - } - } - catch (IOException ioEx) - { - log.Error($"Timeout or IO error while reading from camera: {ioEx.Message}"); - } - catch (Exception e) - { - log.Error(string.Format("Error while reading from camera: {0}", e.Message)); - } - - return null; + return value.Substring(0, maximumLength) + + "..."; } public void Start() @@ -1709,6 +2856,41 @@ namespace TBF.Rig.Network.Camera.CJMS11 public static event EventHandler ImagesCameraHandler; public static event EventHandler ImageCameraHandler; + + public static void OnImageReceived( + object sender, + int idxImage, + Image image, + int iImageIdx = 0, + int imageCount = 1) + { + if (image == null) + { + return; + } + + log.Info( $"Image received from camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); + + EventHandler handler = ImageCameraHandler; + + if (handler == null) + { + image.Dispose(); + return; + } + + try + { + handler( sender, new PromptReceivedImageEventArgs( idxImage, image)); + log.Info( $"ImageCameraHandler reached camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); + } + catch (Exception exc) + { + log.Error( $"ImageCameraHandler exception: cameraIdx={idxImage}, error={exc.Message}", exc); + image.Dispose(); + } + } + /// /// This method is called from within this class when /// a prompt string was received from the telnet server. @@ -1716,7 +2898,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 public static void OnImageReceived(object sender, int idxImage, Image image, ImageRotation imageRotation, int iImageIdx = 0, int imageCount = 1) { - log.Info("Image received"); + log.Info($"Image received from camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); if (null != ImageCameraHandler) { @@ -1726,7 +2908,8 @@ namespace TBF.Rig.Network.Camera.CJMS11 ImageUtils.Rotate(image, imageRotation); //Send image to bridge - ImagesCameraHandler(sender, new PromptReceivedImagesEventArgs(idxImage, image,iImageIdx, imageCount)); + ImageCameraHandler(sender, new PromptReceivedImageEventArgs(idxImage, image)); + log.Info($"ImageCameraHandler reached camera: {idxImage}, iImageIdx: {iImageIdx}, imageCount: {imageCount}"); } catch (Exception ex) { @@ -1735,7 +2918,684 @@ namespace TBF.Rig.Network.Camera.CJMS11 } } - + /// + /// This method is called from within this class when + /// a prompt string was received from the telnet server. + /// + public static void OnImagesReceived( + object sender, + int cameraIndex, + Image image, + int imageIndex, + int imageCount, + DateTimeOffset? frameTime) + { + if (image == null) + { + return; + } + + log.Info( $"Images received from camera: {cameraIndex}, imageIndex={imageIndex}, " + + $"imageCount={imageCount}, frameTime={frameTime:O}"); + + EventHandler handler = ImagesCameraHandler; + + if (handler == null) + { + image.Dispose(); + return; + } + + try + { + handler( sender, + new PromptReceivedImagesEventArgs( + cameraIndex, + imageIndex, + imageCount, + image, + frameTime)); + + log.Info( $"ImagesCameraHandler reached camera: {cameraIndex}, imageIndex={imageIndex}, " + + $"imageCount={imageCount}"); + } + catch (Exception exc) + { + log.Error( $"ImagesCameraHandler failed: cameraIdx={cameraIndex}, imageIndex={imageIndex}, " + + $"error={exc.Message}", exc); + image.Dispose(); + } + } + + private async Task ReadCameraLineAsync( + NetworkStream stream, + int timeoutMs, + CancellationToken ct) + { + await cameraReadLock.WaitAsync(ct); + + try + { + var line = new List(); + var buffer = new byte[1]; + + while (true) + { + Task readTask = stream.ReadAsync(buffer, 0, 1, ct); + Task timeoutTask = Task.Delay(timeoutMs, ct); + + Task completed = await Task.WhenAny(readTask, timeoutTask); + + if (completed == timeoutTask) + { + ct.ThrowIfCancellationRequested(); + throw new TimeoutException($"Camera {cameraIdx} read timeout after {timeoutMs} ms."); + } + + int read = await readTask; + + if (read == 0) + throw new IOException("Camera connection closed."); + + if (buffer[0] == '\n') + break; + + if (buffer[0] != '\r') + line.Add(buffer[0]); + } + + return Encoding.ASCII.GetString(line.ToArray()); + } + finally + { + cameraReadLock.Release(); + } + } + + private readonly object cameraReadSyncLock = new object(); + + private string ReadCameraLine(NetworkStream stream, int timeoutMs) + { + lock (cameraReadSyncLock) + { + stream.ReadTimeout = timeoutMs; + + var line = new List(); + + while (true) + { + int b = stream.ReadByte(); // tu funguje ReadTimeout + + if (b == -1) + throw new IOException("Camera connection closed."); + + if (b == '\n') + break; + + if (b != '\r') + line.Add((byte)b); + } + + return Encoding.ASCII.GetString(line.ToArray()); + } + } + + + private async Task SendCommandAsync(NetworkStream stream, CommandM command, CancellationToken ct, string payload = null) + { + string commandStr = CommandMEnum.GetVal(command); + + if (!string.IsNullOrEmpty(payload)) + { + commandStr += "=" + payload; + } + + //commandStr += " "; + byte[] bytes = Encoding.ASCII.GetBytes(commandStr + "\n"); + + //await cameraWriteLock.WaitAsync(); + + + log.Info($"Sending command: '{commandStr}'"); + await stream.WriteAsync(bytes, 0, bytes.Length); + await stream.FlushAsync(); + //stream.Write(bytes, 0, bytes.Length); + //stream.Flush(); + + //await stream.WriteLineAsync(commandStr); + //await stream.FlushAsync(); + log.Info($"Command sent: '{commandStr}'"); + + } + + + private async Task ReadCameraLineWithTimeout(NetworkStream stream, int timeoutMs) + { + var readTask = Task.Run(() => ReadCameraLine(stream, timeoutMs)); + var timeoutTask = Task.Delay(timeoutMs); + + var completed = await Task.WhenAny(readTask, timeoutTask); + + if (completed == timeoutTask) + { + try { stream.Close(); } catch { } + try { cameraTcpClient?.Close(); } catch { } + + throw new TimeoutException($"Camera read timeout after {timeoutMs} ms."); + } + + return await readTask; + } + + + //------------------------------ SEND PART -------------------------------------- + + public Task> StartSendImagesPreviewAsync( + int count, + int delayMs, + string taskId) + { + if (count <= 0) + { + throw new ArgumentOutOfRangeException( + nameof(count), + "Image count must be greater than zero."); + } + + if (delayMs < 0) + { + throw new ArgumentOutOfRangeException( + nameof(delayMs), + "Delay cannot be negative."); + } + + if (string.IsNullOrWhiteSpace(taskId)) + { + throw new ArgumentException( + "Task ID is required.", + nameof(taskId)); + } + + if (sendImagesTask != null && + !sendImagesTask.IsCompleted) + { + log.Warn( + $"Send images preview already running: " + + $"cameraIdx={cameraIdx}, taskId={taskId}"); + + return sendImagesTask; + } + + sendImagesCts?.Cancel(); + sendImagesCts?.Dispose(); + + sendImagesCts = + new CancellationTokenSource(); + + sendImagesTask = + SendImagesPreviewListenerAsync( + count, + delayMs, + taskId, + sendImagesCts.Token); + + return sendImagesTask; + } + + public void CancelSendImagesPreview() + { + try + { + sendImagesCts?.Cancel(); + } + catch (ObjectDisposedException) + { + } + } + + private async Task> SendImagesPreviewListenerAsync( + int requestedCount, + int delayMs, + string taskId, + CancellationToken ct) + { + bool lockAcquired = false; + TcpClient client = null; + NetworkStream stream = null; + CameraLineReader reader = null; + + var imagesByIndex = new Dictionary(); + + try + { + await cameraOperationLock.WaitAsync(ct).ConfigureAwait(false); + + lockAcquired = true; + + client = await ConnectCameraAsync( timeoutMs: 5000, ct: ct).ConfigureAwait(false); + stream = client.GetStream(); + + reader = new CameraLineReader( stream, 64 * 1024); + + /* + * Kamera musí byť pripravená. + */ + JmsPacket prepareAnswer = await SendCommandAndWaitToAnswerAsync( + stream, + reader, + CommandM.prepare_camera_, + null, + 3000, + ct) + .ConfigureAwait(false); + + bool prepared = prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == MessageStatus.ACK; + + bool alreadyOpened = + prepareAnswer != null && + prepareAnswer.JmsMessage != null && + prepareAnswer.JmsMessage.Status == MessageStatus.NACK && + !string.IsNullOrEmpty( prepareAnswer.JmsMessage.Payload) && + prepareAnswer.JmsMessage.Payload.Contains( "OPENED"); + + if (!prepared && !alreadyOpened) + { + throw new IOException( $"Prepare camera for send failed: cameraIdx={cameraIdx}, " + + $"answer={FormatPacketForLog(prepareAnswer)}"); + } + + var request = new SendImagesRequest { Count = requestedCount, Delay = delayMs, TaskId = taskId }; + string requestPayload = JsonConvert.SerializeObject( request, Formatting.None); + + log.Debug( $"Starting send images preview: cameraIdx={cameraIdx}, count={requestedCount}, " + + $"delay={delayMs}, taskId={taskId}"); + + /* + * Pri send_ neposielame cez + * SendCommandAndWaitToAnswerAsync(), + * pretože očakávame viac odpovedí. + */ + await SendCommandAsync( + stream, + CommandM.send_, + ct, + requestPayload) + .ConfigureAwait(false); + + /* + * Timeout musí zahŕňať plánovaný čas snímania. + * + * count=5, delay=2050: + * približne 4 * 2050 ms medzi prvým a posledným frame + * plus rezerva na prenos Base64 obrázkov. + */ + int totalTimeoutMs = CalculateSendTimeout( requestedCount, delayMs); + + using (var timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(ct)) + { + timeoutCts.CancelAfter(totalTimeoutMs); + + while (imagesByIndex.Count < requestedCount) + { + timeoutCts.Token.ThrowIfCancellationRequested(); + + string response = await reader.ReadLineAsync( 10000, timeoutCts.Token).ConfigureAwait(false); + + if (string.IsNullOrWhiteSpace(response)) + { + continue; + } + + JmsPacket packet; + + try + { + packet = new JmsPacket(response); + } + catch (Exception exc) + { + log.Warn( $"Cannot parse send response: cameraIdx={cameraIdx}, error={exc.Message}"); + continue; + } + + if (packet.JmsMessage == null) + { + continue; + } + + if (packet.JmsMessage.Command != CommandM.send_) + { + log.Debug( $"Unexpected packet during send: cameraIdx={cameraIdx}, command={packet.JmsMessage.Command}"); + continue; + } + + if (packet.JmsMessage.Status != MessageStatus.ACK) + { + log.Warn( $"Send image returned NACK: cameraIdx={cameraIdx}, payload={packet.JmsMessage.Payload}"); + continue; + } + + string payload = packet.JmsMessage.Payload; + + if (string.IsNullOrWhiteSpace(payload)) + { + continue; + } + + /* + * Posledný sumarizačný packet nemá + * pictureBase64 ani workerId. + */ + if (!PayloadContainsImage(payload)) + { + TryLogSendSummary( payload, cameraIdx); + continue; + } + + SendImagePayload imagePayload; + + try + { + imagePayload = JsonConvert.DeserializeObject(payload); + } + catch (Exception exc) + { + log.Warn( $"Cannot deserialize send image: cameraIdx={cameraIdx}, error={exc.Message}"); + continue; + } + + if (imagePayload == null || string.IsNullOrWhiteSpace( imagePayload.PictureBase64)) + { + continue; + } + + if (!string.Equals( imagePayload.Status, "SUCCESSFUL", StringComparison.OrdinalIgnoreCase)) + { + log.Warn( $"Send image status is not successful: cameraIdx={cameraIdx}, " + + $"workerId={imagePayload.WorkerId}, status={imagePayload.Status}"); + continue; + } + + /* + * workerId je podľa logu 1..count. + */ + int imageIndex = imagePayload.WorkerId; + + if (imageIndex <= 0) + { + log.Warn( $"Invalid send image index: cameraIdx={cameraIdx}, workerId={imageIndex}"); + continue; + } + + /* + * Duplicitný packet ignorujeme. + */ + if (imagesByIndex.ContainsKey( imageIndex)) + { + log.Warn( $"Duplicate send image: cameraIdx={cameraIdx}, workerId={imageIndex}"); + continue; + } + + Image image = DecodeBase64Image( imagePayload.PictureBase64); + + if (!IsValidGrabbedImage(image)) + { + image?.Dispose(); + + log.Warn( + $"Invalid send image: " + + $"cameraIdx={cameraIdx}, " + + $"workerId={imageIndex}"); + + continue; + } + + DateTimeOffset? frameTime = + ParseFrameTime( + imagePayload.FrameTime); + + /* + * Úpravy obrázka dokončíme ešte predtým, + * než ho odovzdáme UI. + */ + ImageUtils.Rotate( + image, + RoiConfiguration.ImageRotation); + + DrawOverlay(image); + + var timedImage = + new TimedCameraImage + { + Index = imageIndex, + TaskId = + imagePayload.TaskId, + FrameTime = frameTime, + FrameTimeMillis = + imagePayload.FrameTimeMillis, + FrameGap = + imagePayload.FrameGap, + Image = image + }; + + imagesByIndex.Add( + imageIndex, + timedImage); + + /* + * UI dostane klon. + * Originál zostáva vo výslednom zozname. + */ + Image imageForUi = CloneImageToBitmap(image); + + OnImagesReceived( + this, + cameraIdx, + imageForUi, + imageIndex, + requestedCount, + frameTime); + + log.Debug( $"Send image received: cameraIdx={cameraIdx}, workerId={imageIndex}, " + + $"received={imagesByIndex.Count}/{requestedCount}, frameTime={frameTime:O}, " + + $"size={image.Width}x{image.Height}"); + } + } + + List result = + imagesByIndex + .OrderBy(x => x.Key) + .Select(x => x.Value) + .ToList(); + + log.Debug( + $"Send images preview completed: " + + $"cameraIdx={cameraIdx}, " + + $"received={result.Count}, " + + $"taskId={taskId}"); + + return result; + } + catch (OperationCanceledException) + { + foreach (TimedCameraImage image + in imagesByIndex.Values) + { + image.Image?.Dispose(); + } + + log.Debug( + $"Send images preview cancelled: " + + $"cameraIdx={cameraIdx}, " + + $"taskId={taskId}"); + + throw; + } + catch (Exception exc) + { + foreach (TimedCameraImage image + in imagesByIndex.Values) + { + image.Image?.Dispose(); + } + + log.Error( + $"Send images preview failed: " + + $"cameraIdx={cameraIdx}, " + + $"taskId={taskId}, " + + $"error={exc.Message}", + exc); + + UiBridge.Bridge.OnImage( + cameraIdx, + null); + + throw; + } + finally + { + if (stream != null && + reader != null) + { + try + { + await TryCloseCameraAsync( + stream, + reader) + .ConfigureAwait(false); + } + catch (Exception exc) + { + log.Warn( + $"Send preview cleanup failed: " + + $"cameraIdx={cameraIdx}, " + + $"error={exc.Message}"); + } + } + + try + { + stream?.Dispose(); + } + catch + { + } + + try + { + client?.Close(); + client?.Dispose(); + } + catch + { + } + + if (lockAcquired) + { + cameraOperationLock.Release(); + } + } + } + + private static int CalculateSendTimeout( + int count, + int delayMs) + { + /* + * Medzi count obrázkami je count - 1 intervalov. + * Pridáme 15 sekúnd rezervu na capture, + * Base64 a sieťový prenos. + */ + long captureDuration = + (long)Math.Max(0, count - 1) * + delayMs; + + long timeout = + captureDuration + 15000L; + + return timeout > int.MaxValue + ? int.MaxValue + : (int)timeout; + } + + private static Image DecodeBase64Image( string pictureBase64) + { + if (string.IsNullOrWhiteSpace( pictureBase64)) + { + return null; + } + + try + { + byte[] imageBytes = Convert.FromBase64String( pictureBase64); + + using (var stream = new MemoryStream(imageBytes)) + using (Image decoded = Image.FromStream( stream, useEmbeddedColorManagement: false, validateImageData: true)) + { + /* + * Bitmap odpojí výsledok od MemoryStream. + */ + return new Bitmap(decoded); + } + } + catch + { + return null; + } + } + + private static bool PayloadContainsImage( string payload) + { + if (string.IsNullOrWhiteSpace(payload)) + { + return false; + } + + return payload.IndexOf( "\"pictureBase64\"", StringComparison.OrdinalIgnoreCase) >= 0; + } + + private static DateTimeOffset? ParseFrameTime( string value) + { + if (string.IsNullOrWhiteSpace(value)) + { + return null; + } + + DateTimeOffset parsed; + + if (DateTimeOffset.TryParse( + value, + System.Globalization.CultureInfo.InvariantCulture, + System.Globalization.DateTimeStyles.RoundtripKind, + out parsed)) + { + return parsed; + } + + return null; + } + + private static void TryLogSendSummary( string payload, int cameraIdx) + { + try + { + SendSummaryPayload summary = JsonConvert.DeserializeObject(payload); + + if (summary == null) + { + return; + } + + log.Debug( $"Send summary received: cameraIdx={cameraIdx}, picCount={summary.PictureCount}, " + + $"delay={summary.Delay}, timeStamp={summary.TimeStamp}"); + } + catch (Exception exc) + { + log.Debug( $"Payload is not a send summary: cameraIdx={cameraIdx}, error={exc.Message}"); + } + } diff --git a/TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs b/TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs new file mode 100644 index 000000000..da5fd2919 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/CameraLineReader.cs @@ -0,0 +1,154 @@ +using System; +using System.IO; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace TBF.Rig.Network.Camera.CJMS11 +{ + internal sealed class CameraLineReader + { + private readonly Stream stream; + private readonly byte[] receiveBuffer; + + private int bufferStart; + private int bufferEnd; + + public CameraLineReader( + Stream stream, + int bufferSize = 64 * 1024) + { + if (stream == null) + throw new ArgumentNullException(nameof(stream)); + + if (!stream.CanRead) + throw new ArgumentException( + "Stream must be readable.", + nameof(stream)); + + if (bufferSize <= 0) + throw new ArgumentOutOfRangeException( + nameof(bufferSize)); + + this.stream = stream; + receiveBuffer = new byte[bufferSize]; + } + + public async Task ReadLineAsync( + int timeoutMs, + CancellationToken cancellationToken) + { + if (timeoutMs <= 0) + throw new ArgumentOutOfRangeException( + nameof(timeoutMs)); + + using (var lineBuffer = new MemoryStream()) + { + while (true) + { + int newLineIndex = FindNewLine(); + + if (newLineIndex >= 0) + { + int count = newLineIndex - bufferStart; + + if (count > 0) + { + lineBuffer.Write( + receiveBuffer, + bufferStart, + count); + } + + bufferStart = newLineIndex + 1; + + return ConvertLineToString(lineBuffer); + } + + if (bufferStart < bufferEnd) + { + lineBuffer.Write( + receiveBuffer, + bufferStart, + bufferEnd - bufferStart); + } + + bufferStart = 0; + bufferEnd = 0; + + int read = await ReadChunkAsync( + timeoutMs, + cancellationToken) + .ConfigureAwait(false); + + if (read == 0) + { + throw new IOException( + "Camera connection was closed."); + } + + bufferStart = 0; + bufferEnd = read; + } + } + } + + private int FindNewLine() + { + for (int i = bufferStart; i < bufferEnd; i++) + { + if (receiveBuffer[i] == (byte)'\n') + return i; + } + + return -1; + } + + private async Task ReadChunkAsync( + int timeoutMs, + CancellationToken cancellationToken) + { + using (var timeoutCts = + CancellationTokenSource.CreateLinkedTokenSource( + cancellationToken)) + { + timeoutCts.CancelAfter(timeoutMs); + + try + { + return await stream.ReadAsync( + receiveBuffer, + 0, + receiveBuffer.Length, + timeoutCts.Token) + .ConfigureAwait(false); + } + catch (OperationCanceledException) + when (!cancellationToken.IsCancellationRequested) + { + throw new TimeoutException( + $"Camera read timeout after {timeoutMs} ms."); + } + } + } + + private static string ConvertLineToString( + MemoryStream lineBuffer) + { + int length = checked((int)lineBuffer.Length); + + if (length == 0) + return string.Empty; + + byte[] data = lineBuffer.GetBuffer(); + + if (data[length - 1] == (byte)'\r') + length--; + + return Encoding.ASCII.GetString( + data, + 0, + length); + } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs b/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs index e6f71ab5d..af7048168 100644 --- a/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs +++ b/TBF/Rig/Network/Camera/CJMS11/GrabImagesOp.cs @@ -1,198 +1,1123 @@ /// /// Copyright (c) 2017 Sensus Slovensko a.s. /// + using System; using System.Collections.Generic; -using System.Diagnostics; using System.Drawing; -using log4net; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading.Tasks; using Common; using Config.Entities; +using log4net; +using TBF.Rig.Network.Camera.CJMS11.POJO; using TBF.Rig.Network.Telnet; -using System.IO; -using System.Threading.Tasks; -using System.Windows.Forms; namespace TBF.Rig.Network.Camera.CJMS11 { public class GrabImagesOp : IOperation { - /// TODO: Implement support for grabbing multiple images, now imgFileNames.Lenght should be 1 - private static readonly ILog log = LogManager.GetLogger(typeof(GrabImagesOp)); - public override string ToString() { return string.Format("GrabImageOp()"); } - readonly Camera camera; - - readonly string[] imgFileNames; - readonly bool blackAndWhite; - readonly bool lowResolution; - readonly ImageRotation imageRotation; - - string command; - bool grabImageCommandSent; - string response; - bool grabPassed; - bool grabFailed; - bool transferringGrabbedImage; - - Image grabedImage; - Dictionary grabedImages = new Dictionary(); - - - /// - /// Events: Event.None or Event.Error - /// - /// CLP1611.Camera reference - public GrabImagesOp(Camera camera, string[] imgFileNames, bool blackAndWhite, bool lowResolution, ImageRotation imageRotation) + private enum GrabOperationMode { - /// TODO: Implement support for grabbing multiple images, now imgFileNames.Lenght should be 1 - + None, + SingleImage, + SendImages + } + + + private readonly Camera camera; + private readonly string[] imgFileNames; + private readonly bool blackAndWhite; + private readonly bool lowResolution; + private readonly ImageRotation imageRotation; + + private readonly object imageSync = new object(); + + private bool grabImageCommandSent; + private bool transferringGrabbedImage; + + private GrabOperationMode operationMode; + + private Image grabedImage; + + private readonly Dictionary grabedImages = new Dictionary(); + + private Task grabImageTask; + private Task> sendImagesTask; + private Task saveImageTask; + + private IReadOnlyList timedCameraImages; + private readonly List savedFileNames = new List(); + + public override string ToString() { return "GrabImageOp()"; } + + public GrabImagesOp( + Camera camera, + string[] imgFileNames, + bool blackAndWhite, + bool lowResolution, + ImageRotation imageRotation) + { + if (camera == null) + { + throw new ArgumentNullException(nameof(camera)); + } + this.camera = camera; - //this.telnet = camera.Telnet; this.imgFileNames = imgFileNames; this.blackAndWhite = blackAndWhite; this.lowResolution = lowResolution; this.imageRotation = imageRotation; - grabImageCommandSent = false; - transferringGrabbedImage = false; - - /// image incomming event - if (camera.DebugLevel == DebugMode.Normal || camera.DebugLevel == DebugMode.DetectedOn) - { - Camera.ImageCameraHandler += ImageReceived; - } - //TODO BUMI improve by simulate image - Camera.ImageCameraHandler += ImageReceived; - - /// inmages incomming event rotation - if (camera.DebugLevel == DebugMode.Normal || camera.DebugLevel == DebugMode.DetectedOn) - { - Camera.ImagesCameraHandler += ImagesReceived; - } - //TODO BUMI improve by simulate image - Camera.ImagesCameraHandler += ImagesReceived; - } - - void PromptReceived(object sndr, PromptReceivedJMSEventArgs a) - { - response = a.Response; - } - - void ImageReceived(object sndr, PromptReceivedImageEventArgs a) - { - if(a.idxCamera != camera.CameraIdx) return; - grabedImage = a.image; - grabPassed = true; + SubscribeEvents(); } - void ImagesReceived(object sndr, PromptReceivedImagesEventArgs a) + + + private void SubscribeEvents() { - if(a.idxCamera != camera.CameraIdx) return; - grabedImage = a.image; //upgraded image common - grabedImages[a.idxImage] = a.image; // stored image from sent to list of images - grabPassed = true; + Camera.ImageCameraHandler -= ImageReceived; + Camera.ImageCameraHandler += ImageReceived; + + Camera.ImagesCameraHandler -= ImagesReceived; + Camera.ImagesCameraHandler += ImagesReceived; } + private void ImageReceived( + object sender, + PromptReceivedImageEventArgs args) + { + if (args == null || args.idxCamera != camera.CameraIdx || args.image == null) + { + return; + } + + /* + * Tento obrázok používame iba pre kompatibilitu + * s existujúcim eventovým mechanizmom. + * + * Hlavným zdrojom výsledku je Task. + */ + lock (imageSync) + { + grabedImage = args.image; + } + } + + private void ImagesReceived( object sender, PromptReceivedImagesEventArgs args) + { + if (args == null || args.idxCamera != camera.CameraIdx || args.image == null) + { + return; + } + + /* + * Náhľadové obrázky z eventu nebudeme ukladať + * na disk. Originálne obrázky dostaneme vo + * výsledku sendImagesTask. + */ + lock (imageSync) + { + grabedImage = args.image; + grabedImages[args.idxImage] = args.image; + } + } public void Start() { + SubscribeEvents(); + grabImageCommandSent = false; transferringGrabbedImage = false; - grabPassed = false; - grabedImage = null; - grabedImages.Clear(); - if ((imgFileNames != null) && (imgFileNames.Length > 0) && File.Exists(imgFileNames[0])) - { - /// - /// An image specified, (1) delete previous image, (2) check if this is a simulation - /// - File.Delete(imgFileNames[0]); + operationMode = GrabOperationMode.None; - /* if (camera.CameraCfg.DebugLevel == DebugMode.Simulate || camera.CameraCfg.DebugLevel == DebugMode.DetectedOff) - { - /// - /// Camera is in simulation mode => create a simulated image - /// - File.Copy(string.Format("{0}\\Pictures\\sample.jpg", Program.ExecutableDir), imgFileNames[0]); - }*/ - } + grabImageTask = null; + sendImagesTask = null; + saveImageTask = null; + + timedCameraImages = null; + + lock (imageSync) + { + grabedImage = null; + grabedImages.Clear(); + } + + savedFileNames.Clear(); + + DeletePreviousOutputFiles(); } + public Event Run() { - if ((imgFileNames == null) || (imgFileNames.Length < 1) || (imgFileNames[0] == null)) + if (!HasValidOutputFileName()) { - /// - /// No images to be grabbed => Done - /// - return Event.GrabPassed; + log.Warn( + $"No output image file configured: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabPassed; } - /*else if (camera.CameraCfg.DebugLevel == DebugMode.Simulate || - camera.CameraCfg.DebugLevel == DebugMode.DetectedOff) - { - /// - /// Camera is in simulation mode => create a simulated image and complete - /// - return Event.GrabPassed; - }*/ - else if (camera.IsGrabImageListenerThreadAlive) - { - return Event.CameraBusy; - } - else if (!grabImageCommandSent) + + /* + * 1. Spustenie príslušnej operácie. + */ + if (!grabImageCommandSent) { - /// - /// Normal operation, no command sent yet => (1) wait until telnet state = Inactive, (2) send a command - /// - camera.StartGrabImageListener(); - grabImageCommandSent = true; + return StartGrabOperation(); + } + + /* + * 2. Spracovanie podľa režimu. + */ + switch (operationMode) + { + case GrabOperationMode.SingleImage: + return RunSingleImageMode(); + + case GrabOperationMode.SendImages: + return RunSendImagesMode(); + + default: + log.Error( + $"Grab operation mode was not selected: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + } + + private Event StartGrabOperation() + { + grabImageCommandSent = true; + + try + { + int requestedImageCount = + GetRequestedImageCount(); + + if (requestedImageCount <= 1) + { + operationMode = + GrabOperationMode.SingleImage; + + log.Debug( + $"Starting single asynchronous grab: " + + $"cameraIdx={camera.CameraIdx}"); + + grabImageTask = + camera.StartGrabImageListenerAsync( + retryUntilValidImage: true, + maxAttempts: 5, + retryDelayMs: 200); + } + else + { + operationMode = + GrabOperationMode.SendImages; + + int delayMs = + GetRequestedDelayMs(); + + string taskId = + CreateSendTaskId(); + + log.Debug( + $"Starting send images operation: " + + $"cameraIdx={camera.CameraIdx}, " + + $"count={requestedImageCount}, " + + $"delayMs={delayMs}, " + + $"taskId={taskId}"); + + sendImagesTask = + camera.StartSendImagesPreviewAsync( + count: requestedImageCount, + delayMs: delayMs, + taskId: taskId); + } + return Event.CameraBusy; } - else if (grabPassed) + catch (Exception exc) { - /// - /// Normal operation, grab passed => transfer/transferring the image - - - if (transferringGrabbedImage) - { - /// Grab passed and image transfer is in progress - return Event.GrabPassed; - } - else if (camera.IsSaveImageListenerThreadAlive) - { - /// Wait until the previous image transfer completes - return Event.CameraBusy; - } - else //if (0 == camera.DownloadFile(blackAndWhite ? "grabbed.jpg" : "grabbed.bmp", imgFileNames[0])) - { - camera.StartSaveImageToFileListener(grabedImage, imgFileNames[0]); - /// File transfer successfully started - transferringGrabbedImage = true; - return Event.GrabPassed; - } - } - else - { - /// - /// Normal operation, grab failed => there in no image to transfer - /// + log.Error( + $"Cannot start image operation: " + + $"cameraIdx={camera.CameraIdx}, " + + $"mode={operationMode}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + return Event.GrabFailed; } - } + private Event RunSingleImageMode() + { + if (grabImageTask == null) + { + log.Error( + $"Single grab task was not created: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!grabImageTask.IsCompleted) + { + return Event.CameraBusy; + } + + if (grabImageTask.IsCanceled) + { + log.Warn( + $"Single grab task was cancelled: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (grabImageTask.IsFaulted) + { + log.Error( + $"Single grab task failed: " + + $"cameraIdx={camera.CameraIdx}", + grabImageTask.Exception?.Flatten()); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!transferringGrabbedImage) + { + Image imageToSave; + + try + { + imageToSave = + grabImageTask + .GetAwaiter() + .GetResult(); + } + catch (Exception exc) + { + log.Error( + $"Cannot obtain grabbed image: " + + $"cameraIdx={camera.CameraIdx}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (imageToSave == null) + { + log.Error( + $"Single grab completed without image: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + lock (imageSync) + { + grabedImage = imageToSave; + } + + string outputFileName = + imgFileNames[0]; + + try + { + saveImageTask = + camera.StartSaveImageToFileAsync( + imageToSave, + outputFileName); + + savedFileNames.Clear(); + savedFileNames.Add( + outputFileName); + + transferringGrabbedImage = true; + } + catch (Exception exc) + { + log.Error( + $"Cannot start single image save: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file={outputFileName}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + + return Event.GrabFailed; + } + + return Event.CameraBusy; + } + + return CheckSaveTaskAndFinish(); + } + + + + private Event RunSendImagesMode() + { + if (sendImagesTask == null) + { + log.Error( + $"Send images task was not created: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!sendImagesTask.IsCompleted) + { + return Event.CameraBusy; + } + + if (sendImagesTask.IsCanceled) + { + log.Warn( + $"Send images task was cancelled: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (sendImagesTask.IsFaulted) + { + log.Error( + $"Send images task failed: " + + $"cameraIdx={camera.CameraIdx}", + sendImagesTask.Exception?.Flatten()); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (!transferringGrabbedImage) + { + try + { + timedCameraImages = + sendImagesTask + .GetAwaiter() + .GetResult(); + } + catch (Exception exc) + { + log.Error( + $"Cannot obtain send image results: " + + $"cameraIdx={camera.CameraIdx}, " + + $"error={exc.Message}", + exc); + + FinishOperation(); + + return Event.GrabFailed; + } + + if (timedCameraImages == null || + timedCameraImages.Count == 0) + { + log.Error( + $"Send operation returned no images: " + + $"cameraIdx={camera.CameraIdx}"); + + FinishOperation(); + + return Event.GrabFailed; + } + + int requestedCount = + GetRequestedImageCount(); + + if (timedCameraImages.Count != + requestedCount) + { + log.Error( + $"Send operation returned unexpected image count: " + + $"cameraIdx={camera.CameraIdx}, " + + $"requested={requestedCount}, " + + $"received={timedCameraImages.Count}"); + + DisposeTimedImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + IReadOnlyList + orderedImages = + timedCameraImages + .OrderBy(image => image.Index) + .ToList(); + + try + { + /* + * Camera.StartSaveImageToFileAsync používa + * jeden interný save task, preto viac + * obrázkov uložíme sekvenčne v jednom + * samostatnom tasku. + */ + saveImageTask = + Task.Run( + () => SaveTimedImages( + orderedImages)); + + transferringGrabbedImage = true; + } + catch (Exception exc) + { + log.Error( + $"Cannot start send images save task: " + + $"cameraIdx={camera.CameraIdx}, " + + $"error={exc.Message}", + exc); + + DisposeTimedImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + return Event.CameraBusy; + } + + return CheckSaveTaskAndFinish(); + } + + private void SaveTimedImages( IReadOnlyList images) + { + if (images == null) + { + throw new ArgumentNullException(nameof(images)); + } + + if (images.Count == 0) + { + throw new ArgumentException( "No timed camera images were provided.", nameof(images)); + } + + if (!HasValidOutputFileName()) + { + throw new InvalidOperationException( "No base output image file name is configured."); + } + + savedFileNames.Clear(); + + IReadOnlyList orderedImages = + images + .Where(image => image != null) + .OrderBy(image => image.Index) + .ToList(); + + if (orderedImages.Count != images.Count) + { + throw new InvalidOperationException( $"One or more timed camera images are null. cameraIdx={camera.CameraIdx}, " + + $"expected={images.Count}, valid={orderedImages.Count}"); + } + + log.Debug( $"Starting timed images save: cameraIdx={camera.CameraIdx}, imagesCount={orderedImages.Count}, " + + $"baseFile='{imgFileNames[0]}'"); + + foreach (TimedCameraImage timedImage in orderedImages) + { + if (timedImage.Image == null) + { + throw new InvalidOperationException( $"Timed camera image contains no image data: " + + $"cameraIdx={camera.CameraIdx}, imageIndex={timedImage.Index}, frameTime={timedImage.FrameTime:O}"); + } + + /* + * Každý obrázok uložíme pod unikátnym názvom + * obsahujúcim index obrázka a časovú značku. + */ + string timedFileName = CreateTimedImageFileName( timedImage, orderedImages.Count); + + log.Debug( $"Saving timed camera image: cameraIdx={camera.CameraIdx}, imageIndex={timedImage.Index}, " + + $"frameTime={timedImage.FrameTime:O}, file='{timedFileName}'"); + + camera.SaveImageToFile( + timedImage.Image, + timedFileName); + + savedFileNames.Add( + timedFileName); + + log.Debug( $"Timed camera image saved successfully: cameraIdx={camera.CameraIdx}, " + + $"imageIndex={timedImage.Index}, file='{timedFileName}'"); + + /* + * Prvý obrázok uložíme ešte raz pod pôvodným názvom. + * + * Tento súbor používa existujúci dialóg cez + * startImages[] alebo endImages[]. + * + * Napríklad: + * TestAdvance-1-start.bmp + */ + if (timedImage.Index == 1) + { + string compatibilityFileName = + imgFileNames[0]; + + log.Debug($"Saving first timed image under compatibility name: cameraIdx={camera.CameraIdx}, " + + $"imageIndex={timedImage.Index}, frameTime={timedImage.FrameTime:O}, file='{compatibilityFileName}'"); + + camera.SaveImageToFile(timedImage.Image, compatibilityFileName); + savedFileNames.Add(compatibilityFileName); + + log.Debug($"First timed image saved under compatibility name: cameraIdx={camera.CameraIdx}, " + + $"imageIndex={timedImage.Index}, file='{compatibilityFileName}'"); + } + } + + log.Debug( + $"Timed images save completed: cameraIdx={camera.CameraIdx}, receivedImages={orderedImages.Count}, " + + $"savedFiles={savedFileNames.Count}"); + } + + private Event CheckSaveTaskAndFinish() + { + if (saveImageTask == null) + { + log.Error( $"Save image task was not created: cameraIdx={camera.CameraIdx}, mode={operationMode}"); + FinishOperation(); + return Event.GrabFailed; + } + + if (!saveImageTask.IsCompleted) + { + return Event.CameraBusy; + } + + if (saveImageTask.IsCanceled) + { + log.Warn( $"Save image task was cancelled: cameraIdx={camera.CameraIdx}, mode={operationMode}"); + + DisposeOperationImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + if (saveImageTask.IsFaulted) + { + log.Error( $"Save image task failed: cameraIdx={camera.CameraIdx}, mode={operationMode}", + saveImageTask.Exception?.Flatten()); + + DisposeOperationImages(); + FinishOperation(); + + return Event.GrabFailed; + } + + bool allFilesSaved = VerifySavedFiles(); + + if (allFilesSaved) + { + log.Debug( $"Image operation completed successfully: cameraIdx={camera.CameraIdx}, " + + $"mode={operationMode}, savedFiles={savedFileNames.Count}"); + } + else + { + log.Error( $"One or more image files were not saved: cameraIdx={camera.CameraIdx}, mode={operationMode}"); + } + + DisposeOperationImages(); + FinishOperation(); + + return allFilesSaved + ? Event.GrabPassed + : Event.GrabFailed; + } + + private bool VerifySavedFiles() + { + if (savedFileNames.Count == 0) + { + return false; + } + + foreach (string fileName + in savedFileNames) + { + try + { + if (string.IsNullOrWhiteSpace(fileName) || + !File.Exists(fileName)) + { + return false; + } + + var fileInfo = + new FileInfo(fileName); + + if (fileInfo.Length <= 0) + { + return false; + } + } + catch (Exception exc) + { + log.Error( + $"Cannot verify saved image: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file={fileName}, " + + $"error={exc.Message}", + exc); + + return false; + } + } + + return true; + } + + private string CreateTimedImageFileName( + TimedCameraImage timedImage, + int totalImageCount) + { + if (timedImage == null) + { + throw new ArgumentNullException(nameof(timedImage)); + } + + if (!HasValidOutputFileName()) + { + throw new InvalidOperationException( + "No base output image file name is configured."); + } + + int imagePosition = timedImage.Index; + + if (imagePosition <= 0) + { + throw new InvalidOperationException( + $"Invalid image position: {imagePosition}."); + } + + // Prvý obrázok musí zostať pod pôvodným názvom, + // pretože tento názov používa startImages/endImages. + if (imagePosition == 1) + { + return imgFileNames[0]; + } + + string configuredFileName = imgFileNames[0]; + + string directory = + Path.GetDirectoryName(configuredFileName); + + string baseName = + Path.GetFileNameWithoutExtension(configuredFileName); + + string extension = + Path.GetExtension(configuredFileName); + + if (string.IsNullOrWhiteSpace(extension)) + { + extension = ".png"; + } + + DateTime timestampUtc = + timedImage.FrameTime.HasValue + ? timedImage.FrameTime.Value.UtcDateTime + : DateTime.UtcNow; + + string timestampText = + timestampUtc.ToString( + "yyyyMMdd_HHmmss_fff", + CultureInfo.InvariantCulture); + + int digits = Math.Max( + 2, + totalImageCount.ToString( + CultureInfo.InvariantCulture).Length); + + string indexText = + imagePosition.ToString( + "D" + digits, + CultureInfo.InvariantCulture); + + string newFileName = + $"{baseName}_img{indexText}_{timestampText}{extension}"; + + return string.IsNullOrWhiteSpace(directory) + ? newFileName + : Path.Combine(directory, newFileName); + } + + private string GetConfiguredFileName( + int zeroBasedIndex) + { + if (imgFileNames != null && + zeroBasedIndex >= 0 && + zeroBasedIndex < imgFileNames.Length && + !string.IsNullOrWhiteSpace( + imgFileNames[zeroBasedIndex])) + { + return imgFileNames[zeroBasedIndex]; + } + + /* + * Ak nie je pripravený názov pre každý obrázok, + * použijeme prvý názov ako základ. + */ + return imgFileNames[0]; + } + + private int GetRequestedImageCount() + { + var roi = camera.CamRoi; + + if (roi == null) + { + return 1; + } + + return Math.Max(1, roi.RoiPicCount); + } + + private int GetRequestedDelayMs() + { + const int MinDelayMs = 500; + + var roi = camera.CamRoi; + + if (roi == null) + { + return MinDelayMs; + } + + int configuredDelay = roi.RoiDeltaTimeMs; + + if (configuredDelay < MinDelayMs) + { + log.Warn( $"Configured ROI delay {configuredDelay} ms is below minimum. Using {MinDelayMs} ms instead."); + } + + return Math.Max(MinDelayMs, configuredDelay); + } + + private string CreateSendTaskId() + { + /* + * Timestamp + kamera + krátka časť GUID. + * ID je čitateľné a zároveň odolné voči + * kolíziám pri rýchlom opakovaní. + */ + string timestamp = DateTime.UtcNow.ToString( "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture); + + string uniquePart = Guid.NewGuid() .ToString("N") .Substring(0, 8); + + return $"{timestamp}_cam{camera.CameraIdx}_" + uniquePart; + } + + private bool HasValidOutputFileName() + { + return + imgFileNames != null && + imgFileNames.Length > 0 && + !string.IsNullOrWhiteSpace( + imgFileNames[0]); + } + + + + + + + + public void Stop() { - //if (camera.CameraCfg.DebugLevel == DebugMode.Simulate) return; - - if (camera.IsGrabImageListenerThreadAlive) + try { - camera.SetStopGrabImageListenerFlag(); + switch (operationMode) + { + case GrabOperationMode.SingleImage: + camera.CancelGrabImage(); + break; + + case GrabOperationMode.SendImages: + camera.CancelSendImagesPreview(); + break; + } + } + catch (Exception exc) + { + log.Warn( $"Cancel image operation failed: cameraIdx={camera.CameraIdx}, mode={operationMode}, " + + $"error={exc.Message}"); + } + finally + { + FinishOperation(); } } + + private void FinishOperation() + { + UnsubscribeEvents(); + } + + private void UnsubscribeEvents() + { + Camera.ImageCameraHandler -= ImageReceived; + Camera.ImagesCameraHandler -= ImagesReceived; + } + + private static string AppendTimestampToFileName( + string originalFileName, + DateTime timestamp) + { + if (string.IsNullOrWhiteSpace(originalFileName)) + { + throw new ArgumentException( + "File name is required.", + nameof(originalFileName)); + } + + string directory = + Path.GetDirectoryName(originalFileName); + + string fileNameWithoutExtension = + Path.GetFileNameWithoutExtension(originalFileName); + + string extension = + Path.GetExtension(originalFileName); + + string timestampText = + timestamp + .ToUniversalTime() + .ToString( + "yyyyMMdd_HHmmss_fff", + System.Globalization.CultureInfo.InvariantCulture); + + string newFileName = + $"{fileNameWithoutExtension}_{timestampText}{extension}"; + + return string.IsNullOrWhiteSpace(directory) + ? newFileName + : Path.Combine(directory, newFileName); + } + + + private void DisposeOperationImages() + { + if (operationMode == + GrabOperationMode.SendImages) + { + DisposeTimedImages(); + return; + } + + Image imageToDispose = null; + + lock (imageSync) + { + imageToDispose = grabedImage; + grabedImage = null; + } + + try + { + imageToDispose?.Dispose(); + } + catch + { + } + } + + private void DisposeTimedImages() + { + if (timedCameraImages == null) + { + return; + } + + foreach (TimedCameraImage timedImage + in timedCameraImages) + { + try + { + timedImage?.Image?.Dispose(); + } + catch + { + } + } + + timedCameraImages = null; + } + + private void DeletePreviousOutputFiles() + { + if (!HasValidOutputFileName()) + { + return; + } + + var filesToDelete = new HashSet( + StringComparer.OrdinalIgnoreCase); + + foreach (string configuredFileName in imgFileNames) + { + if (string.IsNullOrWhiteSpace(configuredFileName)) + { + continue; + } + + string fullConfiguredFileName; + + try + { + fullConfiguredFileName = + Path.GetFullPath(configuredFileName); + } + catch (Exception exc) + { + log.Warn( + $"Invalid configured image file name: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file='{configuredFileName}', " + + $"error={exc.Message}"); + + continue; + } + + string directory = + Path.GetDirectoryName(fullConfiguredFileName); + + string baseName = + Path.GetFileNameWithoutExtension( + fullConfiguredFileName); + + string extension = + Path.GetExtension( + fullConfiguredFileName); + + if (string.IsNullOrWhiteSpace(directory) || + string.IsNullOrWhiteSpace(baseName)) + { + continue; + } + + if (!Directory.Exists(directory)) + { + log.Debug( + $"Image output directory does not exist; " + + $"nothing to delete: " + + $"cameraIdx={camera.CameraIdx}, " + + $"directory='{directory}'"); + + continue; + } + + /* + * Pôvodný kompatibilný súbor: + * + * TestAdvance-1-start.bmp + */ + filesToDelete.Add( + fullConfiguredFileName); + + /* + * Časované súbory: + * + * TestAdvance-1-start_img01_20260715_120000_100.bmp + * TestAdvance-1-start_img02_20260715_120000_600.bmp + * + * Časovú značku neanalyzujeme. + * Hľadáme podľa stabilného prefixu názvu. + */ + string searchPattern = + $"{baseName}_img*{extension}"; + + try + { + foreach (string foundFile in + Directory.GetFiles( + directory, + searchPattern, + SearchOption.TopDirectoryOnly)) + { + filesToDelete.Add( + Path.GetFullPath(foundFile)); + } + } + catch (Exception exc) + { + log.Warn( + $"Cannot search previous timed images: " + + $"cameraIdx={camera.CameraIdx}, " + + $"directory='{directory}', " + + $"pattern='{searchPattern}', " + + $"error={exc.Message}"); + } + } + + log.Debug( + $"Previous image files found for deletion: " + + $"cameraIdx={camera.CameraIdx}, " + + $"count={filesToDelete.Count}"); + + foreach (string fileName in filesToDelete) + { + try + { + if (!File.Exists(fileName)) + { + continue; + } + + File.Delete(fileName); + + log.Debug( + $"Previous image file deleted: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file='{fileName}'"); + } + catch (Exception exc) + { + log.Warn( + $"Cannot delete previous image file: " + + $"cameraIdx={camera.CameraIdx}, " + + $"file='{fileName}', " + + $"error={exc.Message}"); + } + } + } + } -} +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs b/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs index 6bccf0ad7..678c2775f 100644 --- a/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs +++ b/TBF/Rig/Network/Camera/CJMS11/JmsMessage.cs @@ -1,3 +1,4 @@ +using System; using TBF.Rig.Network.Camera.CJMS11.POJO; namespace TBF.Rig.Network.Camera.CJMS11 @@ -11,6 +12,7 @@ namespace TBF.Rig.Network.Camera.CJMS11 private string orig_status; private string orig_command; private string orig_payload; + private DateTime timeStamp; public POJO.MessageStatus Status { @@ -35,6 +37,12 @@ namespace TBF.Rig.Network.Camera.CJMS11 public string OrigCommand => orig_command; public string OrigPayload => orig_payload; + + public DateTime TimeStamp + { + get => timeStamp; + set => timeStamp = value; + } public JmsMessage(string status, string command, string payload) { diff --git a/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs b/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs index 2cfccee07..e40c748f9 100644 --- a/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs +++ b/TBF/Rig/Network/Camera/CJMS11/JmsPacket.cs @@ -1,6 +1,7 @@ using System; using System.Text.RegularExpressions; using log4net; +using Newtonsoft.Json; using TBF.Rig.Network.Camera.CJMS11.POJO; namespace TBF.Rig.Network.Camera.CJMS11 @@ -44,6 +45,16 @@ namespace TBF.Rig.Network.Camera.CJMS11 if (message.Length < 1) return false; this.jmsMessage = JmsMessageFromString(message); + + try + { + CameraResponse response = + JsonConvert.DeserializeObject(jmsMessage.Payload); + jmsMessage.TimeStamp = response.timeStamp; + }catch(Exception e) + { + log.Debug("Error parsing message timestamp: " + e.Message); + } return true; } @@ -70,23 +81,39 @@ namespace TBF.Rig.Network.Camera.CJMS11 return null; } - public static ParsedImage ImageParser(string payloadImage) + public static ParsedImage ImageParser( + string payloadImage) { - // Equivalent regex pattern - var imagePattern = new Regex(@"IMAGE:([A-Z0-9_]+):\s*(.*?)\s*~IMAGE_END", RegexOptions.Singleline); + const string prefix = "IMAGE:"; + const string endMarker = "~IMAGE_END"; - var match = imagePattern.Match(payloadImage); - if (match.Success) - { - string encoding = match.Groups[1].Value; - string imageData = match.Groups[2].Value; + int prefixIndex = payloadImage.IndexOf( prefix, StringComparison.Ordinal); + + if (prefixIndex < 0) + throw new ArgumentException( "IMAGE prefix was not found."); - return new ParsedImage(ImageTypeEnum.GetCommandM(encoding), imageData); - } - else - { - throw new ArgumentException($"Payload does not match expected image format: {payloadImage}"); - } + int encodingStart = + prefixIndex + prefix.Length; + + int encodingEnd = + payloadImage.IndexOf( + ':', + encodingStart); + + if (encodingEnd < 0) + throw new ArgumentException( + "Image encoding separator was not found."); + + int dataStart = encodingEnd + 1; + + int dataEnd = payloadImage.IndexOf( endMarker, dataStart, StringComparison.Ordinal); + + if (dataEnd < 0) + throw new ArgumentException( "IMAGE_END marker was not found."); + + string encoding = payloadImage .Substring( encodingStart, encodingEnd - encodingStart) .Trim(); + string imageData = payloadImage.Substring( dataStart,dataEnd - dataStart).Trim(); + return new ParsedImage( ImageTypeEnum.GetCommandM(encoding), imageData); } public override string ToString() diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs new file mode 100644 index 000000000..fc07458c3 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/CameraResponse.cs @@ -0,0 +1,12 @@ +using System; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class CameraResponse + { + public string message { get; set; } + + public DateTime timeStamp { get; set; } + + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs new file mode 100644 index 000000000..c691d2667 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagePayload.cs @@ -0,0 +1,37 @@ +using Newtonsoft.Json; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class SendImagePayload + { + [JsonProperty("frameGap")] + public int FrameGap { get; set; } + + [JsonProperty("frameTime")] + public string FrameTime { get; set; } + + [JsonProperty("frameTimeMillis")] + public long FrameTimeMillis { get; set; } + + [JsonProperty("pictureBase64")] + public string PictureBase64 { get; set; } + + [JsonProperty("picturesComplete")] + public int PicturesComplete { get; set; } + + [JsonProperty("status")] + public string Status { get; set; } + + [JsonProperty("taskId")] + public string TaskId { get; set; } + + [JsonProperty("taskPath")] + public string TaskPath { get; set; } + + [JsonProperty("taskTime")] + public string TaskTime { get; set; } + + [JsonProperty("workerId")] + public int WorkerId { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs new file mode 100644 index 000000000..c460d23bf --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/SendImagesRequest.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class SendImagesRequest + { + [JsonProperty("count")] + public int Count { get; set; } + + [JsonProperty("delay")] + public int Delay { get; set; } + + [JsonProperty("taskId")] + public string TaskId { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs new file mode 100644 index 000000000..47cdd0927 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/SendSummaryPayload.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class SendSummaryPayload + { + [JsonProperty("delay")] + public int Delay { get; set; } + + [JsonProperty("pic_count")] + public int PictureCount { get; set; } + + [JsonProperty("timeStamp")] + public string TimeStamp { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs b/TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs new file mode 100644 index 000000000..35529d7a1 --- /dev/null +++ b/TBF/Rig/Network/Camera/CJMS11/POJO/TimedCameraImage.cs @@ -0,0 +1,20 @@ +using System; +using System.Drawing; + +namespace TBF.Rig.Network.Camera.CJMS11.POJO +{ + public class TimedCameraImage + { + public int Index { get; set; } + + public string TaskId { get; set; } + + public DateTimeOffset? FrameTime { get; set; } + + public long FrameTimeMillis { get; set; } + + public int FrameGap { get; set; } + + public Image Image { get; set; } + } +} \ No newline at end of file diff --git a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs index 6de7a9062..9cfe9965a 100644 --- a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs +++ b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/ProcedureParams.cs @@ -20,17 +20,36 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ProcedureParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } - public double PulsesPerLtr; /// [l^-1] - - public override void InitializeAll() - { - PulsesPerLtr = 1.0; - } + ///PulsePerMeter [l^-1] + public double PulsesPerLtr; + /// + /// delta time gap for send parameter + /// + /// delta time for send parameter 500ms is minimum + public int RoiDeltaTimeMs; + + /// + /// count of picture for send > 1 / grabImage == 0|1 parameter - switch method + /// + /// count of picture for send > 1 / grabImage == 0|1 parameter - switch method + public int RoiPicCount; string[] paramNames = new string[] { Strings.PulsesPerLtr, + Strings.PictureCouts, + Strings.DelaySendImage, }; + + + + public override void InitializeAll() + { + PulsesPerLtr = 1.0; + RoiPicCount = 1; //default value 1 => grab Image + RoiDeltaTimeMs = 500; //delta time for send parameter 500ms is minimum + } + public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } @@ -39,6 +58,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 switch (i) { case 0: return PulsesPerLtr.ToString(); + case 1: return RoiPicCount.ToString(); + case 2: return RoiDeltaTimeMs.ToString(); default: return string.Empty; } } @@ -49,6 +70,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 switch (i) { case 0: PulsesPerLtr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.None; + case 1: RoiPicCount = Int32.Parse(strValue); return CfgUpdateFlags.None; + case 2: RoiDeltaTimeMs = Int32.Parse(strValue); return CfgUpdateFlags.None; default: return CfgUpdateFlags.None; } } @@ -59,11 +82,26 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 message = string.Empty; double dummy; + int dummyInt; switch (i) { case 0: if (Utils.TryParseUDouble(strValue, out dummy)) return true; break; + case 1: + if (!Int32.TryParse(strValue, out dummyInt) || (dummyInt < 0 || dummyInt > 50)) + { + message = ParamName(i) + " is invalid. Param must be between 0 and 50!"; + return false; + } + return true; + case 2: + if (!Int32.TryParse(strValue, out dummyInt) || (dummyInt < 500 || dummyInt < 5500)) + { + message = ParamName(i) + " is invalid. Param must be between 500 and 5500!"; + return false; + } + return true; default: message = "Invalid index"; return false; @@ -76,6 +114,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 void CopyContentTo(ProcedureParams prms) { prms.PulsesPerLtr = this.PulsesPerLtr; + prms.RoiDeltaTimeMs = this.RoiDeltaTimeMs; + prms.RoiPicCount = this.RoiPicCount; } public IParamsProvider Clone() diff --git a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs index 6c29ec345..c28c43730 100644 --- a/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs +++ b/TBF/Rig/Network/Camera/RoiForFixedStartCJMS11/Roi.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using System.IO; using System.Text; using log4net; using Common; @@ -41,6 +42,8 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 get { return roiCfg.ProcParams.PulsesPerLtr; } set { roiCfg.ProcParams.PulsesPerLtr = value; } } + public int RoiDeltaTimeMs { get { return roiCfg.ProcParams.RoiDeltaTimeMs; } } + public int RoiPicCount { get { return roiCfg.ProcParams.RoiPicCount; } } public double LtrsPerPulse { get { return (PulsesPerLtr <= float.Epsilon) ? 1.0 : (1 / PulsesPerLtr); } } public string QuantityUnits { get; set; } @@ -123,26 +126,65 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStartCJMS11 return GrabImageOp(imageFileName, roiCfg.BlackAndWhite, roiCfg.LowResolution, roiCfg.ImageRotation); } - public IOperation GrabImageOp(string imageFileName, - bool blackAndWhite, bool lowResolution, ImageRotation imageRotation) + // Roi.cs + public IOperation GrabImageOp( + string imageFileName, + bool blackAndWhite, + bool lowResolution, + ImageRotation imageRotation) { - if (NetCamera != null) + if (NetCamera == null) { - ///TODO BUMI - implementing grabing multiple images - /// 1. Create a list of image file names - string[] imageNames = new string[roiCfg.ImageOpacity.Count]; - for (int i = 0; i < imageNames.Length; i++) - { - imageNames[i] = imageFileName + string.Format("{0}_{1}",imageNames.Length, i); - } - /// 2. implement count of images to grab - /// 3. implement grabing multiple images - - /// TODO: Implement support for sharing one camera by multiple ROI-s - return NetCamera.GrabImagesOp(new string[] { imageFileName }, blackAndWhite, lowResolution, imageRotation); - } - else return null; + } + + int imageCount = Math.Max(1, RoiPicCount); + + string[] imageNames = CreateImageFileNames( + imageFileName, + imageCount); + + return NetCamera.GrabImagesOp( + imageNames, + blackAndWhite, + lowResolution, + imageRotation); + } + + private static string[] CreateImageFileNames( + string originalFileName, + int imageCount) + { + if (imageCount <= 1) + { + return new[] { originalFileName }; + } + + string directory = Path.GetDirectoryName(originalFileName); + string baseName = Path.GetFileNameWithoutExtension(originalFileName); + string extension = Path.GetExtension(originalFileName); + string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss_fff"); + + var result = new string[imageCount]; + + // Prvý obrázok zostáva kompatibilný s dialógom. + result[0] = originalFileName; + + for (int i = 1; i < imageCount; i++) + { + string fileName = string.Format( + "{0}_{1}_{2:D2}{3}", + baseName, + timestamp, + i + 1, + extension); + + result[i] = string.IsNullOrEmpty(directory) + ? fileName + : Path.Combine(directory, fileName); + } + + return result; } public IValve GetValve() diff --git a/TBF/Rig/Network/Telnet/EventArgsClasses.cs b/TBF/Rig/Network/Telnet/EventArgsClasses.cs index 8d156e092..4a1f82aee 100644 --- a/TBF/Rig/Network/Telnet/EventArgsClasses.cs +++ b/TBF/Rig/Network/Telnet/EventArgsClasses.cs @@ -94,17 +94,24 @@ namespace TBF.Rig.Network.Telnet public class PromptReceivedImagesEventArgs : EventArgs { - public Image image; /// server image. - public int idxCamera; /// camera index. - public int idxImage; /// image index. - public int imageCounts; /// number of images. - - public PromptReceivedImagesEventArgs(int idxCamera, Image image, int idxImage, int imageCounts) + public int idxCamera; + public int idxImage; + public int imageCount; + public Image image; + public DateTimeOffset? frameTime; + + public PromptReceivedImagesEventArgs( + int idxCamera, + int idxImage, + int imageCount, + Image image, + DateTimeOffset? frameTime) { - this.image = image; this.idxCamera = idxCamera; this.idxImage = idxImage; - this.imageCounts = imageCounts; + this.imageCount = imageCount; + this.image = image; + this.frameTime = frameTime; } } diff --git a/TBF/Rig/Sequences/iPerlCommunicationSeq.cs b/TBF/Rig/Sequences/iPerlCommunicationSeq.cs index 497628ab8..012ff19ee 100644 --- a/TBF/Rig/Sequences/iPerlCommunicationSeq.cs +++ b/TBF/Rig/Sequences/iPerlCommunicationSeq.cs @@ -366,7 +366,7 @@ namespace TBF.Rig.Sequences Program.MainWnd.Invoke(new iPerlCommFormDlgt(OpenIPerlCommForm), new object[] { this, method, test, testParams }); //------------------------------------------------ - Bridge.OnActivity(this, Strings.iPerl_Communication_in_progress); + Bridge.OnActivity(this, Strings.Meter_Communication_in_progress); //------------------------------------------------ bool stopPressed = false; /// true when STOP button pressed diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs index 097f9eeab..5c438d9e6 100644 --- a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs +++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs @@ -48,6 +48,16 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single } else { + + if (DebugLevel == DebugMode.Simulate && + test.Name.ToLower().Contains("q3") + ) + { + //Q3 Test - calibration data + return new FlyingStartMassCollectionSeq().Execute(test, repetNr, isLastRepetition, + testMethodCfg.TestParams.DelayedStart, null, null, DebugLevel); + } + /// DebugLevel == DebugMode.Simulate (new FlyingStartMassCollectionSeq()).MakeSimulatedTrivial(test, repetNr, test.Part); Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetNr, Progress.Completed)); diff --git a/TBF/Rig/TestMethods/GenesisCommunication/GenesisCommunicationSeq.cs b/TBF/Rig/TestMethods/GenesisCommunication/GenesisCommunicationSeq.cs index bc4881e13..d92314a73 100644 --- a/TBF/Rig/TestMethods/GenesisCommunication/GenesisCommunicationSeq.cs +++ b/TBF/Rig/TestMethods/GenesisCommunication/GenesisCommunicationSeq.cs @@ -376,7 +376,7 @@ namespace TBF.Rig.TestMethods.GenesisCommunication Program.MainWnd.Invoke(new iPerlCommFormDlgt(OpenIPerlCommForm), new object[] { this, method, test, testParams }); //------------------------------------------------ - Bridge.OnActivity(this, Strings.iPerl_Communication_in_progress); + Bridge.OnActivity(this, Strings.Meter_Communication_in_progress); //------------------------------------------------ bool stopPressed = false; /// true when STOP button pressed diff --git a/TBF/Rig/TestMethods/S640Communication/S640CommSeq.cs b/TBF/Rig/TestMethods/S640Communication/S640CommSeq.cs index f80a184e3..352a231b6 100644 --- a/TBF/Rig/TestMethods/S640Communication/S640CommSeq.cs +++ b/TBF/Rig/TestMethods/S640Communication/S640CommSeq.cs @@ -59,7 +59,7 @@ namespace TBF.Rig.TestMethods.S640Communication Program.MainWnd.Invoke(new S640CommFormDlgt(OpenS640CommForm), new object[] { this, activity, config, procParams, test }); //------------------------------------------------ - Bridge.OnActivity(this, Strings.iPerl_Communication_in_progress); + Bridge.OnActivity(this, Strings.Meter_Communication_in_progress); //------------------------------------------------ bool stopPressed = false; /// true when STOP button pressed diff --git a/TBF/Rig/TestMethods/SmartMeterFlyingStartMassCollection/SmartCommunicationSeq.cs b/TBF/Rig/TestMethods/SmartMeterFlyingStartMassCollection/SmartCommunicationSeq.cs index b6bece726..cb41fdc3d 100644 --- a/TBF/Rig/TestMethods/SmartMeterFlyingStartMassCollection/SmartCommunicationSeq.cs +++ b/TBF/Rig/TestMethods/SmartMeterFlyingStartMassCollection/SmartCommunicationSeq.cs @@ -376,7 +376,7 @@ namespace TBF.Rig.TestMethods.SmartMeterFlyingStartMassCollection Program.MainWnd.Invoke(new SmartCommFormDlgt(OpenSmartCommForm), new object[] { this, method, test, testParams }); //------------------------------------------------ - Bridge.OnActivity(this, Strings.iPerl_Communication_in_progress); + Bridge.OnActivity(this, Strings.Meter_Communication_in_progress); //------------------------------------------------ bool stopPressed = false; /// true when STOP button pressed diff --git a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs index ccc2efebe..4192cd75c 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvanceCollect/StandingStartMassCollectionAdvanceCollectSeq.cs @@ -150,9 +150,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect (rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i); (rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).BeginWMState = dataEntryCmpnt.WMStartState(i); } - - - + if (rr is Rig.Network.Camera.RoiForFixedStart.Roi) { (rr as Rig.Network.Camera.RoiForFixedStart.Roi).EndWMState = dataEntryCmpnt.WMEndState(i); @@ -167,6 +165,16 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect dataEntryCmpnt.WMStartState(i); log.DebugFormat(" StandingStartMassCollectionAdvanceSeq.cs - BeginWMState [{0}], EndWMState [{1}] -> RoiForFixedStartKeyence.Roi",dataEntryCmpnt.WMStartState(i),dataEntryCmpnt.WMEndState(i)); } + + //New camera CJMS11 - supplier Java Microservices, s.r.o + if (rr is Rig.Network.Camera.RoiForFixedStartCJMS11.Roi) + { + (rr as Rig.Network.Camera.RoiForFixedStartCJMS11.Roi).EndWMState = + dataEntryCmpnt.WMEndState(i); + (rr as Rig.Network.Camera.RoiForFixedStartCJMS11.Roi).BeginWMState = + dataEntryCmpnt.WMStartState(i); + log.DebugFormat(" StandingStartMassCollectionAdvanceSeq.cs - BeginWMState [{0}], EndWMState [{1}] -> RoiForFixedStartCJMS11.Roi",dataEntryCmpnt.WMStartState(i),dataEntryCmpnt.WMEndState(i)); + } } } diff --git a/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs b/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs index 4b07e5429..9d1f5feb1 100644 --- a/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs +++ b/TBF/Rig/TestMethods/iPerlCommunication/iPerlCommunicationSeq.cs @@ -372,7 +372,7 @@ namespace TBF.Rig.TestMethods.iPerlCommunication Program.MainWnd.Invoke(new iPerlCommFormDlgt(OpenIPerlCommForm), new object[] { this, method, test, testParams }); //------------------------------------------------ - Bridge.OnActivity(this, Strings.iPerl_Communication_in_progress); + Bridge.OnActivity(this, Strings.Meter_Communication_in_progress); //------------------------------------------------ bool stopPressed = false; /// true when STOP button pressed diff --git a/TBF/Strings.Designer.cs b/TBF/Strings.Designer.cs index 3215c3c44..ce0f1154f 100644 --- a/TBF/Strings.Designer.cs +++ b/TBF/Strings.Designer.cs @@ -1152,9 +1152,9 @@ namespace Config.Resources { /// /// Looks up a localized string similar to iPerl Communication in progress. /// - internal static string iPerl_Communication_in_progress { + internal static string Meter_Communication_in_progress { get { - return ResourceManager.GetString("iPerl_Communication_in_progress", resourceCulture); + return ResourceManager.GetString("Meter_Communication_in_progress", resourceCulture); } } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 8e4c09a81..a6e3bcf01 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -1038,11 +1038,13 @@ CameraCfgCtrl.cs + + @@ -1050,6 +1052,10 @@ + + + + Form diff --git a/TBF/UiBridge/Bridge.cs b/TBF/UiBridge/Bridge.cs index 79b0dad1d..226422de1 100644 --- a/TBF/UiBridge/Bridge.cs +++ b/TBF/UiBridge/Bridge.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using System.Threading.Tasks; using log4net; using NHibernate; using Common; @@ -229,7 +230,26 @@ namespace TBF.UiBridge public static void OnCameraUICmd(object sender, CameraUICmdEventArgs data) { if (CameraUICmdHandler == null) return; - try { CameraUICmdHandler(sender, data); } + try + { + log.DebugFormat("CameraUICmdHandler: {0}", data.CameraUICmd); + foreach (EventHandler handler in CameraUICmdHandler.GetInvocationList()) + { + var localHandler = handler; + + Task.Run(() => + { + try + { + localHandler(sender, data); + } + catch (Exception e) + { + log.Error("CameraUICmdHandler(...) failed", e); + } + }); + } + } catch (Exception e) { log.Error("CameraUICmdHandler(...) failed", e); } } public static event EventHandler CameraUICmdHandler; diff --git a/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs b/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs index ea1334a75..10f9a7860 100644 --- a/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs +++ b/TBFTests/Rig/Network/Camera/CJMS11/CameraTest.cs @@ -2,10 +2,13 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Threading.Tasks; +using Common; using JetBrains.Annotations; using Microsoft.VisualStudio.TestTools.UnitTesting; using TBF.Rig.Generic; using TBF.Rig.Network.Camera.CJMS11; +using TBF.Rig.Network.Camera.RoiForFixedStartCJMS11; +using TBF.Rig.Network.Camera.RoiForFixedStartCJMS11.common; using Factory = TBF.Rig.Network.Camera.CJMS11.Factory; @@ -17,25 +20,41 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 public class CameraTest { private static string ipCamera1 = "192.168.0.170"; - private static string ipCamera2 = "192.168.0.169"; + private static string ipCamera2 = "192.168.0.129"; public string IPCamera1 { get { return ipCamera1; } } public string IPCamera2 { get { return ipCamera2; } } + private RoiCfg CreateTestRoiCfg() + { + var factory = new TBF.Rig.Network.Camera.RoiForFixedStartCJMS11.Factory(); + + var roi = new RoiCfg("TestRoi", factory); + + roi.BlackAndWhite = false; + roi.LowResolution = true; + roi.ImageRotation = ImageRotation.None; + roi.ImageFrame = Frame.StandardFrame(); + + return roi; + } + [TestMethod] public void Initialize() { - TBF.Rig.Network.Camera.CJMS11.Camera camera = GetCamera( IPCamera1); + TBF.Rig.Network.Camera.CJMS11.Camera camera = GetCamera(IPCamera1); + camera.RoiConfiguration = CreateTestRoiCfg(); camera.Initialize(); TBF.Rig.Network.Camera.CJMS11.Camera camera2 = GetCamera( IPCamera2); + camera2.RoiConfiguration = CreateTestRoiCfg(); camera2.Initialize(); - TBF.Rig.Network.Camera.CJMS11.Camera camera11 = GetCamera( IPCamera1); - camera11.Initialize(); - - TBF.Rig.Network.Camera.CJMS11.Camera camera12 = GetCamera( IPCamera2); - camera12.Initialize(); + // TBF.Rig.Network.Camera.CJMS11.Camera camera11 = GetCamera( IPCamera1); + // camera11.Initialize(); + // + // TBF.Rig.Network.Camera.CJMS11.Camera camera12 = GetCamera( IPCamera2); + // camera12.Initialize(); } @@ -57,25 +76,25 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 camera.Initialize(); }); - var task3 = Task.Run(() => - { - var camera = GetCamera(IPCamera2); - camera.Initialize(); - }); - - var task4 = Task.Run(() => - { - var camera = GetCamera(IPCamera1); - camera.Initialize(); - }); + // var task3 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera2); + // camera.Initialize(); + // }); + // + // var task4 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera1); + // camera.Initialize(); + // }); - Task.WaitAll(task1, task2, task3, task4); // blocks until both finish + Task.WaitAll(task1, task2/*, task3, task4*/); // blocks until both finish // Optionally, add assertions or diagnostics Assert.IsTrue(task1.IsCompleted); Assert.IsTrue(task2.IsCompleted); - Assert.IsTrue(task3.IsCompleted); - Assert.IsTrue(task4.IsCompleted); + // Assert.IsTrue(task3.IsCompleted); + // Assert.IsTrue(task4.IsCompleted); } @@ -112,7 +131,7 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 var camera = GetCamera(IPCamera1); - Task saveImageTask = Task.Run(() => camera.SaveImageListener()); + Task saveImageTask = Task.Run(() => camera.SaveImageListenerAsynch()); var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3)); var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; if (completedAnswerTask == timeoutAnswerTask) @@ -129,35 +148,35 @@ namespace TBFTests.Rig.Network.Camera.CJMS11 camera.Initialize(); }); - var task3 = Task.Run(() => - { - var camera = GetCamera(IPCamera2); - - Task saveImageTask = Task.Run(() => camera.SaveImageListener()); - var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3)); - var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; - if (completedAnswerTask == timeoutAnswerTask) - { - Assert.Fail(); - } + // var task3 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera2); + // + // Task saveImageTask = Task.Run(() => camera.SaveImageListenerAsynch()); + // var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3)); + // var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result; + // if (completedAnswerTask == timeoutAnswerTask) + // { + // Assert.Fail(); + // } + // + // //TODO BUMI enable check image + // //Assert.IsTrue(saveImageTask.Result != null); + // }); + // + // var task4 = Task.Run(() => + // { + // var camera = GetCamera(IPCamera1); + // camera.Initialize(); + // }); - //TODO BUMI enable check image - //Assert.IsTrue(saveImageTask.Result != null); - }); - - var task4 = Task.Run(() => - { - var camera = GetCamera(IPCamera1); - camera.Initialize(); - }); - - await Task.WhenAll(task1, task2,task3, task4); // blocks until both finish + await Task.WhenAll(task1, task2/*,task3, task4*/); // blocks until both finish // Optionally, add assertions or diagnostics Assert.IsTrue(task1.IsCompleted); Assert.IsTrue(task2.IsCompleted); - Assert.IsTrue(task3.IsCompleted); - Assert.IsTrue(task4.IsCompleted); + // Assert.IsTrue(task3.IsCompleted); + // Assert.IsTrue(task4.IsCompleted); } From 0ce130f0ef5cd42eaeb13b9fdff7e3707e13b7ea Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Thu, 16 Jul 2026 12:37:59 +0200 Subject: [PATCH 08/16] Fix - repaired merging compatibility problem of GCI return type GciConnectResult - IsLoggedOn and IsConnected, increased VisualStudio version from 17.8 to 18.5 --- TBF.sln | 379 +----------------- .../communication/RadioService.cs | 4 +- 2 files changed, 4 insertions(+), 379 deletions(-) diff --git a/TBF.sln b/TBF.sln index f94f8b782..999adf46f 100644 --- a/TBF.sln +++ b/TBF.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34330.188 +# Visual Studio Version 18 +VisualStudioVersion = 18.5.11723.231 stable MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TBF", "TBF\TBF.csproj", "{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}" ProjectSection(ProjectDependencies) = postProject @@ -202,18 +202,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LegacyGenCtl", "ExternalPro EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eRegisterCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\eRegister\eRegisterCore\eRegisterCore.csproj", "{A83696BF-D8A2-4809-8424-CFE172AED5B6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataPackages", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\eRegister\DataPackages\DataPackages.csproj", "{C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\eRegister\Protocols\StreamingProtocol.csproj", "{B6A19B80-0F0F-434C-A754-A7712FC208B2}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxCore", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\MagFluxCore\MagFluxCore.csproj", "{B5DA260C-71CC-45CA-B79E-D1B376AF718C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataPackages", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\DataPackages\DataPackages.csproj", "{BA17D20E-0CEB-4B27-9772-2392BD750ED5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StreamingProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\Protocols\StreamingProtocol\StreamingProtocol.csproj", "{D6B81C60-2763-4C4D-989F-90822F53B01A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RequestProtocol", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\Protocols\RequestProtocol\RequestProtocol.csproj", "{00748F11-4B49-4D8B-93C4-4A11A210CCE2}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tools.JsonToXlsHelper", "ExternalProjects\Laatzen\Genesis\Common\Tools\Tools.JsonToXlsHelper\Tools.JsonToXlsHelper.csproj", "{20F137FD-C25E-42B7-A68F-58C746475897}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagFluxConfig", "ExternalProjects\Laatzen\Genesis\Common\Hardware\WaterMeter\MagFlux\MagFluxConfig\MagFluxConfig.csproj", "{70398B99-B134-4BBD-968B-7399B70C3CE2}" @@ -5600,150 +5590,6 @@ Global {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x64.Build.0 = Debug|Any CPU {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x86.ActiveCfg = Debug|Any CPU {A83696BF-D8A2-4809-8424-CFE172AED5B6}.XP32bit|x86.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Any CPU.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Any CPU.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|Mixed Platforms.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x64.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x64.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x86.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.COM|x86.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x64.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x64.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x86.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug|x86.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Any CPU.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x64.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x64.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x86.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.PerformTest|x86.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Any CPU.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x64.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x64.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x86.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.Release|x86.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x64.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x64.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x86.ActiveCfg = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.ReleaseTest|x86.Build.0 = Release|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Any CPU.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x64.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x64.Build.0 = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x86.ActiveCfg = Debug|Any CPU - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478}.XP32bit|x86.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Any CPU.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Any CPU.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|Mixed Platforms.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x64.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x64.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x86.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.COM|x86.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x64.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x64.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x86.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug|x86.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Any CPU.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x64.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x64.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x86.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.PerformTest|x86.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Any CPU.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x64.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x64.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x86.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.Release|x86.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x64.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.ReleaseTest|x86.Build.0 = Release|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Any CPU.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x64.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x64.Build.0 = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x86.ActiveCfg = Debug|Any CPU - {B6A19B80-0F0F-434C-A754-A7712FC208B2}.XP32bit|x86.Build.0 = Debug|Any CPU {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU {B5DA260C-71CC-45CA-B79E-D1B376AF718C}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -5816,222 +5662,6 @@ Global {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x64.Build.0 = Debug|Any CPU {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x86.ActiveCfg = Debug|Any CPU {B5DA260C-71CC-45CA-B79E-D1B376AF718C}.XP32bit|x86.Build.0 = Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|Mixed Platforms.Build.0 = _MANUAL_CONTROL|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x64.ActiveCfg = _MANUAL_CONTROL|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x64.Build.0 = _MANUAL_CONTROL|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x86.ActiveCfg = _MANUAL_CONTROL|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}._MANUAL_CONTROL|x86.Build.0 = _MANUAL_CONTROL|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Any CPU.ActiveCfg = COM|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Any CPU.Build.0 = COM|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Mixed Platforms.ActiveCfg = COM|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|Mixed Platforms.Build.0 = COM|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x64.ActiveCfg = COM|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x64.Build.0 = COM|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x86.ActiveCfg = COM|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.COM|x86.Build.0 = COM|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Mixed Platforms.ActiveCfg = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|Mixed Platforms.Build.0 = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x64.ActiveCfg = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x64.Build.0 = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x86.ActiveCfg = Debug|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug|x86.Build.0 = Debug|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x64.Build.0 = Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Debug-local IIS-CUST|x86.Build.0 = Debug|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Any CPU.ActiveCfg = PerformTest|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Any CPU.Build.0 = PerformTest|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Mixed Platforms.ActiveCfg = PerformTest|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|Mixed Platforms.Build.0 = PerformTest|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x64.ActiveCfg = PerformTest|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x64.Build.0 = PerformTest|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x86.ActiveCfg = PerformTest|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.PerformTest|x86.Build.0 = PerformTest|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Any CPU.Build.0 = Release|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Mixed Platforms.ActiveCfg = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|Mixed Platforms.Build.0 = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x64.ActiveCfg = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x64.Build.0 = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x86.ActiveCfg = Release|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.Release|x86.Build.0 = Release|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|Mixed Platforms.Build.0 = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x64.ActiveCfg = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x64.Build.0 = Release|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x86.ActiveCfg = Release|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.ReleaseTest|x86.Build.0 = Release|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x64.ActiveCfg = VPN_Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x64.Build.0 = VPN_Debug|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x86.ActiveCfg = VPN_Debug|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.VPN_Debug|x86.Build.0 = VPN_Debug|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Any CPU.ActiveCfg = XP32bit|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Any CPU.Build.0 = XP32bit|Any CPU - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Mixed Platforms.ActiveCfg = XP32bit|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|Mixed Platforms.Build.0 = XP32bit|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x64.ActiveCfg = XP32bit|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x64.Build.0 = XP32bit|x64 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x86.ActiveCfg = XP32bit|x86 - {BA17D20E-0CEB-4B27-9772-2392BD750ED5}.XP32bit|x86.Build.0 = XP32bit|x86 - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Any CPU.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Any CPU.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|Mixed Platforms.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x64.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x64.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x86.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.COM|x86.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x64.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x64.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x86.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug|x86.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Any CPU.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x64.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x64.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x86.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.PerformTest|x86.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Any CPU.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x64.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x64.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x86.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.Release|x86.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x64.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x64.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x86.ActiveCfg = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.ReleaseTest|x86.Build.0 = Release|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Any CPU.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x64.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x64.Build.0 = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x86.ActiveCfg = Debug|Any CPU - {D6B81C60-2763-4C4D-989F-90822F53B01A}.XP32bit|x86.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Any CPU.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Any CPU.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|Mixed Platforms.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x64.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x64.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x86.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}._MANUAL_CONTROL|x86.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Any CPU.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Any CPU.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Mixed Platforms.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|Mixed Platforms.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x64.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x64.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x86.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.COM|x86.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x64.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x64.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug|x86.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Any CPU.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Any CPU.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Mixed Platforms.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|Mixed Platforms.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x64.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x64.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x86.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Debug-local IIS-CUST|x86.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Any CPU.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Any CPU.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Mixed Platforms.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|Mixed Platforms.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x64.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x64.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x86.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.PerformTest|x86.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Any CPU.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x64.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x64.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x86.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.Release|x86.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Any CPU.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Any CPU.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Mixed Platforms.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|Mixed Platforms.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x64.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x64.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x86.ActiveCfg = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.ReleaseTest|x86.Build.0 = Release|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Any CPU.ActiveCfg = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Any CPU.Build.0 = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Mixed Platforms.ActiveCfg = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|Mixed Platforms.Build.0 = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x64.ActiveCfg = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x64.Build.0 = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x86.ActiveCfg = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.VPN_Debug|x86.Build.0 = VPN_Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Any CPU.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Any CPU.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Mixed Platforms.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|Mixed Platforms.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x64.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x64.Build.0 = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x86.ActiveCfg = Debug|Any CPU - {00748F11-4B49-4D8B-93C4-4A11A210CCE2}.XP32bit|x86.Build.0 = Debug|Any CPU {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Any CPU.ActiveCfg = _MANUAL_CONTROL|Any CPU {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Any CPU.Build.0 = _MANUAL_CONTROL|Any CPU {20F137FD-C25E-42B7-A68F-58C746475897}._MANUAL_CONTROL|Mixed Platforms.ActiveCfg = _MANUAL_CONTROL|x64 @@ -6214,12 +5844,7 @@ Global {62E5BA37-36AB-4F0A-BC12-554E7A1F1A39} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {60765BF4-6165-4F2F-8756-1C699826265D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {A83696BF-D8A2-4809-8424-CFE172AED5B6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {C2808A8E-C0BA-44EC-B7B1-1C66AD3D8478} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {B6A19B80-0F0F-434C-A754-A7712FC208B2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {B5DA260C-71CC-45CA-B79E-D1B376AF718C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {BA17D20E-0CEB-4B27-9772-2392BD750ED5} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {D6B81C60-2763-4C4D-989F-90822F53B01A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {00748F11-4B49-4D8B-93C4-4A11A210CCE2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {20F137FD-C25E-42B7-A68F-58C746475897} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {70398B99-B134-4BBD-968B-7399B70C3CE2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection diff --git a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs index 416e2956c..28d1fa230 100644 --- a/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs +++ b/TBF/Rig/RegisterReaders/GenesisRegReader/communication/RadioService.cs @@ -90,7 +90,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication return null; } - if (result == null || !result.Success || !result.IsLoggedOn) + if (result == null || !result.Success || !result.IsConnected) { log.Debug("ReadRequest_PCB() - invalid result: " + result); return null; @@ -142,7 +142,7 @@ namespace TBF.Rig.RegisterReaders.GenesisRegReader.communication var result = connectTask.GetAwaiter().GetResult(); log.Debug("ReadRequest_PCB() - Result: " + result); - if (result == null || !result.Success || !result.IsLoggedOn) + if (result == null || !result.Success || !result.IsConnected) return null; var pcbId = result.PcbId; From be0525a3195d53b3c1464e23a1c3ee02e58a0bcf Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Thu, 16 Jul 2026 13:29:42 +0200 Subject: [PATCH 09/16] Upgrade - improved StandingStart method by SLM requirements, added fixed delays for meters stabilization --- TBF/Properties/AssemblyInfo.cs | 4 +- .../StandingStart/StandingStartSeq.cs | 76 +++++++++++++++++-- 2 files changed, 71 insertions(+), 9 deletions(-) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 1b9e1281e..376347e7b 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3134.0")] -[assembly: AssemblyFileVersion("3.9.3134.0")] +[assembly: AssemblyVersion("3.9.3134.101")] +[assembly: AssemblyFileVersion("3.9.3134.101")] diff --git a/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs b/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs index 0ec158500..cd3b3cb5f 100644 --- a/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs +++ b/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs @@ -1,11 +1,12 @@ -/// +using Common; +using log4net; +/// /// Copyright (c) 2018-2022 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using System.IO; -using log4net; -using Common; +using System.Windows.Forms; using TBF.Boxes; using TBF.Resources; using TBF.Rig.GenericDevices; @@ -84,6 +85,8 @@ namespace TBF.Rig.TestMethods.StandingStart checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null); + int delay; + if (cBrd is ControlBoard.Uni.UniCB) { int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -421,10 +424,40 @@ namespace TBF.Rig.TestMethods.StandingStart LogProcessDataTestInfo(processDataLogger, test.Procedure.Name, test.Name); int startPulses = 0; - /// - /// Enter watermeter begin states here - /// - GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm; + ///...MF + ///----------------- + delay = test.TimeFlow2Mass; + + if (delay > 0) + { + State.Create(string.Format("{0}({1}) : Delay for meters stabilization ", test.Method, test.Name, delay)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress) + .AddOperation(new Operations.TimerOp(delay)) //...develop: step 5 + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; + } + while (!e.Contains(Event.TimerExpired)); + } + + /// + /// Enter watermeter begin states here + /// + GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm; if (dataEntryCmpnt != null) { @@ -668,6 +701,35 @@ namespace TBF.Rig.TestMethods.StandingStart double volumeCTV = constMasterCorr * Convert.ToDouble(endPulses - startPulses); double refEnergy = Energy.Sum * volumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] + ///...MF + ///----------------- + delay = test.TimeFlow2Mass; + + if (delay > 0) + { + State.Create(string.Format("{0}({1}) : Delay for meters stabilization ", test.Method, test.Name, delay)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress) + .AddOperation(new Operations.TimerOp(delay)) //...develop: step 5 + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; + } + while (!e.Contains(Event.TimerExpired)); + } /// /// Enter watermeter end states here From dbe424b17aa68f58ef456c7a78e6ef794e60e88a Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Thu, 16 Jul 2026 14:21:00 +0200 Subject: [PATCH 10/16] Add - StandingStart method - Store and log default PumpPower for dynamic test repetitions - Read PumpPower from the current pump before starting dynamic tests. - Store the value as the default PumpPower for subsequent test instances in the cycle. - Add logging when PumpPower is initialized from the pump. - Add logging at test start including test name, repetition number, last repetition flag, and PumpPower to improve diagnostics. --- TBF/Properties/AssemblyInfo.cs | 4 ++-- .../StandingStart/StandingStartSeq.cs | 22 ++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 376347e7b..8e5b16be5 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3134.101")] -[assembly: AssemblyFileVersion("3.9.3134.101")] +[assembly: AssemblyVersion("3.9.3134.102")] +[assembly: AssemblyFileVersion("3.9.3134.102")] diff --git a/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs b/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs index cd3b3cb5f..6f4636d3a 100644 --- a/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs +++ b/TBF/Rig/TestMethods/StandingStart/StandingStartSeq.cs @@ -123,8 +123,16 @@ namespace TBF.Rig.TestMethods.StandingStart int totalPulses = Convert.ToInt32(test.Volume / outPath.FlowMeter.LtrPerPulse); + log.InfoFormat( + "{0}({1}) : Test starting... (Repetition {2}, LastRepetition={3}, PumpPower={4})", + test.Method, + test.Name, + repetitionNr, + isLastRepetition, + test.PumpPower); + ///============================================================================================ - + /// Read pressure and temperature once before calling Bridge.OnTestSelected(...) State.Create(string.Format("{0}({1}) : Measuring process data", test.Method, test.Name)) .AddOperation(checkUiOp) @@ -376,6 +384,18 @@ namespace TBF.Rig.TestMethods.StandingStart /// Temperature is withing required range at this point /// + /// + /// reading pump power for dynamic using as default test.PumpPower for next test instances in cycle + /// + if (inPath.Pump is IPump) + { + test.PumpPower = (float)(inPath.Pump as IPump).Power; + + log.InfoFormat( + "PumpPower initialized from operator to '{0}'%", + test.PumpPower); + } + //----------------------------------------------------------------- Bridge.OnActivity(this, Strings.Stopping_flow_for_the_fixed_start); //----------------------------------------------------------------- From 637d1d021d324707976f1afd0722813ab549fd23 Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Thu, 16 Jul 2026 15:19:28 +0200 Subject: [PATCH 11/16] Fix - StandingMassCollection method - add end mass measurement --- TBF/Properties/AssemblyInfo.cs | 4 ++-- .../StandingStartMassCollectionSeq.cs | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 8e5b16be5..fd399a997 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3134.102")] -[assembly: AssemblyFileVersion("3.9.3134.102")] +[assembly: AssemblyVersion("3.9.3134.103")] +[assembly: AssemblyFileVersion("3.9.3134.103")] diff --git a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs index 5e0ece144..c74cb0d87 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs @@ -1048,16 +1048,17 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection state.AddOperation((dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm). ShowTestEndFormOp(sensPath.RegisterReaders, volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty, - refEnergy, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty)); + refEnergy, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty)); //...develop: half of step 14 } else { state.AddOperation(dataEntryCmpnt.ShowTestEndFormOp(sensPath.RegisterReaders, - volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty)); + volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty)); //...develop: half of step 14 } state.AddOperation(checkUiOp) .AddOperations(readTempPressOps) .AddOperation(testInProgress) + .AddOperation(readStopMassOp) //...develop: half of step 14 + step 15 .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); From b703297f5e219448f6977c8784ba0dd4fe755fef Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Fri, 17 Jul 2026 09:55:03 +0200 Subject: [PATCH 12/16] Fix - 1. repaired StandingStartMassCollection MassEN evaluation, the problem was caused by the end scale measuring only after recalculating the basic values - 2. removed fixed delay for the first diverter switching and first diverter switching was moved after a configurable delay - 3. hidden unitComboBox in the StartEnd dialog of the DataEntry.Standard24 component, because units are now defined using the RegisterReader component --- .../Standard24/TestStartEndForm.designer.cs | 2 + .../StandingStartMassCollectionSeq.cs | 49 ++++++++++--------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/TBF/Rig/DataEntry/Standard24/TestStartEndForm.designer.cs b/TBF/Rig/DataEntry/Standard24/TestStartEndForm.designer.cs index c21a9caaf..437262653 100644 --- a/TBF/Rig/DataEntry/Standard24/TestStartEndForm.designer.cs +++ b/TBF/Rig/DataEntry/Standard24/TestStartEndForm.designer.cs @@ -1389,12 +1389,14 @@ namespace TBF.Rig.DataEntry.Standard24 // unitComboBox // this.unitComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.unitComboBox.Enabled = false; this.unitComboBox.Font = new System.Drawing.Font("Verdana", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.unitComboBox.FormattingEnabled = true; this.unitComboBox.Location = new System.Drawing.Point(999, 131); this.unitComboBox.Name = "unitComboBox"; this.unitComboBox.Size = new System.Drawing.Size(123, 31); this.unitComboBox.TabIndex = 103; + this.unitComboBox.Visible = false; this.unitComboBox.SelectedIndexChanged += new System.EventHandler(this.unitComboBox_SelectedIndexChanged); this.unitComboBox.TextChanged += new System.EventHandler(this.unitComboBox_TextChanged); // diff --git a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs index c74cb0d87..e269bd9d9 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs @@ -488,7 +488,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection ///...MF ///----------------- - delay = 5; + /*delay = 3; //if (test.TimePump2StartV > 0) //{ State.Create(string.Format("{0}({1}) : Delay 5s", test.Method, test.Name)) @@ -511,21 +511,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection delay--; } while (!e.Contains(Event.TimerExpired)); - //} + //}*/ ///----------------- - State.Create(string.Format("{0}({1}) : Start the standing start/stop test", test.Method, test.Name)) - .AddOperation(checkUiOp) - .AddOperations(readTempPressOps) - .AddOperation(testInProgress) //...develop: step 4 --> diverter switch to the mass - .EnterState(); - for (int i = 0; i < 3; i++) - { - e = StateMachine.WaitRunDevsRunOps(); - if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } - if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } - } - + ///...MF ///----------------- delay = test.TimeFlow2Mass; @@ -535,7 +524,6 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection State.Create(string.Format("{0}({1}) : Delay for meters stabilization ", test.Method, test.Name, delay)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(testInProgress) .AddOperation(new Operations.TimerOp(delay)) //...develop: step 5 .EnterState(); do @@ -556,6 +544,19 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection while (!e.Contains(Event.TimerExpired)); } + State.Create(string.Format("{0}({1}) : Start the standing start/stop test", test.Method, test.Name)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress) //...develop: step 4 --> diverter switch to the mass + .EnterState(); + for (int i = 0; i < 3; i++) + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + } + + int time = StateMachine.Time; double currentFlow = RefFlow.Val; @@ -574,6 +575,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm; IOperation readStartMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); IOperation readStopMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); + IOperation readEndMassOp = scale.ReadStableMassOp(ref EndMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); if (dataEntryCmpnt != null) { @@ -891,7 +893,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection log.WarnFormat("Start valve switch time on test end = {0} ms", cBrd.ValveOpenCloseTime); - ///...MF + /*///...MF ///----------------- delay = test.TimeStop2Mass; @@ -919,7 +921,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection delay--; } while (!e.Contains(Event.TimerExpired)); - } + }*/ if (heatMetersPath == null) @@ -930,15 +932,15 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection //------------------------------------------------ Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ - /* + delay = test.TimeStop2Mass; State.Create(string.Format("{0}({1}) : Measuring the end mass after residual flow ", test.Method, test.Name, delay)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - //.AddOperation(testInProgress)...nevhodne prepina diverter + .AddOperation(testInProgress) .AddOperation(scale.ReadStableMassOp(ref EndMass, delay, test.MassMethod, test.MassRepeats, test.MassSpread))//...develop: step 13 - .AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec)) + //.AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec)) .AddOperation(processDataLoggingOp) .EnterState(); do { @@ -961,7 +963,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection if (delay > 0) delay--; } - while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next));*/ + while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); /// tMass2 = StateMachine.Time; @@ -1055,16 +1057,17 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection state.AddOperation(dataEntryCmpnt.ShowTestEndFormOp(sensPath.RegisterReaders, volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty)); //...develop: half of step 14 } + state.AddOperation(checkUiOp) .AddOperations(readTempPressOps) .AddOperation(testInProgress) - .AddOperation(readStopMassOp) //...develop: half of step 14 + step 15 + //.AddOperation(readEndMassOp) //...develop: half of step 14 + step 15 .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } } - while (!e.Contains(Event.ModelessFormClosed)); + while (!e.Contains(Event.ModelessFormClosed)) ; if (heatMetersTestParams != null) From 271200a8daf2dd9c1ae8f30db9c91e5cc6bb9251 Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Fri, 17 Jul 2026 12:42:07 +0200 Subject: [PATCH 13/16] Upgrade - StandingStartMassCollectionAdvance method - 1. changed structure and residual flow delays by changes in StandingStartMassCollection method, 2. added variables, counting and evaluation for volume/mass type of RegisterReader --- TBF/Properties/AssemblyInfo.cs | 4 +- .../StandingStartMassCollectionSeq.cs | 1 + .../StandingStartMassCollectionAdvanceSeq.cs | 234 ++++++++++++++---- 3 files changed, 195 insertions(+), 44 deletions(-) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index fd399a997..fc1dc9785 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3134.103")] -[assembly: AssemblyFileVersion("3.9.3134.103")] +[assembly: AssemblyVersion("3.9.3134.104")] +[assembly: AssemblyFileVersion("3.9.3134.104")] diff --git a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs index e269bd9d9..77483c5c1 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs @@ -1216,6 +1216,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection tstRslt.ConstMasterRaw = 1; /// Uncorrected master flowmeter coefficient tstRslt.ConstMasterCorr = 1; /// Corrected master pulses per liter tstRslt.ConstMaster = 1; + tstRslt.MassConstMaster = 1; } tstRslt.ErrorMaster = Formulas.ErrorFromVolumes(tstRslt.VolumeMaster, tstRslt.VolumeCTV); tstRslt.MassErrorMaster = Formulas.ErrorFromVolumes(tstRslt.VolumeMaster, tstRslt.MassCTV); diff --git a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs index 09fad7557..1df89b4c1 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs @@ -1,14 +1,16 @@ -/// +using Common; +using Config.Entities; +using FluentNHibernate.Conventions; +using log4net; +/// /// Copyright (c) 2013-2021 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using System.IO; using System.Threading; -using log4net; -using Common; -using Config.Entities; -using FluentNHibernate.Conventions; +using System.Windows.Forms; +using System.Xml.Serialization; using TBF.Boxes; using TBF.Resources; using TBF.Rig.Generic; @@ -16,6 +18,7 @@ using TBF.Rig.GenericDevices; using TBF.Rig.Network.RestAPI; using TBF.Rig.Operations; using TBF.Rig.Sequences; +using TBF.Rig.Various.ErrorFlags; using TBF.UiBridge; namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance @@ -115,6 +118,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null); + int delay; + if (cBrd is ControlBoard.Uni.UniCB) { int[] filters = new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -332,8 +337,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance State.Create(string.Format("{0}({1}) : Setting the flow", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(cBrd.SetFlowOp(test.QfromM3ph(), test.QtoM3ph(), RefFlow, FlowSettingTimeoutSec)) - .AddOperation(heatMetersPromptOp) + .AddOperation(cBrd.SetFlowOp(test.QfromM3ph(), test.QtoM3ph(), RefFlow, FlowSettingTimeoutSec))//...develop: step 1 + .AddOperation(heatMetersPromptOp) .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); @@ -454,8 +459,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance State.Create(string.Format("{0}({1}) : Close the start/stop valve before measuring the start mass", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(cBrd.CloseStartValveOp()) - .EnterState(); + .AddOperation(cBrd.CloseStartValveOp())//...develop: step 2 + .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } @@ -463,10 +468,39 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance } while (!e.Contains(Event.ValvesSet)); + ///...MF + ///----------------- + delay = test.TimeFlow2Mass; + + if (delay > 0) + { + State.Create(string.Format("{0}({1}) : Delay for meters stabilization ", test.Method, test.Name, delay)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(new Operations.TimerOp(delay)) //...develop: step 5 + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; + } + while (!e.Contains(Event.TimerExpired)); + } + State.Create(string.Format("{0}({1}) : Start the standing start/stop test", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(testInProgress) + .AddOperation(testInProgress)//...develop: step 4 --> diverter switch to the mass .EnterState(); for (int i = 0; i < 3; i++) { @@ -492,6 +526,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance /// GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm; IOperation readStartMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); + IOperation readStopMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); + IOperation readEndMassOp = scale.ReadStableMassOp(ref EndMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread); if (dataEntryCmpnt != null) { @@ -510,7 +546,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance State state2 = State.Create(string.Format("{0}({1}) : Grab images", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(readStartMassOp) + //.AddOperation(readStartMassOp) .AddOperation(testInProgress) .AddOperation(processDataLoggingOp); @@ -565,12 +601,13 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance Bridge.OnActivity(this, Strings.Grabbing_images);//Strings.Enter_water_meter_data); - State.Create(string.Format("{0}({1}) : Enter start states of water meters", test.Method, test.Name)) + State.Create(string.Format("{0}({1}) : Enter start states of water meters and Measuring the start mass after residual flow ", test.Method, test.Name, test.TimeStop2Mass)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(readStartMassOp) + //.AddOperation(readStartMassOp) .AddOperation(testInProgress) - //.AddOperation((dataEntryCmpnt as GenericDevices.IHasWMStatesForm).ShowTestStartFormOp(sensPath.RegisterReaders)) + //.AddOperation((dataEntryCmpnt as GenericDevices.IHasWMStatesForm).ShowTestStartFormOp(sensPath.RegisterReaders))//...develop: half of step 6 + .AddOperation(readStopMassOp) //...develop: half of step 6 .AddOperation(processDataLoggingOp) .EnterState(); do { @@ -650,10 +687,31 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance } } } + + State.Create(string.Format("{0}({1}) : Measure the start mass", test.Method, test.Name)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress)//...nevhodne prepina diverter + .AddOperation(scale.ReadStableMassOp(ref StartMass, 0, test.MassMethod, test.MassRepeats, test.MassSpread))//...develop: step 8 + .AddOperation(processDataLoggingOp) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + if (e.Contains(Event.ScaleTimeout)) + { + Bridge.OnError(this, Strings.Mass_measurement_timeout); + retVal = Event.RecoverableError; + goto stopTest; + } + } + while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); } else { - State.Create(string.Format("{0}({1}) : Measure the start mass", test.Method, test.Name)) + /*State.Create(string.Format("{0}({1}) : Measure the start mass", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) .AddOperation(testInProgress) @@ -671,6 +729,27 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance goto stopTest; } } + while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next));*/ + State.Create(string.Format("{0}({1}) : Measure the start mass", test.Method, test.Name)) + .AddOperation(checkUiOp) + .AddOperations(readTempPressOps) + .AddOperation(testInProgress)//...nevhodne prepina diverter + //.AddOperation(readStartMassOp) + .AddOperation(scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread)) + .AddOperation(processDataLoggingOp) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + if (e.Contains(Event.ScaleTimeout)) + { + Bridge.OnError(this, Strings.Mass_measurement_timeout); + retVal = Event.RecoverableError; + goto stopTest; + } + } while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); } /// @@ -698,10 +777,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance State.Create(string.Format("{0}({1}) : Start the test, open the start/stop valve", test.Method, test.Name)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) - .AddOperation(cBrd.OpenStartValveOp(timeStampStart, startSwitchTime)) + .AddOperation(cBrd.OpenStartValveOp(timeStampStart, startSwitchTime)) //...develop: step 9 .AddOperation(testInProgress) .AddOperation(controlFlowOp) - .AddOperation(processDataLoggingOp) + .AddOperation(processDataLoggingOp)//...develop: step 10, step 11 .EnterState(); do { e = StateMachine.WaitRunDevsRunOps(); @@ -759,7 +838,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance .AddOperation(checkUiOp) .AddOperations(readTempPressOps) .AddOperation(testInProgress) - .AddOperation(cBrd.CloseStartValveOp(timeStampEnd, stopSwitchTime)) + .AddOperation(cBrd.CloseStartValveOp(timeStampEnd, stopSwitchTime))//...develop: step 12 .AddOperation(processDataLoggingOp) .EnterState(); do { @@ -778,12 +857,15 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance //------------------------------------------------ Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ - State.Create(string.Format("{0}({1}) : Measuring the end mass", test.Method, test.Name)) + + delay = test.TimeStop2Mass; + + State.Create(string.Format("{0}({1}) : Measuring the end mass after residual flow ", test.Method, test.Name, delay)) .AddOperation(checkUiOp) .AddOperations(readTempPressOps) .AddOperation(testInProgress) .AddOperation(scale.ReadStableMassOp(ref EndMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread)) - .AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec)) + //.AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec)) .AddOperation(processDataLoggingOp) .EnterState(); do { @@ -796,26 +878,20 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance retVal = Event.RecoverableError; goto stopTest; } + + /// Show remaining time + if ((delay = Math.Max(delay, 0)) > 60) + Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); + else + Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); + + if (delay > 0) + delay--; } while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); /// tMass2 = StateMachine.Time; - if (test.DoDrainingAfter) - { - State.Create(string.Format("{0}({1}) : Open the drain valve", test.Method, test.Name)) - .AddOperation(checkUiOp) - .AddOperation(cBrd.SetValvesOp(scale.DrainValve, null)) - .EnterState(); - do - { - e = StateMachine.WaitRunDevsRunOps(); - if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } - } - while (e.Contains(Event.ValvesBusy)); - } - - double massStart = MeasurementCorrection.CorrectedValue(StartMass.Val, scale.Corrections); double massEnd = MeasurementCorrection.CorrectedValue(EndMass.Val, scale.Corrections); double densityOut = Formulas.WaterDensityFromTempPress((TempUpStat.Average + TempDownStat.Average) / 2, @@ -823,7 +899,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance double buoyancy = Formulas.Buoyancy(); double massOfEvaporatedWater = (double)(tMass2 - tMass1) * outPath.Scale.EvaporationRate(TempDivStat.Average); double volumeCTV = 1000.0 * buoyancy * (massEnd - massStart + massOfEvaporatedWater) / densityOut; - if (debugLevel == Common.DebugMode.Simulate) volumeCTV = test.Volume; + double massCTV = buoyancy * (massEnd - massStart + massOfEvaporatedWater); + if (debugLevel == Common.DebugMode.Simulate) volumeCTV = test.Volume; double refEnergy = Energy.Sum * volumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l] @@ -989,6 +1066,20 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance } } + if (test.DoDrainingAfter) + { + State.Create(string.Format("{0}({1}) : Open the drain valve", test.Method, test.Name)) + .AddOperation(checkUiOp) + .AddOperation(cBrd.SetValvesOp(scale.DrainValve, null)) + .EnterState(); + do + { + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } + } + while (e.Contains(Event.ValvesBusy)); + } + //------------------------------------------------ Bridge.OnActivity(this, Strings.Test_completed); //------------------------------------------------ @@ -1026,6 +1117,8 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance /// Main results tstRslt.VolumeCTV = volumeCTV; /// [l] 1000.0f is because density is in [kg/m3] tstRslt.Flow = 3.6 * volumeCTV / tstRslt.TestTime; /// [m3/h] + tstRslt.MassCTV = massCTV; /// [kg] 1000.0f is because density is in [kg/m3] + tstRslt.MassFlow = 3.6 * massCTV / tstRslt.TestTime; /// [kg/h] if (cBrd is ControlBoard.Uni.UniCB) { @@ -1034,6 +1127,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance tstRslt.ConstMasterCorr = outPath.FlowMeter.LtrPerPulseCorrected(tstRslt.Flow, tstRslt.TempDownMean); tstRslt.VolumeMaster = tstRslt.ConstMasterRaw * tstRslt.PulsesMaster; /// [l] volume from the master flow meter tstRslt.ConstMaster = (tstRslt.VolumeMaster != 0) ? (tstRslt.ConstMasterRaw * tstRslt.VolumeCTV / tstRslt.VolumeMaster) : tstRslt.ConstMasterCorr; + tstRslt.MassConstMaster = (tstRslt.PulsesMaster != 0) ? (tstRslt.MassCTV / tstRslt.PulsesMaster) : tstRslt.ConstMasterCorr; } else { @@ -1193,18 +1287,74 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance if (meterRslt != null && regReader != null) { meterRslt.RegReaderType = (int)regReader.RegisterReaderType; + ComponentProcedure procParamsEntity = test.Procedure.GetProcedureParamsEntity(regReader.Name); + + try + { + if (regReader.RegisterReaderType == RegisterReaderType.Pulses) + { + XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TBF.Rig.RegisterReaders.PulsesFromUniCB.RRProcParams) })[0]; + TBF.Rig.RegisterReaders.PulsesFromUniCB.RRProcParams tmp = Serializer.Deserialize(new StringReader(procParamsEntity.Parameters.ToString())) as TBF.Rig.RegisterReaders.PulsesFromUniCB.RRProcParams; + regReader.PulsesPerLtr = tmp.PulsesPerLtr; + regReader.QuantityUnits = tmp.Units; + } + else if (regReader.RegisterReaderType == RegisterReaderType.Manual) + { + XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TBF.Rig.RegisterReaders.StandingStartStop.RRProcParams) })[0]; + TBF.Rig.RegisterReaders.StandingStartStop.RRProcParams tmp = Serializer.Deserialize(new StringReader(procParamsEntity.Parameters.ToString())) as TBF.Rig.RegisterReaders.StandingStartStop.RRProcParams; + regReader.PulsesPerLtr = tmp.PulsesPerLtr; + regReader.QuantityUnits = tmp.Units; + } + else + { + //MessageBox.Show("Cannot create or initialize a printer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + } + } + catch (Exception ex) + { + log.ErrorFormat(string.Format("Error during RegisterReader parameters deserialization. regReader.Name='{0}', regReader.ClassName='{1}', Exception: {2}", + regReader.Name, + regReader.ClassName, + ex)); + } + meterRslt.PulsesPerLiter = regReader.PulsesPerLtr; - meterRslt.VolumeStart = 0.0d;//regReader.BeginWMState; - meterRslt.VolumeEnd = 0.0d;//regReader.EndWMState; - meterRslt.VolumeMeter = 0.0d;//Math.Abs(meterRslt.VolumeEnd - meterRslt.VolumeStart); + meterRslt.VolumeStart = regReader.BeginWMState;//0.0d;//regReader.BeginWMState; + meterRslt.VolumeEnd = regReader.EndWMState;//0.0d;//regReader.EndWMState; + meterRslt.VolumeMeter = Math.Abs(meterRslt.VolumeEnd - meterRslt.VolumeStart);//0.0d;//Math.Abs(meterRslt.VolumeEnd - meterRslt.VolumeStart); + meterRslt.MassMeter = Math.Abs(meterRslt.VolumeEnd - meterRslt.VolumeStart); meterRslt.VolumeRef = tstRslt.VolumeCTV; /// liter + meterRslt.MassRef = tstRslt.MassCTV; /// kg meterRslt.PulsesMeter = meterRslt.VolumeMeter; meterRslt.PulsesMaster = tstRslt.PulsesMaster; meterRslt.TestTime = tstRslt.TestTime; - meterRslt.Error = 100.0d;//Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); - meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty) + //meterRslt.Error = 100.0d;//Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); + double Error = 0; + if (meterRslt.GetQuantityFromUnits() == "Mass") + Error = Formulas.ErrorFromVolumes(meterRslt.MassMeter, meterRslt.MassRef); + else + Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef); + + meterRslt.Error = Error; + /*meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty) && (meterRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty) - && (tstRslt.ErrorFlags == 0); + && (tstRslt.ErrorFlags == 0);*/ + var ErrLimLo_Volume = test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime); + var ErrLimHi_Volume = test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime); + var ErrLimLo_Mass = test.GetErrLimLo(tstRslt.MassCTV, tstRslt.TestTime); + var ErrLimHi_Mass = test.GetErrLimHi(tstRslt.MassCTV, tstRslt.TestTime); + + bool Passed; + if (meterRslt.GetQuantityFromUnits() == "Mass") + Passed = (meterRslt.Error >= ErrLimLo_Volume + test.Uncertainty) && + (meterRslt.Error <= ErrLimHi_Volume - test.Uncertainty) && + (tstRslt.ErrorFlags == 0); + else + Passed = (meterRslt.Error >= ErrLimLo_Mass + test.Uncertainty) && + (meterRslt.Error <= ErrLimHi_Mass - test.Uncertainty) && + (tstRslt.ErrorFlags == 0); + + meterRslt.Passed = Passed; meterRslt.TestDone = false; tstRslt.TestDone = false; tstRslt.TestMeasured = true; From a88a5a8db246d90d1adf5f0550752f8b5df9f7d7 Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Fri, 17 Jul 2026 13:58:42 +0200 Subject: [PATCH 14/16] Fix - 1. StandingStartMassCollection and StandingStartMassCollectionAdvance - changed all delayed Activity strings, 2. Added UI/Bridge onDelayedActivity() method for universal using --- .../StandingStartMassCollectionSeq.cs | 69 +++---------------- .../StandingStartMassCollectionAdvanceSeq.cs | 34 +++------ TBF/UiBridge/Bridge.cs | 31 +++++++++ 3 files changed, 50 insertions(+), 84 deletions(-) diff --git a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs index 77483c5c1..26e7d1f45 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs @@ -486,35 +486,6 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection } while (!e.Contains(Event.ValvesSet)); - ///...MF - ///----------------- - /*delay = 3; - //if (test.TimePump2StartV > 0) - //{ - State.Create(string.Format("{0}({1}) : Delay 5s", test.Method, test.Name)) - .AddOperation(checkUiOp) - .AddOperation(new Operations.TimerOp(delay)) //...develop: step 3 - .EnterState(); - do - { - e = StateMachine.WaitRunDevsRunOps(); - if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } - if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } - - /// Show remaining time - if ((delay = Math.Max(delay, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); - - if (delay > 0) - delay--; - } - while (!e.Contains(Event.TimerExpired)); - //}*/ - ///----------------- - - ///...MF ///----------------- delay = test.TimeFlow2Mass; @@ -533,13 +504,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } /// Show remaining time - if ((delay = Math.Max(delay, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); - - if(delay>0) - delay--; + Bridge.OnDelayActivity(this, "Delayed activity: Start the standing start/stop test (diverter switch...)", ref delay); } while (!e.Contains(Event.TimerExpired)); } @@ -561,7 +526,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection double currentFlow = RefFlow.Val; //------------------------------------------------ - Bridge.OnActivity(this, Strings.Measuring_the_weight); + //Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ LogProcessDataTestInfo(processDataLogger, test.Procedure.Name, test.Name); @@ -659,13 +624,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } /// Show remaining time - if ((delay = Math.Max(delay, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); - - if (delay > 0) - delay--; + Bridge.OnDelayActivity(this, "Delayed activity: Measuring the start mass", ref delay); } while (!e.Contains(Event.ModelessFormClosed) || !e.Contains(Event.ScaleDone)); long readEndTime = StateMachine.Time; @@ -789,6 +748,9 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection retVal = Event.RecoverableError; goto stopTest; } + + /// Show remaining time + Bridge.OnDelayActivity(this, "Delayed activity: Measuring the start mass", ref delay); } while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); } @@ -828,15 +790,6 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } - /// Show remaining time - if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime)); - - if (delay > 0) - delay--; - /// Update statistics RefFrequency.Val = cBrd.RefFrequency; RefFlow.Val = outPath.FlowMeter.ReadFlow(); @@ -930,7 +883,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection LogProcessDataHeaderHeatMeters(processDataLogger, "End mass"); //------------------------------------------------ - Bridge.OnActivity(this, Strings.Measuring_the_weight); + //Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ delay = test.TimeStop2Mass; @@ -955,13 +908,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollection } /// Show remaining time - if ((delay = Math.Max(delay, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); - - if (delay > 0) - delay--; + Bridge.OnDelayActivity(this, "Delayed activity: Measuring the end mass", ref delay); } while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); /// diff --git a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs index 1df89b4c1..513deed04 100644 --- a/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs +++ b/TBF/Rig/TestMethods/StandingStartMassCollectionAdvance/StandingStartMassCollectionAdvanceSeq.cs @@ -486,13 +486,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } /// Show remaining time - if ((delay = Math.Max(delay, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); - - if (delay > 0) - delay--; + Bridge.OnDelayActivity(this, "Delayed activity: Start the standing start/stop test (diverter switch...)", ref delay); } while (!e.Contains(Event.TimerExpired)); } @@ -513,7 +507,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance double currentFlow = RefFlow.Val; //------------------------------------------------ - Bridge.OnActivity(this, Strings.Measuring_the_weight); + //Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ LogProcessDataTestInfo(processDataLogger, test.Procedure.Name, test.Name); @@ -598,7 +592,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance string.Format("{0}({1}) : Grabbing images - valve close", test.Method, test.Name)); } /////// - + delay = test.TimeStop2Mass; Bridge.OnActivity(this, Strings.Grabbing_images);//Strings.Enter_water_meter_data); State.Create(string.Format("{0}({1}) : Enter start states of water meters and Measuring the start mass after residual flow ", test.Method, test.Name, test.TimeStop2Mass)) @@ -613,6 +607,9 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance do { e = StateMachine.WaitRunDevsRunOps(); if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } + + /// Show remaining time + Bridge.OnDelayActivity(this, "Delayed activity: Measuring the start mass", ref delay); } while (!e.Contains(Event.ScaleDone/*Event.ModelessFormClosed*/)); @@ -749,6 +746,9 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance retVal = Event.RecoverableError; goto stopTest; } + + /// Show remaining time + Bridge.OnDelayActivity(this, "Delayed activity: Measuring the start mass", ref delay); } while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); } @@ -788,12 +788,6 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; } if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; } - /// Show remaining time - if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime / 60, "min", remainingTime % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime)); - /// Update statistics RefFrequency.Val = cBrd.RefFrequency; RefFlow.Val = outPath.FlowMeter.ReadFlow(); @@ -855,7 +849,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance LogProcessDataHeaderHeatMeters(processDataLogger, "End mass"); //------------------------------------------------ - Bridge.OnActivity(this, Strings.Measuring_the_weight); + //Bridge.OnActivity(this, Strings.Measuring_the_weight); //------------------------------------------------ delay = test.TimeStop2Mass; @@ -880,13 +874,7 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance } /// Show remaining time - if ((delay = Math.Max(delay, 0)) > 60) - Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", "Delay", delay / 60, "min", delay % 60, Strings.sec)); - else - Bridge.OnActivity(this, string.Format("{0} ... {1} s", "Delay", delay)); - - if (delay > 0) - delay--; + Bridge.OnDelayActivity(this, "Delayed activity: Measuring the end mass", ref delay); } while (!e.Contains(Event.ScaleDone) && !e.Contains(Event.Next)); /// diff --git a/TBF/UiBridge/Bridge.cs b/TBF/UiBridge/Bridge.cs index 226422de1..4895daa75 100644 --- a/TBF/UiBridge/Bridge.cs +++ b/TBF/UiBridge/Bridge.cs @@ -9,6 +9,7 @@ using NHibernate; using Common; using Config.Entities; using SharedDatabase.Entities; +using Config.Resources; namespace TBF.UiBridge { @@ -334,5 +335,35 @@ namespace TBF.UiBridge catch (Exception e) { log.Error("SetpointChangeHandler(...) failed", e); } } public static event EventHandler SetpointChangeHandler; + + public static void OnDelayActivity(object sender, string nextAction, ref int delay) + { + delay = Math.Max(delay, 0); + + string activity; + + if (delay > 60) + { + activity = string.Format( + "{0} in {1} min {2} {3}", + nextAction, + delay / 60, + delay % 60, + Strings.sec); + } + else + { + activity = string.Format( + "{0} in {1} {2}", + nextAction, + delay, + Strings.sec); + } + + OnActivity(sender, activity); + + if (delay > 0) + delay--; + } } } From 83c1f0e817132cc54a53994081a7aa42a43e4e20 Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Fri, 17 Jul 2026 14:15:22 +0200 Subject: [PATCH 15/16] Update - Actualized revision nr. --- TBF/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index fc1dc9785..dbf3c820c 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3134.104")] -[assembly: AssemblyFileVersion("3.9.3134.104")] +[assembly: AssemblyVersion("3.9.3134.105")] +[assembly: AssemblyFileVersion("3.9.3134.105")] From b746ceb34a855dc65fc50e5393f215ee96b80cd9 Mon Sep 17 00:00:00 2001 From: Marek Frniak Date: Fri, 17 Jul 2026 15:20:03 +0200 Subject: [PATCH 16/16] Upgrade - Replace PulsesTypeByQuantity with MultiFunctionalVariables unit filtering based on RegisterReader quantity type - remove PulsesTypeByQuantity-based parameter values - generate available units using Units.IsQuantity(...) - use Quantity.MultiFunctionalVariables to populate supported units - centralize unit selection through Units.GetQuantity() --- Common/Units.cs | 109 +++++++++--------- TBF/Properties/AssemblyInfo.cs | 4 +- TBF/Resources/Strings.Designer.cs | 5 +- TBF/Resources/Strings.cs.resx | 26 ++--- TBF/Resources/Strings.de.resx | 20 ++-- TBF/Resources/Strings.es.resx | 3 + TBF/Resources/Strings.fr.resx | 20 ++-- TBF/Resources/Strings.it.resx | 20 ++-- TBF/Resources/Strings.pl.resx | 20 ++-- TBF/Resources/Strings.resx | 2 +- TBF/Resources/Strings.ro.resx | 20 ++-- TBF/Resources/Strings.ru.resx | 20 ++-- TBF/Resources/Strings.sk.resx | 3 + .../PulsesFromUniCB/RRProcParams.cs | 41 +++++-- .../StandingStartStop/RRProcParams.cs | 45 ++++++-- 15 files changed, 210 insertions(+), 148 deletions(-) diff --git a/Common/Units.cs b/Common/Units.cs index 2513a4d64..5a9c903ed 100644 --- a/Common/Units.cs +++ b/Common/Units.cs @@ -2,6 +2,7 @@ /// Copyright (c) 2016-2021 Sensus Slovensko a.s. /// using System; +using System.Linq; namespace Common { @@ -286,97 +287,97 @@ namespace Common public static bool IsQuantity(Unit unit, Quantity quantity) { - return (quantity == GetQuantity(unit)); + return GetQuantity(unit).Contains(quantity); } - public static Quantity GetQuantity(Unit unit) + public static Quantity[] GetQuantity(Unit unit) { switch (unit) { case Unit.pulse: case Unit.degree: - return Quantity.Pulses; + return new[] { Quantity.Pulses }; case Unit.ml: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.l: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.dm3: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.USgal: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.UKgal: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.cf: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.m3: - return Quantity.Volume; + return new[] { Quantity.Volume, Quantity.MultiFunctionalVariables }; case Unit.lph: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.cfph: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.lpm: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.USgalpm: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.m3ph: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.lps: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.USgalps: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.m3pm: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.cfs: - return Quantity.Flow; + return new[] { Quantity.Flow }; case Unit.gps: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.gpm: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.gph: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.kgps: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.kgpm: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.kgph: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.tps: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.tpm: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.tph: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.lbps: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.lbpm: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.lbph: - return Quantity.MassFlow; + return new[] { Quantity.MassFlow}; case Unit.g: - return Quantity.Mass; + return new[] { Quantity.Mass, Quantity.MultiFunctionalVariables }; case Unit.oz: - return Quantity.Mass; + return new[] { Quantity.Mass, Quantity.MultiFunctionalVariables }; case Unit.lb: - return Quantity.Mass; + return new[] { Quantity.Mass, Quantity.MultiFunctionalVariables }; case Unit.kg: - return Quantity.Mass; + return new[] { Quantity.Mass, Quantity.MultiFunctionalVariables }; case Unit.t: - return Quantity.Mass; + return new[] { Quantity.Mass, Quantity.MultiFunctionalVariables }; case Unit.ms: case Unit.s: case Unit.min: case Unit.hour: - return Quantity.Time; + return new[] { Quantity.Time }; case Unit.C: case Unit.F: case Unit.K: - return Quantity.Temperature; + return new[] { Quantity.Temperature }; case Unit.Pa: case Unit.hPa: @@ -386,14 +387,14 @@ namespace Common case Unit.psi: case Unit.bar: case Unit.MPa: - return Quantity.Pressure; + return new[] { Quantity.Pressure }; case Unit.RPct: - return Quantity.Humidity; + return new[] { Quantity.Humidity }; case Unit.Promile: case Unit.Pct: - return Quantity.Error; + return new[] { Quantity.Error }; case Unit.mm: case Unit.cm: @@ -402,23 +403,23 @@ namespace Common case Unit.foot: case Unit.yard: case Unit.m: - return Quantity.Length; + return new[] { Quantity.Length }; - case Unit.kgpm3: + case Unit.kgpm3: case Unit.kgpl: - return Quantity.Density; + return new[] { Quantity.Density }; - case Unit.J: + case Unit.J: case Unit.kJ: case Unit.MJ: case Unit.Wh: case Unit.kWh: case Unit.MWh: - return Quantity.Energy; + return new[] { Quantity.Energy }; case Unit.uSpcm: case Unit.mSpm: - return Quantity.Conductivity; + return new[] { Quantity.Conductivity }; case Unit.ppl: case Unit.ppdm3: @@ -428,22 +429,22 @@ namespace Common case Unit.dm3pp: case Unit.lpdeg: case Unit.dm3pdeg: - return Quantity.PulsePerLtr; + return new[] { Quantity.PulsePerLtr }; case Unit.ppkWh: case Unit.kWhpp: - return Quantity.PulsePerKWh; - + return new[] { Quantity.PulsePerKWh }; + case Unit.A: case Unit.mA: - return Quantity.Current; - + return new[] { Quantity.Current }; + case Unit.V: case Unit.mV: - return Quantity.Voltage; + return new[] { Quantity.Voltage }; default: - return Quantity.Number; + return new[] { Quantity.Number }; } } diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index dbf3c820c..5c45b63fb 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.9.3134.105")] -[assembly: AssemblyFileVersion("3.9.3134.105")] +[assembly: AssemblyVersion("3.9.3134.106")] +[assembly: AssemblyFileVersion("3.9.3134.106")] diff --git a/TBF/Resources/Strings.Designer.cs b/TBF/Resources/Strings.Designer.cs index b36eb5c49..36d84ecf8 100644 --- a/TBF/Resources/Strings.Designer.cs +++ b/TBF/Resources/Strings.Designer.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -18,7 +19,7 @@ namespace TBF.Resources { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Strings { @@ -4452,7 +4453,7 @@ namespace TBF.Resources { } /// - /// Looks up a localized string similar to Pulses per liter. + /// Looks up a localized string similar to Pulses per unit. /// internal static string PulsesPerLtr { get { diff --git a/TBF/Resources/Strings.cs.resx b/TBF/Resources/Strings.cs.resx index 2a45ee942..00234e6e2 100644 --- a/TBF/Resources/Strings.cs.resx +++ b/TBF/Resources/Strings.cs.resx @@ -529,7 +529,7 @@ Rychlost změny [%] - Impulsy na litr + Impulsy na jednotky Komponent @@ -1734,6 +1734,18 @@ Zobraz Okno + + + + + + + + + + + Probíhá výpočet + Uspořádání testu @@ -1755,16 +1767,4 @@ Znovu otevřít - - - - - - - - - - - Probíhá výpočet - \ No newline at end of file diff --git a/TBF/Resources/Strings.de.resx b/TBF/Resources/Strings.de.resx index 675a32298..2ce6b09c4 100644 --- a/TBF/Resources/Strings.de.resx +++ b/TBF/Resources/Strings.de.resx @@ -532,7 +532,7 @@ Durchflussänderung [%] - Impulse pro Liter + Impulse pro Einheit Komponente @@ -2187,6 +2187,15 @@ Dialog anzeigen + + + + + + + + + Wasserzähler geprüft @@ -2220,13 +2229,4 @@ Abtastkopf wurde deaktiviert vom Benutzer! - - - - - - - - - \ No newline at end of file diff --git a/TBF/Resources/Strings.es.resx b/TBF/Resources/Strings.es.resx index 42dd41499..2e116070f 100644 --- a/TBF/Resources/Strings.es.resx +++ b/TBF/Resources/Strings.es.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + pulsos por unidad + Activity in Spanish diff --git a/TBF/Resources/Strings.fr.resx b/TBF/Resources/Strings.fr.resx index 5b63f80f0..f37f2e22d 100644 --- a/TBF/Resources/Strings.fr.resx +++ b/TBF/Resources/Strings.fr.resx @@ -529,7 +529,7 @@ Taux de changement [%] - Impulsions par litre + impulsions par unité Composant @@ -2004,6 +2004,15 @@ Afficher la boîte de dialogue + + + + + + + + + Types compteurs testés @@ -2019,13 +2028,4 @@ Temps test [s] - - - - - - - - - \ No newline at end of file diff --git a/TBF/Resources/Strings.it.resx b/TBF/Resources/Strings.it.resx index b700dfed6..c1b24abd9 100644 --- a/TBF/Resources/Strings.it.resx +++ b/TBF/Resources/Strings.it.resx @@ -529,7 +529,7 @@ tasso di cambio [%] - impulsi per litro + impulsi per unità componente @@ -1761,6 +1761,15 @@ Mostra dialogo + + + + + + + + + tipi di contatori testati @@ -1791,13 +1800,4 @@ Drenare - - - - - - - - - \ No newline at end of file diff --git a/TBF/Resources/Strings.pl.resx b/TBF/Resources/Strings.pl.resx index 7036778c3..50978605f 100644 --- a/TBF/Resources/Strings.pl.resx +++ b/TBF/Resources/Strings.pl.resx @@ -520,7 +520,7 @@ Szybkość zmian [%] - Impulsy na litr + impulsów na jednostkę Element @@ -1644,6 +1644,15 @@ Napięcie + + + + + + + + + Układ testu @@ -1695,13 +1704,4 @@ Jeszcze raz - - - - - - - - - \ No newline at end of file diff --git a/TBF/Resources/Strings.resx b/TBF/Resources/Strings.resx index 064b2ec0a..fb5f56b04 100644 --- a/TBF/Resources/Strings.resx +++ b/TBF/Resources/Strings.resx @@ -541,7 +541,7 @@ Rate of change [%] - Pulses per liter + Pulses per unit Delay between pictures diff --git a/TBF/Resources/Strings.ro.resx b/TBF/Resources/Strings.ro.resx index fdb95c768..1f9f1fbba 100644 --- a/TBF/Resources/Strings.ro.resx +++ b/TBF/Resources/Strings.ro.resx @@ -433,7 +433,7 @@ Variatie debit [%] - impuls pe litru + impulsuri pe unitate Componenta @@ -819,6 +819,15 @@ Save Communication + + + + + + + + + rece @@ -843,13 +852,4 @@ seria - - - - - - - - - \ No newline at end of file diff --git a/TBF/Resources/Strings.ru.resx b/TBF/Resources/Strings.ru.resx index ec13473b8..eeb2d30f8 100644 --- a/TBF/Resources/Strings.ru.resx +++ b/TBF/Resources/Strings.ru.resx @@ -520,7 +520,7 @@ Скорость изменения [%] - Импульсов на литр + импульсов на единицу Компонент @@ -1554,6 +1554,15 @@ Voltage + + + + + + + + + холодный @@ -1608,13 +1617,4 @@ Снова - - - - - - - - - \ No newline at end of file diff --git a/TBF/Resources/Strings.sk.resx b/TBF/Resources/Strings.sk.resx index 5bea76082..0f17f5f1e 100644 --- a/TBF/Resources/Strings.sk.resx +++ b/TBF/Resources/Strings.sk.resx @@ -135,6 +135,9 @@ Združené vodomery + + Pulzy na jednotky + Činnosť diff --git a/TBF/Rig/RegisterReaders/PulsesFromUniCB/RRProcParams.cs b/TBF/Rig/RegisterReaders/PulsesFromUniCB/RRProcParams.cs index 212f24411..179d81694 100644 --- a/TBF/Rig/RegisterReaders/PulsesFromUniCB/RRProcParams.cs +++ b/TBF/Rig/RegisterReaders/PulsesFromUniCB/RRProcParams.cs @@ -24,14 +24,14 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(RRProcParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } - public double PulsesPerLtr; /// [l^-1] - public string Units; /// [kg^-1]...MF + public double PulsesPerLtr; + public string Units; public int Filter; public override void InitializeAll() { PulsesPerLtr = 1.0; - Units = "---"; //...MF + Units = "---"; Filter = 0; } @@ -43,7 +43,7 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB Strings.Filter, }; - //...MF + private void RefreshParamNames(int i) { if (i == 0) { @@ -56,12 +56,12 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB public override string ParamName(int i) { - //if(i==0) RefreshParamNames(0);//...MF + //if(i==0) RefreshParamNames(0); return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } - public ICollection ParamValues(int ix) + /*public ICollection ParamValues(int ix) { var values = new List(); switch (ix) @@ -72,6 +72,33 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB default: return null; } + }*/ + + public ICollection ParamValues(int ix) + { + switch (ix) + { + case 1: + { + var values = new List + { + Unit.None.ToDescription() + }; + + for (Unit unit = (Unit)1; unit < Unit.Count; unit++) + { + if (Common.Units.IsQuantity(unit, Quantity.MultiFunctionalVariables)) + { + values.Add(unit.ToDescription()); + } + } + + return values; + } + + default: + return null; + } } public override string ToString(int i) @@ -127,7 +154,7 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB void CopyContentTo(RRProcParams prms) { prms.PulsesPerLtr = this.PulsesPerLtr; - prms.Units = this.Units; //...MF + prms.Units = this.Units; prms.Filter = this.Filter; } diff --git a/TBF/Rig/RegisterReaders/StandingStartStop/RRProcParams.cs b/TBF/Rig/RegisterReaders/StandingStartStop/RRProcParams.cs index b0c6ed40e..90b93ae10 100644 --- a/TBF/Rig/RegisterReaders/StandingStartStop/RRProcParams.cs +++ b/TBF/Rig/RegisterReaders/StandingStartStop/RRProcParams.cs @@ -24,23 +24,23 @@ namespace TBF.Rig.RegisterReaders.StandingStartStop public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(RRProcParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } - public double PulsesPerLtr; /// Target low limit of the flow increase or decrease - public string Units; /// [kg^-1]...MF + public double PulsesPerLtr; + public string Units; public override void InitializeAll() { PulsesPerLtr = 1.0; - Units = "---"; //...MF + Units = "---"; } string[] paramNames = new string[] { //Strings.PulsesPerLtr, - Strings.PulsesPerUnit,//...MF - Strings.Units,//...MF + Strings.PulsesPerUnit, + Strings.Units, }; - //...MF + private void RefreshParamNames(int i) { if (i == 0) @@ -54,7 +54,7 @@ namespace TBF.Rig.RegisterReaders.StandingStartStop public override string ParamName(int i) { return paramNames[i]; } public override int ParamsCount() { return paramNames.Length; } - public ICollection ParamValues(int ix) + /*marek mareciinopublic ICollection ParamValues(int ix) { var values = new List(); switch (ix) @@ -65,6 +65,33 @@ namespace TBF.Rig.RegisterReaders.StandingStartStop default: return null; } + }*/ + + public ICollection ParamValues(int ix) + { + switch (ix) + { + case 1: + { + var values = new List + { + Unit.None.ToDescription() + }; + + for (Unit unit = (Unit)1; unit < Unit.Count; unit++) + { + if (Common.Units.IsQuantity(unit, Quantity.MultiFunctionalVariables)) + { + values.Add(unit.ToDescription()); + } + } + + return values; + } + + default: + return null; + } } public override string ToString(int i) @@ -72,7 +99,7 @@ namespace TBF.Rig.RegisterReaders.StandingStartStop switch (i) { case 0: return PulsesPerLtr.ToString(); - case 1: return Units;//...MF + case 1: return Units; default: return string.Empty; } } @@ -113,7 +140,7 @@ namespace TBF.Rig.RegisterReaders.StandingStartStop void CopyContentTo(RRProcParams prms) { prms.PulsesPerLtr = this.PulsesPerLtr; - prms.Units = this.Units; //...MF + prms.Units = this.Units; } public IParamsProvider Clone()