]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Dependency update / fixes / skrungle bungle (#23745)
authorPieter-Jan Briers <pieterjan.briers+git@gmail.com>
Fri, 12 Jan 2024 22:22:01 +0000 (23:22 +0100)
committerGitHub <noreply@github.com>
Fri, 12 Jan 2024 22:22:01 +0000 (23:22 +0100)
* Give .props files 2-space indents.

* Move to Central Package Management.

Allows us to store NuGet package versions all in one place. Yay!

* Update NuGet packages and fix code for changes.

Notable:

Changes to ILVerify.
Npgsql doesn't need hacks for inet anymore, now we need hacks to make the old code work with this new reality.
NUnit's analyzers are already complaining and I didn't even update it to 4.x yet.
TerraFX changed to GetLastSystemError so error handling had to be changed.
Buncha APIs have more NRT annotations.

* Remove dotnet-eng NuGet package source.

I genuinely don't know what this was for, and Central Package Management starts throwing warnings about it, so YEET.

* Remove Robust.Physics project.

Never used.

* Remove erroneous NVorbis reference.

Should be VorbisPizza and otherwise wasn't used.

* Sandbox fixes

* Remove unused unit test package references.

Castle.Core and NUnit.ConsoleRunner.

* Update NUnit to 4.0.1

This requires replacing all the old assertion methods because they removed them πŸ₯²

* Oh so that's what dotnet-eng was used for. Yeah ok that makes sense.

* Add Robust.Analyzers.Test

* Update submodule

* commit to re-run CI

44 files changed:
.editorconfig
Content.Benchmarks/Content.Benchmarks.csproj
Content.Client/Content.Client.csproj
Content.IntegrationTests/Content.IntegrationTests.csproj
Content.IntegrationTests/Pair/TestPair.Recycle.cs
Content.IntegrationTests/PoolManager.cs
Content.IntegrationTests/Tests/Actions/ActionsAddedTest.cs
Content.IntegrationTests/Tests/Buckle/BuckleTest.cs
Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs
Content.IntegrationTests/Tests/Minds/GhostRoleTests.cs
Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs
Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs
Content.IntegrationTests/Tests/PostMapInitTest.cs
Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs
Content.IntegrationTests/Tests/Serialization/SerializationTest.cs
Content.IntegrationTests/Tests/Toolshed/ToolshedTest.cs
Content.MapRenderer/Content.MapRenderer.csproj
Content.MapRenderer/Painters/EntityPainter.cs
Content.Packaging/Content.Packaging.csproj
Content.PatreonParser/Content.PatreonParser.csproj
Content.Replay/Content.Replay.csproj
Content.Server.Database/Content.Server.Database.csproj
Content.Server.Database/Model.cs
Content.Server.Database/ModelPostgres.cs
Content.Server.Database/ModelSqlite.cs
Content.Server.Database/NpgsqlTypeMapping.cs [deleted file]
Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs
Content.Server/Content.Server.csproj
Content.Server/Database/ServerDbPostgres.cs
Content.Server/Database/ServerDbSqlite.cs
Content.Server/IP/IPAddressExt.cs
Content.Shared/Atmos/GasOverlayChunk.cs
Content.Shared/Content.Shared.csproj
Content.Tests/Content.Tests.csproj
Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs
Content.Tests/Shared/DirectionRandomizerTest.cs
Content.Tests/Shared/Utility/RandomExtensionsTests.cs
Content.Tools/Content.Tools.csproj
Content.YAMLLinter/Content.YAMLLinter.csproj
Directory.Packages.props [new file with mode: 0644]
Pow3r/Pow3r.csproj
RobustToolbox
SpaceStation14.sln
nuget.config

index 59ca35cc9a5b042fc49c9306a7c9226b8d9c879c..872a068c7c626e1d3b87c1409fbb5599473a0775 100644 (file)
@@ -338,7 +338,10 @@ dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter
 resharper_braces_for_ifelse = required_for_multiline
 resharper_keep_existing_attribute_arrangement = true
 
-[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets}]
+[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets,props}]
+indent_size = 2
+
+[nuget.config]
 indent_size = 2
 
 [{*.yaml,*.yml}]
index 049d6f5b6f4127e7374017e82ace2d57a6709009..c3b60a1c69d182987a67212b31745db7a7ea6742 100644 (file)
@@ -11,7 +11,7 @@
     <LangVersion>12</LangVersion>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="BenchmarkDotNet" Version="0.13.1" />
+    <PackageReference Include="BenchmarkDotNet" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Content.Client\Content.Client.csproj" />
index 33ee0e0a34dec6a6e2b37b8748fe90d7617ea7e7..0e15fadfae3fe1e7341cef9ca392f5b00318d85a 100644 (file)
@@ -13,8 +13,8 @@
     <Platforms>AnyCPU</Platforms>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="Nett" Version="0.15.0" />
-    <PackageReference Include="JetBrains.Annotations" Version="2022.1.0" PrivateAssets="All" />
+    <PackageReference Include="Nett" />
+    <PackageReference Include="JetBrains.Annotations" PrivateAssets="All" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\RobustToolbox\Lidgren.Network\Lidgren.Network.csproj" />
index 5f2a5b0cebb55e50888b3ae8354a7cb85ed54e93..ec93a47041d85b7dbf54e2e548a2e7bbf8a0489c 100644 (file)
@@ -8,9 +8,9 @@
     <LangVersion>11</LangVersion>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="NUnit" Version="3.13.3" />
-    <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
+    <PackageReference Include="NUnit" />
+    <PackageReference Include="NUnit3TestAdapter" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Content.Client\Content.Client.csproj" />
index c9796c0079ea546e685c8a7a46959de56ee62b79..872af8334fb55573b48791c19b51a5dbc6b6926c 100644 (file)
@@ -1,4 +1,4 @@
-ο»Ώ#nullable enable
+#nullable enable
 using System.IO;
 using System.Linq;
 using Content.Server.GameTicking;
@@ -203,17 +203,17 @@ public sealed partial class TestPair : IAsyncDisposable
 
         if (settings.InLobby)
         {
-            Assert.Null(session.AttachedEntity);
+            Assert.That(session.AttachedEntity, Is.Null);
             return;
         }
 
-        Assert.NotNull(session.AttachedEntity);
+        Assert.That(session.AttachedEntity, Is.Not.Null);
         Assert.That(entMan.EntityExists(session.AttachedEntity));
         Assert.That(entMan.HasComponent<MindContainerComponent>(session.AttachedEntity));
         var mindCont = entMan.GetComponent<MindContainerComponent>(session.AttachedEntity!.Value);
-        Assert.NotNull(mindCont.Mind);
-        Assert.True(entMan.TryGetComponent(mindCont.Mind, out MindComponent? mind));
-        Assert.Null(mind!.VisitingEntity);
+        Assert.That(mindCont.Mind, Is.Not.Null);
+        Assert.That(entMan.TryGetComponent(mindCont.Mind, out MindComponent? mind));
+        Assert.That(mind!.VisitingEntity, Is.Null);
         Assert.That(mind.OwnedEntity, Is.EqualTo(session.AttachedEntity!.Value));
         Assert.That(mind.UserId, Is.EqualTo(session.UserId));
     }
index 03ebf49a9b260363355be607f2885485c4853c49..6046ed65e44b1bed9afc4a30c2c75d0c492bcc1c 100644 (file)
@@ -337,10 +337,10 @@ public static partial class PoolManager
         {
             // If the _poolFailureReason is not null, we can assume at least one test failed.
             // So we say inconclusive so we don't add more failed tests to search through.
-            Assert.Inconclusive(@"
+            Assert.Inconclusive(@$"
 In a different test, the pool manager had an exception when trying to create a server/client pair.
 Instead of risking that the pool manager will fail at creating a server/client pairs for every single test,
-we are just going to end this here to save a lot of time. This is the exception that started this:\n {0}", _poolFailureReason);
+we are just going to end this here to save a lot of time. This is the exception that started this:\n {_poolFailureReason}");
         }
 
         if (_dead)
index 01daeea93c53a176510871e8a5013d6374f54550..913dcf4a40a125b1f1105b159644253920a16a13 100644 (file)
@@ -29,7 +29,7 @@ public sealed class ActionsAddedTest
         var cActionSystem = client.System<SharedActionsSystem>();
 
         // Dummy ticker is disabled - client should be in control of a normal mob.
-        Assert.NotNull(serverSession.AttachedEntity);
+        Assert.That(serverSession.AttachedEntity, Is.Not.Null);
         var serverEnt = serverSession.AttachedEntity!.Value;
         var clientEnt = clientSession!.AttachedEntity!.Value;
         Assert.That(sEntMan.EntityExists(serverEnt));
@@ -57,8 +57,8 @@ public sealed class ActionsAddedTest
         var sAct = sActions[0].Comp;
         var cAct = cActions[0].Comp;
 
-        Assert.NotNull(sAct);
-        Assert.NotNull(cAct);
+        Assert.That(sAct, Is.Not.Null);
+        Assert.That(cAct, Is.Not.Null);
 
         // Finally, these two actions are not the same object
         // required, because integration tests do not respect the [NonSerialized] attribute and will simply events by reference.
index 370ffd2e23964f71ee4cb201ec0decf4c8eae902..739bd549061a6329fe02f7829659a5be506712b3 100644 (file)
@@ -111,7 +111,7 @@ namespace Content.IntegrationTests.Tests.Buckle
                     // Side effects of buckling for the strap
                     Assert.That(strap.BuckledEntities, Does.Contain(human));
                     Assert.That(strap.OccupiedSize, Is.EqualTo(buckle.Size));
-                    Assert.Positive(strap.OccupiedSize);
+                    Assert.That(strap.OccupiedSize, Is.Positive);
                 });
 
 #pragma warning disable NUnit2045 // Interdependent asserts.
index 0bc123cdbfa78c02b530f1c31c19675c8fdb0dad..1d994624a6de8b6045e25f4bdefdd807fa2056b0 100644 (file)
@@ -103,7 +103,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
 
             await server.WaitAssertion(() =>
             {
-                CollectionAssert.AreEquivalent(deviceNetTestSystem.LastPayload, payload);
+                Assert.That(payload, Is.EquivalentTo(deviceNetTestSystem.LastPayload));
             });
             await pair.CleanReturnAsync();
         }
@@ -170,7 +170,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
 
             await server.WaitAssertion(() =>
             {
-                CollectionAssert.AreEqual(deviceNetTestSystem.LastPayload, payload);
+                Assert.That(payload, Is.EqualTo(deviceNetTestSystem.LastPayload).AsCollection);
 
                 payload = new NetworkPayload
                 {
@@ -187,7 +187,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
 
             await server.WaitAssertion(() =>
             {
-                CollectionAssert.AreNotEqual(deviceNetTestSystem.LastPayload, payload);
+                Assert.That(payload, Is.Not.EqualTo(deviceNetTestSystem.LastPayload).AsCollection);
             });
 
             await pair.CleanReturnAsync();
@@ -270,7 +270,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
 
             await server.WaitAssertion(() =>
             {
-                CollectionAssert.AreEqual(deviceNetTestSystem.LastPayload, payload);
+                Assert.That(payload, Is.EqualTo(deviceNetTestSystem.LastPayload).AsCollection);
             });
 
             await pair.CleanReturnAsync();
index 22a185798e97c7406c0ba2e34a7190c23350bb95..ca97e435a7f068fa923a3f9fd77e2a44de01490c 100644 (file)
@@ -60,7 +60,7 @@ public sealed class GhostRoleTests
         Assert.That(session.AttachedEntity, Is.EqualTo(originalMob));
         var originalMind = entMan.GetComponent<MindComponent>(originalMindId);
         Assert.That(originalMind.OwnedEntity, Is.EqualTo(originalMob));
-        Assert.Null(originalMind.VisitingEntity);
+        Assert.That(originalMind.VisitingEntity, Is.Null);
 
         // Use the ghost command
         conHost.ExecuteCommand("ghost");
@@ -90,11 +90,11 @@ public sealed class GhostRoleTests
         Assert.That(newMindId, Is.Not.EqualTo(originalMindId));
         Assert.That(session.AttachedEntity, Is.EqualTo(ghostRole));
         Assert.That(newMind.OwnedEntity, Is.EqualTo(ghostRole));
-        Assert.Null(newMind.VisitingEntity);
+        Assert.That(newMind.VisitingEntity, Is.Null);
 
         // Original mind should be unaffected, but the ghost will have deleted itself.
         Assert.That(originalMind.OwnedEntity, Is.EqualTo(originalMob));
-        Assert.Null(originalMind.VisitingEntity);
+        Assert.That(originalMind.VisitingEntity, Is.Null);
         Assert.That(entMan.Deleted(ghost));
 
         // Ghost again.
@@ -113,11 +113,11 @@ public sealed class GhostRoleTests
         await pair.RunTicksSync(10);
         Assert.That(session.AttachedEntity, Is.EqualTo(originalMob));
         Assert.That(originalMind.OwnedEntity, Is.EqualTo(originalMob));
-        Assert.Null(originalMind.VisitingEntity);
+        Assert.That(originalMind.VisitingEntity, Is.Null);
 
         // the ghost-role mind is unaffected, though the ghost will have deleted itself
         Assert.That(newMind.OwnedEntity, Is.EqualTo(ghostRole));
-        Assert.Null(newMind.VisitingEntity);
+        Assert.That(newMind.VisitingEntity, Is.Null);
         Assert.That(entMan.Deleted(otherGhost));
 
         await pair.CleanReturnAsync();
index 0c9bfbfc743857e156607def5b5ec83aa66a659e..980559cc8174cc24ee9fcac4b21c6d2396124278 100644 (file)
@@ -36,8 +36,8 @@ public sealed partial class MindTests
         await pair.RunTicksSync(5);
 
         // Client is not attached to anything
-        Assert.Null(pair.Client.Player?.ControlledEntity);
-        Assert.Null(pair.PlayerData?.Mind);
+        Assert.That(pair.Client.Player?.ControlledEntity, Is.Null);
+        Assert.That(pair.PlayerData?.Mind, Is.Null);
 
         // Attempt to ghost
         var cConHost = pair.Client.ResolveDependency<IConsoleHost>();
index d31d5f9262d6c07ffde5d799b2dd708efafde6bd..a1fccfb68dbf9320ab9efae4f98593c35196c556 100644 (file)
@@ -1,4 +1,4 @@
-ο»Ώusing System.Linq;
+using System.Linq;
 using Content.Shared.Ghost;
 using Content.Shared.Mind;
 using Robust.Server.Player;
@@ -127,7 +127,7 @@ public sealed partial class MindTests
         var mindSys = entMan.System<SharedMindSystem>();
         var mind = GetMind(pair);
 
-        Assert.Null(mind.Comp.VisitingEntity);
+        Assert.That(mind.Comp.VisitingEntity, Is.Null);
 
         // Make player visit a new mob
         var original = mind.Comp.OwnedEntity;
@@ -165,8 +165,8 @@ public sealed partial class MindTests
         await using var pair = await SetupPair();
         var mind = GetMind(pair);
 
-        Assert.Null(mind.Comp.VisitingEntity);
-        Assert.NotNull(mind.Comp.OwnedEntity);
+        Assert.That(mind.Comp.VisitingEntity, Is.Null);
+        Assert.That(mind.Comp.OwnedEntity, Is.Not.Null);
         var entity = mind.Comp.OwnedEntity;
 
         await pair.RunTicksSync(5);
@@ -175,7 +175,7 @@ public sealed partial class MindTests
 
         var newMind = GetMind(pair);
 
-        Assert.Null(newMind.Comp.VisitingEntity);
+        Assert.That(newMind.Comp.VisitingEntity, Is.Null);
         Assert.That(newMind.Comp.OwnedEntity, Is.EqualTo(entity));
         Assert.That(newMind.Id, Is.EqualTo(mind.Id));
 
index 01bb2bf0620996026aaeabc253da99cc6a70713a..a9422921e1f8106d1d8899765d56ce49a84cecb7 100644 (file)
@@ -298,7 +298,7 @@ namespace Content.IntegrationTests.Tests
 
             Assert.That(gameMaps.Remove(PoolManager.TestMap));
 
-            CollectionAssert.AreEquivalent(GameMaps.ToHashSet(), gameMaps, "Game map prototype missing from test cases.");
+            Assert.That(gameMaps, Is.EquivalentTo(GameMaps.ToHashSet()), "Game map prototype missing from test cases.");
 
             await pair.CleanReturnAsync();
         }
index 1bc2885e97be42bf7c5dfb1ecdf3c04602218ef4..e26a45291b2e4dc5c111e722ac380af2ed4cf38d 100644 (file)
@@ -83,7 +83,7 @@ namespace Content.IntegrationTests.Tests.Preferences
             var pair = await PoolManager.GetServerClient();
             var db = GetDb(pair.Server);
             // Database should be empty so a new GUID should do it.
-            Assert.Null(await db.GetPlayerPreferencesAsync(NewUserId()));
+            Assert.That(await db.GetPlayerPreferencesAsync(NewUserId()), Is.Null);
 
             await pair.CleanReturnAsync();
         }
index d2e3eb936b7ebe289e66c5c5171be0eb3346720e..052ea997c0d5dd0a10687865bccf5c38bba74ea6 100644 (file)
@@ -26,7 +26,7 @@ public sealed partial class SerializationTest
 
         var node = seriMan.WriteValue(value, notNullableOverride:true);
         var valueNode = node as ValueDataNode;
-        Assert.NotNull(valueNode);
+        Assert.That(valueNode, Is.Not.Null);
 
         var expected = refMan.GetEnumReference(value);
         Assert.That(valueNode!.Value, Is.EqualTo(expected));
index 1c9abc963205af9fce7522b773a4ced0e9dfb5c9..dd68ff1ccf1f6bd3c3f84d7635a469af770b73c5 100644 (file)
@@ -1,4 +1,4 @@
-ο»Ώ#nullable enable
+#nullable enable
 using System.Collections.Generic;
 using Content.IntegrationTests.Pair;
 using Content.Server.Administration.Managers;
@@ -38,7 +38,7 @@ public abstract class ToolshedTest : IInvocationContext
 
     protected virtual async Task TearDown()
     {
-        Assert.IsEmpty(_expectedErrors);
+        Assert.That(_expectedErrors, Is.Empty);
         ClearErrors();
     }
 
index f181f5620cd1445bd5ece2f8627e0d4a541d264d..43207177322c96e0891e9a263bed6cd6c5a80954 100644 (file)
@@ -13,8 +13,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NUnit" Version="3.13.3" />
-    <PackageReference Include="SixLabors.ImageSharp" Version="2.1.3" />
+    <PackageReference Include="NUnit" />
+    <PackageReference Include="SixLabors.ImageSharp" />
   </ItemGroup>
 
   <Import Project="..\RobustToolbox\MSBuild\Robust.Properties.targets" />
index de6b98711f2e9d651c4d6cd47143243b92f73017..808acf8fe4c64b5ce5e795b420fe895ce85ea333 100644 (file)
@@ -115,7 +115,7 @@ public sealed class EntityPainter
             var (x, y, width, height) = GetRsiFrame(rsi, image, entity, layer, dir);
 
             var rect = new Rectangle(x, y, width, height);
-            if (!new Rectangle(Point.Empty, image.Size()).Contains(rect))
+            if (!new Rectangle(Point.Empty, image.Size).Contains(rect))
             {
                 Console.WriteLine($"Invalid layer {rsi!.Path}/{layer.RsiState.Name}.png for entity {_sEntityManager.ToPrettyString(entity.Owner)} at ({entity.X}, {entity.Y})");
                 return;
index dcbac5066db59abb8ecc1f20a13f53e6ce3dc585..9823e40b8e3475a3c727f9ed5fcd706f5605486c 100644 (file)
@@ -6,9 +6,6 @@
     <ServerGarbageCollection>True</ServerGarbageCollection>
   </PropertyGroup>
 
-  <ItemGroup>
-    <PackageReference Include="NVorbis" Version="0.10.5" PrivateAssets="compile" />
-  </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\RobustToolbox\Robust.Packaging\Robust.Packaging.csproj" />
   </ItemGroup>
index 53b06b265b623cbbf52b8a877b22eea39cd3e556..3206ad42e9d23b829b5726192890d9e3f5dcd9f0 100644 (file)
@@ -5,10 +5,11 @@
         <TargetFramework>net7.0</TargetFramework>
         <ImplicitUsings>enable</ImplicitUsings>
         <Nullable>enable</Nullable>
+      <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
     </PropertyGroup>
 
     <ItemGroup>
-      <PackageReference Include="CsvHelper" Version="30.0.1" />
+      <PackageReference Include="CsvHelper" />
     </ItemGroup>
 
 </Project>
index 5d5880f23a71614454bacecf01488dc3e54e890b..4b3c85345cf4c47bda0754edef1b745ede151de3 100644 (file)
@@ -10,8 +10,8 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="Nett" Version="0.15.0" />
-    <PackageReference Include="JetBrains.Annotations" Version="2020.1.0" PrivateAssets="All" />
+    <PackageReference Include="Nett" />
+    <PackageReference Include="JetBrains.Annotations" PrivateAssets="All" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\RobustToolbox\Lidgren.Network\Lidgren.Network.csproj" />
index 42f081d73e45b5de7e008bf77ba9d5ecf66f7e5e..31ab785c18e56407688e9f0d75fda08620afcf50 100644 (file)
@@ -1,4 +1,4 @@
-ο»Ώ<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <!-- Work around https://github.com/dotnet/project-system/issues/4314 -->
     <TargetFramework>$(TargetFramework)</TargetFramework>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Design">
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <PrivateAssets>all</PrivateAssets>
     </PackageReference>
-    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="7.0.4" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" />
+    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" />
 
     <!-- Necessary at design time -->
-    <PackageReference Include="SQLitePCLRaw.provider.e_sqlite3" Version="2.1.4" Condition="'$(UseSystemSqlite)' != 'True' and '$(Configuration)' != 'Release'" />
-    <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.4" Condition="'$(UseSystemSqlite)' != 'True' and '$(Configuration)' != 'Release'" />
+    <PackageReference Include="SQLitePCLRaw.provider.sqlite3" Condition="'$(UseSystemSqlite)' == 'True' and '$(Configuration)' != 'Release'" />
+    <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Condition="'$(UseSystemSqlite)' != 'True' and '$(Configuration)' != 'Release'" />
   </ItemGroup>
 
   <ItemGroup>
index a6b5107245395697329fdee3a21c6c76ed1e10df..a522d9994e7c8faa868cf4f74c03183727128cd3 100644 (file)
@@ -7,6 +7,7 @@ using System.Net;
 using System.Text.Json;
 using Content.Shared.Database;
 using Microsoft.EntityFrameworkCore;
+using NpgsqlTypes;
 
 namespace Content.Server.Database
 {
@@ -550,7 +551,7 @@ namespace Content.Server.Database
     {
         int Id { get; set; }
         Guid? PlayerUserId { get; set; }
-        (IPAddress, int)? Address { get; set; }
+        NpgsqlInet? Address { get; set; }
         byte[]? HWId { get; set; }
         DateTime BanTime { get; set; }
         DateTime? ExpirationTime { get; set; }
@@ -618,8 +619,7 @@ namespace Content.Server.Database
         /// <summary>
         /// CIDR IP address range of the ban. The whole range can match the ban.
         /// </summary>
-        [Column(TypeName = "inet")]
-        public (IPAddress, int)? Address { get; set; }
+        public NpgsqlInet? Address { get; set; }
 
         /// <summary>
         /// Hardware ID of the banned player.
@@ -808,7 +808,7 @@ namespace Content.Server.Database
         public Round? Round { get; set; }
         public Guid? PlayerUserId { get; set; }
         [Required] public TimeSpan PlaytimeAtNote { get; set; }
-        [Column(TypeName = "inet")] public (IPAddress, int)? Address { get; set; }
+        public NpgsqlInet? Address { get; set; }
         public byte[]? HWId { get; set; }
 
         public DateTime BanTime { get; set; }
index 6b1278285e74bb0b8b20781acfb49268dfbedf77..a6b1856ab17661070024eede33d27bb3770f3573 100644 (file)
@@ -21,8 +21,6 @@ namespace Content.Server.Database
 
         protected override void OnConfiguring(DbContextOptionsBuilder options)
         {
-            options.ReplaceService<IRelationalTypeMappingSource, CustomNpgsqlTypeMappingSource>();
-
             ((IDbContextOptionsBuilderInfrastructure) options).AddOrUpdateExtension(new SnakeCaseExtension());
 
             options.ConfigureWarnings(x =>
index 9f9654792f408bbc13af1cc57c9c2af3b80f0d41..392a7c0aae7cafa5bd53febb1b5dea3c88676dcb 100644 (file)
@@ -9,6 +9,7 @@ using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore.Diagnostics;
 using Microsoft.EntityFrameworkCore.Infrastructure;
 using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using NpgsqlTypes;
 
 namespace Content.Server.Database
 {
@@ -48,8 +49,8 @@ namespace Content.Server.Database
                 .Property(p => p.LastSeenAddress)
                 .HasConversion(ipConverter);
 
-            var ipMaskConverter = new ValueConverter<(IPAddress address, int mask), string>(
-                v => InetToString(v.address, v.mask),
+            var ipMaskConverter = new ValueConverter<NpgsqlInet, string>(
+                v => InetToString(v.Address, v.Netmask),
                 v => StringToInet(v)
             );
 
@@ -98,11 +99,11 @@ namespace Content.Server.Database
             return $"{address}/{mask}";
         }
 
-        private static (IPAddress, int) StringToInet(string inet) {
+        private static NpgsqlInet StringToInet(string inet) {
             var idx = inet.IndexOf('/', StringComparison.Ordinal);
-            return (
+            return new NpgsqlInet(
                 IPAddress.Parse(inet.AsSpan(0, idx)),
-                int.Parse(inet.AsSpan(idx + 1), provider: CultureInfo.InvariantCulture)
+                byte.Parse(inet.AsSpan(idx + 1), provider: CultureInfo.InvariantCulture)
             );
         }
 
diff --git a/Content.Server.Database/NpgsqlTypeMapping.cs b/Content.Server.Database/NpgsqlTypeMapping.cs
deleted file mode 100644 (file)
index beea67e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-using System.Linq.Expressions;
-using System.Net;
-using System.Reflection;
-using Microsoft.EntityFrameworkCore.Storage;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure.Internal;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping;
-
-#pragma warning disable EF1001
-namespace Content.Server.Database
-{
-    // Taken from https://github.com/npgsql/efcore.pg/issues/1158
-    // To support inet -> (IPAddress, int) mapping.
-    public class CustomNpgsqlTypeMappingSource : NpgsqlTypeMappingSource
-    {
-        public CustomNpgsqlTypeMappingSource(
-            TypeMappingSourceDependencies dependencies,
-            RelationalTypeMappingSourceDependencies relationalDependencies,
-            ISqlGenerationHelper sqlGenerationHelper,
-            INpgsqlSingletonOptions npgsqlOptions)
-            : base(dependencies, relationalDependencies, sqlGenerationHelper, npgsqlOptions)
-        {
-            StoreTypeMappings["inet"] =
-                new RelationalTypeMapping[]
-                {
-                    new NpgsqlInetWithMaskTypeMapping(),
-                    new NpgsqlInetTypeMapping()
-                };
-        }
-    }
-
-    // Basically copied from NpgsqlCidrTypeMapping
-    public class NpgsqlInetWithMaskTypeMapping : NpgsqlTypeMapping
-    {
-        public NpgsqlInetWithMaskTypeMapping() : base("inet", typeof((IPAddress, int)), NpgsqlTypes.NpgsqlDbType.Inet)
-        {
-        }
-
-        protected NpgsqlInetWithMaskTypeMapping(RelationalTypeMappingParameters parameters)
-            : base(parameters, NpgsqlTypes.NpgsqlDbType.Inet)
-        {
-        }
-
-        protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters parameters)
-        {
-            return new NpgsqlInetWithMaskTypeMapping(parameters);
-        }
-
-        protected override string GenerateNonNullSqlLiteral(object value)
-        {
-            var (address, subnet) = ((IPAddress, int)) value;
-            return $"INET '{address}/{subnet}'";
-        }
-
-        public override Expression GenerateCodeLiteral(object value)
-        {
-            var (address, subnet) = ((IPAddress, int)) value;
-            return Expression.New(
-                Constructor,
-                Expression.Call(ParseMethod, Expression.Constant(address.ToString())),
-                Expression.Constant(subnet));
-        }
-
-        private static readonly MethodInfo ParseMethod = typeof(IPAddress).GetMethod("Parse", new[] {typeof(string)})!;
-        private static readonly ConstructorInfo Constructor =
-            typeof((IPAddress, int)).GetConstructor(new[] {typeof(IPAddress), typeof(int)})!;
-    }
-}
index 201185d6f6bb1c79181f3b79f7d65720c2e8ec3e..c0fc1896e3fe8d0f7d6057724b78c6bc4631c364 100644 (file)
@@ -196,7 +196,7 @@ namespace Content.Server.Atmos.EntitySystems
         /// </summary>
         private bool UpdateChunkTile(GridAtmosphereComponent gridAtmosphere, GasOverlayChunk chunk, Vector2i index, GameTick curTick)
         {
-            ref var oldData = ref chunk.GetData(index);
+            ref var oldData = ref chunk.TileData[chunk.GetDataIndex(index)];
             if (!gridAtmosphere.Tiles.TryGetValue(index, out var tile))
             {
                 if (oldData.Equals(default))
index 3aba36c788d6f7c6525be3739df79944171c1725..96d642e4f2f6519f435bfc7fee5e825a88000c69 100644 (file)
@@ -14,7 +14,7 @@
     <ServerGarbageCollection>true</ServerGarbageCollection>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="JetBrains.Annotations" Version="2022.1.0" PrivateAssets="All" />
+    <PackageReference Include="JetBrains.Annotations" PrivateAssets="All" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Content.Packaging\Content.Packaging.csproj" />
index 4af3c6e2ede9164ff7415fb921217249c7f34c76..8a8f26e503b1fe613826ff82ac551cec540df60a 100644 (file)
@@ -7,6 +7,7 @@ using System.Runtime.CompilerServices;
 using System.Threading;
 using System.Threading.Tasks;
 using Content.Server.Administration.Logs;
+using Content.Server.IP;
 using Content.Shared.CCVar;
 using Microsoft.EntityFrameworkCore;
 using Robust.Shared.Configuration;
@@ -196,7 +197,7 @@ namespace Content.Server.Database
             return new ServerBanDef(
                 ban.Id,
                 uid,
-                ban.Address,
+                ban.Address.ToTuple(),
                 ban.HWId == null ? null : ImmutableArray.Create(ban.HWId),
                 ban.BanTime,
                 ban.ExpirationTime,
@@ -233,7 +234,7 @@ namespace Content.Server.Database
 
             db.PgDbContext.Ban.Add(new ServerBan
             {
-                Address = serverBan.Address,
+                Address = serverBan.Address.ToNpgsqlInet(),
                 HWId = serverBan.HWId?.ToArray(),
                 Reason = serverBan.Reason,
                 Severity = serverBan.Severity,
@@ -385,7 +386,7 @@ namespace Content.Server.Database
             return new ServerRoleBanDef(
                 ban.Id,
                 uid,
-                ban.Address,
+                ban.Address.ToTuple(),
                 ban.HWId == null ? null : ImmutableArray.Create(ban.HWId),
                 ban.BanTime,
                 ban.ExpirationTime,
@@ -423,7 +424,7 @@ namespace Content.Server.Database
 
             var ban = new ServerRoleBan
             {
-                Address = serverRoleBan.Address,
+                Address = serverRoleBan.Address.ToNpgsqlInet(),
                 HWId = serverRoleBan.HWId?.ToArray(),
                 Reason = serverRoleBan.Reason,
                 Severity = serverRoleBan.Severity,
index 1bcea6b1703cbfff2a04b1b77896ab6c0779bfaa..90bbec023a8830c4b03892619abdcd1c70b2151d 100644 (file)
@@ -139,7 +139,7 @@ namespace Content.Server.Database
             ServerBanExemptFlags? exemptFlags)
         {
             if (!exemptFlags.GetValueOrDefault(ServerBanExemptFlags.None).HasFlag(ServerBanExemptFlags.IP)
-                && address != null && ban.Address is not null && address.IsInSubnet(ban.Address.Value))
+                && address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value))
             {
                 return true;
             }
@@ -158,7 +158,7 @@ namespace Content.Server.Database
 
             db.SqliteDbContext.Ban.Add(new ServerBan
             {
-                Address = serverBan.Address,
+                Address = serverBan.Address.ToNpgsqlInet(),
                 Reason = serverBan.Reason,
                 Severity = serverBan.Severity,
                 BanningAdmin = serverBan.BanningAdmin?.UserId,
@@ -239,7 +239,7 @@ namespace Content.Server.Database
             NetUserId? userId,
             ImmutableArray<byte>? hwId)
         {
-            if (address != null && ban.Address is not null && address.IsInSubnet(ban.Address.Value))
+            if (address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value))
             {
                 return true;
             }
@@ -258,7 +258,7 @@ namespace Content.Server.Database
 
             var ban = new ServerRoleBan
             {
-                Address = serverBan.Address,
+                Address = serverBan.Address.ToNpgsqlInet(),
                 Reason = serverBan.Reason,
                 Severity = serverBan.Severity,
                 BanningAdmin = serverBan.BanningAdmin?.UserId,
@@ -315,7 +315,7 @@ namespace Content.Server.Database
             return new ServerRoleBanDef(
                 ban.Id,
                 uid,
-                ban.Address,
+                ban.Address.ToTuple(),
                 ban.HWId == null ? null : ImmutableArray.Create(ban.HWId),
                 // SQLite apparently always reads DateTime as unspecified, but we always write as UTC.
                 DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc),
@@ -385,7 +385,7 @@ namespace Content.Server.Database
             return new ServerBanDef(
                 ban.Id,
                 uid,
-                ban.Address,
+                ban.Address.ToTuple(),
                 ban.HWId == null ? null : ImmutableArray.Create(ban.HWId),
                 // SQLite apparently always reads DateTime as unspecified, but we always write as UTC.
                 DateTime.SpecifyKind(ban.BanTime, DateTimeKind.Utc),
index 8374099d77a385268c211aeda1472e932b827e2a..6bfa4ef5486d891047c8243cf2c039ba3938a1e0 100644 (file)
@@ -1,11 +1,34 @@
 ο»Ώusing System.Collections;
+using System.Diagnostics.CodeAnalysis;
 using System.Linq;
+using System.Net;
 using System.Net.Sockets;
+using NpgsqlTypes;
 
 namespace Content.Server.IP
 {
     public static class IPAddressExt
     {
+        // Npgsql used to map inet types as a tuple like this.
+        // I'm upgrading the dependencies and I don't wanna rewrite a bunch of DB code, so a few helpers it shall be.
+        [return: NotNullIfNotNull(nameof(tuple))]
+        public static NpgsqlInet? ToNpgsqlInet(this (IPAddress, int)? tuple)
+        {
+            if (tuple == null)
+                return null;
+
+            return new NpgsqlInet(tuple.Value.Item1, (byte) tuple.Value.Item2);
+        }
+
+        [return: NotNullIfNotNull(nameof(inet))]
+        public static (IPAddress, int)? ToTuple(this NpgsqlInet? inet)
+        {
+            if (inet == null)
+                return null;
+
+            return (inet.Value.Address, inet.Value.Netmask);
+        }
+
         // Taken from https://stackoverflow.com/a/56461160/4678631
         public static bool IsInSubnet(this System.Net.IPAddress address, string subnetMask)
         {
index e83ca7c6ca1ece1ca409438735e8dad12bb29975..b8299e8e227b21a4574a0121e89060dbcf2c2911 100644 (file)
@@ -16,7 +16,7 @@ namespace Content.Shared.Atmos
         public readonly Vector2i Index;
         public readonly Vector2i Origin;
 
-        public GasOverlayData[][] TileData = new GasOverlayData[ChunkSize][];
+        public GasOverlayData[] TileData = new GasOverlayData[ChunkSize * ChunkSize];
 
         [NonSerialized]
         public GameTick LastUpdate;
@@ -25,31 +25,25 @@ namespace Content.Shared.Atmos
         {
             Index = index;
             Origin = Index * ChunkSize;
-
-            // For whatever reason, net serialize does not like multi_D arrays. So Jagged it is.
-            for (var i = 0; i < ChunkSize; i++)
-            {
-                TileData[i] = new GasOverlayData[ChunkSize];
-            }
         }
 
         public GasOverlayChunk(GasOverlayChunk data)
         {
             Index = data.Index;
             Origin = data.Origin;
-            for (int i = 0; i < ChunkSize; i++)
-            {
-                // This does not clone the opacity array. However, this chunk cloning is only used by the client,
-                // which never modifies that directly. So this should be fine.
-                var array = TileData[i] = new GasOverlayData[ChunkSize];
-                Array.Copy(data.TileData[i], array, ChunkSize);
-            }
+
+            // This does not clone the opacity array. However, this chunk cloning is only used by the client,
+            // which never modifies that directly. So this should be fine.
+            Array.Copy(data.TileData, TileData, data.TileData.Length);
         }
 
-        public ref GasOverlayData GetData(Vector2i gridIndices)
+        /// <summary>
+        /// Resolve a data index into <see cref="TileData"/> for the given grid index.
+        /// </summary>
+        public int GetDataIndex(Vector2i gridIndices)
         {
             DebugTools.Assert(InBounds(gridIndices));
-            return ref TileData[gridIndices.X - Origin.X][gridIndices.Y - Origin.Y];
+            return (gridIndices.X - Origin.X) + (gridIndices.Y - Origin.Y) * ChunkSize;
         }
 
         private bool InBounds(Vector2i gridIndices)
@@ -63,37 +57,32 @@ namespace Content.Shared.Atmos
 
     public struct GasChunkEnumerator
     {
-        private GasOverlayChunk _chunk;
-        public int X = 0;
-        public int Y = -1;
-        private GasOverlayData[] _column;
+        private readonly GasOverlayData[] _tileData;
+        private int _index = -1;
 
+        public int X = ChunkSize - 1;
+        public int Y = -1;
 
         public GasChunkEnumerator(GasOverlayChunk chunk)
         {
-            _chunk = chunk;
-            _column = _chunk.TileData[0];
+            _tileData = chunk.TileData;
         }
 
         public bool MoveNext(out GasOverlayData gas)
         {
-            while (X < ChunkSize)
+            while (_index < _tileData.Length)
             {
-                // We want to increment Y before returning, but we also want it to match the current Y coordinate for
-                // the returned gas, so using a slightly different logic for the Y loop.
-                while (Y < ChunkSize - 1)
+                X += 1;
+                if (X >= ChunkSize)
                 {
-                    Y++;
-                    gas = _column[Y];
-
-                    if (!gas.Equals(default))
-                        return true;
+                    X = 0;
+                    Y += 1;
                 }
 
-                X++;
-                if (X < ChunkSize)
-                    _column = _chunk.TileData[X];
-                Y = -1;
+                _index += 1;
+                gas = _tileData[_index];
+                if (!gas.Equals(default))
+                    return true;
             }
 
             gas = default;
index e67223ae3cc41bde4919bfa3ce882de9deab8149..0bd9bc410b643f903752ceb72e1d787880d0d1f0 100644 (file)
@@ -9,7 +9,7 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="JetBrains.Annotations" Version="2022.1.0" PrivateAssets="All" />
+    <PackageReference Include="JetBrains.Annotations" PrivateAssets="All" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Content.Shared.Database\Content.Shared.Database.csproj" />
index e9274485262557d5872ba5052d4d184134622c81..a883892d872def6bc899d5d64579b92dd59f5ee1 100644 (file)
@@ -8,10 +8,9 @@
     <OutputPath>..\bin\Content.Tests\</OutputPath>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="NUnit" Version="3.13.3" />
-    <PackageReference Include="NUnit.ConsoleRunner" Version="3.15.0" />
-    <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
+    <PackageReference Include="NUnit" />
+    <PackageReference Include="NUnit3TestAdapter" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Content.Client\Content.Client.csproj" />
index 5d8d49d168cd17b1511bd79b8e22b8a20dc42213..405c0ec89eda448ea854965ac83493320a4b9a7e 100644 (file)
@@ -58,7 +58,7 @@ namespace Content.Tests.Shared.Alert
             entManager.EventBus.RaiseComponentEvent(alertsComponent, getty);
 
             var alertState = (AlertsComponent.AlertsComponent_AutoState) getty.State!;
-            Assert.NotNull(alertState);
+            Assert.That(alertState, Is.Not.Null);
             Assert.That(alertState.Alerts.Count, Is.EqualTo(1));
             Assert.That(alertState.Alerts.ContainsKey(lowpressure.AlertKey));
 
index 595bdeb60007377f42e4bc82766b71661c86a7eb..0afaa9ba4a09daf1f1d9ae0b9b9660262aad8de7 100644 (file)
@@ -54,7 +54,7 @@ public sealed class DirectionRandomizerTest : RobustUnitTest
         // Because of above foreach this asserts
         // rand[1,2,3] - [1,2,3] == {}
         // i.e. randomized set minus original set is empty
-        Assert.IsTrue(set.Count == 0, "Each element must appear once ");
+        Assert.That(set.Count == 0, "Each element must appear once ");
 
     }
 }
index ea9d9f1730cd08aa5773fc3f4a762da9c097d7b9..f278bfbbd14e261ae533b83e4341d769059680dd 100644 (file)
@@ -35,7 +35,7 @@ namespace Content.Tests.Shared.Utility
             var random = IoCManager.Resolve<IRobustRandom>();
             var id = random.Pick(dataSet);
 
-            Assert.NotNull(id);
+            Assert.That(id, Is.Not.Null);
         }
     }
 }
index 26524902cc40242780fcbcf09421c6bc2d7446ab..f611924c581c1667e774b4837bf17f51be4e1bc3 100644 (file)
@@ -5,7 +5,7 @@
     </PropertyGroup>
 
     <ItemGroup>
-      <PackageReference Include="YamlDotNet" Version="12.0.0" />
+      <PackageReference Include="YamlDotNet" />
     </ItemGroup>
 
     <ItemGroup>
index 6eb86def328360bb8f13e000ce42ece35b6807a3..4e7344beaa2778da707e5586ec903e2a8d58767e 100644 (file)
@@ -19,7 +19,7 @@
     </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="NUnit" />
   </ItemGroup>
 
   <Import Project="..\RobustToolbox\MSBuild\Robust.Properties.targets" />
diff --git a/Directory.Packages.props b/Directory.Packages.props
new file mode 100644 (file)
index 0000000..eee8c65
--- /dev/null
@@ -0,0 +1,19 @@
+ο»Ώ<Project>
+  <Import Project="RobustToolbox/Directory.Packages.props" />
+  <ItemGroup>
+    <!--
+    Remove EF Core packages from Robust. They're only used by Robust.Benchmarks anyways.
+    -->
+    <PackageVersion Remove="Npgsql.EntityFrameworkCore.PostgreSQL" />
+    <PackageVersion Remove="Microsoft.EntityFrameworkCore.Design" />
+
+    <PackageVersion Include="CsvHelper" Version="30.0.1" />
+    <PackageVersion Include="ImGui.NET" Version="1.87.3" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.0" />
+    <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="8.0.0" />
+    <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0" />
+    <PackageVersion Include="OpenTK" Version="4.7.2" />
+    <PackageVersion Include="Veldrid" Version="4.8.0" />
+    <PackageVersion Include="Veldrid.SPIRV" Version="1.0.15" />
+  </ItemGroup>
+</Project>
index bb63f2692155d47ed2e58d3c6c993718792ed1a5..4f2d20087ab36dc46a79a8b298b9449cd33b4ce9 100644 (file)
@@ -6,10 +6,10 @@
     </PropertyGroup>
 
     <ItemGroup>
-      <PackageReference Include="ImGui.NET" Version="1.87.3" />
-      <PackageReference Include="OpenTK" Version="4.7.2" />
-      <PackageReference Include="Veldrid" Version="4.8.0" />
-      <PackageReference Include="Veldrid.SPIRV" Version="1.0.15" />
+      <PackageReference Include="ImGui.NET" />
+      <PackageReference Include="OpenTK" />
+      <PackageReference Include="Veldrid" />
+      <PackageReference Include="Veldrid.SPIRV" />
     </ItemGroup>
 
     <ItemGroup>
index dfb5369664fe1b146a9cbb9f15d90d08d11db55e..f844011348b99128152fb468449f2e9e04ed5244 160000 (submodule)
@@ -1 +1 @@
-Subproject commit dfb5369664fe1b146a9cbb9f15d90d08d11db55e
+Subproject commit f844011348b99128152fb468449f2e9e04ed5244
index 10c4ea1c2c42190a423129b7948df91ca6f584e0..5a05a09e359e8f71c4a3ffb871faf1e621c0fac0 100644 (file)
@@ -1,7 +1,7 @@
 ο»Ώ
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29709.97
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34330.188
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Content.Shared", "Content.Shared\Content.Shared.csproj", "{26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}"
 EndProject
@@ -46,31 +46,29 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Content.Server.Database", "
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MSBuild", "MSBuild", "{50404922-9637-4394-BF59-165D0850ADC8}"
        ProjectSection(SolutionItems) = preProject
-               RobustToolbox\MSBuild\Robust.DefineConstants.targets = RobustToolbox\MSBuild\Robust.DefineConstants.targets
-               RobustToolbox\MSBuild\Robust.Engine.targets = RobustToolbox\MSBuild\Robust.Engine.targets
-               RobustToolbox\MSBuild\Robust.Properties.targets = RobustToolbox\MSBuild\Robust.Properties.targets
-               RobustToolbox\MSBuild\XamlIL.targets = RobustToolbox\MSBuild\XamlIL.targets
                RobustToolbox\MSBuild\Robust.Analyzers.targets = RobustToolbox\MSBuild\Robust.Analyzers.targets
+               RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets = RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets
+               RobustToolbox\MSBuild\Robust.Configurations.props = RobustToolbox\MSBuild\Robust.Configurations.props
+               RobustToolbox\MSBuild\Robust.DefineConstants.targets = RobustToolbox\MSBuild\Robust.DefineConstants.targets
                RobustToolbox\MSBuild\Robust.Engine.props = RobustToolbox\MSBuild\Robust.Engine.props
+               RobustToolbox\MSBuild\Robust.Engine.targets = RobustToolbox\MSBuild\Robust.Engine.targets
                RobustToolbox\MSBuild\Robust.Engine.Version.props = RobustToolbox\MSBuild\Robust.Engine.Version.props
-               RobustToolbox\MSBuild\Robust.Trimming.targets = RobustToolbox\MSBuild\Robust.Trimming.targets
                RobustToolbox\MSBuild\Robust.Platform.props = RobustToolbox\MSBuild\Robust.Platform.props
-               RobustToolbox\MSBuild\Robust.Configurations.props = RobustToolbox\MSBuild\Robust.Configurations.props
-               RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets = RobustToolbox\MSBuild\Robust.CompNetworkGenerator.targets
+               RobustToolbox\MSBuild\Robust.Properties.targets = RobustToolbox\MSBuild\Robust.Properties.targets
+               RobustToolbox\MSBuild\Robust.Trimming.targets = RobustToolbox\MSBuild\Robust.Trimming.targets
+               RobustToolbox\MSBuild\XamlIL.targets = RobustToolbox\MSBuild\XamlIL.targets
        EndProjectSection
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{806ED41A-411B-4B3B-BEB6-DEC6DCA4C205}"
        ProjectSection(SolutionItems) = preProject
-               Tools\gen_build_info.py = Tools\gen_build_info.py
                Tools\generate_hashes.ps1 = Tools\generate_hashes.ps1
+               Tools\gen_build_info.py = Tools\gen_build_info.py
        EndProjectSection
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Robust.Shared.Scripting", "RobustToolbox\Robust.Shared.Scripting\Robust.Shared.Scripting.csproj", "{41B450C0-A361-4CD7-8121-7072B8995CFC}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetSerializer", "RobustToolbox\NetSerializer\NetSerializer\NetSerializer.csproj", "{7B9472D3-79D4-48D1-9B22-BCDE518FE842}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Robust.Physics", "RobustToolbox\Robust.Physics\Robust.Physics.csproj", "{3BC34700-882F-426B-82BB-56D5708B5E0D}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.LoaderApi", "RobustToolbox\Robust.LoaderApi\Robust.LoaderApi\Robust.LoaderApi.csproj", "{1FAE651D-29D8-437A-9864-47CE0D180016}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Client.NameGenerator", "RobustToolbox\Robust.Client.NameGenerator\Robust.Client.NameGenerator.csproj", "{3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}"
@@ -110,11 +108,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project Files", "Project Fi
                .editorconfig = .editorconfig
                .gitattributes = .gitattributes
                .gitignore = .gitignore
+               Directory.Packages.props = Directory.Packages.props
                README.md = README.md
        EndProjectSection
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project Files", "Project Files", "{A965CB3B-FD31-44AF-8872-85ABA436098D}"
        ProjectSection(SolutionItems) = preProject
+               RobustToolbox\Directory.Packages.props = RobustToolbox\Directory.Packages.props
                RobustToolbox\README.md = RobustToolbox\README.md
                RobustToolbox\RELEASE-NOTES.md = RobustToolbox\RELEASE-NOTES.md
        EndProjectSection
@@ -127,317 +127,319 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Serialization.Genera
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Content.PatreonParser", "Content.PatreonParser\Content.PatreonParser.csproj", "{D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust.Analyzers.Tests", "RobustToolbox\Robust.Analyzers.Tests\Robust.Analyzers.Tests.csproj", "{83F510FE-9B50-4D96-AFAB-CC13998D6AFE}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
                Debug|Any CPU = Debug|Any CPU
-               Release|Any CPU = Release|Any CPU
                DebugOpt|Any CPU = DebugOpt|Any CPU
+               Release|Any CPU = Release|Any CPU
                Tools|Any CPU = Tools|Any CPU
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
                {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.Build.0 = Release|Any CPU
                {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.Build.0 = Release|Any CPU
                {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.Build.0 = Release|Any CPU
                {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.Build.0 = Release|Any CPU
                {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.Build.0 = Release|Any CPU
                {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.Build.0 = Release|Any CPU
                {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {C899FCA4-7037-4E49-ABC2-44DE72487110}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {C899FCA4-7037-4E49-ABC2-44DE72487110}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
                {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
                {8EDF4429-251A-416D-BB68-93F227191BCF}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {8EDF4429-251A-416D-BB68-93F227191BCF}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {59250BAF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {59250BAF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
                {59250BAF-0000-0000-0000-000000000000}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {59250BAF-0000-0000-0000-000000000000}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
                {59250BAF-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {59250BAF-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.Build.0 = Release|Any CPU
                {83429BD6-6358-4B18-BE51-401DF8EA2673}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {83429BD6-6358-4B18-BE51-401DF8EA2673}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.Build.0 = Release|Any CPU
                {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {B04AAE71-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {B04AAE71-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
                {B04AAE71-0000-0000-0000-000000000000}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {B04AAE71-0000-0000-0000-000000000000}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
                {B04AAE71-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {B04AAE71-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {93F23A82-00C5-4572-964E-E7C9457726D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {93F23A82-00C5-4572-964E-E7C9457726D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.Build.0 = Release|Any CPU
                {93F23A82-00C5-4572-964E-E7C9457726D4}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {93F23A82-00C5-4572-964E-E7C9457726D4}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {93F23A82-00C5-4572-964E-E7C9457726D4}.Release|Any CPU.Build.0 = Release|Any CPU
                {93F23A82-00C5-4572-964E-E7C9457726D4}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {93F23A82-00C5-4572-964E-E7C9457726D4}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.Build.0 = Release|Any CPU
                {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.Build.0 = Release|Any CPU
                {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {0529F740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {0529F740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
                {0529F740-0000-0000-0000-000000000000}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {0529F740-0000-0000-0000-000000000000}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
                {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.Build.0 = Release|Any CPU
                {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Release|Any CPU.Build.0 = Release|Any CPU
                {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {AB7AF1C8-30FF-4436-9DF0-179BE5B0C132}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.Build.0 = Release|Any CPU
                {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Release|Any CPU.Build.0 = Release|Any CPU
                {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {7AC832A1-2461-4EB5-AC26-26F6AFFA9E46}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {4809F412-3132-419E-BF9D-CCF7593C3533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {4809F412-3132-419E-BF9D-CCF7593C3533}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.Build.0 = Release|Any CPU
                {4809F412-3132-419E-BF9D-CCF7593C3533}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {4809F412-3132-419E-BF9D-CCF7593C3533}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4809F412-3132-419E-BF9D-CCF7593C3533}.Release|Any CPU.Build.0 = Release|Any CPU
                {4809F412-3132-419E-BF9D-CCF7593C3533}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {4809F412-3132-419E-BF9D-CCF7593C3533}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {45C9B43F-305D-4651-9863-F6384CBC847F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {45C9B43F-305D-4651-9863-F6384CBC847F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.Build.0 = Release|Any CPU
                {45C9B43F-305D-4651-9863-F6384CBC847F}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {45C9B43F-305D-4651-9863-F6384CBC847F}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {45C9B43F-305D-4651-9863-F6384CBC847F}.Release|Any CPU.Build.0 = Release|Any CPU
                {45C9B43F-305D-4651-9863-F6384CBC847F}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {45C9B43F-305D-4651-9863-F6384CBC847F}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {41B450C0-A361-4CD7-8121-7072B8995CFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {41B450C0-A361-4CD7-8121-7072B8995CFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.Build.0 = Release|Any CPU
                {41B450C0-A361-4CD7-8121-7072B8995CFC}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {41B450C0-A361-4CD7-8121-7072B8995CFC}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41B450C0-A361-4CD7-8121-7072B8995CFC}.Release|Any CPU.Build.0 = Release|Any CPU
                {41B450C0-A361-4CD7-8121-7072B8995CFC}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {41B450C0-A361-4CD7-8121-7072B8995CFC}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.Build.0 = Release|Any CPU
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Release|Any CPU.Build.0 = Release|Any CPU
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842}.Tools|Any CPU.Build.0 = Release|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
-               {3BC34700-882F-426B-82BB-56D5708B5E0D}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {1FAE651D-29D8-437A-9864-47CE0D180016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {1FAE651D-29D8-437A-9864-47CE0D180016}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.Build.0 = Release|Any CPU
                {1FAE651D-29D8-437A-9864-47CE0D180016}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {1FAE651D-29D8-437A-9864-47CE0D180016}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1FAE651D-29D8-437A-9864-47CE0D180016}.Release|Any CPU.Build.0 = Release|Any CPU
                {1FAE651D-29D8-437A-9864-47CE0D180016}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {1FAE651D-29D8-437A-9864-47CE0D180016}.Tools|Any CPU.Build.0 = Release|Any CPU
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.Build.0 = Release|Any CPU
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Release|Any CPU.Build.0 = Release|Any CPU
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA}.Tools|Any CPU.Build.0 = Release|Any CPU
                {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.Build.0 = Release|Any CPU
                {8922428F-17C3-47A7-BFE9-570DEB2464DA}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {8922428F-17C3-47A7-BFE9-570DEB2464DA}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Release|Any CPU.Build.0 = Release|Any CPU
                {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {8922428F-17C3-47A7-BFE9-570DEB2464DA}.Tools|Any CPU.Build.0 = Release|Any CPU
                {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.Build.0 = Release|Any CPU
                {16F7DE32-0186-44B9-9345-0C20D1BF2422}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {16F7DE32-0186-44B9-9345-0C20D1BF2422}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Release|Any CPU.Build.0 = Release|Any CPU
                {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {16F7DE32-0186-44B9-9345-0C20D1BF2422}.Tools|Any CPU.Build.0 = Release|Any CPU
                {23F09C45-950E-4DB7-A465-E937450FF008}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {23F09C45-950E-4DB7-A465-E937450FF008}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.Build.0 = Release|Any CPU
                {23F09C45-950E-4DB7-A465-E937450FF008}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {23F09C45-950E-4DB7-A465-E937450FF008}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {23F09C45-950E-4DB7-A465-E937450FF008}.Release|Any CPU.Build.0 = Release|Any CPU
                {23F09C45-950E-4DB7-A465-E937450FF008}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {23F09C45-950E-4DB7-A465-E937450FF008}.Tools|Any CPU.Build.0 = Release|Any CPU
                {440426C1-8DCA-43F6-967F-94439B8DAF47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {440426C1-8DCA-43F6-967F-94439B8DAF47}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.Build.0 = Release|Any CPU
                {440426C1-8DCA-43F6-967F-94439B8DAF47}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {440426C1-8DCA-43F6-967F-94439B8DAF47}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {440426C1-8DCA-43F6-967F-94439B8DAF47}.Release|Any CPU.Build.0 = Release|Any CPU
                {440426C1-8DCA-43F6-967F-94439B8DAF47}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {440426C1-8DCA-43F6-967F-94439B8DAF47}.Tools|Any CPU.Build.0 = Release|Any CPU
                {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.Build.0 = Release|Any CPU
                {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Release|Any CPU.Build.0 = Release|Any CPU
                {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {75AB8F8D-9E56-4B12-85E3-E03A852B31CC}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.Build.0 = Release|Any CPU
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Release|Any CPU.Build.0 = Release|Any CPU
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B}.Tools|Any CPU.Build.0 = Release|Any CPU
                {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.Build.0 = Release|Any CPU
                {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Release|Any CPU.Build.0 = Release|Any CPU
                {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {A59E2FCC-93CF-4886-8EA7-94F021A7475D}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.Build.0 = Release|Any CPU
                {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Release|Any CPU.Build.0 = Release|Any CPU
                {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Tools|Any CPU.ActiveCfg = Release|Any CPU
                {A3C5B00A-D232-4A01-B82E-B0E58BFD5C12}.Tools|Any CPU.Build.0 = Release|Any CPU
                {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.Build.0 = Release|Any CPU
                {8A21C7CA-2EB8-40E5-8043-33582C06D139}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {8A21C7CA-2EB8-40E5-8043-33582C06D139}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Release|Any CPU.Build.0 = Release|Any CPU
                {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {8A21C7CA-2EB8-40E5-8043-33582C06D139}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.Build.0 = Release|Any CPU
                {1C048C9F-00A9-4796-BE4D-BB36B7769720}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {1C048C9F-00A9-4796-BE4D-BB36B7769720}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Release|Any CPU.Build.0 = Release|Any CPU
                {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {1C048C9F-00A9-4796-BE4D-BB36B7769720}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {8842381D-3426-4BA8-93DA-599AB14D88E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {8842381D-3426-4BA8-93DA-599AB14D88E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.Build.0 = Release|Any CPU
                {8842381D-3426-4BA8-93DA-599AB14D88E9}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {8842381D-3426-4BA8-93DA-599AB14D88E9}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8842381D-3426-4BA8-93DA-599AB14D88E9}.Release|Any CPU.Build.0 = Release|Any CPU
                {8842381D-3426-4BA8-93DA-599AB14D88E9}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {8842381D-3426-4BA8-93DA-599AB14D88E9}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.Build.0 = Release|Any CPU
                {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Release|Any CPU.Build.0 = Release|Any CPU
                {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {199BBEA1-7627-434B-B6F6-0F52A7C0E1E0}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.Build.0 = Release|Any CPU
                {952AAF2A-DF63-4A7D-8094-3453893EBA80}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {952AAF2A-DF63-4A7D-8094-3453893EBA80}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Release|Any CPU.Build.0 = Release|Any CPU
                {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {952AAF2A-DF63-4A7D-8094-3453893EBA80}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.Build.0 = Release|Any CPU
                {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Release|Any CPU.Build.0 = Release|Any CPU
                {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {424445D4-F5D9-4CA9-A435-0A36E8AA28F3}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {A493616C-338D-47B7-8072-A7F14D034D0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {A493616C-338D-47B7-8072-A7F14D034D0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.Build.0 = Release|Any CPU
                {A493616C-338D-47B7-8072-A7F14D034D0B}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {A493616C-338D-47B7-8072-A7F14D034D0B}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A493616C-338D-47B7-8072-A7F14D034D0B}.Release|Any CPU.Build.0 = Release|Any CPU
                {A493616C-338D-47B7-8072-A7F14D034D0B}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {A493616C-338D-47B7-8072-A7F14D034D0B}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.Build.0 = Release|Any CPU
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Release|Any CPU.Build.0 = Release|Any CPU
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B}.Tools|Any CPU.Build.0 = Tools|Any CPU
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.Build.0 = Release|Any CPU
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Release|Any CPU.Build.0 = Release|Any CPU
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.ActiveCfg = Debug|Any CPU
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2}.Tools|Any CPU.Build.0 = Debug|Any CPU
                {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
                {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.Build.0 = Release|Any CPU
                {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.ActiveCfg = Debug|Any CPU
                {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.DebugOpt|Any CPU.Build.0 = Debug|Any CPU
+               {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Release|Any CPU.Build.0 = Release|Any CPU
                {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.ActiveCfg = Debug|Any CPU
                {D97D8258-D915-4D1D-B1E3-1A8D00CF9EB5}.Tools|Any CPU.Build.0 = Debug|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.DebugOpt|Any CPU.ActiveCfg = DebugOpt|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.DebugOpt|Any CPU.Build.0 = DebugOpt|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Tools|Any CPU.ActiveCfg = Tools|Any CPU
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE}.Tools|Any CPU.Build.0 = Tools|Any CPU
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
@@ -454,12 +456,11 @@ Global
                {50404922-9637-4394-BF59-165D0850ADC8} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {41B450C0-A361-4CD7-8121-7072B8995CFC} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {7B9472D3-79D4-48D1-9B22-BCDE518FE842} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
-               {3BC34700-882F-426B-82BB-56D5708B5E0D} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {1FAE651D-29D8-437A-9864-47CE0D180016} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {3CFEB7DB-12C6-46F3-89FC-1450F3016FFA} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {8922428F-17C3-47A7-BFE9-570DEB2464DA} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
-               {AFF53804-115F-4E67-B81F-26265EA27880} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {16F7DE32-0186-44B9-9345-0C20D1BF2422} = {AFF53804-115F-4E67-B81F-26265EA27880}
+               {AFF53804-115F-4E67-B81F-26265EA27880} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {23F09C45-950E-4DB7-A465-E937450FF008} = {AFF53804-115F-4E67-B81F-26265EA27880}
                {440426C1-8DCA-43F6-967F-94439B8DAF47} = {AFF53804-115F-4E67-B81F-26265EA27880}
                {88B0FC0F-7209-40E2-AF16-EB90AF727C5B} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
@@ -469,6 +470,7 @@ Global
                {A965CB3B-FD31-44AF-8872-85ABA436098D} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {07CA34A1-1D37-4771-A2E3-495A1044AE0B} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
                {6FBF108E-5CB5-47DE-8D7E-B496ABA9E3E2} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
+               {83F510FE-9B50-4D96-AFAB-CC13998D6AFE} = {83B4CBBA-547A-42F0-A7CD-8A67D93196CE}
        EndGlobalSection
        GlobalSection(ExtensibilityGlobals) = postSolution
                SolutionGuid = {AA37ED9F-F8D6-468E-A101-658AD605B09A}
index 09f4cb662b5000cf3084bc5a0d2a8ffcc530986f..6d136fbc1b63306a2f4855c7d0c64129b89a4398 100644 (file)
@@ -4,4 +4,12 @@
        <add key="nuget" value="https://api.nuget.org/v3/index.json" />
     <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
   </packageSources>
+  <packageSourceMapping>
+    <packageSource key="nuget">
+      <package pattern="*" />
+    </packageSource>
+    <packageSource key="dotnet-eng">
+      <package pattern="Microsoft.DotNet.RemoteExecutor" />
+    </packageSource>
+  </packageSourceMapping>
 </configuration>