Tidy up code and naming

Tidy up code and naming

--- osu.Game.Rulesets.Catch/UI/CatchTouchInputMapper.cs
+++ osu.Game.Rulesets.Catch/UI/CatchTouchInputMapper.cs
@@ -19,16 +19,16 @@
 {
     public class CatchTouchInputMapper : VisibilityContainer
     {
-        private Dictionary<object, TouchCatchAction> trackedActions = new Dictionary<object, TouchCatchAction>();
+        private Dictionary<object, TouchCatchAction> trackedActionSources = new Dictionary<object, TouchCatchAction>();

         private KeyBindingContainer<CatchAction> keyBindingContainer = null!;

         private Container mainContent = null!;

-        private ArrowHitbox leftBox = null!;
-        private ArrowHitbox rightBox = null!;
-        private ArrowHitbox leftDashBox = null!;
-        private ArrowHitbox rightDashBox = null!;
+        private InputArea leftBox = null!;
+        private InputArea rightBox = null!;
+        private InputArea leftDashBox = null!;
+        private InputArea rightDashBox = null!;

         public override bool PropagatePositionalInputSubTree => true;
         public override bool PropagateNonPositionalInputSubTree => true;
@@ -61,7 +61,7 @@
                             Origin = Anchor.CentreLeft,
                             Children = new Drawable[]
                             {
-                                leftBox = new ArrowHitbox(TouchCatchAction.MoveLeft, ref trackedActions, colours.Gray3)
+                                leftBox = new InputArea(TouchCatchAction.MoveLeft, ref trackedActionSources, colours.Gray3)
                                 {
                                     Anchor = Anchor.CentreRight,
                                     Origin = Anchor.CentreRight,
@@ -69,7 +69,7 @@
                                     RelativePositionAxes = Axes.Both,
                                     Width = 0.5f,
                                 },
-                                leftDashBox = new ArrowHitbox(TouchCatchAction.DashLeft, ref trackedActions, colours.Gray2)
+                                leftDashBox = new InputArea(TouchCatchAction.DashLeft, ref trackedActionSources, colours.Gray2)
                                 {
                                     Anchor = Anchor.CentreLeft,
                                     Origin = Anchor.CentreLeft,
@@ -88,7 +88,7 @@
                             Origin = Anchor.CentreRight,
                             Children = new Drawable[]
                             {
-                                rightBox = new ArrowHitbox(TouchCatchAction.MoveRight, ref trackedActions, colours.Gray3)
+                                rightBox = new InputArea(TouchCatchAction.MoveRight, ref trackedActionSources, colours.Gray3)
                                 {
                                     Anchor = Anchor.CentreLeft,
                                     Origin = Anchor.CentreLeft,
@@ -96,7 +96,7 @@
                                     RelativePositionAxes = Axes.Both,
                                     Width = 0.5f,
                                 },
-                                rightDashBox = new ArrowHitbox(TouchCatchAction.DashRight, ref trackedActions, colours.Gray2)
+                                rightDashBox = new InputArea(TouchCatchAction.DashRight, ref trackedActionSources, colours.Gray2)
                                 {
                                     Anchor = Anchor.CentreRight,
                                     Origin = Anchor.CentreRight,
@@ -137,7 +137,7 @@

             // Loop through the buttons to avoid keeping a button pressed if both mouse buttons are pressed.
             foreach (MouseButton i in e.PressedButtons)
-                trackedActions[i] = touchCatchAction;
+                trackedActionSources[i] = touchCatchAction;

             calculateActiveKeys();
             return true;
@@ -147,7 +147,7 @@
         {
             Show();

-            trackedActions[e.Touch.Source] = getTouchCatchActionFromInput(e.ScreenSpaceTouch.Position);
+            trackedActionSources[e.Touch.Source] = getTouchCatchActionFromInput(e.ScreenSpaceTouch.Position);
             calculateActiveKeys();

             base.OnTouchMove(e);
@@ -165,43 +165,43 @@
             base.OnTouchUp(e);
         }

+        private bool handleDown(object source, Vector2 position)
+        {
+            TouchCatchAction catchAction = getTouchCatchActionFromInput(position);
+
+            if (catchAction == TouchCatchAction.None)
+                return false;
+
+            trackedActionSources[source] = catchAction;
+
+            calculateActiveKeys();
+
+            return true;
+        }
+
+        private void handleUp(object source)
+        {
+            trackedActionSources.Remove(source);
+
+            calculateActiveKeys();
+        }
+
         private void calculateActiveKeys()
         {
-            if (trackedActions.ContainsValue(TouchCatchAction.DashLeft) || trackedActions.ContainsValue(TouchCatchAction.MoveLeft))
+            if (trackedActionSources.ContainsValue(TouchCatchAction.DashLeft) || trackedActionSources.ContainsValue(TouchCatchAction.MoveLeft))
                 keyBindingContainer.TriggerPressed(CatchAction.MoveLeft);
             else
                 keyBindingContainer.TriggerReleased(CatchAction.MoveLeft);

-            if (trackedActions.ContainsValue(TouchCatchAction.DashRight) || trackedActions.ContainsValue(TouchCatchAction.MoveRight))
+            if (trackedActionSources.ContainsValue(TouchCatchAction.DashRight) || trackedActionSources.ContainsValue(TouchCatchAction.MoveRight))
                 keyBindingContainer.TriggerPressed(CatchAction.MoveRight);
             else
                 keyBindingContainer.TriggerReleased(CatchAction.MoveRight);

-            if (trackedActions.ContainsValue(TouchCatchAction.DashRight) || trackedActions.ContainsValue(TouchCatchAction.DashLeft))
+            if (trackedActionSources.ContainsValue(TouchCatchAction.DashRight) || trackedActionSources.ContainsValue(TouchCatchAction.DashLeft))
                 keyBindingContainer.TriggerPressed(CatchAction.Dash);
             else
                 keyBindingContainer.TriggerReleased(CatchAction.Dash);
-        }
-
-        private bool handleDown(object source, Vector2 position)
-        {
-            TouchCatchAction catchAction = getTouchCatchActionFromInput(position);
-
-            if (catchAction == TouchCatchAction.None)
-                return false;
-
-            trackedActions[source] = catchAction;
-
-            calculateActiveKeys();
-
-            return true;
-        }
-
-        private void handleUp(object source)
-        {
-            trackedActions.Remove(source);
-
-            calculateActiveKeys();
         }

         private TouchCatchAction getTouchCatchActionFromInput(Vector2 inputPosition)
@@ -228,7 +228,7 @@
             mainContent.FadeOut(300);
         }

-        private class ArrowHitbox : CompositeDrawable, IKeyBindingHandler<CatchAction>
+        private class InputArea : CompositeDrawable, IKeyBindingHandler<CatchAction>
         {
             private readonly TouchCatchAction handledAction;

@@ -238,7 +238,7 @@

             private bool isHiglighted;

-            public ArrowHitbox(TouchCatchAction handledAction, ref Dictionary<object, TouchCatchAction> trackedActions, Color4 colour)
+            public InputArea(TouchCatchAction handledAction, ref Dictionary<object, TouchCatchAction> trackedActions, Color4 colour)
             {
                 this.handledAction = handledAction;
                 this.trackedActions = trackedActions;


Remove useless line

Remove useless line

--- osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs
+++ osu.Game/Overlays/Toolbar/ToolbarRulesetSelector.cs
@@ -86,7 +86,6 @@
             }

             Current.BindTo(parentRuleset);
-            Current.Disabled = false;
             Current.DisabledChanged += disabledChanged;
             Current.BindValueChanged(rulesetChanged);
         }


Reset lifetime on `HitObject.DefaultsApplied`

--- osu.Game/Rulesets/Objects/HitObjectLifetimeEntry.cs
+++ osu.Game/Rulesets/Objects/HitObjectLifetimeEntry.cs
@@ -35,7 +35,9 @@
             HitObject = hitObject;

             startTimeBindable.BindTo(HitObject.StartTimeBindable);
-            startTimeBindable.BindValueChanged(onStartTimeChanged, true);
+            startTimeBindable.BindValueChanged(_ => setInitialLifetime(), true);
+
+            HitObject.DefaultsApplied += _ => setInitialLifetime();
         }

         // The lifetime, as set by the hitobject.
@@ -89,8 +91,8 @@
         protected virtual double InitialLifetimeOffset => 10000;

         /// <summary>
-        /// Resets <see cref="LifetimeEntry.LifetimeStart"/> according to the change in start time of the <see cref="HitObject"/>.
+        /// Set <see cref="LifetimeEntry.LifetimeStart"/> using <see cref="InitialLifetimeOffset"/>.
         /// </summary>
-        private void onStartTimeChanged(ValueChangedEvent<double> startTime) => LifetimeStart = HitObject.StartTime - InitialLifetimeOffset;
+        private void setInitialLifetime() => LifetimeStart = HitObject.StartTime - InitialLifetimeOffset;
     }
 }


Add explanatory comment

Add explanatory comment

--- osu.Game/Screens/Edit/LegacyEditorBeatmapPatcher.cs
+++ osu.Game/Screens/Edit/LegacyEditorBeatmapPatcher.cs
@@ -130,6 +130,8 @@
             removedIndices.Sort();
             addedIndices.Sort();

+            // The expected usage of this returned list is to iterate from the start to the end of the list, such that
+            // these indices need to appear in reverse order for the usage to not have to deal with decrementing indices.
             removedIndices.Reverse();
         }


[*] Correção de erro de escrita

[*] Correção de erro de escrita

--- SpedBr/SpedBr.EfdContribuicoes/BlocoF.cs
+++ SpedBr/SpedBr.EfdContribuicoes/BlocoF.cs
@@ -639,7 +639,7 @@
             ///     99 - Outras Deduções
             /// </summary>
             [SpedCampos(2, "IND_ORI_DED", "N", 2, 0, true)]
-            public int IndOrgDed { get; set; }
+            public int IndOriDed { get; set; }

             /// <summary>
             ///     Indicador da Natureza da Dedução:


Add docs

Add docs

--- src/EditorFeatures/Core/ExternalAccess/VSTypeScript/Api/VSTypeScriptWellKnownSymbolTypes.cs
+++ src/EditorFeatures/Core/ExternalAccess/VSTypeScript/Api/VSTypeScriptWellKnownSymbolTypes.cs
@@ -6,6 +6,9 @@
 {
     internal static class VSTypeScriptWellKnownSymbolTypes
     {
+        /// <summary>
+        /// Exists for binary compat.  Not actually used for any purpose.
+        /// </summary>
         public const string Definition = nameof(Definition);
     }
 }


[V2] Support for adding 'other' (non compilable) files to VS project

--- packages/VSSolutionBuilder/dev/VSSolutionBuilder.cs
+++ packages/VSSolutionBuilder/dev/VSSolutionBuilder.cs
@@ -637,6 +637,14 @@
             this.Project.AddSource(settings);
         }

+        public void
+        AddOtherFile(
+            Bam.Core.V2.IInputPath other)
+        {
+            var otherGroup = this.Project.GetUniqueSettingsGroup(VSSettingsGroup.ESettingsGroup.CustomBuild, other.InputPath);
+            this.Project.AddOtherFile(otherGroup);
+        }
+
         public bool
         ContainsSource(
             VSSettingsGroup sourceGroup)
@@ -899,8 +907,10 @@
     {
         private static readonly string SourceGroupName = "Source Files";
         private static readonly string HeaderGroupName = "Header Files";
+        private static readonly string OtherGroupName = "Other Files";
         private Bam.Core.Array<VSSettingsGroup> Source = new Bam.Core.Array<VSSettingsGroup>();
         private Bam.Core.Array<VSSettingsGroup> Headers = new Bam.Core.Array<VSSettingsGroup>();
+        private Bam.Core.Array<VSSettingsGroup> Others = new Bam.Core.Array<VSSettingsGroup>();

         public void
         AddHeader(
@@ -923,6 +933,18 @@
                 var group = new VSSettingsGroup(VSSettingsGroup.ESettingsGroup.Compiler, include: path);
                 group.AddSetting("Filter", SourceGroupName);
                 this.Source.AddUnique(group);
+            }
+        }
+
+        public void
+        AddOther(
+            Bam.Core.V2.TokenizedString path)
+        {
+            if (!this.Others.Any(item => item.Include.Parse() == path.Parse()))
+            {
+                var group = new VSSettingsGroup(VSSettingsGroup.ESettingsGroup.CustomBuild, include: path);
+                group.AddSetting("Filter", OtherGroupName);
+                this.Others.AddUnique(group);
             }
         }

@@ -958,10 +980,13 @@
             {
                 createXML(containerEl, SourceGroupName, this.Source);
             }
-
             if (this.Headers.Count > 0)
             {
                 createXML(containerEl, HeaderGroupName, this.Headers);
+            }
+            if (this.Others.Count > 0)
+            {
+                createXML(containerEl, OtherGroupName, this.Others);
             }

             return document;
@@ -990,6 +1015,7 @@
             this.ProjectSettings = new Bam.Core.Array<VSSettingsGroup>();
             this.Headers = new Bam.Core.Array<VSSettingsGroup>();
             this.Sources = new Bam.Core.Array<VSSettingsGroup>();
+            this.Others = new Bam.Core.Array<VSSettingsGroup>();
             this.Filter = new VSProjectFilter();
             this.OrderOnlyDependentProjects = new Bam.Core.Array<VSProject>();
             this.LinkDependentProjects = new Bam.Core.Array<VSProject>();
@@ -1072,6 +1098,14 @@
         }

         public void
+        AddOtherFile(
+            VSSettingsGroup other)
+        {
+            this.Others.AddUnique(other);
+            this.Filter.AddOther(other.Include);
+        }
+
+        public void
         RequiresProject(
             VSProject dependentProject)
         {
@@ -1137,6 +1171,12 @@
         }

         private Bam.Core.Array<VSSettingsGroup> Sources
+        {
+            get;
+            set;
+        }
+
+        private Bam.Core.Array<VSSettingsGroup> Others
         {
             get;
             set;
@@ -1254,6 +1294,14 @@
                     group.Serialize(document, headersGroup);
                 }
             }
+            if (this.Others.Count > 0)
+            {
+                var otherGroup = document.CreateVSItemGroup(parentEl: projectEl);
+                foreach (var group in this.Others)
+                {
+                    group.Serialize(document, otherGroup);
+                }
+            }

             // dependent projects
             this.SerializeDependentProjects(document, projectEl);


Fixed spelling error in parameter description

--- Src/HttpXmlValidator/HttpXmlValidator.cs
+++ Src/HttpXmlValidator/HttpXmlValidator.cs
@@ -18,7 +18,7 @@
         private const string RecoverableInterchangeProcessingPropertyName = "RecoverableInterchangeProcessing";

-        [DisplayName("Recoverabl eInterchange Processing")]
+        [DisplayName("Recoverable Interchange Processing")]
         [Description("http://msdn.microsoft.com/en-us/library/dd224149.aspx")]
         public bool RecoverableInterchangeProcessing { get; set; }


no need to jump through hoops to rotate

no need to jump through hoops to rotate

--- SudokuSharp.ViewModels/BoardViewModel.cs
+++ SudokuSharp.ViewModels/BoardViewModel.cs
@@ -128,25 +128,19 @@
             throw new NotImplementedException();
         }

-        private static int?[,] Transpose(CellViewModel[][] data)
-        {
-            int?[,] result = new int?[data.Length, data.Length];
-
-            for (int i = 0; i < data.Length; i++)
-            {
-                for (int j = 0; j < data[i].Length; j++)
-                {
-                    result[i,j] = data[data.Length - j - 1][i].Number;
-                }
-            }
-
-            return result;
-        }
-
         public void Rotate()
         {
-            var data = Transpose(Cells);
-            NewPuzzle(data);
+            int?[,] result = new int?[Cells.Length, Cells.Length];
+
+            for (int i = 0; i < Cells.Length; i++)
+            {
+                for (int j = 0; j < Cells[i].Length; j++)
+                {
+                    result[i, j] = Cells[Cells.Length - j - 1][i].Number;
+                }
+            }
+
+            NewPuzzle(result);
         }

         private void SolveWhereTwoColumnsFilledInInlineBlockColumn()


fix spam filter

fix spam filter

--- TCC.Core/ViewModels/ChatWindowManager.cs
+++ TCC.Core/ViewModels/ChatWindowManager.cs
@@ -220,6 +220,7 @@
             if (current.Author == SessionManager.CurrentPlayer.Name ||
                 old.Author == SessionManager.CurrentPlayer.Name) return true;
             if (old.RawMessage != current.RawMessage) return true;
+
             if (old.Author != current.Author) return true;
             switch (current.Channel)
             {
@@ -229,12 +230,6 @@
                 case ChatChannel.Loot:
                 case ChatChannel.Bargain:
                 case ChatChannel.Damage:
-                case ChatChannel.Private1:
-                case ChatChannel.Private2:
-                case ChatChannel.Private3:
-                case ChatChannel.Private4:
-                case ChatChannel.Private5:
-                case ChatChannel.Private6:
                 case ChatChannel.Private7:
                 case ChatChannel.Private8:
                 case ChatChannel.TCC:


Simplifying tests.Tests.

Simplifying tests.Tests.

LeftJoin method issue detected.

--- Tests/Tests.Playground/Issue1760Tests.cs
+++ Tests/Tests.Playground/Issue1760Tests.cs
@@ -1,8 +1,9 @@
-using System.Linq;
-using System.Linq.Expressions;
+using System;
+using System.Linq;
+
 using LinqToDB;
-using LinqToDB.Common;
 using LinqToDB.Mapping;
+
 using NUnit.Framework;

 namespace Tests.Playground
@@ -11,7 +12,7 @@
 	public class Issue1760Tests : TestBase
 	{
 		[Table(Schema="dbo", Name="b_table2")]
-		public partial class BTable2
+		public class BTable2
 		{
 			[Column("id"),   PrimaryKey, Identity] public int    Id   { get; set; } // int
 			[Column("col1"), Nullable            ] public string Col1 { get; set; } // varchar(50)
@@ -20,13 +21,13 @@
 		}

 		[Table(Schema="dbo", Name="commonTable")]
-		public partial class CommonTable
+		public class CommonTable
 		{
 			[Column("id"), PrimaryKey, Identity] public int Id { get; set; } // int
 		}

 		[Table(Schema="dbo", Name="c_table2")]
-		public partial class CTable2
+		public class CTable2
 		{
 			[Column("id"),          PrimaryKey, Identity] public int    Id        { get; set; } // int
 			[Column("col1"),        Nullable            ] public string Col1      { get; set; } // varchar(50)
@@ -34,17 +35,17 @@
 		}

 		[Table(Schema="dbo", Name="table1")]
-		public partial class Table1
+		public class Table1
 		{
 			[Column("id"),            PrimaryKey,  Identity] public int  Id            { get; set; } // int
 			[Column("id_tbl2"),          Nullable          ] public int? IdTbl2        { get; set; } // int
 			[Column("id_tbl3"),          Nullable          ] public int? IdTbl3        { get; set; } // int
 			[Column("commonTableId"), NotNull              ] public int  CommonTableId { get; set; } // int
-			[Column("c_tb1l_Id"),        Nullable          ] public int? CTb1lId       { get; set; } // int
+			[Column("c_tb1l_Id"),        Nullable          ] public int? CTb1LId       { get; set; } // int
 		}

 		[Table(Schema="dbo", Name="table2")]
-		public partial class Table2
+		public class Table2
 		{
 			[Column("id"),      PrimaryKey, Identity] public int    Id      { get; set; } // int
 			[Column("textCol"), Nullable            ] public string TextCol { get; set; } // varchar(50)
@@ -52,43 +53,27 @@
 		}

 		[Table(Schema="dbo", Name="table3")]
-		public partial class Table3
+		public class Table3
 		{
 			[Column("id"),  PrimaryKey, Identity] public int  Id  { get; set; } // int
 			[Column("col"), Nullable            ] public int? Col { get; set; } // int
 		}

-
-		class SomeClass
-		{
-			[PrimaryKey]
-			public int Id { get; set; }
-		}
-
-		class SomeOtherClass
-		{
-			[PrimaryKey]
-			public int Id { get; set; }
-		}
-
 		[Test]
 		public void OriginalTestSimplified([IncludeDataSources(TestProvName.AllSQLite)] string context)
 		{
 			using (var db = GetDataContext(context))
-			using (db.CreateLocalTable<BTable2>())
-			using (db.CreateLocalTable<CommonTable>())
-			using (db.CreateLocalTable<CTable2>())
 			using (db.CreateLocalTable<Table1>())
 			using (db.CreateLocalTable<Table2>())
 			using (db.CreateLocalTable<Table3>())
 			{
 				int id = 0;
 				var part1 = db.GetTable<Table1>()
-					.GroupBy(w => w.CTb1lId)
-					.Select(w => new
-					{
-						Col3 = w.Key,
-						maxCol = w.Max(s => s.CTb1lId)
+					.GroupBy(w => w.CTb1LId)
+					.Select(w => new
+					{
+						Col3 = w.Key,
+						maxCol = w.Max(s => s.CTb1LId)
 					})
 					.LeftJoin(db.GetTable<Table3>(),
 						(allE, tbl3) => allE.maxCol == tbl3.Id,
@@ -97,10 +82,11 @@
 						(allM, btbl) => allM.Col == btbl.Id,
 						(allF, btbl) => new {all = allF, btbl})
 					;
+
 				var general = db.GetTable<Table1>()
 					.Where(w => w.CommonTableId == id)
 					.LeftJoin(db.GetTable<Table2>(),
-						(t1, bt1) => t1.CTb1lId == bt1.Id,
+						(t1, bt1) => t1.CTb1LId == bt1.Id,
 						(t1, bt1) => new {t1, bt1})
 					.LeftJoin(part1,
 						(allA, ctb) => allA.bt1.Col3 == ctb.btbl.Id,
@@ -113,19 +99,15 @@
 						s.ctb,
 					})
 					.Select(s => new {s.Key});
-				var ss = general.ToList();
-
-			}
-		}
-
+
+				_ = general.ToList();
+			}
+		}

 		[Test]
 		public void OriginalTest([IncludeDataSources(TestProvName.AllSQLite)] string context)
 		{
 			using (var db = GetDataContext(context))
-			using (db.CreateLocalTable<BTable2>())
-			using (db.CreateLocalTable<CommonTable>())
-			using (db.CreateLocalTable<CTable2>())
 			using (db.CreateLocalTable<Table1>())
 			using (db.CreateLocalTable<Table2>())
 			using (db.CreateLocalTable<Table3>())
@@ -159,10 +141,11 @@
 						b2 = w.btbl.Col2 ?? string.Empty,
 						b3 = w.btbl.Col3 ?? string.Empty,
 					});
+
 				var general = db.GetTable<Table1>()
 					.Where(w => w.CommonTableId == id)
 					.LeftJoin(db.GetTable<Table2>(),
-						(t1, bt1) => t1.CTb1lId == bt1.Id,
+						(t1, bt1) => t1.CTb1LId == bt1.Id,
 						(t1, bt1) => new {t1, bt1})
 					.LeftJoin(part1,
 						(allA, ctb) => allA.bt1.Col3 == ctb.c1,
@@ -178,8 +161,74 @@
 						s.bt1.TextCol
 					})
 					.Select(s => new { s.Key.TextCol, s.Key.b1, s.Key.b2, s.Key.b3});
-				var ss = general.ToList();
-
+
+				_ = general.ToList();
+			}
+		}
+
+		[Test]
+		public void OriginalTest1([IncludeDataSources(TestProvName.AllSQLite)] string context)
+		{
+			using (var db = GetDataContext(context))
+			using (db.CreateLocalTable<Table1>())
+			using (db.CreateLocalTable<Table2>())
+			using (db.CreateLocalTable<Table3>())
+			{
+				var part1 = db.GetTable<Table1>()
+					.InnerJoin(db.GetTable<Table2>(),
+						(tbl1, tbl2) => tbl1.IdTbl2 == tbl2.Id,
+						(tbl1, tbl2) => new {tbl1, tbl2})
+					.GroupBy(w => w.tbl2.Col3)
+					.Select(w => new
+					{
+						Col3 = w.Key,
+						maxCol = w.Max(s => s.tbl1.Id)
+					})
+					.LeftJoin(db.GetTable<Table3>(),
+						(allE, tbl3) => allE.maxCol == tbl3.Id,
+						(allG, tbl3) => new {c1=allG.Col3, b1=tbl3.Col});
+
+				var general = db.GetTable<Table1>()
+					.LeftJoin(part1,
+						(allA, ctb) => allA.Id == ctb.c1,
+						(allB, ctb) => allB.Id);
+
+				_ = general.ToList();
+			}
+		}
+
+		[Test]
+		public void OriginalTest2([IncludeDataSources(TestProvName.AllSQLite)] string context)
+		{
+			using (var db = GetDataContext(context))
+			using (db.CreateLocalTable<Table1>())
+			using (db.CreateLocalTable<Table2>())
+			using (db.CreateLocalTable<Table3>())
+			{
+				var part1 = db.GetTable<Table1>()
+					.InnerJoin(db.GetTable<Table2>(),
+						(tbl1, tbl2) => tbl1.IdTbl2 == tbl2.Id,
+						(tbl1, tbl2) => new {tbl1, tbl2})
+					.InnerJoin(db.GetTable<Table3>(),
+						(all, tbl3) => all.tbl1.IdTbl3 == tbl3.Id,
+						(all, tbl3) => new {all.tbl2, tbl3})
+					.GroupBy(w => w.tbl2.Col3)
+					.Select(w => new
+					{
+						Col3 = w.Key,
+						maxCol = w.Max(s => s.tbl3.Id)
+					})
+					.LeftJoin(db.GetTable<Table3>(),
+						(allE, tbl3) => allE.maxCol == tbl3.Id,
+						(allG, tbl3) => new {c1=allG.Col3, b1=tbl3.Col});
+
+				var general =
+					from allA in db.GetTable<Table1>()
+					join ctb in part1 on allA.Id equals ctb.c1 into g
+					from ctb in g.DefaultIfEmpty()
+					select allA.Id;
+
+				_ = general.ToList();
 			}
 		}
 	}


Coquille

Coquille

--- Enigmos.cs
+++ Enigmos.cs
@@ -78,7 +78,7 @@
         /// Cette méthode teste si le contenu de la TextBox de réponse coïncide avec la réponse attendue. Si c'est le cas, l'énigme suivante est affichée.
         /// </summary>
         /// <param name="sender">Le bouton "Valider"</param>
-        /// <param name="e">Les énèvements liés au clic</param>
+        /// <param name="e">Les évènements liés au clic</param>
         private void Validate(object sender, EventArgs e)
         {
             if (active.CheckAnswer(tbxAnswer.Text))


Remove unused '_id' field in UnixNetworkInterface

--- src/System.Net.NetworkInformation/src/System/Net/NetworkInformation/UnixNetworkInterface.cs
+++ src/System.Net.NetworkInformation/src/System/Net/NetworkInformation/UnixNetworkInterface.cs
@@ -18,7 +18,6 @@
         protected Dictionary<IPAddress, IPAddress> _netMasks = new Dictionary<IPAddress, IPAddress>();
         // If this is an ipv6 device, contains the Scope ID.
         protected uint? _ipv6ScopeId = null;
-        private string _id;

         protected UnixNetworkInterface(string name)
         {
@@ -97,7 +96,6 @@
             PhysicalAddress physicalAddress = new PhysicalAddress(macAddress);

             _index = llAddr->InterfaceIndex;
-            _id = _index.ToString();
             _physicalAddress = physicalAddress;
             _networkInterfaceType = (NetworkInterfaceType)llAddr->HardwareType;
         }


:green_heart: Skip LocalDb dependent test on Mono

Some tests rely on LocalDb and therefore do not run on Mac/Linux. We
have https://github.com/aspnet/Diagnostics/issues/176 open to address
this, but in the meantime some of the tests are skipped. Adding one more
test that we missed.

--- test/Microsoft.AspNet.Diagnostics.Entity.FunctionalTests/DatabaseErrorPageMiddlewareTest.cs
+++ test/Microsoft.AspNet.Diagnostics.Entity.FunctionalTests/DatabaseErrorPageMiddlewareTest.cs
@@ -281,7 +281,8 @@
             }
         }

-        [Fact]
+        [ConditionalTheory]
+        [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
         public async Task Pass_thru_when_context_not_in_services()
         {
             using (var database = SqlServerTestStore.CreateScratch())


修改关于我们的样式

修改关于我们的样式

--- trunk/src/DeviceManagementSystem/NYB.DeviceManagementSystem.View/Views/AboutUs/Index.cshtml
+++ trunk/src/DeviceManagementSystem/NYB.DeviceManagementSystem.View/Views/AboutUs/Index.cshtml
@@ -5,7 +5,8 @@

 <style type="text/css">
     .aboutus {
-        margin-left: 20px;
+        margin-left: 50px;
+        margin-right:30px;
     }

         .aboutus h2 {
@@ -21,7 +22,7 @@

         .aboutus p {
             font-size: 14px;
-            text-indent: 4em;
+            text-indent: 2em;
             line-height: 25px;
             margin-left: 20px;
             margin-right: 20px;


Premises and site visit save

Premises and site visit save

--- PS.Mothership.Core/PS.Mothership.Core.Common/Dto/Application/ApplicationDetailLocationDto.cs
+++ PS.Mothership.Core/PS.Mothership.Core.Common/Dto/Application/ApplicationDetailLocationDto.cs
@@ -28,6 +28,9 @@
         public AppPremisesTypeEnum PremisesType { get; set; }

         [DataMember]
+        public bool SiteVisit { get; set; }
+
+        [DataMember]
         public IList<ApplicationDetailLocationProductDto> ApplicationDetailLocationProduct { get; set; }


Revert "Fix race condition with multithreaded tests."

This reverts commit 579814f9496cd460ea78cb926b9e5659cf91c7de.

--- tests/OmniSharp.Roslyn.CSharp.Tests/CompletionFacts.cs
+++ tests/OmniSharp.Roslyn.CSharp.Tests/CompletionFacts.cs
@@ -2301,12 +2301,7 @@
             {
                 var testHost = CreateOmniSharpHost(configurationData: new[] { new KeyValuePair<string, string>("RoslynExtensionsOptions:EnableImportCompletion", "true") });
                 testHost.AddFilesToWorkspace();
-                var result = Interlocked.CompareExchange(ref _completionFixture.ImportCompletionTestHost, testHost, null);
-                if (result != null)
-                {
-                    testHost.Dispose();
-                    testHost = result;
-                }
+                _completionFixture.ImportCompletionTestHost = testHost;
                 return testHost;
             }
         }
@@ -2324,12 +2319,7 @@
                     new KeyValuePair<string, string>("RoslynExtensionsOptions:EnableAsyncCompletion", "true"),
                 });
                 testHost.AddFilesToWorkspace();
-                var result = Interlocked.CompareExchange(ref _completionFixture.ImportCompletionTestHost, testHost, null);
-                if (result != null)
-                {
-                    testHost.Dispose();
-                    testHost = result;
-                }
+                _completionFixture.ImportAndAsyncCompletionTestHost = testHost;
                 return testHost;
             }
         }
@@ -2362,8 +2352,8 @@
 #nullable enable
     public sealed class CompletionFixture : IDisposable
     {
-        public OmniSharpTestHost? ImportCompletionTestHost;
-        public OmniSharpTestHost? ImportAndAsyncCompletionTestHost;
+        public OmniSharpTestHost? ImportCompletionTestHost { get; set; }
+        public OmniSharpTestHost? ImportAndAsyncCompletionTestHost { get; set; }

         public void Dispose()
         {


Adds the comments to the line, but need to redo the order


Removed some debug code.

Removed some debug code.


added videoId test

added videoId test


Remove BOM

Remove BOM


Avoid UnauthrizedAccessException caused by MessageDialog.ShowAsync


Proposed fix for #5072.

Proposed fix for #5072.

Signed-off-by: Kiminuo <2b3f67bd3dd436fadda20ceab7dba54729632601@protonmail.com>


updated grass calls

updated grass calls

--- ThePrincessBard/ThePrincessBard/Level.cs
+++ ThePrincessBard/ThePrincessBard/Level.cs
@@ -238,7 +238,7 @@

                 // Grass
                 case 'g':
-                    return LoadTile("grass", TileCollision.Impassable);
+                    return LoadTile("grass_single_single", TileCollision.Impassable);

                 // slant up
                 case '/':
@@ -246,7 +246,7 @@

                 // slant down
                 case '\\':
-                    return LoadTile("", TileCollision.Impassable);
+                    return LoadTile("grass_slantToUpLeft", TileCollision.Impassable);

                 // Unknown tile type character
                 default:


removing ModPRegressionTests for now

removing ModPRegressionTests for now

--- Tst/UnitTests/CBackend/TestCaseLoader.cs
+++ Tst/UnitTests/CBackend/TestCaseLoader.cs
@@ -10,7 +10,7 @@
 {
     internal class TestCaseLoader
     {
-        private static readonly List<string> TestDirs = new List<string> { "RegressionTests", "ModPRegressionTests" };
+        private static readonly List<string> TestDirs = new List<string> { "RegressionTests" };
         //TODO(debug only):
         //private static readonly List<string> TestDirs = new List<string> { "Temp-PtTests" };


#558 Added safety over oauth_callback_confirmed value from AuthInit handler

--- Tweetinvi.Credentials/WebTokenFactory.cs
+++ Tweetinvi.Credentials/WebTokenFactory.cs
@@ -63,8 +63,8 @@
                 {
                     Match tokenInformation = Regex.Match(requestTokenResponse, Resources.OAuthTokenRequestRegex);

-                    bool callbackConfirmed = bool.Parse(tokenInformation.Groups["oauth_callback_confirmed"].Value);
-                    if (!callbackConfirmed)
+                    bool callbackConfirmed;
+                    if (!bool.TryParse(tokenInformation.Groups["oauth_callback_confirmed"].Value, out callbackConfirmed) || !callbackConfirmed)
                     {
                         return null;
                     }


Added constructors to Logger<T>

Added constructors to Logger<T>

--- UniversalUnityHooks.Logging/Logger[T].cs
+++ UniversalUnityHooks.Logging/Logger[T].cs
@@ -5,5 +5,14 @@
     public class Logger<T> : Logger, ILogger<T>
     {
         public override string Id { get; } = typeof(T).FullName;
+
+        public Logger() : base()
+        {
+        }
+
+        public Logger(LoggerSettings settings) : base(settings)
+        {
+        }
+
     }
 }


Fix path

Fix path

--- VulkanRendererApprovals/ApprovalTests.cs
+++ VulkanRendererApprovals/ApprovalTests.cs
@@ -13,7 +13,7 @@
             var directoryName = Path.GetDirectoryName(callerFilePath);
             var process = Process.Start(new ProcessStartInfo
             {
-                FileName = Path.Combine(directoryName, "../x64/Release/VulkanRenderer.exe"),
+                FileName = Path.Combine(directoryName, "..\\VulkanRenderer\\out\\build\\x64-Release\\VulkanRenderer.exe"),
                 WorkingDirectory = directoryName,
                 Arguments = $"--model \"{modelPath}\" --image \"Images\\{callerMemberName}.received.png\""
             });


OICP warning on OICP data/status push

OICP warning on OICP data/status push

--- WWCP_Core/CommonTypes/Acknowledgement.cs
+++ WWCP_Core/CommonTypes/Acknowledgement.cs
@@ -75,7 +75,7 @@
         {

             this.Result       = Result;
-            this.Description  = Description.Trim();
+            this.Description  = Description.IsNotNullOrEmpty() ? Description.Trim() : null;
             this.Warnings     = Warnings.Select(warning => warning.Trim()).
                                          Where (warning => warning.IsNotNullOrEmpty());


ms instead of seconds

ms instead of seconds

--- osu.Framework/Audio/Track/TrackBass.cs
+++ osu.Framework/Audio/Track/TrackBass.cs
@@ -96,14 +96,14 @@
                 // will be -1 in case of an error
                 double seconds = Bass.ChannelBytes2Seconds(activeStream, byteLength = Bass.ChannelGetLength(activeStream));

-                // Bass does not allow seeking to the end of the track, so the last available position is 1 sample before.
-                lastSeekablePosition = Bass.ChannelBytes2Seconds(activeStream, byteLength - 4);
-
                 bool success = seconds >= 0;

                 if (success)
                 {
                     Length = seconds * 1000;
+
+                    // Bass does not allow seeking to the end of the track, so the last available position is 1 sample before.
+                    lastSeekablePosition = Bass.ChannelBytes2Seconds(activeStream, byteLength - 4) * 1000;

                     Bass.ChannelGetAttribute(activeStream, ChannelAttribute.Frequency, out float frequency);
                     initialFrequency = frequency;


Dispose of callback on disposal

Dispose of callback on disposal

--- osu.Framework/Audio/Track/TrackBass.cs
+++ osu.Framework/Audio/Track/TrackBass.cs
@@ -238,6 +238,9 @@
             endCallback?.Dispose();
             endCallback = null;

+            endMixtimeCallback?.Dispose();
+            endMixtimeCallback = null;
+
             base.Dispose(disposing);
         }


Add required type

Add required type

--- osu.Framework/Testing/MenuTestScene.cs
+++ osu.Framework/Testing/MenuTestScene.cs
@@ -21,7 +21,8 @@
         public override IReadOnlyList<Type> RequiredTypes => new[]
         {
             typeof(Menu),
-            typeof(BasicMenu)
+            typeof(BasicMenu),
+            typeof(MenuTestScene)
         };

         [SetUp]


Simplify math by making direction a float

--- osu.Game/Graphics/ParticleExplosion.cs
+++ osu.Game/Graphics/ParticleExplosion.cs
@@ -120,7 +120,7 @@
         private readonly struct ParticlePart
         {
             private readonly double duration;
-            private readonly double direction;
+            private readonly float direction;
             private readonly float distance;

             public ParticlePart(double availableDuration)
@@ -135,7 +135,7 @@
             public Vector2 PositionAtTime(double time)
             {
                 var travelledDistance = distance * progressAtTime(time);
-                return new Vector2(0.5f) + travelledDistance * new Vector2((float)Math.Sin(direction), (float)Math.Cos(direction));
+                return new Vector2(0.5f) + travelledDistance * new Vector2(MathF.Sin(direction), MathF.Cos(direction));
             }

             private float progressAtTime(double time) => (float)Math.Clamp(time / duration, 0, 1);


Fix glow color potentially being set incorrectly when glowing

Co-authored-by: Salman Ahmed <a7afa2b28823372a757eb860a4c7da8b68c3cb44@gmail.com>

--- osu.Game/Graphics/UserInterface/Nub.cs
+++ osu.Game/Graphics/UserInterface/Nub.cs
@@ -149,7 +149,7 @@
                 glowColour = value;

                 var effect = EdgeEffect;
-                effect.Colour = value.Opacity(0);
+                effect.Colour = Glowing ? value : value.Opacity(0);
                 EdgeEffect = effect;
             }
         }


React to DataProtection changes

React to DataProtection changes

--- test/Microsoft.AspNet.Antiforgery.Test/AntiforgeryOptionsSetupTest.cs
+++ test/Microsoft.AspNet.Antiforgery.Test/AntiforgeryOptionsSetupTest.cs
@@ -19,7 +19,7 @@
             // Arrange
             var serviceCollection = new ServiceCollection();
             serviceCollection.AddAntiforgery();
-            serviceCollection.ConfigureDataProtection(o => o.SetApplicationName(applicationId));
+            serviceCollection.AddDataProtection(o => o.SetApplicationName(applicationId));

             var services = serviceCollection.BuildServiceProvider();
             var options = services.GetRequiredService<IOptions<AntiforgeryOptions>>();
@@ -42,7 +42,7 @@
                 o.CookieName = "antiforgery";
             });
             serviceCollection.AddAntiforgery();
-            serviceCollection.ConfigureDataProtection(o => o.SetApplicationName("HelloWorldApp"));
+            serviceCollection.AddDataProtection(o => o.SetApplicationName("HelloWorldApp"));

             var services = serviceCollection.BuildServiceProvider();
             var options = services.GetRequiredService<IOptions<AntiforgeryOptions>>();


(#100) Use try/catch instead of ThrowAsync

It feels like it works better from CLI

--- test/RawRabbit.IntegrationTests/SimpleUse/PublishAndSubscribeTests.cs
+++ test/RawRabbit.IntegrationTests/SimpleUse/PublishAndSubscribeTests.cs
@@ -107,7 +107,7 @@
 			}
 		}

-		[Fact(Skip = "Exception Problems")]
+		[Fact]
 		public async Task Should_Throw_Publish_Confirm_Exception_If_Server_Doesnt_Respond_Within_Time_Limit()
 		{
 			/* Setup */
@@ -117,7 +117,14 @@
 			{
 				/* Test */
 				/* Assert */
-				await Assert.ThrowsAsync<PublishConfirmException>(() => publisher.PublishAsync<BasicMessage>());
+				try
+				{
+					await publisher.PublishAsync<BasicMessage>();
+				}
+				catch (PublishConfirmException)
+				{
+					Assert.True(true);
+				}
 			}
 		}


Simplify pattern matches

Simplify pattern matches

--- src/Features/CSharp/Portable/QuickInfo/CSharpDiagnosticAnalyzerQuickInfoProvider.cs
+++ src/Features/CSharp/Portable/QuickInfo/CSharpDiagnosticAnalyzerQuickInfoProvider.cs
@@ -49,26 +49,21 @@

         private QuickInfoItem? GetQuickinfoForPragmaWarning(Document document, SyntaxToken token)
         {
-            var errorCodeExpression = token.Parent switch
+            var errorCodeNode = token.Parent switch
             {
                 PragmaWarningDirectiveTriviaSyntax directive
                     => token.IsKind(SyntaxKind.EndOfDirectiveToken)
                         ? directive.ErrorCodes.LastOrDefault()
                         : directive.ErrorCodes.FirstOrDefault(),
-                IdentifierNameSyntax { Parent: PragmaWarningDirectiveTriviaSyntax } identifier => identifier,
-                LiteralExpressionSyntax
-                {
-                    Parent: PragmaWarningDirectiveTriviaSyntax,
-                    RawKind: (int)SyntaxKind.NumericLiteralExpression,
-                } literal => literal,
+                { Parent: PragmaWarningDirectiveTriviaSyntax } node => node,
                 _ => null,
             };
-            if (errorCodeExpression == null)
+            if (errorCodeNode == null)
             {
                 return null;
             }

-            var errorCode = errorCodeExpression switch
+            var errorCode = errorCodeNode switch
             {
                 IdentifierNameSyntax identifierName => identifierName.Identifier.ValueText,
                 LiteralExpressionSyntax { RawKind: (int)SyntaxKind.NumericLiteralExpression } literal => literal.Token.ValueText,
@@ -80,7 +75,7 @@
             }

             errorCode = errorCode.FormatPragmaWarningErrorCode();
-            return GetQuickInfoFromSupportedDiagnosticsOfProjectAnalyzers(document, errorCode, errorCodeExpression.Span);
+            return GetQuickInfoFromSupportedDiagnosticsOfProjectAnalyzers(document, errorCode, errorCodeNode.Span);
         }

         private async Task<QuickInfoItem?> GetQuickInfoForSuppressMessageAttributeAsync(
@@ -100,8 +95,8 @@
                         Parent: AttributeSyntax
                         {
                             Name: var attributeName
-                        } _
-                    } _
+                        }
+                    }
                 } argument when
                     attributeName.IsSuppressMessageAttribute() &&
                     (argument.NameColon is null


#11: BasketItems item type issue resolved

--- iyzipay-dotnet-sample/Sample/PaymentAuthSample.cs
+++ iyzipay-dotnet-sample/Sample/PaymentAuthSample.cs
@@ -176,8 +176,8 @@
             basketItem2.Name = "Listeleme aboneliği";
             basketItem2.Category1 = "Abonelik";
             basketItem2.Category2 = "Listeleme";
-            basketItem1.ItemType = BasketItemType.VIRTUAL.ToString();
-            basketItem1.Price = "0.5";
+            basketItem2.ItemType = BasketItemType.VIRTUAL.ToString();
+            basketItem2.Price = "0.5";
             basketItems.Add(basketItem2);

             BasketItem basketItem3 = new BasketItem();
@@ -185,8 +185,8 @@
             basketItem3.Name = "Servis aboneliği";
             basketItem3.Category1 = "Abonelik";
             basketItem3.Category2 = "Servis";
-            basketItem1.ItemType = BasketItemType.VIRTUAL.ToString();
-            basketItem1.Price = "0.2";
+            basketItem3.ItemType = BasketItemType.VIRTUAL.ToString();
+            basketItem3.Price = "0.2";
             basketItems.Add(basketItem3);
             request.BasketItems = basketItems;


Fix: InvalidOperationException in OutputPatterns list indexing due to multi-thread access

--- plugins/OsuMemoryEventSource/MemoryDataProcessor.cs
+++ plugins/OsuMemoryEventSource/MemoryDataProcessor.cs
@@ -8,6 +8,7 @@
 using StreamCompanionTypes.Enums;
 using StreamCompanionTypes.Interfaces;
 using System;
+using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Threading;

@@ -21,7 +22,7 @@
         RawMemoryDataProcessor _rawData = new RawMemoryDataProcessor();
         private List<IHighFrequencyDataHandler> _highFrequencyDataHandler;

-        private List<OutputPattern> OutputPatterns = new List<OutputPattern>();
+        private BlockingCollection<OutputPattern> OutputPatterns = new BlockingCollection<OutputPattern>();
         private ISettingsHandler _settings;

         private Tokens.TokenSetter _tokenSetter => OsuMemoryEventSourceBase.TokenSetter;
@@ -106,7 +107,7 @@
                 if ((map.Action & OsuStatus.ResultsScreen) != 0)
                     return;

-                OutputPatterns.Clear();
+                while (OutputPatterns.TryTake(out _)) { }

                 if (map.FoundBeatmaps &&
                     map.BeatmapsFound[0].IsValidBeatmap(_settings, out var mapLocation) &&


Update StringExtensions.cs

Update StringExtensions.cs

--- extensions/StringExtensions.cs
+++ extensions/StringExtensions.cs
@@ -149,47 +149,4 @@
         return Cryptos.HashMD5(val);
     }

-    public static string ToJSON(this string val, object obj) {
-        return JsonConvert.SerializeObject(obj).FilterJSON();
-    }
-
-    public static T FromJSON<T>(this string val) {
-        if (!string.IsNullOrEmpty(val)) {
-            try {
-                return JsonConvert.DeserializeObject<T>(val.FilterJSON());
-            }
-            catch (Exception e) {
-                Web.Log("FromJSON:e:", e);
-                return default(T);
-            }
-        }
-        else {
-            return default(T);
-        }
-    }
-    public static string FilterJSON(this string val) {
-        if (string.IsNullOrEmpty(val))
-            return val;
-        return val.Replace("\\\"", "\"").TrimStart('"').TrimEnd('"');
-    }
-
-    public static object ConvertJSON(this string val) {
-        if (val.StartsWith("{") || val.StartsWith("[")) {
-            try {
-
-                if (val.TrimStart().StartsWith("{")) {
-                    return val.FilterJSON().FromJSON<Dictionary<string, object>>();
-                }
-                else if (val.TrimStart().StartsWith("[")) {
-                    return val.FilterJSON().FromJSON<List<object>>();
-                }
-
-            }
-            catch (Exception e) {
-                Web.Log("ERROR parsing attribute:", e);
-            }
-        }
-
-        return val;
-    }
 }


Map only properties defined in TPoco in mongodb

--- core/TrackableData-MongoDB/TrackablePocoMongoDbMapper.cs
+++ core/TrackableData-MongoDB/TrackablePocoMongoDbMapper.cs
@@ -45,6 +45,17 @@
             // ignore extra elements for smooth schema change
             classMap.SetIgnoreExtraElements(true);

+            // unmap all members which T doesn't have
+            var propertyNames = new HashSet<string>(typeof(T).GetProperties().Select(p => p.Name));
+            var deletingMembers = classMap.DeclaredMemberMaps.Where(m =>
+            {
+                var propertyInfo = m.MemberInfo as PropertyInfo;
+                return propertyInfo == null ||
+                       propertyNames.Contains(propertyInfo.Name) == false;
+            }).ToList();
+            foreach (var m in deletingMembers)
+                classMap.UnmapMember(m.MemberInfo);
+
             // set default ignore for saving spaces
             foreach (var memberMap in classMap.DeclaredMemberMaps)
             {
@@ -53,9 +64,6 @@
                 memberMap.SetDefaultValue(defaultValue);
                 memberMap.SetIgnoreIfDefault(true);
             }
-
-            // property "Tracker" is not data!
-            classMap.UnmapMember(_trackableType.GetProperty("Tracker"));

             // tell customized id to mongo-db
             var identityColumn = typeof(T).GetProperties().FirstOrDefault(


Adds ignore for tests

Adds ignore for tests

Signed-off-by: matt raffel <a1c361500f8f28827fe56351c610aa9d1ba26ce8@evernym.com>

--- wrappers/dotnet/indy-sdk-dotnet-test/LedgerTests/GetTxnRequestTest.cs
+++ wrappers/dotnet/indy-sdk-dotnet-test/LedgerTests/GetTxnRequestTest.cs
@@ -7,9 +7,11 @@
 namespace Hyperledger.Indy.Test.LedgerTests
 {
     [TestClass]
+    [Ignore]
     public class GetTxnRequestTest : IndyIntegrationTestWithPoolAndSingleWallet
     {
         [TestMethod]
+        [Ignore]
         public async Task TestBuildGetTxnRequestWorks()
         {
             var data = 1;
@@ -26,6 +28,7 @@
         }

         [TestMethod] //This test fails here and in the Java version.
+        [Ignore]
         public async Task TestGetTxnRequestWorks()
         {
             var didResult = await Did.CreateAndStoreMyDidAsync(wallet, TRUSTEE_IDENTITY_JSON);
@@ -49,7 +52,8 @@
             Assert.IsTrue(JToken.DeepEquals(expectedSchemaData, returnedSchemaData));
         }

-        [TestMethod]
+        [TestMethod]
+        [Ignore]
         public async Task TestGetTxnRequestWorksForInvalidSeqNo()
         {
             var didResult = await Did.CreateAndStoreMyDidAsync(wallet, TRUSTEE_IDENTITY_JSON);


Renaming localized asset implemented.

Renaming localized asset implemented.

--- Assets/GameToolkit/Localization/Scripts/Editor/LocalizationTreeView.cs
+++ Assets/GameToolkit/Localization/Scripts/Editor/LocalizationTreeView.cs
@@ -146,6 +146,41 @@
             }
         }

+        protected override bool CanRename(TreeViewItem item)
+		{
+            if (item is AssetTreeViewItem)
+            {
+                // Only allow rename if we can show the rename overlay with a certain width (label might be clipped
+                // by other columns).
+                var renameRect = GetRenameRect(treeViewRect, 0, item);
+                return renameRect.width > 30;
+            }
+			return false;
+		}
+
+        protected override void RenameEnded(RenameEndedArgs args)
+		{
+			// Set the backend name and reload the tree to reflect the new model
+			if (args.acceptedRename)
+			{
+                var item = this.FindItem(args.itemID, this.rootItem) as AssetTreeViewItem;
+                if (item != null)
+                {
+                    var assetPath =  AssetDatabase.GetAssetPath(item.LocalizedAsset.GetInstanceID());
+                    AssetDatabase.RenameAsset(assetPath, args.newName);
+                    AssetDatabase.SaveAssets();
+                    Reload();
+                }
+			}
+		}
+
+		protected override Rect GetRenameRect (Rect rowRect, int row, TreeViewItem item)
+		{
+			var cellRect = GetCellRectForTreeFoldouts(rowRect);
+			CenterRectUsingSingleLineHeight(ref cellRect);
+			return base.GetRenameRect(cellRect, row, item);
+		}
+
         public static MultiColumnHeaderState CreateDefaultMultiColumnHeaderState(float treeViewWidth)
         {
             var typeColumnWidth = 30;


Update path for animation assets

Update path for animation assets

--- Assets/MRTK/SDK/Features/UX/Scripts/StateVisualizer/StateVisualizer.cs
+++ Assets/MRTK/SDK/Features/UX/Scripts/StateVisualizer/StateVisualizer.cs
@@ -233,9 +233,9 @@
         /// Creates and returns the path to a directory for the animation controller and animation clips assets.
         /// </summary>
         /// <returns>Returns path to the animation controller and animation clip assets</returns>
-        private string CreateAnimationDirectoryPath(string path = "Assets/MixedRealityToolkit.Generated/")
-        {
-            animationDirectoryPath = Path.Combine(path, "MRTK_Animations");
+        private string CreateAnimationDirectoryPath()
+        {
+            animationDirectoryPath = Path.Combine("Assets", "MixedRealityToolkit.Generated", "MRTK_Animations");

             // If the animation directory path does not exist, then create a new directory
             if (!Directory.Exists(animationDirectoryPath))


removed empty returns tag

removed empty returns tag

--- Assets/MRTK/Tests/PlayModeTests/Experimental/ObjectManipulatorTests.cs
+++ Assets/MRTK/Tests/PlayModeTests/Experimental/ObjectManipulatorTests.cs
@@ -1257,7 +1257,6 @@
         /// Tests the Cursor context object manipulator - makes sure cursor context is shown when
         /// an object is manipulated by object manipulator
         /// </summary>
-        /// <returns></returns>
         [UnityTest]
         public IEnumerator CursorContextObjectManipulatorMove()
         {


Absolute links templated by default

Absolute links templated by default


Fix airblocked space tiles venting air Fixes part of #2780

--- Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs
+++ Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs
@@ -218,13 +218,15 @@
                     Tiles[indices] = tile;
                 }

-                if (IsSpace(indices))
+                var isAirBlocked = IsAirBlocked(indices);
+
+                if (IsSpace(indices) && !isAirBlocked)
                 {
                     tile.Air = new GasMixture(GetVolumeForCells(1), AtmosphereSystem);
                     tile.Air.MarkImmutable();
                     Tiles[indices] = tile;

-                } else if (IsAirBlocked(indices))
+                } else if (isAirBlocked)
                 {
                     tile.Air = null;
                 }


Added test

Added test

--- test/shience.test/ScienceTests.cs
+++ test/shience.test/ScienceTests.cs
@@ -228,6 +228,14 @@
                 var science = Shience.New<bool>("TestThrowsInvalidOperationExceptionIfCalledMultipleTimes");

                 Assert.Throws<InvalidOperationException>(() => science.Test(() => true, () => true).Test(() => true, () => true).Execute());
+            }
+
+            [Fact]
+            public void ExecuteThrowsMismatchExceptionIfRaiseOnMismatchCalled()
+            {
+                var science = Shience.New<bool>("ExecuteThrowsMismatchExceptionIfRaiseOnMismatchCalled");
+
+                Assert.Throws<MismatchException>(() => science.Test(() => true, () => false).RaiseOnMismatch().Execute());
             }
         }


New Packets :D

New Packets :D

--- fCraft/Network/PacketWriter.cs
+++ fCraft/Network/PacketWriter.cs
@@ -222,6 +222,53 @@
             ToNetOrder((short)distance, packet.Data, 1);
             return packet;
         }
+
+        /// <summary> Be sure to make sure the block is not undefined! If undefined, change to (byte)0 </summary>
+        public static Packet MakeHoldThis(byte BlockToHold, bool preventChange)
+        {
+            Packet packet = new Packet(OpCode.HoldThis);
+            packet.Data[1] = BlockToHold;
+            packet.Data[2] = preventChange ? (byte)1 : (byte)0;
+            return packet;
+        }
+
+        /// <param name="Label"> Name of hotkey shortcut </param>
+        /// <param name="Action"> Action needing to be completed with hotkey use </param>
+        /// <param name="KeyCode"> Keycode, refer here: http://minecraft.gamepedia.com/Key_Codes </param>
+        /// <param name="KeyMods"> 0 - None, 1 - Ctrl, 2 - Shift, 3 - Alt </param>
+        public static Packet MakeSetTextHotKey(string Label, string Action, int KeyCode, byte KeyMods)
+        {
+            Packet packet = new Packet(OpCode.SetTextHotKey);
+            Encoding.ASCII.GetBytes(Label.PadRight(64), 0, 64, packet.Data, 1);
+            Encoding.ASCII.GetBytes(Action.PadRight(64), 0, 64, packet.Data, 65);
+            ToNetOrder(KeyCode, packet.Data, 129);
+            packet.Data[133] = (byte)KeyMods;
+            return packet;
+        }
+
+        /// <summary> Packet used to change players names/group in TabList as well as their autocomplete name. Color code friendly. </summary>
+        /// <param name="NameID"> Name ID number from 0-255 </param>
+        /// <param name="PlayerName"> Name used for autocompletion (can be null) </param>
+        /// <param name="ListName"> Name displayed in Tab List </param>
+        /// <param name="GroupName"> Name of group in Tab List </param>
+        /// <param name="GroupRank"> Rank of group in Tab list (0 is highest) </param>
+        public static Packet MakeExtAddPlayerName(short NameID, [CanBeNull]string PlayerName, string ListName, string GroupName, byte GroupRank)
+        {
+            Packet packet = new Packet(OpCode.ExtAddPlayerName); //0
+            ToNetOrder((short)NameID, packet.Data, 1); //1
+            Encoding.ASCII.GetBytes(PlayerName.PadRight(64), 0, 64, packet.Data, 3);  //2
+            Encoding.ASCII.GetBytes(ListName.PadRight(64), 0, 64, packet.Data, 67); //67
+            Encoding.ASCII.GetBytes(GroupName.PadRight(64), 0, 64, packet.Data, 131); //131
+            packet.Data[195] = (byte)GroupRank;
+            return packet;
+        }
+
+        public static Packet MakeExtRemovePlayerName(short NameID)
+        {
+            Packet packet = new Packet(OpCode.ExtRemovePlayerName);
+            ToNetOrder((short)NameID, packet.Data, 1);
+            return packet;
+        }

         public static Packet MakeExtAddEntity(byte EntityID, string entityName, string skinName)
         {
@@ -277,6 +324,24 @@
             ToNetOrder((short)sideLevel, packet.Data, 67);
             return packet;
         }
+
+        //NOT YET SUPPORTED
+        /// <param name="weatherType"> 0 - Clear, 1 - Rain, 2 - Snow </param>
+        public static Packet MakeEnvWeatherAppearance(byte weatherType)
+        {
+            Packet packet = new Packet(OpCode.EnvSetWeatherAppearance);
+            packet.Data[1] = (byte)weatherType;
+            return packet;
+        }
+
+        public static Packet MakeSetBlockPermissions(byte BlockType, bool AllowPlacement, bool AllowDeletion)
+        {
+            Packet packet = new Packet(OpCode.SetBlockPermissions);
+            ToNetOrder(BlockType, packet.Data, 1);
+            ToNetOrder(AllowPlacement ? (byte)1 : (byte)0, packet.Data, 2);
+            ToNetOrder(AllowDeletion ? (byte)1 : (byte)0, packet.Data, 3);
+            return packet;
+        }

         #endregion


GitHubSync update

GitHubSync update

--- deployment/cake/generic-variables.cake
+++ deployment/cake/generic-variables.cake
@@ -343,8 +343,6 @@
         ConfigurationName = buildContext.BuildServer.GetVariable("ConfigurationName", "Release", showValue: true)
     };

-    data.RootDirectory = System.IO.Path.GetFullPath(".");
-    data.OutputRootDirectory = System.IO.Path.GetFullPath(buildContext.BuildServer.GetVariable("OutputRootDirectory", string.Format("./output/{0}", data.Solution.ConfigurationName), showValue: true));
     data.IsCiBuild = buildContext.BuildServer.GetVariableAsBool("IsCiBuild", false, showValue: true);
     data.IsAlphaBuild = buildContext.BuildServer.GetVariableAsBool("IsAlphaBuild", false, showValue: true);
     data.IsBetaBuild = buildContext.BuildServer.GetVariableAsBool("IsBetaBuild", false, showValue: true);
@@ -360,6 +358,10 @@
         data.Solution.ConfigurationName = "Debug";
     }

+    // Important: do *after* initializing the configuration name
+    data.RootDirectory = System.IO.Path.GetFullPath(".");
+    data.OutputRootDirectory = System.IO.Path.GetFullPath(buildContext.BuildServer.GetVariable("OutputRootDirectory", string.Format("./output/{0}", data.Solution.ConfigurationName), showValue: true));
+
     data.SourceLink = new SourceLinkContext(data)
     {
         IsDisabled = buildContext.BuildServer.GetVariableAsBool("SourceLinkDisabled", false, showValue: true)


GitHubSync update

GitHubSync update

--- deployment/cake/lib-octopusdeploy.cake
+++ deployment/cake/lib-octopusdeploy.cake
@@ -1,4 +1,4 @@
-#tool "nuget:?package=OctopusTools&version=7.4.3276"
+#tool "nuget:?package=OctopusTools&version=7.4.3287"

 public class OctopusDeployIntegration : IntegrationBase
 {


fix permission issue

fix permission issue


I fell I am getting closer with the Lucene stuff


Fix the issue in convering properties with jdbc implementation

--- csharp/Adapter/Microsoft.Spark.CSharp/Proxy/Ipc/DataFrameWriterIpcProxy.cs
+++ csharp/Adapter/Microsoft.Spark.CSharp/Proxy/Ipc/DataFrameWriterIpcProxy.cs
@@ -61,8 +61,18 @@

         public void Jdbc(string url, string table, Dictionary<string, string> properties)
         {
+            var propertiesJvmReference = SparkCLRIpcProxy.JvmBridge.CallConstructor("java.util.Properties", new object[] { });
+            if (properties != null)
+            {
+                foreach (var property in properties)
+                {
+                    SparkCLRIpcProxy.JvmBridge.CallNonStaticJavaMethod(propertiesJvmReference, "setProperty",
+                        new object[] { property.Key, property.Value });
+                }
+            }
+
             SparkCLRIpcProxy.JvmBridge.CallNonStaticJavaMethod(
-                jvmDataFrameWriterReference, "jdbc", new object[] { url, table, properties });
+                jvmDataFrameWriterReference, "jdbc", new object[] { url, table, propertiesJvmReference });
         }
     }
 }


Updated assets version

Updated assets version

--- web/en-US/_SiteLayout.cshtml
+++ web/en-US/_SiteLayout.cshtml
@@ -7,7 +7,7 @@
     var abbrLangCode = System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
     var culture = System.Globalization.CultureInfo.CurrentUICulture.Name;
     // Updated assets version, to avoid problems with cache of css & js assets
-    LcAssets.AssetsVersion = "201405187";
+    LcAssets.AssetsVersion = "201405188";

     // Sniff IE browsers or based on its same engine (Trident).
     var isIE = Request.UserAgent != null ? Request.UserAgent.Contains("MSIE") || Request.UserAgent.Contains("Trident") : false;


hide cursors

hide cursors

--- Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs
+++ Assets/MixedRealityToolkit-SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs
@@ -497,11 +497,13 @@
         /// <inheritdoc />
         public virtual void OnTeleportRequest(TeleportEventData eventData)
         {
+            // Only turn off pointers that aren't making the request.
             if (eventData.Pointer.PointerId != PointerId)
             {
                 Debug.Log("Teleport request raised.");
-                // Only turn off pointers that aren't making the request.
+
                 IsTeleportRequestActive = true;
+                BaseCursor?.SetVisibility(false);
             }
         }

@@ -515,6 +517,7 @@

             // Turn off all pointers while we teleport.
             IsTeleportRequestActive = true;
+            BaseCursor?.SetVisibility(false);
         }

         /// <inheritdoc />
@@ -527,6 +530,7 @@

             // Turn all our pointers back on.
             IsTeleportRequestActive = false;
+            BaseCursor?.SetVisibility(true);
         }

         /// <inheritdoc />
@@ -539,6 +543,7 @@

             // Turn all our pointers back on.
             IsTeleportRequestActive = false;
+            BaseCursor?.SetVisibility(true);
         }

         #endregion IMixedRealityTeleportHandler Implementation


Going back and making the vc and inventory events stop refreshing the entire inventory and vc when possible.

Summary: Going back and making the vc and inventory events stop refreshing the entire inventory and vc when possible.

Test Plan: Manual

Maniphest Tasks: T254

Differential Revision: https://phab.playfabdev.com/D442

--- PlayFabCombinedTestingSample/Assets/PlayFabSDK/Examples/GUI/Internal/PfExampleGui.cs
+++ PlayFabCombinedTestingSample/Assets/PlayFabSDK/Examples/GUI/Internal/PfExampleGui.cs
@@ -133,6 +133,8 @@
             TextField(true, rowIndex, 1, ref eachValue);
             canParse = int.TryParse(eachValue, out temp);
             Button(canParse, rowIndex, 2, "Add", null, updateAction, newKey, temp);
+            if (canParse)
+                newValue = temp;
             rowIndex++;
         }

@@ -212,6 +214,8 @@
                 Button(canParse, rowIndex, 2, "Add", null, updateAction, playFabId, characterId, newKey, temp);
             else
                 Button(canParse, rowIndex, 2, "Add", null, updateAction, playFabId, newKey, temp);
+            if (canParse)
+                newValue = temp;
             rowIndex++;
         }


Use correct header for XssProtectionReport

Fixes #30


Delete MonoTouch,Version=v1.0.AssemblyAttribute.cs


Fixes #413

Fixes #413


Partial fix for register key vault

Partial fix for register key vault


Cannot register new reservation

Cannot register new reservation


File Scoped Namespaces

File Scoped Namespaces

--- src/Features/Core/Portable/ExternalAccess/VSTypeScript/VSTypeScriptTaskListService.cs
+++ src/Features/Core/Portable/ExternalAccess/VSTypeScript/VSTypeScriptTaskListService.cs
@@ -12,42 +12,41 @@
 using Microsoft.CodeAnalysis.TaskList;
 using Microsoft.CodeAnalysis.Text;

-namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript
+namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript;
+
+[ExportLanguageService(typeof(ITaskListService), InternalLanguageNames.TypeScript), Shared]
+internal sealed class VSTypeScriptTaskListService : ITaskListService
 {
-    [ExportLanguageService(typeof(ITaskListService), InternalLanguageNames.TypeScript), Shared]
-    internal sealed class VSTypeScriptTaskListService : ITaskListService
+    private readonly IVSTypeScriptTaskListServiceImplementation? _impl;
+
+    [ImportingConstructor]
+    [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
+    public VSTypeScriptTaskListService([Import(AllowDefault = true)] IVSTypeScriptTaskListServiceImplementation impl)
     {
-        private readonly IVSTypeScriptTaskListServiceImplementation? _impl;
+        _impl = impl;
+    }

-        [ImportingConstructor]
-        [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
-        public VSTypeScriptTaskListService([Import(AllowDefault = true)] IVSTypeScriptTaskListServiceImplementation impl)
+    public async Task<ImmutableArray<TaskListItem>> GetTaskListItemsAsync(Document document, ImmutableArray<TaskListItemDescriptor> descriptors, CancellationToken cancellationToken)
+    {
+        if (_impl is null)
+            return ImmutableArray<TaskListItem>.Empty;
+
+        var result = await _impl.GetTaskListItemsAsync(
+            document,
+            descriptors.SelectAsArray(d => new VSTypeScriptTaskListItemDescriptorWrapper(d)),
+            cancellationToken).ConfigureAwait(false);
+        if (result.Length == 0)
+            return ImmutableArray<TaskListItem>.Empty;
+
+        var text = await document.GetTextAsync(cancellationToken).ConfigureAwait(false);
+
+        return result.SelectAsArray(d =>
         {
-            _impl = impl;
-        }
+            var textSpan = new TextSpan(Math.Min(text.Length, Math.Max(0, d.Position)), 0);
+            var location = Location.Create(document.FilePath!, textSpan, text.Lines.GetLinePositionSpan(textSpan));
+            var span = location.GetLineSpan();

-        public async Task<ImmutableArray<TaskListItem>> GetTaskListItemsAsync(Document document, ImmutableArray<TaskListItemDescriptor> descriptors, CancellationToken cancellationToken)
-        {
-            if (_impl is null)
-                return ImmutableArray<TaskListItem>.Empty;
-
-            var result = await _impl.GetTaskListItemsAsync(
-                document,
-                descriptors.SelectAsArray(d => new VSTypeScriptTaskListItemDescriptorWrapper(d)),
-                cancellationToken).ConfigureAwait(false);
-            if (result.Length == 0)
-                return ImmutableArray<TaskListItem>.Empty;
-
-            var text = await document.GetTextAsync(cancellationToken).ConfigureAwait(false);
-
-            return result.SelectAsArray(d =>
-            {
-                var textSpan = new TextSpan(Math.Min(text.Length, Math.Max(0, d.Position)), 0);
-                var location = Location.Create(document.FilePath!, textSpan, text.Lines.GetLinePositionSpan(textSpan));
-                var span = location.GetLineSpan();
-
-                return new TaskListItem(d.Descriptor.Descriptor.Priority, d.Message, document.Id, span, span);
-            });
-        }
+            return new TaskListItem(d.Descriptor.Descriptor.Priority, d.Message, document.Id, span, span);
+        });
     }
 }


Added Money to LivingEntity

Added Money to LivingEntity

--- Navier-Boats/Navier-Boats/Navier-Boats/Engine/Entities/LivingEntity.cs
+++ Navier-Boats/Navier-Boats/Navier-Boats/Engine/Entities/LivingEntity.cs
@@ -23,6 +23,8 @@
         public Texture2D HeadTexture { get { return headSprite.Texture; } set { headSprite.Texture = value; } }

         public double Health { get { return health; } }
+
+        public double Money { get; set; }

         public Inventory.Inventory Items
         {


make grid baked textures override the ones on appearance. Due to bug  somewhere they are always bad at ValidateBakedTextures entry. ( even if  they where good and on assets cache we whould need to generate the  cacheID hash )

--- OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -494,7 +494,9 @@

             wearableCache = WearableCacheItem.GetDefaultCacheItem();

-             int hits = 0;
+            int hits = 0;
+            bool gotbacked = false;
+
             // Cache wearable data for teleport.
             // Only makes sense if there's a bake module and a cache module
             if (bakedModule != null && cache != null)
@@ -525,8 +527,10 @@
                             bakedModuleCache[i].TextureAsset.Temporary = true;
                             bakedModuleCache[i].TextureAsset.Local = true;
                             cache.Store(bakedModuleCache[i].TextureAsset);
+
                         }
                     }
+                    gotbacked = true;
                 }
             }

@@ -536,52 +540,73 @@
                 int idx = AvatarAppearance.BAKE_INDICES[i];
                 Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx];

-                // No face, so lets check our cache
-                if (face == null || face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
-                {
-                    sp.Appearance.Texture.FaceTextures[idx] = sp.Appearance.Texture.CreateFace((uint)idx);
-                    if (wearableCache[idx].TextureID != UUID.Zero)
-                    {
-                        sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
-                        face = sp.Appearance.Texture.FaceTextures[idx];
-                        // let run to end of loop to check cache
-                    }
-                    else
-                    {
-                        sp.Appearance.Texture.FaceTextures[idx].TextureID = AppearanceManager.DEFAULT_AVATAR_TEXTURE;
-                        face = sp.Appearance.Texture.FaceTextures[idx];
-// lets try not invalidating the cache entry
-//                        wearableCache[idx].CacheId = UUID.Zero;
-//                        wearableCache[idx].TextureAsset = null;
+                // on tp viewer assumes servers did the cache work
+                // and tp propagation of baked textures is broken somewhere
+                // so make grid cache be mandatory
+                if (gotbacked)
+                {
+                    m_log.Debug("[ValidateBakedCache] bakedModule cache override");
+
+                    sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
+                    face = sp.Appearance.Texture.FaceTextures[idx];
+
+                    // this should be removed
+                    if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
+                    {
+                        defonly = false; // found a non-default texture reference
+                    }
+
+                    continue;
+                }
+                else
+                {
+                    // No face, so lets check our cache
+                    if (face == null || face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
+                    {
+                        sp.Appearance.Texture.FaceTextures[idx] = sp.Appearance.Texture.CreateFace((uint)idx);
+                        if (wearableCache[idx].TextureID != UUID.Zero)
+                        {
+                            sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
+                            face = sp.Appearance.Texture.FaceTextures[idx];
+                            // let run to end of loop to check cache
+                        }
+                        else
+                        {
+                            sp.Appearance.Texture.FaceTextures[idx].TextureID = AppearanceManager.DEFAULT_AVATAR_TEXTURE;
+                            face = sp.Appearance.Texture.FaceTextures[idx];
+                            // lets try not invalidating the cache entry
+                            //                        wearableCache[idx].CacheId = UUID.Zero;
+                            //                        wearableCache[idx].TextureAsset = null;
+                            continue;
+                        }
+                    }
+
+                    if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
+                    {
+                        defonly = false; // found a non-default texture reference
                         continue;
                     }
-                }
-
-                if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
-                {
-                    defonly = false; // found a non-default texture reference
-                    continue;
-                }
-
-                if(wearableCache[idx].TextureID != face.TextureID)
-                {
-                    wearableCache[idx].CacheId = UUID.Zero;
-                    wearableCache[idx].TextureID = UUID.Zero;
-                    wearableCache[idx].TextureAsset = null;
-                    continue;
-                }
-
-                wearableCache[idx].TextureAsset = null;
-                if (cache != null)
-                {
-                    wearableCache[idx].TextureAsset = m_scene.AssetService.Get(face.TextureID.ToString());
-                    if (wearableCache[idx].TextureAsset == null)
+
+                    if (wearableCache[idx].TextureID != face.TextureID)
                     {
                         wearableCache[idx].CacheId = UUID.Zero;
                         wearableCache[idx].TextureID = UUID.Zero;
-                    }
-                    else
-                        hits++;
+                        wearableCache[idx].TextureAsset = null;
+                        continue;
+                    }
+
+                    wearableCache[idx].TextureAsset = null;
+                    if (cache != null)
+                    {
+                        wearableCache[idx].TextureAsset = m_scene.AssetService.Get(face.TextureID.ToString());
+                        if (wearableCache[idx].TextureAsset == null)
+                        {
+                            wearableCache[idx].CacheId = UUID.Zero;
+                            wearableCache[idx].TextureID = UUID.Zero;
+                        }
+                        else
+                            hits++;
+                    }
                 }
             }


lock set appearence during ValidateBakedTextureCache  there seems to be a  overlap in same cases

--- OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -487,131 +487,135 @@
         public bool ValidateBakedTextureCache(IScenePresence sp)
         {
             bool defonly = true; // are we only using default textures
-            IAssetService cache = m_scene.AssetService;
-            IBakedTextureModule bakedModule = m_scene.RequestModuleInterface<IBakedTextureModule>();
-            WearableCacheItem[] wearableCache = null;
-            WearableCacheItem[] bakedModuleCache = null;
-
-            wearableCache = WearableCacheItem.GetDefaultCacheItem();
-
-            int hits = 0;
-            bool gotbacked = false;
-
-            // Cache wearable data for teleport.
-            // Only makes sense if there's a bake module and a cache module
-            if (bakedModule != null && cache != null)
-            {
-                m_log.Debug("[ValidateBakedCache] calling bakedModule");
-                try
-                {
-                    bakedModuleCache = bakedModule.Get(sp.UUID);
-                }
-                catch (Exception)
-                {
-                    bakedModuleCache = null;
-                }
-
-                if (bakedModuleCache != null)
-                {
-                    m_log.Debug("[ValidateBakedCache] got bakedModule cache " + bakedModuleCache.Length);
-
-                    for (int i = 0; i < bakedModuleCache.Length; i++)
-                    {
-                        int j = (int)bakedModuleCache[i].TextureIndex;
-
-                        if (bakedModuleCache[i].TextureAsset != null)
-                        {
-                            wearableCache[j].TextureID = bakedModuleCache[i].TextureID;
-                            wearableCache[j].CacheId = bakedModuleCache[i].CacheId;
-                            wearableCache[j].TextureAsset = bakedModuleCache[i].TextureAsset;
-                            bakedModuleCache[i].TextureAsset.Temporary = true;
-                            bakedModuleCache[i].TextureAsset.Local = true;
-                            cache.Store(bakedModuleCache[i].TextureAsset);
-
-                        }
-                    }
-                    gotbacked = true;
-                }
-            }
-
-            // Process the baked textures
-            for (int i = 0; i < AvatarAppearance.BAKE_INDICES.Length; i++)
-            {
-                int idx = AvatarAppearance.BAKE_INDICES[i];
-                Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx];
-
-                // on tp viewer assumes servers did the cache work
-                // and tp propagation of baked textures is broken somewhere
-                // so make grid cache be mandatory
-                if (gotbacked)
-                {
-//                    m_log.Debug("[ValidateBakedCache] bakedModule cache override");
-                    if(sp.Appearance.Texture.FaceTextures[idx] == null)
-                        sp.Appearance.Texture.FaceTextures[idx] = sp.Appearance.Texture.CreateFace((uint)idx);
-                    sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
-                    face = sp.Appearance.Texture.FaceTextures[idx];
-
-                    // this should be removed
-                    if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
-                    {
-                        defonly = false; // found a non-default texture reference
-                    }
-
-                    continue;
-                }
-                else
-                {
-                    // No face, so lets check our cache
-                    if (face == null || face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
-                    {
-                        sp.Appearance.Texture.FaceTextures[idx] = sp.Appearance.Texture.CreateFace((uint)idx);
-                        if (wearableCache[idx].TextureID != UUID.Zero)
-                        {
-                            sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
-                            face = sp.Appearance.Texture.FaceTextures[idx];
-                            // let run to end of loop to check cache
-                        }
-                        else
-                        {
-                            sp.Appearance.Texture.FaceTextures[idx].TextureID = AppearanceManager.DEFAULT_AVATAR_TEXTURE;
-                            face = sp.Appearance.Texture.FaceTextures[idx];
-                            // lets try not invalidating the cache entry
-                            //                        wearableCache[idx].CacheId = UUID.Zero;
-                            //                        wearableCache[idx].TextureAsset = null;
+
+            lock (m_setAppearanceLock)
+            {
+                IAssetService cache = m_scene.AssetService;
+                IBakedTextureModule bakedModule = m_scene.RequestModuleInterface<IBakedTextureModule>();
+                WearableCacheItem[] wearableCache = null;
+                WearableCacheItem[] bakedModuleCache = null;
+
+                wearableCache = WearableCacheItem.GetDefaultCacheItem();
+
+                int hits = 0;
+                bool gotbacked = false;
+
+                // Cache wearable data for teleport.
+                // Only makes sense if there's a bake module and a cache module
+                if (bakedModule != null && cache != null)
+                {
+                    m_log.Debug("[ValidateBakedCache] calling bakedModule");
+                    try
+                    {
+                        bakedModuleCache = bakedModule.Get(sp.UUID);
+                    }
+                    catch (Exception)
+                    {
+                        bakedModuleCache = null;
+                    }
+
+                    if (bakedModuleCache != null)
+                    {
+                        m_log.Debug("[ValidateBakedCache] got bakedModule cache " + bakedModuleCache.Length);
+
+                        for (int i = 0; i < bakedModuleCache.Length; i++)
+                        {
+                            int j = (int)bakedModuleCache[i].TextureIndex;
+
+                            if (bakedModuleCache[i].TextureAsset != null)
+                            {
+                                wearableCache[j].TextureID = bakedModuleCache[i].TextureID;
+                                wearableCache[j].CacheId = bakedModuleCache[i].CacheId;
+                                wearableCache[j].TextureAsset = bakedModuleCache[i].TextureAsset;
+                                bakedModuleCache[i].TextureAsset.Temporary = true;
+                                bakedModuleCache[i].TextureAsset.Local = true;
+                                cache.Store(bakedModuleCache[i].TextureAsset);
+
+                            }
+                        }
+                        gotbacked = true;
+                    }
+                }
+
+                // Process the baked textures
+                for (int i = 0; i < AvatarAppearance.BAKE_INDICES.Length; i++)
+                {
+                    int idx = AvatarAppearance.BAKE_INDICES[i];
+                    Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx];
+
+                    // on tp viewer assumes servers did the cache work
+                    // and tp propagation of baked textures is broken somewhere
+                    // so make grid cache be mandatory
+                    if (gotbacked)
+                    {
+                        //                    m_log.Debug("[ValidateBakedCache] bakedModule cache override");
+                        if (sp.Appearance.Texture.FaceTextures[idx] == null)
+                            sp.Appearance.Texture.FaceTextures[idx] = sp.Appearance.Texture.CreateFace((uint)idx);
+                        sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
+                        face = sp.Appearance.Texture.FaceTextures[idx];
+
+                        // this should be removed
+                        if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
+                        {
+                            defonly = false; // found a non-default texture reference
+                        }
+
+                        continue;
+                    }
+                    else
+                    {
+                        // No face, so lets check our cache
+                        if (face == null || face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
+                        {
+                            sp.Appearance.Texture.FaceTextures[idx] = sp.Appearance.Texture.CreateFace((uint)idx);
+                            if (wearableCache[idx].TextureID != UUID.Zero)
+                            {
+                                sp.Appearance.Texture.FaceTextures[idx].TextureID = wearableCache[idx].TextureID;
+                                face = sp.Appearance.Texture.FaceTextures[idx];
+                                // let run to end of loop to check cache
+                            }
+                            else
+                            {
+                                sp.Appearance.Texture.FaceTextures[idx].TextureID = AppearanceManager.DEFAULT_AVATAR_TEXTURE;
+                                face = sp.Appearance.Texture.FaceTextures[idx];
+                                // lets try not invalidating the cache entry
+                                //                        wearableCache[idx].CacheId = UUID.Zero;
+                                //                        wearableCache[idx].TextureAsset = null;
+                                continue;
+                            }
+                        }
+
+                        if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
+                        {
+                            defonly = false; // found a non-default texture reference
                             continue;
                         }
-                    }
-
-                    if (face.TextureID == UUID.Zero || face.TextureID == AppearanceManager.DEFAULT_AVATAR_TEXTURE)
-                    {
-                        defonly = false; // found a non-default texture reference
-                        continue;
-                    }
-
-                    if (wearableCache[idx].TextureID != face.TextureID)
-                    {
-                        wearableCache[idx].CacheId = UUID.Zero;
-                        wearableCache[idx].TextureID = UUID.Zero;
-                        wearableCache[idx].TextureAsset = null;
-                        continue;
-                    }
-
-                    wearableCache[idx].TextureAsset = null;
-                    if (cache != null)
-                    {
-                        wearableCache[idx].TextureAsset = m_scene.AssetService.Get(face.TextureID.ToString());
-                        if (wearableCache[idx].TextureAsset == null)
+
+                        if (wearableCache[idx].TextureID != face.TextureID)
                         {
                             wearableCache[idx].CacheId = UUID.Zero;
                             wearableCache[idx].TextureID = UUID.Zero;
-                        }
-                        else
-                            hits++;
-                    }
-                }
-            }
-
-            sp.Appearance.WearableCacheItems = wearableCache;
+                            wearableCache[idx].TextureAsset = null;
+                            continue;
+                        }
+
+                        wearableCache[idx].TextureAsset = null;
+                        if (cache != null)
+                        {
+                            wearableCache[idx].TextureAsset = m_scene.AssetService.Get(face.TextureID.ToString());
+                            if (wearableCache[idx].TextureAsset == null)
+                            {
+                                wearableCache[idx].CacheId = UUID.Zero;
+                                wearableCache[idx].TextureID = UUID.Zero;
+                            }
+                            else
+                                hits++;
+                        }
+                    }
+                }
+
+                sp.Appearance.WearableCacheItems = wearableCache;
+            }

             m_log.DebugFormat("[AVFACTORY]: Completed texture check for {0} {1} {2} {3}", sp.Name, sp.UUID, hits, defonly.ToString());
             // debug


[SPA] Centralize HttpClient creation in SpaProxyLaunchManager (#33164)

* Create HttpClient instances in one place to ensure they are configured with the same settings.
* Add a quality header to the `*/*` media type on the accept header.


Patching CPR broker database now only runs based on the installed version

--- PART/Source/CprBroker/CprBrokerWixInstallers/CprBrokerCustomActions.cs
+++ PART/Source/CprBroker/CprBrokerWixInstallers/CprBrokerCustomActions.cs
@@ -238,15 +238,18 @@
         {
             try
             {
-                var patchSql = new Dictionary<string, string>();
-                patchSql["CPR"] = Properties.Resources.PatchDatabase_1_3;
-
-                var customMethods = new Dictionary<string, Action<SqlConnection>>();
-                customMethods["CPR"] =
-                    conn => CprBroker.Providers.CPRDirect.Authority.ImportText(Properties.Resources.Authority_4357, conn);
-
-                var result = DatabaseCustomAction.PatchDatabase(session, patchSql, customMethods);
-
+                var version = session.GetDetectedOlderVersion();
+                if (version != null && version < new Version(1, 3))
+                {
+                    var patchSql = new Dictionary<string, string>();
+                    patchSql["CPR"] = Properties.Resources.PatchDatabase_1_3;
+
+                    var customMethods = new Dictionary<string, Action<SqlConnection>>();
+                    customMethods["CPR"] =
+                        conn => CprBroker.Providers.CPRDirect.Authority.ImportText(Properties.Resources.Authority_4357, conn);
+
+                    var result = DatabaseCustomAction.PatchDatabase(session, patchSql, customMethods);
+                }
                 return ActionResult.Success;
             }
             catch (Exception ex)
@@ -443,7 +446,7 @@
                     type =>
                     {
                         var dic = new Dictionary<string, string>();
-                        dic["type"] = type.FullName;
+                        dic["type"] = string.Format("{0}, {1}", type.FullName, type.Assembly.GetName().Name);
                         CprBroker.Installers.Installation.AddSectionNode("add", dic, configFilePath, "dataProviders/knownTypes");
                         object o = "";
                     });


Fix formatter crash when script contains parse errors (#728)

* Fix formatter crash when script contains parse errors

* Fix possible null references, add comments, improve variable types


More units

More units


Added support for calling IEnumerable methods which return IEnumerable (e.g. Skip,Take) rather than single nodes (e.g. First,ElementAt)

--- umbraco.MacroEngines.Juno/DynamicNode.cs
+++ umbraco.MacroEngines.Juno/DynamicNode.cs
@@ -84,14 +84,33 @@
                         Type t = tObject.GetGenericArguments()[0];
                         Type tIEnumerable = typeof(IEnumerable<>).MakeGenericType(t);

+                        var methods = typeof(Enumerable)
+                            .GetMethods(BindingFlags.Public | BindingFlags.Static)
+                            .Where(m => m.Name == name && m.IsGenericMethod && m.GetParameters().Length == args.Length + 1)
+                            .ToList();
+
+                        if (methods.Count == 0)
+                        {
+                            throw new MissingMethodException();
+                        }
+
+
                         MethodInfo enumerableMethod =
-                            typeof(Enumerable)
-                            .GetMethod(name)
+                            methods
+                            .First()
                             .MakeGenericMethod(t);

                         var genericArgs = (new[] { _children }).Concat(args);
+
                         result = enumerableMethod.Invoke(null, genericArgs.ToArray());
-
+                        if (result is IEnumerable<INode>)
+                        {
+                            result = new DynamicNode((IEnumerable<INode>)result);
+                        }
+                        if (result is INode)
+                        {
+                            result = new DynamicNode((INode)result);
+                        }
                         return true;
                     }
                     catch (TargetInvocationException)


Started to replace with switch statement

--- Project-Aurora/Project-Aurora/Devices/SteelSeries/SteelSeriesDevice.cs
+++ Project-Aurora/Project-Aurora/Devices/SteelSeries/SteelSeriesDevice.cs
@@ -166,7 +166,43 @@
                         Utils.ColorUtils.MultiplyColorByScalar(color, color.A / 255.0D));

                     if (e.Cancel) return false;
-                    if (key.Key == DeviceKeys.Peripheral)
+
+                    switch (key.Key)
+                    {
+
+                        case DeviceKeys.Peripheral:
+                            SendColorToPeripheral(color, forced);
+                            break;
+                        case DeviceKeys.Peripheral_Logo:
+                        case DeviceKeys.Peripheral_FrontLight:
+                        case DeviceKeys.Peripheral_ScrollWheel:
+                            SendColorToPeripheralZone(key.Key, color);
+                            break;
+                        case DeviceKeys.MOUSEPADLIGHT1:
+                        case DeviceKeys.MOUSEPADLIGHT2:
+                        case DeviceKeys.MOUSEPADLIGHT3:
+                        case DeviceKeys.MOUSEPADLIGHT4:
+                        case DeviceKeys.MOUSEPADLIGHT5:
+                        case DeviceKeys.MOUSEPADLIGHT6:
+                        case DeviceKeys.MOUSEPADLIGHT7:
+                        case DeviceKeys.MOUSEPADLIGHT8:
+                        case DeviceKeys.MOUSEPADLIGHT9:
+                        case DeviceKeys.MOUSEPADLIGHT10:
+                        case DeviceKeys.MOUSEPADLIGHT11:
+                        case DeviceKeys.MOUSEPADLIGHT12:
+                            gameSenseSDK.setMousepadColor(1, color.R, color.G, color.B);
+                            break;
+                        default:
+                            byte hid = GetHIDCode(key.Key);
+
+                            if (hid != (byte)USBHIDCodes.ERROR)
+                            {
+                                hids.Add(hid);
+                                colors.Add(Tuple.Create(color.R, color.G, color.B));
+                            }
+
+                    }
+                    /* if (key.Key == DeviceKeys.Peripheral)
                     {
                         SendColorToPeripheral(color, forced);
                     }
@@ -227,13 +263,12 @@
                     else
                     {
                         byte hid = GetHIDCode(key.Key);
-
                         if (hid != (byte)USBHIDCodes.ERROR)
                         {
                             hids.Add(hid);
                             colors.Add(Tuple.Create(color.R, color.G, color.B));
                         }
-                    }
+                    } */
                 }

                 if (e.Cancel) return false;
@@ -634,4 +669,4 @@
         }

     }
-}
+}


refactoring.

refactoring.

--- Project/LambdicSql/BuilderServices/Code/Inside/DisableBracketsParts.cs
+++ Project/LambdicSql/BuilderServices/Code/Inside/DisableBracketsParts.cs
@@ -1,6 +1,5 @@
 namespace LambdicSql.BuilderServices.Code.Inside
 {
-    //TODO そもそも括弧つけの手法が見直せたら良い
     class DisableBracketsParts : Parts
     {
         Parts _core;


Fix hit-test box wrong calculation with different resolution

--- Source/Engine/AGS.Engine/Objects/Collisions/AGSBoundingBoxComponent.cs
+++ Source/Engine/AGS.Engine/Objects/Collisions/AGSBoundingBoxComponent.cs
@@ -82,11 +82,11 @@
                                                  drawable, null, out resolutionFactor, out resolution);

             var viewportMatrix = drawable.IgnoreViewport ? Matrix4.Identity : layerViewport.GetMatrix(viewport, drawable.RenderLayer.ParallaxSpeed);
-            AGSBoundingBox intermediateBox, hitTestBox;
+            AGSBoundingBox intermediateBox, hitTestBox;
+            hitTestBox = _hitTestBox;
             if (resolutionMatches)
             {
                 intermediateBox = _intermediateBox;
-                hitTestBox = _hitTestBox;
             }
             else
             {
@@ -96,7 +96,6 @@
 				var modelMatrices = matrix.GetModelMatrices();
                 var modelMatrix = modelMatrices.InObjResolutionMatrix;
                 intermediateBox = _boundingBoxBuilder.BuildIntermediateBox(width, height, modelMatrix);
-                hitTestBox = _boundingBoxBuilder.BuildHitTestBox(intermediateBox);
             }

             PointF scale;