UGS don't display binaries if code changes are not loaded in list

We have some projects that are much more heavy in content than code changes, and as that, there could even be more than 100 changes together without no code change in the middle, and when this happens, the UGS changes list just shows changes as grayed out when the “Sync Precompiled Binaries” option is selected.

[Image Removed]

As you can see in the following picture, only the latest changes after the forced change 196548 are not grayed out:

[Image Removed]

However, if UGS is allowed to load more than 100 changes in the beginning (I hacked it to make it 300 just to test), then precompiled binaries are loaded and change rows are not grayed out. It seems UGS only offers binaries when they are found within the initial loaded changes, and wrongly indicates as if there were no valid binaries after in this case, misleading our users as if the binaries were not available.

This is what I changed to make it work on Unreal 5.7 on `Engine\Source\Programs\UnrealGameSync\UnrealGameSync\PerforceMonitor.cs`:

class PerforceMonitor : IDisposable, IArchiveInfoSource
{
    class PerforceChangeSorter : IComparer<ChangesRecord>
    {
       public int Compare(ChangesRecord? summaryA, ChangesRecord? summaryB)
       {
          return summaryB!.Number - summaryA!.Number;
       }
    }
 
    ///###BFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFG
    // LM: Temporary fix for UGS: Increasing the size of the initial max changes because if a code change is not kept within the retrieved changes, then UGS thinks there is no binaries available, if the code changes were out of the retrieved range
    public const int InitialMaxChangesValue = 300; // original was only 100
    ///###BFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFGBFG